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 函数意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode二分查找1283.使结果不超过阈值的最小除数&875.爱吃香蕉的珂珂