7

Currently I am working on face recognition project where I am using Fisherfaces/LDA to filter out the images on a broader level and then using SURF to verify the output from LDA. What would be a good Hessian threshold which should be passed to CvSURFParam()? The sample code provided by OpenCV has 500. Is it optimum?

Also, what would be minimum number of descriptors that should be matched so that my code can confirm the identity? Will 50% suffice?

I'm using OpenCV 2.4 with C++ on Windows.

Alexis Pigeon
  • 7,423
  • 11
  • 39
  • 44
ahirnish
  • 91
  • 7
  • 4
    Only you can answer such type of question - test your input data on different thresholds, constants etc and check if it's optimum for you. – ArtemStorozhuk Jun 20 '12 at 10:51
  • I did that. But I wasn't sure as my database isn't large enough. I was just checking if any research-proven value exists or not for this. Thanks anyway. – ahirnish Jun 20 '12 at 11:35

1 Answers1

0

ArtemStorozhuk is right. Since we don't know your dataset (particularly the quality of images), there is no way for us to suggest a better value for a threshold. And yes, there is no general answer for that

To increase the amount of test images in your training set you can use a public domain face database (eg. FERET).

Please allow me to note additionally (also for everyone who will find this in future with a search engine), that what you are trying is not a good idea. Using SURF will only confirm that you have found just another face. Setting a minimum to the descriptors that have to be matched is again very depended on the image quality. Finding less SURF features can simply mean, that the image was a little bit too blurry.

Kenyakorn Ketsombut
  • 2,072
  • 2
  • 26
  • 43