Мне нужно найти номер Эйлера изображения, а также количество вогнутостей и сходств вверх по течению в изображении
Я использую 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