數字媒體壓縮
????????為縮小數字媒體文件的大小,我們需要對其使用壓縮技術,一般來說我們所欣賞的媒體內容都進行過一定程度的壓縮,無論在電視上的視頻,藍光碟片,網頁上的視頻流還是沖iTunes Store購買的資源,我們其實都是和這些內容的原始文件的壓縮格式在打交到,對數字媒體進行壓縮可以大幅度縮小文件的尺寸,但是通常會在資源的質量上有小幅可見的衰減,
色彩的二次采樣
????????視頻數據是使用稱之為YCbCr顏色模式,它也常稱為YUV,雖然YUV術語并不準確,但是讀起來比較方便,大部分的軟件開發者都更熟悉RGB顏色模式,即每個像素點都由紅,綠,藍三個顏色組合而成,YCbCr或者是YUV則使用色彩(顏色)通道UV替換了像素的亮度通道.
????????從上圖中我們可以看到圖片的細節都保存在亮度的通道中,假設世界上沒有陽光,我們的眼睛是看不到任何的東西,如果去除亮度,剩下的就是一副灰度圖片,我們在看整合的色彩通道中關于圖片的所有細節都丟失了,這是由于我們眼睛對亮度的敏感度要高于顏色,所以,在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),這三種顏?稱為?三原?,將它們以不同的?例相加,可以產?多種多樣的顏?。
????????在圖像顯示中,?張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)。??度?定義了顏?的兩個??:?調和飽和度
????????和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是左右互相借的,那可不可以上下左右借了,答案當然是可以的,
????????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
上面為固定的轉換公式,不做死記硬背,如有錯誤,請大佬批評教育