医学图像DCM格式文件处理

本文介绍如何将医学影像DCM格式的多个二维切片数据重构为三维图像,并提供了具体的实现流程及Matlab和Python代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

图1

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

图2

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

图3流程图

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值