Resolution not in expected header fields

Skip to end of metadata
Go to start of metadata


The format specification (15444-1annexi.pdf) defines two sets of header fields for storing an image's grid resolution: 'capture resolution' and 'default display resolution'. However, the description of the 'default display' fields is vague and open to multiple interpretations, whereas the definition of 'capture resolution' is partially incomplete. This has lead to the situation that the software of most vendors will only write to / read from the 'capture' fields, whereas some others (esp. Kakadu's kdu_compress and kdu_expand version 6.4 and earlier) only consider the 'default display' fields.

The standards committee is currently addressing this issue through an amendement to the existing standard (see below).


As these fields are handled differently by different encoders/decoders, this introduces the risk that future migrations may lead to loss of resolution information. In addition, hardcopy printouts may be printed at the wrong size, and some software products for optical character recognition may fail to process images because the underlying algorithms only work properly if accurate resolution information is available.


Check if resolution box exists

Tool Exists if expression returns True
Jpylyzer "boolean(/jpylyzer/properties/jp2HeaderBox/resolutionBox)"

Check if capture resolution box exists

Tool Exists if expression returns True
Jpylyzer "boolean(/jpylyzer/properties/jp2HeaderBox/resolutionBox/captureResolutionBox)"

Check if display resolution box exists

Tool Exists if expression returns True
Jpylyzer "boolean(/jpylyzer/properties/jp2HeaderBox/resolutionBox/displayResolutionBox)"

Resolution handling by popular JPEG 2000 implementations

The table below shows the default fields that are used by a number of widely-used encoder/decoder applications.

Encoder Capture Resolution Default Display Resolution
Kakadu kdu_compress (version 6 and before)
Kakadu kdu_compress (version 7 and later)
Aware JPEG 2000 SDK
Luratech command line tool
Adobe Photoshop CS4 with Adobe JPEG2000 plugin

Source: with additional (unpublished) tests by same author.



Formulate policy ('control policy') on storage of resolution in JP2s, taking into account existing workflows (including optical character recognition and possible future migrations). Note here that currently most encoders/decoders use the 'capture' fields.


Use Jpylyzer to establish if files conform to 'control policy'. Reject any files that do not pass this test.

Existing collections

  • Use Jpylyzer to establish if files conform to 'control policy'.
  • If files fail the above test, mark this in their associated in metadata. Document the issue and the associated risks.
  • Normalisation may be considered. This could be as simple as changing the 'type' field of a 'default display' box to 'capture' (or vice versa). Nevertheless, this would require careful planning and risk assessment.

Additional information

Upcoming changes to the standard

An amendment to the standard (ISO/IEC 15444-1:2004/AMD6) is in preparation has been published which will, among other things, includes a more specific description of the resolution fields and their intended use. This should clear up most confusion about this in the future. See also the following blog post by Rob Buckley, and the August 2011 draft of the amendment.


From version 7.0 onward, Kakadu's kdu_compress tool will use the 'capture' fields when converting a TIFF to JP2. This change brings it in line with the amendment (see above) and the existing behaviour of most other encoders (Luratech, Aware, etc.).

Example files


Buckley, R. Color in JP2. Wellcome Library. April 2011
Van der Knijff, J.M. JPEG 2000 for Long-term Preservation: JP2 as a Preservation Format. D-Lib Magazine Volume 17, Number 5/6. May 2011
ISO/IEC 15444-1:2004/PDAM 6. Updated ICC profile support, bit depth and resolution clarifications. Draft, August 2011.
T.800 : Updated ICC profile support, bit depth and resolution clarifications

formatissue formatissue Delete
jp2 jp2 Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.