今回は、Fiji(ImageJ)だけでSPECTの3次元画像再構成を行う研究用プラグイン、Fiji SPECT Reconstruction 0.2.0を紹介します。

プラグインはCPU専用・純Javaです。実行時にPython、CUDA、GPU、外部の再構成プログラムは必要ありません。Java 21を同梱したFijiだけで、SIMIND InterfileまたはMHD+RAWの投影読込から、MHD+RAWの再構成画像保存まで進められます。

本ソフトウェアは趣味用です。Apache License 2.0で利用・改変・再配布できますが、無保証・自己責任です。

もくじ

  1. Fijiへインストール
  2. Lu-177サンプルの正解設定
  3. 起動時セットアップ
  4. 文字の色について
  5. 1 入力
  6. 2 補正
  7. 3 再構成
  8. 4 実行
  9. CTとSPECTの位置関係
  10. 保存ファイルと注意点

Fijiへインストール

Java 21を同梱したFiji Latestを、Fiji公式配布ページから入手して展開します。古いJava 8版Fijiは使用しません。

配布ZIP:Fiji_SPECT_Reconstruction-0.2.0.zipをダウンロード

  1. Fiji SPECT Reconstruction 0.2.0の配布ZIPを展開します。
  2. Fiji_SPECT_Reconstruction-0.2.0.jarをFijiのpluginsフォルダへコピーします。
  3. Fijiを再起動します。
  4. Plugins > SPECT Reconstruction > Reconstruct from MHD / Interfileを開きます。ImageJ1メニューでは末尾に(ImageJ1)が付く項目を選べます。

ImageJ1側のメニューから開いても再構成機能は同じです。タイトル(window左上)がFiji SPECT Reconstruction 0.2.0 — CPU / 研究用であることを確認してください。

DICOM入力には対応していません。投影として選べるのはSIMIND Interfile(.h00+.a00など)またはMHD+RAWです。DICOMは、感度校正用の平面画像を読む用途に限って使用できます。

Lu-177サンプルの正解設定

この記事では、配布ZIPのexamples/simind/にあるサンプルを使います。迷わないよう、今回使う値を先にまとめます。

項目このサンプルで選ぶ値
核種Lu-177
光電ピーク2つ(同一分布へ統合)
投影形式SIMINDの出力
軌道距離ファイル(.cor)がある
上級者項目OFF
入力単位CPS_PER_MBQ
時間・放射能30 s/view、100 MBq
Primary / Secondary感度8.6829 / 10.6919 cps/MBq
撮影角度開始0°、刻み11.25°、CCW(時計回りOFF)
散乱補正TEW、ADDITIVE
減弱補正ON、実HUなのでHU+1000(SIMINDでよく使う)はOFF
CTの位置合わせSIMINDヘッダから自動確認(座標の手入力不要)
PSFPrimary、Secondaryとも距離依存
再構成格子64×64×64、4.42 mm等方
反復subset 4、最大反復6
後処理NONE

CPS_PER_MBQは、投影値が「1秒・1 MBqあたりのカウント率」で保存されているという意味です。このサンプルではプラグイン内部で投影値 × 30 s × 100 MBqを期待カウントへ変換します。入力ファイルをあらかじめ3000倍しないでください。

6つの投影window

役割選ぶヘッダ窓 [keV]
Primary Main windowlu177_208_main.h00187.2–228.8(幅41.6)
Primary Lower windowlu177_208_lower.h00170.0–187.2(幅17.2)
Primary Upper windowlu177_208_upper.h00228.8–246.0(幅17.2)
Secondary Main windowlu177_113_main.h00101.7–124.3(幅22.6)
Secondary Lower windowlu177_113_lower.h0092.0–101.7(幅9.7)
Secondary Upper windowlu177_113_upper.h00124.3–134.0(幅9.7)

CTはlu177_208_main.hct、真値はlu177_truth_activity.mhd、viewごとの距離はlu177_208_main.corです。データ本体の.a00や.ictを直接選ばず、対応するヘッダを選びます。

ここまでの話がよく分からないと思うかもしれませんが、とりあえず次から作業開始です。

起動時セットアップ

