JPEG
2022-04-25 11:39:28 阿炯

JPEG或称JPG,是一种针对照片影像而广泛使用的有损压缩标准方法,由联合图像专家小组(英语:Joint Photographic Experts Group)开发。此团队创立于1986年,1992年发布了JPEG的标准而在1994年获得了ISO 10918-1的认定。JPEG与视频音频压缩标准的MPEG(Moving Picture Experts Group)很容易混淆,但两者是不同的组织及标准。


扩展名:.JPEG, .jpg, .jpe .jfif, .jfi, .jif(容器)
互联网媒体类型:image/JPEG
类型代码:JPEG
统一类型标识:public.JPEG
开发者:联合图像专家小组
初始版本:1992年9月18日
格式类型:破坏性图像格式
网站:jpeg.org


JPEG本身只有描述如何将一个影像转换为字节的数据流(streaming),但并没有说明这些字节如何在任何特定的存储媒体上被封存起来。JPEG的压缩方式通常是有损压缩,即在压缩过程中图像的质量会遭受到可见的破坏,有一种以JPEG为基础的标准Lossless JPEG是采用无损的压缩方式,但Lossless JPEG并没有受到广泛的支持。


一个由C-Cube Microsystems等公司所创建的额外标准,称为JFIF(JPEG File Interchange Format,JPEG文件交换格式,联合图像专家小组文件交换格式)详细说明如何从一个JPEG流,产出一个适合于电脑存储和传输(像是在互联网上)的文件。在普遍的用法,当有人称呼一个"JPEG文件",一般而言他是意指一个JFIF文件,或有时候是一个Exif JPEG文件。然而,也有其他以JPEG为基础的文件格式,像是JNG。

使用JPEG格式压缩的图片文件一般也被称为JPEG Files,最普遍被使用的扩展名格式为.jpg,其他常用的扩展名还包括.JPEG、.jpe、.jfif以及.jif。JPEG格式的资料也能被嵌进其他类型的文件格式中,像是TIFF类型的文件格式。

JPEG/JFIF是万维网上最普遍的被用来存储和传输照片的格式。它并不适合于线条绘图(drawing)和其他文字或图标(iconic)的图形,因为它的压缩方法用在这些类型的图形上,得到的结果并不好(PNG和GIF通常是用来存储这类的图形;GIF每个像素只有8比特,并不很适合于存储彩色照片,PNG可以无损地存储照片,但是文件太大的缺点让它不太适合在网络上传输)。

对于JFIF的MIME媒体类型是image/JPEG(定义于RFC 1341)。


专利案结束

经过数年的纠缠,于2006年11月,JPEG专利持有者Forgent Networks终于与30家PC厂商结束了侵权官司,代价是PC厂商向Forgent赔款800万美元,而不是Forgent期望的1亿美元。

在与PC厂商大打官司之前,Forgent已经与60多家公司和解,获得的专利费用总额高达1.1亿美元。包括雅虎在内的45家PC厂商拒绝就4698672号专利问题和解,而是选择了对簿公堂,不过其中15家在此之前已经与Forgent和解。

虽然还是赔了款,但PC厂商们并没有输掉官司;虽然没能得到自己想要的大笔美金,Forgent也没有彻底失败。在非盈利性组织美国公共专利基金会(PPF)的协助下,他们设法获得了美国专利和商标局(USPTO)的认可,对Forgent专利的有效性在2月和6月两次重新进行了鉴定,最终法庭限制了Forgent专利的应用范围。而从另一方面看,Forgent的专利也得到了一定的维护,这要比被彻底推翻好得多,Forgent也表示对结果感到很满意。

Forgent CEO Richard Snyder称:“在672专利的有效期内,我们已经获得了1.1亿多美元。很快Forgent还会再次有所行动。我们的精力现在已经转移到746专利上,并等待2007年5月的陪审团裁决,同时我们还会继续促进(分公司)NetSimplicity的软件业务。”


压缩标准

JPEG是由国际标准组织(ISO)和国际电话电报咨询委员会(CCITT)为静态图像所创建的第一个国际数字图像压缩标准,也是至今一直在使用的、应用最广的图像压缩标准。JPEG由于可以提供有损压缩,因此压缩比可以达到其他传统压缩算法无法比拟的程度。

JPEG的压缩模式有以下几种:
顺序式编码(Sequential Encoding)
一次将图像由左到右、由上到下顺序处理。
递增式编码(Progressive Encoding)
当图像传输的时间较长时,可将图像分数次处理,以从模糊到清晰的方式来传送图像(效果类似GIF在网络上的传输)。
无有损编码(Lossless Encoding)
阶梯式编码(Hierarchical Encoding)
图像以数种分辨率来压缩,其目的是为了让具有高分辨率的图像也可以在较低分辨率的设备上显示。

在Independent JPEG Group所提供的源码上,有jpegtran程序,就提供了优化Huffman,转成渐进式,镜射,旋转这些无损耗转换。


