Q: How to remove outline circle in this image?
2 ビュー (過去 30 日間)
古いコメントを表示
Can you guys suggest possible ways on how to remove the circle outline in this image? Imfindcircles doesnt work for me. Can you suggest other methods?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/145651/image.jpeg)
0 件のコメント
回答 (2 件)
Iain
2014 年 10 月 9 日
A simple method is to use "bwlabel". This assigns each of the non-touching white areas a unique number. You can then pick each one in turn, and remove it like this:
labelled = bwlabel(binary_image); % binary image is the one on the right, which I'm assuming is binary
object_number = 1; % 1 is the object which is closest to the left hand side edge, and if there are two, then it choses the one nearest the top of the image.
labelled(labelled == object_number) = 0;
binary_image_corrected = labelled > 0;
I can see 2 or 3 things that that method will also remove.
3 件のコメント
Image Analyst
2014 年 10 月 9 日
Well now, those are different than what you first showed. The circle is not not completely closed and you have other blobs that occur in column 1 and will have label 1.
Iain
2014 年 10 月 9 日
If you make matlab "imagesc" the labelled image, you can use the datatip to find out the object number of any blob/section you want to eliminate.
Image Analyst
2014 年 10 月 9 日
Depends on how robust you want to be. Here's one method (untested)
% Extract the red channel and threshold it to find dark pixels.
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
%greenChannel = rgbImage(:, :, 2);
%blueChannel = rgbImage(:, :, 3);
mask = redChannel < 128; % Or whatever works.
% Dilate the binary image to close in the big circular central hole
mask = imdilate(mask, true(3)); % Increase 3 if it's not getting rid of circle.
% Compute the edge image by whatever you're doing now.
% Mask the edge image
edgeImage(~mask) = 0;
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!