                  Announcing the Availability of the
                  Vista Computer Vision Environment

                       Art Pope and David Lowe
                    University of British Columbia

1.  Introduction

The Vista software environment for computer vision research has been
developed at the University of British Columbia's Laboratory for Com-
putational Intelligence. Version 2.1 was released in June 1994.

Unlike most toolkits for image processing, Vista allows easy extension
to data types other than images. It's designed to support computer
vision research while allowing any user to easily program new modules
or add new data types.

Vista includes software for manipulating images, detecting and linking
edges, estimating optical flow and camera calibration parameters,
viewing images and edge vectors under the X Window System, printing
images and edge vectors on PostScript printers, and extensive documen-
tation.

One useful component of Vista is a toolkit allowing rapid development
of applications running under X Windows. Using a few standard library
routines that do not require knowledge of X internals, a user can cre-
ate applications that display images, manipulate vectors, create
menus, and provide full mouse interaction with display elements. Vista
contains an image viewing widget that provides display independence,
image scaling, and interactive zooming.

Vista operations can be used both as standalone UNIX programs and as
library routines. The programs can be used from the UNIX shell to
manipulate files containing images and other objects; they can be
piped together to perform a sequence of operations. The library can be
used to construct custom applications, including ones that display
images interactively under X Windows.

Vista uses its own format for representing images, edge vectors, and
other objects in data files. The format is highly flexible--it can
represent a great variety of image types as well as collections of
images and other objects. The format is also extensible--for example,
new image attributes can be added without the need to modify existing
software or data files.  Tools are available for converting images
between Vista's format and other formats.

Vista is written in ANSI C for UNIX platforms. It requires the X Win-
dow System (X11R4 or R5); some portions also require the OSF/Motif
widget library.

Vista's source code and documentation are available by anonymous FTP
with no significant restrictions on distribution or use. The remainder
of this announcement contains a more detailed description of Vista and
instructions for obtaining it.

2.  Vista File Format

Vista employs a data file format that allows any collection of images,
edge vectors, and other structured objects to be stored in a single
file. This allows, for example, both an edge set and the image from
which it was derived to be kept in one file.

Each file is divided into two parts. The first part, which contains
descriptions of the objects in the file, is represented entirely in
ASCII so that it can be easily viewed and even edited using a text
editor. One can, for example, add a comment annotating an image by
simply editing that part of the file. The second part of the file
holds information that must be stored compactly, such as image pixel
values. There data is represented efficiently with a binary encoding
that is independent of machine byte order.

Vista's data file format can be readily extended. You can record cus-
tom attributes with each of the images stored in your data files yet
still manipulate those images using the existing Vista software. You
can also define custom types of objects (e.g., an object describing a
set of model parameters). These custom objects can be included in data
files alongside standard ones such as images and edge vectors.

3.  Vista Image Format

A Vista image is a 3-dimensional array of pixels indexed by row, col-
umn, and ``band'' number. The third dimension, band, is used to repre-
sent a variety of things: the discrete frames of a motion sequence,
various camera viewpoints, multiple color channels, or the real and
imaginary components of complex pixel values. It is also used to rep-
resent combinations of these--allowing, for example, a single image to
represent a motion sequence of stereo pairs of RGB color images. Such
images can be manipulated as easily as a single-band, grey-scale
intensity image by most of Vista's subroutines and programs.

Several different pixel representations are supported. They range from
a single bit to a 32-bit signed integer and a 64-bit floating point
number.  Again, images can be manipulated equally well regardless of
pixel representation by most of Vista's subroutines and programs.

Vista includes software for translating images in both directions
between ``Portable Graymap'' (PGM) file format and Vista format. The
PBM+ package can be used to reach a large variety of other formats
from PGM format.

4.  Vista Software

Vista includes the following software:

(a) a collection of UNIX filter programs for manipulating images.
    There are programs for scaling, cropping and rotating images,
    adjusting image brightness and contrast, converting images from
    one pixel representation to another, performing an arithmetic or
    logical operation on each pixel of an image, convolving images,
    computing pixel statistics, estimating the gradient of an image,
    estimating optical flow from an image sequence, estimating camera
    calibration parameters, computing the Fourier transform of an
    image, computing the magnitude and phase of a complex image,
    applying the Canny edge detector, linking edge pixels to form sets
    of extended edges, and segmenting edges into straight lines.

