3DSlicerによるDIR: Plastimatch

OS: Ubuntu 20.04

3DSlicer Version: 4.11.20210226

SlicerRT(Plastimatch含む) version: 1.0.0

PlastimatchのDIRのパラメータの説明はすでにコマンドライン版として過去に書いていたのでそちらも参考にしてもらえればと思います. 3DSlicerでできるDIRはPlastimachで設定できる項目の一部のようです. 3DSlicerでのPlastimatchの結果に満足行かない場合は, コマンドラインのPlastimatchを使用するか, 他のDIRソフトを使用する必要があると思います.

今回は主にインターフェイスの説明になります.

まずはDIRをしたい2つの画像が開かれている状態を前提とします.

その後 モジュールをPlastimatchのB-Spline deformable registrationに変更します. 下の画面ではすでに選択されていますが, Module右のプルダウンで, 「Plastimatch」 ->「Registration」->「B-Spline deformable registration」を選択してください. そうすると, 下のような設定項目のインターフェイスになります.

Plastimatch Moduleのインターフェイス

見出し頭の ▶ をクリックすることで内容が表示されます.

DIR関係で一番上となる「Parameter set」は「B-Spline deformable registration」が入っていると思いますが, この選択はこれ以降の設定をひとまとめとして保存しておく機能のようです.

Parameter setをプルダウンで開くと「Create a new parameter set」とparameter setを作成できるので良い設定ができれば保存しておけばいいと思います.

左図は少し入力していますが, はじめは何も入力されていない状態だと思います.

各パラメータの説明 (最低限必要な設定は赤字)

  • Fixed volume, Moving volume

Fixed volume, Moving volumeは説明不要かと思います. それぞれ, 3DSlicerで開いている画像をプルダウンで指定できます.

  • Input B-spline transform(MRML)

B-spline で得られた変形を記録したMRMLを指定. 一度行ったDIRから再度DIRしたいときに使う(かな?). MRMLは3DSlicerのデータ保持の内部形式なので, 後にあるOutput B-spline transform (MRML)で出力を指定した場合(それを保存していた場合)に指定可能になると思います.

MRMLは3DSlicerのDataモジュールで左図のインターフェイスの代わりに表示される開いているデータ一覧で確認できます.

  • Input vector field (MRML)

上の B-spline transformと同様 ここでは3DSlicerに保存されてたDeformation vector fieldを指定. B-spline transformと両方指定する必要があるのかは未確認

  • Input transform (file)

上記MRMLで3DSlicerに記録されているもの以外で, transformを保存したファイルを指定. 3DSlicerのTransformモジュールでrigit registrationは手入力で可能なので, そこで保存したファイルも指定できると思われます.

  • Fixed fiducials

FiducialマーカーとなるPoint of Interestを指定. DICOM-RTファイルを読み込んだ際はアイソセンターや線量評価点として指定したものがリストにあげられるので, プルダウンで指定します. プルダウン最後に「Create new MarkupsFiducial」があるので新たに作ることも可能

  • Moving fiducials

Fixed Fiducialsで指定した点と対応する点を指定.

  • Fixed fiducials (Old), Moving fiducials (Old)

上記と基本的には同じと思われるが, 何が違うか不明です. おそらく互換性のため古いバージョンの際の処理を残している?

  • Output volume

変形後の画像を出力名を指定します. ファイルではなく3DSlicer内部に保管する形ですのでもとのCT画像などと同じ扱いで扱えるようになります. もちろん後で3DSlicerで保存すればファイルに保存できます.

  • Output B-spline transform (MRML)

これも計算されたB-Splineの変形パラメーターと言ったほうがいいのかもしれませんが, 3DSlicerの内部に保管されます(MRML形式) . 後でファイルに書き出すことも可能です.

  • Output vector field (MRML)

こちらはDVF版. これも3DSlicerの内部に保管されます.

  • warped fiducials (MRML)

これも変形後のfiducialマーカー(POI) . プルダウンメニューの最後にあるCreate new MakeupsFiducial で新たな名前をつけて保存したほうがいいと思います.

  • Output B-spline transform (file), Output vector field (file), warped fiducials (file)

これら3つは上記の内容をファイルに保存する指定です. ファイル名を指定します.

  • Cost function

選択しとしてMSE (Mean squared error)かMI(Mutual information)のどちらかの選択となっています. 基本的に同じモダリティ-の画像をDIRしたいのであればMSE, 異なるモダリティであればMIが適切かと思います.

  • Hardware

GPUを使うか, CPUのみの処理を指定します. GPUが使えるならそのほうが早いです. ただし, CUDAが使えるビデオカードを搭載していることや, ライブラリを入れておくなど自身で設定する場合は少しハードルが高いかと思います(Linuxの場合. Windowsはライブラリなどは少し楽かも, 未確認ですが).

よく分からなければCPUを選択.

  • Output type

出力されるデータの数値の精度を選択できます. が, 基本Autoでいいのではと思います.

