bwareaopen creates a noisy result rather than cleanly removing small objects
1 view (last 30 days)
Show older comments
Faraz
on 20 Jan 2014
Answered: Image Analyst
on 20 Jan 2014
Hi. I want to remove the diacritics from some arabic text. I read that the best option would be to use morphological opening. And hence the function
bwareaopen
Now in the example in the link here: http://www.mathworks.co.uk/help/images/ref/bwareaopen.html it has cleanly removed small objects. But in my case it tends to produce a noisy result
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/155355/image.jpeg)
This is with the pixel value of 50, but produces the same result even if I use 5 or 500?
Why is it not working as it is shown in the tutorial?
Thank you
0 Comments
Accepted Answer
Bruno Pop-Stefanov
on 20 Jan 2014
Make sure that you call bwareaopen on a binary image. I executed the following code on the attached JPEG image and it worked:
% Read original image
I = imread('inputimg.jpg');
figure(1);
imshow(I)
% Convert to binary image
BW = im2bw(I, 0.5);
figure(2);
imshow(BW)
% Do morphological opening to remove small connected components
BW2 = bwareaopen(BW, 50);
figure(3);
imshow(BW2)
2 Comments
Bruno Pop-Stefanov
on 20 Jan 2014
Great! Can you please accept my answer? I believe there is a link on the left.
More Answers (1)
Image Analyst
on 20 Jan 2014
It looks like you somehow ran it on the uint8 jpeg image instead of a binary image. I can see jpeg block artifacts.
When it says "numeric array" it probably means that if you give it a double array of 0's and 1's it will interpret that automatically as a binary image of trues and falses. I don't think it means it can take a gray scale image.
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!