diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /pkg/images/imgeom/doc | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'pkg/images/imgeom/doc')
-rw-r--r-- | pkg/images/imgeom/doc/blkavg.hlp | 65 | ||||
-rw-r--r-- | pkg/images/imgeom/doc/blkrep.hlp | 103 | ||||
-rw-r--r-- | pkg/images/imgeom/doc/im3dtran.hlp | 94 | ||||
-rw-r--r-- | pkg/images/imgeom/doc/imlintran.hlp | 184 | ||||
-rw-r--r-- | pkg/images/imgeom/doc/imshift.hlp | 125 | ||||
-rw-r--r-- | pkg/images/imgeom/doc/imtrans.hlp | 69 | ||||
-rw-r--r-- | pkg/images/imgeom/doc/magnify.hlp | 202 | ||||
-rw-r--r-- | pkg/images/imgeom/doc/rotate.hlp | 164 | ||||
-rw-r--r-- | pkg/images/imgeom/doc/shiftlines.hlp | 119 |
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 |