[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: poly_2d
pfis@mytec.com writes:
>I am using poly_2d to warp an image. I am using 3 parameters for each
>coordinate (e.g. xnew=a+bx+cy and similar for ynew). My problem is I am
>having trouble choosing 'a' such that the center of the image (actually pixel
>[64,64] of a 128x128 image) does not move. Using a=fix(-64.*(b+c-1.)) keeps
>the center stationary to about 1 pixel which is not good enough. I wrote my
>own version of the warping program which does what I want but is slower than
>poly_2d. Any help would be appreciated.
I don't understand why you're using the FIX() function. I'm quite sure that
the input parameters to POLY_2D can (and should) be floating point.
In my own software, I use slightly different values of the parameter you call
A, depending on whether or not nearest neighbor interpolation is going to be
used. If I am using nearest neighbor, then I add 0.5 to A, specifically to
avoid the problem that you're encountering. In your example, this would be
A = -64.*(b+c-1.) + 0.5
However, for bilinear or cubic interpolation, I do not include the extra 0.5,
so that
A = -64.*(b+c-1.)
William Thompson