JPEG XL

JPEG XL是一种免版税位图文件格式,支持有损无损压缩。它旨在超越现有的位图格式,并成为它们的通用替代。[5]JPEG XL格式规范的主要作者有Jyrki Alakuijala、Jon Sneyers和Luca Versari。

JPEG XL
JPEG XL logo.svg
扩展名.jxl
互联网媒体类型image/jxl[a]
魔术数字FF 0A00 00 00 0C 4A 58 4C 20 0D 0A 87 0A[2]
开发者
  • 联合图像专家小组
  • 谷歌
  • Cloudinary英语Cloudinary
格式类型有损无损栅格图像格式
扩展自
标准ISO/IEC 18181[4]
自由格式是(免版税
网站

名称

  • JPEG指设计了JPEG格式的联合影像专家小组(Joint Photographic Experts Group)。
  • X指2000年以来的多个JPEG标准的名称:JPEG XTJPEG XRJPEG XS英语JPEG XS
  • L代表“长期”,创建这种格式是为替换旧的JPEG文件格式,并使用足够长的时间。

历史

2017年,JTC1 / SC29 / WG1 (JPEG) 发起下一代图像编码标准(JPEG XL)提案征集。[6]所有提案在2018年9月前提交,随后2019年7月形成委员会草案。[7]草案是由谷歌提交的PIK[8]Cloudinary英语Cloudinary提交的基于FLIF的FUIF[9]结合而来。

2020年12月25日,伴随着参考软件实现libjxl的0.2版本发布,JPEG XL的比特流格式被最终敲定,这意味着未来的版本将保证对此版本的解码兼容性[10]此后文件格式与核心编码系统分别于2021年10月13日和2022年3月30日正式标准化。[4][11]

描述

JPEG XL的提案征集[6]提及了下一代图像压缩标准对大幅提升压缩效率(60%)的需求。新标准应该有优于HEICAVIFWebPJPEG 2000这些静态图像编码的表现,同时提供对传统JPEG格式的无损再压缩选项。

JPEG XL最高能够提供对甚高分辨率图像(每边1像素)、4099个32位深通道(包含alpha通道)的静态或动态图像及其嵌入预览的有损压缩无损压缩。它支持针对网络传输的渐进式解码[12]和最小化信头开销特性,以及针对图像编辑数码印刷图层CMYK专色英语Spot color支持。它还针对无缝处理Rec. 2100英语Rec. 2100广色域感知量化器英语Perceptual quantizer混合对数伽马校正英语Hybrid log–gamma转换曲线进行了特别设计。

特点

主要特点有:[13][14][15]

  • 更多功能:与传统图像格式(例如JPEG、GIF和PNG)相比,有着更佳的效率与更丰富的功能;
  • 更大尺度:长宽可超过十亿( )个像素;[16]
  • 更多通道:最多4099个通道,包括主通道(单通道的灰度、三通道的RGB或四通道的CMYK)、可选的多达4096个可用于透明度深度英语Depth map热成像等的额外通道; [16]
  • 多帧支持:支持用于动画的非零时长帧和类似图像软件中图层的零时长帧,且帧的大小不受图像画布大小影响,并支持多种混合模式;
  • 独立图块:允许图像分多图块保存,以支持分块解码大幅图像;
  • 渐进式解码:专为支持不同显示分辨率的响应式加载;
  • 可逆JPEG转码:可实现约20%的数据流压缩;
  • 无损编码:包括无损alpha编码;
  • 类型感知:可根据图像内容使用分别为摄影图像和合成图像优化的两种模式;
  • 低码率优化:在低比特率下相较旧格式质量更可接受;
  • 感知优化:参考编码器默认使用感知色彩空间、自适应量化和保守的默认设置;
  • 色域支持:内置广色域、转移曲线HDR支持;
  • 动画支持:但编码真实视频时仍建议使用常规的视频编码
  • 高效编解码:无需专用硬件,JPEG XL的编解码速度即可与使用libjpeg-turbo的JPEG相当,比使用x265HEIC速度快一个数量级,[16]并可以并行
  • 开源免费:具有使用三条款版BSD许可证开源参考实现的免版税格式。[17]

技术细节

 
JPEG XL 编解码器架构图

JPEG XL基于Google的PIK格式和Cloudinary的FUIF格式(基于FLIF)。[18]

JPEG XL主要有两种编码模式:

  • VarDCTvariable-blocksize DCT,可变分块大小离散余弦变换)模式基于与JPEG相同的离散余弦变换算法,但分块不再限定为8×8,而是允许不同大小(2×2到256×256)、非正方形块(如16×8、8×32、32×64)乃至其他变换函数(4种“边角”变种AFV,以及非离散余弦变换的Hornuss变换)。此模式限于三通道色彩,通常使用LMS色彩空间英语LMS color space派生的XYB色彩空间(但为支持重压缩传统JPEG仍支持YCbCr),基于PIK格式的有损模式。[19]
  • Modular(模块化)模式是响应式的,用于高效的无损内容压缩以及近无损压缩。它可被VarDCT在内部用于存储二维数据,即除了交流(高频)离散余弦变换系数之外的所有数据,包括直流图像(1:8抽样图像)、自适应量化权值、滤镜强度。所有附加通道(如透明度英语Transparency (graphic)深度英语Depth map热成像专色英语spot color等)总是使用此模式存储。此模式基于FUIF,并结合了无损PIK、无损WebP和标准化过程中的其他合作成果。[20]借助哈尔变换的“挤压”(squeeze),此模式也支持有损压缩,并实现渐进式特性:图像的质量会随着数据加载过程逐渐改善。

