高斯金字塔

article/2025/8/15 18:22:11

1、为什么要构建高斯金字塔

高斯金字塔模仿的是图像的不同的尺度,尺度应该怎样理解?对于一副图像,你近距离观察图像,与你在一米之外观察,看到的图像效果是不同的,前者比较清晰,后者比较模糊,前者比较大,后者比较小,通过前者能看到图像的一些细节信息,通过后者能看到图像的一些轮廓的信息,这就是图像的尺度,图像的尺度是自然存在的,并不是人为创造的。好了,到这里我们明白了,其实以前对一幅图像的处理还是比较单调的,因为我们的关注点只落在二维空间,并没有考虑到“图像的纵深”这样一个概念,如果将这些内容考虑进去我们是不是会得到更多以前在二维空间中没有得到的信息呢?于是高斯金字塔横空出世了,它就是为了在二维图像的基础之上,榨取出图像中自然存在的另一个维度:尺度。因为高斯核是唯一的线性核,也就是说使用高斯核对图像模糊不会引入其他噪声,因此就选用了高斯核来构建图像的尺度。

2、高斯金字塔的构建步骤:

高斯金字塔构建过程中,一般首先将图像扩大一倍,在扩大的图像的基础之上构建高斯金字塔,然后对该尺寸下图像进行高斯模糊,几幅模糊之后的图像集合构成了一个八度,然后对该八度下的最模糊的一幅图像进行下采样的过程,长和宽分别缩短一倍,图像面积变为原来四分之一。这幅图像就是下一个八度的初始图像,在初始图像图像的基础上完成属于这个八度的高斯模糊处理,以此类推完成整个算法所需要的所有八度(octave)构建,这样这个高斯金字塔就构建出来了。构建出的金字塔如下图所示:

注意:

1.在同一组内,不同层图像的尺寸是一样的,后一层图像的高斯平滑因子σ是前一层图像平滑因子的k倍;k=2^(1/s);s为想要得到的尺度结果;

2.在不同组内,后一组第一个图像是前一组倒数第三个图像的二分之一采样,图像大小是前一组的一半,尺度虽然保持不变,但是相当于扩大到了2倍,以此使尺度连续;

3.第一个八度的中图像的尺度分别是δ,kδ,k^2δ......,第二个八度的尺度分别是2δ,2kδ,2k^2δ........,同理第三个八度的尺度分别是4δ,4kδ,4k^2δ........。这个序列是通过下式来确定的:

3、源码实现

//金字塔每层多张图像合称为一组(Octave),金字塔每层只有一组图像,
//组数和金字塔层数相等,每组含有多张(也叫层Interval)图像。
//高斯金字塔
//https://blog.csdn.net/qq_44771627/article/details/123840316
void siftLou::GaussianPyramid(const Mat src, vector<Mat>& gauss_pyr, int octaves)
{//高斯金字塔构建过程中,一般首先将图像扩大一倍,在扩大的图像的基础之上构建高斯//金字塔,然后对该尺寸下图像进行高斯模糊,几幅模糊之后的图像集合构成了一个八度,//然后对该八度下的最模糊的一幅图像进行下采样的过程,长和宽分别缩短一倍,图像面//积变为原来四分之一。这幅图像就是下一个八度的初始图像,在初始图像图像的基础上//完成属于这个八度的高斯模糊处理,以此类推完成整个算法所需要的所有八度构建,这样//这个高斯金字塔就构建出来了。Mat dst;double  sigma_init = sqrt(SIGMA * SIGMA - (INIT_SIGMA) * (INIT_SIGMA));GaussianBlur(src, dst, Size(0, 0), sigma_init);int intervals = INTERVALS;double* sigmas = new double[intervals + 3];double k = pow(2.0, 1.0 / intervals);//每三个尺度一组进行匹配,因此想要得到3个尺度结果,就需要5个尺度拉普拉斯卷积和,//也就是6个高斯函数卷积的图像sigmas[0] = SIGMA;double sig_prev, sig_total;for (int i = 1; i < intervals + 3; i++){sig_prev = pow(k, i - 1) * SIGMA;sig_total = sig_prev * k;//为了降低运算,将大尺度的高斯算子拆分为2个小尺度高斯算子的卷积sigmas[i] = sqrt(sig_total * sig_total - sig_prev * sig_prev);}for (int o = 0; o < octaves; o++){//每组多三层for (int i = 0; i < intervals + 3; i++){Mat mat;if (o == 0 && i == 0){mat=dst.clone();}else if (o != 0 && i == 0){//前一组的倒数第三张图像:k^3*sigma=2*sigma,所以对它下采样会得到连续的尺度结果//尺度虽然保持不变,但是相当于扩大到了2倍,等价于2*sigma,使得拉普拉斯尺度连续//mat=DownSample(gauss_pyr[o * (intervals + 3) - 3]);pyrDown(gauss_pyr[o*(intervals+3)-3],mat);}else{//每组中下一层由上一层高斯模糊得到GaussianBlur(gauss_pyr[(o * (intervals + 3) + i - 1)], mat, Size(0,0),(sigmas[i]));}gauss_pyr.push_back(mat);}}delete[] sigmas;
}

