求不规则多边形质心

最近做一个关于超像素的实验,实验过程中需要用到超像素的质心,所以在网上搜了一下资料,发现了一些不错的方法。
https://blog.csdn.net/tb3039450/article/details/24115303 这个我认为是挺不错的方法,但是程序的运行效率不高,因为计算每个质心都要便利整个图像,文中给出的图形较小,所以这个缺点还不是很明显,我需要的计算的数据较大,所以说我对这个程序进行了稍微的改进。

function [plot_x,plot_y] = Centroid(labels,labelnumbers,change_map)
%这个函数用来计算超像素质心并标记出来。
plot_x = zeros(1,labelnumbers);
plot_y = zeros(1,labelnumbers); %图像坐标系
area = zeros(1,labelnumbers);

labels = labels+1;%这里的labels就是二值化图像连通区域的标号。
for m = 1:labelnumbers
    [x,y] = find(labels==m);
    area(:,m) = length(x);
    plot_x(:,m) = sum(x)./area(:,m);
    plot_y(:,m) = sum(y)./area(:,m);
end
imshow(drawregionboundaries(labels, change_map, [150]));
hold on;
% scatter(plot_y,plot_x,'r');
plot(plot_y, plot_x,'r.' );
hold off;

里面有一些输入的参数是我实验中需要用到的,如果你不需要这些参数也可以进行调整,原理很简单。
忘了放图了。
因为实验数据不能发布到网上,所以截取了一部分。
求不规则多边形质心