プラグインを起動すると、最初にセットアップ画面が開きます。このLu-177サンプルでは、次のとおり選んでください。

  1. 核種:Lu-177
  2. 使う光電ピークの数:2つ(同一分布へ統合)
  3. 投影データの形式:SIMINDの出力
  4. 検出器の軌道:距離ファイル(.cor)がある
  5. 上級者向け項目:チェックしない
Lu-177、2ピーク、SIMIND、距離ファイル、上級者OFFを選んだv0.2.0起動時セットアップ

「この設定で始める」を押した後、画面上部の「条件JSON読込」からexamples/simind/demo-job-lu177.jsonを開きます。このJSONには、条件設定が登録されています。

文字の色について

表示色意味例
青入力ファイルから読み取った値画素間隔、角度刻み、窓幅、コリメータ値
緑エネルギーなどからプラグインが計算した値μwater、μbone、鉛の減弱係数
黒利用者入力または既定値撮影中放射能、反復数、保存先
赤枠・赤字不足または矛盾があり修正が必要未指定ファイル、範囲外の数値

1 入力:window、CT、撮影条件を確認する

まず上部で、PrimaryとSecondaryの各Main / Lower / Upper window、CT、真値が入っていることを確認します。

Lu-177の6つの投影window、HU CT、真値を登録したv0.2.0入力タブ

画面上部の凡例も確認してください。青はファイル読取、緑は自動計算、黒は手入力または既定値、赤は修正が必要な項目です。読み取った値を編集すると、その値は手動入力扱いになり、表示は黒へ戻ります。

「入力を検査・プレビュー」を押す

このボタンによって色々バックグラウンドでチェックしてくれます(ファイルが存在するかに加え、6個の収集windowを読み、行列、投影画素間隔、view数、検出器v方向、開始角、角度刻み、CW / CCW、軌道、view別距離など)。

成功すると「自動確認済み — SIMINDが指定した対応CT」と表示されます。もし失敗失敗した場合は、座標の質問や手入力を促されることがあります。

検査が終わると右側に投影を表示できます。

6 windowの入力検査後にLu-177投影をプレビューした画面

同じタブを下へ進み、撮影条件を確認する

入力単位CPS_PER_MBQ
1 viewの時間30 s
撮影中の平均放射能100 MBq
Primary感度8.6829 cps/MBq
Secondary感度10.6919 cps/MBq
開始角・刻み0°、11.25°
時計回り(CW)OFF、すなわちCCW
距離lu177_208_main.cor
Poissonノイズ付加OFF
CPS_PER_MBQ、30秒、100 MBq、2ピーク感度、11.25度CCW、cor軌道を示す入力タブ下部

CCWの物理角は内部投影角へ自動変換されます。このサンプルは0, -11.25, -22.5, …として投影子へ渡されます。外部の角度ファイルを使えるのはMHD+RAW入力だけで、その場合はファイル内の符号付き内部角をそのまま使用します。Interfile .h00ではヘッダの角度情報を正として扱うため、外部角度ファイルを併用すると安全のため実行を停止します。

2 補正:TEW、AC、PSFを確認する

このサンプルのTEWは、ADDITIVEです。反復中の期待値を投影モデルによる一次光子 + TEW推定散乱として扱います。負の投影値を作らず、Poissonモデルへ散乱項を組み込む設定です。

Primary 208.37 keV

散乱補正TEW、ADDITIVE
Main / Lower / Upper幅41.6 / 17.2 / 17.2 keV
CT減弱補正ON
CTの保存値はHU+1000OFF(このCTは実HU)
CTの位置合わせ方法自動確認済み — SIMINDが指定した対応CT
PSFDISTANCE
穴径 / 穴長 / 固有FWHM0.34 / 4.2 / 0.35 cm
Lu-177 PrimaryのTEW ADDITIVE、SIMIND対応CTの自動確認、CT減弱補正、距離依存PSFを示す補正タブ

Secondary 112.95 keV

同じ補正タブを下へ進みます。SecondaryのMain / Lower / Upper幅は22.6 / 9.7 / 9.7 keV、PSFは距離依存、穴径・穴長・固有FWHMはPrimaryと同じ0.34 / 4.2 / 0.35 cmです。

Lu-177 Secondaryの窓幅と距離依存PSFを示す補正タブ下部

減弱係数は光子エネルギーから内蔵NIST表を両対数補間して計算されます。上級者モードで確認すると、次の値です。

