Content-type: text/html Man page of mlib_ImagePolynomialWarpTable

mlib_ImagePolynomialWarpTable

Section: mediaLib Library Functions (3MLIB)
Updated: 2 Mar 2007
Index Return to Main Contents
 

NAME

mlib_ImagePolynomialWarpTable - polynomial-based image warp with table-driven interpolation  

SYNOPSIS

cc [ flag... ] file... -lmlib [ library... ]
#include <mlib.h>

mlib_status mlib_ImagePolynomialWarpTable(mlib_image *dst,
    const mlib_image *src, const mlib_d64 *xCoeffs,
    const mlib_d64 *yCoeffs, mlib_s32 n, mlib_d64 preShiftX,
    mlib_d64 preShiftY, mlib_d64 postShiftX, mlib_d64 postShiftY,
    mlib_d64 preScaleX, mlib_d64 preScaleY, mlib_d64 postScaleX,
    mlib_d64 postScaleY, const void *interp_table, mlib_edge edge);

 

DESCRIPTION

The mlib_ImagePolynomialWarpTable() function performs a polynomial-based image warp with table-driven interpolation.

The images must have the same type, and the same number of channels. The images can have 1, 2, 3, or 4 channels. The data type of the images can be MLIB_BYTE, MLIB_SHORT, MLIB_USHORT, or MLIB_INT. The source and destination images may have different sizes.

The xCoeffs and yCoeffs parameters must contain the same number of coefficients of the form (n + 1)(n + 2)/2 for some n, where n is the degree power of the polynomial. The coefficients, in order, are associated with the terms:

1, x, y, x**2, x*y, y**2, ...,
x**n, x**(n-1)*y, ..., x*y**(n-1), y**n

and coefficients of value 0 cannot be omitted.

The image pixels are assumed to be centered at .5 coordinate points. In other words, the upper-left corner pixel of an image is located at (0.5, 0.5).

For each pixel in the destination image, its center point D is backward mapped to a point S in the source image. Then the source pixels with their centers surrounding point S are selected to do the interpolation specified by interp_table to generate the pixel value for point D.

The mapping is defined by the two bivariate polynomial functions X(x, y) and Y(x, y) that map destination (x, y) coordinates to source X and Y positions respectively.

The functions X(x, y) and Y(x, y) are:

preX = (x + preShiftX)*preScaleX

preY = (y + preShiftY)*preScaleY

          n    i
warpedX = SUM {SUM {xCoeffs_ij * preX**(i-j) * preY**j}}
         i=0  j=0

          n    i
warpedY = SUM {SUM {yCoeffs_ij * preX**(i-j) * preY**j}}
         i=0  j=0

X(x, y) = warpedX*postScaleX - postShiftX

Y(x, y) = warpedY*postScaleY - postShiftY

The destination (x, y) coordinates are pre-shifted by (preShiftX, preShiftY) and pre-scaled by the factors preScaleX and preScaleY prior to the evaluation of the polynomial. The results of the polynomial evaluations are scaled by postScaleX and postScaleY, and then shifted by (-postShiftX, -postShiftY) to produce the source pixel coordinates. This process allows for better precision of the results and supports tiled images.  

PARAMETERS

The function takes the following arguments:

dst

Pointer to destination image.

src

Pointer to source image.

xCoeffs

Destination to source transform coefficients for the X coordinate.

yCoeffs

Destination to source transform coefficients for the Y coordinate.

n

Degree power of the polynomial.

preShiftX

Displacement to apply to destination X positions.

preShiftY

Displacement to apply to destination Y positions.

postShiftX

Displacement to apply to source X positions.

postShiftY

Displacement to apply to source Y positions.

preScaleX

Scale factor to apply to destination X positions.

preScaleY

Scale factor to apply to destination Y positions.

postScaleX

Scale factor to apply to source X positions.

postScaleY

Scale factor to apply to source Y positions.

interp_table

Pointer to an interpolation table. The table is created by the mlib_ImageInterpTableCreate() function.

edge

Type of edge condition. It can be one of the following:

MLIB_EDGE_DST_NO_WRITE
MLIB_EDGE_SRC_PADDED

 

RETURN VALUES

The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.  

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPEATTRIBUTE VALUE

Interface StabilityCommitted

MT-Level

 

SEE ALSO

mlib_ImageInterpTableCreate(3MLIB), mlib_ImageInterpTableDelete(3MLIB), mlib_ImagePolynomialWarpTable_Fp(3MLIB), mlib_ImagePolynomialWarp(3MLIB), mlib_ImagePolynomialWarp_Fp(3MLIB), attributes(5)


 

Index

NAME
SYNOPSIS
DESCRIPTION
PARAMETERS
RETURN VALUES
ATTRIBUTES
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 02:38:18 GMT, October 02, 2010