图像变换(五)拉普拉斯金字塔

拉普拉斯金字塔

图像金字塔方法的原理是:将参加融合的的每幅图像分解为多尺度的金字塔图像序列,将低分辨率的图像在上层,高分辨率的图像在下层,上层图像的大小为前一层图像大小的1/4。层数为0,1,2……N。将所有图像的金字塔在相应层上以一定的规则融合,就可得到合成金字塔,再将该合成金字塔按照金字塔生成的逆过程进行重构,得到融合金字塔。这个总的思路就是一下所有基于金字塔融合的算法过程,不同点就在于分解构造的金字塔不同,每层的融合规则不一样,重构的方法不同而已。金字塔方法最先实现了这种思想,之后小波方法进一步完善和发展了这种多尺度融和的思想。

拉普拉斯金字塔可以认为是残差金字塔,用来存储下采样后图片与原始图片的差异。我们知道,如果高斯金字塔中任意一张图Gi(比如G0为最初的高分辨率图像)先进行下采样得到图Down(Gi),再进行上采样得到图Up(Down(Gi)),得到的Up(Down(Gi))与Gi是存在差异的,因为下采样过程丢失的信息不能通过上采样来完全恢复,也就是说下采样是不可逆的。下面展示了一张图先进行下采样,再进行上采样的过程:

原始图片下采样后得到的小尺寸图片虽然保留了视觉效果,但是将该小尺寸图像再次上采样也不能完整的恢复出原始图像。为了能够从下采样图像Down(Gi)中还原原始图像Gi,我们需要记录再次上采样得到Up(Down(Gi))与原始图片Gi之间的差异,这就是拉普拉斯金字塔的核心思想

拉普拉斯金字塔就是记录高斯金字塔每一级下采样后再上采样与下采样前的差异,目的是为了能够完整的恢复出每一层级的下采样前图像。

下式是拉普拉斯金字塔第 i 层的数学定义:
image.png

式中的gi表示第i层的图像。而 UP()操作是将源图像中位置为(x,y)的像素映射到目标图像的(2x+1,2y+1)位置,即在进行向上取样。符号x表示卷积,g5x5为 5×5 的高斯内核。拉普拉斯金字塔是通过源图像减去先缩小后再放大的图像的一系列图像构成的。

img=double(imread('test.jpeg'));
[m n]=size(img);

w=1/256*[1  4  6  4 1;      %拉普拉斯滤波器
         4 16 24 16 4;
         6 24 36 24 6;
         4 16 24 16 4;
         1  4  6  4 1];

imgn{1}=img;
for i=2:5                   %滤波,下采样
   imgn{i}=imfilter(imgn{i-1},w,'replicate');
   imgn{i}=imgn{i}(1:2:size(imgn{i},1)-1,1:2:size(imgn{i},2)-1); %i-1级近似
end
       
for i=5:-1:2        %调整图像大小
   imgn{i-1}=imgn{i-1}(1:2*size(imgn{i},1),1:2*size(imgn{i},2)); 
end

 for i=1:4          %获得残差图像,i级预测残差
    imgn{i}=imgn{i}-expand(imgn{i+1},w);
    figure;imshow(uint8(imgn{i}));
 end
 
for i=4:-1:1        %残差图像重构原图像
    imgn{i}=imgn{i}+expand(imgn{i+1},w);
end

imshow(uint8(imgn{1}));
复制代码

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享