how can find size of this objects in a binary image?
14 ビュー (過去 30 日間)
古いコメントを表示
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/145512/image.png)
hi I have a binary image and it has some objects...how can find size of this objects??Is there any toolbox in matlab for this??
0 件のコメント
採用された回答
Meshooo
2014 年 9 月 25 日
編集済み: Meshooo
2014 年 9 月 25 日
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 件のコメント
Image Analyst
2021 年 10 月 23 日
編集済み: Image Analyst
2021 年 10 月 23 日
@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.
その他の回答 (4 件)
Meshooo
2014 年 9 月 25 日
編集済み: Meshooo
2014 年 9 月 25 日
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
2014 年 9 月 24 日
編集済み: Image Analyst
2021 年 10 月 23 日
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 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!