Menu

JPEG2000 compression levels and large images

Help
2012-06-20
2012-10-06
  • Steve Landers

    Steve Landers - 2012-06-20

    I've got issues with IIPImage using JPEG200 that I'd appreciate advice on.

    I'm using the iipimage-server_0.9.9-j2k-0ubuntu12.04_amd64.deb from
    http://iipimage.sourceforge.net/2012/05/new-debian-and-ubuntu-packages-
    released/
    running on Ubuntu 12.04 64bit.

    The images are (very large) medical images converted from 25Gb TIF images
    using the kdu_compress parameters mentioned at the Utrecht University Library
    blog post at http://iipimage.sourceforge.net/2012/05/from-scan-to-delivery-
    special-collections-and-iipimage-at-utrecht-university-
    library/

    kdu_compress -rate 0.5 Clayers=1 Clevels=7 Cprecincts={256,256},{256,256},{256
    ,256},{128,128},{128,128},{64,64},{64,64},{32,32},{16,16} Corder=RPCL
    ORGgen_plt=yes ORGtparts=R Cblk={64,64} Cuse_sop=yes -no_palette

    Some images work fine, but others either don't display the nav guide, or on
    initial display (i.e. unzoomed) they don't display the image or display a
    corrupted image. And it appears to depend on the browser window size.

    The iipserver log contains two types of error messages. A request for the nav
    image such as
    FIF=/usr/share/iipimage/image.jp2&WID=263.3333333333333&QLT=98&CVT=jpeg

    returns
    CVT :: JPEG output handler reached
    CVT :: image set to 286x139 using resolution 1
    CVT :: No view port set
    CVT :: Requested scaled region size is 261x127. Nearest pyramid region size is
    286x139
    Kakadu Core Error:
    Attempting to access a non-existent resolution level within some
    tile-component. Problem almost certainly caused by trying to discard more
    resolution levels than the number of DWT levels used to compress a
    tile-component.
    Kakadu :: Core Exception Caught

    Changing the WID to something smaller (e.g. 143) or larger (e.g. 573) causes
    iipserver to return the image.

    That error also occurs when requesting tiles, but I've also seen requests such
    as FIF=/usr/share/iipimage/image.jp2&CNT=1&SDS=0,90&JTL=2,3 showing errors
    such as

    JTL handler reached
    TileManager :: Cache Miss for resolution: 2, tile: 3
    TileManager :: Cache Size: 6 tiles, 0.0746182 MB
    Kakadu Core Error:
    You must close a tile before you can re-open it.
    Kakadu :: Core Exception Caught

    I have a suspicion this might be related to the image size and the number of
    Clevels used when compressing. But that's only a gut feel (and, frankly, I
    don't pretend to yet understand the kdu_compress parameters) so I'd appreciate
    any insights others have to offer.

     
  • Ruven

    Ruven - 2012-06-20

    Yes, I think your suspicion is right. Try increasing the number of levels to
    something like Clevels=12.

    And if you're able to compile the latest source code, there are various
    JPEG2000 related fixes in the development version, for error handling and
    exact size exports etc.

     
  • Steve Landers

    Steve Landers - 2012-06-22

    Confirming that increasing to Clevels=12 resolved most of the issues. One or
    two of the larges images needed Clevels=15.

     

Anonymous
Anonymous

Add attachments
Cancel