相关笔记

高斯金字塔:

repeat{
1.对图像进行高斯滤波(平滑化);
2.抛除偶数行和列,依次缩小图片尺寸。
// 每进行一轮循环,得到一层金字塔,每层金字塔图像大小都是上一层的一半。
// 该过程称为下采样,金字塔底层即原图。
}

拉普拉斯金字塔:

repeat{
1.对某一层的图像进行扩充,变为其原大小二倍,中间新增的行列补0。
2.对图像进行高斯滤波(实现细节:滤波器放大倍数)。
3.用对应层级、对应大小的高斯金字塔图像,与该操作得到的图像作差,插值即属于拉普拉斯金字塔。
// 拉普拉斯金字塔的顶层(即图像尺寸最小的那一层),直接使用高斯金字塔的顶层图像(最小的那一层)。
//此过程为上采样。
}

关于拉普拉斯金字塔的认识:

认识1:一个金字塔,就是一系列(N个)图像的集合。 // 图像大小逐层递减(1/2)
认识2:拉普拉斯金字塔的意义,类似于“残差”图,保留的是与“原图”的差异。拉普拉斯金字塔的L_i层图像,就是高斯金字塔G_i+1层图像上采样后的G’_i图像与原高斯金字塔中G_i层图像的差值图像
认识3:只需要有一个拉普拉斯金字塔,就可以自底向上地重构出一个完整的原图。//因为拉普拉斯金字塔的顶层并非残差,而是高斯金字塔顶层(原图的直接缩小化)。

图像融合

融合图X,融合图Y,二值掩模图像B。假设构造金字塔层数为N
融合操作:
1.对图X、图Y分别构造拉普拉斯金字塔LX,LY。 // 有N层的图像集合
2.对二值掩模图像B构造高斯金字塔GB。 // 有N层的图像集合
3.对上述的每一层进行插值 RES = LX .* GB + LY .* (1-GB)。 // RES也是有N层的图像集合
4.对金字塔RES实现拉普拉斯金字塔的重构,得到的最大图像原图即为融合图像。

matlab实现

完整代码

mainBlend.m

clear;clc;% 通过各种方式控制图片大小为(2^N)的倍数,这里采取N层金字塔。设置N到blend.m中。
Iapple = imread('1.jpg');
Iorange = imread('2.jpg');Apple = im2single(Iapple);
Orange = im2single(Iorange);[M, N, ~] = size(Apple);
% imshow(Apple);% 手动绘制二值掩模
maskB = zeros(M,N);
maskB(:,(N/2+1):end) = 1.0;
%maskB(M/4:M*3/4,N/4:N*3/4) = 1.0;
%maskB(M/2+1:end,:) = 1.0;
%for i=1:M
%    for j=1:N
%        if (i-M/2)^2+(j-N/2)^2 < (N/4)*(N/2)
%            maskB(i,j) = 1.0;
%        end
%    end
%end
%imshow(maskB);% 对于rgb三通道,每一通道单独取出,分别进行一系列融合操作,最后再合并在一起。
redApple = Apple(:,:,1);
greenApple = Apple(:,:,2);
blueApple = Apple(:,:,3);redOrange = Orange(:,:,1);
greenOrange = Orange(:,:,2);
blueOrange = Orange(:,:,3);redBlend = blend(redOrange, redApple, maskB);
greenBlend = blend(greenOrange, greenApple, maskB);
blueBlend = blend(blueOrange, blueApple, maskB);% 合并操作。
result = cat(3,redBlend,greenBlend,blueBlend);imshow(result);

blend.m

