多視點(diǎn)視頻編碼研究畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  畢 業(yè) 論 文</p><p><b>  多視點(diǎn)視頻編碼研究</b></p><p>  2013年 5月 20日</p><p><b>  多視點(diǎn)視頻編碼研究</b></p><p><b>  摘  要</b></p><

2、p>  本文在詳細(xì)研究JMVC編碼器(包括對(duì)JMVC代碼的閱讀調(diào)試、對(duì)各個(gè)編碼參數(shù)的提取及顯示)的基礎(chǔ)上,對(duì)JMVC編碼器進(jìn)行改進(jìn)使其在PSNR和碼率幾乎不變的情況下編碼時(shí)間明顯減少。</p><p>  本文在詳細(xì)閱讀JMVC代碼的基礎(chǔ)上,首先提取編碼參數(shù)并創(chuàng)建了一個(gè)非常直觀的編碼參數(shù)顯示界面,利用ChartDirector庫(kù)和opencv庫(kù),將所有的以幀為單位的參數(shù)都顯示在圖表之中,所有的以宏塊為單位的

3、參數(shù)都顯示在圖像控件上??梢杂^察到整個(gè)序列的碼率、PSNR等參數(shù)的整體波動(dòng)情況,并可以把一幀圖像所有運(yùn)動(dòng)矢量、宏塊劃分等信息直觀顯示在圖片上。</p><p>  然后針對(duì)JMVC代碼的運(yùn)動(dòng)估計(jì)算法,本文提出了一種新的改進(jìn)方法,以往的改進(jìn)都是通過(guò)各種方法確定菱形算法的步長(zhǎng)閾值,當(dāng)步長(zhǎng)大于閾值時(shí)即直接退出,這種方法雖然明顯減少了編碼時(shí)間,但由于減少了搜索模板的搜索范圍,PSNR和碼率也會(huì)有一定程度的下降。本文從另外

4、的角度來(lái)改進(jìn)菱形算法,即不設(shè)定某個(gè)確定的步長(zhǎng)閾值作為提前終止的條件,而是根據(jù)運(yùn)動(dòng)搜索中最優(yōu)點(diǎn)是否多次沒有變化來(lái)作為提前終止的判斷條件。另外借鑒JM模型內(nèi)的UMHexagonS算法的思想,本文還引采用入了更多地預(yù)測(cè)矢量;引入基于SAD的提前終止策略。通過(guò)以上多種方法的結(jié)合,可以實(shí)現(xiàn)在PSNR和碼率幾乎不變的情況下,編碼時(shí)間減少20%左右。</p><p>  關(guān)鍵詞:多試點(diǎn)視頻編碼,運(yùn)動(dòng)估計(jì),JMVC,視差估計(jì)&l

5、t;/p><p><b>  目 錄</b></p><p><b> ?。ㄓ校?lt;/b></p><p><b>  摘  要I</b></p><p>  ABSTRACTII</p><p><b>  目 錄1</b>&

6、lt;/p><p><b>  一、緒 論2</b></p><p> ?。ㄒ唬?課題研究的背景和意義2</p><p> ?。ǘ?多視點(diǎn)視頻編碼技術(shù)概況(以JMVC模型為例)2</p><p> ?。ㄈ?本文章節(jié)安排4</p><p>  二、單視點(diǎn)視頻編碼技術(shù)簡(jiǎn)介5</p>

7、;<p> ?。ㄒ唬?視頻編碼技術(shù)概況5</p><p> ?。ǘ?基于H.264標(biāo)準(zhǔn)的JM編碼器介紹6</p><p>  三、JMVC代碼閱讀及編碼參數(shù)提取10</p><p>  (一) JMVC代碼基本流程10</p><p> ?。ǘ?編碼參數(shù)的提取11</p><p> ?。ㄈ?/p>

8、) 編碼參數(shù)的顯示與分析13</p><p>  (四) 本章小節(jié)19</p><p>  四、各種運(yùn)動(dòng)算法的分析及比較21</p><p> ?。ㄒ唬?運(yùn)動(dòng)估計(jì)算法簡(jiǎn)介21</p><p>  (二) 運(yùn)動(dòng)算法比較平臺(tái)的搭建27</p><p> ?。ㄈ?各種運(yùn)動(dòng)估計(jì)算法實(shí)現(xiàn)和的性能分析27</p

9、><p>  五、JMVC運(yùn)動(dòng)搜索算法改進(jìn)38</p><p>  (一) JMVC中的TZsearch算法38</p><p> ?。ǘ?改進(jìn)方法38</p><p>  (三) 改進(jìn)效果39</p><p><b>  六、結(jié)論42</b></p><p>&l

10、t;b>  參考文獻(xiàn)43</b></p><p><b>  后記44</b></p><p><b>  附錄45</b></p><p><b>  一、緒 論</b></p><p>  本章首先介紹了本論文的選題背景及意義,然后介紹了單視點(diǎn)視頻編

11、碼和多視點(diǎn)視頻編碼的主要技術(shù)和研究現(xiàn)狀。</p><p> ?。ㄒ唬?課題研究的背景和意義</p><p>  多視點(diǎn)視頻是利用不同位置的攝像頭對(duì)同一場(chǎng)景進(jìn)行拍攝得到的視頻數(shù)據(jù),它包含了豐富的3D場(chǎng)景信息,可以為用戶提供傳統(tǒng)單視點(diǎn)視頻無(wú)法比擬的視覺感受。多視點(diǎn)視頻被廣泛應(yīng)用于3D電視、自由視點(diǎn)電視 (FreeViewPoint Television,F(xiàn)TV)、視頻會(huì)議、遠(yuǎn)程醫(yī)療和虛擬現(xiàn)實(shí)等

12、領(lǐng)域[1]。多視點(diǎn)視頻的數(shù)據(jù)量隨著視點(diǎn)個(gè)數(shù)的增多而成倍增加,為了解決其傳輸和存儲(chǔ)的問(wèn)題,多視點(diǎn)視頻編碼 (MultiviewVideoCoding,MVC)對(duì)多視點(diǎn)視頻數(shù)據(jù)進(jìn)行高效的壓縮。隨著新一代顯示設(shè)備的出現(xiàn)以及用戶對(duì)真實(shí)視覺感受的需求,MVC逐漸成為視頻編碼領(lǐng)域的研究熱點(diǎn)之一。</p><p>  傳統(tǒng)的視頻編碼算法主要是利用了編碼信息在時(shí)間和空間上的相關(guān)性來(lái)降低計(jì)算量。而在MVC中,多個(gè)視點(diǎn)的視頻來(lái)源于

13、同一場(chǎng)景,它們除了在視頻內(nèi)容上相似之外,還在編碼信息上具有很強(qiáng)的相關(guān)性,因此MVC可以充分利用視點(diǎn)間編碼信息的相關(guān)性來(lái)加速編碼過(guò)程。</p><p>  通過(guò)編碼參數(shù)顯示界面分析編碼器的性能,可以直觀的反映各個(gè)視點(diǎn)的碼率的大小、編碼時(shí)間的長(zhǎng)短以及每一幀的各種類型宏塊的分布、運(yùn)動(dòng)矢量和視差矢量的分布。</p><p>  從中可以找到編碼器需要改進(jìn)的方面。比如編碼時(shí)間曲線顯示I幀編碼時(shí)間遠(yuǎn)遠(yuǎn)

14、小于B幀和P幀的編碼時(shí)間,而B、P幀與I幀的最主要不同就是進(jìn)行了大量的運(yùn)動(dòng)估計(jì),因此提高運(yùn)動(dòng)估計(jì)的效率是本文減少編碼時(shí)間的關(guān)鍵;另外通過(guò)視差矢量的分布可以發(fā)現(xiàn)視差矢量的水平位移遠(yuǎn)大于垂直位移,所以搜索最優(yōu)視差矢量時(shí)的水平位移范圍要遠(yuǎn)大于垂直位移范圍等等。</p><p> ?。ǘ?多視點(diǎn)視頻編碼技術(shù)概況(以JMVC模型為例)</p><p>  JMVC模型的視點(diǎn)內(nèi)編碼部分與JM模型的架

15、構(gòu)幾乎完全相同。即幀內(nèi)預(yù)測(cè)部分、熵編碼部分的算法并沒有改變。所以并對(duì)JMVC的幀內(nèi)預(yù)測(cè)和熵編碼做單獨(dú)介紹。本小節(jié)只介紹JMVC和JM模型的主要不同。</p><p><b>  預(yù)測(cè)結(jié)構(gòu)</b></p><p>  由于JM模型模型面向單視點(diǎn),所以預(yù)測(cè)結(jié)構(gòu)是簡(jiǎn)單的IPBBIPBB........類型,其中B幀的數(shù)量可變,由于只有一個(gè)視點(diǎn),所以GOP序列是一維的,只有在

16、時(shí)間方向上的延伸。但是JMVC由于引入了視點(diǎn)間預(yù)測(cè),其預(yù)測(cè)結(jié)構(gòu)也必然發(fā)生改變。JMVC的預(yù)測(cè)結(jié)構(gòu)如下圖1.1所示</p><p>  圖1.1 JMVC的預(yù)測(cè)結(jié)構(gòu)(該圖引自文獻(xiàn)[5])</p><p>  圖中總共有八個(gè)視點(diǎn),每個(gè)視點(diǎn)的GOP長(zhǎng)度均為8(編碼時(shí)GOP長(zhǎng)度可以在配置文件中修改)。在時(shí)間方向上,該結(jié)構(gòu)采用了分層B幀結(jié)構(gòu)來(lái)提高時(shí)域預(yù)測(cè)效率;在視點(diǎn)方向上,該結(jié)構(gòu)使用了IBP預(yù)測(cè)結(jié)

