專利名稱::視頻編解碼中針對整幀丟失誤碼掩蓋的p幀內(nèi)插方法
技術領域:
:本發(fā)明涉及視頻編解碼中解碼端的P幀內(nèi)插技術,具體是一種視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法。
背景技術:
:目前,以H.264/AVC編碼為例的新一代視頻編碼標準采用了高效的編碼技術,能夠?qū)崿F(xiàn)很高的壓縮比率。因而,它也被廣泛的使用在了包括互聯(lián)網(wǎng)視頻流媒體、3G手機電視等多種視頻應用場合當中。作為一種針對視頻傳輸而提出的編碼標準,它不可避免的遇到傳輸過程中的數(shù)據(jù)損壞或丟失,當視頻流打包傳輸時,這種損壞和丟失直接反映為數(shù)據(jù)包的丟失。由于視頻編碼的高壓縮比率,使它在面對視頻丟包的情況下顯得尤其脆弱某一幀當中的數(shù)據(jù)丟失,不但會影響到當前幀的正常顯示,而且會使錯誤在時域上擴散,使后續(xù)幀也出現(xiàn)錯誤。所以在面對視頻傳輸中的丟包時,解碼器中的錯誤掩蓋技術就顯得特別重要,它可以最大限度的減小錯誤帶來的視覺影響,同時阻礙錯誤在時域上的擴散。一般情況下的丟包會使得幀內(nèi)的部分宏塊或部分條帶丟失,但在丟包比較嚴重的情況下,會出現(xiàn)整幀數(shù)據(jù)的丟失。另一方面,一些低碼率(300-6001ApS)的信道傳輸標準(比如在歐洲和韓國廣為使用的T-DMB手機電視標準),往往會把CIF規(guī)格的H.264視頻中的一個幀打在一個RTP包中,這樣發(fā)生丟包時就會發(fā)生整幀丟失的情況。經(jīng)對現(xiàn)有技術的文獻檢索發(fā)現(xiàn),中國專利,公開號CN1455596,
專利名稱:為“基于運動向量外推及運動向量搜索的視頻差錯掩蓋方法”,該專利針對整幀丟失問題,利用運動矢量映射(或者稱為外推)的方法,根據(jù)重疊面積大小來選取運動矢量,進而重建丟失塊。該方法存在的問題在于,首先,選取運動矢量時,運動矢量的準確程度并不一定和映射后的重疊面積成正比,其次,沒有能夠利用后一幀的信息以進一步提高掩蓋質(zhì)量。
發(fā)明內(nèi)容本發(fā)明的目的在于克服上述現(xiàn)有技術的不足之處,提出了一種視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法,是一種雙向整幀丟失錯誤掩蓋技術,該技術能夠利用后一幀的信息進一步提高掩蓋質(zhì)量。本發(fā)明是通過以下技術方案實現(xiàn)的本發(fā)明所述的視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法,包括如下步驟步驟一,修改解碼器工作流程,在掩蓋丟失幀之前,加入了一個模塊以獲取下一幀的運動矢量;步驟二,對于前一幀和后一幀的運動矢量信息,獲取其對應塊的殘差信息,根據(jù)殘差信息去掉一部分不具可靠性的運動矢量,剩余運動矢量定義為可用運動矢量,其對應塊定義為可用塊;步驟三,根據(jù)前一幀和后一幀的可用運動矢量信息,利用運動矢量映射法將所有可用運動矢量映射到丟失幀上,建立丟失幀中當前掩蓋的4x4塊的參考運動矢量列表;步驟四,根據(jù)場一致性判決方法分別篩選出前一幀和后一幀的最佳運動矢量,用線性插值法從兩個最佳運動矢量中得出內(nèi)插幀中當前塊的運動矢量,以參考前一幀并且殘差為零的方式完成內(nèi)插。所述步驟一,具體為解碼的流程中,在掩蓋丟失幀之前,加入了一個模塊以獲取下一幀的運動矢量,然后調(diào)用掩蓋丟失幀的接口函數(shù),最后將掩蓋完成的幀在下一幀之前插入輸出緩存以待輸出。所述步驟二,其中根據(jù)殘差信息去掉一部分不具可靠性的運動矢量具體為利用運動矢量所在塊的殘差信息,判決對應運動矢量在該方法中的可靠性,如果該運動矢量所在塊的殘差大于一個預設閾值,認為該塊的運動矢量在該方法中不具備可靠性,從可用運動矢量集合中去除。所述步驟三,具體為通過運動矢量映射的方法將所有可用運動矢量映射到丟失幀上,找出前一幀和后一幀中與丟失幀中當前掩蓋4x4塊重合的4x4塊的運動矢量,對前一幀和后一幀分別建立參考運動矢量列表。所述步驟四,具體為對于某一個當前塊,根據(jù)前一幀的參考運動矢量列表中的某一個運動矢量映射到前一幀上,根據(jù)場一致性判決方法判定此運動矢量和其似然運動矢量的差值,遍歷所有參考運動矢量列表中的運動矢量,找到差值最小的運動矢量,作為前一幀中的最佳運動矢量,同樣方法找到后一幀中的最佳運動矢量,然后用線性插值法從兩個最佳運動矢量中得出內(nèi)插幀中當前塊的運動矢量,以參考前一幀并且殘差為零的方式完成內(nèi)插。綜上,本發(fā)明技術方案中,首先修改解碼器工作流程,在掩蓋當前丟失幀之前,獲取下一幀的所有運動矢量,然后利用運動矢量映射法獲取參考運動矢量列表,最后根據(jù)場一致性判決方法分別篩選出前一幀和后一幀的最佳運動矢量,用線性插值法從兩個最佳運動矢量中得出內(nèi)插幀中當前塊的運動矢量,以參考前一幀并且殘差為零的方式完成內(nèi)插。本發(fā)明能夠利用后一幀的信息以進一步提高掩蓋質(zhì)量,在各序列中的平均輸出峰值信噪比(PSNR)均優(yōu)于其他傳統(tǒng)方法,具有更好的視覺效果。圖1為本發(fā)明方法流程圖;圖2本發(fā)明中采用丟失幀的前一幀運動矢量映射方法示意圖;圖3本發(fā)明中場一致性判決方法示意圖;圖4本發(fā)明具體實施例中,table序列各幀的PSNR參數(shù)比較圖;圖5本發(fā)明具體實施例中,table序列各種方法第50幀的輸出圖像主觀質(zhì)量比較圖。具體實施例方式下面結合附圖對本發(fā)明的實施例作詳細說明本實施例在以本發(fā)明技術方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。如圖1所示,為本發(fā)明方法流程圖,方法詳細流程為步驟一,修改解碼器工作流程,在掩蓋當前丟失幀之前,獲取下一幀的所有運動矢量;在以H.264標準為例的解碼流程當中,當某個P幀丟失時,后續(xù)的P幀由于時域上的依賴性,則無法被解出。所以基于傳統(tǒng)的解碼流程的方法,對于某個P幀的掩蓋,只能參考前面幀的信息,比如運動矢量或者亮度與色度。實際上,解碼器在工作時,當且僅當解碼器接收到丟失幀的下一幀時,由于兩個相鄰幀的幀號不連續(xù),解碼器才會檢測到前一幀的丟失,進而調(diào)用幀掩蓋函數(shù)的接口。而此時,實際上解碼器已經(jīng)接受到了丟失幀后一幀的運動矢量和殘差信息,僅僅由于前一幀丟失了才無法解碼。所以可以獲取丟失幀后一幀的運動矢量場,結合丟失幀前一幀的運動矢量場等信息,來掩蓋丟失幀。在修改H.264的解碼流程之后,對于丟失幀,除了能獲取前面幀的信息外,還能夠獲取后一幀的部分信息,以用于丟失幀的掩蓋。具體實現(xiàn)方法是,在掩蓋丟失幀之前,加入了一個模塊以獲取下一幀的運動矢量,然后調(diào)用掩蓋丟失幀的接口函數(shù),最后將掩蓋完成的幀在下一幀之前插入輸出緩存以待輸出。步驟二,對于前一幀和后一幀的運動矢量信息,獲取其對應塊的殘差信息,根據(jù)殘差信息去掉一部分在該方法中不具可靠性的運動矢量,剩余運動矢量定義為可用運動矢量,其對應塊定義為可用塊。利用運動矢量所在塊的殘差信息,判決對應運動矢量在該方法中的可靠性。以前一幀為例,對于第個塊的殘差"(C1),判決它的大小,如果,認為該塊的運動矢量在該方法中不具備可靠性,從可用運動矢量集合中去除。其中1為殘差能量的閾值,根據(jù)具體視頻序列的實驗效果進行選取。步驟三,根據(jù)前一幀和后一幀的可用運動矢量,利用運動矢量映射法將所有可用運動矢量映射到丟失幀上,獲取丟失幀中當前掩蓋的4x4塊的參考運動矢量列表;基本的方法是運動矢量的映射與外插,以前一幀的可用運動矢量為例,如圖2所示,假設當前第η個P幀丟失,找到它的前一幀η-1。對η-1幀上的第i個4x4的可用塊S二,將它的運動矢量反向,沿著反向的運動矢量映射到第η幀上產(chǎn)生塊^^,它的運動矢量與gq的運動矢量相同。將所有η-1幀上的塊如此映射到第η幀上之后,第η幀上的每個4x4塊必然被若干個映射塊覆蓋。對于第η幀上的第j個塊,它被η-1幀上第i個映射塊覆蓋的面積是<=其中/(尸)=^pIei^1對于第η幀上的第j個塊,它被滿P^Bi,L0P史EBn。足>0條件的所有i#個塊覆蓋??梢詮乃锌捎眠\動矢量當中獲得這些覆蓋塊的運動矢量MG(W)。對于第j個塊,k個所有符合條件的參考運動矢量MJ^(W)組成它的參考運動矢量列表M^T(W)。步驟四,根據(jù)場一致性判決方法分別篩選出前一幀和后一幀的最佳運動矢量,用線性插值法從兩個最佳運動矢量中得出內(nèi)插幀中當前塊的運動矢量,以參考前一幀并且殘差為零的方式完成內(nèi)插;同樣以前一幀為例,對于丟失幀上的第j個塊,對于參考列表中的每一個參考矢量ΜΓ^(Η),按照這個矢量的方向?qū)G失幀中的當前塊j映射到前一幀n-i上。一般地,它將會覆蓋4個塊CBfL1,CBll,⑶二和⑶;夂當前塊^和他們的重合面積分別為^,w2,w3和w4。如圖3所示,對于覆蓋的部分,按照運動矢量的加權平均估算出這部分的似YjMV(CBI1)Wi然運動矢量#(墳)=@5-注意到當前根據(jù)場的一致性,Σ^““,Z=IOΜΓ(《)應該和似然運動矢量接近,可以用場一致性判別標準來判定的優(yōu)劣。用正交法定義矢量的SA^tMK^O-ftK^tf+tMWi^-ftWi^]2,選取和似然運動矢量敞㈧)的差最小的參考運動矢量作為前一幀的最佳運動矢量,mvZD=argmmUV}。后一幀的最佳運動矢量的選取方法與之類似,即從其參考運動矢量列表中選取最佳運動矢量。最后采用線性插值的方法,根據(jù)前一幀和后一幀的最佳重建矢量,獲得最終的重建運動矢量經(jīng)—()=經(jīng)^)+(1-嶺經(jīng):T(巧),選取α=0.5。實施例基于上述對圖1方法流程的描述,本實施例采用H.264的參考編解碼器JM15.1進行軟件仿真。該模型的編碼器部分能對YUV的圖像序列實施編碼,輸出碼流格式文件,解碼其部分能將兼容H.264標準的碼流解碼成YUV序列。采用JM模型自身提供的RTP丟包仿真器對碼流序列實施丟包仿真。本實施例首先修改解碼器工作流程。當其進行解碼時,在其掩蓋丟失幀的之前,加入了一個模塊以獲取下一幀的運動矢量,然后再調(diào)用掩蓋丟失幀的接口函數(shù),最后將掩蓋完成的幀在下一幀之前插入輸出緩存以待輸出。將table,foreman,coastguard,Stephan,Paris禾口headwithglasses等測試視頻序列利用JM編碼器編為H.264碼流文件,其中分辨率采用了手機電視中常用的CIF(35^^88),測試條件為30幀每秒,GOP設為IPPP并且I幀的周期是15幀,QP設為28。碼流封裝在RTP包中并且將一幀封入一個數(shù)據(jù)包中以仿真整幀丟失。然后利用JM模型自帶的丟包工具,按5%比率對碼流實施丟包,為了更好的觀測幀丟失后錯誤在時域上擴散的情況,限制在一個GOP中只丟失一個幀。對已丟包序列解碼,其中解碼器利用本發(fā)明的方法和一些傳統(tǒng)方法自動對錯誤實施掩蓋。傳統(tǒng)的掩蓋P幀整幀丟失的方法包括直接復制前一幀方法(FC),前面提到的已存在專利的運動矢量外推方法(MP)和拓展了后一幀運動矢量的雙向運動矢量外推方法(BME),加上本發(fā)明的方法,一共四種方法對整幀丟失的錯誤實施了掩蓋。通過表1的各代表性序列的輸出表現(xiàn)來看,本發(fā)明方法在各序列中的平均輸出峰值信噪比(PSNR)均優(yōu)于其他傳統(tǒng)方法。表1各序列中本發(fā)明輸出PSNR均優(yōu)于其他方法權利要求1.一種視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法,其特征在于,包括如下步驟步驟一,修改解碼器工作流程,在掩蓋丟失幀之前,加入了一個模塊以獲取下一幀的運動矢量;步驟二,對于前一幀和后一幀的運動矢量信息,獲取其對應塊的殘差信息,根據(jù)殘差信息去掉一部分不具可靠性的運動矢量,剩余運動矢量定義為可用運動矢量,其對應塊定義為可用塊;步驟三,根據(jù)前一幀和后一幀的可用運動矢量信息,利用運動矢量映射法將所有可用運動矢量映射到丟失幀上,建立丟失幀中當前掩蓋的4x4塊的參考運動矢量列表;步驟四,根據(jù)場一致性判決方法分別篩選出前一幀和后一幀的最佳運動矢量,用線性插值法從兩個最佳運動矢量中得出內(nèi)插幀中當前塊的運動矢量,以參考前一幀并且殘差為零的方式完成內(nèi)插。2.根據(jù)權利要求1所述的視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法,其特征是,所述步驟一,具體為解碼的流程中,在掩蓋丟失幀之前,加入了一個模塊以獲取下一幀的運動矢量,然后調(diào)用掩蓋丟失幀的接口函數(shù),最后將掩蓋完成的幀在下一幀之前插入輸出緩存以待輸出。3.根據(jù)權利要求1所述的視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法,其特征是,所述步驟二,其中根據(jù)殘差信息去掉一部分不具可靠性的運動矢量具體為利用運動矢量所在塊的殘差信息,判決對應運動矢量在該方法中的可靠性,如果該運動矢量所在塊的殘差大于一個預設閾值,認為該塊的運動矢量在該方法中不具備可靠性,從可用運動矢量集合中去除。4.根據(jù)權利要求1所述的視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法,其特征是,所述步驟三,具體為通過運動矢量映射的方法將所有可用運動矢量映射到丟失幀上,找出前一幀和后一幀中與丟失幀中當前掩蓋4x4塊重合的4x4塊的運動矢量,對前一幀和后一幀分別建立參考運動矢量列表。5.根據(jù)權利要求1所述的視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法,其特征是,所述步驟四,具體為對于某一個當前塊,根據(jù)前一幀的參考運動矢量列表中的某一個運動矢量映射到前一幀上,根據(jù)場一致性判決方法判定此運動矢量和其似然運動矢量的差值,遍歷所有參考運動矢量列表中的運動矢量,找到差值最小的運動矢量,作為前一幀中的最佳運動矢量,同樣方法找到后一幀中的最佳運動矢量,然后用線性插值法從兩個最佳運動矢量中得出內(nèi)插幀中當前塊的運動矢量,以參考前一幀并且殘差為零的方式完成內(nèi)插。全文摘要本發(fā)明公開一種視頻編解碼中針對整幀丟失誤碼掩蓋的P幀內(nèi)插方法,方法為修改解碼器工作流程,在掩蓋當前丟失幀前獲取下一幀的所有運動矢量;對于前一幀和后一幀的運動矢量信息,獲取對應塊的殘差信息,去掉不具可靠性的運動矢量,得到可用運動矢量;通過將可用運動矢量映射,建立丟失幀中當前掩蓋的4x4塊的兩個參考運動矢量列表,分別對應前一幀和后一幀;根據(jù)場一致性判決方法,分別篩選出前一幀和后一幀中與其似然運動矢量差別最小的運動矢量作為最佳運動矢量,從兩個最佳運動矢量中得出內(nèi)插幀中當前塊的運動矢量,以參考前一幀并且殘差為零的方式完成內(nèi)插。本發(fā)明能夠針對視頻編碼中P幀的整幀丟失錯誤掩蓋取得很好的內(nèi)插效果。文檔編號H04N7/50GK102404568SQ20111034482公開日2012年4月4日申請日期2011年11月4日優(yōu)先權日2011年8月18日發(fā)明者孫豪,楊華,鄭世寶申請人:上海交通大學