技能pydicom
P

pydicom

用于处理 DICOM(医学数字成像和通信)文件的 Python 库。在读取、编写或修改 DICOM 格式的医疗影像数据时使用该技能;从医学影像中提取像素数据(CT、MRI、X 光、超声);对 DICOM 文件进行匿名化;处理 DICOM 元数据和标签;将 DICOM 影像转换为其他格式;处理压缩的 DICOM 数据;或处理医学影像数据集。适用于涉及医学影像分析、PACS 系统、放射科工作流程以及医疗影像应用的任务。

pydicom - Python DICOM 医学影像处理技能

技能概述

pydicom 技能提供完整的 DICOM 医学影像文件处理指导,涵盖从基础的 DICOM 文件读写、像素数据提取,到医疗图像匿名化、格式转换和压缩数据处理的全流程操作指南。

适用场景

1. 医学影像数据研究与分析

适用于研究人员和数据科学家处理 CT、MRI、X-ray、超声、PET 等各种医学影像数据。支持批量读取 DICOM 文件序列,构建三维体数据,提取关键影像特征和元数据,为医学 AI 模型训练提供数据预处理支持。

2. 医疗信息系统集成与开发

面向医疗软件开发者和 PACS(影像归档和通信系统)集成工程师,提供 DICOM 文件格式标准化处理方案。包括影像数据的导入导出、元数据修改、压缩格式转换等操作,支持放射科工作流程自动化和医院影像系统开发。

3. 医疗数据合规与共享处理

针对需要共享医学影像数据的研究场景,提供 DICOM 文件匿名化处理能力。自动移除或替换患者敏感信息(PHI),包括姓名、ID、出生日期、医生信息等,确保符合医疗数据隐私保护要求。

核心功能

1. DICOM 文件读写与元数据操作

提供完整的 DICOM 文件解析和处理能力,支持:

  • 使用 pydicom.dcmread() 读取 DICOM 文件并访问数据集
  • 通过属性符号或标签符号访问任意 DICOM 标签
  • 修改患者信息、研究日期、序列描述等元数据
  • 处理 DICOM 序列和嵌套数据结构
  • 创建全新的 DICOM 文件并生成标准 UID

2. 医学影像像素数据处理

支持提取和处理各种格式的医学影像像素数据:

  • 将 DICOM 像素数据转换为 NumPy 数组进行分析
  • 处理单色、RGB、YBR 等不同色彩空间图像
  • 应用 VOI LUT 窗口技术优化 CT/MRI 图像显示
  • 处理多帧 DICOM 文件(动态影像、视频序列)
  • 维护像素间距、层厚等空间信息用于三维重建

3. 医疗图像格式转换与压缩处理

提供灵活的 DICOM 图像转换和压缩处理方案:

  • 将 DICOM 图像转换为 PNG、JPEG、TIFF 等通用格式
  • 处理 JPEG、JPEG 2000、RLE 等压缩 DICOM 文件
  • 支持有损和无损压缩格式之间的转换
  • 批量处理大型医学影像数据集
  • 处理内存密集型多序列影像数据

常见问题

pydicom 是什么?主要用于什么场景?

pydicom 是一个纯 Python 编写的 DICOM 医学影像文件处理库。DICOM(医学数字成像与通信)是医疗影像行业的标准格式。pydicom 主要用于医学影像数据分析、医疗信息系统开发、PACS 集成、放射科工作流程自动化等场景,支持 CT、MRI、X-ray、超声等各种医学影像格式的读取、处理和转换。

如何在 Python 中读取和处理 DICOM 文件?

使用 pydicom.dcmread('文件路径') 读取 DICOM 文件,返回的 Dataset 对象包含所有元数据。通过属性符号(如 ds.PatientName)访问标签,使用 ds.pixel_array 获取图像数据。对于压缩文件需要安装额外的处理库。处理完成后可用 ds.save_as() 保存修改后的文件。

怎样安全地匿名化 DICOM 文件中的患者信息?

pydicom 技能提供完整的 DICOM 匿名化方案。通过识别并处理包含患者敏感信息的标签(如 PatientName、PatientID、PatientBirthDate、ReferringPhysicianName 等),可以删除或替换这些字段。技能包含现成的匿名化脚本 anonymize_dicom.py,也可自定义匿名化规则。注意在共享数据前务必验证匿名化效果。

pydicom 支持哪些医学影像模态和压缩格式?

pydicom 支持所有 DICOM 标准定义的医学影像模态,包括 CT、MRI、X-ray(摄影/造影/透视)、超声、PET、核医学等。压缩格式支持 Explicit VR Little Endian(未压缩)、JPEG Baseline、JPEG Lossless、JPEG 2000、RLE 等多种传输语法。处理压缩文件可能需要安装 pylibjpeg 或 python-gdcm 等额外库。

如何将 DICOM 图像转换为普通图片格式?

使用 pydicom 读取 DICOM 文件后,通过 pixel_array 获取图像数据,归一化到 0-255 范围,然后用 PIL/Pillow 库保存为 PNG、JPEG 等格式。技能提供了 dicom_to_image.py 脚本可直接使用。对于 CT/MRI 图像,建议先应用 VOI LUT 窗口处理以获得更好的视觉效果。

处理大型 DICOM 序列时遇到内存问题怎么办?

处理大型医学影像序列时,可采用分批迭代处理、内存映射数组或图像下采样等策略。pydicom 技能建议使用 pathlib 遍历目录中的 DICOM 文件,按切片位置或实例号排序后逐个处理,避免一次性加载所有图像数据到内存。对于三维重建,可使用 NumPy 的内存映射功能。