拉普拉斯金字塔重构(含matlab代码)

拉普拉斯金字塔重构

一、概述

        拉普拉斯金字塔的重构主要是包括三部分,第一部分是高斯金字塔的构造,第二部分是构造拉普拉斯金字塔,第三部分是利用高斯—拉普拉斯金字塔进行重构。

二、详细步骤详解

1.构造高斯金字塔
       高斯金字塔的构造原理类似于动态压缩过程,主要包括几个过程。

  • 对输入图像进行高斯卷积滤波。
  • 对原图像采用步数为2下采样过程,得到压缩后的图像。
  • 重复上面步骤,得到N层图像,我们称之为N层高斯金字塔。

2.构造拉普拉斯金字塔

  • 根据得到的高斯金字塔,按顺序叠放,我们可以用细胞数组来存储图层。
  • 将高斯金字塔从底层图像进行处理,采取上采样过程,将得到和高斯金字塔倒数第二层尺寸同样的图像。
  • 采用高斯卷积滤波进行对步骤二得到的图像进行处理,将得到的图像作为拉普拉斯金字塔的一层。
  • 用高斯金字塔相同尺寸的图像减去上一步骤滤波后的图像,得到的是结果我们称之为残差。
  • 重复上面步骤到高斯金字塔的最顶层,会发现拉普拉斯金字塔会比高斯金字塔少一层。

3、拉普拉斯金字塔重构图像

  • 前几步过程类似2的过程,将高斯金字塔进行上采样,然后进行高斯卷积滤波。
  • 将得到的每一层图像对与拉普拉斯金字塔存放的残差进行对应相加。
    -重复上面步骤得到拉普拉斯重构后的图像。

4、注意点

  • 在进行上采样和上采样过程的时候,对于步数 的采用可能会导致金字塔数组不匹配,所以建议采用与上层相同尺寸的图像之间表示,size很容易解决(一开始遇到这个问题,也是询问师兄后得以解决)。

三、 图片结果展示:在这里插入图片描述

左边是原图,右边是拉普拉斯重构后的图像,发现没有什么变换,其实重构重构过程就是图像的复原过程。

四、matlab代码

%%
clc
clear
I=im2double(imread('three.png'));
num=4;
Gau=cell(num,1);
N=1;
Gau{N}=I;
h=fspecial('gaussian',[5,5],64);
for N=2:num
    temp=imfilter(Gau{N-1},h,'conv','same','replicate');
    Gau{N}=temp(1:2:end,1:2:end,:);
end
temp=Gau{size(Gau,1)};
% for N=1:num
%     figure;
%     imshow(Gau{N});
% end
%将残差放入拉普拉斯金字塔当中
laplas=cell(num-1,1);
for index=num-1:-1:1
    temp=imresize(Gau{index+1},[size(Gau{index},1),size(Gau{index},2)],'bilinear');%上采样构造拉普拉斯金字塔
    temp=imfilter(temp,h,'conv','same','replicate');
    laplas{index}=Gau{index}-temp;
end
%利用拉普拉斯金字塔重构
img=Gau{N};
for index2=N:-1:2
    temp=imresize(Gau{index2},[size(Gau{index2-1},1),size(Gau{index2-1},2)],'bilinear');
    temp=imfilter(temp,h,'conv','same','replicate');
    img=temp+laplas{index2-1};
end
imshow([I img]);
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月蹉跎的一杯酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值