Rob Hess sift源码详解(一)

本文主要针对已经了解SIFT算法的读者,通过注释Rob Hess的SIFT算法源代码,加深对SIFT算法的理解。文章介绍了如何获取并编译源代码,重点关注match.c文件中的特征匹配流程。函数返回值表示特征点数量,若未找到特征点则返回-1。
摘要由CSDN通过智能技术生成

网上已经有许多关于sift算法详细解释。本文适合于已经对sift算法有一定了解的读者,写本文的目的在于对Rob Hess的sift算法的源代码进行注释,从代码的角度对提升对sift算法的理解。闲话少说,进入正文。

首先从网址http://robwhess.github.io/opensift/上下载sift源代码。解压之后不能直接运行,因为作者是在linux下编译的,所以需要自己在windows下调试,具体过程网上搜一下都有,本文在此不赘述了。

查看文件中的match.c文件包含了sift算法匹配的整个过程。

extern int sift_features( IplImage* img, struct feature** feat );

这个函数包含整个sift算法的流程,函数返回值为特征点的数目,如果没有找到特征点则返回-1。img定义为输入图像,feat定义为指向结构体feature的指针。

int sift_features( IplImage* img, struct feature** feat )
{
return _sift_features( img,
                       feat,
                    SIFT_INTVLS,
                    SIFT_SIGMA,
                    SIFT_CONTR_THR,
                    SIFT_CURV_THR,
                    SIFT_IMG_DBL,
                    SIFT_DESCR_WIDTH,
                    SIFT_DESCR_HIST_BINS );
}
int _sift_features( IplImage* img, struct feature** feat, intintvls,
        doublesigma, doublecontr_thr, intcurv_thr,
        intimg_dbl,intdescr_width, intdescr_hist_bins)
{
IplImage* init_img;
IplImage***gauss_pyr, *** dog_pyr;
CvMemStorage*storage;
CvSeq* features;
intoctvs, i, n = 0;
 
/* checkarguments *///判断是否正确读入图像
if( 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值