【OpenCV 4开发详解】中值滤波
本文首发于“小白学视觉”微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究!
经过几个月的努力,小白终于完成了市面上第一本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的滤波器对图像进行中值滤波,程序的运行结果在图5-22、图5-23给出,通过结果可以看出,9×9的中值滤波同样会对整个图像造成模糊的现象。
代码清单5-19 myMedianBlur.cpp中值滤波
1. #include <opencv2\opencv.hpp>
2. #include <iostream>
3.
4. using namespace cv;
5. using namespace std;
6.
7. int main()
8. {9. Mat gray = imread("equalLena_salt.png", IMREAD_ANYCOLOR);
10. Mat img = imread("lena_salt.png", IMREAD_ANYCOLOR);
11. if (gray.empty() || img.empty())
12. {13. cout << "请确认图像文件名称是否正确" << endl;
14. return -1;
15. }
16. Mat imgResult3, grayResult3, imgResult9, grayResult9;
17. //分别对含有椒盐噪声的彩色和灰度图像进行滤波,滤波模板为3×3
18. medianBlur(img, imgResult3, 3);
19. medianBlur(gray, grayResult3, 3);
20. //加大滤波模板,图像滤波结果会变模糊
21. medianBlur(img, imgResult9, 9);
22. medianBlur(gray, grayResult9, 9);
23. //显示滤波处理结果
24. imshow("img", img);
25. imshow("gray", gray);
26. imshow("imgResult3", imgResult3);
27. imshow("grayResult3", grayResult3);
28. imshow("imgResult9", imgResult9);
29. imshow("grayResult9", grayResult9);
30. waitKey(0);
31. return 0;
32. }
图5-22 myMedianBlur.cpp程序中灰度图像中值滤波结果
图5-23 myMedianBlur.cpp程序中灰度图像中值滤波结果
OpenCV 4开发详解 |
往期推荐 |
---|
【OpenCV 4开发详解】图像与视频的保存 |
【OpenCV 4开发详解】保存和读取XML和YMAL文件 |
【OpenCV 4开发详解】颜色模型与转换 |
【OpenCV 4开发详解】多通道分离与合并 |
【OpenCV 4开发详解】图像像素统计 |
【OpenCV 4开发详解】两图像间的像素操作 |
【OpenCV 4开发详解】图像二值化 |
【OpenCV 4开发详解】图像LUT查找表 |
【OpenCV 4开发详解】图像连接 |
【OpenCV 4开发详解】图像仿射变换 |
【OpenCV 4开发详解】图像透视变换 |
【OpenCV 4开发详解】图像极坐标变换 |
【OpenCV 4开发详解】图像上绘制几何图形 |
【OpenCV 4开发详解】图像金字塔 |
【OpenCV 4开发详解】窗口交互操作 |
【OpenCV 4开发详解】图像直方图绘制 |
【OpenCV 4开发详解】直方图操作 |
【OpenCV 4开发详解】直方图应用 |
【OpenCV 4开发详解】图像模板匹配 |
【OpenCV 4开发详解】图像卷积 |
【OpenCV 4开发详解】图像噪声的种类与生成 |
【OpenCV 4开发详解】均值滤波 |
【OpenCV 4开发详解】方框滤波 |
【OpenCV 4开发详解】高斯滤波 |
【OpenCV 4开发详解】可分离滤波 |
经过几个月的努力,市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》将春节后由人民邮电出版社发行。如果小伙伴觉得内容有帮助,希望到时候多多支持! |
关注小白的小伙伴可以提前看到书中的内容,我们创建了学习交流群,欢迎各位小伙伴添加小白微信加入交流群,添加小白时请备注“学习OpenCV 4”。 |
【OpenCV 4开发详解】中值滤波相关推荐
- 【OpenCV 4开发详解】可分离滤波
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】高斯滤波
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】方框滤波
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】均值滤波
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】分割图像——分水岭法
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】深度神经网络应用实例
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像修复
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】分割图像——Mean-Shift分割算法
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】分割图像——Grabcut图像分割
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
最新文章
- python执行bat文件_python自动运行cmd,bat文件
- java线程池的使用例子,不愧是大佬
- linux服务器宕机分析/性能瓶颈分析
- 树莓派 RespberryPi:通过命令行关机 / 重启
- [Kafka与Spark集成系列二] Spark的安装及简单应用
- 深度使用魅族16T后的评价(本人魅友,绝对客观公正,不要盲目的为手机厂商辩护,想想从当初到现在,魅族正在一步步背离自己的信仰,有问题,解决问题才能有更好的发展)
- 分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容
- mysql单机热备份_mysql数据库热备份
- OSG仿真案例(2)
- cmpp3.0 java 华为_CMPP3.0/2.0完成短信收发功能(引用华为smsproxy开发包)
- 聚类算法之密度聚类方法
- JS计算时间差;.net计算时间差
- 怎样把自己喜欢的微信表情包(动态)导出来,我三岁半的表弟都会...
- 科学素养题(2022年2月-2022年10月)
- android scheme 参数解析,Android 利用scheme协议进行跳转
- IT职业技能图谱:IT工程师学习路线
- 不用再找懒人包了 | Windows安装苹果系统(dmg)原版
- 十分钟设置android状态栏一体化开源工程推荐
- 稀疏矩阵的十字链表存储表示和实现(第五章 P104 算法5.4)
- 【天梯赛 - L2习题集】啃题(12 / 44)
热门文章
- 完整代码+实操!手把手教你操作Faster R-CNN和Mask R-CNN
- 陆奇激动地对世界说,百度就是中国的谷歌
- Sharding-Jdbc 实现读写分离 + 分库分表,写得太好了!
- 用了3年CAT,这次我想选择SkyWalking,老板反手就是一个赞!
- Spring Boot 整合 Spring Security 示例
- 工作几年了,API 网关还不懂?
- 为什么建议使用你 LocalDateTime ,而不是 Date?
- 涨姿势,Java中New一个对象是个怎么样的过程?
- 计算机科学和Python编程导论(三) 一些简单的数值程序
- 2020 AI前沿交流大会 | 聚焦CV/NLP最新学术及工业界实践