Version 7.7

Version 7.7

The main new features in this release are advanced visual optimization options for compression, plus a number of important improvements to the Kakadu server and client components, along with the underlying communications sub-system that supports them. There are also a number of very important bug fixes in this release. In greater detail:  

1. Introduced a neighbourhood contrast masking mechanism into the block coding machinery. This option, known as “Cvis”, was first reported in Taubman’s EBCOT paper (IEEE Trans. Image Processing, 2001) that formed the basis for the JPEG 2000 standard. The method has been reported on a number of occasions and by several different researchers as yielding noteworthy improvements in visual compression performance, although objective metrics such as PSNR will naturally give poorer results when using such visual optimizations. The “Cvis” option appears to be particularly compelling when compressing large images with a wide variety of different contrasts, but also when compressing sets of images jointly, or using distortion-length slope thresholds (-slope) to specify image quality levels. Across a database of compressed content, using “Cvis” with a “-slope” objective should give more consistent visual quality for a given average compressed size than the other methods available. However, this is still a matter for experimentation at the current stage.

2. Augmented the “kdu_compress” demo-app with various options to automatically control visual weighting factors (CSF-weights), and also with the option to pre-convert content from an RGB representation to YCbCr with sub-sampled chroma components (similar to what is usually done by default with regular JPEG compression and also by common video codecs). These options are not necessarily desirable for all applications and they exist only to make it more convenient to do things that have always been possible. The “-rgb_to_420″ option to “kdu_compress” both converts to a chroma-subsampled opponent space and configures reasonable visual weights by default, which usually leads to good visual performance out of the box. Add this to the “Cvis” options and some very interesting results can be achieved easily.

3. JPIP Server improvements:

a.) The core network monitoring machiney is now more flexible and energy efficient, which should be of benefit for applications in which the server is deployed on a mobile device. b.) Network state estimation (rate and delay) in the server is now substantially improved, along with the introduction of better congestion management that significantly impacts the implementation of the HTTP-UDP transport protocol. c.) Corrected a problem with progressive memory growth while serving long animations or video. d.) The “kdu_server” application now offers a “-daemon” mode, that launches the JPIP service as a daemon on Unix-like operating systems such as Linux and OSX. e.) The HTTP-only transport is now much more efficient than it was, although HTTP-TCP and HTTP-UDP remain the highest performance transport protocols.

4. JPIP Client improvements:

a.) The `kdu_client’ object now disconnects from a live service more effectively and rapidly, while doing so gracefully. b.) Problems with HTTP version identification in some locales (esp. France) have now been resolved.

5. The core codestream parsing machinery is now largely robust to invalid tile-part length values that sometimes popped up in corrupted or mis-written content. Third party tools could sometimes read such content correctly because if they were parsing linearly through the content, ignoring the tile-part length hints. Kakadu still uses all available hints and pointers in the codestream, but can silently recover from problems it finds in the content.

6. Kakadu now supports all the ammendments documented in IS15444-1/AMD8 (Interoperable Master Format), including the IMF profiles that were introduced with version 7.6 and updates to the elementary stream metadata.

7. Bug fixes: all bugs reported up to this release have been fixed, plus quite a number that were never reported. Some of the more important ones are:

a.) Incorrect handling of nested rubber-length boxes (rare) in JP2-family files has been fixed. b.) A subtle bug affecting the rendering of certain multi-tile imagery at high precision by `kdu_region_decompressor’ has been fixed. This bug was introduced accidentally into v7_6. c.) A subtle problem with dynamic re-loading of certain types of codestreams (non-seekable file-based with layer-progressive order) during interactive viewing has been fixed.

Go Top