今回はPydicomを使ってDICOM画像のピクセルデータを見てみたいと思います。
ピクセルデータを表示してみる
ピクセルデータの表示からです。
1 2 3 4 5 6 7 8 9 10 11 |
import pydicom from matplotlib import pyplot as plt %matplotlib inline ds = pydicom.dcmread(‘CT000060’) print(ds.pixel_array) plt.imshow(ds.pixel_array,cmap=plt.cm.bone) plt.show() |
いかがでしょうか?
1 2 |
[[–2048 –2048 –2048 ... –2048 –2048 –2048] [–2048 –2048 –2048 ... –2048 –2048 –2048] |
の部分がピクセルデータとなります。しかし’-2048’はFOVの領域外、
画像の左上3ピクセルのデータと右3ピクセルのデータの為
正しいデータかどうかちょっと分かりません。。。。。。
それでは、違う画像で試してみたいと思います。
放射線治療で用いられるチーズファントムの画像があったのでそれで見てみたいと思います。。
まず、image-Jでの計測結果を見てみたいと思います。
まず、image-Jでチーズファントムを開き
メニューバーの「Edit」⇒「Selection」⇒「Specify」を開き
画像座標(260,260)を左上頂点に横20ピクセル、高さ20ピクセルのデータを見てみたいと思います。
その領域の平均値22.067、標準偏差13.1、最小値―17、最大値55の結果が出ました。
それでは、pydicomを使って同じ領域のピクセルデータを見てみたいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import pydicom from matplotlib import pyplot as plt from matplotlib import patches as patches %matplotlib inline ds = pydicom.dcmread(‘cheeze’) fig,ax = plt.subplots(1) rect = patches.Rectangle((260,260),20,20,linewidth=1,edgecolor=‘r’,facecolor=‘none’) ax.add_patch(rect) ax.imshow(ds.pixel_array,cmap=plt.cm.bone) plt.show() print(“mean “ + str(ds.pixel_array[260:280,260:280].mean())) print(“std ” + str(ds.pixel_array[260:280,260:280].std())) print(“max “ + str(ds.pixel_array[260:280,260:280].max())) print(“min “ + str(ds.pixel_array[260:280,260:280].min())) |
結果は平均値22.0675、標準偏差13.083、最小値-17、最大値55の結果ができました。
Image-Jの結果が
平均値22.067、標準偏差13.1、最小値―17、最大値55
同様の結果となりました。
pydicomでもきちんとピクセルデータが見れることが分かりました。
次回は、Pydicomで画像表示した際のWL,WWの設定をやってみたいと思います。