JPEG XL

JPEG XL是一种免版税的位图文件格式,支持有损和无损压缩。它旨在超越现有的位图格式,并成为它们的通用替代。


JPEG 是指联合影像专家小组,它是设计该格式的委员会。
X 是指自 2000 年以来的几个 JPEG 标准的名称的一部分: JPEG XT 、 JPEG XR 、JPEG XS 。
L 代表长期,因为创建这种格式的意图是替换旧的JPEG文件格式并能被使用同样长的时间。

历史
2017 年,JTC1/SC29/WG1 (JPEG) 发起 JPEG XL 提案征集。
2020 年 12 月 25 日,JPEG XL的比特流格式被最终敲定,这意味着该格式现在可以保证被未来的版本解码。

特征

主要特点有:
与传统图像格式(例如JPEG、GIF 和 PNG)相比,有着更佳的效率与更丰富的功能;
每边超过十亿 (2 30 -1) 个像素的图像尺寸;
多达 4100 个通道,即灰度通道或 RGB通道、可选的alpha通道和多达 4096 个“额外”通道;
渐进式解码(按分辨率和精度);
现有的旧JPEG格式文件(除CMYK)可以无损转码至JPEG XL,并且尺寸减少约 20%;
该格式支持转码为渐进式 JPEG XL,但尚未在参考软件中实现;
无损编码和无损alpha编码;
支持摄影图像和合成图像;
大范围比特率下可接受的质量下降;
感知优化;
支持广色域和HDR ;
支持动画内容;
无需专用硬件即可高效编解码
JPEG XL 的编码和解码速度与旧 JPEG (使用libjpeg-turbo )差不多,并且与使用 x265 的HEIC 相比,编码和解码速度快一个数量级。
可并行计算与具有开源参考实现的免版税格式。

技术细节

JPEG XL 编解码器架构图


JPEG XL 基于Google 的 PIK 格式和Cloudinary的 FUIF 格式(该格式基于FLIF)。它的默认设置能在实现接近无损的视觉效果的同时,提供良好的压缩效果。

编码模式

JPEG XL有几种编码模式。
1.JPEG重编码模式:用于转码旧的 JPEG 格式文件的编码模式。
2.VarDCT模式:用于有损压缩。此模式下,位图先会被转换到源自 LMS的XYB颜色空间,随后使用VarDCT (块大小可变的离散余弦变换,variable-blocksize DCT)算法进行压缩。
3.组合(Modular)模式:用于响应式或近无损压缩。

JPEG XL会针对性地使用更适宜的方法编码某些图像特征。如横条、点(定义为与邻近像素视觉差别很大的少数像素)、重复的样式、噪声。预测是使用逐像素去相关器运行的,没有辅助信息,包括参数化的自校正加权预测器集合。上下文建模包括专门的静态模型和强大的元自适应模型,它们考虑了局部错误,具有信号树结构和每个上下文的预测器选择。

Chrome 91开始可以通过enable-jxl标志开启,Edge通过--enable-features=JXL命令行参数开启,Firefox 90开始可以image.jxl.enabled 标志开启。

Mozilla 对支持 JPEG-XL 图像格式持中立态度

2022年 11 月,谷歌工程师提交补丁,称决定在 Chrome 110 中移除对 JPEG-XL 图像格式的实验性支持。当时 Mozilla 虽然没有明确表明对 JPEG-XL 的态度,但仍继续在 Firefox 的 nightly 版本中提供支持 JPEG-XL 作为可选功能。经过几个月的讨论,2023年2月上旬 Firefox 终于确定了对 JPEG-XL 的支持情况:持中立态度。当时谷歌工程师解释了为什么要从 Chrome 中移除对 JPEG-XL 的支持,原因包括:
1.处于实验性阶段的 flag 和代码不应无限期地保留
2.整体生态对 JPEG-XL 格式缺乏兴趣,难以继续推动试验
3.与现有的格式相比,新的图像格式并没有带来足够的增量收益,因此没有理由默认启用它
4.通过移除相关代码可以减轻维护负担,帮助开发者专注于改进 Chrome 中的现有格式

Mozilla 工程师 Martin Thomson 近日发表了关于支持 JPEG-XL 图像格式的看法:
经过大量的咨询,我们终于得出最终结论:对 JPEG-XL 持中立态度。要明确承认的是,添加新格式支持需要付出代价,这个代价不只是影响我们(添加、保护和维护代码并非易事),对整个 Web 行业来说更是如此。总体而言,格式越少对 Web 越好,因为这降低了创作和提供内容的复杂性。当然开发商会在满足用户和开发人员需求的范围内,尽可能提供更多的格式。

开发商会根据格式提供的功能、整体性能等维度来综合评估,其中包括压缩率、CPU 成本和图像质量等一系列因素。此外还会查看格式的使用范围,对于被广泛使用的格式而言,其功能和性能优势并不重要。新的格式则需要证明引入它的理由,并提供现有格式无法具备的一些优势。

