JPEG XL

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
JPEG XL
JPEG XL logo.svg
Filename extension
.jxl
Internet media type
image/jxl
Magic numberFF 0A or 00 00 00 0C 4A 58 4C 20 0D 0A 87 0A
Developed by
Type of formatLossy/lossless bitmap image format
Extended from
StandardISO/IEC 18181
Open format?Yes (royalty-free)
Website

JPEG XL is a royalty-free raster-graphics file format that supports both lossy and lossless compression. It is designed to outperform existing raster formats and thus to become their universal replacement.[2]

Name[edit]

The name consists of JPEG (for the Joint Photographic Experts Group, which is the committee which designed the format), X (part of the name of several JPEG standards since 2000: JPEG XT, JPEG XR, JPEG XS) and L (for long-term). The L was included as the authors' intention for the format is to replace the legacy JPEG and last as long too.[3]

Description[edit]

Since August 2017, JTC1/SC29/WG1 issued a series of draft calls for proposals on JPEG XL – the next generation image compression standard with substantially better compression efficiency (60% improvement) comparing to JPEG.[4] The standard is expected to exceed the still image compression performance shown by HEVC HM, Daala and WebP and to outperform JPEG unlike previous attempts to replace it for the web eg. (JPEG 2000) and also providing more efficient recompression lossless transport options for storage of images in the traditional/legacy JPEG format.[5][6][7] The core requirements include support for ultra-high resolution images (at least 40 MP), 8-10 bits per component. RGB / YCbCr / ICtCp color encoding, animated images, alpha channel coding, Rec.709 (sRGB) and gamma (2.4-power) color space, Rec.2100 wide color gamut color space (Rec.2020), and high dynamic range transfer functions (PQ and HLG), high-quality compression of synthetic images, such as bitmap fonts and gradients.

The standard should also offer higher bit depths (12–16 integer bits and floating point): additional color spaces with transfer functions such as Arri's Log C. Embedded preview images, lossless alpha channel encoding, image region encoding and complexity encoding. Any patented technology would be licensed on a royalty-free basis. The proposals were submitted by September 2018, leading to a committee draft in July 2019, with file format and core coding system were formally standardized on 13 October 2021 and 30 March 2022 respectively.[8][9][10][11]

Features[edit]

The main features are:[12][13]

More functions
Improved functionality and efficiency compared to traditional image formats (e.g. JPEG, GIF and PNG).
Bigger dimensions allowed
Image dimensions of over a billion (230−1) pixels on each side.[14]
Lots of channels available
Up to 4099 channels: main channels: either one channel for grayscale, three channels for RGB, or four channels for CMYK. Additionally the rest of the channels as optional "extra" channels like alpha, depth or thermal data.[14] Individual channels of an image can have unique resolutions, pixel dimensions, dimensions and shifts, making them work more like layers in graphics software.
Independent tiles
Decoding of sections of a large image by allowing images to be stored in tiles.
Progressive decoding
Mode specifically designed for responsive loading of large images depending on the viewing device's resolution.
Reversible JPEG transcoding
~20% size reduction can be achieved. CMYK JPEGs are not supported for transcoding, but they are very rare.[15] Transcoding to progressive JPEG XLs is supported by the format, but not yet implemented in the reference software.[16]
Lossless encoding
Includes lossless alpha encoding.
Support for both photographic and synthetic imagery
The format features two complementary modes that can be used depending on the image contents.
Graceful quality degradation across a large range of bitrates
Quality loss isn't as abrupt as with older formats.
Perceptually optimized reference encoder
It uses by default perceptual color space, adaptative quantization and conservative default settings.
Support for wide color gamut and HDR
JPEG XL has built-in support for various color spaces, transfer curves and high screen brightness.
Support for animated content
For encoding realistic content regular video codecs are preferred.
Efficient encoding and decoding without requiring specialized hardware
JPEG XL is about as fast to encode and decode as old JPEG using libjpeg-turbo and an order of magnitude faster to encode and decode compared to HEIC with x265.[14] It is also parallelizable.
Royalty-free format with an open-source reference implementation
The software is available on GitHub under a 3-clause BSD license.[17]

