VIPS is a 2D scientific image processing system. It needs little memory and runs quickly, especially on multi-CPU machines. It has good support for large images and for colour.
The library is mostly C with some C++. There are C, C++, Python, GUI and command-line interfaces. It runs on any Unix, with convenient packages in the major distributions, and on Windows. It is licensed under the LGPL.
The GUI is an unsual blend of a spreadsheet and a paint program. It is licensed under the GPL.
Load, crop, shrink, sharpen and save a 5k x 5k pixel RGB tiled TIFF image. Fastest real time of three runs on a quiet system. Tests run on a 2 CPU Opteron server.
Image and Graphicsmagick both compiled with Q16. Freeimage does not have a sharpening operation, so that part of that test was skipped. nip2 seems slow because it has a long start-up time: once it starts, it processes at the same speed as the Python and C++ versions. Octave (Matlab) does not aim to be quick, we include the time for interest. The source-code for the various implementations is on the VIPS website.
Load, crop, shrink, colour-correct, sharpen and save a 10k x 10k pixel CIELAB image in VIPS format. Number of CPUs on horizontal axis, speed-up on vertical. Run on a 64-CPU Itanium2 supercomputer (SGI Origin 2000). Details of the benchmark and source-code are on the VIPS website.
nip2, the VIPS GUI, is a spreadsheet where each cell can be a complex object: an image, plot, widget, matrix, etc.
nip2 has its own lazy, higher-order, pure functional language with classes, somewhat like dynamically typed Haskell. Spreadsheet cells are class instances. Cells are joined with snippets of this language.
As the spreadsheet recalculates it builds optimised VIPS pipelines behind the scenes. Image generation is then pure VIPS.
You can use nip2 for quite large, complex applications. We have a set of linked workspaces which analyze four-dimensional images (volumes over time) from PET scanners to calculate tissue inflammation indicies.
The workspaces read ~300MB of image data, process ~7,000 images, generate ~60 GB of intermediate images and take ~2 minutes to completely recalculate. They need ~400 MB of RSS to run.
A useful tool for a technical user, not aimed at a general audience.
The current stable version has several GObject-based systems. We plan to move most of the VIPS types to GObject in the next version, then start rewriting operations in the version after. We will switch to doxygen for API docs.
This should give us a sane, extensible, well-documented, easy to bind API with hopefully similar performance to the current version.