论文《通过相对总变量从纹理中提取结构》的注解
“Structure Extraction from Texture via Relative Total Variation”这篇文章的题目就叫“通过相对总变量从纹理中提取结构”。文章开头先展示了结果图,如下。
那这个算法是怎样区分出图像中那些区域是纹理,哪些区域是结构呢?文章指出:图像中的纹理和主要结构会表现出完全不同的性质,这些性质使两者变得可分解。但究竟是什么性质呢?我们继续往下看。
本文的算法分为三步:
1、以每个点(设为P)为中心,计算出该点x,y方向上的窗口总变化量(windowed total variations),窗口总变化量的计算过程如下:
其中:
和这两个变化量是像素点在x,y方向上的梯度,不懂的同学点这里:https://blog.csdn.net/saltriver/article/details/78987096
σ是空间尺度因子,就类似于高斯函数的方差控制高斯函数的形状一样。
相信大多数同学都能看懂,这里解释一下这个计算过程:
效果图如下:
a是原图,b是计算每个点的窗口总变化量的效果图
2、为了帮助区分突出的结构和纹理元素,除了窗口总变化量D之外,我们的方法还包含了一种新的窗口固有变化量(windowed inherent variation),公式如下:
该公式与公式(2)相比,只有绝对变化量的位置有变化,从梯度的绝对变化量变成总的绝对变化量。因为梯度变化量有正有负,所以这个窗口固有变化量在起伏均匀的背景区域几乎为零,但是在比较大的边缘处就非常大。这个结论就是本篇文章的Key Observation,并且指导了本篇文章算法的完成。
效果如下:
两种处理方法的对比
3、为了进一步增强纹理和结构之间的对比度,特别是对于视觉上突出的区域,我们将WTV(windowed total variations)和WIV(windowed inherent variation)结合起来,形成了一个更有效的结构-结构分解的正则化器。公式入下:
这就是一个优化的式子,是非凸的,后边会讲如何求解该式。p就是图像中的每个像素点。(Sp - Ip)**2的作用是避免结果与输入差异过大。λ只是一个系数,0.5就行。是一个很小的正数,为了防止0除以0的情况发生。
最终的结果还不错,如下图:
三步处理结果图对比
求解公式(5):
本文提出了一种求解非凸目标函数的方法,即将以上函数分解为两部分——非线性项和二次项。
我们首先讨论x方向的测度(y方向的类似)。将公式(2)和(4)代入公式(5)的后半部分得到公式(6):
然后将分式中的求和符号提出来,整理之后可得公式(7):
这里,分子分母同乘一个差分,这样就能构造出一个***二次项:差分的平方***。其中,e的存在是为了防止分母为0。
公式(7)中的,分别如公式(8)、(9)所示。即是之前所说的非线性项。y方向上的计算流程类似,公式如下:
将以上公式带入公式(5),并写成矩阵形式,可得到公式(13):
其中,vs和vi是将图像展开成一维向量的形式。Cx和Cy,是来自具有前向差分的离散梯度算子的托普利茨矩阵。Ux、Uy、Wx和Wy都是对角线矩阵,
然后,将公式(13)对vs求偏导再等于0(求极值的常规操作),化简之后即可得到公式(14):
最终,我们将一个非凸优化问题转化成一个线性方程组的求解问题。其中,
。1是单位矩阵,t是代数。式(14)就是一个规整的线性方程组。下面总结一下RTV矩阵的求解流程:
算法验证
在算法验证部分,作者是制作了一个百万级的数据集来验证该算法的有效性。这个数据集里都是“纹理+结构”型的图片,并且每张图片的主结构边缘都有对应的label。数据集的网址在这里:http://www.cse.cuhk.edu.hk/~leojia/projects/texturesep/
参数调整和算法对比部分这里就不详细展开了(附上几张图即可),有兴趣的小伙伴可以阅读原文:http://portal.acm.org/ft_gateway.cfm?id=2366158&type=pdf
不同参数的效果图
不同方法的对比图(文章中的效果肯定SOTA!。。doge。。)