我已经通过线性方法对nifti图像(mri数据)进行了插值。但是问题是输出中的视场发生了变化(输入为400 * 400但输出为4000 * 3000)我正在寻找一种在插值时保持尺寸的方法。您可能有解决方案吗? 谢谢
t1_ = "name.nii.gz"
img_t1_ = nib.load(t1_)
img_t1_ = np.double(img_t1_.get_fdata())
slice_ = 300
img_t1_ = np.rot90(img_t1_[:,:,slice_,0])
x = np.linspace(0, img_t1_.shape[1], img_t1_.shape[1])
y = np.linspace(0, img_t1_.shape[0], img_t1_.shape[0])
X, Y = np.meshgrid(x, y)
Z = img_t1_
x2 = np.linspace(0, img_t1_.shape[1], 9*img_t1_.shape[1])
y2 = np.linspace(0, img_t1_.shape[0], 9*img_t1_.shape[0])
print(x2.shape[0], y2.shape[0])
tmp_z_ = np.zeros((x2.shape[0], y2.shape[0]))
f_linear = interp2d(x, y, Z, kind='linear')
Z2 = f_linear(x2, y2)
答案 0 :(得分:0)
我假设保持尺寸是指保持宽高比(即输入:400x400->输出:4000x4000)。另外,我不确定您要通过插值实现什么目标。但是,根据使用情况,c("NA","NA","Pay","Check")
的{{1}}模块中的zoom
函数可以完成此工作。如果选择参数scipy
,则对应于线性插值。
我不熟悉用于导入图像的软件包。以下示例假定图像数据已加载到二维浮点数组ndimage
中。只需适应您的用例即可。
order=1