Spatially Variant Linear Representation Models for Joint Filtering
针对联合滤波的空间变化线性表征模型
预备知识
高低频信号
在图像处理中,高频信号往往指的是频率变化范围较大的信号,指图像中的边缘信息或者噪声信息。而低频信号指的是图像的图像的轮廓和背景信息等。
所以如果要进行图像模糊处理,那么应该使用低通滤波,去除图像中的高频信息,因此会抑制图像的边缘信息。
如果要进行图像增强,那么应当提取图像中的高频信息从而增强图像的边缘效果。
双边滤波(Billateral filtering)
双边滤波和引导滤波(Guided image filtering)都属于边缘保护滤波。
在高斯滤波中,某一点的权重仅与位置有关。这种只关注位置的思想在平坦的像素区域是可行的,但是在像素值出现跃变的区域(如边缘区域)会损失掉有用信息,因此引入了边缘保护滤波。
双边滤波不仅考虑了位置信息(spatial distance of the neighboring pixels,spatialfilter),也考虑了像素差值的影响(the affinity by color difference,range filter)。
假设双边滤波中像素值权重为Gr,空间权重为Gs。那么在平坦区域内,像素值较为接近,这时空间权重Gs起主导效果。在边缘区域上,边缘同侧的Gr相差较小,异侧的Gr相差较大,一侧的像素值权重对滤波结果几乎不造成影响,边缘信息得到保护。
同时针对噪声时,噪声周围的权重较小,进行归一化处理后,这些权重得到了提升,表现为在噪声也有一定的过滤效果。
双边滤波公式:\(J_p=\frac{1}{K_p} \sum_{q\in \Omega} I_q f(||p-q||)g(||I_p-I_q||)\)
联合双边滤波公式:\(J_p=\frac{1}{K_p} \sum_{q\in \Omega} I_q f(||p-q||)g(||\tilde{I_p}-\tilde{I_q}||)\) 后者表示用清晰图片作为引导图
联合双边滤波上采样:\(\tilde{S_p}=\frac{1}{K_p} \sum_{q\downarrow \in \Omega} S_{q\downarrow} f(||p_{\downarrow}-q_{\downarrow}||)g(||\tilde{I_p}-\tilde{I_q}||)\) 表示在模糊图(下采样)上考虑距离差异,在清晰引导图上考虑像素差异
(p,q)表示像素索引值,f和q表示滤波函数(通常为高斯滤波),f考虑位置差异,g考虑像素差异
引导滤波(Guided image filtering)
引导滤波的思想是用一张引导图产生的权重,与输入图像进行处理后形成目标图。这个过程可以用\(q_i=\sum_{j}W_{ij}(I)p_j\)表示。其中q表示输出图像,I表示引导图,p表示输入图像,\(W_{ij}(I)\)表示引导图在权重矩阵ij像素索引处的权值大小。
其中引导滤波的核心假设为输出图像与引导图像在局部上是一个线性模型(locally linear representation model),在局部窗口\(W_k\)(半径为r的正方形)中,输出图像与引导图像的线性关系可以表示为如下形式
$$
q_i=a_k I_i + b_k \qquad \forall i \in W_k
$$
\((a_k,b_k)\)是窗口内的线性系数,是一个常数。
该核心公式可以使得输出图像q受到引导图像I的约束。同时又因为\(\nabla q=a\nabla I\),当引导图像在局部范围产生梯度变化时,输出图像也会产生相应的梯度变化。
为了使得滤波输入p与输出q之间的差值最小,同时为了求解系数\(a_k\)与\(b_k\),定义损失函数为:
$$
E(a_k,b_k)=\sum_{i\in W_k}((a_k I_i +b_k -p_i)^2+\epsilon a_k^2)
$$
后方加的系数为L2正则化,作用为防止\(a_k\)过大。
根据最小二乘法使\(\frac{\partial E(a_k,b_k)}{\partial a_k}=0\),\(\frac{\partial E(a_k,b_k)}{\partial b_k}=0\),可以得到:
$$
a_k=\frac{\frac{1}{|W|} \sum_{i\in W_k} I_ip_i - \mu_k \overline{p_k}}{\sigma^2_k+\epsilon} \\
b_k=\bar{p_k}-a_k \mu_k
$$
\(a_k\)可以进一步转换为:
$$
a_k=\frac{\sum_{i \in W_k}I_i p_i -n\bar{I_k}\bar{p_k}}{\sum_{i \in W_k}I_i^2 - n\bar{I_k^2}+\epsilon}=
\frac{\frac{1}{|W|} \sum_{i \in W_k} (p_i - \bar{p_i})(I_i - \bar{I_i})}{\frac{1}{|W|} (I_i - \bar{I_i})^2 + \frac{\epsilon}{|W|}}=
\frac{Cov(p_i,I_i)}{\sigma_k^2 + \epsilon}
$$
\(\mu_k\)和\(\sigma_k\)分别表示\(I_i\)在窗口内的均值和标准差,|𝑾|表示窗口内的像素块总数,\(\bar{p_k}\)表示输入图像在窗口内的均值。
其中使用到了如下概率论相关公式:
$$
\sum_i^n(x_i - \bar{x_i})(y_i - \bar{y_i}) = \sum_i^2 x_i y_i- n \bar{x}\bar{y}\qquad
\sum_i^n(x_i - \bar{x_i})^2 = \sum_i^n x_i^2 - n \bar{x}^2\qquad
COV(X,Y)=E{[x-E(x)][y-E(y)]}
$$
且由于输出图像的每一个像素点由不同窗口内的线性系数\((a_k,b_k)\)求得(local image patch),所以需要对该像素点的所有\(q_i\)做均值处理。最终的式子等价于:
$$
q_i = \bar{a_k} I_i + \bar{b_k}
$$
通过上述一系列的公式可以得出线性系数\((a_k,b_k)\)并不是引导图的简单缩放,这是因为线性系数\((\bar{a_k},\bar{b_k})\)随着空间窗口的变化而变化,所以\(\nabla q \neq \bar{a} \nabla I\)。但由于进行均值处理后系数\((\bar{a_k},\bar{b_k})\)在变化明显的边界处的梯度变化明显小于\(I_i\),因此依旧可以近似的看作\(\nabla q \approx \bar{a} \nabla I\) 。
输出图像是由有引导图和输入图共同得到的,因此引导图中的一些结构性的细节会被直接转换到输出图像中,从而导致输出图像中会含有引导图中额外的信息(introduce erroneous or extraneous artifacts)。这也是Spatially Variant Linear Representation Models模型提出的理由之一。
总结
1. 参数分析(当引导图等于输入图时)
$$
a_k = \frac{Cov(p_i,I_i)}{\sigma_k^2 + \epsilon}=
a_k = \frac{Cov(I_i,I_i)}{\sigma_k^2 + \epsilon}=
a_k = \frac{D(I_i)}{\sigma_k^2 + \epsilon}=
a_k = \frac{\sigma_k^2}{\sigma_k^2 + \epsilon}
$$
当\(\epsilon =0\)时,a=1,b=0,loss function=0,输入与输出无差别。
当\(\epsilon >0\)时,分为两种情况:
1)引导图比较平整,在极端情况下窗口的I为常量,即方差为0,那么此时\(a_k=0,b_k=\bar{p_k}\)。代表此时的滤波器退化为均值滤波器,对输入图像起到模糊平滑的作用。
2)引导图极其不平整,在极端情况下窗口的内I方差接近无穷大,那么此时\(a_k \approx 1,b_k \approx 0\)。代表此时的输出图像的像素值几乎未改变。2. \(a_k\)和\(b_k\)分别提取高频/低频信息
可以看出α(G,I)提取的是图像中的边缘信息,所以提取应当的是图像中的高频信息。β(G,I)提取的是图像中的背景信息,所以提取的应当是是图像中的低频信息。
从1的分析可以看出,当\(a_k=0,b_k=\bar{p_k}\),表示参数b的主要起到平滑作用,即针对的是图像中的低频部分,故可视化后表现为提取了图像中的低频信息(背景/轮廓信息)。
当\(a_k \approx 1,b_k \approx 0\),表示参数a主要起到的作用是保留图像中的结构性细节,即针对图像中的高频部分,故可视化后表现为提取了图像中的高频部分(边缘信息)。
论文阅读
摘要
文章提出了一种空间变化线性表征模型SVLRM,通过CNN计算出空间变化的表征系数,在Depth image upsampling,Depth image restoration,Scale-aware filtering,Natural image denoising,Flash image deblurring都达到了state-of-the-art表现。
背景
对于均值滤波,高斯滤波等,这些滤波器独立于图片中的内容,同时会让图像的内容、细节、噪声在无差别的情况下变得平滑。为了克服这个问题,前人提出了使用引导图的联合滤波器。联合滤波器的作用是使得引导图中重要的结构性细节转移到输出图中,从而使一些重要的细节被保留下来。但是当引导图和输入图来自不同的域时,联合滤波器可能会在目标图中引入错误信息的或者额外的伪影。为了寻找输入图和引导图之间的共性,过去人们常用各种方法去寻找他们之间的共性,然而这些方法会引入复杂的目标函数以至于很难求解。
收到CNN的启发,在传统的联合滤波器中引入CNN模型,针对传统方法有了大幅度的提升,同时在本文中CNN求解的是线性系数,而非直接输出端到端的图像,这样的方法更有利于保留引导图中的有用信息(这一方面在论文最后也做了实验对比)。CNN在SVLRM模型的约束下求解的线性系数与输入图像整合后形成输出图像。
与以往方法的对比
局部联合滤波方法
双边滤波和引导滤波等局部联合滤波方法成功的原因是使用了局部线性模型以及挖掘了相邻像素之间的联系。但它只考虑了引导图的局部结构同时引入了错误或额外的信息。
全局联合滤波方法
现有的全局联合滤波方法大多使用全局性的目标函数,去迫使目标图含有引导图中的相似结构,然而这种方法并不能反映出引导图中的固有细节,同时过于复杂的目标函数也会使整个问题变为非凸函数的求解问题,很容易陷入局部最优解。
基于深度学习的方法
针对图像的上采样问题,Hui et al.使用了多尺度引导(multi-scale guidance strategy)策略;在深度图像的存储中,Gu et al.采用权值表达式模型(weighted represtentation model)去动态的获取引导图像中的细节,然而这些方法只针对特定的应用领域。Li et al.提出了一种端到端的可训练网络(end-to-end trianable network),引导图和输入图的结构性信息分别由一个CNN网络提取,但由于图像的细节在卷积过程中会被平滑处理,所以一个深层的CNN网络并不能有效的帮助细节的转移。
模型的提出
理想化的系数\((\bar{a_k},\bar{b_k})\)应当可以充分的模拟输入图像与引导图像中的结构性信息,从而决定引导图中的细节是否应该被转移到目标图中,因此SVLRM模型被提出。
在SVLRM模型中,目标图像F的表达式为
$$
F=α(G,I)G+β(G,I)
$$
α(G,I)和β(G,I)为空间变换的线性表征参数,并非局部的常量表征系数,由输入图像和引导图像共同决定(这一点在GF中\(a_k\)和\(b_k\)的表达式就可以看出)。同时α(G,I)和β(G,I)决定了G和I中的结构性信息是否应该被转移到F中。
为了求解这两个系数,一种常用的想法是引入损失函数:
$$
\varepsilon(\alpha,\beta)=||\alpha G + \beta -I||^2 + \varphi(\alpha) + \phi(\beta)
$$
其中\(\varphi(\alpha)\)和\(\phi(\beta)\)是分别用来约束α和β。若这两项都可微,那么就可以使用梯度下降算法:
$$
\alpha^t=\alpha^{t-1} - \lambda (\frac{\partial \varepsilon(\alpha,\beta^{t-1})}{\partial \alpha}) \quad \alpha = \alpha^{t-1}
\\
\beta^t=\beta^{t-1} - \lambda (\frac{\partial \varepsilon(\alpha^{t-1},\beta)}{\partial \beta}) \quad \beta = \beta^{t-1}
$$
其中λ表示学习速率,t表示迭代次数。然而由于α(G,I)和β(G,I)十分重要,所以舍弃人工方法计算的参数(这一点在论文后特地做了实验对比),且由于上述方法与CNN中的随机梯度下降算法很相似,所以在它的启发下,在SVLRM模型中使用deep CNN去计算α(G,I)和β(G,I)。
用\((G^n,I^n,F_{gt}^n)_{n=1}^N\)表示在N个训练样本的情况下,神经网络F输出的结果。定义参数\(\theta=\theta(\theta_{\alpha},\theta_{\beta})\)近似的看作参数α(G,I)和β(G,I),那么在SVLRM约束下的CNN表达式为:
$$
F_{\theta}(G^n;I^n) = F_{\theta_{\alpha}}(G^n;I^n)G^n + F_{\theta_{\beta}}(G^n;I^n)
$$
\(F_{\theta_{\alpha}}(G^n;I^n)\)和\(F_{\theta_{\beta}}(G^n;I^n)\)分别表示输出参数\(\theta_{\alpha}\)和\(\theta_{\beta}\)的网络。
在训练过程用,使用L1-norm作为损失函数:
$$
Loss(F_{\theta}(G^n;I^n);F_{gt}) = \sum_{n=1}^N ||F_{\theta}(G^n;I^n) - F_{gt}||
$$
由于L1-norm是不可微的,所以使用Charbonnier惩罚函数\(\rho(x) = \sqrt{x^2 + \epsilon^2}\)来估算他。损失函数的梯度计算如下:
$$
\frac{\partial Loss}{\partial F_{\theta_{\alpha}}} = \sum_{i=1}^N \frac{G^n (F_{\theta}(G^n;I^n) - F_{gt})}{\sqrt{(F_{\theta}(G^n;I^n) - F_{gt})^2 + \epsilon^2}}
\\
\frac{\partial Loss}{\partial F_{\theta_{\alpha}}} = \sum_{i=1}^N \frac{F_{\theta}(G^n;I^n) - F_{gt}}{\sqrt{(F_{\theta}(G^n;I^n) - F_{gt})^2 + \epsilon^2}}
$$
loss function先对惩罚函数ρ(x)的x求导后,再对代表输入x的\(F_{\theta}(G^n;I^n)\)中的\(F_{\theta_{\alpha}}\)和\(F_{\theta_{\beta}}\)分别求导,过程类似于链式求导法则。
同时运用反向传播算法的链式求导法则来更新参数\(\theta=\theta(\theta_{\alpha},\theta_{\beta})\)。
网络细节
使用12层卷积层,每一层的卷积核大小为3×3,步长stride等于1,padding等于1,前11层卷积层的通道数目为64,每一个卷积层后接Relu激活函数。这样的网络参数设计可以使得所有卷积层输出的宽、高相等(\(\frac{n+2\times 1-3}{1}+1=n\)),从而避免了尺寸缩小后还原输出\(\theta(\theta_{\alpha},\theta_{\beta})\)需要上采样的过程。
采用带动量的随机梯度下降算法和Adam优化器,batch-size为20,学习速率初始化为10^(-4),并且在每一次mini-batch后缩减为一半。
实验结果分析
在深度图像上采样(Depth image upsampling)中,不仅保留了明显的边界信息,而且没有像GF那样带入引导图中过多的信息(例如花朵的信息)。
在深度图像存储(Depth image restoration)中,首先加入一些噪声处理后,该算法避免了边界过于模糊的情况,保留了明显的边界信息。
在小尺寸感知滤波(Scale-aware filtering)中,让输入图自身作为引导图,并且采用引导图旋转的策略,保留了明显结构的情况下去除了较小的细节。
在普通图片去燥(Natural image denoising)中,同样让输入图自身作为引导图,加入一些噪声后,非常明显的消除了这些噪声,保留了最清楚的结构。
在闪光图片去模糊(Flash image deblurring)中,对没有闪光的图片使用模糊内核进行模糊处理,利用闪光后的清晰图片作为引导图像,构成了模糊图像与清晰图像的图像对。该算法进行模糊处理后保留了最清晰的结构和纹理。
上述实验中均达到了state-of-the-art表现,且含有最少的均方根误差(RMSE),最大的峰值信噪比(PSNR)和结构相似性(SSIM)。
针对三个方面进一步对比
与其他局部线性模型相比:Shen et al.针对GF提出使用了一种相互的结构(mutual structure)来改进。即引入了相关系数\(\rho_{xy}\)的概念于公式中。这确实保留了图像中较为明显的结构并且没有引入引导图像中过多的信息。但由于使用了均值滤波,所以会对一些重要的边界信息造成一定程度的平滑,这些平滑的结构不利于图像的存储。
针对端到端(E2ETN)直接输出图像,与只通过神经网络学习\(\theta(\theta_{\alpha},\theta_{\beta})\)参数进行对比,前者表现除了较差的结果,从而证明了提出的SLVRM配合CNN的方法更能捕获引导图中的有用信息。在传统的图相处理中,缩放比例系数比直接缩放结果图更能保留图像中的细节。例如在低分辨率图像中通过插值计算得到高分辨率放缩的系数,然后在高分辨率图像中运用该系数,与将低分辨率系数作用于低分辨率图后插值得到的高分辨率图相比,前者更能保留细节。并且使用E2ETN模型,输出的图像经过了大量的卷积操作,一部分细节已经被模糊化处理,而如果训练出的是参数,与引导图整合后得到的输出图像就可以避免这个问题。
在手工方法的相比中,即在SLVRM模型中,采用与GF算法类似的方法,使用手工的方式引入L2正则化系数\(\mu \alpha^2\)和\(\eta \beta^2\)来代替\(\phi(\alpha)\)和\(\varphi(\beta)\),从而抑制\(\alpha\)和\(\beta\),也证明与CNN相比效果较差。
SLVRM+CNN对比HC(hand-crafted)和E2ETN(end-to-end trainable network)有着更大的峰值信噪比和结构相似性。
并且与传统方法相比有着最快的运行时间。
总结(SVLRM+CNN模型的优势)
- 避免了引导图中多余的信息被转移到目标图中。
- 避免了GF算法中的均值操作,该操作会对图像边缘进行模糊处理。
- 避免了手动计算参数的局限性,将参数的调整交给了网络,有一定的自适应性。
- CNN从低层网络到高层网络的训练过程中,将低层的局部特征逐步整合成了高层的全局特征,体现了算法的全局性。且没有采用E2ETN模型,只训练出参数,不仅避免了过多的卷积操作带来的模糊处理,也符合传统图像处理的经验。
引用
[1]Jinshan Pan, Jiangxin Dong, Jimmy Ren, Liang Lin, Jinhui Tang, and Ming-Hsuan Yang, Spatially Variant Linear Representation Models for Joint Filtering, IEEE Conference on Computer Vision and Pattern Recognition (IEEE CVPR), 1702-1711, Long Beach, CA, USA, 2019.
[2]He K , Sun J , Tang X . Guided Image Filtering[J]. IEEE Transactions on Software Engineering, 2013, 35(6):1397-1409.
[3]Kopf J , Cohen M F , Lischinski D , et al. Joint Bilateral Upsampling[J]. ACM Transactions on Graphics, 2007, 26(3):96.1-96.4.
[4]Xiaoyong Shen, Chao Zhou, Li Xu, and Jiaya Jia. Mutualstructure for joint filtering. IJCV, 125(1-3):19–33, 2017.
[5]Yijun Li, Jia-Bin Huang, Narendra Ahuja, and Ming-Hsuan Yang. Deep joint image filtering. In ECCV, pages 154–169, 2016.