save only specefic connected components

Hi, From a gray image , I extract all the connected components using bwconcomp, Then I work on each connected component. I want to draw in a new image with the size of the originam image some specefic connected components. I saw many works based on the area , the biggest component ... but for me I have new parameter that will filter the cinnected components, How can I draw in a new image with the original image size a specific connected component in its original place?? Thank you :)

답변 (1개)

Image Analyst
Image Analyst 2017년 3월 1일
편집: Image Analyst 2017년 3월 1일

1 개 추천

You can extract any component from your labeled image into a new binary image using ismember:
binaryImage = ismember(labeledImage, index);
This will get only one blob - the one that was labeled with a number of "index".
If you want to mask the image with that blob and get a gray scale image then do this:
maskedImage = grayImage; % Initialize
maskedImage(~binaryImage) = 0; % Do the masking.

댓글 수: 7

Flore Massoulié
Flore Massoulié 2017년 3월 1일
편집: Flore Massoulié 2017년 3월 1일
thank you for your reply, sorry but I will add many components in the same image, how can I save their indexes ? I didn't get the idea :(
for example like this,
Image Analyst
Image Analyst 2017년 3월 1일
index can be an array of indexes if you want to extract several components.
Sorry but this is not working for me, my original image is Img and the component I want to draw exp F(i).Image, then when I do binaryImage = ismember(Img, F(i).Image); is that what you mean ? but I got a white image nothing in it
Image Analyst
Image Analyst 2017년 3월 1일
Is "F(i).Image" a scalar integer that contains the ID label of the blob you want to extract? If so, then yes, that should work.
Hi again, No F(i).Image is the image of the connected component;
Since you already have the image of the connected component, you can just use it as a mask on the original image:
If you want to mask the image with that blob and get a gray scale image then do this:
maskedImage = grayImage; % Initialize
mask = F(i).Image > 0; % Convert "the image of the connected component" into a logical mask.
maskedImage(~mask) = 0; % Do the masking.

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

질문:

2017년 3월 1일

댓글:

2017년 3월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by