Jpegli 简介:Google 开源的新一代 JPEG 编码库

互联网改变了我们的生活、工作和交流方式。然而,当页面加载缓慢时,它可能会变成令人沮丧的根源。这个问题的核心在于图像的编码。

为了改进这一点,Google 推出了 Jpegli,这是一种先进的 JPEG 编码库,它保持了高度的向后兼容性,同时提供增强的功能,并在高质量压缩设置下将压缩比提高了 35%。

Jpegli 是一个新的 JPEG 编码库,其设计比传统 JPEG 更快、更高效、更美观。它使用了许多新技术来实现这些目标,包括:

  • 它提供了完全可互操作的编码器和解码器,符合原始 JPEG 标准及其最传统的 8 位形式,以及与 libjpeg-turbo 和 MozJPEG 的 API/ABI 兼容性。
  • 高质量:当通过 Jpegli 压缩或解压缩图像时,会执行更精确且心理视觉上有效的计算,并且图像将看起来更清晰并且可观察到的伪影更少。
  • 速度快:在提高图像质量/压缩密度比的同时,Jpegli 的编码速度与 libjpeg-turbo 和 MozJPEG 等传统方法相当。这意味着 Web 开发人员可以轻松地将 Jpegli 集成到他们现有的工作流程中,而无需牺牲编码速度性能或内存使用。
  • 10+ 位:Jpegli 每个组件可以使用 10+ 位进行编码。传统的 JPEG 编码解决方案仅提供每个组件 8 位动态,导致缓慢梯度中出现可见的条带伪影。Jpegli 的 10+ 位编码以原始 8 位形式进行,生成的图像可与 8 位查看器完全互操作。10+ 位动态可作为 API 扩展使用,需要更改应用程序代码才能从中受益。
  • 更密集:Jpegli 比传统 JPEG 编解码器更有效地压缩图像,可以节省带宽和存储空间,并加快网页速度。

Jpegli 工作原理

Jpegli 的工作原理是使用许多新技术来降低噪声并提高图像质量;主要是来自 JPEG XL 参考实现的自适应量化启发式、改进的量化矩阵选择、精确计算中间结果,并有可能使用更高级的色彩空间。所有新方法都经过精心设计,以使用传统的 8 位 JPEG 形式,因此新压缩的图像与现有的 JPEG 查看器(例如浏览器、图像处理软件等)兼容。

自适应量化启发法

Jpegli 使用自适应量化来降低噪声并提高图像质量。这是通过基于心理视觉建模对量化死区进行空间调制来完成的。使用我们最初为 JPEG XL 开发的自适应量化启发式方法,可以提高图像质量并减小文件大小。这些启发式方法比 guetzli 中最初使用的类似方法要快得多。

改进的量化矩阵选择

Jpegli 还使用一组量化矩阵,这些矩阵是通过优化心理视觉质量指标的组合而选择的。 Jpegli 中的精确中间结果可提高图像质量,并且编码和解码都会产生更高质量的结果。 Jpegli 可以使用 JPEG XL 的 XYB 色彩空间来进一步提高质量和密度。

测试 Jpegli

为了量化 Jpegli 的图像质量改进,我们在众包评估者的帮助下比较了 Cloudinary 图像数据集 '22 中的图像对,这些图像使用三种编解码器进行编码:Jpegli、libjpeg-turbo 和 MozJPEG,并以多种比特率进行编码。

在此测试中,我们仅限于比较编码,解码始终使用 libjpeg-turbo 执行。我们在禁用 XYB ICC 颜色配置文件的情况下进行了研究,因为我们预计大多数用户最初会使用 Jpegli。为了简化跨编解码器和设置的结果比较,我们使用国际象棋排名启发 ELO 评分来汇总所有评估者决策。

ELO 分数越高,表明评估者研究中的总体表现越好。我们可以观察到,2.8 BPP 的 jpegli 获得的 ELO 评级高于 3.7 BPP 的 libjpeg-turbo,比特率比 Jpegli 高 32%。

测试结果表明,Jpegli 可以比传统 JPEG 编解码器多压缩 35% 的高质量图像。

相关推荐
众创岛9 分钟前
回调函数、闭包概念、场景及python实战
前端
im_AMBER10 分钟前
Leetcode 160 最小覆盖子串 | 串联所有单词的子串
开发语言·javascript·数据结构·算法·leetcode
得想办法娶到那个女人11 分钟前
项目中 TypeScript 类型推导 极简实战总结
前端·javascript·typescript
Beginner x_u16 分钟前
前端八股整理(Vue 02)|组件通信、生命周期、v-if 与 v-show
前端·javascript·vue.js
一颗青果33 分钟前
Cookie 与 Session 超详细讲解
服务器·前端·github
zs宝来了41 分钟前
React 18 并发模式:Fiber 架构与时间切片
前端·javascript·框架
万物得其道者成1 小时前
Vue3 使用 Notification 浏览器通知,解决页面关闭后旧通知点击无法跳转问题
前端·vue.js·edge浏览器
一條狗1 小时前
学习日报 20260423|[特殊字符] 深度解析:Vue 3 SPA 部署到 Spring Boot 的 404/500 错误排查与完美解决方案-2
vue.js·spring boot·学习
ShineWinsu1 小时前
CSS 技术文章
前端·css
天若有情6731 小时前
反向封神!C++ 全局单例不避反用,实现无锁多线程函数独占访问
java·javascript·c++