Opencv学习笔记(十四)图像金字塔

文章目录

图像金字塔

图像金字塔:高斯金字塔和拉普拉斯金字塔。
高斯金字塔:在进行高斯卷积之后,删除图像的偶数行和偶数列,
因此一个MxN 的图像就变成了一个M/2xN/2 的图像。所以这幅图像的面积就变为原来图像面积的四分之一。连续进行这样
的操作我们就会得到一个分辨率不断下降的图像金字塔。我们可以使用函数cv2.pyrDown() 和cv2.pyrUp() 构建图像金字塔。
函数cv2.pyrDown() 从一个高分辨率大尺寸的图像向上构建一个金子塔
(尺寸变小,分辨率降低)。
函数cv2.pyrUp() 从一个低分辨率小尺寸的图像向下构建一个金子塔(尺寸变大,但分辨率不会增加)。
拉普拉斯金字塔可以有高斯金字塔计算得来,公式如下:
Li = Gi - pyrUp (G(i+1))

代码

需要注意的是:原始图像的尺寸应该缩放为2的次幂。

import cv2
import numpy as np

A = cv2.imread(r'F:\OPENCV\Opencv\dog.jfif', cv2.IMREAD_COLOR)
B = cv2.imread(r'F:\OPENCV\Opencv\dog.jfif', cv2.IMREAD_COLOR)
# A = cv2.resize(A, (512, 512), cv2.INTER_CUBIC)
# B = cv2.resize(B, (512, 512), cv2.INTER_CUBIC)
# generate Gaussian pyramid for A
G = A.copy()
gpA = [G]
for i in range(2):
    G = cv2.pyrDown(G)
    gpA.append(G)

# generate Laplacian pyramid for A
lpA = [gpA[2]]
for i in range(2, 0, -1):
    GE = cv2.pyrUp(gpA[i])
    L = cv2.subtract(gpA[i - 1], GE)
    lpA.append(L)

# generate Gaussian pyramid for B
G = B.copy()
gpB = [G]
for i in range(2):
    G = cv2.pyrDown(G)
    gpB.append(G)

# generate Laplacian pyramid for A
lpB = [gpB[2]]
for i in range(2, 0, -1):
    GE = cv2.pyrUp(gpB[i])
    L = cv2.subtract(gpB[i - 1], GE)
    lpB.append(L)

# now add left and right halves of images in each level
LS = []
for la, lb in zip(lpA, lpB):
    h, w, _ = la.shape
    ls = np.hstack((la[:, 0:w // 2], lb[:, w//2:w]))
    LS.append(ls)

# now reconstruct
ls_ = LS[0]
for i in range(1, 3):
    ls_ = cv2.pyrUp(ls_)
    ls_ = cv2.add(ls_, LS[i])
# image with direct connecting each half
real = np.hstack((A[:, 0:A.shape[1] // 2], B[:, B.shape[1] // 2:B.shape[1]]))

cv2.imshow('blending_img', ls_)
cv2.imshow('real', real)

cv2.waitKey()
cv2.destroyAllWindows()

结果显示
blending_img
在这里插入图片描述
real(与原始图像一样)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值