Skip to content

A Qt-based application to restore images with various inpainting methods

License

Notifications You must be signed in to change notification settings

agarnung/image-inpainting-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image-inpainting-app

A Qt-based application to restore images with various inpainting methods.

This is also a reservoir for image inpainting algorithms in C++ (for personal amusement).

Application main window

Original Inpainted
bird bald_bird
input1 result1
input2 result2

Installation

The application is fully packed inside a Docker container, check these instructions to get started.

The app has been tested on the following platforms:

  • Pop!_OS 22.04 LTS with Qt 6.8.1, Qt Creator 15.0.0 and GCC 11.4.0.

Usage

The app consists of a self-explanatory GUI and it contains a useful Help file. The following table explains the functionality for the GUI icons:

Icon Functionality
Import image
Save image
Show information about the application
Activate pencil drawing mode (only available in Noise image mode)
Adjust pencil properties
Original image Show original image
Noisy image Show noisy image
Inpainted image Show inpainted image
Inpainting mask Show inpainting mask
Clear all Clear all images and setup
Reset draw Reset pencil drawing
Noise Add noise to the image
XYZ Image Inpainting Use your favourite image inpainting algorithm

Available algorithms

Algorithm Description Link / Reference
BurgersViscousImageInpainting Implements the inpainting algorithm based on the viscous Burgers' equation Burgers Equation
CahnHilliardImageInpainting Implements the inpainting algorithm based on the Cahn-Hilliard equation Cahn-Hilliard Equation
MaxwellHeavisideImageInpainting Implements the inpainting algorithm based on the Maxwell-Heaviside equations Maxwell-Heaviside Theory
NavierStokesImageInpainting Executes the image inpainting algorithm from OpenCV based on Navier-Stokes equations OpenCV Navier-Stokes
TeleaImageInpainting Executes the TELEA algorithm from OpenCV Telea Inpainting
CriminisiImageInpainting Implements Criminisi inpainting, based on cheind Criminisi
FastDigitalImageInpainting Implements Fast Digital Image Inpainting, based on this Paper
LaplacianImageInpainting Implements Laplacian Digital Image Inpainting, based on this Paper
HarmonicImageInpainting Heat (Harmonic) Equation Image Inpainting Carola-Bibiane Schönlieb
... ... ...

TODO

  • Mejorar lo de esconder y mostrar las labels. Por ejemplo, unir en un solo el label de mensaje temporal y tipo de imagen.
  • Crear GIF de funcionamiento para el README
  • Meter estadísticas de PSNR, MSE y SSIM tras hacer el inpainting
  • Explicaciones de app e iconos en README. Enlazar el README en hipervínculo desde el About de la aplicación
  • Explicaciones someras con ejemplo visuales de qué algoritmo va mejor para qué caso
  • Gran problema: cuando se cambia grosor del lápiz, que no afecte al dibujo anterior, o sea, guardar el histórico de tuplas paths-grosor, no solo path.
  • No aparece al brush style por defecto en docker, al cambiar el estilo del lápiz, por qué.
  • Distribuir la imagen docker de la aplicación en Docker Registry o subirla el .tar a algún lado
  • Release the app in AppImage format
  • Implementar los algoritmos comentados en este README
  • Diseñar un botón de "parar algoritmo" para abortar el procesamiento de CalculationThread
  • Añadir el parámetro drawWhites al tipo de ruido; no sé qué problema daba el validador con tipo booleano.

References

About

A Qt-based application to restore images with various inpainting methods

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages