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を保存すればファイルに保存されます.

Three-dimensional dosimetry of TomoTherapy by MRI-based polymer gel technique

Yoichi Watanabe, N. Gopishankar

Journal of Applied clinical Medical Physics, Vol. 12, no. 1, Winter 2011

DOI: 10.1120/jacmp.v12i1.3273Citations: 9

(日本語)

放射線治療において,線量計算や治療計画に使用するソフトウェアの検証は,正確な放射線照射を行うために非常に重要である.BANG3ポリマーゲル線量計と3T Magnetic Resonance Imaging(MRI)を用いて,トモセラピー治療計画および放射線照射の精度検証を行なった.前立腺治療1症例を評価し、計算された3次元線量分布は,最大線量(2.5Gy)よりはるかに小さい(25%以下)領域を除いて,測定された3次元線量分布と一致することが分かった。計画標的体積を含む12cm×11cm×9cmのボリュームに対してγIndex(3%/3mm)を用いた解析では,53%のボクセルでγIndexが1より小さいことが示された.この測定プロトコルと解析ツールは、強度変調回転放射線治療のような他の新しい 複雑な放射線照射技術の評価にも,低コストかつ容易に適用することが可能である。

Evaluation of setup and intrafraction motion for surface guided whole-breast cancer radiotherapy

Sandra Helene Hattel, Peter Andreas Andersen, Isak Hannes Wahlstedt,

Sidsel Damkjær, Arpit Saini, and Jakob Borup Thomsen

J Appl Clin Med Phys 2019; 20:6:39–44

DOI: 10.1002/acm2.12599

(日本語)

Surface Guided Radiotherapy (SGRT) は、患者の位置を合わせたり、治療中の患者の動きを監視したりするための比較的新しい技術である。SGRTでは患者体表面の位置を決定するために可視光を用いるため、完全に非侵襲である。SGRTの精度がイメージングと同等であれば、患者位置合わせのための毎回のイメージングを減らすことが可能である。SGRTでは、フラクション内の動きの監視及び、決められた許容値を超えた時に照射を止めることが可能で、より正確な照射をもたらす。この研究の目的は、SGRTとしてAlignRT(OSMS)を搭載し、ゲーティングでない乳房全体の放射線治療の際のセットアップとフラクション内の動きの監視の不確かさを調べることである。最初のセットアップにおいては、SGRTが患者に入れられた3点の刺青を用いる方法と直交X線画像が比較された。フラクション内の動きの調査では、治療中の患者を6軸で監視した。3点セットアップでは、アイソセンタからの二乗平均平方根誤差は5.4mmであった。OSMSを用いた手法では、これが4.2mmまで改善された。並進方向においては、OSMSはlateral方向で改善が見られたが(P=0.0009、Wilcoxonの符号順位和検定)、longitudinal方向と回転では、改善を示すことができなかった(それぞれP=0.96、P=0.46)。vertical方向においては、OSMSより3点セットアップの方がより正確であったと示された(P=0.000004)。フラクション内の動きにおいては、アイソセンタからの平行移動の中央値が1.1mmと非常に制限された。OSMSはレーザーと刺青のセットアップから注目すべき改善はみせたものの、骨構造を使用する直交X線画像に取って代わるほどの正確さは示さなかった。

3D Slicerのビルド (Linux版)

2022.3.29

OS: Ubuntu 20.04

3D Slicer: Preview Release 4.13.0 revision 30742 built 2022-3-27

3D SlicerはOpen Sourceなソフトです. そのためソースコードが公開されています. ソースコードをもとに改変することも可能です. ビルドの情報は以外にたどり着きにくいところに置いてあったりします. もちろん英語で, ある程度プログラミングに慣れていないと理解できない記載も多いです.

はじめに注意事項

今回の記事では, 基本的には3DSlicerのDocumentationにあるDeveloper GuideのBuild Instractionsに書かれている内容を少しわかりやすく情報を追加して記載しています.

この記事の対象はLinux版です. (そのうち別記事でWindows版も載せたいと思います.)

