У меня есть следующее изображение после запуска приведенного ниже кода.Рисование линии и обрезание области циркулятора
file='grayscale.png';
I=imread(file);
bw = im2bw(I);
bw = bwareaopen(bw,870);
imwrite(bw,'noiseReduced.png')
subplot(2,3,1),imshow(bw);
[~, threshold] = edge(bw, 'sobel');
fudgeFactor = .5;
im = edge(bw,'sobel', threshold * fudgeFactor);
subplot(2,3,2), imshow(im), title('binary gradient mask');
se = strel('disk',5);
closedim = imclose(im,se);
subplot(2,3,3), imshow(closedim), title('Connected Cirlces');
cc = bwconncomp(closedim);
S = regionprops(cc,'Centroid'); //returns the centers S(2) for innercircle
numPixels = cellfun(@numel,cc.PixelIdxList);
[biggest,idx] = min(numPixels);
im(cc.PixelIdxList{idx}) = 0;
subplot(2,3,4), imshow(im), title('Inner Cirlces Only');
c = S(2);
Моя цель теперь нарисовать красный cirle вокруг круглого объекта (см рисунок) и вырезать область круга (область) из исходного изображения «Я» и сохранить обрезанную область как изображения или выполнять другие задачи. Как мне это сделать?
Что такое 'img' в fmincon? –
@Nektar опечатка. см. обновление – Shai
Ваше решение верное. Но вместо бинарной маски я хочу обрезать область круга. Я имею в виду, скажем, я получил «bw» из изображения «I». Итак, как я могу обрезать обнаруженный круг из «I»? Или примените бинарную маску на «I» так, чтобы единственная область круга осталась неизменной, а остальная часть области стала черной? –