How to find the pixels of certain regions in a binary image
4 views (last 30 days)
Show older comments
Efstathios Kontolatis
on 12 Jan 2017
Answered: Image Analyst
on 16 Jan 2017
I have created a binary image which contains the edges of an image. I want to keep only the pixels of the regions that have an area bigger than 250 pixels. How can I do that?
0 Comments
Accepted Answer
Vishal Neelagiri
on 16 Jan 2017
You might want to use the 'bwselect' function to select objects in a binary image. You can use this with the 'bwarea' function which calculates the area of objects in a binary image. You might want to refer to the following documentation links:
https://www.mathworks.com/help/images/labeling-and-measuring-objects-in-a-binary-image.html
https://www.mathworks.com/help/images/ref/bwselect.html
https://www.mathworks.com/help/images/ref/bwarea.html
0 Comments
More Answers (1)
Image Analyst
on 16 Jan 2017
Don't use bwselect(), use bwareaopen. It does exactly what you asked for. From the help:
BW2 = bwareaopen(BW,P) removes all connected components (objects) that have fewer than P pixels from the binary image BW, producing another binary image, BW2.
Here is what you'd do:
% Extract only those blobs with 251 pixels or more.
% Blobs 250 and smaller will be removed.
binaryImage = bwareaopen(binaryImage, 251);
You might also be interested in bwareafilt() which extracts the N largest or smallest blobs, or blobs within a specified range of areas. It can also do what you want.
binaryImage = bwareafilt(binaryImage, [251, inf]);
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!