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を実行します.

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といったところです.

3D SlicerによるDIR: Install

システム: Ubuntu20.04 (一応Windows10でもたまに確認)

3DSlicer Version: 4.11.20210226

3DSlicer  (https://www.slicer.org/)では,以下の2つの方法でDeformable Image Registration (DIR)が可能です.

1. SlicerRT Extension付属のplastimatchによるDIR

SlicerRTはDICOM-RTを読み込むのに必要になるExtensionです. もともとPlastimatchというコマンドラインのソフトがあり, それの入力, 設定インターフェイスとして3DSlicerが機能しています. SlicerのVersion 4のExtensionから統合されたようです.

Plastimatchは以前サイトに書きましたが, DIRだけでなく, CT画像の再構成やDRRの生成などいろいろなコマンドがあります. (インストールは下のようなアイコンをExtensionで見つけてInstallしてください.)

2. Elasix ExtensionによるDIR

Elastixもコマンドラインで実行するソフトで, PlastimatchとどうようにSlicerを入力, 設定のインターフェイスにしてます.

3DSlicerでのExtensionのインストールは, メニューバーの右から2つ目の青いアイコンをクリックするとExtensionの管理画面が立ち上がります.

3DSlicerのメニューバー
ExtensionのIcon

Extensionの管理画面は下のようになっています.

Extension管理画面. 上部のタブで現在インストールされているExtension, すべてのExtension, 旧バージョンのSlicerなどで使用していたExtensionを切り替えできます.

上記画面になっていなければ, 上部のタブで「Install Extensions」タブを選べばこの画面になります. この中からSlicerRTもしくはElastixを選択しインストールします. インストールはこの画面でアイコン下の「INSTALL」ボタンを押すだけです.

たまに, ネット接続が悪く(おそらくサーバーの問題かと) 一覧が表示されなかったり, 表示が数十秒かかるなど反応が遅いときがありますので, 慌てずに気長に対応してください.

追記 3DSlicerのinstall時の注意

3D Slicerは日本語対応がまだできていません. そのためメニュー等はすべて英語になります. メニューが英語であっても使い勝手は悪いかもしれませんが使うことは出来ます. 問題は日本語フォルダがうまく認識してくれないことです. 特に落とし穴が, 日本語ユーザー名にしている場合です.

3DSlicerはWindows10では, デフォルトで下のようなフォルダにインストールされます.

C:\Users\[ユーザー名]\AppData\Local\NA-MIC\Slicer 4.11.20210226

ここで[ユーザー名]としたところにWindowsにログインした際のユーザー名が入ります. そのユーザー名が日本語の場合, 3DSlicerがうまく起動しない可能性があります.

対処方法としては, 日本語の入らないフォルダにインストールする他ありません. 例えば, C:\ 直下にC:\3DSlicer などフォルダを作りそこにインストールすることになります. もしくは, 日本語名にならないユーザー名でアカウントを作ってそのユーザーでインストールするなど.

バージョンが上がって改善されている可能性はありますが, インストールしてもうまく起動しない場合は確認してみてください.

Linuxの場合は未確認です. 日本語のアカウントは作ったことがないので…

日本放射線技術学会誌 教育講座 放射線技術学におけるImageJの活用 記事連携ページ

日本放射線技術学会誌で教育講座 「放射線技術学におけるImageJの活用」というシリーズ記事の最後を担当しました. その中でImageJのPlugin作成を書いたのですが, その際使用したサンプルコード, CT画像, StructureSetのファイルをダウンロードできるようにしておきます.

CT画像(solid.zip)

一般的なDICOM形式のCT画像のファイルをzipでまとめています. 使用する際には解凍してお使いください.

StructureSet ファイル(solid40cm_StrctrSets.dcm)

DICOM-RTに含まれるStructure setのファイルです. 拡張子がdcmですが, ImageJなどでそのまま開くことは出来ません.

Plugin プログラムコード(JSRT_RTSt_reader.java)

教育講座で使用したプログラムコードです. 拡張子がjavaですので, そのままではImageJで実行はできません. ImageJのPluginsフォルダーにコピーし, ImageJのメニューからプラグイン->コンパイルして実行を選択し, このファイルを指定してください.

2019年度 北信がんプロセミナー Deep learning講習会

2020/2/26

コロナウィルスのため中止としました!

昨今放射線治療の分野にもDeep learningが活用されてきています. そこで, deep learningを始める取っ掛かりとして活用いただけるDeep learning講習会を北信がんプロセミナーとして開催いたします.

講師は, JAMITやMIIでdeep learning講習会を開いておられる岐阜大学 原先生にお願いいたしました. 日程等は下記の通りです.

(残念ながらすでに定員となり参加受付は締め切らせていただきました.)

北信がんプロセミナーの案内のダウンロードはここからどうぞ

参加者には事前準備をしていただきます. 事前準備の案内は開催日1ヶ月ほど前にご案内いたします.

日時:    2020年2月29日(土)   10:00 ~ 17:00

場所:    金沢大学 医薬保健学域 保健学類  4号館1F  4111講義室

参加費:   無料

講師 :   原 武史 教授

岐阜大学工学部電気電子・情報工学科
岐阜大学人工知能研究推進センター

プログラム:

9:30-10:00  受付

10:00- 17:00 (休憩適宜,  12:00-13:00 昼休み)

・畳み込みニューラルネットワークによる画像分類と回帰
・U-Netによる領域分割
・DICOM画像の取り込み  他

第7回3次元ゲル線量計研究会 @ 金沢

第7回3次元ゲル線量計研究会を金沢で行います.

日時 11月24日 13:00 ~ 25日 12:00ごろまで
場所 金沢大学 医薬保健学域保健学類 1号館2F 1220講義室
24日19:00から意見交換会も予定しております.

参加申し込み,詳細は広島国際大学の林研究室Webページを御覧ください.
http://www.hirokoku.jp/hr/dosgel/20181124-25gelkai/index.html

 

案内情報をまとめました. (2018.10.31追記)

研究会会場およびいろいろ案内(pdf) ダウンロード

情報交換会案内 (pdf) ダウンロード

2018年度 北信がんプロセミナー

北信がんプロセミナーを開催します.
金沢マラソンと日付が被ってしまいましたが, 午後からですので交通規制も大学周辺は解除されていると思います.ぜひ奮ってご参加ください.

日時: 2018年10月28日(日) 13:30-17:15
場所: 金沢大学医薬保健学域保健学類 1号館2階 1220講義室
会費: 無料
持ち物: 電位計*, PC
*電位計は1施設1台まででお願いいたします. また, 端子がBNC(Ramtecシリーズ使用の端子)以外の場合武村までご連絡ください.

プログラム:
13:30-14:30 講演「IGRTの進化とMR-Linac」
エレクタ株式会社 Research Physics Manager 岩井 良夫 先生

14:45-17:15 実習「ユーザーによる電位計の点検」
福井大学医学部附属病院 放射線部 木下 尚紀 先生
「電位計ガイドラインでは電位計の点検はメーカーに依頼することを推奨していますが,ユーザーが行うことを否定してはいません. ユーザーによる点検は電位計の故障が疑われる場合など緊急時の簡易点検として有用な内容となっています.また,負担にならない程度で治療現場で電位計の点検を実施することは電位計の品質管理上,望ましいことです.
そこで,本実習ではユーザーによる電位計の点検方法の紹介と実演を行います.」