Как интерполировать 3D-изображение с различными методами интерполяции в Python - PullRequest
0 голосов
/ 04 июня 2019

Я совершенно новый в питоне.У меня есть 3D изображение мозга в формате NIFTI (.nii.gz), и я хочу интерполировать его различными методами (ближайший сосед, билинейный, сплайн, ...) и сравнить результаты.Размер изображения в вокселе составляет 1 * 0,45 * 0,45, и я хочу сделать это 0,45 * 0,45 * 0,45.

Я знаю, что это довольно простая задача.что я сделал, и проблема в том, что: в Scipy функции только получают очки, но здесь у меня есть изображение.и функции, которые доступны для ввода в виде изображения, работают только для 2D-изображений.Есть ли у вас решение?

1 Ответ

0 голосов
/ 19 июня 2019

Вот, пожалуйста:

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
...