inpainting_ced — Perform an inpainting by coherence enhancing diffusion.
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
u_t = div(G(u) grad u)
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
u_t = div(grad u/|grad u|) |grad u| = curv(u) |grad u|
on the gray value function u defined by the input image Image at a time t_0 = 0. 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 artefacts or smoothing effects, so that the image manipulation is least visible to a human beholder.
While the matrix G is given by
G_MCF(u) = I - (grad u (grad u)^T)/|grad u|^2
in the case of the operator inpainting_mcf, where I denotes the unit matrix, G_MCF is again smoothed componentwise by a Gaussian filter of standard deviation Rho for coherence_enhancing_diff. Then, the final coefficient matrix
G_CED = g_1((l_1-l_2)^2) w_1 (w_1)^T + g_2((l_1-l_2)^2) w_2 (w_2)^T
is constructed from the eigenvalues l_1,l_2 and eigenvectors w_1,w_2 of the resulting intermediate matrix, where the functions
g_1(p) = 0.001 g_2(p) = 0.001 + 0.999 exp(-1/p)
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 G_CED 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 neighbourhood, 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.
Smoothing for derivative operator.
Default value: 0.5
Suggested values: 0.0, 0.1, 0.5, 1.0
Restriction: Sigma >= 0
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
Default value: 0.5
Suggested values: 0.1, 0.2, 0.3, 0.4, 0.5
Restriction: 0 < Theta <= 0.5
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,
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.