::返回OpenCV算子速查表

中值模糊、高斯模糊和双边滤波

  • 1. 函数定义
    • 1.1 中值模糊
    • 1.2 高斯模糊
    • 1.3 双边滤波
  • 2. 例程

1. 函数定义

1.1 中值模糊

OpenCV官方文档

 void medianBlur(InputArray src,OutputArray dst, int ksize);
  • 支持就地调用(源图像和目标图像是同一幅图像);
  • 输入可以为1、3或4通道图像;
  • ksize为3或5时,图像深度可以为CV_8U、CV_16U或CV_32F
  • 但是当ksize大于5时,图像的深度就只能为CV_8U

1.2 高斯模糊

OpenCV官方文档

 void GaussianBlur(InputArray src, OutputArray dst, Size ksize,double sigmaX,double sigmaY = 0,int borderType = BORDER_DEFAULT);
  • 支持就地调用
  • 输入可以有任意数量的通道图像,这些通道是独立处理的,但深度应该是CV_8U、CV_16U、CV_16S、CV_32F或CV_64F。
  • ksize是高斯核的尺寸,ksize.width 和ksize.height 可以不相同,但必须是正的奇数;或者你把它们设置为0,它们的实际数值会根据sigma的值而被自动计算出来。
  • sigmaX X方向上的高斯核标准差。
  • sigmaY Y方向高斯核标准差,如果sigmaY是0,它会被设置为等于sigmaX,如果两个sigmaX和sigmaY都是0,它们会根据ksize计算出来。OpenCV建议指定所有ksize、sigmaX和sigmaY

1.3 双边滤波

OpenCV官方文档

 void bilateralFilter(InputArray src,OutputArray dst, int d,double sigmaColor,double sigmaSpace,int borderType = BORDER_DEFAULT);
  • 不支持就地调用
  • bilateralFilter可以很好地减少不必要的噪声,同时保持边缘清晰。但是,与大多数滤波器相比,它运行效率很低。
  • d 的值:d大于5时,效率就开始变得低下了,所以如果你需要实时应用双边滤波器,那么d的值不要超过5,如果你需要离线处理噪声很严重的图像,就可以把d设置的更大一些了;
  • d的值如果是非正数,它将会由sigmaSpace来计算。
  • Sigma 的值: 为了方便起见,你可以把sigmaColorsigmaSpace 设置为相等;如果它们小于10,滤波器可能都不起什么作用,但是如果它们大于150,滤波器的作用可能又太大了,图片会变成卡通片似的。
  • sigmaColor:颜色空间的sigma值,值越大,意味着颜色差异更大的临近像素会被融合到一起去。会导致更大的semi-equal color区域。这里是在OpenCV官方文档里看到的,没有想明白semi-equal color应该怎么翻译和理解,有知道的朋友可以告诉我。
  • sigmaSpace:坐标系空间的sigma值,值越大,意味着距离更远的像素将会互相影响(只要它们的颜色足够接近)。当d>0, 就由d来指定邻域大小,sigmaSpace就没用了,如果d≤0时, d的实际值会与 sigmaSpace成正比。

2. 例程



  • 中值模糊和高斯模糊都能够很有效的去除椒盐噪声,但是如同它们的名字“模糊”,图像也变得模糊了。双边滤波虽然可以保持图像的边缘细节,但是无法很好地去除椒盐噪声。如果先使用模糊,再使用双边滤波,这样的处理结果或许是一个折中的办法。
#include "stdafx.h"
#include <opencv.hpp>
using namespace cv;//中值模糊,高斯模糊,双边滤波
int main()
{Mat m_SrcImg = imread("./椒盐噪声美女.jpg");imshow("原图", m_SrcImg);Mat m_DstImg;medianBlur(m_SrcImg, m_DstImg, 5);imshow("中值模糊", m_DstImg);//要注意高斯模糊的高斯核尺寸应该是正的奇数GaussianBlur(m_SrcImg, m_DstImg, Size(5,5), 10, 10);imshow("高斯模糊", m_DstImg);bilateralFilter(m_SrcImg, m_DstImg, 15, 100, 100);imshow("双边滤波", m_DstImg);medianBlur(m_SrcImg, m_DstImg, 3);   //这里要尤其注意,双边滤波不支持就地调用Mat m_DstImg2;bilateralFilter(m_DstImg, m_DstImg2, 15, 100, 100);imshow("中值模糊+双边滤波", m_DstImg2);GaussianBlur(m_SrcImg, m_DstImg, Size(3, 3), 10, 10);bilateralFilter(m_DstImg, m_DstImg2, 15, 100, 100);imshow("高斯模糊+双边滤波", m_DstImg2);waitKey(0);return 0;
}

