关于JPEG文件中HUFFMAN码表的生成问题

windtalkers 2003-10-15 05:38:40
HUFFMAN表应该是统计图片中出现的灰度值(假定为灰度图象)的概率,然后对这些值编码而成。JPEG标准中给的流程也是针对这些值而言,但实际编码却是对DCT+量化后的系数来做,而且还不是直接编码,而是对中间格式来得,这怎么解释?

另外即使是对中间格式我也始终想不通对应的HUFFMAN码字具体是怎么生成的。比如标准中推荐的AC系数亮度

HUFFMAN表

Run/Size Code length Code word
0/0 (EOB) 14 1010
0/1 12 00
0/2 12 01
0/3 13 100
0/4 14 1011
0/5 15 11010
0/6 17 1111000
0/7 18 11111000
0/8 10 1111110110
0/9 16 1111111110000010
0/A 16 1111111110000011
1/1 14 1100
1/2 15 11011
1/3 17 1111001
1/4 19 111110110
........

和零的游程长度有什么关系?

比如一副具体图象,经过DCT+量化+游程编码并转换到中间格式{(1,2) (5)} {(4,8) (-4)} ....
怎么根据这副图象的信息而不是查表得到(1,2),(4,8)的HUFFMAN 码字???

...全文
163 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
njhao 2003-10-27
  • 打赏
  • 举报
回复
huffman表是固定的吧,AC和DC表不是Huffman表,
http://www.csdn.net/develop/Read_Article.asp?Id=1940
看看吧,中文的
cppsong 2003-10-22
  • 打赏
  • 举报
回复
对灰度做DCT转换和量化是和彩色同样的呀,更加简单了。并且只需要两个HUFFMAN表。
cppsong 2003-10-22
  • 打赏
  • 举报
回复
对的,游程压缩得到的只是作为中间值,这个中间还要被进一步进行Huffman编码。
但是上面大哥所说的意思是否是“HUFFMAN码表”是由AC数据生成的?
我认为是这样的:如(2.3)放的是之前0的个数和下一个辐值所需要的位数,那么用(2.3)查HUFFMAN表就可以得到它的编码,此码再连接上辐值的编码就是AC的完整编码了。
也就是说采用的是分组HUFFMAN编码。
Analyst 2003-10-22
  • 打赏
  • 举报
回复
要是先对灰度做HUFFMAN编码了,后面还怎么做DCT?还怎么量化?
AC系数编码是采用游程+HUFFMAN编码,要自己生成HUFFMAN码表,当然是在得到经过游程压缩后的AC系数数据后,对其进行统计生成HUFFMAN码表。
cppsong 2003-10-22
  • 打赏
  • 举报
回复
请问楼主能不能把完整的AC表给我,谢谢
4646520@163.com
另外我的看法是,通过HUFFMAN编码在解码时可以通过查表而取得一个HUFFMAN码,再进行HUFFMAN解码,得到前面0数量和组号,然后取得N位(组号)计算AC值。
red-fly 2003-10-21
  • 打赏
  • 举报
回复
我也想知道,关注


我还有问题,不知道楼主能不能讲一讲mpeg/jpeg编解码技术一书中第43页的APP0和APPn的东西,我不懂,我用16进制编辑器打开一个jpeg文件,却发现APP0的长度根本不够19(书上的加起来是19字节)而只有16字节,why? 还有,APPn的长度如何确定? APP0的第一个字节(APP0的长度)有什么用处(因为下边的各个属性的长度都是固定的了)?

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