Alpha Blending小記

0 前言

Alpha-Blending,是按照“Alpha”混合向量的值來混合源像素和目標(biāo)像素的一種圖像處理技術(shù)。
Alpha混合向量一般表示了圖片的透明度。

1 RGB Alpha Blending

兩個像素的α混合步驟如下:

  1. 首先把源像素和目標(biāo)像素的RGB三個顏色分量分離。
  2. 其次把源像素的三個顏色分量分別乘上Alpha的值,并把目標(biāo)像素的三個顏色分量分別乘上Alpha的反值。
  3. 然后把結(jié)果按對應(yīng)顏色分量相加,再對求得的每個分量結(jié)果除以Alpha的最大值。
  4. 最后把三個顏色分量重新合成為一個像素輸出。

混合公式如下:

R3 = R1*a + R2*(1-a);
G3 = G1*a + G2*(1-a);
B3 = B1*a + B2*(1-a);

2 YUV Alpha Blending

對于YUV數(shù)據(jù),可以根據(jù)YUV與RGB的轉(zhuǎn)換公式推導(dǎo)出YUV的Alpha Blending公式與RGB相同,推導(dǎo)過程如下:

  1. YUV轉(zhuǎn)換成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)
  1. RGB轉(zhuǎn)換成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
  1. Y分量Alpha Blending過程推導(dǎo)(U,V分量可以同理推出)
# 公式轉(zhuǎn)換
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)

整個推導(dǎo)過程比較簡單,主要就是公式代入,展開,合并同類項(xiàng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容