当前位置: 首页>>代码示例>>Python>>正文


Python vtk.vtkImageAccumulate函数代码示例

本文整理汇总了Python中vtk.vtkImageAccumulate函数的典型用法代码示例。如果您正苦于以下问题:Python vtkImageAccumulate函数的具体用法?Python vtkImageAccumulate怎么用?Python vtkImageAccumulate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了vtkImageAccumulate函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: get_histogram

def get_histogram(image, maxval=0, minval=0, maxrange=0):
    """
	Return the histogram of the image as a list of floats
	"""
    accu = vtk.vtkImageAccumulate()
    accu.SetInputConnection(image.GetProducerPort())

    if maxval == 0:
        x0, x1 = getImageScalarRange(image)
        # x1 = int(math.floor(x1))
        # x0 = int(math.ceil(x0))
    else:
        # x0, x1 = (int(math.ceil(minval)),int(math.floor(maxval)))
        x0, x1 = (minval, maxval)

        # accu.SetComponentExtent(0, x1 - x0, 0, 0, 0, 0)
        # accu.SetComponentSpacing(1, 0, 0)
    if maxrange:
        accu.SetComponentExtent(0, x1 - x0, 0, 0, 0, 0)
        accu.SetComponentSpacing(1, 0, 0)
    else:
        accu.SetComponentExtent(0, 255, 0, 0, 0, 0)
        accu.SetComponentSpacing((x1 - x0 + 1) / 256.0, 0, 0)

    accu.SetComponentOrigin(x0, 0, 0)
    accu.Update()
    data = accu.GetOutput()

    values = []
    x0, x1, y0, y1, z0, z1 = data.GetWholeExtent()

    for i in range(x0, x1 + 1):
        c = data.GetScalarComponentAsDouble(i, 0, 0, 0)
        values.append(c)
    return values
开发者ID:chalkie666,项目名称:bioimagexd-svn-import-from-sourceforge,代码行数:35,代码来源:ImageOperations.py

示例2: TestSection_1_AddRemoveSegment

  def TestSection_1_AddRemoveSegment(self):
    # Add/remove segment from segmentation (check display properties, color table, etc.)
    logging.info('Test section 1: Add/remove segment')

    # Get baseline values
    displayNode = self.inputSegmentationNode.GetDisplayNode()
    self.assertIsNotNone(displayNode)
    colorTableNode = displayNode.GetColorNode()
    self.assertIsNotNone(colorTableNode)
    self.assertEqual(colorTableNode.GetNumberOfColors(), 4)
    # If segments are not found then the returned color is the pre-defined invalid color
    bodyColor = displayNode.GetSegmentColor('Body_Contour')
    self.assertTrue(int(bodyColor[0]*100) == 33 and int(bodyColor[1]*100) == 66 and bodyColor[2] == 0.0)
    tumorColor = displayNode.GetSegmentColor('Tumor_Contour')
    self.assertTrue(tumorColor[0] == 1.0 and tumorColor[1] == 0.0 and tumorColor[2] == 0.0)

    # Create new segment
    sphere = vtk.vtkSphereSource()
    sphere.SetCenter(0,50,0)
    sphere.SetRadius(50)
    sphere.Update()
    spherePolyData = vtk.vtkPolyData()
    spherePolyData.DeepCopy(sphere.GetOutput())
    
    self.sphereSegment = vtkSegmentationCore.vtkSegment()
    self.sphereSegment.SetName(self.sphereSegmentName)
    self.sphereSegment.SetDefaultColor(0.0,0.0,1.0)
    self.sphereSegment.AddRepresentation(self.closedSurfaceReprName, spherePolyData)

    # Add segment to segmentation
    self.inputSegmentationNode.GetSegmentation().AddSegment(self.sphereSegment)
    self.assertEqual(self.inputSegmentationNode.GetSegmentation().GetNumberOfSegments(), 3)
    self.assertEqual(colorTableNode.GetNumberOfColors(), 5)
    sphereColor = displayNode.GetSegmentColor(self.sphereSegmentName)
    self.assertTrue(sphereColor[0] == 0.0 and sphereColor[1] == 0.0 and sphereColor[2] == 1.0)
    
    # Check merged labelmap
    imageStat = vtk.vtkImageAccumulate()
    imageStat.SetInputData(self.inputSegmentationNode.GetImageData())
    imageStat.SetComponentExtent(0,4,0,0,0,0)
    imageStat.SetComponentOrigin(0,0,0)
    imageStat.SetComponentSpacing(1,1,1)
    imageStat.Update()
    self.assertEqual(imageStat.GetVoxelCount(), 1000)
    imageStatResult = imageStat.GetOutput()
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(0,0,0,0), 814)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(1,0,0,0), 0)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(2,0,0,0), 175)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(3,0,0,0), 4)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(4,0,0,0), 7)

    # Remove segment from segmentation
    self.inputSegmentationNode.GetSegmentation().RemoveSegment(self.sphereSegmentName)
    self.assertEqual(self.inputSegmentationNode.GetSegmentation().GetNumberOfSegments(), 2)
    self.assertEqual(colorTableNode.GetNumberOfColors(), 5)
    sphereColorArray = [0]*4
    colorTableNode.GetColor(4,sphereColorArray)
    self.assertTrue(int(sphereColorArray[0]*100) == 50 and int(sphereColorArray[1]*100) == 50 and int(sphereColorArray[2]*100) == 50)
    sphereColor = displayNode.GetSegmentColor(self.sphereSegmentName)
    self.assertTrue(sphereColor[0] == 0.5 and sphereColor[1] == 0.5 and sphereColor[2] == 0.5)
