如何在nifti文件的形状中添加第三个参数?

时间:2019-02-26 07:50:34

标签: python numpy numpy-ndarray vgg-net nifti

我将ADNI数据集的.nii文件用于我的实验,该文件用于分析脑mri数据。这是我所做的以及我想做的代码片段。

import numpy as np
from pylab import *
import nibabel as nib
import matplotlib.pyplot as plt
import skimage.transform

img_path=r"C:\\Users\\Umit Kilic\\Komodomyfiles\\umit\\cn.nii"

nii_obj=nib.load(img_path)
img=nii_obj.get_fdata()

slice1=(img[60,:,:])
slice2=(img[:,80,:])
slice3=(img[:,:,60])

figure()
imshow(slice1)
show()

print(type(slice1)," size:", slice1.size," shape:", slice1.shape)

打印输出为:

<类'numpy.ndarray'>大小:42496形状:(256,166)

图是:

figure of slice1

我想向该ndarray添加第三个参数,例如(256,166,3),然后在上面的代码的末尾添加以下代码片段:

x=np.expand_dims(slice1,axis=2)

print(type(x)," size:", x.size," shape:", x.shape)
figure()
imshow(x)
show()

此代码的输出是:

<类'numpy.ndarray'>大小:42496形状:(256,166,1)

对于图中的错误:TypeError:图像数据的尺寸无效

现在,最后一个参数应该为3,以便能够将此ndarray用作VGG16,VGG19,ResNet50等的输入。例如,由于VGG16期望输入的形状为(224,224,3)。

然后,我在上述代码的末尾添加了该代码段:

a=skimage.transform.resize(x,(256,166,3))

print(type(a)," size:", a.size," shape:", a.shape)

figure()
imshow(a)
show()

打印代码的输出为:

<类'numpy.ndarray'>大小:42496形状:(256,166,3)

图是:

figure of a

然后我意识到我可以在获取slice1之后立即添加第三个参数,而无需expand_dims,而只需使用skimage.transform,resize函数即可。

这里是一个问题:更改此文件形状的正确方法,以便能够将其用作某些期望使用预先指定形状输入的深度学习实现的输入吗?

顺便说一句,我不明白为什么最后一个数字在大脑中呈绿色。这可能是第二个问题,可能是一个愚蠢的问题。

0 个答案:

没有答案