OpenCv之滤波器

目录

一、卷积

 二、方盒滤波与均值滤波

三、高斯滤波

四、中值滤波

五、双边滤波


一、卷积

图像卷积就是卷积核在图像上按行华东遍历像素时不断的相乘求和的过程

 相关知识点:

  • 步长:就是卷积核在图像上移动的步幅.(为充分扫描图片,步长一般为1)
  • padding:指在图片周围填充的0的圈数
  • 卷积核大小:卷积核一般为奇数,比如3*3、5*5、7*7

OpenCv中卷积函数:

filter2D(src, ddepth, kernell dstl anchorl deltal borderType]]]])

  • ddepth是卷积之后图片的位深,即卷积之后图片的数据类型,一般设为-1,表示和原图类型一致。kernel是卷积核大小,用元组或者ndarray表示要求数据类型必须是float型
  • anchor锚点即卷积核的中心点是可选参数默认是(-1,-1)
  • delta 可选参数表示卷积之后额外加的一个值相当于线性方程中的偏差,默认是0
  • borderType边界类型一般不设

卷积案例代码如下:

import cv2
import numpy as npimg = cv2.imread('6.jpg')# 相当于每个点都被平均了一下,所以图像变模糊了
# kernel = np.ones((5,5),np.float32) / 25# 尝试其它卷积核,突出轮廓
kernel = np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])# 浮雕效果
kernel = np.array([[-2,1,0],[-1,1,1],[0,1,2]])# 锐化
kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]])# ddepth = -1表示图片的数据类型不变
dst = cv2.filter2D(img,-1,kernel)# 图片展示
cv2.imshow('img',np.hstack((img,dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果如下:

 二、方盒滤波与均值滤波

方盒滤波案例代码如下:

import cv2
import numpy as np# 读取图片
img = cv2.imread('6.jpg')# 无需手动创建卷积核,只需要告诉方盒滤波,卷积核的大小是多少
dst = cv2.boxFilter(img,-1,(5,5),normalize=True)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)
cv2.destroyAllWindows()

均值滤波案例代码如下:

import cv2
import numpy as np# 读取图片
img = cv2.imread('6.jpg')
# 均值滤波无位深这个参数
dst = cv2.blur(img,(5,5))cv2.waitKey(0)
cv2.destroyAllWindows()

三、高斯滤波

首先明白什么是高斯函数:

高斯函数是在符合高斯分布(也叫正态分布)的数据的概率密度函数 

 高斯函数的一般形式:

 参照函数:

案例代码如下:

import cv2
import numpy as npimg = cv2.imread('6.jpg')# 高斯滤波
new_img = cv2.GaussianBlur(img,(5,5),sigmaX=10)cv2.imshow('new_img',np.hstack((img,new_img)))
cv2.waitKey(0)
cv2.destroyAllWindows()

四、中值滤波

中值滤波的原理:假设有一个数组[1,5,5,6,7,8,9],取中间值(即中位数)作为卷积后的结果即可.中值滤波对胡椒噪音(也叫椒盐噪音)效果明显

案例代码如下:

import cv2
import numpy as npimg = cv2.imread('6.jpg')# 注意这里的ksize就是一个整数
# 中值滤波
dst = cv2.medianBlur(img,5)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)
cv2.destroyAllWindows()

五、双边滤波

双边滤波原理:双边滤波对于图像的边缘信息能过更好的保存。其原理为一个与空间举例相关的高斯函数与一个灰度距离相关的高斯函数相乘。

 双边滤波可以保留边缘,同时可以对边缘内的区域进行平滑处理

参照函数:

 

案例代码如下:

 

import cv2
import numpy as npimg = cv2.imread('6.jpg')# sigmaColor为灰度距离
# sigmaSpace为空间距离
dst = cv2.bilateralFilter(img,7,sigmaColor=20,sigmaSpace=50)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)
cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab学习指南(1):matlab初步入门详细介绍

🌅*🔹** φ(゜▽゜*)♪ **🔹*🌅 欢迎来到馒头侠的博客,该类目主要讲数学建模的知识,大家一起学习,联系最后的横幅! 喜欢的朋友可以关注下,私信下次更新不迷路&#xff0…

sqlite3交叉编译

1、交叉编译sqllite3可以先从官网下载最新最新的源码进行编译。sqlite3下载sqlite3有两种版本的源代码,sqlite-amalgamation-3420000.zip这种是将所有的操作放到sqlite3中进行使用的。虽然官方推荐使用这种方法。但是对于嵌入式移植还是使用sqlite-autoconf-3420000…

探索基于300W-LP的3D人脸关键点检测

目录 前言一、3D 关键点可视化二、使用步骤1.300W-LP转为YOLO数据格式2.修改数据入口3.开始训练 总结 前言 300WLP数据集提供来丰富的人脸线索,包括2D或3D的关键点信息,Head Angle和3DMM的参数等&#xff…

OpenCV中的RGB与YUV转换

1 基本概念 YUV 颜色空间从模拟电视时代开始就被广泛应用于彩色图像的转换与处理。其基于一个 3x3 的矩阵,通过线性变换将 RGB 像素转换为一个亮度(Luma)分量 Y 以及两个色度(Chroma)分量 U 和 V。由于模拟电视存在着多…

K8s 为什么要弃用 Docker

