图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

1 空间滤波器的基础

1.1 空间滤波介绍

1.2 空间滤波原理

1.3 空间相关与空间卷积

2 平滑空间滤波器

2.1 平滑线性滤波器

2.2 统计排序滤波器

2.3 平滑空间滤波器总结

3锐化空间滤波器

3.1 锐化空间滤波器基础

3.2 二阶微分锐化:拉普拉斯算子

3.3 一阶微分锐化:Robert算子、 Prewitt算子

3.4 一阶微分锐化:Sobel算子、Isotropic Sobel算子

3.5 非锐化掩蔽和高提升滤波

3.6 锐化空间滤波器总结

1.1 空间滤波介绍
  空间滤波是一种采用滤波处理的影像增强方法,其理论基础是空间卷积和空间相关。目的是改善影像质量,包括去除高频噪声与干扰,及影像边缘增强、线性增强以及去模糊等。主要分为低通滤波(平滑)、高通滤波(锐化)两种。
  
1.2 空间滤波原理
  空间滤波器由两部分组成:
1.一个邻域(典型的是一个较小的矩形)
2.对该邻域包围的图像像素执行的预定义操作
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)  滤波器的响应是滤波器系数与由该滤波器包围的图像像素的乘积之和,f(x,y)代表原图像上点(x,y)位置上的灰度值,g(x,y)代表处理后图像上点(x,y)位置上的灰度值,w(x,y)代表点(x,y)位置上的灰度值所要乘的系数。
g(x,y)=w(-1,-1)f(x-1,y-1)+w(-1,0)f(x-1,y)+…+w(0,0)f(x,y)+…+w(1,1)f(x+1,y+1)

1.3 空间相关与空间卷积
  对原图像中每一个点的灰度值都进行上述操作,即可得到处理后的图像,整个操作过程就可被称作为空间相关或空间卷积。在进行上述操作时,原图像边界附近的点会出现滤波器超出图像边界的情况,超出边界时要补充像素,一般是添加0或者添加原始边界像素的值空间相关和空间卷积类似,唯一的区别就是空间相关不需要旋转滤波器,空间卷积需要滤波器旋转180°。如下所示,原图像是一个55的图像,滤波器是一个33的模板。首先要对图像进行填充,补充像素。然后空间相关和空间卷积的具体区别如下:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
空间相关和空间卷积的操作区别如下:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
2.1 平滑线性滤波器
  平滑线性空间滤波器也被称为均值滤波器,使用滤波器模板确定的邻域内像素的平均灰度值代替图像中的每一个像素。例如下面这个模板,每个点的灰度值等于其所在范围的9个点灰度值的平均值。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  但图像边缘是由图像灰度尖锐变化带来的特性,所以均值滤波处理可能使得图像边缘也模糊。本来是希望让图片模糊一些,滤掉图片中的一些噪声,但是可能把图像中的边缘也给弄模糊了。所以在以上的模板基础上进行改进,有了一个加权平均模板,如下所示:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  加权平均模板,赋予中心点最高权重,距离中心点的距离越远,赋予的权重就越小,目的是在平滑处理中试图降低模糊,即在除掉噪声的同时又尽可能地降低图像边缘的模糊化。这个加权平均思想十分重要,在之后的边缘提取算法中,各个不同的边缘提取算法的算子,实际上就是改变了加权平均中的权重值。
  在明白加权平均模板后,就可以把均值滤波器扩展成高斯平滑滤波器。啥是高斯平滑滤波器呢?均值滤波器中每一个值都是相等,而高斯平滑滤波器的中的数却是呈现高斯分布的。高斯分布也就是正态分布,高斯分布图如下所示:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  再举个例子,现在有个5x5的滤波器模板,如果是均值平滑滤波器的话,如下所示。最终中心点的灰度值等于这25个点的灰度值相加再除25。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  如果是高斯平滑滤波器的话,5x5模板中的值不再全部都是1了,而是如下所示。最终中心点的灰度值等于这25个点的灰度值分别乘上对应的系数相加再除273(所有权重相加起来等于273)。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  可以通过高斯平滑使整个图片过渡均匀平滑,去除细节,过滤掉噪声。一般而言,高斯平滑滤波器要优于均值滤波器。其中高斯函数中的参数不同,图片处理的效果也会不同,这里不再细讲,感兴趣的话可以搜一下高斯平滑滤波器,再详细了解。
  滤波器中的权重值不同会影响图像的处理,同时滤波器模板的大小不同,也会影响图像的处理。当图像细节与滤波器模板近似相同时,图像中的一些细节受到的影响较大。如下图所示:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

