DICOM画像のピクセル値を見てみる

pydicom

今回はPydicomを使ってDICOM画像のピクセルデータを見てみたいと思います。

ピクセルデータを表示してみる


ピクセルデータの表示からです。

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()

いかがでしょうか?

[[-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を使って同じ領域のピクセルデータを見てみたいと思います。

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の設定をやってみたいと思います。


タイトルとURLをコピーしました