How to find the area of a segmented image in matlab?
8 次查看(过去 30 天)
显示 更早的评论
I need to find the total area of the segmented image(attached below) in Matlab. However i am not able to get that if i use regionprops('Area') command. It gives me total pixel size which is 2048*2048 but i need to find the area of only the segmented region(Black)? Please tell me how to do it.
2 个评论
采纳的回答
Rik
2019-7-17
编辑:Rik
2019-7-17
You can make use of the fact that true is stored as a 1. Make sure your object is the only one marked with true and then use this:
A=sum(IM, 'all');
If you're using on older release, use this instead:
A=sum(IM(:));
6 个评论
Rik
2019-7-18
Just as a point of clarification: this code counts the number of nonzero pixels. If you input an RGB image, it will count each pixel 3 times. You need to convert it to black and white image where the white is the area you want to count. rgb2gray followed by a threshold should work best.
If you want to count the black pixels, you will have to invert the image, as Image Analyst suggested. (when you posted the question I either missed that you wanted the black area, or I misread, or you edited the question)
As for the conversion to real external units, you should try to get the dicom header. They will contain the needed information.
更多回答(1 个)
Image Analyst
2019-7-17
You need to invert your image so that your black region of interest is white. Then call sum() to get the number of pixels:
numberOfBlackPixels = sum(~binaryImage(:));
Or you can get a different area from a different method using bwarea(), which takes into account the shape of the boundary to get like half pixels or whatever:
numberOfBlackPixels = bwarea(~binaryImage);
Or you can use regionprops():
props = regionprops(~binaryImage, 'area');
numberOfBlackPixels = props.Area;
3 个评论
Image Analyst
2019-7-18
My answer is correct (Rik mistake was forgetting to invert the image, or else you said you wanted the black instead of the white after he answered) and the answer is in pixels. If you want to have the answer in cm or square cm you'll have to multiply by a factor, like
areaInCm = areaInPixels * cmPerPixel ^2;
See attached demo for a full example. If I helped you please Vote for or Accept the answer.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Convert Image Type 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!