霍夫曼压缩

时间:2018-02-28 21:29:00

标签: algorithm compression huffman-code lzw

我目前正在研究不同的压缩算法,例如huffman,自适应霍夫曼和Lempel Ziv算法,但我真的不明白它应该如何在随机文件上运行。

所以我知道他们在文本文件上工作,但这是他们唯一的工作吗? 我可以使用Huffman来压缩音频文件或图像吗?如果是这样,我如何知道我将用于算法的“块”的大小?

2 个答案:

答案 0 :(得分:3)

霍夫曼和自适应霍夫曼是编码的例子,它利用符号概率的统计偏差将它们编码成尽可能少的比特。 (还有其他类型的编码,例如算术,范围和非对称数字系统。)

Lempel-Ziv是建模的一个例子,它采用被压缩的特定数据类型中的冗余,在本例中为文本,并将其转换为适合的一系列符号编码。 Lempel-Ziv的工作假设是不同长度的字符串将在文本中重复出现,这就是自然语言的情况。

这种假设对于音频或图像文件根本不起作用,其中冗余采用非常不同的形式。作为建模的一部分,对数据执行变换以按频率分离组件。对于人类消耗的音频和图像数据而言,有损压缩也是可接受的,其中数据可以根据其在频域中的位置被抽取或丢弃,以及使用其他方式来利用心理声学或心理 - 视觉有效冗余。

完成那种建模后,可以应用类似的编码将结果符号编码为最小尺寸的比特流。

压缩由建模组成,建模高度依赖于要压缩的数据类型,以及在有损压缩的情况下数据的使用者,其次是编码< / em>,将结果信息压缩为压缩比特流。

答案 1 :(得分:0)

是的,你在那里提到的算法在二进制文件上都能很好地工作 - 它只是为了方便大多数论文在他们的例子中使用字符数据。

对于块大小,虽然这不是必需的,但现代通用压缩算法总是将输入视为字节流(8位值)。

请注意,尽管您原则上可以尝试使用霍夫曼压缩来压缩音频文件,但结果可能不合适,因为霍夫曼依赖某些符号比其他符号更频繁。专用压缩算法,如MPEGx,通常用于音频。