数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)

Posted LaoYuanPython

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)相关的知识,希望对你有一定的参考价值。

一、概述

平滑滤波器用于模糊处理(blurring )和降低噪声(noise reduction)。模糊处理经常用于图像预处理任务中,例如在(大)目标提取(object extraction)之前去除图像中的一些琐碎细节(small details),以及桥接(bridging)直线或曲线的缝隙。通过线性滤波(linear filter)和非线性滤波(nonlinear filtering)进行模糊处理可以降低图像噪声。

二、线性滤波器的向量表示

相关和卷积可以表示成乘积求和的形式:

其中w是一个m×n大小的滤波器系数矩阵,z为滤波器覆盖的相应图像像素的灰度值。这也是线性滤波的向量表示,因为线性滤波做的所有事情就是实现乘积求和操作。

三、非线性滤波器

不能表示成乘积和形式的滤波器就是非线性滤波,如统计排序滤波(最大值滤波、最小值滤波、中值滤波等)以及高斯滤波。

使用非线性滤波器需要确定滤波器邻域大小以及邻域内图像像素执行的操作。

四、平滑线性滤波器(Smoothing Linear Filters)

4.1、概念

平滑线性空间滤波器的输出(响应)是包含在滤波器模板邻域内(the neighborhood of the filter mask)的像素的简单平均值。这些滤波器有时也称为均值滤波器(averaging filters),也可以把它们归入低通滤波器(lowpass filters)。

平滑滤波器的基本概念非常直观。它使用滤波器模板确定的邻域内像素的平均灰度值代替图像
中每个像素的值。

4.2、作用及应用

平滑滤波器处理的结果降低了图像灰度的“尖锐”(sharp)变化(transitions)。由于典型的随机噪声(random noise)由灰度级的急剧变化组成,因此常见的平滑处理(smoothing)应用就是降低噪声。

然而由于图像边缘(edges,几乎总是一幅图像希望有的特性)也是由图像灰度尖锐变化(sharp intensity transitions)带来的特性。所以均值滤波处理还是存在着不希望有的边缘模糊(blur edges)的负面效应(undesirable side effect)。另外这类处理的其他应用包括由于灰度级数量不足(insufficient number of intensity levels)而引起的伪轮廓效应(false contours)的平滑处理。

均值滤波器的主要应用是去除图像中的不相关(irrelevant)细节,其中“不相关”是指与滤波器模板尺寸相比较小的像素区域。

4.3、两种模板示例

图3.3.2显示了两个3x3平滑滤波器:

  1. 第一个滤波器产生下方的标准像素平均值。把模板系数代人式(3.4-3)即可清楚地看出这一点:

    R是由模板定义的3x3邻域内像素灰度的平均值。注意代替上式中的1/9,滤波器的系数全为“1”,这里的概念是系数取1值时计算更有效,在滤波处理之后整个图像除以9。一个mxn模板应有等于1/mn的归一化常数。象这样所有系数都相等的空间均值滤波器有时称为盒状滤波器(box filter)。

  2. 图3.32所示的第二个模板更为重要一些。该模板产生所谓的加权平均(weighted average),使用这一术语是指用不同的系数乘以像素灰度,即一些像素的重要性(权重)比另一些像素的重要性更大。
    在模板中,处于该模板中心位置的像素所乘的值比其他任何像素所乘的值都要大,因此,在均值计算中为该像素提供更大的重要性。
    其他像素如同是模板中心距离的函数那样赋以成反比的权重。由于对角项离中心比离正交方向相邻的像素(参数为✓2)更远,所以它的权重比与中心直接相邻的像素更小。
    赋予中心点最高权重,然后随着距中心点距离的增加而减小系数值的加权策略的目的是在平滑处理中试图降低模糊(reduce blurring)程度。也可以选择其他权重来达到相同的目的。然而图3.32(b)所示模板中所有系数的和等于 16,对于计算机计算来说是一个有吸引力的特性,因为它是 2 的整数次幂。