a.500x500像素的原图片 b.3x3像素的方形均值滤波器
c.5x5像素的方形均值滤波器 d.9x9像素的方形均值滤波器
e.15x15像素的方形均值滤波器 f.35x35像素的方形均值滤波器

2.2 统计排序滤波器
  统计排序滤波器是一种非线性空间滤波器,以滤波器的包围的图像区域中所有包含的像素的排列为基础,然后使用统计排序结果决定的值代替中心像素的值。常用的统计排序滤波器有中值滤波器、最大值滤波器、最小值滤波器等。举个例子,下面是一副图像中的一个点及其邻域上的点,上面的值代表其灰度值。首先将这9个像素值从小到大排列,依次是:90,110,120,150,165,200,210,230,255,中值为165,最大值是255,最小值是90。原本该点的灰度值应该是150,如果采用中值滤波器的话,则会用165来取代150,即该点的灰度值变成了165;如果是最小值滤波器的话,则该点的灰度值变成90;如果是最大值滤波器的话,则该点的灰度值变成255。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
2.3 平滑空间滤波器总结
  以上介绍了几种常用的平滑空间滤波器,线性的有均值滤波器和高斯滤波器,非线性的有中值滤波器、最大值滤波器和最小值滤波器。各种滤波器的总结如下:
1.均值滤波和高斯滤波,即以模板内算术平均数的值代替中心像素值,可以降低高斯噪声。
2.中值滤波,即以模板内进行有序排列后位于中间的像素值代替中心像素值,可以降低椒盐噪声(脉冲噪声)。
3.最大值滤波,即以模板内进行有序排列后最大像素值代替中心像素值,可以去除图像中的暗斑,使亮斑增大。
4.最小值滤波,即以模板内进行有序排列后最小像素值代替中心像素值,可以去除图像中的亮斑,使暗斑增大。
  椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。黑点对应的灰度值是0,白点对应的灰度值是255,在使用中值滤波器的时候,将模板内的灰度值进行排序,0会排在最左边,255会排在最右边,但是中值滤波器取的是排序后的中值,一般情况下不会取到0也不会取到255,所以中值滤波器可以用于消除椒盐噪声(脉冲噪声)。最大值滤波,取的是排序后的最大值,也就是取最亮的那个像素点,所以会使图像中本来暗的地方更明亮,本来亮的地方会更亮,所以最大值滤波器可以去除图像中的暗斑,使亮斑增大。同理可知,最小值滤波可以去除图像中的亮斑,使暗斑增大。再介绍一个实际例子,加深一下这几种平滑滤波器的印象:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

原图像

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

添加椒盐噪声

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

均值滤波

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

中值滤波

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

最大值滤波

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

最小值滤波

用均值滤波处理有椒盐噪声的图像,可以看出,处理效果并不好。用中值滤波处理有椒盐噪声的图像,可以看出,处理效果杠杠滴!用最大值滤波处理原图像,可以仔细观察,花瓣中的许多黑点都消失了,因为最大值滤波可以消除图像中的暗斑;用最小值滤波处理原图像,可以仔细观察,花瓣中的许多黑点颜色加深了,因为最小值滤波可以增强图像中的暗斑。
  
3.1 锐化空间滤波器基础
  锐化空间滤波,实际上相当于加深图像的边缘,有点类似于小时候画画,画完轮廓后,会再来描边加深图像的边缘,使得图像看起来边缘更深刻,更好看。所以,想要进行锐化空间,首先得找到图像的边缘,什么是图像的边缘?相邻两点的灰度值突变会形成边缘,例如智能车的赛道,由黑变白,由白变黑,都会形成边缘。那么如何来找到图像的边缘呢?既然边缘是由灰度值突变形成的,所以得找到灰度值突变的地方。如何来描述突变呢?用微分。举个例子,下面这个描述的是一副图像中某一行灰度值的变化,这一行的灰度值依次是:
