最近接到抠图任务,然后学习KNN matting与 Shared matting 算法,做了一些笔记
Knn Matting
-
基于传播的抠图算法
-
非局部原则(nonlocal principle)
一个去噪 像素i 的期望值是由与它有类似特征像素与一个内核函数k(i,j)权重的加权和
推导可以得到
再转置相乘
Lc 矩阵为聚类拉普拉斯算子
-
算法步骤
-
求解析解
论文指出用户给出约束后,比如三分图,可以通过如下公式解出每个像素点的 alpha 值
由于Lc的计算量比较大,作者选用 更加稀疏的 L 矩阵减少了计算量 ,L矩阵为拉普拉斯矩阵,其中
m为用户标记像素的向量(前景,背景)(取值 0|1),已知前景和背景标记为1,未知像素点标记为0
优化公式
多项式第一项相当于:
多项式的第二项和第三项,是与前景像素和背景像素对应的正则项,λ为常数
v 空间 表示标记的前景像素点, m-v 空间 就是背景
得出最优解析解 X 为
Shared Matting
-
基于采样的抠图算法
-
基于的假设:未知区域的像素点的前景和背景颜色可以在已知区域通过采样获得
1.Expansion of known regions
2.Sample gathering and sample refinement
-
sample gathering -> output is
-
Sample refinement -> output is
3.Local smoothing
- 算法流程: