# how can find size of this objects in a binary image?

27 views (last 30 days)

Show older comments

##### 0 Comments

### Accepted Answer

Meshooo
on 25 Sep 2014

Edited: Meshooo
on 25 Sep 2014

There are many ways to do that. One easy way is to use nnz (Number of nonzero matrix elements).

So if your image is I, then:

I = im2bw (I); %be sure that your image is binary

Total_White_Pixels = nnz(I); % total area based on number of white pixels

Hope that helps you.

##### 3 Comments

Image Analyst
on 23 Oct 2021

Edited: Image Analyst
on 23 Oct 2021

@sylvester Fok, the units are "pixels" since nnz() gives a count of elements with non-zero values in an array. If you have the area of a pixel in real world units, like it's 5 square meters per pixel, then you can multiply by that spatial calibration factor, like I do in the attached demo.

Note that this answer just gives the area of all blobs added together, not of single blobs like I showed in my answer below. Essentially:

mask = grayImage > 128; % Create a logical binary image.

props = regionprops(mask, 'Area'); % Find areas of each blob and put into a structure.

allAreas = [props.Area]

Be sure to run my Image Segmentation Tutorial.

### More Answers (4)

Meshooo
on 25 Sep 2014

Edited: Meshooo
on 25 Sep 2014

You can do it in few steps. If your input image is I then:

%Step 1: Label each object using the following code.

I = im2bw(I); % be sure your image is binary

L = bwlabel(I); % label each object

%Step 2: see the label of each object

s = regionprops(L, 'Centroid');

imshow(I)

hold on

for k = 1:numel(s)

c = s(k).Centroid;

text(c(1), c(2), sprintf('%d', k), ...

'HorizontalAlignment', 'center', ...

'VerticalAlignment', 'middle');

end

hold off

% Step 3: find the area of the object you want using its label

Obj = (L == 1) % 1 is the label number of the first object.

figure, imshow(Obj);

Area = regionprops(Obj,'Area') % the answer

Now, for example if you want to find the area of object number 3, the just change number 1 to 3.

Obj = (L == 3) where 3 is the label number of the third object.

Area is the number of pixels in the object.

Hope that will help.

Image Analyst
on 24 Sep 2014

Edited: Image Analyst
on 23 Oct 2021

Of course sara. I thought you've already run across my image segmentation tutorial by now. Run it here http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862, replacing the coin image with yours. It will tell you the areas, centroids, bounding boxes, coordinates of the perimeter, etc.

Basically, it's

mask = grayImage > 128; % Create a logical binary image.

props = regionprops(mask, 'Area'); % Find areas of each blob and put into a structure.

allAreas = [props.Area]

##### 0 Comments

### See Also

### Categories

### Products

### Community Treasure Hunt

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

Start Hunting!