使用Java中的霍夫曼编码压缩图像

时间:2013-12-02 03:48:05

标签: java image image-compression huffman-code

所以,我一直对“IMAGES”的霍夫曼编码压缩感到不满。

我知道霍夫曼的工作并且能够在文本上实现,但是,我不明白如何进一步处理图像。

我有一个灰度图像,我将其转换为二进制字符串,即1和0现在我可以对字符串执行霍夫曼编码,但是如何压缩图像?

有人可以帮我一步吗?

假设将图像转换为bytearray然后转换为二进制字符串并执行霍夫曼编码然后转换回字节并转换为图像,但我不知道如何继续进行。

在整个互联网上,我可以在文本上找到霍夫曼编码,他们正在制作霍夫曼树,但我不想要树,我想压缩图像。 :(

任何与算法相关的帮助都将受到高度赞赏。

谢谢(如果您需要更多信息,请告诉我)

1 个答案:

答案 0 :(得分:0)

每像素多少位?我猜八。只需将每个像素放入一个字节,然后使用霍夫曼编码压缩,因为文本也只是一系列字节。

这不会给出非常好的压缩,除非有大块相同的像素。改进的下一步是进行差异编码。用它与最后一个像素的差值替换每个像素(第一个像素除外)。现在,如果图像相对平滑,你应该得到更好的压缩。

然后,您可以尝试改进预测变量。请参阅PNG filters,其中上述过滤器名为“sub”。