Alpha-Blending,是按照“Alpha”混合向量的值来混合源像素和目标像素的一种图像处理技术。
Alpha混合向量一般表示了图片的透明度。
1 RGB Alpha Blending
两个像素的α混合步骤如下:
首先把源像素和目标像素的RGB三个颜色分量分离。
其次把源像素的三个颜色分量分别乘上Alpha的值,并把目标像素的三个颜色分量分别乘上Alpha的反值。
然后把结果按对应颜色分量相加,再对求得的每个分量结果除以Alpha的最大值。
最后把三个颜色分量重新合成为一个像素输出。Alpha-Blending
混合公式如下:
R3 = R1*a + R2*(1-a);
G3 = G1*a + G2*(1-a);
B3 = B1*a + B2*(1-a);
2 YUV Alpha Blending
对于YUV数据,可以根据YUV与RGB的转换公式推导出YUV的Alpha Blending公式与RGB相同,推导过程如下:
YUV转换成RGB的公式(YUV -> RGB)
C = Y - 16
D = U - 128
E = V - 128
R = clip((298*C + 409*E + 128) >> 8)
G = clip((298*C - 100*D - 208*E + 128) >> 8)
B = clip((298*C + 516*D + 128) >> 8)
RGB转换成YUV的公式(RGB->YUV)
Y = (( 66*R + 129*G + 25*B + 128) >> 8) + 16
U = ((-38*R - 74*G + 112*B + 128) >> 8) + 128
V = ((112*R - 94*G - 18*B + 128) >> 8) + 128
Y分量Alpha Blending过程推导(U,V分量可以同理推出)Alpha-Blending
# 公式转换
Y = ((66*R + 129*G + 25*B + 128)>>8) + 16
(Y1-16)<<8 = 66*R1 + 129*G1 + 25*B1 + 128
(Y2-16)<<8 = 66*R2 + 129*G2 + 25*B2 + 128
(Y3-16)<<8 = 66*R3 + 129*G3 + 25*B3 + 128
# 公式展开
((Y1-16)<<8)*a + ((Y2-16)<<8)*(1-a)
=(66*R1 + 129*G1 + 25*B1 + 128)*a + (66*R2 + 129*G2 + 25*B2 + 128)*(1-a)
=66*(R1*a + R2*(1-a)) + 129*(G1*a + G2*(1-a)) + 25*(B1*a + B2*(1-a)) +128
=66*R3 + 129*R3 + 25*R3 +128
= (Y3-16)<<8
# 公式整理
(Y3-16)<<8 = ((Y1-16)<<8)*a + ((Y2-16)<<8)*(1-a)
(Y3-16) = (Y1-16)*a + (Y2-16)*(1-a)
Y3 = (Y1-16)*a + (Y2-16)*(1-a) + 16
= Y1*a - 16*a + Y2*(1-a) - 16 + 16*a +16
= Y1*a + Y2*(1-a)
整个推导过程比较简单,主要就是公式代入,展开,合并同类项。