Pyradiomics: マスクず画像が同じDICOMシリヌズから掟生しおいる堎合、なぜゞオメトリの䞍䞀臎が発生するのですか

䜜成日 2019幎04月23日  Â·  13コメント  Â·  ゜ヌス: AIM-Harvard/pyradiomics

こんにちは、

コンテキストずしお、コマンドラむンからPyRadiomicsを正垞に実行するこずができたした。これは、単䞀のむメヌゞマスクペアに察しおだけでなく、さたざたなYAML構成ず同時に数十のむメヌゞマスクペアに察しおバッチ抜出を実行するこずもできたす。 しかし、私は回避方法を知っおいる問題に遭遇したしたが、それがなぜ発生するのかただ興味がありたす。

セットアップ私は、それぞれが512x512ピクセルの寞法の158スラむスの単䞀の患者DICOMシリヌズを持っおいたす。 シリヌズをSlicerにロヌドし、ROI結節の茪郭を描き、バむナリラベルマップを.nrrdファむルずしお゚クスポヌトしたした。 次に、コマンドラむンツヌルdcm2niixを䜿甚しお、同じDICOMシリヌズを.niiボリュヌムに倉換したした。

.niiむメヌゞず.nrrdマスクを䜿甚しおタヌミナルからピラゞオミクスを実行するず、以䞋に説明するようにゞオメトリの䞍䞀臎が発生したす。 マスクず画像ボリュヌムが同じDICOMシリヌズから掟生した堎合、なぜこれが発生するのでしょうか これは予想される発生ですか

前述のように、2぀の解決策は次のずおりです。 1スラむサヌから盎接.niiたたは.nrrdボリュヌムずしおむメヌゞを保存したす。これは正垞に機胜しおいるようです。 2蚱容倀を調敎したすこの解決策では䞍安になりたすが。 最終的には、䜕癟ものDICOMシリヌズの.niiたたは.nrrdボリュヌムぞのバッチ倉換を実行したいず思っおいたす。私はすでにこれらの䜕癟ものシリヌズのマスクを持っおいたす。 そのため、Slicerの代わりにdcm >> niiたたはnrrdからのバッチ倉換にコマンドラむンツヌルを䜿甚したいず思っおいたした。

ご協力ありがずうございたした。

[2019-04-23 16:38:19] E: radiomics.script: Feature extraction failed!
Traceback (most recent call last):
  File "/anaconda3/lib/python3.6/site-packages/pyradiomics-0+unknown-py3.6-macosx-10.7-x86_64.egg/radiomics/imageoperations.py", line 192, in checkMask
    lsif.Execute(imageNode, maskNode)
  File "/anaconda3/lib/python3.6/site-packages/SimpleITK/SimpleITK.py", line 43958, in Execute
    return _SimpleITK.LabelStatisticsImageFilter_Execute(self, *args)
RuntimeError: Exception thrown in SimpleITK LabelStatisticsImageFilter_Execute: /scratch/dashboard/SimpleITK-OSX10.6-x86_64-pkg/SimpleITK-build/ITK-prefix/include/ITK-4.13/itkImageToImageFilter.hxx:241:
itk::ERROR: LabelStatisticsImageFilter(0x7fcd1e601050): Inputs do not occupy the same physical space! 
InputImage Origin: [-1.8200000e+02, 1.6933569e+02, -3.0314999e+02], InputImage_1 Origin: [-1.8200000e+02, -1.7000000e+02, -3.0314999e+02]
    Tolerance: 6.6406202e-07
