blob: 8192075b712c2de261dc92b814c17256480d90e1 [file] [log] [blame]
.TH IM_LRMOSAIC 3 "13 May 1991"
.SH NAME
im_lrmosaic, im_tbmosaic \- mosaic two images using a zero order procedure
.SH SYNOPSIS
#include <vips/vips.h>
int
.br
im_lrmosaic( IMAGE *ref, IMAGE *sec, IMAGE *out,
.br
int bandno,
.br
int xref, int yref, int xsec, int ysec,
.br
int halfcorrelation, int halfarea,
.br
int balancetype,
.br
int mwidth )
int
.br
im_tbmosaic( IMAGE *ref, IMAGE *sec, IMAGE *out,
.br
int bandno,
.br
int xref, int yref, int xsec, int ysec,
.br
int halfcorrelation, int halfarea,
.br
int balancetype,
.br
int mwidth )
.SH DESCRIPTION
im_lrmosaic() and im_tbmosaic() are used to mosaic two images (left-right and
top-bottom respectively). Both input images are held by the IMAGE descriptors
reference and secondary whereas the output is written on the IMAGE descriptor
out.
In order to carry out mosaicing, the coordinates of one tie point are
required. The tie point is expected to be in the overlapping area and has
coordinates (xref, yref) on the reference image and (xsec, ysec) on the
secondary image. The tie-point is not used as a start point for the search,
but is used to specify the overlap of the two images.
The functions split the overlap area into three parts (top, middle and bottom;
or left, middle and right) and search the reference image in each part for the
20 best high contrast points. These 60 points are then searched for in the
secondary image, giving a set of 60 possible corrected vectors.
A straight line is fitted through the 60 vectors, and points discarded which
lie a significant distance from the line. The line is then refitted to the
remaining points, and the process repeated until either all remaining points
lie on a straight line, or too many points have been discarded.
If a good straight line fit is found, ref and sec are joined. If no fit was
found, the functions fail with an error message. Note that these functions
detect rotation: if the straight line found requires sec to be rotated, they
also fail with an error message.
Each function requires three more parameters:
halfcorrelationsize - sets the size of the fragments of ref
for which the function searches sec. The actual window
will be of size 2*halfcorrelationsize+1. We recommend a
value of 5.
halfareasize - sets the size of the area of sec that is
searched. The actual area searched will be of size
2*halfareasize+1. We recommend a value of 14.
balancetype - sets the style of the balancing the functions
perform. Balancing finds the average value of pixels in
the overlap area, and scales the left and right images
(or top and bottom images) so as to make the images
match in average overlap. Possible values are:
0 - means do no balancing.
1 - means keep the left image unadjusted and adjust
the contrast of the right image to match the left.
2 - means keep the right image unadjusted and scale
the left image to match it.
3 - means adjust the contrast of both the left and
right images to bring both averages to a middle
value. The middle value chosen is weighted by the
number of pixels in each image: large images will be
adjusted less than small images.
Balancing is useful for mosaicing frames from photographic or video sources
where exact colour control is impossible and exposure varies from frame to
frame. Balancing is only allowed for uncoded uchar images.
The final "mwidth" parameter sets the maximum blend width, see im_lrmerge(3).
See also im_global_balance() for a better way of balancing large mosaics.
.SH RETURN VALUE
All functions return 0 on success and -1 on error.
.SH SEE ALSO
im_lrmerge(3), im_tbmerge(3), im_global_balance(3).