17、構(gòu)來(lái)提高視點(diǎn)間預(yù)測(cè)效率。圖中T0時(shí)刻以及T8時(shí)刻各視點(diǎn)的幀只需要同時(shí)刻的參考幀就可以進(jìn)行重建,將這些幀稱為錨定幀;圖中Tl時(shí)刻到T7時(shí)刻的幀需要其它時(shí)刻的參考幀才可以進(jìn)行重建,將這些幀稱為非錨定幀。在時(shí)間方向上,錨定幀以及錨定幀和前一錨定幀之間的幀組成一個(gè)圖像組 (GOP)。視點(diǎn)S0只采用時(shí)間方向預(yù)測(cè),稱為基本視點(diǎn)(Baseview),可以直接用H.264解碼器進(jìn)行解碼,實(shí)現(xiàn)向下兼容H.264功能的要求。非基本視點(diǎn)(non-basev

18、iew)可以采用視點(diǎn)間的預(yù)測(cè)??梢栽诰幋a配置文件中設(shè)置視點(diǎn)的依賴關(guān)系(即編碼順序,比如途中的依賴關(guān)系就是0-2-1-4-3-6-5-7),某一視點(diǎn)的參考視點(diǎn)必須在該視點(diǎn)之前編碼。并且設(shè)定錨定幀和非錨定幀是否采用視點(diǎn)間預(yù)測(cè)。</p><p><b>  參考幀</b></p><p>  由于JMVC采用了視點(diǎn)間預(yù)測(cè),所以必須將當(dāng)前時(shí)刻參考視點(diǎn)的圖像放入?yún)⒖紟斜碇?,?/p>

19、后對(duì)參考幀列表中的所有參考幀(包括同一視點(diǎn)和不同視點(diǎn)的)都進(jìn)行運(yùn)動(dòng)搜索,在所有參考幀中得到一個(gè)最優(yōu)匹配塊,由于來(lái)自不同的視點(diǎn),所以采用的運(yùn)動(dòng)估計(jì)算法最好有所區(qū)別,比如在不同視點(diǎn)參考幀中加入視差矢量作為預(yù)測(cè)矢量等。而JM模型的參考幀列表中的參考幀都是來(lái)源于單一視點(diǎn),并無(wú)區(qū)別。</p><p><b>  運(yùn)動(dòng)搜索算法</b></p><p>  目前JM模型采用UMHe

20、xagonS (非對(duì)稱十字型多層次六邊形格點(diǎn)搜索算法)作為其快速搜索算法,而JMVC模型采用TZsearch算法作為其快速搜索算法。兩種算法的詳細(xì)說(shuō)明及簡(jiǎn)單比較見第三章。</p><p> ?。ㄈ?本文章節(jié)安排</p><p>  第一章介紹了課題研究的背景和意義,包括多視點(diǎn)視頻的應(yīng)用,以及多視點(diǎn)視頻編碼的主要技術(shù)和研究現(xiàn)狀。</p><p>  第二章介紹了單視

21、點(diǎn)視頻編碼的主要技術(shù)和研究現(xiàn)狀,因?yàn)閱我朁c(diǎn)編碼是多視點(diǎn)編碼技術(shù)的基礎(chǔ),而且JM模型是非常成熟的編碼器,對(duì)JM代碼的研究可以為JMVC代碼的閱讀打下良好基礎(chǔ)</p><p>  第三章利用JMVC編碼器對(duì)測(cè)試序列進(jìn)行編碼,并將各種編碼參數(shù)通過(guò)ChartDirector庫(kù)以各種圖表的形式顯示出來(lái)。根據(jù)顯示的編碼參數(shù)對(duì)JMVC編碼器性能進(jìn)行分析。</p><p>  第四章分析各種運(yùn)動(dòng)估計(jì)算法并

22、對(duì)其進(jìn)行比較,因?yàn)橐话銇?lái)說(shuō),運(yùn)動(dòng)估計(jì)是編碼器中復(fù)雜度和運(yùn)算量最高的部分,而且JMVC運(yùn)動(dòng)估計(jì)所采用的TZsearch算法的運(yùn)算復(fù)雜度非常高,速度特別慢,有較大提升空間。通過(guò)深入分析各種運(yùn)動(dòng)估計(jì)算法為優(yōu)化編碼器做基礎(chǔ)。</p><p>  第五章對(duì)編碼器進(jìn)行優(yōu)化,希望在幾乎不降低比特率和PSNR的基礎(chǔ)上加少編碼時(shí)間。主要方法有:新增預(yù)測(cè)矢量(同前一幀相同位置宏塊的MV、視差矢量)、 利用相鄰宏塊的Sad評(píng)價(jià)值作為T

23、Zsearch算法的提前退出閾值、用最優(yōu)預(yù)測(cè)適量連續(xù)三次不同步長(zhǎng)的菱形搜索模板搜索后沒有改變這一條件作為鉆石搜索的提前終止條件等。實(shí)驗(yàn)結(jié)果表明,在幾乎不降低碼率和PSNR的基礎(chǔ)上,改進(jìn)后JMVC編碼器減少編碼時(shí)間20%~25%左右</p><p>  二、單視點(diǎn)視頻編碼技術(shù)簡(jiǎn)介</p><p>  雖然多視點(diǎn)視頻編碼和傳統(tǒng)的單視點(diǎn)視頻編碼相比有較多不同,但是基本思想是一樣的,毫無(wú)疑問(wèn)單視點(diǎn)

24、編碼是多視點(diǎn)編碼的基礎(chǔ),全面了解單視點(diǎn)編碼技術(shù)對(duì)分析和改進(jìn)多視點(diǎn)編碼器的性能有很大幫助。</p><p> ?。ㄒ唬?視頻編碼技術(shù)概況</p><p>  原始視頻的數(shù)據(jù)量雖然巨大,但它們?cè)跁r(shí)間、空間、以及統(tǒng)計(jì)上都存在大量的信息冗余。從20世紀(jì)中期以來(lái),由于數(shù)據(jù)壓縮技術(shù)的發(fā)展和完善,極大的推動(dòng)了視頻編碼技術(shù)的前進(jìn)。一些經(jīng)典的視頻編碼技術(shù)隨之出現(xiàn),主要技術(shù)分為以下幾個(gè)方面[2][3]:<

25、;/p><p><b>  1.預(yù)測(cè)編碼</b></p><p>  預(yù)測(cè)編碼是根據(jù)離散信號(hào)之間存在著一定關(guān)聯(lián)性的特點(diǎn),利用前面一個(gè)或多個(gè)信號(hào)預(yù)測(cè)下一個(gè)信號(hào)進(jìn)行,然后對(duì)實(shí)際值和預(yù)測(cè)值的差(預(yù)測(cè)誤差)進(jìn)行編碼。如果預(yù)測(cè)比較準(zhǔn)確,誤差就會(huì)很小。在同等精度要求的條件下,就可以用比較少的比特進(jìn)行編碼,達(dá)到壓縮數(shù)據(jù)的目的。</p><p>  預(yù)測(cè)編碼指的是

26、利用像素的時(shí)間上或者空間上的相關(guān)性計(jì)算預(yù)測(cè)值,并對(duì)實(shí)際值和預(yù)測(cè)值之間的差值進(jìn)行編碼,如果預(yù)測(cè)比較準(zhǔn)確,誤差就會(huì)很小,因此可以用較少的比特進(jìn)行編碼。預(yù)測(cè)編碼按預(yù)測(cè)方法可以分為線性預(yù)測(cè)編碼和非線性預(yù)測(cè)編碼。線</p><p>  性預(yù)測(cè)編碼由于算法簡(jiǎn)單、易于硬件實(shí)現(xiàn),在視頻編碼中更加常見。其中最為常見的線性預(yù)測(cè)編碼方法是差分脈沖編碼調(diào)制 (DiffereniialPulse CodeModulation,DPCM)。

27、預(yù)測(cè)編碼分為幀內(nèi)預(yù)測(cè)編碼和幀間預(yù)測(cè)編碼(按預(yù)測(cè)方向劃分)。幀內(nèi)預(yù)測(cè)編碼利用幀內(nèi)已預(yù)測(cè)像素的信息,幀間預(yù)測(cè)編碼利用時(shí)間上更早編碼的幀上的像素進(jìn)行預(yù)測(cè)。通常情況下,視頻內(nèi)容變化和攝像頭運(yùn)動(dòng)都比較平緩,相鄰幀像素之間的相關(guān)性要比幀內(nèi)像素的相關(guān)性要大。因而幀間預(yù)測(cè)編碼的整體效率比幀內(nèi)預(yù)測(cè)編碼的效率要高。在幀間預(yù)測(cè)編碼中,每幀被分成若干個(gè)塊,每個(gè)塊到鄰近重建幀中搜索對(duì)應(yīng)的匹配塊,然后計(jì)算當(dāng)前塊和匹配塊在空間位置上的相對(duì)偏移量,最后對(duì)當(dāng)前塊和匹配塊

