how can i remove object bigger than x pixel

i know that bwareaopen remove small elements , but how can i remove object bigger than x pixels???
i want to just the letter to stay so how can i remove that 2 big objects???

 Akzeptierte Antwort

Sven
Sven am 18 Dez. 2014
Bearbeitet: Sven am 18 Dez. 2014

1 Stimme

Hi Lukasz,
Here's an example that removes all objects greater than 1000 pixels in area. You probably have your own BW image and your own threshold that you can use in a similar way.
I = imread('rice.png');
BW = I>80;
cc = bwconncomp(BW);
stats = regionprops(cc);
threshold = 1000;
removeMask = [stats.Area]>threshold;
BW(cat(1,cc.PixelIdxList{removeMask})) = false;
Did this help you out?
Thanks, Sven.

2 Kommentare

Image Analyst
Image Analyst am 20 Dez. 2014
Lukasz's Flag removed and moved here as a comment:
Yes, it helped me.
What does the second line do? The line where you have written:
BW = I>80;

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

William Kemp
William Kemp am 1 Aug. 2017

0 Stimmen

Its a little more compact if you use the built in function for it:
BW2 = bwpropfilt(BW,'Area',[0 x_pixels])
Where x_pixels is the maximum desired number of pixels in a BW object

Community Treasure Hunt

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

Start Hunting!

Translated by