3D Slicerによる計測 Markups

2024年9月17日

OS: ubuntu 22.04

Slicer version 5.7.0

3D Slicerで長さを測りたい, 角度やROIを用いた面積・体積を測りたい場合などMarkupsモジュールを使うことで可能となる. Markupsは3D Slicerの標準機能なので追加のインストールは必要ない. Markupsモジュールはポイントを設定したり, ラインを描いたりすることに使われるが, 単にそれだけなく計測をすることも可能になっている.

メニューのModuleのプルダウンをMarkupsに合わせるとしたのような画面になる. ほとんど直感的に使用できるため, 1度使ってみてはと思います. 一例として, 曲線の長さを測る場合を示します.

まず, 上記画面のようにModuleのリストからmarkupsを選択して, markupsの画面(左画面)を出します.

上記ボタンが出ていなければ, [Create Markups]の左にある黒三角をクリックすれば表示されるはずです.この左画面のいくつかのボタンはそれぞれポイント(point list), 直線(Line), 角度(Angle), 曲線(Curve), 閉曲線(Closed Curve), 面(Plane), 関心領域(ROI)を作るボタンになります. 使いたいものを作って(描いて)それを計測に使うことになります.

今回曲線の距離を測るので, [Curve]を選択しました. ボタン1回押すごとに, 上記画像の下部にある[OC]という項目が増えていきますので注意してください. このOCが今回計測するための曲線になります.

次に画像が表示されている画面上で点を取っていきます. このあたりはどのようなソフトでも同様です. 最後はダブルクリックで終点が設定されます.

上記画面ではすでに曲線に関する数値が出ていますが, それらの表示項目を設定するのが, 次の[Measurements]の設定になります. したの画像のような画面が出ていなかれば[Measurements]横の黒三角をクリックするとこで表示されます.

Measurement settingにある項目は, 選択したmarkupの種類, 今回は[Curve]を選択したので, それに合わせて測定できる項目が変わります. [Curve]には, length, curvature mean, curvature max, torsion mean, torsion maxが選択できます. ここでチェックをつけた項目が[Measurement setting]の上の部分に数値が表示されます. また,画像上でも表示されることになります.

今回の例では, たわんだボーラスの長さを計測していますが, 結果は276 mmとなっています.

計測した数値は自身でメモる必要があります. [Measurements]の少ししたに[Export/Import Table]という項目があるので結果を表に出せそうに見えますが, こちらはmarkupを形成するポイントの情報を表示出力してくれるだけになります. それらは[Control points]で見れる情報と同じです. つまり,markup自体を外部保存したり取り込んだりするための機能のようです.

これら計測は直感的ですので, その他の設定項目やmarkupの種類など自身で試して確認してみてください.

3DSlicerの日本語化

2022.10.04

OS: ubuntu Linux 22.04

3DSlicer version: 5.1.0

概要

3DSlicerはデフォルトで設定できる言語が英語かフランス語です. 以前Twitterで知らせたように最近多言語化が進められています. その中で現状の翻訳を用いて日本語化するExtensionが公開されています. 本来は多言語での翻訳に使うためのものですが, これによって日本語化できますのでその方法を記しておきます.

また, 現状の翻訳を用いてと言ったように, 翻訳が完璧ではない場合もあります. 翻訳はWeblateで行われています. googleアカウントでログインすることができ翻訳の修正も可能になります. おかしな翻訳を見つけたら, ぜひ翻訳に参加してもらえればと思います.

準備

準備は,ちょっと初心者には難しいかもしれませんがQtというライブラリに収められた翻訳のための処理をする実行ファイル( lrelease, windowsであればlrelease.exe )を見つけるもしくはQtのライブラリをインストールしておくことになります. この記事で使用しているubuntu 22.04では,

/usr/lib/qt5/bin

にありました. またWindowsでは, Qt5を入れる必要がありますが, Cドライブ直下のQtフォルダにインストールした際には, 下のパスにありました.

C:\Qt\5.15.2\winrt_x64_msvc2019\bin