开发者ID:vovythevov,项目名称:SlicerRT,代码行数:60,代码来源:SegmentationsModuleTest1.py

示例3: __init__

    def __init__(self, binsCount, reader):
        self.Reader = reader
        self.BinsCount = binsCount
        self.BinStep = 0
        self.ScalarRange = [0, 0]
        self.FreqArray = vtk.vtkDataArray.CreateDataArray(vtk.VTK_INT)
        self.FreqArray.SetNumberOfComponents(1)

        extract = vtk.vtkImageExtractComponents()
        extract.SetInputConnection(self.Reader.GetOutputPort())
        extract.SetComponents(0)
        extract.Update()
        extract.GetOutput().GetScalarRange(self.ScalarRange)

        self.BinStep = (self.ScalarRange[1] - self.ScalarRange[0]) / self.BinsCount

        histo = vtk.vtkImageAccumulate()
        histo.SetInputConnection(extract.GetOutputPort())
        histo.SetComponentExtent(0, self.BinsCount, 0, 0, 0, 0)
        histo.SetComponentOrigin(self.ScalarRange[0], 0, 0)
        histo.SetComponentSpacing(self.BinStep,  0, 0)
        histo.SetIgnoreZero(False)
        histo.Update()

        for j in range(0, self.BinsCount):
            compValue = histo.GetOutput().GetPointData().GetScalars().GetValue(j)
            self.FreqArray.InsertNextTuple1(compValue)

        lastBinValue = self.FreqArray.GetComponent(self.BinsCount - 1, 0)
        binValue = histo.GetOutput().GetPointData().GetScalars().GetValue(self.BinsCount)
        self.FreqArray.SetComponent(self.BinsCount - 1, 0, lastBinValue + binValue)
开发者ID:kriepy,项目名称:SVVR,代码行数:31,代码来源:Histogram.py

