JPEG 2000: Wavelet-Based Compression for Medical, Cinema & Satellite Imagery
JPEG 2000 is the international raster compression standard ISO/IEC 15444, published in 2000 as a successor to classic JPEG (ISO/IEC 10918). The core algorithmic difference: instead of block-based 8×8 DCT, JPEG 2000 uses discrete wavelet transform (DWT), which analyses the whole image at multiple resolution levels. This delivers three qualitative properties old JPEG never had: a true lossless mode directly in the spec (via the integer 5/3 reversible wavelet), graceful degradation without the characteristic 8×8 block artefacts, and the ability to decode only the resolution level you need without reading the whole file — critical for web viewing of gigabyte-sized satellite scenes and medical images. On osm2cdr.ru JPEG 2000 isn't the primary output for vector maps, but is actively used in the raster overlay pipeline and when working with satellite sources: GeoTIFF composites are converted to .jp2 via the GDAL JP2OpenJPEG driver, which lets us store high-res maps 3-5× more compactly.

History and standard
Work on JPEG 2000 began in 1997 inside the Joint Photographic Experts Group — the same body that shipped the original JPEG in 1992. By the late 1990s the fundamental limits of DCT-based JPEG were clear: block artefacts at high compression ratios, no true lossless mode in the main spec (lossless JPEG-LS was a separate add-on standard), no ROI (region of interest), no multi-resolution. In parallel, the academic theory of wavelet compression had matured — work by Mallat, Daubechies, Antonini. The JPEG committee adopted the wavelet approach as the foundation of the new standard.
The final Part 1 (Core coding system) was published as ISO/IEC 15444-1:2000 in December 2000. The standard now spans 12 parts: Part 1 (core), Part 2 (extensions — more wavelet filters, ROI), Part 3 (Motion JPEG 2000 for video and cinema), Part 4 (conformance), Part 6 (compound documents), Part 8 (security/JPSEC), Part 9 (interactivity/JPIP — HTTP tile streaming), Part 10 (volumetric/JP3D), Part 12 (ISO base media container). The geospatial extension — GMLJP2 (part of Part 2 and a separate OGC standard) — embeds XML metadata with CRS, affine transform, GCP and projection info directly into the .jp2 container, turning it into a fully geo-aware raster akin to GeoTIFF.
File extensions: .jp2 (standard JP2 container, ISO base media), .jpx / .jpf (Part 2 extensions), .j2k / .j2c (raw codestream with no container, used in DCP — digital cinema). MIME types: image/jp2, image/jpx, image/jpm.
Inside JPEG 2000
Compression in JPEG 2000 is a four-step pipeline. First the image is split into tiles (by default the entire frame is one tile, but for gigabyte-sized snapshots tiles of 1024×1024 or 2048×2048 are common — they enable random access and parallel decode). Then each tile goes through DWT — discrete wavelet transform: lossy mode uses biorthogonal 9/7 CDF wavelet (real-valued, irreversible, but better energy compaction), lossless mode uses the integer 5/3 LeGall wavelet (reversible, recovers exact pixels bit-for-bit). DWT decomposes the image into subbands (LL/LH/HL/HH) recursively — typically 5 levels; the top LL subband is essentially a thumbnail of the source.
Next comes quantisation (for lossy; skipped in lossless), which crushes small coefficients in high-frequency subbands. The final step is EBCOT (Embedded Block Coding with Optimized Truncation): each subband is cut into code-blocks (usually 64×64), and each block is encoded by an MQ-coder arithmetic coder bit by bit, plane by plane. The result is an embedded bitstream that can be truncated at any point and still produce a valid (lower-quality) decode.
The major practical consequence of EBCOT is multi-resolution decode. A decoder can read just the first N bytes of the codestream and obtain a downscaled version of the image (like a thumbnail), or read only the tile it needs for the current zoom level. A viewer for a gigabyte-sized satellite scene doesn't have to load the whole file — it streams in only the pixels currently visible. That's the same property Cloud-Optimized GeoTIFF provides for the web, but in JP2 it's baked into the format itself, without requiring a special overview layout.
Channel support: up to 16384 components per image, up to 38 bits per channel (in practice 8/12/16-bit). Alpha channel, ICC profiles, EXIF metadata via XMP boxes. Colour spaces: sRGB, Adobe RGB, CMYK, YCbCr, plus any profile via ICC.
Use cases
Medical imaging and DICOM. JPEG 2000 is built into the DICOM (Digital Imaging and Communications in Medicine) standard as a transfer syntax — CT scans, MRI and digital X-rays are stored in exactly this format. The key reason is 12-bit and 16-bit lossless: medical sensors output more than 8 bits of dynamic range, and any lossy compression in diagnostics is legally risky. JPEG-LS and old lossless JPEG also offer lossless, but JPEG 2000 adds ROI (the region of interest can be compressed less than the rest) and multi-resolution for fast navigation through huge whole-slide pathology images.
Digital Cinema (DCP). Since 2005 Digital Cinema Initiatives (DCI) — the consortium of Disney, Fox, Paramount, Sony, Universal, Warner — has mandated Motion JPEG 2000 (Part 3) as the codec for the Digital Cinema Package, the film distribution format used in cinemas. Each frame of a film is a separate .j2c codestream, 12-bit, X′Y′Z′ colour space, 4K resolution (4096×2160), bitrate up to 250 Mbit/s. That's tens of terabytes for a feature-length film, but wavelet-based intra-frame coding guarantees visually lossless quality and random seek to any frame (no inter-frame dependencies, unlike H.264).
Satellites: Sentinel-2 and Pléiades. The European Copernicus programme distributes Sentinel-2 data (multispectral satellite, 10-60 m/pixel) in SAFE archive format, where each spectral band is stored as a separate .jp2 file with GMLJP2 metadata for georeferencing. A full L1C scene of 100×100 km is around 600-800 MB versus ~2-3 GB for an equivalent uncompressed GeoTIFF. The French commercial Pléiades and Pléiades Neo also distribute snapshots as .jp2.

