Boundary Extraction, Gradient, Top-Hat, Black-Hat
→ Daha ileri seviye işlemler
Matematiksel Temeller: Neden “Morfoloji”?
Morfolojik işlemler sadece sezgisel değildir; matematiksel olarak sağlam temellere dayanır.
Bu temeller Küme Teorisi ve Tam Kafes (Complete Lattice) teorisinden gelir.
Bu teorik altyapı, işlemleri ikili (siyah-beyaz) görüntülerden gri seviye ve hatta renkli görüntülere genelleştirmemizi sağlar.
Temelde, pikseller arasındaki ilişkileri bir küme yapısı içinde inceleriz.
Temel Kavram: Tam Kafesler (Complete Lattices)
Morfolojik operatörlerin üzerinde tanımlandığı özel bir matematiksel yapıdır.
En temel özelliği, bir piksel komşuluğu (alt küme) için her zaman bir en küçük üst sınır ve en büyük alt sınır bulmayı garanti etmesidir.
Infimum (En Büyük Alt Sınır): Bir komşuluktaki tüm piksel değerlerinden küçük veya onlara eşit olan en büyük değerdir.
İkili görüntüde: MANTIKSAL AND işlemine denktir.
Gri seviye görüntüde: Lokal MİNİMUM değerini bulmaktır.
Supremum (En Küçük Üst Sınır): Bir komşuluktaki tüm piksel değerlerinden büyük veya onlara eşit olan en küçük değerdir.
İkili görüntüde: MANTIKSAL OR işlemine denktir.
Gri seviye görüntüde: Lokal MAKSİMUM değerini bulmaktır.
Yapısal Eleman (Kernel): Morfolojinin Probu
Morfolojik operasyonların ikinci temel girdisidir. Görüntü üzerinde kaydırılarak piksellerin komşuluk ilişkilerini “sorgulayan” küçük bir maskedir.
İşlemin yerel geometrik etkisini belirler. Yani, bir pikselin yeni değerinin nasıl hesaplanacağını tanımlar.
Çapa Noktası (Anchor Point): Kernelin genellikle merkezinde bulunan referans noktasıdır. Operasyonun sonucu, kernelin çapa noktasının denk geldiği piksele yazılır.
Kernel Şekilleri ve Önemi
Kernel’in şekli, operasyonun hangi geometrik özellikleri hedef alacağını doğrudan etkiler. Seçim, çözülmek istenen probleme göre yapılır.
Genel amaçlı, yöne bağımlı olmayan (izotropik) işlemler için idealdir.
Gerçek Dünya Kullanım Alanları
1) Endüstriyel Kalite Kontrol - Metal yüzey, PCB, tekstil ürünlerindeki delik/çizik/defekt tespiti. - Defekt yapıları yönsüz olduğundan rect kernel idealdir.
2) Doküman Analizi (OCR) - Harf içi boşluk kapatma, yazı birleştirme/ayırma. - El yazısı temizleme ve segmentasyon öncesi gürültü azaltma.
3) Harita / Uydu Görüntüleri - Bulut lekesi, gölge gürültüsü gibi yönsüz bölgeleri temizleme.
4) Medikal Görüntüleme - Lezyon/tümör maskelerinde başlangıç temizliği, gürültü baskılama.
Yuvarlak hatlara sahip nesneler için en iyi sonuçları verir.
Nesnelerin köşeli yapısını yumuşatır ve daha organik şekilleri korur.
Gerçek Dünya Kullanım Alanları
1) Kan Hücresi (RBC) Segmentasyonu - Eritrositler dairesel yapıdadır. - Elliptik kernel, hücre konturunu bozmadan gürültüyü temizler.
→ Medikal literatürde sık kullanılan bir tekniktir.
2) Çekirdek / Bakteri Segmentasyonu (Mikroskopi) - Hücre çekirdekleri genelde eliptiktir. - Erosion/Opening sırasında geometrik bozulmayı engeller.
3) Endoskopi – Polip / Kist Tespiti - Oval organik yapılarda kontur yumuşatma için idealdir.
4) Trafik İşaretleri Tespiti - Daire/üçgen işaretlerde preprocessing aşamasında kullanılır.
5) İris Segmentasyonu (Face Recognition) - Göz irisi eliptik olduğu için bu kernel doğal bir eşleşme sağlar.
OpenCV’de Kernel Oluşturma
OpenCV, cv2.getStructuringElement() fonksiyonu ile bu kernel’leri kolayca oluşturmamızı sağlar.
import cv2import numpy as np# 5x5 boyutunda bir Dikdörtgen kernelkernel_rect = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))# 5x5 boyutunda bir Çapraz kernelkernel_cross = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))# 5x5 boyutunda bir Elips kernelkernel_ellipse = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
Erosion (Aşındırma)
Erosion, bir nesnenin sınırlarını aşındıran, yani beyaz (1) pikselleri küçülten morfolojik işlemdir.
Ön plandaki görüntünün dış sınırlarını inceltir.
Yapısal eleman (kernel) görüntü üzerinde gezdirilir.
İkili (Binary) Görüntüde: Kernel altındaki tüm pikseller 1 ise (Mantıksal AND), merkez piksel 1 olarak kalır. Aksi halde 0 yapılır.
Matematiksel Karşılığı: Bu işlem, yapısal elemanın kapsadığı alandaki piksellerin Infimum (Lokal Minimum) değerini bulmaya denktir. Gri seviye bir görüntüde, merkez pikselin değeri komşuluktaki en düşük (en koyu) piksel değeri ile güncellenir.
İnceltme miktarı kullanılan çekirdeğin boyutuna ve şekline göre değişir.
Ne işe yarar?
İkili Görüntüde: Küçük beyaz gürültüleri siler, nesneleri inceltir ve yakın nesneleri ayırır.
Gri Seviye Görüntüde: Parlak bölgeleri daraltır, koyu bölgeleri genişletir. Küçük ve parlak gürültüleri (salt noise) etkili bir şekilde yok eder.
import cv2import numpy as np# Örnek bir görüntü yüklediğimizi varsayalım (0: grayscale olarak yükle)# img = cv2.imread('ornek_goruntu.png', 0)# 3. Maddede öğrendiğimiz gibi bir kernel oluşturalım# 5x5 boyutunda bir Dikdörtgen kernelkernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))# Görüntüye erozyon işlemi uygulayalım# iterations: işlemin kaç kez tekrarlanacağını belirtirerosion_img = cv2.erode(img, kernel, iterations=1)# Sonucu göster# cv2.imshow('Orijinal', img)# cv2.imshow('Erozyon Sonucu', erosion_img)# cv2.waitKey(0)# cv2.destroyAllWindows()
Pirinç Görselleri Üzerinde Erosion Uygulaması
Notlar
Erosion çoklu olarak uygulanabilir. Erode edilmiş görüntü üzerinden tekrar tekrar uygulandığından görüntü ön planı giderek incelir.
Genellikle önce dilation ile birlikte (opening veya closing) kullanılır
Dilation (Genleşme)
Dilation, nesne sınırlarını dışa doğru genişleten bir morfolojik işlemdir.
Yapısal eleman (kernel), görüntüde kaydırılır.
İkili (Binary) Görüntüde: Kernel ile örtüşen herhangi bir 1 varsa (Mantıksal OR), merkez piksel 1 yapılır.
Matematiksel Karşılığı: Bu işlem, yapısal elemanın kapsadığı alandaki piksellerin Supremum (Lokal Maksimum) değerini bulmaya denktir. Gri seviye bir görüntüde, merkez pikselin değeri komşuluktaki en yüksek (en parlak) piksel değeri ile güncellenir.
Ne işe yarar?
İkili Görüntüde: Nesneler arasındaki küçük boşlukları kapatır, kopuk parçaları birleştirir ve nesneleri kalınlaştırır.
Gri Seviye Görüntüde: Koyu bölgeleri daraltır, parlak bölgeleri genişletir. Nesnelerin içindeki küçük ve koyu delikleri (pepper noise) doldurmada etkilidir.
OpenCV’de bu birleşik işlem için cv2.morphologyEx() fonksiyonu kullanılır. Bu, erode ve dilate fonksiyonlarını ayrı ayrı çağırmaktan daha optimize ve pratik bir yöntemdir.
# Görüntüye açma işlemi uygulayalım# Fonksiyona hangi morfolojik işlemi yapmak istediğimizi bayrak (flag) ile belirtirizopening_img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)# Sonucu göster# cv2.imshow('Açma Sonucu', opening_img)
Pirinç Görselleri Üzerinde Opening Uygulaması
Notlar
Erosion ile küçük yapılar silinir
Dilation ile ana şeklin boyutu toparlanır
Eğer nesne çok küçükse tamamen silinebilir → dikkatli kullanılmalı
Closing (Kapama)
Closing, sırasıyla Dilation → Erosion işlemlerinin ardışık uygulanmasıdır.
İlk olarak nesneler genişletilir (Dilation)
Ardından yeniden daraltılır (Erosion)
Amaç: iç boşlukları doldurmak, nesne bütünlüğünü sağlamak
Ne işe yarar?
Küçük siyah delikleri kapatır
Nesne konturlarını düzleştirir
İnce boşlukları giderir
Gri Seviye Görüntüde: Nesnelerin içindeki küçük ve karanlık delikleri (pepper noise), nesnenin genel boyutunu önemli ölçüde değiştirmeden doldurur.
Kapama İşlem Akışı
flowchart LR
A[Orijinal Görüntü] --> B(Dilation)
B --> C[Erosion]
Kenar tespiti (edge detection) için hızlı ve etkili bir yöntemdir
Gri Seviye Görüntüde: Bir pikselin komşuluğundaki en parlak (Maksimum) ve en koyu (Minimum) değerler arasındaki farkı hesaplar. Bu sayede, yoğunluk değişiminin yüksek olduğu kenarları belirginleştirir.
# Görüntüye morfolojik gradyan işlemi uygulayalımgradient_img = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)# Sonucu göster# cv2.imshow('Gradyan Sonucu', gradient_img)
Pirinç Görselleri Üzerinde Morfolojik Gradyan Uygulaması
Avantajları
Hızlı ve uygulanması kolaydır
Canny gibi karmaşık kenar bulma algoritmalarına göre basittir
Küçük nesnelerde sınırlı etkilidir, ancak belirgin nesne kenarlarında oldukça iyidir
Not
Çıktı görüntü, küçük (ör. 3×3) yapısal elemanlarla genellikle 1 piksel kalınlığında kenar bantları üretir
Kernel boyutu büyüdükçe kenar kalınlığı da artabilir
Genellikle önceden threshold uygulanmış (binary) görüntülerde daha net sonuç verir
Top-Hat (White-Hat) Dönüşümü
Orijinal görüntü ile o görüntünün Açma (Opening) işlemi görmüş hali arasındaki farktır.
Top-Hat(A) = A - Opening(A)
Ne işe yarar?
Görüntüdeki genel arka plana göre daha parlak ve küçük olan nesneleri veya detayları vurgulamak için kullanılır.
Özellikle homojen olmayan aydınlatmaya sahip görüntülerde arka planı çıkarıp ön plan nesnelerini izole etmek için çok etkilidir.
OpenCV Uygulaması: Top-Hat
# Görüntüye Top-Hat işlemi uygulayalımtophat_img = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
Top-Hat Uygulaması
Black-Hat Dönüşümü
Görüntünün Kapama (Closing) işlemi görmüş hali ile orijinal görüntü arasındaki farktır.
Black-Hat(A) = Closing(A) - A
Ne işe yarar?
Görüntüdeki genel arka plana göre daha koyu ve küçük olan nesneleri, delikleri veya detayları vurgular.
“Top-Hat” operatörünün tam tersi (dual) bir amaca hizmet eder.
OpenCV Uygulaması: Black-Hat
# Görüntüye Black-Hat işlemi uygulayalımblackhat_img = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
Black-Hat Uygulaması
Black-Hat Uygulaması - 2
Minkowski Operasyonları
Daha biçimsel olarak, morfolojik operatörler Minkowski Toplamı ve Minkowski Farkı olarak bilinen küme operasyonlarına dayanır.
Genişleme (Dilation): Minkowski Toplamı (⊕)
Bir A görüntüsünün bir B yapısal elemanı ile genişlemesi, B’nin her bir elemanının A’nın her bir elemanına vektörel olarak eklenmesiyle oluşan kümedir.
Sezgisel olarak, B’nin orijini A’nın her noktasına kaydırıldığında B’nin taradığı tüm alanı ifade eder.
\[ A \oplus B = \{a+b \ | \ a \in A, b \in B \} \]
Aşındırma (Erosion): Minkowski Farkı (⊖)
B yapısal elemanının A görüntüsünün “içinde kalacağı” şekilde kaydırılabileceği tüm noktaların kümesidir.
\[ A \ominus B = \{x \ | \ B_x \subseteq A \} \]
İleri Seviye Morfolojik Konular
Bu derste temel operatörleri inceledik. Bilgisayarla görme alanında sıkça kullanılan diğer önemli morfolojik araçlar şunlardır:
Hit-or-Miss Dönüşümü: Belirli bir piksel konfigürasyonunu (deseni) bulmak için kullanılır. Şekil eşleme için temel bir araçtır.
Morfolojik Yeniden Yapılanma (Reconstruction): Bir “marker” görüntüden başlayarak bir “maske” görüntü sınırları içinde tekrarlı genişlemeler yaparak nesneleri yeniden oluşturur. Gürültü temizleme ve segmentasyonda çok güçlüdür.
Watershed Algoritması: Görüntüyü havzalara ayıran, segmentasyon için kullanılan ileri seviye bir morfolojik algoritmadır.