所以我目前正在研究游程编码,我了解这个概念是如何工作的,我可以将它直接应用于图像等。例如,我正在看这个问题:
表示该图像的数据必须使用行程编码 (RLE) 进行压缩。
前 3 位用于颜色,接下来的 4 位用于像素的游程长度。
编码从左上角像素开始,在行之间连续。
我被要求并且可以使用 RLE 成功完成将前两行像素转换为二进制数据。然后我被要求构建一个表达式来显示通过使用 RLE 算法压缩具有该分辨率的图像可以节省的最大位数。他们给出的答案是:(10 x 9 x 7) - (10 x 9 / 15 x 7),我不明白。
现在我尝试在网上查找如何回答这个问题,但给出的每个示例都只是计算压缩图像中的位数并从未压缩图像中的位数中减去它。 现在,在这种情况下,未压缩图像的分辨率为 (10 x 9 x 3)。 10 是长度,9 是高度,3 是位深度。那么等式的第一部分为什么是(10 x 9 x 7)呢?这是压缩图像的分辨率,其中每个连续像素都是不同的颜色(即 RLE 的最坏情况),不是吗?
大概我们想要与原始未压缩图像的差异,即使不想要,这种分辨率的图像的最佳情况(就位节省而言)难道不是 RLE 的所有相同颜色像素的 10x9 矩形吗?
此外,更一般地说,我不明白 15 来自哪里。 10 来自矩形的长度,9 是矩形的高度,7 是游程长度+颜色。我看不出 15 甚至可以参与其中,这可能会让问题更清楚一些。
由于压缩后的图像分辨率相同,像素数也相同;
10 * 9
。
但是这个数字最多可以除以 15(因为使用 4 位 RLE,您最多可以表示一行中的 15 个(
1111
是 15
)像素)
这给你最大。
(10 * 9) / 15 = 6
在最大压缩下代表整个图像的像素
每像素 7 位;所以这是
6 * 7 = 42
位(最大减少)