如何计算2d numpy数组的加权“中心”?

时间:2013-06-30 00:43:52

标签: opencv numpy

假设我有一些numpy数组(在这种情况下它代表一个100x100的二进制图像)......

img=np.random.randint(0,2,(100,100)).astype(numpy.uint8)

如何最好地确定数组中1个值的“平均位置”?例如,如果阵列中有一个1的簇,我想找到该簇的中心。

1 个答案:

答案 0 :(得分:1)

我发现你也将此标记为numpy,所以我会这样做:

x = range(0, img.shape[0])
y = range(0, img.shape[1])

(X,Y) = np.meshgrid(x,y)

x_coord = (X*img).sum() / img.sum().astype("float")
y_coord = (Y*img).sum() / img.sum().astype("float")

这会给你加权平均中心。

如果你想在图像中的每个1的簇中使用它,我建议你使用连通的组件来掩盖你感兴趣的簇。可能不是一个好主意为你想要的任意数量的簇重复这个过程,但是而是在同一个数组遍历中计算所有集群平均值。