VIPS (software)

Last updated
Stable release
8.15.2 [1]   OOjs UI icon edit-ltr-progressive.svg / 14 March 2024;4 months ago (14 March 2024)
Repository
Written in C, GTK+
Operating system Microsoft Windows, macOS, Linux
Type image processing
License GNU Lesser General Public License
GNU General Public License
Website libvips.github.io/libvips/

VIPS is an open source image processing software package. [2] [3] It is particularly good with large images, works with multi-core processors, working with colour, scientific analysis and general research & development. It was developed during and is the product of several European research projects (VASARI, MARC, ACOHIR, Viseum) which were primarily about Imaging art, [4] but which demanded a new approach to image processing.

Contents

Compared to most image processing libraries VIPS needs little RAM and runs quickly, especially on machines with more than one CPU. This is primarily due to its architecture which automatically parallelises the image workflows. [5]

The software has two main parts: libvips is the image-processing library and nip2 is the graphical user-interface. The GUI aims to be about half-way between Photoshop and Excel. It is not designed for tasks such as retouching photographs, but more useful for the many other imaging tasks that programs like Photoshop are used for. Both work on Linux, Unix, Windows and Apple macOS (10.2 and later). [6]

VIPS is a standard package for many Linux distributions, including Debian, Fedora, Mint, and Ubuntu. [7] [8] [9] [10]

Software Design

Most of libVIPS is written in C, with bindings available for Python, Ruby and several other languages.

Vipspartials.png

VIPS processes images in small portions (rectangles or groups of lines) and groups of operations are automatically run by separate threads. This makes the processing parallel because modern systems run the threads on different cores. It also means that image intermediates are small and can easily be stored in RAM. This is how multi-GB sized images can be processed on machines efficiently. [11] It also uses the smallest storage type for values, so a typical RGB image would use three one byte values but after arithmetic operations these scale up to avoid errors to 16 and 32 bit values. The demand-driven design means that if only a certain part of input images are required to compute what is needed, only the required parts are calculated. There are many architectural elements which give VIPS its speed [12] including its lack of locks and ability to overlap input and output. Most images start as three bytes per pixel (RGB) but when processing VIPS will upsize the elements to 16, 32 or 64 bits each if necessary to avoid clipping/rounding errors. This also contributes to the speed and low RAM use. Its demand-driven design means that, for example, a very large intermediate image may not be fully calculated if the output target requires just a small part of it.

History [13]

VASARI [14] 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 through imaging: it would use a camera to measure colour and simply record the whole painting.

The project had partners in Germany, France, Italy and Britain. Kirk Martinez of Birkbeck College and David Saunders of the National Gallery London were responsible for building the London scanner. Kirk hired Nicos Dessipris, who had been a fellow research student in the Image Processing group 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.

The project wanted to image paintings up to about 1m by 1m, with a resolution of up to about 20 pixels per millimetre, since the smallest interesting features in a painting are about 0.1mm. Multiple colour bands were needed (7 was decided upon), since the aim was to measure reflectance spectra rather than just colour. The final requirement was for 16 bit data. Put these requirements together and you reach an image size of about 1GB per colour channel. A suitable image processing library which could handle the data size needed could not be found, so custom one was developed. 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 had developed simple but fast C libraries during his PhD which worked on memory-mapped "framestores" for video processing. Kirk and Nikos looked at HIPS for inspiration but found pipes too inefficient. So VIPS was based on their experience with that as well as early Unix image processing software they developed. Early VIPS code used memory-mapped files for input (back then an exciting novelty which was faster than file I/O) 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. It was through these early experiments that the basics of libVIPS were created.

VASARI ended in 1993 but a follow-on European project called MARC allowed for more development. 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. A further aim was to reduce the time spent on disc IO, so at the same time the ability to "chain" operators together without the need for intermediate storage was added. ip was rewritten to use the Motif user-interface toolkit and gained fully editable history.

In 1997 Kirk Martinez moved to the University of Southampton so development and use continued in more projects (including Viseum, [15] ACOHIR [16] and Artiste [17] ) and VIPS and ip developed in response to their needs. The software was 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 gained many features while worked there. Recent additions have been support for Analyze, DICOM3, FITS, Matlab and Radiance images, run-time code generation, and the start of a move to a GObject foundation. It is John's ingenuity and programming skills which have made libVips so successful today. [18]

Users

libVIPS is currently used in MediaWiki and hence by Wikipedia itself in the VipsScaler extension. This speeds up and extends image handling compared to previously used software and hence saves processor time on the busy systems. For similar reasons it is used by Booking.com, Amazon, the New York Times, fda.gov, Homefinder and Idealista among over a thousand companies.[ citation needed ] The popular Sharp Node.js module and Gatsby use libVIPS so web sites using them rely on libVIPS. Amazon Web Services recommend Sharp/VIPS in their guidelines [19] Many image archives use IIPimage to allow browsing of very high resolution images online - and these are normally prepared using libVIPS.

