国外美容院网站,网页游戏排行榜 2020,手机站点,简易的在线数据库网站模板OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】189.基于掩模的拉普拉斯金字塔图像融合 图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步降低的图像集合。从底层图像可以看清更多细节#xff0c;从顶层图像可以看到更多的轮廓特征…OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】189.基于掩模的拉普拉斯金字塔图像融合 图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步降低的图像集合。从底层图像可以看清更多细节从顶层图像可以看到更多的轮廓特征。
在计算高斯金字塔时不断进行高斯滤波和下采样丢失了高频信息。为了描述这些高频信息将通过原图像减去先缩小后放大的图像的一系列差分图像定义为拉普拉斯金字塔Laplacian Pyramid。 6.3 基于拉普拉斯金字塔的图像融合
图像融合的目的就是使两幅图像的重叠区域过渡自然且平滑。
拉普拉斯金字塔将源图像分解到不同的频带越高频的图像信息越到上层。在相同显示尺寸下比较不同分辨率的拉普拉斯图像可以发现不同尺度下关注的细节是不同的低分辨率下关注的是较大尺度的基本纹理而高分辨率下关注的是更精细的纹理。
金字塔图像融合过程是在不同尺度、不同空间分辨率和不同分解层上分别进行的也称为多波段融合Multi-band Blending。多波段融合的思想是先对多幅图像分别构建拉普拉斯金字塔然后对同一层图像相同频段按一定规则融合对融合后的图像金字塔重建得到融合图像。 在上一个例程的基础上通过掩模图像 mask 实现图像融合将前景图像叠加到背景图像的指定位置通过拉普拉斯金字塔在不同频段层次上进行图像融合。
简单地融合区域中的像素值采用前景图像和背景的掩模加法计算 P(i,j)ωPA(i,j)(1−ω)PB(i,j)P(i,j) \omega P_A(i,j) (1-\omega) P_B(i,j) P(i,j)ωPA(i,j)(1−ω)PB(i,j)
ω\omegaω 为掩模图像前景区域为黑色遮罩(1−ω)(1-\omega)(1−ω)为逆遮罩前景区域白色开窗其它区域黑色。
算法原理
1读取背景图像和前景图像指定叠加位置将前景图像调整到指定的大小。 2生成掩模图像 mask标识叠加前景的位置。 3建立背景图像和前景图像的高斯金字塔和拉普拉斯金字塔。 4基于掩模图像将顶层高斯金字塔、各层拉普拉斯金字塔的背景和前景图像分别进行加权融合。 5从顶层的高斯金字塔融合图像开始重建融合图像与各层拉普拉斯金字塔融合图像相加得到重建的各层高斯金字塔融合图像直到底层高斯金字塔融合图像 G0 即为重建的结果。 例程1.89 基于掩模的拉普拉斯金字塔图像融合
。 # 1.89基于掩模的金字塔图像融合img1 cv2.imread(../images/seaside02.png) # 背景图像img2 cv2.imread(../images/seagull02.png) # 添加的前景图像xmin, ymin, w, h 256, 64, 200, 200 # 矩形 ROI 位置: (ymin:yminh, xmin:xminw)levels 5# 调整尺寸将背景图片调整到 power(2,levels) 的整数倍imgBack cv2.resize(img1, (512, 512), interpolationcv2.INTER_CUBIC)# h round(w * img2.shape[0]/img2.shape[1]) # 调整 ROI 尺寸与前景图像尺寸匹配front cv2.resize(img2, (w50, h50)) # 将前景图像调整到指定大小 (w,h)imgFront np.zeros(imgBack.shape, dtypenp.uint8) # 与 imgback 尺寸相同的黑色图像imgFront[ymin-25:yminh25, xmin-25:xminw25] frontmask0 np.ones((imgBack.shape[:2]), dtypenp.uint8) # 返回与图像 imgback 尺寸相同的全1数组mask0[ymin:yminh, xmin:xminw] 0 # 掩模图像ROI 为黑色bg cv2.bitwise_and(imgBack, imgBack, maskmask0) # 生成背景mask 遮罩区域黑色fg cv2.bitwise_and(imgFront, imgFront, mask1-mask0) # 生成前景前景以外区域黑色stack cv2.add(bg, fg) # 直接合成前景与背景# 图像向下取样, 构造高斯金字塔: [原图下取样1次下取样2次下取样3次下取样4次]gaussPyrB, gaussPyrF, maskLPyr [imgBack], [imgFront], [mask0]for i in range(1, levels): # 计算第 i 层高斯金字塔gaussPyrB.append(cv2.pyrDown(gaussPyrB[i-1]))gaussPyrF.append(cv2.pyrDown(gaussPyrF[i-1]))maskLPyr.append(cv2.resize(maskLPyr[i-1], dsizeNone, fx0.5, fy0.5))# 图像向上取样, 构造拉普拉斯金字塔 [第1层残差第2层残差第3层残差第4层残差]lapPyrB, lapPyrF [], [] # 从最顶层开始恢复for i in range(levels-1): # 拉普拉斯金字塔有 4 层: 0,1,2,3lapB gaussPyrB[i] - cv2.pyrUp(gaussPyrB[i1]) # 残差lapPyrB.append(lapB)lapF gaussPyrF[i] - cv2.pyrUp(gaussPyrF[i1]) # 残差lapPyrF.append(lapF)# 基于掩模图像的拉普拉斯加权融合lapFusion []for i in range(levels-1): # 拉普拉斯金字塔共 4 层: 0,1,2,3mask maskLPyr[i] # 当前分辨率的掩模遮罩前景区域黑色遮罩maskInv 1 - mask # 生成逆遮罩前景区域白色开窗前景以外区域黑色bg cv2.bitwise_and(lapPyrB[i], lapPyrB[i], maskmask) # 生成背景mask 遮罩区域黑色fg cv2.bitwise_and(lapPyrF[i], lapPyrF[i], maskmaskInv) # 生成前景前景以外区域黑色lapStack cv2.add(bg, fg) # 前景与背景合成得到当前分辨率的拉普拉斯融合图像lapFusion.append(lapStack)# 拼接高斯金字塔顶层 G4: (32,32)mask maskLPyr[levels-1] # 当前分辨率的掩模遮罩前景区域黑色遮罩maskInv 1 - mask # 生成逆遮罩前景区域白色开窗前景以外区域黑色bg cv2.bitwise_and(gaussPyrB[levels-1], gaussPyrB[levels-1], maskmask) # 生成背景mask 遮罩区域黑色fg cv2.bitwise_and(gaussPyrF[levels-1], gaussPyrF[levels-1], maskmaskInv) # 生成前景前景以外区域黑色gaussStack cv2.add(bg, fg) # 前景与背景合成得到叠加图像 (32,32)plt.figure(figsize(10, 7))plt.subplot(231), plt.axis(off), plt.title(Origin)plt.imshow(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB))plt.subplot(232), plt.axis(off), plt.title(Stacked)plt.imshow(cv2.cvtColor(stack, cv2.COLOR_BGR2RGB))fusion gaussStack # 从高斯金字塔顶层 G4:(32,32) 开始逐层复原for i in range(levels-1, 0, -1): # 拉普拉斯金字塔有 4 层: 3,2,1,0pyrG cv2.pyrUp(fusion) # # 上采样图像尺寸加倍fusion lapFusion[i-1] cv2.pyrUp(fusion)plt.subplot(2,3,levels-i2), plt.axis(off), plt.title(G{}: {}.format(i-1,fusion.shape[:2]))plt.imshow(cv2.cvtColor(fusion, cv2.COLOR_BGR2RGB))plt.tight_layout()plt.show()本节完 版权声明
OpenCV 例程200篇 总目录-202205更新 youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/124866268)
Copyright 2022 youcans, XUPT Crated2022-5-20 欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列持续更新中 【youcans 的 OpenCV 例程200篇】185.图像金字塔之高斯金字塔 【youcans 的 OpenCV 例程200篇】186.图像金字塔之拉普拉斯金字塔 【youcans 的 OpenCV 例程200篇】187.由拉普拉斯金字塔还原图像 【youcans 的 OpenCV 例程200篇】188.基于拉普拉斯金字塔的图像融合 【youcans 的 OpenCV 例程200篇】189.基于掩模的拉普拉斯金字塔图像融合 【youcans 的 OpenCV 例程200篇】190.基于图像分割的图像融合 【youcans 的 OpenCV 例程200篇】191.基于图像分割的金字塔图像融合 【youcans 的 OpenCV 例程200篇】192.Gabor 滤波器组的形状 【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取 更多内容请见 【OpenCV 例程200篇 总目录-202206更新】