bwareaopen not removing noise as expected
3 views (last 30 days)
Show older comments
Hi,
I have been using bwareaopen to remove noise from a binary image without having any problem. But after i changed my thresholding function, the noise reduction stopped working as expected.
The code that worked:
gray = rgb2gray(my_image);
bw = imbinarize(gray);
bw = bwareaopen(bw,100);
The code that did not work:
ballImg = my_image(:,:,1)/2 + my_image(:,:,2)/2 - my_image(:,:,3)/2;
greenThreshold = ballImg < 80;
ball=zeros(size(ballImg));
ball(greenThreshold)=1;
bw = bwareaopen(ball,100);
Original image:

After modified code (that did not work):

Can anybody see the problem here?
Thanks in advance!
Answers (1)
Fanos Christodoulou
on 1 Apr 2021
Just a comment on the above that could benefit others having a similar problem. My understanding is that the function bwareaopen deletes the white areas smaller than P pixels.
In your example above you need to reverse the black and white pixels first using the function imcomplement and then apply bwareaopen.
Best,
Fanos
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!