如何在python中使用不同的插值方法对3D图像进行插值

时间:2019-06-04 15:15:42

标签: python interpolation

我是python的新手。我有NIFTI格式(.nii.gz)的3D脑图像,我想用不同的方法(最近邻,双线性,样条曲线...)进行插值并比较结果。图像的体素大小为1 * 0.45 * 0.45,我想使其为0.45 * 0.45 * 0.45。

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

1 个答案:

答案 0 :(得分:0)

您在这里:

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