在介绍平滑处理之前先来说说与平滑有关的滤波基础知识。
滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。滤波器是建立的一个数学模型,通过这个模型来将图像数据进行能量转化,能量低的就排除掉,而噪声属于低能量部分。我们可以把滤波器想象成一个包含加权系数的窗口,当使用这个滤波器平滑处理图像时,就是把这个窗口放到图像之上,透过这个窗口看到的就是我们想要的目标图像。
我们常见的滤波器有
·允许低频率通过的低通滤波器
·允许高频率通过的高通滤波器
·允许一定范围频率通过的带通滤波器
·阻止一定范围频率通过并且允许其它频率通过的带阻滤波器
·允许所有频率通过、仅仅改变相位关系的全通滤波器
·阻止一个狭窄频率范围通过的特殊带阻滤波器叫陷波滤波器
平滑处理也叫做模糊处理,最常见的作用是减少图像上的噪点或失真。OpenCV提供了五种平滑操作,而在平滑操作中使用的核即为滤波器。
滤波又分线性和非线性,先来说说线性滤波。
线性滤波是一种常用的邻域算子(卷积),像素的输出值取决于输入像素的加权和。即源图像与核的卷积产生目标图像,而线性滤波器的主要作用是剔除输入信号中不想要的频率或者从许多频率中选择一个想要的频率。
1)方框滤波
所用函数为boxFilter(src,dst,src.depth(),Size(3,3),Point(-1,-1),true)
参数一与参数二有相同的尺寸和类型,
参数四为核(滤波器)的大小(宽与高),一般去奇数,如3*3、5*5、7*7等
参数五为锚点,默认Point(-1,-1),表示取核的中心为锚点。
参数六为是否归一化。当为true时,方框滤波等于均值滤波,即均值滤波是方框滤波归一化后的特殊情况。归一化就是把要处理的量都缩放到一个范围内,比如(0,1),以便统一处理和直观量化。
方框滤波boxFilter()函数所用的核为:
2)均值滤波
输出图像的每一个像素是核窗口内输入图像对应像素的像素的平均值(所有像素加权系数相等),它就是归一化后的方框滤波。所用函数为blur(src,dst,Size(3,3),Point(-1,-1),true)
均值滤波blur()函数所用的核为:
均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
均值滤波对噪声图像特别是有大的孤立点的图像非常敏感,即使有极少数量点存在较大差异也会导致平均值的明显波动。
高斯滤波的作用是消除高斯噪声(抑制服从正态分布的噪声),应用于图像处理的减噪过程。
高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器
高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。从数学的角度来看,图像的高斯模糊过程就是图像与正态分布做卷积(正态分布又叫高斯分布)。
一维正态分布函数为
第一参数μ是遵从正态分布的随机变量的均值,第二个参数σ2是此随机变量的方差,所以正态分布记作N(μ,σ2 )。遵从正态分布的随机变量的概率规律为取μ邻近的值的概率大,而取离μ越远的值的概率越小;σ越小,分布越集中在μ附近,σ越大,分布越分散。正态分布的密度函数的特点是:关于μ对称,在μ处达到最大值,在正(负)无穷远处取值为0,在μ±σ处有拐点。它的形状是中间高两边低,图像是一条位于x轴上方的钟形曲线。当μ=0,σ2=1时,称为标准正态分布,记为N(0,1)。
两个常数的意义:μ为期望,σ^2为方差。μ±σ为函数图像的拐点。
高斯半径就是公式中的σ。高斯半径越小,则模糊越小,高斯半径越大,则模糊程度越大。
二维高斯函数
对于图像处理来说,常用二维零均值离散高斯函数作平滑滤波器,而二维高斯函数可用两次一维高斯函数来处理,
在这两个函数中,x,y表示相对于中心像素(0,0)的偏移量(以像素为单位)。而这两个函数的结果表示在x或(x,y)处的像素的权重,或者说在模糊后周围像素分别将产生多少的贡献来影响目标像素.
高斯分布所用函数为GaussianBlur(src,dst,Size(3,3),SigmaX,sigmaY)
参数三为高斯内核的大小,必须是正数和奇数,也可为0,表示内核由sigma计算。高斯3*3模板实际上是对高斯曲面的一个整数除法形式的近似:(1 2 1 2 4 2 1 2 1)/16。是对高斯半径为0.849的一个近似。
参数五六为高斯核函数在X/Y方向的标准偏差。当SigmaY为零时,默认为SigmaY=simgaX,若SigmaX与SigmaY都为零,则标准偏差由参数三内核的宽高来计算。
进行高斯滤波的通常原因是图像在空间内的像素是缓慢变化的,邻近点的像素变化不明显,但随机的两个点就可能形成很大的像素差。高斯滤波在保留信号的条件下减少噪声。高斯滤波会磨平边缘。
非线性滤波有
4)中值滤波
将中心像素的正方形邻域内重新排序取中间像素值来代替
5)双边滤波
双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。它会依据每个像素及其邻域构造一个加权平均值。加权计算包括两部分,一部分加权方式与高斯平滑中的相同,另一部分属于高斯加权,但不是基于中心像素点与其他像素点的控件距离之上的加权,而是基于其他像素与中心像素的高度差值的加权。双边滤波对相似的像素赋予较高的权重,不相似的像素赋予较小的权重。双边滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。
双边滤波的典型效果为使处理过的图像看上去像一幅原图的水彩画,可用于图像分割。
双边滤波所用函数为bilateralFilter(src,dst,d,sigmaColor、sigmaSpace)