600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 医学图像Dicom(.dcm)转换为NIFTI(.nii)格式

医学图像Dicom(.dcm)转换为NIFTI(.nii)格式

时间:2020-10-28 20:41:10

相关推荐

医学图像Dicom(.dcm)转换为NIFTI(.nii)格式

文章目录

前言医学图像格式DICOMNIFTI python代码

前言

NIfTI 中的图像原始数据一般被存储成了三维图像,而dicom存储为二维图层,所以相对于DICOM文件,NIFTI文件更加易用于机器学习,因为NIfTI 是三维图像,处理一个单独的NIfTI 文件要比处理成百上千个DICOM文件更加容易一些。

医学图像格式

DICOM 和 NIFTI 是最常用的格式,下面对其进行简单介绍。

DICOM

DICOM 代表的是医疗数字成像和通信。DICOM 是由美国国家电气制造商协会(NEMA)制定的标准。它定义了医疗成像领域中关于信息处理、存储、打印以及传输的标准,这些都是你在扫描仪或者某家医院的图片归档和通信系统(PACS)能够立即得到的文件格式。

它包括了文件格式和能够接收图像以及 DICOM 格式的病人数据的实体之间使用 TCP/IP 进行通信的协议。

一个 DICOM 文件包含文件头部和同文件名的*.dcm 图像数据。文件头部的大小取决于它所提供的信息的多少。文件头包含以下信息:病人的 ID,病人的姓名,图像的模态以及其他信息。它定义了帧的数量以及图像的精度。这些信息会被图像浏览器在显示图像时用到。对于一个图像采样,会有很多个 DICOM 文件。

NIFTI

Nifti 格式最初是为神经影像学发明的。神经影像信息学技术计划(NIFTI)将 NIfTI 格式预设为 ANALYZE7.5 格式的替代品。它最初的应用领域是神经影像,但是也被用在其他领域。这种格式的主要特点就是它包含两个能够将每个体素的索引(i,j,k)和它的空间位置(x,y,z)关联起来的仿射坐标。

python代码

import numpy as npimport shutilimport osimport SimpleITK as sitkdef dcm2nii_sitk(path_read, path_save):reader = sitk.ImageSeriesReader()seriesIDs = reader.GetGDCMSeriesIDs(path_read)N = len(seriesIDs)lens = np.zeros([N])for i in range(N):dicom_names = reader.GetGDCMSeriesFileNames(path_read, seriesIDs[i])lens[i] = len(dicom_names)N_MAX = np.argmax(lens)dicom_names = reader.GetGDCMSeriesFileNames(path_read, seriesIDs[N_MAX])reader.SetFileNames(dicom_names)image = reader.Execute()if not os.path.exists(path_save):os.mkdir(path_save)sitk.WriteImage(image, path_save+'/data.nii.gz')DICOMpath = r"F:\Dicomdataset" #dicom文件夹路径Midpath = r"F:\middataset" #处理中间数据路径Resultpath = r"F:\result" #保存路径cases = os.listdir(DICOMpath) #获取dicom文件夹路径子文件夹名for c in cases: #遍历dicom文件夹路径子文件path_mid = os.path.join(DICOMpath , c) #获取dicom文件夹下每一套数据的路径dcm2nii_sitk(path_mid , Midpath ) #将dicom转换为nii,并保存在Midpath中shutil.copy(os.path.join(Midpath , "data.nii.gz"), os.path.join(Resultpath , c + ".nii.gz"))#重新对保存后的nii文件名进行命名,并复制到Resultpath下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。