Resim Üzerinde Örnekleme ve Nicemleme İşlemleri

Resim Üzerinde Örnekleme ve Nicemleme İşlemleri

Bir resim üzerinde örnekleme işlemi yapmak demek o resim için belirlenen herhangi bir satırından grafik çıkartma işlemidir. Bu grafiğin x değeri resmin enine y değeri ise resim üzerinde örnekleme yapmak için belirlenen satırının o anki x değerinde aldığı piksel değerine karşılık gelmektedir. Yani bir başka deyişle örnekleme işlemi bir resmin belirlenen satırının koordinat değerlerini sayısallaştırma işlemidir.

Örnekleme

Peki örnekleme işlemi bizim ne işimize yarar? Örnekleme işlemi analog olarak görüntülenen bir resmi dijitalleştirme işlemidir. Sadece belirlenen satırın nasıl örnekleneceğini yukarıda anlatmıştık. Örnekleme işlemini resmin bütün satırlarına uygulayınca resim taranmış bir şekilde dijitalleştirilmiş olur.

Şekil 1: Örnekleme İşlemi Başlangıcı

Şekil 1 de örnekleme işleminin nasıl başladığına dair bir görsel verilmiştir. Şekil 1 i inceleyecek olursak örnekleme işlemi A-B noktası arasındaki piksel değerlerinden bir grafik çıkartılması işlemi ile yapılmaktadır. A-B noktaları arasındaki piksel değerlerini python programlama dilinde yazmış olduğumuz basit bir kodla else edecek olursak bu değerler:[128, 102, 101, 101, 100, 97, 97, 94, 90, 96, 107, 96, 97, 90, 86, 81, 83, 93, 98, 97, 94, 102, 98, 98, 94, 90, 95, 98, 102, 119, 118, 120, …] şeklinde devam eden sayılar olmaktadır(255 değeri beyazı temsil ederken 0 değeri siyah rengini temsil etmektedir).

def GetValues(image,image_line):
    values=[]
    for i in range(image.shape[1]): 
        values.append(image[image_line,i,0])
    return values

Yukarıda python programlama diline ait bir fonksiyon verilmiştir. Bu fonksiyan kendisine parametre olarak gelen resim verisi ve verileri alınacak olan satır değerinin içerisinde bulunan değerleri bir liste içerisinde biriktirerek geri döndürür.

Şekil 2: Resmin Belirlenen Satırının Örneklenmiş Hali

Şekil 2 de Şekil 1 de verilen resmin 400.satırından alınan piksel değerlerinin örneklenmiş halleri yer almaktadır. Aslında şu anda yapılmış olan işlem zaten örneklenmiş ve nicemlenmiş bir resmin tekrar örneklenmesi işlemidir. Eğer bu resim örneklenmemiş ve nicemlenmemiş olsa idi Şekil 2 deki grafik kesik kesik değil bir eğri şeklinde çıkardı.

Nicemleme

Konumuza dönecek olursak Şekil 2 de biz resmimizi örneklemiş olduk sıra artık bu resmi nicemlemedir(kuantalamadır). Nicemleme işlemi bir resmi bizim belirlemiş olduğumuz bit sayısı ile ifade etme işlemidir. Örneğin Şekil 1 deki resim 8 bit ile ifade edilmiştir(nicemlenmiştir(kuantalanmıştır)). Dolayısıyla resmin her bir pikseli 2^8=256 farklı değer alabilmektedir.

def QuantizationValues(last_values,last_quantization_bit,new_quantization_bit):
    for i in range(len(last_values)):
        new_value=MapValue(last_values[i],2**last_quantization_bit,2**new_quantization_bit)
        last_values[i]=Map255(new_value,2**new_quantization_bit)
    return last_values

 Yukarıda verilmiş olan fonksiyonda gerçekleştirilen işlem; kendisine parametre olarak gelen verileri önceki nicemlenen bit değeri ve yeni nicemlenecek bit değerini göz alarak nicemleme işlemi gerçekleştirmektedir. MapValues ve Map255 fonksiyonlarını kaynak kodları sayfasından inceleyebilirsiniz. MapValues fonksiyonu değerimizi belirlediğimiz aralığa alma işlemini sağlarken Map255 fonksiyonu değeri 255-0 aralığına dönüştürmektedir.

Şekil 3: Şekil 2 deki Kuantalama İşleminin 4 Bite Düşürülmüş Hali

Şekil 2 de gösterilen 8 bit ile nicemlenmiş verilerin 4 bite düşürülmüş hali Şekil 3 de görülmektedir. Artık verinin yeni değerleri:[127, 95, 95, 95, 95, 95, 95, 79, 79, 95, 95, 95, 95, 79, 79, 79, 79, 79, 95, 95, 79, 95, 95, 95, …  şeklinde devam eden sayılar olmaktadır. Görüldüğü üzere resim üzerindeki hassasiyetde düşmüştür. Yani bir resim verisi için örnekleme ve nicemleme işlemleri analog bir veriyi dijital hale getirmeye ve dijital hale getirilmiş veriyi daha düşük boyutlara düşürme işlemine yaramaktadır.

Şekil 4: Nicemlenmiş Yeni Resim

Şekil 4 de Şekil 1 de verilmiş olan resmin 4 bit ile nicemlenmiş hali verilmiştir. Bir anlamda nicemleme işlemi bir resmin çözünürlüğü ile oynama işlemi gibi düşünülebilir. Şekil 1 de 8 bit ile nicemlenmiş olan resmin daha net fakat Şekil 1 de nicemleme bit sayısı 4 e indirilmiş olan resim görülmektedir.

Resim Üzerinde Örnekleme ve Nicemleme İşlemleri yazısı için kaynak kodalarına linkten ulaşabilirsiniz.