28、的殘差以及空間位置相對(duì)偏移量進(jìn)行編碼。得到的相對(duì)偏移量稱為運(yùn)動(dòng)矢量,獲取運(yùn)動(dòng)矢量的整個(gè)過(guò)程稱為運(yùn)動(dòng)估計(jì)或運(yùn)動(dòng)搜索。</p><p><b>  2.變換編碼</b></p><p>  變換編碼指的是將原本的二維空間方向上的像素值通過(guò)變換映射到到另一個(gè)正交矢量空間中,然后對(duì)轉(zhuǎn)換后的系數(shù)進(jìn)行量化和編碼。在目前視頻編碼標(biāo)準(zhǔn)中,最為常見的就是離散余弦變換 (Discret

29、ecosineTransform,DCT)。雖然DCT算法復(fù)雜度較高,但隨著一些針對(duì)DCT的快速算法(FFT)的提出,DCT很快被各種視頻編碼標(biāo)準(zhǔn)所采用。在每幀圖像在經(jīng)過(guò)幀內(nèi)和幀間預(yù)測(cè)之后,得到的殘差數(shù)據(jù)的數(shù)值已經(jīng)較小,但這些殘差數(shù)據(jù)之間仍然存在很強(qiáng)的相關(guān)性。使用DCT變換可以將殘差數(shù)據(jù)從空間域變換到頻域,大多數(shù)能量都集中在低頻部分,量化之后可以有效的解除殘差系數(shù)之間的相關(guān)性,以達(dá)到數(shù)據(jù)壓縮的目的。</p><p&g

30、t;<b>  3.嫡編碼</b></p><p>  嫡編碼的原理是利用信源的統(tǒng)計(jì)特性對(duì)數(shù)據(jù)進(jìn)行壓縮,它是一種無(wú)損壓縮編碼技術(shù)。</p><p>  常用的嫡編碼有霍夫曼編碼、算術(shù)編碼和游程編碼?;舴蚵幋a是根據(jù)變字長(zhǎng)編碼 (variableLengtnCode,VLC)理論設(shè)計(jì),它被廣泛用于視頻編碼標(biāo)準(zhǔn)?;舴蚵幋a根據(jù)輸入符號(hào)的統(tǒng)計(jì)概率大小分配不同長(zhǎng)短的碼字,使

31、用的時(shí)候需要相應(yīng)的碼表。算術(shù)編碼較霍夫曼編碼復(fù)雜,但不需要為一個(gè)符號(hào)單獨(dú)設(shè)定碼字,也不需要在通信過(guò)程中傳送碼表。當(dāng)信源各信息符號(hào)的概率分布不能確定的時(shí)候,適合于用算術(shù)編碼。H.264/AVC視頻標(biāo)準(zhǔn)就將算術(shù)編碼作為一種可選的嫡編碼方法。游程編碼也稱行程編碼,是用一個(gè)符號(hào)值替代具有相同值的連續(xù)符號(hào),以減少符號(hào)的長(zhǎng)度。在靜止圖像壓縮標(biāo)準(zhǔn)中,游程編碼經(jīng)常被用來(lái)壓縮數(shù)據(jù);在視頻編碼標(biāo)準(zhǔn)中,游程編碼與霍夫曼編碼相結(jié)合用于對(duì)DCT系數(shù)量化后的稀疏矩

32、陣進(jìn)行編碼。目前絕大部分視頻編碼器的設(shè)計(jì)都是以上述經(jīng)典視頻編碼技術(shù)為基礎(chǔ)。</p><p> ?。ǘ?基于H.264標(biāo)準(zhǔn)的JM編碼器介紹</p><p>  H.264(JM是其標(biāo)準(zhǔn)模型)是目前使用最為廣泛的單視點(diǎn)視頻編碼標(biāo)準(zhǔn),H.264采用了傳統(tǒng)基于預(yù)測(cè)和變換的混合視頻編碼架構(gòu)。與以往視頻編碼標(biāo)準(zhǔn)類似,H.264采用幀間預(yù)測(cè)技術(shù)來(lái)消除時(shí)域上視頻幀間的相關(guān)性,采用幀內(nèi)預(yù)測(cè)和變換編碼技術(shù)來(lái)

33、消除空間域上視頻數(shù)據(jù)的相關(guān)性,采用嫡編碼技術(shù)來(lái)消除統(tǒng)計(jì)域上量化系數(shù)的相關(guān)性。但H.264標(biāo)準(zhǔn)為了提高編碼效率,采用了更為細(xì)致的宏塊劃分,更為精細(xì)的運(yùn)動(dòng)估計(jì),更多的參考幀,并引入了去塊效益濾波器等先進(jìn)技術(shù)。其編碼框架如圖2.1。</p><p>  基本流程為:編碼器以宏塊為單位對(duì)輸入圖像(假設(shè)當(dāng)前幀為P幀)進(jìn)行編碼,當(dāng)前宏塊先進(jìn)行預(yù)測(cè)模式的選擇,便利幀內(nèi)、真間各種預(yù)測(cè)模式后,選擇RdCost最低的模式作為當(dāng)前模式

34、,計(jì)算當(dāng)前宏塊和參考宏塊的差值(殘差塊)并對(duì)其進(jìn)行變換、量化、編碼(如果為Direct模式,則不對(duì)殘差快進(jìn)行編碼),然后形成編碼碼流進(jìn)行存儲(chǔ)或者傳輸。另外,量化后的殘差塊經(jīng)過(guò)反量化、反變換(如果為幀間預(yù)測(cè)模式還要經(jīng)過(guò)去塊效應(yīng)濾波)后,產(chǎn)生重建圖像,以用于后續(xù)幀的預(yù)測(cè)以及PSNR的計(jì)算。</p><p>  圖2.1 H264編碼框架(該圖引自文獻(xiàn)[6])</p><p><b&

35、gt;  (1)幀間預(yù)測(cè)</b></p><p>  幀間預(yù)測(cè)是一種充分利用視頻數(shù)據(jù)的時(shí)域相關(guān)性來(lái)去除時(shí)域冗余的編碼方法,它是提高視頻編碼壓縮效率的關(guān)鍵技術(shù)[4]。H.264中的幀間預(yù)測(cè)仍然是利用已編碼幀和基于塊運(yùn)動(dòng)補(bǔ)償?shù)念A(yù)測(cè)模式,但與以往的視頻標(biāo)準(zhǔn)相比,引入了更為精細(xì)的塊劃分模式,更高像素精度的運(yùn)動(dòng)矢量以及多參考幀幀間預(yù)測(cè)。如圖2.2所示,每個(gè)亮度宏塊有4種分塊方式:16xl6,16x8,8x16和

36、8x8,并且8x8塊可以進(jìn)一步劃分成3種子塊:8x4,4x8和4x4,因此總共有7種分塊方式。</p><p>  在運(yùn)動(dòng)估計(jì)的時(shí)候,每個(gè)宏塊可以有不同大小的子塊,并且每個(gè)子塊具有單獨(dú)的運(yùn)動(dòng)矢量,因此可以更為精確的描述宏塊內(nèi)部的運(yùn)動(dòng)狀態(tài),從而降低整個(gè)宏塊的預(yù)測(cè)殘差。色度塊的劃分模式和亮度塊相同,只是色度塊的分辨率是亮度塊的一半,因此色度塊可以劃分為:8x8,8x4,4x8,4x4,4x2,2x4和2x2等7種子塊

37、,它們相應(yīng)的運(yùn)動(dòng)矢量也是亮度塊的一半。不同的宏塊劃分適應(yīng)于不同的圖像內(nèi)容,對(duì)于圖像細(xì)節(jié)豐富的區(qū)域,一般有較為精細(xì)的的宏塊劃分,對(duì)于平坦區(qū)域,宏塊劃分一般為16x16等較大的塊。</p><p>  H.264中亮度塊運(yùn)動(dòng)矢量采用了1/4像素精度,色度塊運(yùn)動(dòng)矢量的采用了1/8像素精度。而之前的視頻編碼標(biāo)準(zhǔn)(H.263和MPEG一4)亮度塊運(yùn)算矢量只采用半像素精度,色度塊運(yùn)動(dòng)矢量只采用1/4像素精度。由于H.264采

38、用了更高精度的運(yùn)動(dòng)矢量,因此可以提供更為精細(xì)的運(yùn)動(dòng)補(bǔ)償,補(bǔ)償之后得到的殘差也更小。另外在1/2像素和1/4像素進(jìn)行插值的過(guò)程中,H.264采用了6階有限脈沖響應(yīng)濾波器,可以有效改善運(yùn)動(dòng)補(bǔ)償?shù)男阅?。H.264除了采用以上精細(xì)塊劃分和更高精度運(yùn)動(dòng)矢量之外,還支持多參考幀預(yù)測(cè)。運(yùn)動(dòng)估計(jì)不再局限于前一幀或后一幀,可以在選擇前向或后向多個(gè)不同參考幀中進(jìn)行搜索,從而提高運(yùn)動(dòng)估計(jì)的準(zhǔn)確性。</p><p>  圖2.2 宏

39、塊劃分方式(該圖引自文獻(xiàn)[5])</p><p><b>  (2)幀內(nèi)預(yù)測(cè)</b></p><p>  在之前的視頻編碼標(biāo)準(zhǔn)中,宏塊進(jìn)行幀內(nèi)編碼的時(shí)候,都是直接對(duì)其原始像素進(jìn)行DCT變換,沒有考慮空間上的相關(guān)性進(jìn)行幀內(nèi)預(yù)測(cè),整體壓縮效果不是太好。為了提高幀內(nèi)編碼效率,H.264引入了幀內(nèi)預(yù)測(cè)編碼。它利用了當(dāng)前宏塊周圍已重建的像素值從空間方向預(yù)測(cè)對(duì)當(dāng)前宏塊的像素值,可

