SimpleDcmViewerでの操作

SimpleDcmViewerは、
・DCMスライス画像を読み込み
・xyz方向でのデータのトリミング
・データサイズの変更
・データ形式を変換して保存(出力はtraw_ssに対応)
を主に行うソフトです。

※ traw3D_ssは次のSimple Volume Rendererで用いる形式
※ githubリポジトリ : https://github.com/TakashiIjiri/SimpleDcmViewer

DCMデータの取り込み

DCMデータとは、X線CTやMRIによって撮影された多数の「断面画像」のこと。

画像を読み込むにはDCMデータが入ったフォルダを、画面中央のスペースにドラッグ&ドロップします。

※データ量にもよりますが、読み込みには時間がかかります。

ウインドウレベル値 [Win. Lv.] の変更

CTデータが読み込まれると中央に表示されます。

データが見えにくい場合は、画面上部のウインドウレベル [Win. Lv.] の最大・最小の値を適当に変えると、白黒がはっきりして見やすくなります。
特に見えにくいわけでなければ、変更する必要はありません。

※通常CT画像は、一つの画素が12bitや16bitの色深度をもち、これを表示するため8bit(0~255)にマッピングする必要があります。[Win. Lv.] はこのマッピングに必要な最大・最小値を与えています。

データのトリミング

次に、対象物以外の余白をトリミングしデータ量を軽くします。

中央左のバーを動かすことで、異なるz軸位置の画像を表示できます。

バーを動かしてデータの全体像を把握しながら、画面上部の[clipping]のxyzそれぞれの値を変更し、データをトリミングします。トリミングされた部分は青く表示されます。

※参考に右の画像では、y軸の値を減少させて、対象物である昆虫の胴体ぎりぎりまでデータをトリミングしています。



データのトリミング(z軸)

z軸方向のトリミングは、少し分かりにくいです。

例えば、0~100の値までz軸をトリミングすると、
左のバーで0~100を移動している間は全体が青く表示されます。
左のバーをうまく使い確認しながら、トリミングを行います。

保存・データサイズの変更

右上部の[Export traw3d signed short]をクリックし、
traw3d_ssで保存します。

[Export Data Size]というウィンドウは表示されるので、
バーをスライドさせてデータサイズを300Mbyte程度まで落とします。

[OK]を押して保存完了です。



RoiPaintの操作 - 可視化

RoiPaintは、
・ 3次元画像の可視化
・ 3次元画像の領域分割
・ 抽出した領域のメッシュデータ(OBJ, STL)への変換
を主に行うソフトです。

※ ソフトウエアのgithubリポジトリは現在公開準備中です.

traw3D_ssを開く

RoiPaintを起動したら、
メニューバーから[File >Open Traw3d_ss]を選択し、先程保存したtraw3d_ssのデータを開きます。



伝達関数による透明度変更

画像読み込み直後、対象物(昆虫)の周りにある空間も不透明で表示されています。

対象物を可視化するためには、対象物のみを不透明にする必要があります。
このため、[Volume Information]というダイアログにある[transFunc1, transFunc2]のグラフを変更します。

※ダイアログ上部のチェックボックスから背景色やxyz平面の表示非表示などの変更ができます。
※伝達関数(transfer function)とは、画素値から透明度や画素値から擬似色へ変換する関数の総称です。

伝達関数による透明度変更(続)

transfunc1は、横軸が輝度値、縦軸が不透明度を表します。
transfunc2は、横軸が画像勾配、縦軸が不透明度を表します。

グラフをマウスでなぞるようにすると、グラフの形を変更できます。

対象物の周りの空間は輝度値が低く、対象物自体は輝度値が高いため、参考画像のグラフのように輝度値が低い部分の不透明度を0にすることで、周りの空間が表示されなくなり対象物が浮かび上がります。

ただし、右図の場合、対象物の乗っている地面も輝度値が高く、厳密には対象物「だけ」を浮かび上がらせることはできません。

RoiPaintの操作 - Region Growing

ここでは、Region Growing法を用いて連続する領域を抽出する作業を行います。

メニューバーから、
[ Mode >Segmentation Region Growing ]
を選択します

Region Growing


[Volume Information]ウィンドウ上部の、[XY][YZ][ZX]のチェックマークを入れると、それぞれの平面が表示され、断面図を見ることができます。

断面図上のなるべく明るいところを、ダブルクリックし赤い点を付けます。



Region Growing(続)

[Dialog]ウィンドウの[Thresholding]の最小値・最大値を変更します。
この値に関しては、様々な値を試して見る他ありません。

※目安(撮影するCT装置にも依存)
昆虫 : 最小値3000~9000、最大値そのまま
貝/種子: 最小値15000~20000、最大値そのまま

値を指定し[Region Growing 6]ボタンを押しすと対象物が選択されます。
最後に[Endo & Store Region]を押します。

※Region growing法は、シード(赤点)から始め、閾値を満足する画素を追加する要用で領域を拡張していく手法です。

Region Growing(続)

[Endo & Store Region] を押すと、右図の通り、[1:region]として先ほど分割した領域が表示されます。

RoiPaintの操作 - ストロークトリミング

メニューバーから、
[Mode  > Modification Stroke Trimming]
 に移動します。

ここでは、既に抽出した領域から不必要な部分を取り除く作業を行います。

今回は先に抽出した領域から地面の領域を取り除きます。
この作業は全行程の中で最も時間のかかる作業です。
予め輝度値の低い素材(「激落ちくん」など)を地面として用いると良いでしょう。

ストロークトリミング

[Mode  > Modification Stroke Trimming]を選択後、編集したい領域を選択します。
先ほど分割したregionが選択されていることを確認して、[OK]を押します。

※backGrndは選択できません。

ストロークトリミング(続)

トリミングを行っていきます。

Shitボタンを押しながら、
トリミングを行いたい部分を左クリックでドラッグして選択します。



トリミング(続)

このように選択した部分だけトリミングされます。

※ドラッグで選択している部分をキャンセルしたい場合は、右クリック。
※Zキーを押すとやり直すことができますが、一回しか戻ることができません。



トリミング(続)

このように地面を完全に除去することができたら、
[Finish Editing]を押して、トリミングの完了です。

RoiPaintの操作 - 穴埋め(試行中)

メニューバーから、
[Mode > Visualization Mask]
を選択します。

右側の[Mask IDs]ダイアログ の [Morpho operation]で、
選択した領域の穴埋め作業を行います。

穴埋め

XY, YZ, ZX平面を表示させて、断面図を確認しながら作業を行っていきます。

先ほど領域分割をしてトリミングを行ったregionを選択してから行いましょう。




穴埋め(続)

[Morpho operation]の
1. [dilate]ボタンを押して領域を1画素分を太らせる
2. [fill hole]ボタンを押して外とつながっていない中空領域を埋める
3. [erode]ボタンを押して全体を痩せさせる(厚みを元に戻す)

この手順を踏み、小さな穴を埋めていきます。
場合に応じて、[dilate][erode]ボタンを複数回押しましょう。
※dilate -> erodeの処理は、closingと呼ばれ、小さな中空領域が自動的に埋まる効果があります。


OBJに変換

[Mask IDs]ダイアログ上でメッシュとして書き出したい領域を選択し、
[export obj]ボタンを押し、名前をつけてobjで保存して完成です。

※[Mask IDs]ダイアログ上で、複数のregionが存在する場合、[Marge To]ボタンを押して、一つのregionにまとめます。

※bckGrndには[Marge To]しないこと