在本章中
我们将了解 SIFT 算法的概念 我们将学习如何找到 SIFT 关键点和描述符。 理论 在过去的几章中,我们了解了一些角点检测器,如 Harris 等。它们具有旋转不变性,这意味着即使图像旋转,我们也可以找到相同的角点。这是显而易见的,因为旋转后的图像中的角点仍然是角点。但是缩放呢?如果图像进行缩放,角点可能就不再是角点。例如,观察下面的一个简单图像。一个小窗口内的小图像中的角点在相同窗口内放大时会变得平坦。所以 Harris 角点不具有尺度不变性。
2004年,加拿大英属哥伦比亚大学的D.Lowe提出了一种新的算法——尺度不变特征变换(SIFT),在他的论文《尺度不变关键点的独特图像特征》中,他提取了关键点并计算了其描述符。(这篇论文通俗易懂,被认为是关于SIFT的最佳资料。这里的解释仅是对该论文的简短总结)。
SIFT算法主要包括四个步骤,我们将逐一介绍。
1. 尺度空间极值检测
在处理图像时,我们不能使用相同大小的窗口来检测具有不同尺度的关键点。对于较小的角点,这样做可能没问题。但要检测更大的角点,我们需要更大的窗口。为了解决这个问题,SIFT引入了尺度空间滤波。在这个过程中,SIFT会根据不同的σ值计算图像的高斯拉普拉斯算子(LoG)。LoG可以作为一个斑点检测器,它能够根据σ的变化检测到不同大小的斑点。简而言之,σ就像一个缩放参数。例如,在上面提到的图像中,低σ值的高斯核会给较小的角点赋予较高的值&