高斯金字塔与拉普拉斯金字塔的matlab实现

来源:互联网 发布:鲁大师软件下载 编辑:程序博客网 时间:2024/05/16 13:51

高斯金字塔与拉普拉斯金字塔的matlab实现

正文部分

  • 图像金字塔式进行图像的多分辨率分析的方法。一幅图像在尺寸较小的情况下,只需要较低的分辨便可以看清其轮廓;反之,较大尺寸的图像需要较大的分辨率。

下面我们来一个图像金字塔的示意图:
图像金字塔

  • 假设一幅图像的原始像素是n*n,对这幅图像进行下采样就是在原图的基础上每隔一个样本就丢弃一个样本,那么我们就会得到一个像素大小为n/2*n/2的新图。
  • 图像的上采样刚好与上图相反,这个过程直接通过在原图的基础上每一个样本后插入0,从而达到图像尺寸的2倍放大。当然了,直接插入0仅仅是增加了图像的尺寸,同时会引入了噪声。我们通过选择内插函数来代替插入的0。

下面我们来看一个创建高斯金字塔和预测残差金字塔的一个简单系统
测残差金字塔的一个简单系统

  • 所谓的高斯金字塔是指我们在对图像进行下采样的时候,进行了高斯低通滤波。
  • 拉普拉斯金子塔就是所谓的预测残差金字塔,下面简述其形成过程:
  • 假设第k层的输入图像是256*256 p。那么经过下采样以及高斯滤波后形成的第k+1层的高斯图像是128*128 p。然后通过上采样及插值函数插值后,会形成一个256*256 p的预测图像。可想而知,插值后的预测图像会和输入的原图有一定的差别。

下图展示了这之间的差别
differents


  • 既然有差别那么我们就可与算出具体的差别是多少,同时我们也可以用图像把这种差别表示出来。
    第一幅预测残差

  • 上图其实就是对图像进行高通滤波的结果。试想,内插函数其实有低通的效果,而用原图减去图像的低频成分自然就是图像的高频部分啦。

  • 对于上图可能还有人会想到图像空间锐化滤波的拉普拉斯滤波器。下面我们看看原图经过拉普拉斯滤波器后的图像是什么样子的。
    lapfilter

  • 可见,经过拉普拉斯滤波器后的图像和预测残差的图像有一定的相似性。当我们把所有的预测残差图像用金子塔的形式展现出来时,预测残差金字塔又称之为拉普拉斯金字塔。


下面是用matlab得到的高斯金字塔与拉普拉斯金字塔的结果:

高斯金字塔:
GP


拉普拉斯金字塔:
LP


示例代码

  • demo.m

    clc;clear all;close all;img=imread('timg.jpg');[m,n]=size(img);if size(img,3)==3      img = rgb2gray(img);  end  gauss_pyr=gauss_pyramid2(img,5);  % for i=1:length(gauss_pyr)  %    figure;imshow(gauss_pyr{i}); % end    for i=1:length(gauss_pyr) -1          %获得残差图像,i级预测残差    imgn{i}=gauss_pyr{i} - expand(gauss_pyr{i+1});   endfor i=1:length(imgn)     figure;imshow(imgn{i}); end   
  • gauss_pyramid2.m

    function pyr = gauss_pyramid2(I,nlev)  pyr = cell(nlev,1);  pyr{1} = I;  G_LOWER = I;  f = [0.05 0.25 0.4 0.25 0.05];    f = f'*f;  for l = 2:nlev         G_LOWER=G_LOWER(1:2:size(G_LOWER,1)-1,1:2:size(G_LOWER,2)-1); %downsample         pyr{l}=imfilter(G_LOWER, f, 'replicate');  end  end
  • expand.m

    function re=expand(img)    %双三次内插    img = imresize(img, 2, 'bicubic');    re = img;end
1 0
原创粉丝点击