预乘 Alpha 通道 Premultiplied Alpha是一种在计算机图形学中常用的技术,用于处理具有透明度的图像或视频内容。它通过将图像的颜色通道(RGB)与 Alpha 通道(透明度通道)相乘,在合成过程中简化计算,提高效率。这种技术在视频编辑、动画制作、游戏开发和实时渲染中广泛应用。
◆ ◆ ◆
颜色通道和 Alpha 通道
Alpha 通道与红、绿、蓝(RGB)颜色通道一起工作,定义了图像中每个像素的透明度和颜色。这样的图像又称为“RGBA”图像。
1、颜色通道
数字图像通常包括红色(R)、绿色(G)、蓝色(B)三个通道,每个通道表示该像素中对应颜色的强度值,范围通常是 0 到 255。
2、Alpha 通道
Alpha 通道用于表示像素的透明度,0 表示完全透明,255 表示完全不透明。介于 0 到 255 之间的值表示半透明状态,即部分透明。
◆ ◆ ◆
预乘计算
“预乘” Premultiplied是指将图像的 RGB 颜色通道与 Alpha 通道相乘,并将乘积存储在颜色通道中。
在进行预乘处理时,需要指定一个假定的背景颜色,通常为黑色 Black、白色 White或其他特定颜色 Color。
预乘后的颜色通道的值应通过以下公式计算:
其中,R、G、B 是原始的颜色通道值,Alpha 是该像素的透明度值,再加上假定背景 Background颜色值(如果假定为黑色,则此项为 0),最终得到预乘后颜色通道的值 R'、G'、B'。
举例说明:
假设我们有一个像素,其颜色通道和 Alpha 通道的值如下:
红色通道 (R) = 200
绿色通道 (G) = 150
蓝色通道 (B) = 100
Alpha 通道 = 128(表示该像素半透明)
1、未预乘
未预乘,又称“直接 Alpha” Straight Alpha。此时,颜色通道保留其原始值,即 R=200, G=150, B=100。
因此在合成时,需要额外考虑 Alpha 值来处理边缘。
2、预乘计算
对于上述例子,假设的背景颜色是白色(R=255, G=255, B=255)。
预乘后,这个像素的颜色通道变为 R' = 178, G' = 203, B' = 228。这些值已经包含了透明度信息和白色背景的混合结果,因此在合成时,这些值直接就是最终结果。
◆ ◆ ◆
合成时的差异
1、预乘图像
在预乘后的图像中,颜色通道已经在存储时预先与 Alpha 通道相乘,并考虑了假定的背景颜色。因此,合成时不需要额外的计算,直接使用预乘后的颜色值即可。
这种方法简化了合成过程,提高了效率。在新背景与假定背景颜色相同时的合成效率高,但在其它新的背景颜色下可能会引发伪影问题。
要注意的是,在合成时,预乘图像的透明度信息仍然由其 Alpha 通道来决定,只是无需再计算合成后的效果。
2、未预乘的图像
未预乘的图像,颜色通道与 Alpha 通道是独立的。在合成时,必须对每个像素进行实时计算,将颜色通道与 Alpha 通道相乘,再与新的背景颜色进行混合。
这个过程更加灵活,但需要更多的计算资源。
“点赞有美意,赞赏是鼓励”