Skip to main content

Python package for alpha matting.

Project description

PyMatting: A Python Library for Alpha Matting

License: MIT Build Status PyPI

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]
    • Multilevel Foreground Estimation (CPU, CUDA and OpenCL)
  • 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.png",
    # input trimap path
    "data/lemur_trimap.png",
    # output cutout path
    "lemur_cutout.png")

More advanced examples

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.

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

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyMatting-1.0.6.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

PyMatting-1.0.6-py3-none-any.whl (40.1 kB view details)

Uploaded Python 3

File details

Details for the file PyMatting-1.0.6.tar.gz.

File metadata

  • Download URL: PyMatting-1.0.6.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.27.0 CPython/3.6.9

File hashes

Hashes for PyMatting-1.0.6.tar.gz
Algorithm Hash digest
SHA256 1aed73f9821746ed42db580b1e3ff811879f3b9496fd44db1dc8d51ba04d5146
MD5 2b6a1339d4aab5377cbf4b8bac1f100d
BLAKE2b-256 5a0a18f52e1175c0e08a8dc58dfafb8e77305907d00fa14d866a0bc11538723e

See more details on using hashes here.

Provenance

File details

Details for the file PyMatting-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: PyMatting-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 40.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.27.0 CPython/3.6.9

File hashes

Hashes for PyMatting-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0c4b9bcdacdfdf151a77379791b6b679e4739f4d1b82b79bf7cc04bae1a5a3cb
MD5 2cebb26685f481688edb3ba03225e51a
BLAKE2b-256 af88f551467f6c435c7f2fdd80aad640c8478c72922c2c61a69d0e40c487a530

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page