もう一つの準備として, 3DSlicerで国際化を可能にしておく必要があります. こちらは3DSlicerのメニューから「Edit」→「Application settings」を選び出てくる画面の左にある項目で「Internationalization」を選択します. Enable internationalization: という項目一つだけチェックリストであると思いますので, そこにチェック入れておいてください. 変更すると再起動が必要になります.

この設定をしておかないと, あとの日本語化のところでいくら設定しても日本語化されません.

Internationalization の設定

Language Packs extensionのインストール

3DSlicerのExtension Managerを開き, LanguagePacksというExtensionをインストールします. Language PacksはExtension Manager画面の左側カテゴリの「Utilities」のなかにあります. 下のアイコンがLanguage Packsになります. Language Packsは多言語の翻訳ファイルを読み込むためのExtensionになりますので, これだけで日本語化ができるわけではありません.

また最近Extension managerにextensionが表示されないこともあるので, ファイルからインストールす方法も記事にしておきましたので参考にしてください.

Language Packs extension

日本語化

3DSlicerの再起動後, Language Packsのモジュールを開きます. Modulesのプルダウンから,「Utilities」→「LanguageTools」を選択してください.

このモジュールで「Input Translations」のタブを展開するといくつか選択があります. その中から一番上のWeblateを選択肢, Languages: のところを「ja_JP」を選択してください.

次にSettingsタブを展開してQt “lrelease” tool path: に準備のところで確認したlreleaseがあるフォルダを指定します. その他の項目はおそらくそのままで大丈夫だと思います.

それらの設定を確認して, 「Update translation files」ボタンをクリックしてください. 日本語化に必要なファイルがダウンロードされます. ファイル容量は大きくないはずですので, すぐ終わるのではと思います. 私の環境では, 秒で終わりました. この日本語化のファイルが翻訳ファイルになります. Weblateのサイトで更新があった際に再度ここで「Update translation files」をすれば最新のものと置き換わります.

この時点でやっとボタンの下のApplication Languageが変更できるようになります. EnglishからJapaneseに変更して, 最後に「Restart the application」ボタンをクリックした3DSlicerを再起動させて終了になります.

Language Tools

Restart the applicationの下にあるテキストボックスには, Update translation filesボタンを押した際に進捗状況が表示されます. うまく日本語化できれば下のようになります.

日本語化後の表示

日本語の表示が分かりにくい, 文字化けするなどでもとの英語に戻したい場合は, 3DSlicerのメニューの「編集」→「アプリケーション設定」を選択し, 出てきた設定画面(一般の項目)にある言語を「Japanese」から「English」に変更し再起動してください. 一度上の設定をしたなら日本語に戻す際も同様に変更できます.

ちなみに, Language ToolsのモジュールにFind text タブがありますが, その中の内容は翻訳作業に使われるものになりますので, 今回単に日本語化するだけであれば使用しません.

3DSlicerのExtension ManagerにExtensionが出てこない場合の対処

OS: ubuntu linux 22.04LTS

3DSlicer version: 5.0.2 or 5.1.0

概要

3D Slicerは頻繁にアップデートを行っています. 現在5.1系であれば毎日新しいものが出ています(次のNightly build). そうするとよくExtensionを入れようとExtension Managerを開いてもExtensionが何も表示されないということがあります(特にLinux版で経験しています). そのような場合Extensionのファイルをダウンロードしてインストールすることが可能です. 今回その方法を記載していきます.

症状

3D Slicerを立ち上げExtensionをインストールしようとすると, 下のようにExtension Managerで一つもExtensionが表示されないことがあります. 通常であれば, 左側にextensionのカテゴリ分類のメニュー,右側にExtension のアイコンと名称が表示されるはずですが, 新しいバージョンを追っかけながらインストールしていると, このように何も表示されないことがまあまあの確率で起こります.

version 5.1.0のExtension画面での何も表示されない画面

この場合, 右上検索の隣に, 「Install extension from file」と吹き出しが出るフォルダのアイコンがあると思います. 上の図では日本語化されて「ファイルからインストール」になっていますが同じ位置にあると思います. このようなExtensionが表示されない場合でも, これを使ってインストールできます.

