5.15. Morfolojik işlemler¶
Morfolojik işlemler ikili görüntüler üzerinde çalışır – eşikleme ve kenar tespitinden çıkan maskeler. Her işlem, düzleştirme filtrelerinin kullandığı aynı tür kayan komşuluğu dolaşır, ancak her konumda sorduğu soru evet/hayır şeklindedir: komşuluktaki her piksel açık mı, komşuluktaki herhangi bir piksel açık mı, açık/kapalı deseni nasıl görünüyor? Cevaplar, bölgeleri büyütür, küçültür ve sınırlarını ortalama alan bir filtrenin yapamayacağı şekillerde yeniden keser.
Morfoloji, bir başlangıç ikili maskesi – eşiklemenin, kenar tespitinin veya başka bir sınıflandırıcının çıkışı – ile hattın geri kalanının kullanabileceği temiz ikili maske arasında gelen şeydir. Ham bir eşik çıkışı genellikle gerçek ön plan alanlarına dağılmış izole gürültü pikselleri, başka türlü dolu bölgelerde açılmış küçük delikler ve eşiğin bir nesnenin kenarına yakın kestiği tırtıklı sınırlar içerir. Morfoloji bu kusurları kaldırır.
5.15.1. Dört klasik işlem¶
İki ilkel işlem ve bunların iki bileşimi morfolojik araç takımını oluşturur:
dilate() her ön plan bölgesini büyütür. Kural şudur: (2 * size + 1) penceresinde en az bir ön plan komşusu olan herhangi bir piksel ön plan olur. Görünür etki, ön plan bölgelerinin her yönde size piksel büyümesi ve içlerindeki deliklerin aynı miktarda küçülmesidir (veya yok olmasıdır).
erode() tersini yapar. Penceresindeki her komşusu ön planda olmayan herhangi bir piksel arka plan olur. Ön plan bölgeleri her yönde size piksel küçülür, izole ön plan pikselleri (hiç ön plan komşusu olmayanlar) tamamen kaybolur ve daha büyük bölgeler arasındaki küçük bağlantılar kesilir.
Gürültülü bir ikili bölgeye uygulanan dört klasik morfolojik işlem. Erode küçültür; dilate büyütür; open önce erode sonra dilate’dir (gürültüyü kaldırır); close önce dilate sonra erode’dir (delikleri doldurur).¶
open() erode ardından dilate‘dir. Erode edilmiş görüntüde her izole gürültü pikseli kaldırılmıştır, ancak her yönde size piksel de küçültülmüştür. Erode’u aynı boyutta bir dilate ile takip etmek, gerçek ön plan bölgelerini gürültü gitmiş halde bırakırken yaklaşık olarak orijinal sınırlarına geri getirir. Bu bileşim, open filtresini klasik morfolojide standart “gürültü kaldırma” işlemi yapan şeydir: izole ön plan pikselleri kaybolur, gerçek bölgeler zarar görmeden geri gelir.
close() ayna görüntüsüdür – dilate ardından erode. Dilate, ön plan bölgelerinin içindeki küçük delikleri doldurur ve küçük boşluklarla ayrılmış bölgeleri birleştirir; erode, doldurulan iç kısmı dolu bırakırken sonucu orijinal dış sınırına geri küçültür. close standart “küçük boşlukları doldurma” işlemidir.
binary_mask.open(1) # remove single-pixel noise
binary_mask.close(2) # fill small holes and gaps
size parametresi parlaklık filtrelerindekiyle aynı anlama gelir: size=1 bir 3’e 3 komşuluk, size=2 5’e 5 anlamına gelir ve böyle devam eder. Daha büyük boyutlar daha agresif temizleme – ve daha uzun bir piksel başına maliyet – anlamına gelir.
5.15.2. Top-hat ve black-hat¶
İki ek bileşim de bilinmeye değerdir çünkü open ve close filtrelerinin kaldırdığı öznitelikleri tam olarak çıkarırlar:
top_hat() orijinal görüntü ile açılmış sürümü arasındaki farkı döndürür – open filtresinin kaldıracağı ön plan pikselleri. Bu, kelimenin tam anlamıyla gürültü piksellerinin, izole küçük ön plan bölgelerinin, open işleminin koruyamadığı ince ön plan yapılarının bir maskesidir. Bu öznitelikler uygulamanın önemsediği şey olduğunda, onları kaldırmak yerine küçük ön plan özniteliklerini çıkarmak için yararlıdır.
black_hat() görüntünün kapalı sürümü ile orijinali arasındaki farkı döndürür – close filtresinin dolduracağı arka plan pikselleri. Bu, ön plan bölgelerinin içindeki küçük deliklerin, close işleminin köprüleyeceği bölgeler arasındaki dar boşlukların bir maskesidir.
İkisine de dört temel işleme göre daha az başvurulur, ancak desen hatırlanmaya değerdir – bir uygulama, standart temizleme geçişinin kaldırdığı küçük veya ince öznitelikleri çıkarması gerektiğinde, top-hat ve black-hat onları geri almanın doğal yoludur.
5.15.3. Eşik modu¶
Dört temel morfolojik işlemin tümü, her konumdaki açık/kapalı testini yumuşatan tamsayı bir threshold anahtar kelimesini kabul eder. Onsuz, işlemler yukarıdaki açıklamalarda belirtildiği gibi davranır: erode() her komşunun açık olmasını gerektirir, dilate() en az birini gerektirir. threshold ayarlandığında, her işlem o kadar komşunun diğer yönde oy kullanmasına tolerans gösterir. Erode için threshold, bir pikselin sahip olabileceği ve yine de hayatta kalabileceği arka plan komşularının sayısıdır: threshold=4 sekiz komşusundan en az dördü açık olan herhangi bir pikseli tutar (3’e 3 bir pencerede merkez pikselin sekiz komşusu vardır), böylece o kadar agresif erode yapmaz. Dilate için threshold, bir arka plan pikselinin açılmadan önce sahip olması gereken ön plan komşularının sayısıdır: threshold=2 bir yerine en az üç ön plan komşusu gerektirir, böylece daha az agresif büyür.
Eşik biçimi, bir morfolojik geçişin agresifliğini, pencere boyutunu değiştirmeden ayarlamak için yararlıdır; pencere boyutunu değiştirmek, üzerinde işlem yaptığı özniteliklerin ölçeğini de değiştirirdi. Çoğu uygulama varsayılan davranışla devam eder; eşik biçimi, varsayılanın sadece biraz fazla veya biraz az olduğu durumlar içindir.