如何在Python插值时保持图像的大小



我已经通过线性方法插值了我的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)

我假设通过保持尺寸,是指保持纵横比(即输入:400x400->输出:4000x4000(。另外,我不确定您试图通过插值实现什么。但是,根据用例,scipyndimage模块中的zoom功能可以完成工作。如果选择参数order=1,这对应于线性插值。

我不熟悉您用于导入图像的软件包。下面的示例假定图像数据已加载到img_data,一个二维浮点数组。只需适应您的用例。

from scipy.ndimage import zoom
interpolated_img_data = zoom(img_data, 10, order=1)

最新更新