使用MATLAB实现SIFT和SURF特征提取

4
我正在使用Matlab开发一个古代硬币识别系统。到目前为止,我已经完成了以下步骤:
  1. 转换为灰度图像
  2. 使用高斯滤波器去除噪声
  3. 对比度增强
  4. 使用Canny边缘检测进行边缘检测。
现在我想提取用于分类的特征。我想选择的特征是圆度、面积、颜色、SIFT和SURF。我的问题是如何将SIFT和SURF算法应用到我的项目中。我找不到内置的函数来实现这两种算法。

2
SIFT和SURF的维基百科文章列出了几个实现:http://www.maths.lth.se/matematiklth/personal/petter/surfmex.php http://www.mathworks.com/matlabcentral/fileexchange/28300 http://www.vlfeat.org/ - sastanin
@jetxee 非常感谢。我将浏览您提供的URL。我不需要更改任何图像代码,是吗?我只需包含这些库并使用对吗? - Nadeeshani Jayathilake
3个回答

6

非常感谢。您能回答这个问题吗?这些SIFT实现就像我们在编写C++程序时使用的库,例如我们包含iostream库一样。但是我们不必更改该库中的任何代码。因此,我可以将此SIFT实现仅用作库,而无需为我的图像更改任何代码,对吗?这个SIFT实现适用于任何图像吗? - Nadeeshani Jayathilake
1
VLFeat是一个C库,可以从C++中使用。图像必须以每个像素一个float的格式存储。您可以在此处阅读C API文档:http://www.vlfeat.org/api/sift_8h.html - bjoernz

2

1

非常感谢。那个SIFT实现可以被任何项目使用吗?我的意思是...我不需要改变它来适应我的项目吗?或者我可以直接将其作为库在我的图像中查找SIFT特征,对吧? - Nadeeshani Jayathilake
3
@Dirk,抱歉,但事实并非如此,Lowe提供了一个编译好的二进制文件和Matlab代码,可以从由该二进制文件生成的文本文件中读取关键点。 - Maurits
@Maurits 你说得对,实现是一个错误的术语... 它更像是一个包装器... - Dirk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接