6 6 6 6 5 4 3 2 1 1 1 1 1 1 6 6 6 6 6
首先求一阶微分:0 0 -1 -1 -1 -1 -1 0 0 0 0 0 5 0 0 0 0
然后求二阶微分:0 0 -1 0 0 0 0 1 0 0 0 0 5 -5 0 0 0
再把一阶微分和二阶微分都画在一个坐标系中,如图所示:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  首先看一阶微分的图,将上面两张图对比起来看,一阶微分等于0的地方,灰度值是没有突变的;一阶微分不等于0的地方,灰度值是有突变的。
  再看二阶微分,二阶微分等于0的地方,要么是灰度值没有变化,要么是灰度值均匀的变化;二阶微分不等于0的地方,就是灰度值过渡的点,如图所示,有4个位置上二阶微分不等于0,刚好对应4个灰度值过渡的点。
  因此有通过二阶微分算子来找图像的边缘,也有通过一阶微分算子来找图像的边缘。典型的二阶微分算子:拉普拉斯算子。典型的一阶微分算子:Robert算子、Prewitt算子、Sobel算子、Isotropic Sobel算子等。
  
3.2 二阶微分锐化:拉普拉斯算子
1.一个二维图像函数f(x,y)的拉普拉斯算子定义为:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
2.在x方向上的分量为:图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
3.在y方向上的分量为:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
4.可得拉普拉斯算子为:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
5.用拉普拉斯算子增强图像的基本方法可表示为:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  如何理解最后一个公式呢?f(x,y)是原图像,是通过二阶微分求得的图像的边缘,在原图像的基础上再加上图像的边缘,即可得到锐化后的图像g(x,y)。其中c是一个系数,具体取c=1还是c=-1得看具体是什么样的拉普拉斯模板。
  可以仔细看一下拉普拉斯算子的公式(如下图),再联想一下空间滤波器的模板,就可以得出拉普拉斯算子的模板。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  在这个模板中系数c=-1。为什么c=-1而不是c=1呢?可以想象边缘提取后智能车的赛道边界,如下图所示。边界灰度值是255,边界左侧及右侧灰度值是0,再结合这个拉普拉斯算子模板,中心点(中心点为边界)附近4个点的灰度值减去4倍中心点的灰度值,得到的值是一个负数,如果c=1的话,相当于在原图像的基础上削减边缘的灰度值,得到的图像当然不是锐化的图像(感兴趣可以自己试试,图像削弱边缘后是什么情况),所以在这种模板情况下,c=-1。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  除了这个拉普拉斯算子模板,还有很多变形的拉普拉斯算子模板,例如下图的模板,这个模板和上面的模板基本一样,就是系数c=1。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  除此之外呢,还有其他变形的拉普拉斯算子模板,上面的两个模板都是用中心点附近的4个点的灰度值再减去4倍中心点的灰度值,如果拓展一下,把中心点附近的4个点改成附近的8个点呢?也就是算上对角线上的点,就可以得到另外一下拉普拉斯算子模板,如下所示。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
