Additional properties from regionprops

12 views (last 30 days)
Hi all,
I'm using regionprops to extract some properties from a watershed segmentation of polygonal objects in an image. It returns values for the centroid, area, and perimeter of each segmented polygon.
Does anyone know if there's a way to extract specific lengths of the sides of the polygons, rather than just their entire perimeters?
Looking forward to your suggestions!
Thanks!
Best,
Veena

Accepted Answer

Adam Danz
Adam Danz on 9 Mar 2020
You could also return the "ConvexHull" values which will return a p-by-2 matrix for each polygon where each row of the matrix contains the x- and y-coordinates of one vertex of the polygon. Then you could use pdist() to compute the length of each segment.
  5 Comments
Veena Chatti
Veena Chatti on 26 Apr 2020
Thank you, I am sorry for my late response, but the regionprops convexhull seems to capture a lot of the shapes quite accurately. I needed to get back onto a computer to be able to try it out and let you know, but now that I have I see that this is indeed a good solution that captures these shapes well. Thanks again!
Image Analyst
Image Analyst on 27 Apr 2020
Note: using the convex hull will only work for polygons or shapes that are convex. If you have any shapes that have any incursions into them, like a blob shaped like the letter F or H or Z etc., the convex hull will not work.

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 10 Mar 2020
You need to compute the boundary of each polygon with bwboundaries(). Then use findpeaks() to decide how many vertices there are. Then you can extract each "straight" segment from the boundary and do some kind of analysis on the shape of that "line". See my attached shape recognition demo to get you started.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!