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