3

I'm trying to compare an image against a known set of images and find the closest match(es) using Emgu CV and Surf. I've found a lot of people trying to do the same thing but not a complete solution that uses the GPU for speed.

The closest I've gotten is the tutorial here:

http://romovs.github.io/blog/2013/07/05/matching-image-to-a-set-of-images-with-emgu-cv/

However that doesn't take advantage of the GPU and it's really slow for my application. I need something fast like the SurfFeature sample.

So I tried to refactor that tutorial code to match the SurfFeature logic that uses the GPU. Everything was going well with GpuMat's replacing Matrix here and there. But I ran into a major problem when I got to the core of the tutorial above, that is to say, the logic that concatenates all of the descriptors into one large matrix. I couldn't find a way to append GpuMat's to each other - even if I could do that, there's no guarantee that the FlannIndex search routine would even work with the Gpu-based code.

So now I'm stuck on something I thought would be relatively straight-forward. There are certainly a number of people trying to do this over the years so I'm really surprised that there isn't a published solution.

If you could help me, I'd be most appreciative. To summarize, I need to do the following:

Build a large in-memory (on the GPU) list of descriptors and keypoints for a known set of images using Surf (as per the SurfFeature sample). Given an unknown image, search against the in-memory stuff to find the closest match (if any).

Thanks in advance if you can help!

znelson
  • 919
  • 1
  • 10
  • 24

0 Answers0