aboutsummaryrefslogtreecommitdiff
path: root/pkg/images/imgeom/doc
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /pkg/images/imgeom/doc
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'pkg/images/imgeom/doc')
-rw-r--r--pkg/images/imgeom/doc/blkavg.hlp65
-rw-r--r--pkg/images/imgeom/doc/blkrep.hlp103
-rw-r--r--pkg/images/imgeom/doc/im3dtran.hlp94
-rw-r--r--pkg/images/imgeom/doc/imlintran.hlp184
-rw-r--r--pkg/images/imgeom/doc/imshift.hlp125
-rw-r--r--pkg/images/imgeom/doc/imtrans.hlp69
-rw-r--r--pkg/images/imgeom/doc/magnify.hlp202
-rw-r--r--pkg/images/imgeom/doc/rotate.hlp164
-rw-r--r--pkg/images/imgeom/doc/shiftlines.hlp119
9 files changed, 1125 insertions, 0 deletions
diff --git a/pkg/images/imgeom/doc/blkavg.hlp b/pkg/images/imgeom/doc/blkavg.hlp
new file mode 100644
index 00000000..c4491788
--- /dev/null
+++ b/pkg/images/imgeom/doc/blkavg.hlp
@@ -0,0 +1,65 @@
+.help blkavg Oct85 images.imgeom
+.ih
+NAME
+blkavg -- block average or sum n-dimensional images
+.ih
+USAGE
+.nf
+blkavg input output b1 b2 b3 b4 b5 b6 b7
+.fi
+.ih
+PARAMETERS
+.ls input
+List of images to be block averaged. Image sections are allowed.
+.le
+.ls output
+List of output image names. If the output image name is the same as the input
+image name then the block averaged image replaces the input image.
+.le
+.ls b1
+The number of columns to be block averaged (dimension 1, or x).
+.le
+.ls b2
+The number of lines to be block averaged (dimension 2, or y).
+.le
+.ls b3
+The number of bands to be block averaged (dimension 3, or z).
+.le
+.ls b4
+The number of pixels to be block averaged in dimension 4 (... etc. for b5-b7).
+.le
+.ls option = "average"
+Type of block average. The choices are "average" and "sum".
+.le
+.ih
+DESCRIPTION
+The list of input images are block averaged or summed to form the output images.
+The output image names are specified by the output list. The number of
+output image names must be the same as the number of input images.
+An output image name may be the same
+as the corresponding input image in which case the block averaged image replaces
+the input image. The last column, line, etc. of the output image may be
+a partial block. The option parameter selects whether to block average
+or block sum.
+.ih
+TIMINGS
+It requires approximately 10 cpu seconds to block average a 512 by 512
+short image by a factor of 8 in each direction (Vax 11/750 with fpa).
+.ih
+EXAMPLES
+1. To block average a 2-d image in blocks of 2 by 3:
+
+ cl> blkavg imagein imageout 2 3
+
+2. To block sum two 2-d images in blocks of 5 by 5:
+
+ cl> blkavg image1,image2 out1,out2 5 5 op=sum
+
+3. To block average a 3-d image by 4 in x and y and 2 in z:
+
+ cl> blkavg imagein imageout 4 4 2
+
+ or
+
+ cl> blkavg imagein imageout b1=4 b2=4 b3=2
+.endhelp
diff --git a/pkg/images/imgeom/doc/blkrep.hlp b/pkg/images/imgeom/doc/blkrep.hlp
new file mode 100644
index 00000000..7f72616b
--- /dev/null
+++ b/pkg/images/imgeom/doc/blkrep.hlp
@@ -0,0 +1,103 @@
+.help blkrep Sep86 images.imgeom
+.ih
+NAME
+blkrep -- block replicate n-dimensional images
+.ih
+USAGE
+.nf
+blkrep input output b1 [b2 b3 b4 b5 b6 b7]
+.fi
+.ih
+PARAMETERS
+.ls input
+List of images to be block replicated. Image sections are allowed.
+.le
+.ls output
+List of output image names. If the output image name is the same as the input
+image name then the block replicated image replaces the input image.
+.le
+.ls b1, b2, b3, b4, b5, b6, b7
+Block replication factor for dimensions 1 - 7. Only the block factors for
+the dimensions of the input image are required. Dimension 1 is the column
+or x axis, dimension 2 is the line or y axis.
+.le
+.ih
+DESCRIPTION
+The list of input images are block replicated by the specified factors
+to form the output images. The output image names are specified by the
+output list. The number of output image names must be the same as the
+number of input images. An output image name may be the same as the
+corresponding input image in which case the block averaged image
+replaces the input image. Only the block factors for the dimensions
+of the input images are used.
+
+This task is a complement to \fBblkavg\fR which block averages or sums
+images. Another related task is \fBmagnify\fR which interpolates
+images to arbitrary sizes. This task, however, is only applicable to
+two dimensional images with at least two pixels in each dimension.
+Finally, in conjunction with \fBimstack\fR a lower dimensional image
+can be replicated to higher dimensions.
+.ih
+TIMINGS
+VAX 11/750 with FPA running UNIX 4.3BSD and IRAF V2.4:
+
+.nf
+ SIZE DATATYPE REPLICATION CPU CLOCK
+ 100 short 5 0.5s 1s
+ 100 real 5 0.5s 1s
+ 100x100 short 5x5 1.7s 5s
+ 100x100 real 5x5 2.1s 6s
+ 100x100x1 real 5x5x5 9.7s 33s
+.fi
+.ih
+EXAMPLES
+.ls 4 1.
+To block replicate a 1D image in blocks of 3:
+
+cl> blkrep imagein imageout 3
+.le
+.ls 4 2.
+To block replicate a 2D image in blocks of 2 by 3:
+
+cl> blkrep imagein imageout 2 3
+.le
+.ls 4 3.
+To block replicate two 2D images in blocks of 5 by 5:
+
+cl> blkrep image1,image2 out1,out2 5 5
+.le
+.ls 4 4.
+To block replicate a 3D image in place by factors of 2:
+
+cl> blkrep image1 image1 2 2 2
+.le
+.ls 4 5.
+To smooth an image by block averaging and expanding by a factor of 2:
+
+.nf
+cl> blkavg imagein imageout 2 2
+cl> blkrep imageout imageout 2 2
+.fi
+.le
+.ls 4 6.
+To take a 1D image and create a 2D image in which each line is the same:
+
+.nf
+cl> imstack image1d image2d
+cl> blkrep image2d image2d 1 100
+.fi
+.le
+.ls 4 7.
+To take a 1D image and create a 2D image in which each column is the same:
+
+.nf
+cl> imstack image1d image2d
+cl> imtranspose image2d image2d
+cl> blkrep image2d image2d 100 1
+.fi
+.le
+
+.ih
+SEE ALSO
+blkavg, imstack, magnify
+.endhelp
diff --git a/pkg/images/imgeom/doc/im3dtran.hlp b/pkg/images/imgeom/doc/im3dtran.hlp
new file mode 100644
index 00000000..68a2b0cd
--- /dev/null
+++ b/pkg/images/imgeom/doc/im3dtran.hlp
@@ -0,0 +1,94 @@
+.help im3dtran Jan97 images.imgeom
+.ih
+NAME
+im3dtran -- Transpose a 3D image
+.ih
+USAGE
+im3dtran input output
+.ih
+PARAMETERS
+.ls input
+The input 3d image.
+.le
+.ls output
+The output transposed 3D image. If the output image name is the same as
+the input image name then the original image will be overwritten. The number
+of output images must equal the number of input images.
+.le
+.ls new_x = 3
+The new x axis. The default (3) replaces new x with old z.
+.le
+.ls new_y = 2
+The new y axis = old axis. The default (2) does not change the y axis.
+.le
+.ls new_z = 1
+The new z axis. The default (1) replaces new z with old x.
+.le
+.ls len_blk = 128
+The size in pixels of the linear internal subraster. Im3dtran will try to
+transpose a subraster up to len_blk cubed at one time. Runtime is much
+faster with larger \fBlen_blk\fR, but the task may run out of memory.
+.le
+.ls verbose = yes
+Print messages about actions taken by the task.
+.le
+
+.ih
+DESCRIPTION
+
+IM3DTRAN transposes the input images \fIinput\fR in 3 dimensions and
+writes the transposed images to \fIoutput\fR. The 6 possible axis
+mappings are specified by setting the parameters \fInew_x\fR, \fInew_y\fR,
+and \fInew_z\fR.
+
+IM3DTRAN can be used to rotate a datacube 90 degrees in any direction by
+combining the transpose operation with an axis flip. For
+example, Consider a datacube is visualized with its origin at the lower
+left front
+when seen by the viewer, with its abscissa being the x axis, its ordinate
+the y axis, and its depth the z axis, with z increasing away from the viewer
+or into the datacube [this
+is a left-handed coordinate system]. To rotate the datacube
+by 90 degrees clockwise about the y axis when viewed from the +y direction;
+the old z axis must become the new x axis, and the old x axis must become
+the new z axis, while the new y axis remains old y axis. In this case the
+axis that must be flipped prior to transposition is the x axis as shown
+in example 2.
+
+The parameter \fBlen_blk\fR controls how much memory is used during the
+transpose operation. \fBlen_blk\fR elements are used in each axis at a
+time, or a cube len_blk elements on a side. If \fBlen_blk\fR is too large,
+the task will abort with an "out of memory" error. If it is too small,
+the task can take a very long time to run. The maximum size of len_blk
+depends on how much memory is available at the time IM3DTRAN is run,
+and the size and datatype of the image to be transposed.
+
+.ih
+EXAMPLES
+
+1. Transpose axes 1 2 and 3 of a list of input images to axes 2 1 and 3 of
+a list of output images.
+
+.nf
+ cl> im3dtran image1,image2,image3 tr1,tr2,tr3 2 1 3
+.fi
+
+2. For an input datacube with columns = x = abscissa, lines = y = ordinate,
+and bands = z = depth increasing away from viewer, and with the image
+origin at the lower left front, rotate datacube 90 degrees clockwise
+around the y axis when viewed from +y (top):
+
+.nf
+ cl> im3dtran input[-*,*,*] output 3 2 1
+.fi
+
+.ih
+TIMINGS
+
+.ih
+BUGS
+
+.ih
+SEE ALSO
+imtranspose, imjoin, imstack, imslice
+.endhelp
diff --git a/pkg/images/imgeom/doc/imlintran.hlp b/pkg/images/imgeom/doc/imlintran.hlp
new file mode 100644
index 00000000..f595ffda
--- /dev/null
+++ b/pkg/images/imgeom/doc/imlintran.hlp
@@ -0,0 +1,184 @@
+.help imlintran Dec98 images.imgeom
+.ih
+NAME
+imlintran -- shift, scale, rotate a list of images
+.ih
+USAGE
+imlintran input output xrotation yrotation xmag ymag
+.ih
+PARAMETERS
+.ls input
+List of images to be transformed.
+.le
+.ls output
+List of output images.
+.le
+.ls xrotation, yrotation
+Angle of rotation of points on the image axes in degrees.
+Positive angles rotate in a counter-clockwise sense around the x axis.
+For a normal coordinate axes rotation xrotation and yrotation should
+be the same. A simple y axis flip can be introduced by make yrotation
+equal to xrotation plus 180 degrees. An axis skew can be introduced by
+making the angle between xrotation and yrotation other than a
+multiple of 90 degrees.
+.le
+.ls xmag, ymag
+The number of input pixels per output pixel in x and y. The magnifications
+must always be positive numbers. Numbers less than 1 magnify the image;
+numbers greater than one reduce the image.
+.le
+.ls xin = INDEF, yin = INDEF
+The origin of the input picture in pixels. Xin and yin default to the center of
+the input image.
+.le
+.ls xout = INDEF, yout = INDEF
+The origin of the output image. Xout and yout default to the center of the
+output image.
+.le
+.ls ncols = INDEF, nlines = INDEF
+The number of columns and rows in the output image. The default is to
+keep the dimensions the same as the input image. If ncols and nrows are
+less than or equal to zero then the task computes the number of rows and
+columns required to include the whole input image, excluding the effects
+of any origin shift.
+.le
+.ls interpolant = "linear"
+The choices are the following.
+.ls nearest
+Nearest neighbor.
+.le
+.ls linear
+Bilinear interpolation in x and y.
+.le
+.ls poly3
+Third order interior polynomial in x and y.
+.le
+.ls poly5
+Fifth order interior polynomial in x and y.
+.le
+.ls spline3
+Bicubic spline.
+.le
+.ls sinc
+2D sinc interpolation. Users can specify the sinc interpolant width by
+appending a width value to the interpolant string, e.g. sinc51 specifies
+a 51 by 51 pixel wide sinc interpolant. The sinc width will be rounded up to
+the nearest odd number. The default sinc width is 31 by 31.
+.le
+.ls lsinc
+Look-up table sinc interpolation. Users can specify the look-up table sinc
+interpolant width by appending a width value to the interpolant string, e.g.
+lsinc51 specifies a 51 by 51 pixel wide look-up table sinc interpolant. The user
+supplied sinc width will be rounded up to the nearest odd number. The default
+sinc width is 31 by 31 pixels. Users can specify the resolution of the lookup
+table sinc by appending the look-up table size in square brackets to the
+interpolant string, e.g. lsinc51[20] specifies a 20 by 20 element sinc
+look-up table interpolant with a pixel resolution of 0.05 pixels in x and y.
+The default look-up table size and resolution are 20 by 20 and 0.05 pixels
+in x and y respectively.
+.le
+.ls drizzle
+2D drizzle resampling. Users can specify the drizzle pixel fraction in x and y
+by appending a value between 0.0 and 1.0 in square brackets to the
+interpolant string, e.g. drizzle[0.5]. The default value is 1.0.
+The value 0.0 is increased internally to 0.001. Drizzle resampling
+with a pixel fraction of 1.0 in x and y is equivalent to fractional pixel
+rotated block summing (fluxconserve = yes) or averaging (flux_conserve = no) if
+xmag and ymag are > 1.0.
+.le
+.le
+.ls boundary = "nearest"
+The choices are:
+.ls nearest
+Use the value of the nearest boundary pixel.
+.le
+.ls constant
+Use a constant value.
+.le
+.ls reflect
+Generate value by reflecting about the boundary.
+.le
+.ls wrap
+Generate a value by wrapping around to the opposite side of the image.
+.le
+.le
+.ls constant = 0.
+The value of the constant for boundary extension.
+.le
+.ls fluxconserve = yes
+Preserve the total image flux?
+.le
+.ls nxblock = 512, nyblock = 512
+If the size of the output image is less than nxblock by nyblock then
+the entire image is transformed at once. Otherwise the output image
+is computed in blocks of nxblock by nxblock pixels.
+.le
+.ih
+DESCRIPTION
+
+IMLINTRAN linearly transforms a the list of images in input using rotation
+angles and magnification factors supplied by the user and writes the output
+images into output. The coordinate transformation from input to output
+image is described below.
+
+.nf
+ 1. subtract the origin
+
+ xt = x(input) - xin
+ yt = y(input) - yin
+
+ 2. scale the image
+
+ xt = xt / xmag
+ yt = xt / xmag
+
+ 3. rotate the image
+
+ xt = xt * cos (xrotation) - yt * sin (yrotation)
+ yt = xt * sin (yrotation) + yt * cos (yrotation)
+
+ 4. new orgin
+
+ x(output) = xt + xout
+ y(output) = yt + yout
+
+.fi
+
+The output image gray levels are determined by interpolating in the input
+image at the positions of the transformed output pixels using the inverse
+of the above transformation.
+IMLINTRAN uses the routines in the 2-D interpolation package.
+
+.ih
+TIMINGS
+It requires approximately 70 and 290 cpu seconds respectively to linearly
+transform a 512 by 512 real image using bilinear and biquintic
+interpolation respectively (Vax 11/750 fpa).
+
+.ih
+EXAMPLES
+
+.nf
+1. Rotate an image 45 degrees around its center and magnify
+ the image by a factor of 2. in each direction.
+
+ cl> imlintran n4151 n4151rm 45.0 45.0 0.50 0.50
+
+2. Rotate the axes of an image by 45 degrees around 100. and 100.,
+ shift the orgin to 150. and 150. and flip the y axis.
+
+ cl> imlintran n1068 n1068r 45.0 225.0 1.0 1.0 xin=100. yin=100. \
+ >>> xout=150. yout=150.
+
+3. Rotate an image by 45 degrees and reduce the scale in x and y
+ by a factor of 1.5
+
+ cl> imlintran n7026 n7026rm 45.0 45.0 1.5 1.5
+.fi
+
+.ih
+BUGS
+.ih
+SEE ALSO
+imshift, magnify, rotate, lintran, register, geotran, geomap
+.endhelp
diff --git a/pkg/images/imgeom/doc/imshift.hlp b/pkg/images/imgeom/doc/imshift.hlp
new file mode 100644
index 00000000..5d3b3dd5
--- /dev/null
+++ b/pkg/images/imgeom/doc/imshift.hlp
@@ -0,0 +1,125 @@
+.help imshift Dec98 images.imgeom
+.ih
+NAME
+imshift -- shift a set of images in x and y
+.ih
+USAGE
+imshift input output xshift yshift
+.ih
+PARAMETERS
+.ls input
+List of images to be transformed.
+.le
+.ls output
+List of output images.
+.le
+.ls xshift, yshift
+Fractional pixel shift in x and y such that xout = xin + xshift and
+yout = yin + yshift.
+.le
+.ls shifts_file = ""
+The name of the text file containing the shifts for each input image. If no
+file name is supplied each input image is shifted by \fIxshift\fR and
+\fIyshift\fR. Shifts are listed in the text file, 1 set of shifts per image,
+with the x and y shift in columns 1 and 2 respectively. The number of
+shifts in the file must equal the number of input images.
+.le
+.ls interp_type = "linear"
+The interpolant type use to computed the output shifted image.
+The choices are the following:
+.ls nearest
+nearest neighbor.
+.le
+.ls linear
+bilinear interpolation in x and y.
+.le
+.ls poly3
+third order interior polynomial in x and y.
+.le
+.ls poly5
+fifth order interior polynomial in x and y.
+.le
+.ls spline3
+bicubic spline.
+.le
+.ls sinc
+2D sinc interpolation. Users can specify the sinc interpolant width by
+appending a width value to the interpolant string, e.g. sinc51 specifies
+a 51 by 51 pixel wide sinc interpolant. The sinc width input by the
+user will be rounded up to the nearest odd number. The default sinc width
+is 31 by 31.
+.le
+.ls drizzle
+2D drizzle resampling. Users can specify the drizzle pixel fractions in x and y
+by appending values between 0.0 and 1.0 in square brackets to the
+interpolant string, e.g. drizzle[0.5]. The default value is 1.0. The
+value 0.0 is increased to 0.001. Drizzle resampling with a pixel fraction
+of 1.0 in x and y is identical to bilinear interpolation.
+.le
+.le
+.ls boundary_type = "nearest"
+The choices are:
+.ls nearest
+Use the value of the nearest boundary pixel.
+.le
+.ls constant
+Use a constant value.
+.le
+.ls reflect
+Generate value by reflecting about the boundary.
+.le
+.ls wrap
+Generate a value by wrapping around to the opposite side of the image.
+.le
+.le
+.ih
+DESCRIPTION
+
+IMSHIFT will shift an image in x and y such that:
+
+.nf
+ xout = xin + xshift
+ yout = yin + yshift
+
+.fi
+
+The output image gray levels are determined by interpolating in the input
+image at the positions of the shifted output pixels.
+IMSHIFT uses the routines in the 2-D interpolator package.
+
+.ih
+EXAMPLES
+
+1. Shift an image by (+3.2, -4.5) using a biquintic interior polynomial
+ interpolant and boundary extension.
+
+ cl> imshift vys70 vys70shift 3.2 -4.5 inter=poly5 bound=neare
+
+2. Shift an image by (-6., 1.2) using bilinear interpolation and
+ boundary extension.
+
+ cl> imshift ugc1040 ugc1040shift -6.0 1.2 bound=neare
+
+3. Shift a set of images using shifts listed in the textfile "shifts".
+
+ cl> page shifts
+
+ 3.5 4.86
+ -2. 8.9
+ 10.1 7.8
+
+ cl> imshift im1,im2,im3 im1.s,im2.s,im3.s shifts_file=shifts
+
+.ih
+TIMINGS
+The time required to shift a 512 by 512 real image by fractional pixel
+amounts in x and y is approximately 10, 20, 70, 120, and 120 cpu seconds for the
+nearest neighbor, bilinear, bicubic, biquintic and bicubic spline
+interpolants respectively (Vax 11/750 fpa).
+
+.ih
+BUGS
+.ih
+SEE ALSO
+shiftlines, magnify, rotate, geomap, geotran, imlintran
+.endhelp
diff --git a/pkg/images/imgeom/doc/imtrans.hlp b/pkg/images/imgeom/doc/imtrans.hlp
new file mode 100644
index 00000000..332cf040
--- /dev/null
+++ b/pkg/images/imgeom/doc/imtrans.hlp
@@ -0,0 +1,69 @@
+.help imtranspose Aug84 images.imgeom
+.ih
+NAME
+imtranspose -- transpose two dimensional images
+.ih
+USAGE
+.nf
+imtranspose input output
+.fi
+.ih
+PARAMETERS
+.ls input
+List of images to be transposed.
+.le
+.ls output
+List of output transposed images. If the output image name is the same as
+the input image name then the output image will replace the input image.
+The number of output images must be the same as the number of input images.
+.le
+.ls len_blk = 512
+The one dimensional length of the transpose blocks.
+.le
+.ih
+DESCRIPTION
+Imtranspose transposes the list of images in input by interchanging
+their rows and columns and writing the results to images specified in
+output. The number of input and output images must be the same.
+
+The transpose is done in square blocks whose dimensions are equal \fIlen_blk\fR.
+
+The imtranspose tasks can be used to perform counter-clockwise or
+clockwise ninety degree rotations by flipping the y or x axis respectively
+in the input image section specification.
+
+.ih
+EXAMPLES
+1. To transpose an image:
+
+ cl> imtranspose image1 image2
+
+2. To transpose an image in place:
+
+ cl> imtranspose image1 image1
+
+3. To rotate an image 90 degrees counter-clockwise and clockwise:
+
+ cl> imtranspose image1[*,-*] image2
+
+ cl> imtranspose image1[-*,*] image2
+
+3. To transpose a set of 3 images listed 1 per line in the file imlist to
+the new images trans001, trans002, and trans003:
+
+ cl> imtranspose @imlist trans001,trans002,trans003
+
+4. To transpose a set of images in place:
+
+ cl> imtranspose frame* frame*
+
+5. To rotate an image 90 degrees counter-clockwise in place:
+
+ cl> imtranspose image[*,-*] image
+.ih
+BUGS
+
+It is currently not legal to transpose images with a wcs type of MULTISPEC.
+.ih
+SEE ALSO
+.endhelp
diff --git a/pkg/images/imgeom/doc/magnify.hlp b/pkg/images/imgeom/doc/magnify.hlp
new file mode 100644
index 00000000..8b31817e
--- /dev/null
+++ b/pkg/images/imgeom/doc/magnify.hlp
@@ -0,0 +1,202 @@
+.help magnify Dec98 images.imgeom
+.ih
+NAME
+magnify -- interpolate two dimensional images
+.ih
+USAGE
+.nf
+magnify input output xmag ymag
+.fi
+.ih
+PARAMETERS
+.ls input
+List of one or two dimensional images to be magnified. Image sections are
+allowed. Images with an axis containing only one pixel are not magnified.
+.le
+.ls output
+List of output image names. If the output image name is the same as the input
+image name then the magnified image replaces the input image.
+.le
+.ls xmag, ymag
+The magnification factors for the first and second image dimensions
+respectively. The magnifications need not be integers. Magnifications
+greater than 1 increase the size of the image while negative magnifications
+less than -1 decrease the size by the specified factor. Magnifications
+between -1 and 1 are interpreted as reciprocal magnifications.
+.le
+.ls x1 = INDEF, x2 = INDEF
+The starting and ending coordinates in x in the input image which become
+the first and last pixel in x in the magnified image. The values need not
+be integers. If indefinite the values default to the first and last pixel
+in x of the input image; i.e. a value of 1 and nx.
+.le
+.ls y1 = INDEF, y2 = INDEF
+The starting and ending coordinates in y in the input image which become
+the first and last pixel in y in the magnified image. The values need not
+be integers. If indefinite the values default to the first and last pixel
+in y of the input image; i.e. a value of 1 and ny.
+.le
+.ls dx = INDEF, dy = INDEF
+The intervals between the output pixels in terms of the input image.
+The values need not be integers. If these values are specified they
+override the magnification factors.
+.le
+.ls interpolant = "linear"
+The interpolant used for rebinning the image.
+The choices are the following.
+.ls nearest
+Nearest neighbor.
+.le
+.ls linear
+Bilinear interpolation in x and y.
+.le
+.ls poly3
+Third order polynomial in x and y.
+.le
+.ls poly5
+Fifth order polynomial in x and y.
+.le
+.ls spline3
+Bicubic spline.
+.le
+.ls sinc
+2D sinc interpolation. Users can specify the sinc interpolant width by
+appending a width value to the interpolant string, e.g. sinc51 specifies
+a 51 by 51 pixel wide sinc interpolant. The sinc width will be rounded up to
+the nearest odd number. The default sinc width is 31 by 31.
+.le
+.ls lsinc
+Look-up table sinc interpolation. Users can specify the look-up table sinc
+interpolant width by appending a width value to the interpolant string, e.g.
+lsinc51 specifies a 51 by 51 pixel wide look-up table sinc interpolant. The user
+supplied sinc width will be rounded up to the nearest odd number. The default
+sinc width is 31 by 31 pixels. Users can specify the resolution of the lookup
+table sinc by appending the look-up table size in square brackets to the
+interpolant string, e.g. lsinc51[20] specifies a 20 by 20 element sinc
+look-up table interpolant with a pixel resolution of 0.05 pixels in x and y.
+The default look-up table size and resolution are 20 by 20 and 0.05 pixels
+in x and y respectively.
+.le
+.ls drizzle
+2D drizzle resampling. Users can specify the drizzle pixel fraction in x and y
+by appending a value between 0.0 and 1.0 in square brackets to the
+interpolant string, e.g. drizzle[0.5]. The default value is 1.0.
+The value 0.0 is increased internally to 0.001. Drizzle resampling
+with a pixel fraction of 1.0 in x and y is equivalent to fractional pixel
+block summing (fluxconserve = yes) or averaging (flux_conserve = no) if
+xmag and ymag are < 1.0.
+.le
+.le
+.ls boundary = "nearest"
+Boundary extension type for references to pixels outside the bounds of the
+input image. The choices are:
+.ls nearest
+Use the value of the nearest boundary pixel.
+.le
+.ls constant
+Use a constant value.
+.le
+.ls reflect
+Generate value by reflecting about the boundary.
+.le
+.ls wrap
+Generate a value by wrapping around to the opposite side of the image.
+.le
+.le
+.ls constant = 0.
+Constant value for constant boundary extension.
+.le
+.ls fluxconserve = yes
+Preserve the total image flux.
+.le
+.ls logfile = STDOUT
+Log file for recording information about the magnification. A null
+logfile may be used to turn off log information.
+.le
+.ih
+DESCRIPTION
+The list of input images are expanded or contracted by interpolation
+to form the output images. The output image names are specified by the
+output list. The number of output image names must be the
+same as the number of input images. An output image name may be the same
+as the corresponding input image in which case the magnified image replaces
+the input image. The input images must be one or two dimensional and each
+axis must be of at least length 2 (i.e. there have to be distinct
+endpoints between which to interpolate).
+
+The magnification factor determines the pixel step size or interval.
+Positive magnifications are related to the step size as the reciprocal;
+for example a magnification of 2.5 implies a step size of .4 and a
+magnification of .2 implies a step size of 5. Negative magnifications
+are related to the step size as the absolute value; for example a
+magnification of -2.2 implies a step size of 2.2. This definition
+frees the user from dealing with reciprocals and irrational numbers.
+Note that the step size may be specified directly with the parameters
+\fIdx\fR and \fIdy\fR, in which case the magnification factor is
+not required.
+
+If fluxconserve = yes, the magnification is approximately flux conserving
+in that the image values are scaled by the ratio of the output to the input
+pixel areas; i.e dx * dy.
+
+In the default case with only the magnifications specified the full
+image is expanded or contracted. By specifying additional parameters
+the size and origin of the output image may be changed. Only those
+parameters to be fixed need to be specified and the values of the
+remaining parameters are either determined from these values or
+default as indicated in the PARAMETERS section.
+
+The user may select the type of two dimensional interpolation and boundary
+extension to be used. Note that the image interpolation is performed on
+the boundary extended input image. Thus, boundary extensions which are
+discontinuous (constant and wrap) may introduce interpolation errors.
+.ih
+EXAMPLES
+1. To expand an image by a factor of 2.5:
+
+ cl> magnify imagein imageout 2.5 2.5
+
+2. To subsample the lines of an image in steps of 3.5:
+
+ cl> magnify imagein imageout dx=3.5 dy=1
+
+3. To magnify the central part of an image by 2 into a 11 by 31 image:
+
+.nf
+ cl> magnify imagein imageout 2 2 x1=25.3 x2=30.3 \
+ >>> y1=20 y2=35
+.fi
+
+4. To use a higher order interpolator with wrap around boundary extension:
+
+.nf
+ cl> magnify imagein imageout 2 2 x1=-10 y1=-10 \
+ >>> interpolation=spline3 boundary=wrap
+.fi
+
+It is important to remember that the magnification affects the pixel intervals!
+This means that the number of pixels in an expanded image is not simply
+a multiple of the original number. The following example illustrates this
+point. Begin with an image which is 100 by 10. This means the
+x coordinates run between 1 and 100 and the y coordinates run between 1 and
+10 with a pixel interval of 1.
+
+Let's magnify the x axis by 0.5 and the y axis by 2.
+The output pixel intervals, in terms of the input pixel intervals,
+are then 2 and 0.5. This means the output x pixels are at
+1, 3, 5, etc. and output y pixels are at 1, 1.5, 2, 2.5, etc., again in
+terms of the input pixel coordinates. The last output x pixel is then
+at 99 in the input coordinates and the number of pixels is 50. For the
+y axis the last output pixel is at 10 in the input coordinates and the
+number of pixels between 1 and 10 in intervals of 0.5 is 19! Thus, the
+final image is 50 by 19 and not 50 by 20 which you would get if you
+multiplied the axis lengths by the magnification factors.
+
+A more complex example is given above in which x1=25.3,
+x2=30.3, y1=20, and y2=35 with magnification factors of 2.
+It is important to understand why the output image is 11 by 31 and
+what the pixel coordinates are in terms of the input pixel coordinates.
+.ih
+SEE ALSO
+imshift, blkavg, rotate, imlintran, register, geotran, geomap
+.endhelp
diff --git a/pkg/images/imgeom/doc/rotate.hlp b/pkg/images/imgeom/doc/rotate.hlp
new file mode 100644
index 00000000..2b534738
--- /dev/null
+++ b/pkg/images/imgeom/doc/rotate.hlp
@@ -0,0 +1,164 @@
+.help rotate Dec98 images.imgeom
+.ih
+NAME
+rotate -- rotate and shift a list of images
+.ih
+USAGE
+rotate input output rotation
+.ih
+PARAMETERS
+.ls input
+List of images to be rotated.
+.le
+.ls output
+List of output images.
+.le
+.ls rotation
+Angle of rotation of the image in degrees. Positive angles will rotate
+the image counter-clockwise from the x axis.
+.le
+.ls xin = INDEF, yin = INDEF
+The origin of the rotation in pixels. Xin and yin default to the center of
+the input image.
+.le
+.ls xout = INDEF, yout = INDEF
+The origin of the output image. Xout and yout default to the center of the
+output image.
+.le
+.ls ncols = INDEF, nlines = INDEF
+The number of columns and rows in the output image. The default is to
+keep the dimensions the same as the input image. If ncols and nrows is
+less then or equal to zero the program will compute the number of columns
+and rows needed to include the whole image, excluding the effects of
+any origin shifts.
+.le
+.ls interpolant = "linear"
+The interpolant. The options are the following:
+.ls nearest
+Nearest neighbor.
+.le
+.ls linear
+Bilinear interpolation in x and y.
+.le
+.ls poly3
+Third order polynomial in x and y.
+.le
+.ls poly5
+Fifth order polynomial in x and y.
+.le
+.ls spline3
+Bicubic spline.
+.le
+.ls sinc
+2D sinc interpolation. Users can specify the sinc interpolant width by
+appending a width value to the interpolant string, e.g. sinc51 specifies
+a 51 by 51 pixel wide sinc interpolant. The sinc width will be rounded up to
+the nearest odd number. The default sinc width is 31 by 31.
+.le
+.ls lsinc
+Look-up table sinc interpolation. Users can specify the look-up table sinc
+interpolant width by appending a width value to the interpolant string, e.g.
+lsinc51 specifies a 51 by 51 pixel wide look-up table sinc interpolant. The user
+supplied sinc width will be rounded up to the nearest odd number. The default
+sinc width is 31 by 31 pixels. Users can specify the resolution of the lookup
+table sinc by appending the look-up table size in square brackets to the
+interpolant string, e.g. lsinc51[20] specifies a 20 by 20 element sinc
+look-up table interpolant with a pixel resolution of 0.05 pixels in x and y.
+The default look-up table size and resolution are 20 by 20 and 0.05 pixels
+in x and y respectively.
+.le
+.ls drizzle
+2D drizzle resampling. Users can specify the drizzle pixel fraction in x and y
+by appending a value between 0.0 and 1.0 in square brackets to the
+interpolant string, e.g. drizzle[0.5]. The default value is 1.0.
+The value 0.0 is increased internally to 0.001. Drizzle resampling
+with a pixel fraction of 1.0 in x and y is equivalent to fractional pixel
+rotated block summing (fluxconserve = yes) or averaging (flux_conserve = no) if
+xmag and ymag are > 1.0.
+.le
+.le
+.ls boundary = "nearest"
+The choices are:
+.ls nearest
+Use the value of the nearest boundary pixel.
+.le
+.ls constant
+Use a constant value.
+.le
+.ls reflect
+Generate a value by reflecting around the boundary.
+.le
+.ls wrap
+Generate a value by wrapping around to the opposite side of the image.
+.le
+.le
+.ls constant = 0.
+The value of the constant for constant boundary extension.
+.le
+.ls nxblock = 512, nyblock = 512
+If the dimensions of the output image are less than nxblock and nyblock
+then the entire image is rotated at once. Otherwise nxblock by nyblock
+segments of the image are rotated.
+.le
+.ih
+DESCRIPTION
+
+ROTATE rotates the list of images in input by rotation degrees and writes
+the output to the images specified by output. The origins of the input and
+output images may be specified by setting xin, yin, xout and yout. The
+transformation is described below.
+
+.nf
+ xt = (x - xin) * cos (rotation) - (y - yin) * sin (rotation) + xout
+ yt = (x - xin) * sin (rotation) + (y - yin) * cos (rotation) + yout
+
+.fi
+
+The output image gray levels are determined by interpolating in the input
+image at the positions of the transformed output pixels. ROTATE uses the
+routines in the 2-D interpolation package.
+
+.ih
+EXAMPLES
+
+.nf
+1. Rotate an image 45 degrees around its center.
+
+ cl> rotate m51 m51r45 45.0
+
+2. Rotate an image by 45 degrees around (100., 100.) and
+ shift the origin to (150., 150.0) using bicubic interpolation.
+
+ cl> rotate m92 m92r45 45.0 xin=100. yin=100. xout=150. yout=150.\
+ >>> interp=poly3
+
+3. Rotate an image 90 degrees counter-clockwise and clockwise around its
+ center. Note the use of imtranspose and image section notation.
+
+ cl> imtranspose m92[*,-*] m92d90
+
+ cl> imtranspose m92[-*,*] m92d270
+
+4. Rotate an image 180 degrees counter-clockwise. Note the use of imcopy
+ and image section notation.
+
+ cl> imcopy m92[-*,-*] m92d180
+.fi
+
+.ih
+TIMINGS
+It requires approximately 70 and 290 cpu seconds to rotate a 512 by 512
+real image using bilinear and biquintic interpolation respectively
+(Vax 11/750 fpa).
+.ih
+BUGS
+The interpolation operation is done in real arithmetic. However the output
+type of the pixels is set equal to the input type. This can lead to truncation
+problems for integer images.
+
+Simple 90, 180, 270 etc degree rotations are best performed using the
+imtranspose task and/or image section notation.
+.ih
+SEE ALSO
+imtranspose, imshift, magnify, lintran, geotran, geomap
+.endhelp
diff --git a/pkg/images/imgeom/doc/shiftlines.hlp b/pkg/images/imgeom/doc/shiftlines.hlp
new file mode 100644
index 00000000..856ab3a8
--- /dev/null
+++ b/pkg/images/imgeom/doc/shiftlines.hlp
@@ -0,0 +1,119 @@
+.help shiftlines Dec98 images.imgeom
+.ih
+NAME
+shiftlines -- shift lines in a list of images
+.ih
+USAGE
+.nf
+shiftlines input output shift
+.fi
+.ih
+PARAMETERS
+.ls input
+List of images to be shifted. Image sections are allowed.
+.le
+.ls output
+List of output image names. If the output image name is the same as the input
+image name then the shifted image replaces the input image.
+.le
+.ls shift
+Shift in pixels.
+.le
+.ls interp_type = "linear"
+The interpolant type use to computed the output shifted image.
+The choices are the following:
+.ls nearest
+nearest neighbor interpolation.
+.le
+.ls linear
+linear interpolation in x.
+.le
+.ls poly3
+third order interior polynomial in x.
+.le
+.ls poly5
+fifth order interior polynomial in x.
+.le
+.ls spline3
+cubic spline in x.
+.le
+.ls sinc
+sinc interpolation in x. Users can specify the sinc interpolant width by
+appending a width value to the interpolant string, e.g. sinc51 specifies
+a 51 pixel wide sinc interpolant. The sinc width input by the user will
+be rounded up to the nearest odd number. The default sinc width
+is 31 pixels.
+.le
+.ls drizzle
+1D drizzle resampling. Users can specify the drizzle pixel fraction
+by appending a value between 0.0 and 1.0 in square brackets to the
+interpolant string, e.g. drizzle[0.5]. The default value is 1.0. The
+value 0.0 is increased to 0.001. Drizzle resampling with a pixel fraction
+of 1.0 is identical to linear interpolation.
+.le
+.le
+.ls boundary_type = "nearest"
+Boundary condition for shifts outside the input image.
+The minimum match abbreviated choices are:
+.ls "nearest"
+Use the values of the nearest boundary pixel.
+.le
+.ls "wrap"
+Generate a value by wrapping around to the opposite boundary.
+.le
+.ls "reflect"
+Generate a value by reflecting around the boundary
+.le
+.ls "constant"
+Use a user supplied constant pixel value.
+.le
+.le
+.ls constant = "0.0"
+The constant for constant boundary extension.
+.le
+.ih
+DESCRIPTION
+The list of images in \fIinput\fR is shifted by the amount \fIshift\fR
+and copied to the list of output images \fIoutput\fR.
+The number of output image names must be the same as the number of input
+images. An output image name may be the same as the corresponding
+input image in which case the shifted image replaces the input image.
+
+The shift is defined by the following relation.
+
+ xout = xint + shift
+
+Features in the input image are moved to higher columns when the shift
+is positive and to lower columns when the shift is negative. For example,
+to shift a feature at column 10 to column 12 the shift is 2.0. The task
+has been optimized for integral pixel shifts.
+
+There are five choices for the one dimensional image interpolation
+which is selected with the parameter \fIinterp_type\fR.
+The value of the output pixels corresponding to input pixel positions
+outside the boundaries of the image is determined by the parameter
+\fIboundary_type\fR.
+
+.ih
+EXAMPLES
+
+1. Shift the lines of an image by 0.25 pixels to the right.
+
+ cl> shiftlines imagein imageout 0.25
+
+2. Shift the lines of an image by -.3 pixels using cubic spline interpolation
+and replace the input image by the output image.
+
+ cl> shiftlines image image -.3 interp=spline3
+
+.ih
+TIMINGS
+It requires approximately 28 and 59 seconds to shift a 512 square image
+using linear and cubic spline interpolation respectively
+(Vax 11/750 with fpa).
+.ih
+BUGS
+.ih
+SEE ALSO
+imshift, magnify, rotate, imlintran, blkrep, blkav, geotran
+.endhelp