引言

本系列文章记录老猿自学冈萨雷斯《数字图像处理》的感悟和总结,不过估计更新会比较慢,白天要工作,都是晚上抽空学习,学习完一章再回头总结,想学的朋友可以自己下载英文原版(目前到第四版)和中文译本(目前应该到第三版)的电子版观看,如果想对照观看建议英文原版也找第三版。

这本《数字图像处理》不愧为数字图像处理的经典教程,知识范围广、内容详尽、案例贴近实践,至少很合老猿的口味。但中译本存在两个问题:

  • 有些翻译得不够精准或流利,对于这样的内容如果在老猿总结知识中出现,会进行调整,有些关键术语老猿会附上英文原词;
  • 中译本的图像案例很多都比原版差很多,甚至差到影响对讲述内容的理解,因此就算不看原版文字,图像案例最好还是对照原版的,老猿都取英文本的图像。

老猿在学习的总结上,针对特定知识点加上一些自己的感悟,如果感悟内容描写多一点,会标注为:老猿注,如果少就没有单独标注,可能到后来老猿自己都发现不了是否是自己改动过的。

一、概述

平滑滤波器用于模糊处理(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=max{zk|k=1,2,···,9}给出。

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

六、小结

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

更多图像处理请参考专栏《OpenCV-Python图形图像处理》、《图像处理基础知识》以及付费专栏《OpenCV-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)相关推荐

  1. 数字图像处理- 3.4 空间滤波 and 3.5 平滑空间滤波器

    3.4 空间滤波基础 • Images are often corrupted by random variations in intensity, illumination, or have poo ...

  2. 平滑空间滤波器(附C语言实现代码)

    平滑空间滤波器 1 什么是滤波 用书本上的话来说,滤波就是接受或拒绝(过滤)一定的频率部分(波) 我个人的理解是:滤波是一个二维函数(映射),它对一个假象的二维平面上的对象进行某种变换,这个变换可以是 ...

  3. Win8 Metro(C#)数字图像处理--2.70修正后的阿尔法滤波器

    原文:Win8 Metro(C#)数字图像处理--2.70修正后的阿尔法滤波器 /// <summary>/// Alpha filter./// </summary>/// ...

  4. 数字图像处理学习笔记(三)——空间分辨率和灰度分辨率、等偏爱曲线

    数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...

  5. 数字图像处理(1)-采样,量化,空间分辨率,灰度级分辨率

    文章目录 数字图像的表示 图像采样 图像的量化 图像空间分辨率 灰度级分辨率 数字图像的表示 一幅图像可以被定义为一个二维函数f(x,y),其中(x,y)是空间(平面)坐标,在任何坐标(x,y)处的幅 ...

  6. 《数字图像处理》学习笔记(四)--混合空间增强法(待修改)

    这次试验问题很多,应该还是数据格式的问题,先发上来吧,放假回去先用Matlab做下,再改改..... 下面对一幅人体骨骼扫描图进行混合空间增强(有点吓人)...我们的目标是通过图像锐化突出骨骼的更多细 ...

  7. 数字图像处理(四):彩色空间及转换公式

    一.RGB空间 这是我们最熟悉的色彩空间. 根据色度学原理,自然界的各种颜色光都可以由红.绿.蓝三种颜色的光按不同比例混合而成.因此将红绿蓝三种颜色成为三基色. 几乎所有的彩色成像设备和彩色显示设备都 ...

  8. 数字图像处理与Python实现-图像滤波-Frangi滤波器

    Frangi滤波器 文章目录 Frangi滤波器 1.Frangi滤波器及其数学描述 2.代码实现 1.Frangi滤波器及其数学描述 Frangi滤波器是Koen L. Vinc Alejandro ...

  9. 空间滤波器(Spatial Filter)的应用

    前言 相信很多初学CV的小伙伴都会接触到opencv的例程,里面出现频率最高的就是 filter(空间滤波的类别有:mean , median, Gaussian filter, 灰度滤波, 双向滤波 ...

最新文章

  1. 以太坊和EOS的DApps数量飙升但用户量滞后
  2. python创建打开文件-python打开文件方式
  3. linux中可以安装不同版本的gcc么,在linux下安装多个版本的GCC
  4. 虚拟机usb接口连接失败_适用于汽车的USB接口连接器介绍与设计(好文分享)
  5. 英语总结系列(十九):七月英语Baby成长史
  6. 使用Windows Server 2003搭建一个asp+access网站
  7. 小心!!,使用缓存的陷阱
  8. 30天提升技术人的写作力-第七天
  9. 如何创建和使用Web服务(转)
  10. 小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
  11. 使用Go编译为可执行文件(windows/linux)
  12. 步进电机驱动器脉冲频率确定 步进电机驱动器
  13. Set ip IPv6 env (by quqi99)
  14. 易观CTO郭炜:开源,不是天才的甜点,而是勤奋者的盛宴
  15. AI丨亚马逊将在加州欧文地区测试其自动送货机器人Scout
  16. 引爆5G市场,场景为王?
  17. setup/teardown用法汇总
  18. xmanager无法连接Linux服务器,解决xmanager连接linux出错问题
  19. 删除+mysql+用户密码_误删除mysql中的所用用户,如何重新设置root账号和密码
  20. μC/OS-III_系统特点

热门文章

  1. 如何快速实现在网页中调用文档扫描仪 (1)
  2. 版图DRC The following products could not be licensed sufficiently:- Calibre Interactive
  3. 原生js实现 转义还原HTML
  4. Swaps in Permutation
  5. py6_Python 内置函数/普通自定义函数 及参数和返回值
  6. 基于知识图谱的知识泛化让AI学会“举一反三”
  7. Request header field xxx is not allowed by Access-Control-Allow-Headers in preflight respon
  8. 微信商户号 API 密钥、API 证书配置
  9. matlab mysql建系统_能环水体治理项目(Mysql数据库,Matlab创建GUI界面)【一】
  10. 杂谈:Perl6 树莓Pi Erlang win10 Clojure