![undefined](https://cbu01.alicdn.com/img/ibank/O1CN0164lLAe1R6RhPRNNr4_!!3191592062-0-cib.jpg?__r__=1732084261409)
![undefined](https://cbu01.alicdn.com/img/ibank/O1CN014zJU5D1R6RhQ9dlLL_!!3191592062-0-cib.jpg?__r__=1732084261409)
![undefined](https://cbu01.alicdn.com/img/ibank/O1CN01yIySTF1R6RhPzapqV_!!3191592062-0-cib.jpg?__r__=1732084261409)
![undefined](https://cbu01.alicdn.com/img/ibank/O1CN013bLjZy1R6RhSjPt7I_!!3191592062-0-cib.jpg?__r__=1732084261409)
![undefined](https://cbu01.alicdn.com/img/ibank/O1CN01fiCwIg1R6RhPzZpTX_!!3191592062-0-cib.jpg?__r__=1732084261409)
![undefined](https://cbu01.alicdn.com/img/ibank/O1CN01AjwF4O1R6RhNMjOhW_!!3191592062-0-cib.jpg?__r__=1732084261409)
1、前言
相針對純音頻,音視頻能傳遞更直觀、更豐富的信息,非常多時候,視頻的加入賦予了音頻血肉,亦給予了咱們更加多的選取。所有基于純音頻的場景,都能夠經(jīng)過加入視頻元素而演變出新的玩法,例如音頻語聊升級為視頻通話、電臺直播轉(zhuǎn)變?yōu)樾銏鲋辈?、語音課堂升級為視頻課堂等等。當然,視頻元素亦并不局限于 “攝像頭”,屏幕采集、版權(quán)影視資源都能夠做為視頻數(shù)據(jù)源,滿足了游戲直播、一塊看電影等場景。
既然 “視頻” 有這么多價值,做為一個音視頻應(yīng)用研發(fā)者,咱們自然要來好好地認識一下它。
2、視頻的本質(zhì) —— 圖像
咱們認識到聲音的本質(zhì)是物體振動產(chǎn)生的波,咱們針對聲音的感知,其實是經(jīng)過耳膜感知了聲波的振動,因此針對聲音的學習是從聲波的采集以及數(shù)字化起始的。此刻,咱們起始和視頻打交道,自然要從視頻的本質(zhì)、以及咱們對視頻的感知方式聊起。
那樣,視頻是怎樣產(chǎn)生的呢?
大眾必定有接觸過 “翻頁連環(huán)畫”,這種連環(huán)畫的每一頁都是靜態(tài)的照片,常態(tài)下平平無奇,但倘若咱們快速地撥動翻頁,讓每一頁照片快速、連貫地進行展示,本來 “靜態(tài)” 的照片,在視覺上居然變成為了 “動態(tài)” 的畫面(如下圖)。
C++音視頻研發(fā)學習資料:點擊莬費領(lǐng)取→音視頻研發(fā)(資料文檔+視頻教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
![](https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/ee5c8d334ab74af084afefa195f09348~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=lSiqE%2ByImqRXg%2F8fJ3Bu8GSJsK4%3D)
這兒 “靜態(tài)照片” 之因此會轉(zhuǎn)變?yōu)?“動態(tài)畫面” ,是基于人眼的 “視覺暫留 “特性:咱們觀看物體時,物體首要影像于視網(wǎng)膜、并由視神經(jīng)傳入大腦,大腦才感知到物體的像。而當物體從視線中移去時,視神經(jīng)對物體的印象不會立即消失,會延續(xù)幾百毫秒。當舊圖像消失、新圖像替換顯現(xiàn)的頻率足夠快時,前后圖像在視覺上就產(chǎn)生了 “連貫”,形成為了 “動態(tài)畫面”。而 “動態(tài)畫面” 亦便是咱們所說的 “視頻”。
從 “翻頁連環(huán)畫” 的現(xiàn)象看,視頻的本質(zhì)其實是一幀幀連續(xù)展示的圖像。而咱們對視頻內(nèi)容的感知方式,便是通過眼睛捕捉到一幀幀圖像上的 “色彩” 。無論是最簡單的黑白默劇,還是最豐富的炫彩影視,都需要由色彩構(gòu)成血肉和骨骼。
因此,咱們針對視頻知識的學習,還需要從認識 “色彩” 起始。
3、圖像的血肉和骨骼 —— 色彩
大眾都曉得,眼睛之因此能看到物體,是由于接收了物體反射的光波。而色彩,則是大腦對光的一種 “感覺”。相較于聲音的 “只可言傳,不可意會”,色彩針對咱們來講,是 “只可眼觀,不可言傳” 的。為了方便對色彩進行統(tǒng)一描述,亦為了讓數(shù)字電路能識別、處理色彩數(shù)據(jù),咱們需要利用數(shù)字化的手段對色彩進行定義。
說到色彩的定義方式,最為大眾所熟知的是 “光的三原色模型”。光進入人眼后,視覺細胞會產(chǎn)生多個信號,其中有三種單色光信號:紅(Red)、綠(Green)、藍(Blue) ,這三種單色光按區(qū)別比例組合,形成為了區(qū)別的色彩,咱們亦叫作其為RGB 模型。參考 RGB 模型,咱們選定了三種色彩分量,再對每種單色分量進行量化,亦就完成了對色彩的數(shù)字化處理。
這種處理方式所運用的 “色彩模型” 的概念,很容易和 “多維空間、多維坐標系” 聯(lián)系起來。例如 RGB 模型的三個分量,能夠分別視為三維空間的 X、Y、Z 坐標,確定了詳細的 RGB 分量值,相當于確定了一個(X,Y,Z)坐標點,每一個區(qū)別的點即表率區(qū)別的色彩。倘若咱們計算出每一個分量的取值范圍(坐標范圍),那樣該范圍內(nèi)的所有分量的取值組合,就確定了一個色彩空間(Color Space),該空間中包括了該色彩模型可暗示的所有顏色。
![](https://p26-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/4a0d6b45527a498aa2c4877f6a1731a8~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=mdVhsnWAgiQw7ad6SFkwEMXw4K0%3D)
針對人眼來講,能識別的色彩數(shù)量有限,兼顧思慮技術(shù)瓶頸,實質(zhì)應(yīng)用中需要展示、能夠展示的色彩亦是有限的,咱們常常不需要一個色彩模型的所有顏色,區(qū)別場景下通常只需要選擇某個色彩 “子空間”,做為其標準的色彩空間(亦叫作為 “色域”) 。而區(qū)別軟硬件平臺,只要約定好支持相同的色彩空間,只運用該色彩空間內(nèi)的顏色,就能實現(xiàn)兼容互通,否則,它們對同一種色彩的展示就可能會顯現(xiàn)差異。
C++音視頻研發(fā)學習資料:點擊莬費領(lǐng)取→音視頻研發(fā)(資料文檔+視頻教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
在區(qū)別行業(yè)制定的眾多色彩空間中,有一個比較特殊的空間:CIE 色彩空間,它包括了人眼所能感知的所有色彩。CIE 色彩空間常常被當作標準的參考系,用于區(qū)別色彩空間之間的比較。倘若咱們將 CIE 色彩空間中的所有色彩,經(jīng)過數(shù)學模型映射到一個二維平面中,將得到一個如下的色域馬蹄圖,封閉區(qū)域即為 CIE 色彩空間所能暗示的所有顏色。
![](https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/52f8297201764960a5d295ce20662cc7~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=hEInDHH5i2swhr4HUVfBvglxM%2Fs%3D)
CIE 色彩空間:人眼的可視色彩范圍
當然,除了基于光的三原色的 RGB 模型,色彩模型 / 色彩空間還有非常多種,平常的例如 YUV、CMYK、HSV、HSI 等等。而在 RTC 應(yīng)用中,重點運用的是 RGB 和 YUV ,咱們后面會重點認識這兩種色彩空間。
而在認識詳細的色彩空間之前,咱們還有一個疑問需要解答:色彩,是怎樣構(gòu)成圖像的呢?
雖然說視頻的本質(zhì)是圖像,但圖像并非不可分割,它仍然有更小的構(gòu)成單位 – “像素”(Pixel)。關(guān)于圖像和像素的關(guān)系,大眾能夠先觀察如下兩張照片:
![](https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/aaee2e7fc1ed416583e26ffa044d1bcd~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=BXjKwqBIHQjS39%2FSj8Tx4UPomtM%3D)
在上面的照片中,左圖為正常尺寸的照片全貌,右圖為放大必定倍數(shù)之后的局部截圖(企鵝的頭部)。
咱們能夠看到,本來細膩的照片,在放大之后顯現(xiàn)了一個個小方塊,這些或色彩各異、或色彩相近的小方塊按必定規(guī)則擺列組合,最后呈現(xiàn)了 “企鵝” 的形象。這兒的小方塊,便是所說的 “像素”。
一個像素,是圖像的一個最基本單元,是形成圖像的一個色點,咱們亦能夠叫作其為像素點。每一個像素點上記錄了某種色彩空間的每一個分量值(例如 R、G、B),區(qū)別的分量值組合決定了這個像素點所暗示的顏色,多個暗示特定顏色的像素點,按某種規(guī)則擺列組合,就形成為了完整的圖像。能夠說,“像素們” 承擔了照片色彩形成的重任。
好了,關(guān)于像素、以及像素與圖像色彩的形成關(guān)系,大眾就先認識到這,后面咱們還會和它們有進一步接觸。此刻,讓咱們回到色彩空間的專題上,來詳細認識一下,RTC 應(yīng)用中最常運用的色彩空間:RGB 和 YUV 。
1、 RGB
首要,咱們來認識一下 RGB 色彩空間。
咱們前面已初步認識,RGB 色彩模型基于光的三原色原理創(chuàng)立,其三個分量為:紅(Red)、綠(Green)、藍(Blue)。在 RGB 模型下,圖像的每一個像素點都會存儲 R、G、B 三個分量(如下圖),每一個分量取區(qū)別的數(shù)值( 0 ~ 255 ),該像素點就能綜合呈現(xiàn)出區(qū)別的色彩。基于此,倘若按(R,G,B)的方式記錄,那樣(255,0,0)、(0,255,0)、(0,0,255)分別暗示的便是最純粹的 紅、綠、藍 。而比較特殊的,若 RGB 三個分量值均為 0,綜合得到黑色;反之,若三個分量取最大值 255,綜合得到白色。
![](https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/4e70b6566f5a4c9bbd1958213ecc6da1~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=WpJaNSHf8gSuvH4HvHv67DmXGRY%3D)
RGB 可暗示的色彩數(shù)量達到 1677 萬,這遠遠超過了人眼的感知范圍(約 1000 萬種),正因如此,RGB 被廣泛應(yīng)用于各樣表示行業(yè)。而區(qū)別行業(yè)、區(qū)別應(yīng)用場景,按照其所需的顏色范圍,又創(chuàng)立了基于 RGB 模型的、區(qū)別的色彩子空間,最平常的有 sRGB 和 Adobe RGB。
C++音視頻研發(fā)學習資料:點擊莬費領(lǐng)取→音視頻研發(fā)(資料文檔+視頻教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
sRGB 和 Adobe RGBsRGB 色彩空間由 Microsoft 在 1997 年主導制定,被廣泛應(yīng)用于表示器、數(shù)碼相機、掃描儀、投影儀等設(shè)備。大眾選購表示器時,肯定有在制品特性介紹中看到過諸如 “99% sRGB、100% sRGB” 之類的指標,其含義即為該表示器對 sRGB 色彩空間的覆蓋程度,數(shù)值越高,寓意著該表示設(shè)備所支持的色彩越豐富。而 Adobe RGB 比 sRGB 晚面世一年,由 Adobe 在 1998 年提出,它在 sRGB 的基本上增多了 CMYK 色彩空間(一種專用于印刷業(yè)的色彩空間,模型分量為青(Cyan),洋紅(Magenta),黃(Yellow),黑(Black)),Adobe RGB 跟隨著 Adobe 設(shè)計軟件整家桶被廣泛應(yīng)用于平面設(shè)計行業(yè)。
sRGB 和 Adobe RGB 的對比關(guān)于 sRGB 和 Adobe RGB 的比較,咱們能夠借助 CIE 色彩空間馬蹄圖做為參考。
如下圖,咱們將 CIE、sRGB 和 Adobe RGB 的色彩范圍換算到同一個平面上。最外圍的色彩區(qū)域為 CIE 色彩空間,三角形部分為 sRGB 和 Adobe RGB。能夠看到,sRGB 和 Adobe RGB 的色彩范圍均小余 CIE,然則 Adobe RGB 的覆蓋范圍比 sRGB 更廣,尤其是在綠色區(qū)域覆蓋得更加多(sRGB 大約能覆蓋 35% 的 CIE,Adobe RGB 則為 50%),這使得 Adobe RGB 在攝像、圖像處理、保真方面更游刃有余。
![](https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/17c3a1c737074035baa53c52efab99c1~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=6JM2qjXXfE3fuHlpXZlMRMVHwA4%3D)
sRGB 和 Adobe RGB 的比較
不外,即便 Adobe RGB 相較 sRGB 更出色,在應(yīng)用范圍上依舊是 sRGB 更廣。做為 “先輩”,抱著 Windows 的大腿,sRGB 憑借 Windows 渾厚的用戶基本得到了廣泛的普及。如今,互聯(lián)網(wǎng)上絕大都數(shù)內(nèi)容,例如視頻網(wǎng)站的影視劇、例如這篇文案中的照片,基本都是以 100% sRGB 的色彩標準進行表示的。一張 Adobe RGB 標準的照片倘若放在網(wǎng)頁上觀看,其顏色可能會變淡(相針對原始色彩),這是由于 Adobe RGB 照片的色彩超過了網(wǎng)頁的顯色標準,部分色彩信息顯現(xiàn)了丟失。但即便如此,針對大部分用戶來講,平常場景運用 sRGB 已然足夠,當需要更廣的色域以達到更優(yōu)秀的色彩效果時(例如專業(yè)平面設(shè)計 / 攝影場景),才有必要思慮 Adobe RGB。
從 RGB 兩種子色彩空間的應(yīng)用場景看,不得不承認 RGB 和大眾的平常生活已經(jīng)是息息關(guān)聯(lián)。然則,即便在采集、表示等用途上 RGB “一家獨大”,當聚焦到視頻處理行業(yè)時,它卻有些施展不開手腳。
RGB 在暗示顏色時有一個特點,那便是其三個通道分量是關(guān)聯(lián)的,缺一不可。亦即每一個像素點必須同期存儲 R、G、B 三個分量值才可正確暗示顏色,這引起它不方便于做編碼壓縮,倘若用于存儲或傳輸,會占用海量的空間和帶寬(關(guān)于空間和帶寬的重要性,咱們在 音頻必知必會 - 音頻編解碼中已有過討論)??臻g和帶寬問題,在一幀圖像上或許能夠勉強忍受,但在視頻資源上,就非常嚴峻了(時長 1s 的視頻資源,通常包括數(shù)十幀的圖像,空間和帶寬占用將呈數(shù)十倍增長)。
因此呢,咱們還需要其他的色彩空間,來替代 RGB 用于視頻處理行業(yè),而這便是接下來要和大眾介紹的,YUV 色彩空間。
2、YUV
既然 RGB 三個分量的關(guān)聯(lián)性,制約了其在視頻行業(yè)的應(yīng)用,做為其上位選取的 YUV 自然不可重蹈覆轍。YUV 色彩空間亦有三個分量 Y、U、V,但和 RGB 區(qū)別的是,其三個分量并非都參與顏色的暗示。
YUV 的三個分量中, Y 分量用于暗示明亮度(Luminance),決定一個像素是明、或暗(能夠理解為是黑、或白)以及其明暗的程度。咱們僅記錄明暗區(qū)別的 Y 分量,就能暗示出圖像的總體輪廓( 如下圖中的 【Y】)。而 U、V 分量暗示色度(Chrominance),用于定義色彩和飽和度( 如下圖中的 【U】【V】)。一個記錄了 Y 分量的像素,再添加上 U、V 分量,圖像輪廓中就填充了 “黑白、明暗” 之外的其他色彩。
![](https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/d2ba1c2c36a04d499f0811a31137f840~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=9Jg%2B9ioCoQUsOSmIBRSamN0dh3M%3D)
C++音視頻研發(fā)學習資料:點擊莬費領(lǐng)取→音視頻研發(fā)(資料文檔+視頻教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
YUV 和 其三個分量
不難發(fā)掘,即使無 U、V 分量,僅憑 Y 分量咱們亦能 “識別” 出一幅圖像的基本內(nèi)容,只不外此時呈現(xiàn)的是一張黑白圖像。而 U、V 分量為這些基本內(nèi)容賦予了色彩,黑白圖像演變?yōu)榱瞬噬珗D像。這聽起來是不是有些似曾相識呢?這其實亦是黑白電視和彩色電視之間的關(guān)系。
YUV 是在黑白、彩色電視的過渡時期應(yīng)運而生的,它這種既能夠完整記錄彩色信號,又能經(jīng)過僅記錄 Y 通道信號來暗示黑白畫面的特性,很好地處理了黑白電視與彩色電視的兼容互通問題。并且,因為人眼針對亮度(Y)相較于色度(U、V)更高、更敏銳,咱們針對區(qū)別明亮度的識別能力,遠遠超過對區(qū)別色度的識別能力。這寓意著,咱們能夠在保存 Y 分量信息的狀況下,盡可能地減少 U、V 兩個分量的采樣,以實現(xiàn)最大限度地減少許據(jù)量,同期還能保準人眼視覺失真度最小,這針對視頻數(shù)據(jù)的存儲和傳輸是有極重裨益的。這亦是為何,YUV 相較于 RGB 更適合于視頻處理行業(yè)。
3、YUV 和 RGB 的轉(zhuǎn)換
在認識了 RGB 和 YUV 的基本知識和應(yīng)用場景后,你可能會有有些疑惑。既然在圖像采集、表示方面,咱們重點運用 RGB,然則在圖像存儲、處理、傳輸方面,咱們又要選取 YUV。而在一個完整的應(yīng)用場景中,視頻的采集、存儲、處理、 傳輸、表示等環(huán)節(jié),卻是相互相關(guān)、缺一不可的,這兒是不是會存在沖突呢?
是的,這兒的確存在兩種色彩空間的運用沖突,咱們處理沖突的方式是 “色彩空間轉(zhuǎn)換”。
RGB 與 YUV 的相互轉(zhuǎn)換,存在于視頻處理鏈路的各個必要環(huán)節(jié)。
視頻采集設(shè)備通常輸出的是 RGB 數(shù)據(jù),咱們需要將其轉(zhuǎn)換為 YUV 數(shù)據(jù)再進行后續(xù)的處理、編碼和傳輸;一樣的,表示設(shè)備經(jīng)過傳輸、解碼環(huán)節(jié)獲取到 YUV 數(shù)據(jù)后,亦需要將其轉(zhuǎn)換為 RGB 數(shù)據(jù),再進行消費展示。
關(guān)于這兩種色彩空間轉(zhuǎn)換的細節(jié),大眾暫不需要深究,但需要認識到:色彩空間轉(zhuǎn)換是一個基于 “標準” 來執(zhí)行的過程,僅有在知道標準的基本上,才可經(jīng)過必定的數(shù)學運算完成二者的相互轉(zhuǎn)換。而 “標準” 有非常多種,例如 BT.601、BT.709 等等,區(qū)別的標準會有區(qū)別的轉(zhuǎn)換公式,有興趣的朋友能夠去查閱關(guān)聯(lián)的資料做進一步認識。
關(guān)于 YUV 和 RGB ,除了要認識它們的基本原理,咱們還需要關(guān)注它們的 “采樣方式” 和 “存儲格式”?!安蓸臃绞健?和 “存儲格式” 關(guān)聯(lián)的內(nèi)容,非常重要卻亦比較繁雜,咱們將在下一篇文案中,再仔細地和大眾探討。
4、總結(jié)
本篇文案咱們重點講述圖像與色彩基本知識的第1部分,在今天的學習過程中,大眾能夠認識到視頻、圖像、像素和色彩之間的關(guān)系,亦初步認識了兩種重要的色彩空間:RGB 和 YUV,以及它們的基本原理、差異和聯(lián)系。
接下來,咱們還是經(jīng)過一個思維導圖,整理一下所有的內(nèi)容:
![](https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/8e4a4ccd2c3d4e21ad200e6160bdeb14~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=YBw8TnK1soplQYRNB%2FK9V%2BI0Vc8%3D)
![](https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/1dd54d1c591349d7977f82bde8ed9916~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1737304787&x-signature=i4zXI4i4hfzhJ145MljjIV36lwE%3D)
倘若你對音視頻研發(fā)感興趣,或對本文的有些闡述有自己的看法,能夠在下方的留言框,一塊探討。