Ç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 bwlabel
görüntüde kaç işaret olduğunu saymak imclearborder
ve sınırdakilerden kurtulmak için kullanabilir ve bwlabel
aradaki farkı elde etmek için tekrar kullanabilirim iki.
Benim yaklaşımım kullanmaktı bwmorph
, Dilate
onları doldurmaya çalışın nesneleri dilate ve imfill
, holes
. Ancak sorun şu ki, eğer onları az miktarda genişletirsem [Şek. 4], imfill
onları 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 :