License

libvips is licensed under the LGPL and nip2 is licensed under the GPL.

Related Research Articles

<span class="mw-page-title-main">Linux distribution</span> Operating system based on the Linux kernel

A Linux distribution is an operating system made from a software collection that includes the Linux kernel and often a package management system. They are often obtained from the website of each distribution, which are available for a wide variety of systems ranging from embedded devices and personal computers to servers and powerful supercomputers.

<span class="mw-page-title-main">APT (software)</span> Free software package management system

Advanced package tool, or APT, is a free-software user interface that works with core libraries to handle the installation and removal of software on Debian and Debian-based Linux distributions. APT simplifies the process of managing software on Unix-like computer systems by automating the retrieval, configuration and installation of software packages, either from precompiled files or by compiling source code.

<span class="mw-page-title-main">Light-weight Linux distribution</span> Operating system with low resource requirements

A light-weight Linux distribution is one that uses lower memory and/or has less processor-speed requirements than a more "feature-rich" Linux distribution. The lower demands on hardware ideally result in a more responsive machine, and/or allow devices with fewer system resources to be used productively. The lower memory and/or processor-speed requirements are achieved by avoiding software bloat, i.e. by leaving out features that are perceived to have little or no practical use or advantage, or for which there is no or low demand.

<span class="mw-page-title-main">MemTest86</span> Computer memory diagnostics software

MemTest86 and Memtest86+ are memory test software programs designed to test and stress test an x86 architecture computer's random-access memory (RAM) for errors, by writing test patterns to most memory addresses, reading back the data, and comparing for errors. Each tries to verify that the RAM will accept and correctly retain arbitrary patterns of data written to it, that there are no errors where different bits of memory interact, and that there are no conflicts between memory addresses.

<span class="mw-page-title-main">Ubuntu</span> Linux distribution developed by Canonical

Ubuntu is a Linux distribution derived from Debian and composed mostly of free and open-source software. Ubuntu is officially released in multiple editions: Desktop, Server, and Core for Internet of things devices and robots. The operating system is developed by the British company Canonical and a community of other developers, under a meritocratic governance model. As of April 2024, the most-recent long-term support release is 24.04.

<span class="mw-page-title-main">Hugin (software)</span> Photo stitching software

Hugin is a cross-platform open source panorama photo stitching and HDR merging program developed by Pablo d'Angelo and others. It is a GUI front-end for Helmut Dersch's Panorama Tools and Andrew Mihal's Enblend and Enfuse. Stitching is accomplished by using several overlapping photos taken from the same location, and using control points to align and transform the photos so that they can be blended together to form a larger image. Hugin allows for the easy creation of control points between two images, optimization of the image transforms along with a preview window so the user can see whether the panorama is acceptable. Once the preview is correct, the panorama can be fully stitched, transformed and saved in a standard image format.

CPython is the reference implementation of the Python programming language. Written in C and Python, CPython is the default and most widely used implementation of the Python language.

Parallels Workstation is the first commercial software product released by Parallels, Inc., a developer of desktop and server virtualization software. The Workstation software comprises a virtual machine suite for Intel x86-compatible computers which allows the simultaneous creation and execution of multiple x86 virtual computers. They distributed the product as a download package. Parallels Workstation has been discontinued for Windows and Linux as of 2013.

In Linux systems, initrd is a scheme for loading a temporary root file system into memory, to be used as part of the Linux startup process. initrd and initramfs refer to two different methods of achieving this. Both are commonly used to make preparations before the real root file system can be mounted.

A Debian Pure Blend is a project completely inside of Debian targeting a server or a desktop installation in very broad and general terms.

<span class="mw-page-title-main">PulseAudio</span> Sound server for Unix-like operating systems

PulseAudio is a network-capable sound server program distributed via the freedesktop.org project. It runs mainly on Linux, including Windows Subsystem for Linux on Microsoft Windows and Termux on Android; various BSD distributions such as FreeBSD, OpenBSD, and macOS; as well as Illumos distributions and the Solaris operating system. It serves as a middleware in between applications and hardware and handles raw PCM audio streams.

<span class="mw-page-title-main">Ubuntu Studio</span> Derivative of the Ubuntu operating system

Ubuntu Studio is a recognized flavor of the Ubuntu Linux distribution, which is geared to general multimedia production. The original version, based on Ubuntu 7.04, was released on 10 May 2007.

<span class="mw-page-title-main">Kirk Martinez</span> British Professor in Electronics and Computer Science and pioneer in digital image processing

