image = | anisotropicDiffusion2dImg (inImg,inNbTimeSteps,inSharpness,inAnisotropy) |
Anisotropic diffusion smoothing filter on 2d images.
The anisotropic diffusion filter is a non-linear iterative smoothing filter that allows to eliminate noise and small-scale details from an image while preserving or even enhancing the edge structure.
Filter parametrization
Main parameters
The main parameters of this filter are :
which define number of time steps (number of iteration) of filter. Default parameter value (10) is in general a good compromis between convergence and computation time considerations.
parameter allows to control egde preservation. A great value for
parameter results in a highly preservated edges.
parameter allows to control smoothing along tensor main direction (it can approximately be seen as a parameter controlling smoothing along gradient direction). A small value for
parameter results in a high smoothing along gradient direction.
- Note
- Note that
and
are highly correlated since one can increase first one and decrease second one to increase image smoothing while preserving algorithm edge enhancing properties. It is generally a good idea for user to start with following parameter values :
Then user should try to modify
and
values to find an adpated cupple of value.
Here is an example of
influence on an image with very high frequency area (in this case
and
).
Here is an example of
influence on an image (in this case
and
).
Please note edge enhancement while anisotropy value increase.
Secondary parameters
Some secondary parameters are also associated to this filter (user should modify these parameters with caution since some of them can generate heavy computation cost) :
is the standard deviation used to compute image gradient (see Gaussian Gradient 2d).
is the standard deviation used to compute image inertia matrix smoothing (see Gaussian Smoothing 2d).
allows to define the minimum distribution spread ratio which should be reach regards to an infinite Gaussian distribution for previous gaussian operations (gradient and smoothing).
is the number of angles along anisotropic tensor will be projected
allows to restrain local smoothing window size during processing
allows to modify local line integral convolution length
allows to define spatial step used for local line integral convolution
- See also
- Joachil Weickert, Theorical foundations of anisotropic diffusion in image processing, Computing, Suppl. 141, pp. 221-236, 1996.
-
D. Tschumperle, Curvature-Preserving Regularization of Multi-Valued Images using PDE's, European Conference on Computer Vision (ECCV'06), LNCS Vol. 3952, pp. 295-307, Graz/Austria, May 2006, ISSN : 302-9743.
Example of Python code :
Example imports
import PyIPSDK
import PyIPSDK.IPSDKIPLFiltering as filter
Code Example
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
outImg = filter.anisotropicDiffusion2dImg(inImg, 10, 0.9, 0.6)
Example of C++ code :
Example informations
Header file
#include <IPSDKIPL/IPSDKIPLFiltering/Processor/AnisotropicDiffusion2dImg/AnisotropicDiffusion2dImg.h>
Code Example
ImagePtr pOutImg = anisotropicDiffusion2dImg(pInImg, inNbTimeSteps, inSharpness, inAnisotropy);