Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado
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. Regards, Phil ----- Posted via NewsOne.Net: Free (anonymous) Usenet News via the Web ----- http://newsone.net/ -- Free reading and anonymous posting to 60,000+ groups NewsOne.Net prohibits users from posting spam. If this or other posts made through NewsOne.Net violate posting guidelines, email abuse@newsone.net
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