本發(fā)明涉及視頻編解碼領(lǐng)域,尤其是一種空間分辨率轉(zhuǎn)碼方法。
背景技術(shù):
近十年里,H.264/MPEG-4AVC被廣泛使用于各種應(yīng)用。然而,隨著高清以及超高清視頻的發(fā)展和普及,其對(duì)視頻壓縮效率的要求進(jìn)一步提高,H.264由于其局限性無(wú)法繼續(xù)滿足這種需求,因此給視頻編碼技術(shù)帶來(lái)了新的挑戰(zhàn)。一種高效率編碼——HEVC就是在這種背景下被提出的,其目標(biāo)是通過(guò)融合最新的技術(shù)和算法來(lái)達(dá)到在保證視頻質(zhì)量的基礎(chǔ)上,壓縮效率比H.264高一倍的目的,以滿足人們對(duì)高清以及超高清視頻的需求。
在編碼原理和基本框架方面,HEVC沿用了從H.261就開(kāi)始采用的經(jīng)典的基于塊的混合視頻編碼方式。其編碼技術(shù)和H.264基本保持了一致,主要包括:幀內(nèi)/幀間預(yù)測(cè)、運(yùn)動(dòng)補(bǔ)償和估計(jì)、熵編碼、變換、量化以及環(huán)路濾波等等。但是相對(duì)于H.264,HEVC在很多細(xì)節(jié)方面進(jìn)行了比較大的改變。首先,HEVC使用了基于編碼樹(shù)單元(CTU)的四叉樹(shù)結(jié)構(gòu)取代了H.264中的宏塊,并將編碼單元的尺寸大小從H.264中宏塊的16×16擴(kuò)展到了HEVC中CTU的64×64。CTU還可以劃分成多個(gè)編碼單元CUs,其大小為64×64~8×8,對(duì)應(yīng)的CU深度分別為0~3。此外,每個(gè)CU還可以進(jìn)一步劃分成預(yù)測(cè)單元(PU)和變換單元(TU)。第二,相對(duì)H.264中幀內(nèi)預(yù)測(cè)的9個(gè)預(yù)測(cè)模式,HEVC在此基礎(chǔ)上將預(yù)測(cè)模式進(jìn)行了細(xì)化,一共定義了35種幀內(nèi)預(yù)測(cè)模式。第三,HEVC的幀間預(yù)測(cè)模式除了采用了H.264中的對(duì)稱分割模式,如:2N×2N模式、N×N模式、2N×N模式和N×2N模式,還引入了非對(duì)稱分割模式,如:2N×nU模式、2N×nD模式、nL×2N模式和nR×2N模式。第四,HEVC首次使用了自適應(yīng)環(huán)路濾波(Adaptive Loop Filter)技術(shù)來(lái)降低方塊效應(yīng)、振鈴效應(yīng)以及圖像模糊等失真效應(yīng)對(duì)視頻質(zhì)量的影響。該技術(shù)主要包括了去方塊濾波(De-blocking Filter)技術(shù)和像素自適應(yīng)偏移(Sample Adaptive Offset)技術(shù)。前者主要用來(lái)改善方塊效應(yīng),后者則是為了解決振鈴效應(yīng)。這些技術(shù)在提高HEVC壓縮效率的同時(shí),也使得其計(jì)算復(fù)雜度大大增加。
另一方面,如今多種視頻格式和數(shù)據(jù)壓縮編碼算法共存。為了實(shí)現(xiàn)不同網(wǎng)絡(luò)、不同終端設(shè)備之間的無(wú)縫連接,原始視頻必要通過(guò)動(dòng)態(tài)調(diào)整成不同的格式以滿足不同的網(wǎng)絡(luò)以及各種用戶的需求。視頻轉(zhuǎn)碼技術(shù)就是這樣一種可以解決視頻發(fā)送端與接收端兼容性問(wèn)題以及網(wǎng)絡(luò)狀況問(wèn)題的技術(shù)。
另外,目前隨著4K(3840×2160)電視以及電影的出現(xiàn),數(shù)字視頻已經(jīng)由720P(1280×720)、1080P(1920×1080)走向了4K時(shí)代。然而,目前市場(chǎng)上大部分的移動(dòng)設(shè)備終端所支持的分辨率目前至多達(dá)到1080P,因此為了使高分辨率的原始視頻流可以在移動(dòng)設(shè)備上播放,必須降低其分辨率??臻g分辨率轉(zhuǎn)碼就是這樣的一種技術(shù),它可以把同一壓縮標(biāo)準(zhǔn)的高分辨率視頻流轉(zhuǎn)換成另一個(gè)預(yù)先設(shè)定的低分辨率視頻流。其主要目的是通過(guò)降低原視頻流的分辨率,使得轉(zhuǎn)碼后的視頻流格式符合當(dāng)前移動(dòng)設(shè)備的播放格式。因此,為了使HEVC廣泛應(yīng)用于各類產(chǎn)品中,其空間分辨率轉(zhuǎn)碼成為當(dāng)前亟待解決的問(wèn)題。
視頻轉(zhuǎn)碼框架主要可以分為像素域轉(zhuǎn)碼PDT以及壓縮域轉(zhuǎn)碼CDT兩種。其中PDT主要是將輸入視頻流首先直接解碼成像素域圖像,然后再將像素域圖像轉(zhuǎn)碼成目標(biāo)碼流;CDT則是將輸入視頻流進(jìn)行不完全解碼,只需得到變換域系數(shù),然后對(duì)其進(jìn)行重編碼得到目標(biāo)碼流。級(jí)聯(lián)型轉(zhuǎn)碼器是像素域轉(zhuǎn)碼器的一個(gè)最基本最原始的形式,也就是所謂的“全解全編”轉(zhuǎn)碼器。然而由于該框架是直接先對(duì)原始視頻流進(jìn)行完全解碼再進(jìn)行重新編碼,編碼器并沒(méi)有利用任何解碼器里面的信息來(lái)加速轉(zhuǎn)碼器,因此該轉(zhuǎn)碼器的計(jì)算復(fù)雜度非常大,使其在實(shí)際的應(yīng)用中受到了限制。但是該轉(zhuǎn)碼器具有普適性和無(wú)損性的優(yōu)點(diǎn),可以在保證視頻質(zhì)量沒(méi)有任何損失的前提下,實(shí)現(xiàn)各種格式的視頻轉(zhuǎn)碼。因此,該轉(zhuǎn)碼器經(jīng)常作為參考標(biāo)準(zhǔn)來(lái)衡量其他視頻轉(zhuǎn)碼器性能的優(yōu)劣。相對(duì)于像素域轉(zhuǎn)碼器,壓縮域轉(zhuǎn)碼器在反量化后直接對(duì)變換系數(shù)進(jìn)行重量化,省掉了DCT變換等操作,因此壓縮域轉(zhuǎn)碼器大大降低了轉(zhuǎn)碼的復(fù)雜度,其轉(zhuǎn)碼效率比像素域轉(zhuǎn)碼器要高出許多。但簡(jiǎn)單壓縮域轉(zhuǎn)碼器有一個(gè)致命的缺點(diǎn)就是該轉(zhuǎn)碼器的實(shí)現(xiàn)是基于解碼端和編碼端的圖像幀具有相同的空間/時(shí)間分辨率的假設(shè)的,因此只能進(jìn)行碼率轉(zhuǎn)碼,并不能直接應(yīng)用于空間/時(shí)間分辨率轉(zhuǎn)碼。
由于變換域轉(zhuǎn)碼器的缺點(diǎn),因此目前在進(jìn)行空間分辨率下采樣時(shí)的主要方法是:在HEVC解碼器中將HEVC視頻完全解碼為YUV視頻流,隨后再利用HEVC解碼器中對(duì)解碼的YUV視頻流進(jìn)行重新編碼,即像素域轉(zhuǎn)碼框架。不過(guò),該方法有一個(gè)比較明顯的缺點(diǎn),即該轉(zhuǎn)碼器的計(jì)算復(fù)雜度比較大,轉(zhuǎn)碼所需的時(shí)間比較長(zhǎng),很難滿足實(shí)時(shí)轉(zhuǎn)碼的要求。研究一種任意空間分辨率轉(zhuǎn)碼快速算法的轉(zhuǎn)碼方案是非常有意義的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種高效低耗的HEVC空間分辨率轉(zhuǎn)碼方法。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:
一種HEVC空間分辨率轉(zhuǎn)碼方法,包括如下步驟:使用解碼器將原始的分辨率視頻流進(jìn)行解碼,生成重建的視頻流;對(duì)重建后的視頻流進(jìn)行空間分辨率下采樣操作;利用編碼器對(duì)下采樣后的視頻流進(jìn)行重新編碼,得到目標(biāo)空間分辨率視頻流,并將其輸出;其中,從解碼器中得到的編碼塊和編碼器中的編碼塊之間的映射方法為:設(shè)Sd表示在當(dāng)前編碼單元CUo在深度為d時(shí),其在解碼端所對(duì)應(yīng)的映射塊,Wi、Hi分別為當(dāng)前編碼單元CUo在解碼端中的映射塊Sd的寬和高,而Wo、Ho則為當(dāng)前編碼單元CUo的寬和高;設(shè)輸入視頻流的原始分辨率為Wd×Hd,輸出視頻流的目標(biāo)分辨率為We×He,α、β分別為視頻圖像寬、高的映射比例,則
那么Wi和Wo以及Hi和Ho的關(guān)系應(yīng)滿足公式
其中c為修正因子,取值為1。
為進(jìn)一步加快編碼速度,可采用快速CU深度預(yù)測(cè)算法,具體為:首先,統(tǒng)計(jì)映射塊Sd中深度的分布情況,根據(jù)當(dāng)前CU的高、寬以及公式(4-1)和(4-2)得到當(dāng)前深度下的映射塊Sd,然后以8×8為單位統(tǒng)計(jì)當(dāng)前映射塊中CU深度的分布情況,不足8×8的將其看作8×8編碼塊,需要統(tǒng)計(jì)的信息包括:映射塊中8×8編碼塊的總數(shù),每個(gè)深度所對(duì)應(yīng)的編碼塊的個(gè)數(shù)、映射塊中深度的最大值Dmax以及最小值Dmin、映射塊中權(quán)重最大的深度值;當(dāng)前編碼單元CUo的深度為a,0≤a≤3,Nai代表當(dāng)前編碼單元CUo的深度為a時(shí),其映射塊中深度為i的8×8編碼塊的總數(shù),0≤i≤3;因此,fai則為當(dāng)前編碼單元CUo的深度為a時(shí),其映射塊中深度i的權(quán)重,則
因此映射塊Sd中數(shù)量最多的深度即所占權(quán)重最大的深度ma為
ma=argmax fai,0≤i≤3 公式(4-5)
接下來(lái),結(jié)合深度的初始化范圍[Dmin,Dmax]以及上述深度信息,進(jìn)一步精確CU深度的預(yù)測(cè),采用如下算法:(根據(jù)前面的對(duì)應(yīng))
(1)當(dāng)a=0時(shí),執(zhí)行CU跳過(guò)算法的情況為:
(a)其映射塊Sa中深度滿足Dmin>0,即
(b)其映射塊中深度為2和3的8×8編碼塊數(shù)量超過(guò)一半以上,即f02+f03>0.5;若當(dāng)前情況符合以上兩者之一時(shí),跳過(guò)深度0;另一方面,若映射塊中深度滿足Dmax=0,即映射塊中所有CU的深度都為0,則認(rèn)為當(dāng)前CU的深度也為0,不再往下劃分;
(2)當(dāng)a≠0時(shí),則映射塊Sa,Sa-1以及Sa-2中深度的分布情況來(lái)決定,當(dāng)a=1時(shí),提前終止條件為:
(a)映射塊中最大的深度滿足Dmax≤1;
(b)上一層深度a=0所對(duì)應(yīng)的映射塊中所占權(quán)重最大的深度ma-1≤1,且深度為0的8×8編碼塊超過(guò)一半以上即f10>0.5;當(dāng)滿足以上兩個(gè)條件時(shí),跳過(guò)深度1;另一方面,若其映射塊中深度分布情況滿足以下所有條件,則執(zhí)行CU跳過(guò)算法:
(a)當(dāng)前映射塊Sa的最小的深度滿足Dmin>1;
(b)上一層深度即深度0所對(duì)應(yīng)的映射塊中所占權(quán)重最大的深度滿足ma-1>1;
(c)當(dāng)前深度映射塊中深度為3的8×8編碼塊超過(guò)一半以上即f13>0.5;
而對(duì)于a=2,提前終止條件為:(a)映射塊中最大的深度滿足Dmax≤2;(b)映射塊中深度為0和1的8×8編碼塊數(shù)量占一半以上;(c)深度為0所對(duì)應(yīng)的映射塊以及深度為1所對(duì)應(yīng)的映射塊中,權(quán)重最大的深度ma-1和ma-2均小于等于2;另一方面,當(dāng)映射塊中深度分布情況滿足下面所有條件時(shí),執(zhí)行CU跳過(guò)算法:(a)當(dāng)前映射塊的最小的深度Dmin>2;(b)當(dāng)前映射塊中深度為3的8×8編碼塊數(shù)量占一半以上即f23>0.5;(c)ma-1和ma-2均大于2。
為進(jìn)一步加快編碼速度,可采用快速多參考幀搜索算法以縮小多參考幀的取值范圍,具體包括:首先得到當(dāng)前編碼塊CUo的映射塊Sd,然后以8×8編碼塊為單位統(tǒng)計(jì)當(dāng)前映射塊中多參考幀索引分布情況,不足8×8的將其看作8×8編碼塊,然后根據(jù)當(dāng)前多參考幀的分布情況采用如下算法:
設(shè)映射塊中存在的不同的參考幀的數(shù)量為Nref,Nref的取值范圍為[1,4],設(shè)映射塊中存在的最大的參幀索引號(hào)為refmax,最小的多參考幀索引號(hào)refmin,則多參考幀ref的取值范圍根據(jù)Nref的取值分為如下兩種情況:
當(dāng)Nref=1時(shí),將多參考幀ref的取值范圍初始化為[0,refmax],而1<Nref≤4時(shí),將多參考幀ref的范圍精確為[refmin-1,refmax+1];其中,當(dāng)refmin-1<0時(shí),則將refmin-1的值設(shè)為0;或者當(dāng)refmax+1>4時(shí),則將refmax+1的值設(shè)為4。
為進(jìn)一步加快編碼速度,可采用快速多參考幀搜索算法以縮小多參考幀的取值范圍,具體包括:首先得到當(dāng)前編碼塊CUo的映射塊Sd,然后以8×8編碼塊為單位統(tǒng)計(jì)當(dāng)前映射塊中多參考幀索引分布情況,不足8×8的將其看作8×8編碼塊,然后根據(jù)當(dāng)前多參考幀的分布情況采用如下算法:
設(shè)映射塊中存在的不同的參考幀的數(shù)量為Nref,Nref的取值范圍為[1,4],設(shè)映射塊中存在的最大的參幀索引號(hào)為refmax,最小的多參考幀索引號(hào)refmin,則多參考幀ref的取值范圍根據(jù)Nref的取值分為如下兩種情況:
當(dāng)Nref=1時(shí),將多參考幀ref的取值范圍初始化為[0,refmax],而1<Nref≤4時(shí),將多參考幀ref的范圍設(shè)為[refmin,refmax]。
本發(fā)明的有益效果是:本發(fā)明對(duì)于HEVC空間分辨率轉(zhuǎn)碼框架,提出了快速算法(快速CU深度預(yù)測(cè)算法和快速多參考幀搜索算法),通過(guò)已提出的快速算法加快編碼速度,同時(shí)還保證了視頻的質(zhì)量。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例快速CU深度預(yù)測(cè)算法流程圖。
圖2為本發(fā)明實(shí)施例快速多參考幀搜索算法流程圖。
具體實(shí)施方式
下面結(jié)合附圖及實(shí)例,對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
本實(shí)施例研究的是空間分辨率的轉(zhuǎn)碼,即原始圖像和轉(zhuǎn)碼后的圖像大小尺寸不相同,因此,對(duì)H.265格式視頻按照標(biāo)準(zhǔn)進(jìn)行解碼到像素域,得到像素域的視頻,必須要根據(jù)目標(biāo)分辨率進(jìn)行下采樣,然后將下采樣之后的視頻進(jìn)行重新編碼。綜上所述,空間分辨率轉(zhuǎn)碼主要分成三個(gè)步驟:首先使用解碼器將原始的分辨率視頻流進(jìn)行解碼,生成重建的視頻流(YUV);然后對(duì)重建后的視頻流進(jìn)行空間分辨率下采樣操作;最后利用編碼器對(duì)下采樣后的視頻流進(jìn)行重新編碼,得到目標(biāo)空間分辨率視頻流,并將其輸出。
為了可以更有效地利用轉(zhuǎn)碼器中解碼端的編碼信息,首當(dāng)其沖要解決的問(wèn)題便是從解碼器中得到的編碼塊和編碼器中的編碼塊之間的映射關(guān)系。由于研究的是任意空間分辨率下采樣,因此無(wú)法像2:1空間分辨率轉(zhuǎn)碼一樣,直接將四個(gè)編碼塊映射成一個(gè)。設(shè)Sd表示在當(dāng)前編碼單元CUo在深度為d時(shí),其在解碼端所對(duì)應(yīng)的映射塊。Wi、Hi分別為當(dāng)前編碼單元CUo在解碼端中的映射塊Sd的寬和高,而Wo、Ho則為當(dāng)前編碼單元CUo的寬和高。其中,Wo和Ho的取值一般為8、16、32以及64。設(shè)輸入視頻流的原始分辨率為Wd×Hd,輸出視頻流的目標(biāo)分辨率為We×He,α、β分別為視頻圖像寬、高的映射比例,則
那么Wi和Wo以及Hi和Ho的關(guān)系應(yīng)滿足公式(4-2)
其中c為修正因子,在本實(shí)施例中其值設(shè)為1。例如,在執(zhí)行720P→480P的任意空間分辨率轉(zhuǎn)碼時(shí),有:Wd=1280,Hd=720,We=832,He=480,此時(shí)若當(dāng)前編碼塊CUo的尺寸大小為32×32,則Wi=[1280/720*32]+1=50,Hi=[720/480*32]+1=49。
利用以上的映射關(guān)系,本實(shí)施例采用兩個(gè)快速轉(zhuǎn)碼算法:快速CU深度預(yù)測(cè)算法和快速多參考幀搜索算法。而在算法中所要用到的映射塊Sd中的統(tǒng)計(jì)信息(如CU深度信息、多參考幀索引信息等等)都是以8×8的編碼塊為單位進(jìn)行統(tǒng)計(jì)的。
快速CU深度預(yù)測(cè)算法的主要思想就是通過(guò)利用從原始高分辨率圖像映射塊Sd中得到的深度信息來(lái)預(yù)測(cè)當(dāng)前編碼單元CUo的深度。
考慮到映射塊Sd和當(dāng)前編碼單元CUo之間的相關(guān)性,可以利用Sd中的深度信息來(lái)縮小CUo的深度選擇范圍。設(shè)do為CUo的最佳深度(0≤do≤3),a為當(dāng)前編碼單元CUo正在計(jì)算的深度(0≤a≤3),則Dmax和Dmin分別為Sd中的最大深度和最小深度值,因此可以把do的范圍初始化為do∈[Dmin,Dmax]。
另外,通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),在d=1或d=2時(shí),其上層深度所對(duì)應(yīng)的映射塊Sd-1以及Sd-2中深度的分布情況會(huì)對(duì)當(dāng)前編碼塊的深度選擇產(chǎn)生影響。因此,本實(shí)施例所設(shè)計(jì)的基于任意空間分辨率轉(zhuǎn)碼算法的快速CU深度預(yù)測(cè)算法的基本思想是:對(duì)于深度d=0的情況,本實(shí)施例主要根據(jù)do∈[Dmin,Dmax]來(lái)判斷是否執(zhí)行跳過(guò)當(dāng)前深度或者提前終止CU劃分的操作;而對(duì)于深度d=1或d=2時(shí)的情況,本實(shí)施例則將當(dāng)前映射塊Sd和Sd-1以及Sd-2中的深度信息都聯(lián)合起來(lái)根據(jù)一定的條件是否執(zhí)行跳過(guò)當(dāng)前深度或者提前終止CU劃分的操作。其算法流程圖如圖1所示,具體描述如下:
首先,統(tǒng)計(jì)映射塊Sd中深度的分布情況。根據(jù)當(dāng)前CU的高、寬以及公式(4-1)和(4-2)得到當(dāng)前深度下的映射塊Sd,然后以8×8為單位(不足8×8的將其看作8×8編碼塊)統(tǒng)計(jì)當(dāng)前映射塊中CU深度的分布情況,需要統(tǒng)計(jì)的信息主要有:映射塊中8×8編碼塊的總數(shù),每個(gè)深度(0~3)所對(duì)應(yīng)的編碼塊的個(gè)數(shù)、映射塊中深度的最大值Dmax以及最小值Dmin、映射塊中權(quán)重最大的深度值。當(dāng)前編碼單元CUo的深度為a(0≤a≤3),Nai代表當(dāng)前編碼單元CUo的深度為a時(shí),其映射塊中深度為i的8×8編碼塊的總數(shù)(0≤i≤3)。因此,fai則為當(dāng)前編碼單元CUo的深度為a時(shí),其映射塊中深度i的權(quán)重,則
因此映射塊Sd中數(shù)量最多的深度即所占權(quán)重最大的深度ma為
ma=argmax fai,0≤i≤3 公式(4-5)
接下來(lái),我們將結(jié)合深度的初始化范圍[Dmin,Dmax]以及上述深度信息,進(jìn)一步精確CU深度的預(yù)測(cè),設(shè)計(jì)了如圖1所示的算法,具體描述如下:
(1)當(dāng)a=0時(shí),執(zhí)行CU跳過(guò)算法的情況為:
(a)其映射塊Sa中深度滿足Dmin>0,即
(b)其映射塊中深度為2和3的8×8編碼塊數(shù)量超過(guò)一半以上,即f02+f03>0.5,即圖1中的跳過(guò)條件1。若當(dāng)前情況符合以上兩者之一時(shí),跳過(guò)深度0。另一方面,若映射塊中深度滿足Dmax=0,即映射塊中所有CU的深度都為0,即Sa中深度的分布情況滿足圖1中的提前終止條件1,則認(rèn)為當(dāng)前CU的深度也為0,不再往下劃分。
(2)當(dāng)a≠0時(shí),則映射塊Sa,Sa-1以及Sa-2中深度的分布情況來(lái)決定。此時(shí),根據(jù)深度的不同,即a=1或a=2,設(shè)置了不同的提前終止條件2以及跳過(guò)條件2。因此,當(dāng)a=1時(shí),圖1中的提前終止條件2為:
(a)映射塊中最大的深度滿足Dmax≤1;
(b)上一層深度(a=0)所對(duì)應(yīng)的映射塊中所占權(quán)重最大的深度ma-1≤1,且深度為0的8×8編碼塊超過(guò)一半以上即f10>0.5。當(dāng)滿足以上兩個(gè)條件時(shí),跳過(guò)深度1。另一方面,若其映射塊中深度分布情況滿足以下所有條件,則執(zhí)行CU跳過(guò)算法。另外,對(duì)a=1,圖1中的跳過(guò)條件2為:(a)當(dāng)前映射塊Sa的最小的深度滿足Dmin>1;(b)上一層深度即深度0所對(duì)應(yīng)的映射塊中所占權(quán)重最大的深度滿足ma-1>1;(c)當(dāng)前深度映射塊中深度為3的8×8編碼塊超過(guò)一半以上即f13>0.5。而對(duì)于a=2,圖1中的提前終止條件2為:(a)映射塊中最大的深度滿足Dmax≤2;(b)映射塊中深度0和1的8×8編碼塊數(shù)量占一半以上;(c)深度為0所對(duì)應(yīng)的映射塊以及深度1所對(duì)應(yīng)的映射塊中,權(quán)重最大的深度ma-1和ma-2均小于等于2。因此,若其映射塊中深度分布情況滿足以下所有條件,則提前終止算法。另一方面,當(dāng)映射塊中深度分布情況滿足下面所有條件時(shí)(即圖1中的跳過(guò)條件2),執(zhí)行CU跳過(guò)算法:(a)當(dāng)前映射塊的最小的深度Dmin>2;(b)當(dāng)前映射塊中深度為3的8×8編碼塊數(shù)量占一半以上即f23>0.5;(c)ma-1和ma-2均大于2。
多參考幀預(yù)測(cè)是指通過(guò)對(duì)當(dāng)前編碼塊在前面的幾個(gè)參考幀中進(jìn)行運(yùn)動(dòng)補(bǔ)償計(jì)算,選擇代價(jià)最小的多參考幀作為最優(yōu)的參考幀。但這種操作的缺點(diǎn)是其計(jì)算量很大。另一方面,實(shí)驗(yàn)表明,70%的最佳參考幀是離當(dāng)前幀最近的那一幀。也就是說(shuō)當(dāng)前幀和參考幀的距離越遠(yuǎn),他們之間的相關(guān)性就越弱。因此,選距離較遠(yuǎn)的參考幀作為最佳參考幀的可能性就越小。所以,根據(jù)這種現(xiàn)象可以得到一個(gè)結(jié)論:并不是參考幀越多,對(duì)圖像質(zhì)量的改進(jìn)的幫助就越大;相反地,這中操作反而使運(yùn)動(dòng)補(bǔ)償過(guò)程的復(fù)雜度隨著參考幀數(shù)線性增加,運(yùn)算量增加,增大了編碼的復(fù)雜度。因此本實(shí)施例設(shè)計(jì)了一個(gè)快速多參考幀搜索算法,其目的是在圖像質(zhì)量和參考幀之間找到一個(gè)平衡點(diǎn),保證在圖像質(zhì)量不變的前提下選用合適的參考幀進(jìn)行運(yùn)動(dòng)補(bǔ)償,而不需要搜索所有的參考幀,從而提高編解碼速度。
因此,為了進(jìn)一步加速空間分辨率轉(zhuǎn)碼器,本實(shí)施例提出了快速多參考幀搜索算法以縮小多參考幀的范圍,從而提高轉(zhuǎn)碼速度。如圖2所示,首先,類似于上述的CU算法,首先得到當(dāng)前編碼塊CUo的映射塊Sd,然后以8×8編碼塊為單位(注:不足8×8的將其看作8×8編碼塊)統(tǒng)計(jì)當(dāng)前映射塊中多參考幀索引分布情況。然后根據(jù)當(dāng)前多參考幀的分布情況設(shè)計(jì)了如下算法:
設(shè)映射塊中存在的不同的參考幀的數(shù)量為Nref,而在lowdelay_P_main的配置文件下,GOPsize的值為4,則Nref的取值范圍為[1,4]。此外,設(shè)映射塊中存在的最大的參幀索引號(hào)為refmax,最小的多參考幀索引號(hào)refmin,則多參考幀ref的取值范圍可根據(jù)Nref的取值分為兩種情況,如下所示:
當(dāng)Nref=1時(shí),將多參考幀ref的取值范圍初始化為[0,refmax],而1<Nref≤4時(shí),將多參考幀ref的取值范圍初始化為[refmin,refmax]。同樣地,為了驗(yàn)證該想法的準(zhǔn)確性,本實(shí)施例以8×8為單位分別統(tǒng)計(jì)了序列前100幀中最終選擇的多參考幀索引。值得注意的是,由于編碼單元CU在遍歷每個(gè)深度時(shí)所對(duì)應(yīng)的映射塊不同,因此不同深度下所對(duì)應(yīng)的refmin和refmax也不相同。當(dāng)深度為0時(shí),多參考幀索引號(hào)的命中率高達(dá)97%,但當(dāng)深度越大,其命中率越來(lái)越低,因此為了提高多參考幀的命中率,當(dāng)1<Nref≤4時(shí),將多參考幀ref的范圍精確為[refmin-1,refmax+1]。
其中,當(dāng)refmin-1<0時(shí),則將refmin-1的值設(shè)為0;或者當(dāng)refmax+1>4時(shí),則將refmax+1的值設(shè)為4。
為了驗(yàn)證所提出的快速碼率轉(zhuǎn)碼算法的正確性以及有效性,本實(shí)施例基于HM15.0搭建了像素域空間分辨率轉(zhuǎn)碼器,并在該轉(zhuǎn)碼器上基于visual studio 2013實(shí)現(xiàn)了快速空間分辨率轉(zhuǎn)碼算法。最后,在采集實(shí)驗(yàn)結(jié)果數(shù)據(jù)環(huán)節(jié),考慮到筆記本電腦的不穩(wěn)定因素表較多,因此為了保證實(shí)驗(yàn)結(jié)果的真實(shí)可靠性,本實(shí)施例的所有實(shí)驗(yàn)包括第五章中快速空間分辨率轉(zhuǎn)碼算法的實(shí)驗(yàn)均是在高性能計(jì)算平臺(tái)上執(zhí)行的。該平臺(tái)采用了混合式的集群(Cluster)架構(gòu),其計(jì)算網(wǎng)絡(luò)采用Infinband高速交換機(jī),能有效地保證實(shí)驗(yàn)結(jié)果的穩(wěn)定性和可靠性。因此,本實(shí)施例的所有實(shí)驗(yàn)數(shù)據(jù)均是在不存在任何干擾的穩(wěn)定的環(huán)境中進(jìn)行仿真測(cè)試得到的,具有真實(shí)可靠性。此外,本實(shí)施例所有實(shí)驗(yàn)的具體編碼參數(shù)(如:量化參數(shù)QP,GOPsize等等)的配置條件如表4-2所示。
表4-2主要的編碼器參數(shù)配置
本實(shí)施例根據(jù)視頻流的原始分辨率以及目標(biāo)分辨率將測(cè)試結(jié)果分為了四組:1920×1080轉(zhuǎn)1280×720(即1080P→720P)、1920×1080轉(zhuǎn)832×480(即1080P→480P)、1280×720轉(zhuǎn)832×480(即720P→480P)以及832×480轉(zhuǎn)480×320(即480P→320P),具體測(cè)試序列及實(shí)驗(yàn)結(jié)果如表5-3所示。通過(guò)表5-3可知,每一組不同格式空間分辨率的轉(zhuǎn)碼都測(cè)試了5組序列,其中,1080P→720P的視頻序列在加速快速算法后BDBR(Bjontegaard delta bit rate,表示了在同樣的客觀質(zhì)量下,兩種方法的碼率節(jié)省情況)平均上升了1.04%,編碼時(shí)間(ΔT)平均降低了46.58%;1080P→480P的視頻序列的BDBR平均上升了0.84%,編碼時(shí)間平均降低了39.37%;而720P→480P的視頻序列的BDBR平均上升了0.91%,編碼時(shí)間平均降低了56.87%;480P→320P的視頻序列則在時(shí)間平均減少35.2%的情況下,BDBR平均增加了0.82%。最后可以看出對(duì)于所有序列所有轉(zhuǎn)碼格式的20組序列,BDBR平均上升為0.91%,編碼時(shí)間降低了44.56%。從以上數(shù)據(jù)可以看出,本實(shí)施例所提出的算法針對(duì)三種不同分辨率的轉(zhuǎn)碼都取得了較好的效果,達(dá)到了本發(fā)明的目的。
表5-3測(cè)試序列及實(shí)驗(yàn)結(jié)果
因此,可以得出結(jié)論:從客觀質(zhì)量對(duì)本實(shí)施例的快速算法進(jìn)行評(píng)價(jià),都可以說(shuō)明本實(shí)施例的快速算法取得了良好的效果——在時(shí)間減少44.56%的前提下,視頻圖像的質(zhì)量影響幾乎可以忽略。