Π Π°Π½ΡΡΠ΅ ΡΡΠΎ Π±ΡΠ»ΠΈ Β«ΡΠ±ΠΎΠΈ Π² ΡΠ°Π±ΠΎΡΠ΅ Π·Π°ΠΏΠΈΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠΈ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Π½Π° 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
...
ΠΠ³Π°, Ρ ΠΏΡΡΠ°ΡΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ±ΠΎΠΉ, Π²ΠΎΡ Π·Π΄Π΅ΡΡ:
`` shapeSeg = shapeSegList [10]
itkw.view (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ = sw2vtkImage (shapeSeg),
Sling_planes = ΠΠ΅ΡΠ½ΠΎ,
ΠΎΡΠΈ = ΠΡΡΠΈΠ½Π°,
rotate = True,
ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ = ΠΡΡΠΈΠ½Π°)
Π£ΠΏΡΠΎΡΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π² ΡΡΠΎΠΌ Π²ΠΈΠ½ΠΎΠ²Π°Ρ Image :: resample. ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ ellipsoid_05 Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, Π° ellipsoid_00 Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ±ΠΎΠΉ ΡΠ΄ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ itk.view ()
ΠΠΎΡΠ»Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎ-ΡΠΎ _ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΡΠ°ΠΊ Ρ Image :: resample wrt
ΠΡΠΎΠ±Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: ellipsoid_1mode / segmentations / ellipsoid_00.nrrd ΠΈ ellipsoid_1mode / segmentations / ellipsoid_05.nrrd
-> 00 Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° pyvista ΠΎΠ±Π΅ΡΡΡΠ²Π°Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ vtk ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ
-> 05 ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
=> _both_ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pyvista
Π― Π²ΡΠΏΠ»Π΅ΡΠ½ΡΠ» ΠΎΡΠ»Π°Π΄ΠΊΡ Π² Image :: resample ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ²ΠΈΠ΄Π΅Π» Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ).
ΠΠΎΡ ΠΏΡΠΎΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΠ½Π°Ρ ΠΊΠ½ΠΈΠΆΠΊΠ°, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ.
wishy_washy_resample.ipynb.zip
... ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΡΡΡΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΅Π³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΠ΅:
... ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ 05 Π½Π° 00 ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ½ΠΎΠ²Π°, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π²ΡΠ»Π΅ΡΠ΅Π», ΠΊΠΎΠ³Π΄Π° itkw ΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³.
Π’ΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ... ΠΠ°ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, itkwidgets ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ² numpy. ΠΠΎ ΠΎΠ½ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠ°ΠΊ ΡΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ, ΡΠ΅Π³ΠΎ ΠΎΠ½ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² vtk. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΡΠ΅ΠΌ ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠ±Π΅ΡΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΌΠ°ΡΡΠΈΠ² vtk, ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² vtk Ρ itkwidgets, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ.
Π― ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΈ ΡΠΎ, ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΌ, ΠΈ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’ΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ, ΠΌΠ°ΡΡΠΈΠ²Ρ numpy ΠΈΠ»ΠΈ vtk, Π²ΡΠ΅ ΡΡΠΎ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ itkwidgets ΠΏΠΎΡΠ»Π΅ Image.resample.
ΠΠΎΠΏΠΈΡ ΠΈΠ»ΠΈ ... Π― ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡ?
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, ΠΈΡΡ
ΠΎΠ΄ΡΡΠ΅ΠΌ ΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΡΠ°ΠΊ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΠΏΠΈΡ!
ΠΠΎΡΠ»Π΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° - ΠΊΠ°ΠΊ Π² order='C'
ΠΈ Π² order='F'
, ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΡΡΠΎΡ Π½Π° Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΆΠ΅Π»Π°ΡΡΠ΅ΠΌ ΠΎΠ±Π΄ΡΠΌΡΠ²Π°Ρ Π²ΡΠ΅ ΡΡΠΎ, _ ΠΎΠ½ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·_.
ΠΡΠΎ Π½Π°Π²ΠΎΠ΄ΠΈΠ»ΠΎ Π½Π° ΠΌΡΡΠ»Ρ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΡΡΠΎ - Π²ΡΠ·Π²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ Π²ΡΠ±ΠΎΡΠΊΡ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ ( [1,1,2]
), _ ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π» Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ_. ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± - ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠΌΠ½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. Π...
ΠΠ°ΡΠ°Π±Π°Π½, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ...
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ ...
Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π² ΠΆΠΈΠ·Π½ΠΈ ... (Π² GitHub)
Π Π΅ΠΏΡΠΎ Π±Π΅Π· _shapeworks_!
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)
ΠΡΠ΅ ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° itk, ΠΊΠΎΠ³Π΄Π° shapeworks Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΠ½ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅ ΡΠΈΠ³ΡΡ.
Π₯ΠΌ, Ρ Π½Π°Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ conda itk / vtk ΠΈ shapeworks itk / vtk?
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ itkwidgets ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄ΡΡΠ³ΡΡ Π²Π΅ΡΡΠΈΡ itk
ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π΅ Π²Π°ΠΆΠ΅Π½, Π½ΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ Π²ΡΠ΅, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ itkwidgets Π΄ΠΎ shapeworks, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ shapeworks ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ±ΠΎΠΉ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ # 1179 Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎ Β«Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ itkΒ», Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠ»ΠΈ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅Ρ Π»ΡΡΡΠ΅Π³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π°Π»ΠΈΠΌ itkwidgets ΠΈΠ· Π½Π°ΡΠΈΡ Π·Π°ΠΏΠΈΡΠ½ΡΡ ΠΊΠ½ΠΈΠΆΠ΅ΠΊ.
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎ Π·Π²ΡΡΠΈΡ ΠΊΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΏΠ»Π°Π½. Π Π°Π·ΡΠΌΠ½ΠΎ Π»ΠΈ ΡΠ±ΠΈΡΠ°ΡΡ itkwidgets Ρ Π½ΠΎΡΡΠ±ΡΠΊΠΎΠ²? ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΠΌΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ?
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ². Π― Π΄ΡΠΌΠ°Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ pyvista Π²ΠΌΠ΅ΡΡΠΎ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ pyvista (Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ) Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΠΎΠΊΡΠ΅Π»ΡΠΌΠΈ, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ΅ΠΉ), Π½ΠΎ itkwidget ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ pyvista (Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ) Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΠΎΠΊΡΠ΅Π»ΡΠΌΠΈ, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ΅ΠΉ), Π½ΠΎ itkwidget ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ.
ΠΡ ΡΠ³Π»ΡΠ±ΠΈΠΌΡΡ Π² ΡΡΠΎ, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π² ΡΠ°Π·Π½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ , ΠΈ ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π». ΠΠ°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ sw2vtkImage ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ Π΅Π³ΠΎ (Ρ Π·Π½Π°Ρ, ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ», Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ pybind).
Π― Ρ ΠΎΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Π²ΡΠΏΡΡΡΠΈΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΡΡΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠΏΡΡΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π½Π΅ΠΌ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ 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-spacing = 2):
{
dims: [93, 87, 94],
origin: [-24, -19, -21],
size: [93, 87, 188],
spacing: [1, 1, 2]
}
Π‘ΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° itk ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΠ±ΠΎΠΉ.
ΠΠΎΡ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΌ pyvista, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠ°ΠΊ Π½Π΅ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ»Π»ΠΈΠΏΡΠΎΠΈΠ΄, ΡΠ°ΠΊ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ.
ΠΠ½Π΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π½ΡΠ°Π²ΠΈΡΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΠΌΠΎΡΡΠ° pyvista ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π³ΡΠ°Π½ΠΈΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° itk.
ΠΠΎ ΠΎΠ½ΠΈ Π²Π΅ΡΠ½Ρ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ.