Notas de estudio de segmentación (cincuenta y tres) datos de segmentación a datos de simpleITK
1、Ejecutar un filtro ITK en Python usando SimpleITK
inputImage = sitkUtils.PullVolumeFromSlicer(self.volume_node)
print(inputImage)
Image (00000265CB863CC0)
RTTI typeinfo: class itk::Image<int,3>
Reference Count: 1
Modified Time: 3770
Debug: Off
Object Name:
Observers:
none
Source: (none)
Source output name: (none)
Release Data: Off
Data Released: False
Global Release Data: Off
PipelineMTime: 3754
UpdateMTime: 3769
RealTimeStamp: 0 seconds
LargestPossibleRegion:
Dimension: 3
Index: [0, 0, 0]
Size: [136, 88, 224]
BufferedRegion:
Dimension: 3
Index: [0, 0, 0]
Size: [136, 88, 224]
RequestedRegion:
Dimension: 3
Index: [0, 0, 0]
Size: [136, 88, 224]
Spacing: [3, 3, 3]
Origin: [-228.5, -198.5, -730]
Direction:
1 0 0
0 1 0
0 0 1
IndexToPointMatrix:
3 0 0
0 3 0
0 0 3
PointToIndexMatrix:
0.333333 0 0
0 0.333333 0
0 0 0.333333
Inverse Direction:
1 0 0
0 1 0
0 0 1
PixelContainer:
ImportImageContainer (00000265F7241CF0)
RTTI typeinfo: class itk::ImportImageContainer<unsigned __int64,int>
Reference Count: 1
Modified Time: 3766
Debug: Off
Object Name:
Observers:
none
Pointer: 00000265F365B040
Container manages memory: true
Size: 2680832
Capacity: 2680832
2. Asigne SimpleITK a volumeNode
Asignación inversa después de completar el procesamiento
import SampleData
import SimpleITK as sitk
import sitkUtils
# Get input volume node
inputVolumeNode = SampleData.SampleDataLogic().downloadMRHead()
# Create new volume node for output
outputVolumeNode = slicer.mrmlScene.AddNewNodeByClass("vtkMRMLScalarVolumeNode", "MRHeadFiltered")
# Run processing
inputImage = sitkUtils.PullVolumeFromSlicer(inputVolumeNode)
filter = sitk.SignedMaurerDistanceMapImageFilter()
outputImage = filter.Execute(inputImage)
sitkUtils.PushVolumeToSlicer(outputImage, outputVolumeNode)
# Show processing result
slicer.util.setSliceViewerLayers(background=outputVolumeNode)