How detect spot white circle on image
2 ビュー (過去 30 日間)
古いコメントを表示
I would like detect spot white are like below image . Hope anyone help . Thanks!
採用された回答
KSSV
2017 年 6 月 6 日
編集済み: KSSV
2017 年 6 月 6 日
I = imread('Screen Shot 2017-06-06 at 3.54.58 PM.png') ;
im = imclearborder(im2bw(I));
im_fill = imfill(im, 'holes');
s = regionprops(im_fill, 'Area', 'PixelList');
[~,ind] = max([s.Area]);
pix = sub2ind(size(im), s(ind).PixelList(:,2), s(ind).PixelList(:,1));
out = zeros(size(im));
out(pix) = im(pix);
% imshow(out);
[y,x] = find(out) ;
idx = boundary(x,y) ;
% idx = convhull(x,y) ;
imshow(I)
hold on
plot(x(idx),y(idx),'r','linewidth',3)
Code taken from: https://in.mathworks.com/matlabcentral/answers/343337-how-to-remove-small-portion-in-an-image
If boundary doesn't work, use convexhull
その他の回答 (1 件)
Image Analyst
2017 年 6 月 6 日
KSSV's code finds the largest blob that is not touching the border, whereas you actually want roundish objects.
Like I said in your duplicate post, You could use my code for circularity. Or you could also look for Solidities close to 1, or get the BoundingBox and look for aspect ratios close to 1.
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!