opencv-32 图像平滑处理-高斯滤波cv2.GaussianBlur()

在进行均值滤波和方框滤波时,其邻域内每个像素的权重是相等的。在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重 的和。

基本原理

在高斯滤波中,卷积核中的值不再都是 1。例如,一个 3×3 的卷积核可能如图 7-20 所示:

在这里插入图片描述

在图 7-21 中,针对最左侧的图像内第 4 行第 3 列位置上像素值为 226 的像素点进行高斯卷积,其运算规则为将该点邻域内的像素点按照不同的权重计算和。

在这里插入图片描述
在实际计算时,使用的卷积核如图 7-22 中的卷积核所示。

在这里插入图片描述

使用图 7-22 中的卷积核,针对第 4 行第 3 列位置上的像素值为 226 的像素点进行高斯滤
波处理,计算方式为:

在这里插入图片描述
在实际使用中,高斯滤波使用的可能是不同大小的卷积核。例如,图 7-23 中分别是 3×3、5×5、7×7 大小的卷积核。在高斯滤波中,核的宽度和高度可以不相同,但是它们都必须是奇数。

在这里插入图片描述
每一种尺寸的卷积核都可以有多种不同形式的权重比例。

例如,同样是 5×5 的卷积核,可能是图 7-24 中所示的两种不同的权重比。

在这里插入图片描述
在不同的资料中,卷积核有多种不同的表示方式。它们可能如图 7-23 所示写在一个表格内,也可能如图 7-24 所示写在一个矩阵内。

在实际计算中,卷积核是归一化处理的,这种处理可以表示为图 7-23 最左侧的小数形式的卷积核,也可以表示为如图 7-24 所示的分数形式。
也要注意,在一些资料中,给出的卷积核并没有进行归一化,这时的卷积核可能表示为图 7-23 中间和右侧所示的卷积核,这样的卷
积核是为了说明问题用的,实际使用时往往需要进行归一化。严格来讲,使用没有进行归一化处理的卷积核进行滤波,得到的结果往往是错误的

在 OpenCV 中,实现高斯滤波的函数是 cv2.GaussianBlur(),该函数的语法格式是:

dst = cv2.GaussianBlur( src, ksize, sigmaX, sigmaY, borderType )

式中:
 dst 是返回值,表示进行高斯滤波后得到的处理结果。

 src 是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立
处理。图像深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一种。

 ksize 是滤波核的大小。滤波核大小是指在滤波处理过程中其邻域图像的高度和宽度。
需要注意,滤波核的值必须是奇数。

 sigmaX 是卷积核在水平方向上(X 轴方向)的标准差,其控制的是权重比例。

例如,图 7-25 中是不同的 sigmaX 决定的卷积核,它们在水平方向上的标准差不同。

在这里插入图片描述
sigmaY 是卷积核在垂直方向上(Y 轴方向)的标准差。如果将该值设置为 0,则只采用sigmaX 的值;如果 sigmaX 和 sigmaY 都是 0,则通过 ksize.width 和 ksize.height 计算得到。
其中:
 sigmaX = 0.3×[(ksize.width-1)×0.5-1] + 0.8
 sigmaY = 0.3×[(ksize.height-1)×0.5-1] + 0.8

 borderType 是边界样式,该值决定了以何种方式处理边界。一般情况下,不需要考虑该值,直接采用默认值即可。

在该函数中,sigmaY 和 borderType 是可选参数。sigmaX 是必选参数,但是可以将该参数设置为 0,让函数自己去计算 sigmaX 的具体值。

官方文档建议显式地指定 ksize、sigmaX 和 sigmaY 三个参数的值,以避免将来函数修改后可能造成的语法错误。

当然,在实际处理中,可以显式指定 sigmaX 和 sigmaY 为默认值 0。因此,函数 cv2.GaussianBlur()的常用形式为:

dst = cv2.GaussianBlur( src, ksize, 0, 0 )

实验:对噪声图像进行高斯滤波,显示滤波的结果。

代码如下:

import cv2
o=cv2.imread("lenaNoise.png")
r=cv2.GaussianBlur(o,(5,5),0,0)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果:其中左图是原始图像,右图是高斯滤波后的处理
结果图像。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第一篇:一文看懂 Vue.js 3.0 的优化

我们的课程是要解读 Vue.js 框架的源码,所以在进入课程之前我们先来了解一下 Vue.js 框架演进的过程,也就是 Vue.js 3.0 主要做了哪些优化。 Vue.js 从 1.x 到 2.0 版本,最大的升级就是引入了虚拟 DOM 的概念,它为后续做服务端渲…

Scala按天写入日志文件

如果希望把每天出错的信息写入日志文件,每天新建一个文件。 package test.scala import java.io.{File, FileWriter} import java.text.SimpleDateFormat import java.util.{Calendar, Date} import scala.concurrent.ExecutionContext.Implicits.global import sc…

CS录屏教程,录制游戏需要注意哪些方面?

​最近有个CS手游的玩家小伙伴咨询想要做一些游戏视频录制,但是不知道有哪些好用的工具来使用,对于游戏录制我们其实是需要注意一些事项的,想要观众的观感上比较好就需要把握好视频的帧率等问题,下面我们就来看看录制方法和需要注…

最小二乘问题和非线性优化

最小二乘问题和非线性优化 0.引言1.最小二乘问题2.迭代下降法3.最速下降法4.牛顿法5.阻尼法6.高斯牛顿(GN)法7.莱文贝格马夸特(LM)法8.鲁棒核函数 0.引言 转载自此处,修正了一点小错误。 1.最小二乘问题 在求解 SLAM 中的最优状态估计问题时,我们一般…

