[comp.graphics] Barrel like image transformation?

engeje@uts.uni-c.dk (Jacob Engelbrecht) (06/08/91)

I have a problem with an image I want to transform in an inverted 'barrel'
like manner, like this:

  ____  ____  ____  ____  ____         ____  ____  ____  ____  ____

   ____  ____ ____ ____  ____          ____  ____  ____  ____  ____

    ____ ____ ____ ____ ____           ____  ____  ____  ____  ____
                              ----->
    ____ ____ ____ ____ ____           ____  ____  ____  ____  ____

   ____  ____ ____ ____  ____          ____  ____  ____  ____  ____

  ____  ____  ____  ____  ____         ____  ____  ____  ____  ____


if D is the distorted image and C is the corrected image then I have
in mind to use an indirect polynomial transform:

C_x = a_0 + a_1*D_x + a_2*D_y + a_3*D_x^2 + a_4*D_y^2 + a_5*D_x*D_y

C_y = b_0 + b_1*D_x + b_2*D_y + b_3*D_x^2 + b_4*D_y^2 + b_5*D_x*D_y

I will determine the a's and b's using control points in the image
and the methods of least squares.  This method is supposedly used
for transforming sattelite images. Rotation can also be acomplished
which may also be important in my case.

My questions are:

1) Is this the method of choice or are there simpler methods that
can solve the same problem?

2) Has any one implemented this method (preferable i C) or other
methods to solve the same problem?


Jacob Engelbrecht
Dept. of Structural Properties of Materials
The Technical University of Denmark
                                       
E-mail: engeje@uts.uni-c.dk