Technical details[edit]

refer to caption
JPEG XL codec architecture diagram

JPEG XL is based on ideas from Google's PIK format and Cloudinary's FUIF format (which was in turn based on FLIF).[18]

Modular mode based on FUIF, born after FLIF. It contains elements of PIK lossless, lossless WebP and new ideas that have been developed during development of Jxl from its starting point PIK + FUIF.[19]

The format is mainly based on two encoding modes, included in the finalization of January 2021.

VarDCT (variable-blocksize DCT) – it utilizes same DCT algorithm as legacy JPEG, but blocks instead of being restricted to 8×8 come in various sizes (2×2 up to 256×256), non-square shapes (e.g. 16×8, 8×32, 32×64) or can use another transforms (AFV, Hornuss). The VarDCT mode is based on (lossy) PIK.

Modular, which covers lossless, near-lossless/palette delta) - responsible, among other things, for efficient lossless content encoding. This is the mode exploited internally in VarDCT to save a whole series of auxiliary 2D data such as the fields/weights of adaptive quantization and any additional/extra channels (e.g. alpha, depth, thermal, spot colors etc.) and DC image, 1:8 subsampled image (DC coefficients) of the VarDCT mode.

Modular, allows lossy compression with the help of modified Haar transform (called squeeze), which has progressive properties: the quality of the image increases with the amount of data loaded. One of the ways VarDCT-based images can be loaded progressively is by saving VarDCT DC coefficients with modular "squeeze", making both modes work in tandem. They can be assisted by separate modeling of specific image features, unknown in other codecs at the time of creating the format:[a]

  • splines for coding e.g. hairs (not yet used in reference encoder), splines and noises are removed in Libjxl-tiny.
  • repeating "patches" like text, dots or sprites,
  • noise synthesis (since noise is hard to predict, it is better to separate it out and then regenerate the noise in the decoder): This is apparently catching on other modern codecs as well: the JPEG XL compression scheme includes a noise generator that reconstructs the noise from the parameters in the image, rather than compressing it directly. The AV1 grain generator is more like a texture generator, for relatively large patches of analog film grain. Jxl's noise generator is used to model photon noise of a single pixel size like what you get on a digital camera at high ISO settings.

Lossy modes typically use the XYB color space derived from LMS.[21] JPEG XL can also losslessly reencode existing JPEG files by directly copying JPEG's DCT block coefficients to 8×8 VarDCT blocks, making smaller file sizes possible due to better entropy coding, with JPEG reconstruction data allowing transcoding back to original JPEG file, although constraints limit support for some files.[22]

Prediction is run using a pixel-by-pixel decorrelator without side information, including a parametrized self-correcting weighted ensemble of predictors. Context modeling includes specialized static models and powerful meta-adaptive models that take local error into account, with a signaled tree structure and predictor selection per context. Entropy coding is LZ77-enabled and can use both asymmetric numeral systems (ANS) and Huffman coding (for low complexity encoders or for reducing overhead of short streams).[citation needed]

JPEG XL defaults to a visually near-lossless setting that still provides good compression.[14]

Animated (multi-frame) images do not perform advanced inter-frame prediction, though some rudimentary inter-frame coding tools are available:

  • frames can update only parts of the canvas;
  • besides replacing parts of the canvas, frames can also be blended, added or multiplied to parts of it;[23]
  • up to four frames[24] can be remembered and referenced using the "patches" coding tool in later frames.[25]

Software[edit]

Codec implementation[edit]

