3DSlicerによるDIR: Plastimatch v.s. Elastix

OS: Ubuntu 20.04

3DSlicer Version: 4.11.20210226

Extension SlicerElastix, SlicerRT1.0.0

Plastimatch v.s. Elastixとしましたが, あくまで1例試して比較した際の個人の意見です.

それぞれの処理の最適化もなにもしていません. 基本デフォルトの設定での処理です.

まず, 処理時間

Ubuntu 20.04, CPU Ryzen7-3700, メモリ 16MB, GPU GeforceRTX 3080 での処理です.

対象画像はDIR-DBにある頭頸部の#12の症例. CT1(実施時にRenameしています)が180枚, CT2が176枚のCT画像です.

PlastimatchはRigitを含めStage3まですべてEnableにして実施. 各ステージの設定はデフォルトのまま. Cost functionはMSE, HardwareはGPUを選択したのですが, リソースモニターではCPUしか動いていませんでした. CUDAは入れてありますが, GPU使うための設定はなにもしていないので, なんらか設定が必要なのかもしれません.

ElastixはPresetをgeneric(all)を選んだだけです.

処理時間

Plastimatch 約45秒

Elastix 約5分

処理時間は, どのような処理をしているかにも大きく依存するので, それらを統一していない処理で比べてもなんとも言えませんが, すこしPlastimatchのほうがいいのかなという個人的な感想です.

結果画像

画像上段左がFixed Image (CT1), 下段左がPlastimatch, 右がElastixです. 少しわかりにくかったのでCT1とCT2の輪郭を一緒に載せています. CT1のピンクの体輪郭(CT2のものもあるのでCT1の画像を参照してください)にどれだけあっているかを見てもらえばいいですが, Plastimatchは左肩あたりが少しElastixより違いが大きいし, すこしボケたような画像になっています.とはいえ僅かな差かと思います.

ついで, もう少し上のスライスで歯冠のアーティファクトがあるスライス前後になると, Elastixは極端に間違った変形となっています. Plastimatchはうまくアーティファクトを対象外にしているのか変な変形はありません. ただし, 顎の形などを見ると変形前の輪郭に近いので, アーティファクトのある部分は変形しないという処理なのかもしれません.

所見

今回の処理では若干Plastimatchのほうが良い結果でした. ただし, 処理自体を何も調整していない状態での比較なので, 結果画像の比較に大きな意味はあまりないようにも思います. おそらくElastixにも対象とする画素値の範囲を設定したりできるのではと思いますので, 今回アーティファクトが原因で変な変形になったとしても処理を最適化していけば良い結果を得れるのではと思います.

処理時間のところで書いたPlastimatchが少し良さそうとしたのは, おもに処理時間の結果とその将来性によります. 今回どちらもCPUのみでの処理で5倍以上の差が出ており, さらにPlastimatchのほうがGPUを使う設定があります. ちゃんとGPUの設定すればもっと早く処理できるのではと思います. 結果画像も大差ないうえでは, 処理時間とその将来性からすこしPlastimatchのほうがいいのではないかと思います.

本来, PlastimatchもDemons法でのDIRができたりするのですが, 3DSlicerのExtensionになった時点で, その処理が選べなくなります. Elastixも同様で, Extensionになることで, 本来できる機能, 処理の1部しか使用できなくなります. そういった意味では, どちらもコマンドラインで処理すればいいのですが, それだとここで3DSlicerのextensionとして説明してきた意味が… Slicerの中で実施できることですぐに結果画像を確認できるメリットや, 他のモジュールを使って評価や検証ができたりします. その意味ではExtensionであることの意味は大きいと思います.

ElastixのExtensionは初心者か上級者向けと書きました. それは, そのままでもある程度使えるようにしてくれていることと, さらに, 処理の変更や調整が設定を書いているファイルを編集することで可能になるので,上級者はさらに深く使えるところにあります.

Plastimatchは中級者クラスの人が, B-Splineで少しステージ数や解像度の調整など微調整ができるので, そのくらいでいいのであれば使いやすいExtensionだと思います. ただ, それ以上の変更をしたい場合は, たぶんこのExtensionではできないので, Elastixやコマンドラインでの実行にせざる得なくなると思います.

どっち使うかは自分のやりたいことにあった方を選ぶことになると思います.