从这方面来看,Mozilla 承认 JPEG-XL 在功能和性能方面提供了一些潜在的优势。不过 JPEG-XL 的性能并没有比其最接近的竞争对手(如 AVIF)好到足以证明仅在此基础上进行添加是合理的。同样,它的功能改进也没有让它从平台中已经引入的格式脱颖而出。

所以 Mozilla 认为支持 JPEG-XL 与否和对 Web 是好或坏无关。如果 JPEG-XL 的使用变得更加广泛,我们可能会发现有必要支持该格式,但这将是一个产品决定。


JPEG XL与目前行业主推的 AVIF 比较


2023年6月就有开发者亲自测试了一遍。开发者使用 ImageEngine 对 JPEG XL、AVIF、WebP 和 JPEG 这四个格式进行了测试,虽然此次仅仅是一些初步测试,但仍然可以让我们看到 JPEG XL 的具体效果。


从上图中可以看到,相比原始图片,JPEG 可以说是完全没有减少文件的大小,而 JPEG XL 则是四种格式中压缩率最高的格式,经过压缩,JPEG XL 格式的文件所占空间最小。即便是对比目前行业主推的 AVIF,JPEG XL 也小了约 11%。AVIF 和 WebP 相比,两者的平均压缩率倒是想差不多。那么压缩后的图像质量(dssim)会不会出现大幅度的衰减呢?通过比较这几个格式的图像质量,JPEG XL 在文件大小是最小的同时,它的图像质量也比 AVIF 和 WebP 的图像质量更高,具体来说,JPEG XL 的图像质量比 AVIF 高约 13%。兼具质量和压缩率,JPEG XL 能够得到广泛支持呢?

谷歌推Jpegli图片压缩技术

2024年4月消息,JPEG格式一直是图像压缩的主流格式之一,但它也存在着明显的缺点:在压缩图片时,往往会损失一定程度的画质,并且会出现压缩伪影等问题。谷歌发布了一款名为 Jpegli 的开源编码库,有望解决这些难题。其诞生源于网站优化需求。为了提升网页加载速度,图片的压缩率与质量之间需要取得平衡。其号称可以在保证高质量图像的前提下,提供比现有方法更优的压缩率,最高可提升 35%。更重要的是,Jpegli 与现有的 JPEG 编码器和解码器完全兼容,并且支持常用的 8 位格式,以及可选的 10 位以上格式 (可带来更少的压缩伪影)。为了量化 Jpegli 的图像质量改进,项目团队将 Jpegli 与 libjpeg-turbo 和 MozJPEG 进行了比较。


谷歌表示,Jpegli 在相同比特率下能提供比传统编码器更高的图像质量。在测试中,Jpegli 在 2.8 BPP 的比特率下展现的图像质量优于 libjpeg-turbo 在 3.7 BPP 下的画质,而后者的比特率比 Jpegli 高出 32%。不过谷歌并未过多披露其运作原理,但其核心在于利用新技术更好地降低图像噪声,同时在更小的文件中保存更多细节。这些技术部分借鉴了谷歌之前推出的 JPEG XL 格式的研发成果。得益于这些技术,Jpegli 在压缩文件尺寸的同时,还能保持出色的画质,并且完全兼容现有的浏览器和其他图像处理工具。具体的改进包括:
1.Jpegli 提供了完全可互操作的编码器和解码器,符合原始 JPEG 标准及其最传统的 8-bit 形式,以及与 libjpeg-turbo 和 MozJPEG 的 API/ABI 兼容性。

2.高质量的结果。当通过 Jpegli 压缩或解压缩图像时,会执行更精确且心理视觉上有效的计算,并且图像将看起来更清晰并且可观察到的伪影更少。

3.速度快。在提高图像质量/压缩密度比的同时,Jpegli 的编码速度与 libjpeg-turbo 和 MozJPEG 等传统方法相当。这意味着 Web 开发人员可以轻松地将它集成到他们现有的工作流程中,而无需牺牲编码速度性能或内存使用。

4.10+ bits。Jpegli 每个组件可以使用 10+ bits 进行编码。Jpegli 的 10+ bit 编码以原始 8-bit 形式进行,生成的图像可与 8-bit viewers 完全互操作。 10+ bits 动态可作为 API 扩展使用,并且需要更改应用程序代码才能应用它。

5.More dense:Jpegli 比传统 JPEG 编解码器更有效地压缩图像,可以节省带宽和存储空间,并加快网页速度。

Jpegli 目前已在 Github 上开源,供感兴趣的开发者进一步研究。对于普通用户来说,这项技术意味着未来浏览网页时,图片加载速度将更快,数据消耗也将更少。虽然谷歌尚未公布相关计划,但业界普遍认为 Jpegli 很可能会被整合到谷歌自家产品中,例如 Google Photos。如果图片储存空间能够减少 30%,同时保持原有画质,这将大大减轻谷歌服务器的负担。