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’);
| |
不清楚哪个效果更好。