OS: Ubuntu 20.04, 3DSlicer Version: 4.11.20210226
3D Slicerを用いた輪郭のpropagationのやり方です.
すでにDIRがなされている状態を想定しています. 説明の画像ではPlastimatch によるB-SplineによるDIRを実施し, その結果をB-SplineパラメータとDVFををMRMLで保存した状態からスタートしています. それぞれvtkMRMLBSplineTransformNodeとvtkMRMLGridTransformNodeです. 2つともある必要はなく, どちらかあればpropagationは可能です.
下準備: 変形したい輪郭のコピーを作成
Propagationする際, Transformsモジュールを使用します. そこで輪郭を変形すると上書きになるので予めもとの輪郭をコピーして変形用の輪郭を作っておきます.
まず, Data モジュール(下図の上の赤丸)に切り替えてコピーしたい輪郭を探します. 下図の画像ではct2roiが変形したい輪郭になります.
変形したい輪郭を選び右クリックするとメニューが出ますので, 「Clone」(下図の下の赤丸)を選択してください. それでコピーが出来ます.
確認すると下図で「ct2roi Copy」(下図赤丸)というvtkMRMLSegmentationNodeが出来ています.
下準備は完了ですが, もし上書きしても構わないというのであれば, この下準備は飛ばしても構いません.
Transformを用いた変形
実際に変形していきます. 輪郭を変形するためにはTransformsモジュールを使用しますのでモジュールをTransformsモジュールに変更してください.
次に, DIRした際に得られたDVFなどを保存したデータ(vtkMRMLTransformNodeの一つ)を「Active Transform」の欄で選択します. DIRした際にMRMLとして変形を保存していればプルダウンメニューに出てくると思います. Affine変換など線形な変換であれば下図の「Edit」のところを展開すれば手入力で作成できます. B-Splineも作れるようですが, ???な感じです.
ここでは, Active TransformにPlastimatchでデフォルトの名前のまま出力したDVF「Output vector field (MRML)」を指定しています.
Informationは変形のサマリー, DisplayはDVFを矢印やグリッドで表示したりできますが, これも関係ないので飛ばします.
輪郭の変形にはTramsformモジュールの「Apply transform」の設定で行います. Transformableのリストは, 現在Sceneにある変形可能なNodeの(データの)一覧です. この中から変形したい輪郭を指定します.
変形対象の指定は「Transformable」のリストで選択し, 右向き矢印で「Transformed」のリストに移します. 今回の場合変形対象がCloneで作成した「ct2roi Copy」ですので, 選択し右のTransformedのリストに移します.
移した時点で輪郭は変形されます. 画像を表示している画面で右矢印と左矢印で対象を行き来せれば変形しているのが解ると思います.
この時点で変形されているのですが, まだ変形後の輪郭は保存されていません. そのおかげで何度もやり直したりできるのですが, 変形後に解析・評価などする場合では見れるだけだと困ります. そこで変形後のデータを保存する方法ですが, 「Harden transform」で変形をFixしてしまいます. つまり, 今変形している輪郭を上書き保存することになります(そのためコピーを作成しました).
Harden transformの方法は, 保存したい対象をTransformedリストでクリックして選択(水色の背景になる)し, TransformableのリストとTransformedの間にある矢印の下, マス目がずれたアイコン(下図 下の赤丸) をクリックするだけです. アイコンをクリックするとTransformedにあるデータを現在の変形された状態に保存します. うまく保存されると選択された変形対象だけがTransformedリストから消え, Transformableのリストに戻ります.
以上が輪郭のpropagationの方法になります. 今回輪郭を対象にしましたが, 変形できるデータであれば(Transformableリストに上がるデータであれば)同様な操作で変形が出来ます.
注意は, hardenしても3DSlicer上で保存されている(データとなっている)だけで, ファイルには保存されていませんので, 途中経過や結果などを保存したい場合は, 3DSlicerでScene全体や変形した輪郭だけでもファイルで保存する必要がありますので忘れずに.
3DSlicerでCTと輪郭の組み合わせは, おそらく他の商用DIRソフトと比べゆるいです. DICOM画像を読み込む際には組み合わせが違うと言われたりする場合もありますが, Sceneに保存されている輪郭はすべてどの画像上にでも表示できます(というか表示されてしまう). それだけCT-輪郭の関係の自由度が高く, やりたいことができる(手間はかかるけど)ことになります.