Matting
任务就是把α(不透明度, 也就是像素属于前景的概率)、F(前景色)和B(背景色)三个变量给解出来.
C为图像当前可观察到的颜色, 这是已知的. 问题是一个等式解不出三个变量, 因此就必须引入额外的约束使这个方程可解, 这个额外的约束就是由用户指定的trimap
(有人译为三元图
)图, 或者是仅仅在前景和背景画几笔的草图(scribbles).
来自于论文: Christoph Rhemann, Carsten Rother, Jue Wang, Margrit Gelautz, Pushmeet Kohli, Pamela Rott. A Perceptually Motivated Online Benchmark for Image Matting. Conference on Computer Vision and Pattern Recognition (CVPR), June 2009.
一些相关的术语, 来自参考链接[1]
SAD(Sum of Absolute Difference)= SAE(Sum of Absolute Error)即绝对误差和
SATD(Sum of Absolute Transformed Difference)即hadamard变换后再绝对值求和
SSD(Sum of Squared Difference)= SSE(Sum of Squared Error)即差值的平方和
MAD(Mean Absolute Difference)= MAE(Mean Absolute Error)即平均绝对差值
MSD(Mean Squared Difference)= MSE(Mean Squared Error)即平均平方误差
因为若是仅仅考虑SAD和MSE指标, 在和人类判断的对比中, 发现, 并不能很好地反映人类的实际判断标准. 为此文章引入了两个新的指标, 梯度和连通性. 先来说下连通性.
这个图基于matting
任务中获得的alpha matte
图, 这是一个灰度图, 表示的就是前面的公式里的 α \alpha α.
由于这里的图上出现了几个参数, α i   Ω , d i , l i , i \alpha_i \, \Omega, d_i, l_i, i αiΩ,di,li,i, 下面结合具体的公式来理解.
∑ i ( φ ( α i , Ω ) − φ ( α i ∗ , Ω ) ) p \sum_{i}\left(\varphi\left(\alpha_{i}, \Omega\right)-\varphi\left(\alpha_{i}^{*}, \Omega\right)\right)^{p} i∑(φ(αi,Ω)−φ(αi∗,Ω))p
这里的p是自定义参数. 具体见后.
该公式给出了连通性误差的计算方法, 这里是对整个预测出来的alpha matte
图和对应的真值的图的对应的差异的累和. 这里的关键是里面的 φ ( α i , Ω ) \varphi\left(\alpha_{i}, \Omega\right) φ(αi,Ω)函数.
首先要解释这里的 Ω \Omega Ω, 它表示的是对于预测结果图和真值共有的最大的值为1的连通区域, 被称为"源域(source region)", 也就是在上图中红线区域大致表示的范围. 这里的 φ \varphi φ计算的是有着透明度 α i \alpha_i αi的像素i, 与源域的连通度(degree of connectivity), 当其为1则认为该像素与源域全连通, 等于0表示完全不连通. 另一个加星号的表示真值图上的对应像素的连通度的计算. 二者计算差异, 来累计误差. 好的结果应该有着更低的误差, 更相似的连通情况.
公式里的 l i l_i li表示像素i四连通到源域所需要的最大阈值, 也就是上图中的虚线, 用它对alpha matte
进行二值化, 正好处于使像素i与源域连通(实际需要四连通)/不连通的临界. 若是对于一个像素而言, 它的 l = α l=\alpha l=α, 那么就可以认为它与源域是全连通的.
而公式里的 d i d_i di如图所示, 表示的就是像素i处的 α \alpha α值和对应的临界阈值 l i l_i li的差距.
φ ( α i , Ω ) = 1 − ( λ i ⋅ δ ( d i ≥ θ ) ⋅ d i ) \varphi\left(\alpha_{i}, \Omega\right)=1-\left(\lambda_{i} \cdot \delta\left(d_{i} \geq \theta\right) \cdot d_{i}\right) φ(αi,Ω)=1−(λi⋅δ(di≥θ)⋅di)
这里的 θ \theta θ是自定义参数, 具体见后. 它用在指示函数 δ \delta δ里作为一个阈值, 来忽略小于它的 d i d_i di的情况, 认为小于它就已经是全连通了, 使得误差计算更为灵活.
其中的 λ i = 1 ∣ K ∣ ∑ k ∈ K d i s t k ( i ) \lambda_{i}=\frac{1}{|K|} \sum_{k \in K} dist_{k}(i) λi=∣K∣1∑k∈Kdistk(i)用来对 d i d_i di进行加权, 这里的K表示 l i l_i li到 α i \alpha_i αi之间的离散 α \alpha α值的集合, d i s t k dist_k distk计算了设置为阈值 k k k时, 对于像素i距离最近的连通到源域的像素, 与像素i之间的标准化欧式距离. 实际情况中, 远离连通区域的像素, 获得的权重 λ \lambda λ也应该相应会更大些, 这样导致得到的 φ \varphi φ会更小些, 也就是认为连通度更小.
主要计算的是预测的alpha matte α \alpha α和ground truth α ∗ \alpha^{*} α∗的之间的梯度差异, 定义如下:
∑ i ( ∇ α i − ∇ α i ∗ ) q \sum_{i}\left(\nabla \alpha_{i}-\nabla \alpha_{i}^{*}\right)^{q} i∑(∇αi−∇αi∗)q
这里的q是自定义参数. 具体见后
这里的 ∇ α i \nabla \alpha_{i} ∇αi和 ∇ α i ∗ \nabla \alpha_{i}^{*} ∇αi∗表示的是对应的alpha matte
的归一化梯度, 这是通过将matte
与具有方差 σ σ σ的一阶Gaussian导数滤波器进行卷积计算得到的. 二者计算差异, 进而累计损失. 总体越相似, 指标值越小.
这里的方差 σ σ σ也是自定义参数, 具体见后
对于这里存在四个需要人工设置的参数: θ , p , q \theta, p, q θ,p,q, 在参考文章3中, 有进一步的测试与设定, 文章最终选择了这样的设定: σ = 1.4 , q = 2 , θ = 0.15 , p = 1 \sigma=1.4, q=2, \theta=0.15, p=1 σ=1.4,q=2,θ=0.15,p=1.