前言
今天的数字图像处理课讲到了导向滤波,就拿过来论文学习了一下,下面两篇博客对我帮助很大:
导向滤波算法分析公式推导很详细;
导向滤波详解代码是严格按照论文的算法流程来的,能理解得更清楚。
我只看了原理部分和保边滤波器部分,简单记录一下。
原理
以图像去噪为例
输入图像:p
引导图像:I
输出图像:q
窗口:ωk
去噪模型:噪声是加性的
前提:在窗口ωk中,输出图像块是引导图像块的一个线性变换(图中3是2经过一定的纵向拉伸和纵向平移得到的,每个窗口的ak和bk都不一样)。
优化:最小化噪声,即p与q之间的均方误差,损失函数中加了一项,对ak进行惩罚。
优化结果(可以参考导向滤波算法分析):
式中,μk和σk2是I在窗口ωk内的均值和方差,而
是p在窗口ωk内的均值。
取一个窗口进行一次导向滤波,会得到和这个窗口一样大小的一个输出图像块。不同的窗口有重叠时,输出图像块也有重叠,因此考虑对一个像素的值进行平均,作为最终输出的导向滤波的值.平均过程如下:
进一步可以写成:
总的算法流程(可以参考导向滤波详解的代码):
直观理解
由于模型中q是I的一个线性变换,因此有:
尽管后来又对同一像素不同窗口的值进行了平均,这个线性关系不再严格成立了,但是我们依然可以认为:
两幅图像的梯度为线性关系,即说明导引图像中的边缘,对应于输出图像也是一个边缘。
优化过程可以理解为,3要在满足是2的一个线性变换的前提下,去达到和1的均方误差最小(不考虑惩罚项)。
应用——边缘保持平滑滤波器
利用导向滤波对图像进行平滑,设置引导图像为输入的噪声图像本身。ak和bk的表达式可以化简为:
如果ε=0,则ak=1,bk=0,否则,考虑下面两种情况:
1、“高方差”,即I在窗口内灰度变化很大(有很多边缘),因此这部分图像块的方差很大,有:
因此ak近似为1,bk近似为0,q近似为p,输出图像几乎不变,边缘被保留。
2、“平坦”,即I在窗口内近似为一个常数,图像方差很小,有:
因此ak近似为0,bk近似为μk,q近似为μk,即对图像进行了均值平滑,达到了去噪的效果。
具体什么程度算"高方差",什么程度算“平坦”,是由ε的取值来决定的。ε类似于双边滤波中的σr2,都是衡量噪声和边缘的分界线的。