| 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 matchingThe 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. Examples The robotics lab.
CodeThe 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.References |