(b) a collection of interactive programs for manipulating images under
    X Windows. There are menu-driven programs for displaying images
    and edge vectors, cropping images, and adjusting image brightness
    and contrast.  (Some of these programs require the OSF/Motif wid-
    get library.)

(c) programs for converting Vista images to and from ``Portable
    Graymap'' (PGM) format, for rendering images and edge vectors
    using PostScript, and for arranging multiple PostScript figures on
    a single page.

(d) a library of C routines. There are routines for performing each of
    the operations listed above under item (a), from scaling images to
    segmenting edges. There are also routines for reading and writing
    Vista data files, reporting errors, parsing command line options,
    and generating PostScript documents.

(e) a widget for displaying images under X Windows. The widget has
    built-in support for color allocation and dithering to accommodate
    various displays having from 1 to 24 planes. It provides user con-
    trols for panning and zooming the displayed image. The widget is
    compatible with other widget sets based on the X Toolkit, includ-
    ing the MIT Athena and OSF/Motif sets.

(f) a package that simplifies the task of creating an application that
    runs under X Windows for displaying an image and lines while
    accepting user input through menus and dialog boxes. The package
    shields the programmer from having to understand a widget set, the
    X Toolkit, and the Xlib library. The package itself uses the
    OSF/Motif widget set, but it is designed for easy porting to other
    widget sets.

5.  Installation Requirements

Vista is distributed as ANSI C source code. To build it you will need
an ANSI C compiler (we use the GNU project's gcc), X11R5 (at patch
level 21 or better), and at least 20 megabytes of disk space.

The OSF/Motif widget library is needed to build some portions of
Vista--specifically, some of the programs mentioned under item (b),
above, and the package described under item (f). Lacking OSF/Motif it
is still possible to build most Vista software, including one of the
programs for displaying images under X Windows.

Like X11R5, Vista uses the imake facility to configure the build and
installation procedures for a particular site and machine architec-
ture.  You will need the imake and makedepend tools distributed with
X11R5. Vista includes architecture-specific configuration files for
SunOS 4.1 and 5.3, Silicon Graphics's IRIX 4.0, Linux, and Ultrix.

6.  Documentation

Vista is fully documented by about 250 pages of on-line ``man'' pages.
It also includes a tutorial on using Vista programs, an introduction
to programming with the Vista library, a set of example programs,
installation instructions, and guidelines for those contributing Vista
software.

7.  Obtaining Vista

Vista is available via anonymous FTP from ftp.cs.ubc.ca as a com-
pressed tar file, /pub/local/vista/vista-2.1.2.tar.gz, of about 800K
bytes. Fetch a copy in binary mode, uncompress it using the GNU util-
ity gunzip, untar it into the directory of your choice, and follow the
installation instructions you find there. If you decide to keep and
use Vista, let us know so that we can continue to inform you of new
releases, bug fixes, etc.

Some sample Vista data files are also available on that FTP server in
the /pub/local/vista/data directory.

8.  Why We're Distributing Vista

Our hope in distributing Vista is that it will foster greater exchange
of software and data in the computer vision research community. We
believe that it can be a foundation on which the community builds and
shares reference implementations of commonly used algorithms.

Vista has all of the traits needed to fulfill this role. It provides a
framework for storing and manipulating not only images, but also other
data objects that often arise in conjunction with images--for example,
edge vectors, camera geometry specifications, and model parameters. It
is designed as an extensible system to which anyone can contribute. It
is comprehensive although not so large as to be unwieldy. And, impor-
tantly, it can be freely distributed.

9.  For Further Information

In case of comments, problems, queries, bug reports, etc., contact:

   Art Pope, pope@cs.ubc.ca, (604) 822-3061

   David Lowe, lowe@cs.ubc.ca, (604) 822-3170

We maintain a mailing list of those working with Vista. To subscribe
to the list, send a message to vista-request@cs.ubc.ca.
