專利名稱:計(jì)算復(fù)雜度可動態(tài)調(diào)整的視頻編碼方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字視頻處理技術(shù)領(lǐng)域,具體來說是指一種計(jì)算復(fù)雜度可動態(tài)調(diào)整的視頻編碼方法和采用該方法的裝置。
背景技術(shù):
數(shù)字視頻技術(shù)正在被廣泛地應(yīng)用到諸如視頻廣播、視頻會議與可視電話、多媒體娛樂和數(shù)字視頻監(jiān)控等領(lǐng)域。數(shù)字視頻技術(shù)的處理對象為視頻序列,而視頻序列是由許多連續(xù)的、時(shí)間上相關(guān)的視頻畫面組成的。未經(jīng)壓縮的視頻序列需要占用太多的存儲空間或者傳輸帶寬,以水平分辨率為720、垂直分辨率為576,幀率為25幀/秒的標(biāo)準(zhǔn)清晰度視頻序列為例,它一秒鐘總共有大約165兆比特?cái)?shù)據(jù)量。在現(xiàn)有的技術(shù)水平下,直接存儲或者傳輸這么大量的數(shù)據(jù)是不現(xiàn)實(shí)的,因此必須使用數(shù)字視頻編碼技術(shù)對這些原始的視頻序列進(jìn)行壓縮處理,然后再對壓縮數(shù)據(jù)進(jìn)行存儲或者傳輸。
當(dāng)前主流的視頻編碼國際標(biāo)準(zhǔn)是H.26X或者M(jìn)PEG-X系列,這些編碼標(biāo)準(zhǔn)的一個共同特點(diǎn)就是對處理器裝置的計(jì)算性能提出了很高的要求,特別是在高分辨率、高幀率情況下更是如此。在傳統(tǒng)的視頻編碼方法中,視頻處理的操作方式和過程是不變的。但隨著輸入視頻內(nèi)容的變化,視頻處理的計(jì)算負(fù)荷也會相應(yīng)地波動,在編碼器裝置計(jì)算性能受限的情況下,很容易導(dǎo)致丟幀的情況,進(jìn)而因?yàn)橐曨l畫面的不連貫而影響視頻序列的整體感觀質(zhì)量。
H.26X或者M(jìn)PEG-X系列視頻編碼標(biāo)準(zhǔn)都是基于時(shí)間域和空間域混合的操作架構(gòu),它們在時(shí)間域上進(jìn)DPCM操作、在空間域上進(jìn)行塊DCT(離散余弦變換或者近似于它的整型變換)操作。其中DPCM操作是通過在幀與幀之間進(jìn)行運(yùn)動估計(jì)和運(yùn)動補(bǔ)償運(yùn)算來減少視頻序列的時(shí)間冗余度,而DCT變換操作是通過把空間域上的視頻信號變換到頻率域上,對信號能量進(jìn)行壓縮,再由后續(xù)的QUANT(量化)操作來減少視頻畫面的空間冗余度,并且對QUANT操作后的輸出進(jìn)行DEQUANT(反量化)和IDCT(逆離散余弦變換或者近似于它的逆整型變換)操作,來重建出圖像。本領(lǐng)域的技術(shù)人員都知道,在上述操作過程中,運(yùn)動估計(jì)和DCT/QUANT/DEQUANT/IDCT運(yùn)算是消耗編碼器裝置處理資源最多的操作。所以如何根據(jù)編碼器裝置所能提供的處理資源量和輸入的待編碼視頻序列內(nèi)容,來動態(tài)地調(diào)整上述操作過程的復(fù)雜度,使得編碼器裝置能實(shí)時(shí)地編碼視頻序列,成為了本領(lǐng)域技術(shù)人員都非常關(guān)心的一個問題。
申請?zhí)枮?2826217.4的專利申請書公開了一種可動態(tài)控制視頻編碼復(fù)雜度的方法。它根據(jù)輸入待處理數(shù)據(jù)流的緩存區(qū)中的充滿程度,并且通過一張預(yù)先確定的編碼復(fù)雜度配置表,來控制視頻編碼的計(jì)算負(fù)荷。在這張編碼復(fù)雜度配置表中,總共有8個選項(xiàng)。每個選項(xiàng)都在幀操作級別進(jìn)一步規(guī)定了編碼器允許的編碼方法,而且每類編碼方法又根據(jù)所需的計(jì)算復(fù)雜度細(xì)分為3種。在此專利申請書中所述的這些編碼方法中,計(jì)算復(fù)雜度的動態(tài)控制都是通過幀級別進(jìn)行的。但是幀級別的控制,在許多應(yīng)用中是不允許的,比如復(fù)雜度配置表中所述的B幀編碼方法在某些應(yīng)用中本身就不允許出現(xiàn)。而且?guī)墑e控制方法的控制粒度也過于粗糙,不容易實(shí)現(xiàn)計(jì)算復(fù)雜度的精細(xì)控制。
發(fā)明內(nèi)容
本發(fā)明提供了一種計(jì)算復(fù)雜度可在宏塊級別進(jìn)行動態(tài)調(diào)整的視頻編碼方法,克服了以往編碼方法只能在幀級別進(jìn)行計(jì)算復(fù)雜度控制的缺陷。
一種計(jì)算復(fù)雜度可動態(tài)調(diào)整的視頻編碼方法,在編碼一幀視頻畫面時(shí),動態(tài)調(diào)整編碼計(jì)算復(fù)雜度包括以下步驟(1)確定編碼這一幀畫面允許使用的計(jì)算資源;(2)測量編碼當(dāng)前這一幀畫面已經(jīng)消耗掉的計(jì)算資源;(3)將步驟(2)中獲得的已消耗的計(jì)算資源和兩預(yù)先設(shè)置的高、低閾值進(jìn)行比較,若已消耗的計(jì)算資源大于高閾值,則降低編碼剩余宏塊的復(fù)雜度;若已消耗的計(jì)算資源小于小閾值,則增加編碼剩余宏塊的復(fù)雜度,若已消耗的計(jì)算資源介于大、小閾值之間,則保持編碼剩余宏塊的復(fù)雜度不變。
本發(fā)明還提供了一種采用上述方法的裝置。
一種采用上述視頻編碼方法的編碼裝置,包括
符合傳統(tǒng)編碼架構(gòu)的宏塊級編碼器;用于測量并記錄當(dāng)前已編碼宏塊所消耗的計(jì)算資源的計(jì)算負(fù)荷監(jiān)測器;根據(jù)計(jì)算負(fù)荷監(jiān)測器的輸出,動態(tài)調(diào)整編碼器的編碼復(fù)雜度的計(jì)算復(fù)雜度動態(tài)控制器;所述的編碼器由變換與量化器、可變長編碼器、運(yùn)動估計(jì)器和運(yùn)動補(bǔ)償器組成;計(jì)算負(fù)荷監(jiān)測器測量編碼器當(dāng)前已使用的計(jì)算資源,并將測量結(jié)果傳送給計(jì)算復(fù)雜度動態(tài)控制器;在編碼下一個宏塊前,計(jì)算復(fù)雜度動態(tài)控制器根據(jù)接收的已使用計(jì)算資源情況,為編碼下一個宏塊的復(fù)雜度進(jìn)行動態(tài)調(diào)整,輸出搜索形狀參數(shù)、DCT變換等操作的跳轉(zhuǎn)閾值和運(yùn)動搜索跳轉(zhuǎn)閾值三個調(diào)整信號;編碼器根據(jù)計(jì)算復(fù)雜度動態(tài)控制器的輸出,按照視頻編碼標(biāo)準(zhǔn)規(guī)范編碼一個宏塊數(shù)據(jù),最后輸出比特流。
所述的計(jì)算負(fù)荷監(jiān)測器由當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器、已編碼宏塊消耗資源累加器、已編碼宏塊個數(shù)累加器及當(dāng)前幀總宏塊個數(shù)記錄器、當(dāng)前幀計(jì)算負(fù)荷指示器和當(dāng)前幀允許消耗的處理器資源記錄器組成;當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器用于記錄編碼器編碼一個宏塊數(shù)據(jù)之前和之后的計(jì)數(shù),根據(jù)當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器的輸出,已編碼宏塊消耗資源累加器統(tǒng)計(jì)出編碼器已消耗的計(jì)算資源,已編碼宏塊個數(shù)累加器及當(dāng)前幀總宏塊個數(shù)記錄器記錄已編碼的宏塊個數(shù)和總共需要編碼的宏塊個數(shù),結(jié)合當(dāng)前幀計(jì)算負(fù)荷指示器記錄的編碼這幀畫面允許的計(jì)算資源,當(dāng)前幀允許消耗的處理器資源記錄器可向計(jì)算復(fù)雜度動態(tài)控制器輸出當(dāng)前編碼器的負(fù)荷信息。
宏塊級別的計(jì)算復(fù)雜度的動態(tài)調(diào)整是通過對運(yùn)動估計(jì)和DCT/QUANT/DEQUANT/IDCT這兩部分的操作實(shí)現(xiàn)的,具體包含以下三個方面1)DCT變換等操作的跳轉(zhuǎn)閾值控制,通過動態(tài)調(diào)整DCT變換等操作的跳轉(zhuǎn)閾值來控制編碼是否對宏塊進(jìn)行DCT/QUANT/DEQUANT/IDCT操作,進(jìn)而控制這部分操作的計(jì)算負(fù)荷。
2)運(yùn)動搜索跳轉(zhuǎn)閾值控制,通過動態(tài)調(diào)整運(yùn)動搜索跳轉(zhuǎn)閾值來控制編碼器是否進(jìn)行運(yùn)動估計(jì)運(yùn)算。
3)搜索形狀參數(shù)控制,通過動態(tài)調(diào)整運(yùn)動估計(jì)所要采用的搜索形狀,來控制運(yùn)動估計(jì)部分的計(jì)算負(fù)荷。
圖1為本發(fā)明編碼裝置系統(tǒng)的結(jié)構(gòu)示意框圖;圖2為本發(fā)明計(jì)算負(fù)荷監(jiān)測器的結(jié)構(gòu)示意框圖;圖3為編碼器中DCT變換等操作部分的SKIP控制策略流程圖;圖4為運(yùn)動估計(jì)部分的SKIP控制策略流程圖;圖5為運(yùn)動估計(jì)部分的一種搜索形狀調(diào)整策略流程圖;圖6為編碼器宏塊級計(jì)算復(fù)雜度動態(tài)調(diào)整的操作流程圖。
具體實(shí)施例方式
如圖1所示,一種采用本發(fā)明所述計(jì)算復(fù)雜度動態(tài)調(diào)整方法的編碼裝置系統(tǒng),包括符合傳統(tǒng)編碼架構(gòu)的宏塊級編碼器;用于測量并記錄當(dāng)前已編碼宏塊所消耗的計(jì)算資源的計(jì)算負(fù)荷監(jiān)測器;根據(jù)計(jì)算負(fù)荷監(jiān)測器的輸出,動態(tài)調(diào)整編碼器的編碼復(fù)雜度的計(jì)算復(fù)雜度動態(tài)控制器;編碼器由DCT、QUANT、DEQUANT和IDCT(簡稱變換與量化器)、VLC(可變長編碼器)、ME(運(yùn)動估計(jì)器)和MC(運(yùn)動補(bǔ)償器)四部分組成。
如圖2所示,計(jì)算負(fù)荷監(jiān)測器由當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器210、已編碼宏塊消耗資源累加器220、已編碼宏塊個數(shù)累加器及當(dāng)前幀總宏塊個數(shù)記錄器230、當(dāng)前幀計(jì)算負(fù)荷指示器240和當(dāng)前幀允許消耗的處理器資源記錄器250組成,當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器210用于記錄編碼器編碼一個宏塊數(shù)據(jù)之前和之后的計(jì)數(shù),根據(jù)當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器210的輸出,已編碼宏塊消耗資源累加器220可以統(tǒng)計(jì)出編碼器已消耗的計(jì)算資源,已編碼宏塊個數(shù)累加器及當(dāng)前幀總宏塊個數(shù)記錄器230記錄已編碼的宏塊個數(shù)和總共需要編碼的宏塊個數(shù),結(jié)合當(dāng)前幀計(jì)算負(fù)荷指示器240記錄的編碼這幀畫面允許的計(jì)算資源,當(dāng)前幀允許消耗的處理器資源記錄器250可向計(jì)算復(fù)雜度動態(tài)控制器輸出當(dāng)前編碼器的負(fù)荷信息。
本發(fā)明編碼裝置在編碼過程中,計(jì)算負(fù)荷監(jiān)測器測量編碼器當(dāng)前已使用的計(jì)算資源,并將測量結(jié)果傳送給計(jì)算復(fù)雜度動態(tài)控制器;在編碼下一個宏塊前,計(jì)算復(fù)雜度動態(tài)控制器根據(jù)接收的已使用計(jì)算資源情況,為編碼下一個宏塊的復(fù)雜度進(jìn)行動態(tài)調(diào)整,輸出搜索形狀參數(shù)、DCT變換等操作的跳轉(zhuǎn)閾值和運(yùn)動搜索跳轉(zhuǎn)閾值三個調(diào)整信號;編碼器根據(jù)計(jì)算復(fù)雜度動態(tài)控制器的輸出,按照視頻編碼標(biāo)準(zhǔn)規(guī)范編碼一個宏塊數(shù)據(jù),最后輸出比特流。
宏塊級別的計(jì)算復(fù)雜度的動態(tài)調(diào)整是通過對運(yùn)動估計(jì)和DCT/QUANT/DEQUANT/IDCT這兩部分的操作實(shí)現(xiàn)的,具體包含以下三個方面1)DCT變換等操作的跳轉(zhuǎn)閾值控制,通過動態(tài)調(diào)整DCT變換等操作的跳轉(zhuǎn)閾值來控制編碼是否對宏塊進(jìn)行DCT/QUANT/DEQUANT/IDCT操作,進(jìn)而控制這部分操作的計(jì)算負(fù)荷。
2)運(yùn)動搜索跳轉(zhuǎn)閾值控制,通過動態(tài)調(diào)整運(yùn)動搜索的跳轉(zhuǎn)閾值來控制編碼器是否進(jìn)行運(yùn)動估計(jì)運(yùn)算。
3)搜索形狀參數(shù)控制,通過動態(tài)調(diào)整運(yùn)動估計(jì)所要采用的搜索形狀,來控制運(yùn)動估計(jì)部分的計(jì)算負(fù)荷。
如圖3所示,編碼器對宏塊數(shù)據(jù)進(jìn)行DCT變換等操作時(shí),在接收到由計(jì)算復(fù)雜度動態(tài)控制器發(fā)送過來的DCT變換等操作的跳轉(zhuǎn)閾值后,編碼器首先計(jì)算出宏塊中四個亮度塊數(shù)據(jù)與參考塊數(shù)據(jù)的SAD值(差的絕對值的和);然后比較SAD與DCT變換等操作的跳轉(zhuǎn)閾值的線性組合結(jié)果,如果大于或等于0,則編碼器繼續(xù)進(jìn)行變換等操作,否則的話就不進(jìn)行變換等操作。最后編碼器根據(jù)上述操作結(jié)果,對編碼宏塊信息進(jìn)行設(shè)置。
如圖4所示,編碼器在運(yùn)動估計(jì)操作時(shí),在接收到由計(jì)算復(fù)雜度動態(tài)控制器發(fā)送過來的運(yùn)動搜索跳轉(zhuǎn)閾值后,編碼器首先根據(jù)初始運(yùn)動矢量計(jì)算出相應(yīng)的SAD值,然后比較此SAD值與運(yùn)動搜索跳轉(zhuǎn)閾值的大小關(guān)系,如果前者大,則繼續(xù)作運(yùn)動估計(jì)操作,并且將搜索過程中發(fā)現(xiàn)的最小SAD值對應(yīng)的運(yùn)動矢量作為最優(yōu)運(yùn)動矢量,否則的話就不進(jìn)行運(yùn)動估計(jì)操作,把初始運(yùn)動矢量作為最優(yōu)運(yùn)動矢量。
如圖5所示,編碼器在運(yùn)動估計(jì)操作時(shí),在接收到由計(jì)算復(fù)雜度動態(tài)控制器發(fā)送過來的搜索形狀參數(shù)后,編碼器根據(jù)參數(shù)值在運(yùn)算量大的搜索形狀(如大六邊型)、運(yùn)算量適中的搜索形狀(如小菱型)和運(yùn)算量小的搜索形狀(如十字型)共三類搜索形狀中選擇一種進(jìn)行運(yùn)動估計(jì)操作。
圖6為本發(fā)明計(jì)算復(fù)雜度動態(tài)控制器的操作流程圖,計(jì)算復(fù)雜度動態(tài)控制器接收計(jì)算負(fù)荷監(jiān)測器輸出的計(jì)算負(fù)荷指示信息,進(jìn)行相應(yīng)的邏輯操作和判斷后,向編碼器分別輸出搜索形狀參數(shù)、DCT變換等操作的跳轉(zhuǎn)閾值和運(yùn)動搜索跳轉(zhuǎn)閾值三個計(jì)算復(fù)雜度控制信息,進(jìn)而對編碼器編碼下一個宏塊的計(jì)算復(fù)雜度進(jìn)行控制,使得編碼器編碼一幀所消耗的計(jì)算資源維持在允許范圍內(nèi)。
如圖6所示,在得到計(jì)算負(fù)荷指示信息T后,先判斷T落在如下三個域(0,T_down),[T_down,T_up],(T_up,∞)中的哪個域,然后根據(jù)判斷結(jié)果選擇相應(yīng)的跳轉(zhuǎn)分支。假設(shè)T落在(T_up,∞)域中,即T大于T_up,那么先計(jì)算D_u=T-T_up,再判斷D_u是落在如下三個域(0,D_uthres2),[D_uthres2,D_uthres1],(D_uthres1,∞)中的哪個域,然后根據(jù)判斷結(jié)果選擇相應(yīng)的跳轉(zhuǎn)分支,執(zhí)行相應(yīng)的計(jì)算復(fù)雜度控制策略。若D_u是落在(0,D_uthres2)域上,說明編碼計(jì)算負(fù)荷超出允許范圍較少,只需通過調(diào)整搜索形狀參數(shù)一個信號即可達(dá)到負(fù)荷調(diào)整的目的;如果D_u是落在[D_uthres2,D_uthres1]域上,說明編碼計(jì)算負(fù)荷在較大程度上超出允許范圍,需通過調(diào)整搜索形狀參數(shù)和DCT變換等操作的跳轉(zhuǎn)閾值兩個信號來可達(dá)到負(fù)荷調(diào)整的目的;而如果D_u是落在(D_uthres1,∞)域上,說明編碼計(jì)算負(fù)荷超出允許范圍很多,這時(shí)需要通過調(diào)整搜索形狀參數(shù)、DCT變換等操作的跳轉(zhuǎn)閾值和運(yùn)動搜索跳轉(zhuǎn)閾值三個信號來達(dá)到負(fù)荷調(diào)整的目的。如流程圖所示,當(dāng)T落在其他區(qū)域時(shí)的操作與上述過程是相似的。
權(quán)利要求
1.一種計(jì)算復(fù)雜度可動態(tài)調(diào)整的視頻編碼方法,其特征在于在編碼一幀視頻畫面時(shí),動態(tài)調(diào)整編碼計(jì)算復(fù)雜度包括以下步驟(1)確定編碼這一幀畫面允許使用的計(jì)算資源;(2)測量編碼當(dāng)前這一幀畫面已經(jīng)消耗掉的計(jì)算資源;(3)將步驟(2)中獲得的已消耗的計(jì)算資源和兩預(yù)先設(shè)置的高、低閾值進(jìn)行比較,若已消耗的計(jì)算資源大于高閾值,則降低編碼剩余宏塊的復(fù)雜度;若已消耗的計(jì)算資源小于小閾值,則增加編碼剩余宏塊的復(fù)雜度,若已消耗的計(jì)算資源介于大、小閾值之間,則保持編碼剩余宏塊的復(fù)雜度不變。
2.一種采用如權(quán)利要求1所述方法的編碼裝置,其特征在于包括符合傳統(tǒng)編碼架構(gòu)的宏塊級編碼器;用于測量并記錄當(dāng)前已編碼宏塊所消耗的計(jì)算資源的計(jì)算負(fù)荷監(jiān)測器;根據(jù)計(jì)算負(fù)荷監(jiān)測器的輸出,動態(tài)調(diào)整編碼器的編碼復(fù)雜度的計(jì)算復(fù)雜度動態(tài)控制器;所述的編碼器由變換與量化器、可變長編碼器、運(yùn)動估計(jì)器和運(yùn)動補(bǔ)償器組成;計(jì)算負(fù)荷監(jiān)測器測量編碼器當(dāng)前已使用的計(jì)算資源,并將測量結(jié)果傳送給計(jì)算復(fù)雜度動態(tài)控制器;在編碼下一個宏塊前,計(jì)算復(fù)雜度動態(tài)控制器根據(jù)接收的已使用計(jì)算資源情況,為編碼下一個宏塊的復(fù)雜度進(jìn)行動態(tài)調(diào)整,輸出搜索形狀參數(shù)、DCT變換等操作的跳轉(zhuǎn)閾值和運(yùn)動搜索跳轉(zhuǎn)閾值三個調(diào)整信號;編碼器根據(jù)計(jì)算復(fù)雜度動態(tài)控制器的輸出,按照視頻編碼標(biāo)準(zhǔn)規(guī)范編碼一個宏塊數(shù)據(jù),最后輸出比特流。
3.如權(quán)利要求2所述的編碼裝置,其特征在于所述的計(jì)算負(fù)荷監(jiān)測器由當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器(210)、已編碼宏塊消耗資源累加器(220)、已編碼宏塊個數(shù)累加器及當(dāng)前幀總宏塊個數(shù)記錄器(230)、當(dāng)前幀計(jì)算負(fù)荷指示器(240)和當(dāng)前幀允許消耗的處理器資源記錄器(250)組成;當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器(210)用于記錄編碼器編碼一個宏塊數(shù)據(jù)之前和之后的計(jì)數(shù),根據(jù)當(dāng)前宏塊起始和結(jié)束編碼計(jì)數(shù)器(210)的輸出,已編碼宏塊消耗資源累加器(220)統(tǒng)計(jì)出編碼器已消耗的計(jì)算資源,已編碼宏塊個數(shù)累加器及當(dāng)前幀總宏塊個數(shù)記錄器(230)記錄已編碼的宏塊個數(shù)和總共需要編碼的宏塊個數(shù),結(jié)合當(dāng)前幀計(jì)算負(fù)荷指示器(240)記錄的編碼這幀畫面允許的計(jì)算資源,當(dāng)前幀允許消耗的處理器資源記錄器(250)可向計(jì)算復(fù)雜度動態(tài)控制器輸出當(dāng)前編碼器的負(fù)荷信息。
全文摘要
本發(fā)明公開了一種計(jì)算復(fù)雜度可動態(tài)調(diào)整的視頻編碼方法,在編碼一幀視頻畫面時(shí),動態(tài)調(diào)整編碼計(jì)算復(fù)雜度包括以下步驟確定編碼這一幀畫面允許使用的計(jì)算資源;測量編碼當(dāng)前這一幀畫面已經(jīng)消耗掉的計(jì)算資源;將獲得的已消耗的計(jì)算資源和兩預(yù)先設(shè)置的高、低閾值進(jìn)行比較,若已消耗的計(jì)算資源大于高閾值,則降低編碼剩余宏塊的復(fù)雜度;若已消耗的計(jì)算資源小于小閾值,則增加編碼剩余宏塊的復(fù)雜度,若已消耗的計(jì)算資源介于大、小閾值之間,則保持編碼剩余宏塊的復(fù)雜度不變。本發(fā)明方法克服了以往編碼方法只能在幀級別進(jìn)行計(jì)算復(fù)雜度控制的缺陷。本發(fā)明還公開了采用該方法的裝置。
文檔編號H04N7/30GK1976462SQ20061015513
公開日2007年6月6日 申請日期2006年12月11日 優(yōu)先權(quán)日2006年12月11日
發(fā)明者陳耀武, 鄭雅羽, 馮杰 申請人:浙江大學(xué)