coherence_enhancing_diff — Perform a coherence enhancing diffusion of an image.
The operator coherence_enhancing_diff performs an
anisotropic diffusion process on the input image Image to
increase the coherence of the image structures contained in
Image. In particular, noncontinuous image edges are
connected by diffusion, without being smoothed perpendicular to
their dominating direction. For this,
coherence_enhancing_diff uses the anisotropic diffusion
equation
formulated by Weickert. With a 2x2 coefficient
matrix G that depends on the gray values in Image, this
is an enhancement of the mean curvature flow or intrinsic heat
equation
on the gray value function u defined by the input image
Image at a time . The smoothing
operator mean_curvature_flow is a direct application of the
mean curvature flow equation. The discrete diffusion equation is
solved in Iterations time steps of length Theta,
so that the output image ImageCED contains the gray value
function at the time .
To detect the edge direction more robustly, in particular on noisy
input data, an additional isotropic smoothing step can precede the
computation of the gray value gradients. The parameter
Sigma determines the magnitude of the smoothing by means of
the standard deviation of a corresponding Gaussian convolution
kernel, as used in the operator isotropic_diffusion for
isotropic image smoothing.
While the matrix G is given by
in the case of the operator mean_curvature_flow, where I
denotes the unit matrix, is again
smoothed componentwise by a Gaussian filter of standard deviation
Rho for coherence_enhancing_diff. Then, the final
coefficient matrix
is constructed from the eigenvalues
and eigenvectors
of the resulting intermediate matrix,
where the functions
were determined empirically and taken from the publication of
Weickert.
Hence, the diffusion direction in mean_curvature_flow is
only determined by the local direction of the gray value gradient,
while considers the macroscopic structure of
the image objects on the scale Rho and the magnitude of the
diffusion in coherence_enhancing_diff depends on how well
this structure is defined.
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.
Image (input_object) (multichannel-)image(-array) → object (byte / uint2 / real)
Input image.
ImageCED (output_object) image(-array) → object (byte / uint2 / real)
Output image.
Sigma (input_control) real → (real)
Smoothing for derivative operator.
Default value: 0.5
Suggested values: 0.0, 0.1, 0.5, 1.0
Restriction: Sigma >= 0
Rho (input_control) real → (real)
Smoothing for diffusion coefficients.
Default value: 3.0
Suggested values: 0.0, 1.0, 3.0, 5.0, 10.0, 30.0
Restriction: Rho >= 0
Theta (input_control) real → (real)
Time step.
Default value: 0.5
Suggested values: 0.1, 0.2, 0.3, 0.4, 0.5
Restriction: 0 < Theta <= 0.5
Iterations (input_control) integer → (integer)
Number of iterations.
Default value: 10
Suggested values: 1, 5, 10, 20, 50, 100, 500
Restriction: Iterations >= 1
J. Weickert, V. Hlavac, R. Sara; “Multiscale texture
enhancement”; Computer analysis of images and patterns, Lecture
Notes in Computer Science, Vol. 970, pp. 230-237; Springer,
Berlin; 1995.
J. Weickert, B. ter Haar Romeny, L. Florack, J. Koenderink,
M. Viergever; “A review of nonlinear diffusion filtering”;
Scale-Space Theory in Computer Vision, Lecture Notes in
Comp. Science, Vol. 1252, pp. 3-28; Springer, Berlin; 1997.
Foundation