要講YUV,首先補(bǔ)充一下顯示器顯色原理相關(guān)背景。
顯示器顯色原理
目前的顯示器大都是采用了RGB顏色標(biāo)準(zhǔn),(YUV格式的視頻,也要轉(zhuǎn)換成RGB格式來顯示),在顯示器上,是通過電子槍激發(fā)屏幕的紅、綠、藍(lán)三色發(fā)光極上來產(chǎn)生色彩的,目前的電腦一般都能顯示32位顏色(rgba:8+8+8+8,每一種顏色有256個(gè)色階):紅、綠、藍(lán)三個(gè)顏色通道每種色各分為255階亮度,在0時(shí)“燈”最弱——是關(guān)掉的,而在255時(shí)“燈”最亮。當(dāng)三色數(shù)值相同時(shí)為無色彩的灰度色,而三色都為255時(shí)為最亮的白色,都為0時(shí)為黑;紅、綠、藍(lán)三盞燈的疊加情況,中心三色最亮的疊加區(qū)為白色,加法混合的特點(diǎn):越疊加越明亮。
RGB是從顏色發(fā)光的原理來設(shè)計(jì)定的,通俗點(diǎn)說它的顏色混合方式就好象有紅、綠、藍(lán)三盞燈,當(dāng)它們的光相互疊合的時(shí)候,色彩相混,而亮度卻等于兩者亮度之總和(兩盞燈的亮度嘛!),越混合亮度越高,即加法混合。有色光可被無色光沖淡并變亮。如藍(lán)色光與白光相遇,結(jié)果是產(chǎn)生更加明亮的淺藍(lán)色光。知道它的混合原理后,在軟件中設(shè)定顏色就容易理解了.
在圖像與視頻處理領(lǐng)域,顯示設(shè)備通過在三種基色混合,來表示其他的顏色,并且我們提到“幾何上說,色域中不存在能包含整個(gè)色域的三角形,即人類視覺的色域不是三角形的,使用三色表示法無法表示整個(gè)人類色域,而只能表示局部 。” 由于人類視覺的色域非三角形,色域中不存在能包含整個(gè)色域的三角形,也就是說任何三個(gè)給定可見光光源,都不能覆蓋整個(gè)色域,所以使用三色表示法無法表示整個(gè)人類色域,因此,顯示設(shè)備的制作原理導(dǎo)致我們無法使用顯示設(shè)備來顯示出色域圖中存在的所有顏色,而只能選擇其中的一部分顏色進(jìn)行顯示
而具體哪一部分取決于標(biāo)準(zhǔn)。也就是常說的SRGB/P3/BT.2020等,后續(xù)再說。
YUV:針對(duì)人眼特性定義的色彩空間
但是我們知道,YUV是除RGB之外另一種顏色表達(dá)方式,常用于視頻編解碼中,也是一種顏色空間。YUV的由來主要還是因?yàn)槿搜蹖?duì)亮度更加敏感,顏色更遲鈍,所以人們定義了一種色彩空間下,顏色的亮度信息被完全保存,色域信息將會(huì)進(jìn)行下采樣以壓縮數(shù)據(jù),雖然色域信息被壓縮了,但人眼分辨不出來。(如何采樣,搜索YUV420/YUV444/NV12/NV21相關(guān)資料即可,在此不贅述。)
這里我想聊一下我以前看似了解但是不太通透的東西:
我們常說的YUV是怎么來的?
怎么從一個(gè)物理量到我們定義的這個(gè)YUV?
這個(gè)YUV定義的色彩又如何顯示到我們的屏幕上面去的?
帶著這些問題,我翻查了許多資料,總結(jié)成下文的「物理世界中的量變成我們編碼的顏色空間YUV歷程」有不對(duì)的地方,希望及時(shí)指出勘誤。