pydicom
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePydicom - Medical Imaging Standards
Pydicom - 医学影像标准
DICOM is more than an image; it's a rich data structure containing patient info, spatial orientation, and pixel data. Pydicom provides access to all these tags.
DICOM不仅仅是一种图像格式,它是一种包含患者信息、空间定位和像素数据的丰富数据结构。Pydicom可让你访问所有这些标签。
When to Use
适用场景
- Processing medical imaging data (CT, MRI, X-ray, ultrasound).
- Extracting patient metadata and clinical information from DICOM files.
- Building AI models for radiology that require both image and metadata.
- Converting DICOM to other formats for analysis.
- Quality assurance and compliance checking in medical imaging workflows.
- 处理医学影像数据(CT、MRI、X光、超声)。
- 从DICOM文件中提取患者元数据和临床信息。
- 构建需要同时使用图像和元数据的放射科AI模型。
- 将DICOM转换为其他格式用于分析。
- 医学影像工作流中的质量保证与合规性检查。
Core Principles
核心原则
Datasets as Dicts
数据集作为字典
Access tags by name (e.g., ) or ID ().
ds.PatientNameds[0x0010, 0x0010]通过名称(例如 )或ID()访问标签。
ds.PatientNameds[0x0010, 0x0010]Pixel Data
像素数据
Raw pixel data is stored in , but should be accessed via for NumPy integration.
PixelDatapixel_array原始像素数据存储在 中,但应通过 访问以实现与NumPy的集成。
PixelDatapixel_arrayVR (Value Representation)
VR(值表示)
Strict typing for dates, ages, and decimals ensures data integrity.
对日期、年龄和小数的严格类型定义确保数据完整性。
Quick Reference
快速参考
Standard Imports
标准导入
python
import pydicom
from pydicom.data import get_testdata_files
import matplotlib.pyplot as plt
import numpy as nppython
import pydicom
from pydicom.data import get_testdata_files
import matplotlib.pyplot as plt
import numpy as npBasic Patterns
基础用法
python
undefinedpython
undefined1. Read file
1. 读取文件
ds = pydicom.dcmread("scan.dcm")
ds = pydicom.dcmread("scan.dcm")
2. Access Metadata
2. 访问元数据
print(f"Patient: {ds.PatientName}, ID: {ds.PatientID}")
print(f"Modality: {ds.Modality}") # CT, MR, DX
print(f"Study Date: {ds.StudyDate}")
print(f"Slice Thickness: {ds.SliceThickness}")
print(f"Patient: {ds.PatientName}, ID: {ds.PatientID}")
print(f"Modality: {ds.Modality}") # CT, MR, DX
print(f"Study Date: {ds.StudyDate}")
print(f"Slice Thickness: {ds.SliceThickness}")
3. Access Image
3. 访问图像
plt.imshow(ds.pixel_array, cmap="gray")
plt.title(f"{ds.Modality} - {ds.PatientName}")
undefinedplt.imshow(ds.pixel_array, cmap="gray")
plt.title(f"{ds.Modality} - {ds.PatientName}")
undefinedCritical Rules
重要规则
✅ DO
✅ 建议做法
- Use pixel_array property - Always access pixel data via rather than
ds.pixel_arrayfor proper NumPy integration.ds.PixelData - Check for missing tags - Use before accessing optional tags.
hasattr(ds, 'TagName') - Respect patient privacy - DICOM files contain PHI (Protected Health Information). Always anonymize before sharing.
- Handle different photometric interpretations - Some images may be inverted or use different color spaces.
- 使用pixel_array属性 - 始终通过 访问像素数据,而非
ds.pixel_array,以实现与NumPy的正确集成。ds.PixelData - 检查缺失标签 - 在访问可选标签前使用 进行检查。
hasattr(ds, 'TagName') - 尊重患者隐私 - DICOM文件包含PHI(受保护健康信息)。分享前务必匿名化。
- 处理不同的光度解释 - 部分图像可能存在反转或使用不同的色彩空间。
❌ DON'T
❌ 禁止做法
- Don't modify DICOM files in place - Always create a copy when modifying to preserve original data.
- Don't ignore VR types - DICOM has strict data types. Converting incorrectly can corrupt data.
- Don't assume all DICOM files have images - Some contain only metadata (structured reports).
- 不要原地修改DICOM文件 - 修改时务必创建副本以保留原始数据。
- 不要忽略VR类型 - DICOM有严格的数据类型。错误转换可能导致数据损坏。
- 不要假设所有DICOM文件都包含图像 - 部分文件仅包含元数据(结构化报告)。
Advanced Patterns
高级用法
Working with DICOM Series
处理DICOM序列
python
import pydicom
from pathlib import Pathpython
import pydicom
from pathlib import PathLoad a series of DICOM files
加载一系列DICOM文件
dicom_dir = Path("dicom_series")
files = sorted(dicom_dir.glob("*.dcm"))
dicom_dir = Path("dicom_series")
files = sorted(dicom_dir.glob("*.dcm"))
Load and stack slices
加载并堆叠切片
slices = [pydicom.dcmread(f) for f in files]
volume = np.stack([s.pixel_array for s in slices])
undefinedslices = [pydicom.dcmread(f) for f in files]
volume = np.stack([s.pixel_array for s in slices])
undefinedAnonymization
匿名化
python
undefinedpython
undefinedRemove patient identifiers
移除患者标识符
ds.PatientName = "ANONYMOUS"
ds.PatientID = "000000"
ds.PatientBirthDate = ""
ds.PatientSex = ""
Pydicom is the foundation of medical imaging in Python, enabling researchers and clinicians to work with the rich, standardized DICOM format that powers modern radiology.ds.PatientName = "ANONYMOUS"
ds.PatientID = "000000"
ds.PatientBirthDate = ""
ds.PatientSex = ""
Pydicom是Python医学影像领域的基础工具,助力研究人员和临床医生处理支撑现代放射学的标准化DICOM格式的丰富数据。