Ask Your Question

BFMatcher implemented differently on GPU?

asked 2013-04-04 09:31:58 -0600

mada gravatar image


I am using SURF and BFMatcher in my application, for which I have CPU and GPU code. I did additional calculations with the matches (calculated by BFMatcher) on CPU and GPU versions in the same way (at least I think I did), to decide which matches to keep. Depending on which version I am using, I noticed that I get slightly different results in the number of matches kept in the end.

SURF and BFMatcher have the same arguments in both versions. For additional calculations I implemented my own functions/kernels.

Is it possible that SURF or BFMatcher are implmented a bit different on CPU and GPU versions, which makes my results different? Or I did some mistake while transfering the CPU code to GPU (which I can´t find)?


edit retag flag offensive close merge delete



The results may differ due to floating point arithmetics.

Vladislav Vinogradov gravatar imageVladislav Vinogradov ( 2013-04-04 10:56:18 -0600 )edit

What you are saying, it is possible that it is not my fault?

mada gravatar imagemada ( 2013-04-08 02:46:14 -0600 )edit

Another similar question. If I run SURF detector(on GPU) with same parameters and same image 2x, the keypoints I get are not exactly identical. Mostly they are, but there are a few keypoints that are found in 1st test and haven´t been found in 2nd one and vice versa(number of keypoints found is the same in both tests) Why is it happening?

mada gravatar imagemada ( 2013-04-12 04:12:38 -0600 )edit

1 answer

Sort by » oldest newest most voted

answered 2013-04-08 03:09:16 -0600

Vladislav Vinogradov gravatar image

It is not your fault. As I say results may differ due to floating point arithmetic. Also SURF GPU descriptors differs from CPU.

edit flag offensive delete link more

Question Tools


Asked: 2013-04-04 09:31:58 -0600

Seen: 766 times

Last updated: Apr 04 '13