前回は、CT画像を表示するときにWWの設定をして表示するという事をやりましたが、今回はWW,WLの調整をスライダーを使って調整してみる
をやってみたいと思います。
いままでは、jupyter notebookを使っていろいろとやってきましたが、今回からはエディターを使ってやっていきたいと思います。
エディタは、Pycharm,Atom,Visualstudio等様々な種類がありますが、私自身はPycharmを使用しています。(有償のソフトですが、一部の機能であれば無償です。もちろん私は無償の範囲内で十分なので無償で利用中です。)
それでは、早速コードを表示してみたいと思います。
# -*- coding: utf-8 -*-
import pydicom
from matplotlib import pyplot as plt
from matplotlib.widgets import Slider
#matplotlibのSliderというウイジットを使用します。
ds = pydicom.dcmread('CT000060')
low = -140 #WWを-140~260の範囲で表示したいため
high = 260 #WLは-140~260の中央値である60になります。
fig = plt.figure(figsize=(5, 6)) #画像、スライダを表示する領域の設定
img = plt.imshow(ds.pixel_array, cmap=plt.cm.bone, vmin=low, vmax=high)
#imgという変数に画像表示設定を入れる。
wl_slider_pos = plt.axes([0.1, 0.08, 0.8, 0.03])
ww_slider_pos = plt.axes([0.1, 0.01, 0.8, 0.03])
#ww、wlのスライダを表示する位置の設定
wl_slider = Slider(wl_slider_pos, 'wl', 0, 500, valinit=175)
ww_slider = Slider(ww_slider_pos, 'ww', 0, 2000, valinit=350)
#ww、wlのスライダのインスタンスを作成
def update(slider_val): #スライダを動かしたときの処理
ww = ww_slider.val
wl = wl_slider.val
#ww、wlのスライダの値を取得
low = int(wl - ww/2)
high = int(wl + ww/2)
#wwの上限値と下限値を計算
img.set_clim([low, high])
#画像表示の設定imgのlow,highの値を更新
fig.canvas.update()
#表示している画像を更新
wl_slider.on_changed(update)
ww_slider.on_changed(update)
#スライダーを動かしたときの処理を指定(25行目に)
plt.show()
#画像を表示
上記のように表示できます。