專利名稱:一種三維視頻中Skip和Direct模式運動矢量的預測方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻處理技術(shù)領(lǐng)域,尤其涉及一種三維視頻中Skip和Direct模式運動矢量的預測方法。
背景技術(shù):
近二十年來,視頻廣播技術(shù)發(fā)生了重大變革,從20世紀的模擬電視到數(shù)字電視、高清數(shù)字電視,乃至現(xiàn)在的三維電視,視頻技術(shù)隨著人們生活水平的提高不斷發(fā)展進步。當今世界,人們已經(jīng)不再滿足于傳統(tǒng)的單目視頻帶來的視覺感受,具有臨場感和交互性的三維視頻以其獨特的景深效果給用戶帶來前所未有的奇妙體驗。隨著好萊塢推出《阿凡達》等立體電影,三維視頻技術(shù)逐漸成為多媒體信息產(chǎn)業(yè)的熱門話題。與傳統(tǒng)的單目視頻相比,三維視頻包含的數(shù)據(jù)量成倍增加。為了避免信道中數(shù)據(jù)量激增,必須對其進行有效的編碼壓縮。近年來,全球各大研究機構(gòu)都投人大量精力對三維視頻編碼技術(shù)進行深入研究。ITU-T (ITU-T for ITU Telecommunication Standardization Sector,國際電信聯(lián)盟遠程通信標準化組織)的VCEG(VCEG Video Coding Experts Group,視頻編碼專家組)和ISO/IEC (國際標準化組織/國際電工委員會)的MPEG (Moving Picture Experts Group,動態(tài)圖像專家組)正積極開展對三維視頻和多視角視頻的研究和標準制定工作。相對于傳統(tǒng)的單目視頻編碼,三維視頻編碼中不僅有幀內(nèi)預測,時間預測,同時還有視角間預測和虛擬參考幀預測。Skip和Direct (跳躍和直接)模式是視頻編碼中一種高效的編碼模式,這種模式利用當前塊的空間或者時間相鄰塊推斷出當前塊的運動矢量,其效率取決與運動矢量估計的精度,因此如何高效的預測Skip和Direct模式的運動矢量一直是視頻編碼領(lǐng)域的一個熱點。現(xiàn)有技術(shù)中,主要通過如下幾種方法進行當前編碼塊運動矢量的預測:(I)根據(jù)空間臨塊A、B、C的運動矢量的中間值作為當前編碼塊的運動矢量。但是該處理方法在三維編碼中并不合理。例如:當前編碼塊的臨塊A,B, C分別采用時間預測,視角間預測和虛擬參考幀預測,那么A的運動矢量主要取決于其時間參考幀與當前編碼幀的距離,B的運動矢量取決于攝像機的分布,而在虛擬視角參考幀質(zhì)量較高的情況下,C通常為零。我們發(fā)現(xiàn)A,B,和C的運動矢量差異較大,取中間值操作也會變得沒有意義,進而導致運動矢量的預測值和真正的運動矢量值相差較大,編碼性能下降。(2)基于深度圖的運動矢量選擇方案:首先把臨塊A,B,和C的運動矢量映射到對應的深度圖中,然后分別計算每一個運動矢量在深度圖中的運動補償塊與當前編碼塊的深度圖對應塊的失真,最后選擇失真最小的運動矢量作為當前塊的最優(yōu)運動矢量。這種方法考慮到紋理圖和深度圖輪廓的相似性,若臨塊運動矢量決定的深度圖的運動補償塊與當前塊的深度對應塊相差較小,則可以推斷由該運動矢量得到的運動補償塊與當前編碼塊很可能屬于同一塊區(qū)域(例如:當前編碼塊和運動補償塊都位于背景中);但該算法的性能依賴與深度圖的質(zhì)量,當深度圖噪聲較大時,編碼效率較差。
(3)提高虛擬參考幀運動矢量或基本視角運動矢量的優(yōu)先級,當虛擬參考幀運動矢量或基本視角運動矢量可用時,直接作為當前塊的運動矢量輸出,否則,按照現(xiàn)有技術(shù)
(I)處理。但是該方法在虛擬視角參考幀質(zhì)量較差,或者視角間的相關(guān)性下降使基本視角的運動矢量預測性能不好時,編碼性能不可避免會下降。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種三維視頻中Skip和Direct模式運動矢量的預測方法,提高了編碼性能。一種三維視頻中Skip和Direct模式運動矢量的預測方法,該方法包括:判斷當前編碼塊的臨塊是否采用虛擬參考幀的Skip或Direct (跳躍或直接)進行編碼;若是,則按照優(yōu)先級從高到低順序為虛擬參考幀運動矢量MVvsp、基本視角運動矢量MVbs、臨塊運動矢量MVmedian與視角間運動矢量MViv的方式構(gòu)建運動矢量集合;否則按照從高到低優(yōu)先級順序為MVbs、MVmedian、MViv與MVvsp的方式構(gòu)建運動矢量集合;其中,所述MVbs為利用視差定位當前編碼塊在已編碼視角中對應塊的運動矢量,所述MVivS基于視角相關(guān)性獲得的臨塊的運動矢量;計算所述運動矢量集合中每一運動矢量的速率失真函數(shù)R-D代價,選擇結(jié)果最小的作為當前編碼塊Skip或Direct模式的最優(yōu)運動矢量。由上述本發(fā)明提供的技術(shù)方案可以看出,根據(jù)臨塊的運動信息,自適應的決定虛擬預測參考幀的優(yōu)先級,并利用R-D選擇最優(yōu)的運動矢量,使得視角間預測性能較差的或者虛擬視角參考幀質(zhì)量較差時,仍然可以取得較好的編碼性能。
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他附圖。圖1為本發(fā)明實施例一提供的一種三維視頻中Skip和Direct模式運動矢量的預測方法的流程圖;圖2為本發(fā)明實施例一提供的一種當前編碼塊與其臨塊空間位置的示意圖;圖3為本發(fā)明實施例二提供的又一種三維視頻中Skip和Direct模式運動矢量的預測方法的流程圖。
具體實施例方式下面結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明的保護范圍。實施例一
圖1為本發(fā)明實施例一提供的一種三維視頻中Skip和Direct模式運動矢量的預測方法的流程圖,主要包括如下步驟:步驟101、判斷當前編碼塊的臨塊是否采用虛擬參考幀的跳躍Skip或直接Direct進行編碼??深A先在臨塊的中添加標識位,通過解碼標識位來判斷臨塊是否使用Skip或Direct模式(例如,使用Skip或Direct模式則將其語法元素值設(shè)為1,否則把語法元素設(shè)置為O);當判定該臨塊使用Skip或Direct模式后,進一步分析該模式對應的參考幀類型,來判斷臨塊是否采用了虛擬參考幀預測。步驟102、按照優(yōu)先級從高到低的順序建立運動矢量集合。若當前編碼塊的臨塊使用了虛擬參考幀的Skip或Direct模式進行編碼,則當前塊Skip或Direct模式的虛擬參考幀運動矢量MVvsp的優(yōu)先級最高,其次為基本視角運動矢量MVbs、臨塊運動矢量MVnredian與視角間運動矢量MViv ;否則,基本視角運動矢量MVbs最高,其次為臨塊運動矢量MVmedian與視角間運動矢量MViv,虛擬參考幀運動矢量MVvsp的優(yōu)先級最低。其中,視角間運動矢量MViv為基于視角相關(guān)性獲得的臨塊的運動矢量;MVbs為利用視差定位當前編碼塊在已編碼視角中對應塊的運動矢量;臨塊運動矢量MVnredian為若干臨塊(一般選擇空間上相鄰的3個編碼塊)的運動矢量方向一致時的臨塊運動矢量中間值,或臨塊運動矢量方向不一致時的優(yōu)先級最高的可用編碼塊(例如依照圖2中A,B,C的優(yōu)先級順序)的運動矢量。步驟103、從運動矢量集合中選擇當前編碼塊的最優(yōu)運動矢量??蓪\動矢量集合里面的每個運動矢量進行R-D (速率失真函數(shù))代價的計算,選擇結(jié)果最小的作為當前編碼塊的最優(yōu)運動矢量。本發(fā)明實施例通過臨塊的運動信息,自適應的決定虛擬預測參考幀的優(yōu)先級,并利用R-D選擇最優(yōu)的運動矢量;使得視角間預測性能較差的或者虛擬視角參考幀質(zhì)量較差時,仍然可以取得較好的編碼性能。實施例二為了便于理解本發(fā)明,以下結(jié)合附圖2-3做本發(fā)明做進一步介紹。如圖3所示,主要包括如下步驟:步驟301、判斷當前編碼塊對應的幀的類型。本實施例主要考慮預測幀P幀及雙向預測幀B幀。其中,P幀解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面,即P幀沒有完整畫面數(shù)據(jù),只有與前一幀的畫面差別的數(shù)據(jù);換言之,P幀只允許幀內(nèi)預測(沒有運動矢量)和前向參考幀預測。B幀記錄的是本幀與前后幀的差別,即要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之后的畫面,通過前后畫面的與本幀數(shù)據(jù)的疊加取得最終的畫面;換言之,B幀允許幀內(nèi)預測、前向參考幀預測、后向參考幀預測及前后參考幀聯(lián)合預測??紤]以上幾點,本發(fā)明P幀運動矢量集合的建立過程與B幀有較大不同。步驟302、計算運動矢量。每一運動矢量均包含三個兀素:7jC平方向的偏移mvx、豎直方向的偏移mvy與參考幀索引ref,可表示為:
MV = {mvxJ mvyJ ref}。如步驟301所介紹的,P幀只有前向參考幀預測沒有后向參考幀預測,因此,沒有后向運動偏移,B幀可以前向與后向運動偏移,表示為:
權(quán)利要求
1.一種三維視頻中Skip和Direct模式運動矢量的預測方法,其特征在于,該方法包括: 判斷當前編碼塊的臨塊是否采用虛擬參考幀的跳躍Skip或直接Direct模式進行編碼; 若是,則當前塊的Skip或Direct模式按照優(yōu)先級順序為虛擬參考巾貞運動矢量MVvsp、基本視角運動矢量MVbs、臨塊運動矢量MVnredian與視角間運動矢量MViv的方式構(gòu)建運動矢量集合;否則當前塊的Skip或Direct模式按照優(yōu)先級順序為MVbs、MVmedian, MViv與MVvsp的方式構(gòu)建運動矢量集合;其中,所述MVbs為利用視差定位當前編碼塊在編碼視角中對應塊的運動矢量,所述MViv為基于視角相關(guān)性獲得的臨塊的運動矢量; 計算所述運動矢量集合中每一運動矢量的速率失真函數(shù)R-D代價,選擇結(jié)果最小的作為當前編碼塊Skip或Direct模式的最優(yōu)運動矢量。
2.根據(jù)權(quán)利要求1所 述的方法,其特征在于,該方法還包括:判斷當前編碼塊對應參考幀的類型,根據(jù)幀的類型構(gòu)建運動矢量集合,其步驟包括: 判斷當前編碼塊對應參考巾貞的類型;并通過標識vsp_first_pos表示當前編碼塊的臨塊是否采用了虛擬參考巾貞的Skip或Direct模式,若是,則定義vsp_first_pos為I,否則,定義 vsp_f irst_pos 為 O ; 若當前編碼塊對應的參考幀為預測幀P幀,則判斷當前編碼塊的臨塊是否采用虛擬參考幀的Skip模式進行編碼;若當前編碼塊的某一臨塊采用了虛擬參考幀的Skip模式,則將vsp_first_pos 設(shè)為 1,否則,將 vsp_first_pos 設(shè)為 O ;當 vsp_f irst_pos 為 I 時,按照優(yōu)先級順序為MVvsp、MVbs、MVmedian與MViv的方式構(gòu)建運動矢量集合;當vsp_first_pos為O時,按照優(yōu)先級順序為MVbs、MVmedian, MViv與MVvsp的方式構(gòu)建矢量集合,該集合表示為:
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述運動矢量集合中每一運動矢量包括:MV = {mvx, mvy, ref}; 其中,mvx為水平方向的偏移,mvy為垂直方向的偏移,ref為參考幀索引; P中貞與B巾貞的mvx與mvy包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)幀的類型構(gòu)建運動矢量集合還包括: 判斷運動矢量集合中是否存在大小和方向均一致的運動矢量,若是,則刪除運動矢量集合中優(yōu)先級較低的運動矢量; 比較運動矢量集合與閾值的大小關(guān)系,若所述運動矢量集合小于閾值,則根據(jù)對應參考幀的類型向該集合中添加默認運動矢量MVdrfault ;所述MVdrfault為前向或前向和后向參考中貞列表中第一個參考巾貞,且其水平及豎直方向的偏移量均為零。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計算每一候選運動矢量的速率失真函數(shù)R-D代價包括: 利用拉格朗日優(yōu)化法進行計算J = D+入R ; 其中,\為拉格朗日因子; D為當前編碼塊的失真值,其計算公式為: D = Dy+Du+Dy ; 其中,Dy為亮度分量,Du與Dv為色度分量; R為當前編碼塊編碼時所需要的比特數(shù),其計算公式為:R = R1.^ +R., iYskip_flag lYmvp—idx , 其中,RskipjIag為編碼跳躍標識skip_flag的比特數(shù),Rfflvp idx為編碼索引的比特數(shù)。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,計算所述MVbs的步驟包括: 構(gòu)建運動矢量集合MVnb,該集合包括若干臨塊的運動矢量及視差運動矢量MVdis ;其中,所述MVdis中水平方向的偏移為深度圖計算出的當前編碼塊相對于該視角間參考幀的水平視差disparity,豎直方向的偏移為O ; 判斷MVnb中第i個運動矢量MVnb [i]的運動矢量方向是否等于X,若是,則利用所述第i個運動矢量的mvx與mvy計算當前編碼塊在編碼視角中對應塊的水平位置posxl和豎直位置Posyl,獲得所述對應塊的運動矢量MVbv[posyl] [posxl],否則,判斷第i+1個運動矢量MVnb[i+1]的運動矢量方向是否等于X,直至找到MVnb中運動矢量方向為X或者MVnb被判斷完畢; 判斷所述對應塊的運動矢量MVbv[posyl] [posxl]的方向是否為z,若是,則將所述對應塊的運動矢量MVbv[posyl] [posxl]作為mvbs輸出; 當所述運動矢量集合MVnb中的所有運動矢量均被計算,且不存在當前編碼塊在已編碼視角中運動矢量方向為Z的對應塊,則IWbs輸出為空。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,計算所述MV-的步驟包括: 比較若干臨塊的運動矢量方向是否一致,若是,則分別計算臨塊的運動矢量中的水平方向偏移的中間值、豎直方向偏移的中間值及參考幀的中間值,并作為MVniedian的水平方向的偏移,豎直方向的偏移和參考巾貞; 否則,按照所述若干臨塊的優(yōu)先級依次判斷是否存在運動矢量,并將第一個存在運動矢量的臨塊的運動矢量作為MVmedian輸出;若臨塊均不存在運動矢量,則輸出為空。
8.根據(jù)權(quán)利要求3所述的方法,其特征在于,計算所述MViv的步驟包括: 根據(jù)運動矢量的方向判斷當前編碼塊的若干臨塊的運動矢量中是否存在視角間預測的臨塊;若是,則將優(yōu)先級最高的使用視角間預測的臨塊的運動矢量作為MViv輸出; 否則,從參考幀列表中的提取第一個視角間參考幀,通過深度圖計算出的當前編碼塊相對于該視角間參考幀的水平視差disparity作為水平方向的偏移mvx,同時將豎直方向的偏移Hivy為O ;將該mvx、mvy及對應的視角間參考幀的索引作為MViv輸出。
9.根據(jù)權(quán)利要求2所述的方法,其特征在于,構(gòu)建所述運動矢量之后還包括:通過自適應二進制算術(shù)編碼CABAC算法,將所述最優(yōu)矢量的索引值寫入碼流文件: 編碼時CABAC算法的上下文包括act_ctxO和act_ctxl:act—ctxO = a+b ; act_ctxl = a+b+3 ; 其中,P幀編碼時CABAC算法的上下文包括act—CtxO和act—ctxl,B幀編碼時CABAC算法的上下文包括act_ctx0 ;a與b定義為:
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,該方法還包括:根據(jù)當前參考幀是否為錨定幀進行編碼,具體的: 判斷當前參考幀是否為錨定幀:若當前參考幀為錨定P幀,則is_anch0r賦值為1,否貝U,將is_anchor賦值為0,同時P幀最多運行3個運動矢量,其編碼過程定義為:If mvpJdx==O CABAC一encoder(0, context[is_anchor][act一ctxO] else if mvp_idx==1 CABAC_encoder( I ,context[is_anchor][act_ctxO] CABAC_encoder(0,context[is_anchor][act_ctx13 else CABAC_encoder( 1 ,context[is_anchor][act_ctxO]CABAC_encoder( 1 ,context[is_anchor][act_ctx1 ]; 若當前幀 為非錨定B幀,則最多允許2個運動矢量,運動矢量集合對應的閾值為2,其編碼過程定義為: If mvp Jdx==O CA巳AC_encoder(0,context[2][act_ctx0] else C AB AC_en cod e r( 1 ,context[2][act_ctx0],
全文摘要
本發(fā)明公開了一種三維視頻中Skip和Direct模式運動矢量的預測方法,該方法包括判斷當前編碼塊的臨塊是否采用虛擬參考幀的跳躍Skip或直接Direct模式進行編碼;若是,則當前塊的Skip或Direct模式按照優(yōu)先級順序為虛擬參考幀運動矢量MVvsp、基本視角運動矢量MVbs、臨塊運動矢量MVmedian與視角間運動矢量MViv的方式構(gòu)建運動矢量集合;否則當前塊的Skip或Direct模式按照優(yōu)先級順序為MVbs、MVmedian、MViv與MVvsp的方式構(gòu)建運動矢量集合;計算所述運動矢量集合中每一運動矢量的速率失真函數(shù)R-D代價,選擇結(jié)果最小的作為當前編碼塊Skip或Direct模式的最優(yōu)運動矢量。通過采用本發(fā)明公開的方法,提高了編碼性能。
文檔編號H04N7/32GK103108183SQ20131004165
公開日2013年5月15日 申請日期2013年2月1日 優(yōu)先權(quán)日2013年2月1日
發(fā)明者蘇文藝, 李厚強 申請人:中國科學技術(shù)大學