我目前正在尝试进一步压缩一个非常简单的图像。图像使用2组颜色以及每个“像素”1个字符。每组颜色可以是16个选项中的1个。因此,我已将两种颜色组合成每像素1个字节,代表它们。我已经实现了MTF和BWT编码方法来协助RLE。我很肯定我可以从中获得更多的压缩但是我不确定使用什么算法。我已经尝试过huffman但是因为图像往往很小而且RLE由于缺少熵而压缩了大部分,因此霍夫曼一半的时间通过将解码表添加到文件来增加大小。请注意,这也将在较慢的系统上运行,因此任何非常繁重的算法都可能无法正常工作。
答案 0 :(得分:1)
首先,听起来你应该分别压缩背景和角色图像。其次,你说"颜色在像素之间不会经常变化"。是否有些颜色更接近"彼此相比?即,当颜色从颜色x变化时,是否更有可能变为剩余颜色的一小部分?如果是这样,您可以将颜色映射为与它们可能更改的颜色相邻,并在编码之前采用差异。然后,相同颜色的运行变为零运行,并更改为" next"颜色变成了。
一旦你有一个很好的表示作为一系列具有大量运行和字节值出现偏差概率的字节,例如大量的零和一个,然后应用zlib或gzip来利用明显的冗余和偏斜。