The VISTA program was originally designed to reduce data produced by astronomical CCD imagers, but has found use for the analysis of any digital imaging array data, including astronomical IR Arrays, Radio Maps, and X-Ray images. Any image array is referred to generically as an ``IMAGE'' in VISTA. An image is a 2-D array of floating-point numbers that represent the data value at a given picture-element or ``pixel'' in the image plane. The general term for manipulation of these numbers is image processing. VISTA provides the user with a set of interactive commands issued either at the keyboard or from a list of commands called a procedure script that can be executed like a mini program in written in the VISTA interactive command language. In practice, VISTA can be used to process any digital images, not just astronomical images, although many of the routines in VISTA are specialized for astronomical data analysis (e.g., spectrophotometry or stellar photometry).
A digital image, whatever the source, is coded as a a rectangular array of 'picture elements' or pixels. Each pixel has both a location and a value; it is the array of values that constitutes an image. The location of a pixel is specified by its row and column coordinates. Rows and columns are numbered continuously from some starting value, usually zero or one. (Thus an image with 400 rows and 350 columns may have the rows numbered from 1 to 399 and the columns numbered from 1 to 349). The starting row or column may start at some other value, for example, the numbering may run from 100 to 499. When an image is displayed, a convention is adopted for how rows and columns run; generally columns increase from left to right, but various packages differ in how they display rows. By default, the VISTA convention is for the origin to refer to the displayed upper left corner of the image; you can use the FLIP keyword with the TV command to have the origin fall in the lower left. Neither way guarantees that your image will appear in ``sky orientation''; this depends on the optics in the system and the way that the CCD is read out at the telescope.
It is convenient to refer to images by a label or name, rather than having to refer to each of the pixels individually. For this reason, the VISTA program has several buffers (reserved blocks of memory) for the storage of images. VISTA allows the use of up to one hundred image buffers, although the actual number of buffers that may be filled at any given time depends on the sizes of the images and the amount of memory available on your system. An image is referred to by the number of the buffer that holds it, with buffer numbers running from 1 to 100.
Additional information about each image is stored in an associated header, also stored in memory. The header is structured on the FITS header format, and contains a table of values describing the properties of the image, including the image dimensions and data format, observing information, etc. These are always associated with an image and are automatically copied or adjusted if the image itself is copied or adjusted.
A spectrum is a one-dimensional array of numbers representing the amount of light at each wavelength interval from an astronomical object. A CCD used for spectroscopy does not produce a spectrum directly; rather, it records a two-dimensional image of the spread-out light behind the slit and grating. This image is later converted (''mashed'') into a spectrum. Spectra are stored in the same buffers that are used for images. A spectrum is an image with one row.
Various VISTA programs produce data sets that are neither images nor spectra. The buffers for the storing of these data are not referred to by number, usually because there is only one of each type. These data can be saved on the disk (with the SAVE command), retrieved (with GET) or displayed (PRINT).
A very important feature of VISTA is procedures. These are lists of commands that are executed as a group. There is a special buffer for storing procedures, and they may be saved on the disk for repeated use. Various conditional and looping ability is available in procedures, allowing repetitive tasks to be easily executed.
VISTA also has variables, which are symbolic names for numerical values or character strings. Using variables in procedures greatly expands the power of VISTA, by allowing the user to write complex programs. However, VISTA is not a fully flexible programming language; it does not have full array capabilities (although the image buffers themselves can be used as one or two dimensional arrays). The command parsing is also not highly sophisticated.
VISTA has adopted the Flexible Image Transport System (FITS) format for all images (although we can read a variety of related image formats, FITS is preferred). A complete description of the FITS format may be found at the FITS Support Office Home Page at the NASA Goddard Space Flight Center (http://fits.gsfc.nasa.gov/).