数字图像处理_08.2_(高斯图像金字塔,Laplacian图像金字塔)

Laplacian图像金字塔的实现方法是:某层图像减去下一级上采样后的图像
L i = S i − P y u p ( S i + 1 ) L_i=S_i-Pyup(S_{i+1}) Li=SiPyup(Si+1)
这里以图像融合例子对图像金字塔进行学习。

两张图片分别记为图片 A 0 A_0 A0 B 0 B_0 B0
1.对 A 0 A_0 A0下采样,依次得到不同大小的下采样图片 A 1 A_1 A1 A 2 A_2 A2,……, A n A_n An
2.有1中的图片,获得图片 A A A的Laplacian金字塔图片 L A 0 LA_0 LA0 L A 1 LA_1 LA1,……, L A n − 1 LA_{n-1} LAn1,另外图片 L A n LA_n LAn即为 A n A_n An
3.对图片 B B B,如上操作,获得 L B 0 LB_0 LB0 L B 1 LB_1 LB1,……, L B n LB_n LBn
4.依次取 L A i LA_i LAi的左半部分和 L B i LB_i LBi的右半部分,进行组合,得到 L 0 L_0 L0,……, L n L_n Ln
5.对 L L L图片,从后往前重建图像,即取 L n L_n Ln,上采样后加上 L n − 1 L_{n-1} Ln1,循环往前,最终完成图像重建。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具体代码实现:
初始化:分别获取苹果和橘子的图像保存在AB两个list中,令金字塔层数n为5。

apple=cv.imread('pic/apple.jpg')
orange=cv.imread('pic/orange.jpg')
#apple=np.ones((3,3),dtype=np.uint8)
A=[apple]
B=[orange]

LA,LB,L=[],[],[]
n=5

循环取样获取各层图像
(这里的A[-1]是A列表中的倒数第一个)

for i in range(1,n+1):
    A.append(cv.pyrDown(A[-1]))
    B.append(cv.pyrDown(B[-1]))

有1中的图片,获得图片 A A A的Laplacian金字塔图片 L A 0 LA_0 LA0 L A 1 LA_1 LA1,……, L A n − 1 LA_{n-1} LAn1,另外图片 L A n LA_n LAn即为 A n A_n An。对图片 B B B,如上操作,获得 L B 0 LB_0 LB0 L B 1 LB_1 LB1,……, L B n LB_n LBn

    
for i in range(n):
    LA.append(cv.subtract(A[i],cv.pyrUp(A[i+1])))
    LB.append(cv.subtract(B[i],cv.pyrUp(B[i+1])))    
LA.append(A[n])
LB.append(B[n])  

依次取 L A i LA_i LAi的左半部分和 L B i LB_i LBi的右半部分,进行组合,得到 L 0 L_0 L0,……, L n L_n Ln。对 L L L图片,从后往前重建图像,即取 L n L_n Ln,上采样后加上 L n − 1 L_{n-1} Ln1,循环往前,最终完成图像重建。

for la,lb in zip(LA,LB):
    h,w,c=la.shape
    L.append(np.hstack([la[:,:w//2], lb[:,w//2:]]))
B=L[n]
for i in range(n,0,-1):
    B=cv.add(cv.pyrUp(B),L[i-1])
    cv.imwrite('test/orapple'+str(i)+'.jpg',B)
    show(B)

得到如下各层融合图片金字塔:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值