Interpolation/
square2quadrilateral.pro
warm (or map) a unit square onto an arbitrary quadrilateral
according to the 4-point correspondences:
(0,0) -> (x0,y0)
(1,0) -> (x1,y1)
(1,1) -> (x2,y2)
(0,1) -> (x3,y3)
The mapping is done using perspective transformation which preserve
lines in all orientations and permit quadrilateral to quadrilateral
mappings. see ref. below.
square2quadrilateral
Picture, Grid
result = square2quadrilateral(x0in, y0in, x1in, y1in, x2in, y2in, x3in, y3in[, xxin][, yyin], 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.
If xin and yin are omitted, square2quadrilateral returns the
matrix A which is used for the inverse transformation.
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
optional
first coordinates of the point(s) for which we want to do the mapping.
yyin
in
optional
second coordinates of the point(s) for which we want to do the mapping.
Keywords
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
Version history
Version
$Id: square2quadrilateral.pro 358 2008-04-28 09:41:14Z 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.
Produced by IDLdoc 2.0.