L0Smoothing学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/K81805757/article/details/47011401

L0Smoothing学习笔记

参考文献:ImageSmoothing via L0 Gradient Minimization

声明:文中的图,大部分来自上述论文的作者的演讲PPT,而且这只是本人学习笔记,未经同意,不得装载。

       L0Smothing是大四上学期接触的,大四下学期放开没关注。研一时由于导师需要,则再次学习起来。不过也是上学期的时候了,现在觉得这个思想也是杠杠的,赶紧写个笔记,记录一下。

 

       L0范数表示集合的非零个数。关于范数的知识还是不说,这方面的数学知识略薄弱,这里只需要理解成非零个数了。

 

       因此先撇开L0范数的概念,对一张图片,一个信号来说。如图:取花图中小方框里的一个纵向信号。

          

可以看到,白色的信号(原来的信号)存在很多波动,这些波动在花图中变现为细节,比如花瓣上的脉络。而红色的信号则是白色信号的一个近似。可以看到,红色信号保留了白色信号的主要特征,同时,剔除了一些“多余”的波动(细节)。这样其实是一个Smoothing的过程。根据这一思想,去处理得到的对比结果,如下图。

        

       为了实现这样的目的,则需要建立如下方程:


这里,使用L0范数,‘#’表示计数,fp为输出,因此该表达式表示输出的非零个数或者说梯度不为零的个数等于k。


这里,fp为输出,gp为输入,这样最小化,可以让输出与输入相似。因此加起来,可以得到下面的优化方程。


从1D去理解这条方程:

   

  

 

可以看到,随着K的增长,输出(红色信号)不断的近似输入(白色信号),而K的不同,优化的结果也不同程度地保留了信号的主要特征。

       接着,便是怎么去优化这个方程。可以做如下变换:

该变换,我的理解是使用了拉格朗日乘数法,将约束条件与优化问题相结合。详情可以去百度一下。

       不过做了这样的变化,还是不能直接求解,原因在于方程的前边段是基于像素的,可以说是局部的。而方程的后半段是约束了整个信号的梯度非零,可以说是全局的。这样不能直接求解。因此作者又做了一个变换:

通过引入两个变量,将L0范数的全局约束变成了局部约束。而这样的问题虽然去找一个全局最优节是一个NP难题,但是还是有法子去求解的。思想则是迭代。这个思想有点类似EM(ExceptionMaximization)算法。但个人还没有去证明是否等同,这个问题日后再说!?

注意:这时候已经转换到了2D图像的情况了。而要求解上图的问题,可以用一个近似:

这样近似,再用迭代的思想去求解,直到收敛即可。(看过代码,似乎是达到了迭代的最大次数)。而迭代则是分为两个问题。

其中,λ和β都是事先设置的,用于控制迭代的。剩下的便是实现细节了。这个日后有空在继续补充吧,暂时只需要记录这些。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页