本發(fā)明屬于高效視頻編碼(hevc)技術(shù)領(lǐng)域,尤其涉及一種基于隨機(jī)訓(xùn)練集自適應(yīng)學(xué)習(xí)的低復(fù)雜度視頻編碼方法。
背景技術(shù):
近年來,隨著高清、超高清視頻(分辨率達(dá)4k×2k、8k×4k)應(yīng)用走進(jìn)人們的視野,視頻壓縮技術(shù)受到了巨大的挑戰(zhàn)。此外,各式各樣的視頻應(yīng)用也隨著網(wǎng)絡(luò)和存儲技術(shù)的發(fā)展不斷涌現(xiàn)。視頻應(yīng)用的多樣化和高清趨勢對視頻壓縮性能提出了更高的要求。為此,2010年4月itu-t的視頻編碼專家組(vceg)和iso/iec的運(yùn)動圖像專家組(mpeg)成立了視頻編碼聯(lián)合組(jct-vc),聯(lián)手制定新一代視頻編碼標(biāo)準(zhǔn),在2013年完成了高效視頻編碼hevc(highefficiencyvideocoding)標(biāo)準(zhǔn),其也稱為h.265。相比之前的視頻編碼標(biāo)準(zhǔn)h.264/avc,hevc標(biāo)準(zhǔn)的編碼效率相比之前的視頻編碼標(biāo)準(zhǔn)有了顯著提高,但同時(shí)編碼的復(fù)雜度也大幅度提高,尤其是靈活的塊劃分導(dǎo)致的模式選擇復(fù)雜度成倍增加。hevc為圖像劃分定義了更靈活的塊劃分模式,包括編碼單元(cu)、預(yù)測單元(pu)、變換單元(tu)。hevc中的cu尺寸有64×64,32×32、16×16、8×8,記為2n×2n,其中n=32,16,8,4。其中64×64的cu被定義為最大編碼單元(lcu),采用四叉樹劃分結(jié)構(gòu),每個(gè)lcu能夠遞歸的劃分成4個(gè)大小相等的cu,直到最小的cu(8×8)。為了找到最優(yōu)化的cu劃分方案,編碼器必須要考慮所有的劃分情況。圖1展示了一個(gè)lcu如何被劃分成不同尺寸的cu模式。每個(gè)cu都有關(guān)聯(lián)的pu,其中pu是幀內(nèi)預(yù)測和幀間預(yù)測的基本單元,一切與預(yù)測相關(guān)的信息都定義在pu中。圖2給出了幀內(nèi)預(yù)測的pu劃分模式。對于一個(gè)2n×2n的cu,其對應(yīng)的幀內(nèi)預(yù)測單元pu劃分模式有兩種:2n×2n和n×n,其中的n×n模式只有當(dāng)cu為最小的8×8尺寸才會使用,其它尺寸的cu只使用2n×2n的pu模式。標(biāo)準(zhǔn)的hevc視頻編碼遍歷各種cu和pu劃分模式,采用率失真優(yōu)化(rdo)技術(shù)從眾多模式中選取率失真代價(jià)最小的模式作為最佳模式。因?yàn)閔evc編碼器需要遍歷所有可能的cu和pu,這個(gè)遍歷過程的復(fù)雜度較高,計(jì)算量太大,給實(shí)時(shí)視頻編碼帶來了困難。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對現(xiàn)有hevc視頻編碼復(fù)雜高的缺點(diǎn),提出了一種基于隨機(jī)訓(xùn)練集自適應(yīng)學(xué)習(xí)的低復(fù)雜度視頻編碼方法,通過簡化cu和pu劃分模式的判定方法及其率失真代價(jià)的計(jì)算量,在保證編碼質(zhì)量的同時(shí)降低編碼的復(fù)雜度,尤其適用于快速實(shí)時(shí)視頻編碼的場合?,F(xiàn)有的快速編碼方法較多地依賴于對每一種視頻的特征作參數(shù)的提取和定義,不同的視頻往往需要通過多次嘗試和比較來確定參數(shù)的值。相比之下,本發(fā)明方法能夠根據(jù)不同的視頻自適應(yīng)地學(xué)習(xí)視頻編碼參數(shù),并將這些特征應(yīng)用到后續(xù)的快速編碼幀中,大大提高了視頻編碼方法的普適性。
本發(fā)明包括學(xué)習(xí)編碼方法和快速編碼方法,其特征在于幀內(nèi)編碼時(shí)將視頻序列按幀率進(jìn)行分組,每組視頻的前二幀為學(xué)習(xí)編碼幀,用于參數(shù)學(xué)習(xí),后續(xù)幀為快速編碼幀,根據(jù)學(xué)習(xí)編碼幀得到的參數(shù),優(yōu)化幀內(nèi)編碼中的cu(編碼單元)判定方法和pu(預(yù)測單元)判定方法。cu的最小尺寸為8×8,對于非最小尺寸的cu,判斷提前結(jié)束cu劃分或者跳過當(dāng)前cu的率失真計(jì)算作直接劃分。而在作幀內(nèi)預(yù)測時(shí),對于最小尺寸的cu,其對應(yīng)的pu劃分模式有2n×2n和n×n;而其它尺寸的cu只有2n×2n一種模式,所以對最小尺寸的cu,對其作pu劃分模式的優(yōu)化。
學(xué)習(xí)編碼幀的編碼方法是:
步驟(1)、學(xué)習(xí)編碼幀第一幀用于計(jì)算閾值τn,對于每個(gè)2n×2n大小的cu,隨機(jī)選取nn個(gè)像素對作為訓(xùn)練集合,計(jì)算不同尺寸cu的每個(gè)像素對的灰度差均值τn;
步驟(2)、學(xué)習(xí)編碼幀第二幀用于計(jì)算閾值tr1n、tr2n和rd1_trn、rd2_trn,對于每個(gè)2n×2n大小的cu,隨機(jī)選取nn個(gè)像素對組成訓(xùn)練集,分別記錄不劃分和劃分cu塊中像素對灰度差大于閾值τn的個(gè)數(shù)qk,n,取所有qk,n的平均值作為各尺寸cu不劃分的閾值tr1n和劃分閾值tr2n;同時(shí),分別記錄各尺寸cu不劃分和劃分情況下的率失真代價(jià)的均值,得到各尺寸cu率失真代價(jià)的閾值rd1_trn和rd2_trn。
對于最小尺寸cu對應(yīng)的pu劃分模式,其所有的閾值計(jì)算方法與上述cu劃分的閾值計(jì)算方法相同。
快速編碼幀的編碼方法:
步驟(i)、從cu中隨機(jī)選取nn個(gè)像素對,求每個(gè)像素對的灰度差值,將其與步驟(1)得到的閾值τn做比較,計(jì)算大于τn的像素對的個(gè)數(shù)qk,n;將qk,n與步驟(2)得到的閾值tr1n和tr2n進(jìn)行比較,把cu分為三類:i類、ii類和iii類;
步驟(ii)、根據(jù)cu分類結(jié)果,對非最小尺寸的cu,對cu劃分模式作優(yōu)化;對最小尺寸的cu,將其對應(yīng)的pu劃分模式作優(yōu)化。其中:
如果cu為i類,若率失真代價(jià)小于閾值rd1_trn,對于非最小尺寸的cu,提前結(jié)束cu劃分;否則,當(dāng)前cu劃分為4個(gè)子cu并計(jì)算每個(gè)子cu的率失真代價(jià),再判定當(dāng)前cu是否劃分。若率失真代價(jià)小于閾值rd1_trn,提前判定最小尺寸的cu對應(yīng)的pu劃分模式為2n×2n,跳過后續(xù)的n×n大小的pu劃分模式計(jì)算;否則,計(jì)算pu模式為n×n的率失真代價(jià),再判定pu模式。
如果cu為ii類,對于非最小尺寸cu,先計(jì)算把它劃分為四個(gè)子cu后每個(gè)子cu的率失真代價(jià),當(dāng)這四個(gè)子cu的率失真代價(jià)之和小于閾值rd2_trn時(shí),則跳過當(dāng)前cu的率失真代價(jià)計(jì)算直接判定當(dāng)前cu劃分為四個(gè)子cu;否則,計(jì)算當(dāng)前cu的率失真代價(jià),再判定當(dāng)前cu是否劃分。對于最小尺寸cu,當(dāng)其對應(yīng)的pu劃分為四個(gè)子pu的率失真代價(jià)之和小于閾值rd2_trn時(shí),則跳過2n×2n的pu率失真計(jì)算,直接判定pu劃分模式為n×n;否則,計(jì)算pu劃分模式為2n×2n的率失真代價(jià),再判定pu模式。
如果cu為iii類,則執(zhí)行標(biāo)準(zhǔn)的hevc視頻編碼。
本發(fā)明有益效果如下:
本發(fā)明的基本原理是對每組視頻幀的前二幀進(jìn)行正常編碼,提取hevc視頻編碼參數(shù)。然后從第三幀視頻編碼開始,利用前二幀獲得的cu劃分和pu劃分的閾值信息,對cu采取提前結(jié)束劃分或者跳過當(dāng)前cu的率失真代價(jià)計(jì)算作直接劃分的策略,以及對最小尺寸cu對應(yīng)的pu模式作提前判定或者跳過當(dāng)前pu的率失真代價(jià)計(jì)算作直接模式判定的策略,使得視頻編碼的運(yùn)算復(fù)雜度降低,大大節(jié)省了視頻編碼的時(shí)間。經(jīng)過實(shí)驗(yàn)測定,在保持視頻編碼質(zhì)量的前提下,使用本發(fā)明的低復(fù)雜度方法比標(biāo)準(zhǔn)hevc編碼方法能夠在視頻編碼時(shí)間上節(jié)省40%以上,大大提高了視頻編碼的效率。此外,本發(fā)明提出的方法是一種自適應(yīng)的編碼方法,能夠針對不同的視頻,通過學(xué)習(xí)編碼幀提取其編碼特征并應(yīng)用到后續(xù)的快速編碼幀中,這使得本發(fā)明提出的編碼方法具有良好的靈活性和適用性。
附圖說明
圖1為hevc的cu劃分模式示意圖;
圖2為hevc幀內(nèi)預(yù)測的pu劃分模式示意圖;
圖3為2n×2n的cu劃分成四等塊的示意圖;
圖4為本發(fā)明編碼流程圖;
圖5為學(xué)習(xí)編碼幀的編碼流程圖;
圖6為快速編碼幀的編碼流程圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明。
如圖1-6所示,基于隨機(jī)訓(xùn)練集自適應(yīng)學(xué)習(xí)的低復(fù)雜度視頻編碼方法,采用hevc視頻編碼的hm模型,測試條件使用jct-vc制定的hevc視頻編碼通用測試條件(jctvc-h1100),使用hm模型自帶的高效視頻編碼的全幀內(nèi)編碼配置文件encoder_intra_main.cfg。
圖4所示為本發(fā)明總的編碼流程圖,對每個(gè)視頻序列編碼前,先將視頻序列按幀率進(jìn)行分組,每組視頻的前二幀為學(xué)習(xí)編碼幀,運(yùn)行標(biāo)準(zhǔn)的hevc編碼方法,遍歷所有2n×2n(n=32,16,8)的cu劃分模式和2n×2n(n=4)的最小尺寸cu對應(yīng)的pu劃分模式,獲取視頻編碼參數(shù)并將其運(yùn)用到后續(xù)的快速編碼幀以實(shí)現(xiàn)低復(fù)雜度編碼。如圖5所示,學(xué)習(xí)編碼幀的編碼步驟是:
步驟(1)、學(xué)習(xí)編碼幀第一幀用于訓(xùn)練閾值τn,對于每個(gè)2n×2n大小的cu,隨機(jī)選取nn個(gè)像素對,計(jì)算不同cu大小下的像素對灰度差均值τn,其中像素對的選擇方法為:
從cu中隨機(jī)選取nn對像素對,其中,每對像素對分別位于不同的四個(gè)劃分塊區(qū)域內(nèi),且像素點(diǎn)在子塊區(qū)域內(nèi)的位置服從二維泊松分布。對一個(gè)尺寸為的2n×2n的cu,如圖3所示,cu區(qū)域可以預(yù)劃分為四個(gè)大小相等的子塊區(qū)域a、b、c、d,每個(gè)像素對分別位于不同的子塊區(qū)域,因此一共有6種組合,(a,b)、(a,c)、(a,d)、(b,c)、(b,d)、(c,d),各區(qū)域組合內(nèi)選取的像素對數(shù)是相同的。每個(gè)像素點(diǎn)在相應(yīng)的子塊區(qū)域內(nèi)服從關(guān)于中心點(diǎn)擴(kuò)散的二維泊松分布,以a區(qū)域?yàn)槔?,a區(qū)域中心坐標(biāo)為
nn取值會根據(jù)cu大小進(jìn)行調(diào)整,對于一個(gè)尺寸2n×2n的cu,nn的取值為:
nn=3×n×m(3)
上式m為正整數(shù),通過m值來合理調(diào)整像素對數(shù)目。經(jīng)過實(shí)驗(yàn)確定,m取值為3;
步驟(2)、學(xué)習(xí)編碼幀第二幀用于計(jì)算閾值tr1n、tr2n和閾值rd1_trn、rd2_trn。對于每個(gè)2n×2n大小的cu,隨機(jī)選取nn個(gè)像素對,對它們進(jìn)行訓(xùn)練,學(xué)習(xí)得到閾值tr1n、tr2n和閾值rd1_trn、rd2_trn。其中閾值tr1n、tr2n的訓(xùn)練步驟為:
(2a).根據(jù)從cu內(nèi)隨機(jī)選取的nn對像素對和學(xué)習(xí)編碼幀第一幀得到的閾值τn,比較各像素對的灰度值差異,兩者灰度差大于τn時(shí),δk,n取值為1,否則取值為0,計(jì)算式為:
上式g(i,j)和g(u,v)分別表示一個(gè)cu像素對位于坐標(biāo)位置(i,j)、(u,v)的像素點(diǎn)灰度值,τn為自適應(yīng)的灰度差閾值,通過第一幀學(xué)習(xí)得到。
(2b).計(jì)算隨機(jī)訓(xùn)練集nn中δk,n取值為1的像素對數(shù)目:
(2c).按照標(biāo)準(zhǔn)的hevc視頻編碼方法完成視頻幀的壓縮編碼,根據(jù)各尺寸cu劃分情況,計(jì)算學(xué)習(xí)編碼幀第二幀各cu尺寸下不劃分和劃分時(shí)qk,n的均值,分別作為閾值tr1n、tr2n。
閾值rd1_trn、rd2_trn的計(jì)算方法為:
對學(xué)習(xí)編碼幀第二幀進(jìn)行編碼的時(shí)候,根據(jù)各尺寸cu不劃分和劃分的情況,記錄不劃分和劃分情況下各尺寸cu的率失真代價(jià)并求其均值,分別記為mean_rd_nonsplitn和mean_rd_splitn。另外,分別統(tǒng)計(jì)出各尺寸不劃分與劃分cu的率失真代價(jià),其最大值分別記為max_rd_nonsplitn和max_rd_splitn,其最小值分別記為min_rd_nonsplitn和min_rd_splitn。則尺寸為2n×2n的cu率失真代價(jià)閾值rd1_trn、rd2_trn為:
其中,α和β為調(diào)整參數(shù),取值范圍為α∈[0,1],β∈[0,1],這里,通過實(shí)驗(yàn)測定,α取值為0.2,β取值為0.05。
對于最小尺寸cu對應(yīng)的pu劃分模式,其所有的閾值計(jì)算方法與上述cu劃分的閾值計(jì)算方法相同。
學(xué)習(xí)編碼幀的后續(xù)幀為快速編碼幀。如圖6所示,從每組視頻的第三幀開始是快速編碼幀,其編碼步驟是:
步驟(i)、從cu中隨機(jī)選取nn個(gè)像素對,通過像素對學(xué)習(xí)得到當(dāng)前cu的特征參數(shù)qk,n,計(jì)算方法與學(xué)習(xí)編碼幀的編碼步驟(2)中的(2a)和(2b)相同。將qk,n與閾值tr1n和tr2n進(jìn)行比較,把cu分為三類:i類、ii類和iii類,具體分類規(guī)則是:
步驟(ii)、根據(jù)cu分類結(jié)果,對非最小尺寸的cu,對cu劃分模式作優(yōu)化;對最小尺寸的cu,將其對應(yīng)的pu劃分模式作優(yōu)化;其中:
如果cu為i類,若率失真代價(jià)小于閾值rd1_trn,對于非最小尺寸的cu,提前結(jié)束cu劃分;否則,當(dāng)前cu劃分為4個(gè)子cu并計(jì)算每個(gè)子cu的率失真代價(jià),再判定當(dāng)前cu是否劃分。若率失真代價(jià)小于閾值rd1_trn,提前判定最小尺寸的cu對應(yīng)的pu劃分模式為2n×2n,跳過后續(xù)的n×n大小的pu劃分模式計(jì)算;否則,計(jì)算pu模式為n×n的率失真代價(jià),再判定pu模式。
如果cu為ii類,對于非最小尺寸cu,先計(jì)算把它劃分為四個(gè)子cu后每個(gè)子cu的率失真代價(jià),當(dāng)這四個(gè)子cu的率失真代價(jià)之和小于閾值rd2_trn時(shí),則跳過當(dāng)前cu的率失真代價(jià)計(jì)算直接判定當(dāng)前cu劃分為四個(gè)子cu;否則,計(jì)算當(dāng)前cu的率失真代價(jià),再判定當(dāng)前cu是否劃分。對于最小尺寸cu,當(dāng)其對應(yīng)的pu劃分為四個(gè)子pu的率失真代價(jià)之和小于閾值rd2_trn時(shí),則跳過2n×2n的pu率失真計(jì)算,直接判定pu劃分模式為n×n;否則,計(jì)算pu劃分模式為2n×2n的率失真代價(jià),再判定pu模式。
如果cu為iii類,則執(zhí)行標(biāo)準(zhǔn)的hevc視頻編碼。