Dataset クラス (pydicom.dataset モジュール)
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
- Datasetのピクセルデータをnumpy.ndarrayとして取得します <numpy.ndarray>
ピクセルデータの本体は次のDataElementに格納されています。
- tag : (7FE0,0010)
- keyword : PixelData
- 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)
- 引数
- *filters : ここで指定した文字列を含むkeywordを取得します(取得するkeywordの絞り込み条件) <str>
- 省略可能。省略した場合はすべてのkeywordを取得します
- *filters : ここで指定した文字列を含むkeywordを取得します(取得するkeywordの絞り込み条件) <str>
- 戻り値
- 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())
コメント