Median Blur

Kategori: Computer Vision , 06 Şubat 2020 , JanFranco


Resimlerin farkını daha iyi görebilmek için ayrı sekmede açıp büyültebilirsiniz.

Blurring tekniklerini detaylıca incelemeye devam ediyoruz. Bu yazımda daha önce gördüğümüz fakat üzerinde detaylıca durmadığımız median blur tekniğini anlatacağım. Median blur tekniğinde, bulunduğumuz pikselin, belirlenen ksize parametresi kadar komşu pikselleri baz alınarak medyan hesaplaması yapılır. Medyan hepimizin bildiği gibi ortanca değerdir. Örneğin aşağıdaki piksellerin medyanını hesaplayalım:

12 23 46
15 33 86
93 33 33


Değerleri rastgele verdim. Burada bir resmin bir bölümündeki piksellerin medyan hesabını yapacağız. Baz aldığımız piksel, ortadaki 33 değerli piksel. Görüyoruz ki ksize parametresi de 3. Yani 33 değerli pikselin üzerinde durduk, parametreni değeri 3 olduğundan 3x3 lük bir matris düşündük. Bu matristeki sayıları küçükten büyüğe yazalım:

12 15 23 33 33 33 46 86 93

Bu dizinin tam ortasıdaki değer 33'tür. Bu nedenle resmin çektiğimiz küçük bir bölümünde, baz aldığımız pikselin değeri 33 olur. Zaten 33 olduğundan, değişmemiş olur. Bir başka örnek yapalım:

12 23 46
15 33 86
93 12 14

Küçükten büyüğe sıralayalım:

12 12 14 15 23 33 46 86 93

Bu sefer tam ortadaki değer 23 olmuş oldu. Yani baz aldığımız 33 değeri 23 olarak güncellenecek. Başka blur teknikleri kullansaydık, ortalama, gauss yöntemleri gibi, buradaki 93 değeri sonucu yüksek miktarda etkileyecekti. Median blur tekniğinin en güçlü yanı da budur. Aykırı değerleri sindirir. Böylece temiz bir gürültü engelleme yapmış oluruz. Daha önce gördük ancak Python üzerinden tekrar görelim:


import cv2

img = cv2.imread('../data/rabbit.jpg')
cv2.imshow('img', img)
cv2.waitKey(0)
>>

Median Blur


median = cv2.medianBlur(img, ksize=5)
cv2.imshow('median', median)
cv2.waitKey(0)
>>

Median Blur


median = cv2.medianBlur(img, ksize=7)
cv2.imshow('median', median)
cv2.waitKey(0)
>>

Median Blur


median = cv2.medianBlur(img, ksize=9)
cv2.imshow('median', median)
cv2.waitKey(0)
>>

Median Blur


median = cv2.medianBlur(img, ksize=11)
cv2.imshow('median', median)
cv2.waitKey(0)
>>

Median Blur

Görüldüğü gibi ksize değeri arttıkça bozulmalar da artıyor ancak genel kenar çizgileri korunmuş oluyor.


Sonraki Yazı: Bilateral Filter
Yorumlar

Henüz bir yorum bulunmuyor.