K8s 为什么要弃用 Docker 最近在学习容器技术的过程中,看到有关于Kubernetes“弃用 Docker”的事情,担心现在学 Docker 是否还有价值,是否现在就应该切换到 containerd 或者是其他 runtime。 随着深入了解,这些疑虑的确是有些道理…

git 工具使用--分支管理

git 工具使用–分支管理 文章目录 git 工具使用--分支管理理解分支创建分支切换分支合并分支删除分支合并冲突分支管理策略分支策略bug分支删除临时分支总结 理解分支 分支管理是Git的杀手级功能之一。分支:就是科幻中的平行宇宙,当你正在电脑面前学习C…

设计模式-单例模式

面向对象语言讲究的是万物皆对象。通常流程是先定义可实例化类,然后再通过各种不同的方式创建对象,因此类一般可以实例化出多个对象。但是实际项目开发时,我们还是希望保证项目运行时有且仅包含一个实例对象。这个需求场景的出发点包括但不限…

变压器试验介质损耗

试验目的 介质损耗因数 tanδ (% ) 是判断变压器绝缘状态的一种较有效的手段, 主要用来检 查变压器整体受潮、 油质劣化及严重的局部缺陷等, 但不一定能发现变压器局部受潮 等集中性局部缺陷。 试验设备 异频介质损耗测试仪 厂家: 湖北众拓高试 试验接线 (1) 介…

搜索引擎elasticsearch :安装elasticsearch (包含安装组件kibana、IK分词器、部署es集群)

文章目录 安装elasticsearch1.部署单点es1.1.创建网络1.2.加载镜像1.3.运行 2.部署kibana2.1.部署2.2.DevTools2.3 分词问题(中文不友好) 3.安装IK分词器3.1.在线安装ik插件(较慢)3.2.离线安装ik插件(推荐)1)查看数据卷…

数据结构--哈夫曼树

数据结构–哈夫曼树 带权路径长度 结点的 权 \color{red}权 权:有某种现实含义的数值(如:表示结点的重要性等) 结点的带权路径长度 \color{red}结点的带权路径长度 结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积 树的…

小程序MobX创建store并实现全局数据共享

查看小程序根目录中是否存在package.json文件 在项目根目录运行cmd 没有package.json文件输入npm init -y初始化一下,初始化一个包管理 安装MobX npm install --save mobx-miniprogram4.13.2 mobx-miniprogram-bindings1.2.1 小程序菜单栏工具–构建npm 根目录创建store文…

el-ment ui 表格组件table实现列的动态插入功能

在实际需求中我们经常遇到各种奇葩的需求,不足为奇。每个项目的需求各不相同,实现功能的思路大致是一样的。 本文来具体介绍怎么实现table表格动态插入几列。 首先实现思路有2种, 1. 插入的位置如果是已知的,我知道在哪个标题的…

设计模式之建造者设计模式

写在前面 不知道,你在工作中有没有使用过lombok,如果你使用过,不知道你有没有使用过其中的Builder注解,其就会帮我们生成建造者设计模式相关的代码,本文就一起来看下吧! 1:介绍 1.1&#xff…

spark启动HA时workers为0,且为standby状态

今天学习一个spark视频,在启动StandAloneHa模式的时候,发现workers为0,而且spark两个master的状态都为standby,找了很久,才知道我用的spark3.2 最低支撑的zookeeper版本为3.5.x,而且zookeeper的安装包是需要带bin的那个…

CSS3 动画 animation 入门学习笔记 之 属性详解

文章目录 简单介绍 CSS 动画CSS 动画的作用CSS 动画语法介绍CSS 动画属性animation-nameanimation-durationanimation-delayanimation-directionanimation-iteration-countanimation-play-stateanimation-timing-functionanimation-fill-modeanimation 简单介绍 CSS 动画 引用…

基于深度学习的高精度80类动物目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度80类动物目标检测识别系统可用于日常生活中或野外来检测与定位80类动物目标,利用深度学习算法可实现图片、视频、摄像头等方式的80类动物目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YO…

Matplotlib是什么

Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy ndarray 数组来绘制 2D 图像,它使用简单、代码清晰易懂,深受广大技术爱好者喜爱。 NumPy 是 Python 科学计算的软件包,ndarray 则…

HTTP1.1 wireshark分析

目录 http1.1wireshark分析http 1.1 keep-alive的2次http请求wireshark分析http1.1 keep-alive过期的2次请求keep-alive报文 本地springboot启动一个简单的服务,然后请求测试 tcpdump -i lo0 -nnvv -w tmp.cap tcpdump 本地回环网卡 http1.1 HTTP/1.0 每进行一次…

蚂蚁集团开源可信隐私计算框架「隐语」:开放、通用

7 月 4 日,蚂蚁集团宣布面向全球开发者正式开源可信隐私计算框架 “隐语”。 隐语是蚂蚁集团历时 6 年自主研发,以安全、开放为核心设计理念打造的可信隐私计算技术框架,涵盖了当前几乎所有主流隐私计算技术。 据介绍,隐语内置 MPC、TEE、同态等多种密态计算虚拟设备,提…

操作系统练习:创建内核模块,并加载和卸载模块

说明 本文记录如何创建和编译一个内核模块,以及加载和卸载内核模块。为《操作系统概念(第九版)》第二章,关于“Linux内核模块”的练习题。 创建内核模块 注:我这里是基于阿里云的轻量应用服务器(即当前博客服务器) 首…