function res = blend(scA, scB, maskB)%% 函数介绍 % 完成某一通道的融合工作。% 参数输入:sc即single channel单通道,scA和scB分别代表要融合的图,maskB即二值掩模。% 输出:res,融合完毕的图像。% -----------------------------------------------------------------%% 构建scA和scB的拉普拉斯金字塔LA和LB 与 二值掩模图像的高斯金字塔GmaskB% 预设金字塔的层数N = 9;% 分配一个元胞,用于存储gauss金字塔gaussA = cell(1,N);gaussB = cell(1,N);% 分配元胞用于存储拉普拉斯金字塔laplaceA = cell(1,N);laplaceB = cell(1,N);% 分配元胞用于存储二值掩模高斯金字塔gaussGmaskB = cell(1,N);% 初始化gaussA{1} = scA;gaussB{1} = scB;gaussGmaskB{1} = maskB;% 构建高斯金字塔和拉普拉斯金字塔for i=2:NgaussA{i} = pryDown(gaussA{i-1});laplaceA{i-1} = gaussA{i-1} - pryUp(gaussA{i});gaussB{i} = pryDown(gaussB{i-1});laplaceB{i-1} = gaussB{i-1} - pryUp(gaussB{i});gaussGmaskB{i} = pryDown(gaussGmaskB{i-1});endlaplaceA{N} = gaussA{N};laplaceB{N} = gaussB{N};%% 和二值掩模图像进行插值得RES拉普拉斯金字塔RES = cell(1,N);for i=1:NRES{i} = laplaceA{i} .* gaussGmaskB{i} + laplaceB{i} .* (1 - gaussGmaskB{i});end%% 插值后的RES拉普拉斯金字塔进行重建还原RES_rebuild = cell(1,N);RES_rebuild{N} = RES{N};for i=N-1:-1:1RES_rebuild{i} = pryUp(RES_rebuild{i+1}) + RES{i};endres = RES_rebuild{1};
end

pryUp.m

function res = pryUp(Image)%% 函数介绍 % 完成拉普拉斯金字塔构建中的上采样操作% 参数输入:输入的图像Image% 输出:得到Image的下一层图像% -----------------------------------------------------------------%% 实现[M, N] = size(Image);% 扩充图像,以0填补Image_E = zeros(M*2, N*2);Image_E(1:2:end,1:2:end) = Image;% 上采样高斯滤波,参数输入0res = Gauss(Image_E, 0);end

pryDown.m

function res = pryDown(Image)%% 函数介绍 % 完成高斯金字塔构建中的下采样操作% 参数输入:输入的图像Image% 输出:得到Image的下一层图像% -----------------------------------------------------------------%% 实现% 下采样高斯滤波,参数输入1Img = Gauss(Image, 1);% 仅提取奇数行列res = Img(1:2:end,1:2:end);end

Gauss.m

function Img = Gauss(Image, flag)%% 函数介绍 % 完成对图像Image的高斯滤波% 参数输入:Image即输入图像,flag为1则判定是下采样的gauss滤波,为0则判定是上采样的gauss滤波% 输出:Img,滤波完毕后的图像。% -----------------------------------------------------------------%% 高斯滤波的实现[M, N] = size(Image);Num = 16.0;% 若为0,则上采样时要对滤波高斯核进行扩大。if flag == 0Num = 8.0;end%  手动制作5*5的卷积核,此处为行向量kernel = [1,4,6,4,1] / Num;% 对图像进行预处理,即扩展——增加paddingImage_E = zeros(M + 4, N+4);Image_E(3:end-2,3:end-2) = Image;% 进行滤波操作% 进行行滤波,tmpImage_E用于存放中间结果tmpImage_E = zeros(M + 4, N+4);for i=3:M+2for j=3:N+2tmpImage_E(i,j) = Image_E(i,j-2:j+2) * kernel'; endend% 用得到的中间结果tmpImage_E,进行列向滤波for j=3:N+2for i=3:M+2Image_E(i,j) = kernel * tmpImage_E(i-2:i+2,j); endendImg = Image_E(3:end-2,3:end-2);end

