2

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

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

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

4

1 回答 1

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 的集群进行此操作,我建议您使用连接的组件来掩盖您感兴趣的集群。对尽可能多的集群重复此过程可能不是一个好主意,而是计算所有同一数组遍历中的聚类平均值。

于 2013-06-30T01:21:05.983 回答