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

《深度学习》OpenCV 高阶 图像金字塔 用法解析及案例实现

目录

一、图像金字塔

1、什么是图像金字塔

2、图像金字塔作用

        1)金字塔尺度间的图像信息补充

        2)目标检测与识别

        3)图像融合与拼接

        4)图像增强与去噪

        5)图像压缩与编码

二、用法解析

1、向下采样

        1)概念

        2)做法

        3)代码实现

        运行结果:

2、向上采样

        1)概念

        2)做法

        3)上下采样区别        

        4)代码实现

        运行结果:

3、拉普拉斯金字塔

        1)概念        

        2)拉普拉斯金字塔定义

        3)拉普拉斯金字塔构建过程

        4)代码实现

运行结果:


一、图像金字塔

1、什么是图像金字塔

        图像金字塔是由一幅图像多个不同分辨率子图构成的图像集合。是通过一个图像不断的降低采样率产生的,最小的图像可能仅仅有一个像素点。图像金字塔的底部是待处理的高分辨率图像(原始图像),而顶部则为其低分辨率的近似图像。

2、图像金字塔作用

        1)金字塔尺度间的图像信息补充

                在不同尺度的图像金字塔中,每一层图像都包含了原始图像在不同空间尺度上的信息。这样可以提供更全面的图像信息,使得后续的图像处理和分析算法能够更好地利用图像特征。

        2)目标检测与识别

                金字塔可以用于目标检测和识别算法中的多尺度搜索,通过在不同尺度的金字塔中检测目标并进行匹配,可以提高检测的准确率和鲁棒性。

        3)图像融合与拼接

                在图像融合和拼接任务中,金字塔可以提供多尺度的图像信息,从而实现更精细和准确的融合和拼接结果。

        4)图像增强与去噪

                金字塔可以用于图像增强和去噪算法中,通过在不同尺度上对图像进行处理,可以有效地提高图像质量,并去除图像中的噪声。

        5)图像压缩与编码

                金字塔可以用于图像压缩和编码算法中,通过对图像进行分解和编码,可以实现更高的压缩比和更好的图像质量。

二、用法解析

1、向下采样

        1)概念

                向金字塔顶部移动时,图像的尺寸和分辨率都不断地降低。通常情况下,每向上移动一级,图像的宽和高都降低为原来的1/2

        2)做法

                1、高斯滤波

                2、删除其偶数行和偶数列

                3、OpenCV函数cv2.pyrDown()

        3)代码实现
import cv2
face = cv2.imread('face.jpg',cv2.IMREAD_GRAYSCALE)  # 以灰度图的形式加载
cv2.imshow('face',face)   # 展示原图 灰度图
cv2.waitKey(0)
face_down_1 = cv2.pyrDown(face)   # 对原图做下采样
cv2.imshow('face_down_1',face_down_1)
cv2.waitKey(0)
face_down_2 = cv2.pyrDown(face_down_1)   # 再做下采样
cv2.imshow('face_down_2',face_down_2)
cv2.waitKey(0)

        运行结果:

        注意:在经过下采样时图片的尺寸必须为偶数,因为下采样是将原图尺寸缩小一半,奇数大小无法缩放

2、向上采样

        1)概念

                通常将图像的宽度和高度为原来的2倍。这意味着,向上采样的结果图像的大小是原始图像的4倍。因此,要在结果图像中补充大量的像素点。对新生成的像素点进行赋值的行为,称为插值

        2)做法

                1、插值         

                2、高斯滤波

        3)上下采样区别        

                通过以上分析可知,向上采样和向下采样是相反的两种操作。但是,由于向下采样会丢失像素值,所以这两种操作并不是可逆的。也就是说,对一幅图像先向上采样、再向下采样,是无法恢复其原始状态的;同样,对一幅图像先向下采样、再向上采样也无法恢复到原始状态

        4)代码实现
