来自 技术 2019-04-25 00:00 的文章

平滑与滤波

开发四年只会写业务代码,分布式高并发都不会还想去BAT?>>>   

五种常见的平滑滤波器:

(1)方框型滤波器:

顾名思义,方框型滤波器就是用一个方框型的kernel跟二维图像进行卷积,其核定义如下:

kernel=

其中,

a = 1 当该滤波器非归一化滤波器 (1)

a= (2)

本质上,当a取(1)式情况下,方框型滤波器是一个积分器;当a取(2)式情况下,方框型滤波器就是均值滤波器。Opencv中提供boxBlur()方法。

(2)均值滤波器:

如方框型滤波器(2)式所述,本质上是取kernel内所有像素的平均值。Opencv中提供了blur()方法。

(3)高斯滤波器:

高斯滤波器是根据二维高斯函数分布(正态分布)的形状选择的卷积核。二维高斯函数如下:

3 x 3 高斯核如下:

其中,a = 1 / (1 + 2 + 1 + 2 + 4 + 2 + 1 + 2 +1) = 1/16

5 x 5等高斯核同理类推。

(4)中值滤波器:

前面三个滤波器都是线性滤波器,中值滤波器是非线性滤波器。中值就是取样本排序后处于中间位置的元素的值。如果样本个数是奇数个,则取中间那个;如果样本个数是偶数个,则取中间两个的平均值。

中值滤波器,顾名思义,就是取滤波核覆盖范围内所有像素的中值作为锚点值。Opencv提供了medianBlur()方法。均值滤波器的缺点是在滤波的同时也模糊了边缘等图像细节,而中值滤波器可以很好的弥补这个缺点。中值滤波器尤其适合去除图像中的噪点信息。

(5)双边滤波器:

由于高斯滤波器核仅仅考虑了空间域(在空间上,核分布符合正态分布),而没有考虑邻域像素的灰度/色彩等,其在滤波的同时,也模糊了图像的边缘等细节。双边滤波器在高斯滤波器的基础之上,将邻域像素的灰度/色彩等信息也考虑进来,从而使得在保留了高斯低通滤波的同时,也保留了图像的边缘信息。双边滤波核是通过邻域空间因子和邻域像素灰度(色彩等)因子的乘积计算出来的。opencv提供了bilateralFilter()方法。