ソースコードの取り寄せやすさから, バージョンは4.13 preview版としています(現在Release版は4.11). Preview版のため, 日々バグフィックスされて更新されていきます. 記事で対象としたソースコードは「3D Slicer: Preview Release 4.13.0 revision 30742 built 2022-3-27」ですが, 更新されるとrevision番号やbuiltの日付が変わって行きます. ビルドがうまく行かない場合は, revisionが上がるのを待つのも手かと思います.

Linux版の要件

まずはLinux版をビルドする場合, OSから注意が必要です. UbuntuなどDebian系のLinuxであれば一番問題が少ないと思います. その他に必要なソフトやライブラリがあったりします. Build instractionsに記載されている内容が下になります.

  • Git and Subversion for fetching the code and version control.
  • GNU Compiler Collection (GCC) for code compilation.
  • CMake
  • GNU Make
  • GNU Patch
  • Qt5 ver. 5.15.2
    • Multimedia
    • UiTools
    • XMLPatterns
    • SVG
    • WebEngine
    • Script
    • X11Extras
    • Private
  • libXt

この中で意識しないといけないのはおそらくGit, CMake, Qt5 くらいかと思います. Ubuntu20.04で他のソフトやライブラリを入れた覚えはありません(デフォルトで入っている)

Qt5ですが, Ubuntuのフレーバーによっては入っていないことがあります. Synapticsなどアプリをインストールするソフトで確認してみてください. その際, バージョンも確認することをお忘れなく. Ubuntu20.04は特に問題にはなりませんでしたが, あまり古いもの, 新しすぎるものもまたエラーになる可能性があります.

CMakeはコンパイルのための昔で言うMakefileを作ってくれるソフトになります. これもバージョンによってうまく行かない場合もあったりしますので, バージョンの確認をしておく必要があると思います. 最新リリース版は現時点3.22.3, RC版が3.23.0-rc5となっています. SynapticsやaptでインストールできるCMakeがあればそれで十分かと思いますが, 気になるもしくは問題がああった場合などから3.22.3を使ってはと思います. またコマンドライン版(cmake)とGUI版(cmake-gui)がありますが好きな方を使えばいいと思います.

Gitは, ここでの使い方はソースコードを取り寄せるソフトとなります. 正確にはバージョン管理ソフトですが, 今はソースコードを取り寄せる以外には使わないのでこう思っていても構いません. Gitはビルドにあまり関わりませんので, バージョンを気にする必要はないかと思います.

その他のソフトに関しても基本的にバージョンは把握しておいたほうが問題があった場合の解決の糸口になったりします.

ソースコードの取り寄せ (Gitの使用)

ソースコードはGithub.comで公開されています. 通常のファイルのようにダウンロードすることも可能ですが, ここは3D SlicerのガイドにそってGitで取り寄せます.

