这两天用到了Sift特征,在网上找到了一份代码,下载后有一些注意事项。源代码网址如下:
http://www.cs.ubc.ca/~lowe/keypoints/
Matlab环境下,主要的命令有三个:
特征提取
[image, descrips, locs] = sift(‘scene.pgm’);
参数:图片地址,如果想自己直接传入Matlab中的矩阵,可以自行修改sift.m,sift.m其实就是一个调用图片的脚本,真正的特征提取过程封装为了siftWin32.exe。
输出:image —— uint8灰度图,descrips —— K-by-128特征矩阵,K为特征个数,locs —— K-by-4矩阵,[x, y, r, theta], theta为角度,-pi~pi。
可视化
showkeys(image, locs);
参数:image —— 原图或原图的灰度图(作为画布背景),locs —— sift()得到的矩阵。
特征点匹配
match(‘scene.pgm’,‘book.pgm’);
匹配两张图片中的sift特征,并且用线连接可视化。
可以修改match.m中的
...
distRatio = 0.6;
...
该参数为匹配阈值。
注意:修改sift.m的输入参数后,也要相应的修改match.m。这里两个函数的参数类型应保持一致。
Windows环境调用
特征可视化
cmd控制台cd到当前目录,键入命令如下:
% siftWin32 -display <src.pgm >dst.pgm
将可视化sift特征写入dst.pgm,src.pgm位于同一文件夹内。
下面的命令可以显示。
% xv dst.pgm
或者 www.irfanview.com 提供了免费的pgm查看器。使用PS也可以直接查看
更多
更多内容参看readme以及代码内的注释,写的相当细致。