40、以很好的降低像素值的相關(guān)性[5]。H.264中亮度塊可以分16x16塊和4x4塊兩類大小的塊進(jìn)行幀內(nèi)預(yù)測(cè)。16xl6亮度塊有4種預(yù)測(cè)模式:垂直預(yù)測(cè),水平預(yù)測(cè),DC預(yù)測(cè)和平面預(yù)測(cè),它適合于對(duì)圖像中平坦區(qū)域進(jìn)行預(yù)測(cè)。4x4亮度塊具有9種預(yù)測(cè)模式:垂直預(yù)測(cè)、水平預(yù)測(cè)、DC預(yù)測(cè)、下左對(duì)角線預(yù)測(cè)、下右對(duì)角線預(yù)測(cè)、右垂直預(yù)測(cè)、下水平水平、左垂直預(yù)測(cè)、上水平預(yù)測(cè)[4]。4x4亮度塊預(yù)測(cè)模式更為精細(xì),適合于對(duì)圖像中紋理豐富區(qū)域進(jìn)行預(yù)測(cè)。</p&g

41、t;<p><b>  (3)熵編碼</b></p><p>  H.264使用了三種熵編碼方法:基于上下文的自適應(yīng)變長(zhǎng)編碼 (CAVLC)、基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼 (CABAC)、以及指數(shù)哥倫布(ExP一Golomb)編碼。對(duì)slice</p><p>  層以上的數(shù)據(jù)編碼采用指數(shù)哥倫布編碼、對(duì)于殘差數(shù)據(jù)編碼采用CAVLC或CABAC。由于

42、本文只是對(duì)運(yùn)動(dòng)估計(jì)算法進(jìn)行研究改進(jìn),并沒有深入研究熵編碼有關(guān)內(nèi)容,所以只是簡(jiǎn)單介紹,詳細(xì)內(nèi)容請(qǐng)參考文獻(xiàn)[4]。</p><p>  三、JMVC代碼閱讀及編碼參數(shù)提取</p><p>  本章在仔細(xì)閱讀JMVC代碼的基礎(chǔ)上,對(duì)其進(jìn)行修改,使編碼器進(jìn)行編碼的同時(shí)將各種編碼參數(shù)輸入到參數(shù)文件中,并利用MFC界面顯示編碼參數(shù)。</p><p>  以往的參數(shù)分析軟件,主要

43、是利用基于節(jié)點(diǎn)的樹進(jìn)行參數(shù)的顯示。比如單擊某一節(jié)點(diǎn),就可以顯示某一幀的大小、PSNR、各種類型的宏塊個(gè)數(shù)等參數(shù)信息。這種界面雖然易于實(shí)現(xiàn),但是并不直觀,很難一眼看出不同幀之間各個(gè)參數(shù)有那些不同——因?yàn)檫@需要分別單擊兩個(gè)幀的節(jié)點(diǎn),記錄里面的各種數(shù)據(jù)并進(jìn)行比較。</p><p>  本文通過(guò)ChartDirector庫(kù),把以幀為單位的參數(shù)放入圖表之中,進(jìn)行非常直觀的顯示,對(duì)于以宏塊為單位的參數(shù),也不是僅僅向傳統(tǒng)軟件哪

44、樣只是提取宏塊類型的統(tǒng)計(jì)、運(yùn)動(dòng)矢量的均值,或者需要打開許多級(jí)節(jié)點(diǎn)之后才能找到某一宏塊的運(yùn)動(dòng)矢量——本文利用opencv庫(kù),將重建圖像(YUV文件)中我們指定需要詳細(xì)顯示宏塊參數(shù)的某一幀顯示在MFC的Picture控件上,然后在該P(yáng)icture控件上繪制各種宏塊信息,比如運(yùn)動(dòng)矢量。宏塊劃分等。</p><p>  通過(guò)上文所述的方法,可以將出了SPS、PPS之外的所有信息非常直觀的顯示在界面上。</p>

45、<p> ?。ㄒ唬?JMVC代碼基本流程</p><p>  JMVC基本流程圖如圖3.1所示</p><p>  圖3.1 JMVC流程圖(該圖來(lái)自網(wǎng)絡(luò))</p><p>  其中H264AVCEncoderTest.cpp中的init函數(shù)主要作用是讀取配置文件encoderMVC.cfg的參數(shù)。然后開始對(duì)序列進(jìn)行處理。PicEncoder.cpp

46、中的init函數(shù)是初始化參數(shù)序列集和圖像序列集以及編碼所需緩沖區(qū)等。[6]</p><p>  然后遍歷所有的圖像幀,對(duì)每幀調(diào)用picEncode.cpp中的process處理函數(shù),該process函數(shù)調(diào)用xEncodePicture函數(shù)對(duì)圖像進(jìn)行編碼。在xEncodePicture函數(shù)中,將圖像幀分為片組,對(duì)每個(gè)片進(jìn)行編碼。片再分為宏塊,宏塊為編碼的最小單位,接下來(lái)就根據(jù)宏塊的類型采取遍歷各種編碼方式,根據(jù)Rd

47、Cost選擇最優(yōu)的模式作為最終模式。</p><p>  (二) 編碼參數(shù)的提取</p><p><b> ?。?)以幀為單位</b></p><p>  將編碼序列的每一幀的類型、PSNR、編碼時(shí)間、編碼后大小等參數(shù)提取出來(lái)并進(jìn)行顯示。</p><p>  通過(guò)閱讀調(diào)試代碼可以知道,存儲(chǔ)以上參數(shù)的變量分別為:<

48、/p><p>  幀類型 rcSliceHeader.getSliceType ()</p><p>  PSNR xGetPSNR( rcRecPicBufUnit, dPSNR )</p><p>  所需比特?cái)?shù) uiBits</p><p>  編碼時(shí)間 自定

49、義time_t類型變量獲取</p><p>  修改JMVC代碼的PicEncoder.cpp文件,在編碼每幀圖像結(jié)束后添加寫文件函數(shù),使得每當(dāng)編碼完一幀,就將上述參數(shù)寫入文件。</p><p>  一開始的寫入文件格式非常簡(jiǎn)單,按照自己定義的寫入順序,各個(gè)數(shù)據(jù)以空格為分割符,第一個(gè)數(shù)據(jù)為第一幀幀類型,第二、三個(gè)數(shù)據(jù)分別為該幀的編碼和解碼順序........第七個(gè)參數(shù)為編碼時(shí)間、第八個(gè)參數(shù)

50、為下一幀的幀類型。</p><p>  這種方法實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,讀取編碼參數(shù)文件時(shí)也非常方便,但是得到的編碼參數(shù)文件非常不方便閱讀,而且如果手動(dòng)打開文件觀察參數(shù)時(shí)誤刪了某條數(shù)據(jù),讀取時(shí)不但該數(shù)據(jù)丟失,之后的數(shù)據(jù)也會(huì)由于錯(cuò)位而造成讀取錯(cuò)位,這種錯(cuò)誤擴(kuò)散會(huì)一直持續(xù)到文件結(jié)尾。</p><p>  為了使得寫入編碼參數(shù)的文件方便閱讀,避免讀取文件時(shí)的錯(cuò)誤擴(kuò)散,本文采用各幀參數(shù)用分隔符隔開、并且

51、參數(shù)前都加入?yún)?shù)名稱的方法標(biāo)識(shí)參數(shù)類型,防止錯(cuò)誤的發(fā)生且易于閱讀。</p><p>  得到的文件內(nèi)容如下頁(yè)圖3.2所示</p><p>  圖3.2 幀編碼參數(shù)文件內(nèi)容(部分)</p><p><b>  以宏塊為單位</b></p><p>  將每一幀的各個(gè)宏塊信息如宏塊坐標(biāo)、宏塊類型 、宏塊劃分 、 參考宏

52、塊等信息進(jìn)行提取并顯示。</p><p>  通過(guò)閱讀調(diào)試代碼可以知道,存儲(chǔ)以上參數(shù)的變量分別為:</p><p>  宏塊位置:rcMbDataAccess.m_uiPosX</p><p>  rcMbDataAccess.m_uiPosY</p><p>  宏塊類型:rcMbDataAccess.m_rcMbCurr.getMbMod

53、e()</p><p>  宏塊劃分:rcMbDataAccess.m_rcMbCurr.getBlkMode()</p><p>  參考宏塊:rcMbDataAccess.m_rcMbCurr.getMbMotionData().m_ascRefIdx[0]</p><p>  運(yùn)動(dòng)矢量:rcMbDataAccess.m_rcMbCurr .getMbMotio

54、nData().getMv()</p><p>  修改JMVC代碼,使得每當(dāng)編碼完一個(gè)宏塊,就將上述參數(shù)寫入文件。得到的文件內(nèi)容如圖3.3所示</p><p>  圖3.3 宏塊編碼參數(shù)文件按內(nèi)容(部分) </p><p>  編碼參數(shù)的顯示與分析</p><p>  利用MFC程序和ChartDirect庫(kù)對(duì)獲取的編碼參數(shù)進(jìn)行處理和

