IMAGE commands


PROGRAM NAME

igeowarp - Perform Direct Bilinear Geometric Warping

DESCRIPTION

igeowarp is used to apply a direct bilinear warping to an image. In this mode, the bilinear mapping equations give the mapping of output data coordinates to input data coordinates. A given output data coordinate is operated on by the mapping functions to give the input data coordinate. The value of the input data coordinate is interpolated using bilinear interpolation, and the resulting value is assigned to the output data coordinate.

All warping is assumed to occur only in the WxH plane. If warping in a different plane is desired, it is necessary to use the kaxis program to reorient the data such that the desired plane is the WxH plane before applying igeowarp. This limitation is due to computational complexity and performance issues, particularly when dealing with large data sets.

The mapping functions used by igeowarp are:

f(w,h) = output image

g(w',h') = input image coordinate

w' = a00 + a01*w + a10*h +a11*w*h h' = b00 + b01*w + b10*h +b11*w*h

Note that in general, w' and h' are not integers for a given integer pair w and h. The data value at g(w',h') is obtained by bilinear interpolation of the four nearest neighbors to coordinate (w',h').

The mapping is called direct because it directly gives the location in the input data that corresponds to a given location in the output data. The opposite case gives the location in the output data that corresponds to a given input data location; this requires much trickier and computationally expensive interpolation methods to obtain good results.

The input parameters a00, a01, a10, a11, b00, b01, b10, b11 are exactly as specified in the mapping functions above. These parameters can also be supplied in the form of object value data where the data is assumed to be organized with the parameters a00, a01, a10, and a11 present in that storage order for the W coefficients and likewise for the H coefficients.

If the input object has a mask, a new mask will be computed for the output object indicating which data points contain reliable data.

If the input object has a map, the data is pulled through the map prior to rotation, and the output object will have no map.

The -planes flag is used to change the way the data is accessed for processing. If the data set is small enough that individual planes of data (including the E data) parallel to the WxH plane will fit in memory, then use of the -planes flag will permit processing to happen in a plane-by-plane basis; this can occur with efficiency and speed. Otherwise, processing will occur in prisms down the D axis, which is much slower but will work on data sets of any size. If you have lots of memory, you may be able to get away with using -planes even for quite large data sets, say around 2Kx2K or more points per plane.

REQUIRED ARGUMENTS

-i
type: infile
desc: Input data object
-o
type: outfile
desc: Output data object

Mutually Exclusive Group; you must specify ONE of:

-wcoeffs
type: infile
desc: W warp function coeffs object
default: {none}
OR

ALL OF the Mutually Inclusive Group:

-a00
type: double
desc: A00 (W warp function, constant term)
default: 0
bounds: -100 < [-a00] < 100
AND
-a01
type: double
desc: A01 (W warp function, w term)
default: 0
bounds: -100 < [-a01] < 100
AND
-a10
type: double
desc: A10 (W warp function, h term)
default: 0
bounds: -100 < [-a10] < 100
AND
-a11
type: double
desc: A11 (W warp function, wh term)
default: 0
bounds: -100 < [-a11] < 100

Mutually Exclusive Group; you must specify ONE of:

-hcoeffs
type: infile
desc: H warp function coeffs object
default: {none}
OR

ALL OF the Mutually Inclusive Group:

-b00
type: double
desc: B00 (H warp function, constant term)
default: 0
bounds: -100 < [-b00] < 100
AND
-b01
type: double
desc: B01 (H warp function, w term)
default: 0
bounds: -100 < [-b01] < 100
AND
-b10
type: double
desc: B10 (H warp function, h term)
default: 0
bounds: -100 < [-b10] < 100
AND
-b11
type: double
desc: B11 (H warp function, wh term)
default: 0
bounds: -100 < [-b11] < 100

OPTIONAL ARGUMENTS

-planes
type: flag
desc: Process data by full planes instead of small prisms

EXAMPLES

SEE ALSO

irotate(1)

RESTRICTIONS

For this initial release, the E dimension data is not handled correctly. Data in WxHxD is handled correctly. This deficiency will be corrected in the next version of igeowarp.

REFERENCES

COPYRIGHT

Copyright (C) 1993 - 1997, Khoral Research, Inc. ("KRI") All rights reserved.