All Projects → zavolokas → Inpainting

zavolokas / Inpainting

Licence: mit
Want to remove something(someone) from a photo as it never was there? This is .NET implementation of content-aware fill. It smartly fills in unwanted or missing areas of photographs.

Projects that are alternatives of or similar to Inpainting

Pesdk Ios Examples
A fully customizable photo editor for your app.
Stars: ✭ 837 (+198.93%)
Mutual labels:  image-processing, photo-editing
Graphite
Open source 2D node-based raster/vector graphics editor (Photoshop + Illustrator + Houdini = Graphite)
Stars: ✭ 223 (-20.36%)
Mutual labels:  image-processing, photo-editing
Photo Editor Android
Photo Editor SDK contains a lot of features like edit, scale, rotate and draw on images like Instagram stories.
Stars: ✭ 463 (+65.36%)
Mutual labels:  image-processing, photo-editing
Resizer
An image resizing library for Android
Stars: ✭ 406 (+45%)
Mutual labels:  image-processing, photo-editing
Photon
⚡ Rust/WebAssembly image processing library
Stars: ✭ 963 (+243.93%)
Mutual labels:  hacktoberfest, image-processing
Gocv
Go package for computer vision using OpenCV 4 and beyond.
Stars: ✭ 4,511 (+1511.07%)
Mutual labels:  hacktoberfest, image-processing
Nimp
Nimp - Node-based image manipulation program.
Stars: ✭ 45 (-83.93%)
Mutual labels:  image-processing, photo-editing
Color Tracker
Color tracking with OpenCV
Stars: ✭ 128 (-54.29%)
Mutual labels:  hacktoberfest, image-processing
Ndarray Vision
Computer vision library built on top of ndarray
Stars: ✭ 17 (-93.93%)
Mutual labels:  hacktoberfest, image-processing
Imagesharp
📷 A modern, cross-platform, 2D Graphics library for .NET
Stars: ✭ 5,186 (+1752.14%)
Mutual labels:  hacktoberfest, image-processing
Seamcarving
Image processing method that allows to remove an object from a photo.
Stars: ✭ 89 (-68.21%)
Mutual labels:  hacktoberfest, image-processing
Photoflare
Quick, simple but powerful Cross Platform image editor.
Stars: ✭ 260 (-7.14%)
Mutual labels:  image-processing, photo-editing
Deno Manual Cn
Deno 中文手册
Stars: ✭ 278 (-0.71%)
Mutual labels:  hacktoberfest
Phpdocumentor
Documentation Generator for PHP
Stars: ✭ 3,341 (+1093.21%)
Mutual labels:  hacktoberfest
Sqlserverdsc
This module contains DSC resources for deployment and configuration of Microsoft SQL Server.
Stars: ✭ 278 (-0.71%)
Mutual labels:  hacktoberfest
Stopstalk Deployment
Stop stalking and start StopStalking 😉
Stars: ✭ 276 (-1.43%)
Mutual labels:  hacktoberfest
Openjailbreak
GeoSn0w's OpenJailbreak Project, an open-source iOS 11 to iOS 13 Jailbreak project & vault.
Stars: ✭ 277 (-1.07%)
Mutual labels:  hacktoberfest
Gqless
a GraphQL client without queries
Stars: ✭ 3,569 (+1174.64%)
Mutual labels:  hacktoberfest
Alltheplaces
A set of spiders and scrapers to extract location information from places that post their location on the internet.
Stars: ✭ 277 (-1.07%)
Mutual labels:  hacktoberfest
Neode
Neo4j OGM for Node.js
Stars: ✭ 276 (-1.43%)
Mutual labels:  hacktoberfest

Inpainting

license Build Status Drone Status Donate Tweet

.NET implementation of content-aware fill (also known as inpainting or image completion) in image processing domain.

What is it for?

Content aware fill is used to fill in unwanted or missing areas of photographs. See an example of such fill below where we don't want to have the man in blue t-shirt on our picture:

Original image Processed image
t009 r009

Try in Docker

docker run -p 5000:80 -it --rm zavolokas/inpainter:latest

Navigate to http://localhost:5000

How to use it?

var inpainter = new Inpainter();
var result = inpainter.Inpaint(imageArgb, markupArgb, donors);
result
    .FromArgbToBitmap()
    .SaveTo(resultPath, ImageFormat.Png)
    .ShowFile();

The Inpainter takes as input

  • an image to inpaint
  • a simitransparent image with a mask
  • optionally it takes a set of simitransparent images that define donor areas for the parts of the area to inpaint.
  • optionally it takes an instance of settings.

Note: the images are not GDI+ images but images in an internal format and can be obtained from GDI+ Bitmaps using extensions.

Examples

Original Markup Process
t009 m009 p009
t020 m020 p020
t023 m023 p023
t058 m058 p058
t067 m067 p067

Settings

The execution of the algorithm can be customized by adjusting the settings.

  • MaxInpaintIterations: determines how many iterations will be run to find better values for the area to fill. The more iterations you run, the better result you'll get.
  • PatchDistanceCalculator: determines algorithm to use for calculating a metrics how much one color is different from another. Possible values are:
    • Cie76 - fastest
    • Cie2000 - more accurate

Donors

Credits

The implementation is based on following publications:

  • Yonatan Wexler, Eli Schechtman and Michal Irani Space-time completion of video IEEE. Trans. Pattern Analysis and Machine Intelligence, 29 (2007)
  • Connelly Barnes, Eli Shechtman, Adam Finkelstein, and Dan B Goldman. PatchMatch: A Randomized Correspondence Algorithm for Structural Image Editing. ACM Transactions on Graphics (Proc. SIGGRAPH) 28(3), August 2009
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].