使用高斯金字塔和拉普拉斯金字塔重构的主要思想就是:高斯金字塔中的内容在高斯模糊并且下采样的过程中会丢失信息,而为了重构出和原图像相差不大的图像,我们则希望能够用某种方式将建立高斯金字塔过程中丢失的信息给保存下来。后来人们想到使用拉普拉斯金字塔来保存这些信息。拉普拉斯金字塔中每层都是高斯金字塔中相邻2层的残差图,也就是相邻2层之间丢失的信息。

算法简述

将原图作为高斯金字塔的第一层,然后使用高斯模糊并下采样得到高斯金字塔的第二层,高斯金字塔的第3层就是对第2层进行高斯模糊并下采样得到的,高斯金字塔的其它层也是通过这样的操作得到的。那么在得到高斯金字塔之后,我们需要求出其相邻2层之间的残差。那么如何求呢?将高斯金子第2层的图像上采样并高斯模糊得到同高斯金字塔第1层图像相同分辨率的图像,然后(第1层-第2层)得到拉普拉斯金字塔第一层图像,然后其第2层图像由(高斯金字塔第2层-高斯金字塔的第3层上采样并高斯模糊得到图像)得到,以此类推。需要注意的是,一般拉普拉斯金字塔的层数比高斯金字塔少一层。当然也有人将高斯金字塔最后一层放入到拉普拉斯金字塔的最后一层,使得2者的层数一样,但是此时拉普拉斯金字塔的最后一层便不再是残差图了,而是原图像的高斯模糊并下采样n次的图像。它同拉普拉斯金字塔的其他层有本质的区别。当拉普拉斯金字塔构建完毕之后,所有的信息都保存好了。接下来就可以重构图像了,使用高斯金字塔最后一层向上采样并平滑,加上拉普拉斯金字塔最后一层的残差(注意这里说的拉普拉斯金字塔比高斯金字塔少一层的情况),再将得到的图像上采样并平滑加上拉普拉斯金字塔倒数第2层,一直这样往复,知道加到拉普拉斯金字塔最低一层结束。那么结果也就是重构好的图像了。

