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 /math/iminterp/doc/iminterp.hlp | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'math/iminterp/doc/iminterp.hlp')
-rw-r--r-- | math/iminterp/doc/iminterp.hlp | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/math/iminterp/doc/iminterp.hlp b/math/iminterp/doc/iminterp.hlp new file mode 100644 index 00000000..c602b43e --- /dev/null +++ b/math/iminterp/doc/iminterp.hlp @@ -0,0 +1,234 @@ +.help iminterp Dec98 "Math Package" +.ih +NAME +iminterp -- image interpolator package +.ih +SYNOPSIS + +.nf + asitype (interpstr, interp_type, nsinc, nincr, rparam) + asiinit (asi, interp_type) + asisinit (asi, interp_type, nsinc, nincr, rparam) + asifit (asi, datain, npix) +ivalue = asigeti (asi, param) +rvalue = asigetr (asi, param) + y = asieval (asi, x) + asivector (asi, x, yfit, npix) + asider (asi, x, der, nder) + v = asigrl (asi, a, b) + asisave (asi, interpolant) + asirestore (asi, interpolant) + asifree (asi) + + y = arieval (x, datain, npix, interp_type) + arider (x, datain, npix, der, nder, interp_type) + + arbpix (datain, dataout, npix, interp_type, boundary_type) +.fi + +.nf + msitype (interpstr, interp_type, nsinc, nincr, rparam) + msisinit (msi, interp_type, nsinc, nxincr, nyincr, rparam1, rparam2) + msiinit (msi, interp_type) + msifit (msi, datain, nxpix, nypix, len_datain) +ivalue = msigeti (msi, param) +rvalue = msigetr (msi, param) + y = msieval (msi, x, y) + msivector (msi, x, y, zfit, npts) + msider (msi, x, y, der, nxder, nyder, len_der) + v = msigrl (msi, x, y, npts) + v = msisqgrl (msi, x1, x2, y1, y2) + msisave (msi, interpolant) + msirestore (msi, interpolant) + msifree (msi) + + y = mrieval (x, y, datain, nxpix, nypix, len_dataina, interp_type) + mrider (x, y, datain, nxpix, nypix, len_datain, der, nxder, nyder, + len_der, interp_type) +.fi + +.ih +DESCRIPTION +The iminterp package provides a set of routines for interpolating uniformly +spaced data assuming that the spacing between data points is 1.0. The +package is divided into 1D and 2D array sequential interpolants, +prefixes asi and msi, and 1D and 2D +array random interpolants, prefixes ari and mri. +The sequential interpolants have +been optimized for returning many values as is the case when an array is +shifted. The random interpolants allow evaluation of a few interpolated +points without the computing time and storage overhead required for +setting up the sequential version. +.ih +NOTES +The interpolant is chosen at run time from the following list. + +.nf + II_NEAREST # nearest neighbour in x + II_LINEAR # linear interpolation in x + II_POLY3 # 3rd order interior polynomial in x + II_POLY5 # fifth order interior polynomial in x + II_SPLINE3 # cubic spline in x + II_SINC # sinc interpolation in x + II_LSINC # look-up table sinc interpolation in x + II_DRIZZLE # drizzle interpolation in x + + II_BINEAREST # nearest neighbour in x and y + II_BILINEAR # bilinear interpolation + II_BIPOLY3 # 3rd order interior polynomial in x and y + II_BIPOLY5 # 5th order interior polynomial in x and y + II_BISPLINE3 # bicubic spline + II_BISINC # sinc interpolation in x and y + II_BILSINC # look-up table sinc interpolation in x and y + II_BIDRIZZLE # drizzle interpolation in x and y +.fi + +The routines assume that all x (1D, 2D) and y (2D) values of interest lie in +the region 1 <= x <= nxpix, 1 <= y <= nypix. +Checking for out of bounds x and/or y values is the responsibility +of the calling program. The asi, ari, msi, and mri routines assume that INDEF +valued pixels have been removed from the data prior to entering the +package. The routine ARBPIX has been added to the package to facilitate +INDEF valued pixel removal. + +In order to make the package definitions available to the calling program +an include <math/iminterp.h> statement must appear in the calling program. +Either ASIINIT, ASISINIT or ASIRESTORE must be called before using the +asi routines. ASIFREE frees the space used by the asi routines. For the +msi routines the corresponding examples are MSIINIT, MSISINIT, MSIRESTORE +and MSIFREE. +.ih +EXAMPLES +.nf +Example 1: Shift a 1D data array by a constant amount using a 5th order +polynomial interpolant and the drizzle routine respectively. Note that +in this example the drizzle interpolant is equivalent to the linear +interpolant since the default drizzle pixel fraction is 1.0 and there +is no scale change. Out-of-bounds pixels are set to 0.0 + + include <math/iminterp.h> + ... + call asiinit (asi, II_POLY5) + call asifit (asi, inrow, npix) + + do i = 1, npix + if (i + xshift < 1.0 || i + xshift > npix) + outrow[i] = 0.0 + else + outrow[i] = asieval (asi, i + xshift) + + call asifree (asi) + ... + + + include <math/iminterp.h> + + real tmpx[2] + ... + call asiinit (asi, II_DRIZZLE) + call asifit (asi, inrow, npix) + + do i = 1, npix + tmpx[1] = i + xshift - 0.5 + tmpx[2] = i + xshift + 0.5 + if (tmpx[1] < 1 || tmpx[2] > npix) + outrow[i] = 0.0 + else + outrow[i] = asieval (asi, tmpx) + + call asifree (asi) + ... + + +Example 2: Shift a 2D array by a constant amount using a 3rd order polynomial +interpolant and the drizzle interpolant respectively. Note that +in this example the drizzle interpolant is equivalent to the linear +interpolant since the default drizzle pixel fraction is 1.0 and there +is no scale change. Out-of-bounds pixels are set to 0.0. + + include <math/iminterp.h> + ... + call msiinit (msi, II_BIPOLY3) + call msifit (msi, insection, nxpix, nypix, nxpix) + + do j = 1, nypix + if (j + yshift < 1 || j + yshift > nypix) + do i = 1, nxpix + outsection[i,j] = 0.0 + else + do i = 1, nxpix + if (i + xshift < 1 || i + xshift > nxpix) + outsection[i,j] = 0.0 + else + outsection[i,j] = msieval (msi, i + xshift, j + yshift) + + call msifree (msi) + ... + + + include <math/iminterp.h> + ... + real tmpx[4], tmpy[4] + ... + call msiinit (msi, II_BIDRIZZLE) + call msifit (msi, insection, nxpix, nypix, nxpix) + + do j = 1, nypix { + tmpy[1] = j + yshift - 0.5 + tmpy[2] = j + yshift - 0.5 + tmpy[3] = j + yshift + 0.5 + tmpy[4] = j + yshift + 0.5 + if (tmpy[1] < 1 || tmpy[4] > nypix) + do i = 1, nxpix + outsection[i,j] = 0.0 + else + do i = 1, nxpix + tmpx[1] = i + xshift - 0.5 + tmpx[2] = i + xshift + 0.5 + tmpx[3] = i + xshift + 0.5 + tmpx[4] = i + xshift - 0.5 + if (tmpx[1] < 1 || tmpx[2] > nxpix) + outsection[i,j] = 0.0 + else + outsection[i,j] = msieval (msi, tmpx, tmpy) + } + + call msifree (msi) + ... + + +Example 3: Calculate the integral under a 1D data array + + include <math/iminterp.h> + ... + call asiinit (asi, II_POLY5) + call asifit (asi, datain, npix) + + integral = asigrl (asi, 1. real (npix)) + + call asifree (asi) + ... + +Example 4: Store a 1D interpolant for later use by ASIEVAL + + include <math/iminterp.h> + + ... + call asiinit (asi, II_POLY3) + call asifit (asi, datain, npix) + + len_interpolant = asigeti (asi, ASINSAVE) + call salloc (interpolant, len_interpolant, TY_REAL) + call asisave (asi, Memr[interpolant]) + + call asifree (asi) + ... + call asirestore (asi, Memr[interpolant]) + + do i = 1, npts + yfit[i] = asieval (asi, x[i]) + + call asifree (asi) + ... +.fi +.endhelp |