Kirk Martinez is a Professor in Electronics and Computer Science at the University of Southampton UK. He gained a BSc in Physics from the University of Reading and a PhD in Image Processing in the department of Electronic Systems Engineering at the University of Essex. While Arts Computing Lecturer at Birkbeck College London (1987–96) he pioneered the digital imaging of paintings together with The National Gallery, London in the European project VASARI (1980s). This led to development of art imaging projects to print accurate art books, view high detail images on the web and find art images online. He has published this research in books on image processing and computer architecture as well as Transactions of the IEEE on content-based image retrieval He was an advisor on the imaging and image processing required for the Archimedes Palimpsest. Recent research led to a new imaging system for ancient seals together with Oxford University - which is helping to capture and read historic texts.

<span class="mw-page-title-main">Jami (software)</span> Distributed multimedia communications platform

Jami is a SIP-compatible distributed peer-to-peer softphone and SIP-based instant messenger for Linux, Microsoft Windows, macOS, iOS, and Android. Jami was developed and maintained by the Canadian company Savoir-faire Linux, and with the help of a global community of users and contributors, Jami positions itself as a potential free Skype replacement.

<span class="mw-page-title-main">TurnKey Linux Virtual Appliance Library</span> Open-Source virtual appliance library

The TurnKey Linux Virtual Appliance Library is a free open-source software project which develops a range of Debian-based pre-packaged server software appliances. Turnkey appliances can be deployed as a virtual machine, in cloud computing services such as Amazon Web Services or installed in physical computers.

<span class="mw-page-title-main">Whonix</span> Anonymous operating system

Whonix is a Linux distribution, based on Kicksecure OS, claimed to be security hardened by its developers. Its main goals are to provide strong privacy and anonymity on the Internet. The operating system consists of two virtual machines, a workstation and a Tor gateway running Debian. All communications are forced through Tor.

<span class="mw-page-title-main">Banana Pi</span> Series of Chinese single-board computers

Banana Pi is a line of single-board computers produced by the Chinese company Shenzhen SINOVOIP Company, its spin-off Guangdong BiPai Technology Company, and supported by Hon Hai Technology (Foxconn). Its hardware design was influenced by the Raspberry Pi, and both lines use the same 40-pin I/O connector.

Zstandard is a lossless data compression algorithm developed by Yann Collet at Facebook. Zstd is the corresponding reference implementation in C, released as open-source software on 31 August 2016.

LibRaw is a free and open-source software library for reading raw files from digital cameras. It supports virtually all raw formats. It is based on the source code of dcraw, with modifications, and "is intended for embedding in raw converters, data analyzers, and other programs using raw files as the initial data."

<span class="mw-page-title-main">Neofetch</span> System information shell tool

Neofetch is a system information tool written in the Bash shell scripting language. By default, on the left side is a logo of the distribution, rendered in ASCII art. Unlike a system monitor, the tool only features a static display of the computer's basic hardware and software configurations and their versions, typically operating system, the host, uptime, package managers, the shell, display resolution, desktop environment, window manager, themes and icons, the computer terminal, CPU, GPU, and RAM. Neofetch can also display images on the terminal with w3m-img in place of the ASCII logo art. Neofetch development has been discontinued as of April 26, 2024.

References

  1. "Release 8.15.2". 14 March 2024. Retrieved 26 March 2024.
  2. Martinez, K. and Cupitt, J. (2005) VIPS ― a highly tuned image processing software architecture. In Proceedings of IEEE International Conference on Image Processing 2, pp. 574-577, Genova
  3. Cupitt, J. and Martinez, K. (1996) VIPS: An image processing system for large images, Proc. SPIE, vol. 2663, pp. 19--28 full paper
  4. Cupitt, J. and Martinez, K. (1994) Image processing for Museums. In: pp. 133-147, John Wiley. ISBN   0-471-93941-2
  5. "Speed and memory use · libvips/Libvips Wiki". GitHub .
  6. Cupitt, J., Boobis, A., Jones, H. (2007) Automating image analysis with VIPS, Poster presentation, Hounsfield Memorial Lectures on Medical Imaging
  7. Debian VIPS package http://packages.qa.debian.org/v/vips.html
  8. Ubuntu VIPS package http://packages.ubuntu.com/wily/libvips-tools
  9. Fedora https://apps.fedoraproject.org/packages/nip2
  10. Mint http://community.linuxmint.com/software/view/nip2
  11. "How it works - VipsWiki". www.vips.ecs.soton.ac.uk. Archived from the original on 2010-03-23.
  12. "Why is libvips quick?". GitHub . Retrieved 4 March 2021.
  13. "VIPS History · libvips/Libvips Wiki". GitHub .
  14. "The VASARI project".
  15. "VISEUM Project". Archived from the original on 2006-10-20. Retrieved 2012-02-06.
  16. "Use Online Dating Websites and Applications".
  17. "How to start a blog | Make your own website".
  18. "Contributors to libvips/Libvips". GitHub .
  19. "Resizing Images with Amazon CloudFront & Lambda@Edge". aws blog. Amazon. 20 February 2018. Retrieved 4 March 2021.