最近 在 学习 抠图, 网上 找到 不少资料
抠图 需要 一定的 交互 操作: 一般 需要 一个 trimap 或 一些 scribble
trimap是在 原图上,把前景(目标区域) 背景 以及 相交 部分 用 不同 的 颜色 笔试出来(一般为 白,黑,灰), 需要trimap的 这类算法 只需要
利用 前景 和 背景 中 提供的 信息 来 处理 交互区域 就可以了。 不过 抠图 效果 依赖于 trimap的精确度, 而 一个 精确地 trimap 需要 大量时间绘制。
Scribble 是在原图上用不同颜色(一般为白黑两色)把前景和背景表示出来。 然后 这类算法 以这些信息 来 对 剩余 的 图像部分 处理。
在应用上,scribble 方法显然更有 吸引力。 不过 这类 方法 的复杂度 要比 trimap类 高一些。而且 一般来说, 对 scribble的 标记 位置 要求 偏高, 另外
可能还要 对 一些 参数 进行调节。
Scribble 方法中,看了 lazy snapping 和 closed-form solution to natural image matting.
因为 后者 有 原作者提供的 代码。 所以 我选择了 后者 进行学习。
这个 方法 对 scribble 的 位置 很 ‘敏感’, 事实上, 在试验中, 发现 自己 scribble的 图片 都没法 得到 如 例子中 给出的 完美效果。
而 论文中 给出了 eigenvectors as guide 方法 来 帮助 寻找 进行 scribble 的位置。
不过 因为 相关 知识的 欠缺 和 数学 基础 不够。 还没有 找到 如何 利用 所谓的 ‘smallest vectors’ 来 寻找 scribble 位置。
不过 该 论文的作者 在 其 另一篇 关于 抠图 算法 的 论文中(spectral matting) 里大量 讲述 和 利用 eigen vector。
目前 在 学习这篇论文,希望能 从中 学习 eigenvector的用法。
推荐一些 论文 和 代码 (在 google中 直接 搜索 即可 ,最好用 google 英文)
closed-form solution to natural image matting (有matlab 代码)
lazy snapping (有 zhijie 所写的 c++ 代码 需opencv)
另外 还有 KNN, learningbased, spectral matting。
还可以在 这里找到很多信息 : http://www.alphamatting.com/