方法1 直接把体数据加载成为Segmentation
slicer.util.loadSegmentation("c:/tmp/tmp/Segmentation.nrrd")
slicer.util.loadSegmentation("c:/tmp/tmp/Segmentation.nii")
方法2 将labelmap导出成Segmentation
labelmapVolumeNode = getNode("label")
seg = slicer.mrmlScene.AddNewNodeByClass("vtkMRMLSegmentationNode")
slicer.modules.segmentations.logic().ImportLabelmapToSegmentationNode(labelmapVolumeNode, seg)
#将Segmentation显示到三维中去
seg.CreateClosedSurfaceRepresentation()
slicer.mrmlScene.RemoveNode(labelmapVolumeNode)
方法3 直接生成Segmentation
imageFile="/home/chenxiaohui/tmp/liver-orig006.mhd"
labelFile="/home/chenxiaohui/tmp/liver-seg006.nii"
imageNode = slicer.util.loadVolume(imageFile)
self.segmentNode = slicer.mrmlScene.AddNewNodeByClass("vtkMRMLSegmentationNode")
#设定参考图像
self.segmentNode.SetReferenceImageGeometryParameterFromVolumeNode(imageNode)
self.segmentNode.SetName("liver-seg006")
self.segmentation = self.segmentNode.GetSegmentation()
self.segmentation.AddEmptySegment("test")
segmentId = self.segmentNode.GetSegmentation().GetSegmentIdBySegmentName('test')
self.segment=self.segmentNode.GetSegmentation().GetSegment(segmentId)
self.segment.SetColor(0,0,1)
segmentArray = slicer.util.arrayFromSegmentBinaryLabelmap(self.segmentNode, segmentId, imageNode)
segmentArray[:] = 0 # clear the segmentation
segmentArray[ slicer.util.arrayFromVolume(imageNode) > 200 ] = 1 # create segment by simple thresholding of an image
slicer.util.updateSegmentBinaryLabelmapFromArray(segmentArray, self.segmentNode, segmentId, imageNode)