JPEG编码技术

8

我听说Jpeg使用了哈夫曼编码。那么什么是哈夫曼编码?


3
那是哈夫曼编码。如果你在谷歌上搜索它,第一个答案会带你到维基百科的页面 - darioo
2个回答

9
霍夫曼编码是一种方法,它将符号(例如字节、DCT系数等)按照统计概率分配可变长度代码并进行编码。常用符号将被编码为仅占用几个比特的代码,而很少使用的符号则需要用更多的比特来表示。
JPEG文件包含最多4个霍夫曼表,这些表定义了这些可变长度代码(介于1到16位之间)与代码值(即8位字节)之间的映射关系。通常创建这些表涉及计算图像中每个符号(DCT码字)出现的频率,并相应地分配比特串。但是,大多数JPEG编码器只使用JPEG标准中提供的霍夫曼表。一些编码器允许优化这些表,这意味着创建一个最优二叉树,从而生成更有效的霍夫曼表。
请参阅http://www.cs.duke.edu/csed/poop/huff/info/以获取更深入的解释。

1
非常感谢,还有一个问题,您提到的DCT系数是什么? - lital maatuk

9
只是为了完善david99world的回答:Huffman编码只是JPEG压缩中的最后一步。重要的压缩来自应用于DCT的量化矩阵。这是什么?DCT变换只是一种通过频率显示图像信息的方法。而不是像这样具有像素值的矩阵:
您将获得一个包含DCT系数的矩阵,显示频率信息,并将大部分信息集中在左上角:
现在,您拥有了DCT系数,接下来是真正的压缩步骤,即通过基于人眼视觉的量化矩阵将所有值除以该矩阵。该矩阵将使那些包含对人眼不相关信息的系数变成零,并使重要系数保持几乎相同。
为什么这一步对压缩很重要?因为现在你有很多零,Huffman编码将把大量的零组合成小的代码字,因此你可以节省存储空间。
如果您多次应用Q矩阵,则将进行更多压缩(更多零),但也会降低图像质量。
您可以尝试在Matlab中编写整个算法,这样您就会更好地理解它。请注意,如果多次应用Q矩阵,则会获得更多的压缩(更多零),但图像质量也会降低。
我希望这使您更清楚。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接