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 command-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 polynomi-
als 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 transfor-
mation 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 usually
enough to use low-order polynomials (up to 3rd degree),
because higher orders would introduce oscillations, produc-
ing undesirable rippling in the warped image. See the ade-
quate litterature about detector distorsions.
For distortion corrections, it is possible to use in option
the TFITS files produced by the ISAAC calibration recipes
'isaacp arc' and 'isaacp startrace' and that contain the
distortion polynomials.
Resampling is done with kernel-based interpolations. Several
kernels are offered: sinc, square sinc, Lanczos2, Hamming,
Hann, and tanh (a hyperbolic tangent based window). The
default kernel is tanh, see the adequate litterature about
interpolation kernels to learn more. The command has an
option that only "shows" the kernels it has available, pro-
ducing 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 gnuplot.
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. Nega-
tive 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 possible.
-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. Provide
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
equivalent:
> 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 defor-
mations 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 polynomial
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 polynomial
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
--sub
Flag to simply perform a subsampling of the input image
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, interpo-
late 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 extension
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 rela-
tive to the pixel (0,0), i.e. the lower left pixel of the
image.
Radial transforms are not implemented yet.