我想知道是否有任何基于numpy的工具可以:
它仅支持2D图像,因此我必须逐层调用该函数(在z轴上),这很慢。 [编辑:请参见下面的注释。]
我肯定更喜欢更有效的方法。例如,scipy.spatial.ConvexHull()可以获取N维空间中的点列表,并返回一个凸包对象,似乎不支持查找其凸包图像/体积。
- 在3D中给定二进制输入numpy图像,找到其凸包;
- 并返回在此3D凸包内的体素(3D像素)的索引列表或类似内容。
skimage.morphology.convex_hull_image()
,但是我肯定更喜欢更有效的方法。例如,scipy.spatial.ConvexHull()可以获取N维空间中的点列表,并返回一个凸包对象,似乎不支持查找其凸包图像/体积。
points = np.transpose(np.where(image))
hull = scipy.spatial.ConvexHull(points)
# but now wonder an efficient way of finding the list of 3D voxels that are inside this convex hull
有什么想法吗?请注意效率对我的应用很重要。 谢谢!
更新:与此同时,convex_hull_image()
已经扩展支持ND图像,但对于中等大小的数据来说速度相当慢。下面接受的答案要快得多。