YUV/RGB數(shù)據(jù)格式

目錄

  1. YUV的原理
  2. YUV的取值范圍
  3. YUV的存儲(chǔ)格式
  4. YUV的采樣格式
  5. 存儲(chǔ)方式
  6. 10bit YUV數(shù)據(jù)的存儲(chǔ)
  7. RGB的格式

參考

1. YUV的原理

YUV 的原理是把亮度(Luma)與色度(Chroma)分離窃躲。
“Y”表示亮度,也就是灰度值。
“U”表示藍(lán)色通道與亮度的差值。
“V”表示紅色通道與亮度的差值诵冒。

其中 Y 信號(hào)分量除了表示亮度信號(hào)外碍扔,還含有較多的綠色通道量,單純的 Y 分量可以顯示出完整的黑白圖像奸例。
U饼拍、V 分量分別表示藍(lán) (blue)赡模、紅 (red) 分量信號(hào),只含有色度信息惕耕,所以 YUV 也稱為 YCbCr纺裁,其中诫肠,Cb司澎、Cr的含義等同于U欺缘、V,C 可以理解為 component 或者 color挤安。

RGB 轉(zhuǎn) YUV 的公式能更好地反應(yīng) YUV 與 RGB 的關(guān)系谚殊,以及為什么稱為 YCbCr:


yuv1.png

RGB與YUV的變換公式如下:


yuv_rgb.jpg

有時(shí)候遇到播放問題會(huì)看到純綠色的圖像,可能是由某些錯(cuò)誤導(dǎo)致YUV值為(0,0,0)引起的蛤铜,YUV(0,0,0)對(duì)應(yīng)RGB為(0,135,0)嫩絮,正好為綠色。

RGB和YUV互轉(zhuǎn)的網(wǎng)頁(yè)小工具:
https://www.mikekohn.net/file_formats/yuv_rgb_converter.php

在RGB色彩空間中围肥,三個(gè)顏色的重要程度相同剿干,所以需要使用相同的比特進(jìn)行存儲(chǔ)。研究發(fā)現(xiàn)人眼對(duì)亮度的敏感超過色度穆刻。將圖像的亮度信息和顏色信息分離置尔,并使用不同的分辨率進(jìn)行存儲(chǔ),這樣在對(duì)主觀感覺影響很小的前提下氢伟,可以更加有效地存儲(chǔ)圖像數(shù)據(jù)榜轿。

2. YUV的取值范圍

與RGB每個(gè)像素點(diǎn)的每個(gè)分量取值范圍為0-255不同(每個(gè)分量占8bit),YUV取值范圍有兩種:

  1. 以Rec.601為代表(還包括BT.709 / BT.2020)的廣播電視標(biāo)準(zhǔn)中朵锣,Y的取值范圍是16-235谬盐,U、V的取值范圍是16-240诚些。FFmpeg中稱之為“mpeg”范圍飞傀。
  2. 以JPEG為代表的標(biāo)準(zhǔn)中,Y泣刹、U助析、V的取值范圍都是0-255。FFmpeg中稱之為“jpeg” 范圍椅您。

實(shí)際中最常見的是第1種取值范圍的YUV(可以自己觀察一下YUV的數(shù)據(jù)外冀,會(huì)發(fā)現(xiàn)其中亮度分量沒有取值為0、255這樣的數(shù)值)掀泳。很多人在這個(gè)地方會(huì)有疑惑雪隧,為什么會(huì)去掉“兩邊”的取值呢?

原因:

  • 在廣播電視系統(tǒng)中不傳輸很低和很高的數(shù)值员舵,實(shí)際上是為了防止信號(hào)變動(dòng)造成過載脑沿,因而把這“兩邊”的數(shù)值作為“保護(hù)帶”[4]。

