Name warping - resample a frame according to a geometrical transformation Synopsis warping [parameters] [options] <in> [out] Description warping is used to resample images according to a given geometrical transformation. Supported transformations for the moment are: Integer Integer transformations account for translations with integer offsets and rotations of multiples of 90 degrees. No resampling is performed in these cases, only pixel shifts. Integer transformations are declared on the com- mand-line exactly as linear transformations. The command will decide to go to integer pixel shifts if it notices that the input parameters are actually integer. Linear Linear transforms are covering translations, rotations, scale changes (zoom). It is also possible to provide your own expression of a linear transform as two linear polyno- mials of x and y. Notice that the transform is then direct: it transforms pixels from the original image into pixels in the warped image. Polynomial General polynomial transformations are of any degree in x and y. Provide on the command-line the degrees for x, y, and the associated coefficient. It is possible to specify only a x or y transformation. The other direction trans- formation will then be Id. Notice that the transform is then reversed (opposite of linear): it transforms pixels in the warped image back into pixels in the original image. If you are trying to fit detector distorsions, it is usu- ally enough to use low-order polynomials (up to 3rd degree), because higher orders would introduce oscilla- tions, producing undesirable rippling in the warped image. See the adequate litterature about detector distorsions. For distortion corrections, it is possible to use in option the TFITS files produced by the ISAAC calibration recipes is_spec_arc and is_spec_startrace and that contain the distortion polynomials. Resampling is done with kernel-based interpolations. Sev- eral kernels are offered: sinc, square sinc, Lanczos2, Hamming, Hann, and tanh (a hyperbolic tangent based win- dow). The default kernel is tanh, see the adequate litter- ature about interpolation kernels to learn more. The com- mand has an option that only "shows" the kernels it has available, producing the interpolation window on stdout. By re-directing this output to a text file, it should be easy to visualize them with any plotting tool such as gnu- plot. Parameters Linear transforms (includes integer transforms) -t or --translate tx ty provides tx and ty for a translation vector. This option can be combined with a rotation (-r) and/or a scaling (-s) option. -r or --rotate angle provides an angle for the rotation, in degrees. Negative angles are accepted. The rotation center is the center of the image. -s or --scale factor provides a scaling factor. This factor needs not be integer, i.e. a scaling by a factor 1.4142 is pos- sible. -T or --transform `p1 p2 p3 p4 p5 p6' If you know the expression of a linear transform to apply, you can provide it through this option. Pro- vide 6 parameters p1...p6. Enclose the parameters in simple quotes. They are defined as a forward affine transform from the input image to the output image. If (x,y) are coordinates in the input image and (u,v) coordinates in the output image, then: u = p1.x + p2.y + p3 v = p4.x + p5.y + p6 For example, to apply a scale change of a factor 2 and a translation vector of (+100,-50), both commands are equiv- alent: > warping -s 2 -t `100 -50' image.fits > warping -T `2 0 100 0 2 -50' image.fits Providing a linear transform allows also other image deformations than just rotation, scale and translation. Polynomial transforms Polynomial transforms need be expressed in a reversed way: if (u,v) are the coordinates of a pixel in the warped image, and (x,y) in the original image, the polynomial needs to be expressed as: x = Px(u,v) y = Py(u,v) Provide the two polynomial expressions through the -u and -v options. The polynomial format on the command-line is the following: A polynomial is given by triplets of values. The first value indicates the degree for u, the second one the degree for v, and the third value is the multiplicative coefficient. For example, 3.u^2.v is written as: 2 1 3 Another example: the polynomial is 3 + 4.u^2 + v The expression is: 0 0 3 2 0 4 0 1 1 -u or --polyu du dv c0 ... du dv cn Provides the coefficients for Px(u,v). -v or --polyv du dv c0 ... du dv cn Provides the coefficients for Py(u,v) -A or --arcfile file.tfits The specified file is a table with the 2d polyno- mial that was created by is_spec_arc and that describes the slit curvature distortion -S or --sttrfile file.tfits The specified file is a table with the 2d polyno- mial that was created by is_spec_startrace and that describes the startrace distortion Resampling kernels -k or --kernel name Choose the interpolation kernel used to resample the image. Possible choices are: sinc - "ideal" filter (for infinite signals) sinc2 - square sinc lanczos - Lanczos function (2nd order) hamming - Hamming function hann - Hann function tanh - Hyperbolic tangent default - default is tanh kernel If you do not know what these functions refer to, it is recommended not to modify them. See documentation about image warping to learn more about these kernels. -w or --write This option will have a kernel generated then printed out to stdout. No further processing will be done. The output data can be redirected to a file, and/or plotted by any graphical 2d plotter (e.g. gnuplot). Example: > warping -k hamming -w > hamming.dat Algorithm Resampling is done by applying a resampling kernel in image space, over the 16 closest neighbors. The algorithm is the following: For each pixel position in the resulting image, compute the position of the source pixel in the original image, interpolate its value over the 16 closest neighbors with the chosen kernel. Pixel positions falling out of the original image are assigned a null value. Files Input files shall all comply with FITS format. Bugs The interpolation over 16 neighbors implies border effects which are not handled. Interpolation artifacts can be seen close to high spatial frequencies (especially on bad pix- els). Only images shall be warped, not data cubes. This exten- sion may be implemented in a future release. In linear transforms: applying only a rotation turns the image around its center. If you try to combine a rotation and a scaling or a translation, rotation is then done rel- ative to the pixel (0,0), i.e. the lower left pixel of the image. Radial transforms are not implemented yet.