如何在图像压缩中结合LZ77和霍夫曼编码?

时间:2018-01-23 19:58:56

标签: image compression png huffman-code deflate

我试图编写代码来压缩.png图像文件,但我在实施DEFLATE时遇到了麻烦。我知道如何编写LZ77和Huffman代码,但我不确定如何将这两者结合起来。我知道我应该有成对的距离,长度和文字作为LZ77的输出,但我不知道如何从他们那里创建霍夫曼的输入。我知道那里应该是两个霍夫曼树,一个用于长度和文字,另一个用于距离,但我不确定如何实现它,特别是在图像压缩中。有没有人有任何想法或一个例子?

1 个答案:

答案 0 :(得分:2)

您可以使用zlib,它提供经过充分测试,高效且免费使用的代码,以压缩为DEFLATE格式。

如果你真的想要实现自己的,也许是出于教学原因,那么你首先需要了解如何解码 DEFLATE流。一旦编写了自己的DEFLATE解码器,您就可以更好地编写DEFLATE 编码器

您需要多次阅读RFC 1951,手动解码示例DEFLATE流,并编写您自己的膨胀代码,在许多流上进行测试。您还可以查看puff.c以获得进一步的启发。它是一种明确的DEFLATE格式定义,因为它是一个易于理解的简单,有效的充气机。 (或者至少比zlib中的膨胀代码更容易,这是为了最大效率而编写的。)