这里我有二进制图像,我需要使用运行长度编码RLE对其进行压缩。我使用常规 RLE 算法,使用最大计数为 16。
它不是减小文件大小,而是增加它。例如 5*5 矩阵,10 个值重复计数为 1,即使文件变大。
如何避免这种故障?有没有更好的方法可以将 RLE 部分应用于矩阵?
这里我有二进制图像,我需要使用运行长度编码RLE对其进行压缩。我使用常规 RLE 算法,使用最大计数为 16。
它不是减小文件大小,而是增加它。例如 5*5 矩阵,10 个值重复计数为 1,即使文件变大。
如何避免这种故障?有没有更好的方法可以将 RLE 部分应用于矩阵?
如果仅供您自己使用,您可以创建自定义图像文件格式,并在标题中标记是否使用 RLE,以及 X 和 Y 的坐标范围以及可能使用的位平面。但是,如果您想生成遵循某些使用 RLE 的已定义图像文件格式的图像文件(.pcx
我想到了),则必须遵循文件格式规范。如果我没记错的话,.pcx
没有任何选项可以部分禁用 RLE。
如果您不需要使用 RLE 并且您只是在寻找一种易于实现的压缩方法,那么在使用任何压缩之前,我建议您首先检查您的 5x5 二进制矩阵文件需要多少字节。如果文件大小为 25 字节或更多,那么您将使用每个元素至少一个字节(8 位)来保存它(或者您有很多不是矩阵内容的数据)。如果不需要存储大小,5x5 二进制矩阵需要 25 位,即 4 字节和 1 位,因此实际上是 5 字节。我很确定没有通常对 5 字节大小的文件有用的压缩方法。如果你有不同大小的矩阵,你可以使用例如。
例如 100x100 二进制矩阵需要 10000 位,即 1250 字节。为 16 位大小的字段添加 2 x 2 = 4 个字节,或为 32 位大小的字段添加 2 x 4 = 8 个字节。在此之后,您可以计划最好的压缩方法。