python - 在python中通过统一边距减少3D体积掩模

标签 python numpy scipy

我正在使用掩盖体积的 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/

相关文章:

io - 使用 scipy 打印 SuperLU 计算的 L 和 U 矩阵

python - 特征向量变换的差异 : Mathematica vs. SciPy

python - weawve导入错误: DLL load failed: %1 is not a valid Win32 application Anaconda64 MINGW64

python - 向量化 numpy 例程

python - imshow奇怪的cv2行为

python - 将零添加到长 Numpy 数组

python - 有效地计算图像python的方差

Python。奇怪的类属性行为

Python;为什么传递函数参数不是强制性的

python - 模拟单元测试中的时间流逝