google 又开源了,这次开源了一款图像算法工具 guetzli。guetzli,在瑞士德语中是“cookie(曲奇)”的意思,是一个针对数码图像和网页图像的 jpeg 编码器,能够通过产生更小的 jpeg 文件来达到更快的在线体验,并且同时保持与当前浏览器,图像处理应用和 jpeg 标准的兼容性。google 称 guetzli 创建高质量的 jpeg 图像文件的大小比当前的压缩方法要再小 35%。
jpeg 图像的视觉质量与它的多阶段压缩过程有关:色彩空间变换,离散余弦变换,以及量化等等。guetzli 具体针对量化阶段,图像视觉质量损失越多,输出图像尺寸越小。guetzli 努力通过一个搜索算法,来克服 jpeg 格式的精神视觉模型与 guetzli 的精神视觉模型之间的差别,以一种更全面更详细的方式来结合色彩感知和视觉掩蔽,从而在最小化损失和最小化图像尺寸中达到平衡。不过,尽管 guetzli 可以使图像尺寸更小,但创建压缩图像所花费的时间要与目前的方法更长。
上图为 16x16 像素样本,是挂在蓝天下的一根电话线,传统 jpeg 算法经常会遇到的失真状况。左边是未压缩的原图,中间为较小尺寸的 libjpeg,右边是失真更少的 guetzli 。
google 还表示在实验中把压缩图像的尺寸设为常数,相比于 libjpeg 输出的图像,在人工评估时大家总是更偏好 guetzli 产生的图像,即使当 libjpeg 的图像和 guetzli 的大小相同甚至更大一些。这点让他们觉得压缩速度慢一点也是值得的。
上图是 20x24 像素的一张猫眼的放大细节图。左边是未压缩的原图,中间是 libjpeg,右边是 guetzli 。