图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码

article/2025/8/15 4:18:00

图像金字塔是对图像进行多分辨率表示的一种有效且简单的结构。
一个图像金字塔是一系列以金字塔形状排列的分辨率逐步降低的图像。图像金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率表示。

图像金字塔有什么作用?
图像金字塔常用于图像缩放、图像重构、图像融合、图像增强技术中。
这里说下图像金字塔在图像融合技术中的应用:多分辨率塔式图像融合算法是现在较为常用的图像融合方法。在这类算法中,原图像被层层滤波和缩小,形成一个塔状结构。在塔的每一层都用一种融合算法对这一层的数据进行融合,从而得到一个经算法处理后的塔式结构,然后对处理后的塔式结构进行重构,从而得到合成图像。
另外,图像金字塔可以将原图像分别分解到不同的空间频带上,这样就可以针对不同分解层的不同频带上的特征与细节,采用不同的算子以达到更有针对性的算法优化处理。

高斯金字塔和拉普拉斯金字塔是最常见的两种图像金字塔。

下面详细介绍高斯金字塔和拉普拉斯金字塔。

高斯金字塔
高斯金字塔是指通过高斯模糊滤波和下采样不断地将图像的尺寸缩小,进而在金字塔中包含多个分辨率的一组图像。高斯金字塔的形式如下图所示:
在这里插入图片描述
一般情况下,高斯金字塔的最底层为原图像,每向上一层就会通过高斯模糊滤波+下采样缩小一次图像的尺寸。
通常情况下,图像的长与宽会缩小为原来的一半,由于每次图像的长与宽都缩小为原来的一半,图像的缩小速度非常快,因此常见的高斯金字塔的层数为3~6。

在OpenCV中提供了函数pyrDown(),用于生成图像的上一层高斯金字塔。
函数pyrDown()的原型如下:

void cv::pyrDown(InputArray src,OutputArray dst,const Size & dstsize = Size(),int borderType = BORDER_DEFAULT )

函数pyrDown()的参数意义如下:
src—输入图像
dst—输出图像,它的宽度和高度大致为src的1/2 ,具体精确的大小由第三个参数dstsize决定。
dstsize—目标图像的大小,默认值为Size((src.cols+1)/2, (src.rows+1)/2),自己指定时需要满足以下条件。
在这里插入图片描述
bordertype—做高斯滤波时的边界扩展标志。关于边界扩展的详细介绍可参见下面这篇博文:
https://www.hhai.cc/thread-178-1-1.html
使用函数pyrDown()生成上一层高斯金字塔包含两个过程,即高斯核卷积(用于实现高斯模糊滤波)和下采样两个过程。
G n G_{n} Gn表示第n层高斯金字塔的图像,则 G 0 G_{0} G0表示高斯金字塔的最底层,这一层实际上就是原图像。为了得到 G n + 1 G_{n+1} Gn+1,首先需要对 G n G_{n} Gn进行高斯核卷积,即做高斯低通滤波,然后删除所有的偶数行和偶数列(这是一种下采样操作),从而得到 G n + 1 G_{n+1} Gn+1
函数pyrDown()使用的高斯核如下:
在这里插入图片描述
提问:为什么高斯金字塔在下采样操作之前要先进行高斯低通滤波。
答:这样做既能保证高斯金字塔低通处理的性质,又能对图像进行平滑,使下采样得到的图像不至于出现边界缝隙。
总结一下:图像高斯金字塔的上一层是对下一层进行低通滤波后再进行隔行隔列采样得到的。上一层图像的大小约为下一层图像的1/4。

拉普拉斯金字塔
拉普拉斯金字塔实际上是为了实现高斯金字塔的图像重建而存在的。它是在高斯金字塔的基础上生成的。拉普拉斯金字塔是高斯金字塔与其上一层通过上采样扩大后的差值图像,这里的上采样一般采用插值的方式进行。

昊虹君在网上找到了一幅示意图,很形象具体地解释了拉普拉斯金字塔是怎么回事,
这幅示意图请大家访问本博文的原文查看,
本博文的原文链接:

https://www.hhai.cc/thread-198-1-1.html

