Dataset クラス

Dataset クラス (pydicom.dataset モジュール)

[APIドキュメント]

class Dataset(dict)

DatasetクラスではDICOMのtag (例:(0008,0060)など) をkeyとして、そのtagの表すDataElementがvalueとなる辞書形式でデータを保持しています。さらに、DataElementのkeywordをDatasetクラスの属性として扱い、その値を取得することも可能です。
なお、DatasetクラスはPythonの辞書型を継承していますが、そのメソッドはすべてオーバーライドされています。

Datasetの要素の値を取得する方法

取得する要素のtagを辞書のkeyとして取得するか、その要素のkeywordを属性として指定することで値を取得できます。なお、DICOMのtagは16進数で表されているので、例えば(7FE0, 0010)で表されるtagは、(0x7FE0, 0x0010)として、16進数であることを表す’0x’を追加する必要があります。

# Datasetクラスのインスタンス(ds)のタグ値を取得します
# tagで指定する方法
ds[(0x7FE0, 0x0010)].value
# DataElementのkeywordで指定する方法
ds.PixelData

プロパティ

pixel_array

@ [APIドキュメント]

  • Datasetのピクセルデータをnumpy.ndarrayとして取得します <numpy.ndarray>

ピクセルデータの本体は次のDataElementに格納されています。

  • tag : (7FE0,0010)
  • keyword : Pixel​Data
  • name : Pixel​ Data
  • value : ピクセルデータ本体(bytes型)

pixel_arrayプロパティはgetterのみ定義されていて、setterは定義されていないので、pixel_arrayプロパティからピクセルデータの値を変更することはできません。ピクセルデータの値を変更する場合は、上記のピクセルデータ本体を表すDataElementのvalueを直接変更する必要があります。

サンプルコード・解説記事

import pydicom
path = pydicom.data.get_testdata_file('CT_small.dcm')
dataset = pydicom.filereader.dcmread(path)
img = dataset.pixel_array
 
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.imshow(img, cmap='gray')
ax.set_axis_off()
plt.show()

インスタンスメソッド

dir(*filters)

@ [APIドキュメント]

  • 引数
    • *filters : ここで指定した文字列を含むkeywordを取得します(取得するkeywordの絞り込み条件) <str>
      • 省略可能。省略した場合はすべてのkeywordを取得します
  • 戻り値
    • return : 取得したKeywordのリスト <list(str)>

Datasetが保持するDataElementのkeywordのリストを取得します。

コード例

import pydicom
path = pydicom.data.get_testdata_file('CT_small.dcm')
dataset = pydicom.filereader.dcmread(path)
print(dataset.dir())

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です