【数据压缩】JPEG编解码

 JPEG图像压缩算法能够在提供良好的压缩性能的同时,具有比较好的重建质量,被广泛应用于图像、视频处理领域,是第一个国际图像压缩标准。

1JPEG编码基本流程

1)JPEG规定了4种运行模式,以满足不同需要

2)8×8的块编码,将一个宏块作为基本编码单元(MCU),这样可提高编码效率和实时性。

3)零偏置:JPEG编码时,输入的YUV信号由于都是unsigned char类型,取值为0~255,所以需要先进行下拉128操作,让其以0为中心

4DCT变换:对每个单独的彩色图像分量,把整个分量图像分成8×8的图像块,作为两维离散余弦变换DCT的输入

5量化:由于DCT变换后零值会有很多,尤其在高频成分中,所以选用了中平量化器量化步距是按照系数所在的位置和所在颜色分量来确定因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化值和色差量化值根据人眼的视觉特性(对低频敏感,对高频不太敏感)对低频分量采取较细的量化,对高频分量采取较粗的量化;如果原始图象中细节丰富,则去掉的数据较多,量化后的系数与量化前差别较大反之,细节少的原始图象在压缩时去掉的数据少些。进行数据量化后,矩阵中的数据都是近似值,和原始图像数据之间有了差异,这一差异是造成图像压缩后失真的主要原因。

6DCAC系数分别编码:经过量化后,DCT的第一个系数为直流DC系数,由于一般图像中的DC系数之间相关性较强,相邻的DC系数之间应该差别不是很大。所以将每个宏块的DC系数取出后做DPCM差分编码,对于差值进行Huffman编码,以达到压缩效果。

而对AC系数,由于一般数值都集中在左上角,而之后基本上都是零值,所以采用之字形扫描的方法,按照低频到高频的顺序将数值取出,当后边都是零的时候给出一个EOB代替。而当高频偶尔有值的时候就很有可能出现很多连零,所以在将AC的系数提出后,先要进行游程化,再进行熵编码,实现压缩效果。

之字形排序优点是使得靠近矩阵左上角、值比较大的元素排列在行程的前面,而行程的后面所排列的矩阵元素基本上为0值。

2JPEG文件格式

SOI ,Start of Image,   图像开始 标记代码2字节固定值0xFFD8

EOIEnd of Image,   图像结束2字节 标记代码2字节

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值