《深度学习》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)代码实现
python 复制代码
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)代码实现
python 复制代码
# 上采样
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)代码实现

(需要衔接上述代码)

python 复制代码
# #  拉普拉斯金字塔
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)
运行结果:
相关推荐
个入资料28 分钟前
阿里云ecs+飞书搭建openclaw
人工智能
CoovallyAIHub39 分钟前
OpenClaw一脚踩碎传统CV?机器终于不再只是看世界
深度学习·算法·计算机视觉
CoovallyAIHub1 小时前
仅凭单目相机实现3D锥桶定位?UNet-RKNet破解自动驾驶锥桶检测难题
深度学习·算法·计算机视觉
孤烟1 小时前
【RAG 实战系列 02】检索精度翻倍!混合检索(稀疏 + 稠密)实战教程
人工智能·llm
明明如月学长2 小时前
OpenClaw 帮我睡后全自动完成了老板交代的任务
人工智能
uuware2 小时前
Lupine.Press + AI 助您分分钟搞定技术项目的文档网站
人工智能·前端框架
海上日出2 小时前
使用 QuantStats 进行投资组合绩效分析:Python 量化实战指南
人工智能
Qinana2 小时前
150行代码搞定私有知识库!Node.js + LangChain 打造最小化 RAG 系统全流程
人工智能·程序员·node.js
猿猿长成记2 小时前
AI专栏 | AI大法则之思维链、自洽性、思维树
人工智能
用户5191495848452 小时前
CrushFTP 条件竞争认证绕过漏洞利用工具 (CVE-2025-54309)
人工智能·aigc