抠图算法(交互式)以及证件照的自动抠图

本文探讨了用于移动端的交互式抠图算法,包括Grabcut和lazysnapping。通过用户输入前景和背景像素的Trimap图,实现精确分割和良好的边缘过渡效果。Grabcut在OpenCV中有实现,但对颜色相近的像素分割不佳;lazysnapping则采用像素块进行图割,适用于更复杂的场景。此外,还介绍了如何应用这些算法进行证件照的自动抠图。
摘要由CSDN通过智能技术生成

研究抠图算法有段时间,颇有所得 研究的算法包括 Grabcut 、Shared Sample Alpha Matting、robust matting 以及lazysnapping. 研究抠图算法主要是应用于移动端的交互式抠图,用户输入 前景像素、背景像素的Trimap图作为mask ,对原图进行分割。交互式抠图算法达到可以商用的标准主要有两点:1、精确的分割出前景像素与背景像素,2、分割后的主体或前景部分,边缘过渡效果良好,在新的背景上,视觉上没有违和感。

从实现上的难易程度、对用户的操作要求、以及算法的复杂度上考虑主要采用并实现了 Grabcut、lazysnapping算法。Shared Sample Alpha Matting在交互上用户的操作成本高一点效果一般,没有具体去实现只是看过 imageshop 一篇博客中实现的效果,大家有兴趣可以去下载看一看 链接地址:点击打开链接.考虑算法实现主要用在移动端,用户的交互感受是蛮重要的。我采用了Grabcut以及参考了lazysnapping 的思路,做了两种交互抠图实现方案。

其中,Grabcut opencv提供了实现API ,我也是直接用的OpenCV的 实现接口,总体效果还可以接受,Grabcut缺点是 对于前景 与背景像素相差不大的部分不能有效的分割,它采用图论理论,前景像素与背景像素建立无向图,利用图割maxflow-mincut理论 分割 前景像素 与 背景像素,grabcut论文中也有提及边缘处理的方法,但是没有给出具体的实现,以及找不到相关的资料,也就不了了之。对于前景与背景差异性较大情况,grabcut表现还是不错的,其实微软的办公软件 World 、PPT中都有删除背景功能,它们采用的就是Gabcut方法,首先用矩形框框选出主体,执行算法得到初分割图,然后再用画笔标记 做区域针对性分割。该算法效果就不展示了,感兴趣的可以利用opencv 实现一下。需要注意的一点是 每次算法的输入的是原图srcImage跟mask 图。下面对基于OpenCV 的Grabcut的实现简要说一下,它包括两个接口:第一个是输入参数是原图和矩形框,第二个接口输入参数是原图和mask图。

1、cv::grabCut(srcImg, mask, retangle, bgModle, fgModle, 5, cv::GC_INIT_WITH_RECT);

srcImg:原图,ratangle:矩形框,bgModle: 与原图大小一致Mat类型,fg

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值