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

news2024/12/25 12:41:31

目录

一、图像金字塔

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)  # 下采样G2

cv2.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_up

fuyuan = face_down_1_up + L0
cv2.imshow('L0',L0)
cv2.imshow('L1',L1)
cv2.waitKey(0)
cv2.imshow('fuyuan',fuyuan)
cv2.waitKey(0)
运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2123115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++11 ——— 可变参数模板】

C11 ——— 可变参数模板 可变参数模板的概念可变参数模板的定义方式参数包的展开递归式展开参数包逗号表达式展开参数包 emplaceemplace 的使用emplace 的优势 可变参数模板的概念 在C11之前,函数模板和类模板中的模板参数数量是固定的。可变参数模板打破了这个限制,提供了一…

Visual Studio汇编代码高亮与自动补全

高亮插件:AsmDude (可以按照我的颜色进行设置,或者你自己改) 代码自动补全:CodeGeex (功能很多,支持的语言很多),按Tab补全

Gitea Action注册runner

我的是gitea也可以和github 兼容,只是没有github 那么靓而已 安装一个gitea仓库 docker run -d --name gitea \-p3000:3000 -p2222:22 \-v /git/data:/data \ -v /etc/timezone:/etc/timezone:ro \-v /etc/localtime:/etc/localtime:ro \gitea/gitea:1.21.1setti…

嵌入式实时操作系统(RTOS):原理、应用与发展

摘要:本文围绕嵌入式实时操作系统(RTOS)展开。首先介绍嵌入式系统与实时操作系统的概念,阐述嵌入式 RTOS 的体系结构。接着分析其关键特性,包含任务管理(如任务的创建与删除、调度、同步与通信)…

基于SSM架构的农产品朔源系统

项目描述 这是一款基于SSM架构的农产品朔源系统 模块描述 农产品溯源系统 1、农产品管理 农产品列表 新增农产品 2、二维码管理 二维码列表 3、溯源管理 溯源列表 溯源图表 4、 企业管理 设置 添加企业 截图

ts复合流讲解

一、什么是复合流 复合流指的是一条音视频数据流中同时包含了音频ES和视频ES数据(ES指的是从编码器出来的音视频裸流比如H264,AAC)。在音视频开发中最常见的复合流一般是TS、MP4、flv等。TS和flv一般用于网络传输,MP4一般用于本地…

【区块链 + 人才服务】教育区域初中综合素质评价系统 | FISCO BCOS应用案例

根据国家及相关省份制定的高中阶段学校考试招生制度改革实施意见,全国部分地市将开展初中学生综合素质评 价工作。评价将从思想品德、学业水平、身心健康、艺术素养和社会实践五个维度来记录学生的发展过程。例如, 学生的党团社团活动参与情况、公益活动…

windows手工杀毒-关闭恶意弹窗

上篇回顾:windows手工杀毒-寻找可疑进程之网络连接-CSDN博客 上篇主要介绍了如何通过网络连接发现可疑进程。滥用公认端口的软件可能是可疑软件,因为占用公认端口,可能导致正常服务不能正常使用。可以查询ip或域名的相关情报信息&…

一篇文章了解Pytest单元测试框架

文章目录 1.Pytest是什么2.Pytest的安装3.Pytest快速入门4.Pytest文件规范5.常用的断言类型 1.Pytest是什么 pytest 是一个功能强大且灵活的 Python 测试框架,主要优点包括简洁易用、自动测试发现、丰富的插件生态系统、参数化测试、详细的断言错误信息、以及强大的 fixtures …

虚拟化数据恢复—虚拟机误还原几年前的快照怎么恢复数据?

虚拟化技术原理是将硬件虚拟化供不同的虚拟机使用,一台物理机上可以有多台虚拟机。人为误操作或者物理机故障会导致上层虚拟机不可用,甚至虚拟机里的重要数据丢失。下面给大家分享一个vmware虚拟化误操作还原快照的数据恢复案例。 虚拟化数据恢复环境&am…

基于GPT3打造你的专属的个人知识库

DocsGPT是一个基于GPT3的知识库平台,其支持训练、本地部署,并支持结果导出 https://github.com/arc53/DocsGPT DocsGPT本地部署 前置依赖: pippython3.8版本以上(python3.7不支持langchain 0.0.100以上版本)如使用ma…

【原理图PCB专题】案例:Cadence能设计一个没有管脚的器件吗?

在工作中突发奇想,如果Capture原理图中设计一个没有管脚的器件是不是可行?比如说有一些logo,如果在PCB绘制或完成时进行放置,那又怕会忘记。如果说在原理图就能放置,那么导入PCB后就可以直接变成器件的形式,是否就能完美的从设计上解决这个忘记放置的问题? 因此做一个案…

走进低代码表单开发(一):可视化表单数据源设计

在前文,我们已对勤研低代码平台的报表功能做了详细介绍。接下来,让我们深入探究低代码开发中最为常用的表单设计功能。一个完整的应用是由众多表单组合而成的,所以高效的表单设计在开发过程中起着至关重要的作用。让我们一同了解勤研低代码开…

从“N 号房”看Deepfake乱象,如何证明“我”不是我?

从“N 号房”看Deepfake乱象,如何证明“我”不是我? “9张玛丽莲梦露的照片里,有2张是AIGC伪造的,你能看出来哪张是假的吗?” 这是出现在外滩大会AI创新赛全球Deepfake攻防挑战赛的表演赛上激动人心的一刻。9月6日下…

[SC]Windows VS2022下配置SystemC环境

Windows VS2022下配置SystemC环境 一、安装Visual Studio 2022 下载地址:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 进入Visual Studio Installer后选择“通用Windows平台开发”并勾选“可选”中的“通用Windows平台工具”。 二、下…

在Application中全局获取context

首先自定义一个application,继承Application,并在AndroidManifest.xml文件中配置它。 class TvApplication : Application() {companion object {Volatilevar context: Application? nullprivate setfun getContext(): Context {return context ?: t…

[笔记]电参数测量的现有方案[进行中...]

1.关键字: 电参数测量 Electrical Parameter Measurement 2.相关信息搜集 》》电参数测量仪是如何测量电压电流相位差的?对于变频器那种比较毛的波形,也能测量? 电参数测量仪测量电压电流相位差的方法主要依赖于其内部的高精度…

喜报!大模型助力产业升级,卓翼智能荣获科大讯飞AI开发者大赛冠军

8月9日,科大讯飞AI开发者大赛专场路演圆满落幕,这是一个面向全球开发者的人工智能竞赛平台。经过激烈角逐,《大模型助力下的航空航天产业转型升级赛道》最终有8支队伍进入决赛,专业评委从项目可行性、功能完备程度、创新性、商业价…

复仇时刻 华为的狙击还没结束

文|琥珀食酒社 作者 | 积溪 华为的复仇时刻已到啊 名场面即将再次上演 看过华为和苹果发布会的人 应该都有似曾相识的感觉 去年8月底 雷女士访华第二天 华为发布了Mate 60先锋计划 9月13日苹果发布iPhone 15 恰恰就在这天 华为咔嚓一下 又放出了大折叠屏…

用Python爬虫制作一个简易翻译器

我们通常是通过requestsBS4的方法来获取网页内容,这种方法导入模块较多,速度相对有点儿慢,此时我们可以用requests的post方法向指定服务器发送请求,获取数据后格式化为json,然后获取相关键值。这种方法用到了requests和…