Python:二值图像分割

Python: Binary image segmentation

有没有一种简单的方法可以在python中实现二进制图像的分割?

我的 2d-"images" 是 numpy 数组。使用的值为 1.00.0。我需要一个包含值 1.0 的所有对象的列表。每个黑色像素都是物体的一个像素。一个对象可能包含许多值为 1.0.

的触摸像素

我可以用 numpy 也可以 scipy.

我已经尝试遍历所有像素并创建像素集并在旧集中填充新像素(或创建新集)。不幸的是,实施很差,有很多错误,而且速度也很慢。

希望这样的东西已经存在或者有一个简单的方法来做到这一点?

非常感谢

在我看来,这正是使用 scipy.ndimage.measurements.label 和 scipy.ndimage.measurements.find_objects

可以完成的事情

您必须指定 "touching" 的含义。如果它意味着边共享,那么 ndimage.measurements.label 的默认结构就是你需要的,所以你只需要传递你的数组。如果触摸也意味着分享角落,你会在docstring中找到正确的结构。

find_objects 然后可以生成对象的切片列表。