下面這張圖是數(shù)字電視中亮度信號(hào)量化后的電平分配圖马僻。從圖中可以看出庄拇。

  • 對(duì)于8bit量化來說,信號(hào)的白電平為235,對(duì)應(yīng)模擬電平為700mV措近。
  • 黑電平為16溶弟,對(duì)應(yīng)模擬電平為0mV。
  • 信號(hào)上方的“保護(hù)帶”取值范圍是236至254瞭郑,而信號(hào)下方的“保護(hù)帶”取值范圍是1-15辜御。
  • 最邊緣的0和255兩個(gè)電平是保護(hù)電平,是不允許出現(xiàn)在數(shù)據(jù)流中的屈张。

與之類似擒权,10bit量化的時(shí)候,白電平是235*4=940阁谆,黑電平是16*4=64碳抄。


quantization_yuv.jpg

下面兩張圖是數(shù)字電視中色度信號(hào)量化后的電平分配圖〕÷蹋可以看出:

  • 色度最大正電平為240纳鼎,對(duì)應(yīng)模擬電平為+350mV。
  • 色度最大負(fù)電平為16裳凸,對(duì)應(yīng)模擬電平為-350mV贱鄙。
  • 需要注意的是,色度信號(hào)數(shù)字電平128對(duì)應(yīng)的模擬電平是0mV姨谷。
quantization_2.jpg

quantization_3.jpg

3. YUV的存儲(chǔ)格式

YUV格式有兩大類:planar和packed逗宁。

對(duì)于 planar 的 YUV 格式,先連續(xù)存儲(chǔ)所有像素點(diǎn)的 Y梦湘,緊接著存儲(chǔ)所有像素點(diǎn)的 U瞎颗,隨后是所有像素點(diǎn)的 V。相當(dāng)于將 YUV 拆分成三個(gè)平面 (plane) 存儲(chǔ)捌议。

對(duì)于 packed 的 YUV 格式哼拔,每個(gè)像素點(diǎn)的 Y,U瓣颅,V 是連續(xù)交替存儲(chǔ)的倦逐。

4. YUV的采樣格式

主要的采樣格式有YUV4:4:4、YUV4:2:2宫补、YUV4:2:0 檬姥,其中YUV4:2:0是最常用的采樣格式。

采樣就是根據(jù)一定的間隔取值粉怕。其中的比例是指 Y健民、U、V 表示的像素贫贝,三者分別占的比值秉犹。

下圖是YUV4:4:4,YUV4:2:2,YUV4:2:0的采樣示意圖崇堵。
image
  • YUV 4:4:4采樣悦陋,每一個(gè)Y對(duì)應(yīng)一組UV分量。
  • YUV 4:2:2采樣筑辨,每?jī)蓚€(gè)Y共用一組UV分量。
  • YUV 4:2:0采樣幸逆,每四個(gè)Y共用一組UV分量棍辕。

5. 存儲(chǔ)方式

下面用圖的形式給出常見的YUV數(shù)據(jù)的存儲(chǔ)方式,并在后面附有取樣每個(gè)像素點(diǎn)的YUV數(shù)據(jù)的方法还绘。

(1) YUYV 格式 (屬于YUV422)


YUYV.png

相鄰的兩個(gè)Y共用其相鄰的兩個(gè)Cb楚昭、Cr,對(duì)于像素點(diǎn)Y'00拍顷、Y'01 而言抚太,其Cb、Cr的值均為 Cb00昔案、Cr00尿贫,其他的像素點(diǎn)的YUV取值依次類推。

(2) UYVY 格式 (屬于YUV422)


YUYV.png

與YUYV不同的是UV的排列順序不一樣踏揣,還原其每個(gè)像素點(diǎn)的YUV值的方法與上面一樣庆亡。

(3) YUV422P(屬于YUV422)


YUV422P.png

YUV422P是一種平面模式,其每一個(gè)像素點(diǎn)的YUV值提取方法也是遵循YUV422格式的最基本提取方法捞稿,即兩個(gè)Y共用一個(gè)UV又谋。比如,對(duì)于像素點(diǎn)Y'00娱局、Y'01 而言彰亥,其Cb、Cr的值均為 Cb00衰齐、Cr00任斋。

