有设计师做的装修效果图的网站,网站建设公司知乎,陕煤化建设集团网站矿建二公司,软件界面设计与色彩搭配OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】188.基于拉普拉斯金字塔的图像融合 图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步降低的图像集合。从底层图像可以看清更多细节#xff0c;从顶层图像可以看到更多的轮廓特征。通…OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】188.基于拉普拉斯金字塔的图像融合 图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步降低的图像集合。从底层图像可以看清更多细节从顶层图像可以看到更多的轮廓特征。通常上层图像的宽度和高度是相邻的下层图像的 1/2。
在计算高斯金字塔时不断进行高斯滤波和下采样丢失了高频信息。为了描述这些高频信息将通过原图像减去先缩小后放大的图像的一系列差分图像定义为拉普拉斯金字塔Laplacian Pyramid。 6.3 基于拉普拉斯金字塔的图像融合
由于图像噪声、光照、曝光度、模型匹配误差等因素图像直接拼接合成会在图像重叠区域的拼接处出现明显的痕迹 。图像融合的目的就是使两幅图像的重叠区域过渡自然且平滑。
拉普拉斯金字塔将源图像分解到不同的频带越高频的图像信息越到上层。在相同显示尺寸下比较不同分辨率的拉普拉斯图像可以发现不同尺度下关注的细节是不同的低分辨率下关注的是较大尺度的基本纹理而高分辨率下关注的是更精细的纹理。
因此可以针对不同分解层的频带特征与细节采用不同的融合算子以突出特定频带上特征与细节也就可以将不同图像的特征与细节融合在一起。
金字塔图像融合过程是在不同尺度、不同空间分辨率和不同分解层上分别进行的也称为多波段融合Multi-band Blending。多波段融合的思想是先对多幅图像分别构建拉普拉斯金字塔然后对同一层图像相同频段按一定规则融合对融合后的图像金字塔重建得到融合图像。 基于拉普拉斯金字塔的图像融合的基本步骤为 1、对左图、右图分别构建高斯金字塔 2、对左图、右图分别构建拉普拉斯金字塔 3、在每个尺度分辨率下根据当前尺度拼接左、右图的拉普拉斯图像 得到拼接图像的拉普拉斯金字塔 4、由最低分辨率的高斯图像生成最低分辨率的起始图通过拼接图像的拉普拉斯金字塔逐层逐个分辨率重建拼接图像直到得到最高分辨率的拼接图像。 例程1.88 拉普拉斯金字塔图像融合 # 1.88拉普拉斯金字塔图像融合img1 cv2.imread(../images/buddha01.png)img2 cv2.imread(../images/buddha03.png)img1 cv2.resize(img1, (512, 512), interpolationcv2.INTER_CUBIC) # 将图片大小调整到 2**levels 的整数倍img2 cv2.resize(img2, (512, 512), interpolationcv2.INTER_CUBIC)# 直接左右拼接图像 (用于对比)rows, cols, channel img1.shapestack np.hstack((img1[:,:int(cols/2)], img2[:,int(cols/2):]))# 图像向下取样, 构造高斯金字塔: [原图下取样1次下取样2次下取样3次下取样4次]levels 5 # 高斯金字塔层数gaussPyr1, gaussPyr2 [img1], [img2] # 原始图像为高斯金字塔第 0 层, (512, 512)for i in range(1, levels): # 高斯金字塔共 5 层: 0,1,2,3,4gaussPyr1.append(cv2.pyrDown(gaussPyr1[i-1])) # 计算第 i 层高斯金字塔gaussPyr2.append(cv2.pyrDown(gaussPyr2[i-1]))# 图像向上取样, 构造拉普拉斯金字塔 [第1层残差第2层残差第3层残差第4层残差]lapPyr1, lapPyr2 [], [] # 从最顶层开始恢复for i in range(levels-1): # 拉普拉斯金字塔有 4 层: 0,1,2,3lapPyr1.append(gaussPyr1[i] - cv2.pyrUp(gaussPyr1[i1]))lapPyr2.append(gaussPyr2[i] - cv2.pyrUp(gaussPyr2[i1]))# 拉普拉斯金字塔左右拼接lapStack []for i in range(levels-1): # 拉普拉斯金字塔共 4 层: 0,1,2,3rows, cols, channel lapPyr1[i].shapesplicing np.hstack((lapPyr1[i][:, 0:int(cols/2)], lapPyr2[i][:, int(cols/2):]))lapStack.append(splicing)print(lapStack, i, lapStack[i].shape)# 由拼接后的Laplace金字塔恢复原图像rows, cols, channel gaussPyr1[-1].shape # 高斯金字塔顶层 G4:(32,32)stackG4 np.hstack((gaussPyr1[-1][:,:int(cols/2)], gaussPyr2[-1][:,int(cols/2):])) # 拼接高斯金字塔顶层stackG3 lapStack[3] cv2.pyrUp(stackG4) # stackG3:(64,64)stackG2 lapStack[2] cv2.pyrUp(stackG3) # stackG2:(128,128)stackG1 lapStack[1] cv2.pyrUp(stackG2) # stackG1:(256,256)stackG0 lapStack[0] cv2.pyrUp(stackG1) # stackG0:(512,512)plt.figure(figsize(9, 7))plt.subplot(221), plt.axis(off), plt.title(BuddhaFace A)plt.imshow(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB))plt.subplot(222), plt.axis(off), plt.title(BuddhaFace B)plt.imshow(cv2.cvtColor(img2, cv2.COLOR_BGR2RGB))plt.subplot(223), plt.axis(off), plt.title(BuddhaFace stacked)plt.imshow(cv2.cvtColor(stack, cv2.COLOR_BGR2RGB))plt.subplot(224), plt.axis(off), plt.title(Laplacian blended)plt.imshow(cv2.cvtColor(stackG0, cv2.COLOR_BGR2RGB))plt.tight_layout()plt.show() 程序说明
左下图是基于拉普拉斯金字塔的图像融合右下图是图像直接进行拼接的结果。直接拼接时在左右拼接处可以看到非常明显、锐利的拼接缝称为截断现象Seams。基于拉普拉斯金字塔的图像拼接通过多频带融合使两幅图像的重叠区域过渡自然且平滑。 本节完 版权声明
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更新】