Image matching implementations using Scalable Lexicon Recognition

Do you know of any implementations or enhancements to the image matching method proposed by David Nister and Henryk Steyenius called Scalable Dictionary Tree Recognition ? I am trying to implement it, and it is difficult for me to understand some parts of the algorithm (more precisely, calculating the estimate).

+7
source share
6 answers

Here is a good vocabulary tree implementation - libvot . It uses the standard C ++ 11 multi-threaded library to speed up the build process, so it works pretty fast.

It uses three steps to create a vocabulary tree. The first step is to create a kmeans tree using sifting descriptors. The second step is to create an image database using the dictionary tree that you create in the first step. The third step is to query the image for the image database. This repository also reflects some best practices, such as inverted list and L1 distance measurement.

+3
source

Regarding vocabulary trees, I found this thesis ( http://www.tango-controls.org/Members/srubio/MasterThesis-VocabularyTree-SergiRubio-2009.pdf ) that implements them in C ++ / python. However, I can’t find the code anywhere, so I contacted the author to get the code, but without success until this date.

In addition, I found this other implementation ( http://www.inf.ethz.ch/personal/fraundof/page2.html ), however I could not get it to work.

Have you already implemented it? I would like to do the same for image recognition, but this seems like a very painful task.

Sincerely.

+2
source

Sergio Rubio published an implementation of using a vocabulary tree to classify images at http://sourceforge.net/projects/vocabularytree/ . I had to rework most of the C code that he published to make it work on my Windows system, but overall it was a very good resource for implementing the ideas presented in the original article.

+2
source

I recently found a proprietary rather large implementation of Vocabulary Tree in C ++ called DBow.

The code is well organized and contains a lot of comments.

Checkout here: http://webdiis.unizar.es/~dorian/index.php?p=31

and here: http://webdiis.unizar.es/~dorian/index.php?p=32

+1
source

You want to find a spatial fill curve or spatial index. Sfc reduces complexity 2d to complexity 1d, although this is just a reordering of the surface. Sfc recursivley subdivides the surface into smaller tiles and continues to collect information about nearby tiles. It can be compared with a quadrant. This can be useful for comparing images because you are comparing them next to the plates. It is difficult then to make the tiles comparable. I believe that DCT may be useful here. You want to find the Nick Hilbert Spatial ATV Blog.

0
source

I believe that the Match pyramid core method proposed by Grauman and Darrell is generally considered even better. You can get the C ++ library implementation here .

0
source

All Articles