MATLAB的sift算法中,如何用一个模板匹配多幅图像?

(1) ?尺度不变特征变换综述

它是计算机视觉的一种算法,用于检测和描述图像中的局部特征。它搜索空间尺度中的极值点,并提取它们的位置、尺度和旋转不变量。

这个算法是David Lowe在1999发表的,2004年总结的。它的应用包括物体识别、机器人地图感知和导航、图像拼接、三维建模、手势识别、图像跟踪和动作比较。这个算法有自己的专利,专利所有人是不列颠哥伦比亚大学。

局部图像特征的描述和检测有助于识别物体。SIFT特征基于物体上的一些局部外观兴趣点,与图像的大小和旋转无关。对光线、噪点、视角轻微变化的容忍度也相当高。基于这些特征,它们非常重要并且相对容易检索。在母号庞大的特征库中,识别对象很容易,很少有误解。SIFT特征描述覆盖的部分物体检测率也相当高,甚至超过三个SIFT物体特征就足以计算位置和方位。在目前计算机硬件速度和特征库较小的情况下,识别速度可以接近实时运算。SIFT特征信息量大,适合海量数据库中的快速准确匹配。

(2 ) ?Matlab代码的主要功能如下:match.m:测试程序。

功能:该功能读取两幅(灰度)图像,找出各自的SIFT特征,显示两幅图像中连接匹配特征点(匹配关键点)的两条直线(连接对应的特征点)。判断匹配的标准是匹配距离小于距离比乘以下一个最近匹配距离(只有当其距离小于距离比乘以到第二个最近匹配的距离时,才接受匹配)。程序返回显示的匹配对的数量。(它返回显示的匹配数。)调用实例:match('desk.jpg ',' book . jpg ');

调用方法及参数说明:省略。注意:(1)图像是灰度图像。如果是彩色图像,应该在调用前用rgb2gray转换成灰度图像。

(2)参数distRatio是控制匹配点数的系数,这里是0.6,决定匹配点数。在Match.m文件中调整该参数,以获得最合适的匹配点数。Sift.m:尺度不变特征变换(Sift算法)的核心算法程序

函数:这个函数读取灰度图像并返回SIFT关键点。调用方法和参数描述:

调用方法:[image,descriptors,loc]= sift(图像文件)?输入参数:

ImageFile:图像文件名。

输出或返回参数(返回):

Image:是一个双格式格式的图像矩阵。

描述符:一个K乘128的矩阵x,其中每一行都是找到的K个关键点的不变描述符。这个描述符是一个具有128个值的向量,并被标准化为单位长度。

Locs:是一个K乘4的矩阵,其中每行有四个数值,代表关键点位置信息(图像行中的行坐标,列坐标(注意一般图像的左上角是坐标原点),scale,高斯尺度空间的参数,其中这个参数也决定了帧(结构)决定的图像盘的大小,最后一个参数是orientation。

这个函数创建一个新的图像,它包含两个匹配的图像以及它们之间的。

匹配对的连接直线。(3)?实际案例执行结果:

程序代码采用matlab和C混合编程。用matlab打开文件中的sift_match.m文件并执行。如下图所示:

从上图可以看出,* *有17个匹配点。