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

12. 图像金字塔

一、什么是图像金字塔

  图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合。该组图像是由单个图像通过不断地降采样所产生的,最小的图像可能仅仅由一个像素点。通常情况下,图像剪子他的底部是待处理的高分辨率图像(原始图像),而顶部则为其低分辨率的近似图像。向金字塔的顶部移动时,图像的尺寸和分辨率都不断地降低。通常情况下,每向上移动一级,图像的宽和高都降低为原来的二分之一。

  我们可以在终端中使用 pip 安装 OpenCV 模块。默认是从国外的主站上下载,因此,我们可能会遇到网络不好的情况导致下载失败。我们可以在 pip 指令后通过 -i 指定国内镜像源下载

pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple

  国内常用的 pip 下载源列表:

  • 阿里云 https://mirrors.aliyun.com/pypi/simple
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple
  • 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
  • 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple

二、高斯金字塔

  最简单的图像金字塔可以通过不断地删除图像的偶数行和偶数列得到。例如,有一幅图像,其大小为 N x N,删除其偶数行和偶数列得到一幅 (N / 2) X (N / 2) 大小的图像。经过上述处理后,图像大小变为原来的四分之一,不断地重复该过程,就可以得到该图像的图像金字塔。

  上述处理方式比较简单,操作起来比较方便。但是,在不断删除行和列的过程中,会丢失大量的信息。因此,也可以先对原始图像滤波,得到原始图像的近似图像,然后在将近似图像的偶数行和偶数列删除,以获取向下采样的结果。删除行列前先对图像滤波,一方面能够有效地去噪,另一方面能够让每个像素点都包含了临近点地像素信息,可以让图像在删除过程中尽量地减少信息损耗。

  如果我们采用不同类型的滤波器,就可以产生不同类型的金字塔:

  • 邻域滤波器:采用邻域平均技术求原始图像的近似图像,该滤波器能够产生 平均金字塔
  • 高斯滤波器:采用高斯滤波器对原始图像进行滤波,得到 高斯金字塔

  在 OpenCV 中,我们可以使用 cv2.pyrDown() 函数实现图像高斯金字塔操作中的 向下采样

cv2.pyrDown(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., dstsize: cv2.typing.Size = ..., borderType: int = ...) -> cv2.typing.MatLike: ...

  其中,参数 src要采样的图像。参数 dst采样后的图像。参数 dstsize目标图像的大小。参数 borderType边界类型,默认值为 cv2.BORDER_DEFAULT,且只支持 cv2.BORDER_DEFAULT

   cv2.pyrDown() 函数首先对原始图像进行高斯滤波变换,以获取原始图像的近似图像。在获取近似图像后,该函数通过抛弃偶数行和偶数列来显示向下采样。经过向下采样后,图像的行和宽的数量都会变为原来的二分之一,图像整体的大小会变为原来的四分之一。

import sys
import cv2if __name__ == '__main__':src = cv2.imread("assets/images/1.jpg")if src is None:print("加载图片失败")sys.exit(0)dst = cv2.pyrDown(src)cv2.imshow("src", src)cv2.imshow("dst", dst)cv2.waitKey(0)cv2.destroyAllWindows()sys.exit(0)

  对图像向上采样时,在每个像素的右侧、下方分别插入零值列和零值行,得到一个偶数行、偶数列(即新增的行、列)都是零值的新图像。接下来,用高斯滤波器对新图像进行滤,得到向上采样的结果图像。为了确保像素值区间在向上采样与原始图像保持一致,需要将高斯滤波器的系数乘以 4。

  在 OpenCV 中,我们可以使用 cv2.pyrUp() 函数实现图像高斯金字塔操作中的 向上采样

cv2.pyrUp(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., dstsize: cv2.typing.Size = ..., borderType: int = ...) -> cv2.typing.MatLike: ...

  其中,参数 src要采样的图像。参数 dst采样后的图像。参数 dstsize目标图像的大小。参数 borderType边界类型,默认值为 cv2.BORDER_DEFAULT,且只支持 cv2.BORDER_DEFAULT

import sys
import cv2if __name__ == '__main__':src = cv2.imread("assets/images/1.jpg")if src is None:print("加载图片失败")sys.exit(0)dst = cv2.pyrUp(src)cv2.imshow("src", src)cv2.imshow("dst", dst)cv2.waitKey(0)cv2.destroyAllWindows()sys.exit(0)

  图像在向上采样后,整体尺寸变为原来的 4 倍,在向下采样后,整体尺寸变为原来的四分之一。一幅图像在先后经过向下采样和向上采用后,会恢复为原始大小。但在向下采样的过程中,会丢弃偶数行和偶数列,存在信息的丢失。因此,虽然一幅图像在先后经过向下采样、向上采样后,会恢复为原始大小,但得到的结果图像与原始图像像素值并不是一致的。

