Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the meaning of minHessian (Surffeaturedetector)

Tags:

c++

opencv

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?

like image 321
Malin Avatar asked Jul 12 '13 11:07

Malin


1 Answers

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.

like image 136
ChronoTrigger Avatar answered Nov 12 '22 07:11

ChronoTrigger