Shapeworks: volume rendering dari beberapa resolusi mengalami error saat menggunakan itkwidgets.view setelah menggunakan shapework di notebook

Dibuat pada 23 Mar 2021  ·  22Komentar  ·  Sumber: SCIInstitute/ShapeWorks

Ini dulunya adalah "notebook mogok saat memulai dengan perawatan-perawatan-segmentasi di MacOS", tetapi banyak penyelidikan telah mengungkap masalah sebenarnya, mungkin karena perpustakaan bersama yang tidak kompatibel.

Sistem bersih, konda bersih.

Ini adalah sel yang rusak:

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
...
bug

Semua 22 komentar

Ya, saya mencoba menjalankannya sekarang dan mengalami kecelakaan yang sama, di sini:
`` shapeSeg = shapeSegList [10]
itkw.view (image = sw2vtkImage (shapeSeg),
slicing_planes = Benar,
sumbu = Benar,
rotate = True,
interpolasi = Benar)

Sederhanakan masalah dan sepertinya Image :: resample adalah penyebabnya di sini. Setelah pengambilan sampel ulang, ellipsoid_05 memuat penampil sementara ellipsoid_00 menyebabkan kernel mogok saat mencoba menggunakan itk.view ()

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

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

Setelah menguji ini, ada _mungkin_ salah dengan Image :: resample wrt itkwidgets.view .
Gambar yang dicoba: ellipsoid_1mode / segmentations / ellipsoid_00.nrrd dan ellipsoid_1mode / segmentations / ellipsoid_05.nrrd
-> 00 gagal diplot saat dibungkus oleh pyvista dalam gambar vtk setelah pengambilan sampel ulang
-> 05 bekerja dengan baik
=> _both_ berfungsi dengan baik jika diplot oleh pyvista
Saya melemparkan beberapa debug yang dimuntahkan ke Image :: resample dan sejauh ini tidak melihat ada yang luar biasa).

Berikut buku catatan sederhana jika Anda ingin bereksperimen.
wishy_washy_resample.ipynb.zip

... dan tampilannya kosong saat Anda memuatnya:
Screen Shot 2021-03-24 at 7 59 23 PM

... dan bagaimana tampilannya saat Anda menjalankannya. Ubah 05 menjadi 00 dan jalankan lagi agar macet saat itkw mencoba merender.
Screen Shot 2021-03-24 at 7 55 29 PM

Mengubah urutan atau ... Array yang Bisa Diberikan
Jika Anda ingat, itkwidgets dapat membuat array numpy secara langsung. Tapi itu menafsirkan array itu sebagai transpos dari apa yang dilewatkan, sesuatu yang _not_ lakukan ketika array vtk digunakan. Oleh karena itu kami biasanya mentranspos apa yang kami dapatkan dari gambar sebelum membungkusnya dalam larik vtk, dan cukup menggunakan larik vtk dengan itkwidgets untuk menyederhanakannya.

Saya mencoba keduanya pagi ini dan sayangnya tidak ada bedanya. Ditransposisikan atau tidak, array numpy atau vtk, semuanya macet saat mencoba merender menggunakan itkwidgets setelah Image.resample.

Salin atau ... Apakah Saya Mengulangi Diri Sendiri?
Array yang berasal dari Image mungkin menjadi masalahnya. Mungkin itu menunjuk ke memori yang tidak valid. Jadi, mari buat salinannya!
Setelah menyalin array - di order='C' dan order='F' , mengubah posisi, memodifikasi, berdiri di atas kepala saya saat menyusun fungsi, dan berharap memikirkan semuanya, _itu masih macet setiap kali_.

Ini menunjukkan bahwa ukuran array itu sendiri mungkin menjadi masalah. Salah satu cara untuk mengonfirmasi hal ini adalah dengan memanggil sampel ulang dengan jarak yang sama ( [1,1,2] ), _yang berfungsi dengan baik_. Cara lain adalah membuat larik numpy palsu dengan ukuran yang dipertanyakan tersebut. Dan...
Tolong drum roll ...
menyajikan ...
untuk pertama kalinya ... (di GitHub)
Repro _bentuk-karya_!

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

Jadi letakkan itu di buku catatan Anda dan isap * itu.

