def __init__(self, inputs = (2, 2)): """ Initialization """ lib.ProcessingFilter.ProcessingFilter.__init__(self, inputs) self.descs = {"ClampOverflow": "Prevent over/underflow"} self.vtkfilter = vtkbxd.vtkImageMathematicsClamp()
def __init__(self, inputs=(2, 2)): """ Initialization """ lib.ProcessingFilter.ProcessingFilter.__init__(self, inputs) self.descs = {"ClampOverflow": "Prevent over/underflow"} self.vtkfilter = vtkbxd.vtkImageMathematicsClamp()
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