clc;
clear;
close all;img = imread('images/lena.jpg');
img = im2double(img);
figure;imshow(img);title('原始图像');nums = 4;
Gau = cell(nums,1);
N =1;
% 原图进高斯金字塔最底层
Gau{N} = img;
% 确定高斯模糊核
a = 0.4;
h = [1/4-a/2 1/4 a 1/4 1/4-a/2];
% ------------------------生成高斯金字塔-------------------------------% for N = 2:numstemp = imfilter(Gau{N-1},h,'conv','same','replicate');temp = imfilter(temp,h','conv','same','replicate');Gau{N} = temp(1:2:end,1:2:end,:);
end
% 显示高斯金字塔
% for N = 1:nums
%    str = sprintf('%s%d%s','高斯金字塔第 ',N,'层');
%    figure;imshow(Gau{N});title(str);
% end% -------------------生成拉普拉斯金字塔-----------------------------------%
str = sprintf('%s%d','现在N = ',N);
disp(str);
Lapla = cell(nums-1,1);
% 拉普拉斯金字塔的最高层等于高斯金字塔的最高层
% 不保留这句话是因为我们可以利用高斯金字塔最高层
% Lapla{N} = Gau{N};% 得到残差放入拉普拉斯金字塔
for index = nums-1:-1:1
%   上采样temp = imresize(Gau{index+1},2,'bilinear');
%   temp = imresize(Gau{index+1},2,'nearest');
%   高斯模糊temp = imfilter(temp,h,'conv','same','replicate');temp = imfilter(temp,h','conv','same','replicate');Lapla{index} = Gau{index} -temp;
end% 显示拉普拉斯金字塔
for N = 1:nums-1str = sprintf('%s%d%s','拉普拉斯金字塔第 ',N,' 层');figure;imshow(Lapla{N});title(str);
end% ---------------------利用拉普拉斯金字塔重构-------------------------%
str = sprintf('%s%d','重构开始,现在N = ',N);
disp(str);
% 重构的起点
img_re = Gau{N};for index = N:-1:2temp = imresize(Gau{index},2,'bilinear');
%     temp = imresize(Gau{index},2,'nearest');temp = imfilter(temp,h,'conv','same','replicate');temp = imfilter(temp,h','conv','same','replicate');img_re = temp + Lapla{index-1};
end% 计算误差
dif = sum(img_re(:)-img(:));
str =sprintf('%s%f','重构的误差为 ',dif);
disp(str);
figure;imshow(img_re);title('重构的图像');

使用高斯金字塔和拉普拉斯金字塔重构图像(matlab代码)相关推荐

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

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

  2. 高斯金字塔和拉普拉斯金字塔实现图像融合

    相关笔记 高斯金字塔: repeat{ 1.对图像进行高斯滤波(平滑化): 2.抛除偶数行和列,依次缩小图片尺寸. // 每进行一轮循环,得到一层金字塔,每层金字塔图像大小都是上一层的一半. // 该 ...

  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. 高斯拉普拉斯 java_基于能量匹配的高斯金字塔与拉普拉斯金字塔图像融合

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

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

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

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

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

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

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

  10. python --opencv图像处理金字塔(高斯金字塔、拉普拉斯金字塔)

    引言 前面的文章中,我们有用过图像方法或者缩小的函数 resize() ,这个函数既可以放大图像,也可以缩小图像,其中: 缩小图像:一版使用 CV_INETR_AREA (区域插值)来插值. 放大图像 ...

最新文章

  1. 它,是一部全网最全的JDK发展历史轨迹图...
  2. 医学研究——造福全人类
  3. Unix环境高级编程(一)文件I/O
  4. 全球及中国临床试验支持服务行业十四五规模发展及应用前景调研报告2022-2027年
  5. monkey测试_爱码小士丨 APP稳定性测试(附视频详解)
  6. android xml 解析天气,Retrofit2解析天气API XML接口
  7. 【算法设计与分析】09 递推方程与算法分析
  8. 如何实现A星寻路算法 Cocos2d-x 3 0 beta2
  9. Linux系统下使用iftop结合iptables服务解决带宽被恶意请求的问题
  10. PHP反序列化漏洞(什么是反序列化漏洞及操作)
  11. 基于Echarts+HTML5可视化数据大屏展示—智慧社区内网对比平台
  12. google gflags 库完全使用
  13. 2022年建筑电工(建筑特殊工种)考试练习题及模拟考试
  14. Java中Date日期时间的工具类
  15. 【Python技能树共建】requests-html库初识
  16. mysql connector j_MySQL Connector/J
  17. 揭秘程序员面试潜规则,你知道几条(建议收藏)!
  18. easypermission坑_Android EasyPermissions官方库高效处理权限相关教程
  19. 金蝶财务软件服务器文件是什么,金蝶财务软件 远程服务器
  20. 【计算机组成原理】:计算机系统概述

热门文章

  1. 部署vue3开发环境
  2. 怎样把百度图片设置成传统翻页 瀑布流与传统翻页的转换
  3. java过滤器命名_java 过滤指定后缀文件
  4. qq里面cap字符_QQ 幸运字符一共有几种?
  5. db2设置默认schema_dataSource配置jdbc连接db2源url项指定currentSchema
  6. c语言课程设计物业管理,C语言-小区物业管理-实验报告
  7. ora-28547 可能是oracle net 管理错误_PostgreSQL与Oracle:成本、易用性和功能上的差异...
  8. mysql 事物gljbie,提升mysql性能几大参数丶章怀柔
  9. 使用计算机打印汉子文档,电子科技大学《计算机应用基础(本科)》20春期末考试【标准答案】...
  10. HTML:颜色列表(自用)