VarDCT模式的图像可借由模块化“挤压”的独立“直流帧”存储的直流系数实现渐进式加载,支持1:16、1:32等抽样比例。“挤压”变换也可以用于将alpha通道和VarDCT模式的色彩通道一同渐进式编码,使两种模式协同工作。

JPEG XL默认使用视觉无损下仍有较好压缩效果的设置。[16]

这些模式可由单独的图像特征模型协助:

  • 向心卡特姆–罗姆样条英语Centripetal Catmull–Rom spline用于编码头发等(参考编码器暂未实现);
  • 重复的“补丁”,如文字、点和“精灵”
  • 噪声合成:由于噪声难以压缩,将其剥离然后由解码器重新生成可能更佳。这类似于AV1等现代视频编码的胶片颗粒英语Film grain合成,尽管JPEG XL噪声合成的目的不是模仿模拟摄影胶片的颗粒,而是在像素层级建模数字相机在高感光度设置下的光子噪声英语Photon noise

JPEG XL编码可以无损地转码JPEG最常用的子类型的文件,实现方式是将JPEG的DCT系属直接拷贝到8×8的VarDCT块,并借助JPEG XL更好的熵压缩算法实现更小的文件大小。此过程是可逆的,可以从转换结果中逐位重建原始JPEG图像,尽管有一些限制条件[21]

预测是基于逐像素、无辅助信息的去相关器运作的,包括参数化的自校正加权预测器集合。上下文模型英语Context model包括特化的静态模型和强大的元自适应模型,它们考虑局部错误,具有信号树结构和分上下文的预测器选择。熵编码基于LZ77,可使用非对称数字系统英语Asymmetric numeral systems前缀码(适用于低复杂度的编码器,或减少短数据流的开销)。[来源请求]

动画(多帧)图像不执行高级帧间预测,尽管有一些基本的帧间编码工具可用:

  • 帧可以小于画布大小,只更新画布的一部分;
  • 除了替换前序帧外,帧数种混合模式,如相加或相乘;[22]
  • 在后面的帧中使用“补丁”编码工具最多可以“记住”并引用四帧。

软件

JPEG XL受到了许多科技公司与组织的公开支持,如Facebook[23][24]Adobe[25][26]IntelVESA[27][28]卫报[29][30]FlickrSmugMug[31]Shopify[32]Krita基金会[33]Serif Europe英语Serif Europe[34]

编解码器实现

