opencv学习笔记11:图像滤波(均值,方框,高斯,中值)
为什么要使用滤波
消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没。因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。
如下图,左图带有椒盐噪声,右图为使用中值滤波处理后的图片。
图像滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。
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()
总目录链接:
python3+opencv学习笔记汇总目录(适合基础入门学习)
电气专业的计算机小白,写博文不容易,如果你觉得本文不错,请点个赞支持下,谢谢。
opencv学习笔记11:图像滤波(均值,方框,高斯,中值)相关推荐
- opencv方框内图像保存_opencv 图像滤波(均值,方框,高斯,中值)
为什么要使用滤波 消除图像中的噪声成分叫作图像的平滑化或滤波操作.信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没.因此一个能降低高频成分幅度的滤波 ...
- OpenCV学习笔记(九)——图像轮廓(下)
<OpenCV轻松入门:面向Python>学习笔记(九) 1-3 查找并绘制轮廓.矩特性及Hu矩 4-5 轮廓拟合及凸包 6. 利用形状场景算法比较轮廓 6.1 计算形状场景距离 6.2 ...
- C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)
C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...
- Opencv学习笔记(八) -- 图像色彩空间转换
1.常见图像色彩空间 RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道 ...
- OpenCV学习笔记(七)——图像梯度及边缘检测
图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.一般情况下,图像梯度计算的是图像的边缘信息. ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- OpenCV学习笔记之图像融合
一.线性融合操作 线性混合操作 也是一种典型的二元(两个输入)的 像素操作 : 通过在范围 内改变 ,这个操可以用来对两幅图像或两段视频产生时间上的 画面叠化 (cross-dissolve)效果 ...
- OPenCV学习笔记八-图像的滤波
主要记录三种滤波函数的使用 VS2017 + Opencv3.2.0#include <opencv2/opencv.hpp> #include <iostream>using ...
- OpenCV学习笔记-边缘保留滤波EPF
进行边缘保留滤波通常用到两个方法: 1.高斯双边滤波 具体代码: #高斯双边滤波 def bilateral_demo(img):dst = cv.bilateralFilter(src=img,d= ...
最新文章
- NPM采用Rust以消除性能瓶颈
- MVC 下 JsonResult 的使用方法(JsonRequestBehavior.AllowGet)转
- RHEL6基础三十一之服务器维护基础命令②awk
- multinorm r语言_与心理学数据分析相关的R工具包
- 【渝粤题库】广东开放大学 微信平台开发与应用 形成性考核
- 在网上看到和篇关于sql server 2005的性能优化篇,觉得写得很好。
- TexStudio编译报错“Critical Package xeCJK Error: The xeCJK package requires XeTeX to function. ..._criti”
- 学以致用一 安装centos7.2虚拟机
- iOS中转义后的html标签如何还原
- 开始使用Mac OS X——写给Mac新人
- MySQL生日转年龄
- 在移动端,单击穿透是什么?
- Excel函数教程_COLUMN和VLOOKUP实现多字段匹配
- 3-24 浅谈多元正态分布的基本性质
- Mysql(免安装版)安装、配置、卸载与更改端口
- T1商贸宝加密狗相关配置
- opencv生成棋盘格图像
- CARLA 笔记(02)— Ubuntu 安装 CARLA(服务端、客户端、安装 miniconda、创建虚拟环境、更换 pip 源、生成交通流、人工控制车辆按键)
- Office2021官方镜像
- 如何使用ReadProcessMemory读取多重指针
热门文章
- 一个命名管道可以被多个客户端访问吗_Redis 的事务机制和管道技术Pipelining
- mysql Communications link failure druid
- JAVA——基于HttpClient的获取帆软FineReport报表爬虫DEMO
- [NOI2011]阿狸的打字机
- [POI2002][HAOI2007]反素数
- 【学习笔记】Redis的geohash数据结构介绍
- log4j2使用笔记
- Activity (项目实战:选择宝宝装备-UsersRegister)【Intent打开Activity、数据传递-回传、更新进度条】
- Java设计模式之行为型:状态模式
- Java 序列化 之 Serializable