Site Loader

Merhaba Arkadaşlar, Python Earth de bugün Görüntü İşleme Serisinin bu dersinde Görüntü İşleme Temel Kavramlar ‘ı  göreceğiz. Keyifli okumalar.

Görüntü Nedir?

Pratik olarak etrafımızdaki her sahne bir görüntü oluşturur ve bu görüntü işleme kapsamındadır.

3 Boyutlu nesnelerin 2 Boyutlu yüzey üzerine düşürülmüş haritası olarak tanımlanabilir. Bu haritalamada her noktanın konum bilgisi f(x,y) ve renk bilgisi tutulur. Bu resimlerin insan gözünün görebileceği şekilde gösterilmesine ise Resim diyebiliriz. Görüntü henüz daha sinyal şeklinde ise, insan gözünün görebileceği şekilde değilse resim haline gelmemiş demektir. Görüntü Analog ve Dijital görüntü olarak iki kısımda ele alınabilir. Yani etrafımızdaki her sahne bir görüntü oluşturur ve bu görüntü işleme kapsamındadır.

Analog Görüntü İşleme

Analog görüntü işleme, analog sinyallere uygulanır ve sadece iki boyutlu sinyalleri işler. Görüntüler elektrik sinyalleri tarafından manipüle edilir. Analog görüntü işlemede, analog sinyaller periyodik veya periyodik olmayan olabilir.

Analog görüntülere örnek olarak televizyon görüntüleri, fotoğraflar, resimler ve tıbbi görüntüler vb.

Dijital görüntü işleme

Dijital görüntülere (küçük pikseller ve öğelerden oluşan bir matris) bir dijital görüntü işleme uygulanır. Görüntüleri manipüle etmek için, değişiklikleri gerçekleştirmek için uygulanan bir dizi yazılım ve algoritma vardır. Dijital görüntü işleme, herkesin hayatını etkileyen en hızlı büyüyen endüstrilerden biridir.

Dijital görüntülere örnek olarak renk işleme, görüntü tanıma, video işleme vb.

 

Piksel Nedir?

Dijital biçimdeki her fotoğraf piksellerden oluşur. Bir resmi oluşturan en küçük bilgi birimidir. Genellikle yuvarlak veya kare, tipik olarak 2 boyutlu bir ızgarada düzenlenirler.

Aşağıdaki resimde, bir kısım, kendi kompozisyonunu piksel olarak görebilmeniz için defalarca büyütülmüştür. Gördüğünüz gibi, pikseller gerçek görüntüye yakındır. Ne kadar çok piksele sahipseniz, görüntü orijinaline o kadar çok benzer.

 

İyi olan şey, bir pikselin çok küçük olması nedeniyle görülememesidir, bu da “pikselleştirilmiş” yerine pürüzsüz ve net bir görüntü sağlar. Her pikselin bir değeri vardır veya benzersiz bir mantıksal adres diyebiliriz. Bir seferde sadece bir renge sahip olabilir. Bir pikselin rengi, onu temsil etmek için kullanılan bit sayısı ile belirlenir. Bir bilgisayar ekranının çözünürlüğü, grafik kartına ve ekran monitörüne, piksellerin miktarına, boyutuna ve renk kombinasyonuna bağlıdır.

CCD dizisi ile ilişki

Bir görüntü yakınlaştırıldığında, CCD’nin yüzeyi doldurulmuş noktalar gibi görünecektir. Bu noktalar fotodiyot adı verilen ışık alıcılarıdır.

1 DOT == 1 PİXEL

CCD boyutları, 2 milyon piksel (megapiksel) ve 4 milyon piksel (megapiksel) gibi terimler kullanılarak tanımlanır. Piksel sayısı arttıkça daha ayrıntılı görüntü oluşturulur. Net ve pürüzsüz bir görüntü elde etmek için CCD ve görüntü boyutu artırılır.

Bu matematiksel olarak aşağıdaki gibi gösterilebilir:

Toplam piksel sayısı = satır sayısı ( X ) sütun sayısı

Veya (x,y) koordinat çiftlerinin sayısının toplam piksel sayısını oluşturduğunu söyleyebiliriz.

