Table of Contents

## Name

im_lrmosaic, im_tbmosaic - mosaic two images using a zero order procedure

## Synopsis

#include <vips/vips.h>

int
im_lrmosaic( IMAGE *ref, IMAGE *sec, IMAGE *out,
`` `` int bandno,
`` `` int xref, int yref, int xsec, int ysec,
`` `` int halfcorrelation, int halfarea,
`` `` int balancetype,
`` `` int mwidth )

int
im_tbmosaic( IMAGE *ref, IMAGE *sec, IMAGE *out,
`` `` int bandno,
`` `` int xref, int yref, int xsec, int ysec,
`` `` int halfcorrelation, int halfarea,
`` `` int balancetype,
`` `` int mwidth )

## 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.

## Return Value

All functions return 0 on success and -1 on error.

## See Also

im_lrmerge(3) , im_tbmerge(3) , im_global_balance(3) .

Table of Contents

- Name
- Synopsis
- Description
- Return Value
- See Also