从二进制 numpy 数组中检测表面(图像)

Detect surfaces from a binary numpy array (image)

假设我有一个来自 .jpg 图像(二维数组,来自灰度图像)的二进制 numpy 数组(0 或 1 / True 或 False)。我只是根据颜色变化做了一些处理以获得图像的边缘。

现在,我需要从这个数组的每个 surface/body 中获取它的中心。

这里是原图:

这里是处理过的:

现在我需要获取为此线生成的每个表面的中心(即,或多或少指向生成的每个表面中心的索引)。

如果您有兴趣,可以在这里找到文件 (.npy):

https://gofile.io/d/K8U3ZK

非常感谢!

找到了有效的解决方案。 scipy.ndimage.label 分配一个唯一的整数。对于每个标签或区域,为了验证结果,我简单地绘制了输出数组

from scipy.ndimage import label

labeled_array, no_feats = label(my_binary_flower)
plt.imshow(labeled_array)