本發(fā)明涉及視頻編碼領(lǐng)域,具體涉及一種基于hevc視頻編碼的tu樹狀結(jié)構(gòu)抉擇算法。
背景技術(shù):
hevc視頻編碼中,tu樹狀結(jié)構(gòu)是hevc視頻標準新提出的一種提高編碼效率的編碼工具,tu大小有4x4,8x8,16x16,32x32,對于提高編碼效率有很大作用,但其抉擇算法要求極高的計算復雜度,使得硬件的開銷較大,增加了硬件成本。
比如,hm是jctvc組織的hevc參考編碼器與算法實現(xiàn)。其采用的tu抉擇過程如下:
對所有可能的tu塊(64個4x4塊,16個8x8塊,4個16x16塊,1個32x32塊),做如下運算過程:
1.變換(transform)->量化(quant)->反量化(dequant)->反變換(inversetransform)->重構(gòu)(reconstruct).
2.計算該tu塊的失真,distortion=sum(原始像素–重構(gòu)像素)^2
3.對量化后的系數(shù)做簡化的cabac,然后算出較為準確的殘差編碼的比特數(shù)bits
4.該tu的rdcost=distortion+lambda*bits,(lambda是基于qp和幀類型而定的常數(shù))。
5.對所有的tu塊的rdcost做遍歷比較,選出最小的tu_rdcost組合,得到tu樹結(jié)構(gòu)。
上述算法中,反變換(inversetransform)和重構(gòu)(reconstruct)的計算復雜度較高,導致硬件的開銷較大,硬件pipeline的級數(shù)較多,因此,硬件的整體性能不高。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于hevc視頻編碼的tu樹狀結(jié)構(gòu)抉擇算法,解決目前的tu樹狀結(jié)構(gòu)抉擇算法的計算復雜度很高,導致硬件成本增加以及硬件性能不高的問題。
本發(fā)明為實現(xiàn)上述目的,采用以下技術(shù)方案實現(xiàn):
一種基于hevc視頻編碼的tu樹狀結(jié)構(gòu)抉擇算法,包括以下步驟:
(a)對tu的殘差residual進行變換,得到量化前的系數(shù)c0;
(b)對步驟(a)中得到的c0進行量化,得到系數(shù)c1;
(c)采用固定的二進制bin與bits的壓縮比,得到比特數(shù)估計值bits_estimate;
(d)對步驟(b)中得到的c1進行反量化,得到系數(shù)c2;
(e)計算該tu的失真值distortion:distortion=sum(c2-c0)^2;
(f)計算該tu殘差編碼后的率失真代價rdcost=distortion+lambda*bits_estimate,其中,lambda是根據(jù)qp與幀類型而定的常數(shù);
(g)計算該tu殘差在全部不編碼的情況下的率失真代價rdcost_zero:rdcost_zero=sum(residual)^2;
(h)將步驟(g)得到的rdcost_zero與步驟(f)得到的rdcost進行比較,數(shù)值較小的作為該tu的最優(yōu)代價tu_cost:tu_cost=min(rdcost_zero,rdcost)。
進一步地,作為優(yōu)選技術(shù)方案,所述步驟(c)的具體過程為:
(c1)按照hevc殘差cabac的二進制化過程,得到該tu殘差二進制化過后的bin的總數(shù);
(c2)將bin/(1.2~1.4)作為該tu殘差部分的比特數(shù)估計值bits_estimate。
進一步地,作為優(yōu)選技術(shù)方案,所述步驟(c2)中,將bin/1.3作為該tu殘差部分的比特數(shù)估計值bits_estimate。
進一步地,作為優(yōu)選技術(shù)方案,所述步驟(h)的具體過程為:
(h1)當tu塊為8x8塊時,比較tu_cost_8x8和4個tu_cost_4x4的和,決定該8x8塊是否分割.
如果tu_cost_8x8較小,則該8x8塊不分割,否則,該8x8塊分割;
該8x8塊的最終最優(yōu)代價tu_best_cost_8x8=min(tu_cost_8x8,sum(tu_cost_4x4)),其中,tu_cost_8x8表示8x8塊的最優(yōu)代價,tu_cost_4x4表示4x4塊的最優(yōu)代價;
(h2)當tu塊為16x16塊時,比較tu_cost_16x16和4個tu_best_cost_8x8的和,決定該16x16塊是否分割;
如果tu_cost_16x16較小,則該16x16塊不分割,否則,該16x16塊分割;
該16x16塊的最終最優(yōu)代價tu_best_cost_16x16=min(tu_cost_16x16,sum(tu_best_cost_8x8)),其中tu_cost_16x16表示16x16塊的最優(yōu)代價,tu_best_cost_8x8表示8x8塊的最終最優(yōu)代價;
(h3)當tu塊為32x32塊時,比較tu_cost_32x32和4個tu_best_cost_16x16的和,決定該32x32塊是否分割.
如果tu_cost_32x32較小,則該32x32塊不分割,否則,該32x32塊分割;
該32x32塊的最終最優(yōu)代價tu_best_cost_32x32=min(tu_cost_32x32,sum(tu_best_cost_16x16)),其中,tu_best_cost_32x32表示32x32塊的最優(yōu)代價,tu_best_cost_16x16表示16x16塊的最終最優(yōu)代價。
本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點及有益效果:
(1)本發(fā)明相較于現(xiàn)有技術(shù),巧妙地省去了反變換(inversetransform)和重構(gòu)(reconstruct)過程,降低了計算的復雜程度,減少了硬件開銷,同時也減少了硬件pipeline的級數(shù),同時提高了硬件的性能。
(2)本發(fā)明采用固定的二進制bin與bits的壓縮比估計比特數(shù),去除了cabac(編碼、解碼)的計算需求,極大降低了實現(xiàn)的復雜度,提高了硬件實現(xiàn)的性能。
(3)本發(fā)明相較于現(xiàn)有的復雜tu算法,只有0.5bd-r的損失,即在相同視頻編碼質(zhì)量下,只增加了0.5%的碼率。
附圖說明
圖1為本發(fā)明的tu塊的率失真計算過程;
圖2為本發(fā)明的tu樹狀結(jié)構(gòu)抉擇過程;
圖3為本發(fā)明的tu樹狀結(jié)構(gòu)結(jié)果示例。
具體實施方式
下面結(jié)合實施例對本發(fā)明作進一步地詳細說明,但本發(fā)明的實施方式不限于此。
實施例:
hevc視頻編碼中,tu樹型結(jié)構(gòu)是hevc視頻標準新提出的一種提高編碼效率的編碼工具,tu大小有4x4、8x8、16x16、32x32,在對tu樹狀結(jié)構(gòu)抉擇時,是對所有的tu塊做rdcost(率失真)計算,tu塊包括64個4x4塊,16個8x8塊,4個16x16塊,1個32x32塊,總共85個塊。
如圖1所示,本實施例所述的一種基于hevc視頻編碼的tu樹狀結(jié)構(gòu)抉擇算法,包括以下步驟:
(a)對tu的殘差residual進行變換,得到量化前的系數(shù)c0;
(b)對步驟(a)中得到的c0進行量化,得到系數(shù)c1;
(c)采用固定的二進制bin與bits的壓縮比,得到比特數(shù)估計值bits_estimate;
(d)對步驟(b)中得到的c1進行反量化,得到系數(shù)c2;
(e)計算該tu的失真值distortion:distortion=sum(c2-c0)^2;
(f)計算該tu殘差編碼后的率失真代價rdcost=distortion+lambda*bits_estimate,其中,lambda是根據(jù)qp與幀類型而定的常數(shù);
(g)計算該tu殘差在全部不編碼的情況下的率失真代價rdcost_zero:rdcost_zero=sum(residual)^2;
(h)將步驟(g)得到的rdcost_zero與步驟(f)得到的rdcost進行比較,數(shù)值較小的作為該tu的最優(yōu)代價tu_cost:tu_cost=min(rdcost_zero,rdcost)。
通過上述步驟可知,本實施例并未像現(xiàn)有技術(shù)那樣進行反變換(inversetransform)和重構(gòu)(reconstruct),省去了這兩個步驟,通過基于量化前和反量化后的頻域空間的系數(shù)差異,來估計時域的失真,得到的實際仿真差異并不大,但是這樣做大大簡化了計算的復雜程度。另外采用固定的二進制bin與bits的壓縮比,得到比特數(shù)估計值bits_estimate,不用對bin做基于上下文的二進制算術(shù)編碼過程,極大降低了實現(xiàn)的復雜度,提高了硬件實現(xiàn)的性能。
本實施例可對步驟(c)進行如下細分:
(c1)按照hevc殘差cabac的二進制化過程,得到該tu殘差二進制化過后的bin的總數(shù);
(c2)將bin/(1.2~1.4)作為該tu殘差部分的比特數(shù)估計值bits_estimate。
優(yōu)選的,步驟(c2)中,將bin/1.3作為該tu殘差部分的比特數(shù)估計值bits_estimate。
本實施例可采用如下的方式對tu樹狀結(jié)構(gòu)進行抉擇:
(h1)當tu塊為8x8塊時,比較tu_cost_8x8和4個tu_cost_4x4的和,決定該8x8塊是否分割.
如果tu_cost_8x8較小,則該8x8塊不分割,否則,該8x8塊分割;
該8x8塊的最終最優(yōu)代價tu_best_cost_8x8=min(tu_cost_8x8,sum(tu_cost_4x4)),其中,tu_cost_8x8表示8x8塊的最優(yōu)代價,tu_cost_4x4表示4x4塊的最優(yōu)代價;
(h2)當tu塊為16x16塊時,比較tu_cost_16x16和4個tu_best_cost_8x8的和,決定該16x16塊是否分割;
如果tu_cost_16x16較小,則該16x16塊不分割,否則,該16x16塊分割;
該16x16塊的最終最優(yōu)代價tu_best_cost_16x16=min(tu_cost_16x16,sum(tu_best_cost_8x8)),其中tu_cost_16x16表示16x16塊的最優(yōu)代價,tu_best_cost_8x8表示8x8塊的最終最優(yōu)代價;
(h3)當tu塊為32x32塊時,比較tu_cost_32x32和4個tu_best_cost_16x16的和,決定該32x32塊是否分割.
如果tu_cost_32x32較小,則該32x32塊不分割,否則,該32x32塊分割;
該32x32塊的最終最優(yōu)代價tu_best_cost_32x32=min(tu_cost_32x32,sum(tu_best_cost_16x16)),其中,tu_best_cost_32x32表示32x32塊的最優(yōu)代價,tu_best_cost_16x16表示16x16塊的最終最優(yōu)代價。
以上所述,僅是本發(fā)明的較佳實施例,并非對本發(fā)明做任何形式上的限制,凡是依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所作的任何簡單修改、等同變化,均落入本發(fā)明的保護范圍之內(nèi)。