See figure 2.13.
These functions are useful for joining many small images together to make one large image. They can cope with unstable contrast, and arbitary sub-image layout, but will not do any geometric correction. The mosaicing functions can be grouped into layers:
The lowest level functions are im_correl()
. and im_affine()
.
im_correl()
searches a large image for a small sub-image, returning
the position of the best sub-image match. im_affine()
performs
a general affine transform on an image: that is, any transform in which
parallel lines remain parallel.
Next, im_lrmerge()
and im_tbmerge()
blend two images together
left-right or up-down.
Next up are im_lrmosaic()
and im_tbmosaic()
. These use the
two low-level merge operations to join two images given just an approximate
overlap as a start point. Optional extra parameters let you do 'balancing'
too: if your images have come from a source where there is no precise
control over the exposure (for example, images from a tube camera, or a
set of images scanned from photographic sources), im_lrmosaic()
and im_tbmosaic()
will adjust the contrast of the left image to
match the right, the right to the left, or both to some middle value.
The functions im_lrmosaic1()
and im_tbmosaic1()
are first-order
analogues of the basic mosaic functions: they take two tie-points and use
them to rotate and scale the right-hand or bottom image before starting to join.
Finally, im_global_balance()
can be used to re-balance a mosaic
which has been assembled with these functions. It will generally do a
better job than the low-level balancer built into im_lrmosaic()
and im_tbmosaic()
. See the man page. im_remosaic()
uses the same
techniques, but will reassemble the image from a different set of source
images.