ARIGS Image Mosaicking 3-D Object Modeling

If we take pictures of a planar scene, such as a large wall, or a remote scene (scene at infinity), or if we shoot pictures with the camera rotating around its center of projection, we can stitch the pictures together to form a single big picture of the scene. This is called image mosaicking. The relationship between any two pictures or views is defined by a 3x3 matrix called homography, which can be computed by 8 correpondending points from these two views. Once the homographies between a reference view and all other views are known, it's easy to transform an image point in one view to the reference view and thus to stitch the views together. A very readable treatment of image mosaicking is [1].

Robust matching

The sole important part in image mosacking is to find correspondences between different views. There is no parallex between views in a planar projection. If we assume the surfaces are Lambertian, the pixel values of every scene point would be exactly the same across views (ignoring lense effect such as vignetting). A simple cross-correlation type matcher should work. There are inevitably false matches. These false matches, outliers as being called, could easily screw up a simple linear-least-square estimation of the homography. A robust method must be applied to get rid of these outliers. The code provided below uses RANSAC and removes the outliers very effectively.


My officeMy office
The robotics lab The robotics lab.


The C++ code should compile on most platforms. See included README file for compiling instructions and usage. It should work for most scenes with enough texture.

Download the source tar ball.