三、拉普拉斯金字塔

  高斯金字塔是通过对一幅图像一系列的向下采用所产生的。有时,我们希望通过对金字塔中的小图像进行向上采样以获取完整的大尺寸高分辨率图像,这时就需要用拉普拉斯金字塔。

  一幅图像在经过向下采样后,再对其进行向上采样,是无法恢复为原始状态的。这时因为向上采样不是向下采样的逆运算。因为向下采样时,在使用高斯滤波器处理后还需要抛弃偶数行和偶数列,不可避免丢失一些信息。为了在向上采样时能够恢复具有较高分辨率的原始图像,就要获取在采样过程中所丢失的信息,这些信息就构成了 拉普拉斯金字塔

  拉普拉斯金字塔的定义形式如下:

\[L_{i} = G_{i} - pyrUp(G_{i + 1}) \]

import sys
import cv2if __name__ == '__main__':src = cv2.imread("assets/images/1.jpg")if src is None:print("加载图片失败")sys.exit(0)# 高斯金字塔G0 = srcG1 = cv2.pyrDown(G0)G2 = cv2.pyrDown(G1)G3 = cv2.pyrDown(G2)# 拉普拉斯金字塔L0 = G0 - cv2.pyrUp(G1)L1 = G1 - cv2.pyrUp(G2)L2 = G2 - cv2.pyrUp(G3)# 重建图像R0 = L0 + cv2.pyrUp(G1)R1 = L1 + cv2.pyrUp(G2)R2 = L2 + cv2.pyrUp(G3)cv2.imshow("R0", R0)cv2.imshow("R1", R1)cv2.imshow("R2", R2)cv2.waitKey(0)cv2.destroyAllWindows()sys.exit(0)

拉普拉斯金字塔的第 i 层,等于高斯金字塔的第 i 层与高斯金字塔的第 i + 1 层的向上采样结果之差。

http://www.jsqmd.com/news/183649/

相关文章:

  • HTML5 MathML:深入解析数学标记语言在HTML5中的应用
  • 深度学习计算机毕设之机器学习 基于ISIC数据集的皮肤病黑色素瘤分类研究与实现
  • JSON格式混乱怎么办,一文解决Python中所有美化难题
  • JSON格式混乱怎么办,一文解决Python中所有美化难题
  • UID和UUID分别是什么?盘点生成UID的n种技巧
  • MCP Registry v1.4.0 最新进展
  • 【课程设计/毕业设计】基于深度学习的二手车价格预测及应用实现
  • Ruby 类和对象
  • 【课程设计/毕业设计】基于深度学习的二手车价格预测及应用实现
  • 深度学习毕设项目推荐-基于人工智能 ISIC数据集的皮肤病黑色素瘤分类研究与实现
  • 2026.1.2日22:31-prodigal浪费的
  • SQL优化实战:从索引策略到查询性能飙升的终极指南
  • 【课程设计/毕业设计】基于人工智能的肝病患者智能诊断及系统实现
  • 深度学习毕设项目:基于深度学习+机器学习的二手车价格预测及应用实现
  • 深入理解IAsyncEnumerable:.NET中的异步迭代利器 - 教程
  • 一个独立开发者的年终坦白:我的软件,全是“缺点”
  • 从贝叶斯视角解读Transformer的内部几何:mHC的流形约束与大模型训练稳定性
  • 深度学习计算机毕设之基于人工智能+机器学习的二手车价格预测及应用实现
  • 别藏了!你的缺点,才是打造个人IP最硬的通货
  • 【闲话】2025.12.26 记梦
  • 计算机深度学习毕设实战-基于人工智能的二手车价格预测及应用实现
  • 1.2日笔记
  • 2025自考必备10个降AIGC工具推荐
  • WebForms XML 文件详解
  • 从0到1搭建基于YOLOv11的宠物检测系统
  • 很多人不会论文降AI率,这篇把论文降AI率讲清楚了
  • HTML 插件:构建网页的强大工具
  • 【毕业设计】基于机器学习 卷积神经网络图像风格迁移系统的设计与实现(flask系统)
  • 深度测评10个AI论文平台,本科生轻松搞定毕业论文!
  • 【课程设计/毕业设计】基于深度学习图像风格迁移系统的设计与实现(flask系统)