From VipsWiki
Jump to: navigation, search

VIPS was started in late 1989 as the image processing system for the VASARI project.

See the wikipedia page on VIPS.

The VASARI Project

VASARI was an EU-funded research project to build a system capable of measuring long-term colour change in old master paintings. Previous systems had made a series of point measurements of areas thought likely to degrade --- of course this meant that changes in parts of the painting that hadn't been measured would be missed. VASARI aimed to fix this by using a camera to record the entire surface.

The project had partners in Germany, France, Italy and Britain. Kirk Martinez of Birkbeck College and David Saunders of the National Gallery were responsible for building the London scanner. Kirk hired Nicos Dessipris, who had been a fellow research student in the Image Processing department of the University of Essex, and David hired John Cupitt, who had just finished a PhD in Theoretical Computer Science at the University of Kent.

We wanted to image paintings up to about 1m by 1m. We wanted resolution of up to about 20 pixels per millimetre, since the smallest interesting features in a painting are about 0.1mm. We needed many colour bands (we settled on 7), since we wanted to measure reflectance spectra rather than just RGB colour. Finally, we wanted 16 bit data. Put these requirements together and you reach an image size of about 1GB per colour channel. We could not find an image processing library which could handle the data size we needed, so we wrote our own. Machines of the time were very modest by today's standards, a Sun workstation cost £40,000, had 64MB of RAM and ran at 25 MHz, so this was quite a challenge.

Kirk and Nicos had used HIPS for their PhDs, so VIPS was based rather strongly on that. It used memory-mapped files for input (back then an exciting novelty) and wrote data a scanline at a time. At the National Gallery, John Cupitt wrote a GUI called "vf" in SunView, Sun's graphical environment. The first version just displayed an image on the workstation screen and let you pan and zoom. The next version added a simple expression language and let you type in things like "a + 12" to brighten an image. It was renamed "ip", for image processing.

VASARI ended well enough that in 1993 we had a follow-on project called MARC. This aimed to use the imaging techniques developed in VASARI to build a colorimetric camera and to use it to print an art catalogue. Nicos left and John took over the development of the VIPS library, the GUI and the camera software. Sun had just produced their first two-CPU workstation, so VIPS gained SMP support. We also wanted to reduce the time we were spending on disc IO, so at the same time we added the ability to "chain" operators together without the need for intermediate storage. ip was rewritten to use the Motif user-interface toolkit and gained fully editable history.

More projects followed (including Viseum, ACOHIR and Artiste) and VIPS and ip developed in response to their needs. We moved from Sun to Linux in the late 90s and ip moved from Motif to GTK+, becoming nip. VIPS gained support for files larger than 2GB, and for up to 64 CPUs. nip was rewritten again for GTK+-2.0 and became the nip2 we know today.

In 2005, John Cupitt moved from the National Gallery to Imperial College to work on medical imaging and VIPS and nip2 are now maintained there. Recent additions have been support for Analyze, DICOM3, FITS, Matlab and Radiance images, run-time code generation and sequential mode read.

By 2010 libvips had become rather sprawling, with many systems implemented at the wrong level, and with a lot of duplication between the various levels. We designed a new API and reimplemented the whole thing on top of GObject. This project was completed with the launch of libvips-8.0 in April 2015.

VIPS is a standard part of most Linux distributions and has an active, if small, community.