【OpenCV 4开发详解】中值滤波

本文介绍了中值滤波的原理,它是基于排序统计的一种非线性噪声抑制方法,优于均值滤波在处理脉冲干扰和图像噪声上的效果。OpenCV 4的medianBlur()函数用于实现中值滤波,要求滤波器尺寸为奇数,且对图像数据类型有特定限制。程序示例展示了不同大小滤波器对含椒盐噪声图像的影响,大尺寸滤波器可能导致图像模糊。
摘要由CSDN通过智能技术生成
本文首发于 “小白学视觉”微信公众号,欢迎关注公众号
本文作者为小白,版权归 人民邮电出版社发行所有,禁止转载,侵权必究!

经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。

中值滤波就是用滤波器范围内所有像素值的中值来替代滤波器中心位置像素值的滤波方法,是一种基于排序统计理论的能够有效抑制噪声的非线性信号处理方法。中值滤波计算方式如图5-21所示,将滤波器范围内所有的像素值按照由小到大的顺序排列,选取排序序列的中值作为滤波器中心处黄色像素的新像素值,之后将滤波器移动到下一个位置,重复进行排序取中值的操作,直到将图像所有的像素点都被滤波器中心对应一遍。中值滤波不依赖于滤波器内那些与典型值差别很大的值,因此对斑点噪声和椒盐噪声的处理具有较好的处理效果。

相比于均值滤波,中值滤波对于脉冲干扰信号和图像扫描噪声的处理效果更佳,同时在一定条件下中值滤波对图像的边缘信息保护效果更佳,可以避免图像细节的模糊,但是当中值滤波尺寸变大之后同样会产生图像模糊的效果。在处理时间上,中值滤波所消耗的时间要远大于均值滤波消耗的时间。

图5-21 中值滤波计算过程示意图

OpenCV 4提供了对图像进行中值滤波操作的medianBlur()函数,该函数的函数原型在代码清单5-18中给出。

代码清单5-18 medianBlur()函数原型
1.	void cv::medianBlur(InputArray 	src,
2.	                    OutputArray  dst,
3.	                    int  ksize 
4.	                    )
  • src:待中值滤波的图像,可以是单通道,三通道和四通道,数据类型与滤波器的尺寸相关,当滤波器尺寸为3或5时,图像可以是CV_8U,CV_16U或CV_32F类型,对于较大尺寸的滤波器,数据类型只能是CV_8U。
  • dst:输出图像,与输入图像src具有相同的尺寸和数据类型。
  • ksize:滤波器尺寸,必须是大于1的奇数,例如:3、5、7……

该函数只能处理符合图像信息的Mat类数据,2通道或者更多通道的Mat类矩阵不能被该函数处理,并且对于图像数据类型的要求也和滤波器的尺寸有着密切的关系。函数第一个参数是待中值滤波的图像,可以是单通道,三通道和四通道,数据类型与滤波器的尺寸相关。当滤波器尺寸为3或5时,图像可以是CV_8U,CV_16U或CV_32F类型,对于较大尺寸的滤波器,数据类型只能是CV_8U。第二个参数是输出图像,输出图像的尺寸和数据类型与输入图像相同。最后一个参数是滤波其的尺寸,区别于之前的线性滤波,中值滤波的滤波器必须是正方形且尺寸为大于1的奇数。该函数对于多通道的彩色图像是针对每个通道的内部数据进行中值滤波操作。

为了了解中值滤波函数medianBlur()的使用方法,在代码清单5-19中给出了对含有椒盐噪声的灰度图像和彩色图像进行中值滤波的示例程序,程序中分别用3×3和9×9的滤波器对图像进行中值滤波,程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值