Мне нужно найти номер Эйлера изображения, а также количество вогнутостей и сходств вверх по течению в изображении

Я использую MATLAB. Это код, который я написал

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

это дает мне номер Эйлера, но не дает количество вогнутостей. Я знаю, что что-то упустил в последней части. не могли бы вы объяснить мне, что мне не хватает?

Спасибо

1 ответ

Если вы ищете количество отверстий в каждом объекте на вашем изображении, я бы сделал это примерно так (см. Руководство для функции 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
Другие вопросы по тегам