2012-06-16 3 views
1

Чтобы удалить большинство нежелательных краев, мне нужно подключить компоненты к изображению и отфильтровать компоненты, которые не имеют ровно одного отверстия на основе их номера Эйлера.Обработка изображений Matlab

Я знаю, что мне нужно использовать функции обработки изображений bwconncomp и regionprops, но у меня нет опыта с ними.

Это мой код:

rgb=imread('2whgyzr.jpg'); 
gray_scale = rgb2gray(rgb); 
BW3 = edge(gray_scale,'canny',[],1); 

и это изображение:

http://tinypic.com/r/2whgyzr/6

Заранее спасибо

ответ

2

Это должно сделать работу, если я понимаю ваш вопрос правильно:

filtered = false(size(BW3)); 
CC = bwconncomp(BW3); 
CC_props = regionprops(CC,'EulerNumber'); 

for cc_idx = 1:length(CC.PixelIdxList) 
    if(CC_props(cc_idx).EulerNumber == 0) 
     pixels = CC.PixelIdxList{cc_idx}; 
     filtered(pixels) = true; 
    end 
end 

imshow(filtered) 

enter image description here

+0

Большое вам спасибо! Именно то, что я искал !!! – dani