2

我想在图像中的坐标 ( x ,y ) 处找到 sift 描述符,其补丁大小为 5X5 邻居,坐标在中间。

它背后的目的是分析我在该坐标上获得的方向值以进行进一步处理。

matlab中有什么方法可以让我这样做吗?

我试图理解vl_dsift,它会在每个点上给我筛选描述符,也许只是将它用于我想要的坐标,但不明白如何使用它......

有人可以帮助我或建议任何更好的选择吗?

4

1 回答 1

4

MATLAB 命令 vl_sift(和命令行实用程序)可以绕过检测器并使用 Frames 选项计算自定义帧上的描述符。

例如,我们可以计算以位置 (100,100) 为中心、尺度为 10 且方向为 -pi/8 的 SIFT 帧的描述符

fc = [100;100;10;-pi/8] ;
[f,d] = vl_sift(I,'frames',fc) ;

也可以指定多个帧 fc。在这种情况下,它们通过增加规模重新排序。Orientations 选项指示程序使用自定义位置和比例,但要计算关键点方向,如

fc = [100;100;10;0] ;
[f,d] = vl_sift(I,'frames',fc,'orientations') ;

请注意,根据局部外观,一个关键点可能有多个方向。此外,在恒定图像区域(例如一个像素区域)上计算的关键点没有方向!

结帐http://www.vlfeat.org/overview/sift.html。vl_feat 真的很简洁,而且很容易使用,甚至更容易安装。

于 2013-01-16T15:27:19.977 回答