Sift特征点的提取方法,这里简单做个介绍。
作为一种匹配能力较强的局部描述算子,SIFT算法的实现相当复杂,但从软件开发的角度来说,只要会使用其中几个比较重要的函数就行了。这里要感谢David Lowe这个大牛,不但提供了一种强悍的特征匹配算法,还给出了C++的实现代码,后来有人用C#实现了这个算法,需要的朋友可到网上自行下载。
关键函数一:
int sift_features( IplImage* img, struct feature** feat )
这个函数就是用来提取图像中的特征向量。参数img为一个指向IplImage数据类型的指针,用来表示需要进行特征提取的图像。IplImage是opencv库定义的图像基本类型(关于opencv是一个著名的图像处理类库,详细的介绍可以参见http://www.opencv.org.cn)。参数feat 是一个数组指针,用来存储图像的特征向量。函数调用成功将返回特征向量的数目,否则返回-1.
关键函数二:
int _sift_features( IplImage* img, struct feature** feat, int intvls,double sigma, double contr_thr, int curv_thr, int img_dbl, int descr_width, int descr_hist_bins )
这个函数是函数一的重载,作用是一样的,实际上函数一只不过是使用默认参数调用了函数二,核心的代码都是在函数二中实现的。下面将详细介绍一下其他的几个参数。
intvls: 每个尺度空间的采样间隔数,默认值为3.
sigma: 高斯平滑的数量,默认值1.6.
contr_thr:判定特征点是否稳定,取值(0,1),默认为0.04,这个值越大,被剔除的特征点就越多。
curv_thr:判定特征点是否边缘点,默认为6.
img_dbl:在建立尺度空间前如果图像被放大了1倍则取值为1,否则为0.
descr_width:计算特征描述符时邻域子块的宽度,默认为4.
descr_hist_bins:计算特征描述符时将特征点邻域进行投影的方向数,默认为8,分别是0,45,90,135,180,215,270,315共8个方向。
Sift特征匹配算法主要包括两个阶段,一个是Sift特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量;第二阶段是Sift特征向量的匹配。
Sift特征的生成一般包括以下几个步骤:
1、构建尺度空间,检测极值点,获得尺度不变性;
2、特征点过滤并进行精确定位;
3、为特征点分配方向值;
4、生成特征描述子。
以特征点为中心取16*16的邻域作为采样窗口,将采样点与特征点的相对方向通过高斯加权后归入包含8个bin的方向直方图,最后获得4*4*8的128维特征描述子。示意图如下:
当两幅图像的Sift特征向量生成以后,下一步就可以采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。取图1的某个关键点,通过遍历找到图像2中的距离最近的两个关键点。在这两个关键点中,如果次近距离除以最近距离小于某个阙值,则判定为一对匹配点。
分享到:
相关推荐
指纹识别即指通过比较不同指纹的细节特征点来进行鉴别 。指纹识别技术涉及图像处理、模式识别、计算机视觉、数学形态学、小波分析等众多学科。由于每个人的指纹不同,就是同一人的十指之间,指纹也有明显区别,因此...
Python计算机视觉——SIFT描述子 计算机视觉.pdf
详细介绍SIFT算法,opencv的SIFT源码分析,以及应用实例
Windows64位环境下: 1. 安装python3.6.5 2. pip install numpy 3. pip install matplotlib 4. pip install opencv-python 5. 安装opencv-conrib(https://download.csdn.net/download/u012442083/10809277)
SIFT算法特点 • SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化 保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳 定性。 • 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征 数据库...
SIFT算法的MATLAB源码,不使用sift_win32,根据论文一步一步编写,对于学习理解SIFT算法有重要意义。建议单步执行学习。
该算法,基于细节的指纹识别算法和基于图像相似度的指纹识别算法之间的识别精度比较表明,前者表现良好。 此外,本文提出了一种通过计算指纹图像的无效块来评估部分指纹质量的算法。 结果表明,该评估算法可以有效...
文章目录计算机视觉第三次实验——SIFT特征提取与检索一,安装VLfeat1.1 下载地址1.2 注意二,获取像素集三,描述子代码了实现3.1 代码3.2 结果四,匹配描述子代码实现4.1代码4.2 结果五,给定一张输入的图片,在...
本算法实现sift特征匹配,sift算法详细过程等
pso-sift源码,底层代码编写,有较完整的步骤和每一步的说明,对于pso-sift初学者特别有帮助
自动化指纹识别,操作简便,代码运行快捷。
sift算法在matlab代码。对学习sift算法有很大帮助
图像配准中估计出的Flow场的可视化,与FlowNet以及SIFT Flow文章的可视化策略相同
sift算法的实现代码
Sift特征匹配算法可以处理两幅图像之间发生平移、旋转、仿射变换情况下的匹配问题,具有很强的匹配能力。在Mikolajczyk对包括Sift算子在内的十种局部描述子所做的不变性对比实验中,Sift及其扩展算法已被证实在同类...
有详细的备注,步骤易懂,有每个函数的详细介绍,详见...
基于 SIFT 特征提取的人脸识别隶属于局部的特征点的提取算法,这种算法目前来将在人脸图像遭受复杂环境的影响时具有将强的鲁棒性,是人脸识别的主流和发展趋势。未来的人脸识别技术会有更快更高效的算法被提出,检验...
在对sift算法有了初步的了解后,有人表示,是否能用c语言实现sift算法,同时,尽量不用到opencv,gsl等第三方库之类的东西。而且,Rob Hess维护的sift 库,也不好懂,有的人根本搞不懂是怎么一回事。 那么本文,...
sift边缘检测算法源码 sift-1.1.2_20100521_win.
使用javacv实现的图像sift特征提取示例