How to calculate the length of image?
2 views (last 30 days)
Show older comments
Hi
Regarding the image below:
I want to calculate the length of the large black region, i.e., the perimeter of this region plus the length of the small white objects within it. How may I do so?
I know there are some functions for calculating the perimeter, but how to include the small objects?
Also please note that this is a binary image, but I can also do the calculations on grayscale image, if needed.
Thanks so much.
Steven
0 Comments
Accepted Answer
Image Analyst
on 22 Dec 2013
Something is wrong with that image. I saved it but when I read it in it looks totally different. Anyway, you need to get the perimeters of everything with regionprops and sum them
measurements = regionprops(binaryImage, 'Perimeter');
allPerimeters = [measurements.Perimeter];
theSum = sum(allPerimeters);
But make sure the big perimeter is the inside one and not the outer edge of the image. If it is, then invert the image and fill holes before calling regionprops
binaryImage = imfill(~binaryImage, 'holes');
measurements = regionprops(binaryImage, 'Perimeter');
theBigPerimeter = measurements.Perimeter;
I can't really test it because, like I said, it seems the image is messed up.
4 Comments
Image Analyst
on 22 Dec 2013
There are different algorithms. Summing bwperim just sums up the pixels. regionprops computes the perimeter by calculating the distance between each adjoining pair of pixels around the border of the region. So the first method would have two pixels at 45 degrees to each other as a length of 2 while regionprops would give a distance of sqrt(2). You can use whichever method you like better. Optically the regionprops method is probably more accurate.
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!