JPEG XL Reference Software (libjxl)
Libjxl wordmark.svg
Libjxl 0.6.1 screenshot.png
Initial releaseDecember 27, 2020; 21 months ago (2020-12-27)
Stable release
0.7 / September 21, 2022; 10 days ago (2022-09-21)
Repositoryhttps://github.com/libjxl/libjxl[26] Edit this on Wikidata
Written inC++
Operating system
LicenseNew BSD License (previously Apache License 2.0)
Websitejpeg.org/jpegxl Edit this on Wikidata
  • JPEG XL Reference Software (libjxl)
    • license: New BSD License (previously Apache License 2.0)
    • contains (among others):
      • coder cjxl
      • decoder djxl
      • fast lossless-only coder fjxl
      • tool for benchmarking speed and quality of image codecs benchmark_xl
      • GIMP and Gtk pixbuf plugin file-jxl
  • Independent, self-contained JPEG XL decoder (j40)
    • license: MIT License No Attribution
    • C99 single header library (no dependencies)

Official support[edit]

Unofficial support[edit]

Preliminary support[edit]

History[edit]

In 2017, JTC1/SC29/WG1 (JPEG) issued a call for proposals for JPEG XL – the next generation image coding standard.[44] The main authors of the specification are Jyrki Alakuijala, Jon Sneyers and Luca Versari. Other collaborators are Sami Boukortt, Alex Deymo, Moritz Firsching, Thomas Fischbacher, Eugene Kliuchnikov, Robert Obryk, Alexander Rhatushnyak, Zoltan Szabadka, Lode Vandevenne and Jan Wassenberg.

The file format (bitstream) was frozen on 25 December 2020[45] and formally standardized on 13 October 2021.[46] Any file compliant to this standard is guaranteed to be decodable by all future releases.

Standardization status[edit]

Common Name Part First public release date (First edition) ISO/IEC Number Formal Title
JPEG XL Part 1 30 March 2022 ISO/IEC 18181-1 JPEG XL Image Coding System — Part 1: Core coding system
Part 2 13 October 2021 ISO/IEC 18181-2 JPEG XL Image Coding System — Part 2: File format
Part 3 planned for October 2022 ISO/IEC PRF 18181-3 JPEG XL Image Coding System — Part 3: Conformance testing
Part 4 5 August 2022 ISO/IEC 18181-4 JPEG XL Image Coding System — Part 4: Reference software

Notes[edit]

  1. ^ Noise synthesis is an exception, as it's also featured in AVIF created before JPEG XL.[20]

