Hessian 最小阈值对 SurfFeatureDetector 函数意味着啥?

Posted

技术标签:

【中文标题】Hessian 最小阈值对 SurfFeatureDetector 函数意味着啥?【英文标题】:What the Hessian minimum threshold means on the SurfFeatureDetector function?Hessian 最小阈值对 SurfFeatureDetector 函数意味着什么? 【发布时间】:2013-09-15 15:31:08 【问题描述】:

我正在开发一个使用 surf 来检测图像特征的 OpenCV 项目。 检测器就是这样初始化的

int minHessian = 100;

SurfFeatureDetector detector( minHessian );

有人可以解释一下粗麻布阈值的含义(以数学和实践的方式)吗?

【问题讨论】:

检查这个问题和答案:***.com/questions/17613723/… 【参考方案1】:

SURF paper 对此进行了解释,在使用之前您应该认真阅读。 SURF 算法实际上包含两部分:兴趣点检测和描述符。在这种情况下,Hessian corner detector 用于兴趣点检测。阈值确定 Hessian 滤波器的输出必须有多大才能将一个点用作兴趣点。较大的值会导致更少但(理论上)更显着的兴趣点,而较小的值会导致更多但更少的显着点。

【讨论】:

感谢您的回复。我正在尝试 SURF 算法,因为我希望能够识别视频中的不同对象(很多不同的对象 = 数百个对象)。我还没有找到好的解决方案。你能帮我指出好的方向吗? 这是一个悬而未决的问题。我会读一些论文。不过,SURF 对于基本对象检测来说并不是一个糟糕的方法。【参考方案2】:

在数学上,Hessian 矩阵描述了函数的二阶导数,它代表曲率。想象一下你有一个 3-D 表面 f(x,y),你怎么能找到你的局部极值?只需在一阶导数中找到您的零点。为了证明该点是局部最大值还是最小值,我们需要知道它的前两个最大绝对值(空间中的二阶导数)。如果它们的乘积为负,则该点不可能是局部极值。如果乘积为正,则该点为局部极值,而且乘积越大,局部极值越尖锐。

让我们回到 Hessian 矩阵,它代表二阶导数。 Hessian 最重要的是它的特征值。特征值描述 3-D 空间中的最大二阶导数(不限于 x 和 y 方向)。如前所述,他们的产品很有用。这里的棘手之处在于特征值的乘积是 Hessian 的行列式。这里的 minHessian 可以被认为是决定因素,这就是你需要的极值有多“尖锐”。如果一个点的 Det(Hessian) 大于该值,则它可能是兴趣点。

SURF 不像 SIFT 那样使用 LoG 和 Hessian,而是使用 Det(Hessian) 来选择尺度和兴趣点。这样,SURF 就可以“加速”了。

不过,还有关于该行列式的更多细节,包括 Haar 小波滤波器、不同方向的权重……如果您对这些细节感兴趣,请参阅 SURF 论文。

【讨论】:

以上是关于Hessian 最小阈值对 SurfFeatureDetector 函数意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章

海森(Hessian)矩阵

Hessian矩阵

LeetCode二分查找1283.使结果不超过阈值的最小除数&875.爱吃香蕉的珂珂

Optim.jl:负逆Hessian

如何将地图中的值与阈值进行比较并将大于最小阈值的值放入集合中

SQL - 达到最小值/阈值后选择行