YUV和YCbCr之間的差異佈局
1、和rgb之間換算公式的差別編碼
yuv<-->rgbspa
Y'= 0.299*R' + 0.587*G' + 0.114*B' [0~255]視頻
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y') [-111.18~111.18]io
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y') [-156.825~156.825]圖像處理
R' = Y' + 1.140*V'ast
G' = Y' - 0.394*U' - 0.581*V'sed
B' = Y' + 2.032*U'打包
yCbCr<-->rgbmodel
Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16 [16~235.045]
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128 [16.055~239.945]
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128 [16.055~239.945]
R' = 1.164*(Y’-16) + 1.596*(Cr'-128)
G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)
B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
2、來源上的差別
yuv色彩模型來源於rgb模型,
該模型的特色是將亮度和色度分離開,從而適合於圖像處理領域。
應用:basic color model used in analogue color TV broadcasting.
YCbCr模型來源於yuv模型。YCbCr is a scaled and offset version of the YUV color space.
應用:數字視頻,ITU-R BT.601 recommendation
ps:
經過上面的比較能夠肯定,咱們在h.264,mpeg等編碼標準中用的yuv實際上是YcbCr,你們不要被名稱搞混淆了。
YUV的格式在存儲上有兩類佈局: Packed和Plannar。Packed的方式就是把相鄰幾個象素打包起來。好比把水平方向2個象素打包到一個DWORD裏。Planner方式則相反。Y份量和UV份量徹底分開來保存。
YUY2 是packed方式的。水平方向兩個像素打包到一個DWORD,而且UV採樣率只有Y的一半,這符合人的視覺特徵能有效的壓縮數據,具體佈局爲[Y0, U0,Y1,V0]。 這種格式常見於MPEG1的解碼「器」。
YV12 是plannar方式。對於一個MxN大小的視頻來講,數據佈局爲[Y:M x N] [U:M/2 x N/2] [V:M/2 x N/2]. 也就是說UV的採樣率在水平和垂直方向上都只有Y的一半。則常見於H.264的解碼「器」。
NV十二、NV21也都屬於plannar方式,叫作YUV420SP、YVU420SP,而前面說的YV12是YUV420P,區別在於NV十二、NV21的U、V是交叉放一塊兒的。NV十二、NV21這兩種方式惟一的差異是U、V的順序。
NV12
[Y0, Y1]
[Y2, Y3]
[U0, V0]
NV21
[Y0, Y1]
[Y2, Y3]
[V0, U0]