高斯金字塔和拉普拉斯金字塔实现图像融合相关推荐

  1. 高斯拉普拉斯 java_基于能量匹配的高斯金字塔与拉普拉斯金字塔图像融合

    利用拉普拉斯对高频信息的保留,重建出原始图像 操作过程如下 对于两张图像 可以看到两张同样的图片一个脸部模糊一个除了脸其他地方模糊,现在我们需要通过局部能量匹配的融合方法对图像进行增强,即基于能量特征 ...

  2. 图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码

    图像金字塔是通过多个分辨率表示图像的一种有效且简单的结构. 一个图像金字塔是一系列以金字塔形状排列的分辨率逐步降低的图像.图像金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率表示. 图像金字塔 ...

  3. 图像金字塔:高斯金字塔vs拉普拉斯金字塔

    文章目录 一.图像金字塔的定义 二.高斯金字塔的计算 三.拉普拉斯金字塔的计算 一.图像金字塔的定义 图像金字塔是图像中多尺度表达的一种,用多分辨率来解释图像. 金字塔的底部是待处理图像的高分辨率表示 ...

  4. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放...

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  5. 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  6. OpenCV中的图像金字塔(高斯金字塔、拉普拉斯金字塔)

    最近在看关于数字图像的知识点,目前在图像金字塔部分,实在是懒得用手作笔记了,就以其中比较出名的"高斯金字塔"和"拉普拉斯金字塔"为例,基于OpenCV的源代码作 ...

  7. 15. 图像金字塔-高斯金字塔、拉普拉斯金字塔、DOG金字塔

    1.  什么是图像金字塔 图像金字塔是图像处理和计算机视觉中常用到的概念,常常用于多尺度处理领域(multiscale processing),尤其早年的图像匹配.识别.图像分割等算法中都用到了图像金 ...

  8. python金字塔_高斯金字塔与拉普拉斯金字塔的原理与python构建

    高斯金字塔和拉普拉斯金字塔[1]在图像相关领域应用广泛,尤其是图像融合和图像分割方面.本文从理论和opencv实现两个方面对两种金字塔进行了介绍,并给出了二者的视觉效果. 1.高斯金字塔 在计算机视觉 ...

  9. opencv学习-高斯金字塔和拉普拉斯金字塔

    图像金字塔 一个图像金字塔是由一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就像一个古代的金字塔. 金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似 ...

最新文章

  1. 机器学习中的标量、向量、矩阵、和张量的概念
  2. Spring基于 Annotation 的简单介绍
  3. java 中组合与复用_可复用性和组合
  4. 手撕 CNN 经典网络之 VGGNet(PyTorch实战篇)
  5. DOS下从硬盘安装XP系统方法与要点
  6. install_mysql57.sh
  7. 如何产生cpk图形_如何正确选择三坐标测量机测头
  8. Percona Data Recovery Tool 单表恢复
  9. 7个碎片的excel重组实验
  10. 11(1)-AirSim+四旋翼仿真-人工势场法动态避障
  11. python编程-----利用爬虫获取自如房间信息(二)
  12. 用html css JavaScript写一个功能全面的王者荣耀轮播图 (仿淘宝京东轮播图)通俗易懂
  13. 【hive-3.1.3】ORC 格式的表和 text 格式的表,当分区的字段数量和表的字段数量不一致,检索结果不相同
  14. 互联网人租房有多难?听完这6位的自白,瞬间破防了 ....
  15. 【新业务搭建】竞争情报业务规划及体系构建的思考——By Team
  16. 应届毕业生即将到来....程序员饭碗恐成难题
  17. 为什么在人工智能火爆的现在,我们还在做数据分析
  18. 动环监控系统的服务器配置,机房动环监控系统设计与实现.docx
  19. Jenkins 父pom打包报错[unknown-version]: Could not find artifact xxx
  20. 基于Android4.0版本截屏+node.js服务器接收显示

热门文章

  1. 金蝶EAS,查询分析器,分页查询,获取6500行之后的记录
  2. 万能数据库查询分析器使用技巧之(十)
  3. POJO,PO,JAVABEAN
  4. reverse()方法
  5. 硬盘分区MBR和GPT知识详解
  6. pip 在windows下的更新升级
  7. 数据库编程入门培训(一)
  8. 交换安全----局域网安全简介
  9. 使用组策略将用户文件夹重定向到D盘
  10. 「绝影」出没上海车展,约上30+车企一块「商量」