首页 > 解决方案 > 在不更改标签值/scipy.ndimage.interpolation 或 RegularGridInterpolator 的情况下对 3D 多类掩码进行重采样/插值

问题描述

我有一个 3D 蒙版卷L,其中包含以下内容:

print(L.shape)
(170, 256, 256)
print("L: ", np.unique(L))
L: [0 1 2 3 4 5 6 7 8]

在此处输入图像描述
我想对掩码进行下采样,然后将其上采样到其原始大小,以保持标签值相同。
尝试失败-> 下采样:

from scipy.ndimage.interpolation import zoom
zL = zoom(L, (0.5, 0.5, 0.5), mode='nearest')
print("zL: ", np.unique(zL))
zL:  [-3 -2 -1  0  1  2  3  4  5  6  7  8  9 10]

在此处输入图像描述
这正在改变标签值。我已经尝试过其他mode选项,例如constant和所有。但似乎没有一个工作。

成功尝试-> 下采样:另一方面:

dx = 2
dy = 2
dz = 2
if DOWNSAMPLE:
    L_down = L[::dx, ::dy, ::dz]
print("L_down: ", np.unique(L_down))
L_down:  [0 1 2 3 4 5 6 7 8]

似乎在不更改标签值的情况下工作。

在此处输入图像描述
尝试失败->上采样: 但是当回到原始大小时

zL = zoom(L_down, (2, 2, 2), mode='nearest')

不工作。此外,如果有任何其他关于三线性插值的细节,将不胜感激。
谢谢。

标签: spatial-interpolationscipy.ndimage

解决方案


推荐阅读