示例4: splitPerStructureVolumes

  def splitPerStructureVolumes(masterNode, mergeNode):
    """Make a separate label map node for each non-empty label value in the
    merged label map"""

    colorNode = mergeNode.GetDisplayNode().GetColorNode()

    accum = vtk.vtkImageAccumulate()
    accum.SetInputConnection(mergeNode.GetImageDataConnection())
    accum.Update()
    lo = int(accum.GetMin()[0])
    hi = int(accum.GetMax()[0])

    thresholder = vtk.vtkImageThreshold()
    for index in xrange(lo,hi+1):
      logging.info( "Splitting label %d..."%index )
      thresholder.SetInputConnection( mergeNode.GetImageDataConnection() )
      thresholder.SetInValue( index )
      thresholder.SetOutValue( 0 )
      thresholder.ReplaceInOn()
      thresholder.ReplaceOutOn()
      thresholder.ThresholdBetween( index, index )
      thresholder.SetOutputScalarType( mergeNode.GetImageData().GetScalarType() )
      thresholder.Update()
      if thresholder.GetOutput().GetScalarRange() != (0.0, 0.0):
        structureName = colorNode.GetColorName(index)
        logging.info( "Creating structure volume %s..."%structureName )
        structureVolume = EditUtil.structureVolume( masterNode, structureName )
        if not structureVolume:
          EditUtil.addStructure( masterNode, mergeNode, index )
        structureVolume = EditUtil.structureVolume( masterNode, structureName )
        structureVolume.GetImageData().DeepCopy( thresholder.GetOutput() )
        EditUtil.markVolumeNodeAsModified(structureVolume)
开发者ID:gregsharp,项目名称:Slicer,代码行数:32,代码来源:EditUtil.py

示例5: computeStatistics

  def computeStatistics(self, segmentID):
    import vtkSegmentationCorePython as vtkSegmentationCore
    requestedKeys = self.getRequestedKeys()

    segmentationNode = slicer.mrmlScene.GetNodeByID(self.getParameterNode().GetParameter("Segmentation"))

    if len(requestedKeys)==0:
      return {}

    containsLabelmapRepresentation = segmentationNode.GetSegmentation().ContainsRepresentation(
      vtkSegmentationCore.vtkSegmentationConverter.GetSegmentationBinaryLabelmapRepresentationName())
    if not containsLabelmapRepresentation:
      return {}

    segment = segmentationNode.GetSegmentation().GetSegment(segmentID)
    segBinaryLabelName = vtkSegmentationCore.vtkSegmentationConverter.GetSegmentationBinaryLabelmapRepresentationName()
    segmentLabelmap = segment.GetRepresentation(segBinaryLabelName)

    if (not segmentLabelmap
      or not segmentLabelmap.GetPointData()
      or not segmentLabelmap.GetPointData().GetScalars()):
      # No input label data
      return {}

    # We need to know exactly the value of the segment voxels, apply threshold to make force the selected label value
    labelValue = 1
    backgroundValue = 0
    thresh = vtk.vtkImageThreshold()
    thresh.SetInputData(segmentLabelmap)
    thresh.ThresholdByLower(0)
    thresh.SetInValue(backgroundValue)
    thresh.SetOutValue(labelValue)
    thresh.SetOutputScalarType(vtk.VTK_UNSIGNED_CHAR)
    thresh.Update()

    #  Use binary labelmap as a stencil
    stencil = vtk.vtkImageToImageStencil()
    stencil.SetInputData(thresh.GetOutput())
    stencil.ThresholdByUpper(labelValue)
    stencil.Update()

    stat = vtk.vtkImageAccumulate()
    stat.SetInputData(thresh.GetOutput())
    stat.SetStencilData(stencil.GetOutput())
    stat.Update()

    # Add data to statistics list
    cubicMMPerVoxel = reduce(lambda x,y: x*y, segmentLabelmap.GetSpacing())
    ccPerCubicMM = 0.001
    stats = {}
    if "voxel_count" in requestedKeys:
      stats["voxel_count"] = stat.GetVoxelCount()
    if "volume_mm3" in requestedKeys:
      stats["volume_mm3"] = stat.GetVoxelCount() * cubicMMPerVoxel
    if "volume_cm3" in requestedKeys:
      stats["volume_cm3"] = stat.GetVoxelCount() * cubicMMPerVoxel * ccPerCubicMM
    return stats
开发者ID:Slicer,项目名称:Slicer,代码行数:57,代码来源:LabelmapSegmentStatisticsPlugin.py

示例6: getForegroundVoxelCount

 def getForegroundVoxelCount(self, imageData):
   if imageData is None:
     logging.error('Invalid input image data')
     return False
   imageAccumulate = vtk.vtkImageAccumulate()
   imageAccumulate.SetInputData(imageData)
   imageAccumulate.SetIgnoreZero(1)
   imageAccumulate.Update()
   return imageAccumulate.GetVoxelCount()
