Image Processing --- Gaussian Pyramid & Laplacian Pyramid

一、高斯金字塔

image

目标:把图像分解成多个尺寸来抽取各特征

输入:size为(2N+1)*(2N+1)的原始图像I

输出:N个图像g0,…,g1。gi的大小为:(2N-i+1)*(2N-i+1)

高斯金字塔分解步骤:

a.高斯(模板/权矩阵/卷积核)平滑——对整个图像滑动加权平均(卷积:f(x)⊙h(x)=∫f(x)h(t-x)dt

  模板顺时针旋转180度,移动至待处理像素上方,滑动加权相加,直至处理完所有像素。(边缘等值扩充)

b.下采样:每隔一个点采一个样

*应用:图像特征分解

g(i+1)=(g(i).smoothing).downsampling

二、拉普拉斯金字塔

3LDAGRA)MS(59$9%YTPDS)F

上4图为高斯金字塔,下4图为拉普拉斯金字塔。步骤:

1.上采样:每隔一个点补0或本身

2.作差:上采样的高斯图与上级高斯图相减

L(i)=g(i)-g(i+1).expand

*应用:图像重构(需要L(1),…L(n)和g(n+1))

g(3)=L(3)+g(4).expand; g(2)=L(2)+g(3).expand; g(1)=L(1)+g(2).expand;

*代码copy from http://www.cnblogs.com/tiandsp/archive/2013/06/07/3123755.html:

 1 clear all; close all; clc;
 2 
 3 img=double(imread('lena.jpg'));
 4 [m n]=size(img);
 5 
 6 w=1/256*[1  4  6  4 1;      %拉普拉斯滤波器
 7 16 24 14 4;
 8 24 36 24 6;
 9 16 24 16 4;
10  4  6  4 1];
11 
12 imgn{1}=img;
13 for i=2:5                   %滤波,下采样
14    imgn{i}=imfilter(imgn{i-1},w,'replicate');
15    imgn{i}=imgn{i}(1:2:size(imgn{i},1)-1,1:2:size(imgn{i},2)-1); %i-1级近似
16 end
17        
18 for i=5:-1:2        %调整图像大小
19    imgn{i-1}=imgn{i-1}(1:2*size(imgn{i},1),1:2*size(imgn{i},2)); 
20 end
21 
22  for i=1:4          %获得残差图像,i级预测残差
23     imgn{i}=imgn{i}-expand(imgn{i+1},w);     
24  end
25  
26 for i=4:-1:1        %残差图像重构原图像
27     imgn{i}=imgn{i}+expand(imgn{i+1},w);
28 end
29 
30 imshow(uint8(imgn{1}));
 1 function re=expand(img,w)
 2 
 3     img=double(img);
 4     w=w*4;
 5     
 6     [m n]=size(img);
 7     [M N]=size(w);
 8     
 9     %插入滤波器                                   
10     w_up_left=w(1:2:M,1:2:N); 
11     w_up_right=w(1:2:M,2:2:N); 
12     w_down_left=w(2:2:M,1:2:N); 
13     w_down_right=w(2:2:M,2:2:N); 
14 
15     img_up_left=imfilter(img,w_up_left,'replicate','same');
16     img_up_right=imfilter(img,w_up_right,'replicate','same');   
17     img_down_left=imfilter(img,w_down_left,'replicate','same');  
18     img_down_right=imfilter(img,w_down_right,'replicate','same');  
19   
20     re= zeros(m*2,n*2);             %上采样
21     re(1:2:m*2,1:2:n*2)=img_up_left;
22     re(2:2:m*2,1:2:n*2)=img_up_right;
23     re(1:2:m*2,2:2:n*2)=img_down_left;
24     re(2:2:m*2,2:2:n*2)=img_down_right;
25 
26 end
原文地址:https://www.cnblogs.com/jizhiyuan/p/3454961.html