本文爲做者原創,轉載請註明出處:http://www.javashuo.com/article/p-kwxfzypa-bs.htmlhtml
顏色是不一樣波長的光對人眼刺激產生的色彩感受。色彩空間(Color Space)是顏色的數學表示,根據不一樣的表示方法分爲不一樣的色彩模型。最經常使用的色彩模型有三類:RGB(用於計算機圖形學), YUV(用於視頻系統), CMYK(用於彩色印刷)。後文對色彩空間與色彩模型的叫法不做區分。本文僅討論視頻圖像處理領域經常使用的RGB色彩空間和YUV色彩空間。ide
顏色與光源特性和人眼視覺特性有密切的關係,與之相關的學科有光度學和色度學。光度學是研究光學計量的學科,定義了光通量、發光強度、照度、亮度等主要光度學參量以及幾個光度學重要定律。光度學考慮的是可見光範圍,而且考慮人眼主觀影響。色度學是研究色彩計量的科學,它定性和定量地研究人眼的顏色視覺規律、顏色測量理論與技術。色度學是研究視頻技術的重要理論基礎,將色度學中最基礎的兩個概念摘錄以下。本節內容,是理解圖像色彩相關知識的基礎,已經簡潔的不能再簡潔。編碼
描述光的經常使用物理量有四個:光通量、光強、照度、亮度。以下兩張示意圖引用自「如何正確理解照度和亮度的關係?」,圖中涉及三個角色:光源、物體(被觀察者)與人眼(觀察者)。
code
以下概念的描述,力求通俗,所以並不許確。視頻
單位時間內由光源所發出或由被照物所吸取的總光能。單位流明。
在第一張圖中,燈泡在單位時間內散發的的光的總和即爲光通量。光通量衡量光源總的發光量。htm
光源在給定方向上,每單位立體角內所發出的的光通量。單位坎德拉。
在第一張圖中,光源射向照射面的一根光線表示光強。光強衡量光源的發光強度。blog
物體表面每單位面積入射可見光的光通量。單位勒克斯。
照度在被觀察者(被照物體)角度,衡量接受到的光的強弱。接口
描述發光面或反光面上光的明亮程度的光度量。單位坎德拉每平方米。
亮度在觀察者(人眼)角度,衡量感覺到的光的明亮程度。
在第二張圖中,理想狀況下,被同一光源照射,黑色書和白色書具備一樣的照度,卻有不一樣的亮度。圖片
光的顏色取決於客觀和主觀兩方面的因素。客觀因素是光的功率波譜分佈,它影響光源的顏色。主觀因素是人眼視頻特性,它影響人眼對色彩的感受。 彩色三要素指亮度(Lightness)、色調(Hue)和飽和度(Saturation),任一色彩均可以用這三個基本參量來表示:
亮度表示顏色明暗的程度,是光做用於人眼時引發的明亮程度的感受。
色調是指顏色的類別,例如紅色、藍色、綠色指的就是色調。
飽和度指顏色的深淺程度,也稱彩度。例如深綠、淺綠指的就是綠色這個色調的飽和度,飽和度越高,顏色越深。ip
三基色原理指天然界中大部分彩色均可以由三種基色按不一樣比例混合獲得。選擇三種基色的前提的:每一種基色都不能由另外兩種基色混合獲得,這三種基色互相獨立。三基色原理主要內容以下:
1) 天然界中的絕大部分彩色,均可以由三種基色按必定比例混合獲得;反之,任意一種彩色都可被分解爲三種基色。
2) 做爲基色的三種彩色,要相互獨立,即其中任何一種基色都不能由另外兩種基色混合來產生。
3) 由三基色混合而獲得的彩色光的亮度等於參與混合的各基色的亮度之和。
4) 三基色的比例決定了混合色的色調和色飽和度。
不一樣顏色混合在一塊兒能產生新的顏色,這種方法稱爲混色法。色彩空間RGB是採用了R、G、B三種基色,色彩空間CMYK是採用了C、M、Y三種基色。
咱們看一張包含彩色三要素和RGB三原色的示意圖:
太深的原理已超出本文的討論範圍和研究目的。這裏摘錄一些經驗觀點:
RGB三原色不是惟一的正交基,還能夠有其餘選擇,只不過RGB能組合出來的顏色更爲豐富。[3]
不考慮人類視覺的特殊性時,咱們平時所認爲的「紅+綠=黃」之類的「顏色疊加」是不成立的。由於紅色和綠色的單色光的混合只有在人類的視覺中才會跟黃色的單色光同樣,它們在其它動物的視覺中不必定是同樣的。也就是說,不考慮人類視覺的特殊性時,不存在RGB顏色空間。[3]
人類有三種視錐細胞用於感知顏色,這三種視錐細胞對紅(R)、綠(G)、藍(B)三種顏色敏感。[4]
人眼看到的物體顏色,是光源照射到物體,物體吸取(還有透射)部分顏色的光,而後從物體表面反射的光線進入人眼後人眼獲得的色彩感受。
人眼看到物體爲黑色,是由於物體將光線徹底吸取,沒有光從物體表面反射出來(例如白天咱們看一件黑衣服);或者沒有任何光線照射到物體(例如黑底咱們看一張白紙)。
人眼看到物體爲白色,是由於在白光源照射下,物體不吸取光線而將光線所有反射(例如白天咱們看一張白紙)。
顏色與光源和物體的吸色特性密切相關,基於此,引出混色方法中的加色法和減色法。
加色法利用光源發射特性,將各分色的光譜成分相加獲得混合顏色。RGB色彩空間採用加色法。當無任何光線照射時,R、G、B三種顏色份量都爲0時,物體呈現黑色;當R、G、B三種顏色份量達到最大時,物體不吸取光線只反射的狀況下,物體呈現白色。咱們稱黑色爲最暗,白色爲最亮,要達到最亮狀態,須要三色份量最大程度混合,所以稱爲加色。
[6]
加色法用於自發光物體。RGB顏色空間主要應用於計算機顯示器、電視機、舞臺燈光等,都具備發光特性。彩色像素在顯示器屏幕上不會重疊,但足夠的距離時,光線從像素擴散到視網膜上會重疊,人眼會感受到重疊後的顏色效果。
減色法是利用顏料吸色特性,每加一種顏色的顏料,會吸取掉對應的補色成分。CMYK色彩空間採用減色法。例如,咱們在白紙(白光照射、不吸取、全反射)上塗顏料,黃色顏料能吸取藍色(黃色的補色),所以在白光照射下顯示黃色,當黃(Y)、青(C)、品紅(M)三色混在一塊兒且顏色份量都爲最大時,它們的補色成分被吸取掉,變成了黑色;當三色份量爲0即什麼也不塗時,白紙顯現白色。要達到最大亮度,須要三色份量徹底消失,所以稱爲減色。
印刷時,沒法達到理想程度,C、M、Y最大程度混合後沒法獲得純黑色,只能獲得深灰色,所以在C、M、Y三色以外引入了K(黑色)。
[7]
減色法用於沒法發光的物體。CMYK顏色空間主要應用於印刷、繪畫、布料染色等。
RGB色彩空間中每一個像素點包含了R、G、B三種份量。RGB存儲模式也有packed和planar兩類,這兩種模式的區分在第3節中講述。RGB色彩空間及存儲模式比較簡單,咱們挑幾個有表明性的存儲模式來簡述一下:
使用16b(bit)表示一個像素,5b用於R,6b用於G,5b用於B。以下:
[ R G B ] [ R G B ] [ R G B ] [ R G B ] [ R G B ] [ R G B ] [ R G B ] [ R G B ]
以上只是示意圖,實際R、G、B順序可能與圖中不一樣。
使用24位來表示一個像素,每一個份量都用8位表示。其示意圖跟RGB565示意圖相似。
使用32位來表示一個像素,R、G、B都用8位表示,另外A(Alpha)表示透明度,也用8位表示。
[ A R G B ] [ A R G B ] [ A R G B ] [ A R G B ] [ A R G B ] [ A R G B ] [ A R G B ] [ A R G B ]
以上只是示意圖,實際A、R、G、B順序可能與圖中不一樣。
YUV顏色空間是PAL、NTSC、SCEAM三大視頻標準使用的顏色空間,主要應用於視頻系統。YUV色彩空間中,Y表示亮度信息,U和V表示色度(色調和飽和度)信息。使用YUV色彩空間,後期出現的彩色電視系統和早期的黑白電視系統兼容,黑白電視機能夠只處理彩色電信信號中的Y份量,而彩色電視機接收黑白電視信號並顯示也沒有任何問題。
YUV顏色空間和RGB顏色空間能夠根據公式相互轉換。
常常提到的還有YPbPr和YCbCr。YPbPr指模擬份量信號(或接口),P(Parallel)表示並行,b下標表示藍,r下標表示紅。YCbCr指的是數字份量信號(或接口),C(Chroma)表示色度。YCbCr還可指色彩空間,YCbCr色彩空間是YUV色彩空間的縮放和偏移版本。
YUV, YCbCr, YPbPr所指涉的範圍,常有混淆或重疊的狀況。從歷史的演變來講,其中YUV和Y'UV一般用來編碼電視的模擬信號,而YCbCr則是用來描述數字的視頻信號,適合影片與圖片壓縮以及傳輸,例如MPEG、JPEG。 但在現今,YUV一般已經在計算機系統上普遍使用。[9]
YUV存儲格式分紅三大類:
packed:將Y、U、V份量交織存放在一塊兒,和RGB的存放方式相似。內存中排列形式相似:YVYUYVYUYVYUYVYU...。在具體的存儲模式命名中,packed格式不帶後綴P。
planar:將Y、U、V的三個份量分別存放在不一樣的矩陣(平面)中。內存中排列形式相似:YYYYYY...,UUUUUU...,VVVVVV...。在具體的存儲模式命名中,planar格式帶後綴P。
semi-planar:將Y、U、V三個份量放在兩個矩陣(平面)中。Y佔用一個平面,UV共用一個平面。內存中排列形式相似:YYYYYY...,UVUVUV...。在具體的存儲模式命名中,semi-planar格式帶後綴SP。
YUV圖像存儲模式與採樣方式密切相關。主流的採樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0。這些採樣方式,不壓縮Y份量,對UV份量的壓縮程度不一樣,這是由人眼的特性決定的,人眼對亮度Y更敏感,對色度UV沒有那麼敏感,壓縮UV份量能夠下降數據量,但並不會人眼主觀感受形成太大影響。
相鄰的4個像素裏有4個Y、4個U、4個V。每1個Y使用1組UV份量。以下(每一個[]爲一個像素點):
[ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ] [ Y U V ]
在這種採樣方式下,一個像素點包含的完整的信息。
相鄰的4個像素裏有4個Y、2個U、2個V。每2個Y共用1組UV份量。平均算來,一個像素佔用的數據寬度爲16b,其中Y佔8b,U佔4b,V佔4b。後面存儲模式命名中的數字16指的就是16b。
[ Y U ] [ Y V ] [ Y U ] [ Y V ] [ Y V ] [ Y U ] [ Y V ] [ Y U ] [ Y U ] [ Y V ] [ Y U ] [ Y V ] [ Y V ] [ Y U ] [ Y V ] [ Y U ]
在這種採樣方式下,還原出一個像素點,須要相鄰的兩個像素點數據,以下:
[ Y U ] [ Y V ]
在同一採樣模式下,根據份量元素排列順序的不一樣,又分爲不一樣的存儲模式:
[ Y U ] [ Y V ] [ Y U ] [ Y V ] [ Y V ] [ Y U ] [ Y V ] [ Y U ] [ Y U ] [ Y V ] [ Y U ] [ Y V ] [ Y V ] [ Y U ] [ Y V ] [ Y U ]
[ U Y ] [ V Y ] [ U Y ] [ V Y ] [ U Y ] [ V Y ] [ U Y ] [ V Y ] [ U Y ] [ V Y ] [ U Y ] [ V Y ] [ U Y ] [ V Y ] [ U Y ] [ V Y ]
命名中的數字16表示,平均算來,一個像素佔16b,其中Y佔8b,U佔4b,V佔4b。
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ------- U U U U U U U U ------- V V V V V V V V
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ------- V V V V V V V V ------- U U U U U U U U
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ------- U V U V U V U V U V U V U V U V
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ------- V U V U V U V U V U V U V U V U
相鄰的4個像素裏有4個Y、2個U、0個V,或4個Y、2個V,0個U。每4個Y共用1組UV份量。平均算來,一個像素佔用的數據寬度爲12b,其中Y佔8b,U佔2b,V佔2b。後面存儲模式命名中的數字12指的就是12b。
[ Y U ] [ Y ] [ Y U ] [ Y ] [ Y V ] [ Y ] [ Y V ] [ Y ] [ Y U ] [ Y ] [ Y U ] [ Y ] [ Y V ] [ Y ] [ Y V ] [ Y ]
在這種採樣方式下,還原出一個像素點,須要相鄰的四個像素點數據,以下:
[ Y U ] [ Y ] [ Y V ] [ Y ]
在同一採樣模式下,根據份量元素排列順序的不一樣,又分爲不一樣的存儲模式:
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ------- U U U U --- V V V V
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ------- V V V V --- U U U U
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ------- U V U V U V U V
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ------- V U V U V U V U
[1] Keith Jack, "Video Demystified" 5th edition, "Chapter 3. Color Spaces"
[2] 盧官明、宗昉, 《數字電視原理》第3版第1章
[3] 照明經常使用術語的定義http://twepc.com.tw/led/k2.htm
[4] 發光強度https://zh.wikipedia.org/wiki/%E5%8F%91%E5%85%89%E5%BC%BA%E5%BA%A6
[5] 如何正確理解照度和亮度的關係?https://zhuanlan.zhihu.com/p/53136784
[6] https://www.junpin360.com/html/2015-04-12/4088.html
[7] 紅綠藍三色是(惟一的)正交基嗎, https://www.zhihu.com/question/24886171
[8] 色彩空間基礎,https://zhuanlan.zhihu.com/p/24214731
[9] 色彩空間表示與轉換,https://zhuanlan.zhihu.com/p/24281841
[10] 加色法, https://zh.wikipedia.org/wiki/%E5%8A%A0%E8%89%B2%E6%B3%95
[11] 減色法, https://zh.wikipedia.org/wiki/%E6%B8%9B%E8%89%B2%E6%B3%95
[12] 數字圖像處理之6大顏色空間,https://zhuanlan.zhihu.com/p/28741691
[13] YUV, https://zh.wikipedia.org/wiki/YUV
[14] 圖文詳解YUV420數據格式, https://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html
[15] YUV格式小結, https://www.jianshu.com/p/6a361e86ccd5
2019-01-11 V1.0 初稿 2019-02-13 V1.1 增長光的經常使用度量一節