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 (์ด๋ฏธ์ง€ = sw2vtkImage (shapeSeg),
slicing_planes = True,
์ถ• = True,
rotate = 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 wrt itkwidgets.view ์—์„œ ๋ญ”๊ฐ€ _may_ ์ž˜๋ชป ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹œ๋„ํ•œ ์ด๋ฏธ์ง€ : ellipsoid_1mode / segmentations / ellipsoid_00.nrrd ๋ฐ ellipsoid_1mode / segmentations / ellipsoid_05.nrrd
-> ๋ฆฌ์ƒ˜ํ”Œ๋ง ํ›„ vtk ์ด๋ฏธ์ง€์—์„œ pyvista๋กœ ๋ž˜ํ•‘ ํ•  ๋•Œ 00์ด ํ”Œ๋กฏ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
-> 05๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
=> _both_ pyvista๊ฐ€ ํ”Œ๋กœํŒ… ํ•  ๋•Œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” 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 ๋ฐฐ์—ด์ด ์‚ฌ์šฉ๋  ๋•Œ _not_ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ฏธ์ง€์—์„œ ์–ป์€ ๊ฒƒ์„ vtk ๋ฐฐ์—ด๋กœ ๋ž˜ํ•‘ํ•˜๊ธฐ ์ „์— ์ „์น˜ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด itkwidget๊ณผ ํ•จ๊ป˜ vtk ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์˜ค๋Š˜ ์•„์นจ์— ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•ˆํƒ€๊น๊ฒŒ๋„ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ „์น˜ ์—ฌ๋ถ€, numpy ๋˜๋Š” vtk ๋ฐฐ์—ด, Image.resample ํ›„ itkwidget์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”๋งํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ชจ๋‘ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

๋ณต์‚ฌ ๋˜๋Š” ... ๋‚ด๊ฐ€ ๋ฐ˜๋ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?
์ด๋ฏธ์ง€์—์„œ ์˜ค๋Š” ๋ฐฐ์—ด์ด ๋ฌธ์ œ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค!
๋ฐฐ์—ด์„ ๋ณต์‚ฌ ํ•œ ํ›„- order='C' ๋ฐ order='F' , ์ „์น˜, ์ˆ˜์ •, ํ•จ์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋™์•ˆ ๋‚ด ๋จธ๋ฆฟ์†์— ์„œ์„œ ์›ํ•˜๋Š”๋Œ€๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋ฉด _ ๋งค๋ฒˆ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค _.

์ด๊ฒƒ์€ ์–ด๋ ˆ์ด ์ž์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ์„ ์‹œ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™•์ธํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ๋™์ผํ•œ ๊ฐ„๊ฒฉ ( [1,1,2] )์œผ๋กœ resample์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์˜์‹ฌ์Šค๋Ÿฌ์šด ํฌ๊ธฐ์˜ ๊ฐ€์งœ numpy ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณผ...
๋“œ๋Ÿผ ๋กค์ฃผ์„ธ์š” ...
๋ฐœํ‘œ ์ค‘ ...
์ฒ˜์Œ์œผ๋กœ ... (GitHub์—์„œ)
_shapeworks-free_ ์žฌํ˜„!

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-4cc2d721c025590189ee5dc5f8b003ee



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

์ด ๋ชจ๋“  ์˜ˆ์ œ๋Š” shapeworks๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€ ์•Š์„ ๋•Œ itk ๋ทฐ์–ด๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
shapeworks๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

ํ , conda itk / vtk ๋Œ€ shapeworks itk / vtk ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒํ˜ธ ์ž‘์šฉ์ด ์ง„ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

itkwidgets๊ฐ€ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ itk๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ˆ˜์ž… ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์šฉ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ ์˜ค์ง€๋งŒ shapeworks ์ „์— itkwidget์„ ์‚ฌ์šฉํ•˜๋ฉด shapeworks๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๊ณ  ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

# 1179์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๋‹จ์ˆœํžˆ "itk๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค"์˜€์œผ๋ฏ€๋กœ์ด ๋ฌธ์ œ๋ฅผ ๋™์ผํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋” ๋‚˜์€ ์˜ต์…˜์ด์—†๋Š” ํ•œ ๋…ธํŠธ๋ถ์—์„œ itkwidget์„ ์ œ๊ฑฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” ์ข‹์€ ๊ณ„ํš ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋…ธํŠธ๋ถ์—์„œ itkwidget์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ฌด์—‡์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ์„ธ๋ถ„ํ™”๋ฅผ๋ณด๊ธฐ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  pyvista๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

pyvista (๋‚ด๊ฐ€ ์•„๋Š” ํ•œ)๋Š” ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€ ์ •๋ณด (์›์ , ๋ณต์…€ ๊ฐ„๊ฒฉ, ์ถ• ๋ฐฉํ–ฅ)๋ฅผ ์กด์ค‘ํ•˜์ง€ ์•Š์ง€๋งŒ itkwidget์€ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

pyvista (๋‚ด๊ฐ€ ์•„๋Š” ํ•œ)๋Š” ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€ ์ •๋ณด (์›์ , ๋ณต์…€ ๊ฐ„๊ฒฉ, ์ถ• ๋ฐฉํ–ฅ)๋ฅผ ์กด์ค‘ํ•˜์ง€ ์•Š์ง€๋งŒ itkwidget์€ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ํŒŒํ—ค์น  ๊ฒƒ์ด์ง€๋งŒ, ์—ฌ๋Ÿฌ ๋ณผ๋ฅจ์ด ๋‹ค๋ฅธ ์œ„์น˜์— ๋™์‹œ์— ํ”Œ๋กœํŒ… ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›์‚ฐ์ง€์— ๋Œ€ํ•œ ์–ด๋Š ์ •๋„์˜ ์กด์ค‘์ด ์žˆ์–ด์•ผํ•˜๋ฉฐ,์ด ์ด๋ฏธ์ง€๋Š” ํ”Œ๋กœํŒ…์— ๊ฐ„๊ฒฉ์ด ์‚ฌ์šฉ๋จ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ sw2vtkImage ํ•จ์ˆ˜๋Š” ๋‹จ์ˆœํžˆ ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (์ผ๋ถ€์—์„œ๋Š” ์ด๊ฒƒ์„ ๋ณ€๊ฒฝํ–ˆ์ง€๋งŒ ์•„๋งˆ๋„ ์ƒˆ๋กœ์šด pybind ๋ธŒ๋žœ์น˜์—์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

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

๋‚˜๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ํŒŒ์ด์ฌ ๋ฐ ๋…ธํŠธ๋ถ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉฐ ๋ณธ์งˆ์ ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฆด๋ฆฌ์Šคํ•˜๊ณ  ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋กœ ํ‘ธ์‹œํ•˜๋„๋ก ์ œ์•ˆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์ €์žฅ์†Œ์˜ ์•Œ๋ ค์ง„ ๋ฌธ์ œ์ด๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€์ด ๋ฌธ์ œ์— ๋ถ€๋”ช ํž ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

(์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ถฉ๋Œ์—†์ด ์™„๋ฃŒ๋˜๋„๋ก ์„ธ๊ทธ๋จผํŠธ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ๋…ธํŠธ๋ถ์„ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ Œ๋”๋ง์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์ž„์˜์˜ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.)

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค. ์ด๊ฒƒ์„ 6.1 ๋ฆด๋ฆฌ์Šค๋กœ ํ‘ธ์‹œํ•˜๊ณ  ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์™€ ๊ทธ๋ž˜ํ”ฝ ์š”์•ฝ์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํŒŒ์ด์ฌ ๊ด€๋ จ ๋‚ด์šฉ์„ ๋œ ๊ฐ•์กฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ทฐ์–ด๋ฅผ ์ถฉ๋Œ์‹œํ‚ค์ง€ ์•Š๋Š” ์ž„์˜์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•œ ํ›„์—๋„ ํ‰๊ท  ๋ชจ์–‘ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 3 ๊ฐœ ์œ„์น˜์—์„œ ์—ฌ์ „ํžˆ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.
๋ฟก๋ฟก

๋ฌธ์„œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฆด๋ฆฌ์Šค์—์„œ์ด ๋…ธํŠธ๋ถ์„ ์ œ์™ธ ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

๋…ผ๋ฆฌ ์ขŒํ‘œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” pyvista
https://sci.utah.edu/~shapeworks/doc-resources/mp4s/nb-groom-resample.mp4

๋ฌผ๋ฆฌ์  ์ขŒํ‘œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” itkwidget๊ณผ ๋น„๊ต
https://sci.utah.edu/~shapeworks/doc-resources/mp4s/nb-groom-resample-iso.mp4

๋…ผ๋ฆฌ ์ขŒํ‘œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” pyvista
๋ฌผ๋ฆฌ์  ์ขŒํ‘œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” itkwidget๊ณผ ๋น„๊ต

๋ฌธ์ œ # 900์ด ์ฃผ์–ด์ง€๋ฉด itk๊ฐ€ ๋ฌผ๋ฆฌ์  ์ขŒํ‘œ๋ฅผ ๋ณด์—ฌ์ค€ ์ ์ด ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ (z-spacing = 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

๋‚˜๋Š” pyvista ๋ทฐ์–ด๊ฐ€ itk ๋ทฐ์–ด์— ๋น„ํ•ด ๊ฒฝ๊ณ„๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ์‹์ด ์ •๋ง ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ •ํ™•ํ•˜๊ณ  ๋ฌผ๋ฆฌ์  ์ธ ์ขŒํ‘œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