一.什么是編碼致扯?
1.因?yàn)槲唇?jīng)壓縮的數(shù)字視頻的數(shù)據(jù)量巨大翁脆,在相對(duì)有限的存儲(chǔ)空間和傳輸帶寬條件下剩燥,其在互聯(lián)網(wǎng)上的傳輸會(huì)有極大的不便尚镰,所以在視頻的傳輸之前阀圾,會(huì)對(duì)視頻數(shù)據(jù)和音頻數(shù)據(jù)進(jìn)行一定算法的壓縮,這個(gè)過(guò)程又稱為編碼(壓縮)狗唉。
? ? ? 2. 壓縮的實(shí)質(zhì)是去除冗余信息:
? ? ? ? a.空間冗余:圖像相鄰像素之間有較強(qiáng)的相關(guān)性
簡(jiǎn)單講初烘,同一張圖像中,有很多像素點(diǎn)表示的信息是完全一樣的分俯,如果對(duì)每一個(gè)像素進(jìn)行單獨(dú)的存儲(chǔ)肾筐,必然會(huì)非常浪費(fèi)空間,也完全沒有必要
? ? ? ? ? ? 如圖:
? ? ? b.時(shí)間冗余:視頻序列的相鄰圖像之間內(nèi)容相似
? ? ? ? ?時(shí)間冗余是指多張圖像之間缸剪,有非常多的相關(guān)性吗铐,由于一些小運(yùn)動(dòng)造成了細(xì)小差別。如果對(duì)每張圖像進(jìn)行單獨(dú)的像素存儲(chǔ)杏节,在下一張圖片中又出現(xiàn)了相同的唬渗。那么相當(dāng)于很多像素都存儲(chǔ)了多份典阵,必然會(huì)非常浪費(fèi)空間,也是完全沒有必要的镊逝。
? ? ? ? ? ?如圖:
? ? ? c.編碼冗余(信息熵冗余):如果一個(gè)圖像的灰度級(jí)編碼使用了多于實(shí)際需要的編碼符號(hào)壮啊,就稱該圖像包含了編碼冗余。編碼時(shí)一般不利用概率特性就會(huì)產(chǎn)生編碼冗余蹋半。
? ? ? ?如圖:
? ? ?如果上面圖像的像素用8位來(lái)表示他巨,我們就說(shuō)該圖像存在著編碼冗余,因?yàn)樵搱D像的像素只有兩個(gè)灰度减江,用一位即可表示,多余位數(shù)是浪費(fèi)捻爷。
? ? ? d.視覺冗余:人的視覺系統(tǒng)對(duì)某些細(xì)節(jié)不敏感辈灼,例如在高亮度下,人的視覺靈敏度下降也榄,對(duì)灰度值的表示就可以粗糙一些巡莹。對(duì)于太強(qiáng)太弱的聲音,如果超出了“閾值”甜紫,人們聽覺感受也會(huì)被掩蔽降宅。利用感官上的這些特性,也可以壓縮掉部分?jǐn)?shù)據(jù)而不被人們感知(覺察)囚霸。
e.結(jié)構(gòu)冗余:在某些場(chǎng)景中腰根,存在著明顯的圖像分布模式,這種分布模式稱為結(jié)構(gòu)拓型。圖像中重復(fù)出現(xiàn)或相近的紋理結(jié)構(gòu)额嘿,結(jié)構(gòu)可以通過(guò)特定的算法來(lái)生成。例如:方格狀的地板劣挫,蜂窩册养,磚墻,草席等等圖像結(jié)構(gòu)上存在冗余压固。已知分布模式球拦,就可以用算法生存圖像。
?
?? ??
?? ? ?3.編解碼器:
? ? ? ?編碼器:壓縮信號(hào)的設(shè)備或程序
? ? ? ?解碼器:解壓縮信號(hào)的設(shè)備或程序
? ? ? ?編解碼器:編解碼器對(duì)
? 4.壓縮系統(tǒng)的組成
? ? ? (1)編碼器中的關(guān)鍵技術(shù)
? ? ? (2)編解碼中的關(guān)鍵技術(shù)
二.編碼發(fā)展史:
? ? ? ? 視頻編碼標(biāo)準(zhǔn)主要有兩大系統(tǒng):MPEG和ITU-T
? ??MPEG標(biāo)準(zhǔn)由MPEG制度:
? ? ? ? MPEG-1|MPEG-2|(MPEG-3)|MPEG-4|MPEG-7|MPEG-21
? ? ? ? ITU-T標(biāo)準(zhǔn)由VCEG制定:
? ? ? ? H.261|(H.262)|H.263|H.263v2|H.264
1984年CCITT通過(guò)了H.261視像編碼標(biāo)準(zhǔn)帐我,被稱為視頻壓縮編碼的一個(gè)里程碑坎炼。后續(xù)一些組織公布的編碼標(biāo)準(zhǔn)都基于此。H.261應(yīng)用于會(huì)議電視和可視電話焚刚。
1986年点弯,ISO和CCITT成立了聯(lián)合圖像專家組(JPEG,Joint Photographic Experts Group)矿咕,研究連續(xù)色調(diào)靜止圖像壓縮算法國(guó)際標(biāo)準(zhǔn)抢肛,1992年7月通過(guò)了JPEG標(biāo)準(zhǔn)狼钮。
1988年ISO/IEC信息技術(shù)聯(lián)合委員會(huì)成立了活動(dòng)圖像專家組(MPEG,Moving Picture Expert Group)捡絮。1991年公布了MPEG-1視頻編碼標(biāo)準(zhǔn)熬芜,碼率為1.5Mpbs,主要應(yīng)用于家用VCD福稳;1994年11月涎拉,公布了MPEG-2標(biāo)準(zhǔn),用于數(shù)字視頻廣播(DVB)的圆、家用DVD的視頻壓縮以及高清晰度電視(HDTV)鼓拧。碼率從4Mbps、15Mbps......直至100Mbps分別用于不同級(jí)別的視頻壓縮中越妈。
? ? ? 1995年季俩,ITU-T推出了H.263標(biāo)準(zhǔn),用于低于64Kbps的低碼率視頻傳輸梅掠,如PSTN信道中可視會(huì)議酌住、多媒體通信等等。
1999年12月阎抒,ISO/IEC通過(guò)了“視聽對(duì)象的編碼標(biāo)準(zhǔn)”——MPEG4酪我,它除了定義視頻壓縮編碼標(biāo)準(zhǔn)外,還強(qiáng)調(diào)了多媒體通信的交互性和靈活性且叁。
2003年3月都哭,ITU-T和ISO/IEC正式公布了H.264視頻壓縮標(biāo)準(zhǔn),不僅顯著提高了壓縮比谴古,而且具有良好的網(wǎng)絡(luò)親和性质涛,加強(qiáng)了對(duì)IP網(wǎng),移動(dòng)網(wǎng)的誤碼和丟包處理掰担。
2013年2月汇陆,ITU-T VCEG(Video Coding Experts Group的簡(jiǎn)稱,也直接可稱為VCEG带饱,中文可以翻譯成視頻編碼專家組)圍繞H.264編碼標(biāo)準(zhǔn)毡代,保留了原來(lái)的某些技術(shù),同時(shí)對(duì)一些相關(guān)技術(shù)進(jìn)行了改進(jìn)勺疼,提高壓縮效率教寂、提高魯棒性和錯(cuò)誤恢復(fù)能力、減少實(shí)時(shí)的時(shí)延执庐、減少信道獲取時(shí)間和隨機(jī)接入時(shí)延酪耕、降低復(fù)雜度等。
三.編碼基本原理:
1.預(yù)測(cè)編碼:
? ? ? 根據(jù)圖像數(shù)據(jù)的空間或時(shí)間相關(guān)性轨淌,用已傳輸?shù)南袼貙?duì)當(dāng)前正在編碼的像素進(jìn)行預(yù)測(cè)迂烁,然后對(duì)預(yù)測(cè)值與真實(shí)值的差——預(yù)測(cè)誤差q看尼,進(jìn)行編碼和傳輸。這個(gè)差值比原始真實(shí)值碼字要小的多盟步,從而實(shí)現(xiàn)視頻數(shù)據(jù)壓縮的目的藏斩。
接收端把差值q 與預(yù)測(cè)值(事先已定義好,比當(dāng)前X 早到達(dá)接收端像素却盘,如A)相加狰域,恢復(fù)原始值X。歸納如下:
編碼端:X-A=q
解碼端:q+A=X
其中黄橘,x(n)為當(dāng)前像素的實(shí)際值兆览,p(n)為其預(yù)測(cè)值,d(n)為差值或殘差值塞关。該差值經(jīng)量化后得到殘差量化值q(n)拓颓。預(yù)測(cè)值p(n)經(jīng)預(yù)測(cè)器得到,預(yù)測(cè)器輸入為已存儲(chǔ)在預(yù)測(cè)器內(nèi)前面的各像素描孟,和當(dāng)前值,它們的加權(quán)和即為下一個(gè)預(yù)測(cè)器輸出砰左。由圖3.2 可見匿醒,解碼輸出x’(n)與原始信號(hào)x(n)之間有個(gè)因量化而產(chǎn)生的量化誤差。
幀內(nèi)預(yù)測(cè)編碼(空間冗余):當(dāng)前像素X(設(shè)為立即傳送的像素)可用前一個(gè)像素a 或b缠导、c廉羔,或三者的線性加權(quán)來(lái)預(yù)測(cè)。這些a僻造,b憋他,c 被稱為參考像素。在實(shí)際傳送時(shí)髓削,把實(shí)際像素X(當(dāng)前值)和參考像素(預(yù)測(cè)值)相減竹挡,簡(jiǎn)單起見傳送X-a,到了接收端再把(X-a)+a=X,由于a 是已傳送的(在接收端被存儲(chǔ))立膛,于是得到當(dāng)前值揪罕。由于X 與a 相似,(X-a)值很小宝泵,視頻信號(hào)被壓縮好啰,這種壓縮方式稱為幀內(nèi)預(yù)測(cè)編碼。
幀間預(yù)測(cè)編碼(時(shí)間冗余):參照一段時(shí)間內(nèi)圖像的統(tǒng)計(jì)結(jié)果表明儿奶,在相鄰幾幅圖像畫面中框往,一般有差別的像素只有10%以內(nèi)的點(diǎn),亮度差值變化不超過(guò)2%,而色度差值的變化只有1%以內(nèi)闯捎。所以對(duì)于一段變化不大圖像畫面椰弊,我們可以先編碼出一個(gè)完整的圖像幀A许溅,隨后的B幀就不編碼全部圖像,只寫入與A幀的差別男应,這樣B幀的大小就只有完整幀的1/10或更心炙尽!B幀之后的C幀如果變化不大沐飘,我們可以繼續(xù)以參考B的方式編碼C幀游桩,這樣循環(huán)下去。這段圖像我們稱為一個(gè)GOP(GOP就是有相同特點(diǎn)的一段數(shù)據(jù))耐朴,當(dāng)某個(gè)圖像與之前的圖像變化很大借卧,無(wú)法參考前面的幀來(lái)生成,那我們就結(jié)束上一個(gè)GOP筛峭,開始下一段GOP铐刘,也就是對(duì)這個(gè)圖像生成一個(gè)完整幀A1,隨后的圖像就參考A1生成影晓,只寫入與A1的差別內(nèi)容镰吵,循環(huán)往復(fù)。
運(yùn)動(dòng)估計(jì)與運(yùn)動(dòng)補(bǔ)償:運(yùn)動(dòng)估計(jì)是尋找當(dāng)前編碼的塊在已編碼圖像(稱為參考幀)中的最佳對(duì)應(yīng)塊挂签,并且計(jì)算出對(duì)應(yīng)塊的偏移(即運(yùn)動(dòng)矢量)疤祭。假設(shè)當(dāng)前幀為P,參考幀為Pr饵婆,當(dāng)前編碼塊為B勺馆,在Pr中尋找與B塊相減殘差最小的塊Br,Br稱為B的最佳匹配塊侨核,這個(gè)過(guò)程即為運(yùn)動(dòng)估計(jì)草穆。
運(yùn)動(dòng)矢量和經(jīng)過(guò)運(yùn)動(dòng)匹配后得到的預(yù)測(cè)誤差共同發(fā)送到解碼端,在解碼端按照運(yùn)動(dòng)矢量指明的位置搓译,從已經(jīng)解碼的鄰近參考幀圖像中找到相應(yīng)的塊或宏塊悲柱,和預(yù)測(cè)誤差相加后就得到了塊或宏塊在當(dāng)前幀中的位置。通過(guò)運(yùn)動(dòng)估計(jì)可以去除幀間冗余度侥衬,使得視頻傳輸?shù)谋忍財(cái)?shù)大為減少诗祸,因此,運(yùn)動(dòng)估計(jì)是視頻壓縮處理系統(tǒng)中的一個(gè)重要組成部分轴总。
? ? ? ?如上圖所示直颅,B*與B在圖像中的坐標(biāo)位置相同,運(yùn)動(dòng)矢量(MV怀樟,Montion Vector)就是Br左上角坐標(biāo)(xr功偿,yr)減去B*左上角坐標(biāo)(x,y)等于(xr-x,yr-y)。Br塊就是B塊的參考?jí)K械荷,Br的像素值就作為B塊像素的預(yù)測(cè)值共耍。
? ? ? ? 運(yùn)動(dòng)補(bǔ)償則是根據(jù)運(yùn)動(dòng)矢量和幀間預(yù)測(cè)方法,球的當(dāng)前幀的估計(jì)值的過(guò)程吨瞎。它是對(duì)當(dāng)前圖像的描述痹兜,旨在說(shuō)明當(dāng)前圖像的每一塊像素如何由參考圖像的像素塊得到。
2.變換編碼
大量統(tǒng)計(jì)表明颤诀,視頻信號(hào)中包含著能量上占大部分的直流和低頻成分字旭,即圖像的平坦部分,也有少量的高頻成分崖叫,即圖像的細(xì)節(jié)遗淳。因此,可以用另一種方法進(jìn)行視頻編碼心傀,將空間信號(hào)的能力集中到頻域的一小部分低頻系數(shù)屈暗,能量小的系數(shù)可通過(guò)量化去除,而不會(huì)嚴(yán)重影響重構(gòu)圖像的質(zhì)量脂男。將圖像經(jīng)過(guò)某種數(shù)學(xué)變換后养叛,得到變換域中的圖像(如下圖),其中u宰翅,v 分別是空間頻率坐標(biāo)一铅。如圖所示,用“o”表示的低頻和直流占圖像能量中的大部分堕油,而高頻成分(用“×”表示)則是少量的,于是可用較少的碼表示直流低頻以及高頻肮之,而“O”則不必用碼掉缺,結(jié)果完成了壓縮編碼。
變換域思想
3.量化
所謂量化就是將含有大量的數(shù)據(jù)集合映射到含有少量的數(shù)據(jù)集合中戈擒。
4.熵編碼
? ? ? ? 熵編碼是一種無(wú)損壓縮眶明,熵指的是失幀的程度,它的基本思想是這樣的筐高,比如一幅512×512像素的圖素搜囱,每個(gè)像素值用一個(gè)字節(jié)表示,分析每個(gè)像素值出現(xiàn)的概率柑土,把出現(xiàn)的概率大的值用少于一個(gè)字節(jié)的字符表示蜀肘,而把出現(xiàn)概率小的值用多余一個(gè)字節(jié)的字符表示。這樣平均每個(gè)像素所占的位數(shù)就少于一個(gè)字節(jié)稽屏,從而達(dá)到壓縮數(shù)據(jù)的目的扮宠。比如我們常用的電報(bào)碼,先對(duì)26個(gè)英文字母進(jìn)行出現(xiàn)的概率進(jìn)行統(tǒng)計(jì)狐榔,認(rèn)為E字母出現(xiàn)的概率最大坛增,Z字母出現(xiàn)的概率最小获雕。則在發(fā)電報(bào)的時(shí)候代表E的是點(diǎn)擊最短的一個(gè)“.”,代表Z的是其中點(diǎn)擊最長(zhǎng)的“--”