Çeşitli işaretlere sahip bir RGB resmim var. Ana amacım görüntü sınırları ile temas halinde olan işaretleri saymak.
Yaklaşım ve problem
Görüntüyü yükleyerek başladım [Şek. 1], sonra gri tonlamaya dönüştürdü ve biraz gürültüden kurtulmak için bir medyan filtre uyguladı [Şek. 2]. Sonra 0,2 eşiği ile ikilileştirdim, bu da Şekil 3 ile sonuçlandı. Şu anda ikilileştirilmiş görüntümü aldım, ancak sorun aynı işarete ait bazı parçaların tek bir yerine çeşitli bölgelerde görünmesidir. Şimdi amacım aynı nesneye ait bölgeleri birleştirmek, böylece bwlabelgörüntüde kaç işaret olduğunu saymak imclearborderve sınırdakilerden kurtulmak için kullanabilir ve bwlabelaradaki farkı elde etmek için tekrar kullanabilirim iki.
Benim yaklaşımım kullanmaktı bwmorph, Dilateonları doldurmaya çalışın nesneleri dilate ve imfill, holes. Ancak sorun şu ki, eğer onları az miktarda genişletirsem [Şek. 4], imfillonları doldurmuyor gibi görünüyor, eğer onları büyük miktarda genişletirsem [Şekil 5] tüm nesneler birleşmeye başlar :(
kod
img=im2double(imread('image.png')); figure, imshow(img)
img_gray=rgb2gray(img); imshow(img_gray);
img_mediana=medfilt2(img_gray, [3 3]); figure, imshow(img_mediana);
img_bin=im2bw(img_mediana, 0.2); imshow(img_bin)
img_dilate=bwmorph(img_bin, 'Dilate', 10); imshow(img_dilate)
img_fill=imfill(img_dilate, 'Holes'); figure, imshow(img_fill)
Rakamlar
Şekil 1 :
Şekil 1 http://dl.dropbox.com/u/5272012/1.png
Şekil 2 :
şekil 2 http://dl.dropbox.com/u/5272012/2.png
Şekil 3 :
şekil 3 http://dl.dropbox.com/u/5272012/3.png
Şekil 4 :
şekil 4 http://dl.dropbox.com/u/5272012/4.png
Şekil 5 :
