Skip to content

Inpainting Module Reference

Restores missing or corrupted regions in an image using the Telea Fast Marching Method.

::: note This module is under active development. API signatures may change between versions. :::

Function

rust
pub fn inpaint<B: Backend>(
    image: &Image<B>,
    mask: &Image<B>,
    radius: f32,
) -> Result<Image<B>>

Performs inpainting on image using a binary mask to identify regions to fill. The radius parameter controls the neighborhood size used for pixel propagation.

Parameters

ParameterTypeDescription
image&Image<B>Source image with missing or corrupted regions.
mask&Image<B>Binary mask (same dimensions as image) where non-zero pixels mark areas to inpaint.
radiusf32Radius of the Fast Marching propagation kernel. Larger values consider more surrounding pixels.

Returns

Result<Image<B>> — The inpainted image with mask regions filled.

Algorithm

The Telea method treats inpainting as a Fast Marching problem. Starting from the boundary of the masked region, it propagates pixel values inward using a weighted average of known neighbors, controlled by the radius.

Example

rust
use iris::prelude::*;
use burn::backend::wgpu::Wgpu;

type Backend = Wgpu;
let device = Default::default();

let image = Image::<Backend>::open("photo.png", &device)?;
let mask = Image::<Backend>::open("mask.png", &device)?;

// Inpaint with a radius of 3 pixels
let restored = inpaint(&image, &mask, 3.0)?;
restored.save("restored.png")?;

Use Cases

  • Scratch and dust removal from scanned photos
  • Removing unwanted objects from images
  • Filling in missing data from occluded regions
  • Restoring damaged artwork or historical documents

Released under the MIT License.