55、顯示。大致流程如下圖3.4:</p><p>  圖3.4 MFC顯示界面流程圖</p><p>  以ballroom測(cè)試序列為例,將其的前三個(gè)視點(diǎn)進(jìn)行編碼并提取編碼參數(shù),然后通過(guò)界面進(jìn)行顯示,可以得到效果圖如下:</p><p>  圖2.5-1 圖2.5-2</p>

56、;<p>  圖3.5-1 :幀編碼參數(shù)之碼率效果圖 </p><p>  圖3.5-2 : 幀編碼參數(shù)之編碼時(shí)間效果圖 </p><p>  圖3.5-3 : 幀編碼參數(shù)之PSNR效果圖</p><p>  圖2.5-3 </p><p>  由圖3

57、.5可以看到 :</p><p>  視點(diǎn)0作為基本視點(diǎn),碼率最高,PSNR也最高,編碼時(shí)間也最長(zhǎng)。</p><p>  視點(diǎn)2由視點(diǎn)0預(yù)測(cè)得到,所以碼率減少,PSNR略微降低,但是編碼時(shí)間顯著增長(zhǎng)。</p><p>  視點(diǎn)1由視點(diǎn)0和視點(diǎn)2雙向預(yù)測(cè)得到,碼率最小,說(shuō)明去除了更多的冗余,編碼時(shí)間和PSNR和視點(diǎn)2沒有太過(guò)明顯的差別。</p><

58、p>  從三個(gè)十點(diǎn)的整體趨勢(shì)來(lái)看,每個(gè)序列的錨定幀所需編碼時(shí)間明顯小于非錨定幀,碼率和PSNR明顯高于非錨定幀。而通過(guò)后面分析可以發(fā)現(xiàn)錨定幀和非錨定幀的主要區(qū)別在于幀內(nèi)編碼宏塊的有無(wú),也就是說(shuō),如果僅僅進(jìn)行幀內(nèi)預(yù)測(cè),編碼時(shí)間會(huì)減少很多。從另一角度來(lái)說(shuō),這證明幀間預(yù)測(cè)的耗時(shí)非常巨大。 </p><p>  圖3.6 宏塊類型統(tǒng)計(jì)</p><p>  左上:視點(diǎn)0 第0幀 宏塊

59、類型統(tǒng)計(jì)</p><p>  右上:視點(diǎn)0 第10幀 宏塊類型統(tǒng)計(jì)</p><p>  左下:視點(diǎn)1 第0幀 宏塊類型統(tǒng)計(jì)</p><p>  右下:視點(diǎn)1 第10幀 宏塊類型統(tǒng)計(jì)</p><p>  由圖3.6可以看出:</p><p>  I幀(視點(diǎn)0 第0幀)宏塊類型多為INTRA16,INTRA8和I

60、NTRA4 即幀內(nèi)4x4 幀內(nèi)8x8 幀內(nèi)16x16,因?yàn)镮幀僅采用幀內(nèi)預(yù)測(cè)模式,所以不可能出現(xiàn)INTER16x16等模式</p><p>  P幀(視點(diǎn)1 第0幀)大多數(shù)為幀間模式如幀間16x16,幀間8x8,SKIP等,少數(shù)為幀內(nèi)模式宏塊</p><p>  B幀(視點(diǎn)0 第10幀以及視點(diǎn)1 第10幀)幾乎全部為幀間預(yù)測(cè)宏塊。在不是I幀的情況下,大多數(shù)宏塊為SKIP模式。<

61、/p><p>  通過(guò)宏塊統(tǒng)計(jì)分布圖和編碼時(shí)間圖,可以更清晰地發(fā)現(xiàn),幀內(nèi)預(yù)測(cè)宏塊較多時(shí),編碼時(shí)間就較短,幀間宏塊較多時(shí),編碼時(shí)間飛速增長(zhǎng)。</p><p>  圖3.7-1 視點(diǎn)0 第0幀宏塊預(yù)測(cè)類型分布 圖3.7-2 視點(diǎn)0 第7幀宏塊預(yù)測(cè)類型分布</p><p>  圖3.7-3 視點(diǎn)1 第0幀 宏塊預(yù)測(cè)類型分布 圖3.7-4 視點(diǎn)1 第7幀宏塊預(yù)測(cè)類

62、型分布</p><p>  紫色:幀內(nèi)預(yù)測(cè)宏塊 綠色:視點(diǎn)間預(yù)測(cè)宏塊 黃色:幀間預(yù)測(cè)宏塊</p><p>  由圖3.7可以看出各種預(yù)測(cè)類型的分布</p><p>  對(duì)于基本視點(diǎn),沒有視點(diǎn)間預(yù)測(cè),它的錨定幀必然是I幀,只有幀內(nèi)預(yù)測(cè),所以全為紫色,如圖3.7-1,它的非錨定幀絕大多數(shù)采用幀間預(yù)測(cè)(黃色),極少數(shù)采用幀內(nèi)預(yù)測(cè)(紫色),如圖3.7-2所示。</

63、p><p>  對(duì)于非基本視點(diǎn),它的錨定幀需要其它視點(diǎn)相同時(shí)刻的圖像作為參考幀,所以不止由幀內(nèi)預(yù)測(cè)(紫色),還有視點(diǎn)間預(yù)測(cè)(綠色),而且視點(diǎn)間預(yù)測(cè)占大多數(shù)。如圖3.7-3所示,對(duì)于非錨定幀,三種預(yù)測(cè)方式均由可能,而實(shí)驗(yàn)證明,非基本視點(diǎn)的非錨定幀中視點(diǎn)內(nèi)幀間預(yù)測(cè)宏塊的數(shù)量最多,視點(diǎn)間的其次,幀內(nèi)預(yù)測(cè)的宏塊最少。</p><p>  圖3.8-1 視點(diǎn)0 第0幀 宏塊劃分

64、 圖3.8-2 視點(diǎn)0 第25幀 宏塊劃分 </p><p>  圖3.8-3 視點(diǎn)2 第0幀 宏塊劃分 圖3.8-1 視點(diǎn)2 第5幀 宏塊劃分</p><p>  由圖3.8可以看出,I幀(視點(diǎn)0,第0幀圖3.8-1、視點(diǎn)0,第25幀圖2.8-2)幀內(nèi)預(yù)測(cè)宏塊較多,INTRA4x4 和INTRA8x8宏塊較多,劃分比較精細(xì),</p><

65、;p>  而P幀(視點(diǎn)2,第0幀圖2.8-3)和B幀(視點(diǎn)2,第5幀圖2.8-4)大多采用幀間或者視點(diǎn)間預(yù)測(cè),多數(shù)宏塊劃分為INTER16x16類型。</p><p>  圖 3.9-1 視點(diǎn)0 第20幀 運(yùn)動(dòng)矢量分布 圖3.9-2 視點(diǎn)0 第30幀 運(yùn)動(dòng)矢量分布</p><p>  圖 3.9-3 視點(diǎn)1 第0幀 運(yùn)動(dòng)矢量分布 圖 3.9-4 視點(diǎn)2

66、 第0幀 運(yùn)動(dòng)矢量分布 </p><p>  由圖3.9-1、3.9-2可以看出, 當(dāng)僅采用視點(diǎn)內(nèi)幀間預(yù)測(cè)時(shí),非零的運(yùn)動(dòng)矢量所占比例較少且集中在運(yùn)動(dòng)物體附近,大面積的背景部分運(yùn)動(dòng)矢量為0(上圖中不顯示運(yùn)動(dòng)矢量有兩種情況:運(yùn)動(dòng)矢量為0或者沒有運(yùn)動(dòng)矢量,即采用幀內(nèi)預(yù)測(cè)。 但是參考圖3.7-2可知 視點(diǎn)0的B幀絕大多數(shù)采用幀間預(yù)測(cè),只有極少宏塊采用幀內(nèi)預(yù)測(cè),所以對(duì)于視點(diǎn)0來(lái)說(shuō)不顯示運(yùn)動(dòng)矢量可以大致等價(jià)于運(yùn)動(dòng)矢量為0)。

67、</p><p>  而觀察圖3.9-3和3.9-4可以發(fā)現(xiàn),當(dāng)采用視點(diǎn)間預(yù)測(cè)時(shí)大多數(shù)宏塊都有一個(gè)非零的運(yùn)動(dòng)矢量,并且在一定范圍內(nèi)具有各個(gè)宏塊的運(yùn)動(dòng)矢量具有一致性。圖下圖所示</p><p>  圖3.10 運(yùn)動(dòng)矢量的一致性示意圖</p><p>  因此可以考慮把這些運(yùn)動(dòng)矢量統(tǒng)一趨向的值作為一個(gè)新的運(yùn)動(dòng)矢量預(yù)測(cè)值,在運(yùn)動(dòng)搜索過(guò)程中,在把左、上、右上方的宏塊作

68、為運(yùn)動(dòng)矢量預(yù)測(cè)值計(jì)算SAD之后,再把這個(gè)統(tǒng)一趨向的值作為運(yùn)動(dòng)矢量預(yù)測(cè)值計(jì)算SAD,然后選取SAD最小的點(diǎn)作為運(yùn)動(dòng)搜索的起始點(diǎn)。通過(guò)這種方法可以提高運(yùn)動(dòng)搜索的準(zhǔn)確度并縮短運(yùn)動(dòng)搜索時(shí)間,具體效果見第四章。</p><p><b>  本章小節(jié)</b></p><p>  本章主要實(shí)現(xiàn)了對(duì)編碼器參數(shù)的提取與顯示,通過(guò)對(duì)編碼參數(shù)的分析,可以發(fā)現(xiàn)許多可以改進(jìn)的方面。例如:<

