一键抠图,毛发毕现:这个GitHub项目助你快速PS

简介: 快速抠图不留痕,设计看了都精神。

抠图是 PS 中的一项常用技术。但是要做到完美地将图像中的目标选取出来往往费时费力。近日,一个名为 PyMatting 的项目无疑能够帮助你。


项目地址:https://github.com/pymatting/pymatting


无需手动,一键抠图


抠图的 AI 应用场景是这样的:给定一张图像,通过划定一个区域,AI 应当能够估计到划定区域内的前景图目标,并将这个前景完整地抽取出来,用来替换到其他背景的图像中去。


因此,抠图需要两个 AI 能力:首先,AI 需要能够在划定的区域内识别目标。其次,AI 要能够完整地将目标抽取出来,没有划定错误的边缘、模糊的图像等问题。


微信图片_20211203095332.jpg


上图为项目作者提供的示例。给定一只动物的图像(左上),以及人划定的区域(右上),算法应当能够获得划定区域内目标的阿尔法通道,即区分前景和背景的黑白轮廓(左下)。有了这一数据,就可以从原图中抠去目标,并移动到新的图像中去(右下)。


据项目介绍,PyMatting 具有以下特性。


首先,项目能够完成阿尔法抠图(Alpha Matting),其中包括 Closed-Form 抠图、大核抠图(Large Kernel Matting)、KNN 抠图、基于学习的数字抠图(Learning Based Digital Matting)、随机游走(Random Walk)抠图等算法。


同时,项目也能完成前景预估,包括 Clos Form 前景预估和多级别前景预估(基于 CPU、CUDA 和 OpenCL 等)算法。


该项目还可以进行快速多线程 KNN 搜索、不完全阈值化楚列斯基分解(incomplete thresholded Cholesky decomposition)、V 轮几何多网格预条件子(V-Cycle Geometric Multigrid preconditioner)等。


使用方法


在使用前,你需要保证电脑安装相应的 Python 环境(Python 3),同时需要以下安装包:


numpy>=1.16.0

pillow>=5.2.0

numba>=0.47.0

scipy>=1.1.0


由于项目需要 GPU,因此也需要 GPU 相关支持:

cupy-cuda90>=6.5.0 or similar

pyopencl>=2019.1.2


除此之外,为了进行测试,也需要:

pytest>=5.3.4


为了方便使用,作者提供了一些示例代码。例如,如下代码中,给定原始图像和抠图框,可以抽取出阿尔法前景:

from pymatting import cutout

cutout(

   # input image path"data/lemur.png",

   # input trimap path"data/lemur_trimap.png",

   # output cutout path"lemur_cutout.png")


作者还提供了高级代码,直接进行抠图,生成新图像:


image = load_image("../data/lemur/lemur.png", "RGB", scale, "box")

trimap = load_image("../data/lemur/lemur_trimap.png", "GRAY", scale, "nearest")

# estimate alpha from image and trimap

alpha = estimate_alpha_cf(image, trimap)

# make gray background

new_background = np.zeros(image.shape)

new_background[:, :] = [0.5, 0.5, 0.5]

# estimate foreground from image and alpha

foreground, background = estimate_foreground_ml(image, alpha, return_background=True)

# blend foreground with background and alpha, less color bleeding

new_image = blend(foreground, new_background, alpha)


除了代码示例外,项目还提供了测试代码,可在主目录中运行:

python3 tests/download_images.py

pip3 install -r requirements_tests.txt

pytest

这一测试能够覆盖 89% 的代码。


除了项目外,作者还提供了不同的抠图算法的基准测试结果,如下所示:

微信图片_20211203095715.jpg不同算法在测试数据集上的均方误差大小。


可以看出,基于学习的算法和 Closed-Form 算法都能取得不错的效果。


完整的基准测试结果:https://pymatting.github.io/benchmark.html


相关文章
|
3月前
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法
|
1月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
79 3
|
3月前
|
Java
Java系列之 解决 项目 jar 包无法上传到Github
该博客文章介绍了解决Java项目中jar包无法上传到Github的问题,通过修改`.gitignore`文件来包含jar包,从而成功添加到上传目录。
Java系列之 解决 项目 jar 包无法上传到Github
|
3月前
|
Rust 前端开发 JavaScript
Github 2024-05-20 开源项目周报 Top15
根据Github Trendings的统计,2024年5月20日当周共有15个项目上榜。按开发语言分类,项目数量如下:Python项目5个,TypeScript项目3个,C++项目2个,Jupyter Notebook项目2个,C、Go、Rust和C#项目各1个。介绍了多个值得关注的项目,包括ChatGPT桌面应用程序、Fooocus图像生成软件、Jellyfin媒体系统等。这些项目涵盖了多种功能和技术领域,值得关注和研究。
66 3
|
3月前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
3月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
118 2
|
3月前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
127 1
|
3月前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
110 1
|
3月前
|
JavaScript 前端开发 Go
Github 2024-08-12 开源项目周报 Top14
本周Github Trendings共有14个项目上榜,按开发语言汇总如下:Python项目7个,TypeScript项目5个,C项目2个,JavaScript项目2个,Go和Batchfile项目各1个。其中亮点包括开发者职业成长指南、Windows激活工具、ComfyUI图形界面、AFFiNE知识库、易采集可视化爬虫等项目,涵盖多种实用工具和开源平台。
130 1
|
3月前
|
存储 JavaScript 前端开发
Github 2024-07-29 开源项目周报Top15
根据 Github Trendings 的统计,本周(2024年7月29日统计)共有15个项目上榜。按开发语言分类,项目数量如下:Python、Java、HTML 和 C 项目各有2项;TypeScript、JavaScript、Vue 和 Go 各有1项;另有1项非特定语言项目、1项 Dart 项目、1项 C++ 项目、1项 Rust 项目及1项 Jupyter Notebook 项目。这些项目涵盖了多种领域,如API开发、照片管理、PDF处理、AI技术等。
62 1
下一篇
无影云桌面