1.滤波器的作用

滤波,也称平滑或者模糊,主要是为了减小图像噪声和伪影,同时在降低图像分辨率的时候,平滑也是必要的。

2.认识两种噪声

首先我们来认识两种常见噪声:

椒盐噪声,也就是夹杂在图像中的黑色和白色噪音像素,这是一种非线性噪声,也称为乘性噪声,之所以称为乘性是因为这种噪声和源图像是伴随存在的,图像产生该噪声也就产生,图像消失该图像也就消失,这是一种非线性噪声,可以将图片看做一个系统 ,而椒盐噪声就是因为图片的时变性和非线性造成的。

高斯噪声,一种噪声强度满足正态分布的图像噪声,这是一种线性噪声,也称为加性噪声,它和图像是相加的关系,没有图像高斯噪声也存在,这种噪声不因为原图像的变化而变化,对于图片这个系统是时不变的,也称为线性的。

其它的诸如泊松噪声,就是满足泊松分布的噪声。

一般的我们使用不同滤波器用于对不同噪声处理,均值滤波,方框滤波,高斯滤波,双边滤波一般用于处理线性噪声,也就是高斯噪声,而非线性噪声我们一般使用中值滤波器。

3.方框滤波器和均值滤波器

我们把这两种滤波器放在一起学习是因为,均值滤波是方框滤波的特殊形式,两者的区别在于方框滤波器可以选择是否进行归一化,而均值滤波器则一定归一化,我们用图片来展示什么是归一化

当这个normalize属性为TRUE时,方框滤波和均值滤波相同,滤波器K*1/25归一化处理。而normalize属性为FALSE时,方框滤波器不进行归一化,也就是对高斯核直接求和作为中心像素点的灰度,这样子做很容易发生溢出,超出255范围。

OpenCV提供了现成的方框滤波函数去操作normalize属性

void boxfilter(
InputArray src,   //输入图像
OutputArray dst,  //输出图像
int ddepth,       //输出图像深度也就是数据类型
Size k size,      //滤波器大小,必须为奇数
Point anchor,     //设置锚点,对齐方式一般中心对齐给(-1,-1)
bool normalize    //是否归一化
);

我们再来看一看均值滤波器有什么不同

void blur(
InputArray src,   //输入图像
OutputArray dst,  //输出图像
Size ksize,       //盒状核大小
Point anchor,     //一般取(-1,-1),中心像素对齐
int borderType    //边缘平滑类型传入参数BORDER_DEFAULT
);

均值滤波器无法指定输出图像的数据类型。多了边缘平滑,其它和方框滤波一样。

4.中值滤波器

中值滤波就是将盒状盒中的像素按照顺序排列,取中间像素作为结果,这种滤波器相较于线性滤波器有一个较大的好处是不受极端点的影响,比如椒盐噪声非黑即白,而线性滤波器需要对盒状核中每个像素加权求和,受偏差较大的点影响较大。

来看看中值滤波器长什么样

中值滤波函数

void midianBlur(
InputArray src,   //输入图像
OutputArray dst,  //输出图像
Size ksize        //核大小
);

5.高斯滤波器

高斯噪声作为最常见的噪声,我们一般使用高斯滤波器进行滤波,可以有效去除高斯噪声

高斯公式:左边为一维高斯公式 右边为二纬高斯公式

我们在用高斯公式获得权重一般用的是一纬的高斯公式,同时获得两个高斯核,分别进行卷积运算,(x,y)对应的是高斯核各个像素的到中心像素的x,y坐标,分别带入一维高斯公式,中心像素为(0,0),反应的是方差,越大越接近均值滤波,越小中心像素加权越大。

高斯滤波器函数

void GaussianBlur(
InputArray src,    //输入图像
OutputArray dst,   //输出图像
Size ksize,        //高斯核大小
double sigmaX,     //沿X轴方差
double sigmaY,     //沿Y轴方差
int borderType     //边缘平滑方式
)

常见高斯核大小有5*3、3*3、5*5、7*7

对于X轴和Y轴上的取值,只给了x的值,y为0,那么y和x将相同,如果都设置为0,那么将使用以下公式获得方差

sigma X= 0.3*((ksize.width-1)*0.5-1)+0.8

sigma Y = 0.3*((ksize.height-1)*0.5-1)+0.8

高斯滤波器的边缘平滑参数一般传入RORDER_DEFAULT,默认平滑方式。

6.双边滤波

双边滤波是对高斯滤波的改进,由于高斯滤波是对一个一个矩形内所有元素加权求和,所以会淡化边界损失特征值,因此引入双边滤波来保证边界受影响较小。

我们先来看双边滤波器函数

void bilateralFilter(
InputArray src,     //输入图像
OutputArray dst,    //输出图像
int d,              //像素临域的直径
double sigmacolor,  //颜色空间滤波器的sigma值
double sigmaSpace,  //坐标空间滤波器中的sigma值
int borderType      //边缘平滑类型BORDER_DEFAULT
);

这个函数中参数d的作用和高斯滤波器中Size的作用类似 ,也可以直接给d=-1,函数将自动计算sigmaSpace的值,sigmaColor越大图像的边界感越强,sigmaSpace越大图像边界敢越弱,同时图像越模糊。