JPEG XL参考软件(libjxl)
 
 
首次发布2019年12月27日,​3年前​(2019-12-27[35]
源代码库https://github.com/libjxl/libjxl[36] 
编程语言C++
操作系统
  • Unix-like
  • Windows
  • Haiku
许可协议三条款版BSD许可证(曾为Apache许可证2.0)
网站jpeg.org/jpegxl  
  • JPEG XL参考软件(libjxl)
    • 三条款版BSD许可证(曾为Apache许可证2.0)
    • 包含组件
      • 编解码库libjxl
      • 编码器cjxl
      • 解码器djxl
      • 快速无损编码器fjxl
      • 图像编码质量基准测试工具benchmark_xl
      • GIMP和Gtk pixbuf插件file-jxl
  • J40:独立、自包含的JPEG XL解码器[1]页面存档备份,存于互联网档案馆
    • MIT许可证,无署名
    • C99单头文件库(无依赖)
    • 名字来源于罗马数字“XL”(即40)
  • libjxl-tiny:简化的JPEG XL编码器实现,针对无透明度的摄影图像[37]
    • 三条款版BSD许可证
  • jxlatte:Java JPEG XL解码器[38]
    • MIT许可证
  • pyjxl:Python JPEG XL解码器[39]
    • MIT许可证
  • jpeg-xl-encode:PHP JPEG XL编码器[40]
    • MIT许可证

官方支持

  • 网页图像转换器Squoosh页面存档备份,存于互联网档案馆[41]
  • 数字相机图像导入导出工具Adobe Camera Raw[42]
  • 位图编辑器Affinity Photo[43]
  • 位图编辑器Chasys Draw IES[44]
  • 元数据编辑器ExifTool[45]
  • 多媒体框架FFmpeg[46]
  • 位图编辑器GIMP[47]
  • 图像查看器、照片管理应用gThumb[48]
  • 位图处理工具包ImageMagick[49]
  • 图像查看编辑器IrfanView[50]
  • Linux发行版KaOS[51]
  • 位图编辑器Krita[52][53]
  • QtKDE应用[54]
  • 位图查看编辑器XnView MP[55]
  • 网络浏览器Pale Moon[56]

非官方支持

  • Microsoft Windows[57]:通过第三方Windows图像处理组件英语Windows Imaging Component插件,即用于在照片查看器文件资源管理器等中查看。
  • macOS[58]:通过独立应用程序和Quick Look插件。
  • GTKGNOME图像查看应用(Eye of GNOMEGNOME Files等):通过GDK pixbuf插件。[59]

初步支持

  • Chromium[60]:网页浏览器,自91版至110版提供测试选项。
  • Firefox[61]:网页浏览器,处于测试中,自Firefox 90开始可以通过image.jxl.enabled标志开启。

标准化状态

通用名称 部分 首次公开发布日期
(第一版)
ISO/IEC编号 正式名称
JPEG XL 第1部分 2022年3月30日 ISO/IEC 18181-1页面存档备份,存于互联网档案馆 JPEG XL图像编码系统-第1部分:核心编码系统[4]
第2部分 2021年10月13日 ISO/IEC 18181-2页面存档备份,存于互联网档案馆 JPEG XL图像编码系统-第2部分:文件格式[11]
第3部分 2022年10月3日 ISO/IEC 18181-3页面存档备份,存于互联网档案馆 JPEG XL图像编码系统-第3部分:一致性测试
第4部分 2022年8月5日 ISO/IEC 18181-4页面存档备份,存于互联网档案馆 JPEG XL图像编码系统-第4部分:参考软件

注释

  1. ^ 非正式的事实标准[1]

参考

  1. ^ Media Types. IANA. [2022-10-21]. (原始内容存档于2022-10-21). 
  2. ^ libjxl/doc/format_overview.md. GitHub. [2022-10-20]. (原始内容存档于2022-10-20). 
  3. ^ 3.0 3.1 fuif/README.md. GitHub. [2019-04-04]. (原始内容存档于2021-04-24). 
  4. ^ 4.0 4.1 4.2 ISO/IEC 18181-1:2022 Information technology — JPEG XL image coding system — Part 1: Core coding system. 
  5. ^ Can JPEG XL Become the Next Free and Open Image Format? - Slashdot. [2021-12-30]. (原始内容存档于2021-12-30). 
  6. ^ 6.0 6.1 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). 15 April 2018 [2022-12-08]. (原始内容存档 (PDF)于2022-10-31). 
  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. Committee Draft of JPEG XL Image Coding System. 2019. arXiv:1908.03565  [eess.IV]. 
  8. ^ PIK, A new lossy/lossless image format for photos and the internet. [2022-10-17]. (原始内容存档于2022-11-13). 
  9. ^ FUIF, Free Universal Image Format. [2022-10-17]. (原始内容存档于2022-11-12). 
  10. ^ v0.2 JPEG XL Reference Software. GitLab. [2021-12-30]. (原始内容存档于2021-10-20) (英语). 
  11. ^ 11.0 11.1 ISO/IEC 18181-2:2021 Information technology — JPEG XL image coding system — Part 2: File format. 
  12. ^ Using Saliency in progressive JPEG XL images. [2022-10-17]. (原始内容存档于2023-01-09). 
  13. ^ JPEG XL reaches Committee Draft. JPEG.org. 2019-08-03 [2019-08-03]. (原始内容存档于2019-08-03). The current contributors have committed to releasing it publicly under a royalty-free and open source license. 
  14. ^ JPEG XL White Paper (PDF). JPEG.org. 2021-01-29 [2021-03-17]. (原始内容存档 (PDF)于2 May 2021). 
  15. ^ JPEG XL vs. AVIF - Page 6. encode.su. [2022-10-22]. (原始内容存档于2022-10-18). 
  16. ^ 16.0 16.1 16.2 16.3 Sneyers, Jon. How JPEG XL Compares to Other Image Codecs. Cloudinary. 26 May 2020 [2021-02-19]. (原始内容存档于2021-12-30). 
  17. ^ jpeg / JPEG XL Reference Software. GitLab. [2021-12-30]. (原始内容存档于2021-12-30) (英语). 
  18. ^ FLIF - Free Lossless Image Format. [2021-12-30]. (原始内容存档于2021-12-21). 
  19. ^ 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. Tescher, Andrew G; Ebrahimi, Touradj , 编. JPEG XL next-generation image compression architecture and coding tools. Applications of Digital Image Processing XLII. 6 September 2019, 11137: 20. Bibcode:2019SPIE11137E..0KA. ISBN 9781510629677. doi:10.1117/12.2529237 . 
  20. ^ FLIF, 3 Sep 2021, jonsneyers comment. [2022-12-07]. (原始内容存档于2022-12-17). 
  21. ^ Sneyers, Jon. Feature request: allow jbrd to reconstruct a part of the file when it's not possible for the whole file. GitHub. 2021-12-10 [2022-12-07]. (原始内容存档于2022-10-18). 
  22. ^ JPEG XL reference implementation. GitHub. 3 December 2021 [24 June 2021]. (原始内容存档于30 December 2021). 
  23. ^ Andre, Erik. Statement of support by Facebook on Chromium's issue #1178058. bugs.chromium.org. 2021-04-20 [2022-11-03]. (原始内容存档于2021-12-30). 
  24. ^ Andre, Erik. Statement of support by Facebook on Firefox's issue #1539075. bugzilla.mozilla.org. 2021-05-24 [2022-11-03]. (原始内容存档于2022-01-04) (英语). 
  25. ^ Rosenthol, Leonard. Statement of support by Adobe on Firefox's issue #1539075. bugzilla.mozilla.org. 2021-06-07 [2022-11-03]. (原始内容存档于2022-01-04) (英语). 
  26. ^ Chan, Eric. Statement of support by Adobe on Chromium's issue #1178058. bugs.chromium.org. 2022-08-23 [2022-11-03]. (原始内容存档于2021-12-30). 
  27. ^ Wooster, Roland. Statement of support on Chromium's issue #1178058 by VESA's DisplayHDR Chairman and Principal Engineer at Intel's Client Computing Group. bugs.chromium.org. 2022-08-24 [2022-11-03]. (原始内容存档于2021-12-30). 
  28. ^ Wooster, Roland. Reinforced statement of support on Chromium's issue #1178058 by VESA's DisplayHDR Chairman and Principal Engineer at Intel's Client Computing Group". bugs.chromium.org. 2022-11-11 [2022-11-11]. (原始内容存档于2021-12-30). 
  29. ^ Chauvin, Mariot. Statement of support by The Guardian on Chromium's issue #1178058. bugs.chromium.org. 2022-08-26 [2022-11-03]. (原始内容存档于2021-12-30). 
  30. ^ Chauvin, Mariot. Statement of support by The Guardian on Firefox's issue #1539075. bugzilla.mozilla.org. 2022-01-13 [2022-11-03]. (原始内容存档于2022-01-04) (英语). 
  31. ^ MacAskill, Don. Statement of support by Flickr and SmugMug on Firefox's issue #1539075. bugzilla.mozilla.org. 2022-01-04 [2022-11-03]. (原始内容存档于2022-01-04) (英语). 
  32. ^ Bendell, Colin. Statement of support by Shopify on Chromium's issue #1178058. bugs.chromium.org. 2022-10-17 [2022-11-03]. (原始内容存档于2021-12-30). 
  33. ^ Rempt, Rempt. Statement of support by the Krita Foundation on Chromium's issue #1178058. bugs.chromium.org. 2022-11-10 [2022-11-11]. (原始内容存档于2021-12-30). 
  34. ^ Brightman, Tony. Statement of support by Serif Ltd.'s SerifLabs on Chromium's issue #1178058. bugs.chromium.org. 2022-11-11 [2022-11-11]. (原始内容存档于2021-12-30). 
  35. ^ Update JPEG-XL with latest changes.. GitHub. 2019-12-27 [10 October 2022]. (原始内容存档于2022-10-10). 
  36. ^ PLEASE DO NOT OPEN NEW ISSUES HERE. [2021年5月27日]. 
  37. ^ libjxl-tiny. [2022-12-07]. (原始内容存档于2022-12-09). 
  38. ^ jxlatte. [2022-12-07]. (原始内容存档于2022-12-04). 
  39. ^ pyjxl. [2022-12-07]. (原始内容存档于2022-11-12). 
  40. ^ Siipola, Johannes, JPEG XL Encode, 2022-10-31 [2022-11-29], (原始内容存档于2022-11-29) 
  41. ^ Codec to consider: JPEG XL · Issue #721 · GoogleChromeLabs/squoosh. GitHub. [2022-11-26]. (原始内容存档于2022-11-26) (英语). 
  42. ^ HDR Output in Camera Raw. [2022-10-21]. (原始内容存档于2022-10-21). 
  43. ^ Affinity V2: What's new (JPEG XL import/export). [2022-11-09]. (原始内容存档于2022-12-14) (英语). 
  44. ^ Online Help for Chasys Draw IES: History. 2022-07-17 [2022-07-18]. (原始内容存档于2022-12-07). 
  45. ^ ExifTool by Phil Harvey. [2022-01-19]. (原始内容存档于2022-01-26). 
  46. ^ FFmpeg Lands JPEG-XL Support. www.phoronix.com. [2022-04-24]. (原始内容存档于2022-07-03) (英语). 
  47. ^ GIMP 2.10.32 Released. 2022-06-14 [2022-06-15]. (原始内容存档于2023-01-06). 
  48. ^ GThumb Image Viewer 3.11.3 Adds JPEG XL (.JXL) Support [Ubuntu PPA] | UbuntuHandbook. [2021-05-17]. (原始内容存档于2021-12-30). 
  49. ^ ImageMagick. [2021-03-01]. (原始内容存档于2022-01-02). 
  50. ^ IrfanView PlugIns. [2021-12-03]. (原始内容存档于2021-12-28). 
  51. ^ KaOS 2021.06. [2022-01-31]. (原始内容存档于2021-06-29). 
  52. ^ Krita 5.1.0 Released!. krita.org. 2022-08-18 [2022-08-20]. (原始内容存档于2023-01-20) (英语). 
  53. ^ Statement of support by the Krita project on Chromium's issue #1178058. bugs.chromium.org. [2022-11-03]. (原始内容存档于2021-12-30). 
  54. ^ KDE Ships Frameworks 5.89.0. KDE Community. 2021-12-11 [2022-04-28]. (原始内容存档于2022-12-07) (英语). 
  55. ^ 0001845: JPEG XL - MantisBT. [2021-03-01]. (原始内容存档于2021-11-07). 
  56. ^ Pale Moon 31.4.0 released! - Pale Moon forum. forum.palemoon.org. [2022-11-22]. (原始内容存档于2023-01-05). 
  57. ^ Jpeg Xl Wic. GitHub. 27 November 2021 [2021-12-30]. (原始内容存档于2021-12-30). 
  58. ^ JXLook. GitHub. December 2021 [2021-12-30]. (原始内容存档于2021-12-30). 
  59. ^ libjxl gdk-pixbuf plugin. GitHub. [2022-11-26]. (原始内容存档于2023-01-18) (英语). 
  60. ^ 1178058 - chromium - an open-source project to help move the web forward. - Monorail. [2021-12-30]. (原始内容存档于2021-12-30). 
  61. ^ 1539075 - (JPEG-XL) Implement support for JPEG XL (Image/JXL). [2021-12-30]. (原始内容存档于2022-01-04). 

外部链接