iipsrv 1.0

Version 1.0 of iipsrv, the IIPImage server, is now officially released! This is a major new version containing a whole host of new features, major performance enhancements, optimizations, numerous bug-fixes and stability enhancements. Major new features include support for the IIIF protocol, 32 bit floating point data support and several new image processing commands.

New features include:

IIIF - The International Image Interoperability Framework

IIIF – International Image Interoperability Framework

The IIPImage server now supports the IIIF API. The International Image Interoperability Framework (IIIF) is a protocol for standardized image retrieval created by a community of the world’s leading research libraries, major national libraries and not-for-profit image repositories in an effort to collaboratively produce an interoperable technology and community framework for image delivery. See this blog post for more information on the API and on how to use IIPImage with it. IIPImage is already one of the most widely used IIIF servers and iipsrv fully supports version 2.0 of the image API.

Floating Point Data

VisiOmatic client with 1TB floating point image, vector layers and image profile visualization.
IIPImage-based astronomy application with 1TB floating point image

Full 32 bit per channel support for both integer and floating point has now been added to iipsrv. Much of the core image processing within iipsrv is now carried out using 32 bits of dynamic range, enabling fast remote access and processing of extremely large data sets. This is particularly useful for floating point scientific data analysis and enables images to be efficiently processed on-demand. For more information on this and on how this is used for astronomy and planetary science, see this blog post, which features terabyte scale examples of floating point images.

New Commands

A series of new IIP protocol commands have been added to iipsrv to enable a range of new features:

  • Rotation: Square rotation (90°,180°,270°) is now possible using the ROT command
  • Gamma Correction: It’s now possible to set a gamma dynamically using the GAM command
  • Inversion: The INV command allows you to dynamically invert an image
  • Color-Mapping: It is now possible to generate on-demand color maps using any of the standard color schemes through the CMP command
  • Line Profiles: Export a horizontal or vertical line profile of native bit-depth raw data in JSON format via the PFL command
  • Band Recombination: The CTW command allows you to specify a matrix that will weight and combine the available input channels to generate an output RGB computed from this matrix
  • Intensity Slices: The MINXMAX command allows you to extract an intensity slice by setting a minimum and maximum intensity for each channel of the image

See the IIP protocol documentation for more details on these commands with examples of their use.

Other Features

Magic file signature support is now enabled, meaning image files can now be arbitrarily named without the need for a “.tif” or “.jp2” suffix. The server will automatically determine the image type from the magic file signature and handle it accordingly.

Improved interpolation is now available and it is possible to define the desired interpolation algorithm on server start-up using the INTERPOLATION startup variable. If not set, this defaults to bilinear interpolation.

The new CACHE_CONTROL server variable allows you to specify the HTTP cache-control policy you want. If not set, the HTTP header defaults to “max-age=86400” (i.e. 24 hours).

Arbitrary on-demand scaling is now equally available for both TIFF and JPEG2000, including upscaling to greater than 100%.

A number of improvements have been made to fix various incompatibilities with certain JPEG2000 files and for JPEG-encoded TIFF. 1 bit bilevel images are also now supported.

Production Stability

Previous versions of iipsrv were already very stable and widely deployed in production use.

Coverity Scan Results
Coverity Scan Analysis Results

Version 1.0 has undergone thousands of hours of testing by many users on different platforms and in demanding production environments and is now rock solid. In addition, iipsrv builds are now regularly analyzed by the static analysis tool, Coverity Scan.

Version 1.0 is certified completely defect free with a total of 0.00 defects!

Performance Enhancements

A number of optimizations and performance enhancements have been made making version 1.0 significantly faster than 0.9.9. The server is now also capable of comfortably handling terabyte sized images, even when containing up to 32 bits per channel (both floating point and fixed point) data.

Core image processing is now carried out using either parallel processing via OpenMP or vector SIMD (especially when using the Intel C++ compiler) giving significant speed-ups on multi-processor or multi-core machines.

When running in standalone mode, the new --backlog parameter allows iipsrv to scale to handle 1000’s of simultaneous connections.

Download

The iipsrv source code (iipsrv-1.0.tar.bz2) and binary releases are now available from the download section. Linux users running Debian, Ubuntu or Fedora will be able to use the default package manager to install or update iipsrv once the packages have been updated.

A Mac OS X binary is available here: iipsrv-1.0-OSX.zip and iipsrv will hopefully soon also be available directly through the homebrew package manager.

Windows binaries are available for download here: iipsrv-1.0-win32.zip.