inpainting_ced
— Perform an inpainting by coherence enhancing diffusion.
inpainting_ced(Image, Region : InpaintedImage : Sigma, Rho, Theta, Iterations : )
The operator inpainting_ced
performs an anisotropic
diffusion process on the region Region
of the input image
Image
with the objective of completing discontinuous image
edges diffusively by increasing the coherence of the image
structures contained in Image
and without smoothing these
edges perpendicular to their dominating direction. The mechanism is
the same as in the operator coherence_enhancing_diff
, which
is based on a discretization of 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. With the operator
inpainting_mcf
, it can also be used for image
inpainting. The discrete diffusion equation is solved in
Iterations
time steps of length Theta
, so that the
output image InpaintedImage
contains the gray value
function at the time Iterations
* Theta
.
To detect the image 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.
Similar to the operator inpainting_mcf
, the structure of the
image data in Region
is simplified by smoothing the level
lines of Image
. By this, image errors and unwanted objects
can be removed from the image, while the edges in the neighborhood
are extended continuously. This procedure is called image
inpainting. The objective is to introduce a minimum amount of
artifacts or smoothing effects, so that the image manipulation is
least visible to a human beholder.
While the matrix G is given by
in the case of the operator inpainting_mcf
, 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.
To achieve the highest possible consistency of the newly created
edges with the image data from the neighborhood, the gray values
are not mirrored at the border of Region
to compute the
convolution with the smoothing filter mask of scale Rho
on
the pixels close to the border, although this would be the common
approach for filter operators. Instead, the existence of gray values
on a band of width ceil(3.1*Rho)+2 pixels around Region
is presumed and these values are used in the convolution. This means
that Region
must keep this much distance to the border of
the image matrix Image
. By involving the gray values and
directional information from this extended area, it can be achieved
that the continuation of the edges is not only continuous, but also
smooth, which means without kinks. Please note that the inpainting
progress is restricted to those pixels that are included in the ROI
of the input image Image
. If the ROI does not include the
entire region Region
, a band around the intersection of
Region
and the ROI is used to define the boundary values.
To decrease the number of iterations required for attaining a
satisfactory result, it may be useful to initialize the gray value
matrix in Region
with the harmonic interpolant, a
continuous function of minimal curvature, by applying the operator
harmonic_interpolation
to Image
before calling
inpainting_ced
.
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.
Region
(input_object) region →
object
Inpainting region.
InpaintedImage
(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
read_image (Image, 'fabrik') gen_rectangle1 (Rectangle, 270, 180, 320, 230) harmonic_interpolation (Image, Rectangle, InpaintedImage, 0.01) inpainting_ced (InpaintedImage, Rectangle, InpaintedImage2, \ 0.5, 3.0, 0.5, 1000) dev_display(InpaintedImage2)
harmonic_interpolation
,
inpainting_ct
,
inpainting_aniso
,
inpainting_mcf
,
inpainting_texture
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