我需要找到图像的欧拉数以及图像中的上游凹陷和混合的数量

时间:2013-04-12 13:42:38

标签: matlab eulers-number

我正在使用MATLAB。这是我写的代码

 I = imread('image.tif');
 imshow(I);
 title('Original');
 eul = bweuler(I,8);
 CH = bwconvhull(BW);
bwlabel()

它给了我欧拉数,但没有给出凹陷数。我知道我在最后一部分遗漏了一些东西。你能解释一下我错过了什么吗?

由于

1 个答案:

答案 0 :(得分:0)

如果您要查找图像上每个对象的孔数,我会更喜欢这样(请参阅regionprops函数的手册):

I = imread('circles.png');  
% assuming that I is logical (binary) image
I = [ I fliplr(I) ; flipud(I) I];   % just to make image bigger

figure;
Props = regionprops(I,{'image','filledImage'});
NRegions = length(Props);
for k=1:NRegions
    DiffImage = Props(k).FilledImage-Props(k).Image;
    strT = sprintf('Region %d of %d',k,NRegions);
    subplot(2,2,1); imshow(Props(k).Image);       title([strT ': Original image']);
    subplot(2,2,2); imshow(Props(k).FilledImage); title([strT ': Filled image']);
    subplot(2,2,3); imshow(DiffImage);            title([strT ': Filled-Original image']);
    drawnow;
    pause(1); % allows to see the images
    [L, NHoles] = bwlabel(Props(k).FilledImage-Props(k).Image,8);
    fprintf('%s has %d holes\n',strT,NHoles);
end