remove non-circle objects from image
古いコメントを表示
It looks that I tried everything (eccentricity, bwareaopen and so on)but nothing works. Maybe someone could suggest a way to do it?
I am dealing with this image (two styles of representation):
shapes=[stats.Eccentricity];
removeA2=bwareaopen(shapes<0.20,100);
or
bw = bwareaopen(bw, 50);
and others. I just can't find it in my code. I think =edge(); didn't worked well enough.
8 件のコメント
Sean de Wolski
2011 年 10 月 26 日
Well first off, you did not try _everything_. What have you tried? Show us, in code, and give us a link to an image that you have so we can see what you're working with.
Also, be sure to check out ImageAnalyst's "blobsdemo" on the fex.
Sean de Wolski
2011 年 10 月 26 日
What about 'extent' or perimeter to area ratios? These are all easy options in regionprops.
LG9
2011 年 10 月 26 日
LG9
2011 年 10 月 26 日
Sean de Wolski
2011 年 10 月 26 日
Well how are you going to learn to solve problems without working through them yourself? Take a look at the 'extent' of a few of the blobs, see if you notice a pattern. Or look at the area to perimeter ratio, and once again look for a pattern.
LG9
2011 年 10 月 26 日
Sean de Wolski
2011 年 10 月 26 日
Good job! There's a pretty obvious pattern there, threshold those values and keep the high ones.
LG9
2011 年 10 月 26 日
回答 (1 件)
Sven
2011 年 10 月 28 日
% Get the image as a b&w indexed (non-rgb) image
I = imread('project.jpg');
BW = rgb2ind(I, 2);
% Calculate its connected regions
L = labelmatrix(BW); % Not using bwconncomps() for older version users
stats = regionprops(CC,'Extent','Area');
% Find the ones that are like a circle
minExtent = 0.75;
keepMask = [stats.Extent]>minExtent;
% Extract the image of circles only and display
BWcircles = ismember(L, find(keepMask));
BWnonCircles = BW & ~BWcircles;
% Show the circles
figure, imshow(BWcircles)
% Show the things we removed
figure, imshow(BWnonCircles)
% Show them together in different colours
RGB = double(cat(3, zeros(size(BW)), BWcircles, BWnonCircles));
figure, imshow(RGB)
6 件のコメント
LG9
2011 年 10 月 31 日
Sean de Wolski
2011 年 10 月 31 日
What version are you using? Type >> ver at the command line.
Sven
2011 年 11 月 1 日
You may have a version before bwconncomp()
It can equivalently be:
BW = rgb2ind(I, 2);
L = bwlabel(BW);
stats = regionprops(L, ...)
LG9
2011 年 11 月 2 日
Sven
2011 年 11 月 2 日
LG9, I chose to show you all circles (stored in BWcircles) and all non-circles (stored in BWnonCircles), just in different colours. If you want to "remove non-circles", then all you have to do is look at the BWcircles image by itself:
figure, imshow(BWcircles)
Sven
2011 年 11 月 4 日
LG9, if your question has been answered, hit "accept" to remove it from the "unanswered" list.
カテゴリ
ヘルプ センター および File Exchange で Images についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!