图像内的额外数据(PPM / PAM / PNM)

是否有可能以二进制PNM文件的像素存储额外数据,使其仍然可以作为图像读取(希望由任何解码器,但特别是ffmpeg)?

我有一个模拟,它将数据保存为当前PPM,我想在文件中记录每个像素三个以上的值,但仍然能够将其用作图像(显然只有前三个/四个值)实际上会影响图像).

在粒子中我认为PAM的TUPLTYPE应该允许我这样做,但是我不知道如何制作那些也是可读图像的东西.

最佳答案 在PAM文件中,有两个技巧可以在每个像素上共同获得5个额外字节.

第一招:

您可以尝试在Alpha通道中存储其他字节的信息,然后选择在解码器中忽略该信息.在PAM中启用alpha通道是通过将_APLHA添加到TUPLTYPE参数来完成的,因此在TUPLTYPE RGB中你有TUPLTYPE RGB_ALPHA.

第二招:

您可以将PAM(或PPM中的等效字段)中的MAXVAL设置为65535而不是255,这意味着每个像素将由三个16位值而不是三个8位值来描述.现在,对于这些16位值,8个最低有效位可用于存储信息,因为它们在典型的计算机屏幕上显示时不会影响图像的视觉属性.

第一个第二招:

这为RGB平面提供了额外的3 x 8 = 24位,在alpha通道中提供了16位.这意味着:5个字节.

点赞