python alphashape_PyMatting: 一个用于Alpha遮罩的Python库

PyMatting 是一个Python库,专注于解决Alpha遮罩问题。它提供了多种方法,包括闭合形式、大核、KNN、基于学习和随机游走等alpha matting算法,以及前景估计。该库利用NumPy、SciPy和Numba实现可读的代码,并支持GPU加速。
摘要由CSDN通过智能技术生成

PyMatting: A Python Library for Alpha Matting

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

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")

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.

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:

@misc{germer2020pymatting,

title={PyMatting: A Python Library for Alpha Matting},

author={Thomas Germer and Tobias Uelwer and Stefan Conrad and Stefan Harmeling},

year={2020},

eprint={2003.12382},

archivePrefix={arXiv},

primaryClass={cs.CV}

}

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值