我正在用java编写一个程序,其中从用户那里获取关于给定图像需要压缩多少次的信息,基于它应该压缩图像。
最初我们将图像转换为像素矩阵,找到出现在该矩阵中的每个像素的概率,并应用霍夫曼代码以0的n 1的形式获得代码。
现在,如果我们第二次尝试压缩它,我们将只有2个概率,即0 n 1.Hence,我们现在无法应用霍夫曼代码。
那么在这种情况下可以做些什么呢?
答案 0 :(得分:2)
您可以在两个符号上应用算术代码。例如,如果有比零更多的零,那么算术代码将通过编码每个小于一位的零和具有多于一位的零来减少总位数。 (这是通过将输出位视为二进制分数,并且每个新输入位减小二进制分数的范围来完成的。)
然而,在使用霍夫曼代码进行压缩之后,您会发现,您将使用非常接近零的相同数量的零。它不会以这种方式压缩。或者无论如何。