What does minhessian
exactly mean in the following case
int minHessian = 50;
SurfFeatureDetector detector(minHessian);
I have read that it is a threshold...but what does it mean?...That only 50 keypoints are detected?
To decide if a pixel in an image is a SURF keypoint, an approximation of the Hessian matrix is built with the partial derivatives of the image intensities within a patch around the pixel. The determinant of this matrix is called Hessian and tells you how robust that pixel is as a blob center.
The minHessian
is a threshold to decide from which value you are willing to accept keypoints. In practice, the higher the minHessian
, the fewer keypoints you will obtain, but you expect them to be more repetitive (w.r.t. image transformations), and then, more useful. On the other hand, the lower the minHessian
, the more keypoints you get, but they may be more noisy.
In usual images, a value between 400 and 800 works well.
Note that SurfFeatureDetector
does not provide a way to select just a fixed number of keypoints. To do so, you have to set a low minHessian, sort the resulting keypoints by its Hessian value and then remove the least persistent ones.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With