(4) YUV420P格式(屬于YUV420)


YV12.png

YUV420P,Y耻涛,U仁卷,V三個(gè)分量都是平面格式,分為I420和YV12犬第。I420格式和YV12格式的不同處在U平面和V平面的位置不同锦积。注意,上圖中歉嗓,Y'00丰介、Y'01、Y'10、Y'11共用Cr00哮幢、Cb00带膀,其他依次類推。在I420格式中橙垢,U平面緊跟在Y平面之后垛叨,然后才是V平面(即:YUV);但YV12則是相反(即:YVU)柜某。

YUV420p.png

I420: YYYYYYYY UU VV
YV12: YYYYYYYY VV UU

(5) NV12嗽元、NV21(YUV420sp,屬于YUV420)


NV12.png

這兩種格式的不同在于UV交錯(cuò)排列的順序不同喂击,是一種two-plane模式剂癌,即Y和UV分為兩個(gè)Plane,但是UV(CbCr)為交錯(cuò)存儲(chǔ)翰绊,而不是分為三個(gè)plane佩谷。其提取方式與上一種類似,即Y'00监嗜、Y'01谐檀、Y'10、Y'11共用Cr00裁奇、Cb00稚补,其他依次類推。

假設(shè)一個(gè)分辨率為8X4的YUV圖像框喳,它們的格式如下圖:
YUV420sp格式如下圖

YUV420sp.png

NV12: YYYYYYYY UVUV
NV21: YYYYYYYY VUVU

以w*h大小圖像的YUV420數(shù)據(jù)為例课幕,
其存儲(chǔ)格式是: 共大小為(w * h * 3/2)字節(jié),
Y分量:(w * h)個(gè)字節(jié)
U(Cb)分量:(w * h/4)個(gè)字節(jié)
V(Cr)分量:(w * h/4)個(gè)字節(jié)

6. 10bit YUV數(shù)據(jù)的存儲(chǔ)

常見的yuv數(shù)據(jù)五垮,每個(gè)像素的一個(gè)通道一般是占用一個(gè)字節(jié)即8bit乍惊。而HDR常用的標(biāo)準(zhǔn)HDR10,數(shù)據(jù)是10bit的放仗。

10bit數(shù)據(jù)是怎么存儲(chǔ)的呢润绎?我們一般會(huì)有兩種想法:

  1. 每個(gè)像素的一個(gè)通道占用兩個(gè)字節(jié),其中6個(gè)bit是填充位诞挨。
  2. 每個(gè)像素的一個(gè)通道占用10bit莉撇,10bit數(shù)據(jù)和10bit數(shù)據(jù)是挨著排列的。

優(yōu)缺點(diǎn)

  1. 方式1:便于運(yùn)算處理惶傻,有存儲(chǔ)冗余棍郎;
  2. 方式2:存儲(chǔ)沒有冗余,計(jì)算麻煩银室。

事實(shí)上涂佃,10bit是采用方式1存儲(chǔ)的励翼,并且高有效字節(jié)的前6個(gè)bit是填充的0。

HDR10視頻解碼得到Y(jié)UV數(shù)據(jù)的命令:

//yuv420p10le格式
ffmpeg -i hdr10.mp4 -f rawvideo -pix_fmt yuv420p10be hdr10_yuv420p10le.yuv

//yuv420p10be格式
ffmpeg -i hdr10.mp4 -f rawvideo -pix_fmt yuv420p10be hdr10_yuv420p10le.yuv

(1)yuv420p10le的數(shù)據(jù)格式的16進(jìn)制的顯示:

image.png

比如地址019f7040h開始的兩個(gè)字節(jié):

-------------低地址---->高地址--------------
00011111 000000 01  

