Fab*_*oni 8 c++ opencv surf feature-detection hessian-matrix
我正在开发一个OpenCV项目,使用surf来检测图像中的特征.以这种方式初始化检测器
int minHessian = 100;
SurfFeatureDetector detector( minHessian );
Run Code Online (Sandbox Code Playgroud)
有人能解释一下hessian阈值的含义(以数学和实践的方式)吗?
小智 6
在数学上,Hessian矩阵描述了函数的二阶导数,它代表曲率.想象一下你有一个三维表面f(x,y),你怎么能找到你当地的极值?只需在一阶导数中找到零点即可.为证明该点是局部最大值还是最小值,我们需要知道它的前两个最大的abs(空间中的二阶导数).如果他们的产品是负面的,那么这一点不可能是局部极端.如果产品是积极的,那么这一点将是局部极端,此外,产品越大,局部极端越尖锐.
让我们回到Hessian矩阵,它代表二阶导数.Hessian最重要的是它的特征值.特征值描述了3-D空间中的最大二阶导数(不限于x和y方向).如前所述,他们的产品很有用.这里很棘手的是特征值的乘积是Hessian的决定因素.minHessian在这里可以被认为是决定因素,这是你需要的极端"锐利".如果一个点的Det(Hessian)大于该值,则可能是兴趣点.
而不是像SIFT一样使用LoG和Hessian,SURF使用Det(Hessian)来选择比例和兴趣点.通过这种方式,SURF可以"加速".
但是,有关该行列式的更多细节,包括Haar小波滤波器,不同方向的权重......如果您对这些细节感兴趣,请参阅SURF文章.