高斯金字塔

高斯金字塔可以作为 图像特征提取 的预处理步骤

—————————————————————————————————————————————————————————————————————————————
这里写图片描述
过程: 假设输入图像为 Input_Img;大小为 256*256

① 先对 Input_Img 进行高斯滤波,然后下采样,得到 Gauss_Img1;这时 Gauss_Img1 大小为 128*128;

        ② 对 Gauss_Img1 进行高斯滤波, 然后下采样, 得到 Gauss_Img2;这时 Gauss_Img2 大小为 64*64;

        ③ 对 Gauss_Img2 进行高斯滤波, 然后下采样, 得到 Gauss_Img3;这时 Gauss_Img3 大小为 32*32;

        依次进行下去…………

最简单的matlab代码:

img1=imread(‘test.jpg’);
[m,n]=size(img1);
w=fspecial(‘gaussian’,[3 3]);
img2=imresize(imfilter(img1,w),[m/2 n/2]);
img3=imresize(imfilter(img2,w),[m/4 n/4]);
img4=imresize(imfilter(img3,w),[m/8 n/8]);
img5=imresize(imfilter(img4,w),[m/16 n/16]);
imshow(img1);
figure,imshow(img2);
figure,imshow(img3);
figure,imshow(img4);
figure,imshow(img5);
注意:这里高斯滤波器用的是3*3大小,而sigma默认为0.5;可以相应调整滤波器大小和sigma的值,获得的效果也不尽相同;

—————————————————————————————————————————————————————————————————————————————

这里面有关于高斯滤波器的生成函数,如下:

function r=GuassionMatrix(delta,radius)
radius=ceil(radius);
n=2*radius+1;
r=zeros(n,n);
%tempMatrix=zeros(radius,radius);
for i=-radius:radius
for j=-radius:radius
r(i+radius+1,j+radius+1)=exp(-(i^2+j^2)/2*delta^2);
end
end;
r=round(100*r);
r=r/sum(sum(r));
当然,用matlab自带的函数也可以

w=fspecial(‘gaussian’,[n n], sigma );


还有另外的说法(转自http://blog.sina.com.cn/s/blog_68f909c30100r0g1.html

高斯金字塔(Gaussian Pyramid):高斯金字塔 里有两个概念:组(Octave)和层(Level或Interval),每组里有若干层。

高斯金字塔的构造是这样的:
(1)第一组的第一层为原图像,然后将图像做一次高斯平滑(高斯卷积、高斯模糊)高斯平滑里有一个参数 σ ,在SIFT里作者取1.6 ;
(2)将σ乘一个比例系数k作为新的平滑因子来平滑第一组第二层得到第三层。
(3)重复若干次,得到L层他们分别对应的平滑参数为:0,σ,kσ,k2σ….。
(4)将最后一幅图像做比例因子为 2 的降采样得到第二组的第一层,然后对第二组的第一层做参数是 σ 的高斯平滑,对第二层做 kσ 的平滑得到第三层…..这里一定注意:每组对应的平滑因子是一样的。而不是像有的资料上说的持续递增。
这样反复形成了O组L层。一般模糊的高斯模板长宽都约为6σ(这里σ为当次的平滑因子,就是可能是kσ,k2σ..)

具体代码这里不贴了

—————————————————————————————————————————————————————————————————————————————
如何在 图片 固定位置生成 高斯函数场?

function ImgOutput=CreatGauss(ImgInput,m,n,sigma)
[x,y]=size(ImgInput);
a=1:x;
b=1:y;
[A,B]=meshgrid(a,b);
arg= -((A-n).(A-n) + (B-m).(B-m))/(2*sigma*sigma);
h=exp(arg);
ImgOutput((i-1)*m+1:i*m,(j-1)*n+1:j*n)=h;
上面所示函数为在[m,n]处生成 标准差为 sigma 的高斯场,图片如下:

ImgInput=zeros(200,200);

ImgOutput=CreatGauss(ImgInput, 100,100,50)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值