从上面昊虹君找到的那幅示意图我们可以清晰地看出:第n层拉普拉斯图像实际上是第n层高斯图像与第n+1层高斯图像经上采样后的差值,由于高斯滤波器是一种低通滤波器,所以我们可以说某一级的拉普拉斯金字塔可以反映出其同级的高斯金字塔的高频分量。有些文献把拉普拉斯金字塔反映其同级高斯金字塔的高频分量的性质称为拉普拉斯金字塔的预测残差作用。

从上面拉普拉斯图像的生成过程我们可以看出,在利用高斯金字塔生成拉普拉斯金字塔的过程中,假设高斯金字塔为N层,则在计算第N层的拉普拉斯金字塔时我们还要额外计算出第N+1层的高斯金字塔才能进而计算出第N层的拉普拉斯金字塔。

OpenCV提供了函数pyrUp()用于帮助计算出拉普拉斯金字塔。通过它可以把第n层的高斯金字塔图像进行上采样后再进行高斯卷积模糊滤波操作。
OpenCV官方文档中对其功能的描述如下:
The function performs the upsampling step of the Gaussian pyramid construction, though it can actually be used to construct the Laplacian pyramid. First, it upsamples the source image by injecting even zero rows and columns and then convolves the result with the same kernel as in pyrDown multiplied by 4
从上面的描述中我们可知,函数pyrUp()的上采样操作是均匀地隔行隔列加0值。上采样完成之后用下面这个卷积核进行高斯卷积模糊滤波操作。
在这里插入图片描述
请注意:上面这个卷积核与函数pyrDown()的卷积核有所不同,具体是函数pyrDown()高斯卷积核需要乘以四才得到函数pyrUp()的卷积核,至于为什么要这样做,博主昊虹君目前没有搞清楚,猜想应该是与其上采样时隔行隔列插0值有关。知道原因的朋友可以与昊虹君说一说,先谢谢了。

函数pyrDown()的的原型如下:

void cv::pyrUp(InputArray src,OutputArray dst,const Size & dstsize = Size(),int borderType = BORDER_DEFAULT )

各参数的意义和函数pyrDown()的一样,这里就不再赘述了。

这里要特别注意:函数pyrDown()的dst参数中得到的并不是拉普拉斯金字塔图像。
如果要得到拉普拉斯金字塔图像,还需要按下面的公式进行运算。
L n L_{n} Ln表示第n层拉普拉斯金字塔, G n G_{n} Gn表示第n层高斯金字塔,则有:

L n = G n − P y r u p ( G n + 1 ) L_{n}=G_{n}-Pyrup(G_{n+1}) Ln=GnPyrup(Gn+1)

显然我们可以利用下面的公式重构第n层高斯金字塔图像:
G n ′ = L n + P y r u p ( G n + 1 ) G_{n}^{'} =L_{n}+Pyrup(G_{n+1}) Gn=Ln+Pyrup(Gn+1)

接下来上基于Python-OpenCV的示例代码,
该示例代码是对函数pyrDown()和pyrUp()的综合使用,
该示例代码先对图像进行高斯金字塔下采样处理,
再利用某一层的拉普拉普金字塔和高斯金字塔还原上一层图像。
代码写了详细的注释,大家应该能够很容易理解。

具体的代码请大家访问本博文的原文获取,
本博文的原文链接:

https://www.hhai.cc/thread-198-1-1.html

代码运行结果如下图所示:
在这里插入图片描述
在这里插入图片描述
从上面的结果中我们可以看出,利用某一层的高斯金字塔和拉普拉斯金字塔重构出的图像与原图相比在细节上(高频分量上)并没有多少缺失。


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

相关文章

高斯金字塔

1、为什么要构建高斯金字塔 高斯金字塔模仿的是图像的不同的尺度,尺度应该怎样理解?对于一副图像,你近距离观察图像,与你在一米之外观察,看到的图像效果是不同的,前者比较清晰,后者比较模糊&am…

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

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

快速了解Scala技术栈

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

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

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

AI题目整理

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

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

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

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

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

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

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

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

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

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

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

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

文章目录 第3章:数据探索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种技术的介绍

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

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

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

2022秋 | PTA编程训练(一)

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

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

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

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

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

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

** (一)5 G ** 在这这张图片很重要啊!!!! 5G的子载波带宽是不固定的!!!!!! 注意: Massive MIMO (1&a…

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

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

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

2016年华为网络技术精英大赛复赛试题 【转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51470839 1 实验考试说明 本次实验考试满分100分。 考生需要在除给定文档外没有任何协助的情况下,在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…