69、;/p><p>  編碼時(shí)間曲線顯示I幀編碼時(shí)間遠(yuǎn)遠(yuǎn)小于B幀和P幀的編碼時(shí)間,而B、P幀與I幀的最主要不同就是進(jìn)行了大量的運(yùn)動(dòng)估計(jì),因此提高運(yùn)動(dòng)估計(jì)的效率是本文減少編碼時(shí)間的關(guān)鍵;</p><p>  通過(guò)視差矢量的分布可以發(fā)現(xiàn)視差矢量的水平位移遠(yuǎn)大于垂直位移,所以搜索最優(yōu)視差矢量時(shí)的水平位移范圍要遠(yuǎn)大于垂直位移范圍;</p><p>  通過(guò)運(yùn)動(dòng)矢量的分布以及宏塊類型

70、的分布可以發(fā)現(xiàn),P幀和B幀的絕大多數(shù)宏塊都是采用幀間預(yù)測(cè)模式,但是可以畫出運(yùn)動(dòng)矢量的宏塊較少,這說(shuō)明采用幀間預(yù)測(cè)的宏塊有一大部分的運(yùn)動(dòng)矢量為0,因此JMVC把零運(yùn)動(dòng)矢量作為預(yù)測(cè)矢量之一;</p><p>  觀察相鄰兩個(gè)編碼幀的運(yùn)動(dòng)矢量分布可以發(fā)現(xiàn)他們具有一定的相似性,因此可以考慮把前一幀的相同位置的運(yùn)動(dòng)矢量也作為預(yù)測(cè)矢量。</p><p>  總而言之,通過(guò)觀察編碼參數(shù),可以得到JMVC

71、編碼器的許多方面性能和特點(diǎn),這為以后對(duì)JMVC的改進(jìn)提供了依據(jù)。</p><p>  四、各種運(yùn)動(dòng)算法的分析及比較</p><p>  由之前的分析可知,減少視頻序列編碼時(shí)間的關(guān)鍵在于減少P、B幀的編碼時(shí)間,</p><p>  而減少P、B幀編碼時(shí)間的關(guān)鍵則在于使用高效的運(yùn)動(dòng)估計(jì)算法。因此為了改進(jìn)JMVC中的TZsearch算法,本章對(duì)各種基本的運(yùn)動(dòng)估計(jì)算法如三步

72、法、四步法、菱形算法以及一些提高運(yùn)動(dòng)估計(jì)效率的常用方法如提前終止策略、增加預(yù)測(cè)矢量等進(jìn)行了C++程序上的實(shí)現(xiàn),以及性能的比較,為第5章改進(jìn)JMVC的算法做準(zhǔn)備。</p><p> ?。ㄒ唬?運(yùn)動(dòng)估計(jì)算法簡(jiǎn)介</p><p>  運(yùn)動(dòng)估計(jì)的基本思想是將圖像序列的每一幀分成許多互不重疊的宏塊,并認(rèn)為宏塊內(nèi)所有象素的位移量都相同,然后對(duì)每個(gè)宏塊到參考幀某一給定特定搜索范圍內(nèi)根據(jù)一定的匹配準(zhǔn)則找出

73、與當(dāng)前塊最相似的塊,即匹配塊,匹配塊與當(dāng)前塊的相對(duì)位移即為運(yùn)動(dòng)矢量。視頻壓縮的時(shí)候,只需保存運(yùn)動(dòng)矢量和殘差數(shù)據(jù)就可以恢復(fù)出當(dāng)前塊。</p><p>  由于編碼時(shí)需要對(duì)殘差塊進(jìn)行量化,所以通過(guò)運(yùn)動(dòng)搜索所找尋的匹配塊與原始?jí)K相越小,量化噪聲就越小,重建圖像的質(zhì)量也越高。</p><p><b>  1.全搜索算法</b></p><p>  全搜

74、索算法FS(Full Search)是一種窮盡式的搜索算法,對(duì)給定搜索范圍內(nèi)所有的可能點(diǎn)都計(jì)算一次SAD值,從中找到最小值,該宏塊即為匹配宏塊[9]。全搜索算法的特點(diǎn)是一定能得到全局最優(yōu)的運(yùn)動(dòng)矢量,但最耗時(shí)間巨大。以搜索范圍為129x129為例,每一個(gè)宏塊要找到其最佳匹配塊,就要計(jì)算129x129=16641次原始宏塊和參考宏塊的SAD值,耗時(shí)極為漫長(zhǎng)。</p><p><b>  快速搜索算法<

75、/b></p><p>  因?yàn)槿阉骱臅r(shí)非常漫長(zhǎng),很多運(yùn)動(dòng)估計(jì)的快速算法從降低計(jì)算復(fù)雜度和降低搜索點(diǎn)數(shù)等方面進(jìn)行了改進(jìn)來(lái)減少編碼時(shí)間。快速搜索算法大多數(shù)都基于這樣一個(gè)假設(shè):在搜索范圍內(nèi)有且只有一個(gè)最優(yōu)點(diǎn)(谷點(diǎn)),以該點(diǎn)作為運(yùn)動(dòng)矢量所得的SAD最小,并且距離改點(diǎn)越遠(yuǎn),SAD值越大[5]。在這種假設(shè)下SAD與運(yùn)動(dòng)矢量的關(guān)系如圖4.1所示。</p><p>  圖4.1 理想情況下的

76、SAD與運(yùn)動(dòng)矢量的關(guān)系圖</p><p>  在這種假設(shè)下,多種運(yùn)動(dòng)算法被提出,例如三步法、四步法、菱形搜索算法等。</p><p>  但是這些算法雖然加快了運(yùn)動(dòng)搜索的速度,其準(zhǔn)確度也有了一定程度的下降。原因就在于實(shí)際情況下的SAD與運(yùn)動(dòng)矢量的關(guān)系并沒有圖4.1所示的那么理想。以ballroom測(cè)試序列第2視點(diǎn)第0幀為例(其參考幀為第0視點(diǎn)第一幀)。對(duì)所有宏塊都做全搜索,并將每個(gè)宏塊的搜

77、索范圍內(nèi)的所有SAD值都輸入到參數(shù)文件中,然后利用ChartDirector庫(kù)進(jìn)行顯示??梢缘玫饺缦氯S圖表:</p><p>  圖4.2-1 宏塊(21,15)的SAD與運(yùn)動(dòng)矢量關(guān)系圖</p><p>  圖4.2-2 宏塊(21,17)的SAD與運(yùn)動(dòng)矢量關(guān)系圖</p><p>  圖4.2-3 宏塊(21,18)的SAD與運(yùn)動(dòng)矢量關(guān)系圖</p>

78、<p>  圖4.2-4 宏塊(21,22)的SAD與運(yùn)動(dòng)矢量關(guān)系圖</p><p>  圖4.2-5 宏塊(22,5)的SAD與運(yùn)動(dòng)矢量關(guān)系圖</p><p>  由圖4.2可以看出,SAD與運(yùn)動(dòng)矢量的關(guān)系并不是理想情況,每一個(gè)宏塊的SAD分布都有很多“谷點(diǎn)”,快速搜索可以找到這些“谷點(diǎn)”中的其中一個(gè),但是不能保證該“谷點(diǎn)”是所有谷點(diǎn)中的最低點(diǎn)。所以快速搜索算法的準(zhǔn)確度比全局搜

79、索算法有一定程度的下降。具體性能比較見本章第三節(jié)</p><p><b>  三步法</b></p><p>  在快速運(yùn)動(dòng)估計(jì)算法中,三步法的應(yīng)用十分廣泛。三步法在搜索過(guò)程中,每次對(duì)中心點(diǎn)及其相鄰的八個(gè)點(diǎn)進(jìn)行計(jì)算。起始搜索距離為最大搜索距離的一半。在每一步搜索中搜索距離減半,在最大搜索距離為8時(shí),只需要三步就可得到運(yùn)動(dòng)矢量,因此稱之為三步法[6]。對(duì)于現(xiàn)在分辨率較高

80、的圖像,搜索步數(shù)實(shí)際會(huì)遠(yuǎn)超過(guò)三步。如圖4.3所示,當(dāng)搜索距離為8時(shí),以SAD為匹配準(zhǔn)則。第一步,收搜索點(diǎn)的搜索距離為4,假設(shè)a點(diǎn)SAD值最??;第二步時(shí),搜索距離則減半為2,周圍8個(gè)測(cè)試點(diǎn)與中心a點(diǎn)比較,其中b點(diǎn)SAD值最小;第三步時(shí),搜索距離再次減半為1,比較結(jié)果C點(diǎn)SAD值最小,則C點(diǎn)對(duì)應(yīng)的運(yùn)動(dòng)矢量即為最佳運(yùn)動(dòng)矢量[6]。由于三步法旳運(yùn)算時(shí)間明顯減少,很多情況加均可以得到較為理想的運(yùn)動(dòng)矢量,因此應(yīng)用十分廣泛。其性能分析見本章第三節(jié)。&

81、lt;/p><p>  圖4..3 三步法步驟示意圖(該圖引自文獻(xiàn)[6])</p><p><b>  四步法</b></p><p>  四步法反復(fù)使用5*5模板進(jìn)行搜索 直到模板中心出誤差最小或者到達(dá)搜索邊界 ,然后再用3*3小模板進(jìn)行一次精細(xì)搜索具體步驟如圖4.4所示,其性能分析見本章第三節(jié)。</p><p>  圖

