[ PROMPT_NODE_27086 ]
pydicom
[ SKILL_DOCUMENTATION ]
# Pydicom
## 概述
Pydicom 是一个纯 Python 包,用于处理 DICOM 文件(医学影像数据的标准格式)。本技能提供有关读取、写入和操作 DICOM 文件的指导,包括处理像素数据、元数据和各种压缩格式。
## 何时使用此技能
在处理以下内容时使用此技能:
- 医学影像文件(CT、MRI、X 光、超声、PET 等)
- 需要提取或修改元数据的 DICOM 数据集
- 从医学扫描中提取像素数据并进行图像处理
- 用于研究或数据共享的 DICOM 匿名化
- 将 DICOM 文件转换为标准图像格式
- 需要解压的压缩 DICOM 数据
- DICOM 序列和结构化报告
- 多层切片体积重建
- PACS(图像归档和通信系统)集成
## 安装
安装 pydicom 及常用依赖:
bash
uv pip install pydicom
uv pip install pillow # 用于图像格式转换
uv pip install numpy # 用于像素数组操作
uv pip install matplotlib # 用于可视化
对于处理压缩 DICOM 文件,可能需要额外的包:
bash
uv pip install pylibjpeg pylibjpeg-libjpeg pylibjpeg-openjpeg # JPEG 压缩
uv pip install python-gdcm # 替代压缩处理程序
## 核心工作流
### 读取 DICOM 文件
使用 `pydicom.dcmread()` 读取 DICOM 文件:
python
import pydicom
# 读取 DICOM 文件
ds = pydicom.dcmread('path/to/file.dcm')
# 访问元数据
print(f"患者姓名: {ds.PatientName}")
print(f"检查日期: {ds.StudyDate}")
print(f"模态: {ds.Modality}")
# 显示所有元素
print(ds)
**关键点:**
- `dcmread()` 返回一个 `Dataset` 对象
- 使用属性符号(例如 `ds.PatientName`)或标签符号(例如 `ds[0x0010, 0x0010]`)访问数据元素
- 使用 `ds.file_meta` 访问文件元数据,如传输语法 UID
- 使用 `getattr(ds, 'AttributeName', default_value)` 或 `hasattr(ds, 'AttributeName')` 处理缺失属性
### 处理像素数据
从 DICOM 文件中提取并操作图像数据:
python
import pydicom
import numpy as np
import matplotlib.pyplot as plt
# 读取 DICOM 文件
ds = pydicom.dcmread('image.dcm')
# 获取像素数组(需要 numpy)
pixel_array = ds.pixel_array
# 图像信息
print(f"形状: {pixel_array.shape}")
print(f"数据类型: {pixel_array.dtype}")
print(f"行数: {ds.Rows}, 列数: {ds.Columns}")
# 应用窗宽窗位进行显示 (CT/MRI)
if hasattr(ds, "