* asap menyiratkan tabrakan, tidak menganjurkan untuk menghirup apa pun yang sebenarnya, perhatikan ini adalah fasilitas bebas rokok, tidak berlaku dengan tawaran lain, ... bagaimanapun, saya harap seseorang tersenyum, karena ini bukan masalah kami! Kecuali memang begitu. 😞

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)

Semua contoh ini membuat penampil itk saat bentuk tidak diimpor.
Ini macet saat shapework diimpor.

Hmm, apakah kita memiliki beberapa interaksi library conda itk / vtk vs shapeworks itk / vtk?

Saya kira itkwidgets menggunakan versi lain dari itk

Urutan impor tidak penting, tapi urutan pemakaiannya. Ini berarti jika Anda mengimpor semuanya, tetapi menggunakan itkwidgets sebelum shapeworks, itu macet saat Anda menggunakan shapework, dan sebaliknya.

Karena solusi untuk # 1179 hanyalah "jangan gunakan itk", saya sarankan agar kami menyelesaikan masalah ini dengan cara yang sama. Kecuali jika ada opsi yang lebih baik saat ini, mari kita hapus widget itk dari notebook kita.

Kedengarannya seperti rencana yang bagus untuk saat ini. Apakah masuk akal untuk menghapus itkwidgets dari notebook? Untuk apa kami menggunakannya?

Kami menggunakannya untuk melihat segmentasi. Saya pikir kita bisa menggunakan pyvista sebagai gantinya

Perhatikan bahwa pyvista (sejauh yang saya tahu) tidak menghormati informasi meta gambar (asal, jarak voxel, arah sumbu), namun itkwidget tidak.

Perhatikan bahwa pyvista (sejauh yang saya tahu) tidak menghormati informasi meta gambar (asal, jarak voxel, arah sumbu), namun itkwidget tidak.

Kami akan menggali ini, tetapi harus ada rasa hormat untuk asal karena beberapa volume dapat secara bersamaan diplot dengan lokasi yang berbeda, dan gambar ini menunjukkan bahwa jarak digunakan untuk membuat plot. Fungsi sw2vtkImage kami tidak menyimpannya (saya tahu saya mengubah ini di beberapa, tapi mungkin mereka ada di cabang pybind baru).

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

Saya ingin menyarankan kami merilis dan mendorong ini ke rilis berikutnya karena yang satu memiliki banyak perbaikan python dan notebook lainnya, dan pada dasarnya kami akan dipaksa untuk menulis ulang mereka. Mungkin kita akan membiarkannya dihancurkan. Ini adalah masalah umum di repositori publik dan kami memiliki solusi jika ada pengguna yang mengalaminya.

(Kami masih perlu memodifikasi buku catatan mulai-mulai-dengan-segmentasi sehingga selesai tanpa mogok, yang berarti memilih gambar arbitrer yang berbeda untuk mendemonstrasikan rendering.)

Saya setuju. Mari dorong ini ke rilis 6.1 dan saya akan memperbarui catatan rilis dan abstrak grafis untuk mengurangi penekanan pada hal-hal python.

Setelah menggunakan gambar sewenang-wenang yang tidak merusak penampil, gambar itu masih mogok di 3 tempat lagi yang menggunakan gambar bentuk rata-rata.
@bayu_joo

Saya mengusulkan agar kami mengecualikan notebook ini dari rilis kecuali dalam dokumentasi.

Bekerja untuk saya. @heryoe ?

pyvista menunjukkan koordinat logis
versus widget itk yang menunjukkan koordinat fisik

Mengingat masalah # 900, sulit membayangkan itk pernah menunjukkan koordinat fisik.

Untuk gambar ini (dengan z-spacing = 2):

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

Penampil itk hanya dapat menampilkan versi tidak berskala karena jika tidak maka macet.
Screen Shot 2021-03-30 at 3 57 34 PM

Berikut adalah satu volume pyvista yang menampilkan ellipsoid yang tidak berskala dan versi yang diskalakan.
Screen Shot 2021-03-30 at 3 56 20 PM

Saya tidak terlalu suka cara penampil pyvista menunjukkan batasan dibandingkan dengan penampil itk.
Tapi mereka benar, dan mereka menunjukkan koordinat fisik.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat