快速学习JPEG图像压缩原理 | Web高能短文系列

jpeg可以将原图实现几十倍压缩,虽然压缩过程会损坏部分数据,但呈现给用户的效果是完全可以接受的,那是什么技术如此神奇呢?其实jpeg压缩使用了5个很常用的算法。

1. 图像分割

将图像矩阵分割成一块块8X8单位,每个单位单独用后面4个步骤处理,使用8X8尺寸进行分割的原因是:图像本身的连贯性,一个8X8的图像中的数值一般不会出现大的跳跃。

2. 颜色模式从RGB转成YCbCr

RBG模式大家都懂,YCbCr的意思是(Y-亮度,Cb-蓝色差,Cr-红色差),在黑白电视里,只用Y亮度数据就呈现除了视觉效果,后来加上了CbCr就成了彩色电视,由于人对亮度最敏感,所以在压缩的时候Y值的保留率需要比CbCr高,这样可以尽量小的影响人感官体验,也是转成YCbCr的原因。算法详情入口

3. 离散余弦变换(DCT)

DCT是一个很厉害的算法,可以把一个数组数据转换成一个矩阵,且数据都集中到坐上角,其余都会接近为0,最重要的是这算法是可逆的。算法详情入口

4. 数据量化

什么是量化?举个例子,游戏人物可以面朝着360转,用浮点数表示0~2π,但其实是没必要的,我们可以把方向定为16个,这样既不影响用户体验,数据量也大大减小。
JPEG数据量化呢,会有个量化系数矩阵,用上一步DCT转化得来的图像矩阵除以量化系数矩阵,得到新的矩阵,然后用round函数四舍五入处理矩阵后,一大部分数据变成0,实现数据量化压缩。算法详情入口

Huffman编码

最最后,把矩阵数据转化成一维数组,然后用最最常用的Huffman编码压缩下,得到了最终JPEG压缩的图像数据。算法详情入口

大家知道世界上第一张JPEG图片是什么吗?当当当 Lenna 原图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值