11

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

int minHessian = 100;

SurfFeatureDetector detector( minHessian );

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

4

2 回答 2

19

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

于 2013-09-19T09:59:30.040 回答
6

在数学上,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 论文。

于 2013-10-24T16:39:03.967 回答