プログラミング経験がある人には馴染みの変数の型ですが, やらない人には馴染みのない名前ですので. ちなみにDoubleが一番精度がいい小数点数を保存できます. 少数はあとFloatのみ. ほかは整数になるので, 選択すると少数が出た場合切り捨てられます. この設定がどこまで(どの出力にたいして)有効なのかは未確認です. 浮動小数点数があるので, DVFなどもここの指定で制御されるのかと思っています.

Stageの設定

設定項目はまだスクロールすると続きがあります. ここから, レジストレーションの設定になります. スクロールしたパラメータの設定を下の図にします.

設定項目はすべて, パラメータを指定するか選択する(しない)かしなければなりません. デフォルトで設定値などが入力されているのでそれを基準に調整してはと思います.

Plastimatchのインターフェース(続き)

Stage 0 Options

  • Enable Stage 0?

このStage 0を実施するかどうかを指定. チェックボックスにチェックを入れると実施されます.

Stage 0はいわゆるrigit registrationになります.

画像全体的な位置のズレがある場合に実施したほうがいい設定. 位置ずれがなくても臨床データの場合, 回転などや体の歪みなどもあるので, チェック入れておいて損はないと思われます.

  • Image subsampling rate (vox)

対象の画像の解像度を粗くする設定. 右図のように5,5,3と指定するとX,Y軸は5voxelごとにサンプリングして解像度を1/5にします. Z軸は3なので3スライスごと.つまり100,100,60のボリュームデータがあれば, この設定だと20,20,20になります.

このサブサンプルの設定があることで, 以降のDIRのStageが複数設定できる意味がうまれます.

はじめは粗い解像度でregistrationすることで画像ノイズに強くなり, Stageを繰り返す中で解像度を上げることで, より精密に合わせていく処理になります.

  • Max iterations

最適化の最大繰り返し回数を指定します. 画像の移動等と画像の違いの計算(類似度)を繰り返し徐々に最適な位置を計算する際の, 最大繰り返し回数. 適当な数値はデータによるので試すしかないですが, このExtensionのDocumentには200以上はあまり意味がないと記載されています. まずはデフォルトで実施して満足行かなければ変更するような感じになるかと思います.

  • Transformation

Stage 0の特有の設定. Rigitの自由度を設定します. TはTranslation, RはRigit, AはAffineの意味.

Tは平行移動のみの3DOF, Rは平行移動と回転を加えた6DOF, Aは更に拡大縮小などの線形な変形を加えた12DOFとなります. 臨床データで1軸だけ拡大や縮小するようなケースはないと思うので, TかRがデフォルト選択になると思われます.

Stage N Options (N=1,2,3)

ここ以降のStageがDIRの設定となります.

  • Enable Stage N?

Stage 1の場合にはない設定項目. このStage (2か3)を実施するかの設定. Image subsampling rateのところで書いたように, subsampling rateなどを変更しつつDIRしていく場合に, (3DSlicerでは最大3段階まで)複数Stageを使って実施します.

Stage 1は必須処理となるので, この設定項目はありません.

Image subsampling rate(vox)

Stage 0と同様, 対象の画像をsubsamplingするための間隔です.

  • Grid size(mm)

B-splineでDIRする場合, コントロールポイントが等間隔に置かれ, その位置を調整することで変形します. そのコントロールポイントの間隔. mm単位での指定. subsamplingの粗さを考慮して設定が必要. subsamplingで下げた解像度よりも細かいGrid sizeを指定してもあまり意味がないことになります.

  • Regularization

DIRでCost functionで指定した類似度を計算する際, ねじれなどが起こらないように類似度を悪くする計算項を入れる(Regularization/正規化と言われる)が, その項の重み付けの値になります. 大きくすれば変な変形が起こりにくいが最終的な結果が出るまで時間がかかる(繰り返し回数がより多く必要になる)ことになります.

  • Landmark Penalty

おそらくfiducialを指定したときにそれらの位置ずれによって類似度を悪くする項があり, その項の重み付けと思われます. PlastimatchのDocumentにも同じ名前の設定がなく, おそらくlandmark_stiffnessにあたると判断(未確認)

  • Max iterations

Stage0に同じ

  • Output volume_1

Stageごとに結果画像を出力できる設定になります. 結果の名前を指定する. 3DSlicer上に保管されるのでファイルが出力されるわけではありません. 後でファイルに保存することは可能. Noneだと出力しない設定になります.

Options

Stage 3の後にある設定.

  • Interactive registration

PopupでマニュアルでDIRをコントロールしたい際にチェックを入れると出るが, チェックを入れて実行しても実行が途中で止まって入力を待つような感じがなくそのまま終了してしまいました. そのため, このOptionsの設定項目がどう反映されるかは不明です.

Apply

設定項目の一番下部右側に「Apply」ボタンがあるので, 上記設定後ボタンを押せばDIRが実施されます.

デフォルト設定(Stage1のみ)で, 160枚程度のCT画像をDIRするのにGPUを使う設定で数分かからないくらいです.

ちなみにPCのスペックは Ryzen 7-3700, メモリ32GB, GeforceRTX-3080といったところです.