<<prev file | next file >>    view single page | view frames    summary: fields | routine    details: routine

Interpolation/

quadrilateral2square.pro

warm (or map) an arbitrary quadrilateral onto a unit square according to the 4-point correspondences: - (x0,y0) -> (0,0) - (x1,y1) -> (1,0) - (x2,y2) -> (1,1) - (x3,y3) -> (0,1) This is the inverse function of square2quadrilateral. The mapping is done using perspective transformation which preserve lines in all orientations and permit quadrilateral to quadrilateral mappings. see ref. below.

topquadrilateral2square Picture, Grid

result = quadrilateral2square(x0in, y0in, x1in, y1in, x2in, y2in, x3in, y3in, xxin, yyin, PERF=salar 0 or 1, DOUBLE=salar 0 or 1)

Return value

(2,n) array: the new coordinates (xout,yout) of the (xin,yin) point(s) after mapping. If xin is a scalar, then n is equal to the number of elements of x0. If xin is an array, then n is equal to the number of elements of xin.

Parameters

x0in        in required

y0in        in required

x1in        in required

y1in        in required

x2in        in required

y2in        in required

x3in        in required

y3in        in required

the coordinates of the quadrilateral (see above for correspondence with the unit square). Can be scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are given in the anticlockwise order.

xxin        in required

the coordinates of the point(s) for which we want to do the mapping. Can be scalar or array.

yyin        in required

the coordinates of the point(s) for which we want to do the mapping. Can be scalar or array.

Keywords

PERF        type: salar 0 or 1 default: 0

activate to print the elapsed time spent within quadrilateral2square

DOUBLE        type: salar 0 or 1 default: 0

activate to perform double precision computation

Examples

IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 IDL> tracegrille, findgen(11)*.1, findgen(11)*.1,color=indgen(12)*20 IDL> xin = (findgen(11)*.1)#replicate(1, 11) IDL> yin = replicate(1, 11)#(findgen(11)*.1) IDL> out = square2quadrilateral(2,1,3,0,5,1,2,3, xin, yin) IDL> tracegrille, reform(out[0,*],11,11), reform(out[1,*],11,11),color=indgen(12)*20 IDL> inorg=quadrilateral2square(2,1,3,0,5,1,2,3,out[0,*],out[1,*]) IDL> tracegrille, reform(inorg[0,*],11,11), reform(inorg[1,*],11,11),color=indgen(12)*20

Version history

Version

$Id: quadrilateral2square.pro 372 2008-08-08 12:31:53Z pinsard $

History

Sebastien Masson (smasson@lodyc.jussieu.fr) August 2003 Based on "Digital Image Warping" by G. Wolberg IEEE Computer Society Press, Los Alamitos, California Chapter 3, see p 52-56

Known issues

Restrictions

I think degenerated quadrilateral (e.g. flat of twisted) is not work. This has to be tested.

Statistics

McCabe cyclic 8
McCabe essential 1
McCabe modular design 1
Produced by IDLdoc 2.0.