【读取文件】python SimpleITK模块读取*.mhd和*.raw格式dicom文件

        本文主要内容为使用SimpleITK进行*.mhd和*.raw格式dicom文件的读取。

        一个dicom文件一般分为metadata和image两部分,根据patient,study,series和image四层信息进行解析序列中的每一个dicom文件。
        *.mhd(metadata header)和*.raw格式dicom文件是为了读取方便,将一个序列的metadata(一个序列中的每一个dicom文件的metadata基本一致,坐标等信息可以由其中一个推算其它)集中到一个*.mhd文件(提取共同部分,并非每个dicom文件的metadata集中到一起),序列中的每一个dicom文件包含的image信息集中到*.raw文件,因此一个*.raw文件中包含多幅图像。

         *.mhd和 *.raw文件需要同时存在,否则无法完整读取。

以luna16 subset0中如下文件为例:

1.3.6.1.4.1.14519.5.2.1.6279.6001.105756658031515062000744821260.mhd
1.3.6.1.4.1.14519.5.2.1.6279.6001.105756658031515062000744821260.raw

######################### 读取数据 #####################################

In [1]: import SimpleITK as sitk
In [2]: dicom_mhd   = sitk.ReadImage("1.3.6.1.4.1.14519.5.2.1.6279.6001.105756658031515062000744821260.mhd")
In [3]: dicom_array = sitk.GetArrayFromImage(dicom_mhd)

######################### 使用数据 #####################################

# dicom_mhd中可以获取层间距,方向向量等等dicom文件metadata中包含的信息
In [4]: dicom_mhd.GetSpacing()	# x / y / z 方向的间距,毫米(mm)为单位
Out[4]: (0.7617189884185791, 0.7617189884185791, 2.5)
# dicom_array为序列包含的所有Image信息,使用SimpleITK读取时,传入参数dicom_mhd,会自动
# 读取 *.raw文件
In [5]: type(dicom_array)
Out[5]: numpy.ndarray
In [6]: dicom_array.shape
Out[6]: (121, 512, 512) # 第一维度为序列图像数量,后两维度为高度和宽度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值