![d4fb413370bcb95e18927492777c34ea.png](https://i-blog.csdnimg.cn/blog_migrate/52497fae169a264abf37a882da890656.jpeg)
本文是阅读kaiming暗通道先验去雾博士论文的笔记第二篇。集中focus在guided filter代替MRF提高运算效率上。
第一篇见链接。
基本去噪滤波器存在的问题:各向同性滤波,比如box filter/Gaussian filter。这类滤波器在能够平滑噪声的影响的同时,也会抹去一些细节,减弱edge在图片中的表现。有时我们需要保留edge的feature,因此有一些人对edge persevering滤波进行研究。最常见的bilateral filter,效果不错,有空可以深入看一看。Guided filter同样是一种保留边缘的滤波器。
Guide filter从命名的方法就可以看出除了需要输入图片外,还需要一个guide image(导向图)。导向图
输入需要处理的图片
filter kernel
定义:
令导向滤波器是导向图
导引图像与q之间存在线性关系,这样设定是因为我们希望导引图像提供的是信息主要用于指示哪些是边缘哪些是区域,所以在滤波时,如果导引图告诉我们这里是区域,那么就将其磨平。如果导引图告诉我们这里是边缘,这在最终的滤波结果里就要设法保留这些边缘信息。只有当I和q之间是线性关系的这种引导关系才有意义。
原文链接: https:// blog.csdn.net/baimafuji nji/article/details/74750283
假定
通过求梯度运算可以看到
计算目标是使
其中
算法流程如下:
![641f5c5c056bfad9a211e9eca862b7b4.png](https://i-blog.csdnimg.cn/blog_migrate/95d12401d54aa17d8d245db457b8e6ba.jpeg)
基于MATLAB的算法(这个已经被写入matlab的function了)原代码
function
这里需要略作解释的地方是函数boxfilter,它是基于积分图算法实现的Box Filter。
A =
1 1 1
1 1 1
1 1 1
>> B = boxfilter(A, 1);
>> B
B =
4 6 4
6 9 6
4 6 4
从上述代码可以看到,当参数r=1时,此时的滤波器窗口是3×3。将这样大小的一个窗口扣在原矩阵中心,刚好可以覆盖所有矩阵,此时求和为9,即把窗口里覆盖到的值全部加和。此外当把窗口中心挪动到左上角的像素时,因为窗口覆盖区域里只有4个数字,所以结果为4。所以你可以看出这里的Box Filter只是做了求和处理,并没有归一化,所以并不是真正的均值滤波(简单平滑)。必须结合后面的一句
mean_I = boxfilter(I, r) ./ N;
才算是完成了均值滤波。[参见reference1]。
对实现作用效果简单分析,当
1)当方差比较大的区域,比如edge区域,有
2) 对方差比较小的区域,有
这里想了一下,图像去噪和线性回归有什么关系,大脑愚钝。
线性回归是依据数据点
图像去噪问题是,已知包含噪声的图片
参考文献:
导向滤波(Guided Filter)的解析与实现 - CSDN博客blog.csdn.net 机器学习--- 一元线性回归数学推导以及Python实现 - CSDN博客blog.csdn.net需要继续搞的:
1)线性回归和岭回归的求解推到【Done】
2)熟悉matlab根据算法流程的编码
补充上关于线性回归(岭回归的数学推导)
对于
1)上式的求和范围是window内,看着有点不爽,假设window内像素个数为
求最小值的办法即令偏导数为0,因为(2)比较简单,因此先分析(3)可以得到
其中
再求解(2),令偏导数为零,可以得到:
【根据】
可将(5)式整理为
即为所得。
Take away:
带求和符号的公式推导,看清楚求和变量。与求和变量无关的可以从求和符号 ,拿出来。从求和符号外,拿进去。