3D SlicerによるDIR: Elastix

OS: Ubuntu 20.04

3DSlicer Version: 4.11.20210226

Extension SlicerElastix

Elastixも3D Slicerで使えるDIRソフトです. Install編で説明したようにExtensionを入れれば使えるようになります.

3D slicerでの設定は, ごく簡単な設定になり, 細かな設定は設定ファイルに書かれておりそれを選んで実行することになります.

ElastixでDIRをしようとした場合, Moduleは「Registration」->「General Registration(Elastix)」を選びます.

下の図が設定項目になります. Plastimatchと比べここで設定できる項目は本当にシンプルです. ElastixのExtensionはplastimatchと比べ一見簡単そうですが, 処理の調整などをしようとするとファイルの記載を変更しなければならないため, とりあえずDIRさせたい, もしくはある程度DIRやプログラミングの知識がある人がガッツリ調整してDIRしたい, どちらか両極端な方向けかと思います. 順に説明していきます.

Elastixのモジュールインターフェイス
  • Reload&Test

この見出しの項目は, このElastix moduleのインターフェイスを変更する場合に使います. 例えばElastixにある機能/設定でこれ以降の見出しの設定項目にない設定を追加したい場合などを想定した機能かと思います. Editボタンをクリックして編集していきますが, インターフェイスを作るPythonコードが立ち上がります. Pythonを理解しかつ3DSlicerのmoduleのコード記載方法を理解していないと変更できないと思います.

そのため, わからない人は触らないほうが無難な設定項目です.

  • Parameter set

この設定は, いまいちなんのためなのか理解できていません. おそらくですが, 新規作成が Create new scripted module となっているので,モジュールの調整ではと推測します. となると, 上記のReload&TestでEditしたインターフェイスを保存するような役割かと思います. あまりいじる必要はないように思います.

  • Inputs

DIRする画像を選択します. Fixed volume,Moving volumeは基準となるボリュームと変形されるボリュームとそれぞれ指定してください.

PresetがDIRの設定となります. 設定となります書きましたが, 設定を細かく変更はできません. すでに作られている設定を選ぶだけになります. プルダウンで選択項目を見ると, CT-CTだけでなくMRI,PETなどマルチモダリティでDIRする設定も多くあります. 自分がしたい処理にあったものを選んでください.

ここで, これらPresetの設定が何をしているかですが, プルダウンで表示される選択項目はSlicerがインストールされているフォルダの下

[Slicerのフォルダ]/lib/Slicer-4.11/qt-scripted-modules/Resources/RegistrationParameters

というフォルダに, ElastixParameterSetDatabase.xmlというファイルがあります. ここで規定されています. ElastixParameterSetDatabase.xmlの冒頭部分は下のようになっています.

<ParameterSet … > </ParameterSet>までが一つのPresetになっており, modality= に記載されている名前がPresetとしてプルダウンメニューに出てきていると思います. <PrameterFiles>以下にあるのがこのPresetで使用する処理の設定ファイルの名前です. Presetの「general(all)」で実行されるのは Parameters_Rigit.txt と Parameters_BSpline.txt ですので, ファイル名的に, rigitをしてB-SplineのDIRを実施する処理のようです.

<?xml version="1.0" encoding="UTF-8"?>
<ElastixParameterSetDatabase>
  <ParameterSet id="default0"
    modality="generic"
    content="all"
    description="'default' parameter files for starting elastix users"
    publications="">
    <ParameterFiles>
      <File Name="Parameters_Rigid.txt" />
      <File Name="Parameters_BSpline.txt" />
    </ParameterFiles>
  </ParameterSet>
  <ParameterSet id="default0"
    modality="generic rigid"
    content="all"
    description="'default' parameter files for starting elastix users"
    publications="">
    <ParameterFiles>
      <File Name="Parameters_Rigid.txt" />
    </ParameterFiles>
  </ParameterSet>

またParameters_Rigit.txt と Parameters_BSpline.txt はElastixParameterSetDatabase.xmlがあるフォルダにあり, そこには他に様々な名前の.txtファイル(設定ファイル)があります. それぞれの具体的な処理の設定が.txtファイルで規定されています.

  • Masking

DIRをする範囲を指定できます. maskに使用するのはLabelmapになり, DICOM-RTを読み込んで輪郭をMaskにしたい場合は, 輪郭をLabelmapに変換しておく必要があります. Labelmapがあれば, どれをMaskに使用するか選択できます.

  • Outputs

出力先を指定します. 基本的に出力しないことはないと思いますので, Create new volume かCreate new volume as…を選ぶことになると思います. いずれも3D slicer内部で保存されている状態になるので, ファイルへは別途保存する必要があります.

output volumeは変形後の画像, output transformはDVFを出力することになります.

  • Advanced

ここはelastix上級者向けに役立つ機能です. 基本的にDIRをの処理を調整したい場合(新たにPresetを作るとか, 設定txtを作るとかの場合)かと思います.

Show detailed log during registrationは詳しいlogを表示してくれますし, Keep temporary filesで途中経過のファイルを残してくれます. Registration presetsは右のボタンで, 上のPresetのところで説明した設定ファイルがあるフォルダを開いてくれます.

Force grid output transformは未確認ですが, Transformモジュールで出力されたtransformのデータを見ると, チェックが入っていないほうがTransformモジュールのinformationのところにより詳しい情報が表示されます. B-Splineの情報などが出ますので, チェックがないとDVFになっていないパラメータの状態でデータを保管しているのかと思います. 3DSlicerのデータ形式でvtkMRMLBSplineTransformNodeとvtkMRMLGridTransformNodeと別になっていますので, チェックを入れることで, BSplineTransformNodeをGridTransformNodeに変換してくれて出力するのかと思います.

Custom Elastix toolbox locationもよくわかっていません. 右の入力項目にはファイルを指定するようです.

  • Applyボタン

Applyボタンでこれまでの設定でDIRを実行します.