NASA Logo, National Aeronautics and Space Administration

Latest News

May 12, 2011: Vision Workbench v2.2.0 released! (ChangeLog)


The NASA Vision Workbench (VW) is a general purpose image processing and computer vision library developed by the Autonomous Systems and Robotics (ASR) Area in the Intelligent Systems Division at the NASA Ames Research Center. VW has been publicly released under the terms of the [NASA Open Source Software Agreement][nosa].

The Vision Workbench was implemented in the C++ programming language and makes extensive use of C++ templates and generative programming techniques for conciseness of expression, efficiency of operation, and generalization of implementation.

While substantial functionality is implemented in the Vision Workbench, the goal of the library is not to provide advanced cutting-edge image processing or computer vision capabilities. Rather, the intent is to provide a solid efficient foundation implementing well known techniques and a common framework for doing advanced research and development in collaboration with others.

The intended audience for the Vision Workbench includes computer vision and robotics researchers and developers, as well as those who simply want to transform or enhance images. At this point in time, the VW may not be suitable for those who have little experience or familiarity with C++.

The Vision Workbench is primarily developed by the [Intelligent Robotics Group][irg] (IRG) in the Intelligent Systems Division at the NASA Ames Research Center. IRG has been actively developing image processing and machine vision techniques for planetary exploration since 1995. Initially focused on providing immersive visualization capabilities for mission control, these systems were subsequently adapted for use on-board planetary rovers, as well as for large-scale data processing of planetary satellite imagery.

Approach and Library Structure

C++ templates are used extensively throughout the Vision Workbench. This enables compile time expansion and optimization of expressions, and in general terms, compile-time computation of checks and quantities that are typically performed at run-time with more traditional object oriented approaches. In addition, extensive parameterization by type of functions and classes together with careful design has the well known advantage of enabling code reuse across a variety of applications.

The Vision Workbench has a hierarchical layered architecture where each implementation layer is composed of a set of modules that are independent of modules in higher level layers. Dependencies between modules in a given layer and circular dependencies (direct or indirect) between modules are not permitted.

The following modules are distributed with this release:

  • Camera
    • pinhole and linescan camera models
    • EXIF metadata parsing
    • bayer filter decoding
  • Cartography
    • transformation between map projections
    • geo-referenced file IO (GeoTIFF, etc.)
  • Core
    • exception handling
    • debugging support
    • type system support
    • cache support
  • FileIO
    • reading and writing JPEG, PNG, TIFF, PDS, OpenEXR files (requires 3rd party libraries)
    • image paging support for large files
  • HDR
    • high dynamic range image creation from bracketed low dynamic range exposures
    • camera response curve estimation
    • global and local tone mapping operators
  • Image
    • convolution — convolve images with linear filters
    • algebra — image addition, subtraction, and multiplication by a scalar
    • math — perform per pixel math operations on images (e.g., abs, hypot, sqrt, pow, exp, log, sin, cos, asin, acos, atan2, etc.)
    • transformations — translation, rotation, scale, resampling, arbitrary warps
    • image statistics
  • Math
    • vector, matrix, quaternion and linear algebra (interface to LAPACK)
    • optimization — levenberg-Marquardt, conjugate gradient
    • homographies — estimation of relations between geometric entities
    • bounding boxes — Determination of geometric extent
  • Mosaic
    • assembling large image composites from many source images
    • multi-band blending
    • generating on-disk quad-tree representations of extremely large images
  • Stereo
    • correlating stereo pairs of images
    • stereo camera models for 3D reconstruction
    • outlier rejection

The Core, Math, Image, and FileIO modules are considered to be foundational and are required for typical library usage. The Camera, HDR, and Cartography modules are included in the library by default, but can be disabled in the VW library build process if not desired.

Downloading and Installation

The latest Vision Workbench source code release is available from the links below:

The Vision Workbench depends on a number of external libraries. Most of these external libraries are optional and not required to build the core of the Vision Workbench. However, the Boost library is required and must be downloaded, built and installed prior to building the Vision Workbench if it's not already available on your computer.

Library Dependent Modules
Boost Core, etc. (req.)
LAPACK Portions of Math, HDR (opt.)
PNG FileIO (opt.)
JPEG FileIO (opt.)
TIFF FileIO (opt.)
OpenEXR FileIO (opt.)
PROJ.4 Cartography (req.)
GDAL (>=1.7.0 recommended) Cartography (req.)

The Vision Workbench relies on the LAPACK and BLAS libraries for its basic linear algebra functions, including eigensystem solving, linear least squares, and singular value decomposition. For your convenience, we have provided a version of LAPACK as a supplementary distribution above. This LAPACK distribution has been tested with the Vision Workbench, however the Vision Workbench has been shown to work with other versions of LAPACK that may come pre-installed on your system. In particular, Mac OS X users do not need to use the LAPACK installer above — LAPACK support is provided by Apple's vecLib framework on Mac OS X.

Detailed installation and build instructions are found in the "README" and "INSTALL" files distributed with the release. You can find release notes for the current version in the "NEWS" file.


The most comprehensive source of documentation for VW is the Vision Workbook: a User's Guide to the NASA Vision Workbench. This book is available in the docs/ directory of the source distribution, or you can download a copy of the latest version here. It has not yet been updated for version 2.0 of the Vision Workbench.

In addition, [Doxygen][doxygen] can be used to automatically generate API documentation. Assuming you have doxygen installed on your system, you can generate the documentation by running "make docs" in the top level of the VW source distribution.

Mailing List

All bugs, feature requests, and general discussion should be sent to the Vision Workbench user mailing list:

  • vision-workbench [at] lists [dot] nasa [dot] gov

To subscribe to this list, send an empty email message with the subject 'subscribe' (without the quotes) to

  • vision-workbench-request [at] lists [dot] nasa [dot] gov

To contact the lead developers and project manager directly, send mail to:

  • vision-workbench-owner [at] lists [dot] nasa [dot] gov

Contributing to the Vision Workbench

Please contact vision-workbench-owner [at] lists [dot] nasa [dot] gov if you wish to contribute code to the Vision Workbench library or use the Github interface. Current development source code is available through our GitHub account at Vision Workbench is Apache 2 licensed.

First Gov logo
NASA Logo -