OpenCV medianBlur、GaussianBlur和bilateralFilter (中值滤波、高斯滤波、双边滤波)相关推荐

  1. OpenCV(十一)图像滤波(平滑处理)(平均、中值、高斯、双边滤波)

    目录 一.基础理论 1.图像噪声 1-1.椒盐噪声 1-2.高斯噪声 2.滤波 3.线性滤波 1.概述 2.线性滤波原理: 二.均值滤波(cv::blur())(简单滤波) 1.原理 2.API 三. ...

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

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

  3. [学习opencv]高斯、中值、均值、双边滤波

    以前的时候,为了过滤图像中的一些噪点,学过一些简单的滤波,比如中值滤波,均值滤波,也是自己实现的. 在opencv中有现成的函数可以调用,实现滤波的操作. 函数的原型如下: CVAPI(void) c ...

  4. opencv 图像雾检测_专栏 | OpenCV图像处理专栏十 | 利用中值滤波进行去雾

    原标题:专栏 | OpenCV图像处理专栏十 | 利用中值滤波进行去雾 前言 这是OpenCV图像处理专栏的第十篇文章,介绍一种利用中值滤波来实现去雾的算法.这个方法发表于国内的一篇论文,链接我放附录 ...

  5. Opencv之图像滤波:6.双边滤波(cv2.bilateralFilter)

    前面我们介绍的滤波方法都会对图像造成模糊,使得边缘信息变弱或者消失,因此需要一种能够对图像边缘信息进行保留的滤波算法,双边滤波是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护 图像内 ...

  6. 中值滤波,均值滤波,高斯滤波,双边滤波,联合双边滤波介绍

    看GAMES202相关课程发现闫老师讲的太好了,所以记录一下.当然文中涉及的PPT也来自闫老师的课程PPT,欢迎交流. 首先这几种都是空域的滤波方式,用于抑制图像中的噪声.它们采用的原理基本都是通过滤 ...

  7. 【Matlab图像去噪】中值+均值+Lee+Kuan图像滤波【含源码 1179期】

    一.代码运行视频(哔哩哔哩) [Matlab图像去噪]中值+均值+Lee+Kuan图像滤波[含源码 1179期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  8. 点云去噪(中值、高斯、均值、SOR滤波),及matlab的代码撰写-2021-7-21-

    1 为什么点云会有噪声? 受到仪器.周围环境.被扫描目标本身的特性影响,点云数据中无法避免存在一些噪声.噪声的来源有很多,比如超过扫描设定范围的点:由于受到周围的风.周围物体的震动等影响产生的点:或者 ...

  9. java 滤波算法_双边滤波算法

    1.原理 高斯滤波是以距离为权重,设计滤波模板作为滤波系数,只考虑了像素间的空间位置上的关系,因此滤波的结果会丢失边缘的信息. 高斯滤波的缺陷如下图所示:平坦区域正常滤波,图像细节没有变化,而在突变的 ...

  10. 双边滤波和交叉双边滤波

    什么是双边滤波 双边滤波是一种局部的.非线性的.非迭代的滤波技术,它将经典的低通滤波器与边缘停止函数相结合,当像素之间的强度差较大时,边缘停止函数会衰减滤波器的核心.由于同时考虑了相邻像素的灰度相似度 ...

最新文章

  1. Python 爬取图片链接并且解析
  2. stella forum v1.2的开发报告1-spl数据操作层的使用
  3. windows上安装gcc/g++环境(MinGW,msys64等)
  4. 真人秀制作网站_[BoA] 出道20周年真人秀Nobody Talks To BoA上演与李秀满总制作人充满默契的对话!...
  5. 构造函数中调用构造函数new和delete使用小结
  6. Java——集合(HashMap与Hashtable的区别)
  7. python 异步下载图片_python3抓取异步百度瀑布流动态图片(二)get、json下载代码讲解...
  8. JxBrowser概述与简单应用
  9. 天联高级版客户端_壹拓网科技关于金万维天联标准版、异速联和天联高级版区别的讲解...
  10. SpringBoot+Redis 搞定搜索栏热搜、不雅文字过滤功能
  11. Vue3 插槽使用详解
  12. 原生js将数组分割成固定个数一组的小数组
  13. Prometheus自动发现Exporter实现方案(一看就懂)
  14. Fade To Black《消失在黑暗中》BY Metallica [转]
  15. HaneWIN (windows上的NFS服务器)使用说明
  16. GPS经纬度坐标转UTM坐标(c++)
  17. js怎么获取ueditor值_js获取UEditor富文本编辑器中的图片地址
  18. 人脸关键点检测——dlib
  19. 利用python判断素数
  20. python程序文件默认扩展名_Python程序文件的扩展名是:

热门文章

  1. 《Android开发从零开始》——17.Service学习(3)
  2. 电脑桌面出现透明条图标“复制”“刷新”解决方法
  3. Win10 - 下方【任务栏】- 颜色设置方法
  4. Eclipse 中 SVN 的设置。
  5. Android 微信分享后留在微信,没有回调的问题解决方案
  6. Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证
  7. 0046 @Transactional注解的几个参数--事务传播控制--事务隔离级别--异常与回滚
  8. Windows防火墙添加80端口,解决apache无法访问的问题
  9. 安装WampServer时出现的问题(丢失VCRUNTIME140.dll或MSVCR110.dll)以及解决办法
  10. SSH启动失败解决方法