原始医疗影像文件:
DCM图像转nii格式:
在这里需要用到一个开源工具:dcm2niix 直接从release中可以下载编译好的exe文件。
windows需要在cmd下执行exe文件(不能直接打开,在命令行下运行),将会打印出所有的参数:
在这里我们将某个文件夹下的图像文件进行转换:
将会在output目录下生成一个nii的文件和图像的描述json:
python加载nii图像数据并MPR展示:
import matplotlib
from matplotlib import pylab as plt
import nibabel as nib
from nibabel import nifti1
from nibabel.viewers import OrthoSlicer3D
# matplotlib.use('TkAgg')
# 文件名,nii或nii.gz
example_filename = 'LGG71_Flair.nii'
img = nib.load(example_filename)
# 打印文件信息
print(img)
print(img.dataobj.shape)
#shape不一定只有三个参数,打印出来看一下
width, height, queue = img.dataobj.shape
# 显示3D图像
OrthoSlicer3D(img.dataobj).show()
#计算看需要多少个位置来放切片图
x = int((queue/10) ** 0.5) + 1
num = 1
# 按照10的步长,切片,显示2D图像
for i in range(0, queue, 10):
img_arr = img.dataobj[:, :, i]
plt.subplot(x, x, num)
plt.imshow(img_arr, cmap='gray')
num += 1
plt.show()
# 展示每一张图像
for i in range(0, queue, 1):
img_arr = img.dataobj[:, :, i]
plt.imshow(img_arr, cmap='gray')
plt.show()
这是对于原始图像的展示,其shape格式为:
(137,163,138) 分别为图像宽度,高度,和索引值(即第几张)
但是对于模型预测后的分割图,其通常来说是多通道的,如:
(137, 163, 138, 1, 2)
在这里就需要对上述代码进行修改:
#采用5个参数来接收shape
width, height, queue,p1,p2 = img.dataobj.shape
#图像采用imshow的时候需要指定通道的numpy数据:
img_arr = img.dataobj[:, :, i,0,0]
#或
img_arr = img.dataobj[:, :, i,0,1]