Q: How to remove outline circle in this image?

조회 수: 5 (최근 30일)
Portgas Ace
Portgas Ace 2014년 10월 9일
댓글: Iain 2014년 10월 9일
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?

답변 (2개)

Iain
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
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
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
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;

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by