初めてGitを使う人はレポジトリを作成する必要があります.適当なところにディレクトリ(フォルダ)を作り, そこをローカルリポジトリにすればいいと思います. 私の場合はホームディレクトリに「repos」とディレクトリを作りました. そのディレクトリをGitで初期化します. 具体的な作業はターミナル(端末ソフト, WindowsでいうPowerShell)で行います. ターミナルを立ち上げてプロンプト(下では#マーク)に以下のコマンドを入力します. (1行1行実行します. そのため1行入力したらEnterキーを押してください)

# cd
# mkdir repos
# cd ./repos
# git init

1行目のcdは念の為です. ホームディレクトリなどレポジトリとなるディレクトリを作りたいディレクトリにいれば必要ありません. ホームディレクトリの下にreposディレクトリを作る予定でしたので, ホームディレクトリに戻るコマンドになります.

2行目でディレクトリ作成と3行目でそのディレクトリに入って, git initでレポジトリを初期化しています.

次にreposの下に3D Slicerのソースコードを取り寄せます. 上記処理した後, 以下のコマンドを入力してください.

# git clone https://github.com/Slicer/Slicer.git

これで逐次処理工程が表示され終われば, 「Slicer」というディレクトリが出来ており, その中に更に「Slicer」というディレクトリがありそこにソースコードがクローン(ダウンロード)されているはずです.

SlicerのBuild Instractionsではソースコードのクローン後, したのようにSetupForDevelopment.shを実行するようにありますが, 私の場合はこのような記載があることを気がついていなかったため, 無視して以下を実施しましたが, 特に問題はなかったです. 内容をざっとみるかぎり, Githubのユーザー設定等のようですので, 今回の処理にはあまり影響しないかと思います.

# cd Slicer/Slicer
#./Utilities/SetupForDevelopment.sh

ビルド環境の構築と設定(CMake)

ビルドは直接ソースコードをクローンしたディレクトリで行うのではなく, ビルド用のディレクトリを作りそこでビルドしていきます. ここでは, そのディレクトリをslicer413_buildとします. 下のようにディレクトリを作り, その中に入ります.

# mkdir ./Slicer/slicer413_build
# cd ./Slicer/slicer413_build

現状下のようなディレクトリの構造になっていると思います.

[ホーム]— repos–+– Slicer –+– Slicer –+– (ソースコードのディレクトリ群)
|
+– slicer413_build

現在, 空っぽのslicer-bディレクトリにいる(処理対象になっている)と思います. ここでCMakeを使って必要なソースコードの取り寄せや, ビルドの環境確認, 設定を行います.

ここからCMakeを使いますが, わかりやすいようにGUI版を使います. デスクトップのメニュー等からcmakeを選ぶか, ターミナルでcmake-guiを起動してください. ターミナルでは下のように入力します.

# cmake-gui

CMakeとソフト名を書いていますが, 実行ファイルは小文字ですし, Windowsとはことなり大文字小文字は区別されますので間違わず小文字で入力してください.

起動したら下のようなウィンドウが現れると思います. ここでまず指定するのが赤丸で印をつけた2つの項目です. 上がソースコードのあり場所, 下がビルドのためのディレクトリの場所を指定します. それぞれ右の「browse」ボタンから選択すればいいと思います. 下の例では, ともに /home/at/repos/… から始めっていますが, 自身の環境にわせて変更してください. これまでの説明の通りに実施してきたのであれば, repos/ から下は同じになっていると思います.

cmake-gui

ディレクトリ設定できれば, とりあえず左下の「Configure」ボタンを押します. すると下図のようにmakeファイルの形式を聞いてくるのですが, ubuntu(たいがいのlinux)であればそのまま(Unix Makefilkeのまま)「Finish」ボタンを押せば構いません.

「Finish」ボタンを押すと, 「Configure」ボタンの下のメッセージボックスに処理の状況が流れて最終的には下のように真っ赤になって終わると思います.

cmake-guiでは, 自動で設定した設定項目や何らかエラーがある項目が赤くなります. 自動設定された内容は問題ない場合がほとんどですので, 再度「Configure」ボタンを押せば白背景になります.

ここで赤背景の設定項目が残っている, もしくは下のメッセージボックスに赤字でエラーが出ている場合はエラーのある設定項目を修正するもしくは設定項目を追加するなど対処してください. そのような場合の多くが設定項目の名前になっているライブラリが無い(見つけられない)などですので, 手動で入力するか本当に無いのであればインストールするなりすることになります.

下のようにメッセージボックスに「Configuring done」と出ていればOKです. ただし, まだこの段階では環境設定は終わっていません.

ついで, 「Generate」ボタンを押して完了になります. 「Generate」ボタンを押すことで, Makefileが書き出され, ビルドのための環境が保存されます. 見にくいですが「Generate」ボタンを押した後にGenerating doneと出れば終わりです. cmake-guiのウィンドウを閉じても構いません.

これでslicer413_buildの中に多数のディレクトリやファイルが出来ていると思います.

Slicerのビルド

あとはビルドするだけになります. ビルドはmake一発です.

gitでクローンしたターミナルでも, cmake-guiを立ち上げたターミナルでも構いませんので, ビルドのためのディレクトリに移動してmakeを実行します.

# cd ~/repos/Slicer/slicer413_build
# make

makeコマンド後は, だいぶ時間がかかります. 私の環境で5, 6時間かかりますので気長に待ちましょう.

ビルド中にエラーがでたら, 基本的には何らか設定がおかしいことが考えられますので, cmakeから確認することになります.

無事終了したら, slicer413-buildの中のSlicer-buildの中に「Slicer」という実行可能ファイルが出来ていると思います. それを起動してうまく動くか確認してみてください.

リリース版へ

この記事のままビルドしたのなら, ビルドはデバッグバージョンでビルドされています. ビルドが問題なく終了し, 出来上がった3DSlicerも問題なく起動・ 処理を実施できることが確認できたらリリース版で再ビルドする必要があります. デバッグ版でも動きますが, 実行ファイルの容量が大きかったり目盛などリソースを無駄に費やしたりします.

リリース版にするためには一旦cmake-guiでの設定に戻りますのでcmake-guiを再度起動してください.

cmake-guiの設定画面で, 上部にある「Advanced」にチェックを入れてください. そうすると設定項目が増えたと思います. その中から「CMAKE_BUILD_TYPE」という設定項目を探してください (Advancedよこの検索で探しても可). 現在その項目に「Debug」が指定されていると思いますが, そこを「Release」に変更してください.

「CMAKE_BUILD_TYPE」を変更したら, 再度「Configure」ボタン→「Generate」ボタンを押して再度makeしてください.

makeが無事終われば同様に「Slicer」の実行ファイルがリリース版に置き換わっているはずです.

Package化

実際に出来上がった3D Slicerは「Slicer」だけでは実行できません. 必要なライブラリなどがありますが, ビルドしたフォルダ内にどのファイルが実行するためにいるものかよくわからないと思います. パッケージ化してひとまとめにすることで, 好きなところにインストールでき余分なファイルもなく便利になります.

パッケージ化もmakeを使います. ただし, makeを実行するディレクトリが異なりますし, パラメータも指定します.

実行ファイル「Slicer」があるSlicer-buildのディレクトリに移動します. そこでmakeを下のように実行します.

# cd ~/repos/Slicer/Slicer/Slicer-build/
# make package

うまく行くと, Slicer-4.13.0-2022-03-23-linux-amd64.tar.gz など圧縮してひとまとめになったファイルが出来上がります.

インストールするときは, このファイルをインストールしたいディレクトリに解凍すれば終わりです.

3DSlicer によるStructureごとのICE値の統計

OS: Ubuntu 20.04, 3DSlicer Version: 4.11.20210226

JacobianとICEの求め方では全体の平均値や標準偏差などしかわかりませんでした. そのため, 次回にはStructure 毎の値を出す方法を書くように書きましたが, その方法はSegment Statisticsを使う方法で, すでに書いていることを忘れていました. ただ, Segment Statisticsの回では, ICEのデータを使ってという話ではなかったので, ざっくり流れと注意点のみ記載していきます. 具体的な処理は以前の記事を見てください.

Structureごとの値を取るのに, なによりすでにICEが求まっている必要があるので, そのやり方は下の記事を見てください.

またSegment Statistics モジュールの使い方は, 下の記事にあります.

Segment StatisticsでICE値の統計を取る際の注意点

Segment Statisticsで処理するのはScalar Volumeになります. RegistrationQAを用いて計算したデータであればScalar Volumeになっていますが, 他のソフトで計算したデータを3D Slicerに読み込んで統計を取ろうとした場合, Data モジュールでそのデータがvtkMRMLScalarVolumeNodeになっているか確認してください. 下はScalar VolumeになっているICEのデータの例です.

Segment Statisticsで統計データを求める下のように値が計算され表としてまとめられます.

ICEの結果の表

この表で, MinimumやMaximum, Mean, Median, Standard… がそれぞれStructureごとの最小値, 最大値, 平均値, 中央値, 標準偏差になります. 注意は, データ値をもととした平均などの値ですので, その単位はもとのデータに依存します. ICEの場合距離値となるのでScalar Volumeに保存されているのがcm単位なのか, mm単位なのか事前に確認しておく必要があります. Segment StatisticsはあくまでもScalar Volumeの画素値をLabelmap (Structureのデータを変換して作る)ごとに分けて平均などを取ってくれるに過ぎません.

結果の表は保存すると, Tab separate value(.tsv)かComma separate value(.csv)で保存されるのでExcelなどで読み込めます.