RISC-V - 小记

文章目录 关于 RISC-V安装 关于 RISC-V RISC : Reduced Instruction Set Computing RISC-V(“RISC five”)的目标是成为一个通用的指令集架构(ISA) 官网:https://riscv.orggithub : https://github.com/riscv 教程 [完结] 循序渐进,学习开发一个RISC-…

【stm32】初识stm32—stm32环境的搭建

文章目录 🛸stm32资料分享🍔stm32是什么🎄具体过程🏳️‍🌈安装驱动🎈1🎈2 🏳️‍🌈建立Start文件夹 🛸stm32资料分享 我用夸克网盘分享了「STM32入门教程资料…

Maven入职学习

一、什么是Maven? 概念: Maven是一种框架。它可以用作依赖管理工具、构建工具。 它可以管理jar包的规模、jar包的来源、jar包之间的依赖关系。 它的用途就是管理规模庞大的jar包,脱离IDE环境执行构建操作。 具体使用: 工作机…

yolov5代码解读之​detect.py文件【超详细的好吗!点进来看阿很用心的!】

yolov5的代码一直在更新,所以你们代码有些部分可能不太一样,但大差不差。 先给大家看一下项目结构:(最好有这个项目,且跑通过) detect.py文件:它可以预测视频、图片文件夹、网络流等等。 如何…

Django实现音乐网站 ⑺

使用Python Django框架制作一个音乐网站, 本篇主要是后台对歌手原有实现功能的基础上进行优化处理。 目录 新增编辑 表字段名称修改 隐藏单曲、专辑数 姓名首字母 安装xpinyin 获取姓名首字母 重写保存方法 列表显示 图片显示处理 引入函数 路径改为显示…

EP4CE6E22C8 FPGA最小系统电路原理图+PCB源文件

资料下载地址:EP4CE6E22C8 FPGA最小系统电路原理图PCB源文件 一、原理图 二、PCB

HTTP——八、确认访问用户身份的认证

HTTP 一、何为认证二、BASIC认证BASIC认证的认证步骤 三、DIGEST认证DIGEST认证的认证步骤 四、SSL客户端认证1、SSL 客户端认证的认证步骤2、SSL 客户端认证采用双因素认证3、SSL 客户端认证必要的费用 五、基于表单认证1、认证多半为基于表单认证2、Session 管理及 Cookie 应…

mysql二进制方式升级8.0.34

一、概述 mysql8.0.33 存在如下高危漏洞&#xff0c;需要通过升级版本修复漏洞 Oracle MySQL Cluster 安全漏洞(CVE-2023-0361) mysql/8.0.33 Apache Skywalking <8.3 SQL注入漏洞 二、查看mysql版本及安装包信息 [rootlocalhost mysql]# mysql -V mysql Ver 8.0.33 fo…

class version 61 java version 17.0.4

class version (javap -verbose xxxx.class)_spencer_tseng的博客-CSDN博客

Demystifying Prompts in Language Models via Perplexity Estimation

Demystifying Prompts in Language Models via Perplexity Estimation 原文链接 Gonen H, Iyer S, Blevins T, et al. Demystifying prompts in language models via perplexity estimation[J]. arXiv preprint arXiv:2212.04037, 2022. 简单来说就是作者通过在不同LLM和不同…

程序框架-事件中心模块-观察者模式

一、观察者模式 1.1 观察者模式定义 意图&#xff1a; 定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变是&#xff0c;所有依赖于它的对象都能得到通知并自动更新。 适用性&#xff1a; 当一个对象状态的改变需要改变其他对象&#xff0c; 或实际对…

Python自动化实战之使用Pytest进行API测试详解

概要 每次手动测试API都需要重复输入相同的数据&#xff0c;而且还需要跑多个测试用例&#xff0c;十分繁琐和无聊。那么&#xff0c;有没有一种方法可以让你更高效地测试API呢&#xff1f;Pytest自动化测试&#xff01;今天&#xff0c;小编将向你介绍如何使用Pytest进行API自…

8.3day04git+数据结构

文章目录 git版本控制学习高性能的单机管理主机的心跳服务算法题 git版本控制学习 一个免费开源&#xff0c;分布式的代码版本控制系统&#xff0c;帮助开发团队维护代码 作用&#xff1a;记录代码内容&#xff0c;切换代码版本&#xff0c;多人开发时高效合并代码内容 安装g…

设计模式--策略模式(由简单工厂到策略模式到两者结合图文详解+总结提升)

目录 概述概念组成应用场景注意事项类图 衍化过程需求简单工厂实现图代码 策略模式图代码 策略模式简单工厂图代码 总结升华版本迭代的优化点及意义什么样的思路进行衍化的扩展思考--如何理解策略与算法 概述 概念 策略模式是一种行为型设计模式&#xff0c;它定义了算法家族&…

【Linux】总结1-命令工具

文章目录 基础指令shell命令以及运行原理Linux权限粘滞位工具 基础指令 ls、pwd、touch、mkdir、netstat、cp、mv、cd、tar、zip、unzip、grep、pstack、ps、rm、cat、more、less、head、tail、find、ulimit -a、clear、whoami、man touch&#xff1a;创建文件&#xff0c;也包…

浏览器同源策略

浏览器同源策略 同源策略&#xff1a;是一个重要的浏览器的安全策略&#xff0c;用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互 它能帮助阻隔恶意文档&#xff0c;减少可能被攻击的媒介 例如&#xff1a;被钓鱼网站收集信息&#xff0c;使用ajax发起…