医学图像DCM格式文件处理

医学图像中主流格式为DCM文件或者称为DICOM(DigitalImaging andCommunications inMedicine),该格式最令人头痛的是切片众多且命名混乱。众所周知,医学图像(以CT图像为例)多为三维图像,分为横断面、矢状面和冠状面。如图(1)所示,三维格式的图像经常会以横断面分割为多个切片数据(Slice),但是由于命名混乱的原因,不容易理解切片位置。本文旨在分享多个切片重构成一个三维数据的过程,若有错误,欢迎指正。

医学图像DCM格式文件处理_第1张图片 图1

首先,需要对DCM文件进行简单介绍,令读者有个直观的认识。科研中常见的情形如图(2)所示,一个患者的所有影像数据(CT,MRI,CBCT等等)都在一个文件夹下,每种数据又有许多切片dcm,造成数据读取困难的问题。需要注意的是,切片的文件名的数字顺序并不代表切片的实际空间顺序!!因此,需要一种将多张二维切片数据重构重构成单张三维数据。

医学图像DCM格式文件处理_第2张图片 图2

 DCM格式的文件会存储其各类重要信息,其详细解释可浏览该博客。其中,本文主要用到(1)Patient ID : 患者ID (一般与患者的文件夹命名一致);(2)Series Number : 属于同一三维数据的该序号应当是一样的,例如都是同一CT图像中的某张切片,那么该值是一样,通过该值判断是不是属于同一个三维数据(可能一个患者拍了多张CT图像);(3)Image Position :该切片左上角像素点的空间位置。简而言之,利用Series Number找出患者文件夹下的所有属于同一三维图像的所有切片,然后利用Image Position对这些切片进行排序并重构成三维数据。流程如图(3)所示。

医学图像DCM格式文件处理_第3张图片 图3流程图

 需要注意的是,不建议重构的三维数据保存为DCM格式,因为这样需要设置许多DCM的头信息,过于麻烦。建议保存为NII格式,或者MAT格式,或者NPZ格式,这些格式对于c++,matlab以及paython都是非常方便读取的格式。

为了方便大家使用,本文提供对应matlab代码和python代码,欢迎下载。

你可能感兴趣的:(其他)