matlab 图像尺度空间,SIFT算法MATLAB实现----尺度空间构造

和大家一样,初学sift算法时的那种困惑让人身心疲惫,寝室难安;本着救广大同胞于水火之中的“大义”,从而产生啦写这篇文章的想法;哈哈。

文章不免有错误,欢迎大家批评指正,共同学习。

正文:

关于特征点提取,一直是计算机视觉的重要内容;为了匹配图像,把整幅图像与另一幅图像做相关运算,运算量大的惊人,从而人们就产生了一个想法,能不能只匹配少数几个有代表性的特征点,从而达到高效匹配的目的;所以从上世纪到今天一直有大量的人员投入到特征点的提取上来。

前人的工作:

(1)hessian检测子(经典算法,当代还在使用)用来匹配两幅没有尺度差异(或者没有太大差异)的图片,比如双目视觉中的两个摄像头里的图像,就可以视为没有太大的差异。

(2)susan检测子;这个检测子有点奇怪,本人看的不是很多。

(3)LOG检测子,DOG检测子;这两个放一块的原因是后者计算较快,可以逼近前者(稍后再谈这个话题);

准备工作

高斯滤波:

高斯滤波:

如果先用一个σ1=6的高斯核对图像进行滤波,然后再用σ2=8的高斯核进行滤波,所得的图像相当于用

σ=10=(6*6+8*8)^0.5的核进行滤波;

MATLAB实现:

%高斯滤波函数,使用时请放在另外一个文件中

function y=gauss(x,theta)

%y--滤波后的图像

%x--需滤波的图像

%theta--高斯滤波核;

n=round(6*theta);

if mod(n,2)==0

n=n+1;

end

h=fspecial('gaussian',[n,n],theta);

y=filter2(h,x);

正文

%(1)根据lowe理论;为了增加特征点数量先对图像放大一倍,

%并假设图像已经被摄像机镜头滤波一次,滤波因子为0.5(详见lowe论文)

%(σ=0.5)因为放大一倍,所以σ=1;

%(2)要求初始尺度σ=1.6,所以最初的滤波因子为σ=(1.6*1.6-1*1)^0.5

clear;clc;

img=imread('f3.jpg');

%将彩色图像灰度化;

if(size(img,3)==3)

gray_img=rgb2gray(img);

else

gray_img=img;

end

%1.获得初始图像,初始theta0=1.6;##########################################

%获得初始图像

%将图像放大一倍;

db_img=imresize(gray_img,2);

db_img=double(db_img);

%将图像规范化到(0---1);详见lowe论文;

db_img=db_img/255.0;

%滤波后获得初始图像;

theta=(1.6*1.6-1*1)^0.5;

init_img=gauss(db_img,theta);

%2.获得高斯图像金字塔##################################

%假设每组层数S=3;组数O=4;

S=3;

O=4;

theta0=1.6;

k=2^(1/S);

%保存相对sigma(即层间相对的theta)

for i=1:S+3

sig(i)=theta0*(k^(i-1));

end

for j=1:O

if j==1

gauss_pyr_img{j}{1}=init_img;

else

%每层的初始图像为上层的倒数第三张的降采样,即缩小一倍;

gauss_pyr_img{j}{1}=imresize(gauss_pyr_img{j-1}{S+1},0.5,'nearest');

end

for i=2:S+3

%每层滤波;

gauss_pyr_img{j}{i}=gauss(gauss_pyr_img{j}{i-1},(sig(i)*sig(i)-sig(i-1)*sig(i-1))^0.5);

end

end

%3.获得DOG金字####################################################

for j=1:O

for i=1:S+2

dog_pyr_img{j}{i}=gauss_pyr_img{j}{i+1}-gauss_pyr_img{j}{i};

end

end

% 4.获得关键点(待续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值