def __init__(self, inputs = (2, 2)):
		"""
		Initialization
		"""        
		lib.ProcessingFilter.ProcessingFilter.__init__(self, inputs)
		self.descs = {"ClampOverflow": "Prevent over/underflow"}
		self.vtkfilter = vtkbxd.vtkImageMathematicsClamp()
Ejemplo n.º 2
0
    def __init__(self, inputs=(2, 2)):
        """
		Initialization
		"""
        lib.ProcessingFilter.ProcessingFilter.__init__(self, inputs)
        self.descs = {"ClampOverflow": "Prevent over/underflow"}
        self.vtkfilter = vtkbxd.vtkImageMathematicsClamp()
Ejemplo n.º 3
0
    def execute(self, inputs=(1, 1), update=0, last=0):
        """
		Execute filter in input image and return output image.
		"""
        if not lib.ProcessingFilter.ProcessingFilter.execute(self, inputs):
            return None

        image = self.getInput(1)
        dim = image.GetDimensions()[2]
        if dim > 0:
            dim = 3
        else:
            dim = 2

        radius1 = int(round(2 * self.parameters["StdDevX1"])), int(
            round(2 * self.parameters["StdDevY1"])), int(
                round(2 * self.parameters["StdDevZ1"]))
        radius2 = int(round(2 * self.parameters["StdDevX2"])), int(
            round(2 * self.parameters["StdDevY2"])), int(
                round(2 * self.parameters["StdDevZ2"]))

        gaussian = vtk.vtkImageGaussianSmooth()
        gaussian.SetInput(image)
        gaussian.SetDimensionality(dim)

        gaussian.SetStandardDeviations(self.parameters["StdDevX1"],
                                       self.parameters["StdDevY1"],
                                       self.parameters["StdDevZ1"])
        gaussian.SetRadiusFactors(radius1)
        gaussian.Update()
        gaussian1 = vtk.vtkImageData()
        gaussian1.DeepCopy(gaussian.GetOutput())

        gaussian.SetStandardDeviations(self.parameters["StdDevX2"],
                                       self.parameters["StdDevY2"],
                                       self.parameters["StdDevZ2"])
        gaussian.SetRadiusFactors(radius2)
        gaussian.Update()
        gaussian2 = gaussian.GetOutput()

        imageMath = vtkbxd.vtkImageMathematicsClamp()
        imageMath.SetOperationToSubtract()
        imageMath.SetInput1(gaussian1)
        imageMath.SetInput2(gaussian2)
        imageMath.SetClampOverflow(True)
        data = imageMath.GetOutput()

        #if update:
        data.Update()

        return data
	def execute(self, inputs = (1,1), update = 0, last = 0):
		"""
		Execute filter in input image and return output image.
		"""
		if not lib.ProcessingFilter.ProcessingFilter.execute(self,inputs):
			return None

		image = self.getInput(1)
		dim = image.GetDimensions()[2]
		if dim > 0:
			dim = 3
		else:
			dim = 2
		
		radius1 = int(round(2 * self.parameters["StdDevX1"])), int(round(2 * self.parameters["StdDevY1"])), int(round(2 * self.parameters["StdDevZ1"]))
		radius2 = int(round(2 * self.parameters["StdDevX2"])), int(round(2 * self.parameters["StdDevY2"])), int(round(2 * self.parameters["StdDevZ2"]))

		gaussian = vtk.vtkImageGaussianSmooth()
		gaussian.SetInput(image)
		gaussian.SetDimensionality(dim)

		gaussian.SetStandardDeviations(self.parameters["StdDevX1"],self.parameters["StdDevY1"],self.parameters["StdDevZ1"])
		gaussian.SetRadiusFactors(radius1)
		gaussian.Update()
		gaussian1 = vtk.vtkImageData()
		gaussian1.DeepCopy(gaussian.GetOutput())

		gaussian.SetStandardDeviations(self.parameters["StdDevX2"],self.parameters["StdDevY2"],self.parameters["StdDevZ2"])
		gaussian.SetRadiusFactors(radius2)
		gaussian.Update()
		gaussian2 = gaussian.GetOutput()

		imageMath = vtkbxd.vtkImageMathematicsClamp()
		imageMath.SetOperationToSubtract()
		imageMath.SetInput1(gaussian1)
		imageMath.SetInput2(gaussian2)
		imageMath.SetClampOverflow(True)
		data = imageMath.GetOutput()
		
		#if update:
		data.Update()
		
		return data