我们知道,在PNG,BMP等中,存储的像素值不在线性RGB空间中。但是我没有找到有关Alpha通道的任何文件。 alpha通道是否以线性空间存储在图像文件中?

#1 楼


我们知道,在PNG,BMP等中,存储的像素值不在线性RGB空间中。


这不一定是正确的。您可以将所需的任何色彩空间存储到图像中,甚至不必是颜色(例如法线贴图)。

alpha通道通常是线性的。 alpha通道不会显示,但通常是用于透明度(或其他任何颜色)的非彩色术语。因为它们不需要在监视器上显示,所以没有理由将其存储在伽玛空间中。如果这样做,您将不必要地在alpha值的低端失去精度。法线贴图遵循类似的推理路线,如Julien Guertault很好地解释。

#2 楼

图像文件格式本身不考虑伽玛值,而是存储未经修改的像素值,因为创作程序(例如Photoshop)决定存储这些值,因此RGB和alpha通道与图像文件格式没有区别(除非存在潜在的有损压缩策略,但这是另一个主题。)但是,当您在Photoshop中创作图像时,它们会在包括Alpha通道的sRGB空间中显示在屏幕上,因此,如果您创作Alpha通道时要依靠像素的感知亮度表示透明度,那么可以说alpha也存储在gamma空间中。但是,如果您通过在Photoshop中使用图层透明性来创作Alpha,则该Alpha会线性存储(例如,将50%透明层存储为alpha = 128)。

因此,最终取决于您如何创作数据存储在哪个空间以及如何解释它。同样要考虑的是,值的非线性分布是否可以为您带来任何精度优势。颜色值存储在sRGB中,因为人类视觉系统对光亮度做出对数响应,因此在黑暗中拥有比黑暗中更多的细节以减少可感知的条带是有意义的,但是您可以问这样的分布是否有益于存储法线贴图或粗糙度值在纹理中。

#3 楼

保持alpha线性使它不会偏向源和目标颜色。不应对其进行伽马校正,因为它不应该经过sRGB编码。
当然,特殊的应用程序可能会忽略这一点,例如,为了更好地控制像素的混合操作期间感知到的亮度变化,明亮的源颜色而不是深色的目标颜色(假设alpha存储在范围为0-255的字节中-这是目前为数据压缩目的通常存储sRGB的方式-您只能大幅度地更改alpha)。