本發(fā)明屬于視頻編解碼技術(shù)的幀內(nèi)預(yù)測編碼
技術(shù)領(lǐng)域:
,具體的說是一種應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測方法及其電路。
背景技術(shù):
:隨著科學(xué)技術(shù)的不斷發(fā)展,信息技術(shù)和計(jì)算機(jī)互聯(lián)網(wǎng)分別在不同程度改變了人們的日常的生活。如今,人們獲取信息的主要來源于多媒體信息,而多媒體信息卻以視頻為核心。在視頻儲存和傳輸不斷被廣泛應(yīng)用的過程中,多媒體技術(shù)漸漸開始將研究領(lǐng)域擴(kuò)充到高效視頻編碼的技術(shù)中。角度預(yù)測編碼技術(shù)是三大幀內(nèi)預(yù)測編碼技術(shù)之一,共分為33種,該33種角度預(yù)測可分為水平類模式和垂直類模式,每一種角度預(yù)測模式都對應(yīng)一種不同的偏移量,根據(jù)公式并利用在不同角度預(yù)測模式下的偏移量即可計(jì)算出預(yù)測塊的像素值,角度預(yù)測編碼技術(shù)在先進(jìn)視頻編解碼技術(shù)中應(yīng)用十分廣泛。現(xiàn)有技術(shù)中,幀內(nèi)預(yù)測中角度預(yù)測編碼的硬件電路已經(jīng)得到很大的提高,liuc,shenw,mat等人在2013ieeeinternationalconference發(fā)表的“ahighlypipelinedvlsiarchitectureforallmodesandblocksizesintrapredictioninhevcencoder”中所述電路,是目前角度預(yù)測電路和角度預(yù)測方法中比較簡單和快速的電路;但是仍存在一些問題,例如電路面積不夠優(yōu)化,多次使用乘法器,未達(dá)到資源最大利用,使得電路功耗過大。技術(shù)實(shí)現(xiàn)要素:本發(fā)明為解決上述現(xiàn)有技術(shù)中存在的不足之處,提出一種應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測電路及其預(yù)測方法,以期能減少電路工作面積、降低電路運(yùn)算周期、提高工作頻率,從而提升整個視頻編解碼電路的性能。為達(dá)到上述發(fā)明目的,本發(fā)明采用如下技術(shù)方案:本發(fā)明一種應(yīng)用于視頻編解碼幀內(nèi)預(yù)測的角度預(yù)測電路的特點(diǎn)是:在一個計(jì)算周期內(nèi)預(yù)測任一圖像內(nèi)的4n×4n區(qū)域的像素值,其中n為正整數(shù),記所述4n×4n區(qū)域?yàn)橐活A(yù)測塊令px,y表示所述預(yù)測塊pu中第x列第y行的預(yù)測像素值,1≤x≤4n;1≤y≤4n;則所述預(yù)測塊pu的上方一行4n+1個參考像素值和左方一列4n+1個參考像素值記為參考像素?cái)?shù)據(jù)a=[r1,0,r2,0,...,r4n+1,0,r0,0,r0,1,...,r0,4n];定義在所述計(jì)算周期內(nèi)的計(jì)算次數(shù)為y;定義所述角度預(yù)測電路的角度預(yù)測模式共有m種;則編號為m的角度預(yù)測模式所對應(yīng)的偏移量記為offset[m];所述m種角度預(yù)測模式分為n種類型,每種類型所對應(yīng)的偏移量的絕對值大小相等;定義所述參考像素?cái)?shù)據(jù)a所對應(yīng)的參考像素序列為ref[z],z表示在計(jì)算參考像素序列中的過程參量;定義所述當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置為pos;且pos=y(tǒng)×offset[m]>>5;>>表示右移操作;定義當(dāng)前預(yù)測像素值對應(yīng)參考像素值的加權(quán)因子為ω;初始化y=1;初始化x=1;所述角度預(yù)測電路包括:輸入模塊、地址模塊、存儲器模塊、預(yù)測計(jì)算復(fù)用模塊:所述輸入模塊接收角度預(yù)測模式編號m和參考像素?cái)?shù)據(jù)a,并將所述角度預(yù)測模式編號m傳遞給所述地址模塊,將所述參考像素?cái)?shù)據(jù)a傳遞給所述存儲器模塊;所述地址模塊將所接收的角度預(yù)測模式編號m所對應(yīng)的偏移量offset[m]的正負(fù)號傳遞給所述存儲器模塊;所述存儲器模塊包括:參考像素序列地址存儲器和參考像素?cái)?shù)據(jù)存儲器;所述參考像素?cái)?shù)據(jù)存儲器用于存儲所述參考像素?cái)?shù)據(jù)a;所述參考像素序列地址存儲器用于存儲所述參考像素序列ref[pos]、偏移量offset[m]的正負(fù)號和角度預(yù)測模式的類型n;第y次計(jì)算時,所述預(yù)測計(jì)算復(fù)用模塊根據(jù)所述參考像素序列ref[z],將過程參量z分別替換為計(jì)算得到的所述當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置pos和(pos+1),即得到ref[pos]和ref[pos+1],并從所述參考像素?cái)?shù)據(jù)存儲器中獲取所述參考像素?cái)?shù)據(jù)a中相應(yīng)的參考像素值,并從所述參考像素序列地址存儲器中獲取偏移量offset[m]的正負(fù)號和類型n后進(jìn)行計(jì)算,得到所述預(yù)測塊pu的第y行第x個預(yù)測像素值px,y;所述預(yù)測計(jì)算復(fù)用模塊將第y行第x個預(yù)測像素值px,y賦值給px+1,y后,將x+1賦值給x,并重復(fù)px,y賦值給px+1,y,直到x+1=4n為止,從而得到第y行的所有預(yù)測像素值;將y+1賦值給y后,所述預(yù)測計(jì)算復(fù)用模塊重復(fù)所述第y次計(jì)算,直到y(tǒng)=4n為止,從而得到所述預(yù)測塊pu。本發(fā)明所述的應(yīng)用于視頻編解碼幀內(nèi)預(yù)測的角度預(yù)測電路的特點(diǎn)也在于:所述預(yù)測計(jì)算復(fù)用模塊包括:選擇器、n個移位乘法器、第一計(jì)算器和第二計(jì)算器,任意一個計(jì)算器中均包含加法器和移位器;所述第一計(jì)算器中的加法器接收所述參考像素序列ref[pos]和ref[pos+1]在所述參考像素?cái)?shù)據(jù)a中相應(yīng)的參考像素值并進(jìn)行計(jì)算,得到第一加法值并提供給所述n個移位乘法器;所述第一計(jì)算器中的移位器接收所述參考像素序列ref[pos]并進(jìn)行移位操作,得到第一移位值并提供給所述第二計(jì)算器中的加法器;所述選擇器根據(jù)所述類型n選擇所述n個移位乘法器中的一個移位乘法器,相應(yīng)的移位乘法器根據(jù)加權(quán)因子ω對所述第一加法值進(jìn)行移位操作,得到第二移位值;所述第二計(jì)算器中的加法器對第一移位值和第二移位值進(jìn)行計(jì)算,得到第二加法值并提供給所述第二計(jì)算器中的移位器進(jìn)行移位操作,得到第三移位值即為px,y。本發(fā)明一種應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測方法的特點(diǎn)是,在一個計(jì)算周期內(nèi)預(yù)測任一圖像內(nèi)的4n×4n區(qū)域的像素值,其中n為正整數(shù),記所述4n×4n區(qū)域?yàn)橐活A(yù)測塊令px,y表示所述預(yù)測塊pu中第y行第x列的預(yù)測像素值,1≤x≤4n;1≤y≤4n;則所述預(yù)測塊pu的上方一行4n+1個參考像素值和左方一列4n+1個參考像素值記為a=[r1,0,r2,0,...,r4n+1,0,r0,0,r0,1,...,r0,4n];定義在所述計(jì)算周期內(nèi)的計(jì)算次數(shù)為y;定義所述角度預(yù)測電路的角度預(yù)測模式共有m種;則編號為m的角度預(yù)測模式所對應(yīng)的偏移量記為offset[m];定義參考像素序列計(jì)算的過程參量為z;所述m種角度預(yù)測模式分為n種類型,每種類型所對應(yīng)的偏移量的絕對值大小相等;所述角度預(yù)測方法是按如下步驟進(jìn)行:步驟1、根據(jù)編號為m的角度預(yù)測模式,查表得到相應(yīng)的偏移量offset[m];步驟2、利用式(1)得到當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置pos:pos=(y×offset[m])>>5(1)式(1)中,>>表示右移操作;步驟3、利用式(2)得到參考像素序列ref[z]:式(2)中,l(z)表示參考函數(shù)值,并有:式(3)中,round表示四舍五入操作;步驟4、將參考像素序列ref[z]中的過程參量z替換為當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置pos,得到第一參考像素序列ref[pos]和第二參考像素序列ref[pos+1];步驟5、利用式(4)得到加權(quán)因子ω:ω=(y×offset[m])&τ1(4)式(5)中,&表示“與”操作;τ1表示二進(jìn)制數(shù)的“31”;步驟6、初始化y=1;步驟7、利用式(5)得到第一加法值add1:add1=ref[pos]-ref[pos+1](5)步驟8、利用式(6)得到第一移位值shift1:shift1=τ2×ref[pos](6)式(6)中,τ2=32;步驟9、利用式(7)得到第二移位值shift2:shift2=ω×add1(7)步驟10、利用式(8)得到第二加法值add2:add2=shift1+shift2+τ3(8)式(8)中,τ3=16;步驟11、初始化x=1;步驟12、利用式(9)得到第三移位值即第y行第x個預(yù)測像素值px,y:px,y=add2>>5(9)步驟13、將px,y賦值給px+1,y;步驟14、將(x+1)的值賦給x,并判斷x+1=4n是否成立,若成立,則執(zhí)行步驟15;否則,返回步驟13;步驟15、將(y+1)的值賦給y,并判斷y=4n是否成立,若不成立,則執(zhí)行步驟6,否則,表示得到所述預(yù)測塊與現(xiàn)有技術(shù)相比,本發(fā)明的有益技術(shù)效果體現(xiàn)在:1、本發(fā)明提出的優(yōu)化現(xiàn)有角度預(yù)測算法電路設(shè)計(jì),克服了電路占用面積大的問題,提出的一種應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測算法的硬件實(shí)現(xiàn)方式,采用了模式翻轉(zhuǎn)的方式,通過查找表、移位器等技術(shù),減小了預(yù)測電路的面積,降低了預(yù)測電路的復(fù)雜度,并且降低了預(yù)測電路的功耗。2、本發(fā)明提出的應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測算法,通過判斷不同的角度預(yù)測模式編號,以確定輸入至其中的參考像素值是否進(jìn)行翻轉(zhuǎn),使用這種模式翻轉(zhuǎn)的方法設(shè)計(jì)電路,有利于減小電路的規(guī)模,從而降低了整體電路的面積和功耗。3、本發(fā)明提出的應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測算法,通過提前求出當(dāng)前預(yù)測像素值對應(yīng)參考像素值的加權(quán)因子ω和當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置pos,并將其存入存儲器中,在給定一種角度預(yù)測模式編號后,將提前計(jì)算好的值取出,并直接利用這些值開始預(yù)測像素值的計(jì)算,從而提高了電路的工作效率,減少了電路的計(jì)算周期,降低了電路的功耗。4、本發(fā)明提出的應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測算法,通過使用移位器對乘法器進(jìn)行替換,使得在原始計(jì)算公式中需要2n2個無符號乘法器才能完成的計(jì)算,優(yōu)化為使用2個移位器即可完成,大大縮減了電路的面積,降低了預(yù)測計(jì)算復(fù)用模塊的功耗。5、本發(fā)明提出的應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測算法,通過將m種角度預(yù)測模式劃分為n種類型,其中每一種類型所對應(yīng)的偏移量offset[m]的絕對值大小相等,使得每一種類型的pos和ω的值也相等,從而簡化了電路的計(jì)算方法,降低了電路的面積,提高了電路的工作效率。附圖說明圖1為角度預(yù)測4×4參考像素示意圖;圖2為角度預(yù)測電路概念圖;圖3為預(yù)測計(jì)算復(fù)用模塊框圖;圖4為本發(fā)明優(yōu)化結(jié)果實(shí)驗(yàn)數(shù)據(jù)對比圖。具體實(shí)施方式本實(shí)施例中,一種應(yīng)用于視頻編解碼幀內(nèi)預(yù)測的角度預(yù)測電路,在一個計(jì)算周期內(nèi)預(yù)測任一圖像內(nèi)的4n×4n區(qū)域的像素值,其中n為正整數(shù),本實(shí)施例中,n=1,記4×4區(qū)域?yàn)橐活A(yù)測塊令px,y表示預(yù)測塊pu中第x列第y行的預(yù)測像素值,1≤x≤4;1≤y≤4;如圖1所示,預(yù)測塊pu的上方一行5個參考像素值和左方一列5個參考像素值記為參考像素?cái)?shù)據(jù)a=[r1,0,r2,0,...,r5,0,r0,0,r0,1,…,r0,4];定義在計(jì)算周期內(nèi)的計(jì)算次數(shù)為y;定義角度預(yù)測電路的角度預(yù)測模式共有m種;則編號為m的角度預(yù)測模式所對應(yīng)的偏移量記為offset[m];m種角度預(yù)測模式分為n種類型,每種類型所對應(yīng)的偏移量的絕對值大小相等;定義參考像素?cái)?shù)據(jù)a所對應(yīng)的參考像素序列為ref[z],z表示在計(jì)算參考像素序列中的過程參量;定義當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置為pos;且pos=y(tǒng)×offset[m]>>5;>>表示右移操作;定義當(dāng)前預(yù)測像素值對應(yīng)參考像素值的加權(quán)因子為ω;初始化x=1,y=1;則y表示第一次計(jì)算;如圖2所示,角度預(yù)測電路包括:輸入模塊、地址模塊、存儲器模塊、預(yù)測計(jì)算復(fù)用模塊:輸入模塊接收角度預(yù)測模式編號m和參考像素?cái)?shù)據(jù)a,并將角度預(yù)測模式編號m傳遞給地址模塊,將參考像素?cái)?shù)據(jù)a傳遞給存儲器模塊;地址模塊將所接收的角度預(yù)測模式編號m所對應(yīng)的偏移量offset[m]的正負(fù)號傳遞給存儲器模塊;存儲器模塊包括:參考像素序列地址存儲器和參考像素?cái)?shù)據(jù)存儲器;參考像素?cái)?shù)據(jù)存儲器用于存儲參考像素?cái)?shù)據(jù)a;參考像素序列地址存儲器用于存儲參考像素序列ref[pos]、偏移量offset[m]的正負(fù)號和角度預(yù)測模式的類型n;第1次計(jì)算時,預(yù)測計(jì)算復(fù)用模塊根據(jù)參考像素序列ref[z],將其中的過程參量z分別替換為計(jì)算得到的當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置pos和(pos+1),即得到ref[pos]和ref[pos+1],并據(jù)此從參考像素?cái)?shù)據(jù)存儲器中獲取參考像素?cái)?shù)據(jù)a中相應(yīng)的參考像素值,并從參考像素序列地址存儲器中獲取偏移量offset[m]的正負(fù)號和類型n后進(jìn)行計(jì)算,得到預(yù)測塊pu的第1行第1個預(yù)測像素值p1,1;預(yù)測計(jì)算復(fù)用模塊將第1行第1個預(yù)測像素值p1,1賦值給p2,1后,再將p1,1同時賦值給p3,1和p4,1,從而得到第1行的所有預(yù)測像素值;得到第1行所有預(yù)測像素值之后,預(yù)測計(jì)算復(fù)用模塊進(jìn)行第2次計(jì)算,直到y(tǒng)=4n為止,由于在實(shí)例中取n=1,故預(yù)測計(jì)算復(fù)用模塊總共進(jìn)行4次計(jì)算,得到預(yù)測塊pu。具體實(shí)施中,如圖3所示,預(yù)測計(jì)算復(fù)用模塊包括:選擇器、n個移位乘法器、第一計(jì)算器和第二計(jì)算器,任意一個計(jì)算器中均包含加法器和移位器;第一計(jì)算器中的加法器接收參考像素序列ref[pos]和ref[pos+1]在參考像素?cái)?shù)據(jù)a中相應(yīng)的參考像素值并進(jìn)行計(jì)算,得到第一加法值并提供給n個移位乘法器;第一計(jì)算器中的移位器接收參考像素序列ref[pos]并進(jìn)行移位操作,得到第一移位值并提供給第二計(jì)算器中的加法器;選擇器根據(jù)類型n選擇n個移位乘法器中的一個移位乘法器,相應(yīng)的移位乘法器根據(jù)加權(quán)因子ω對第一加法值進(jìn)行移位操作,得到第二移位值;第二計(jì)算器中的加法器對第一移位值和第二移位值進(jìn)行計(jì)算,得到第二加法值并提供給第二計(jì)算器中的移位器進(jìn)行移位操作,得到第三移位值即為px,y。在本實(shí)例中,如表1所示,參考像素值由上方一行5個參考像素重建值和左方一列5個參考像素重建值組成:表1參考像素值參考像素點(diǎn)r1,0r2,0r3,0r4,0r5,0像素值87654參考像素點(diǎn)r0,0r0,1r0,2r0,3r0,4像素值910111213在本實(shí)施例中,一種應(yīng)用于視頻編解碼中幀內(nèi)預(yù)測的角度預(yù)測方法是按如下步驟進(jìn)行:步驟1、根據(jù)編號為m的角度預(yù)測模式,如表2所示,查表得到相應(yīng)的偏移量offset[m],在本實(shí)例中,采用編號m=20的角度預(yù)測模式,則offset[m]=-21;表2不同角度模式m對應(yīng)的偏移量offset[m]表2不同角度模式m對應(yīng)的偏移量offset[m](續(xù))步驟2、利用式(1)得到當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置pos:pos=(y×offset[m])>>5(1)式(1)中,>>表示右移操作;在實(shí)例中,當(dāng)y=1,2,3,4的時候,pos=0,1,1,2。步驟3、利用式(2)得到參考像素序列ref[z]:式(2)中,l(z)表示參考函數(shù)值,并有:式(3)中,round表示四舍五入操作;步驟4、將參考像素序列ref[z]中的過程參量z替換為當(dāng)前預(yù)測像素值對應(yīng)的參考像素值在參考像素序列中的位置pos,得到第一參考像素序列ref[pos]和第二參考像素序列ref[pos+1];在實(shí)例中,代入當(dāng)y=1,2,3,4時pos的值,可得到第一參考像素序列ref[pos]在y=1,2,3,4時分別為ref[0]=r0,0,ref[1]=r1,0,ref[1]=r1,0,ref[2]=r2,0;步驟5、利用式(4)得到加權(quán)因子ω:ω=(y×offset[m])&τ1(4)式(5)中,&表示“與”操作;τ1表示二進(jìn)制數(shù)的“31”,在實(shí)例中,當(dāng)y=1,2,3,4時ω的值,分別為21,10,31,20;步驟6、初始化y=1;步驟7、利用式(5)得到第一加法值add1:add1=ref[pos]-ref[pos+1](5)在實(shí)例中,add1=ref[0]-ref[1]=r0,0-r1,0=9-8=1;步驟8、利用式(6)得到第一移位值shift1:shift1=τ2×ref[pos](6)式(6)中,τ2=32;在實(shí)例中,shift1=τ2×ref[0]=32×9=288;步驟9、利用式(7)得到第二移位值shift2:shift2=ω×add1(7)在實(shí)例中,shift2=ω×add1=21;步驟10、利用式(8)得到第二加法值add2:add2=shift1+shift2+τ3(8)式(8)中,τ3=16;在實(shí)例中,add2=288+21+16=325;步驟11、初始化x=1;步驟12、利用式(9)得到第三移位值即第y行第x個預(yù)測像素值px,y:px,y=add2>>5(9)在實(shí)例中,即為p1,1=325>>5=10;步驟13、將px,y賦值給px+1,y;在實(shí)例中,p2,1=p1,1=10;步驟14、將(x+1)的值賦給x,并判斷x+1=4n是否成立,若成立,則執(zhí)行步驟15;否則,返回步驟13;步驟15、將(y+1)的值賦給y,并判斷y=4n是否成立,若不成立,則執(zhí)行步驟7,否則,表示得到預(yù)測塊在實(shí)例中,針對4×4的預(yù)測塊對角度預(yù)測算法進(jìn)行vlsi設(shè)計(jì),并采用veriloghdl語言進(jìn)行描述,通過synopsys軟件進(jìn)行仿真和綜合,在smic0.18um工藝下綜合得到該電路最快工作頻率為500mhz,電路工作的面積為23.23kgate,使用硬件效率he對本發(fā)明進(jìn)行綜合測評,得出he=344。本發(fā)明與liuc,shenw,mat等人在2013ieeeinternationalconference發(fā)表的“ahighlypipelinedvlsiarchitectureforallmodesandblocksizesintrapredictioninhevcencoder”中電路相比,邏輯門數(shù)減少了69.8%,硬件效率he提高了176%,工作頻率、邏輯門數(shù)、硬件效率he的對比圖分別在圖4所示。當(dāng)前第1頁12