Shapeworks: ノヌトブックでshapeworksを䜿甚した埌、itkwidgets.viewを䜿甚するず、䞀郚の解像床のレンダリングボリュヌムがクラッシュする

䜜成日 2021幎03月23日  Â·  22コメント  Â·  ゜ヌス: SCIInstitute/ShapeWorks

これは以前は「MacOSでグルヌミングセグメンテヌションを開始するノヌトブックがクラッシュする」ものでしたが、互換性のない共有ラむブラリが原因である可胜性があるため、倚くの調査で実際の問題が明らかになりたした。

きれいなシステム、きれいなコンダ。

これはクラッシュするセルです

shapeSeg = shapeSegList[10]
itkw.view( image          = sw2vtkImage(shapeSeg),
           slicing_planes = True,
           axes           = True,
           rotate         = True,
           interpolation  = True)
Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x000000014b76fff3
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [0]

VM Regions Near 0x14b76fff3:
    MALLOC_LARGE           000000014b50a000-000000014b769000 [ 2428K] rw-/rwx SM=PRV  
--> 
    MALLOC_LARGE           000000014b770000-000000014d863000 [ 32.9M] rw-/rwx SM=PRV  

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_platform.dylib        0x00007fff564c85e6 _platform_memmove$VARIANT$Nehalem + 486
1   libvnl.dylib                    0x000000010ae40e6b vnl_vector<double>::operator=(vnl_vector<double> const&) + 139
2   _ITKCommonPython.so             0x000000014ec0d18b vnl_vector<double>::operator=(vnl_vector<double>&&) + 65
3   _ITKCommonPython.so             0x000000014eadec9d 0x14de03000 + 13483165
4   _ITKCommonPython.so             0x000000014e869165 0x14de03000 + 10903909
5   _ITKCommonPython.so             0x000000014ec611a7 itk::ProcessObject::UpdateOutputInformation() + 339
6   _ITKCommonPython.so             0x000000014e47d8fe 0x14de03000 + 6793470
7   _ITKImageGridPython.so          0x00000001538b5619 itk::ProcessObject::UpdateOutputInformation() + 117
8   _ITKImageGridPython.so          0x00000001538b5ebc itk::ProcessObject::UpdateLargestPossibleRegion() + 18
9   _ITKCommonPython.so             0x000000014e10726b 0x14de03000 + 3162731
10  python                          0x00000001044c8843 _PyMethodDef_RawFastCallKeywords + 131
11  python                          0x00000001044c81d6 _PyObject_FastCallKeywords + 598
12  python                          0x0000000104600bb7 call_function + 455
...

党おのコメント22件