# 上采样
face_up_1 = cv2.pyrUp(face)
cv2.imshow('face_up_1',face_up_1)  # G1
cv2.waitKey(0)
face_up_2 = cv2.pyrUp(face_up_1)
cv2.imshow('face_up_2',face_up_2)  # G2
cv2.waitKey(0)
#
# # # #对下采用后图像进行上采样,图像变模糊,无法复原
face_down_1_up = cv2.pyrUp(face_down_1)  # 下采样G1
face_down_2_up = cv2.pyrUp(face_down_2)  # 下采样G2cv2.imshow('face_down_1_up',face_down_1_up)
cv2.imshow('face_down_2_up',face_down_2_up)
cv2.waitKey(0)

        运行结果:

3、拉普拉斯金字塔

        1)概念        

                为了在向上采样是能够恢复具有较高分辨率的原始图像,就要获取在采样过程中所丢失的信息,这些丢失的信息就构成了拉普拉斯金字塔。 也是拉普拉斯金字塔是有向下采样时丢失的信息构成。

        2)拉普拉斯金字塔定义

                Li = Gi – pyrUp(pyrdown(Gi))

                        Li:表示拉普拉斯金字塔中的第i层

                        Gi:表示高斯金字塔中的第i层

                        Gi+1 :表示高斯金字塔中的第 i+1 层

        3)拉普拉斯金字塔构建过程

                1、首先,原始图像通过降采样操作缩小尺寸,得到一系列不同分辨率的图像。

                2、然后,每一级的图像通过上采样操作放大到原始尺寸,与上一级降采样得到的图像相减得到拉普拉斯金字塔的每一级

                3、重复上述步骤,直到达到金字塔的最底层(分辨率最低)

                4、拉普拉斯金字塔的每一级包含了每个像素与上一级相同位置的像素之间的高频信息,可以理解为图像的细节信息。较高级别的金字塔包含了较低级别金字塔中消失的细节信息,可以通过级联金字塔的级别进行图像重建。

        4)代码实现

                       (需要衔接上述代码)

# #  拉普拉斯金字塔
L0 = face - face_down_1_up
L1 = face_down_1 - face_down_2_upfuyuan = face_down_1_up + L0
cv2.imshow('L0',L0)
cv2.imshow('L1',L1)
cv2.waitKey(0)
cv2.imshow('fuyuan',fuyuan)
cv2.waitKey(0)
运行结果:

相关文章:

《深度学习》OpenCV 高阶 图像金字塔 用法解析及案例实现

目录 一、图像金字塔 1、什么是图像金字塔 2、图像金字塔作用 1)金字塔尺度间的图像信息补充 2)目标检测与识别 3)图像融合与拼接 4)图像增强与去噪 5)图像压缩与编码 二、用法解析 1、向下采样 1)概念…...

dirty pages , swapiness 查看SWAP占用进程

文章说了这么多的意思 就是不要过度分配不用的内存。虽然脏块不会写入swap,但是占了物理内存,浪费空间,可能导致进行了很多不必要的交换(虽然判断很少要进swap,判断要不要也要时间。。。)。 To verify whic…...

Spring Boot项目更改项目名称

背景:新项目开始前,往往需要初始化功能,拿到基础版本后更改项目对应的名称等信息。 更改步骤如下: 1、修改目录名称。 打开本地项目,右键修改项目名称。 2、修改maven项目的pom依赖 修改parent及modules项目名称&…...

Hive SQL基础语法及查询实践

目录 基础语法 1. 官网地址 2. 查询语句语法 基本查询(Select…From) 数据准备 (0)原始数据 (1)创建部门表 (2)创建员工表 (3)导入数据 全表和特定列查…...

k8s service如何实现流量转发

1 基本概念 Service:在Kubernetes(K8s)中,Service用于将流量转发到后端的Pod中。Service提供了一种稳定的网络入口,尽管后端的Pod可能会动态改变 kube-proxy: kube-proxy是Kubernetes集群中的核心组件之一&#xff0…...

每日一练:K个一组翻转链表

25. K 个一组翻转链表 - 力扣(LeetCode) 一、题目要求 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#x…...

昨晚,OpenAI震撼发布o1大模型!我们正式迈入了下一个时代。

大半夜的,OpenAI抽象了整整快半年的新模型。 在没有任何预告下,正式登场。 正式版名称不叫草莓,草莓只是内部的一个代号。他们的正式名字,叫: 为什么取名叫o1,OpenAI是这么说的: For complex …...

