MATLAB Answers

How to guide bwconncomp to specific region of image?

3 views (last 30 days)
Knut Skaug
Knut Skaug on 18 Jul 2021
Edited: Matt J on 20 Jul 2021
I am new to image processing and have been trying to use bwconncomp() to identify components in images.
In my image there is a background which is set to zero or NaN. The area of interest is a circle where there are different values signifying specific regions of that circle that have more or less of some quantity. The image is similar to a topoplot
How can I guide bwconncomp() to only look for components inside the area of interest? My issue is that bwconncomp identifies more or less, the entire circle as one large component relative to the background.
  1 Comment
Rik on 18 Jul 2021
Have you tried setting all pixels outside of the circle (and the circle itself) to false?

Sign in to comment.

Answers (4)

Image Analyst
Image Analyst on 18 Jul 2021
Edited: Image Analyst on 18 Jul 2021
Make a mask of the circle and use it to erase everything outside of the circle, then call bwconncomp() To maks a circle mask, see the FAQ:
Or you can threshold your original image.
then use it to mask your binary image
binaryImage(~circleMask) = false; % Erase outside circle.
cc = bwconncomp(binaryImage);
Attach your image if you need more help.
See my image segmentation tutorial
Image Analyst
Image Analyst on 19 Jul 2021
Sure, I'll help if you let me. Attach your image if you need more help.
You can try a closing with imclose() to merge nearby blobs together into a single blob.

Sign in to comment.

Knut Skaug
Knut Skaug on 19 Jul 2021
Thank you.
If I could, I would make an image out of the matrix used for plotting in matlab, however, the attached image is the only solution for now unfortunately. The first is imagesc(matrix) the second is an example of a topoplot of the same matrix. The axis are flipped between the images, but one can see what the challenge is, more easily in the imagesc visualization.

Image Analyst
Image Analyst on 19 Jul 2021
I don't know what the different components are? The blue/purple regions? The colored region is just a continuum of colors smoothly varying and I don't know what would be a component in them. What do you want as a component? Not the circle you've told us. So what/where are the components? Can you outline each individual component in red and repost it?

Matt J
Matt J on 20 Jul 2021
Edited: Matt J on 20 Jul 2021
If you have a binary circleMask of the circular region, you can use bwlmaskpropfiltn (Download) to eliminate all objects in a label map L that arenot completely contained in the circle
Lmasked= bwlmaskpropfiltn(L,circleMask,'AreaRelSelf',[1,inf]) ;

Community Treasure Hunt

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

Start Hunting!

Translated by