图像变换(四)图像的高斯金字塔表示

1,002 阅读2分钟

高斯金字塔(Gaussianpyramid): 用来向下采样,主要的图像金字塔 拉普拉斯金字塔(Laplacianpyramid): 用来从金字塔低层图像重建上层未采样图 像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合 高斯金字塔一起使用。 两者的简要区别:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从 金字塔底层图像中向上采样重建一个图像。 (1)高斯金字塔 要从金字塔第 i 层生成第 i+1 层(我们表示第 i+1 层为 G_i+1),我们先要用高 斯核对 G_1 进行卷积,然后删除所有偶数行和偶数列。当然的是,新得到图像 面积会变为源图像的四分之一。按上述过程对输入图像 G_0 执行操作就可产生 出整个金字塔。 当图像向金字塔的上层移动时,尺寸和分辨率就降低。 为了获取层级为 G_i+1 的金字塔图像,我们采用如下方法: <1>对图像 G_i 进行高斯内核卷积 <2>将所有偶数行和列去除 得到的图像即为 G_i+1 的图像,显而易见,结果图像只有原图的四分之一。通 过对输入图像 G_i(原始图像)不停迭代以上步骤就会得到整个金字塔。同时我们 也可以看到,向下取样会逐渐丢失图像的信息。 如果想放大图像,则需要通过向上取样操作得到,具体做法如下: <1>将图像在每个方向扩大为原来的两倍,新增的行和列以 0 填充 <2>使用先前同样的内核(乘以 4)与放大后的图像卷积,获得 “新增像素”的近似 值得到的图像即为放大后的图像,但是与原来的图像相比会发觉比较模糊,因为在 缩放的过程中已经丢失了一些信息


inputPath ='D:/cvpr/作业1/实验一/';
filename =[inputPath 'test.jpeg'];
I = im2double(imread(filename));
if size(I,3)==3
    I=rgb2gray(I);
end
 
%高斯金字塔
gauss_pyr=gauss_pyramid(I,5);
 
for i=1:length(gauss_pyr)
    figure;imshow(gauss_pyr{i});
end
function pyr = gauss_pyramid(I,nlev)
 
pyr = cell(nlev,1);
pyr{1} = I;
G_LOWER = I;
 
f = [.05, .25, .4, .25, .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

image.png