霍夫曼压缩[关闭]

问题描述 投票:0回答:2

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

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

algorithm compression huffman-code lzw
2个回答
0
投票

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

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

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


3
投票

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

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

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

一旦完成那种建模,就可以应用类似的编码来将得到的符号编码成最小尺寸的比特流。

压缩包括建模,其高度依赖于要压缩的数据类型,以及在有损压缩的情况下数据的消费者,接着是编码,其将得到的信息压缩成压缩比特流。

© www.soinside.com 2019 - 2024. All rights reserved.