Class RecursiveGaussianImageFilter

java.lang.Object
org.itk.simple.ProcessObject
org.itk.simple.ImageFilter
org.itk.simple.RecursiveGaussianImageFilter

public class RecursiveGaussianImageFilter extends ImageFilter
Base class for computing IIR convolution with an approximation of a Gaussian kernel. \\[ \\frac{ 1 }{ \\sigma \\sqrt{ 2 \\pi } } \\exp{ \\left( - \\frac{x^2}{ 2 \\sigma^2 } \\right) } \\] RecursiveGaussianImageFilter is the base class for recursive filters that approximate convolution with the Gaussian kernel. This class implements the recursive filtering method proposed by R.Deriche in IEEE-PAMI Vol.12, No.1, January 1990, pp 78-87, "Fast Algorithms for Low-Level Vision" Details of the implementation are described in the technical report: R. Deriche, "Recursively Implementing The Gaussian and Its Derivatives", INRIA, 1993, ftp://ftp.inria.fr/INRIA/tech-reports/RR/RR-1893.ps.gz Further improvements of the algorithm are described in: G. Farnebäck & C.-F. Westin, "Improving Deriche-style Recursive Gaussian Filters". J Math Imaging Vis 26, 293–299 (2006). https://doi.org/10.1007/s10851-006-8464-z As compared to itk::DiscreteGaussianImageFilter , this filter tends to be faster for large kernels, and it can take the derivative of the blurred image in one step. Also, note that we have itk::RecursiveGaussianImageFilter::SetSigma() , but itk::DiscreteGaussianImageFilter::SetVariance() . See: DiscreteGaussianImageFilter itk::simple::RecursiveGaussian for the procedural interface itk::RecursiveGaussianImageFilter for the Doxygen on the original ITK class. C++ includes: sitkRecursiveGaussianImageFilter.h
  • Constructor Details

    • RecursiveGaussianImageFilter

      protected RecursiveGaussianImageFilter(long cPtr, boolean cMemoryOwn)
    • RecursiveGaussianImageFilter

      public RecursiveGaussianImageFilter()
      itk::simple::RecursiveGaussianImageFilter::RecursiveGaussianImageFilter() Default Constructor that takes no arguments and initializes default parameters
  • Method Details

    • getCPtr

      protected static long getCPtr(RecursiveGaussianImageFilter obj)
    • swigRelease

      protected static long swigRelease(RecursiveGaussianImageFilter obj)
    • finalize

      protected void finalize()
      Overrides:
      finalize in class ImageFilter
    • delete

      public void delete()
      virtual itk::simple::RecursiveGaussianImageFilter::~RecursiveGaussianImageFilter() Destructor
      Overrides:
      delete in class ImageFilter
    • setSigma

      public void setSigma(double Sigma)
      Self& itk::simple::RecursiveGaussianImageFilter::SetSigma(double Sigma) Set/Get the Sigma, measured in world coordinates, of the Gaussian kernel. The default is 1.0. An exception will be generated if the Sigma value is less than or equal to zero.
    • getSigma

      public double getSigma()
      double itk::simple::RecursiveGaussianImageFilter::GetSigma() const Set/Get the Sigma, measured in world coordinates, of the Gaussian kernel. The default is 1.0. An exception will be generated if the Sigma value is less than or equal to zero.
    • setNormalizeAcrossScale

      public void setNormalizeAcrossScale(boolean NormalizeAcrossScale)
      Self& itk::simple::RecursiveGaussianImageFilter::SetNormalizeAcrossScale(bool NormalizeAcrossScale) Set/Get the flag for normalizing the gaussian over scale-space. This flag enables the analysis of the differential shape of features independent of their size ( both pixels and physical size ). Following the notation of Tony Lindeberg: Let \\[ L(x; t) = g(x; t) \\ast f(x) \\] be the scale-space representation of image \\[ f(x) \\] where \\[ g(x; t) = \\frac{1}{ \\sqrt{ 2 \\pi t} } \\exp{ \\left( -\\frac{x^2}{ 2 t } \\right) } \\] is the Gaussian function and \\[\\ast\\] denotes convolution. This is a change from above with \\[ t = \\sigma^2 \\] . Then the normalized derivative operator for normalized coordinates across scale is: \\[ \\partial_\\xi = \\sqrt{t} \\partial_x \\] The resulting scaling factor is \\[ \\sigma^N \\] where N is the order of the derivative. When this flag is ON the filter will be normalized in such a way that the values of derivatives are not biased by the size of the object. That is to say the maximum value a feature reaches across scale is independent of the scale of the object. For analyzing an image across scale-space you want to enable this flag. It is disabled by default. Not all scale space axioms are satisfied by this filter, some are only approximated. Particularly, at fine scales ( say less than 1 pixel ) other methods such as a discrete Gaussian kernel should be considered.
    • normalizeAcrossScaleOn

      public void normalizeAcrossScaleOn()
      Self& itk::simple::RecursiveGaussianImageFilter::NormalizeAcrossScaleOn() Set the value of NormalizeAcrossScale to true or false respectfully.
    • normalizeAcrossScaleOff

      public void normalizeAcrossScaleOff()
      Self& itk::simple::RecursiveGaussianImageFilter::NormalizeAcrossScaleOff()
    • getNormalizeAcrossScale

      public boolean getNormalizeAcrossScale()
      bool itk::simple::RecursiveGaussianImageFilter::GetNormalizeAcrossScale() const
    • setOrder

      public void setOrder(RecursiveGaussianImageFilter.OrderType Order)
      Self& itk::simple::RecursiveGaussianImageFilter::SetOrder(OrderType Order) Set/Get the Order of the Gaussian to convolve with. ZeroOrder is equivalent to convolving with a Gaussian. This is the default. FirstOrder is equivalent to convolving with the first derivative of a Gaussian. SecondOrder is equivalent to convolving with the second derivative of a Gaussian.
    • getOrder

      OrderType itk::simple::RecursiveGaussianImageFilter::GetOrder() const Set/Get the Order of the Gaussian to convolve with. ZeroOrder is equivalent to convolving with a Gaussian. This is the default. FirstOrder is equivalent to convolving with the first derivative of a Gaussian. SecondOrder is equivalent to convolving with the second derivative of a Gaussian.
    • setDirection

      public void setDirection(long Direction)
      Self& itk::simple::RecursiveGaussianImageFilter::SetDirection(unsigned int Direction)
    • getDirection

      public long getDirection()
      unsigned int itk::simple::RecursiveGaussianImageFilter::GetDirection() const
    • getName

      public String getName()
      std::string itk::simple::RecursiveGaussianImageFilter::GetName() const Name of this class
      Overrides:
      getName in class ProcessObject
    • toString

      public String toString()
      std::string itk::simple::RecursiveGaussianImageFilter::ToString() const Print ourselves out
      Overrides:
      toString in class ProcessObject
    • execute

      public Image execute(Image image1)
      Image itk::simple::RecursiveGaussianImageFilter::Execute(Image &&image1) Execute the filter on the input image