开发者ID:pieper,项目名称:Slicer,代码行数:9,代码来源:SegmentationWidgetsTest1.py

示例7: TestSection_MergeLabelmapWithDifferentGeometries

  def TestSection_MergeLabelmapWithDifferentGeometries(self):
    # Merge labelmap when segments containing labelmaps with different geometries (both same directions, different directions)
    logging.info('Test section: Merge labelmap with different geometries')

    self.assertIsNotNone(self.sphereSegment)
    self.sphereSegment.RemoveRepresentation(self.binaryLabelmapReprName)
    self.assertIsNone(self.sphereSegment.GetRepresentation(self.binaryLabelmapReprName))

    # Create new segmentation with sphere segment
    self.secondSegmentationNode = slicer.mrmlScene.AddNewNodeByClass('vtkMRMLSegmentationNode', 'Second')
    self.secondSegmentationNode.GetSegmentation().SetMasterRepresentationName(self.binaryLabelmapReprName)

    self.secondSegmentationNode.GetSegmentation().AddSegment(self.sphereSegment)

    # Check automatically converted labelmap. It is supposed to have the default geometry
    # (which is different than the one in the input segmentation)
    sphereLabelmap = self.sphereSegment.GetRepresentation(self.binaryLabelmapReprName)
    self.assertIsNotNone(sphereLabelmap)
    sphereLabelmapSpacing = sphereLabelmap.GetSpacing()
    self.assertAlmostEqual(sphereLabelmapSpacing[0], 0.629257364931788, 8)
    self.assertAlmostEqual(sphereLabelmapSpacing[1], 0.629257364931788, 8)
    self.assertAlmostEqual(sphereLabelmapSpacing[2], 0.629257364931788, 8)

    # Create binary labelmap in segmentation that will create the merged labelmap from
    # different geometries so that labelmap is not removed from sphere segment when adding
    self.inputSegmentationNode.GetSegmentation().CreateRepresentation(self.binaryLabelmapReprName)

    # Copy segment to input segmentation
    self.inputSegmentationNode.GetSegmentation().CopySegmentFromSegmentation(self.secondSegmentationNode.GetSegmentation(), self.sphereSegmentName)
    self.assertEqual(self.inputSegmentationNode.GetSegmentation().GetNumberOfSegments(), 3)

    # Check merged labelmap
    # Reference geometry has the tiny patient spacing, and it is oversampled to have similar
    # voxel size as the sphere labelmap with the uniform 0.629mm spacing
    mergedLabelmap = vtkSegmentationCore.vtkOrientedImageData()
    self.inputSegmentationNode.GenerateMergedLabelmapForAllSegments(mergedLabelmap, 0)
    mergedLabelmapSpacing = mergedLabelmap.GetSpacing()
    self.assertAlmostEqual(mergedLabelmapSpacing[0], 0.80327868852459, 8)
    self.assertAlmostEqual(mergedLabelmapSpacing[1], 0.80327868852459, 8)
    self.assertAlmostEqual(mergedLabelmapSpacing[2], 0.377049180327869, 8)

    imageStat = vtk.vtkImageAccumulate()
    imageStat.SetInputData(mergedLabelmap)
    imageStat.SetComponentExtent(0,5,0,0,0,0)
    imageStat.SetComponentOrigin(0,0,0)
    imageStat.SetComponentSpacing(1,1,1)
    imageStat.Update()
    imageStatResult = imageStat.GetOutput()
    for i in range(5):
      logging.info("Volume {0}: {1}".format(i, imageStatResult.GetScalarComponentAsDouble(i,0,0,0)))
    self.assertEqual(imageStat.GetVoxelCount(), 226981000)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(0,0,0,0), 178838889)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(1,0,0,0), 39705288)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(2,0,0,0), 890883)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(3,0,0,0), 7545940)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(4,0,0,0), 0)  # Built from color table and color four is removed in previous test section
开发者ID:BRAINSia,项目名称:Slicer,代码行数:56,代码来源:SegmentationsModuleTest1.py