Archives and heritage digitisation. Library of Congress, British Library, Wikimedia Commons (for high-res reproductions of paintings), Internet Archive (Google Books-style book scanning projects) — all use JPEG 2000 in lossless mode as their archival master format. The reasons: open ISO standard with no patent risk (the core patents expired by 2024), visually lossless storage, and multi-level decode for web previewing without a separate derivative pipeline.
Workflow in OSM2CDR
JPEG 2000 in our system is not a direct export target for vector data (for that we have GeoTIFF, PMTiles, COG), but a link in the raster overlay pipeline and in integration with satellite sources. The basic conversion scenario:
gdal_translate -of JP2OpenJPEG \
-co QUALITY=25 \
-co REVERSIBLE=NO \
-co RESOLUTIONS=6 \
-co BLOCKXSIZE=1024 -co BLOCKYSIZE=1024 \
input.tif output.jp2
Here's what happens. JP2OpenJPEG is the GDAL driver based on the open-source OpenJPEG library (BSD-licensed), which we prefer over the commercial Kakadu for licence cleanliness. QUALITY=25 sets the target compression ratio (25× over uncompressed) — for a high-res satellite overlay that produces ~30 dB PSNR, visually indistinguishable from the source at typical zoom levels. REVERSIBLE=NO selects the lossy 9/7 wavelet; for lossless set REVERSIBLE=YES (then QUALITY is ignored). RESOLUTIONS=6 builds 6 levels of wavelet decomposition, giving built-in overviews from full resolution down to 1/32. BLOCKXSIZE/BLOCKYSIZE=1024 define the tile size for random access — critical if the file will be read partially via HTTP range requests.
An alternative is -of JP2KAK (Kakadu driver), 2-3× faster on large files but requires a commercial licence. A third option is JP2ECW (ERDAS ECW driver), a historic GIS-community choice, deprecated since 2020.
In our worker pipeline JPEG 2000 appears in two places. First — Sentinel-2 ingestion: the user uploads a .SAFE archive via the legacy endpoint, we extract the needed bands (B02/B03/B04 for true colour, B08 for NIR), read the .jp2 directly through GDAL (no intermediate TIFF conversion — saving 4 GB of disk per scene), and crop to the requested bbox. Second — high-res cartographic overlay export: when the user requests PNG/JPEG but the size exceeds the JPEG limit (old JPEG degrades badly at very high resolutions), we offer JP2 as an alternative with the same compression ratio and better quality.
Related formats for comparison: GeoTIFF — uncompressed or LZW/DEFLATE, open but bulkier; Cloud-Optimized GeoTIFF (COG) — close in ideology (multi-resolution + tile access) but via HTTP range, now the de facto standard for cloud GIS services; JPEG XL — the modern JPEG successor (since 2021), technically covering many JPEG 2000 features (lossless, multi-resolution, alpha, HDR) but without a geospatial extension at the GMLJP2 level yet.

Conclusion
JPEG 2000 is a niche but solidly entrenched raster compression standard with a unique combination of properties: open ISO spec, lossless and lossy in one format, multi-level decode without separate overviews, up to 16 bits per channel. In medicine, digital cinema, and satellite processing it effectively has no alternative. For everything else — especially when you only need a web preview — look at COG or JPEG XL. If your task is to convert a raster map or satellite image to .jp2 for publication, try the conversion through osm2cdr on the /formats/jpeg2000/ page: pick the area, resolution and compression mode (lossless or lossy), and get a ready .jp2 with GMLJP2 metadata within a minute.
Related
- GeoTIFF — open georeferenced raster format
- JPEG XL — modern JPEG successor with lossless and HDR
- Cloud-Optimized GeoTIFF (COG) — rasters for cloud GIS
Sources
- ISO/IEC 15444-1:2019 (Part 1: Core coding system) — iso.org/standard/78321.html
- OpenJPEG official site — openjpeg.org
- GDAL JP2OpenJPEG driver — gdal.org/drivers/raster/jp2openjpeg.html
- OGC GMLJP2 standard — ogc.org/standards/gmljp2
- Sentinel-2 product format specification — sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-2-msi/data-formats