一、领域滤波(卷积)

邻域算子值利用给定像素周围像素的值决定此像素的最终输出。如图左边图像与中间图像卷积得到右边图像。目标图像中绿色的像素由原图像中蓝色标记的像素计算得到。

通用线性邻域滤波是一种常用的邻域算子,输入像素加权得到输出像素:

其中权重核   为“滤波系数”。上面的式子可以简记为:

二、线性滤波

1、方框滤波(box Filter)

最简单的线性滤波是移动平均或方框滤波,用 K*K窗口中的像素值平均后输出,核函数为:

其实等价于图像与全部元素值为1的核函数进行卷积再进行尺度缩放。

下面提到的 blur 和 boxFilter 的区别是,blur是标准化后的 boxFilter,即boxFilter的核函数:

函数原型:

void boxFilter( InputArray src, OutputArray dst, int ddepth,Size ksize, Point anchor = Point(-1,-1),bool normalize = true,int borderType = BORDER_DEFAULT );

(1)参数src:输入图像

(2)参数dst:输出图像,和src有一样的大小和类型

(3)ddepth:输出图像的深度。“-1”代表使用原图深度

(4)ksize:内核大小,一般用Size(w,h)的写法来表示内核的大小,w和h必须为奇数

(5)anchor:锚点,默认Point(-1,-1)表示取核的中心为锚点

2、均值滤波(blur)

函数原型:

void blur( InputArray src, OutputArray dst,Size ksize, Point anchor = Point(-1,-1),int borderType = BORDER_DEFAULT );

3、高斯滤波(GaussianBlur)

高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器。它对去除服从正态分布的噪声很有效。
常用的零均值离散高斯滤波器函数:

2D图像中表示为:

函数原型:

void GaussianBlur( InputArray src, OutputArray dst, Size ksize,double sigmaX, double sigmaY = 0,int borderType = BORDER_DEFAULT );

三、非线性滤波

线性滤波易于构造,且易于从频率响应的角度分析,但如果噪声是散粒噪声而非高斯噪声时线性滤波不能去除噪声。如图像突然出现很大的值,线性滤波只是转换为柔和但仍可见的散粒。这时需要非线性滤波。

1、中值滤波

中值滤波选择每个邻域像素的中值输出

函数原型:

void medianBlur( InputArray src, OutputArray dst, int ksize );

2、双边滤波

双边滤波的思想是抑制与中心像素值差别太大的像素,输出像素值依赖于邻域像素值的加权合:

函数原型:

void bilateralFilter( InputArray src, OutputArray dst, int d,double sigmaColor, double sigmaSpace,int borderType = BORDER_DEFAULT );

示例:

 Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test.jpg");

 imshow("srcImage", srcImage);

 Mat boxImage;
boxFilter(srcImage, boxImage, -, Size(, )); Mat blurImage;
blur(srcImage, blurImage, Size(, )); Mat gaussImage;
GaussianBlur(srcImage, gaussImage, Size(, ), , ); Mat medianImage;
medianBlur(srcImage, medianImage, ); Mat bilateralImage;
bilateralFilter(srcImage, bilateralImage, , * , / ); imshow("boxImage", boxImage);
imshow("blurImage", blurImage);
imshow("gaussImage", gaussImage);
imshow("medianImage", medianImage);
imshow("bilateralImage", bilateralImage);
waitKey();

参考:http://blog.csdn.net/xiaowei_cqu/article/details/7785365

最新文章

  1. 【大前端之打通账号系统】passport应该如何落地?
  2. .NET面试题解析(11)-SQL语言基础及数据库基本原理
  3. MyEclipse 2015优化技巧
  4. 获取父进程ID
  5. UVA 253 (13.08.06)
  6. IT忍者神龟之Struts2.xml配置全然正确流程能走通可是有红叉解决
  7. angular表单验证实例----可用的代码
  8. 【echart】学习笔记
  9. 第5章 子网划分和CIDR
  10. QT5.6.0 VS2013 Win764位系统QT环境搭建过程
  11. 勾勾街:一个专业的苹果ios app 自助打包的网站,免越狱,免证书签名
  12. React Native 填坑之神奇的报错,已解决
  13. Tomcat8源码笔记(三)Catalina加载过程
  14. 7.14 Git 工具 - 凭证存储
  15. Office系列版本安装包下载
  16. 【SQLSERVER】How to check current pool size
  17. ubuntu: firefox+flashplay
  18. Sublime Text3安装以及初次配置
  19. Consul之:key/value存储
  20. 安装win8/win10提示无法在驱动器0分区上安装windows解决方法

热门文章

  1. Golang 入门系列(三)Go语言基础知识汇总
  2. SpringCloud(8)微服务监控Spring Boot Admin
  3. mybatis 使用缓存策略
  4. javascript高级排序算法之快速排序(快排)
  5. Python中的可视化神器:pyecharts
  6. Node.js创建服务器和模拟客户端请求
  7. springboot 打war
  8. opencv 增强现实(二):特征点匹配
  9. hihoCoder #1770 : 单调数(数位dp)
  10. Linux内核参数