在实践中,由于这些模板在一幅图像中任何一个位置所跨过的区域很小,通常很难看出使用图3.32中的各种模板或类似方式进行平滑处理后的图像之间的区别。

4.4、加权均值滤波的过程表示

对于一幅大小为M×N的图像,使用m×n的滤波器模板(m、n为奇数,a=(m-1)/2、b=(n-1)/2)进行加权均值滤波的过程可以由下式表示:

其中x取值为0–M-1,y取值为0–N-1。上式中的分母部分表示为模板各系数之后,它是只需要计算一次即可得到的常数。

4.5、使用各种尺寸模板的图像平滑示例及效果对比

与滤波器模板尺寸有关的图像平滑效果如图3.33所示:

图中显示了一幅原图像以及分别用尺寸为m=3、5、9、15和35像素的方形均值滤波器得到的相应平滑结果。

这些结果的主要特点如下:

  1. 当m=3时,可以观察到在整幅图像中有轻微的模糊。但正如所希望的那样,当图像细节与滤波器模板近似相同时,图像中一些细节受到的影响比较大。例如,图像中的3x3与5x5黑方块、较小的字母“a”和细颗粒噪声,与图像的其他部分相比,要更模糊一些。注意。噪声显著地降低了,字母的锯齿状边缘也令人满意地被平滑了;
  2. m=5时的结果基本与m=3类似,但模糊程度稍微有所增加;
  3. 在m=9时,可以明显地看出图像更加模糊,而且有 20%的黑色圆圈几乎不能像在前三幅图像中那样与背景明显地区分开来,这表明当目标的灰度与其相邻像素的灰度接近时,会导致模糊目标的混合效应;
  4. m=15和35时,就图像中目标物的尺寸来说,已属极端情况。这种极端类型的模糊处理通常用于去除图像中的一些小物体。例如,在图 3.35(f)中,三个小方框、两个小圆圈以及大部分噪声矩形区域已融入到背景中。注意,在这幅图中还有明显的黑的边界。这是我们用0(黑色)填充原图像的边界,经过滤波后再去除填充区域的结果。某些黑色混入了所有滤波后的图像,但对于使用较大滤波器平滑的图像,这就成为问题了。老猿认为这是因为滤波器比较大,导致滤波时黑色的边界对内部的像素产生了影响导致的。

正像早些时候提到的那样,空间均值处理的一个重要应用是为了对感兴趣的物体得到一个粗略的描述(gross representation)而模糊一幅图像,这样,那些较小物体的灰度就与背景混合在一起了,较大物体变得像“斑点”(bloblike)而易于检测。

空间均值处理模板的大小由那些即将融入背景中的物体尺寸来决定。作为实例,考虑图:

  • 虑图3.34(a)它是绕地轨道上的哈勃望远镜拍摄的一幅图像。
  • 图3.34(b)显示了应用15x15均值滤波器模板对该图像处理后的结果。我们可以看到,图像中的一些部分或者融入背景中,或者其亮度明显降低了。像这样利用阈值处理并基于物体亮度来消除某些物体是很典型的操作
  • 使用等于模糊图像最高亮度25%的阈值,并用图3.2(b)的阈值函数处理的结果示于图3.34©中。将该结果与原图像比较,我们看到,考虑图像中最大、最亮物体的表达方式是合理的。

五、统计排序(非线性)滤波器(Order-Statistic (Nonlinear) Filters)

5.1、定义

统计排序滤波器是一种非线性空间滤波器,这种滤波器的响应以滤波器包围的图像区域中所包含的像素的排序(排队ordering或ranking)为基础,然后使用统计排序结果决定的值代替中心像素的值。

5.2、中值滤波

统计排序滤波器中最知名的滤波器是中值滤波器(median filter),正如其名暗示的那样,它是将像素邻域内灰度的中值(在中值计算中包括原像索值)代替该像索的值。

