Skip to content

emiliofidalgo/obindex2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OBIndex2 - Online Binary Image Index

OBIndex2 is an open source C++ library for indexing images. It implements a hierarchical indexing scheme to match binary descriptors, which is used as an incremental Bag-Of-Words (BoW) visual vocabulary. This index is combined with an inverted file in order to provide an image database, that can be queried for finding similar images. This online binary visual vocabulary tries to solve the main drawbacks that classical BoW approaches present, avoiding the training step and adapting the visual dictionary to the operating environment.

OBIndex2 is released as a standalone library or ROS package, and relies on OpenCV 3.x and Boost libraries. It can be used with any binary descriptor computed using the OpenCV format.

The library is an evolution of OBIndex. The main improvements included are:

  • OBIndex2 provides a policy for deleting visual words, which reduces the size of the visual vocabulary with little impact on the performance.

  • FLANN library is no longer required. This is an implementation from the scratch of the full approach.

  • It is not needed to specify the number of descriptors to index in advance.

  • Several modifications have been developed to speed up the approach.

Note that OBIndex2 is research code. The authors are not responsible for any errors it may contain. Use it at your own risk!

Conditions of use

OBindex2 is distributed under the terms of the GPL3 License.

Related publication

The details of the algorithm are explained in the following publication:

iBoW-LCD: An Appearance-based Loop Closure Detection Approach using Incremental Bags of Binary Words
Emilio Garcia-Fidalgo and Alberto Ortiz
Submitted to IEEE RA-L and IROS 2018

A preprinted version can be found here. If you use this code, please cite:

@misc{Garcia-Fidalgo2018,
Author = {Emilio Garcia-Fidalgo and Alberto Ortiz},
Title = {{iBoW-LCD: An Appearance-based Loop Closure Detection Approach using Incremental Bags of Binary Words}},
Year = {2018},
Eprint = {arXiv:1802.05909}
}

Installation

ROS

  1. First of all, you have to install the following dependencies:
sudo apt-get install libboost-system-dev libboost-filesystem-dev
  1. If you are going to use the library as a ROS package, clone the repository into your workspace:
cd ~/your_workspace/src
git clone http://github.com/emiliofidalgo/obindex2.git
  1. Next, compile the package using, as usual, the catkin_make command:
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release
  1. Finally, you can run an example with:
rosrun obindex2 test_search /directory/of/images

Standalone

  1. First of all, you have to install the following dependencies:
sudo apt-get install libboost-system-dev libboost-filesystem-dev
  1. You should follow a standard CMake building process using the lib directory:
git clone http://github.com/emiliofidalgo/obindex2.git
cd obindex2/lib
mkdir build
cd build
cmake ..
make -j4
  1. Finally, you can run an example with:
./test_search /directory/of/images

Usage

For an example of use, see the demo file lib/tests/test_search.cc.

Contact

If you have problems or questions using this code, please contact the author (emilio.garcia@uib.es). Feature requests and contributions are totally welcome.

About

Online Binary Image Index 2

Resources

License

Stars

Watchers

Forks

Packages

No packages published