本發(fā)明屬于視頻編碼技術(shù)領(lǐng)域,具體涉及一種基于亮度變化的幀內(nèi)預(yù)測(cè)方法。
背景技術(shù):
幀內(nèi)預(yù)測(cè)作為一種有效的預(yù)測(cè)方式,它是考慮到圖像的空域信息冗余,利用空域編碼塊之間的相關(guān)性,從周圍已編碼塊提取參考信息來預(yù)測(cè)待編碼塊。目前最新的視頻編碼標(biāo)準(zhǔn)中的幀內(nèi)編碼技術(shù),都是利用當(dāng)前塊左邊一列和上邊一行的重建像素作為參考像素進(jìn)行不同角度的幀內(nèi)預(yù)測(cè)。實(shí)際上,當(dāng)前待編碼塊的左邊和上邊的像素已經(jīng)完成重建,可以用來作為預(yù)測(cè)當(dāng)前待編碼塊的參考像素。在進(jìn)行幀內(nèi)預(yù)測(cè)時(shí),可以從不同方向?qū)Ξ?dāng)前待編碼塊進(jìn)行預(yù)測(cè),h.264幀內(nèi)角度模式只有9種,h.265的幀內(nèi)角度模式增加到35種,相比于h.265,h.266的幀內(nèi)角度模式從35種增加到了67種。更加密集的角度可以帶來更好的預(yù)測(cè)效果,圖1給出了h.266的67種幀內(nèi)角度模式進(jìn)行幀內(nèi)預(yù)測(cè)時(shí)的方向示意圖,當(dāng)模式號(hào)為0時(shí),表示planar模式;當(dāng)模式號(hào)為1時(shí),表示dc模式;黑色實(shí)箭頭表示原來hevc的角度預(yù)測(cè)方向(2,4,6,8,…,64,66),黑色虛箭頭是新增的角度預(yù)測(cè)方向(3,5,7,9,..,63,65),更加密集的角度模式可以更加精確的預(yù)測(cè)當(dāng)前待編碼塊,從而使得預(yù)測(cè)塊更加接近原始編碼塊,編碼當(dāng)前塊所需要傳輸?shù)谋忍馗伲瑥亩幋a性能更優(yōu)。
然而,這些技術(shù)都只是考慮將當(dāng)前塊左邊和上邊的局部重建像素作為參考信息,實(shí)際上,在已編碼的重建幀里面,有許多重建塊可能更接近于當(dāng)前塊,或者在重建塊里存在許多亮度與當(dāng)前待編碼塊的亮度變化一致的塊,這些重建塊相比于局部的左邊或上邊的重建塊更加接近當(dāng)前原始?jí)K,因此在一定范圍內(nèi)的重建塊都可以作為當(dāng)前塊的參考信息,使得編碼當(dāng)前塊所需的比特更少,從而編碼性能更優(yōu)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的,就是針對(duì)上述問題,提供了一種基于亮度變化的幀內(nèi)預(yù)測(cè)方法。
本發(fā)明的技術(shù)方案是:
一種基于亮度變化的幀內(nèi)預(yù)測(cè)方法,該方法基于當(dāng)前幀已重建的所有像素作為參考信息,用于獲取當(dāng)前編碼塊,其特征在于,包括以下步驟:
s1、選擇適用于亮度變化的最優(yōu)參考模板,具體為:
s11、建立模板衡量標(biāo)準(zhǔn)如下公式1:
公式1中,tpred表示當(dāng)前待編碼塊的模板,trec表示已重建塊的參考模板,tavg表示tpred和trec均值的差值,如下公式2,l表示模板的長(zhǎng)度,mrsad(tpred,trec)表示tpred與trec的匹配度;本方案中采用mrsad(mean-removedsumofabsolutedifferences)作為衡量標(biāo)準(zhǔn),來表征當(dāng)前編碼塊的一致性匹配度。
其中,tpred的初始值為當(dāng)前編碼圖像塊的上面一行左邊一列;
s12、根據(jù)步驟s11中的衡量標(biāo)準(zhǔn),通過搜索當(dāng)前幀已重建部分,獲得最優(yōu)參考模板trec_best,最優(yōu)參考模板trec_best就是已重建的所有參考模板trec中與當(dāng)前模板tpred之間mrsad最小的trec,如下公式3:
公式3中,d表示參考模板trec在當(dāng)前幀已重建塊中的搜索范圍。
s2、建立一致性亮度補(bǔ)償模型,具體為:
為了解決參考模板trec與對(duì)應(yīng)重建塊rec匹配不一致的問題,假設(shè)當(dāng)前模板tpred與參考模板trec近似滿足線性關(guān)系如下公式4:
t'pred=a·trec+b(公式4)
公式4中,t'pred是當(dāng)前模板tpred的近似表示,a和b為補(bǔ)償因子;采用最小二乘法,轉(zhuǎn)化為最優(yōu)化問題如下公式5:
argmin||tpred-t'pred||(公式5)
等價(jià)于如下公式6:
argmin||tpred-a·trec-b||(公式6)
即求補(bǔ)償因子a和b,使得公式6最小,則可求解最優(yōu)化問題得到補(bǔ)償因子a和b為如下公式7和公式8所示:
s3、進(jìn)行幀內(nèi)亮度補(bǔ)償預(yù)測(cè):
根據(jù)步驟s1中獲得的最優(yōu)參考模板trec_best,結(jié)合步驟s2中建立的公式7和公式8可以得到最優(yōu)的當(dāng)前模板的補(bǔ)償因子a和b;由補(bǔ)償因子a和b,得到當(dāng)前待編碼塊的預(yù)測(cè)值如下公式9:
pred[x,y]=a·rec[x,y]+b(公式9)
公式9中,x和y表示編碼塊中坐標(biāo)為(x,y)的像素的位置,pred表示當(dāng)前待編碼塊的預(yù)測(cè)值,rec代表trec對(duì)應(yīng)的重建塊預(yù)測(cè)值。
本發(fā)明的有益效果為,相對(duì)于傳統(tǒng)方案,本發(fā)明通過引入線性回歸模型,提出了一致性亮度補(bǔ)償預(yù)測(cè)的方法,最終解決了模板匹配中模板與對(duì)應(yīng)重建塊匹配不一致的問題,提升了編碼性能。
附圖說明
圖1為目前最新視頻編碼標(biāo)準(zhǔn)h.266中67種編碼模式示意圖;
圖2為基于亮度變化的幀內(nèi)預(yù)測(cè)方法的示意圖;
圖3為實(shí)施例1編碼端模式?jīng)Q策流程圖;
圖4為實(shí)施例1解碼端模式?jīng)Q策流程圖;
圖5為實(shí)施例2編碼端模式?jīng)Q策流程圖;
圖6為實(shí)施例2解碼端模式?jīng)Q策流程圖;
圖7為實(shí)施例3編碼端模式?jīng)Q策流程圖;
圖8為實(shí)施例3解碼端模式?jīng)Q策流程圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例,詳細(xì)描述本發(fā)明的技術(shù)方案:
實(shí)施例1
如圖1所示給出了目前最新視頻編碼標(biāo)準(zhǔn)中幀內(nèi)預(yù)測(cè)模式有67種,不同的箭頭指向表示不同的預(yù)測(cè)方向,當(dāng)前塊左邊一列和上邊一行的局部重建像素作為參考信息。圖2給出了本發(fā)明的幀內(nèi)預(yù)測(cè)方法的示意圖。結(jié)合圖2分別從以下幾個(gè)步驟來實(shí)施:
步驟1,選擇適用于亮度變化的最優(yōu)參考模板
(1.1)首先,利用當(dāng)前編碼圖像塊的上面一行左邊一列作為當(dāng)前模板,并且在一定范圍的重建區(qū)域內(nèi)搜索參考模板。
其中,tpred表示當(dāng)前待編碼塊的模板,trec表示已重建塊的參考模板,tavg表示tpred和trec均值的差值,l表示模板的長(zhǎng)度,mrsad(tpred,trec)表示tpred與trec的匹配度。
(1.2)通過搜索當(dāng)前幀已重建部分,最優(yōu)參考模板trec_best就是已重建的所有參考模板trec中與當(dāng)前模板tpred之間mrsad最小的trec。
其中,d表示參考模板trec在當(dāng)前幀已重建塊中的搜索范圍。
步驟2,建立一致性亮度補(bǔ)償模型
我們假設(shè)當(dāng)前模板tpred與參考模板trec近似滿足線性關(guān)系:
t'pred=a·trec+b
其中,t'pred是當(dāng)前模板tpred的近似表示,a和b為補(bǔ)償因子。則為了得到最優(yōu)的擬合效果,我們使用最小二乘法,問題轉(zhuǎn)化為最優(yōu)化問題:
argmin||tpred-t'pred||
于是問題等價(jià)于:
argmin||tpred-a·trec-b||
求解最優(yōu)化問題得到補(bǔ)償因子a和b為:
步驟3,對(duì)最優(yōu)參考模板進(jìn)行幀內(nèi)亮度補(bǔ)償預(yù)測(cè)
由步驟1得到最優(yōu)參考模板trec_best,結(jié)合步驟2可以得到最優(yōu)的當(dāng)前模板的補(bǔ)償因子a和b。由補(bǔ)償因子a和b,可以得到當(dāng)前待編碼塊的預(yù)測(cè)值。因此,待編碼塊的預(yù)測(cè)值為:
pred[x,y]=a·rec[x,y]+b
其中,x和y表示編碼塊中坐標(biāo)為(x,y)的像素的位置,pred表示當(dāng)前待編碼塊的預(yù)測(cè)值,rec代表trec對(duì)應(yīng)的重建塊預(yù)測(cè)值。
步驟4,幀內(nèi)模式編碼
如圖3所示,在編碼端,當(dāng)模式號(hào)為0-66時(shí),和實(shí)施例一一樣,執(zhí)行原有的67中幀內(nèi)角度預(yù)測(cè);當(dāng)模式號(hào)為67時(shí),對(duì)最優(yōu)參考模板,使用一致性亮度補(bǔ)償模型進(jìn)行幀內(nèi)亮度補(bǔ)償預(yù)測(cè)。通過rdo(rate-distortionoptimization)決策得到最優(yōu)模式號(hào),最優(yōu)編碼殘差信息、最優(yōu)模式號(hào)及其他語法元素。如圖4所示,在解碼端,對(duì)每個(gè)編碼單元cu(codingunit),都會(huì)解碼出一個(gè)最優(yōu)的模式號(hào),根據(jù)最優(yōu)的模式號(hào)(mode_best)執(zhí)行對(duì)應(yīng)的預(yù)測(cè)模式。當(dāng)mode_best為0-66時(shí),進(jìn)行常規(guī)的67種幀內(nèi)預(yù)測(cè)模式;當(dāng)mode_best為67時(shí),對(duì)最優(yōu)的參考模板進(jìn)行一致性亮度補(bǔ)償預(yù)測(cè)。解碼殘差信息,并經(jīng)過反量化、反變換后與預(yù)測(cè)塊相加得到最終的重建塊。
實(shí)施例2
步驟1,選擇適用于亮度變化的n個(gè)最優(yōu)的候選參考模板
在實(shí)施例1中,我們只保存了最優(yōu)的參考模板,為了得到更好的預(yù)測(cè)效果,
采用同樣的方法,我們選取了n組最優(yōu)的候選模板trec1,trec2,...,trecn,他們分別是與當(dāng)前模板相比,mrsad最小的n個(gè)參考模板。
步驟2,建立一致性亮度補(bǔ)償模型
步驟3,對(duì)n組最優(yōu)參考模板分別進(jìn)行幀內(nèi)亮度補(bǔ)償預(yù)測(cè)
對(duì)每一組候選模板treci通過一致性亮度補(bǔ)償模型都可以得到候選參考模板的預(yù)測(cè)塊predi,這樣就可以得到n組候選的預(yù)測(cè)值pred1,pred2,...,predn。最后對(duì)候選的n組預(yù)測(cè)塊進(jìn)行平均得到新的預(yù)測(cè)塊pred。
步驟4,幀內(nèi)模式編碼
本實(shí)施是在實(shí)施例1的基礎(chǔ)上的擴(kuò)展,保留實(shí)施例1的基礎(chǔ)上增加了一種幀內(nèi)模式。如圖5所示在編碼端,對(duì)當(dāng)前塊的幀內(nèi)模式進(jìn)行編碼時(shí),當(dāng)模式號(hào)為0-66時(shí),進(jìn)行常規(guī)的幀內(nèi)預(yù)測(cè);當(dāng)模式號(hào)為67時(shí),對(duì)最優(yōu)的參考模板進(jìn)行一致性亮度補(bǔ)償預(yù)測(cè);當(dāng)模式號(hào)為68時(shí),進(jìn)行候選平均的一致性亮度補(bǔ)償預(yù)測(cè)預(yù)測(cè)。通過rdo決策得到最優(yōu)模式號(hào),最優(yōu)編碼殘差信息、最優(yōu)模式號(hào)及其他語法元素。如圖6所示在解碼端,對(duì)每個(gè)編碼單元(cu),都會(huì)解碼出一個(gè)最優(yōu)的模式號(hào),根據(jù)mode_best執(zhí)行對(duì)應(yīng)的預(yù)測(cè)模式。當(dāng)mode_best為0-66時(shí),進(jìn)行常規(guī)的67種幀內(nèi)預(yù)測(cè)模式;當(dāng)mode_best為67時(shí),對(duì)最優(yōu)的參考模板進(jìn)行一致性亮度補(bǔ)償預(yù)測(cè);當(dāng)mode_best為68時(shí),進(jìn)行候選平均的一致性亮度補(bǔ)償預(yù)測(cè)。解碼殘差信息,并經(jīng)過反量化、反變換后與預(yù)測(cè)塊相加得到最終的重建塊。
實(shí)施例3
本實(shí)施也是在實(shí)施1基礎(chǔ)上進(jìn)行的擴(kuò)展,但是相比于實(shí)施例2,本實(shí)施不增加模式。我們假設(shè)通過最優(yōu)的參考模板進(jìn)行一致性亮度補(bǔ)償預(yù)測(cè)得到的預(yù)測(cè)塊為pred1,通過對(duì)候選的參考模板進(jìn)行平均的一致性亮度補(bǔ)償預(yù)測(cè)得到的預(yù)測(cè)塊為pred2。
cost1=∑∑|org(x,y)-pred1(x,y)|
cost2=∑∑|org(x,y)-pred2(x,y)|
org表示原始?jí)K,cost1表示org與pred1之間像素差值絕對(duì)值之和,cost2表示org與pred2之間像素差值絕對(duì)值之和。
當(dāng)cost1不大于cost2時(shí),pred1就是該模式的最終預(yù)測(cè)塊pred;當(dāng)cost1大于cost2時(shí),pred2就是該模式的最終預(yù)測(cè)塊pred。在解碼端原始?jí)Korg是得不到的,因此我們需要在編碼端傳一個(gè)標(biāo)志位flag來告訴解碼端,當(dāng)cost1不大于cost2時(shí),flag置0,表示此時(shí)預(yù)測(cè)塊pred是基于最優(yōu)的參考模板進(jìn)行的一致性亮度補(bǔ)償預(yù)測(cè)得到的;當(dāng)cost1不大于cost2時(shí),flag置1,表示此時(shí)預(yù)測(cè)塊pred是基于候選的參考模板進(jìn)行平均的一致性亮度補(bǔ)償預(yù)測(cè)得到的。
如圖7所示在編碼端,對(duì)當(dāng)前塊的幀內(nèi)模式進(jìn)行編碼時(shí),當(dāng)模式號(hào)為0-66時(shí),進(jìn)行常規(guī)的幀內(nèi)預(yù)測(cè);當(dāng)模式號(hào)為67時(shí),分別進(jìn)行最優(yōu)的一致性亮度補(bǔ)償預(yù)測(cè)和平均的一致性亮度補(bǔ)償預(yù)測(cè),分別相對(duì)于原始?jí)K有cost1和cost2,由它們的差值來決定最終模式67對(duì)應(yīng)的預(yù)測(cè)塊pred和編碼標(biāo)志位flag;通過rdo決策得到最優(yōu)模式號(hào),最優(yōu)編碼殘差信息、最優(yōu)模式號(hào)及其他語法元素,當(dāng)最優(yōu)模式號(hào)為67時(shí),還需要額外用1個(gè)bit來編碼flag。如圖8所示在解碼端,對(duì)每個(gè)編碼單元(cu),都會(huì)解碼出一個(gè)最優(yōu)的模式號(hào),根據(jù)mode_best執(zhí)行對(duì)應(yīng)的預(yù)測(cè)模式。當(dāng)mode_best為0-66時(shí),進(jìn)行常規(guī)的67種幀內(nèi)預(yù)測(cè)模式;當(dāng)mode_best為67時(shí),解碼模式標(biāo)志位flag,當(dāng)flag為0時(shí),進(jìn)行最優(yōu)的一致性亮度補(bǔ)償預(yù)測(cè),當(dāng)flag為1時(shí),進(jìn)行平均的一致性亮度補(bǔ)償預(yù)測(cè)。解碼殘差信息,并經(jīng)過反量化、反變換后與預(yù)測(cè)塊相加得到最終的重建塊。