JPEG分析及解码

本文详细介绍了JPEG文件的组织形式和解码流程,包括DCT变换、量化、Huffman编码等步骤。分析了JPEG文件的segment结构,如SOI、EOI、APP0、量化表、SOF0、DHT和SOS等,以及解码过程中Huffman码树的建立和解码过程。还讨论了解码时的量化矩阵、Huffman码表的输出,以及解码后DC和AC图像的特征和失真问题。
摘要由CSDN通过智能技术生成

JPEG分析及解码

1.JPEG文件简介:

JPEG(Joint Photo-Graphic Experts Group)-静止图像编码。是一种常用的图像文件格式,通过有损压缩去除冗余,能够在获得极高压缩率的同时得到较好的图像质量

2.JPEG编解码的主要步骤:

通过DCT变换具有的去相关性和能量集中性,将图像从空间域变换到频域,去除空间冗余;用与人眼视觉特性相关的量化表量化DCT系数,减少视觉冗余;对量化后的DC系数和AC系数分别进行预测编码和游程编码,减少编码冗余。

3.JPEG文件的组织形式

以segment的形式组织,具有以下特点:

1.     均以0XFF开始,后跟1字节的标记代码,2字节表示数据长度

2.     保存时高位在前,低位在后

共包含7个基本的segment

a.     SOI:start of image

标记代码:2字节,固定为0XFFD8,表示图像开始

所有JPEG文件必须以SOI开始,但无数据长度字节

b.     EOI:end of image

标记代码:2字节0XFFD9

所有JPEG文件必须以EOI结束,也无数据长度字节

c.      APP0:应用程序保留字节0

标记代码:2字节,固定为0XFFE0

共9个数据字段

数据长度:2字节

标识符:5字节,固定值0X4A46494600,即字符串:“JFIF0”

版本号:2字节,表示JFIF的版本号

X和Y的密度单位:1字节,且只有三个值可选:0:无单位;1:点数/英寸;2:点数/厘米

X方向像素单位:2字节

Y方向像素单位:2字节

缩略图水平像素数目:1字节

缩略图垂直像素数目:1字节

缩略图RGB位图:长度可能是3的数目

缩略图RGB位图数据


d.     量化表

标记代码:2字节,固定值0XFFDB

数据长度:2字节,表示数据字段及多个量化表的总数据长度

量化表:

               精度及量化表ID:1字节

                                             高四位:精度,0:8位;1:16位

                                             低四位:量化表ID,取值范围0~3

表项:8位:表项长度为64字节,16位表项长度为128字节

00:表示精度为8位,ID:0表示亮度量化表

01:精度为8位,ID:1表示色度量化表

e.     SOF0:start of frame 帧图像开始

标记代码:2字节,固定值0XFFC0

精度:1字节,每个颜色分量每个像素的位数

图像高度:2字节,单位:像素(pixel)

图像宽度:2字节,单位:像素(pixel)

颜色分量数:1字节

颜色分量信息:

                        颜色索引ID:1字节,备选值:01、02、03

                        采样因子(sample factor):1字节

                                                                高四位:水平采样因子

                                                                低四位:垂直采样因子

                        量化表号:1字节

f.     DHT:定义Huffman码表

标记代码:2字节,固定值0XFFC4

数据长度:2字节

Huffman表:

                      表ID和表类型:1字节

                                               高四位:类型;0:DC直流;1:AC交流

                                                  低四位:Huffman表ID(DC,AC分开编码)

不同位数的码字数量:16字节

编码内容:16个不同位数的码字数量之和

Huffman码表可以有多个


001D:29字节;00:表示DC直流0号表

003E:46字节;10:表示AC交流0号表

001E:30字节;01:表示DC直流1号表

002F:47字节;11:表示AC交流1号表

以DC直流0号表为例:

00 03 01 01 01 01 01 01 01 00 0000 00 00 00 00:表示不同位数码字的数量。即码字位数为1的码有0个,码字位数为2的码有3个,码长为3、4、5、6、7、8、9的码各有1个。

04 05 06 03 02 01 00 09 07 08 :这10个字节表示编码内容(10字节=3+1+1+1+1+1+1+1),10个字节对应10个叶子结点,其权值分别为:4、5、6、3、2、1、0、9、7、8。权值表示解码时需要再读入的比特数。

g.     SOS:start of scan 扫描开始

标记代码:2字节固定值:0XFFDA

数据长度:2字节

颜色分量数:1字节;1:灰度图;3:YCbCr或YIQ;4:CMYK

颜色分量信息:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值