1.一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,包括:
包含單一內(nèi)容的參考片生成與管理:在當(dāng)前參考幀將移出短期參考幀列表時,基于當(dāng)前參考幀上幀內(nèi)預(yù)測塊的分布情況,選出包含單一內(nèi)容的參考片加入到參考片緩沖區(qū);如果參考片緩沖區(qū)已滿,則依據(jù)事先定義的參考片優(yōu)先級計算方式?jīng)Q定選出的包含單一內(nèi)容的參考片是否加入到參考片緩沖區(qū);
包含重復(fù)內(nèi)容的參考片生成與管理:檢測視頻序列中存在的靜態(tài)、動態(tài)和間隔重復(fù)的內(nèi)容,然后根據(jù)檢測結(jié)果對重復(fù)內(nèi)容的塊進行高質(zhì)量編碼,再基于高質(zhì)量編碼塊的分布情況生成包含重復(fù)內(nèi)容的參考片;包含重復(fù)內(nèi)容的參考片直接加入?yún)⒖计彌_區(qū),然后按照參考片優(yōu)先級比較進行管理;
參考片檢索和利用:對于當(dāng)前待編碼CTU,采用直方圖匹配的方式從參考片緩沖區(qū)中粗選出多個候選的參考片,再采用快速運動估計的方式精選出一個參考片;將選出的參考片采用預(yù)定的方式處理后,與視頻編碼中原有參考幀并列供當(dāng)前待編碼CTU中的編碼塊參考,編碼時將用于標(biāo)示當(dāng)前待編碼CTU中的編碼塊是否參考了參考片的標(biāo)志位,以及若被參考時,參考片在參考片緩沖區(qū)的索引編入碼流。
2.根據(jù)權(quán)利要求1所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,所述在當(dāng)前參考幀將移出短期參考幀列表時,基于當(dāng)前參考幀上幀內(nèi)預(yù)測塊的分布情況,選出包含單一內(nèi)容的參考片加入到參考片緩沖區(qū)的步驟包括:
在當(dāng)前參考幀將移出短期參考幀列表時,根據(jù)指定的參考片大小,構(gòu)造滑動窗口從上到下、從左到右掃描當(dāng)前參考幀,找出窗口內(nèi)幀內(nèi)預(yù)測的塊的面積達到最大值的位置;如果該最大值超過指定的閾值,則在對應(yīng)窗口內(nèi)的重建圖像區(qū)域構(gòu)造一個包含單一內(nèi)容的參考片;獲得的參考片中不僅記錄重建圖像區(qū)域的像素值,且還包括如下信息:窗口的位置、參考片中所有塊的量化步長的平均值、當(dāng)前參考幀在視頻序列中的次序、參考片被參考的次數(shù)以及參考片的次序;
選出一個包含單一內(nèi)容的參考片后,將其所處位置的窗口內(nèi)的幀內(nèi)預(yù)測的塊標(biāo)記為幀間預(yù)測,重復(fù)以上的掃描過程,直到選不出符合要求的包含單一內(nèi)容的參考片為止。
3.根據(jù)權(quán)利要求1或2所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,所述如果參考片緩沖區(qū)已滿,則依據(jù)事先定義的參考片優(yōu)先級計算方式?jīng)Q定選出的包含單一內(nèi)容的參考片是否加入到參考片緩沖區(qū)包括:
每生成一個包含單一內(nèi)容的參考片,就將其加入到參考片緩沖區(qū)中,如果參考片緩沖區(qū)已滿;則依據(jù)事先定義的參考片優(yōu)先級計算方式計算參考片緩沖區(qū)中參考片以及選出的包含單一內(nèi)容的參考片的優(yōu)先級,計算公式為:
Pc=(QP0-QPc)×NQP+Ic+Trc×Nr;
上式中,Pc為參考片的優(yōu)先級,QP0是設(shè)定的某個常數(shù),QPc是參考片的平均QP值,NQP與Nr均為為指定常數(shù),Ic為參考片的次序,Trc為參考片被編碼塊參考的次數(shù),為指定常數(shù);
如果選出的包含單一內(nèi)容的參考片的優(yōu)先級大于參考片緩沖區(qū)中最低優(yōu)先級參考片的優(yōu)先級,則用選出的包含單一內(nèi)容的參考片替換參考片緩沖區(qū)中最低優(yōu)先級的參考片;否則,丟棄選出的包含單一內(nèi)容的參考片。
4.根據(jù)權(quán)利要求1所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,所述檢測視頻序列中存在的靜態(tài)、動態(tài)和間隔重復(fù)的內(nèi)容包括:
不同重復(fù)內(nèi)容的檢測單位為編碼樹單元CTU,在檢測到重復(fù)內(nèi)容的CTU之后,預(yù)測相應(yīng)CTU中重復(fù)內(nèi)容的重復(fù)次數(shù);具體過程如下:
靜態(tài)重復(fù)內(nèi)容檢測:計算圖像中每個CTU內(nèi)方差的均值,如果當(dāng)前CTU的均值小于設(shè)定的閾值,標(biāo)記當(dāng)前CTU為靜態(tài)重復(fù),并預(yù)估靜態(tài)重復(fù)內(nèi)容的重復(fù)次數(shù)LA=S×幀率,在此后S秒內(nèi),不在包含靜態(tài)重復(fù)內(nèi)容的CTU處檢測動態(tài)和間隔性重復(fù)的內(nèi)容;
動態(tài)重復(fù)內(nèi)容檢測:對于非靜態(tài)重復(fù)的CTU,用CTU的原始像素在其參考幀上的原始像素做運動估計,得到對應(yīng)的運動矢量和相應(yīng)的運動估計殘差;如果所有的殘差值都小于設(shè)定的閾值,推斷相應(yīng)的CTU中存在動態(tài)重復(fù)內(nèi)容,并假設(shè)動態(tài)重復(fù)內(nèi)容在一段時間內(nèi)均勻運動,運動均值MVmean為:
其中,MVi為CTU和它的某個參考幀估計出的運動矢量,di為對應(yīng)的CTU所在幀與參考幀的時間間隔,N為參考幀的數(shù)目;得到運動均值后,再預(yù)估動態(tài)重復(fù)內(nèi)容的重復(fù)次數(shù)LB:
LB=min{Lx,Ly};
其中,Lx、Ly分別為水平、垂直方向預(yù)估的存在時間,W、H分別為視頻序列的寬、高,Cx、Cy分別為當(dāng)前CTU的橫、縱坐標(biāo),MVXmean、MVYmean為MVmean的x、y分量;檢測到包含動態(tài)重復(fù)內(nèi)容的CTU后,在動態(tài)重復(fù)內(nèi)容的預(yù)估存在時間范圍內(nèi),不再檢測新的動態(tài)重復(fù)內(nèi)容;
間隔重復(fù)內(nèi)容檢測:在當(dāng)前參考片被某個CTU參考時,則相應(yīng)CTU在當(dāng)前參考片上的快速運動估計的總代價將被記錄;同時,當(dāng)前參考片在快速運動估計時匹配的位置也被記錄;如果當(dāng)前參考片被多次參考,則當(dāng)前參考片需要保留快速運動估計總代價的均值和匹配位置的并集;編碼到第M幀時,對于第M幀上的每個CTU,在參考片緩沖區(qū)中進行參考片檢索,如果得到的快速運動估計總代價小于當(dāng)前參考片記錄的快速運動估計總代價均值的一定倍數(shù),并且匹配的位置包含當(dāng)前參考片記錄的匹配位置并集的一定倍數(shù),則判斷相應(yīng)CTU的內(nèi)容與檢索到的參考片中的內(nèi)容存在重復(fù);如果檢索到的參考片在編第M幀之前被引用了l次,推斷在后續(xù)的編碼過程中,相似的重復(fù)內(nèi)容還會出現(xiàn)LC次,LC的計算方式如下式所示:
其中,P為視頻序列的長度。
5.根據(jù)權(quán)利要求4所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,所述根據(jù)檢測結(jié)果對重復(fù)內(nèi)容的塊進行高質(zhì)量編碼包括:
假設(shè)某個重復(fù)內(nèi)容預(yù)計將要重復(fù)L次,則為相應(yīng)的重復(fù)內(nèi)容計算最佳編碼參數(shù),編碼參數(shù)的確定也在CTU級確定,如下式所示:
其中,λ是整個視頻序列的基本拉格朗日參數(shù),λi是某個重復(fù)內(nèi)容對應(yīng)的CTU第i次出現(xiàn)時設(shè)置的編碼參數(shù);確定了編碼參數(shù)λi之后,對應(yīng)QPi的根據(jù)下面的公式求出:
QPi=4.2005×ln(λi)+13.7122
求出的QPi將作為對應(yīng)CTU編碼時的量化步長;同時,對于使用編碼參數(shù)λ1的CTU,標(biāo)記該CTU為高質(zhì)量編碼,并將其QP值編入碼流。
6.根據(jù)權(quán)利要求5所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,所述基于高質(zhì)量編碼塊的分布情況生成包含重復(fù)內(nèi)容的參考片;包含重復(fù)內(nèi)容的參考片直接加入?yún)⒖计彌_區(qū),然后按照參考片優(yōu)先級比較進行管理包括:
基于高質(zhì)量編碼CTU的分布情況生成包含重復(fù)內(nèi)容的參考片,其步驟如下:編碼完當(dāng)前幀后,根據(jù)指定的參考片大小,構(gòu)造滑動窗口從上到下、從左到右掃描當(dāng)前參考幀,找出窗口內(nèi)進行高質(zhì)量編碼的CTU數(shù)量達到最大值的位置;如果該最大值超過指定的閾值,則用窗口內(nèi)的像素值生成參考片;生成的參考片即為包含重復(fù)內(nèi)容的參考片,其中還包括如下信息:像素值、窗口內(nèi)所有CTU的平均QP值;重復(fù)內(nèi)容的參考片生成后,將其所處位置的高質(zhì)量編碼標(biāo)識更改為常規(guī)質(zhì)量編碼,繼續(xù)以上的掃描過程,直到選不出可以生成重復(fù)內(nèi)容的參考片為止;
生成的包含重復(fù)內(nèi)容的參考片直接加入?yún)⒖计彺鎱^(qū);方式如下:如果包含重復(fù)內(nèi)容的參考片中,有一個或多個CTU參考了已經(jīng)有的參考片,則用包含重復(fù)內(nèi)容的參考片替換參考片緩沖區(qū)中已經(jīng)存在的一個參考片,具體被替換的參考片是當(dāng)前要包含重復(fù)內(nèi)容的參考片中所有CTU選中參考次數(shù)最多的那個參考片;否則,用包含重復(fù)內(nèi)容的參考片替換參考片緩沖區(qū)中優(yōu)先級最低的參考片;
之后,參考片緩沖區(qū)的包含重復(fù)內(nèi)容的參考片按照參考片優(yōu)先級比較進行管理。
7.根據(jù)權(quán)利要求1所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,所述采用直方圖匹配的方式從參考片緩沖區(qū)中粗選出多個候選的參考片,再采用快速運動估計的方式精選出一個參考片的步驟包括:
直方圖匹配:首先計算出當(dāng)前待編碼CTU與參考片緩沖區(qū)中所有參考片之間的直方圖距離,再采用預(yù)定方式選出多個直方圖距離較小的參考片作為直方圖匹配的結(jié)果;
直方圖距離的計算方式如下:1)對當(dāng)前待編碼CTU計算其直方圖:將當(dāng)前待編碼CTU的亮度分量劃分為4個32×32的塊,每塊統(tǒng)計一個H維的直方圖,對U和V兩個色度分量,各統(tǒng)計一個H維的直方圖;將六個H維直方圖拼接形成6H維直方圖;2)對參考片緩沖區(qū)中每一參考片中的64×64大小的塊,以水平與垂直方向間隔若干個像素進行一次采樣,對采樣的塊計算直方圖;3)將當(dāng)前待編碼CTU的直方圖和參考片所有采樣塊的直方圖進行逐個對比,計算直方圖之間的距離,并選擇其中最小的距離作為當(dāng)前待編碼CTU和參考片的直方圖距離;
快速運動估計:從直方圖匹配得到的多個參考片中,使用快速運動估計的方法,選出一個最有可能利用的參考片;當(dāng)前待編碼CTU與每一參考片進行快速運動估計的計算方式如下:將當(dāng)前CTU劃分成固定大小為R×R的小塊,每個R×R的塊在當(dāng)前參考片中搜索代價最小的塊,其中代價由絕對差、SAD值和運動矢量的編碼碼率組成;搜索的方式為先由隔五點的光柵掃描確定參考片中搜索的起始點,然后在該起始點周圍上下左右一定像素范圍內(nèi)進行八點鉆石型搜索;將所有R×R的塊的代價累加作為當(dāng)前待編碼CTU在當(dāng)前參考片上的整體代價,進而篩選出整體代價最小時對應(yīng)的一個參考片。
8.根據(jù)權(quán)利要求1或7所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,所述將選出的參考片采用預(yù)定的方式處理為新的參考幀,并將其與視頻編碼中原有參考幀并列供當(dāng)前待編碼塊參考包括:
將選出的參考片按照從參考幀上選取時的位置放置于與參考幀相同大小的白板上;同時,將參考片緩沖區(qū)中與選出的參考片處于同一幀的參考片也一起放置在白板上,再將該白板作為一個新的參考幀;
將新的參考幀與視頻編碼中原有參考幀并列,供當(dāng)前待編碼塊編碼時使用;其中,當(dāng)前待編碼塊在新的參考幀上進行幀間預(yù)測編碼時,運動估計時搜索的起點定為直方圖匹配所找到的最佳位置;運動矢量預(yù)測MVP的選取方法如下:檢查當(dāng)前預(yù)測單元PU周圍五個位置上的塊是否采用了參考片,當(dāng)且僅當(dāng)采用參考片,且其參考片與當(dāng)前PU所用的參考片來自同一個參考幀時,則相應(yīng)位置上的運動矢量MV作為候選MVP;從中按順序選取兩個MVP加入候選MVP列表,若空間位置上得到的可用MVP不足兩個,則依次使用從當(dāng)前待編碼塊所在的位置指向參考片中心位置的MV和(0,0)填充,填滿兩個為止。
9.根據(jù)權(quán)利要求1所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,所述將用于標(biāo)示當(dāng)前待編碼CTU中的編碼塊是否參考了參考片的標(biāo)志位,以及若參考時,參考片在參考片緩沖區(qū)的索引編入碼流包括:
是否參考參考片的標(biāo)志位是一個0或1的標(biāo)志位,標(biāo)志位采用上下文自適應(yīng)的二進制算術(shù)編碼,用到的上下文模型有三個,由當(dāng)前待編碼CTU左邊和上邊的CTU是否參考參考片來決定,若兩個CTU都沒有采用參考片預(yù)測,則用第一個上下文模型;若其中一個采用了參考片預(yù)測,則用第二個上下文模型;若兩個都用了參考片,則用第三個上下文模型;
若當(dāng)前待編碼CTU參考了參考片,則參考片在緩沖區(qū)的索引使用定長編碼,編碼長度取決于參考片被參考時參考片緩沖區(qū)的參考片數(shù)目;
之后,將相應(yīng)的標(biāo)志位,與參考片在緩沖區(qū)的索引編入碼流。
10.根據(jù)權(quán)利要求9所述的一種基于參考片的視頻幀間預(yù)測編碼方法,其特征在于,該方法還包括:當(dāng)前待編碼CTU是否進行了高質(zhì)量編碼,以及若進行高質(zhì)量編碼,則高質(zhì)量編碼時的QP相對于正常QP的調(diào)整值,需要編入碼流;具體如下:
是否進行高質(zhì)量編碼的標(biāo)志位是一個0或1的標(biāo)志位,標(biāo)志位采用上下文自適應(yīng)的二進制算術(shù)編碼,用到的上下文模型有三個,由當(dāng)前待編碼CTU左邊和上邊的CTU是否進行高質(zhì)量編碼來決定,若兩個CTU都沒有進行高質(zhì)量編碼,則用第一個上下文模型;若其中一個進行高質(zhì)量編碼,則用第二個上下文模型;若兩個都進行高質(zhì)量編碼,則用第三個上下文模型;
若進行高質(zhì)量編碼,則高質(zhì)量編碼時的QP相對于正常QP的調(diào)整值使用定長編碼。