OpenCV(十六):高斯图像金字塔
目录
1.高斯图像金字塔原理
2.高斯图像金字塔实现
1.高斯图像金字塔原理
高斯图像金字塔是一种用于多尺度图像表示和处理的重要技术。它通过对图像进行多次高斯模糊和下采样操作来生成不同分辨率的图像层级,每个层级都是原始图像的模糊和降采样版本。
以下是高斯图像金字塔的原理和步骤:
-
高斯模糊(Gaussian Blurring):首先,对原始图像应用高斯滤波器进行模糊处理。高斯滤波器是一种线性低通滤波器,可以在空域上对图像进行平滑,去除图像中的高频细节。
-
下采样(Subsampling):对模糊后的图像进行下采样操作,即将图像尺寸缩小一半。下采样操作可以通过选择每隔一定像素进行采样来实现,或者使用插值技术(如平均值、最近邻等)生成新尺寸更小的图像。
-
重复步骤1和2:以缩小的图像为输入,重复执行高斯模糊和下采样步骤来构建金字塔的下一层。每一层都是前一层的模糊和降采样版本。
-
金字塔构建:重复进行高斯模糊和下采样操作,直到到达所需的金字塔层级或图像尺寸小于一定阈值。每个层级的下采样图像作为金字塔的一层,并按顺序排列形成金字塔结构。
通过构建高斯图像金字塔,可以获取到原始图像的不同分辨率版本,其中高层级的图像具有较低的分辨率,低层级的图像具有较高的分辨率。这样的金字塔结构允许在不同尺度上进行图像处理和分析任务,例如特征提取、目标检测、图像融合等。

