What's New in Vista V2.1

This document describes changes to Vista since V2.0.2. There is new functionality as well as bug fixes. This is an abridged list. More details may be found in the installation guide included with the distribution.

Except where noted, all libraries and other interfaces are upward compatible with V2.0. There has been no change in the data file format, which means that new programs will continue to work with existing data files.

Camera Modeling and Calibration

V2.1 includes a port of Reg Willson's implementation of Roger Tsai's camera model and its associated calibration procedure. The calibration software is available both as a library (-lvcam) and as a standalone program (vcamcal). A new type, VCamera, models a camera. The library includes routines for estimating model accuracy, and converting among world, camera, and image coordinate systems.

Optical Flow

V2.1 includes a port of John Barron's implementation of an optical flow estimation method due to Bruce Lucas and Takeo Kanade. The implementation is available both as a library routine (VOptFlowWLS) and as a program (vflow). There is both a program (vtops) and a library routine (VGradientImageToPS) for producing PostScript renditions of optical flow.

Edge Segmentation

V2.1 implements David Lowe's algorithm for dividing edges into segments that can be approximated by straight lines. The implementation is available both as a library routine (VSegEdgesIntoLines) and as a program (vsegedges).

Image Display

There is (we estimate) a roughly fourfold improvement in the speed of image display.

All of the image display programs now accept a -palette option for specifying the set of display colors to use. You can use this option to speed up and/or improve the quality of image display. (On a 24-bit Sun display, for example, grayscale images are displayed about twice as fast with -palette gray versus the default.)

The vxviewi image display program has been upgraded. It now shows movies, and has commands for going to the first and last frame of the current image. It also now informs the window manager of its preferred aspect ratio so that resizing is faster. The -colormap option has been renamed -palette for consistency with other Vista programs (an incompatible change).

A new routine, VForkImageDisplay, forks a process to independently display an image. This, for example, allows your program to display intermediate images using vxviewi while proceeding with its calculations.

Routines for establishing VColormaps have been enhanced so that they can be used by Motif-based program. There are now routines for mapping colors to pixel values.

VX Changes

The VX package has been placed in a separate library, -lvx, which must be included before -lvista.

All VX-based programs now inherit a -palette option like that of vxviewi, described above.

There is a new VX routine, VXReportValidOptions, for reporting the options parsed by VX.

Other New Features

The plaintov, pnmtov, vcatbands, and vcomplex programs now accept a -name option for naming the created image.

A new program, vblur, degrades an image by reducing its contrast, blurring it, and adding Gaussian noise.

New options for the vcatband program allow band interpretation attributes to be set. There is a new routine, VSetBandInterp, for setting band interpretation attributes.

The vconvolve program will now convolve with a 3D mask, and it has additional methods of treating border pixels (-pad none and -pad trim). Similar enhancements have been made to the VConvolveImage routine. There is a new routine, VConvolveImageSep, for convolving images with separable filters.

The vgauss program now takes an option for specifying the size of Gaussian filter to use. The VGaussianConvolveImage routine takes an additional argument specifying filter size (this is an incompatible change). There are new routines for generating Gaussian kernels and for computing spatiotemporal derivatives.

The vlayout and vtops programs now accept an -eps option determining whether regular or Encapsulated PostScript is produced. PostScript produced by vtops is now more concise, and less likely to cause problems when embedded in other documents. Any %%EOF, %%Page, and %%Pages comments are now stripped by vlayout. The -widths option of vtops has been renamed -linewidths to distinguish is from -width (an incompatible change). The VBeginPSDoc and VBeginVPSDoc routines now take an additional argument, title, supplying a title for a %%Title comment (an incompatible change).

The vscale program will now scale edge sets as well as images. It has an additional option allowing images to be subsampled without averaging pixel values. This subsampling method is also available as a library routine (VSampleImage).

A new program, vselbands, selects specified bands from multi-band images.

A new program, vsynth, synthesizes images containing patterns or random noise. There are also new library routines for synthesizing images and filling images with constants.

There is new software to simplify the task of supplying moderate numbers of parameters to programs. A set of parameter names, values, and descriptions may be collected into a single file. A compiler, vpdc, processes the file to produce a header file that can be included by C programs needing those parameters. Library routines allow the program to obtain new, overriding values for the parameters from program options and Vista data files.

Restrictions on the length and character sets of attribute names have been loosened. Attribute names can be up to 256 characters long, and they may contain any characters except }, ^, :, space, tab, or newline.

More data files, including camera models and image sequences, have been included with the distribution or made available on the FTP server.

Improved Portability

Some things that were formerly of type int in the library are now declared to be size_t for better conformance with ANSI C. On systems where size_t is not defined as int, this amounts to an incompatible change.

The standard routines memcpy() and memset() are now used instead of the nonstandard bcopy() and bzero().

All instances of #pragma once have been removed from header files. This #pragma was recognized by V1 of the gcc compiler, but complained about by V2.

Static functions now have prototypes that declare them as such, eliminating another source of gcc V2 complaints.

Most platform dependencies are now isolated to a single header file, src/base/lib/os.h.

Bug Fixes

We fixed a program associated with VImageView widget's busy cursor. The problem caused image display programs to produce a ``BadAlloc'' X protocol error when used with some servers.

We fixed a VReportValidOptions bug that affected printing of multi-value options.

We fixed a dithering bug that affected images with SByte, Short, and Long pixels, sometimes causing a segmentation fault or incorrect display.

The vfft program now takes an -in option without confusing it with -inverse.

We fixed a bug in the way vtops reported bounding boxes for landscape orientation. Bounding box dimensions are now rounded to integers.

VReadPnm, when reading a raw PPM file containing an RGB color image, would create a Vista image with nframes: 3 (as well as ncolors: 3). It now creates the image with just nframes: 1.

We included fixes for two VLinkImage problems, including one that corrupted dynamic memory allocation.

A missing section has been restored to the vxview man page.


Up to Vista home page