当前位置: 首页 > 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)
运行结果:

http://www.lryc.cn/news/437176.html

相关文章:

  • dirty pages , swapiness 查看SWAP占用进程
  • Spring Boot项目更改项目名称
  • Hive SQL基础语法及查询实践
  • k8s service如何实现流量转发
  • 每日一练:K个一组翻转链表
  • 昨晚,OpenAI震撼发布o1大模型!我们正式迈入了下一个时代。
  • MySql8.x---开窗函数
  • 图文讲解HarmonyOS应用发布流程
  • 【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)
  • 经典负载调制平衡放大器(LMBA)设计-从理论到ADS仿真
  • Web开发:基础Web开发的支持
  • 【LeetCode每日一题】——LCR 168.丑数
  • Day7 | Java框架 | SpringMVC
  • 【网络通信基础与实践第二讲】包括互联网概述、互联网发展的三个阶段、互联网的组成、计算机网络的体系结构
  • CentOS7下安装Ruby3.2.4的实施路径
  • Redis 实现原理或机制
  • 使用程序方式获取与处理MySQL表数据
  • 计算机网络(五) —— 自定义协议简单网络程序
  • 开源模型应用落地-qwen2-7b-instruct-LoRA微调-unsloth(让微调起飞)-单机单卡-V100(十七)
  • [数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别
  • Delphi 的 RSA 库 LockBox
  • element UI学习使用(1)
  • 如何搞定日语翻译?试试这四款工具
  • 【STM32】独立看门狗(IWDG)原理详解及编程实践(上)
  • 前端框架大观:探索现代Web开发的基石
  • 16 训练自己语言模型
  • udp网络通信 socket
  • LG AI研究开源EXAONE 3.0:一个7.8B双语语言模型,擅长英语和韩语,在实际应用和复杂推理中表现出色
  • 【mysql】mysql之主从部署以及介绍
  • Invoke-Maldaptive:一款针对LDAP SearchFilter的安全分析工具