跟随本文以及 GitHub 上的完整代码实现。在 Google Colab 中打开笔记本,导入你的图片,然后运行单元格!
最初发表于 louisbouchard.ai ,两天前在我的博客上读到的!
凯文·Ku 在 Unsplash 上拍摄的照片
图像抠图是一项非常有趣的任务,目标是在图片中找到任何感兴趣的对象或人,并移除其背景。这项任务很难完成,因为它的复杂性,找到完美轮廓的人,人或物体。这篇文章回顾了一项令人兴奋的技术,它使用基本的计算机视觉算法来完成这项任务。GrabCut 算法。对于像人或动物这样的复杂物体来说,它很快,但不是很精确。尽管如此,它在特定的上下文中还是很方便的,并且是在计算机视觉和 python 中开始的第一个完美的应用项目!如上所述,该实现使用 Google Colab,因此不需要任何要求或设置,这使得它成为一个令人兴奋的学习项目。
一个图片抠图的例子。图片由作者提供。
该 GrabCut 算法实现基本上使用高斯混合模型来估计前景项目和背景的颜色分布。我们在感兴趣的对象(前景)上绘制一个矩形,并通过在部分上绘制来迭代地尝试改善结果。该算法无法向前景添加像素或从前景中删除一组像素。这就是为什么我们经常使用“绿色屏幕”,帮助算法只移除绿色像素,而将其余的像素留在最终结果中。但是,当我们无法进入这样一个绿色屏幕时,结果就不那么好了。
该算法使用用户制作的矩形来识别前景项目。然后,用户可以编辑以向前景添加或移除对象。一旦完成,它删除背景,使其透明(添加 alpha 通道),并保存它。
这是一个简单的笔记本,实现了我制作的关于 ModNet 的视频中展示的 GrabCut 算法,这是一种新的图像抠图技术。
一旦你打开笔记本,你会看到 7 个 python 单元格,里面有代码和注释。笔记本很简单:
- 上传您的图像。[第三个单元格]
- 在图像上创建一个矩形,包括所有的前景对象。[第四个单元格]
- 使用 GrabCut 算法移除背景。[第 5 个单元格]
- 如果需要改进,在图像上绘制,左键(白色)=前景,右键(黑色)=背景。[第 6 个单元格]
- 使用 GrabCut 算法移除背景。[第 6 个单元格]
- 返回步骤 4 或结束。[第 6 个单元格]
- 保存您的结果。[第 7 个单元格]
注:【单元格】参照 笔记本实现 。
这是一个算法在第一次试验中起作用的例子,我们只需要步骤 1 到 3。我们基本上就是上传图像,在感兴趣的物体(我们的狗)周围画一个长方形,就这样!您可以在 png 中保存带有 alpha 通道的图像。
这是一个算法在第一次试验中起作用的例子,我们只需要步骤 1 到 6。我们基本上是上传图像,在感兴趣的物体(我们的第二只狗)周围画一个矩形,然后进入微调循环。这里,我们使用左键绘制随机线来进一步改善结果。完成后,您可以使用剩余的代码将带有 alpha 通道的图像保存在 png 中。
完整的代码实现可以在 GitHub 上获得!你可以很容易地在的 Google Colab 机器中打开它,然后马上运行它,不需要任何先决条件或设置。只需在 Google Colab 中导入您的图片并运行代码!
github.com](https://github.com/louisfb01/iterative-grabcut)
GrabCut 图像抠图示例。
如果您目前正在学习 python 或计算机视觉,请随意实现这段代码并尝试改进它!当在计算机视觉中工作时,这是学习重要的和循环的函数的超级有趣和伟大的方法!如果有任何代码更新,请联系我,或者在 GitHub 资源库中提交更新!
如果你喜欢我的工作,并想了解人工智能的最新动态,你绝对应该关注我的其他社交媒体账户( LinkedIn , Twitter ),并订阅我的每周人工智能 简讯 !
- 支持我的最好方式是在 媒体 上关注我,或者如果你喜欢视频格式,在YouTube****上订阅我的频道。
- 支持我在 上的工作
- 加入我们的 Discord 社区: 一起学 AI和分享你的项目、论文、最佳课程、寻找 Kaggle 队友等等!
[1]使用 GrabCut 算法的交互式前景提取,OpenCV,(2013),https://OpenCV-python-tutroals . readthedocs . io/en/latest/py _ tutorials/py _ imgproc/py _ grab cut/py _ grab cut . html