mcpField
P
pydicom

pydicom

github.com/tondevrelデータ・データベース2456 回インストール39 週間前に更新
リポジトリ

pydicom について

DICOMファイルを扱うPython開発者や医用画像チーム向けのスキルです。メタデータとピクセルデータの参照、DICOM規則への対応、プライバシーに配慮した処理方法を説明します。

主な機能

  1. 01名前またはIDでタグにアクセス
  2. 02pixel_arrayでピクセルデータを取得
  3. 03型付きDICOM値の処理
  4. 04DICOMシリーズの処理
  5. 05患者識別情報の匿名化

活用シーン

  1. 01患者情報と検査メタデータの抽出
  2. 02CTやMRIの画素データを解析用に準備
  3. 03解析用のDICOMデータ変換
  4. 04医用画像データの品質確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tondevrel/scientific-agent-skills --skill pydicom

インストール後、Claude Code で/pydicomを入力して読み込まれたか確認します。

詳細

Pydicom - 医療画像規格

DICOMは単なる画像ではありません。患者情報、空間的な向き、ピクセルデータを含む豊富なデータ構造です。Pydicomを使うと、これらすべてのタグにアクセスできます。

使用する場面

  • 医療画像データ(CT、MRI、X線、超音波)の処理。
  • DICOMファイルから患者のメタデータや臨床情報を抽出する場合。
  • 画像とメタデータの両方を必要とする放射線医学向けAIモデルの構築。
  • 分析用にDICOMをほかの形式へ変換する場合。
  • 医療画像ワークフローにおける品質保証とコンプライアンスの確認。

基本原則

データセットは辞書形式

タグには名前(例:ds.PatientName)またはID(ds[0x0010, 0x0010])でアクセスします。

ピクセルデータ

生のピクセルデータはPixelDataに格納されていますが、NumPyとの連携にはpixel_arrayを使用してください。

VR(値表現)

日付、年齢、小数値を厳密に型指定することで、データの整合性を確保できます。

クイックリファレンス

標準的なインポート
import pydicom
from pydicom.data import get_testdata_files
import matplotlib.pyplot as plt
import numpy as np
基本パターン
# 1. Read file
ds = pydicom.dcmread("scan.dcm")

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

重要なルール

✅ 推奨事項
  • pixel_arrayプロパティを使用する - NumPyと適切に連携できるよう、ピクセルデータにはds.PixelDataではなく、常にds.pixel_arrayでアクセスしてください。
  • タグの欠落を確認する - 省略可能なタグにアクセスする前に、hasattr(ds, 'TagName')を使用してください。
  • 患者のプライバシーを尊重する - DICOMファイルにはPHI(保護対象医療情報)が含まれています。共有する前に必ず匿名化してください。
  • さまざまな測光解釈に対応する - 画像によっては反転していたり、異なる色空間を使用していたりします。
❌ 禁止事項
  • DICOMファイルを上書き編集しない - 元のデータを保持するため、変更する際は必ずコピーを作成してください。
  • VRの型を無視しない - DICOMではデータ型が厳密に定められています。誤った変換はデータを破損させるおそれがあります。
  • すべてのDICOMファイルに画像が含まれると思い込まない - メタデータのみを含むもの(構造化レポート)もあります。

応用パターン

DICOMシリーズの操作
import pydicom
from pathlib import Path

# Load a series of DICOM files
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])
匿名化
# Remove patient identifiers
ds.PatientName = "ANONYMOUS"
ds.PatientID = "000000"
ds.PatientBirthDate = ""
ds.PatientSex = ""

PydicomはPythonにおける医療画像処理の基盤であり、現代の放射線医学を支える、豊富で標準化されたDICOM形式を研究者や臨床医が扱えるようにします。

コメント