一个数值集合的中值(median)ξ是这样的数值,即数值集合中有一半小于或等于ξ。还有一半大于或等干ξ。为了对一幅图像上的某个点进行中值滤波处理,首先将邻域内的像素分类排序。确定其中值,并将中值赋予滤波后图像中的相应像素点。

例如,对于一个3x3邻域。其中值是第5 个最大的值。而在一个5x5邻域中,中值就是第13个最大的值,等等。

当一个邻域中的一些像素值相同时,所有相等的值都可以作为中值。假如,在一个3x3邻域内有一系列像素值(10,20,20,20,15,20,20,25,100)。对这些值排序后为(10,15,20,20,20,20,20,25,100),那么其中值就是20。

中值滤波器的使用非常普遍,这是因为对于一定类型的随机噪声(random noise),它提供了一种优秀的去噪(noise-reduction)能力。而且比相同尺寸的线性平滑滤波器的模糊程度明显要低。

中值滤波器对处理脉冲噪声(impulse noise)非常有效,该种噪声也称为椒盐嗓声(salt-and-pepper noise),因为这种噪声是以黑白点的形式叠加在图像上的。

这样,中值滤波器的主要功能是使拥有不同于周边像素灰度级的点看起来更接近于它的相邻点。事实上,我们常使用m×m中值滤波器来去除那些相对于其邻域像素更亮或更暗并且其区域小于m²/2(滤波器区域的一半)的孤立像素族(isolated clusters),显然较大的像素簇(Larger clusters)所受到的影响明显较小。在这种情况下,“去除”(eliminated)的意思是强制为邻域的中值灰度(median intensity)。

例3.14 利用中值滤波降噪。
图3.35(a)显示了一幅被椒盐噪声污染的电路板的X射线图像。

为了说明这种情况下的中值滤波器处理效果比均值滤波器更好。在图3.35(b)中显示了用3x3邻域均值模板处理噪声图像的结果,而在图3.35©中显示了用3x3中值滤波器处理噪声图像的结果。均值滤波模糊了图像,并且噪声去除性能也很差。在这种情况下,中值滤波要远远优于均值滤波。通常中值滤波比均值滤波更适合去除椒盐噪声

5.3、其他统计排序滤波器

在图像处理中,尽管中值滤波器是使用得最为广泛的统计排序滤波器,但并不意味着它是唯一的。
中值象征一系列像素值排序后的第50%个值,但根据基本统计学可知,排序也适用于其他不同的情况。

例如,可以取第100%个值,即所谓的最大值滤波器(max filter)。这种滤波器在搜寻一幅图像中的最亮点时非常有用。一个3x3的最大值滤波器的响应可以由公式R=maxzk|k=1,2,···,9给出。

相反,取第0%个值的滤波器就是所谓的最小值滤波器(min filter),它可用于相反的目的。

六、小结

本文介绍了线性滤波和非线性滤波的概念、作用以及应用示例,可以看到线性滤波和非线性滤波都有不错的应用场景,线性滤波器还可以有不同的系数,不同的波器的模板大小取决于要处理图像的目标,特定的模板对特定的噪声有比较好的作用,如线性滤波比较适合随机噪声,中值滤波适合椒盐噪声的处理。

更多图像处理请参考专栏OpenCV-Python图形图像处理》、《图像处理基础知识》以及付费专栏《OpenCV-Python初学者疑难问题集》的介绍。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。

如对文章内容存在疑问,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询:
老猿Python微信公号

也可以扫描博客左边栏目的微信公号二维码咨询。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython

以上是关于数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)的主要内容,如果未能解决你的问题,请参考以下文章

平滑空间滤波器

平滑空间滤波器

从0到1学Python丨图像平滑方法的两种非线性滤波:中值滤波双边滤波

Python从零到壹丨详解图像平滑的两种非线性滤波方法

Python从零到壹丨详解图像平滑的两种非线性滤波方法

4.4空间平滑