3.3 一阶微分锐化:Robert算子、 Prewitt算子
  一阶微分锐化就是求一阶微分,求x方向的一阶微分和求y方向上的一阶微分。一阶微分算子的通用公式如下所示:
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  输出后的图像等于两个方向梯度(一阶微分)的平方和再开根号,但是实际上,如果是开根号处理的话,处理一副图像需要花很长的时间,因此有简化的公式,直接将两个方向梯度求绝对值再相加即可,可以大大节约一副图像的处理时间。知道公式后,最关键的就是何如求x方向和y方向的梯度。下文用Gx来表示x方向上的梯度,用Gy来表示y方向上的梯度。
Robert当年提出了一种求x方向和y方向的梯度的方法,他提出的那个方法也被称为Robert算子,如下所示。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  Robert当年用Z9-Z5作为x方向的梯度,用Z8-Z6作为y方向的梯度,即Gx=Z9-Z5,Gy=Z8-Z6。因此可得Robert算子如下所示。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  后来有个叫Prewitt的人,提出了另外一种求x方向和y方向的梯度的方法,这个算子就被称为Prewitt算子。Prewitt当年用Z3+Z6+Z9-Z1-Z4-Z7作为x方向的梯度,用Z7+Z8+Z9-Z1-Z2-Z3作为y方向的梯度,即Gx= Z3+Z6+Z9-Z1-Z4-Z7,Gy= Z7+Z8+Z9-Z1-Z2-Z3。因此可得Prewitt算子模板如下所示。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
3.4 一阶微分锐化:Sobel算子、Isotropic Sobel算子
  后来嘞,Sobel在Prewitt算子的基础上做了点改进,后来他的方法就被称为Sobel算子。还记得在平滑空间滤波时讲到的一个加权平均么?加权平均模板,赋予中心点最高权重,距离中心点的距离越远,赋予的权重就越小,目的是在平滑处理中试图降低模糊。Sobel算子就是采用的这种思想。Sobel当年用Z3+2Z6+Z9-Z1-2Z4-Z7作为x方向的梯度,用Z7+2Z8+Z9-Z1-2Z2-Z3作为y方向的梯度,即Gx= Z3+2Z6+Z9-Z1-2Z4-Z7,Gy= Z7+2Z8+Z9-Z1-2Z2-Z3。与Prewitt算子相比,Sobel算子对于像素的位置的影响做了加权,可以降低边缘模糊程度,因此效果更好。因此可得Sobel算子模板如下所示。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
  Isotropic Sobel算子又被称为各向同性Sobel算子,将Sobel算子矩阵中的所有2改为根号2,就能得到各向同性Sobel算子。资料上说:各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。(不知道是不是有这么神奇,感兴趣可以自己试试,将两个算子输出的图像做对比试试)
  
3.5 非锐化掩蔽和高提升滤波
  非锐化掩蔽和高提升滤波主要就两个公式,k为权重系数,当k=1时:非锐化掩蔽;当k>1时:高提升滤波;当k<1时:不强调非锐化模板的贡献。简单来讲,就是先将原始图片做模糊处理,会把图像的边缘也给模糊化,然后原始图片和模糊后的图片做对比,实际上就可以得到图像的边缘(对原始图像做迷糊化可以理解为将图像的边缘模糊化)。然后原始图像再加上k倍的边缘,就可以得到锐化后的图像,实际原理和拉普拉斯算子那块讲的差不多。在拉普拉斯算子那块,是用二阶微分求得图像的边缘,再乘上系数c,再加上原图像,就得到锐化后的图像。在这里,是用原图像减去模糊后的图像得到图像的边缘,然后再得到锐化后的图片。二者得到锐化图片的实际原理差不多。下面还有一个例子可以看看非锐化掩蔽和高提升滤波的效果(不太明显)。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)
3.6 锐化空间滤波器总结
  在看各种锐化空间滤波器的效果前,可以思考一下二阶微分锐化和一阶微分锐化的区别,各种一阶微分模板有什么区别,进而思考一下这几种模板处理后的图像会有什么区别。
一阶微分:
1.在恒定灰度区域的微分值为零;
2.在灰度台阶或者斜坡处微分值非零;
3.沿着斜坡的微分值非零;
二阶微分:
1.在恒定灰度区域的微分值为零;
2.在灰度台阶或者斜坡处微分值非零;
3.沿着斜坡的微分值非零;
  归纳来讲,就是当灰度值均匀变化的话,一阶微分是不为0的,而二阶微分**会等于0;当灰度值一下子突变的话,一阶微分不为0,而二阶微分也不为0。对于灰度值突变的情况,二阶微分算子和一阶微分算子都会认为这是图像的边缘;但是当灰度值均匀变化的话,一阶微分算子会将其认为是图像边缘,而二阶微分不会认为其是图像边缘。
图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

原图

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

拉普拉斯算子

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

各项同性Sobel算子

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

Sobel算子

图像空间滤波总结(平滑空间滤波器及锐化空间滤波器)

Prewitt算子