jpeg压缩原理简述

一、色彩空间转换(RGB→YCrCb)
这一步没有数据删除,是可逆的步骤

YCbCr 是在世界数字组织视频标准研制过程中作为ITU - R BT1601 建议的一部分,其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 同样都指色彩, 只是在表示方法上不同而已。在YUV家族中, YCbCr 是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。

Y = 0,299R + 0.587G + 0.114B

Cb = -0.1687R - 0.3313G + 0.5·B+128

Cr = 0.5R - 0.4187G - 0.0813B+128

注:有的地方写的Cb和Cr的转换不需要+128,亲测需要加,不然会出现色彩混乱

转换代码

二、色度缩减取样
YUV(YCbCr)采样格式:

(1)YUV444:没有缩减色度取样每四个像素中Y分量 U分量 V分量都是4,平均每个像素3字节(24位),相比RGB几乎没有压缩

(2)YUV422:每四个像素4个Y分量,2个U分量,2个V分量;采样时相邻两个像素一个丢弃U分量,一个丢弃V分量;平均每个像素2字节

(3)YUV420:每四个像素4个Y分量,1个U分量,1个V分量;采样时保留全部Y数据,一行丢弃全部V数据,保留一半U数据;下一行丢弃全部U数据,保留一半V数据

三、离散余弦变换(DCT)
DCT详解:后续编写

把整个图像分成若干个8*8的像素区域,称为区块,每个区块64个像素

在JPEG压缩过程中,经过颜色空间的转换,每一个8X8的图像块,在数据上表现为3个8X8的矩阵,紧接着我们对这三个矩阵(分别对应Y Cb Cr)做一个二维的DCT转换,二维的DCT转换公式为:
在这里插入图片描述

经过DCT变换这个8*8区域的能量(相对连续的像素)全部集中在了左上角,右下角是我们可以舍弃的部分(像素变化边缘部分)

注:这一步仍然是可逆的,我们虽然经过了DCT变换,但是并没有造成数据损失

四、量化
上一步DCT我们可以得到三个表,分别对应Y Cb 和Cr,接下来我们对这三个表进行量化,也就是舍去右下角的一部分数据

量化的过程我们需要用到标准量化表,亮度和色度的量化表不同,所以我们需要用到两张表
在这里插入图片描述

我们分别用第三步得到的表,去除以量化表对应位置的数据(取整)比如:一张亮度表可以量化成这样:

在这里插入图片描述

可以看到,一大部分数据变成了0,这非常有利于后面的压缩存储。

注:对量化表乘上不同的系数可以实现不同程度的量化

五、进行编码
把上一步得到的量化后的数据,进行Z字型编码:

在这里插入图片描述

这么做的好处是可以使我们编码的后半部分出现大量的连续的0,这样就可以使用游程编码简化

然后把我们得到的序列进行哈夫曼编码,编码后就可以进行传输了

六、重构图片
霍夫曼解码,解析获得常数表,把之前之字形得到的数据放到表内
将得到的数值乘以量化表,然后用得到的数据乘以对应的基础图象,基础图象的叠加的
把色度和亮度转换为RGB色彩空间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值