使用教科书的霍夫曼编码算法,哪些文件具有良好的压缩率?



我现在正在测试霍夫曼编码,我想知道哪种类型的文件(如.txt、.jpg、.mp3等)在进行基于霍夫曼的压缩时会经历良好的压缩。我在 java 中实现了 Huffman 编码,我发现.txt文件(普通英文文本的文件)的大小减少了大约 40%,.jpg、.mp3 和 .mp4 文件的大小减少了近 0% - 1%(当然我还没有在 1 MB 以上的大文件上测试过它,因为我的程序超级慢)。我知道霍夫曼编码最适合那些具有更频繁出现的符号的文件,但是我不知道视频,音频或图像文件中有什么样的符号,因此提出了这个问题。从那时起,我就设计了这个程序(我在学校为我的项目做了这个程序,我不会否认它,我自己做了,我只要求为我的研究提供一些指导),我想知道它在哪里会工作得很好。

谢谢。

注意:我最初仅为.txt文件创建了这个项目,令我惊讶的是,它也适用于所有其他类型的文件,因此我想对其进行测试,因此我不得不问这个问题。我发现对于图像文件,您不对符号本身进行编码,而是对一些 RGB 值进行编码?如果我错了,请纠正我。

这完全与文件中的冗余量有关。

在任何文件中,每个字节

占用 8 位,每个字节允许 256 个不同的符号。 在文本文件中,实际使用的符号数量相对较少,并且符号的分布并不平坦(e s 多于 q s)。 因此,信息"密度"更像是每字节5位。

JPEG,MP3和MP4已经压缩并且几乎没有冗余。 使用所有 256 个符号,频率大致相同,因此信息"密度"非常接近每字节 8 位。 您无法进一步压缩它。

最新更新