isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusion (Operator)


isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusion — Perform an isotropic diffusion of an image.


isotropic_diffusion(Image : SmoothedImage : Sigma, Iterations : )

Herror isotropic_diffusion(const Hobject Image, Hobject* SmoothedImage, double Sigma, const Hlong Iterations)

Herror T_isotropic_diffusion(const Hobject Image, Hobject* SmoothedImage, const Htuple Sigma, const Htuple Iterations)

void IsotropicDiffusion(const HObject& Image, HObject* SmoothedImage, const HTuple& Sigma, const HTuple& Iterations)

HImage HImage::IsotropicDiffusion(double Sigma, Hlong Iterations) const

static void HOperatorSet.IsotropicDiffusion(HObject image, out HObject smoothedImage, HTuple sigma, HTuple iterations)

HImage HImage.IsotropicDiffusion(double sigma, int iterations)


The operator isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusion performs an isotropic diffusion of the input image ImageImageImageImageimage. This corresponds to a convolution of the image matrix with a Gaussian mask of standard deviation SigmaSigmaSigmaSigmasigma. If the parameter IterationsIterationsIterationsIterationsiterations is set to 0, such a convolution is performed explicitly. For input images with a full ROI, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusion returns the same results as the operator derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGauss when choosing 'none'"none""none""none""none" for its parameter Component. If the gray value matrix is larger than the ROI of ImageImageImageImageimage the two operators differ since derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGauss takes the gray values outside of the ROI into account, while isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusion mirrors the values at the boundary of the ROI in any case. The computational complexity increases linearly with the value of SigmaSigmaSigmaSigmasigma.

If IterationsIterationsIterationsIterationsiterations has a positive value the smoothing process is considered as an application of the heat equation on the gray value function u with the initial value defined by the gray values of ImageImageImageImageimage at a time . This equation is then solved up to a time , which is equivalent to the above convolution, using an iterative procedure for parabolic partial differential equations. The computational complexity is proportional to the value of IterationsIterationsIterationsIterationsiterations and independent of SigmaSigmaSigmaSigmasigma in this case. For small values of IterationsIterationsIterationsIterationsiterations, the computational accuracy is very low, however. For this reason, choosing IterationsIterationsIterationsIterationsiterations < 3 is not recommended.

For smaller values of SigmaSigmaSigmaSigmasigma, the convolution implementation is typically the faster method. Since the runtime of the partial differential equation solver only depends on the number of iterations and not on the value of SigmaSigmaSigmaSigmasigma, it is typically faster for large values of SigmaSigmaSigmaSigmasigma if few iterations are chosen (e.g., IterationsIterationsIterationsIterationsiterations = 3).

For an explanation of the concept of smoothing filters see the introduction of chapter Filters / Smoothing.


Note that filter operators may return unexpected results if an image with a reduced domain is used as input. Please refer to the chapter Filters.

Execution Information


ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte / uint2 / real)

Input image.

SmoothedImageSmoothedImageSmoothedImageSmoothedImagesmoothedImage (output_object)  image(-array) objectHImageHImageHobject * (byte / uint2 / real)

Output image.

SigmaSigmaSigmaSigmasigma (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Standard deviation of the Gauss distribution.

Default value: 1.0

Suggested values: 0.1, 0.5, 1.0, 3.0, 10.0, 20.0, 50.0

Restriction: Sigma > 0

IterationsIterationsIterationsIterationsiterations (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Number of iterations.

Default value: 10

Suggested values: 0, 3, 10, 100, 500

Restriction: Iterations >= 0