随手练:OpenCV学习笔记(八)——图像金字塔

高斯金字塔

 

dst = cv2.pyrDown( src[, dstsize[, borderType]] )

dst 为目标图像。
src 为原始图像。
dstsize 为目标图像的大小。
borderType 为边界类型, 默认值为BORDER_DEFAULT ,且这里仅支持BORDER_DEFAULT。
采样步骤为:

对原始图像进行高斯滤波变换,将图像与高斯内核卷积。

 

import cv2
o=cv2.imread("lena.bmp")
down=cv2.pyrDown(o)
up=cv2.pyrUp(down)
diff=up-o #构造diff 图像,查看up 与o 的区别
print("o.shape=",o.shape)
print("up.shape=",up.shape)
cv2.imshow("original",o)
cv2.imshow("up",up)
cv2.imshow("difference",diff)
cv2.waitKey()
cv2.destroyAllWindows()

运行程序,会显示如下输出:
o.shape= (512, 512, 3)
up.shape= (512, 512, 3)
 

 拉普拉斯金字塔

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

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

import cv2
import numpy as np
O=cv2.imread("lena.bmp")
#==============生成高斯金字塔===================
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
print("G0.shape=",G0.shape)
print("RG0.shape=",RG0.shape)
result=RG0-G0 #将RG0 和G0 相减
#计算result 的绝对值,避免求和时负负为正,3+(-3)=0
result=abs(result)
#计算result 所有元素的和
print("原始图像G0 与恢复图像RG0 差值的绝对值和:",np.sum(result))
#=================复原G1======================
RG1=L1+cv2.pyrUp(G2) #通过拉普拉斯图像复原G1
print("G1.shape=",G1.shape)
print("RG1.shape=",RG1.shape)
result=RG1-G1 #将RG1 和G1 相减
print("原始图像G1 与恢复图像RG1 之差的绝对值和:",np.sum(abs(result)))
#=================复原G2======================
RG2=L2+cv2.pyrUp(G3) #通过拉普拉斯图像复原G2
print("G2.shape=",G2.shape)
print("RG2.shape=",RG2.shape)
result=RG2-G2 #将RG2 和G2 相减
print("原始图像G2 与恢复图像RG2 之差的绝对值和:",np.sum(abs(result)))

程序运行后,会输出如下运行结果:
G0.shape= (512, 512, 3)
RG0.shape= (512, 512, 3)
原始图像 G0 与恢复图像RG0 之差的绝对值和:0
G1.shape= (256, 256, 3)
RG1.shape= (256, 256, 3)
原始图像 G1 与恢复图像RG1 之差的绝对值和:0
G2.shape= (128, 128, 3)
RG2.shape= (128, 128, 3)
原始图像 G2 与恢复图像RG2 之差的绝对值和:0

 我自己运行的时候想imshow拉普拉斯金字塔,但是由于数组维度问题不能展示图片,后续会修改

————————————————

转载:
CSDN博主「卡卡南安」的原创文章
原文链接:https://blog.csdn.net/cyj972628089/article/details/121692183

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值