RGBA alpha 透明度混合算法

RGBA alpha 透明度混合算法 .
分類: 圖像處理 Ps技術 2011-05-25 09:11 1112人閱讀 評論(0) 收藏 舉報
Alpha 透明度混合算法,網上收集整理,分紅如下三種:算法

1、 R1,G1,B1,Alpha1 爲前景顏色值,R2,G2,B2,Alpha2 爲背景顏色值,則圖像處理

前景色 R = R1 * Alpha1 + R2 * Alpha2 * (1-Alpha1) ;方法

G = G1 * Alpha1 + G2 * Alpha2 * (1-Alpha1) ;技術

B = B1 * Alpha1 + B2 * Alpha2 * (1-Alpha1) ;閱讀

背景色 Alpha = 1 - (1 - Alpha1) * ( 1 - Alpha2) ;顏色

R = R / Alpha ;

G = G / Alpha ;

B = B / Alpha ;

2、半透明算法:
混合算法目前在經常使用到的算法是AlphaBlend。
計算公式以下:假設一幅圖象是A,另外一幅透明的圖象是B,那麼透過B去看A,看上去的圖象C就是B和A的混合圖象,
設B圖象的透明度爲alpha(取值爲0-1,1爲徹底透明,0爲徹底不透明).
Alpha混合公式以下:
R(C)=(1-alpha)*R(B) + alpha*R(A)
G(C)=(1-alpha)*G(B) + alpha*G(A)
B(C)=(1-alpha)*B(B) + alpha*B(A)
R(x)、G(x)、B(x)分別指顏色x的RGB份量原色值。從上面的公式能夠知道,Alpha實際上是一個決定混合透明度的數值。
改變這個 alpha 值能夠獲得一個漸變的效果。

分離RGB色用"位與"、"移位"運算的方法;

透明的比例按2的N次冪來分級,這樣能夠快速運算。
若是是按32級
Alpha = 1/32
B圖的權重 = (32-n)/32,則A圖的權重= n/32,

能夠獲得這樣的算法:

R(C)= (32-n) * R(B)+ n* R(A);
再對R(C)右移5位(除以32)就能夠了

透明的處理:
假設指定B上的黑色透明色,則碰到B上的顏色爲黑色,則不顯示黑色,改成顯示A上這個位置的顏色。

 

3、簡易Alpha混合算法:首先,要能取得上層與下層顏色的 RGB三基色,

而後用r,g,b 爲最後取得的顏色值;r1,g1,b1是上層的顏色值;r2,g2,b2是下層顏色值

若Alpha=透明度,則

當Alpha=50%時,

r = r1/2 + r2/2;

g = g1/2 + g2/2;

b = b1/2 + b2/2;

當Alpha<50%時,

r = r1 - r1/ALPHA + r2/ALPHA;

g = g1 - g1/ALPHA + g2/ALPHA;

b = b1 - b1/ALPHA + b2/ALPHA;

當Alpha>50%時,

r = r1/ALPHA + r2 - r2/ALPHA;

g = g1/ALPHA + g2 - g2/ALPHA;

b = b1/ALPHA + b2 - b2/ALPHA;

相關文章
相關標籤/搜索