pydicom 2.2 : README (概要) (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 09/18/2021 (v2.2.1)
* 本ページは、pydicom の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
pydicom 2.2 : 概要 (README)
pydicom は DICOM ファイルで作業するための純粋な Python パッケージです。それは簡単な “pythonic” 流儀で貴方が DICOM データを読み、変更して書くことを可能にします。
純粋な Python パッケージですから、pydicom は他の要件なしに Python が実行できる場所であればどこでも実行できますが、Pixel データで作業している場合には NumPy もインストールすることを勧めます。
DICOM networking のための Python ライブラリを探している場合には私達の別のプロジェクトに関心があるかもしません : pynetdicom。
インストール
pip の使用 :
pip install pydicom
conda の使用 :
conda install -c conda-forge pydicom
開発版のためのインストール手順を含む詳細は、インストールガイド を見てください。
ドキュメント
pydicom ユーザガイド、チュートリアル、サンプル と API リファレンス ドキュメントは GitHub ページ上の 現在のリリース と 開発版 の両方に対して利用可能です。
Pixel データ
圧縮されたそして非圧縮の Pixel データは常に バイト として読まれ、変更されて書かれることが可能です :
>>> from pydicom import dcmread
>>> from pydicom.data import get_testdata_file
>>> path = get_testdata_file("CT_small.dcm")
>>> ds = dcmread(path)
>>> type(ds.PixelData)
>>> len(ds.PixelData)
32768
>>> ds.PixelData[:2]
b'\xaf\x00'
NumPy がインストールされていれば、Pixel データは Dataset.pixel_array プロパティを使用して ndarray に変換できます :
>>> arr = ds.pixel_array
>>> arr.shape
(128, 128)
>>> arr
array([[175, 180, 166, ..., 203, 207, 216],
[186, 183, 157, ..., 181, 190, 239],
[184, 180, 171, ..., 152, 164, 235],
...,
[906, 910, 923, ..., 922, 929, 927],
[914, 954, 938, ..., 942, 925, 905],
[959, 955, 916, ..., 911, 904, 909]], dtype=int16)
圧縮された Pixel データ
JPEG, JPEG-LS と JPEG 2000
JPEG 圧縮 Pixel データを ndarray に変換することは一つまたはそれ以上の追加の Python ライブラリのインストールを必要とします。どのライブラリが必要かの情報については、pixel データハンドラ・ドキュメント を参照してください。
RLE
RLE Pixel データをエンコードしてデコードするには NumPy を必要とするだけですが、それは非常に遅い可能性があります。プロセスを高速化するために 一つ以上の追加の Python ライブラリをインストールする ことを考えることを望むかもしれません。
サンプル
より多くの サンプル はドキュメントで利用可能です。
患者の ID を変更する
from pydicom import dcmread
ds = dcmread("/path/to/file.dcm")
# Edit the (0010,0020) 'Patient ID' element
ds.PatientID = "12345678"
ds.save_as("/path/to/file_updated.dcm")
Pixel データを表示する
NumPy と matplotlib を使用して :
import matplotlib.pyplot as plt
from pydicom import dcmread
from pydicom.data import get_testdata_file
# The path to a pydicom test dataset
path = get_testdata_file("CT_small.dcm")
ds = dcmread(path)
# `arr` is a numpy.ndarray
arr = ds.pixel_array
plt.imshow(arr, cmap="gray")
plt.show()
以上