Matlab 在图像区域中寻找质心

Matlab 在图像区域中寻找质心,matlab,centroid,Matlab,Centroid,我有一组矩阵,其中有许多水滴(这会随着矩阵的变化而变化),我正在寻找一种方法来找到水滴的质心。为此,我使用regionprops和Centroid选项 B = bwlabel(A); stat = regionprops(B,'Centroid'); number_centers = numel(stat); coord_centers = zeros(number_centers,2); xy_cylinder = zeros(number_centers,2); for x = 1: nu

我有一组矩阵,其中有许多水滴(这会随着矩阵的变化而变化),我正在寻找一种方法来找到水滴的质心。为此,我使用
regionprops
Centroid
选项

B = bwlabel(A);
stat = regionprops(B,'Centroid');

number_centers = numel(stat);
coord_centers = zeros(number_centers,2);
xy_cylinder = zeros(number_centers,2);
for x = 1: number_centers
   coord_centers(x,1) = stat(x).Centroid(1);   % Angle
   coord_centers(x,2) = stat(x).Centroid(2);   % Radius
end 
如果我用重叠的质心绘制矩阵(下面的代码),我注意到它们略微偏移(它们位于质心所在像素的角上)。你认为我是对的吗?你知道为什么吗

axis equal;
pcolor(A), colorbar, hold on;
xlabel('Angle'); ylabel('Radius');
for x = 1: numel(stat)
    plot(stat(x).Centroid(1),stat(x).Centroid(2),'r+');
end

我认为这更像是一个可视化问题。例如,如果有一条3像素长的线,
a(4,6:8)=1
,则质心应位于
(4,7)
,这正是Matlab计算的结果。当可视化这一点时,与你所描述的效果相同,质心不在直线的中间,因为<代码>(4,6)< /代码>和<代码>(5,9)< /代码>之间的区域被标记。谢谢!所以为了正确地显示质心的位置,如果我在它的x和y坐标上加半个像素,可以吗?对于上面的图像,质心位于(11,19)和(16.9,17.1)中。这对于可视化应该很好,但对于进一步的计算,您仍然应该使用计算出的质心。