示例8: TestSection_2_MergeLabelmapWithDifferentGeometries

  def TestSection_2_MergeLabelmapWithDifferentGeometries(self):
    # Merge labelmap when segments containing labelmaps with different geometries (both same directions, different directions)
    logging.info('Test section 2: Merge labelmap with different geometries')

    self.assertIsNotNone(self.sphereSegment)
    self.sphereSegment.RemoveRepresentation(self.binaryLabelmapReprName)
    self.assertIsNone(self.sphereSegment.GetRepresentation(self.binaryLabelmapReprName))

    # Create new segmentation with sphere segment
    self.secondSegmentationNode = slicer.vtkMRMLSegmentationNode()
    self.secondSegmentationNode.SetName('Second')
    self.secondSegmentationNode.GetSegmentation().SetMasterRepresentationName(self.binaryLabelmapReprName)
    slicer.mrmlScene.AddNode(self.secondSegmentationNode)

    self.secondSegmentationNode.GetSegmentation().AddSegment(self.sphereSegment)

    # Check automatically converted labelmap. It is supposed to have the default geometry
    # (which is different than the one in the input segmentation)
    sphereLabelmap = self.sphereSegment.GetRepresentation(self.binaryLabelmapReprName)
    self.assertIsNotNone(sphereLabelmap)
    sphereLabelmapSpacing = sphereLabelmap.GetSpacing()
    self.assertTrue(sphereLabelmapSpacing[0] == 1.0 and sphereLabelmapSpacing[1] == 1.0 and sphereLabelmapSpacing[2] == 1.0)

    # Create binary labelmap in segmentation that will create the merged labelmap from
    # different geometries so that labelmap is not removed from sphere segment when adding
    self.inputSegmentationNode.GetSegmentation().CreateRepresentation(self.binaryLabelmapReprName)

    # Copy segment to input segmentation
    self.inputSegmentationNode.GetSegmentation().CopySegmentFromSegmentation(self.secondSegmentationNode.GetSegmentation(), self.sphereSegmentName)
    self.assertEqual(self.inputSegmentationNode.GetSegmentation().GetNumberOfSegments(), 3)

    # Check merged labelmap
    # Reference geometry has the tiny patient spacing, and it is oversampled to have smimilar
    # voxel size as the sphere labelmap with the uniform 1mm spacing
    mergedLabelmap = vtkSegmentationCore.vtkOrientedImageData()
    self.inputSegmentationNode.GenerateMergedLabelmapForAllSegments(mergedLabelmap, 0)
    mergedLabelmapSpacing = mergedLabelmap.GetSpacing()
    self.assertAlmostEqual(mergedLabelmapSpacing[0], 1.2894736842, 8)
    self.assertAlmostEqual(mergedLabelmapSpacing[1], 1.2894736842, 8)
    self.assertAlmostEqual(mergedLabelmapSpacing[2], 0.6052631578, 8)

    imageStat = vtk.vtkImageAccumulate()
    imageStat.SetInputData(mergedLabelmap)
    imageStat.SetComponentExtent(0,5,0,0,0,0)
    imageStat.SetComponentOrigin(0,0,0)
    imageStat.SetComponentSpacing(1,1,1)
    imageStat.Update()
    self.assertEqual(imageStat.GetVoxelCount(), 54872000)
    imageStatResult = imageStat.GetOutput()
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(0,0,0,0), 43573723)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(1,0,0,0), 10601312)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(2,0,0,0), 274360)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(3,0,0,0), 422605)
    self.assertEqual(imageStatResult.GetScalarComponentAsDouble(4,0,0,0), 0)  # Built from color table and color four is removed in previous test section
开发者ID:yuzsh,项目名称:Slicer,代码行数:54,代码来源:SegmentationsModuleTest1.py

示例9: imageDataContainsData

 def imageDataContainsData(self, imageData):
   if imageData is None:
     logging.error('Invalid input image data')
     return False
   acc = vtk.vtkImageAccumulate()
   acc.SetInputData(imageData)
   acc.SetIgnoreZero(1)
   acc.Update()
   if acc.GetVoxelCount() > 0:
     return True
   return False
开发者ID:andrewfzheng,项目名称:Slicer,代码行数:11,代码来源:SegmentationWidgetsTest1.py

