opencv基础46-图像金字塔02-拉普拉斯金字塔

这篇具有很好参考价值的文章主要介绍了opencv基础46-图像金字塔02-拉普拉斯金字塔。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

前面我们已经介绍过,一幅图像在经过向下采样后,再对其进行向上采样,是无法恢复为原始状态的。对此,我们也用程序进行了验证。向上采样并不是向下采样的逆运算。这是很明显的,因为向下采样时在使用高斯滤波器处理后还要抛弃偶数行和偶数列,不可避免地要丢失一些信息。

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

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

Li = Gi - pyrUp(Gi + 1)

式中:

  • Li表示拉普拉斯金字塔中的第 i 层。
  • Gi表示高斯金字塔中的第 i 层。

拉普拉斯金字塔中的第 i 层,等于“高斯金字塔中的第 i 层”与“高斯金字塔中的第 i+1 层的向上采样结果”之差。图 11-11 展示了高斯金字塔和拉普拉斯金字塔的对应关系。

opencv基础46-图像金字塔02-拉普拉斯金字塔,opencv,计算机视觉,人工智能,opencv,人工智能,计算机视觉,python

代码示例:使用函数 cv2.pyrDown()和 cv2.pyrUp()构造拉普拉斯金字塔。


import cv2
O=cv2.imread("lena.png")
G0=O
G1=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)
print("L0.shape=",L0.shape)
print("L1.shape=",L1.shape)
print("L2.shape=",L2.shape)
cv2.imshow("L0",L0)
cv2.imshow("L1",L1)
cv2.imshow("L2",L2)
cv2.waitKey()
cv2.destroyAllWindows()

程序运行后,会输出如下运行结果:

L0.shape= (512, 512, 3)
L1.shape= (256, 256, 3)
L2.shape= (128, 128, 3)

opencv基础46-图像金字塔02-拉普拉斯金字塔,opencv,计算机视觉,人工智能,opencv,人工智能,计算机视觉,python
1 中图是通过语句“L0=G0-cv2.pyrUp(G1)”,用“原始图像 G0”减去“图像 G1 的向上
采样结果”,得到的拉普拉斯金字塔的第 0 层 L0。
右边图是通过语句“L1=G1-cv2.pyrUp(G2)”,用“图像 G1”减去“图像 G2 的向上采样
结果”,得到的拉普拉斯金字塔的第 1 层 L1。
左边小图是通过语句“L2=G2-cv2.pyrUp(G3)”,用“图像 G2”减去“图像 G3 的向上采样
结果”,得到的拉普拉斯金字塔的第 2 层 L2。

如何恢复原图?

拉普拉斯金字塔的作用在于,能够恢复高分辨率的图像。图 11-13 演示了如何通过拉普拉斯金字塔恢复高分辨率图像。其中,右图是对左图的简化。

opencv基础46-图像金字塔02-拉普拉斯金字塔,opencv,计算机视觉,人工智能,opencv,人工智能,计算机视觉,python

图 11-13 中的各个标记的含义如下:

  1. G0、G1、G2、G3分别是高斯金字塔的第 0 层、第 1 层、第 2 层、第 3 层。
  2. L0、L1、L2分别是拉普拉斯金字塔的第 0 层、第 1 层、第 2 层。
  3. 向下的箭头表示向下采样操作(对应 cv2.pyrDown()函数)。
  4. 向右上方的箭头表示向上采样操作(对应 cv2.pyrUp()函数)。
  5. 加号“+”表示加法操作。
  6. 减号“-”表示减法操作。

在图 11-13 中,描述的操作及关系有:

  1. 向下采样(高斯金字塔的构成)
G1=cv2.pyrDown(G0)
G2=cv2.pyrDown(G1)
G3=cv2.pyrDown(G2)
  1. 拉普拉斯金字塔
L0=G0-cv2.pyrUp(G1)
L1=G1-cv2.pyrUp(G2)
L2=G2-cv2.pyrUp(G3)
  1. 向上采样恢复高分辨率图像
G0=L0+cv2.pyrUp(G1)
G1=L1+cv2.pyrUp(G2)
G2=L2+cv2.pyrUp(G3)

上述关系是通过数学运算推导得到的。例如,已知L0=G0cv2.pyrUp(G1),将表达式右侧的 cv2.pyrUp(G1)移到左侧,就得到了表达式 G0=L0+cv2.pyrUp(G1)。除此之外,G1 和 G2 都可以通过拉普拉斯金字塔的构造表达式得到。在前面已经介绍过了,构造拉普拉斯金字塔的目的就是为了恢复高分辨率的图像。

代码示例:

import cv2
import numpy as np
O=cv2.imread("lena.png")
#==============生成高斯金字塔===================
G0=O
G1=cv2.pyrDown(G0)
G2=cv2.pyrDown(G1)
G3=cv2.pyrDown(G2)
#============生成拉普拉斯金字塔===================
L0=G0-cv2.pyrUp(G1) #拉普拉斯金字塔第 0 层
L1=G1-cv2.pyrUp(G2) #拉普拉斯金字塔第 1 层
L2=G2-cv2.pyrUp(G3) #拉普拉斯金字塔第 2 层
#=================复原 G0======================
RG0=L0+cv2.pyrUp(G1) #通过拉普拉斯图像复原的原始图像 G0


cv2.imshow("L0",L0)
cv2.imshow("L1",L1)
cv2.imshow("L2",L2)
cv2.imshow("RG0",RG0)
cv2.waitKey()
cv2.destroyAllWindows()

opencv基础46-图像金字塔02-拉普拉斯金字塔,opencv,计算机视觉,人工智能,opencv,人工智能,计算机视觉,python文章来源地址https://www.toymoban.com/news/detail-642357.html

到了这里,关于opencv基础46-图像金字塔02-拉普拉斯金字塔的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 拉普拉斯金字塔在多图HDR算法中的应用以及多曝光图像的融合算法简介。

          在SSE图像算法优化系列二十九:基础的拉普拉斯金字塔融合用于改善图像增强中易出现的过增强问题(一) 一文中我们曾经描述过基于几种高频融合法则的拉普拉斯金字塔融合算法,那里是主要针对2副图像的。实际的应用中,我们可能会遇到多帧图像的融合过程(图

    2024年02月08日
    浏览(34)
  • OpenCV基础补充自适应阈值及图像金字塔

    对于OpenCV知识点还有很多,基础的大家可以参考前面几节。 OpenCv基础之绘图及几何变换实例 OpenCV基础操作之图像的形态学运算 OpenCV基础操作之边界填充、图像阈值以及图像平滑处理 OpenCV基础之边缘检测与轮廓描绘 OpenCV基础之模板匹配与直方图 OpenCV图像处理之傅里叶变换

    2024年02月02日
    浏览(25)
  • OpenCv之图像金字塔

    目录 一、图像金字塔介绍  二、高斯金字塔 三、拉普拉斯金字塔 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说,图像金字塔是同一图像不同分辨率的子图集合。 图像金字塔的作用: 图像金

    2024年02月12日
    浏览(25)
  • OpenCV 11(图像金字塔)

    **图像金字塔**是图像中 多尺度表达 的一种 ,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说, 图像金字塔是同一图像不同分辨率的子图集合. 图像金字塔最初用于机器视觉和图像压缩。其通过梯次向下采样获得,直到达到某个终止

    2024年02月09日
    浏览(26)
  • OpenCV(十六):高斯图像金字塔

    目录 1.高斯图像金字塔原理 2.高斯图像金字塔实现 1.高斯图像金字塔原理 高斯图像金字塔是一种用于多尺度图像表示和处理的重要技术。它通过对图像进行多次高斯模糊和下采样操作来生成不同分辨率的图像层级,每个层级都是原始图像的模糊和降采样版本。 以下是高斯图

    2024年02月09日
    浏览(26)
  • 【OpenCV】第十一章: 图像金字塔

    第十一章: 图像金字塔 一、什么是图像金字塔¶ 同一张图片不同分辨率的子图的集合。 图像金字塔底部是待处理的高分辨率图像,也就是原始图像,顶部是低分辨率的近似图像。一般情况下,都是每向上移动一级,图像的宽和高都降低为原来的1/2 。 二、为什么要生成图像金

    2024年02月03日
    浏览(36)
  • Python Opencv实践 - 图像金字塔

     

    2024年02月12日
    浏览(22)
  • 【OpenCV实现平滑图像金字塔,轮廓:入门】

    文章内容的概要: 平滑图像金字塔: 轮廓: 使用图像金字塔去创造一个新的水果,“橘果(Orapple)” 函数:cv.pyrUp(), cv.pyrDown() 通常,我们处理图像时使用的是固定分辨率。然而,在某些情况下,我们需要在不同的分辨率下处理同一张图像。例如,在搜索图像中的某些内容(

    2024年02月08日
    浏览(31)
  • OpenCV图像金字塔pyrDown下采样

    2024年02月13日
    浏览(27)
  • OpenCV官方教程中文版 —— 图像金字塔

    • 学习图像金字塔 • 使用图像创建一个新水果:“橘子苹果” • 将要学习的函数有:cv2.pyrUp(),cv2.pyrDown()。 一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包