82、4.4 四步法 步驟示意圖(該圖引自文獻(xiàn)[5])</p><p><b>  菱形搜索算法</b></p><p>  菱形搜索法采用的是非矩形搜索模板,在搜索過(guò)程中,所選用搜索模板的形狀影響整個(gè)搜索算法的速度和性能[13]。在進(jìn)行塊匹配的過(guò)程中,利用誤差匹配函數(shù)確定誤差最小點(diǎn),這個(gè)誤差函數(shù)全局最小點(diǎn)就是最有運(yùn)動(dòng)矢量。在全搜索過(guò)程中,對(duì)所有點(diǎn)進(jìn)行遍歷測(cè)試,通過(guò)誤差

83、函數(shù)可以找到全局最小點(diǎn)。但是在快速搜索算法中,并不是對(duì)所有測(cè)試點(diǎn)進(jìn)行遍歷測(cè)試,如果搜索窗口選擇的過(guò)小就會(huì),在搜索過(guò)程中就容易陷入局部最小點(diǎn);如果搜索窗口過(guò)大,在搜索過(guò)程中就容易錯(cuò)過(guò)全局最小點(diǎn)。因此,在菱形搜索算法中,采用了擁有9個(gè)測(cè)試點(diǎn)的大菱形模板和擁有5個(gè)測(cè)試點(diǎn)的小菱形模板,如圖3.5所示。根據(jù)不同情況分別利用者兩種模板進(jìn)行快速運(yùn)動(dòng)估計(jì)。在搜索過(guò)程中,先采用大菱形模板進(jìn)行搜索計(jì)算,當(dāng)最小誤差點(diǎn)出現(xiàn)在中心點(diǎn)時(shí),再采用小菱形模板進(jìn)行下一步

84、匹配計(jì)算,這是5個(gè)測(cè)試點(diǎn)中誤差最小點(diǎn)即為最佳匹配點(diǎn)。</p><p>  圖4.5 大小菱形搜索模板(該圖引自文獻(xiàn)[6])</p><p>  菱形搜索法具體搜索步驟如圖4.6所示。首先,在給定的搜索范圍內(nèi),采用大菱形搜索模板對(duì)中心點(diǎn)己經(jīng)周圍8個(gè)點(diǎn)進(jìn)行測(cè)試計(jì)算,如果最小誤差點(diǎn)出現(xiàn)在大菱形模板中心,則采用小菱形模板繼續(xù)搜索。小菱形模板進(jìn)行搜索時(shí),以前面得到的最小誤差點(diǎn)為中心,按小菱形模板對(duì)

85、所有測(cè)試點(diǎn)進(jìn)行計(jì)算,得到的誤差最小點(diǎn)即為最佳匹配點(diǎn)。在采用大菱形模板搜索時(shí),如果誤差最小點(diǎn)不在大菱形模板的中心點(diǎn)是,則以該誤差最小點(diǎn)為中心點(diǎn),繼續(xù)采用大菱形模板進(jìn)行搜索,知道最小誤差點(diǎn)出現(xiàn)在大菱形模板中心點(diǎn)位置時(shí),改用小菱形模板,得到最佳匹配點(diǎn)。該點(diǎn)所在位置多對(duì)應(yīng)的矢量即為最佳運(yùn)動(dòng)矢量。</p><p>  另外,為了提高菱形法的性能,可以采用更大的搜索模板,JMVC的TZsearch算法就采用了步長(zhǎng)從一到六十四

86、的73點(diǎn)菱形搜索模板。其性能分析見本章第三節(jié)。</p><p>  圖4.6 菱形法 步驟示意圖(該圖引自文獻(xiàn)[6])</p><p> ?。ǘ?運(yùn)動(dòng)算法比較平臺(tái)的搭建</p><p>  本章主要對(duì)各種經(jīng)典的運(yùn)動(dòng)估計(jì)算法(如三步法、四步法、菱形搜索算法、非對(duì)稱十字型多層次六邊形格點(diǎn)搜索算法)進(jìn)行粗略實(shí)現(xiàn)并進(jìn)行比較。由于如果將各種算法直接放入編碼器中運(yùn)行并進(jìn)行比

87、較的話要花費(fèi)巨大的時(shí)間,所以本文設(shè)計(jì)了一個(gè)可以快速驗(yàn)證運(yùn)動(dòng)算法性能的小程序。程序流程圖如下</p><p>  圖 3.7 運(yùn)動(dòng)搜索算法性能分析程序流程圖</p><p>  該程序僅實(shí)現(xiàn)了編碼器的運(yùn)動(dòng)估計(jì)部分,并沒有實(shí)現(xiàn)運(yùn)動(dòng)補(bǔ)償、變換、量化、和熵編碼。但是該程序輸出的COST(計(jì)算宏塊SAD的函數(shù)被調(diào)用的次數(shù),即搜索的點(diǎn)數(shù))和PSNR(原始圖像和直接根據(jù)運(yùn)動(dòng)矢量和參考幀(而未經(jīng)運(yùn)動(dòng)

88、補(bǔ)償)重建的圖像的峰值信噪比)可以較好的反應(yīng)運(yùn)動(dòng)估計(jì)算法的性能——COST越少,說(shuō)明運(yùn)動(dòng)搜索算法計(jì)算SAD的次數(shù)越少,復(fù)雜度越低,耗費(fèi)的時(shí)間越少;PSNR越高,運(yùn)動(dòng)搜索的準(zhǔn)確度越高。 而運(yùn)動(dòng)搜索算法的復(fù)雜度和準(zhǔn)確度恰恰可以較好的反映編碼器的性能,所以利用該軟件比較編碼器的性能可行的。</p><p> ?。ㄈ?各種運(yùn)動(dòng)估計(jì)算法實(shí)現(xiàn)和的性能分析</p><p>  1. 三步法、四步法、菱

89、形算法的實(shí)現(xiàn)和比較</p><p>  本小節(jié)對(duì)以上三種算法進(jìn)行了實(shí)現(xiàn),考慮到TZsearch算法中菱形模板的點(diǎn)數(shù)不止是9點(diǎn)大模板和5點(diǎn)小模板,所以菱形算法中又分為9點(diǎn)、17點(diǎn)、25點(diǎn)、41點(diǎn)、57點(diǎn)、73點(diǎn)6種。</p><p>  分別以ballroom、exit、vassar測(cè)試序列的第0視點(diǎn)前100幀作為測(cè)試對(duì)象,利用第二節(jié)介紹的運(yùn)動(dòng)算法分析平臺(tái),可以得到以下數(shù)據(jù) 圖

90、4.8-1不同運(yùn)動(dòng)搜索方法的代價(jià)(ballroom) 圖4.8-2不同運(yùn)動(dòng)搜索方法的代價(jià)(exit)</p><p>  圖4.8-3 不同運(yùn)動(dòng)搜索方法的代價(jià)(vassar)</p><p>  由以上數(shù)據(jù)可以看到,全搜索算法所需的計(jì)算SAD的次數(shù)最多,耗時(shí)也就最長(zhǎng),三步法、四步法、菱形算法相對(duì)與全搜索算法在復(fù)雜度上有很大的簡(jiǎn)化。</p><p>  圖

91、4.9 不同運(yùn)動(dòng)搜索方法的PSNR</p><p>  由圖4.9可以看出,在大多數(shù)情況下(ballroom序列所有幀,exit序列所有幀,vassar序列后半部分)全搜索算法的PSNR都高于快速搜索算法,只有少數(shù)情況于快速搜索算法的PSNR幾乎相同,通過(guò)YUV播放器播放vassar序列可以發(fā)現(xiàn),PSNR幾乎相同的地方畫面差不多是靜止的,幾乎沒有運(yùn)動(dòng)。所以可以說(shuō),畫面只要有明顯的運(yùn)動(dòng)發(fā)生,全搜索得出的PSNR要高

92、于快速搜索得出的PSNR。</p><p>  圖4.10 不同運(yùn)動(dòng)搜索方法的PSNR-COST關(guān)系圖</p><p>  由圖4.10可以看出對(duì)于ballromm序列和exit序列,三步法、四步法、9點(diǎn)菱形算法沒有太明顯的區(qū)別,但是隨著菱形算法點(diǎn)數(shù)的增加,在計(jì)算復(fù)雜度(COST)的增加可以容忍的范圍內(nèi),PSNR有了明顯的提升。這也就解釋了TZsearch采用的菱形算法模板的點(diǎn)數(shù)遠(yuǎn)多于9點(diǎn)

93、很多的原因。</p><p>  而vassar序列的提升并不明顯,這是因?yàn)関assar序列的運(yùn)動(dòng)很不明顯,利用三步法等較簡(jiǎn)單算法已經(jīng)可以得到很好的效果,PSNR沒有更大的提升空間。因此可以考慮通過(guò)判斷相鄰宏塊平均運(yùn)動(dòng)矢量的大小來(lái)確定采用的運(yùn)動(dòng)搜索方法,以實(shí)現(xiàn)對(duì)TZsearch算法的改進(jìn) 。</p><p>  向菱形算法中加入起始始搜索點(diǎn)的預(yù)測(cè)</p><p> 

