Herhangi bir nedenle morfolojik işlemleri kullanmakla sınırlıysanız, odaklı yakın işlemlerin "oylama şemasını" kullanmayı düşünebilirsiniz.
Morfolojik operasyonlarla ilgili bir problem, yönlülüğü gerçekten dikkate almamalarıdır. Merkez piksel için böyle bir mahalle
1 0 0
1 1 0
0 1 1
böyle bir mahalleden gerçekten farklı değil
0 1 0
1 1 0
1 1 0
Bu, sorunlara neden olabilir, çünkü dilatasyon ve erozyon, istediğiniz zaman yönelimli olarak önyargılı değildir. Yapabileceğiniz bir şey, çekirdekler gibi en uygun yönlü önyargılı morfolojik işlemi bulmaktır:
1 1 0 1 0 0 1 0 0
0 1 0 1 1 0 1 1 0
0 1 1 0 1 1 0 1 1 . . .
Bu 5 x 5 çekirdeklerde daha iyi olurdu, ama bence fikir yeterince açık. Temel olarak, bir köşe algılama çekirdeği fikri, bir çizgi segmenti algılama çekirdeği olacak şekilde biraz gerilir. En uygun eğrileri bulmak için de kullanabilirsiniz:
0 0 0 1 1
0 0 1 1 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1
Açıkçası bu çok sayıda çekirdeğe yol açar, ancak temel fikir çalışmaları sizin için umut veriyorsa, tekniği en uygun kernelin tek bir geçişte bulunması için optimize etmenin bir yolu vardır.
Her durumda, birden çok çekirdek ve bazı mantık kullanırsanız, (x, y) 'deki her işlem geleneksel bir morfolojik adımdan daha fazla hesaplama gerektirir:
- Her pikselde (x, y), birkaç morfolojik operatörün her birini uygulayın. Her operatör için, hem morfolojik işlemin sonucunu hem de girdinin çekirdeğe ne derece eşleştiğini hesaplayın. ("Derece" = eşleşen piksel sayısı)
- Gerçek açma / kapama piksel yapılandırmasına en yakın çekirdek için morfolojik sonucu seçin.
Çekirdeğin boyutu, girişin boyutuyla eşleşmelidir. Daha büyük bir çekirdek kullanmak yerine, işlem sayısını azaltmak için bir "yayılmış" çekirdek kullanabilirsiniz. Aşağıdaki çekirdek, yarıçapı 1'den büyük olan sadece 3 x 3 çekirdektir.
1 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 1 0 0 0
0 0 0 0 0 0 0
1 0 0 0 0 0 1