图像处理之双边滤波
1、图像高斯模糊去噪
二维的高斯核函数表示如下(1):(式中Xc,Yc是中心元素的位置)

二维的高斯核也是可分离的,表示如下(11)和(12):(分为x方向和y方向)


那这个分离是什么意思呢,说说我的理解吧。
再图像处理中,一般的高斯核选取大小为3X3、5X5等等,对于图像中某个像素而言,那么它就要计算很多次。如果把公式(1)写成公式(11)和公式(12)的形式,那么,在对图像做处理时,就相当于先对图像做一次水平的高斯滤波,然后对水平滤波结果做一次垂直方向的高斯滤波,这样就减少了计算量。
2、图像边缘保持核函数
都知道,在图像的特征提取中,主要有边缘,细节这些信息。而边缘细节这些特征呢,可以用梯度、拉普拉斯变换、sobel算子、sift、fast、LoG、DoG、HoG、LRT等这些算子提取得到。为什么可以用这些算子可以提取得到图像的边缘细节,以及其他特征呢,这是因为,边缘细节等特征与图像的其他区域相比,有明显的灰度变化(就是对比度不一样)。如果灰度是相同的,那么这个区域就是平滑的,没有边缘等特征。
从上面的高斯核中可以看到,在计算的时候,主要是以两个像素之间的欧式距离来判断的,这样优点是离中心元素越近,权值越高;越远,权值越低。但是呢,如果边缘细节特征离中心元素比较远,那么就把边缘给模糊了。例如下面的两种情况,左图(黑色表示边缘,白色表示平滑区),本来中心元素不是边缘,却把边缘考虑进去了,右图(黑色表示边缘,白色表示平滑区),本来中心元素是边缘,却把平滑区域考虑进去了。


如何解决这个问题呢?
如果我们在考虑离中心元素距离的基础上,同时考虑灰度值变化的影响,是不是也行呢?那么就有了边缘保持核函数,其表示如下(2):

将公式(1)和公式(2)相乘就得到了新的去噪及边缘保持核函数,如下所示:

那么,为什么公式(1)和公式(2)可以直接相乘呢?
实际上就是先对图像做高斯模糊,再对模糊后的图像做边缘保持的操作。