視頻 --- 壓縮基礎(chǔ)

壓縮方式

  • 有失真的壓縮
    資料無(wú)法100% 還原,例如: mp3,jpg

  • 無(wú)失真壓縮
    資料壓縮后可以100%的還原出來(lái),例如:zip

** 為什么會(huì)存在有失真的壓縮?**
主要是因?yàn)槿说难劬投潇`敏度不高,一張圖片少掉一些高頻的內(nèi)容,人眼無(wú)法感知,因此并不影響圖片的展示。又例如音樂(lè),音樂(lè)高頻部分超過(guò)人耳可以識(shí)別的范圍,這部分?jǐn)?shù)據(jù)可以去掉。因此有了mp3 等音頻壓縮算法。

色域

視頻壓縮的時(shí)候,用的色域是YCbCr 。 YCbCr其中Y是指亮度分量,Cb指藍(lán)色色度分量,而Cr指紅色色度分量。查看更多

它們之間的關(guān)系是:

Y = 0.257*R+0.564*G+0.098*B+16
Cb = -0.148*R-0.291*G+0.439*B+128
Cr = 0.439*R-0.368*G-0.071*B+128

** 不是有RGB了嗎?什么還用YCbCr ?**
人眼對(duì)亮度是比較敏感的,對(duì)彩度的敏感度不高。因此,亮度的壓縮率可以降低,彩度的壓縮率可以提高。人眼對(duì)壓縮后的圖片與原圖,在感官上差異就會(huì)大大減少。

另外它將亮度信息(Y)與色彩信息(UV)分離,沒(méi)有UV信息一樣可以顯示完整的圖像,只不過(guò)是黑白的,這樣的設(shè)計(jì)很好地解決了彩色電視機(jī)與黑白電視的兼容問(wèn)題。并且,YUV不像RGB那樣要求三個(gè)獨(dú)立的視頻信號(hào)同時(shí)傳輸,所以用YUV方式傳送占用極少的頻寬。


圖片壓縮

  • 首先圖片會(huì)被切分為一些8 * 8的格子,每個(gè)格子都會(huì)走一次上圖的流程。
  • DCT 轉(zhuǎn)換,主要是把圖像從空間域轉(zhuǎn)為頻域,這樣子可以有效的分離出高頻的數(shù)據(jù),用于過(guò)濾。什么是高頻的數(shù)據(jù):以聲音為例就是那些很尖銳的聲音。圖像的話就是指那些變動(dòng)很大的數(shù)據(jù),例如熊貓的黑白分割部分,由于變化很大,所以這就是高頻部分。如果兩個(gè)像素之間的差別很小,就屬于低頻部分。
    ![Uploading Screen Shot 2017-07-25 at 8.52.35 AM_976479.png . . .]
  • Quantization 是一種失真壓縮,簡(jiǎn)單來(lái)說(shuō)就是把每個(gè)值都除以一個(gè)固定的數(shù),然后在de code 端相對(duì)應(yīng)的乘以這個(gè)固定的數(shù),恢復(fù)數(shù)據(jù),但是此時(shí)數(shù)據(jù)只是一個(gè)近似的數(shù)值。例如數(shù)字100 ,除以10 ,會(huì)得到10 。但是102 的話,結(jié)果也是10 。所以在decode 的時(shí)候,無(wú)法知道真正的數(shù)據(jù)是什么,只能拿到近似值。
  • Entropy encoder 把失真壓縮后的數(shù)據(jù)做無(wú)失真壓縮

要恢復(fù)圖片只需要執(zhí)行的反操作,得到的圖片與原圖是有區(qū)別的,只要人眼無(wú)感知就好。

下面看一下每一步的是怎樣的一個(gè)過(guò)程:

DCT

DCT 可以理解為一個(gè)坐標(biāo)軸轉(zhuǎn)換,是一種Transform Coding。

  • Transform Coding的目標(biāo)

    • 減少相鄰信號(hào)的相關(guān)性
    • 使能量集中,高頻信號(hào)與低頻信號(hào)都會(huì)相對(duì)集中
  • Transfrom 本身沒(méi)有任何壓縮效果

  • Transform 的目的是為了做Quantization

  • 常見(jiàn)的Transfrom 方式:liner transforms,fourier transform,....

上圖是一個(gè)8 * 8的block,每一個(gè)格子相當(dāng)于一個(gè)pixel。經(jīng)過(guò)DCT后,仍然是一個(gè)8 * 8 的block ,但是不同的是,原本表示的是空間維度的值,轉(zhuǎn)換后表示的是頻率維度的值。

高頻部分集中在右下角,低頻部分集中在左上角。高頻部分表示不是很重要的數(shù)據(jù),接著把高頻部分的數(shù)據(jù)變成0,就會(huì)有一個(gè)不錯(cuò)的壓縮效果。這就是Quantization要做的事情。

Quantization Matrix 表示每一個(gè)DCT的數(shù)據(jù)要除以一個(gè)怎樣的數(shù)。可以看到Matrix 左上角是比較小的,右下角是比較大的數(shù)。

因?yàn)樵贒CT左上角是比較重要的數(shù)據(jù),所以除以比較小的數(shù),讓失真沒(méi)那么嚴(yán)重。右下角的數(shù)相對(duì)來(lái)說(shuō)沒(méi)那么重要,所以可以除以一個(gè)比較大的數(shù)。

下圖中的左圖就是經(jīng)過(guò)Quantization 后的DCT數(shù)據(jù),可以看到右下角的數(shù)基本上都變?yōu)?。數(shù)據(jù)為0 的部分的壓縮率將為變得非常高!

接著把數(shù)據(jù)從二維變?yōu)橐痪S。

最后就是做Entropy encode ,得到的最終圖片的數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容