2D HİSTOGRAMLAR
Daha önceki histogram derslerinde işlenilen konular aslında tek boyutlu histogram olarak adlandırılır.Bunun nedeni ise sadece gri tonlamaları kontrol etmesidir. Fakat 2 boyutlu histogramlarda iki özellik göz önüne alınır.Bu özellikler renk (Hue) ve dolgunluk (saturation) değerleridir.
Hue ve Saturation Nedir?
Öncelikle HSV renk uzayından bahsedecek olursak HSV(Hue,Saturation,Value) renkleri sırasıyla renk özü, doygunluk ve parlaklık olarak tanımlar.
➤Hue(Renk Özü): Rengin baskın dalga uzunluğunu belirler.Açısal bir değerdir(0-360). Bazı uygulamalarda 0-100 arası olağanlaştırılır.
➤Saturation(Doygunluk): Rengin canlılığını belirler.Yüksek doygunluk canlı renklere neden olurken,düşük doygunluk resmin gri tonlamaya yaklaşmasına neden olur.
Aşağıdaki iki resim HSV renk uzaylarını göstermektedir.
OPENCV'DE 2D HİSTOGRAM
OpenCV'de bu işlem oldukça basittir. Bu işlem cv2.calcHist() fonksiyonu kullanılarak yapılır. Renk histogramlarını bulmak için görüntü renklerini BGR formatından HSV formatına çevirmek gereklidir.Bu fonksiyonun parametreleri şunlardır;
➤Kanallar: [0,1] çünkü hem H hemde S düzleminde işlemek zorundadır.
➤Kutular: [180,256] 180 H düzlemi 256 S düzlemi içindir. Siz bu değerleri gerekli şekilde değiştirebilirsiniz.
➤Menzil: [0,180,0,256] Hue değeri 0 ile 180 arasında Saturation değeri 0 ile 256 arasında değişmektedir.
Kod ile gösterecek olursak;
import cv2
import numpy as np
img = cv2.imread('home.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
import numpy as np
img = cv2.imread('home.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
NUMPY'DE 2D HİSTOGRAM
Numpy 2D histogram için ayrı bir fonksiyon sunar. Bu fonksiyon np.histogram2d() dir.
Kod ile gösterecek olursak;
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('home.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist, xbins, ybins = np.histogram2d(h.ravel(),s.ravel(),[180,256],[[0,180],[0,256]])
Burada birinci argüman H düzlemi,ikincisi S düzlemi,üçüncüsü kutu sayısı,dördüncüsü ise aralık derecesidir.import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('home.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist, xbins, ybins = np.histogram2d(h.ravel(),s.ravel(),[180,256],[[0,180],[0,256]])
2D HİSTOGRAM ÇİZDİRME YÖNTEMİ
Matplotlib Kullanımı;
Örnek Resim:
Kod:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('image.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist = cv2.calcHist( [hsv], [0, 1], None, [180, 256], [0, 180, 0, 256] )
plt.imshow(hist,interpolation = 'nearest')
plt.show()
Sonuç:import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('image.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist = cv2.calcHist( [hsv], [0, 1], None, [180, 256], [0, 180, 0, 256] )
plt.imshow(hist,interpolation = 'nearest')
plt.show()
udemy de ders vermeyi düşünürmüsünüz. bence çok harika olur
YanıtlaSilkeşke maalesef vaktim olamadığında burayla bile ilgilenemiyorum.Güzel yorumunuz için teşekkür ederim ilk fırsatta udemy'e geçiş yapacağım
Sil