我有一個像素的RGB元組,我們稱之爲P.需要幫助瞭解Alpha通道
(255,0,0)是Alpha通道爲1.0時P的顏色。
當alpha通道爲0.8時,P的顏色變爲(255,51,51)。
如何獲得影響P顏色的像素顏色?
我有一個像素的RGB元組,我們稱之爲P.需要幫助瞭解Alpha通道
(255,0,0)是Alpha通道爲1.0時P的顏色。
當alpha通道爲0.8時,P的顏色變爲(255,51,51)。
如何獲得影響P顏色的像素顏色?
讓我們從頭開始。帶alpha的像素只有在與其他東西混合時纔有意義。如果你有阿爾法上層U和下部層L是完全不透明,該方程爲:
P = (alpha * U) + ((1.0 - alpha) * L)
重新整理公式,則獲得:
L = (P - (alpha * U))/(1.0 - alpha)
顯然等式不當alpha爲1.0時是有意義的,因爲你會被零除。
在堵你的數字顯示,R = 255,G = 255和B = 255用於像素L.
這幾乎是普遍的是圖像中的最下層將是全白(255,255,255)由慣例。
只是看你提供的數字:
(1.0-0.8)*255 ~= 50.9 = 51
其中:
這適合你的例子的B和G頻道。
所以,在一般情況下,它似乎是通道值(RGB)和背景顏色(在你的情況下,白色 - 255)之間的簡單加權平均值。阿爾法被用作重量。
下面是一些Python代碼:
MIN_ALPHA=0.0
MAX_ALPHA=1.0
MIN_CH=0
MAX_CH=255
BG_VAL=255
def apply_alpha(old, alpha, bg=255):
assert alpha >= MIN_ALPHA
assert alpha <= MAX_ALPHA
assert old >= MIN_CH
assert old <= MAX_CH
new = old*alpha + (MAX_ALPHA - alpha)*bg
return new
if __name__ == '__main__':
import sys
old, alpha = map(float, sys.argv[1:])
print apply_alpha(old, alpha)
和一些輸出:
[email protected]:~/Desktop/stackoverflow$ python alpha.py 255 0.8
255.0
[email protected]:~/Desktop/stackoverflow$ python alpha.py 0 0.8
51.0
試試這個其他的例子(尤其是非白色背景) - 它可能是這麼簡單。如果沒有,用新的例子編輯你的答案,我會再看一次。
+1瞭解實際問題是 – misha 2011-01-30 04:42:09