我正在使用掩盖体积的 3D bool 数组。我的目标是采用一个掩模并将掩模的面积在所有维度上减少一定的余量,m。
有没有一种简单的方法可以使用一些常见的库(numpy、scipy、pandas 等)来做到这一点?
I found some code online使用多个 for 循环将掩码扩展一维。这适用于扩展案例,但我觉得有一种更紧凑的方法。
这是我在 2D 中寻找的最小示例。
原创
array([[0., 0., 1., 0., 0.],
[0., 1., 1., 1., 0.],
[1., 1., 1., 1., 1.],
[0., 1., 1., 1., 0.],
[0., 0., 1., 0., 0.]])
统一缩小1像素
array([[0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 1., 1., 1., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0.]])
但我希望这是在 3D 空间中。感谢您的任何意见。
最佳答案
您可能正在寻找scipy.ndimage.binary_erosion(a)
:
a = np.array([
[0., 0., 1., 0., 0.],
[0., 1., 1., 1., 0.],
[1., 1., 1., 1., 1.],
[0., 1., 1., 1., 0.],
[0., 0., 1., 0., 0.]
])
b = scipy.ndimage.binary_erosion(a) # returns an array of bool
请注意,这也会侵 eclipse 内表面
关于python - 在python中通过统一边距减少3D体积掩模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52088709/