RGB 轉換至 YCbCr YUV 的計算公式

2021-09-27 12:20:13 字數 1433 閱讀 7800

rgb 轉換至 ycbcr (yuv) 的計算公式

部落格分類: programming

bbsphp.net

對於每個取樣點的 r,g,b 值, 在轉換到 yuv colour space 時, 首先定義畫面的平均亮度值(luminance), y, 其計算公式為:

y = krr + kgg + 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 + kbb… (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

RGB565和RGB888的轉換

1 rgb565或rgb16格式說明 rgb565彩色模式也稱rgb16彩色模式,指的是用16位表示乙個畫素,即 乙個畫素佔兩個位元組,其中 第乙個位元組的前5位用來表示r red 第乙個位元組的後三位 第二個位元組的前三位用來表示g green 第二個位元組的後5位用來表示b blue 如 15 ...

RGB和HSV顏色轉換

分類 影象處理 2008 07 21 21 50 2979人閱讀收藏 舉報integer 演算法工具 c360 h引數表示色彩資訊,即所處的光譜顏色的位置。該引數用一角度量來表示,紅 綠 藍分別相隔120度。互補色分別相差180度。純度s為一比例值,範圍從0到1,它表示成所選顏色的純度和該顏色最大的...

RGB和HSV顏色轉換

h引數表示色彩資訊,即所處的光譜顏色的位置。該引數用一角度量來表示,紅 綠 藍分別相隔120度。互補色分別相差180度。純度s為一比例值,範圍從0到1,它表示成所選顏色的純度和該顏色最大的純度之間的比率。s 0時,只有灰度。v表示色彩的明亮程度,範圍從0到1。有一點要注意 它和光強度之間並沒有直接的...