摔了一跤头痛怎么回事:关于JPEG的解码问题
来源:百度文库 编辑:查人人中国名人网 时间:2024/05/11 18:10:07
这个bits的划分,其实就是靠霍夫曼码控制的。之所以用霍夫曼编码,是因为这个编码是唯一的,不可能有重复,如果像你所说的那样,随意划分的话,只能导致错误。
霍夫曼编码中,当你从当前的码流中提取若干比特,程序会查询霍夫曼表中是否有对应的编码,如果有,则会检出一个length值,代表这个编码占用多少bit, 若没有查到,程序会逐一增加后续bit继续查表,直到查到为止。经此而已。
建议你仔细研究研究霍夫曼编码相关论文。
给后来人一些提示:111000和111001根据霍夫曼编码原理查找,每个8*8数据块编码后的bit流
没有分隔标识,且长短不一。可以参考libjpeg开源库代码。
SOS之后就是图像数据,直到文件结束。图像块之间没有标记。
呵呵这个问题台专业了~我只知道一般GIF格式的文件在同质量等比效果中是最好的~~~
这个问题比较复杂,要讲明白jpeg的文件格式,光是知道数据流和jpeg的具体格式还差得很多呢
JPEG文件大体上可以分成以下两个部分:标记码(Tag)加压缩数据。先介绍标记码部分。
标记码部分给出了JPEG图象的所有信息(有点类似于BMP中的头信息,但要复杂的多),如图象的宽、高、Huffman表、量化表等等。标记码有很多,但绝大多数的JPEG文件只包含几种。标记码的结构为:
SOI
DQT
DRI
SOF0
DHT
SOS
…
EOI
其中,DHT(Define Huffman Table)的结构如下:
标记结构 字节数 意义
0XFF 1
0XC4 1
Lh 2 DHT标记码长度,不包括前两个字节0XFF,0XC4
(Tc,Th) 1
L1 1
L2 1
…
L16 1
V1 1
V2 1
…
Vt 1
Tc为高4位,Th为低4位。在基本系统中,Tc为0或1,为0时,指DC所用的Huffman表,为1时,指AC所用的Huffman表。Th表示Huffman表的编号,在基本系统中,其值为0或1。所以,在基本系统中,最多有4个Huffman表,如下所示:
Tc Th Huffman表编号(2×Tc+Th)
0 0
1 1
0 2
1 1 3
Ln表示每个n比特的Huffman码字的个数,n=1~16
不知道你是否明白