opencv图像金字塔(pyramids)

本文介绍了图像金字塔的概念,包括高斯金字塔和拉普拉斯金字塔,并详细讲述了OpenCV中的`cv2.pyrUp()`和`cv2.pyrDown()`函数的使用。还通过实例演示了如何使用图像金字塔进行图像融合,涉及到图像的拉普拉斯金字塔构建以及最终的图像重建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:
目的:

  • 了解图像金字塔
  • 使用金字塔来进行图像融合
  • 学习函数:cv2.pyrUp(),cv2.pyrDown( )

分辨率:单位英尺内,像素的个数。

image pyramids原理


两种金字塔:高斯金字塔,拉普拉斯金字塔。

  • 高斯金字塔
    高层的图像是通过低层的图像去除行列形成的。高层的每一个元素由低层的5个像素加权生成。由MN的图像变为M/2N/2图像。所以面积变为原来的四分之一,扩展时,则面积增大为原来的四倍。
    cv2.pyrUp()变大
    cv…pyrDown( ) 变小
  • Laplacian Pyramids
    由高斯金字塔形成,它没有唯一的函数。其金字塔图像都是边缘图像,大多数的像素值为0,通常用于图片压缩。拉普拉斯的层是由高斯金字塔和其扩展图像的层之间的差值形成的。

OpenCV函数使用


cv2.pyrUp(src[, dst[, dstsize[, borderType]]]) →\rightarrowdst

  • src – input image.
  • dst – output image. It has the specified size and the same type as src .
  • dstsize – size of the output image; by default, it is computed as Size(src.cols2,(src.rows2), but in any case, the following conditions should be satisfied:
    jdstsize.width - src:cols ∗ 2j ≤ (dstsize.width mod 2)
    jdstsize.height - src:rows ∗ 2j ≤ (dstsize.height mod 2)

金字塔图片融合

  • 加载苹果和橘子的图片
  • 得到两张图片的高斯金字塔
  • 从高斯金字塔中得到拉普拉斯金字塔
  • 使得苹果的每一层的拉普拉斯金字塔在左边,橘子的拉普拉斯金字塔在右边,组合起来。
  • 从最终的联合的金字塔图像中重建出原始图像。(取最顶层(最小的)的两边的图片进行连接,然后扩展,cv2.pyrUp(),再与同层的拉普拉斯图像相加,不断迭代这个过程。)
    在这里插入图片描述

用到的函数是np.hsatck():堆积数组在水平方向。除了一维数组沿着第一个轴连接,其他的都相当于沿着第二个轴连接,例如3*1的矩阵hstack变为3*2。它对应的就是np.vstack(),在竖直方向堆积数组(也就是第一个轴)比如3*1的矩阵连接变为6*1还有np.dstack(),堆积数组沿着第三个轴进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值