3D Slicer
アフィリエイト広告・PR

“Elastix returned non-zero exit status 1″エラーの回避

小倉 淳
記事内に商品プロモーションを含む場合があります

こんにちは、個人事業OguLinks代表の小倉(@jun_ogulinks)です。

3D Slicerのregistration拡張機能の一つにElastixがあります。

相互情報量による2つの画像の位置合わせを行ってくれるものですが、タイトルにある”Elastix returned non-zero exit status 1″エラーがよく発生します。

今回はこのエラーの回避方法について解説します。

スポンサーリンク

3D Slicerの”Elastix returned non-zero exit status 1″エラーの発生条件

このエラーの発生条件はElastixでマスクを適用したときです。

エラーは表示されますが、具体的に何が原因でエラーとなったかは記載がないので、これでは対処のしようがありません。

そんなわけで、よくわからず調べてみたところ以下のコメントを見つけました。

Elastix returned non-zero exit status 1

lassoanさんの回答のうち重要なものをピックアップします。

Masking is only intented for specifying a non-rectangular ROI that is only slightly smaller than the image (e.g., to exclude a surgical tool or excised tissue region from the registration). Instead, the mask is much, much smaller than the cropped image:

マスクは、画像よりわずかに小さい非矩形のROIを指定することのみを意図しています(例えば、手術器具や切除された組織領域を登録から除外する場合)。その代わり、マスクは切り取られた画像よりずっとずっと小さくなります。(DeepL翻訳まま)

ややわかりずらいですが、Elastixによるマスクは入力画像よりもすごく小さくすることは想定していないようです。

また、以下のようにも回答しています。

The registration metric is computed by generating random samples. Samples that fall outside the mask are discarded. If the mask is small (volume of mask is smaller than maybe 50% of the image volume) then many samples are discarded. If too many samples are discarded then you get the sampling error message.

レジストレーションメトリックは、ランダムなサンプルを生成して計算される。マスクの外側にあるサンプルは破棄されます。マスクが小さい場合(マスクの体積が画像体積の50%程度より小さい)、多くのサンプルが破棄されます破棄されるサンプルが多すぎる場合、サンプリングエラーメッセージが表示されます。(DeepL翻訳まま)

この部分はElastixの仕様に関するもので、私はよく理解していません。

ですが、どうやらマスクの体積が画像体積の50%より小さい場合にはエラーとなるようです。

” Elastix returned non-zero exit status 1 ” エラーは、Applyボタンのすぐ下の見える場所に表示されますが、サンプリングエラーメッセージというのは見当たりません。

というわけで、どこにあるのか探してみました。

RandomSamplerのエラー内容と対処方法

3D Slicerのメイン画面の右下にあるエラーログのボタンからログメッセージウィンドウを確認したところ該当しそうなものがありました。

文字が小さくて見づらいですが、上図の赤いマーカーを付けたところは以下のように記載されています。

RandomSampler(0000020F0C2BCA20): Could not find enough image samples within reasonable time. Probably the mask is too small

RandomSampler(0000020F0C2BCA20): 適当な時間内に十分な画像サンプルを見つけることができませんでした。マスクが小さすぎる可能性があります。(DeepL翻訳まま)

3D Slicerエラーログメッセージ、ITK ERROR

ちゃんと書いてありました。

やはり、マスクが小さ過ぎることが原因とのことです。

つまり、このエラーが生じたときの対処方法は、

Point

できるだけマスク領域を広く取る

ということになります。

実際、マスクサイズを大きくするとこのエラーは発生しなくなります。

Elastixが他のレジストレーションツールと比べて優れているのは、fixedとmovingのそれぞれの画像に別々のマスク画像を登録できる点です。

しかし、適切なマスク画像を指定してあげないと、ここで取り上げたエラーが頻発することになります。

上記の回答をしてくれたlassoanさんも、このエラーは良く生じると言っています。

せっかくの素晴らしい機能なのに、仕様を理解していないばっかりに使えないというのはもったいないですね。

Elaxtixの使い方については、また別の記事で書きたいと思います。

PETとCTのような異なるモダリティ画像の位置合わせ(剛体変換)、MRIとMRIなど異なる被験者の非線形レジストレーション(空間標準化、Normalise)が可能です。

無料のツールでここまでできるとはすばらしいです。

Elastix関連記事について期待いただけますと幸いです。

まとめ

“Elastix returned non-zero exit status 1″エラーの回避方法について解説しました。

Elasitxでマスクを適用した際に発生するエラーですが、入力画像に対してマスク領域が小さ過ぎると発生します。

エラーが発生した場合は、できるだけマスク領域を広げて対処するようにしましょう。

ご相談受付中

Pythonのプログラム・GUIアプリケーションを作って仕事の効率化をお手伝いします!

科研費等での支払いにも対応しており、国立・私立大学の先生から複数の受注実績があります。

対応可能かどうかも含めてお気軽に問い合わせページからご相談ください。

OguLInks公式サイトのトップページに簡単な事例紹介もありますのでご参照ください。

【公式サイト】
OguLinks公式サイト
OguLinks公式サイト

Twitterでお得情報をゲットしたい方はフォローいただけると幸いです。

この記事が役に立ったという方、少額の御寄附をいただけますと小倉のモチベーションアップにつながります。

よろしければ以下より寄付いただけますと幸いですm(_ _)m

ここから先は限定公開です

すでに購入済みの方はこちら

ABOUT ME
小倉 淳
小倉 淳
テクニカルフェロー / 個人事業主
国立研究機関(医療系)の非常勤研究職員であり、大学の保健医療学部で非常勤講師として毎年60コマ以上の講義・演習を担当。  

自身のプログラミング技術を活かすため、個人事業OguLinksを立ち上げ、教育・研究機関の研究者を対象にPythonプログラムの開発等を請け負っています。  

臨床検査技師と精神保健福祉士の有資格者。  

経歴等(→ResearchMap)
スポンサーリンク

購読には会員登録が必要です

「半角英数字」と「大文字1個以上」を含む、8文字以上

会員登録には 利用規約/特定商取引法に基づく表記 への同意が必要です。

すでに会員の方はこちら

ログインして記事を読む

メールアドレス
パスワード
パスワードを忘れた方
新規会員登録はこちら

パスワード再設定

パスワードを再設定します。入力したメールアドレスに再設定用のURLをお送りしますので、パスワードの再設定を行なってください。
キャンセル
記事URLをコピーしました