加性噪声和乘性噪声、均值滤波器、方框滤波器、中值滤波器、高斯滤波器、双边滤波器相关推荐

  1. 图像处理:推导五种滤波算法(均值、中值、高斯、双边、引导)

    目录 概论 算法原理 1.均值滤波 2.中值滤波 3.高斯滤波 4.双边滤波 5.引导滤波 手写代码 Opencv代码实现 最后的总结 参考文章 概论 本来打算是分开推导的,但我觉得还是整个合集吧,避 ...

  2. 【图像处理】——Python实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)

    目录 1.随机噪声 2.椒盐噪声 3.高斯噪声 补充:numpy.clip函数 4.其他噪声 1.随机噪声 随机噪声就是通过随机函数在图像上随机地添加噪声点 随机函数random模块参考:https: ...

  3. 【算法讲7:积性函数(下)】⌈ 加性函数 ⌋ 与 ⌈ 积性函数 ⌋ 与 ⌈ 狄利克雷卷积 ⌋ 详细介绍

    [算法讲7:积性函数(下)] 前置 补充 ⌈\lceil⌈积性函数⌋\rfloor⌋ (乘性函数) 四个最基本的定义 关于积性函数的基本性质 性质一:f(1) 性质二:积性函数的各种传递 性质三:整数 ...

  4. 常见图像噪声和常见图像噪声处理算法

    1.图像噪声 1.1图像噪声的分类 图像噪声按噪声与信号的关系可分为加性噪声和乘性噪声:按照产生原因可分为外部噪声和内部噪声:按照统计特性可分为平稳噪声和非平稳噪声:平稳噪声基于统计后的概率密度函数又 ...

  5. matlab 自适应噪声对消,自适应噪声对消

    应噪声对消的语音增强法 王振 力 张雄伟 郑君杰 ( 解放军理 工大学 通信工程学 院,江苏南京 200)107 摘 要 :在 自适应噪声对消( N)AC中,本文根据主辅...... (000)007 ...

  6. C++中的static关键字 ,外部链接性,内部链接性和无链接性

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 一.面向过程设计中的st ...

  7. React学习:双向数据绑定、约束性和非约束性组件-学习笔记

    文章目录 React学习:双向数据绑定.约束性和非约束性组件-学习笔记 表单 约束性和非约束性组件(受限/非受限) 双向数据绑定小例子 React学习:双向数据绑定.约束性和非约束性组件-学习笔记 表 ...

  8. linux 例行性工作,Linux例行性工作

    Linux例行性工作 Linux:例行性工作 什么是例行性工作? 其实对于例行性工作而言就是在当前环境下周期性进行的必须工作. 在Linux下,有2种例行性工作种类: 一种是突发性,做完以后就没有的那 ...

  9. 可访问性不一致 可访问性低_什么是网站可访问性?

    可访问性不一致 可访问性低 Web accessibility is getting a lot of attention these days, but it can be intimidating ...

  10. 【电路理论】2-6 线性电阻电路解答的存在性与惟一性定理

    文章目录 线性电阻电路解答的存在性与惟一性问题 线性电阻电路解答的存在性与惟一性定理 线性电阻电路解答的存在性与惟一性问题 一个模型是否如实地代表一个工作正常的实际电路,其必要条件是这一模型有唯一解. ...

最新文章

  1. 使用 Pytorch 实现 skip-gram 的 word2vec
  2. 第七课.Logistic回归算法
  3. redis geohash 学习笔记
  4. 探寻教育信息化着力点,创新四川省教育厅IT管理
  5. WordPress,SAP Kyma和微信三者的集成
  6. 软考网络工程师笔记-综合知识1
  7. 望图知意-Yahoo VS 3721
  8. Vrep中将物体变得透明的方法
  9. java timer 序列化_编程达人 应用层timer_如何序列化timer
  10. 特斯拉:感谢A股股民!
  11. 阶梯博弈(尼姆博奕进阶)
  12. [译]R语言——Shiny框架之构建(一):1.结构——1.独立应用程序——1.应用的格式和启动
  13. 阿里的OceanBase上天了,但你还不会使用Explain看SQL的查询计划吗?
  14. 刷 百度排名,百度(google)搜索提示下拉关联词的一个简易思路··
  15. Sensor系列五 App实现获取gsensor数据
  16. SpaceShooter打飞机教程笔记(一)
  17. 2022年数维杯国际数模赛浅评
  18. 随便拍几张照片赚了3K,近期的风口视频项目
  19. 解决Linux网络连接问题
  20. 技嘉GA-B85-HD3(2.0)加装NVME固态硬盘

热门文章

  1. Android R系统Fingerprint指纹流程归纳
  2. php判断客户端是否支持cookie,检查是否启用了cookie
  3. Vue核心技术-41,vue-router-导航守卫
  4. 端口扫描 -- scanport和superscan
  5. 管理理论模型:PEST、5W2H、时间管理、生命周期、逻辑树、金字塔、SMART原则
  6. TypeError: set expected at most 1 arguments, got 4
  7. C语言中三目运算符的结合性问题
  8. c语言乒乓球对手算法,乒乓球学生论文,关于例c语言教学案例设计相关参考文献资料-免费论文范文...
  9. 世界杯花样营销:争夺32亿人眼球中看到三大趋势
  10. Win7旗舰版 安装步骤