JPEG XL
扩展名 |
.jxl |
---|---|
互联网媒体类型 |
image/jxl[a] |
开发者 | |
格式类型 | 有损或无损栅格图像格式 |
扩展自 | |
标准 | ISO/IEC 18181[3] |
自由格式? | 是(免版税) |
网站 |
|
JPEG XL是一种免版税的位图文件格式,支持有损和无损压缩。它旨在超越现有的位图格式,并成为它们的通用替代。[5]JPEG XL格式规范的主要作者有Jyrki Alakuijala、Jon Sneyers和Luca Versari。
名称
- JPEG指设计了JPEG格式的联合影像专家小组(Joint Photographic Experts Group)。
- X指2000年以来的多个JPEG标准的名称:JPEG XT、JPEG XR、JPEG XS。
- L代表“长期”,创建这种格式是为替换旧的JPEG文件格式,并使用足够长的时间。
历史
2017年,JTC1 / SC29 / WG1 (JPEG) 发起下一代图像编码标准(JPEG XL)提案征集。[6]所有提案在2018年9月前提交,随后2019年7月形成委员会草案。[7]草案是由谷歌提交的PIK[8]和Cloudinary提交的基于FLIF的FUIF[9]结合而来。
2020年12月25日,伴随着参考软件实现libjxl的0.2版本发布,JPEG XL的比特流格式被最终敲定,这意味着未来的版本将保证对此版本的解码兼容性。[10]此后文件格式与核心编码系统分别于2021年10月13日和2022年3月30日正式标准化。[3][11]
描述
JPEG XL的提案征集[6]提及了下一代图像压缩标准对大幅提升压缩效率(60%)的需求。新标准应该有优于HEIC、AVIF、WebP和JPEG 2000这些静态图像编码的表现,同时提供对传统JPEG格式的无损再压缩选项。
JPEG XL最高能够提供对甚高分辨率图像(每边1太像素)、4099个32位深通道(包含alpha通道)的静态或动态图像及其嵌入预览的有损压缩和无损压缩。它支持针对网络传输的渐进式解码[12]和最小化信头开销特性,以及针对图像编辑和数码印刷的图层、CMYK和专色支持。它还针对无缝处理Rec. 2100等广色域的感知量化器、混合对数伽马校正和转换曲线进行了特别设计。
特点
- 更多功能:与传统图像格式(例如JPEG、GIF和PNG)相比,有着更佳的效率与更丰富的功能;
- 更大尺度:长宽可超过十亿()个像素;[16]
- 更多通道:最多4099个通道,包括主通道(单通道的灰度、三通道的RGB或四通道的CMYK)、可选的多达4096个可用于透明度、深度、热成像等的额外通道; [16]
- 多帧支持:支持用于动画的非零时长帧和类似图像软件中图层的零时长帧,且帧的大小不受图像画布大小影响,并支持多种混合模式;
- 独立图块:允许图像分多图块保存,以支持分块解码大幅图像;
- 渐进式解码:专为支持不同显示分辨率的响应式加载;
- 可逆JPEG转码:可实现约20%的数据流压缩;
- 无损编码:包括无损alpha编码;
- 类型感知:可根据图像内容使用分别为摄影图像和合成图像优化的两种模式;
- 低码率优化:在低比特率下相较旧格式质量更可接受;
- 感知优化:参考编码器默认使用感知色彩空间、自适应量化和保守的默认设置;
- 色域支持:内置广色域、转移曲线和HDR支持;
- 动画支持:但编码真实视频时仍建议使用常规的视频编码;
- 高效编解码:无需专用硬件,JPEG XL的编解码速度即可与使用libjpeg-turbo的JPEG相当,比使用x265的HEIC速度快一个数量级,[16]并可以并行。
- 开源免费:具有使用三条款版BSD许可证的开源参考实现的免版税格式。[17]
技术细节
JPEG XL基于Google的PIK格式和Cloudinary的FUIF格式(基于FLIF)。[18]
JPEG XL主要有两种编码模式:
- VarDCT(variable-blocksize DCT,可变分块大小离散余弦变换)模式基于与JPEG相同的离散余弦变换算法,但分块不再限定为8×8,而是允许不同大小(2×2到256×256)、非正方形块(如16×8、8×32、32×64)乃至其他变换函数(4种“边角”变种AFV,以及非离散余弦变换的Hornuss变换)。此模式限于三通道色彩,通常使用LMS色彩空间衍生的XYB色彩空间(但为支持重压缩传统JPEG仍支持YCbCr),基于PIK格式的有损模式。[19]
- Modular(模块化)模式是响应式的,用于高效的无损内容压缩以及近无损压缩。它可被VarDCT在内部用于存储二维数据,即除了交流(高频)离散余弦变换系数之外的所有数据,包括直流图像(1:8抽样图像)、自适应量化权值、滤镜强度。所有附加通道(如透明度、深度、热成像和专色等)总是使用此模式存储。此模式基于FUIF,并结合了无损PIK、无损WebP和标准化过程中的其他合作成果。[20]借助哈尔变换的“挤压”(squeeze),此模式也支持有损压缩,并实现渐进式特性:图像的质量会随着数据加载过程逐渐改善。
VarDCT模式的图像可借由模块化“挤压”的独立“直流帧”存储的直流系数实现渐进式加载,支持1:16、1:32等抽样比例。“挤压”变换也可以用于将alpha通道和VarDCT模式的色彩通道一同渐进式编码,使两种模式协同工作。
JPEG XL默认使用视觉无损下仍有较好压缩效果的设置。[16]
这些模式可由单独的图像特征模型协助:
- 向心卡特姆–罗姆样条用于编码头发等(参考编码器暂未实现);
- 重复的“补丁”,如文字、点和“精灵”;
- 噪声合成:由于噪声难以压缩,将其剥离然后由解码器重新生成可能更佳。这类似于AV1等现代视频编码的胶片颗粒合成,尽管JPEG XL噪声合成的目的不是模仿模拟摄影胶片的颗粒,而是在像素层级建模数字相机在高感光度设置下的光子噪声。
JPEG XL编码可以无损地转码JPEG最常用的子类型的文件,实现方式是将JPEG的DCT系属直接拷贝到8×8的VarDCT块,并借助JPEG XL更好的熵压缩算法实现更小的文件大小。此过程是可逆的,可以从转换结果中逐位重建原始JPEG图像,尽管有一些限制条件[21]。
预测是基于逐像素、无辅助信息的去相关器运作的,包括参数化的自校正加权预测器集合。上下文模型包括特化的静态模型和强大的元自适应模型,它们考虑局部错误,具有信号树结构和分上下文的预测器选择。熵编码基于LZ77,可使用非对称数字系统或前缀码(适用于低复杂度的编码器,或减少短数据流的开销)。[来源请求]
动画(多帧)图像不执行高级帧间预测,尽管有一些基本的帧间编码工具可用:
- 帧可以小于画布大小,只更新画布的一部分;
- 除了替换前序帧外,还支持数种混合模式,如相加或相乘;[22]
- 在后面的帧中使用“补丁”编码工具最多可以“记住”并引用四帧。
软件
JPEG XL受到了许多科技公司与组织的公开支持,如Facebook[23][24]、Adobe[25][26]、Intel与VESA[27][28]、卫报[29][30]、Flickr和SmugMug[31]、Shopify[32]、Krita基金会[33]和Serif Europe[34]。
编解码器实现
首次发布 | 2019年12月27日[35] |
---|---|
当前版本 | 0.7(2022年9月21日 | )
源代码库 | https://github.com/libjxl/libjxl[36] |
编程语言 | C++ |
操作系统 | |
许可协议 | 三条款版BSD许可证(曾为Apache许可证2.0) |
网站 | jpeg |
- JPEG XL参考软件(libjxl)
- J40:独立、自包含的JPEG XL解码器[1] (页面存档备份,存于互联网档案馆)
- libjxl-tiny:简化的JPEG XL编码器实现,针对无透明度的摄影图像[37]
- 三条款版BSD许可证
- jxlatte:Java JPEG XL解码器[38]
- pyjxl:Python JPEG XL解码器[39]
- jpeg-xl-encode:PHP JPEG XL编码器[40]
官方支持
- 网页图像转换器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]
- Qt和KDE应用[54]
- 位图查看编辑器XnView MP[55]
- 网络浏览器Pale Moon[56]
非官方支持
- Microsoft Windows[57]:通过第三方Windows图像处理组件插件,即用于在照片查看器、文件资源管理器等中查看。
- macOS[58]:通过独立应用程序和Quick Look插件。
- GTK和GNOME图像查看应用(Eye of GNOME、GNOME Files等):通过GDK pixbuf插件。[59]
初步支持
- Chromium[60]:网页浏览器,自91版至110版提供测试选项。
- Firefox[61]:网页浏览器,处于测试中,自Firefox 90开始可以通过
image.jxl.enabled
标志开启(仅在Nightly开发版本中生效[62])。
标准化状态
通用名称 | 部分 | 首次公开发布日期 (第一版) |
ISO/IEC编号 | 正式名称 |
---|---|---|---|---|
JPEG XL | 第1部分 | 2022年3月30日 | ISO/IEC 18181-1 (页面存档备份,存于互联网档案馆) | JPEG XL图像编码系统-第1部分:核心编码系统[3] |
第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部分:参考软件 |
注释
参考
- ^ Media Types. IANA. [2022-10-21]. (原始内容存档于2022-10-21).
- ^ 2.0 2.1 fuif/README.md. GitHub. [2019-04-04]. (原始内容存档于2021-04-24).
- ^ 3.0 3.1 3.2 ISO/IEC 18181-1:2022 Information technology — JPEG XL image coding system — Part 1: Core coding system.
- ^ libjxl/doc/format_overview.md. GitHub. [2022-10-20]. (原始内容存档于2022-10-20).
- ^ Can JPEG XL Become the Next Free and Open Image Format? - Slashdot. [2021-12-30]. (原始内容存档于2021-12-30).
- ^ 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).
- ^ 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].
- ^ PIK, A new lossy/lossless image format for photos and the internet. [2022-10-17]. (原始内容存档于2022-11-13).
- ^ FUIF, Free Universal Image Format. [2022-10-17]. (原始内容存档于2022-11-12).
- ^ v0.2 JPEG XL Reference Software. GitLab. [2021-12-30]. (原始内容存档于2021-10-20) (英语).
- ^ 11.0 11.1 ISO/IEC 18181-2:2021 Information technology — JPEG XL image coding system — Part 2: File format.
- ^ Using Saliency in progressive JPEG XL images. [2022-10-17]. (原始内容存档于2023-01-09).
- ^ 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.
- ^ JPEG XL White Paper (PDF). JPEG.org. 2021-01-29 [2021-03-17]. (原始内容存档 (PDF)于2 May 2021).
- ^ JPEG XL vs. AVIF - Page 6. encode.su. [2022-10-22]. (原始内容存档于2022-10-18).
- ^ 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).
- ^ jpeg / JPEG XL Reference Software. GitLab. [2021-12-30]. (原始内容存档于2021-12-30) (英语).
- ^ FLIF - Free Lossless Image Format. [2021-12-30]. (原始内容存档于2021-12-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. 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 .
- ^ FLIF, 3 Sep 2021, jonsneyers comment. [2022-12-07]. (原始内容存档于2022-12-17).
- ^ 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).
- ^ JPEG XL reference implementation. GitHub. 3 December 2021 [24 June 2021]. (原始内容存档于30 December 2021).
- ^ Andre, Erik. Statement of support by Facebook on Chromium's issue #1178058. bugs.chromium.org. 2021-04-20 [2022-11-03]. (原始内容存档于2021-12-30).
- ^ Andre, Erik. Statement of support by Facebook on Firefox's issue #1539075. bugzilla.mozilla.org. 2021-05-24 [2022-11-03]. (原始内容存档于2022-01-04) (英语).
- ^ Rosenthol, Leonard. Statement of support by Adobe on Firefox's issue #1539075. bugzilla.mozilla.org. 2021-06-07 [2022-11-03]. (原始内容存档于2022-01-04) (英语).
- ^ Chan, Eric. Statement of support by Adobe on Chromium's issue #1178058. bugs.chromium.org. 2022-08-23 [2022-11-03]. (原始内容存档于2021-12-30).
- ^ 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).
- ^ 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).
- ^ 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).
- ^ 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) (英语).
- ^ 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) (英语).
- ^ Bendell, Colin. Statement of support by Shopify on Chromium's issue #1178058. bugs.chromium.org. 2022-10-17 [2022-11-03]. (原始内容存档于2021-12-30).
- ^ 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).
- ^ 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).
- ^ Update JPEG-XL with latest changes.. GitHub. 2019-12-27 [10 October 2022]. (原始内容存档于2022-10-10).
- ^ PLEASE DO NOT OPEN NEW ISSUES HERE. [2021年5月27日].
- ^ libjxl-tiny. [2022-12-07]. (原始内容存档于2022-12-09).
- ^ jxlatte. [2022-12-07]. (原始内容存档于2022-12-04).
- ^ pyjxl. [2022-12-07]. (原始内容存档于2022-11-12).
- ^ Siipola, Johannes, JPEG XL Encode, 2022-10-31 [2022-11-29], (原始内容存档于2022-11-29)
- ^ Codec to consider: JPEG XL · Issue #721 · GoogleChromeLabs/squoosh. GitHub. [2022-11-26]. (原始内容存档于2022-11-26) (英语).
- ^ HDR Output in Camera Raw. [2022-10-21]. (原始内容存档于2022-10-21).
- ^ Affinity V2: What's new (JPEG XL import/export). [2022-11-09]. (原始内容存档于2022-12-14) (英语).
- ^ Online Help for Chasys Draw IES: History. 2022-07-17 [2022-07-18]. (原始内容存档于2022-12-07).
- ^ ExifTool by Phil Harvey. [2022-01-19]. (原始内容存档于2022-01-26).
- ^ FFmpeg Lands JPEG-XL Support. www.phoronix.com. [2022-04-24]. (原始内容存档于2022-07-03) (英语).
- ^ GIMP 2.10.32 Released. 2022-06-14 [2022-06-15]. (原始内容存档于2023-01-06).
- ^ GThumb Image Viewer 3.11.3 Adds JPEG XL (.JXL) Support [Ubuntu PPA] | UbuntuHandbook. [2021-05-17]. (原始内容存档于2021-12-30).
- ^ ImageMagick. [2021-03-01]. (原始内容存档于2022-01-02).
- ^ IrfanView PlugIns. [2021-12-03]. (原始内容存档于2021-12-28).
- ^ KaOS 2021.06. [2022-01-31]. (原始内容存档于2021-06-29).
- ^ Krita 5.1.0 Released!. krita.org. 2022-08-18 [2022-08-20]. (原始内容存档于2023-01-20) (英语).
- ^ Statement of support by the Krita project on Chromium's issue #1178058. bugs.chromium.org. [2022-11-03]. (原始内容存档于2021-12-30).
- ^ KDE Ships Frameworks 5.89.0. KDE Community. 2021-12-11 [2022-04-28]. (原始内容存档于2022-12-07) (英语).
- ^ 0001845: JPEG XL - MantisBT. [2021-03-01]. (原始内容存档于2021-11-07).
- ^ Pale Moon 31.4.0 released! - Pale Moon forum. forum.palemoon.org. [2022-11-22]. (原始内容存档于2023-01-05).
- ^ Jpeg Xl Wic. GitHub. 27 November 2021 [2021-12-30]. (原始内容存档于2021-12-30).
- ^ JXLook. GitHub. December 2021 [2021-12-30]. (原始内容存档于2021-12-30).
- ^ libjxl gdk-pixbuf plugin. GitHub. [2022-11-26]. (原始内容存档于2023-01-18) (英语).
- ^ 1178058 - chromium - an open-source project to help move the web forward. - Monorail. [2021-12-30]. (原始内容存档于2021-12-30).
- ^ 1539075 - (JPEG-XL) Implement support for JPEG XL (Image/JXL). [2021-12-30]. (原始内容存档于2022-01-04).
- ^ 1806525 - Unable to view jpegxl images when setting image.jxl.enabled = true in about:config. bugzilla.mozilla.org. [2024-03-18]. (原始内容存档于2024-05-22) (英语).