(2)yuv420p10be的數(shù)據(jù)格式的16進(jìn)制的顯示:

image.png

比如地址019f7040h開始的兩個(gè)字節(jié):

-------------低地址---->高地址--------------
000000 01 00011111   

工具推薦:一個(gè)可以播放10bit yuv流的播放器YUV Player

7. RGB格式

  1. BGR24圖像格式
    BGR24圖像格式是一種采用24bpp(bit per pixel)的格式辜荠。每個(gè)顏色通道B汽抚、G、R各占8bpp伯病。
    排列方式如:
B G R ? B G R ? B G R ? B G R ? B G R ? B G R ? B G R ? B G R
B G R ? B G R ? B G R ? B G R ? B G R ? B G R ? B G R ? B G R
B G R ? B G R ? B G R ? B G R ? B G R ? B G R ? B G R ? B G R
B G R ? B G R ? B G R ? B G R ? B G R ? B G R ? B G R ? B G R
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末造烁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子午笛,更是在濱河造成了極大的恐慌惭蟋,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件季研,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡誉察,警方通過查閱死者的電腦和手機(jī)与涡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來持偏,“玉大人驼卖,你說我怎么就攤上這事『韪眩” “怎么了酌畜?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卿叽。 經(jīng)常有香客問我桥胞,道長(zhǎng),這世上最難降的妖魔是什么考婴? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任贩虾,我火速辦了婚禮,結(jié)果婚禮上沥阱,老公的妹妹穿的比我還像新娘缎罢。我一直安慰自己,他們只是感情好考杉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布策精。 她就那樣靜靜地躺著,像睡著了一般崇棠。 火紅的嫁衣襯著肌膚如雪咽袜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天枕稀,我揣著相機(jī)與錄音酬蹋,去河邊找鬼及老。 笑死,一個(gè)胖子當(dāng)著我的面吹牛范抓,可吹牛的內(nèi)容都是我干的骄恶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼匕垫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼僧鲁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起象泵,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤寞秃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后偶惠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踪危,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鬼雀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盯另。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兄一,死狀恐怖厘线,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情出革,我是刑警寧澤造壮,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站骂束,受9級(jí)特大地震影響耳璧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜展箱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一楞抡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧析藕,春花似錦召廷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至治泥,卻和暖如春筹煮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背居夹。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工败潦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留本冲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓劫扒,卻偏偏與公主長(zhǎng)得像檬洞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沟饥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 前一陣子在梳理以前文章的時(shí)候贤旷,發(fā)現(xiàn)自己雖然總結(jié)了各種視音頻應(yīng)用程序广料,卻還缺少一個(gè)適合無視音頻背景人員學(xué)習(xí)的“最基礎(chǔ)...
    視頻音頻小白閱讀 1,993評(píng)論 1 3
  • 由于H.264等壓縮算法都是在YUV的顏色空間上進(jìn)行的,所有在進(jìn)行壓縮前幼驶,首先要進(jìn)行顏色空間的轉(zhuǎn)換艾杏。如果攝像頭采集...
    眷卿三世閱讀 13,547評(píng)論 2 6
  • 導(dǎo)語 今天跟大家分享的這篇文章,也是之前自己總結(jié)的盅藻,大致就是想說明一下购桑,視頻的裸數(shù)據(jù)yuv格式的各種分類。剛開始接...
    bigonelby閱讀 9,057評(píng)論 0 12
  • 她是海寵溺的小孩萧求, 一到四月其兴, 她就喜歡到這里顶瞒, 來賞盛開的櫻花夸政。 她可真是被寵壞了, 賞了櫻花不回家 早晨在路上...
    晨光微曉閱讀 301評(píng)論 2 1
  • 今天的工作量很多 到現(xiàn)在也沒做完 明天去又是一坨事情呢 不過幫泥鰍賣了些八寶茶 算是一件正事榴徐!
    圓柱體閱讀 168評(píng)論 0 0