How to calculate the centroid / center of a patch?

22 views (last 30 days)
Hi, how can I calculate the centroid / center of a patch?
Maybe something like this?
[Xc,Yc] = centroid(patch('XData',X,'YData',Y))
  2 Comments
Sim
Sim on 1 Mar 2022
Thanks a lot @jessupj ! Indeed, @David Hill showed (I think at the same time with you) this solution :)

Sign in to comment.

Accepted Answer

David Hill
David Hill on 1 Mar 2022
pgon=polyshape(X,Y);
[x,y]=centroid(pgon);

More Answers (2)

Constantino Carlos Reyes-Aldasoro
The data X,Y must have been previously calculated from some raw data, say a thresholded figure, it is from that data you can easily calculate centroids with regionprops
  1 Comment
Sim
Sim on 1 Mar 2022
Thanks a lot @Constantino Carlos Reyes-Aldasoro, very kind!
(however I accepted the @David Hill solution since showing an example of code)

Sign in to comment.


Image Analyst
Image Analyst on 1 Mar 2022
Depends on what you have. If you have just arbitrary (x,y) data gotten somehow, like through assignment, then you can create a polyshape with the polyshape() function, and then use centroid(), like @David Hill showed.
If you have a binary image (like @Constantino Carlos Reyes-Aldasoro assumed -- say from thresholding), and want the centroid of each region, you can use regionprops():
props = regionprops(binaryImage, 'Centroid');
xyCentroids = vertcat(props.Centroid)
If you'd like a tutorial on image segmentation that shows that, you can see my Image Segmentation Tutorial:
  1 Comment
Sim
Sim on 1 Mar 2022
Edited: Sim on 1 Mar 2022
Yes, very true, it depends on what you have!
Yes, both replies from @David Hill, @Constantino Carlos Reyes-Aldasoro and @jessupj are very good, and it just depends on what data / scenario you have....
Thanks a lot for the Tutorial! Seems very interesting! I guess this one:

Sign in to comment.

Categories

Find more on Elementary Polygons in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!