前言
本文介绍YUV下Alpha Blend的公式推理过程,证明在YUV下实现Alpha Blend与在RGB空间下无效果差异。
一、BGR与YUV BT601格式的转换关系
YUV--->BGR
B = 1.164(Y - 16) + 2.018(U - 128)
G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
R = 1.164(Y - 16) + 1.596(V - 128)
BGR--->YUV
Y = 0.257 * R + 0.504 * G + 0.098 * B + 16
U = - 0.148 * R - 0.291 * G + 0.439 * B + 128
V = 0.439 * R - 0.368 * G - 0.071 * B + 128
二、推导过程
以Y通道为例
假设做Blend的两个像素颜色BGR值分别为(B1,G1,R1)与(B2,G2,R2),对应的YUV值为(Y1,U1,V1)与(Y2,U2,V2),Alpha Blend因子为a,Blend结果为(B,G,R),(Y,U,V)则:
// BGR通道下Alpha Blend结果
B = B1 * a + B2 * (1 - a)
G = G1 * a + G2 * (1 - a)
R = R1 * a + R2 * (1 - a)
// 利用BGR下Blend结果进行推导
Y = 0.257 * R + 0.504 * G + 0.098 * B + 16
= 0.257 * (R1 * a + R2 * (1 - a)) + 0.504 * (G1 * a + G2 * (1 - a)) + 0.098 * (B1 * a + B2 * (1 - a)) + 16
= (0.257 * R1 * a + 0.504 * G1 * a + 0.098 * B1 * a) + (0.257 * R2 * (1 - a) + 0.504 * G2 * (1 - a) + 0.098 * B2 * (1 - a)) + 16
= (0.257 * R1 * a + 0.504 * G1 * a + 0.098 * B1 * a + 16 * a) + (0.257 * R2 * (1 - a) + 0.504 * G2 * (1 - a) + 0.098 * B2 * (1 - a) + 16 * (1 - a)) + 16 - 16 * a - 16 * (1 - a)
= (0.257 * R1 + 0.504 * G1 + 0.098 * B1 + 16) * a + (0.257 * R2 + 0.504 * G2 + 0.098 * B2 + 16) * (1 - a) + 16 - 16 * a - 16 * (1 - a)
= Y1 * a + Y2 * (1 -a) + (16 - 16 * a - 16 - 16 * a)
= Y1 * a + Y2 * (1 -a)
U、V同理可得:
U = U1 * a + U2 * (1 - a)
V = V1 * a + V2 * (1 - a)
总结
本文主要验证了YUV下进行Alpha Blend的可行性,从公式原理上证明了YUV下进行Alpha Blend的效果与在BGR空间下效果相一致。
本文详细介绍了YUV与BGR格式的转换关系,并重点推导了YUV颜色空间下Alpha Blend的过程,以Y通道为例进行了深入探讨,证明在YUV空间进行Alpha Blend操作与在RGB空间得到的效果一致。

4810

被折叠的 条评论
为什么被折叠?



