Targa 图像——损坏的红色和绿色通道
Targa image – damaged red and green channels
我遇到了 16 位 targa 文件的问题。我正在打开图像,它的颜色很奇怪。这是红色和绿色通道的问题——蓝色很好。
如何修复 targa 图像,使其看起来像示例? (第一张是原图,第二张是必看的。)
编辑:这个答案给出的结果 看起来 是正确的,但不会与原始答案完全相同。奇怪的事情正在发生。
您可以通过对红色和绿色通道执行一个使值加倍的函数来使原始图像中的损坏图像受到环绕:
F(r) = (r*2) % 255
F(g) = (g*2) % 255
这些函数不可逆,因为不止一个输入值可以映射到相同的输出值。特别是
F^-1(r) = {r / 2, r / 2 + 128}
但如果我们愿意容忍一些错误,我们仍然可以尝试恢复图像。我们将尝试猜测红色(或绿色)是否应该为高;如果是,请加 128。
两条信息可以指导我们的猜测:
- 蓝色通道高吗?除非图像包含强烈的蓝色像素,否则这暗示红色和绿色通道也应该很高。
- 是否有相邻像素的红色(或绿色)通道很高,而该像素的红色通道很低(比如小于64)?这可能表明两个像素都比较亮,但是这个像素的红色通道被包裹了。
我仅使用蓝色通道信息在 r / 2 和 r / 2 + 128 之间做出决定,恢复了一些非常接近原始图像的东西,尽管使用相邻像素的红色和绿色通道可能会更好.
附带说明一下,如果最初(比如)有 6 位红色信息,但只有 最少 重要的 5 位是写入文件时保留。查看这些图像的获取方式以确保您不会以某种方式切断 R 和 G 通道的最重要位会很有用。
我遇到了 16 位 targa 文件的问题。我正在打开图像,它的颜色很奇怪。这是红色和绿色通道的问题——蓝色很好。
如何修复 targa 图像,使其看起来像示例? (第一张是原图,第二张是必看的。)
编辑:这个答案给出的结果 看起来 是正确的,但不会与原始答案完全相同。奇怪的事情正在发生。
您可以通过对红色和绿色通道执行一个使值加倍的函数来使原始图像中的损坏图像受到环绕:
F(r) = (r*2) % 255
F(g) = (g*2) % 255
这些函数不可逆,因为不止一个输入值可以映射到相同的输出值。特别是
F^-1(r) = {r / 2, r / 2 + 128}
但如果我们愿意容忍一些错误,我们仍然可以尝试恢复图像。我们将尝试猜测红色(或绿色)是否应该为高;如果是,请加 128。
两条信息可以指导我们的猜测:
- 蓝色通道高吗?除非图像包含强烈的蓝色像素,否则这暗示红色和绿色通道也应该很高。
- 是否有相邻像素的红色(或绿色)通道很高,而该像素的红色通道很低(比如小于64)?这可能表明两个像素都比较亮,但是这个像素的红色通道被包裹了。
我仅使用蓝色通道信息在 r / 2 和 r / 2 + 128 之间做出决定,恢复了一些非常接近原始图像的东西,尽管使用相邻像素的红色和绿色通道可能会更好.
附带说明一下,如果最初(比如)有 6 位红色信息,但只有 最少 重要的 5 位是写入文件时保留。查看这些图像的获取方式以确保您不会以某种方式切断 R 和 G 通道的最重要位会很有用。