MySql8.x---开窗函数

1、定义 语法结构: ** 开窗函数|聚合函数 over([分组函数] [排序函数] [自定义窗口]) ** 分组函数:partition by ...,根据指定的字段对表分组,分组字段可以有多个。省略时表示整个表为一组。 排序函数:order by ...&…...

图文讲解HarmonyOS应用发布流程

HarmonyOS应用的开发和发布过程可以分为以下几个步骤:证书生成、应用开发、应用签名和发布。 1. 证书生成: 在开始开发HarmonyOS应用之前,首先需要生成一个开发者证书。开发者证书用于标识应用的开发者身份并确保应用的安全性。可以通过Har…...

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预…...

经典负载调制平衡放大器(LMBA)设计-从理论到ADS仿真

经典负载调制平衡放大器(LMBA)设计-从理论到ADS仿真 ADS工程下载:经典负载调制平衡放大器(LMBA)设计-从理论到ADS仿真-ADS工程 参考论文: An Efficient Broadband Reconfigurable Power Amplifier Using Active Load…...

Web开发:基础Web开发的支持

创建项目&#xff1a; 添加依赖: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://mav…...

【LeetCode每日一题】——LCR 168.丑数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目注意】六【题目示例】七【题目提示】八【解题思路】九【时间频度】十【代码实现】十一【提交结果】 一【题目类别】 优先队列 二【题目难度】 中等 三【题目编号】 LCR 168.丑数 四【题目描述…...

Day7 | Java框架 | SpringMVC

Day7 | Java框架 | SpringMVC SpringMVC简介SpringMVC 概述入门案例入门案例工作流程分析Controller 加载控制与业务bean加载控制&#xff08;SpringMVC & Spring&#xff09;PostMan 请求与响应请求映射路径请求方式&#xff08;不同类型的请求参数&#xff09;&#xff1…...

【网络通信基础与实践第二讲】包括互联网概述、互联网发展的三个阶段、互联网的组成、计算机网络的体系结构

一、互联网概述 计算机网络是由若干节点&#xff08;node&#xff09;和连接这些节点的链路&#xff08;link&#xff09;组成。 网络之间还可以通过路由器互联起来&#xff0c;这就构成了一个覆盖范围更大的计算机网络。这样的网络称为互联网。 网络把许多计算机连接在一起…...

CentOS7下安装Ruby3.2.4的实施路径

一、CentOS版本 [userzt ~]$ cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31" CPE…...

Redis 实现原理或机制

Redis 是一个高性能的、基于内存的键值对存储系统&#xff0c;广泛用于缓存、会话管理、排行榜和消息队列等场景。它的高效性得益于其独特的实现原理和机制&#xff0c;Redis支持丰富的数据结构和多种持久化、复制、集群和发布/订阅功能&#xff0c;提供了灵活性和高可用性。 …...

使用程序方式获取与处理MySQL表数据

8.1  执行多条语句获取 MySQL 表数据 8.1.1  MySQL 中的常量 8.1.2  MySQL 中的变量 1&#xff0e;用户变量 用户可以在表达式中使用自己定义的变量&#xff0c;这样的变量称为用户变量。 用户变量在使用前必须定义和初始化&#xff0c;如果使用没有初始化的变量&#x…...

计算机网络(五) —— 自定义协议简单网络程序

目录 一&#xff0c;关于“协议” 1.1 结构化数据 1.2 序列化和反序列化 二&#xff0c;网络版计算器实现准备 2.1 套用旧头文件 2.2 封装sock API 三&#xff0c;自定义协议 3.1 关于自定义协议 3.2 实现序列化和反序列化 3.3 测试 三&#xff0c;服务器实现 3.1…...

开源模型应用落地-qwen2-7b-instruct-LoRA微调-unsloth(让微调起飞)-单机单卡-V100(十七)

一、前言 本篇文章将在v100单卡服务器上,使用unsloth去高效微调QWen2系列模型,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 使用unsloth能够使模型的微调速度提高 2 - 5 倍。在处理大规模数据或对时间要求较高的场景下,…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...