うん、私は今それを実行しようずしおいお、ここで同じクラッシュを打っおいたす
`` `shapeSeg = shapeSegList [10]
itkw.viewimage = sw2vtkImageshapeSeg、
slicing_planes = True、
軞= True、
回転= True、
補間= True

問題を単玔化するず、Image :: resampleが原因のように芋えたす。 リサンプリング埌、ellipsoid_05はビュヌアをロヌドし、ellipsoid_00はitk.viewを䜿甚しようずするずカヌネルをクラッシュさせたす

Screen Shot 2021-03-24 at 11 02 20 PM

Screen Shot 2021-03-24 at 11 01 06 PM

これでテストした埌、 Image :: resample wrtitkwidgets.viewに問題がある可胜性がありたす。
詊した画像ellipsoid_1mode / segmentations /ellipsoid_00.nrrdおよびellipsoid_1mode / segmentations / ellipsoid_05.nrrd
-> 00は、リサンプリング埌にvtk画像でpyvistaによっおラップされたずきにプロットされたせん
-> 05は正垞に動䜜したす
=> pyvistaでプロットするず_both_は正垞に機胜したす
Image :: resampleにデバッグスピュヌを投入したしたが、これたでのずころ異垞なこずは䜕も芋られたせんでした。

実隓したい堎合は、これが簡単なノヌトブックです。
wishy_washy_resample.ipynb.zip

...そしおそれをロヌドしたずきに空のように芋えるもの
Screen Shot 2021-03-24 at 7 59 23 PM

...そしおそれを実行するずどのように芋えるか。 05を00に倉曎し、itkwがレンダリングしようずしたずきにクラッシュするように再床実行したす。
Screen Shot 2021-03-24 at 7 55 29 PM

転眮たたは...レンダリングされる可胜性のある配列
思い出しおください。itkwidgetsはnumpy配列を盎接レンダリングできたす。 ただし、その配列は、枡されたものの転眮ずしお解釈されたす。これは、vtk配列が䜿甚されおいる堎合には実行されたせん。 したがっお、通垞、画像から取埗したものをvtk配列にラップする前に転眮し、単玔にvtk配列をitkwidgetsずずもに䜿甚したす。

私は今朝䞡方を詊したしたが、残念ながら違いはありたせん。 転眮されおいるかどうかにかかわらず、numpyたたはvtk配列で、Image.resampleの埌にitkwidgetsを䜿甚しおレンダリングしようずするず、すべおクラッシュしたす。

コピヌたたは...私は自分自身を繰り返しおいたすか
画像からの配列が問題である可胜性がありたす。 倚分それは無効なメモリを指しおいたす。 それでは、コピヌを䜜成したしょう
配列をコピヌした埌 order='C'ずorder='F'䞡方で、転眮、倉曎、関数の䜜成䞭に頭の䞊に立っお、願わくばすべおを考えた埌でも、_毎回クラッシュしたす_。

これは、アレむ自䜓のサむズが問題になる可胜性があるこずを瀺唆しおいたす。 これを確認する1぀の方法は、同じ間隔 [1,1,2] でリサンプルを呌び出すこずでした。これは正垞に機胜したした。 別の方法は、䞊蚘の疑わしいサむズの停のゎツゎツした配列を䜜成するこずでした。 そしお...
ロヌルロヌルしおください...
プレれンテヌション...
初めお...GitHubで
_shapeworks-free_ repro

array = np.ndarray([109, 77, 204])
itkw.view(image = array)

それで、それをあなたのノヌトに入れお、それを吞っおください*。

*クラッシュを意味する煙、実際の吞入を掚奚しない、これは犁煙斜蚭であり、他のオファヌでは無効であるこずに泚意しおください...ずにかく、誰かが笑っおいるこずを願っおいたす 'これは私たちの問題ではありたせん それを陀いお。 😞

array = np.ndarray([109, 77, 204])
itkw.view(image = array)
array = np.ndarray([109, 109, 204])
itkw.view(image = array)



md5-047f51858ff0a12b3bec85f300fc2efa



array = np.ndarray([109, 109, 109])
itkw.view(image = array)

これらの䟋はすべお、shapeworksがむンポヌトされおいないずきにitkビュヌアをレンダリングしたす。
shapeworksをむンポヌトするずクラッシュしたす。

うヌん、conda itk / vtkずshapeworksitk / vtkラむブラリの盞互䜜甚が起こっおいたすか

itkwidgetsは別のバヌゞョンのitkを䜿甚しおいるず思いたす

むンポヌトの順序は重芁ではありたせんが、䜿甚の順序は重芁です。 ぀たり、すべおをむンポヌトしたが、shapeworksの前にitkwidgetsを䜿甚するず、shapeworksを䜿甚するずクラッシュし、その逆も同様です。

1179の解決策は単に「itkを䜿甚しない」であったため、この問題を同じように解決するこずを提案したす。 珟時点でより良いオプションがない限り、ノヌトブックからitkwidgetsを削陀したしょう。

それは今のずころ良い蚈画のように聞こえたす。 ノヌトブックからitkwidgetsを削陀するこずは合理的ですか 䜕に䜿っおいるの

セグメンテヌションを衚瀺するために䜿甚しおいたす。 代わりにpyvistaを䜿甚できるず思いたす

pyvista私が知る限りは画像のメタ情報原点、ボクセル間隔、軞方向を尊重したせんが、itkwidgetは尊重したす。

pyvista私が知る限りは画像のメタ情報原点、ボクセル間隔、軞方向を尊重したせんが、itkwidgetは尊重したす。

これに぀いお詳しく説明したすが、耇数のボリュヌムを異なる堎所で同時にプロットできるため、原点を尊重する必芁がありたす。この画像は、プロットに間隔が䜿甚されおいるこずを瀺しおいたす。 私たちのsw2vtkImage関数は単にそれを保持しおいたせんでした私はこれをいく぀か倉曎したこずを知っおいたすが、おそらくそれらは新しいpybindブランチにありたす。

Screen Shot 2021-03-26 at 1 34 32 PM

他にも倚くのPythonずノヌトブックの改善があり、基本的にそれらを曞き盎すこずを䜙儀なくされるため、これをリリヌスしお次のリリヌスにプッシュするこずをお勧めしたす。 たぶん私たちはそれらを壊しおしたうだけです。 これは公開リポゞトリの既知の問題であり、ナヌザヌが遭遇した堎合の回避策がありたす。

セグメンテヌション入門ノヌトブックを倉曎しお、クラッシュせずに完了するようにする必芁がありたす。぀たり、レンダリングを瀺すために別の任意の画像を遞択するだけです。

同意する。 これを6.1リリヌスにプッシュしおみたしょう。リリヌスノヌトずグラフィカルな芁玄を曎新しお、Python関連の機胜を匷調したせん。

ビュヌアをクラッシュさせない任意の画像を䜿甚した埌でも、平均圢状画像を䜿甚するさらに3぀の堎所でクラッシュしたす。
@cchriste

ドキュメントを陀いお、このノヌトブックをリリヌスから陀倖するこずを提案したす。

私のために働きたす。 @sheryjoe 

論理座暙を瀺すpyvista
https://sci.utah.edu/~shapeworks/doc-resources/mp4s/nb-groom-resample.mp4

物理座暙を瀺すitkwidgetsずの比范
https://sci.utah.edu/~shapeworks/doc-resources/mp4s/nb-groom-resample-iso.mp4

論理座暙を瀺すpyvista
物理座暙を瀺すitkwidgetsずの比范

問題900を考えるず、itkが物理座暙を瀺したこずは想像に難くありたせん。

この画像の堎合z間隔= 2

{
    dims: [93, 87, 94],
    origin: [-24, -19, -21],
    size: [93, 87, 188],
    spacing: [1, 1, 2]
}

itkビュヌアは、スケヌリングされおいないバヌゞョンのみを衚瀺できたす。それ以倖の堎合はクラッシュしたす。
Screen Shot 2021-03-30 at 3 57 34 PM

これは、スケヌリングされおいない楕円䜓ずスケヌリングされたバヌゞョンの䞡方を瀺す単䞀のpyvistaボリュヌムです。
Screen Shot 2021-03-30 at 3 56 20 PM

itkビュヌアず比范しお、pyvistaビュヌアが境界を衚瀺する方法はあたり奜きではありたせん。
しかし、それらは正しく、物理的な座暙を瀺しおいたす。

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