References[edit]

  1. ^ a b "fuif/README.md". GitHub. Archived from the original on 2021-04-24. Retrieved 2019-04-04.
  2. ^ "Can JPEG XL Become the Next Free and Open Image Format? - Slashdot". Archived from the original on 2021-12-30. Retrieved 2021-02-20.
  3. ^ "Support for reading/Writing JPEG XL images (#4681) · Issues · GNOME / GIMP". Archived from the original on 2021-12-30. Retrieved 2021-02-27.
  4. ^ "JPEG - Next-Generation Image Compression (JPEG XL) Final Draft Call for Proposals". Jpeg.org. Retrieved 29 May 2018.
  5. ^ Alakuijala, Jyrki; van Asseldonk, Ruud; Boukortt, Sami; Bruse, Martin; Comșa, Iulia-Maria; Firsching, Moritz; Fischbacher, Thomas; Kliuchnikov, Evgenii; Gomez, Sebastian; Obryk, Robert; Potempa, Krzysztof; Rhatushnyak, Alexander; Sneyers, Jon; Szabadka, Zoltan; Vandervenne, Lode; Versari, Luca; Wassenberg, Jan (2019-09-06). "JPEG XL next-generation image compression architecture and coding tools". In Tescher, Andrew G; Ebrahimi, Touradj (eds.). Applications of Digital Image Processing XLII. p. 20. doi:10.1117/12.2529237. ISBN 9781510629677. S2CID 202785129.
  6. ^ "Google Pik試してみた - Qiita". Archived from the original on 22 August 2019. Retrieved 22 August 2019.
  7. ^ Rhatushnyak, Alexander; Wassenberg, Jan; Sneyers, Jon; Alakuijala, Jyrki; Vandevenne, Lode; Versari, Luca; Obryk, Robert; Szabadka, Zoltan; Kliuchnikov, Evgenii; Comsa, Iulia-Maria; Potempa, Krzysztof; Bruse, Martin; Firsching, Moritz; Khasanova, Renata; Ruud van Asseldonk; Boukortt, Sami; Gomez, Sebastian; Fischbacher, Thomas (2019). "Committee Draft of JPEG XL Image Coding System". arXiv:1908.03565 [eess.IV].
  8. ^ Rhatushnyak, Alexander; Wassenberg, Jan; Sneyers, Jon; Alakuijala, Jyrki; Vandevenne, Lode; Versari, Luca; Obryk, Robert; Szabadka, Zoltan; Kliuchnikov, Evgenii; Comsa, Iulia-Maria; Potempa, Krzysztof; Bruse, Martin; Firsching, Moritz; Khasanova, Renata; Ruud van Asseldonk; Boukortt, Sami; Gomez, Sebastian; Fischbacher, Thomas (2019). "Committee Draft of JPEG XL Image Coding System". arXiv:1908.03565 [eess.IV].
  9. ^ "N79010 Final Call for Proposals for a Next-Generation Image Coding Standard (JPEG XL)" (PDF). ISO/IEC JTC 1/SC 29/WG 1 (ITU-T SG16). Retrieved 29 May 2018.
  10. ^ ISO/IEC 18181-1:2022 Information technology — JPEG XL image coding system — Part 1: Core coding system.
  11. ^ ISO/IEC 18181-2:2021 Information technology — JPEG XL image coding system — Part 2: File format.
  12. ^ "JPEG XL reaches Committee Draft" (html). JPEG Org. 3 August 2019. Archived from the original on 3 August 2019. Retrieved 3 August 2019. The current contributors have committed to releasing it publicly under a royalty-free and open source license.
  13. ^ "JPEG XL White Paper" (PDF). JPEG Org. 22 January 2021. Archived (PDF) from the original on 2 May 2021. Retrieved 17 March 2021.
  14. ^ a b c d Sneyers, Jon (26 May 2020). "How JPEG XL Compares to Other Image Codecs". Cloudinary. Archived from the original on 2021-12-30. Retrieved 2021-02-19.
  15. ^ Jon Sneyers (2021-01-03). "JPEG XL as PSD transfer/storage alternative". Reddit. Archived from the original on 2021-12-30. Retrieved 2021-06-07.
  16. ^ Jon Sneyers (2021-06-03). "Progressive Transcoding". GitHub. Archived from the original on 2021-12-30. Retrieved 2021-06-07.
  17. ^ "libjxl/libjxl: JPEG XL image format reference implementation". GitHub. Archived from the original on 2022-05-22. Retrieved 2022-06-05.
  18. ^ "FLIF - Free Lossless Image Format". Archived from the original on 2021-12-21. Retrieved 2021-04-06.
  19. ^ "FLIF, 3 Sep 2021, jonsneyers comment".
  20. ^ Peter de Rivaz; Jack Haughton (2018). "AV1 Bitstream & Decoding Process Specification" (PDF). Alliance for Open Media. pp. 350–360. Retrieved 2022-01-15.
  21. ^ Alakuijala, Jyrki; van Asseldonk, Ruud; Boukortt, Sami; Szabadka, Zoltan; Bruse, Martin; Comsa, Iulia-Maria; Firsching, Moritz; Fischbacher, Thomas; Kliuchnikov, Evgenii; Gomez, Sebastian; Obryk, Robert; Potempa, Krzysztof; Rhatushnyak, Alexander; Sneyers, Jon; Szabadka, Zoltan; Vandervenne, Lode; Versari, Luca; Wassenberg, Jan (6 September 2019). Tescher, Andrew G; Ebrahimi, Touradj (eds.). "JPEG XL next-generation image compression architecture and coding tools". Applications of Digital Image Processing XLII. 11137: 20. Bibcode:2019SPIE11137E..0KA. doi:10.1117/12.2529237. ISBN 9781510629677.
  22. ^ Sneyers, Jon (2021-12-10). "Feature request: allow jbrd to reconstruct a part of the file when it's not possible for the whole file". GitHub.
  23. ^ "JPEG XL reference implementation". GitHub. 3 December 2021. Archived from the original on 30 December 2021. Retrieved 24 June 2021.
  24. ^ "JPEG XL reference implementation". GitHub. 3 December 2021. Archived from the original on 30 December 2021. Retrieved 24 June 2021.
  25. ^ "JPEG XL reference implementation". GitHub. 3 December 2021. Archived from the original on 30 December 2021. Retrieved 24 June 2021.
  26. ^ "PLEASE DO NOT OPEN NEW ISSUES HERE". Retrieved 27 May 2021.
  27. ^ "ImageMagick". Archived from the original on 2022-01-02. Retrieved 2021-03-01.
  28. ^ "0001845: JPEG XL - MantisBT". Archived from the original on 2021-11-07. Retrieved 2021-03-01.
  29. ^ "GThumb Image Viewer 3.11.3 Adds JPEG XL (.JXL) Support [Ubuntu PPA] | UbuntuHandbook". Archived from the original on 2021-12-30. Retrieved 2021-05-17.
  30. ^ "IrfanView PlugIns". Archived from the original on 2021-12-28. Retrieved 2021-12-03.
  31. ^ "ExifTool by Phil Harvey". Retrieved 2022-01-19.
  32. ^ "Release v8.11.0 · libvips/libvips · GitHub". GitHub. Retrieved 2022-01-30.
  33. ^ "KaOS 2021.06". Retrieved 2022-01-31.
  34. ^ "FFmpeg Lands JPEG-XL Support". www.phoronix.com. Retrieved 2022-04-24.
  35. ^ "KDE Ships Frameworks 5.89.0". KDE Community. 2021-12-11. Retrieved 2022-04-28.
  36. ^ "Krita 5.1.0 Released!". krita.org. 2022-08-18. Retrieved 2022-08-20.
  37. ^ "GIMP 2.10.32 Released". 2022-06-14. Retrieved 2022-06-15.
  38. ^ "Online Help for Chasys Draw IES: History". 2022-07-17. Retrieved 2022-07-18.
  39. ^ "Qt-jpegxl-image-plugin". GitHub. December 2021. Archived from the original on 2021-03-03. Retrieved 2021-03-01.
  40. ^ "Jpeg Xl Wic". GitHub. 27 November 2021. Archived from the original on 30 December 2021. Retrieved 23 March 2021.
  41. ^ "JXLook". GitHub. December 2021. Archived from the original on 2021-12-30. Retrieved 2021-03-01.
  42. ^ "Issue 1178058: JPEG XL decoding support (image/jxl) in blink (tracking bug)". Archived from the original on 2021-12-30. Retrieved 2021-03-01.
  43. ^ "1539075 - (JPEG-XL) Implement support for JPEG XL (Image/JXL)". Archived from the original on 2022-01-04. Retrieved 2021-03-01.
  44. ^ "JPEG - Next-Generation Image Compression (JPEG XL) Final Draft Call for Proposals". Jpeg.org. April 23, 2018. Archived from the original on 30 December 2021. Retrieved 29 May 2018.
  45. ^ "v0.2 JPEG XL Reference Software". GitLab. Archived from the original on 2021-10-20. Retrieved 2021-02-19.
  46. ^ ISO/IEC 18181-2:2021 Information technology — JPEG XL image coding system — Part 2: File format.

External links[edit]