RGB 轉換至 YCbCr (YUV) 的計算公式

原文鏈接:https://qiuye.iteye.com/blog/626462

對於每個取樣點的 R,G,B 值, 在轉換到 YUV colour space 時, 首先定義畫面的平均亮度值(Luminance), Y, 其計算公式爲:

Y = kr*R + kg*G + kb*B
kr, kg, kb 爲 weighting factors (加權因數), kr + kg + kb = 1 恆定.
(其中, ITU-R BT.601 定義 kb = 0.114 和 kr = 0.299)

然後定義 Cr, Cg, Cb 爲顏色強度 (colour intensity) 與這個 luminance 的差值:

Cb = B − Y
Cr = R − Y
Cg = G − Y

這時對於一個取樣點, 完整的信息被保存於 Y, Cb, Cr, Cg 四個變量裏, 此時相對於 RGB colour space 的三個變量值, 這樣的計算公式還沒有優勢.

但由於 Cb + Cr + Cg 是個常數, 我們可以用其中兩個變量來表達原來所需的三個, 並且在數據的貯存和傳輸中也只需使用其中的兩個變量. 這樣, 就完成了定義 YCbCr colour space 中的三個變量了: Y, Cb, Cr.

一個在 RGB colour space 中取樣值的三個變量 R, G, B 在轉換爲 YCbCr 的公式於是重新 定義/轉化 爲:

Y = kr*R + (1 − kb − kr )*G + kb*B........ (1)
Cb = 0.5(1 − kb) / (B − Y )
Cr = 0.5(1 − kr) / (R − Y )
然後再用公式 (1) 代換 Y, 得到僅含 R,G,B 的 Cb, Cr 函數 (kr,kb 視爲常數)

作簡單的代數也可以求出從 YCbCr 轉換至 RGB 的公式:

R = Y + (1 - kr)*Cr/0.5
G = Y - [kb*(1 - kb)*Cb]/ [0.5*(1 - kb - kr)] - [kr*(1 - kr)*Cr]/ [0.5*(1 - kb - kr)]
B = Y + (1 - kb)*Cb/0.5

代入 ITU-R BT.601 定義的 kb = 0.114 和 kr = 0.299
那麼 RGB ---> YCbCr 的公式爲:

Y = 0.299R + 0.587G + 0.114B........ (2)
Cb = 0.564(B − Y )
Cr = 0.713(R − Y )
同樣地, 然後再用公式 (2) 代換 Y, 得到僅含 R,G,B 的 Cb, Cr 函數 (kr,kb 視爲常數)

YCbCr ---> RGB 的公式爲:

R = Y + 1.402Cr
G = Y − 0.344Cb − 0.714Cr
B = Y + 1.772Cb


轉載文章讀後感:

 係數是人爲(規範等)規定的,而不是推算出來的。另外,上述轉換實際上是RGB轉YUV444,因爲每一個像素點均有一對uv值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章