InputImage Direction: 1.0000000e+00 0.0000000e+00 0.0000000e+00
0.0000000e+00 -1.0000000e+00 0.0000000e+00
0.0000000e+00 0.0000000e+00 1.0000000e+00
, InputImage_1 Direction: 1.0000000e+00 0.0000000e+00 0.0000000e+00
0.0000000e+00 1.0000000e+00 0.0000000e+00
0.0000000e+00 0.0000000e+00 1.0000000e+00

    Tolerance: 1.0000000e-06


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/anaconda3/lib/python3.6/site-packages/pyradiomics-0+unknown-py3.6-macosx-10.7-x86_64.egg/radiomics/scripts/segment.py", line 40, in extractSegment
    feature_vector.update(extractor.execute(imageFilepath, maskFilepath, label))
  File "/anaconda3/lib/python3.6/site-packages/pyradiomics-0+unknown-py3.6-macosx-10.7-x86_64.egg/radiomics/featureextractor.py", line 397, in execute
    boundingBox, correctedMask = imageoperations.checkMask(image, mask, **self.settings)
  File "/anaconda3/lib/python3.6/site-packages/pyradiomics-0+unknown-py3.6-macosx-10.7-x86_64.egg/radiomics/imageoperations.py", line 207, in checkMask
    raise ValueError('Image/Mask geometry mismatch. Potential fix: increase tolerance using geometryTolerance, '
ValueError: Image/Mask geometry mismatch. Potential fix: increase tolerance using geometryTolerance, see Documentation:Usage:Customizing the Extraction:Settings:geometryTolerance for more information

党おのコメント13件

これは、デフォルトの蚱容範囲が厳しすぎるためです。 最も簡単なのは、リサンプリングを有効にするこずです。

@warkentinmatt correctMask有効にしお修正するこずも可胜です。 これにより、画像をリサンプリングせずに、マスク最近傍のリサンプリングが可胜になりたす。 唯䞀の芁件は、マスクの物理的空間が画像内に含たれおいるこずです。

マスクの間隔/方向は画像ず同じですが、サむズず原点が異なりたす。これは、スラむサヌが領域をトリミングし、それに応じお原点を調敎するこずでマスクを保存するためです。 これによりメモリが節玄されたすが、マスクをリサンプリングしおも問題がないこずをPyRadiomicsに通知する必芁がありたす埌者の堎合、画像サむズず䞀臎するたでパディングするだけです。

PyRadiomicsはデフォルトでマスクを修正したせん。これは、PyRadiomicsが実行しおいる远加のステップに察する譊告ずしお機胜するためです。

お返事ありがずうございたす。

@JoostJMでは、コメントを確実に理解するために、SlicerがNRRDラベルマップを゚クスポヌト/保存するず、ROIの範囲でサむズが

たた、バむナリマスクのリサンプリングで䜕が達成されるかに぀いおも明確です。ROIが画像の䞭倮にある堎合したがっお、配列の䞭倮に数癟/千の「1」が含たれおいる堎合、そのリサンプリングはボリュヌムの境界にあるマスクの最も近い隣人は、基本的にマスクに0を埋めおいたすか これは正しい解釈ですか

ご協力ありがずうございたした。

では、コメントを確実に理解するために、スラむサヌがNRRDラベルマップを゚クスポヌト/保存するず、ROIの範囲でサむズがトリミングされたすか

はい、これは可胜です。Nrrdファむルには起点、぀たり最初のボクセルの物理的な堎所も含たれおいるためです。
Nrrdには方向ず間隔に関する情報も含たれおいるため、ピクセルサむズが異なる画像や回転した画像で䜜成されたセグメンテヌションでもオヌバヌラップできたす。
これは、numpy配列がこの幟䜕孊的情報を含たないため、PyRadiomicsぞの入力ずしお受け入れられない理由でもありたす。

たた、バむナリマスクのリサンプリングで䜕が達成されるかに぀いおも明確です。ROIが画像の䞭倮にある堎合したがっお、配列の䞭倮に数癟/千の「1」が含たれおいる堎合、そのリサンプリングはボリュヌムの境界にあるマスクの最も近い隣人は、基本的にマスクに0を埋めおいたすか これは正しい解釈ですか

正しい

スラむサヌでシヌンをクリアし、DICOMシリヌズを再むンポヌトしおから、NRRDマスクをロヌドするず、マスクはCTの適切な解剖孊的䜍眮に重ねられたす。 私には、これはCTの元の寞法がマスクで維持されおいるこずを意味するず思いたした。 スラむサヌは、CTでマスクを適切に䜍眮合わせするのに十分賢い぀たり、適切なメタデヌタを䜿甚するのでしょうか

マスクは、マスク境界ボックスのサむズの画像のサブ領域に察応できたす。 画像ず同じサむズである必芁はありたせん。 ディメンションが䞀臎するかどうかは、スラむサヌでセグメンテヌションを䜜成する方法ず、それを゚クスポヌトする方法によっお異なりたす。 寞法を確実に䞀臎させる方法の詳现が必芁な堎合は、お知らせください。

゚ラヌをもう䞀床芋おみるず初めお電話をちらっず芋たずき、違いは次のずおりです。

InputImage Origin: [-1.8200000e+02, 1.6933569e+02, -3.0314999e+02], 
InputImage_1 Origin: [-1.8200000e+02, -1.7000000e+02, -3.0314999e+02]
    Tolerance: 6.6406202e-07

InputImage Direction: 1.0000000e+00 0.0000000e+00 0.0000000e+00
0.0000000e+00 -1.0000000e+00 0.0000000e+00
0.0000000e+00 0.0000000e+00 1.0000000e+00
, 

InputImage_1 Direction: 1.0000000e+00 0.0000000e+00 0.0000000e+00
0.0000000e+00 1.0000000e+00 0.0000000e+00
0.0000000e+00 0.0000000e+00 1.0000000e+00

そのため、原点の絶察倀がわずかにずれおいるそしおその差がデフォルトの蚱容倀よりも倧きい状況がありたすが、䞀方の画像の向きがもう䞀方の画像ず比范しおYで反転しおいる堎合もありたす。 これは、蚱容倀を枛らしお問題を解決するこずはできず、マスクたたは画像のいずれかをリサンプリングする必芁があるこずを意味したす。 このリサンプリングはピクセル倀を倉曎するべきではありたせんが、効果的に方向を倉える操䜜になりたす。

@JoostJM返信ありがずうございたす、ありがずうございたした。

@fedorovマスクたたは画像をリサンプリングするず、Yが䞀方が他方に察しお反転するずいう問題をどのように解決できたすか これは私には明らかではありたせん。 私の理解では、同じサむズ/寞法を確保するためにリサンプリングが䜿甚されたした。

寞法を確実に䞀臎させる方法の詳现が必芁な堎合は、お知らせください。

はい、寞法を確実に䞀臎させる方法に぀いお詳しく知りたいです。 どうぞよろしくお願いしたす。

実際、私たちが議論したこれらの抂念のいく぀か぀たり、間隔、方向、原点の理解を深めるこずができる情報やリ゜ヌスがあればいいのですが。 玠朎に蚀えば、画像の原点は[0,0,0]の[x、y、z]座暙、぀たり画像配列の「コヌナヌ」の1぀右前䞊だず思うかもしれたせん。 。 ログに衚瀺される原点の倀には、具䜓的な解釈ミリメヌトルなどがありたすか これらの数字は䜕を衚しおいたすか 私の無知を蚱しおください。私はむメヌゞング/ラゞオミクスのすべおに぀いお独孊で孊んでいたすが、物事を機胜させるための゜リュヌションを実装するだけでなく、これらの抂念を理解したいず思いたす。

@warkentinmattすべおの質問に぀いお心配する

マスクたたは画像をリサンプリングするず、Yが䞀方が他方に察しお反転するずいう問題をどのように解決できたすか

画像の方向は、基本的に、画像配列IJKの座暙系を解剖孊的空間XYZに回転させる倉換です。

以䞋の簡単な1Dの䟋では、「配列むンデックス」は1d配列の座暙系であり、巊右は1d䞖界の物理空間の座暙系です。 Image2では、配列内の倀の順序は物理座暙系の軞の方向ず反察です。぀たり、ボクセルの配列の方向が異なりたす。 リサンプリングは、配列のサむズ、方向、原点によっお定矩された画像のゞオメトリを取埗し、参照ゞオメトリのボクセルで別の画像から倀をサンプリングしたす。

image

これは理にかなっおいたすか

3Dスラむサヌからラベルを゚クスポヌトする際に寞法が䞀臎するようにする方法の詳现が必芁な堎合は、お知らせください。
はい、寞法を確実に䞀臎させる方法に぀いお詳しく知りたいです。 どうぞよろしくお願いしたす。

3Dスラむサヌからラベルマップ事実䞊バむナリむメヌゞにセグメントを゚クスポヌトする方法に぀いおは、以䞋のスクリヌンショットを参照しおください。 この手順に埓ったずしおも、デフォルトの蚱容倀が厳しすぎるため、ゞオメトリの䞍䞀臎が発生する可胜性はありたせん。 ただし、画像配列の向きは同じである必芁がありたす。

image

実際、私たちが議論したこれらの抂念のいく぀か぀たり、間隔、方向、原点の理解を深めるこずができる情報やリ゜ヌスがあればいいのですが。 玠朎に蚀えば、画像の原点は[0,0,0]の[x、y、z]座暙、぀たり画像配列の「コヌナヌ」の1぀右前䞊だず思うかもしれたせん。 。 ログに衚瀺される原点の倀には、具䜓的な解釈ミリメヌトルなどがありたすか これらの数字は䜕を衚しおいたすか 私の無知を蚱しおください。私はむメヌゞング/ラゞオミクスのすべおに぀いお独孊で孊んでいたすが、物事を機胜させるための゜リュヌションを実装するだけでなく、これらの抂念を理解したいず思いたす。

圹立぀ず思われるリ゜ヌスを次に瀺したす。

お圹に立おれば

@fedorovこれらの抂念を説明するために時間を

したがっお、リサンプリングには、2぀のボリュヌム間の幟䜕孊的配眮を確保するための2぀の重芁であるが異なる圹割があるように思われたす。

1たず、必芁に応じお、最も近いものなどを䜿甚しお、参照ボリュヌムず同じサむズ/次元に䞀臎するたで小さいボリュヌムをパディングしたす。

2次に、サむズが䞀臎したら、原点、方向、間隔の情報を䜿甚しおボクセルをサンプリングし、解剖孊的/物理的䜍眮合わせにある2぀のボリュヌムにも同じ方法でむンデックスが付けられるようにしたす぀たり、配列むンデックスの䜍眮合わせ。 。

これは、リサンプリングの圹割の公正な芁玄でしょうか

たた、これらのリ゜ヌスを共有しおいただきありがずうございたす。理解を深めるために、これらのリ゜ヌスを掻甚できるこずを楜しみにしおいたす。

@warkentinmatt 、ほが。 手順1ず2は同時に行われたす。 発生するのは、物理空間でポむントのグリッドを定矩し、それらのポむントで画像をサンプリングするこずです。 新しいグリッドポむントが既存のグリッドポむントず正確に䞀臎しない堎合、画像の呚囲の元のポむントピクセルに基づいお、補間アルゎリズムを䜿甚しお新しい倀が蚈算されたす。

IBSIドキュメントの補間に関するセクションにも詳现な説明がありたす。 これには、リサンプリンググリッドを瀺す画像も含たれおい

@fedorov @JoostJMこの問題が

したがっお、この問題を匕き起こした䟋では、マスクは特城抜出に䜿甚されおいたのず同じ画像から掟生したため、間隔は同じでした。 蚀い換えるず、マスクたたは画像のいずれかのx、y、z方向のボクセル䜍眮の1単䜍の倉化は、同じ物理的倉化の解釈をもたらしたす。 マスクず画像の間隔が同じ堎合、「ギャップを埋める」ために補間は必芁ありたせんよね したがっお、マスクをリサンプリングするず、ボリュヌムの䞡方の次元に関しお画像ずの幟䜕孊的䞀臎が保蚌されるだけでなく、物理的に䜍眮合わせされおいる䞡方のボリュヌムも同じ方法で方向ず原点に関しお配列むンデックスが䜜成されたす。 。 私はこれを最終的に正しくしたしたか

2぀のボリュヌム間で間隔が同じでない堎合は、2぀のボリュヌムを幟䜕孊的に配眮するために、ボクセルを補間する必芁がありたす。 たずえば、画像の間隔が[1mm、1mm、1mm]で、マスクが[2mm、2mm、2mm]の堎合、物理的な間隔の「ギャップを埋める」ためにマスクのボクセルを補間する必芁がありたす。

あなたのご芪切に感謝したす。 それはすべおの違いをもたらしたした。

@warkentinmattはい、これは理にかなっおいたす、私はあなたがそれを正しく理解したず思いたす

リサンプリングに関連するもう1぀の䟿利なリ゜ヌスは、次のペヌゞです https //www.slicer.org/wiki/RegistrationResampling

@fedorov玠晎らしい。 あなたのご芪切に感謝したす。

これは時間や堎所ではないかもしれたせんが、あなたはボストンを拠点ずしおいるず私は理解しおいたす。 珟圚、私はトロントで博士号を取埗しおいたすが、ボストンに移動するのは、HSPHの生物統蚈孊郚の研究員ずしお2週間です。 興味があり、時間があれば、盎接連絡を取り、おそらくこれらの䌚話のいく぀かを続けたいず思いたす。 いずれにせよ、あなたの助けは倧いに感謝されおいたす。

確かに、接続しお、ピラディオミクスの䜿甚方法に぀いお詳しく孊んでください。 メヌルを送っおください私のgithubプロファむルで公開されおいたす。コヌヒヌを飲みに䌚うこずができたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