示例10: __init__

 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(
         self,
         module_manager,
         vtk.vtkImageAccumulate(),
         "Processing.",
         ("vtkImageData", "vtkImageStencilData"),
         ("vtkImageData",),
         replaceDoc=True,
         inputFunctions=None,
         outputFunctions=None,
     )
开发者ID:sanguinariojoe,项目名称:devide,代码行数:12,代码来源:vtkImageAccumulate.py

示例11: ResetWindowLevel

 def ResetWindowLevel(self):
     if self.IsLocked():
         return
     
     if self.Image:
         return
     
     self.Image.UpdateInformation()
     self.Image.SetUpdateExtent(self.Image.GetWholeExtent())
     self.Image.Update()
     
     if (self.Image.GetScalarType() == vtk.VTK_UNSIGNED_CHAR and 
         (self.Image.GetNumberOfScalarComponents() == 3 or 
          self.Image.GetNumberOfScalarComponents() == 4 )):
         return
     range = self.Image.GetScalarRange()
     histogram = vtk.vtkImageAccumulate()
     histogram.SetInput(self.Image)
     
     histogram.SetComponentExtent(0, 1000, 0, 0, 0, 0)
     histogram.SetComponentSpacing((range[1]-range[0])/1000.0, 0.0, 0.0)
     histogram.SetComponentOrigin(range[0], 0.0, 0.0)
     histogram.Update()
     
     output = histogram.GetOutput()
     ptData = output.GetPointData().GetScalars()
     if ptData:
         raise RuntimeError, "Error: Cannot cast point data to integers."
     numVox = histogram.GetVoxelCount()
     onePercent = numVox/100.0
     
     start = 1
     currentPercent = 0.0
     while (currentPercent<0.1 and start<999):
         ptData.GetTuple(start, tuple)
         currentPercent = currentPercent + tuple/onePercent
         start = start+1
         
     currentPercent = 0.0
     end = 999
     while (currentPercent<0.1 and end>0):
         ptData.GetTuple(start, tuple)
         currentPercent = currentPercent + tuple/onePercent
         end = end-1
     
     window = (end-start)*(range[1]-range[0])/1000.0
     level = 0.5*(start + end)*(range[1]-range[0])/1000.0
     window = (window-self.Shift)/self.Scale
     level = (level-self.Shift)/self.Scale
     
     self.SetWindow(window)
     self.SetLevel(level)
     del histogram
开发者ID:jackyko1991,项目名称:vtkpythonext,代码行数:53,代码来源:vtkViewImage.py

示例12: CalculateHistogram

 def CalculateHistogram(self):
     proj = prj.Project()
     image = proj.imagedata
     r = int(image.GetScalarRange()[1] - image.GetScalarRange()[0])
     accumulate = vtk.vtkImageAccumulate()
     accumulate.SetInput(image)
     accumulate.SetComponentExtent(0, r -1, 0, 0, 0, 0)
     accumulate.SetComponentOrigin(image.GetScalarRange()[0], 0, 0)
     accumulate.Update()
     n_image = numpy_support.vtk_to_numpy(accumulate.GetOutput().GetPointData().GetScalars())
     ps.Publisher().sendMessage('Load histogram', (n_image,
                                                  image.GetScalarRange()))
开发者ID:151706061,项目名称:invesalius,代码行数:12,代码来源:volume.py

