def METHOD_NAME(self):
    cast = vtk.vtkImageCast()
    cast.SetInputData(self.Image)
    cast.SetOutputScalarTypeToFloat()
    cast.Update()
    gradientMagnitude = vtkvmtk.vtkvmtkUpwindGradientMagnitudeImageFilter()
    gradientMagnitude.SetInputConnection(cast.GetOutputPort())
    gradientMagnitude.SetUpwindFactor(self.UpwindFactor)
    gradientMagnitude.Update()
    featureImage = None
    if self.SigmoidRemapping==1:
        scalarRange = gradientMagnitude.GetOutput().GetPointData().GetScalars().GetRange()
        inputMinimum = scalarRange[0]
        inputMaximum = scalarRange[1]
        alpha = - (inputMaximum - inputMinimum) / 6.0
        beta = (inputMaximum + inputMinimum) / 2.0
        sigmoid = vtkvmtk.vtkvmtkSigmoidImageFilter()
        sigmoid.SetInputConnection(gradientMagnitude.GetOutputPort())
        sigmoid.SetAlpha(alpha)
        sigmoid.SetBeta(beta)
        sigmoid.SetOutputMinimum(0.0)
        sigmoid.SetOutputMaximum(1.0)
        sigmoid.Update()
        featureImage = sigmoid.GetOutput()
    else:
        boundedReciprocal = vtkvmtk.vtkvmtkBoundedReciprocalImageFilter()
        boundedReciprocal.SetInputConnection(gradientMagnitude.GetOutputPort())
        boundedReciprocal.Update()
        featureImage = boundedReciprocal.GetOutput()
    self.FeatureImage = vtk.vtkImageData()
    self.FeatureImage.DeepCopy(featureImage)