当前位置:   article > 正文

python医学图像处理之读取DICOM文件信息_python读取dicom文件

python读取dicom文件

        相信很多和我一样做医学图像处理的小伙伴都接触过DICOM格式的数据吧。由于不同的DICOM文件在存储和传输时存在差异,所以处理起来总是让我们非常头疼。

        接下来,我就教大家如何读取DICOM文件中的文本信息。

        那么,在DICOM文件中,比较常用的信息究竟都有哪些呢?这里大致给大家列举一下:

  • Patient Name(患者姓名):患者的姓名。

  • Patient ID(患者ID):患者的唯一标识符。

  • Patient Birth Date(患者出生日期):患者的出生日期。

  • Patient Sex(患者性别):患者的性别。

  • Modality(影像模态):表示产生影像的设备类型,如CT、MRI、X-Ray等。

  • Series Description(系列描述):描述系列的信息,例如图像采集的方向或参数设置。

  • Image Orientation (Patient)(图像定位(患者)):表示图像在患者坐标系中的方向。

  • Pixel Spacing(像素间距):表示图像中像素在物理空间中的尺寸。

  • Slice Thickness(切片厚度):表示图像的切片厚度。

  • ......

       接下来,我们就开始读取DICOM文件。这里,我们使用的是pydicom库。这是一个python中常用来处理DICOM文件的库,当然,SimpleITK库和vtk库也可以用来处理这种格式的文件。

  1. path = r"D:\cartilage\1-1_1_1B420709.dcm" # dicom文件路径
  2. dicom = pydicom.dcmread(path, force=True)

        这里呢,要强调一下,"force=True"一定要加上!!!由于存储和传输的不同,导致我们的DICOM文件可能会缺少一些必要的元素,如果不强制读取,就很有可能会报错哦~

        再跟大家分享一个小问题的解决方式吧,不知道是否有小伙伴也遇到过类似的问题。有的文件后缀是大写的"DCM",如果我们将path写为"D:\cartilage\1-1_1_1B420709.DCM",就会报错。这个时候,我们只需要强制将源文件的文件后缀改为小写的"dcm",代码中path也同样使用小写的"dcm"就可以解决了哦~

        然后,我们输出一下我们的dicom文件,看看文件中究竟都包含了哪些信息呢?图1是我的文件输出结果。

print(dicom) 

 图1 文件输出结果

        下面就教大家如何读取文本信息,这里提供两种方式。

        第一种,从图1我们可以看到每一项信息前都有一个编号,我们可以通过输入编号读取信息。输出结果如图2所示。

  1. print(dicom[('0008', '0060')])
  2. print(dicom[('0019', '101e')])

 图2 方法一输出结果

       第二种,也是我个人比较喜欢的一种,直接指定输出哪些信息,同样的代码适用于绝大多数的DICOM文件。输出结果如图3所示。

  1. print(dicom.Modality) #Modality(影像模态)
  2. print(dicom.StudyDate) #拍摄时间
  3. print(dicom.PatientName) #Patient Name(患者姓名)
  4. print(dicom.PatientID) #Patient ID(患者ID)
  5. print(dicom.PatientSex) #Patient Sex(患者性别)
  6. print(dicom.PatientBirthDate) #Patient Birth Date(患者出生日期)
  7. print(dicom.SliceThickness) #Slice Thickness(切片厚度)
  8. print(dicom.Rows) #图像的宽
  9. print(dicom.Columns) #图像的长
  10. print(dicom.PixelSpacing) #Pixel Spacing(像素间距)
  11. print(dicom.ImageOrientationPatient) #Image Orientation (Patient)(图像定位(患者))
  12. print(dicom.SeriesDescription) #Series Description(系列描述)

 图3 方法二输出结果

        DICOM文件中这些信息,对我们开发基于医学影像的软件,或者是整理数据、进行三维重建等都十分有帮助。如果大家对医学图像三维重建感兴趣的话,也可以浏览一下我的另一篇博客:https://blog.csdn.net/Cherry330/article/details/131836418?spm=1001.2014.3001.5502

        最后附上源码,希望对小伙伴们有所帮助哦~

  1. # -*- coding: utf-8 -*-
  2. import pydicom
  3. path = r"D:\cartilage\1-1_1_1B420709.dcm" # dicom文件路径
  4. dicom = pydicom.dcmread(path, force=True)
  5. print(dicom)
  6. print("------------------------------------------------------------------------------------")
  7. print(dicom[('0008', '0060')])
  8. print(dicom[('0019', '101e')])
  9. print("------------------------------------------------------------------------------------")
  10. print(dicom.Modality) #Modality(影像模态)
  11. print(dicom.StudyDate) #拍摄时间
  12. print(dicom.PatientName) #Patient Name(患者姓名)
  13. print(dicom.PatientID) #Patient ID(患者ID)
  14. print(dicom.PatientSex) #Patient Sex(患者性别)
  15. print(dicom.PatientBirthDate) #Patient Birth Date(患者出生日期)
  16. print(dicom.SliceThickness) #Slice Thickness(切片厚度)
  17. print(dicom.Rows) #图像的宽
  18. print(dicom.Columns) #图像的长
  19. print(dicom.PixelSpacing) #Pixel Spacing(像素间距)
  20. print(dicom.ImageOrientationPatient) #Image Orientation (Patient)(图像定位(患者))
  21. print(dicom.SeriesDescription) #Series Description(系列描述)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/165567?site
推荐阅读
相关标签
  

闽ICP备14008679号