Matlab下的高斯金字塔

目录

Matlab下的高斯金字塔

网上有用Matlab编写的高斯金字塔程序,如:

http://hi.baidu.com/ykaitao_handsome/blog/item/128fbfdbdfa2592711df9bb9.html

所有函数都是自己编写的,没有利用Matlab的矩阵功能,for循环嵌套过多,运行速度比较慢。

另外一种方法:

http://wenku.baidu.com/view/523c2dd4b14e852458fb57eb.html

先指定一个核,再用conv2进行卷积运算。这种方法利用Matlab现有的函数,要明显优于上一种方法。但卷积核需要手工输入,不具有通用性。

其实,Matlab中有生成滤波掩模板的函数——fspecial,还有滤波器函数——imfilter。利用这两个函数,可以对上一种方法进行改进:

|

w=fspecial(‘gaussian’,3,0.5)

a=imread(‘Lena.jpg’);

size_a=size(a);

g=imfilter(a,w,‘conv’,‘symmetric’,‘same’);

t=g(1:2:size_a(1),1:2:size_a(2));

imshow(t);


| |

w是高斯滤波器的核

g是高斯滤波后的图像

去掉图像的偶数行和偶数列,得到金字塔中次一级的图像


这种方法的可读性和扩展性更强。

Matlab还提供一个独立的高斯金字塔类——video.Pyramid,可以计算高斯金字塔。下面摘自Matlab的帮助文档:

| hgausspymd = video.Pyramid;
hgausspymd.PyramidLevel = 1;
x = imread(‘Lena.jpg’);
y = step(hgausspymd, x);
figure, imshow(x); title(‘Original Image’);
x1=mat2gray(double(y));
figure, imshow(x1);
title(‘Decomposed Image’);

| |

不清楚哪个效果更好。