94、 最簡(jiǎn)單的菱形算法的起始搜索點(diǎn)都是(0,0),但是由于運(yùn)動(dòng)矢量的空間和時(shí)間上的相關(guān)性</p><p>  可以對(duì)運(yùn)動(dòng)矢量進(jìn)行預(yù)測(cè),從而減少SAD計(jì)算次數(shù)并提高PSNR。在本文中,加入的預(yù)測(cè)矢量的方法如下:</p><p>  根據(jù)空間相關(guān)性 當(dāng)前宏塊左、上、右上宏塊的MV作為預(yù)測(cè)矢量; </p><p>  根據(jù)時(shí)間相關(guān)性 前一幀當(dāng)前位置宏塊的MV作為預(yù)測(cè)矢量;

95、</p><p>  由于一般情況下靜止部分較大 將{0,0}作為預(yù)測(cè)矢量;</p><p>  分別計(jì)算以上預(yù)測(cè)矢量的SAD值;</p><p>  然后將SAD最小的預(yù)測(cè)矢量作為搜索起點(diǎn); </p><p>  可以有效減少SAD計(jì)算次數(shù)并提高PSNR,具體效果見下圖。</p><p>  圖4.11 加入預(yù)測(cè)矢量

96、后的菱形算法性能比較</p><p>  由圖4.11可以看出,加入預(yù)測(cè)矢量后,COST-PSNR曲線明顯向左上方移動(dòng),說(shuō)明該方法可以明顯的提高PSNR并降低SAD的計(jì)算次數(shù)。TZsearch中也對(duì)運(yùn)動(dòng)矢量進(jìn)行了預(yù)測(cè),但是只考慮了空間相關(guān)性并沒由利用前一幀相同位置的宏塊的運(yùn)動(dòng)矢量,也沒有利用前一視點(diǎn)對(duì)應(yīng)位置的宏塊的運(yùn)動(dòng)矢量。因此可以加入以上兩種預(yù)測(cè)矢量,以實(shí)現(xiàn)對(duì)TZsearch算法的改進(jìn)。</p>

97、<p>  在菱形搜索中采用提前終止策略</p><p>  場(chǎng)景中一般都是以某一對(duì)象為單位的運(yùn)動(dòng),那么在該對(duì)象內(nèi)部,不僅是運(yùn)動(dòng)矢量,殘差應(yīng)該也是有很高的相關(guān)性,因此可以利用相鄰塊的SAD值作為閾值,如果某點(diǎn)的SAD小于閾值 則提前終止。這種方法通過(guò)利用SAD值的相關(guān)性,以犧牲小部分PSNR為代價(jià),減少了SAD的計(jì)算次數(shù),具體犧牲了多少PSNR,縮短了多少SAD的計(jì)算次數(shù),與閾值的選擇有關(guān)。</p

98、><p>  在本文中,實(shí)現(xiàn)方法如下:</p><p>  根據(jù)空間相關(guān)性 當(dāng)前宏塊左、上、右上宏塊的SAD值作為預(yù)測(cè)值; </p><p>  根據(jù)時(shí)間相關(guān)性 前一幀當(dāng)前位置宏塊的SAD值作為預(yù)測(cè)值;</p><p>  將所有的預(yù)測(cè)值求均值,設(shè)其為SADav ;</p><p>  選取系數(shù)a,令閾值為SADTH=

99、a*SADav;</p><p>  如果某點(diǎn)的SAD值小于SADTH,則提前終止。</p><p>  本文令a分別取值為0.95,1.00,1.05,1.10,1.15,1.20,1.25,1.30,1.35</p><p>  分析以上系數(shù)下的運(yùn)動(dòng)估計(jì)算法性能,結(jié)果如下</p><p>  圖3.12-1 ballroom序列采用不

100、同系數(shù)的提前終止運(yùn)動(dòng)搜索性能比較</p><p>  圖4.12-2 exit序列采用不同系數(shù)的提前終止運(yùn)動(dòng)搜索性能比較</p><p>  圖4.12-3 vassar序列采用不同系數(shù)的提前終止運(yùn)動(dòng)搜索性能比較</p><p>  由圖4.12可以看到隨著a取值的增加,曲線向左下方移動(dòng),即PSNR略微下降的同時(shí)SAD的計(jì)算次數(shù)也下降。由于沒有做主觀測(cè)評(píng)實(shí)驗(yàn)

101、,很難確定兩者的平衡點(diǎn),目前只是暫定a=1.15。并嘗試把提前終止測(cè)略加入TZsearch算法中。</p><p>  在菱形搜索中引用馬爾科夫鏈</p><p>  之所以嘗試引入馬爾科夫鏈,是因?yàn)樵诒竟?jié)第二小節(jié)中,為了運(yùn)動(dòng)搜索算法的性能,引入了5個(gè)預(yù)測(cè)矢量:</p><p>  根據(jù)空間相關(guān)性 當(dāng)前宏塊左、上、右上宏塊的MV作為預(yù)測(cè)矢量,</p>

102、<p>  分別設(shè)為MVP1,MVP2,MVP3; </p><p>  根據(jù)時(shí)間相關(guān)性 前一幀當(dāng)前位置宏塊的MV作為預(yù)測(cè)矢量,設(shè)為MVP4;</p><p>  由于一般情況下靜止部分較大 將{0,0}作為預(yù)測(cè)矢量,設(shè)為MVP0;</p><p>  有因?yàn)楸竟?jié)第三小節(jié)中,采用了提前終止策略,所以很有可能這六個(gè)預(yù)測(cè)值中的某一個(gè)可以滿足提前終止條件,但

103、是由于每次計(jì)算預(yù)測(cè)矢量的SAD時(shí)都是按照默認(rèn)順序(本文測(cè)試程序中自定義順序?yàn)椋毫泐A(yù)測(cè)矢量-->左宏塊預(yù)測(cè)矢量-->上宏塊預(yù)測(cè)矢量-->右上宏塊預(yù)測(cè)矢量-->前一幀當(dāng)前位置宏塊預(yù)測(cè)矢量),當(dāng)SAD計(jì)算順序靠后的預(yù)測(cè)矢量滿足提前終止條件時(shí)(比如僅有MVP4滿足提前終止條件),運(yùn)動(dòng)搜索算法需要額外計(jì)算4次SAD。</p><p>  根據(jù)文獻(xiàn)[5],如果把5個(gè)預(yù)測(cè)矢量作為5種不同的預(yù)測(cè)狀態(tài),則可

104、以認(rèn)為每幀相同位置的宏塊的預(yù)測(cè)狀態(tài)構(gòu)成了一個(gè)馬爾科夫鏈。由于馬爾科夫過(guò)程的無(wú)后效性和視頻運(yùn)動(dòng)的連續(xù)性,可以認(rèn)為當(dāng)前宏塊的預(yù)測(cè)矢量狀態(tài)只與前一幀對(duì)應(yīng)宏塊的預(yù)測(cè)矢量狀態(tài)有關(guān)。</p><p>  而引入馬爾科夫鏈就是希望利用通過(guò)統(tǒng)計(jì)得到的狀態(tài)轉(zhuǎn)移概率來(lái)調(diào)整預(yù)測(cè)矢量的SAD值計(jì)算順序,把預(yù)測(cè)矢量的SAD計(jì)算順序按照滿足提前終止條件的概率進(jìn)行排序。</p><p><b>  具體過(guò)程如

105、下:</b></p><p>  在第一幀的運(yùn)動(dòng)搜索完成后,統(tǒng)計(jì)每個(gè)宏塊的最優(yōu)預(yù)測(cè)矢量(將計(jì)算的到的最優(yōu)運(yùn)動(dòng)矢量MV分別和MVP0,MVP1,MVP2,MVP3,MVP4求差,將5個(gè)預(yù)測(cè)矢量中與MV差距最小的作為最優(yōu)預(yù)測(cè)矢量)</p><p>  在第二幀的運(yùn)動(dòng)搜索完成后,也統(tǒng)計(jì)每個(gè)宏塊的最優(yōu)預(yù)測(cè)矢量。</p><p>  計(jì)算第一幀中MVP0,MVP1

106、,MVP2,MVP3,MVP4作為最優(yōu)預(yù)測(cè)矢量的宏塊個(gè)數(shù),分別記為M0,M1,M2,M3,M4。</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP0,第二幀為MVP0的宏塊個(gè)數(shù),記為N00</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP0,第二幀為MVP1的宏塊個(gè)數(shù),記為N01</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP0,第二幀為MVP2的宏塊

107、個(gè)數(shù),記為N02</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP0,第二幀為MVP3的宏塊個(gè)數(shù),記為N03</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP0,第二幀為MVP4的宏塊個(gè)數(shù),記為N04</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP1,第二幀為MVP0的宏塊個(gè)數(shù),記為N10</p><p>  計(jì)算第一幀中最優(yōu)預(yù)

108、測(cè)矢量為MVP1,第二幀為MVP1的宏塊個(gè)數(shù),記為N11</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP1,第二幀為MVP2的宏塊個(gè)數(shù),記為N12</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP1,第二幀為MVP3的宏塊個(gè)數(shù),記為N13</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP1,第二幀為MVP4的宏塊個(gè)數(shù),記為N14</p>

109、<p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP2,第二幀為MVP0的宏塊個(gè)數(shù),記為N20</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP2,第二幀為MVP1的宏塊個(gè)數(shù),記為N21</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP2,第二幀為MVP2的宏塊個(gè)數(shù),記為N22</p><p>  計(jì)算第一幀中最優(yōu)預(yù)測(cè)矢量為MVP2,第二幀為MVP3的宏塊

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論