Renkli bir görüntüdeki pikselleri nasıl hesapladığımızı, görüntü türleri eğitiminde daha ayrıntılı olarak inceleyeceğiz.

Renk

Nesne tanımlama ve sahneden çıkartmada önemli bir tanımlayıcıdır.

  • İnsan gözü ışıklılık tonlarını ayırt etmede zayıfken, renk ve ışık tonlarının bir arada olması durumunda ayırt edicilik çok artmaktadır.
  • Renkli imge işleme temelde iki grupta incelenebilir:
  • Tam renk (full color) (Renkli bir algılayıcı vasıtasıyla alınan imgeler)
  • Sahte renk (pseudo color) (Gri tonlu imgelerin renklendirilmesiyle oluşan imgeler.)
  • İnsan gözündeki koni (cone) algılayıcılarının yaklaşık olarak %65’i kırmızı, %33’ü yeşil ve %2’si de mavi renge duyarlıdır.
  • İnsan gözünde renkler de bu üç ana rengin birleşimi şeklinde alınmaktadır. • Bu üç renk kullanılarak görünür bölgedeki bütün renkler elde edilebilmektedir.
  • Ana renklerin (kırmızı (R), yeşil (G), mavi (B)) birbirlerine eklenmesi ile ara renkler ya da ikincil renkler (turkuaz (C), mor (M), sarı (Y)) elde edilir.
print(resim)

 

  • RGB (Red, Green, Blue):
    • Renkli monitör, renkli video kamera.
  • CMY (Cyan, Magenda, Yellow), CMYK (Cyan, Magenda, Yellow, blacK)
    • Renkli yazıcı.
  • HSI (Hue, Saturation, Intensity)
    • İnsan renk tanımlama ve ayırt etmede.
  • YIQ
    • Renkli NTSC yayın.
  • YCbCr
    • Renkli sayısal TV yayını.

Gri Görüntü

Sayısallaştırma işleminde, görüntü boyutlarının ve her bir pikselin sahip olabileceği parlaklık değerinin belirlenmesi gerekir. Sayısal görüntünün her bir pikselinin sahip olduğu parlaklık değeri gri seviyeler olarak adlandırılır. Her bir pikseldeki parlaklık değerinin kodlandığı bit sayısına göre gri seviye aralığı belirlenir. Gri seviye sınırlarında iki renk vardır, siyah ve beyaz. Bu ikisi arasında kodlanan görüntülere ise gri-ton (gray scale, monochromatic) görüntüler adı verilir. Uygulamada yaygın olarak kullanılan her bir piksel 8 bit ile kodlanmıştır. Bu tip görüntülerde her bir piksel 2^8 = 256 farklı gri ton karşılığı (parlaklık seviyesi) değerlerinden oluşur ve gri değer aralığı G = {0, 1, 2,…, 255} biçiminde ifade edilir. Kural olarak; 0 gri seviyesi siyah renge, 255 gri seviyesi ise beyaz renge ve bu değerler arasındaki gri seviyeler ise gri tonlara karşılık gelir. Şekil de N × M = 16 × 16 ‘lık bir ızgara üzerinde 256 farklı gri seviyenin gösterimi verilmiştir.

Renkli Görüntü

Renkli görüntüler, R(Kırmızı), G(Yeşil), B (Mavi) kodlanmış aynı cisme ait üç adet gri düzeyli görüntünün üst üste ekranda gösterilmesi ile oluşur. Renkli görüntüyü oluşturan bu üç renk bant olarak isimlendirilir.

Renkli görüntülerin her bir pikseli bilgisayar ekranlarında 24 bit’lik veri olarak görüntülenir. Şöyle ki, her bir renk 8 bit (2.2.2.2.2.2.2.2=2^8=256) ile kodlanacağına göre üç renk (RGB) 3×8 = 24 bit ile kodlanacaktır. Bu durumda, RGB görüntülerin her bir pikseli 2^8. 2^8 . 2^8= 2^24 = 16.777.216 (yaklaşık 17 milyon) farklı renk değerine sahip olabilir ve bu üç rengin birleşiminin değer aralığı RGB = (0, 0, 0),…, (255, 255, 255) biçiminde gösterilir. Aşağıdaki tabloda bazı örnek renkler ve değerleri verilmiştir.

