image processing的关键点是什么?

例如,在使用OpenCV时,经常使用像SURF这样的algorithm来检测关键点。 我的问题是这些关键点究竟是什么?

我知道他们是某种形象的“兴趣点”。 我也知道他们是规模不变的,我知道他们是循环的。

我也发现他们有方向,但我不明白它究竟是什么。 这是一个angular度,但在半径之间? 你能给一些解释吗? 我想我首先需要一些简单的东西,然后才能更容易理解论文。

这是一些很好的问题。 让我们逐一解决每个问题:

我的问题是这些关键点究竟是什么?

关键点与兴趣点是一样的。 它们是图像中的空间位置或点,它们定义图像中有趣突出的部分。 关键点之所以特殊,是因为不pipe图像如何变化,图像是否旋转,缩小/扩大,翻译(所有这些都将是仿射变换的方式),或者受到扭曲(即投影变换或单应性 ),那么在与原始图像比较时,您应该能够在此修改后的图像中find相同的关键点。 下面是我前一段文章的一个例子:

来源: 模块的对象没有属性'drawMatches'opencv python

右侧的图像是左侧图像的旋转版本。 我也只显示了两个图像之间的前10名比赛。 如果你看一看前十名的比赛,那么我们可能会把注意力集中在这些点上,这样我们就可以记住这个形象是关于什么的。 我们希望把注意力集中在摄影师的面部以及相机,三脚架和背景build筑物上的一些有趣的纹理上。 你看到这两个图像之间的这些相同的点,并成功地匹配。

因此,你应该从中获得的是这些图像中的点是有趣的,无论图像如何变形,都应该被发现。

我知道他们是某种形象的“兴趣点”。 我也知道他们是规模不变的,我知道他们是循环的。

你是对的。 比例不变意味着无论如何缩放图像,您仍然应该能够find这些点。


现在我们要进入描述符部分。 什么使框架之间的关键点不同是您描述这些关键点的方式。 这些就是所谓的描述符 。 检测到的每个关键点都伴随着一个关联的描述符。 一些框架只做关键点检测,而其他框架只是一个描述框架,并没有检测到这些点。 也有一些做这两个 – 他们检测描述的关键点。 SIFT和SURF都是检测和描述关键点的框架示例。

描述符主要关注关键点的规模方向 。 我们已经把这个概念固定下来,但是如果我们的目的是在不同图像中的关键点之间进行匹配,我们需要描述符部分。 现在,你的意思是“循环”……与检测到的点的比例相关。 以VLFeat Toolbox教程中的这个图片为例:

VLFeat示例

你会发现任何黄色的点都是兴趣点,但其中一些点有不同的圆弧半径。 这些处理规模 。 一般意义上的兴趣点是如何将图像分解成多个尺度的。 我们检查每个规模的兴趣点,并将所有这些兴趣点组合在一起以创build最终的输出结果。 “圆圈” 越大 ,规模就越大 。 此外,还有一条线从圆的中心向边缘辐射。 这是我们接下来要介绍的关键点的方向

我也发现他们有方向,但我不明白它究竟是什么。 这是一个angular度,但在半径之间?

基本上,如果你想检测关键点而不考虑尺度和方向,当他们谈论关键点的方向时,他们真正的意思是他们search围绕关键点的像素邻域,并找出这个像素邻域是如何定向的或者这个补丁的方向是取决于你看什么描述符框架,但一般jist是检测补丁中梯度angular最主要的方向 。 这对匹配非常重要,以便您可以将关键点匹配在一起。 看看我和两位摄影师的第一个图 – 一个旋转,另一个不旋转。 如果你看看其中的一些观点,我们如何弄清楚一个点与另一个点的匹配程度如何? 我们可以很容易地确定摄影师的顶部作为一个兴趣点匹配旋转的版本,因为我们看看围绕关键点的点,看看这些点的方向是在哪里,从那里,这就是方向计算。

通常当我们想要检测关键点时,我们只要看看位置。 但是,如果想要匹配图像间的关键点,那么您肯定需要规模和方向来促进这一点。


希望这可以帮助!

我不太了解SURF,但是我可以告诉你SURF所依据的SIFT。 最后我提供了一些关于SURF的笔记,但是我不知道所有的细节。


SIFT的目标是在图像中find高度独特的位置(或关键点 )。 位置不仅仅是图像上的二维位置,而且是图像尺度空间中的位置 ,这意味着它们有三个坐标: xy比例 。 查找SIFT关键点的过程是:

  1. 使用不同的模糊宽度和采样率对图像进行模糊和重采样以创build比例空间
  2. 利用高斯差分法检测不同尺度的斑点; blob中心成为我们在给定xy规模上的关键点
  3. 通过计算其邻域中的每个像素的梯度方向的直方图并且select具有最高数量的计数的方向箱来为每个关键点指定方向
  4. 根据16个局部邻域中像素的梯度方向为每个关键点分配一个128维的特征向量

第2步给我们规模不变性,第3步给我们旋转不变性,第4步给我们一个“指纹”的种类,可以用来确定关键点。 它们可以一起用于匹配多个图像中任何方向和比例的相同特征的出现。


SURF旨在完成与SIFT相同的目标,但是为了提高速度而使用一些巧妙的技巧。

对于斑点检测,它使用Hessian方法的行列式 。 通过检查哈尔小波的水平和垂直响应来find主导方向。 特征描述符类似于SIFT,在16个局部邻域中查看像素的方向,但是产生了64维向量。

SURFfunction的计算速度比SIFTfunction快3倍,但在大多数情况下也是如此。


以供参考:

一个很好的SIFT教程

SURF简介

Interesting Posts