前言

滤波处理分为两大类:线性滤波和非线性滤波。OpenCV里有这些滤波的函数,使用起来非常方便,现在简单介绍其使用方法。

线性滤波

线性滤波有方框滤波均值滤波高斯滤波三种滤波。

(一)方框滤波

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;int main()
{Mat img = imread("lol4.jpg");imshow("原始图", img);Mat out;boxFilter(img, out, -1, Size(5, 5));//-1指原图深度imshow("方框滤波", out);waitKey(0);}

(二)均值滤波
均值滤波就是方框滤波的一个特殊情况。
均值滤波的缺点就是不能很好地保护细节,在图像去燥的同时也破坏了图像的而细节部分,从而使图像变得模糊,不能很好的去除噪点。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;int main()
{Mat img = imread("lol4.jpg");imshow("原始图", img);Mat out;blur(img, out,Size(5, 5));//-1指原图深度imshow("均值滤波", out);waitKey(0);}

(三)高斯滤波
高斯滤波,可以消除高斯噪声,广泛应用于图像处理的减噪过程。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;int main()
{Mat img = imread("lol4.jpg");imshow("原始图", img);Mat out;GaussianBlur(img, out, Size(3, 3), 0, 0);imshow("高斯滤波", out);waitKey(0);}

从效果看出,高斯滤波的而模糊感明显降低

非线性滤波

非线性滤波有中值滤波、双边滤波两种滤波。

(一)中值滤波

基本思想就是用像素点的领域灰度的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像的细节(不会出现边缘模糊的情况)。

中值滤波跟均值滤波的思想看起来很相似,只是一个取平均值,一个取中位数而已

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;//中值滤波
int main()
{Mat img = imread("lol4.jpg");imshow("原始图", img);Mat out;medianBlur(img, out, 7);//第三个参数表示孔径的线性尺寸,它的值必须是大于1的奇数imshow("中值滤波", out);waitKey(0);}

现在说说中值滤波与均值滤波的比较:均值滤波中噪声成分会被加入到平均计算,所以输出是受到噪声的影响的。但是中值滤波中,由于噪声成分很难选上,所以基本不影响输出。当然好的性能也需要付出一点代价的,中值滤波花费的时间是均值滤波的5倍以上。

中值滤波一般采用奇数的卷积核。

中值滤波对一些细节多(特别是细、尖顶的)的图像不太适合。

(二)双边滤波

双边滤波的最大特点就是做边缘保存。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;//双边滤波
int main()
{Mat img = imread("lol4.jpg");imshow("原始图", img);Mat out;bilateralFilter(img, out, 25, 25 * 2, 25 / 2);imshow("双边滤波", out);waitKey(0);}

效果图看来,双边滤波是所有滤波中最清晰的。

OpenCV精进之路(二):图像处理——线性滤波和非线性滤波相关推荐

  1. OpenCV精进之路(十六):图像分解和融合技术——图像拼接和图像融合技术

    图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...

  2. OpenCV精进之路(一):图像处理知识点串烧

    opencv图像初始化操作 #include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using na ...

  3. OpenCV精进之路(二十三):实例——Bag of Features(BoF)图像分类实践

    在深度学习在图像识别任务上大放异彩之前,词袋模型Bag of Features一直是各类比赛的首选方法.首先我们先来回顾一下PASCAL VOC竞赛历年来的最好成绩来介绍物体分类算法的发展. 从上表我 ...

  4. OpenCV精进之路(二十二):实例——皮肤检测技术

    好久没写博客了,因为最近都忙着赶项目和打比赛==| 好吧,今天我打算写一篇关于使用opencv做皮肤检测的技术总结.那首先列一些现在主流的皮肤检测的方法都有哪些: RGB color space Yc ...

  5. OpenCV精进之路(四):图像处理——图片的缩放和图像金字塔

    前言 对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像. 要缩小图像,一般推荐使用CV_INETR_AREA来插值:若要放大图像,推 ...

  6. OpenCV精进之路(三):图像处理——形态学滤波(膨胀、腐蚀、开闭运算)

    前言 腐蚀和膨胀是最基本的形态学运算. 腐蚀和膨胀是针对白色部分(高亮部分)而言的. 膨胀就是对图像高亮部分进行"领域扩张",效果图拥有比原图更大的高亮区域:腐蚀是原图中的高亮区域 ...

  7. OpenCV精进之路(二十一):实例——去除发票上的印章

    最近在做票据识别的编码工作时遇到一些问题,就是票据上往往会有一些红色印章把一些重要信息区域给覆盖了,比如一些开发票人员盖印章时比较随意,容易吧一些关键区域给遮蔽了,这让接下来的票据识别很困难,因此,我 ...

  8. OpenCV精进之路(二十):工具——图像标注小工具

    搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注.图像标注是件很枯燥又很 ...

  9. OpenCV精进之路(十二):详解掩膜mask

    在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底什么呢? 一开始我接触到Mask这个东西时,我还真是一头雾水啊,也对无法理解Mask到底有什么用.经过 ...

最新文章

  1. Spark集群搭建中的问题
  2. webstorm快捷键说明
  3. 关于vscode插件autoprefixer 3.0无法使用的问题
  4. mysql 选择前4个_mysql从4个表中选择
  5. [活动通知]Nanjing GDG 2013年4月活动
  6. [\u4e00-\u9fa5] //匹配中文字符
  7. Java集合系列---List源码解析(ArrayList和LinkedList的区别)
  8. 【CF 543D】Road Improvement,树形DP
  9. python import os.path_Python常用模块os.path——文件及路径操作
  10. 【优化预测】基于matlab粒子群算法优化BP神经网络(多输入多输出)【含Matlab源码 1418期】
  11. 去除lcd图片的摩尔纹_送上妊娠纹的最强攻略!几十款热门产品大测评!
  12. 立创EDA库导入AD18的教程
  13. 编译环境 Golang开发环境 vscode+git
  14. 大学四年Java学习路线规划,所有私藏资料我都贡献出来了,我要是早知道就好了
  15. 中小学python编程教学-小学信息技术教学中进行Python 编程语言教学的策略
  16. 【解局】瑞幸向上,盒马向下
  17. 在lomboz eclipse 3.3中配置tomcat7/8 server运行时环境遇到的问题
  18. 原生php写简单的聊天室
  19. 【经典面试题】小程序与H5、APP、公众号的区别到底是什么?
  20. 游戏策划入门(5)——开始绘制系统的结构流程图

热门文章

  1. 《强化学习》中的第11章:基于函数逼近的离轨策略方法
  2. lol云顶之奕助手_云顶之奕小小英雄介绍 除了棋子以外它也很重要!
  3. mysql主从同步故障整理
  4. 没有安装opencv的linux系统上运行基于opencv,Linux环境下安装OpenCV
  5. 如何开启php socket,如何用php实现websocket?
  6. 十进制转5421BCD(测试文件及modelsim.do文件的模板)——补充篇
  7. php ngx_http_auth_basic_module,nginx认证模块ngx_http_auth_basic_module
  8. ORA-01502-对应的快速解决办法(索引或这类索引的分区处于不可用状态)
  9. 神武显示未能成功连接服务器,神武:疑难问题解答,总有你要的答案
  10. 使CEdit处于全选状态