0

I am testing object to do Feature Matching with Sift and Surf with C++ & OpenCV.

Surf claims to be faster and Sift claims can detect many keypoints than Surf. I want to determine which algorithm is the most accurate.

But I am confused to determine the accuracy in terms of time, or the matching keypoint. Can someone explain to me how do I determine which algorithm is the most accurate? And from which factor I determine its accuracy ?

This is the results of my experiments

halfer
  • 19,824
  • 17
  • 99
  • 186
Command14
  • 1
  • 1

1 Answers1

2

I use to calc ratios. So speed, how much faster is SURF than SIFT? You do timeSift/timeSurf * 100. So you get how many times is SIFT slower than SURF.

About accuracy its more complicated. You could apply matching filters by minimum distance ratio and/or do some RASNAC filtering first. Then you could compare matchesSift/matchesSurf and you get how many times more matches you got with SIFT than with SURF. But even this way you can get false matches in either cases, so its a good idea to equally draw matches and see which looks better/ more accurate.

Do statistical test. Not only two images, several bunch of images repeating the same test and take the average ratio timeSift/timeSurf and the average ratio matchesSift/matchesSurf..

For ending (with average values of course) I would do the following

speedRatio=timeSift/timeSurf
matchesRatio=matchesSift/matchesSurf
R=matchesRatio/speedRatio.

 -If R>1 then SIFT worths it .
 -If R<1 then SURF if definitively more convenient
 If R=1 its the same
Gabo Alvarez
  • 139
  • 8
  • Thank you for your answer, I will try it, is this proven to be able to determine accuracy ? – Command14 May 04 '17 at 05:03
  • Well taking the average number of matchings should wipe off the matching errors count. Thats because errors are randomly distributed and , for example, on one photo you get 3 wrong matches with SIFT that are accounted in SIFT sum, but in the next one you may have 3 wrong matches on SURF and the sums gets balanced again. – Gabo Alvarez May 04 '17 at 06:25
  • Generally speaking, in signals processing, average or promedy filters are a valid and pretty common noise filter – Gabo Alvarez May 04 '17 at 06:28
  • Given a big number of photos, its impossible that the wrong matches gets always added to the same SIFT or SURF matches count – Gabo Alvarez May 04 '17 at 06:33
  • Where do we find out? -If R>1 then SIFT worths it . -If R<1 then SURF if definitively more convenient -If R=1 its the same In terms of which we measure it ? Can you help me Thank you. – Command14 May 05 '17 at 01:01
  • Well with that Im saying: "¿How many more features I get with SIFT versus how much more times is slower?" I've related the proportions of features detected (nFeaturesSift/nFeaturesSurf) vs (timeSift/timeSurf). If that proportion is >1 means that SIFT isnt that much slower., because the relation (timeSift/timeSurf) is smaller than (featuresSift/featuresSurf) or , for example: "SIFT proves to be 20% slower and gets 50% more features than SURF" – Gabo Alvarez May 06 '17 at 13:51
  • Whether I can find accuracy in percent form ? – Command14 May 08 '17 at 07:37
  • Of the statements you make above, are there any journals that support it ? Thank you. – Command14 Jun 11 '17 at 06:39