emiliofidalgo / bimos

Binary descriptor-based Image Mosaicing
GNU General Public License v3.0
24 stars 14 forks source link

BIMOS

BIMOS (Binary descriptor-based Image Mosaicing) is an open source image mosaicing algorithm which can produce seamless mosaics on different scenarios and camera configurations in a reasonable amount of time. It is based on a multi-threaded mosaicing architecture that permits decoupling the strategic steps involved in the process, speeding up the time required to estimate the final topology. In order to find the existent relations between the images, BIMOS employs [OBIndex] (http://github.com/emiliofidalgo/obindex), a binary BoW scheme that is built online, allowing the use of binary descriptors to accelerate the image description process.

The algorithm can generate mosaics from sequences where consecutive frames present enough overlap between them. BIMOS assumes that either the scene is planar or the distance from the camera to the scene is high enough so as to neglect the depth changes. It is also assumed that the camera is more or less perpendicular to the scene and at a more or less constant distance. Note that BIMOS is not a solution for generating rotational panoramas.

BIMOS is released as a ROS package, and relies on OpenCV, Ceres Solver, OBIndex and Boost libraries. Note that BIMOS is research code. The authors are not responsible for any errors it may contain. Use it at your own risk!

Related publications

BIMOS was presented at ICRA conference. If you use BIMOS, we will be grateful if you cite:

Fast Image Mosaicing using Incremental Bags of Binary Words
Emilio Garcia-Fidalgo, Alberto Ortiz, Francisco Bonnin-Pascual and Joan P. Company
IEEE International Conference on Robotics and Automation (ICRA), pp. 1174-1180. Stockholm (Sweden), 2016

Conditions of use

BIMOS is distributed under the terms of the [GPL3 License] (http://github.com/emiliofidalgo/bimos/blob/master/LICENSE).

Installation

This installation process has been tested and verified using Ubuntu 14.04.1 LTS and ROS Indigo, but other configurations should also work.

  1. First of all, follow the instructions to install [OBIndex] (http://github.com/emiliofidalgo/obindex) in your workspace.

  2. Install BIMOS dependencies:

    $ sudo apt-get install libceres-dev   
    $ sudo apt-get install libsuitesparse-dev   
  3. Clone the repository into your workspace:

    $ cd ~/your_workspace/src   
    $ git clone https://github.com/emiliofidalgo/bimos.git`   
  4. Compile the package using catkin_make:

    $ cd ..   
    $ catkin_make -DCMAKE_BUILD_TYPE=Release   
  5. Launch BIMOS:

    $ roslaunch bimos bimos.launch   

Usage

GUI

We composed a simple rqt-based GUI to interact with BIMOS. To load the interface, open a new terminal and execute:

$ rqt   

Next, go to 'Perspectives - Import...' and open the file resources/bimos.perspective stored in the root package directory. You should see a window like this:

BIMOS Interface

The three different parts that the interface presents are:

  1. The commands that can be send to interact with BIMOS.

  2. A graph viewer to see the topology while it is estimated. This component is for debugging purposes and can introduce performance issues when building large mosaics. For more information, see the pub_debug_info option.

  3. A dynamic_reconfigure component to set the different mosaicing options. The options are detailed in the following section.

Options

Before generating a mosaic, some BIMOS options should be set according to the conditions of your dataset.

Creating a mosaic

Valldemossa

Known limitations

Contact

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