pydicom

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Pydicom - 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.,
ds.PatientName
) or ID (
ds[0x0010, 0x0010]
).
通过名称(例如
ds.PatientName
)或ID(
ds[0x0010, 0x0010]
)访问标签。

Pixel Data

像素数据

Raw pixel data is stored in
PixelData
, but should be accessed via
pixel_array
for NumPy integration.
原始像素数据存储在
PixelData
中,但应通过
pixel_array
访问以实现与NumPy的集成。

VR (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 np
python
import pydicom
from pydicom.data import get_testdata_files
import matplotlib.pyplot as plt
import numpy as np

Basic Patterns

基础用法

python
undefined
python
undefined

1. 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}")
undefined
plt.imshow(ds.pixel_array, cmap="gray") plt.title(f"{ds.Modality} - {ds.PatientName}")
undefined

Critical Rules

重要规则

✅ DO

✅ 建议做法

  • Use pixel_array property - Always access pixel data via
    ds.pixel_array
    rather than
    ds.PixelData
    for proper NumPy integration.
  • Check for missing tags - Use
    hasattr(ds, 'TagName')
    before accessing optional tags.
  • 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
    访问像素数据,而非
    ds.PixelData
    ,以实现与NumPy的正确集成。
  • 检查缺失标签 - 在访问可选标签前使用
    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 Path
python
import pydicom
from pathlib import Path

Load 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])
undefined
slices = [pydicom.dcmread(f) for f in files] volume = np.stack([s.pixel_array for s in slices])
undefined

Anonymization

匿名化

python
undefined
python
undefined

Remove 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格式的丰富数据。