OpenCV-Python官方教程-12-图像金字塔以及图像融合

  • 高斯金字塔
    高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的。顶部图像中的每个像素值等于下一层图像中5 个像素的高斯加权平均值。这样操作一次一个 M x N 的图像就变成了一个 M/2 x N/2 的图像。所以这幅图像的面积就变为原来图像面积的四分之一。这被称为Octave。连续进行这样的操作我们就会得到一个分辨率不断下降的图像金字塔。
import cv2
img = cv2.imread('x.png')
lower_reso = cv2.pyrDown(img)
higer_reso2 = cv2.pyrUp(lower_reso)
#show
cv2.imshow('src',img)
cv2.imshow('l',lower_reso)
cv2.imshow('h',higer_reso2)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

  • 拉普拉斯金字塔
  • 使用金字塔进行图像融合
    图像金字塔的一个应用是图像融合。例如,在图像缝合中,你需要将两幅图叠在一起,但是由于连接区域图像像素的不连续性,整幅图的效果看起来会很差。这时图像金字塔就可以排上用场了,他可以帮你实现无缝连接。这里的一个经典案例就是将两个水果融合成一个,看看下图也许你就明白我在讲什么了。
import cv2 as cv
import numpy as np
#需要把原图像rsize成2**n分辨率的图像
A = cv2.imread('apple.jpg')
A = cv2.resize(A,(256,256))
B = cv2.imread('orange.jpg')
B = cv2.resize(B,(256,256))
#生成A的高斯金字塔
G = A.copy()
gpA = [G]
for i in range(6):
    G = cv.pyrDown(G)
    gpA.append(G)
#生成B的高斯金字塔
G = B.copy()
gpB = [G]
for i in range(6):
    G = cv.pyrDown(G)
    gpB.append(G)
#生成A的拉普拉斯金字塔
lpA = [gpA[5]]
for i in range(5, 0, -1):
    GE = cv.pyrUp(gpA[i])
#    print(GE.shape)
#   print(gpA[i-1].shape)
    L = cv.subtract(gpA[i-1], GE)  #两个图像相减
    lpA.append(L)
#生成B的拉普拉斯金字塔
lpB = [gpB[5]]
for i in range(5, 0, -1):
    GE = cv.pyrUp(gpB[i])
    L = cv.subtract(gpB[i-1], GE)
    lpB.append(L)
#现在在每个级别中添加左右两半图像
LS = []
for la, lb in zip(lpA, lpB):
    rows, cols, dpt = la.shape
    #图像拼接
    ls = np.hstack((la[:, 0:int(cols/2)], lb[:, int(cols/2):]))
    LS.append(ls)
#现在重建
ls_ = LS[0]
for i in range(1, 6):
    ls_ = cv.pyrUp(ls_)
    ls_ = cv.add(ls_, LS[i])
#图像与直接连接的每一半
real1 = np.hstack((A, B))
real = np.hstack((A[:, 0:int(cols/2)], B[:, int(cols/2):]))
cv.imshow('real1', real1)
cv.imshow('real', real)
cv.imshow('ls_', ls_)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述


参考链接:https://www.pythonf.cn/read/131932

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值