All Projects β†’ pymatting β†’ Pymatting

pymatting / Pymatting

Licence: mit
A Python library for alpha matting

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Pymatting

Ibeabfhr
Image Brightness Enhancement Automatically Based on Fast Haze Removal
Stars: ✭ 23 (-97.33%)
Mutual labels:  image-processing
Dockerfile Libvips
πŸŒ„ All libvips dependencies & libvips built from source
Stars: ✭ 26 (-96.98%)
Mutual labels:  image-processing
Finite Transform Library
Fast transforms over finite fields
Stars: ✭ 7 (-99.19%)
Mutual labels:  image-processing
Kht
Kernel-Based Hough Transform for Detecting Straight Lines in Images
Stars: ✭ 24 (-97.21%)
Mutual labels:  image-processing
Xdog Filter
Edge Detection with XDoG Filter
Stars: ✭ 26 (-96.98%)
Mutual labels:  image-processing
Segmentation
Catalyst.Segmentation
Stars: ✭ 27 (-96.86%)
Mutual labels:  image-processing
Introduction To Programming With Matlab
Coursera Course: Introduction to Programming πŸ‘©β€πŸ’» with MATLAB ~by Vanderbilt University πŸŽ“
Stars: ✭ 23 (-97.33%)
Mutual labels:  image-processing
Image Actions
A Github Action that automatically compresses JPEGs, PNGs and WebPs in Pull Requests.
Stars: ✭ 844 (-1.86%)
Mutual labels:  image-processing
Sickzil Machine
Manga/Comics Translation Helper Tool
Stars: ✭ 934 (+8.6%)
Mutual labels:  image-processing
Sv Images
Image manipulation library with an HTTP based API.
Stars: ✭ 7 (-99.19%)
Mutual labels:  image-processing
Logorain Ascii Art
Logorain-ASCII-Art: A simple Image to ASCII Art converter
Stars: ✭ 24 (-97.21%)
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 (-97.09%)
Mutual labels:  image-processing
Imagescout
A Swift implementation of fastimage. Supports PNG, GIF, and JPEG.
Stars: ✭ 940 (+9.3%)
Mutual labels:  image-processing
Neural Neighbors
A simple web application for browsing similar images
Stars: ✭ 23 (-97.33%)
Mutual labels:  image-processing
Grafika
An image processing library for PHP
Stars: ✭ 838 (-2.56%)
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 (-97.33%)
Mutual labels:  image-processing
Hnr
🌟 An off-line handwritten numeral recognition system
Stars: ✭ 26 (-96.98%)
Mutual labels:  image-processing
Compositor Api
Compositor is a lightweight utility API for compositing images quickly and efficiently in Unity.
Stars: ✭ 9 (-98.95%)
Mutual labels:  image-processing
Cometa
Super fast, on-demand and on-the-fly, image processing.
Stars: ✭ 8 (-99.07%)
Mutual labels:  image-processing
Giin
Graph-based Image Inpainting
Stars: ✭ 7 (-99.19%)
Mutual labels:  image-processing

PyMatting: A Python Library for Alpha Matting

License: MIT CI PyPI JOSS Gitter

We introduce the PyMatting package for Python which implements various methods to solve the alpha matting problem.

Lemur

Given an input image and a hand-drawn trimap (top row), alpha matting estimates the alpha channel of a foreground object which can then be composed onto a different background (bottom row).

PyMatting provides:

  • Alpha matting implementations for:
    • Closed Form Alpha Matting [1]
    • Large Kernel Matting [2]
    • KNN Matting [3]
    • Learning Based Digital Matting [4]
    • Random Walk Matting [5]
  • Foreground estimation implementations for:
    • Closed Form Foreground Estimation [1]
    • Fast Multi-Level Foreground Estimation (CPU, CUDA and OpenCL) [6]
  • Fast multithreaded KNN search
  • Preconditioners to accelerate the convergence rate of conjugate gradient descent:
    • The incomplete thresholded Cholesky decomposition (Incomplete is part of the name. The implementation is quite complete.)
    • The V-Cycle Geometric Multigrid preconditioner
  • Readable code leveraging NumPy, SciPy and Numba

Getting Started

Requirements

Minimal requiremens

  • numpy>=1.16.0
  • pillow>=5.2.0
  • numba>=0.47.0
  • scipy>=1.1.0

Additional requirements for GPU support

  • cupy-cuda90>=6.5.0 or similar
  • pyopencl>=2019.1.2

Requirements to run the tests

  • pytest>=5.3.4

Installation with PyPI

pip3 install pymatting

Installation from Source

git clone https://github.com/pymatting/pymatting
cd pymatting
pip3 install .

Example

from pymatting import cutout

cutout(
    # input image path
    "data/lemur/lemur.png",
    # input trimap path
    "data/lemur/lemur_trimap.png",
    # output cutout path
    "lemur_cutout.png")

More advanced examples

Trimap Construction

All implemented methods rely on trimaps which roughly classify the image into foreground, background and unknown reagions. Trimaps are expected to be numpy.ndarrays of type np.float64 having the same shape as the input image with only one color-channel. Trimap values of 0.0 denote pixels which are 100% background. Similarly, trimap values of 1.0 denote pixels which are 100% foreground. All other values indicate unknown pixels which will be estimated by the algorithm.

Testing

Run the tests from the main directory:

 python3 tests/download_images.py
 pip3 install -r requirements_tests.txt
 pytest

Currently 89% of the code is covered by tests.

Bug Reports, Questions and Pull-Requests

Please, see our community guidelines.

Authors

  • Thomas Germer
  • Tobias Uelwer
  • Stefan Conrad
  • Stefan Harmeling

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Citing

If you found PyMatting to be useful for your work, please consider citing our paper:

@article{Germer2020,
  doi = {10.21105/joss.02481},
  url = {https://doi.org/10.21105/joss.02481},
  year = {2020},
  publisher = {The Open Journal},
  volume = {5},
  number = {54},
  pages = {2481},
  author = {Thomas Germer and Tobias Uelwer and Stefan Conrad and Stefan Harmeling},
  title = {PyMatting: A Python Library for Alpha Matting},
  journal = {Journal of Open Source Software}
}

References

[1] Anat Levin, Dani Lischinski, and Yair Weiss. A closed-form solution to natural image matting. IEEE transactions on pattern analysis and machine intelligence, 30(2):228–242, 2007.

[2] Kaiming He, Jian Sun, and Xiaoou Tang. Fast matting using large kernel matting laplacian matrices. In 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2165–2172. IEEE, 2010.

[3] Qifeng Chen, Dingzeyu Li, and Chi-Keung Tang. Knn matting. IEEE transactions on pattern analysis and machine intelligence, 35(9):2175–2188, 2013.

[4] Yuanjie Zheng and Chandra Kambhamettu. Learning based digital matting. In 2009 IEEE 12th international conference on computer vision, 889–896. IEEE, 2009.

[5] Leo Grady, Thomas Schiwietz, Shmuel Aharon, and RΓΌdiger Westermann. Random walks for interactive alpha-matting. In Proceedings of VIIP, volume 2005, 423–429. 2005.

[6] Germer, T., Uelwer, T., Conrad, S., & Harmeling, S. (2020). Fast Multi-Level Foreground Estimation. arXiv preprint arXiv:2006.14970.

Lemur image by Mathias Appel from https://www.flickr.com/photos/mathiasappel/25419442300/ licensed under CC0 1.0 Universal (CC0 1.0) Public Domain License.

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].