How to delete one of the two outlines of an image

조회 수: 2 (최근 30일)
Jórdan Venâncio Leite
Jórdan Venâncio Leite 2020년 4월 5일
댓글: Rena Berman 2020년 10월 12일
I have a binary image with two outlines (attachment). One larger and one smaller. I used the bwconncomp and regionprops function to identify such outlines and their respective areas. I would like to get another image, similar to the image i attached, but without the smaller outline. The regionprops function returns a struct with a field and two values where it is possible to identify the area of the smallest contour in which I want to remove it from my initial image. Do you have any idea how to solve this?
Thanks in advance
Contour = bwconncomp(image, 8);
area = regionprops(Contour, 'Area');

채택된 답변

Ameer Hamza
Ameer Hamza 2020년 4월 5일
Following code will select the smallest region and remove it from the image
load('Image.mat');
image = preenc;
Contour = bwconncomp(image, 8);
area = regionprops(Contour, 'Area');
[~, idx] = min([area.Area]);
mask = Contour.PixelIdxList{idx};
image(mask) = 0;
imshow(image);
  댓글 수: 2
Ameer Hamza
Ameer Hamza 2020년 4월 5일
preenc is the name of the variable in your Image.mat file. Just set it to whatever is the name of your image variable.
Ameer Hamza
Ameer Hamza 2020년 4월 5일
Like this
load('Image.mat');
image = preenc;
Contour = bwconncomp(image, 8);
area = regionprops(Contour, 'Area');
idx = find([area.Area] < 50000);
for i=1:numel(idx)
mask = Contour.PixelIdxList{idx(i)};
image(mask) = 0;
imshow(image);
end

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by