http://chatgpt.dhexx.cn/article/Ogby9QMC.shtml

相关文章

系统集成项目管理工程师知识点

信息化知识 在这个学时里&#xff0c;将学习有关信息化的许多知识点&#xff0c;这些知识点的试题大多出现在上午试 题中。这引起知识点主要是&#xff1a; &#xff08;1&#xff09;信息与信息化的定义。 &#xff08;2&#xff09;国家信息化发展战略&#xff08;2006-2020&…

快速了解Scala技术栈

http://www.infoq.com/cn/articles/scala-technology/ 我无可救药地成为了Scala的超级粉丝。在我使用Scala开发项目以及编写框架后&#xff0c;它就仿佛凝聚成为一个巨大的黑洞&#xff0c;吸引力使我不得不飞向它&#xff0c;以至于开始背离Java。固然Java 8为Java阵营增添了一…

一篇博客带你掌握pytorch基础,学以致用(包括张量创建,索引,切片,计算,Variable对象的创建,和梯度求解,再到激活函数的使用,神经网络的搭建、训练、优化、测试)

一篇博客带你掌握pytorch基础&#xff0c;学以致用 1.将numpy的 ndarray对象转换为pytorch的张量 在 Pytroch 中&#xff0c;Tensor 是一种包含单一数据类型元素的多维矩阵&#xff0c;译作张量。熟悉 numpy 的同学对这个定义应该感到很熟悉&#xff0c;就像ndarray一样&…

AI题目整理

文章目录 1、网络配置时batchsize的大小怎样设置?过小和过大分别有什么特点?2、设置学习率衰减的原因?3、有哪些分类算法?4、分类和回归的区别?5、请描述一下K-means聚类的过程?6、训练集、测试集、验证集的作用?7、请讲解一下k折交叉验证?8、分类和聚类的区别?9、讲述…

【深度学习】对迁移学习中域适应的理解和3种技术的介绍

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 1 『如何理解域适应』 域适应是计算机视觉的一个领域&#xff0c;我们的目标是在源数据集上训练一个神经网络&#xff0c;并确保在显著不同于源数据集的目标数据集上也有…

协议模糊的堆叠式Seq2seq注意模型

摘要--通过生成大量异常数据作为程序的输入&#xff0c;模糊测试是发现软件漏洞的有效方法。很难自动模糊协议&#xff0c;因为必须手动构造一个满足协议规范的模板以生成测试用例。在本文中&#xff0c;我们建立了堆叠的seq2seq注意模型来自动生成协议测试用例。Seq2seq-atten…

【推荐收藏】3.5万字图解Pandas

文章目录 第一部分&#xff1a;Pandas 展示技术提升1. 排序2.按多列排序3. 添加一列4. 快速元素搜索5. 按列连接&#xff08;join&#xff09;6.按列分组7. 数据透视表8、Pandas速度 第二部分. Series 和 Index索引(Index)按值查找元素缺失值比较追加、插入、删除统计数据重复数…

层次分析法原理及应用案例

层次分析法是指将一个复杂的多目标决策问题作为一个系统&#xff0c;将目标分解为多个目标或准则&#xff0c;进而分解为多指标&#xff08;或准则、约束&#xff09;的若干层次&#xff0c;通过定性指标模糊量化方法算出层次单排序&#xff08;权数&#xff09;和总排序&#…

论文研读-AI4VIS-可视化推荐-VizML: 一种基于机器学习的可视化推荐方法

VizML: 一种基于机器学习的可视化推荐方法 1 论文概述1.1 摘要1.2 引言 2 问题陈述3 相关工作3.1 基于规则的可视化推荐系统3.2 基于机器学习的可视化推荐系统 4 数据4.1 Plotly介绍4.2 数据描述和分析&#xff0c;收集和清理4.2 数据特征提取4.3 设计选择提取 5 方法5.1 特征处…

