C++ 快速角点检测中分数计算的算法

C++ 快速角点检测中分数计算的算法,c++,opencv,C++,Opencv,如何在快速角点检测器中计算检测到的角点的分数?我阅读了原始论文“机器学习用于高速角点检测”,但在分数计算部分,没有明确提到它们所指的N个相邻像素。是N个连续像素满足该点的角点条件吗?我还找到了下面的链接 这就是快速角球得分计算。此外,我没有发现本文中描述的分数函数与OPENCV对半径为3的bresenham圆进行的分数计算之间存在任何对应关系 分数已在上述链接的cornerScore函数中计算。除此之外,没有其他文章明确讨论快速特征检测器中的快速分数计算。有谁能告诉我这方面的一些见解吗 注意-

如何在快速角点检测器中计算检测到的角点的分数?我阅读了原始论文“机器学习用于高速角点检测”,但在分数计算部分,没有明确提到它们所指的N个相邻像素。是N个连续像素满足该点的角点条件吗?我还找到了下面的链接

这就是快速角球得分计算。此外,我没有发现本文中描述的分数函数与OPENCV对半径为3的bresenham圆进行的分数计算之间存在任何对应关系

分数已在上述链接的cornerScore函数中计算。除此之外,没有其他文章明确讨论快速特征检测器中的快速分数计算。有谁能告诉我这方面的一些见解吗


注意-我也看过第二篇论文“更快更好:角点检测的机器学习方法”,但它没有明确提到分数计算。

在线文档也让我感到困惑:

分数函数定义为: “相邻弧和中心像素之间的绝对差值之和 像素“

我很确定OpenCV不会这样计算分数。如果您耐心阅读您提到的内容,您会发现函数
cornerScore
正在执行以下操作:

  • 在以目标像素为中心的圆上获取16个像素值
  • 从16个像素中取一组9个连续像素,计算9个像素与中心像素之间的绝对差值,并取最小值(从9个abs diff中得出)(称为阈值
  • 将16中的每个像素作为步骤2的开始,您将得到16个阈值
  • 返回最大阈值作为角点分数

  • 从这个管道中,您可以看到OpenCV计算的分数是使目标像素成为快速角点的最大阈值

    ,我认为这一点解释得很好,但OpenCV实现并不遵循分数计算。感谢您的详细解释。我读了很多次源代码,但事先没有任何知识,我很难掌握。你是个天才,先生!!!!我还想知道为什么要找到d[k+1],d[k+2],d[k+3]的最小值,然后与旧阈值进行比较。我们应该直接计算从d[k]到d[k+8]的最小值,然后进行比较。代码经过了高度优化。在每次迭代中,它可以找到两个阈值,一个从d[k]到d[k+8],另一个从d[k+1]到d[k+9]<代码>如果(天才先生,天才