当前位置: 首页 > news >正文

【计算视觉算法与应用】金字塔,下采样Gaussian Pyramid. 上采用 Laplacian Pyramid (code: py)

金字塔(Pyramid)在图像处理中主要用于多尺度分析和图像压缩。常见的图像金字塔有两种:

  1. 高斯金字塔(Gaussian Pyramid):用于下采样图像,生成分辨率逐渐降低的图像序列。
  2. 拉普拉斯金字塔(Laplacian Pyramid):通过高斯金字塔生成,用于图像重建和细节增强。

以下是金字塔在图像处理中的作用以及代码实现和可视化:


1. 高斯金字塔

高斯金字塔通过不断下采样(减小分辨率),产生一系列从高分辨率到低分辨率的图像。

代码实现
import cv2
import matplotlib.pyplot as plt# 加载图像
image = cv2.imread('image.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # 转换为RGB
levels = 4  # 金字塔层数# 构建高斯金字塔
gaussian_pyramid = [image]
for i in range(levels):image = cv2.pyrDown(image)  # 下采样gaussian_pyramid.append(image)# 可视化
plt.figure(figsize=(12, 8))
for i, img in enumerate(gaussian_pyramid):plt.subplot(1, levels + 1, i + 1)plt.imshow(img)plt.title(f"Level {i}")plt.axis('off')
plt.show()

2. 拉普拉斯金字塔

拉普拉斯金字塔由高斯金字塔生成,通过将高斯金字塔中的图像与上采样后的低分辨率图像相减,得到细节信息。

代码实现
import cv2
import matplotlib.pyplot as plt# 加载图像
image = cv2.imread('image.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # 转换为RGB
levels = 4  # 金字塔层数# 构建高斯金字塔
gaussian_pyramid = [image]
for i in range(levels):image = cv2.pyrDown(image)  # 下采样gaussian_pyramid.append(image)# 构建拉普拉斯金字塔
laplacian_pyramid = []
for i in range(levels, 0, -1):gaussian_expanded = cv2.pyrUp(gaussian_pyramid[i])  # 上采样# 确保尺寸一致,避免大小差异引发的错误gaussian_expanded = cv2.resize(gaussian_expanded, (gaussian_pyramid[i - 1].shape[1], gaussian_pyramid[i - 1].shape[0]))laplacian = cv2.subtract(gaussian_pyramid[i - 1], gaussian_expanded)  # 相减得到细节laplacian_pyramid.append(laplacian)# 可视化高斯金字塔
plt.figure(figsize=(12, 8))
for i, img in enumerate(gaussian_pyramid):plt.subplot(2, levels + 1, i + 1)plt.imshow(img)plt.title(f"Gaussian Level {i}")plt.axis('off')# 可视化拉普拉斯金字塔
for i, img in enumerate(laplacian_pyramid):plt.subplot(2, levels + 1, levels + 2 + i)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title(f"Laplacian Level {i}")plt.axis('off')plt.tight_layout()
plt.show()

金字塔在图像处理中的作用

  1. 多尺度特征提取:在不同分辨率下提取图像的局部特征。
  2. 图像压缩:金字塔结构可以用较少的数据表示图像的主要信息。
  3. 图像融合:通过拉普拉斯金字塔对图像进行融合,保留不同图像的细节信息。
  4. 对象检测:在金字塔的不同尺度上搜索目标,检测大小变化的对象。
  5. 图像重建:利用拉普拉斯金字塔将低分辨率的图像逐步还原为高分辨率。

3. 图像融合示例

基于拉普拉斯金字塔的图像融合,适用于不同曝光的图像组合。

代码实现
import cv2
import matplotlib.pyplot as plt# 加载两张图像(大小相同)
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')# 构建金字塔
gp_image1 = [image1]
gp_image2 = [image2]for i in range(levels):gp_image1.append(cv2.pyrDown(gp_image1[-1]))gp_image2.append(cv2.pyrDown(gp_image2[-1]))lp_image1 = [gp_image1[-1]]
lp_image2 = [gp_image2[-1]]for i in range(levels - 1, 0, -1):lap1 = cv2.subtract(gp_image1[i - 1], cv2.pyrUp(gp_image1[i]))lap2 = cv2.subtract(gp_image2[i - 1], cv2.pyrUp(gp_image2[i]))lp_image1.append(lap1)lp_image2.append(lap2)# 合并金字塔
pyramid_combined = []
for lap1, lap2 in zip(lp_image1, lp_image2):rows, cols, _ = lap1.shapelap_combined = np.hstack((lap1[:, :cols // 2], lap2[:, cols // 2:]))pyramid_combined.append(lap_combined)# 重建图像
reconstructed_image = pyramid_combined[0]
for i in range(1, len(pyramid_combined)):reconstructed_image = cv2.pyrUp(reconstructed_image)reconstructed_image = cv2.add(reconstructed_image, pyramid_combined[i])# 显示融合结果
plt.imshow(cv2.cvtColor(reconstructed_image, cv2.COLOR_BGR2RGB))
plt.title("Fused Image")
plt.axis('off')
plt.show()

通过上述代码和可视化,我们可以清晰地看到金字塔的应用和效果,同时能够理解其在多尺度分析和图像处理中的重要作用。

相关文章:

【计算视觉算法与应用】金字塔,下采样Gaussian Pyramid. 上采用 Laplacian Pyramid (code: py)

金字塔(Pyramid)在图像处理中主要用于多尺度分析和图像压缩。常见的图像金字塔有两种: 高斯金字塔(Gaussian Pyramid):用于下采样图像,生成分辨率逐渐降低的图像序列。拉普拉斯金字塔&#xff…...

基于BERT的语义分析实现

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

DNS查询工具

DNS查询工具是用于查询和获取域名相关信息的工具。通过这些工具,您可以获取到诸如IP地址、邮件服务器以及域名服务器等信息,这对于排查问题、设置域名配置以及确保网站正常运行都非常重要。 以下是五款常用的DNS记录查询工具: MxToolbox MxTo…...

ODB 框架

目录 概述 基本工作原理 映射C对象到数据库表 从数据库中加载对象 持久化C对象到数据库 ODB常用接口 表创建预处理 #pragma db Object table 数据表属性 id auto column(“xxx”) type("xxx") unique index null default&…...

Ubuntu WiFi检测

ubuntu检测到多个同名wifi,怎么鉴别假冒的wifi? 在Ubuntu中,如果检测到多个同名的Wi-Fi网络,可能存在假冒的Wi-Fi(例如“蜜罐”攻击)。以下是一些鉴别假冒Wi-Fi的方法: 检查信号强度&#xff1a…...

QILSTE H4-108TCG高亮纯lu光LED灯珠 发光二极管LED

型号:H4-108TCG 在电子领域,H4-108TCG LED以其卓越的性能和微小的尺寸1.6x0.8x0.4mm脱颖而出。这款高亮纯绿光LED,采用透明平面胶体,符合EIA标准包装,是环保产品,符合ROHS标准。防潮等级为Level 3&#xf…...

IP与“谷子”齐飞,阅文“乘势而上”?

爆火的“谷子经济”,又捧出一只“潜力股”。 近日,阅文集团股价持续上涨,5日累计涨幅达13.20%。这其中,周三股价一度大涨约15%至29.15港元,强势突破20日、30日、120日等多根均线,市值突破280亿港元关口。 …...

Java阶段三05

第3章-第5节 一、知识点 动态代理、jdk动态代理、cglib动态代理、AOP、SpringAOP 二、目标 理解什么是动态代理和它的作用 学会使用JAVA进行动态代理 理解什么是AOP 学会使用AOP 理解什么是AOP的切入点 三、内容分析 重点 理解什么是动态代理和它的作用 理解什么是AO…...

C# yield 关键字

文章目录 前言一、yield 关键字的语法形式及使用场景(一)yield return(二)yield break 二、yield 关键字的工作原理三、yield 关键字的优势与应用场景(一)优势(二)应用场景 前言 在 …...

SpringBoot开发——结合Nginx实现负载均衡

文章目录 负载均衡介绍介绍Nginx实现负载均衡的示例图:负载均衡策略1.Round Robin:2.Least Connections:3.IP Hash :4.Generic Hash:5.Least Time (NGINX Plus only)6.Random:Nginx+SpringBoot实现负载均衡环境准备Nginx 配置负载均衡测试负载均衡介绍 介绍 在介绍Nginx的负…...

RabbitMQ在手动消费的模式下设置失败重新投递策略

最近在写RabbitMQ的消费者,因为业务需求,希望失败后重试一定次数,超过之后就不处理了,或者放入死信队列。我这里就达到重试次数后就不处理了。本来以为很简单的,问了kimi,按它的方法配置之后,发…...

TsingtaoAI具身智能高校实训方案通过华为昇腾技术认证

日前,TsingtaoAI推出的“具身智能高校实训解决方案-从AI大模型机器人到通用具身智能”基于华为技术有限公司AI框架昇思MindSpore,完成并通过昇腾相互兼容性技术认证。 TsingtaoAI&华为昇腾联合解决方案 本项目“具身智能高校实训解决方案”以实现高…...

【Linux】线程池设计 + 策略模式

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 线程池 1-1 ⽇志与策略模式1-2 线程池设计1-3 线程安全的单例模式1-3-1 什么是单例模式1-3-2 单例模式的特点1-3-3 饿汉实现⽅式和懒汉实现⽅式1-3-4 饿汉…...

网络原理(一):应用层自定义协议的信息组织格式 HTTP 前置知识

目录 1. 应用层 2. 自定义协议 2.1 根据需求 > 明确传输信息 2.2 约定好信息组织的格式 2.2.1 行文本 2.2.2 xml 2.2.3 json 2.2.4 protobuf 3. HTTP 协议 3.1 特点 4. 抓包工具 1. 应用层 在前面的博客中, 我们了解了 TCP/IP 五层协议模型: 应用层传输层网络层…...

Python-链表数据结构学习(1)

一、什么是链表数据? 链表是一种通过指针串联在一起的数据结构,每个节点由2部分组成,一个是数据域,一个是指针域(存放下一个节点的指针)。最后一个节点的指针域指向null(空指针的意思&#xff0…...

性能优化经验:关闭 SWAP 分区

关闭 SWAP 分区,特别是在性能敏感场景(如 Elasticsearch 服务)中,主要与 SWAP 的工作机制和对应用性能的影响有关。以下是详细原因: 1. SWAP 的工作机制导致高延迟 SWAP 是什么: SWAP 分区是系统将物理内存…...

SpringBoot小知识(2):日志

日志是开发项目中非常重要的一个环节,它是程序员在检查程序运行的手段之一。 1.日志的基础操作 1.1 日志的作用 编程期调试代码运营期记录信息: * 记录日常运营重要信息(峰值流量、平均响应时长……) * 记录应用报错信息(错误堆栈) * 记录运维过程数据(…...

java虚拟机——jvm是怎么去找垃圾对象的

JVM(Java虚拟机)通过特定的算法和机制来查找和识别垃圾对象,以便进行垃圾回收。以下是JVM查找垃圾对象的主要方法和步骤: 一、可达性分析法 JVM使用可达性分析法来识别垃圾对象。这种方法从一组称为“GC Roots”的对象作为起始点…...

Macos远程连接Linux桌面教程;Ubuntu配置远程桌面;Mac端远程登陆Linux桌面;可能出现的问题

文章目录 1. Ubuntu配置远程桌面2. Mac端远程登陆Linux桌面3. 可能出现的问题1.您用来登录计算机的密码与登录密钥环里的密码不再匹配2. 找不到org->gnome->desktop->remote-access 1. Ubuntu配置远程桌面 打开设置->共享->屏幕共享。勾选允许连接控制屏幕&…...

hadoop_HA高可用

秒懂HA HA概述HDFS-HA工作机制工作要点元数据同步参数配置手动故障转移自动故障转移工作机制相关命令 YARN-HA参数配置自动故障转移机制相关命令 附录Zookeeper详解 HA概述 H(high)A(avilable): 高可用,意味着必须有容错机制,不能因为集群故障…...

【MySQL】MySQL中的函数之JSON_ARRAY_APPEND

在 MySQL 8.0 及更高版本中,JSON_ARRAY_APPEND() 函数用于在 JSON 数组的指定位置追加一个或多个值。这个函数非常有用,特别是在你需要在 JSON 数组的末尾或特定位置添加新的元素时。 基本语法 JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ..…...

torch.is_nonzero(input)

torch.is_nonzero(input) input: 输入张量 若输入是 不等于零的单元素张量 则返回True,否则返回False 不等于零的单元素张量:torch.tensor([0.]) 或 torch.tensor([0]) 或 torch.tensor([False])单元素张量: 只有一个数 的张量 import torch print(t…...

文本搜索程序(Qt)

头文件 #ifndef TEXTFINDER_H #define TEXTFINDER_H#include <QWidget> #include <QFileDialog> #include <QFile> #include <QTextEdit> #include <QLineEdit> #include <QTextStream> #include <QPushButton> #include <QMess…...

使用 Python 剪辑视频的播放速度

要使用 Python 调整视频的播放速度&#xff0c;可以利用 moviepy 库中的 fx&#xff08;特效&#xff09;模块来实现这一功能。通过 moviepy.editor 中的 VideoFileClip 类和 fx.speedx 函数&#xff0c;可以轻松地调整视频的播放速度。 安装 moviepy 首先&#xff0c;确保已…...

深入理解计算机系统,源码到可执行文件翻译过程:预处理、编译,汇编和链接

1.前言 从一个高级语言到可执行程序&#xff0c;要经过预处理、编译&#xff0c;汇编和链接四个过程。大家可以思考下&#xff0c;为什么要有这样的过程&#xff1f; 我们学习计算机之处&#xff0c;就应该了解到&#xff0c;计算机能够识别的只有二进制语言&#xff08;这是…...

Linux开发者的CI/CD(11)jenkins变量

文章目录 1. **环境变量 (Environment Variables)**常见的环境变量:示例:2. **构建参数 (Build Parameters)**常见的构建参数类型:示例:3 **在 `stages` 块内定义局部变量**示例:使用 `script` 步骤定义局部变量4 变量引用陷阱在 Jenkins 中,变量是自动化流程中非常重要的…...

深度学习视频编解码开源项目介绍【持续更新】

DVC (Deep Video Compression) 介绍&#xff1a;DVC (Deep Video Compression) 是一个基于深度学习的视频压缩框架&#xff0c;它的目标是通过深度神经网络来提高视频编码的效率&#xff0c;并降低比特率&#xff0c;同时尽可能保持视频质量。DVC 是一个端到端的神经网络模型&…...

Canva迁移策略深度解析:应对每日5000万素材增长,从MySQL到DynamoDB的蜕变

随着数字化设计的蓬勃发展&#xff0c;Canva作为一款备受欢迎的在线设计平台&#xff0c;面临着日益增长的用户生成内容挑战。每天&#xff0c;平台上新增的素材数量高达5000万&#xff0c;这对数据库系统提出了前所未有的要求。为了应对这一挑战&#xff0c;Canva决定对其数据…...

nacos常见面试题(2024)

nacos永久实例与临时实例区别 nacos实例有2种&#xff0c;分别为临时实例&#xff08;一般业务服务是临时的&#xff09;和永久实例&#xff08;如mysql、redis这种运维服务需要实时看到状态的设置为永久实例&#xff09;。 临时实例只会缓存到服务注册列表中&#xff0c;下线…...

68000汇编实战01-编程基础

文章目录 简介产生背景应用领域 语言学习EASy68K帮助文档IDE使用 编程语言commentslabels开始标签指令标签位置标签 opcode 操作码常用操作码数据传送算术运算逻辑运算控制流分支跳转地址跳转子程序跳转 位操作比较堆栈操作 IO操作码其他操作码 directives 指令DC指令EQU 指令S…...

怎么用ftp管理网站/怎么样建立自己的网站

Insights forArcGIS为数据分析提供了简单的工具和简洁的界面&#xff0c;通过Insights for ArcGIS你可以使用自己的数据库如企业数据仓库、ArcGIS数据、地理数据库、电子表格、大数据和实时数据流以及Esri权威网站数据等&#xff0c;快速创建图形&#xff0c;图表、获取态势感知…...

无锡专业网站/关键词网络推广企业

编程之魂&#xff1a;与27位编程语言创始人对话 基本信息 作者&#xff1a; Federico Biancuzzi Shane Warden 译者&#xff1a; 闫怀志出版社&#xff1a;电子工业出版社ISBN&#xff1a;9787121104985上架时间&#xff1a;2010-4-21出版日期&#xff1a;2010 年5月开本&…...

做外贸站推广/百度sem

浅谈跨站请求伪造(CSRF) 这里简单的记录一下CSRF漏洞~~ 什么是CSRF? CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站点伪造请求&#xff09;是一种网络攻击方式&#xff0c;该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点&#xff0…...

重庆妇科医院排名前十/百度seo提高排名费用

Firefox - 附加软件 - Firebug - DOM文档结构视图 - “冻结”被AJAX不断更新的DOM视图 当页面中包含定期执行的AJAX脚本时&#xff0c;DOM视图将自动刷新&#xff0c;不便于查看&#xff0c;此时可以在script视图中AJAX脚本处设置断点&#xff0c;这样DOM视图就被“冻结”了。…...

python3 做网站/做网页怎么做

适配器模式&#xff0c;你有我需要的信息但是我俩信息封装的类型不同&#xff0c;你无法直接给我。就像我又一个三脚插头&#xff0c;你是两孔的插座。需要一个转换器&#xff0c;让我用上你的电。P.S.:很危险&#xff0c;不要干这种事。。。 文章目录 1.1 不同的客户信息封装 …...

网站模板下载带后台/冯耀宗seo课程

/**保存文件&#xff0c;并且声称压缩包&#xff0c;返回压缩包地址** date Nov 20, 20142:06:25 PM*paramresultList*return压缩包地址*throwsIOException*/private String saveFile(HttpServletRequest request, Long shopid, List resultList) throwsIOException{logger.inf…...