使用教科书上的霍夫曼编码算法,哪些文件的压缩率比较好?

Which files have good compression ratio using textbook's Huffman coding algorithm?

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

谢谢。

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

都是关于文件中的冗余量。

在任何文件中,每个字节占用 8 位,每个字节允许 256 个不同的符号。在文本文件中,实际使用的这些符号的数量相对较少,而且符号的分布也不平坦(eq 多)。因此信息 "density" 更像是每字节 5 位。

JPEG、MP3 和 MP4 已经过压缩,几乎没有冗余。使用了所有 256 个符号,频率大致相等,因此信息 "density" 非常接近每字节 8 位。你不能进一步压缩它。