我正在尝试为学校做一种增量编码任务,我需要将相应像素之间的差异放入下一个像素,以便稍后对它们进行解码。不幸的是,如果PIL函数的差值为负,则putdata将以某种方式将值转换为0,这使我以后无法使用逆滤波器对其进行解码。我该怎么做才能使其成为可能?请注意,编码后的图像不必看起来不错,它只需要包含我解码所需的数据即可。
.db-journal
答案 0 :(得分:1)
为每个R
,G
,B
值使用模256。这意味着所有值最终都在[0-255]范围内,即一个字节,例如-1对应255。
然后,对于两个 R 值R0
和R1
,它们的差为:
Rdiff = (R0 - R1) % 256
稍后,您可以进行相反操作:
R0 = (R1 + Rdiff) % 256
只要所有输入也都在0-255范围内(在本例中为该范围),计算将是正确的。
这些是一些示例编码(Rdiff
)值,其逻辑如下:
R0=50, R1=20 --> Rdiff=30
R0=10, R1=50 --> Rdiff=216
R0=0, R1=5 --> Rdiff=251
R0=33, R1=200 --> Rdiff=89