我只是研究过SURF,并且打算实现它,但我仍然不明白为什么要使用描述符。

我了解什么是关键点及其目的,但是当我们提取关键点时,为什么我们需要使用描述符?它们在认可中的重要性和作用是什么?

#1 楼

要理解的一件事很重要,那就是在提取关键点之后,您仅会获得有关其位置的信息,有时甚至是有关它们在图像中的覆盖区域(通常由圆或椭圆近似)的信息。尽管有关关键点位置的信息有时可能有用,但关于关键点本身并不能说太多。

根据用于提取关键点的算法(SIFT,Harris拐角,MSER),您会知道一些提取的关键点的一般特征(例如,它们以斑点,边缘,突出的角为中心...),但是您将不知道一个关键点与另一个关键点有何不同或相似。这是两个简单的示例仅位置和关键点区域无法帮助我们的地方:



如果图像A(白色背景上的熊)和图像B,则完全相同A的副本,但翻译了几个像素:提取的关键点将相同(在那个熊的相同部分)。这两个图像应该被识别为相同或相似。

但是,如果我们仅有的信息是它们的位置,并且由于平移而发生了变化,那么您将无法比较这些图像。


如果您有一个图像A(假设这​​次是一只鸭子)和另一个图像B,则与A中的鸭子完全相同,只是大小增加了一倍:提取的关键点将相同(鸭的相同部位)。这些图像也是相同的(相似)。

,但是它们的大小(面积)都将不同:图像B的所有关键点的大小都是图像A的两倍。


所以,这里有描述符:它们是比较关键点的方法。他们总结了矢量格式(长度固定)关于关键点的一些特征。例如,可能是它们在最明显的方向上的强度。它为关键点所指图像的区域分配了数字描述。

描述符的一些重要内容是:



它们应独立于关键点位置

如果在不同位置(例如由于平移)提取了相同的关键点,则描述符应该相同。


它们应该对图像转换具有鲁棒性

一些例子是对比度的变化(例如,晴天和阴天期间同一位置的图像)和视角的变化(从右上和左上的建筑物图像,我们仍然希望将其识别为同一栋建筑物。)

当然,没有描述符对所有变换(对于任何变换都没有完全鲁棒性)

不同的描述符被设计为对不同的转换具有鲁棒性,有时与计算它们的速度相反。


它们应该与小数位数无关。

描述符应该考虑小数位数。如果一个关键点的“突出”部分是一条10px的垂直线(在半径为8px的圆形区域内),而另一部分的突出部分是5px的垂直线(在半径为4px的圆形区域内)这些关键点应分配类似的描述符。


现在,您已经为所有关键点计算了描述符,就可以比较这些关键点了。举一个简单的图像匹配示例(当您知道图像属于同一对象,并且希望识别不同图像中描述场景同一部分的部分,或者希望识别两个图像之间的视角变化时) ,您可以将一个图片的每个关键点描述符与另一张图片的每个关键点描述符进行比较。由于描述符是数字的向量,因此您可以将它们与诸如欧几里得距离之类的简单对象进行比较。当然,可以使用一些更复杂的距离作为相似性度量。但是,最后,您会说其描述符之间距离最小的关键点是匹配项,例如不同图像中的相同“位置”或“对象的一部分”。

要更复杂地使用关键点/描述符,您应该看一下这个问题-尤其是“低级本地方法”在我的答案中,以及@Maurits答案中的“词包”方法。另外,这些答案中提供的链接也很有用。

评论


$ \ begingroup $
最佳答案和很好的解释,使用术语功能与描述符相同吗?两者相同还是不同?术语“定向”在冲浪中是什么意思?
$ \ endgroup $
– ARG
13年8月22日在11:59



$ \ begingroup $
“功能”一词与“关键点”相同-它是图像中的突出点。描述符然后是“关键点描述符”或“功能描述符”。不幸的是,我对SURF知之甚少,这就是为什么我问您是否想大致了解描述符或特别是有关SURF的原因。我知道对于SIFT来说,方向非常重要。
$ \ endgroup $
–佩内洛普
13年8月22日在12:24

$ \ begingroup $
“定向”一词不是专门用于SURF,它也用于SIFT,我只想知道它是什么,
$ \ endgroup $
– ARG
13年8月22日在12:27

$ \ begingroup $
您可以基于局部渐变来计算关键点的“主要方向”。然后,当计算梯度以实现旋转不变性时,该方向对于关键点变为“向上”。对于SIFT,您对维基百科有很好的解释
$ \ endgroup $
–佩内洛普
13年8月22日在12:34

$ \ begingroup $
:)我的问题是方向是什么?不筛分或冲浪
$ \ endgroup $
– ARG
13年8月22日在12:37

#2 楼

让我们考虑一下理想的描述符来理解这个想法。理想的描述符是从像素空间到其他空间的函数,以使相同的对象具有相同的结果,而不同的对象具有不同的结果。例如,如果用相同的对象拍摄两个图像但是使用不同的曝光水平,您会得到倍数的图像。一个将获取像素并通过其均值和标准偏差水平对其进行归一化的描述符将具有相同的结果,表示这两个对象是相同的。很好,因为它允许我们正确匹配



因此,需要您的描述符来正确匹配相同的对象。