《python数据分析与挖掘实战》笔记第3章

文章目录 第3章&#xff1a;数据探索3.1、数据质量分析3.2、数据特征分析3.2.1、分布分析3.2.2、对比分析3.2.3、统计量分析1.集中趋势度量2.离中趋势度量 3.2.4、周期性分析3.2.5、贡献度分析3.2.6、相关性分析1. 直接绘制散点图2. 绘制散点图矩阵3. 计算相关系数 3.3、python…

对迁移学习中域适应的理解和3种技术的介绍

域适应是计算机视觉的一个领域&#xff0c;我们的目标是在源数据集上训练一个神经网络&#xff0c;并确保在显著不同于源数据集的目标数据集上也有良好的准确性。为了更好地理解域适应和它的应用&#xff0c;让我们先看看它的一些用例。 我们有很多不同用途的标准数据集&#…

基于1305变频器的几种变参数运行测试

该文主要用于学习归纳&#xff0c;因此会省略正规操作中很多步骤&#xff0c;详述原理。欢迎指正。 一. 设备参数 1305变频器一台(380-460V/9A/4.0KW/5HP)&#xff1b;三相异步交流电动机(1.5(2HP)/3.65A/380V/50Hz/1420rpm/4)&#xff0c;直流发电机组&#xff1b;计算机&am…

2022秋 | PTA编程训练(一)

目录 1.素数对猜想 2.数组元素循环右移问题 3.水仙花数 4.找出不是两个数组共有的元素 5.找鞍点 6.验证“哥德巴赫猜想” 7.黑洞数 8.装箱问题 9.IP地址转换 10.龟兔赛跑 1.素数对猜想 题目详情&#xff1a; 让我们定义dn​为&#xff1a;dn​pn1​−pn​&#xff0…

测试用例设计之正交表法详解

正交实验法的由来 拉丁方名称的由来 古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表。 数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方。 什么是n阶拉丁方? 用n个不同的拉丁字母排成一…

2018年华为数通技术大赛复赛拓扑题

正在准备华为杯的竞赛&#xff0c;期间的训练需要用心练习&#xff0c;希望我的这篇文章能对跟我一样的小伙伴们起到作用。在比赛之前&#xff0c;我们的目的都不是配通这个网络&#xff0c;而是在一次次错误中总结经验&#xff0c;你会受益匪浅&#xff01;不多说&#xff0c;…

华为网络技术比赛-云平台课件笔记

** &#xff08;一&#xff09;5 G ** 在这这张图片很重要啊&#xff01;&#xff01;&#xff01;&#xff01; 5G的子载波带宽是不固定的&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 注意&#xff1a; Massive MIMO &#xff08;1&a…

2022年金砖国家技能大赛-IT网络系统管理样题

2022年金砖国家技能大赛-IT网络系统管理(完整版) 1-网络构建部分 任务二:实现集团、北京数据中心、分公司、办事处的网络互联互通。 拓扑图: 2-项目实施: 一、完成模拟器组网,按照拓扑图搭建及命令,过程略。 二、完成交换部分配置: IDC2北京区域交换机 sysname…

2016年华为网络技术精英大赛复赛试题

2016年华为网络技术精英大赛复赛试题 【转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51470839 1 实验考试说明 本次实验考试满分100分。 考生需要在除给定文档外没有任何协助的情况下&#xff0c;在150分钟内完成本考试的所有内容。 实验中请根据题干…

计算机网络应用技能大赛试题答案,《计算机网络应用》技能大赛模拟题及答案.doc...

《计算机网络应用》技能大赛模拟题及答案.doc 计算机网络应用技能大赛模拟题网络设备配置要求 拓扑编址设备名称接口地址PC1IP192.168.10.100/24PC2IP192.168.20.100/24PC3IP192.168.30.100/24PC4IP10.11.12.100/24S3760VLAN10192.168.10.1/24S3760VLAN20192.168.20.1/24S3760V…

16华为网络技术大赛模拟题答案详解

一、判断题 (1)VLSM的作用是&#xff1a;在有类的IP地址基础上&#xff0c;从主机位部分划分出相应的位数做为网络位。但是在路由器上部署时&#xff0c;需要路由协议的支持。 【解释】对&#xff0c;VLSMVariable Length Subnet Mask&#xff0c;可变长子网掩码 (2)有效的沟通…