首页 > 解决方案 > 如何在 python 中使用不同的插值方法对 3D 图像进行插值

问题描述

我对python很陌生。我有一个 NIFTI 格式(.nii.gz)的 3D 大脑图像,我想用不同的方法(最近邻、双线性、样条线等)对其进行插值并比较结果。图像的体素大小为 1*0.45*0.45,我想将其设为 0.45*0.45*0.45。

我知道这是很容易的任务。我所做的,问题是:在 Scipy 中,函数只能获得积分,但在这里我有一个图像。可用于获取图像输入的功能仅适用于 2D 图像。你有什么解决办法吗?

标签: pythoninterpolation

解决方案


干得好:

def rescale(data,affine):
    #compute rescaling coef
    original_resolution = [abs(affine[0,0]),abs(affine[1,1]),abs(affine[2,2])]
    target_resolution = [0.45,0.45,0.45]
    rescaling_coef = np.divide([float(i) for i in original_resolution],[float(i) for i in target_resolution])

    # X and Y dimension
    data = skimage.transform.rescale(data, (rescaling_coef[0],rescaling_coef[1]), order=1, preserve_range=True)
    # Z dimension 
    #flip axes first
    data = np.swapaxes(data,0,2)
    data = skimage.transform.rescale(data, (rescaling_coef[2],1), order=1, preserve_range=True)
    data = np.swapaxes(data,0,2)


    return data, rescaling_coef

推荐阅读