背景:
阅读新闻

什么是Alpha Blending

[日期:2008-10-07] 来源:  作者: [字体: ]
  一张数字影像(Digital Image)是由许多的像素(Pixel)所构成,像素就是数字影像中最基本的单位。

而任一像素会在屏幕上表示某一个颜色,这颜色是由红(R),绿(G),蓝(B)以不同比例混合产生的。一般数字影像的R, G, B是各占 1 Byte,所以一个像素会有3个Byte来储存。

  举个例子,若某像素的 R= 255, G = 0, B = 0, 那么该像素会是纯红色;若 R= 125, G = 0, B = 125, 那么会是偏暗的紫色;若R= 255, G= 255, B = 255, 那么就会是纯白色。

这种1个像素有3 Byte的这种影像,称为24 bit影像。

 

  另外有一种影像是1个像素有4 Byte,称为32 bit影像。那么多一个byte是要存放什么信息呢?这个byte称为Alpha,它代表不透明度(Opacity),越高越不透明。如此,这种RGBA格式的影像,就可以做半透明重迭影像的效果,我们称这种技术为Alpha Blending。

 

  假设我们有两张影像要进行Alpha Blending。其中一张称为目的影像(Destination) Id,它将是经过Alpha Blending后所产生的重迭影像;另一张称为来源影像(Source) Is,它将会迭在目的影像之上。在进行颜色的运算前,我们都会将RGBA各成份的值正规化(Normalize),也就是将0~255缩小至0~1之间。

 

 

令一函数 Ci(I) 代表从影像 I 取出第i个像素的 RGBA值,

其中 I 具有N个像素,0 ≦ i ≦ N- 1。

 

再令一函数 αi(I) 代表从影像 I 取出第i个像素的 Alpha值,

其中 I 具有N个像素,0 ≦ i ≦ N- 1。

 

则我们可以将整个Aplha Blending的动作以一个数学式来表示:

 

Ci(Id) =  Ci(Is) αi(Is) + Ci(Id) (1 - αi(Is)) 

,其中 Is的共有N个像素,0 ≦ i ≦ N-1。

 

 

若我们有M (I1~IM)张影像依序进行Alpha Blending,则可以下列递归式表示:

 

Ci(IM)’ =  Ci(IM) αi(IM) + Ci(IM-1)’ (1 - αi(IM)) 

 

其中,Ci(IM)’ 代表经过 M 次Alpha blending后的影像, IM 共有N个像素,0 ≦ i ≦ N-1。

 

展开此递归式:

 

  M-1   k-1   

Ci(I) =   Σ Ci(IM-k) αi(IM-k)  Π (1 - αi(IM-s))  

  k= 0  s = 0  

 

 

若我们将αi(I) 令为一种自然函数 :

 

αi(I) = 1 - e^(Ti(I)),其中 Ti(I) 为影像 I 中第 i 个像素的衰减度。

 

则:

 

k-1   k-1     

Π (1 - αi(IM-s))  =  Π e^(Ti(IM-s))   

s = 0   s = 0     

  k-1   

= e^( Σ Ti(IM-s) ) 

   s= 0   

  k-1   

= e^( ∫ Ti(x)dx ) 

    0   

 

 

到此,很明显地,整个Alpha Blending就是一种积分:

 

  M-1   k-1   

Ci =   ∫ Ci(λ) αi(λ) e^( ∫ Ti(x)dx ) dλ 

   0     0    
收藏 推荐 打印 | 录入:jop | 阅读:
相关新闻      
本文评论   [发表评论]   全部评论 (0)
热门评论