Matris anlamında düşünüldüğünde doğal renkli 2 Boyutlu bir RGB görüntü, her biri (N × M) büyüklüklüğünde üç matrisin (ızgaranın) bileşiminden oluşur ve matris gösteriminde {I(i, j, k) | i = 1, 2,…, N; j = 1, 2,…, M; k = 1, 2, 3} biçiminde temsil edilir. Genel olarak bu matrislerin her biri, pikselleri 256 seviyeden birine sahip görüntüyü temsil eder.

Şekil. RGB görüntüsünü oluşturan NxM boyutlarındaki 3 bandın matris gösterimi

Renkli görüntünün yeşil ve mavi bantlarına ilişkin görüntülerin sıfır alınmasıyla sadece kırmızı bandın görüntüsü elde edilir. Böylece, RGB gösterimi kırmızı yapay renklendirilmiş görüntüsüne ulaşır. Bu durumda kodlama RGB = R00 = (0, 0, 0),…, (255, 0, 0) şeklinde olacaktır. Benzer şekilde, yeşil ve mavi yapay renklendirilmiş görüntüler de sırasıyla RGB = 0G0 = (0, 0, 0),…, (0, 255, 0) ve RGB = 00B = (0, 0, 0),…, (0, 0, 255) olacaktır. Bu şekilde oluşan yapay renklendirme görüntüleri aşağıdaki gibi olacaktır.

Önemli Not: OpenCV fonksiyonu ile görüntü dosyası okunduğunda imread()renklerin sırası BGR (mavi, yeşil, kırmızı) şeklindedir. Pillow’da ise renklerin sırasının RGB (kırmızı, yeşil, mavi) olduğu varsayılır.

Örnek:

print(resim)

Bu kod ile her  pixel renk matrisini görebilmekteyiz.

[[[246 177  97]

  [246 177  97]

  [246 177  97]

  …

  [252 191 127]

  [252 191 127]

  [252 191 127]]

 

 [[247 178  98]

  [247 178  98]

  [247 178  98]

  …

  [252 191 127]

  [252 191 127]

  [252 191 127]]

import cv2
import numpy as np

resim =cv2.imread("kusresmi.jpg")
#Gri resim yapıldı resim boyutları azaltılıyor
resim1 =cv2.imread("kusresmi.jpg",0)
#Burda her pikselin  renkleri matris olarak veriyor
print(resim)
#Resimin boyutu hakkında bilgi vermektedir.
print("Resim Boyut:",resim.size)
#unit8 oldugu için her pixel 8 bitte
print("Resim Veri Tipi:",resim.dtype)
#genislik,yukseklık,kanal sayısını ogrenıyoruz
print('Resimin Özellikleri',resim.shape)
#Burda pixel değerini tek bir noktayı sıfır yapıyır
# resim[50,80]=[255,255,255]
for i in range(1280):
    resim[80,i]=[255,255,255]
cv2.imshow("Kus Resmi Ornek",resim)
#Resimin söylenen yerdeki renk değerleri
print(resim[(20,55)])
cv2.waitKey(0)
cv2.destroyAlWindows()

Anlatılanları şimdi uygulamada görelim.

Renkli resimde ki çıktılar;

Resim Boyut: 2764800

Resim Veri Tipi: uint8, (720, 1280, 3)

Gri Resimin çıktısı:

Resim Boyut: 921600

Resim Veri Tipi: uint8, (720, 1280)

Renkli resmin çıktısı ile  gri resmin çıktısını karşılaştırdığımızda renkli resimde 3 kanal gri resimde ise tek kanal kullanılmasıyla resim boyutunun 3′ te bir oranında azaldığı gözlemlenmiştir.

,

Yukarıdaki renkli görüntü  göründüğü gibi istediğimiz noktadan başlayarak istediğimiz yerleri çizebiliyoruz.

Görüntü İşleme Dersi  için Temel Kavramlar  serimizde bir yazının daha sonuna geldik. Eksik yada yanlış gördüğünüz yerler için iletişime geçmekten çekinmeyin bir sonraki yazımızda görüşmek üzere.

Post Author: Elif Şentümür

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir