TV_denoise

最近本来在研究TV去噪效果的改进,但是由于自己之前对于TV去噪方法学习太浅,所以理解出了很大的问题,这里想总结一下: 首先是TV去噪的原理,我自己觉得比较好理解的这篇文章是

从欧拉-拉格朗日方程到理论力学和全变分约束降噪 - 知乎 (zhihu.com)

欧拉-拉格朗日(Euler-Lagrange)方程:

Lfddx(Ldf)=0\dfrac{\partial L}{\partial f}-\dfrac{\mathrm{d}}{\mathrm{d}x}(\dfrac{\partial L}{\mathrm{d}f'})=0

当$f(x)$满足欧拉-拉格朗日方程时,泛函取极值

得到高维函数的欧拉-拉格朗日方程式:

Lfddx(Ldfx)ddy(Lfy)=0\dfrac{\partial L}{\partial f}-\dfrac{\mathrm{d}}{\mathrm{d}x}(\dfrac{\partial L}{\mathrm{d}f_x})-\dfrac{{\mathrm{d}}}{{\mathrm{d}y}}(\dfrac{{\partial L}}{{\partial}f_y})=0

TV去噪通常使用的是L1范数。


Rudin 等人(Rudin1990)观察到,受噪声污染的图像的总变分比无噪图像的总变分明显的大。总变分定义为梯度幅值的积分,定义式为

JT0(u)=udxdy=ux2+uy2dxdyJ_{T_0}(u)=\iint|\nabla u|dx dy=\iint\sqrt{u_x^2+u_y^2}dx dy

其中,$u_{x}=\frac{\partial u}{\partial x},u_{y}=\frac{{\partial u}}{{\partial y}}$限制总变分就是限制噪声,

在解决问题的过程中,我们同时希望去噪后的图像与原图像的差距不会特别大(图像不失真),因此,在求解这个梯度极小值时,加了一个保真项,结果变成:

J[u(x,y)]=u(x,y)dxdy+λ2[u(x,y)u0(x,y)]2dxdy\text{J}[u(x,y)]=\iint|\nabla u(x,y)|dxdy+\dfrac{\lambda}{2}\iint[u(x,y)-u_0(x,y)]^2dxdy^{\perp}

后一项为泛函的保真项,λ是松弛因子,调节保真项与梯度的占比,泛函的核

F=λ2(uu0)2+u=λ2(uu0)2+(ux)2+(uy)<2\text{F}=\frac{\lambda}{2}(u-u_0)^2+|\nabla u|=\frac{\lambda}{2}{(u-u_0)}^2+\sqrt{(\frac{\partial u}{\partial x})^2+(\frac{\partial u}{\partial y})^2_<}

泛函取极值的必要条件为满足欧拉方程

uFx(uxF)y(uyF)=0\dfrac\partial{\partial u}F-\dfrac\partial{\partial x}\Bigl(\dfrac\partial{\partial u_x}F\Bigr)-\dfrac\partial{\partial y}\Biggl(\dfrac{\partial}{\partial u_y}F\Bigr)=0

其中

uF=λ(uu0)uxF=uxuuyF=uyudivF=F=xFx+yFy=(uu)\dfrac{\partial}{\partial u}F=\lambda(u-u_0) \\ \dfrac{\partial}{\partial u_x}F=\dfrac{\dfrac{\partial u}{\partial x}}{|\nabla u|} \\ \dfrac{\partial}{\partial u_y}F=\dfrac{\dfrac{\partial u}{\partial y}}{|\nabla u|} \\ divF=\nabla\cdot F=\dfrac{\partial}{\partial x}F_{x}+\dfrac{\partial}{{\partial y}}F_{y}={\nabla}\cdot(\dfrac{\nabla u}{|\nabla u|})

欧拉方程可化简为

λ(uu0)(uu)=0\lambda(u-u_0)-\nabla\cdot\left(\dfrac{\nabla u}{|\nabla u|}\right)=0

关于TV的作用我主要是从这篇文章理解的

在图像边缘处,|▽u|越大,1/|▽u|越小,u越趋近于u0,保留了边缘;在平滑区域,|▽u|越大,因此在图像平滑区域能较好地去噪了。


如何理解TV去噪产生的阶梯效应呢? TV的L1范数的作用主要是稀疏

L1范数是我们经常见到的一种范数,它的定义如下:

x1=i=1nxi\|\mathbf{x}\|_1=\sum_{i=1}^{n}|x_i|

表示向量x中非零元素的绝对值之和。

L1范数有很多的名字,例如我们熟悉的曼哈顿距离、最小绝对误差等。使用L1范数可以度量两个向量间的差异,如绝对误差和(Sum of Absolute Difference):

SAD(x1,x2)=inx1ix2iSAD(x_1,x_2)=\sum_i^n|x_{1i}-x_{2i}|

对于L1范数,它的优化问题如下:

minx1s.t.Ax=bmin\|\mathbf{x}\|_1 \\ s.t.Ax=b

由于L1范数的天然性质,对L1优化的解是一个稀疏解,因此L1范数也被叫做稀疏规则算子。通过L1可以实现特征的稀疏,去掉一些没有信息的特征,例如在对用户的电影爱好做分类的时候,用户有100个特征,可能只有十几个特征是对分类有用的,大部分特征如身高体重等可能都是无用的,利用L1范数就可以过滤掉。


这是通过L1范数正则项实现的,与其让每一点的梯度都是常数值,不如出现很多0和一个非0值,这也就出现了阶梯效应,但是也保证了边缘。通过调节λ的值,可以在保护边缘和平滑之间进行调节。λ=0时,会过于平滑,为使值达到最小,就让|▽u|尽可能小,所以迭代到最后,可能会得到边界都被模糊掉了的图片,

但是当λ越大,边界保留越好。

继续分析TV算法: 通过梯度下降法

ut=欧拉方程ut=(uu)λ(uu0)(uu)=div(uu)=x(uxux2+uy2)+y(uyux2+uy2)(uu)=ux2uyy+uxxuy22uxuyuxyu3\dfrac{\partial u}{\partial t}=-\mathbb{欧拉方程} \\ \dfrac{\partial u}{\partial t}=\nabla\cdot\left(\dfrac{\nabla u}{|\nabla u|}\right)-\lambda(u-u_0) \\ \nabla\cdot\left(\dfrac{\nabla u}{\lvert\nabla u\rvert}\right)=div\left(\dfrac{{\nabla u}}{\lvert{\nabla u\rvert}}\right)=\dfrac{\partial}{\partial x}\left(\dfrac{u_x}{\sqrt{{u_x}^2+{u_y}^2}}\right)+\dfrac{\partial}{{\partial y}}(\dfrac{{u_y}}{{\sqrt{{u_{x}}^2+{u_y}}^2}}) \\ \nabla\cdot\left(\frac{\nabla u}{|\nabla u|}\right)=\frac{{u_x}^2u_{yy}+u_{xx}{u_y}^2-2u_xu_y u_{xy}}{|\nabla u|^3}

利用有限差分求数值解

ui,jn+1=ui,jnΔtλ(ui,jnu0(i,j))+Δt(ui,jnui,jn)u^{n+1}_{i,j}=u^{n}_{i,j}-\Delta t\lambda\Big(u^n_{i,j}-u_0(i,j)\Big)+\Delta t(\nabla\cdot\dfrac{\nabla u^n_{i,j}}{\big|\nabla u^{n}_{i,j}\big|})

其中为学习率或步长,对二维离散信号(图像),差分形式如下

(ux)i,jn=ui+1,jnui1,jn2(uy)i,jn=ui,j+1nui,j1n2(uxx)i,jn=ui+1,jnui1,jn2ui,jn(uyy)i,jn=ui,j+1nui,j1n2ui,jn(uxy)i,jn=(uxy)i,jn=ui+1,j+1n+ui1,j1nui1,j+1nui+1,j1n4\begin{array}{c} \left(u_{x}\right)_{i, j}^{n}=\frac{u_{i+1, j}^{n}-u_{i-1, j}^{n}}{2} \\ \left(u_{y}\right)_{i, j}^{n}=\frac{u_{i, j+1}^{n}-u_{i, j-1}^{n}}{2} \\ \left(u_{x x}\right)_{i, j}^{n}=u_{i+1, j}^{n}-u_{i-1, j}^{n}-2 u_{i, j}^{n} \\ \left(u_{y y}\right)_{i, j}^{n}=u_{i, j+1}^{n}-u_{i, j-1}^{n}-2 u_{i, j}^{n} \\ \left(u_{x y}\right)_{i, j}^{n}=\left(u_{x y}\right)_{i, j}^{n}=\frac{u_{i+1, j+1}^{n}+u_{i-1, j-1}^{n}-u_{i-1, j+1}^{n}-u_{i+1, j-1}^{n}}{4} \end{array}

TV去噪的理解_打着灯笼摸黑的博客-CSDN博客

Last updated