Image Smoothing via L0L0L0 Gradient Minimization
文章目录
- Image Smoothing via L0L0L0 Gradient Minimization
-
-
- 1D Smoothing
- 2D Formulation
- Wang‘s Algorithm
- Solver
-
不同于 TV(Total Variation) 使用 L1L_{1}L1?作为正则化项, WLS(Weighted Least Squares) 使用 L2L_{2}L2?作为正则化项,本文采用 L0L_{0}L0?作为正则化项来进行图像的重建,核心思想是通过限制图像非零梯度的数量来限制或增强图像中的高对比度的边缘。本方法的主要应用场景有降噪、边缘提取、数据压缩、HDR、分割、风格化等。
1D Smoothing
记一维输入信号为ggg,其经过平滑后的结果记为fff,计算梯度发生变化的点的个数:
c(f)=#{p∣∣fp?fp+1∣≠0}(1)c(f)=\#\left\{p|{\quad}| f_{p}-f_{p+1} \mid \neq 0\right\}\tag{1} c(f)=#{
p∣∣fp??fp+1?∣??=0}(1)
上式中p、p+1p、p+1p、p+1表示相邻样本或像素,∣fp?fp+1∣|f_{p}-f_{p+1}|∣fp??fp+1?∣表示梯度幅度(前向差分),#{}\#\{\}#{
}表示计数算子,用于计算满足∣fp?fp+1∣≠0|f_{p}-f_{p+1}|≠0∣fp??fp+1?∣??=0的点的个数,即梯度的L0L_{0}L0?,c(f)c(f)c(f)不考虑信号变化的幅度,只考虑信号是否发生变化,c(f)c(f)c(f)的计算方式是本篇论文的核心
对于信号的平滑,或者对于信号主要结果的提取,应该要对信号的相似性上进行约束,即平滑后的信号与原信号间的结构是相似的,因此将此问题的目标函数做如下表示:
min?f∑p(fp?gp)2s.t. c(f)=k(2)\min _{f} \sum_{p}\left(f_{p}-g_{p}\right)^{2} \text { s.t. } c(f)=k\tag{2} fmin?p∑?(fp??gp?)2 s.t. c(f)=k(2)
其中c(f)=kc(f) = kc(f)=k表示平滑信号fff当中梯度不为0的点的个数,下图给出了对一个含噪一维信号进行梯度L0L_{0}L0?最小化的结果,及其与其他算法对该一维信号进行平滑结果的比较。
?\Huge\downdownarrows ?
以上结果参数k=6k=6k=6,参数kkk决定了经过平滑后的信号所存在的梯度跳变的点数,对应上图中6次梯度变化,从这一结果可以看出,基于梯度L0L_{0}L0?最小化的在平滑信号的过程中其结果不受信号跳变的影响,因此其平滑后的结果,不会像a?da-da?d所式结果一样,平滑后的结果依旧存在一定程度的波动,并且保证了平滑后的信号依旧保持锐利的边缘,而不是缓慢过度的边缘,即大的、决定图像结构的边缘不会被平滑所影响而变得模糊,即对于一维信号而言,基于梯度 L0L_{0}L0? 最小化的平滑就是在给定梯度跳变次数 kkk 的前提下,寻找将发生梯度变化的放在何处,能够实现平滑后的信号与原信号的差异∑p(fp?gp)2\sum_{p}\left(f_{p}-g_{p}\right)^{2}∑p?(fp??gp?)2的最小化。此算法相较于其他平滑算法而言,一个重要的性质是不论kkk取值多小,都不会模糊掉所剩下的边缘(当kkk过小时,可能没有边缘被检出)
将公式(2)当中的两项合并为更具一般性的框架,如下:
min?f∑p(fp?gp)2+λ?c(f)(3)\min _{f} \sum_{p}\left(f_{p}-g_{p}\right)^{2}+\lambda \cdot c(f)\tag{3} fmin?p∑?(fp??gp?)2+λ?c(f)(3)
其中参数λ\lambdaλ用于控制信号平滑的程度,λ\lambdaλ与kkk之间的关系可以用下图表示:
可以看出,kkk随着1λ\frac{1}{\lambda}λ1?的增加而单调递增,在一定程度上可以将$\frac{1}{\lambda } 看做是看做是看做是k,下图,下图,下图g、h给出了同一信号给出了同一信号给出了同一信号\lambda取不同值时,信号平滑结果的差异,可以看出取不同值时,信号平滑结果的差异,可以看出取不同值时,信号平滑结果的差异,可以看出\lambda$的取值影响的是信号经过平滑之后依旧存在的峰值的个数,不会影响峰值的强度。
2D Formulation
记二维输入信号为III,其经过平滑后的结果记为SSS,并将图像的梯度表示为?Sp=(?xSp,?ySp)T\nabla S_{p}=\left(\partial_{x} S_{p}, \partial_{y} S_{p}\right)^{T}?Sp?=(?x?Sp?,?y?Sp?)T,计算图像中梯度发生变化的点的个数:
C(S)=#{p∣∣?xSp∣+∣?ySp∣≠0}(4)C(S)=\#\left\{p|| \partial_{x} S_{p}|+| \partial_{y} S_{p} \mid \neq 0\right\}\tag{4} C(S)=#{
p∣∣?x?Sp?∣+∣?y?Sp?∣??=0}(4)
同样给出求解SSS的目标函数:
min?S{∑p(Sp?Ip)2+λ?C(S)}(5)\min _{S}\left\{\sum_{p}\left(S_{p}-I_{p}\right)^{2}+\lambda \cdot C(S)\right\}\tag{5} Smin?{
p∑?(Sp??Ip?)2+λ?C(S)}(5)
Wang‘s Algorithm
式(5)中包含计数函数和L0L_{0}L0?,难以使用梯度下降等传统方法对以上优化问题进行求解,文章引用Wang在其论文《 A new alternating minimization algorithm for total variation image reconstruction》中提出的半二次分裂(Half Quadratic Splitting)方法进行优化求解,以下的内容节取自Wang的原文中对此方法的部分描述及证明。
首先,将信号做如下表示:
f=Ku0+w(w.1)f=Ku^{0}+w\tag{w.1} f=Ku0+w(w.1)
用于表示模糊和噪声对信号衰退的影响,其中fff表示输入信号,KKK表示模糊算子,www表示噪声,u0u_{0}u0?表示原始信号
将优化求解原始信号u0u_{0}u0?的目标函数做如下表示:
min?u∑i=1n2∥Diu∥+μ2∥Ku?f∥22(w.2)\min _{u} \sum_{i=1}^{n^{2}}\left\|D_{i} u\right\|+\frac{\mu}{2}\|K u-f\|_{2}^{2}\tag{w.2} umin?i=1∑n2?∥Di?u∥+2μ?∥Ku?f∥22?(w.2)
其中nnn表示图像尺寸,DiuD_{i}uDi?u表示图像梯度,∑∣∣Diu∣∣\sum ||D_{i}u||∑∣∣Di?u∣∣为uuu的全变分,即是保边缘正则化项,不可微,为了处理这一不可微函数的优化问题,使用半二次分裂,引入一个辅助变量wi∈R2\mathbf{w}_{i} \in \mathbb{R}^{2}wi?∈R2,将DiuD_{i}uDi?u从∣∣.∣∣||.||∣∣.∣∣中转移出来,并将wiw_{i}wi?与DiuD_{i}uDi?u之间的差值作为新的惩罚项加入到目标函数当中:
min?w,u∑i∥wi∥2+β2∑i∥wi?Diu∥22+μ2∥Ku?f∥22(w.3)\min _{\mathbf{w}, u} \sum_{i}\left\|\mathbf{w}_{i}\right\|_{2}+\frac{\beta}{2} \sum_{i}\left\|\mathbf{w}_{i}-D_{i} u\right\|_{2}^{2}+\frac{\mu}{2}\|K u-f\|_{2}^{2}\tag{w.3} w,umin?i∑?∥wi?∥2?+2β?i∑?∥wi??Di?u∥22?+2μ?∥Ku?f∥22?(w.3)
对引入的辅助变量的要求是尽可能接近DiuD_{i}uDi?u,因此惩罚项的参数β\betaβ应该尽可能大,当β→∞\beta→\inftyβ→∞时式(w.3)收敛至(w.2),上式(w.3)相对于参数u、wu、wu、w均是凸的,如果采用固定变量的方式求解将是比较简单的。添加这个辅助变量是半二次分裂的常见做法,具体可以参见论文《Analysis of Half-Quadratic Minimization Methods for Signal and Image Recovery》。
1.分离式(w.3)中所有包含wiw_{i}wi?的项,将其中的uuu当做是常量,可得优化求解wiw_{i}wi?的新的目标函数:
min?wi(∥wi∥+β2∥wi?Diu∥2)(w.4)\min _{\mathbf{w}_{i}}\left(\left\|\mathbf{w}_{i}\right\|+\frac{\beta}{2}\left\|\mathbf{w}_{i}-D_{i} u\right\|^{2}\right)\tag{w.4} wi?min?(∥wi?∥+2β?∥wi??Di?u∥2)(w.4)
并解得wiw_{i}wi?:
wi=max?{∥Diu∥?1β,0}Diu∥Diu∥,i=1,?,n2(w.5)\mathbf{w}_{i}=\max \left\{\left\|D_{i} u\right\|-\frac{1}{\beta}, 0\right\} \frac{D_{i} u}{\left\|D_{i} u\right\|}, i=1, \cdots, n^{2}\tag{w.5} wi?=max{
∥Di?u∥?β1?,0}∥Di?u∥Di?u?,i=1,?,n2(w.5)
2.分离式(w.3)中所有包含uuu的项,将其中的wiw_{i}wi?当做是常量,可以优化求解uuu的新的目标函数:
min?uβ2∑i∥wi?Diu∥22+μ2∥Ku?f∥22(w.6)\min _{\mathbf u} \frac{\beta}{2} \sum_{i}\left\|\mathbf{w}_{i}-D_{i} u\right\|_{2}^{2}+\frac{\mu}{2}\|K u-f\|_{2}^{2}\tag{w.6} umin?2β?i∑?∥wi??Di?u∥22?+2μ?∥Ku?f∥22?(w.6)
对上式求导,并令导数的每一项为0,可得正规方程:
(∑iDiTDi+μβKTK)u=∑iDiTwi+μβKTf(w.7)\left(\sum_{i} D_{i}^{T} D_{i}+\frac{\mu}{\beta} K^{T} K\right) u=\sum_{i} D_{i}^{T} \mathbf{w}_{i}+\frac{\mu}{\beta} K^{T} f \tag{w.7} (i∑?DiT?Di?+βμ?KTK)u=i∑?DiT?wi?+βμ?KTf(w.7)
即是:
((D(1))TD(1)+(D(2))TD(2)+μβKTK)u=(D(1))Tw1+(D(2))Tw2+μβKTf(w.8)\left(\left(D^{(1)}\right)^{T} D^{(1)}+\left(D^{(2)}\right)^{T} D^{(2)}+\frac{\mu}{\beta} K^{T} K\right) u=\left(D^{(1)}\right)^{T} w_{1}+\left(D^{(2)}\right)^{T} w_{2}+\frac{\mu}{\beta} K^{T} f \tag{w.8} ((D(1))TD(1)+(D(2))TD(2)+βμ?KTK)u=(D(1))Tw1?+(D(2))Tw2?+βμ?KTf(w.8)
并使用FFT加速,结果如下(这一步的推导并没有看懂):
u=F?1(F(D(1))?F(w1)+F(D(2))?F(w2)+(μ/β)F(K)?F(f)F(D(1))?F(D(1))+F(D(2))?F(D(2))+(μ/β)F(K)?F(K))(w.9)u=\mathcal{F}^{-1}\left(\frac{\mathcal{F}\left(D^{(1)}\right)^{*} \mathcal{F}\left(w_{1}\right)+\mathcal{F}\left(D^{(2)}\right)^{*} \mathcal{F}\left(w_{2}\right)+(\mu / \beta) \mathcal{F}(K)^{*} \mathcal{F}(f)}{\mathcal{F}\left(D^{(1)}\right)^{*} \mathcal{F}\left(D^{(1)}\right)+\mathcal{F}\left(D^{(2)}\right)^{*} \mathcal{F}\left(D^{(2)}\right)+(\mu / \beta) \mathcal{F}(K)^{*} \mathcal{F}(K)}\right) \tag{w.9} u=F?1(F(D(1))?F(D(1))+F(D(2))?F(D(2))+(μ/β)F(K)?F(K)F(D(1))?F(w1?)+F(D(2))?F(w2?)+(μ/β)F(K)?F(f)?)(w.9)
其中?*?表示复共轭,F\mathcal{F}F表示傅里叶变换,式中的乘法、除法分别表示点乘、点除。
Solver
回到本篇论文本身优化问题的求解,本文作者直接套用了Wang的半二次分裂求解算法,即直接套用了式(w.5、w.9)来求解式(5),首先在式(5)中引入辅助变量hp、vph_{p}、v_{p}hp?、vp?,分别用于近似?xSp、?ySp\partial_{x} S_{p}、\partial_{y} S_{p}?x?Sp?、?y?Sp?,并将hp、vph_{p}、v_{p}hp?、vp?与?xSp、?ySp\partial_{x} S_{p}、\partial_{y} S_{p}?x?Sp?、?y?Sp?之间的差值作为惩罚项加入到原目标函数,得到新的目标函数:
min?S,h,v{∑p(Sp?Ip)2+λC(h,v)+β((?xSp?hp)2+(?ySp?vp)2)}(6)\min _{S, h, v}\left\{\sum_{p}\left(S_{p}-I_{p}\right)^{2}+\lambda C(h, v)+\beta\left(\left(\partial_{x} S_{p}-h_{p}\right)^{2}+\left(\partial_{y} S_{p}-v_{p}\right)^{2}\right)\right\}\tag{6} S,h,vmin?{
p∑?(Sp??Ip?)2+λC(h,v)+β((?x?Sp??hp?)2+(?y?Sp??vp?)2)}(6)
其中C(h,v)=#{p∣∣hp∣+∣vp∣≠0}C(h, v)=\#\left\{p|| h_{p}|+| v_{p} \mid \neq 0\right\}C(h,v)=#{
p∣∣hp?∣+∣vp?∣??=0}
1.分离所有出带SSS的项,得到优化求解SSS的新的目标函数:
min?S{∑p(Sp?Ip)2+β((?xSp?hp)2+(?ySp?vp)2)}(7)\min_{S} \left\{\sum_{p}\left(S_{p}-I_{p}\right)^{2}+\beta\left(\left(\partial_{x} S_{p}-h_{p}\right)^{2}+\left(\partial_{y} S_{p}-v_{p}\right)^{2}\right)\right\}\tag{7} Smin?{
p∑?(Sp??Ip?)2+β((?x?Sp??hp?)2+(?y?Sp??vp?)2)}(7)
解得:
S=F?1(F(I)+β(F(?x)?F(h)+F(?y)?F(v))F(1)+β(F(?x)?F(?x)+F(?y)?F(?y)))(8)S=\mathcal{F}^{-1}\left(\frac{\mathcal{F}(I)+\beta\left(\mathcal{F}\left(\partial_{x}\right)^{*} \mathcal{F}(h)+\mathcal{F}\left(\partial_{y}\right)^{*} \mathcal{F}(v)\right)}{\mathcal{F}(1)+\beta\left(\mathcal{F}\left(\partial_{x}\right)^{*} \mathcal{F}\left(\partial_{x}\right)+\mathcal{F}\left(\partial_{y}\right)^{*} \mathcal{F}\left(\partial_{y}\right)\right)}\right)\tag{8} S=F?1(F(1)+β(F(?x?)?F(?x?)+F(?y?)?F(?y?))F(I)+β(F(?x?)?F(h)+F(?y?)?F(v))?)(8)
其中F(1)\mathcal{F}(1)F(1)为$\delta 的傅里叶变换。2.分离出所有带的傅里叶变换。 2.分离出所有带的傅里叶变换。2.分离出所有带h、v的项,得到优化求解的项,得到优化求解的项,得到优化求解h、v$的新的目标函数:
min?h,v{∑p(?xSp?hp)2+(?ySp?vp)2)+λβC(h,v)}(9)\left.\min _{h, v}\left\{\sum_{p}\left(\partial_{x} S_{p}-h_{p}\right)^{2}+\left(\partial_{y} S_{p}-v_{p}\right)^{2}\right)+\frac{\lambda}{\beta} C(h, v)\right\}\tag{9} h,vmin?{
p∑?(?x?Sp??hp?)2+(?y?Sp??vp?)2)+βλ?C(h,v)}(9)
C(h,v)C(h,v)C(h,v)表示h、vh、vh、v非零的个数,解得:
(hp,vp)={(0,0)(?xSp)2+(?ySp)2≤λ/β(?xSp,?ySp)otherwise (10)\left(h_{p}, v_{p}\right)=\left\{\begin{array}{ll} (0,0) & \left(\partial_{x} S_{p}\right)^{2}+\left(\partial_{y} S_{p}\right)^{2} \leq \lambda / \beta \\ \left(\partial_{x} S_{p}, \partial_{y} S_{p}\right) & \text { otherwise } \end{array}\right.\tag{10} (hp?,vp?)={
(0,0)(?x?Sp?,?y?Sp?)?(?x?Sp?)2+(?y?Sp?)2≤λ/β otherwise ?(10)
除了式(8、10)的迭代,还需要确定参数λ、β\lambda、\betaλ、β,在实际应用过程中先给定一个较小的参数β0=2λ\beta_{0}=2\lambdaβ0?=2λ,然后随着迭代次数jjj的增加而逐渐增大β\betaβ,βj+1=κβj\beta_{j+1}=\kappa \beta_{j}βj+1?=κβj?,且将β\betaβ的最大值限制为1E51E51E5,这样做的目的是加快算法的收敛速度,考虑到需要平衡算法的收敛速度和效果,一般将κ\kappaκ设置为2,最后,算法一般需要迭代20-30次。下面将对比本篇论文的效果与其他类似算法的效果仿真结果的对比,可以看出本篇论文提出的梯度L0L_{0}L0?最小化的方法是唯一能够做到保持边缘锐利的同时去除图像中的噪声。