準備

ファイルからExtensionを入れるので, インストールしたいExtensionのファイルが必要になります. ExtensionのファイルはKitwareのサイトからダウンロードすることになります. ダウンロード先はもちろんURL直打ちでもいけますが, 3DSlicerのバージョンによって異なりますので, 使用している3DSlicerのバージョンに合わせる必要があります(バージョンが異なっても動く可能性はあります).

Extensionのダウンロードサイトに行く方法ですが, 3DSlicerの設定画面から移動することができます. 3DSlicerのメニューの「Application Setting」を選択して下さい.

Application Setting

ついで出てきた設定画面で左側のカテゴリからExtensionsを選択し, 右側の「Open Extensions Catalog website…」をクリックしてください.

Application settings のExtensions

そうするとブラウザが立ち上がり, 通常のExtension Managerと同様の画面をした下のようなWebサイトが表示されると思います. 下の図ではカテゴリでUtilitiesを選んでいるところです. 右上に今回の例ではLinux を使っているのでLinuxとなっていますが, Windowsの場合はWindowsになっていると思います. 間違っていた場合でもここを切り替えることで正しいOS用のものを選ぶことができます.

また, もう一つ3DSlicerのExtension Managerを開いたときは各Extensionの下には「Install」というボタンが表示されていたと思いますが, ここはダウンロードサイトなので直接インストールはできません. そのためボタンが「Download」になっています.

ここから必要なExtensionのファイルをダウンロードしてください. またダウンロードされたファイルがどこにあるか把握しておいてください.

Downloadサイトから必要なExtensionをdownloadする

Install

インストールは3DSlicerのExtension Managerから行いますので, 3DSlicerにもどります. 最初に確認した「Install extension from file」のアイコンをクリックしてファイル選択ウィンドを出して先程」ダウンロードしたExtensionのファイルを指定します. 通常ダウンロードしたファイルは「ダウンロード」フォルダなどに入っていると思いますので探してみてください. またファイル名にextensionの名前が含まれています(逆に言うと他の番号などもついています)のでわかるかと思います.

Extensionのファイルは複数のファイルがまとめられた圧縮ファイルになっています. そのためファイルタイプの指定は各種圧縮ファイルになっています.

Extensionファイルの指定

以上で終了です.

3DSlicerによるmarkupsを用いたDIRの方法

OS: linux Kubuntu 22.04 LTS

3D Slicer v5.0.2

Extension: SlicerRT

ここでは3DSlicerとSlilcerRTのPlastimatchモジュールを用いて, いわゆるFiducial markerを用いたDIRの方法を説明します. 少し把握しきれていないパラメータもありますが, 実行はできると思いますので色々試してご確認ください.

準備

必要なのはもちろん3DSlicerです. またExtensionマネージャーからSlicerRTを入れておいてください. 私の使用したバージョンは5.0.2ですが, Stabelですでに5.0.3が出ています. 方法は変わらないと思いますし,さらに古い v4系でも一緒だと思います.

まず,画像の読み込みを行っておきます. 画像自体はおそらくあまり影響しないと思いますが, マーカーを設定するのに画像領域が必要ですので, 適当な画像をDIR-DBから読み込みました.

画像読み込み

表示は点が取りやすいように4画面で上下2画面で1つのCTデータを表示しています.

対象点の設定

DIRの対象点のポイントリストを作成します. 作成にはMarkupsモジュールを使用します.

Markupsモジュール

Markupsモジュールは, 点や線, 領域など設定できますが今回は点を対象としたDIR(おそらく点でないとできないのではと思います)ですので, Point Listを選びます.

MarkupsモジュールでのPoint Listの選択

ボタン下のNode一覧が示されているところに新しいPointListが現れますので名前をわかりやすく変更しておきます. DIRする上でReferenceとなるPointListとMovingのPointListが必要になりますので区別できる名前としてReference用としてPL_Refとしました. また, PointListを作成した時点ですでに1つ目の点を設定できるようになっています. 画像上にマウスカーソルを持っていくとピンクの点がカーソル先端に手でいると思います. 画像上にクリックすることで1つ目の点の位置が決定となります. その位置の座標値(RAS座標系)が下の部分に表示されます.

