Number of Object in binary image

10 views (last 30 days)
Hi, im trying to get the number of objects in an binary image but it return the wrong answer (it should be 6 but it return 31). here is the code and the image:
I=imread('2.jpg');
I_BW=im2bw(I,0.87);
I1=imcomplement(I_BW);
[L,n]=bwlabel(I1);
bw.PNG

Accepted Answer

Image Analyst
Image Analyst on 15 Dec 2019
Try this:
bw = imread('bw.png');
if ndims(bw) > 1
bw = bw(:,:,1);
end
% Threshold
bw = bw > 128;
subplot(1, 2, 1);
imshow(bw, []);
% Fill holes
bw = imfill(bw, 'holes');
% Get areas
props = regionprops(bw, 'Area');
sortedAreas = sort([props.Area], 'descend')
% Looks like we need to throw away any blobs less than 1000 pixels or so
bw = bwareaopen(bw, 1000);
subplot(1, 2, 2);
imshow(bw);
% Count the blobs
[labeledImage, numBlobs] = bwlabel(bw);
fprintf('Found %d shapes.\n', numBlobs);

More Answers (1)

KALYAN ACHARJYA
KALYAN ACHARJYA on 15 Dec 2019
Edited: KALYAN ACHARJYA on 15 Dec 2019
Yes, the correct answer is 31, not 6. Actually it counts the all white pixels, blobs (having 1 white pixel with sourounding by black pixels also), there are so many blobs in 4th objects.
If you are looking for 6 answer only, then you have to remove all those tiny small blobs and apply same (using morphological operation, imdilate or imerode).
May it helps!

Community Treasure Hunt

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

Start Hunting!