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 的内存映射功能。