inpainting_aniso — Perform an inpainting by anisotropic diffusion.
The operator inpainting_aniso uses the anisotropic diffusion according to the model of Perona and Malik, to continue image edges that cross the border of the region Region and to connect them inside of Region.
With this, the structure of the edges in Region will be made consistent with the surrounding image matrix, so that an occlusion of errors or unwanted objects in the input image, a so called inpainting, is less visible to the human beholder, since there remain no obvious artefacts or smudges.
Considering the image as a gray value function u, the algorithm is a discretization of the partial differential equation
The primary goal of the anisotropic diffusion, which is also referred to as nonlinear isotropic diffusion, is the elimination of image noise in constant image patches while preserving the edges in the image. The distinction between edges and constant patches is achieved using the threshold Contrast on the magnitude of the gray value differences between adjacent pixels. Contrast is referred to as the contrast parameter and is abbreviated with the letter c. If the edge information is distributed in an environment of the already existing edges by smoothing the edge amplitude matrix, it is furthermore possible to continue edges into the computation area Region. The standard deviation of this smoothing process is determined by the parameter Rho.
The algorithm used is basically the same as in the anisotropic diffusion filter anisotropic_diffusion, except that here, border treatment is not done by mirroring the gray values at the border of Region. Instead, this procedure is only applicable on regions that keep a distance of at least 3 pixels to the border of the image matrix of Image, since the gray values on this band around Region are used to define the boundary conditions for the respective differential equation and thus assure consistency with the neighborhood of Region. 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.
The result of the diffusion process depends on the gray values in the computation area of the input image Image. It must be pointed out that already exisiting image edges are preserved within Region. In particular, this holds for gray value jumps at the border of Region, which can result for example from a previous inpainting with constant gray value. If the procedure is to be used for inpainting, it is recommended to apply the operator harmonic_interpolation first to remove all unwanted edges inside the computation area and to minimize the gray value difference between adjacent pixels, unless the input image already contains information inside Region that should be preserved.
The variable diffusion coefficient g can be chosen to follow different monotonically decreasing functions with values between 0 and 1 and determines the response of the diffusion process to an edge. With the parameter Mode, the following functions can be selected:
Furthermore, the choice of the value 'shock' is possible for Mode to select a contrast invariant modification of the anisotropic diffusion. In this variant, the generation of edges is not achieved by variation of the diffusion coefficient g, but the constant coefficient g=1 and thus isotropic diffusion is used. Additionally, a shock filter of type
Type of edge sharpening algorithm.
Default value: 'weickert'
List of values: 'parabolic', 'perona-malik', 'shock', 'weickert'
Default value: 5.0
Suggested values: 0.5, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0
Restriction: Contrast > 0
Default value: 0.5
Suggested values: 0.5, 1.0, 5.0, 10.0, 30.0, 100.0
Restriction: Theta > 0
Number of iterations.
Default value: 10
Suggested values: 1, 3, 10, 100, 500
Restriction: Iterations >= 1
Smoothing coefficient for edge information.
Default value: 3.0
Suggested values: 0.0, 0.1, 0.5, 1.0, 3.0, 10.0
Restriction: Rho >= 0
read_image (Image, 'fabrik') gen_rectangle1 (Rectangle, 270, 180, 320, 230) harmonic_interpolation (Image, Rectangle, InpaintedImage, 0.01) inpainting_aniso (InpaintedImage, Rectangle, InpaintedImage2, \ 'perona-malik', 5.0, 100, 50, 0.5) dev_display(InpaintedImage2)
harmonic_interpolation, inpainting_ct, inpainting_mcf, inpainting_texture, inpainting_ced
J. Weickert; “Anisotropic Diffusion in Image Processing”; PhD
Thesis; Fachbereich Mathematik, Universität Kaiserslautern; 1996.
P. Perona, J. Malik; “Scale-space and edge detection using anisotropic diffusion”; Transactions on Pattern Analysis and Machine Intelligence 12(7), pp. 629-639; IEEE; 1990.
G. Aubert, P. Kornprobst; “Mathematical Problems in Image Processing”; Applied Mathematical Sciences 147; Springer, New York; 2002.