示例13: test_seedconnect

    def test_seedconnect(self):
        """Test whether we can load and run a full network, select a point and 
        do a region growing. This broke with the introduction of vtk 5.6.1 due
        to more strict casting.
        """
                
        # load our little test network #####
        self._ge._load_and_realise_network(
            os.path.join(self._devide_testing.get_networks_dir(), 
                         'seedconnect.dvn'))
        
        # run the network once    
        self._ge._handler_execute_network(None)
        
        self._ge.canvas.redraw()
            
        # now find the slice3dVWR #####
        mm = self._devide_app.get_module_manager()
        svmod = mm.get_instance("svmod")
        # let's show the control frame
        svmod._handlerShowControls(None)
        
        if True:
            # we're doing this the long way to test more code paths
            svmod.sliceDirections.setCurrentCursor([20.0, 20.0, 20.0, 1.0])
            # this handler should result in the whole network being auto-executed
            # but somehow it blocks execution (the vktImageSeedConnect sticks at 0.0)
            svmod.selectedPoints._handlerStoreCursorAsPoint(None)
            
        else:        
            # it seems to block here as well: the whole network is linked up,
            # so it tries to execute when the storeCursor is called, and that
            # blocks everything. WHY?!
            #svmod.selectedPoints._storeCursor((20.0,20.0,20.0,1.0))
            #self.failUnless(len(svmod.selectedPoints._pointsList) == 1)

            # execute the network
            self._ge._handler_execute_network(None)

        # now count the number of voxels in the segmented result
        import vtk
        via = vtk.vtkImageAccumulate()
        scmod = mm.get_instance("scmod")
        via.SetInput(scmod.get_output(0))
        via.Update()
        # get second bin of output histogram: that should be the
        # number of voxels
        s = via.GetOutput().GetPointData().GetScalars()
        print s.GetTuple1(1)
        self.failUnless(s.GetTuple1(1) == 26728)
        via.SetInput(None)
        del via
开发者ID:fvpolpeta,项目名称:devide,代码行数:52,代码来源:graph_editor.py

示例14: getLabelsFromLabelMap

 def getLabelsFromLabelMap(self, labelMapNode):
   if not labelMapNode:
     return
   accum = vtk.vtkImageAccumulate()
   accum.SetInput(labelMapNode.GetImageData())
   accum.UpdateWholeExtent()
   data = accum.GetOutput()
   data.Update()
   numBins = accum.GetComponentExtent()[1]
   nonZeroLabels = []
   for i in range(0, numBins + 1):
     numVoxels = data.GetScalarComponentAsDouble(i,0,0,0)
     if (numVoxels != 0):
       nonZeroLabels.append(i)
   return nonZeroLabels
开发者ID:151706061,项目名称:TubeTK,代码行数:15,代码来源:InteractivePDFSegmenter.py

示例15: split

  def split(self):
    """split the merge volume into individual structures"""

    self.statusText( "Splitting..." )
    merge = self.merge
    if not merge:
      return
    colorNode = merge.GetDisplayNode().GetColorNode()

    accum = vtk.vtkImageAccumulate()
    if vtk.VTK_MAJOR_VERSION <= 5:
      accum.SetInput(merge.GetImageData())
    else:
      accum.SetInputConnection(merge.GetImageDataConnection())
    accum.Update()
    lo = int(accum.GetMin()[0])
    hi = int(accum.GetMax()[0])

    # TODO: pending resolution of bug 1822, run the thresholding
    # in single threaded mode to avoid data corruption observed on mac release
    # builds
    thresholder = vtk.vtkImageThreshold()
    thresholder.SetNumberOfThreads(1)
    for i in xrange(lo,hi+1):
      self.statusText( "Splitting label %d..."%i )
      if vtk.VTK_MAJOR_VERSION <= 5:
        thresholder.SetInput( merge.GetImageData() )
      else:
        thresholder.SetInputConnection( merge.GetImageDataConnection() )
      thresholder.SetInValue( i )
      thresholder.SetOutValue( 0 )
      thresholder.ReplaceInOn()
      thresholder.ReplaceOutOn()
      thresholder.ThresholdBetween( i, i )
      thresholder.SetOutputScalarType( merge.GetImageData().GetScalarType() )
      thresholder.Update()
      if thresholder.GetOutput().GetScalarRange() != (0.0, 0.0):
        labelName = colorNode.GetColorName(i)
        self.statusText( "Creating structure volume %s..."%labelName )
        structureVolume = self.structureVolume( labelName )
        if not structureVolume:
          self.addStructure( i, "noEdit" )
        structureVolume = self.structureVolume( labelName )
        structureVolume.GetImageData().DeepCopy( thresholder.GetOutput() )
        EditUtil.markVolumeNodeAsModified(structureVolume)

    self.statusText( "Finished splitting." )
开发者ID:kevinwangcanada,项目名称:Slicer,代码行数:47,代码来源:LabelStructureListWidget.py


注:本文中的vtk.vtkImageAccumulate函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。