All Projects → mdeff → Giin

mdeff / Giin

Graph-based Image Inpainting

Programming Languages

matlab
3953 projects

Projects that are alternatives of or similar to Giin

Prlib
Pre-Recognition Library - library with algorithms for improving OCR quality.
Stars: ✭ 18 (+157.14%)
Mutual labels:  image-processing
Kht
Kernel-Based Hough Transform for Detecting Straight Lines in Images
Stars: ✭ 24 (+242.86%)
Mutual labels:  image-processing
Dockerfile Libvips
🌄 All libvips dependencies & libvips built from source
Stars: ✭ 26 (+271.43%)
Mutual labels:  image-processing
Schwartz.js
ASCII Art JavaScript library
Stars: ✭ 19 (+171.43%)
Mutual labels:  image-processing
Ibeabfhr
Image Brightness Enhancement Automatically Based on Fast Haze Removal
Stars: ✭ 23 (+228.57%)
Mutual labels:  image-processing
Python Compare Images
This repository is mainly about comparing two images. The technique used is SSIM. i.e. Structural Similarity Index Measure We use some of the inbuilt functions available in python's skimage library to measure the SSIM value. Along with SSIM we also measure the MSE ( Mean Square Error ) To know more about the SSIM technique Refer Here: https://en.wikipedia.org/wiki/Structural_similarity
Stars: ✭ 25 (+257.14%)
Mutual labels:  image-processing
Pdi
Códigos produzidos durante a cadeira de processamento de imagens
Stars: ✭ 18 (+157.14%)
Mutual labels:  image-processing
Imagescout
A Swift implementation of fastimage. Supports PNG, GIF, and JPEG.
Stars: ✭ 940 (+13328.57%)
Mutual labels:  image-processing
Neural Neighbors
A simple web application for browsing similar images
Stars: ✭ 23 (+228.57%)
Mutual labels:  image-processing
Sickzil Machine
Manga/Comics Translation Helper Tool
Stars: ✭ 934 (+13242.86%)
Mutual labels:  image-processing
Mousemorph
Tools for MRI mouse brain morphometry
Stars: ✭ 19 (+171.43%)
Mutual labels:  image-processing
Concise Ipython Notebooks For Deep Learning
Ipython Notebooks for solving problems like classification, segmentation, generation using latest Deep learning algorithms on different publicly available text and image data-sets.
Stars: ✭ 23 (+228.57%)
Mutual labels:  image-processing
Pyspm
Python library to handle Scanning Probe Microscopy Images. Can read nanoscan .xml data, Bruker AFM images, Nanonis SXM files as well as iontof images(ITA, ITM and ITS).
Stars: ✭ 25 (+257.14%)
Mutual labels:  image-processing
Texturize
Image Quilting for Texture Transfer.
Stars: ✭ 18 (+157.14%)
Mutual labels:  image-processing
Hnr
🌟 An off-line handwritten numeral recognition system
Stars: ✭ 26 (+271.43%)
Mutual labels:  image-processing
Dmsmsgrcg
A photo OCR project aims to output DMS messages contained in sign structure images.
Stars: ✭ 18 (+157.14%)
Mutual labels:  image-processing
Logorain Ascii Art
Logorain-ASCII-Art: A simple Image to ASCII Art converter
Stars: ✭ 24 (+242.86%)
Mutual labels:  image-processing
Mycodo
An environmental monitoring and regulation system
Stars: ✭ 936 (+13271.43%)
Mutual labels:  graphs
Segmentation
Catalyst.Segmentation
Stars: ✭ 27 (+285.71%)
Mutual labels:  image-processing
Xdog Filter
Edge Detection with XDoG Filter
Stars: ✭ 26 (+271.43%)
Mutual labels:  image-processing

GIIN: Graph-based Image Inpainting

The project goal was to explore the applications of spectral graph theory to address the inpainting problem of large missing chunks. We used a non-local patch graph representation of the image and proposed a structure detector which leverages the graph representation and influences the fill-order of our exemplar-based algorithm. Our method achieved state-of-the-art performances.

inpainting

The algorithm

  1. Identify the potentially fillable unknown pixels.
  2. Give a priority to each of them and identify the one with the highest priority. We will inpaint that pixel.
  3. Find in the image and copy the patch which is the most similar to the patch around the chosen pixel.

Our innovation resides in the way to assign a priority to the unknown pixels. We want to assign a higher priority to the structure than to the texture in order to preserve it while reconstructing. We do it the following way:

  1. Construct a graph of pixels where the edge weights are defined as a similarity measure between the connected pixels.
  2. Place a dirac on the considered pixel.
  3. Diffuse the dirac with a heat kernel. As seen on the image, the diffused signal is constrained by the cluster around the tested pixel. From there, we should be able to determine if the considered pixel is part of a texture or a structure element. Looking at the spreading of the diffusion, texture and structure pixels are easily tell apart. structure diffusion
  4. The priority is then given by the l2 norm of the diffused signal. See the report for the motivation and mathematical definition.
  5. We finally add a confidence priority so that pixels who are farther away from the known pixels get lower priorities. priorities

Installation

Requirements

  • GSPbox: graph signal processing toolbox (version 0.4.0 should work)
  • UNLocBoX: convex optimization toolbox

Optional speed-up

The FLANN library implements fast algorithms to approximate nearest neighbors search. It can be used to speed up the graph construction. It is optional and if you do not want to use it you can comment param.nnparam.use_flann = 1; in lib/giin_patch_graph.m. Otherwise compile it this way:

cd gspbox/3rdparty/sources/flann-1.8.4-src/
mkdir build && cd build
cmake ..
make

Make sure that the MATLAB bin folder is in your path to compile the MEX. If it did work you should have a file called nearest_neighbors.mexa64 in build/src/matlab.

Usage

  1. Place a file image.png in the data sub-folder. The masked area should be bright green, i.e. RGB [0,255,0]. You may want to generate some synthetic images with e.g. giin_image('vertical');.

  2. Launch the inpainting process from MATLAB:

    inpaint('vertical');
    

    Or from the shell:

    ./launch.sh inpaint vertical
    

    You may then want to adjust the paths to the toolboxes in launch.sh.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].