Answers:
要理解的一件事很重要,那就是在提取关键点之后,您仅会获得有关其位置的信息,有时甚至是有关它们在图像中的覆盖区域(通常由圆或椭圆近似)的信息。尽管有关关键点位置的信息有时可能很有用,但关于关键点本身并没有多说。
根据用于提取关键点的算法(SIFT,Harris角点,MSER),您将了解所提取的关键点的一些一般特征(例如,它们以斑点,边缘,突出的角为中心...),但是您将不知道它们之间有什么不同或类似的一个关键点是另一个
这是两个简单的示例,其中只有位置和关键点区域对我们没有帮助:
如果您有一个图像A(白色背景上的熊)和另一个图像B,则它是A的精确副本,但翻译了几个像素:提取的关键点将相同(在该熊的同一部分)。这两个图像应被识别为相同或相似。
但是,如果我们仅有的信息是它们的位置,并且由于翻译而改变了,那么您将无法比较图像。
如果您有一个图像A(假设这次是鸭子)和另一个图像B,则与A中的鸭子完全相同,只是大小增加了一倍:提取的关键点将是相同的(鸭子的相同部分)。这些也是相同(相似)的图像。
但是它们的大小(面积)将有所不同:图像B的所有关键点的大小将是图像A的关键点的两倍。
因此,描述符来了:它们是比较关键点的方法。他们以矢量格式(长度固定)总结了关键点的一些特征。例如,可能是它们在最明显的方向上的强度。它将数字描述分配给关键点所指的图像区域。
描述符的一些重要事项是:
它们应独立于关键点位置
如果在不同位置提取了相同的关键点(例如,由于翻译),则描述符应该相同。
他们应该对图像转换具有鲁棒性
例如,对比度的变化(例如,晴天和阴天时同一位置的图像)和视角的变化(从中右和中左的建筑物图像,我们仍然希望将其识别为同一建筑物) 。
当然,没有一个描述符对所有变换都具有完全的鲁棒性(如果它很强大,例如,视角发生了很大的变化),则对任何单个变换都不具有鲁棒性。
不同的描述符被设计为对不同的转换具有鲁棒性,这有时与计算它们的速度相反。
他们应该是规模独立的
描述符应考虑到比例。如果一个关键点的“突出”部分是一条10px的垂直线(在半径为8px的圆形区域内),而另一部分的突出部分是5px的垂直线(在半径为4px的圆形区域内)–这些关键点应分配类似的描述符。
现在,您已经为所有关键点计算了描述符,就可以比较这些关键点了。举一个简单的图像匹配示例(当您知道图像属于同一对象,并且希望识别不同图像中描述场景同一部分的部分时,或者想识别两个图像之间的视角变化时) ,您可以将一个图片的每个关键点描述符与另一张图片的每个关键点描述符进行比较。由于描述符是数字的向量,因此您可以将它们与诸如Euclidian distance之类的简单对象进行比较。当然,可以使用一些更复杂的距离作为相似性度量。但是,最后,您会说描述符之间具有最小距离的关键点是匹配项,例如,不同图像中的相同“位置”或“对象的一部分”。
要更复杂地使用关键点/描述符,您应该看一下这个问题 -特别是我的答案中的“低级本地方法” 和@Maurits答案中的“词包”方法。此外,这些答案中提供的链接也很有用。