ピークμwaterμbone鉛 μ
208.37 keV0.1350 cm⁻¹0.2472 cm⁻¹10.34 cm⁻¹
112.95 keV0.1644 cm⁻¹0.3328 cm⁻¹46.45 cm⁻¹

通常は書き換えません。施設測定値や鉛以外の隔壁を使用するときだけ、上級者モードで根拠を確認して変更します。

3 再構成

OSEM

条件名Lu177_joint_OSEM_AC_TEW_PSF
格子64×64×64、4.42 mm等方
subset4
最大反復6
64立方4.42 mm、subset 4、最大反復6のLu-177 joint OSEM条件

BSREM

条件名Lu177_joint_BSREM_AC_TEW_PSF
格子64×64×64、4.42 mm等方
subset / 最大反復4 / 6
β / γ0.3 / 12
事前分布RDP、3次元26近傍
subset 4、最大反復6、beta 0.3、gamma 12のLu-177 joint BSREM条件

6反復は短時間の機能デモです。臨床画質を最適化した条件ではありません。状態MAX_ITERATIONSは計算失敗ではなく、指定した上限まで保存したことを表します。

後処理と保存

再構成後フィルタNONE
放射能濃度も保存OFF
CPUスレッド2(上級者OFFでは非表示。JSONに設定済み)
テストの全反復1(上級者OFFでは非表示。JSONに設定済み)
自動保存5分(上級者OFFでは非表示。JSONに設定済み)
フィルタNONE、定量OFF、保存先を示すLu-177サンプルの出力設定

今回は定量出力をOFFにするため、検出器感度校正は空欄のまま進みます。入力タブの8.6829 / 10.6919 cps/MBqは、2ピークの相対スケールを合わせる値です。ここで扱う検出器感度校正は、Bq/mLまたはkBq/mLへ変換する別機能です。

4 実行

  1. 条件一覧にOSEMとBSREMの2条件があることを確認します。
  2. 「CT値も含めて事前チェック」を押し、ERRORが0であることを確認します。
  3. ウィンドウ左下の「全条件をテスト」を押し、両条件が「可」になることを確認します。
  4. 推定メモリ、実測heap、1反復時間を確認して「本番へ進む」を押します。
Lu-177 joint OSEMとBSREMの2条件および深い事前チェック結果
Lu-177 joint OSEMとBSREMの測定テスト後に実行可否とメモリと時間を表示した画面

テスト後に入力ファイルを変更した場合は、全条件テストをやり直してください。

長い計算を安全に止める場合は「保存して一時停止」を使います。「保存した実行を開く・再開」からrunフォルダを選ぶと再開できます。

結果を見る

計算が終わると、状態、反復数、Σfit/Σmeasured、deviance/bin、真値指標が同じタブの下部へ表示されます。

Lu-177 joint OSEMとBSREMの6反復後の結果一覧

「4画像比較」を押すと、OSEMとBSREMを同じ断面、倍率、WW/WLで比較できます。

Lu-177 joint OSEMとBSREMの最終画像を同じ物理位置とWW WLで比較した画面

この条件でOSEMとBSREMがほぼ同じに見えます。

保存ファイル、ライセンス、限界

保存先には実行ごとのrun-…フォルダと、条件ごとのサブフォルダが作られます。

  • reconstruction_job.json:条件一式
  • run_manifest.json:入力SHA-256、解決済み幾何、2ピーク感度比、実行状態
  • 各条件のcondition.json:その条件だけの設定
  • final.mhd+final.raw:後処理NONE時の未フィルタ最終画像
  • convergence.csv:反復ごとの画像変化、適合度、時間
  • result.json:状態、画像一覧、適合度、真値がある場合の画質指標
  • truth_metrics.csv:真値がある場合の最終画質指標

ライセンス

プラグイン本体はApache License 2.0です。ライセンス条件に従って、誰でも利用・改変・再配布できます。ただし無保証であり、使用・改変・計算結果の利用は自己責任です。配布物直下のLICENSEとTHIRD_PARTY_NOTICES.mdを確認してください。

同梱lu177_*はSIMIND V8.0を実行して作成した合成出力です。SIMIND本体やSIMIND付属データベースは同梱していません(二次配布していません)。

ぜひ使ってみてください