高斯金字塔及拉普拉斯金字塔的Matlab实现

article/2025/8/15 4:17:52

来源:《图像工程》(第4版)
1、高斯金字塔计算步骤
(1)对第 i i i 层图像进行高斯内核卷积;
(2)将所有偶数行和列去除(下采样),得到第 i + 1 i+1 i+1 层图像;
(3)对原始图像不停迭代以上步骤就能得到整个金字塔。
2、拉普拉斯金字塔计算步骤
(1)将第 i i i 层图像在每个方向扩大为原来的两倍(上采样),新增的行和列以0填充;
(2)使用先前同样的内核(乘以4)与放大后的图像卷积,获得“新增像素”的近似值,得到第 i − 1 i-1 i1 层图像;
(3)与高斯金字塔第同层次图像相减,就是图像在缩小和放大整个过程中减少的信息,称为拉普拉斯残差金字塔。
3、Matlab程序实现

close all
clear 
clcimg=imread('lena.png');
img_gray=rgb2gray(img);
img_filter=double(img_gray);
%% 设置金字塔层数:p,高斯金字塔元胞数组为gausPyramid,拉普拉斯金字塔元胞数组为LaplPyramid
p=4;
gausPyramid=cell(1,p);
LaplPyramid=gausPyramid;%% 5*5高斯核,sigma=1
kernel=fspecial('gaussian',5,1);
% 高斯核乘以4(亮度守恒)
kernel1=4.*kernel;%% 计算gausPyramid和LaplPyramid
[m,n]=size(img_filter);
gausPyramid(1)=mat2cell(img_filter,m,n);
for i=2:p        %% 高斯金字塔% 滤波img_filter1=filter2(kernel,img_filter,'same');% 下采样:去掉偶数行、列img_filter1(2:2:end,:)=[];img_filter1(:,2:2:end)=[];    [m,n]=size(img_filter1);gausPyramid(i)=mat2cell(img_filter1,m,n);%% 拉普拉斯金字塔% 上采样:新增全零行、列img_filter2=zeros(2*m,2*n);img_filter2(1:2:2*m,1:2:2*n)=img_filter1(1:m,1:n);% 滤波img_filter2=filter2(kernel1,img_filter2,'same');img_filter2=img_filter-img_filter2;LaplPyramid(i-1)=mat2cell(img_filter2,2*m,2*n);img_filter=img_filter1;
end
LaplPyramid(p)=gausPyramid(p);%% 显示金字塔,把元胞金字塔统计到一个数组中
img_gaus=cell2mat(gausPyramid(1));
[r,~]=size(img_gaus);
img_lapl=cell2mat(LaplPyramid(1));
[r1,~]=size(img_lapl);
for i=2:p%% 高斯金字塔img_filter=cell2mat(gausPyramid(i));[m,~]=size(img_filter);% 在第一行前面补(r-m)行全255,10列全255列,与最大的图像行对齐img_filter=padarray(img_filter,[r-m 10],255,'pre');img_gaus=[img_gaus img_filter];%% 拉普拉斯金字塔img_filter=cell2mat(LaplPyramid(i));[m,~]=size(img_filter);% 在第一行前面补(r-m)行全255,10列全255列,与最大的图像行对齐img_filter=padarray(img_filter,[r1-m 10],255,'pre');img_lapl=[img_lapl img_filter];
end
figure('Name','gausPyramid');
imshow(uint8(img_gaus));
figure('Name','LaplPyramid');
imshow(uint8(abs(img_lapl)));

4、结果如图所示
(1)高斯金字塔
在这里插入图片描述
(2)拉普拉斯金字塔
在这里插入图片描述
注:拉普拉斯金字塔与《图像工程》(第4版)中的效果图不太一样,差别的源头可能出在原始图像“lena.png”的数据上!


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

相关文章

【C++】高斯金字塔和拉普拉斯金字塔原理和实现

【C】高斯金字塔和拉普拉斯金字塔原理和实现 图像中各个像素与其相邻像素之间的有很强的相关性,包含的信息也十分丰富,目标的尺寸有大有小,对比度有强有弱,此时就需要一个“显微镜”或者“望远镜”-----多尺度图像技术。它可以在…

python 高斯金字塔_12、高斯金字塔、拉普拉斯金字塔与图片尺寸缩放(示例代码)...

一、引言 我们经常会将某种尺寸的图像转换为其他尺寸的图像,如果放大或者缩小图片的尺寸,笼统来说的话,可以使用OpenCV为我们提供的如下两种方式: (1)resize函数。这是最直接的方式, (2)pyrUp( )、pyrDown( )函数。即图…

高斯金字塔的构建步骤

转自:https://www.cnblogs.com/starfire86/p/5735061.html SIFT(Scale-Invariant Feature Transform,尺度不变特征转换)在目标识别、图像配准领域具有广泛的应用,下面按照SIFT特征的算法流程对其进行简要介绍对SIFT特征做简要介绍。 高斯金字…

图像处理(九)高斯金字塔及拉普拉斯金字塔

高斯滤波的核就是一个求平均值的卷积核 高斯金字塔也是一个高斯核,只是步长为2,卷积后图片缩小二倍。高斯金字塔的目的是在图像不同大小时可以获得不同的信息,比如说图像较小时可以获得轮廓,图像较大时可以获得细节 使用函数cv2.p…

OpenCV SIFT源码讲解——构建高斯金字塔

目录 一、构建方法 二、函数重要点注释 一、构建方法 高斯金字塔每层图像的尺度为:。理论上金字塔每层图像可以从原图做的高斯滤波得到。但是实际操作中,每组的第一张影像(除第一组)是上一组倒数第三张影像降采样得到&#xff0c…

OpenCV中的图像金字塔(高斯金字塔、拉普拉斯金字塔)

最近在看关于数字图像的知识点,目前在图像金字塔部分,实在是懒得用手作笔记了,就以其中比较出名的“高斯金字塔”和“拉普拉斯金字塔”为例,基于OpenCV的源代码作解析存个档;毕竟属于基础部分,以后有需要就…

python 高斯金字塔_Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金字塔

Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧。 基础知识铺垫 学习图像金字塔,发现网上的资料比较多,检索起来比较轻松。 图像金字塔是一张图像多尺度的表达,或者可以理解成一张图像不同分辨率展示。 金字塔越底层的…

图像金字塔和高斯金字塔

一:图像金字塔 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔实际上是一张图片在不同尺度下的集合,即原图的上采样和下采样集合。金字塔的底部是高分辨…

opencv学习-高斯金字塔和拉普拉斯金字塔

图像金字塔 一个图像金字塔是由一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就像一个古代的金字塔。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的…

高斯金字塔与拉普拉斯金字塔的原理与python构建

转载自:https://zhuanlan.zhihu.com/p/94014493 高斯金字塔和拉普拉斯金字塔【1】在图像相关领域应用广泛,尤其是图像融合和图像分割方面。本文从理论和opencv实现两个方面对两种金字塔进行了介绍,并给出了二者的视觉效果。 1、高斯金字塔 在计算机视觉…

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

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

高斯金字塔

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)按值查找元素缺失值比较追加、插入、删除统计数据重复数…

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

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