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