opencv 图像滤波(均值,方框,高斯,中值)
为什么要使用滤波
消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没。因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。 如下图,左图带有椒盐噪声,右图为使用中值滤波处理后的图片。
图像滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。
python +opencv讲解
均值滤波
含义 如图:如果我们想对红色点进行处理,则它新值等于周围N乘N个像素点的平均(包括自身)
用表达式表达:
扩展到对整个图像进行均值滤波
实现方法: 处理结果=cv2.blur(原始图像,核大小)
核大小:以(宽度,高度)的元祖 效果:使图像变模糊啦。能处理被椒盐攻击过的照片。
import cv2
a=cv2.imread('lenacolor.png')#
b=cv2.blur(a,(8,8))
cv2.imshow('original',a)
cv2.imshow('result',b)
cv2.waitKey(0)
cv2.destroyAllWindows()
方框滤波
实现方法:函数boxFilter 处理结果=cv2.boxFilter(原始图像,目标图像深度,核大小,normalize属性)
目标图像深度: int类型的目标图像深度,-1表示与原始图像一致 核大小:(宽度,高度)元祖 normalize:是否对目标图像进行归一化处理 normalize为true 时与均值滤波一样,为false时表示任意一个点的像素为周围像素点的和,容易发生溢出超过255
normalize=1,1为true
import cv2
a=cv2.imread('lenacolor.png')#
b=cv2.boxFilter(a,-1,(5,5),normalize=1)
cv2.imshow('original',a)
cv2.imshow('result',b)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果:
normalize=0,0为false 结果中只有几个点不是白色
减少核大小为(2,2)normalize=0
高斯滤波
含义: 中心点权重高,越远越低
实现方法:GaussianBlur
处理结果=cv2.GaussianBlur(原始图像src,核函数大小ksize,sigmaX)
核函数大小ksize:(N,N)必须是奇数 sigmaX:控制x方向方差,控制权重,一般取0,它自己去计算方差。y轴方差和x一致
import cv2
a=cv2.imread('lenacolor.png')#
b=cv2.GaussianBlur(a,(3,3),0)
cv2.imshow('original',a)
cv2.imshow('result',b)
cv2.waitKey(0)
cv2.destroyAllWindows()
中值滤波
使用像素点邻域附近的像素的中值代替该点的像素值。通俗点来说,在这个像素的左边找五个像素点,右边找五个像素点,将这些像素进行排序,排序过后产生一个中值,用中间大小的值,来代替该像素的值。
中值滤波可以有效的去除斑点和椒盐噪声。但是效率低,其运算时间 为均值滤波的五倍以上。
实现方法:medianBlur 目标图像=cv2.medianBlur(原始图像,intksize) intksize:核函数,必须为奇数.
import cv2
a=cv2.imread('lenacolor.png')#
b=cv2.medianBlur(a,5)
cv2.imshow('original',a)
cv2.imshow('result',b)
cv2.waitKey(0)
cv2.destroyAllWindows()
到此这篇关于opencv 图像滤波(均值,方框,高斯,中值)的文章就介绍到这了,更多相关opencv 图像滤波内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!
- 后渗透工具Koadic:你真的了解我吗?
- Docker1.12尝试
- 颁奖乌龙就算了,怎么还性别歧视,好莱坞电影怎么了?数据笑而不语
- Python中关于集合(set)的思考
- 构建属于自己的原生docker images
- Docker-client for python使用指南
- Ansible基本配置以及使用示例
- redis超时原因系统性排查
- overlayfs存储驱动的使用以及技术探究
- 分页解决方案 之 分页算法——Pager_SQL的详细使用方法和注意事项
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多
- 分页解决方案 之 分页算法——Pager_SQL的思路和使用方法
- 让你的笔记本更快一点——我的笔记本的性能测试和虚拟硬盘(把内存当成硬盘)的使用感觉
- 分页解决方案 之 数据访问函数库——另类的思路、另类的写法,造就了不一样的发展道路。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringBoot执行跨域处理
- SpringBoot对全局异常的处理封装
- 自定义springboot-starter揭秘自动配置骚操作
- 【大厂面试题】Redis中是如何实现分布式锁的?
- 最近公司招人,研发组商量了下,暂时定下这么多java面试题!
- 市面上数据库种类那么多,如何选择?
- 玩转正则!推荐一个速查、调试、验证、可视化工具
- 当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?
- Js实现文本复制
- 当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?处理器映射器与处理器篇
- anetTcpGenericConnect 详解
- 详解 MySQL 基准测试和sysbench工具
- 第六天:网络处理(anet部分)-- redis源码慢慢学,慢慢看【redis6.0.6】
- python爬王者荣耀壁纸
- 搞定三大神器之 Python 装饰器