ClassesClassesClassesClasses | | | | Operators

isotropic_diffusionisotropic_diffusionIsotropicDiffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusion (Operator)


isotropic_diffusionisotropic_diffusionIsotropicDiffusionisotropic_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)

Herror isotropic_diffusion(Hobject Image, Hobject* SmoothedImage, const HTuple& Sigma, const HTuple& Iterations)

HImage HImage::IsotropicDiffusion(const HTuple& Sigma, const HTuple& Iterations) const

HImageArray HImageArray::IsotropicDiffusion(const HTuple& Sigma, const HTuple& Iterations) const

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

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

void HOperatorSetX.IsotropicDiffusion(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*SmoothedImage, [in] VARIANT Sigma, [in] VARIANT Iterations)

IHImageX* HImageX.IsotropicDiffusion(
[in] double Sigma, [in] Hlong Iterations)

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

HImage HImage.IsotropicDiffusion(double sigma, int iterations)


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

If IterationsIterationsIterationsIterationsIterationsiterations has a positive value the smoothing process is considered as an application of the heat equation

  u_t = laplace(u)

on the gray value function u with the initial value u = u_0 defined by the gray values of ImageImageImageImageImageimage at a time t_0. This equation is then solved up to a time t_0 + 1/2 SigmaSigmaSigmaSigmaSigmasigma^2 , 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 IterationsIterationsIterationsIterationsIterationsiterations and independent of SigmaSigmaSigmaSigmaSigmasigma in this case. For small values of IterationsIterationsIterationsIterationsIterationsiterations, the computational accuracy is very low, however. For this reason, choosing IterationsIterationsIterationsIterationsIterationsiterations < 3 is not recommended.

For smaller values of SigmaSigmaSigmaSigmaSigmasigma, 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 SigmaSigmaSigmaSigmaSigmasigma, it is typically faster for large values of SigmaSigmaSigmaSigmaSigmasigma if few iterations are chosen (e.g., IterationsIterationsIterationsIterationsIterationsiterations = 3).



ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte / uint2 / real)

Input image.

SmoothedImageSmoothedImageSmoothedImageSmoothedImageSmoothedImagesmoothedImage (output_object)  image(-array) objectHImageHImageHImageHImageXHobject * (byte / uint2 / real)

Output image.

SigmaSigmaSigmaSigmaSigmasigma (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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

IterationsIterationsIterationsIterationsIterationsiterations (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Number of iterations.

Default value: 10

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

Restriction: Iterations >= 0



ClassesClassesClassesClasses | | | | Operators