京东DPG图片压缩调研

最近搜狐科技报道了京东推出了一种新的dpg图片压缩格式,文中的主要观点如下:
在不牺牲清晰度的前提下:

  1. dpg比jpg体积小65%
  2. dpg比webp体积小50%
  3. dpg有jpg同样优秀的兼容性
    针对以上观点,我做了如下调研:

dpg与jpg比较

首先,dpg并不是一种全新的图片格式,它就是jpeg,这点我们用GraphicsMagick的命令行工具可以清楚地看出:

[zhyang@localhost dpg]$ gm identify -verbose 59659caaN127f5381.jpg.dpg
Image: 59659caaN127f5381.jpg.dpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Geometry: 790x743
......

这也就解释了第3点兼容性的问题。
文中报道,原图大小是306740字节,dpg压缩图大小是120038字节,dpg图比原图大幅减小约61%。这有一部分原因是因为dpg图比原图使用了更小的压缩质量因子q(注:质量因子越大,图片质量越高,文件也越大)和采样因子:
原图

[zhyang@localhost dpg]$ gm identify -verbose 59659caaN127f5381.jpg
......
JPEG-Quality: 94
JPEG-Colorspace: 2
JPEG-Colorspace-Name: RGB
JPEG-Sampling-factors: 1x1,1x1,1x1

dpg压缩图

[zhyang@localhost dpg]$ gm identify -verbose 59659caaN127f5381.jpg.dpg
......
JPEG-Quality: 86
JPEG-Colorspace: 2
JPEG-Colorspace-Name: RGB
JPEG-Sampling-factors: 2x2,1x1,1x1

若用标准libjpeg库,采用与dpg相同的q和采样因子压缩后,图片的大小为166549字节。dpg压缩图比标准jpeg压缩图小27.9%.
为了进一步比较两者的压缩效果,引入广泛使用的客观评价指标SSIM注:SSIM值反映了压缩图相对原图的扭曲程度, 值越小扭曲越大):
DPG压缩图SSIM值:

(R, G & B SSIM index)
89.8812%
95.3736%
91.6946%

libjpeg压缩图SSIM值:

(R, G & B SSIM index)
91.2599%
96.8804%
93.4639%

从SSIM值上看,q=86时,libjpeg压缩效果要比dpg好。若继续降低libjpeg压缩质量因子q以逼近dpg的SSIM值,可得到q=79时,两者SSIM值接近,此时文件大小为130753字节,dpg压缩图比其小8.2%左右

dpg与webp比较

京东webp压缩图大小为220408字节,dpg图比其小45.5%左右。
由于无法从结果图获取具体的压缩质量q和其他压缩参数,这里使用webp默认的压缩参数和压缩质量q=86进行压缩,此时文件大小为130818字节,dpg图比webp图小8.2%左右。可以肯定的是京东webp压缩质量因子一定大于86,预估在94左右。
q=86时,webp图与原图比较的SSIM值为:

(R, G & B SSIM index)
91.699%
97.0325%
93.826%

显然,从SSIM值上,q=86的webp压缩效果要优于dpg.
若进一步降低q以比较dpg的SSIM值,可得当q=78时,webp图片大小为99942字节。此时,dpg比webp大26.4%左右

更多图片比较

为了进一步评估dpg的效果,我从京东选取更多的图片进行测试,并有意识挑选了尺寸相差较大的图片。测试步骤如下:

  1. 下载原图和dpg图(在原图后加上.dpg后缀),比较两个图片的大小;
  2. 计算dpg图与原图的SSIM值;
  3. 利用libjpeg压缩原图,通过迭代减小压缩因子方式使jpeg与原图的SSIM值逼近第2步的值,并与dpg文件大小作比较;
  4. 用与第3步相似的步骤,逼近获得webp的压缩因子和文件,并与dpg大小作比较。
    测试结果见附录。从结果中不难看出,dpg比libjpeg压缩后的文件要小10%-20%左右,但比webp要大约15%左右。dpg相比libjpeg还是取得了不错的效果。但在测试过程中也发现,部分dpg图相比较原图,色彩和细节部分有所丢失,显得画面有一些糊,一定程度上影响了感官,尤其在图中存在文字的情况下尤为明显,在测试数据中也表现为SSIM值较低。这一部分原因是因为dpg使用的采样因子比原图低,更主要的原因个人认为是dpg有意平滑了部分细节,毕竟存储这些细节肯定需要更多的字节数。
    (注:将原图和dpg图贴在两个窗口中来回切换看尤为明显)

    原图

     

    dpg图

     

    原图

     

    dpg图

     

    原图

     

    dpg图

总结

1. dpg不是新的图片格式,它就是jpg,因此具有良好的兼容性;
2. dpg在京东能比jpg原图小70%,一部分原因是原图参数设置较高,如果拉倒同一起点,测试显示dpg比标准jpeg库小约10-20%,这个提升已经非常不错;
3. dpg会平滑图片中的细节,导致图片中的文字变糊。考虑到京东大都是商品细节描述的图片,如果这个问题得不到改善,个人认为能否在京东大规模应用,还是个未知数;
4. 测试显示dpg并没有比webp强,京东能有50%的下降同样是因为京东webp设置参数较高,不在同一起点。

dpg技术实现

由于京东并没有开源dpg压缩算法,搜狐的文章也只是简单说明一下是借鉴了heif的技术。
这里可以先看一下webp官方给出的为什么webp能比jpeg小的原因:

Why WebP (lossy) is Better than JPEG

Prediction coding is a main reason WebP wins over JPEG. Block adaptive quantization

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大优盾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值