CT画像のWW、WLをスライダーを使って調整

matplotlib


前回は、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()
              #画像を表示


上記のように表示できます。

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