2.高斯图像金字塔实现
在OpenCV中,可以使用cv::pyrDown()和cv::pyrUp()函数来实现高斯图像金字塔的构建。高斯图像金字塔是一种多尺度表示的图像结构,通过不断对图像进行降采样(下采样)和上采样操作,获得不同分辨率的图像层级。
-
cv::pyrDown()函数:
-
函数原型:void pyrDown(InputArray src, OutputArray dst, const Size& dstsize = Size(), int borderType = BORDER_DEFAULT)
-
参数说明:
-
src:输入图像,可以是单通道或多通道的图像,数据类型为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
-
dst:输出图像,下采样后的图像。
-
dstsize:可选参数,输出图像的尺寸,默认情况下,输出图像的尺寸为输入图像尺寸的一半,也可以手动指定输出图像的尺寸。
-
borderType:可选参数,用于边缘填充的类型,默认为 BORDER_DEFAULT。
-
-
功能:执行高斯金字塔的下采样操作,将输入图像的尺寸减半,并生成一个尺寸更小的图像。
-
-
cv::pyrUp()函数:
-
函数原型:void pyrUp(InputArray src, OutputArray dst, const Size& dstsize = Size(), int borderType = BORDER_DEFAULT)
-
参数说明:
-
src:输入图像,可以是单通道或多通道的图像,数据类型为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
-
dst:输出图像,上采样后的图像。
-
dstsize:可选参数,输出图像的尺寸,默认情况下,输出图像的尺寸为输入图像尺寸的两倍,也可以手动指定输出图像的尺寸。
-
borderType:可选参数,用于边缘填充的类型,默认为 BORDER_DEFAULT。
-
-
功能:执行高斯金字塔的上采样操作,将输入图像的尺寸增大一倍,并生成一个尺寸更大的图像。
-
这两个函数结合使用可以实现图像金字塔的构建。通过多次使用cv::pyrDown()进行下采样,可以生成金字塔的较低层级图像。然后,如果需要,可以使用cv::pyrUp()进行上采样,将图像恢复到原始分辨率。
下面是一个使用OpenCV实现高斯图像金字塔的示例代码:
#include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image = cv::imread("image.jpg");// 构建高斯图像金字塔std::vector<cv::Mat> Guass;int level=3;Guass.push_back(image);for(int i=0;i<level;i++){Mat guass;cv::pyrDown(Guass[i], guass);Guass.push_back(guass);}// 显示金字塔图像for (int i = 0; i < level; i++) {cv::imwrite("/sdcard/DCIM/guass" + std::to_string(i)+".png", Guass[i]);}return 0;
}
在这个示例中,我们首先使用cv::imread()函数读取一张图像。然后,我们创建一个std::vector<cv::Mat>类型的变量Guass来保存金字塔图像的每一层。我们将原始图像作为金字塔的第一层。
接下来,我们使用一个循环来对guass图像进行下采样操作。在每次迭代中,使用cv::pyrDown()函数将guass图像降采样,并将降采样后的图像添加到Guass向量中。
最后,我们通过遍历Guass向量将每一层金字塔图像显示出来,使用cv::imwrite()函数显示每一层图像。
需要注意的是,高斯图像金字塔的构建可以通过不断的下采样和上采样操作来实现。其中cv::pyrDown()用于下采样操作,将图像尺寸减半,而cv::pyrUp()用于上采样操作,将图像尺寸扩大一倍。你可以根据需求使用cv::pyrUp()函数来实现高斯图像金字塔的上采样操作。
相关文章:
OpenCV(十六):高斯图像金字塔
目录 1.高斯图像金字塔原理 2.高斯图像金字塔实现 1.高斯图像金字塔原理 高斯图像金字塔是一种用于多尺度图像表示和处理的重要技术。它通过对图像进行多次高斯模糊和下采样操作来生成不同分辨率的图像层级,每个层级都是原始图像的模糊和降采样版本。 以下是高斯…...
Nginx配置及优化3
Nginx配置及优化3 一、网页状态页二、nginx第三方模块2.1、echo模块 三、变量3.1、内置变量3.1.1、常用的内置变量3.1.2、举个例子 3.2、自定义变量 四、自定义访问日志优化4.1、自定义访问日志的格式4.2、自定义json格式日志 五、nginx压缩功能六、HTTPS功能6.1、nginx的HTTPS…...
网络直播源码UDP协议搭建:为平台注入一份力量
网络直播源码中的UDP协议的定义: UDP协议又名用户数据报协议,是一种轻量级、无连接的协议。在网络直播源码平台中,UDP协议有着高速传输与实时性的能力,尤其是在网络直播源码实时性要求较高的场景,UDP协议的应用有着重要…...
Ubuntu/linux系统环境变量配置详解
一 环境变量配置文件解释 /etc/profile 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。 /etc /environment 在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变…...
kafka配置SASL/PLAIN 安全认证
1 zookeeper配置启动 1.1 zookeeper添加SASL支持 为zookeeper添加SASL支持,在配置文件zoo.cfg添加 authProvider.1org.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthSchemesasl jaasLoginRenew36000001.2 zk_server_jaas.conf文件…...
pdf加密如何解除?这样解除加密很简单
pdf加密如何解除?有时,我们可能会收到一些加密的PDF文件,它们不允许我们对其进行编辑或打印。这时,我们需要使用PDF解密工具,以便能够轻松地解除PDF加密并对其进行编辑。那么接下来就给大家介绍一下pdf加密解除的方法。…...
Ubuntu18.04使用Systemback制作系统镜像并还原
系列文章目录 文章目录 系列文章目录前言一、下载Systemback工具二、制作系统镜像到U盘三、安装制作系统 前言 在Ubuntu系统中开发项目时,有时会希望将项目移植到另外一台计算机(如工控机等)上进行部署,通常会在新计算机中安装Ub…...
OpenCV(十五):拷贝图像
在OpenCV中,拷贝图像数据时有两种方式:深拷贝(Deep Copy)和浅拷贝(Shallow Copy)。这两种拷贝方式的主要区别在于是否创建新的图像副本。 浅拷贝(Shallow Copy)是指将图像对象的指针…...
原神世界中的顺序表:派蒙的趣味数据结构讲解
派蒙,那个总是带着疑问眼神的小家伙,是原神世界中的小精灵。他总是充满好奇心,无论是对新的冒险者,还是对各种奇妙的现象。而他的另一个身份,则是原神世界中的数据结构大师。 一天,派蒙遇到了旅行者小森&a…...
电脑入门:路由器 基本设置操作说明
路由器 基本设置操作说明 首先我们我设置路由器,就需要先登录路由器, 那么怎样登路由器啊? 登录路由器的方法是 在ie的地址栏输入:http://192.168.1.1 输入完成以后直接回车 那么如果你输入正确 这个时候就应该听到有用户名的提示 呵呵 这是怎么回事啊? 不要召集 首…...
搜索与图论-拓扑序列
为什么记录呢 因为不记录全忘了 虽然记了也不一定会看 有向无环图一定有拓扑序列邮箱无环图 - 拓扑图 入度为0的点作为起点入度为0的点入队列枚举出边 t->j删掉当前边,t->j . j的入度减1判断j的入度是否为0,来判断是否加入队列 有环: …...
「MySQL-05」MySQL Workbench的下载和使用
目录 一、MySQL workbench的下载和安装 1. MySQL workbench介绍 2. 到MySQL官网下载mysql workbench 3. 安装workbench 二、创建能远程登录的用户并授权 1. 创建用户oj_client 2. 创建oj数据库 3. 给用户授权 4. 在Linux上登录用户oj_client检查其是否能操作oj数据库 三、使用…...
编译期jni类型转换成字符串
背景: 例如android jni 方法的签名, 这个需要每个用户都要知道具体类型,转化成签名, 要想写好签名, 必须很熟悉 类型对应的签名, 尤其java类对象要加个L, 本文将介绍怎么在编译期过程把类型转化成字符, 多个类型在尽性拼接. 定义基础数据结构 template<char ... ch> str…...
优秀的ui设计作品(合集)
UI设计师需要了解的九个Tips 1.图片类APP排版突破 规则是死的,人是活的。很多时候,如果需求是比较宽要尝试突破原则,用一些另类的排版方式,其实也是做好设计的本质。在图片类app中,错落一些的排版会使你的作品更有魅力…...
【c/c++】c和cpp混合编译
c和cpp混合编译 #ifdef __cplusplus extern "C" { #endifextern int test(int, int);#ifdef __cplusplus } #endif在这段代码中,#ifdef __cplusplus 和 #endif 之间的代码是为了在 C 中使用 C 语言的函数声明和定义时,确保编译器正确地处理 C…...
springboot定制banner
这里有几个定制banner的网站 Text to ASCII Art Generator (TAAG) ASCII Generator IMG2TXT: ASCII Art Made Easy!...
Qt 入门实战教程(目录)
为何我要写Qt入门教程 前置课程 《C自学精简实践教程》 教程特点 1 面向企业开发,你在这里学到的任何一步操作,都会直接在企业里用到。 2 注重设计思路训练,抽象分析问题的能力。 Qt 安装 1.1 Windows Qt 5.12.10下载与安装 1.2 我们…...
Ceph入门到精通-Lunix性能分析工具汇总
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具…...
服务器端使用django websocket,客户端使用uniapp 请问服务端和客户端群组互发消息的代码怎么写的参考笔记
2023/8/29 19:21:11 服务器端使用django websocket,客户端使用uniapp 请问服务端和客户端群组互发消息的代码怎么写 2023/8/29 19:22:25 在服务器端使用Django WebSocket和客户端使用Uniapp的情况下,以下是代码示例来实现服务器端和客户端之间的群组互发消息。 …...
【考研数学】线性代数第四章 —— 线性方程组(2,线性方程组的通解 | 理论延伸)
文章目录 引言四、线性方程组的通解4.1 齐次线性方程组4.2 非齐次线性方程组 五、方程组解的理论延伸 引言 承接前文,继续学习线性方程组的内容,从方程组的通解开始。 四、线性方程组的通解 4.1 齐次线性方程组 (1)基础解系 —…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