ちなみに, 下の画像ではクロスヘアラインを表示させて点を設定する位置を確認しています. クロスヘアラインを出すには上部アイコンの右から4番目のアイコンをクリックすれば出せます. クロスヘアラインはマウスには連動してません. キーボードのシフトを押しながらマウスを動かすとマウスに追随してくれます.

PointListの作成

2点以上の点を設定するには, 画像上で右クリックして下図のようにメニューを出し「Place」を選択します. すると新たな点がマウスカーソル先端に出てきますので, 再度位置を確定させれば追加されます. 点の名前はPointListの名称の最後にハイフンと数字がついたものになります.

点の追加

同様にmovingとなる点を設定します. reference, movingともに3点設定しました. movingのPointListの名称を点の位置を設定してから変更したのでF_1-1などになっています.

間違えた場合は, RAS座標が示された上にアイコンがあるので, それらで一つ消す, 全部消す, コピー&ペーストなど可能となります. RAS座標の数値を直接編集することも可能ですし, マウスで画像上のポイントドラッグして位置をずらすことも可能です. アイコンなどにマウスを持っていくとtool tipsが出るので参考にしてください.

注意として, referenceとmovingで指定した点の対応は, PointListの順番でなされるようです. つまり, referenceで1番目の点とmovingの1番目の点といった具合です(おそらく, 要確認).

LandmarkWarp

作成したMarkupsを用いてDIRを行います. 使用するのはSlicerRTに含まれているPlastimatchのLANDMARKWARP Landmark Deformable Registrationです. ModulesからPlastimatchの「LANDMARKWARP Landmark Deformable Registration」を選択してください.

LANDMARKWARPの設定画面は比較的シンプルです. referenceとなるvolumeをFixed volumeに, movingとなるvolumeをMoving volumeに, さらにFixed Fiducialsに作成したreferenceのPointList, Moving fiducialsにmovingのPointlistを指定します. あとは出力画像としてOutput volume, DVFとしてOutput Vector field(vtkMRMLGridTransformNodeとなる)を指定する.

あと気にしなければならないのはNumber of ClustersがPointListの点(ペア)の数になっているかくらいです. Basis functionは補間の関数, その半径がRBF radius, Stiffnessは正規化の強度(重み付け)になりますので, 大きく変形するときは0.0に近い値にしておくほうがいいと思います. 0.1に下だけでだいぶ正規化が効くようになります.Default Pixel Valueの値はどう影響するのかわかりません.

設定が良ければ「Apply」ボタンを押して実行してください. ボタンの上に秒数が出るので計算されていることがわかると思います. Completedになると終了です. 私の環境ではこの設定で30秒程度かかりました.

LANDMARKWARP モジュール

結果の確認

結果の確認は, 変形された画像(Output Volumeでしたいしたデータ)も表示されるので変形した画像はその場で確認できます.

DVFを確認したい場合は, Transformsモジュールを使って確認します. モジュール画面の一番上にあるActive Transformに先程出力させたDVFを指定します.

次にDisplayタブを展開しvisibility, visibility in slice view にチェックを入れます. それによってDVFがヒョじされます. 下図ではグリッドを選んでいますが, 矢印や等高線を選択できます.

変形のDVFを確認すると, PointListで設定した点周辺のみが変形されていることがわかると思います. つまり他のところは変形対象にはならないみたいです.

Transformsモジュールによる結果の確認

上記の画像では, せっかく設定したPointListの点が変形前のままですので, moving用のpointlistをDVFにしたがって移動させ確認します. これはTransformsモジュールでそのままできます. Displayタブの下にあるApply transformタブを展開しTransformableにあるmovingのPointlist(PL_mov)を緑の矢印ボタンを使ってTransformedに移します. これで移動された点が表示されます. その位置で保存したければ緑の→下のメッシュが重なっているようなアイコンをクリックして確定させます.

変形された画像, DVFはすでにSlicerのsceneに含まれていますので, Sceneを保存すればファイルに保存されます.