Generalized Dual Bootstrap-ICP Software Guide


Generalized Dual Bootstrap-ICP is a fully-automated 2D image registration algorithm. It is designed to register two images taken of the same scene, although perhaps at different times and from different viewpoints. By "fully-automated" we mean that it includes an initialization technique, an estimation algorithm, and a decision step. If two images have even a moderate amount of overlap and common structure, Generalized Dual-Bootstrap usually succeeds. It can handle substantial illumination differences between images and substantial physical changes in the scene as well. Our limited experimentation with multimodal images suggests that it can align these when similar geometric structures appear in the images. On the other hand, when given two images that do not overlap or do not contain sufficient common structure, Generalized Dual-Bootstrap usually does not produce an alignment between images. Instead it indicates that the images can not be registered. The algorithm can handle image-wide parametric transformations between images including affine, plane projective (homographies), and quadratic transformations. It also accommodates radial-lens distortion in the planar homography. On the other hand, it can not yet handle significant inter-image parallax, 3D images, more than 2 images, or local deformations. Moreover, the implementation is not particularly fast. All of these are part of ongoing work. Thus, the goal of providing this executable is for an experimental evaluation of the power of the Generalized Dual-Bootstrap on a wi"de-variety of challenging image pairs.

Details of some of the algorithms can be found in our latest tech report. This work was supported by the NSF Center for Subsurface Sensing and Imaging Systems, the NSF Experimental Partnerships Program, and the US Army Intelligence and Security Command. The software contains copyrighted implementations of patented and patent-pending algorithms and is therefore provided for experimental purposes only.

As a final preliminary note, the algorithm most often fails when it is unable to generate a reasonable initial transformation estimate. We know of several such image pairs but would appreciate learning about others. Therefore, if you have any overlapping image pairs for which the algorithm fails, we would very much appreciate your sharing them with us. Please contact Prof. Chuck Stewart (stewart at or Gehua Yang (yangg2 at

Download (see Changelog)

How to run the executable

The implementation of the algorithm is provided as an executable, named gdbicp, which runs from a command shell. The usage of the executable is explained as follows:

gdbicp [image file name 1] [image file name 2] [-mask_from string] [-mask_to string] [-model integer] [-debug integer] [-invert] [-complete] [-xform_as_to]

Result files

If gdbicp fails to align the two images, it will print out "Registration failed" and quit. When it succeeds the following files will be generated in the current directory:


  1. Due to intensive memory usage, try to make the image resolution in the range of 400 to 2000 per dimension.
  2. The two images to be registered shall be either grayscale (1 channel) or color (3 channels). Mixing both is not encouraged.
  3. 16-bit image types are now supported! (either PNG or TIFF file formats are recommended)


Please send comments or questions to Prof. Chuck Stewart (stewart at or Gehua Yang (yangg2 at

Back to project page

click here for the download counts
Last modified Date: May 29 2014