From Slicer Wiki
Jump to: navigation, search
Home < Modules:GradientAnisotropicFilter-Documentation-3.6

Return to Slicer 3.6 Documentation

Module Name

Gradient Anisotropic Filter

Unfiltered MRI image
Gradient filtered with conductance=1 and iterations=10
Volume Rendering Unfiltered CT
Volume Rendering Filtered CT

General Information

Module Type & Category

Type: CLI

Category: Filtering/Denoising

Authors, Collaborators & Contact

  • Author: Bill Lorensen
  • Contact: bill.lorensen at

Module Description

Runs gradient anisotropic diffusion on a volume.

Anisotropic diffusion methods reduce noise (or unwanted detail) in images while preserving specific image features, like edges. For many applications, there is an assumption that light-dark transitions (edges) are interesting. Standard isotropic diffusion methods move and blur light-dark boundaries. Anisotropic diffusion methods are formulated to specifically preserve edges. The conductance term for this implementation is a function of the gradient magnitude of the image at each point, reducing the strength of diffusion at edges. The numerical implementation of this equation is similar to that described in the Perona-Malik paper, but uses a more robust technique for gradient magnitude estimation and has been generalized to N-dimensions.


GradientAnisotropicDiffusion  [--returnparameterfile
                              <std::string>] [--xml] [--echo]
                              [--timeStep <double>] [--iterations
                              <int>] [--conductance <double>]
                              [--] [--version] [-h] <std::string>


   --returnparameterfile <std::string>
     Filename in which to write simple return parameters (int, float,
     int-vector, etc.) as opposed to bulk return parameters (image,
     geometry, transform, measurement, table).

   --processinformationaddress <std::string>
     Address of a structure to store process information (progress, abort,
     etc.). (default: 0)

     Produce xml description of command line arguments (default: 0)

     Echo the command line arguments (default: 0)

   --timeStep <double>
     The time step depends on the dimensionality of the image. In Slicer3
     the images are 3D and the default (.0625) time step will provide a
     stable solution. (default: 0.0625)

   --iterations <int>
     The more iterations, the more smoothing. Each iteration takes the same
     amount of time. If it takes 10 seconds for one iteration, then it will
     take 100 seconds for 10 iterations. Note that the conductance controls
     how much each iteration smooths across edges. (default: 5)

   --conductance <double>
     Conductance controls the sensitivity of the conductance term. As a
     general rule, the lower the value, the more strongly the filter
     preserves edges. A high value will cause diffusion (smoothing) across
     edges. Note that the number of iterations controls how much smoothing
     is done within regions bounded by edges. (default: 1)

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

     (required)  Input volume to be filtered

     (required)  Output filtered


Source code & documentation

Source Code: GradientAnisotropicDiffusion.cxx

XML Description: GradientAnisotropicDiffusion.xml

More Information


This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149. Information on the National Centers for Biomedical Computing can be obtained from National Centers for Biomedical Computing.