iOS YUV與RGB&YUV算法

數字媒體壓縮

????????為縮小數字媒體文件的大小,我們需要對其使用壓縮技術,一般來說我們所欣賞的媒體內容都進行過一定程度的壓縮,無論在電視上的視頻,藍光碟片,網頁上的視頻流還是沖iTunes Store購買的資源,我們其實都是和這些內容的原始文件的壓縮格式在打交到,對數字媒體進行壓縮可以大幅度縮小文件的尺寸,但是通常會在資源的質量上有小幅可見的衰減,

色彩的二次采樣

????????視頻數據是使用稱之為YCbCr顏色模式,它也常稱為YUV,雖然YUV術語并不準確,但是讀起來比較方便,大部分的軟件開發者都更熟悉RGB顏色模式,即每個像素點都由紅,綠,藍三個顏色組合而成,YCbCr或者是YUV則使用色彩(顏色)通道UV替換了像素的亮度通道.

此圖來源于AVFoundation

????????從上圖中我們可以看到圖片的細節都保存在亮度的通道中,假設世界上沒有陽光,我們的眼睛是看不到任何的東西,如果去除亮度,剩下的就是一副灰度圖片,我們在看整合的色彩通道中關于圖片的所有細節都丟失了,這是由于我們眼睛對亮度的敏感度要高于顏色,所以,在YUV中,我們可以通過大幅減少存儲在每個像素點中的顏色信息,而不致于圖片的質量嚴重受損,這個減少顏色數據的過程就稱之為色彩的二次采樣。

我們平時所說的4:4:4和4:2:2以及4:2:0到底指的是什么,以及它的由來?

????????色彩的二次采樣一般發生在取樣時,一些專業的相機以4:4:4的參數捕捉圖像,但大部分情況下對于圖片的拍攝使用4:2:2的方式進行的,面向消費者的攝像頭裝置,比如iPhone手機上的攝像頭,通常是以4:2:0的方式進行拍攝,即使經過大量層級的二次抽樣之后仍然可以捕捉到高質量的圖片,iPhone手機上拍出來的高質量視頻就是很好的例證,

1.RGB的顏色編碼

????????RGB?三個字?分別代表了 紅(Red)、綠(Green)、藍(Blue),這三種顏?稱為?三原?,將它們以不同的?例相加,可以產?多種多樣的顏?。


一個像素點的RGB

????????在圖像顯示中,?張1280 * 720???的圖?,就代表著它有1280 * 720?個像素點。其中每?個像素點的顏?顯示都采?RGB?編碼?法,將RGB?分別取不同的值,就會展示不同的顏?。

????????RGB?圖像中,每個像素點都有紅、綠、藍三個原?,其中每種原?都占?8 bit,也就是?個字節,那么?個像素點也就占?24 bit,也就是三個字節。

? ? ? ? ?張1280 * 720???的圖?,就占?1280 * 720 * 3 / 1024 / 1024 = 2.63 MB?存儲空間

2.YUV的顏色編碼

? ??????YUV?顏?編碼采?的是?明亮度?和??度?來指定像素的顏?。其中,Y?表示明亮度(Luminance、Luma),?U?和V?表示?度(Chrominance、Chroma)。??度?定義了顏?的兩個??:?調和飽和度


YUV表示一個像素點

????????和RGB?表示圖像類似,每個像素點都包含Y、U、V?分量。但是它的Y?和UV?分量是可以分離的,如果沒有UV?分量?樣可以顯示完整的圖像,只不過是??的。對于YUV?圖像來說,并不是每個像素點都需要包含了Y、U、V?三個分量,根據不同的采樣格式,可以每個Y?分量都對應??的UV?分量,也可以?個Y?分量共?UV?分量

傳說中的4:4:4

? ? ? ? 在4:4:4的模式下,色彩的全部信息被保全下來,如圖:

相鄰的四個像素點

????????相鄰的四個像素點ABCD,每個像素點有自己的YUV,在色彩的二次采樣的過程中,分別保留自己的YUV,稱之為4:4:4;

傳說中的4:2:2

四個相鄰的像素點

????????如圖ABCD四個相鄰的像素點,A(Y0,U0,V0),B(Y1,U1,V1),C(Y2,U2,V2),D(Y3,U3,V3),當二次采樣的時候,A采樣的時候保留(Y0,U0),B保留(Y1,V1),C保留(Y2,U2),D保留(Y3,V3);也就是說,每個像素點的Y(明亮度)保留其本身的值,而U和V的值是每間隔一個采樣,而最終就變成:

映射后的結果

? ??????也就是說A借B的V1,B借A的U0,C借D的V3,D借C的U2,這就是傳說中的4:2:2,?張1280 * 720???的圖?,在YUV 4:2:2?采樣時的??為:

(1280 * 720 * 8 + 1280 * 720 * 0.5 * 8 * 2)/ 8 / 1024 / 1024 = 1.76 MB?。

? ??????可以看到YUV 4:2:2?采樣的圖像?RGB?模型圖像節省了三分之?的存儲空間,在傳輸時占?的帶寬也會隨之減少

傳說中的4:2:0

? ? ? ? 在上面說到的4:2:2中我們可以看到相鄰的兩個像素點的UV是左右互相借的,那可不可以上下左右借了,答案當然是可以的,


4:2:0流程

????????YUV 4:2:0?采樣,并不是指只采樣U?分量?不采樣V?分量。?是指,在每??掃描時,只掃描?種?度分量(U?或者V),和Y?分量按照2 : 1?的?式采樣。?如,第??掃描時,YU?按照2 : 1?的?式采樣,那么第??掃描時,YV?分量按照2:1?的?式采樣。對于每個?度分量來說,它的?平?向和豎直?向的采樣和Y?分量相?都是2:1?。假設第??掃描了U?分量,第??掃描了V?分量,那么需要掃描兩?才能夠組成完整的UV?分量

? ??????從映射出的像素點中可以看到,四個Y?分量是共?了?套UV?分量,?且是按照2*2?的??格的形式分布的,相?YUV 4:2:2?采樣中兩個Y?分量共??套UV?分量,這樣更能夠節省空間。?張1280 * 720???的圖?,在YUV 4:2:0?采樣時的??為:

(1280 * 720 * 8 + 1280 * 720 * 0.25 * 8 * 2)/ 8 / 1024 / 1024 = 1.32 MB 相對于2.63M節省了一半的空間

RGB — YUV?顏?編碼轉換

????????對于圖像顯示器來說,它是通過RGB?模型來顯示圖像的,?在傳輸圖像數據時?是使?YUV?模型,這是因為YUV?模型可以節省帶寬。因此就需要采集圖像時將RGB?模型轉換到YUV?模型,顯示時再將YUV?模型轉換為RGB?模型。

? ??????RGB?到YUV?的轉換,就是將圖像所有像素點的R、G、B?分量轉換到Y、U、V?分量。

? ??????Y = 0.299 * R + 0.587 * G + 0.114 * B?

????????U = -0.147 * R - 0.289 * G + 0.436 * B?

????????V = 0.615 * R - 0.515 * G - 0.100 * B

????????R = Y + 1.14 * V?

????????G = Y - 0.39 * U - 0.58 * V?

????????B = Y + 2.03 * U

上面為固定的轉換公式,不做死記硬背,如有錯誤,請大佬批評教育

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370