YUV Alpha Blend 推导过程

本文详细介绍了YUV与BGR格式的转换关系,并重点推导了YUV颜色空间下Alpha Blend的过程,以Y通道为例进行了深入探讨,证明在YUV空间进行Alpha Blend操作与在RGB空间得到的效果一致。

 

前言

本文介绍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空间下效果相一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值