亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種視頻編碼中對殘差矩陣的快速掃描方法

文檔序號:7652225閱讀:329來源:國知局
專利名稱:一種視頻編碼中對殘差矩陣的快速掃描方法
技術(shù)領(lǐng)域
本發(fā)明屬于信號處理中的視頻編碼技術(shù)領(lǐng)域,涉及視頻編碼中一種對殘差矩陣的快速掃描方法。
背景技術(shù)
視頻是指由一系列時間上相關(guān)的圖象組成的集合,其中每幅圖象稱為“幀”(本申請對幀模式和場模式的圖象都統(tǒng)一適用,所以不再區(qū)分幀和場,統(tǒng)一稱為幀),每幀圖象又可以劃分為若干個“圖象塊”,通常形狀為矩形。視頻編碼中常用的圖象塊大小有16×16,16×8,8×16,8×8,4×4等?,F(xiàn)有的視頻編碼標準中大都采用基于分塊處理的混合編碼方法,以圖象塊為基本單位進行處理;而每個圖象塊由一定數(shù)量的“象素”組成,它是構(gòu)成圖象的最小單元。
視頻編碼的目的在于對原始視頻數(shù)據(jù)進行處理,在不顯著降低觀看質(zhì)量的前提下實現(xiàn)數(shù)據(jù)量的壓縮以方便存儲和傳輸。視頻編碼器就是完成上述功能的器件。在大多數(shù)的視頻壓縮標準中,如MPEG-1,MPEG-2,MPEG-4,H.261,H.263,H.264/AVC,以及中國制定的高級音視頻標準AVS,都采用了包括預(yù)測編碼、變換編碼和熵編碼的混合編碼方法,獲得了很好的圖象壓縮效果。視頻編解碼的過程如圖1所示。圖1中,上邊的實線表示編碼過程,下邊的虛線表示解碼過程。在編碼過程中,對圖象塊經(jīng)過預(yù)測、變換、量化、掃描和熵編碼后,得到編碼后的碼流。在解碼時,首先對已編碼碼流進行熵解碼,再經(jīng)過反掃描、反量化和反變換,最后通過運動補償?shù)玫浇獯a的重建圖象。
視頻編碼器由很多功能模塊組成,其中“掃描模塊(scan)”是一個較為重要的模塊。掃描模塊的輸入數(shù)據(jù)以一個待掃描元素的二維矩陣形式存在,它可以是一個原始圖象塊,也可以是一個或多個原始圖象塊經(jīng)過任何一種操作處理得到的矩陣,它可用如下公式表述C=f(A1,A2,…,Am)上式中C表示待掃描的二維矩陣,f表示任意一種操作,A1至Am表示參與操作的一個或多個原始圖象塊。由于在大多數(shù)視頻編碼標準中掃描模塊的輸入是各個圖象塊經(jīng)過預(yù)測、變換和量化之后的殘差塊,因此在本文中如果不做特殊說明,則將待掃描矩陣稱為“殘差矩陣”,將待掃描矩陣的元素稱為“殘差矩陣的元素”或“殘差元素”。掃描模塊后面連接的是熵編碼模塊。按照目前大多數(shù)視頻編碼標準中的要求,掃描模塊需要向熵編碼模塊輸出run-level信息,也即殘差矩陣按照預(yù)先定義的掃描順序轉(zhuǎn)化成一維序列后各個非零元素的值level(量化系數(shù)值,也即殘差矩陣中非零元素的幅值),以及各非零元素前連續(xù)零元素的個數(shù)run(量化游程,也即在對殘差矩陣的掃描中一個非零元素前連續(xù)零元素的個數(shù))。而在國際視頻編碼標準H.264/AVC中,掃描模塊需要向熵編碼模塊輸出的數(shù)據(jù)則是非零元素值level、指示非零元素位置的信息map(表示一維序列中某元素是否為非零元素的信息,若是非零元素則對應(yīng)位置的map值為第2個符號值,否則map值為第1個符號值,其中第1和第2個符號值用來表示取值的二值性,例如可以分別取為“1”和“0”,也可取為“0”和“1”)、以及標志最后一個非零元素位置的信息last(表示一維序列中某元素是否為最后一個非零元素的信息,若是最后一個非零元素則對應(yīng)位置的last值為第2個符號值,否則為第1個符號值)。
綜上所述,對殘差矩陣的掃描所要實現(xiàn)的功能是將殘差矩陣按照預(yù)先設(shè)定的掃描順序轉(zhuǎn)化成一維序列,從中提取出非零元素大小及位置分布等信息,輸出給后續(xù)模塊。圖2示意了對殘差矩陣的掃描過程。如圖2所示,一個大小為N×M的待掃描殘差矩陣(垂直方向有N個元素,水平方向有M個元素),按照虛線箭頭所示的掃描順序(殘差矩陣轉(zhuǎn)化為一維序列的過程中,矩陣中各元素在一維序列中的排列規(guī)則)轉(zhuǎn)化為一個一維序列,再從中找出level信息和run信息(適用于H.264/AVC時需要找出的是level信息、map信息和last信息)。
一種傳統(tǒng)的掃描方法其工作過程如下依照預(yù)先設(shè)定的掃描順序每次讀取殘差矩陣中的一個元素,判斷其是否為零元素。若是零元素則把當前run值加一,否則輸出這個非零元素和當前記錄下的run值,也就是此非零元素前連續(xù)零元素的個數(shù),并將當前run值置零。這種做法的特點是每次存入和處理的元素都是一個。該方法在硬件實現(xiàn)時結(jié)構(gòu)簡單,復(fù)雜度比較低。但是由于在采用該方法的硬件電路中每個時鐘周期只能處理一個殘差元素,掃描一個圖象塊的殘差矩陣至少需要N×M個時鐘周期。因此傳統(tǒng)掃描方法應(yīng)用于硬件實現(xiàn)時的缺點在于需要的時鐘周期數(shù)較長,掃描過程過于緩慢。
當前視頻編解碼系統(tǒng)的應(yīng)用中對于高分辨率和實時性的要求越來越高,這種數(shù)據(jù)量大、處理時間有限的應(yīng)用需求對視頻編碼器硬件的處理速度提出了很高的要求,在編碼器硬件的時鐘頻率難以顯著提高的情況下,則需要盡量減少處理每一個圖象塊所用的時鐘周期數(shù)。顯然,傳統(tǒng)的掃描方法難以滿足這種要求。

發(fā)明內(nèi)容
本發(fā)明的目的是為了克服傳統(tǒng)掃描方法的不足之處,提出一種對殘差矩陣的快速掃描方法。本發(fā)明應(yīng)用于硬件實現(xiàn)時可以充分利用并行性,大大減少掃描一個同樣大小殘差矩陣所需要的時鐘周期數(shù),提高編碼器編碼速度,有助于實現(xiàn)高分辨率下的實時編碼。
本發(fā)明提出的一種視頻編碼中對殘差矩陣的快速掃描方法,其特征在于,該方法包括將二維殘差矩陣的元素按照預(yù)先設(shè)定的映射方式并行地存入一個一維序列;從該一維序列中每次順序提取多個殘差元素,并行地計算出該多個殘差元素的level值、map值和run值,并分別存儲。
本發(fā)明具體包括以下步驟1)每次讀取二維殘差矩陣中的P個元素,按照預(yù)先設(shè)定的掃描順序以及殘差矩陣的讀取方式所共同決定的映射方式存入一個一維序列Seq[1N×M]中,直到所有殘差元素將Seq[1N×M]填滿為止,其中,P為同時讀取的殘差矩陣元素的個數(shù),N為殘差矩陣垂直方向元素的個數(shù),M為殘差矩陣水平方向元素的個數(shù);2)每次從一維序列Seq[1N×M]中順序提取出Q個殘差元素,同時計算該Q個殘差元素的level值、map值和run值,并分別存儲,直到處理完所有Seq[1N×M]的殘差元素,其中,Q為同時提取的殘差矩陣元素的個數(shù);所述步驟2)中的處理具體包括以下步驟21)用每個殘差元素的值作為該元素對應(yīng)的level值;22)若該殘差元素其值為0,則對應(yīng)的map值為第1個符號值,否則map值為第2個符號值;23)利用上次處理得到的lastrun并行計算每個殘差元素對應(yīng)的run值,其中,lastrun為同時處理的Q個殘差元素中最后出現(xiàn)的連續(xù)零元素個數(shù),若最后一個殘差元素為非零元素,則lastrun為0;上次處理得到的lastrun即為上一組Q個殘差元素中最后出現(xiàn)的連續(xù)零元素個數(shù),計算第一組Q個殘差元素時lastrun取0。所述步驟23)中的處理具體包括以下步驟231)若第1個殘差元素為零,則其run值為“無效”,否則其run值為上次的lastrun;232)若第i個殘差元素為零,i=2,3…,Q,則其run值為“無效”,否則若第i個殘差元素前面有非零元素且與其距離最近的非零元素為第j個殘差元素,j=1,2…,i-1,則其run值為i-j-1,否則其run值為i-1+lastrun;233)重新計算當前Q個殘差元素中最后一個非零元素后面的連續(xù)零元素個數(shù)lastrun,如果Q個殘差元素均為零元素,則當前的lastrun等于上次的lastrun與Q之和;24)將得出的level值、map值和run值分別存儲。
上述預(yù)先設(shè)定的掃描順序可以是各種視頻編碼標準中廣泛采用的Zig-Zag掃描順序,也可以是MPGE-2等標準中采用的Alternate-Horizontal、Alternate-Vertical掃描順序,還可以是其他任何預(yù)先設(shè)定的掃描順序;所述的殘差矩陣的讀取方式包括逐行讀取、逐列讀取、逐象素讀取等各種讀取方式。
上述從一維序列中提取非零元素大小及位置分布信息的過程中,一次同時提取的數(shù)據(jù)個數(shù)Q可以靈活配置,只要滿足N×M為Q的整倍數(shù)即可。
本發(fā)明的特點及效果1)本發(fā)明為了減少掃描模塊處理一個殘差矩陣所需要的時鐘周期數(shù),充分利用硬件處理并行性的特點,從兩個方面對傳統(tǒng)的掃描方法進行改進一是實現(xiàn)對殘差矩陣存儲和掃描的并行化操作,即每個時鐘周期對殘差矩陣中多個元素進行一維序列的轉(zhuǎn)化和存儲;二是實現(xiàn)信息提取的并行化操作,即每個時鐘周期同時完成對多個殘差元素進行l(wèi)evel、run等信息的提取。
2)本發(fā)明實現(xiàn)了將一個二維矩陣轉(zhuǎn)化為一維序列的過程。其中,將二維殘差矩陣中的元素映射到一維序列的映射方式,是由預(yù)先設(shè)定的掃描順序以及殘差矩陣的讀取方式所共同決定的。也就是說,如果不同應(yīng)用中采用不同的掃描順序及不同的殘差矩陣讀取方式,則可以通過有針對性地設(shè)置不同映射方式的做法來加以適應(yīng)。
3)本發(fā)明中只提取了level、run和map三種信息,當應(yīng)用于H.264/AVC視頻編碼中時,所需要的last信息可由map信息得出。因此,本發(fā)明所述的掃描方法也可用于H.264/AVC編碼器。
4)采用本發(fā)明所述方法的掃描電路,掃描一個殘差矩陣所需的時鐘周期數(shù),與傳統(tǒng)方法相比可以大大減少。由于上文所述的步驟1中P個殘差元素可以同時存儲,步驟2中Q個殘差元素可以同時處理,因此掃描一個殘差矩陣所需的時鐘周期數(shù)為 與傳統(tǒng)掃描方法所需的N×M個時鐘周期相比,所用時鐘周期數(shù)大大下降。因此,本發(fā)明提出的視頻編碼中對殘差矩陣的快速掃描方法適合應(yīng)用于VLSI(Very Large Scale IntegratedCircuits,超大規(guī)模集成電路)的設(shè)計,可集成在視頻編碼VLSI芯片之中。


圖1為視頻編解碼過程的示意圖。
圖2為對殘差矩陣的掃描所實現(xiàn)的功能示意圖,包括將二維矩陣按預(yù)先設(shè)定的掃描順序轉(zhuǎn)化為一維序列,以及從中提取出非零元素大小和位置分布等信息。
圖3為本發(fā)明方法的實施例中待掃描的殘差矩陣。
圖4為本發(fā)明方法的實施例中所采用的掃描順序。
具體實施例方式
下面結(jié)合附圖及實施例對本發(fā)明作進一步的詳細描述。
本發(fā)明方法的一種實施例詳細說明如下本實施例的圖象塊的大小為8×8,則殘差矩陣的大小也為8×8,即N=M=8。本實施例的殘差矩陣如圖3所示。本實施例的掃描順序采用被多個視頻編碼標準采用的幀模式Zig-Zag掃描表的掃描順序,如圖4中虛線和箭頭指示方向所示(掃描順序也可以是MPEG-2等標準中采用的Alternate-Horizontal、Alternate-Vertical掃描順序,也可以是其他任何預(yù)先設(shè)定的掃描順序)。本實施例中讀取殘差矩陣的方式為逐行讀取,即P=8(讀取方式也可采用逐列讀取、逐象素讀取等各種讀取方式)。本實施例中同時對8個殘差元素進行處理,即Q=8(也可以取其他任意值,只須滿足8×8為Q的整倍數(shù))。map值的第1個符號值取0,第2個符號值取1。
本實施例的具體工作流程如下1、將殘差矩陣的元素逐行通過映射存入一個一維序列Seq[164]。第一次(即硬件電路中的第一個時鐘周期)讀取的8個元素為(10,0,0,0,0,0,0,0)分別存入Seq[164]的第1、2、6、7、15、16、28、29個位置。以此類推,經(jīng)過8次上述步驟,殘差矩陣的所有元素按照掃描順序存入了一維序列Seq[164]中,Seq[164]中的數(shù)據(jù)為(10,0,8,0,-5,0,0,0,-4,2,0,0,1,0,0,0,0,-1,0,0,1,0,…,0)2、每次從Seq[164]中依次提取8個殘差元素,計算它們的level值、map值和run值,并分別存入對應(yīng)的一維序列l(wèi)evel_Seq[164]、map_Seq[164]和run_Seq[164]的對應(yīng)位置。第一次從Seq[164]中提取的8個殘差元素為(10,0,8,0,-5,0,0,0)進行如下操作21)用每個殘差元素的值作為該元素對應(yīng)的level值,得到(10,0,8,0,-5,0,0,0)22)若該殘差元素其值為0,則對應(yīng)的map值為0,否則map值為1,得到(1,0,1,0,1,0,0,0)23)利用上次處理得到的lastrun并行計算每個殘差元素對應(yīng)的run值,其中元素1為非零元素10,lastrun的初始值為0,因此元素1的run值為0;元素2為零元素,因此元素2的run值為“無效”;元素3為非零元素8,前面距離最近非零元素為元素1,因此元素3的run值為1;元素4為零元素,因此元素4的run值為“無效”;元素5為非零元素-5,前面距離最近非零元素為元素3,因此元素5的run值為1;元素6、7、8為零元素,因此它們的run值為“無效”;由于元素5為本組的最后一個非零元素,后面有3個零元素,因此更新當前的lastrun為3;本次處理得到的run值(本實施例中用符號*表示“無效”)為(0,*,1,*,1,*,*,*)24)將本組8個殘差元素的level值、map值和run值分別存入level_Seq[164]、map_Seq[164]和run_Seq[164]的第1至8個位置第二次從Seq[164]中提取的8個殘差元素為(-4,2,0,0,1,0,0,0)其level值為(-4,2,0,0,1,0,0,0)
其map值為(1,1,0,0,1,0,0,0)由于此時上次的lastrun為3,因此其run值為(3,0,*,*,2,*,*,*)重新計算當前8個殘差元素中最后一個非零元素后面的連續(xù)零元素個數(shù)lastrun,得到3;將算出的level值、map值和run值分別存入序列l(wèi)evel_Seq[164]、map_Seq[164]和run_Seq[164]的第9至16個位置。
以次類推,經(jīng)過8次上述步驟,所有殘差元素的level值、map值和run值均已求出,并存入level_Seq[164]、map_Seq[164]和run_Seq[164],它們存儲的數(shù)據(jù)分別為(10,0,8,0,-5,0,0,0,-4,2,0,0,1,0,0,0,0,-1,0,0,1,0,…,0)(1,0,1,0,1,0,0,0,1,1,0,0,1,0,0,0,0,1,0,0,1,0,…,0)(0,*,1,*,1,*,*,*, 3,0,*,*,2,*,*,*,*,4,*,*,2,*,…,*)至此,完成了本實施例對一個殘差矩陣的掃描。用實際電路實現(xiàn)上述掃描方法,則掃描過程一共使用16個時鐘周期。如果以增加硬件復(fù)雜度為代價增大Q的值,則可以進一步減少所用時鐘周期數(shù)。與此對照,采用傳統(tǒng)的掃描方式至少需要64個時鐘周期完成掃描。
上述結(jié)果證明,本發(fā)明提出的視頻編碼中對殘差矩陣的快速掃描方法可以極大的節(jié)省掃描過程所需要的時鐘周期數(shù)。
本發(fā)明方法并不局限于上述的具體實施例,本領(lǐng)域的技術(shù)人員在本發(fā)明公開的技術(shù)方案內(nèi)采取等同或相似的掃描方式,都應(yīng)屬于本發(fā)明的保護范圍。
權(quán)利要求
1.一種視頻編碼中對殘差矩陣的快速掃描方法,其特征在于,該方法包括將二維殘差矩陣的元素按照預(yù)先設(shè)定的映射方式并行存入一個一維序列;從該一維序列中每次順序提取多個殘差元素,并行計算出該多個殘差元素的level值、map值和run值,并分別存儲。
2.如權(quán)利要求1所述的方法,其特征在于,具體包括以下步驟1)每次讀取大小為N×M的待掃描殘差矩陣中的P個元素,按照預(yù)先設(shè)定的掃描順序以及殘差矩陣的讀取方式所共同決定的映射方式存入一個一維序列Seq[1N×M]中,直到所有殘差元素將Seq[1N×M]填滿為止,其中,P為同時讀取的殘差矩陣元素的個數(shù),N為殘差矩陣垂直方向元素的個數(shù),M為殘差矩陣水平方向元素的個數(shù);2)每次從一維序列Seq[1N×M]中順序提取Q個殘差元素,同時計算這Q個殘差元素各自的level值、map值和run值,并分別存儲,直到處理完Seq[1N×M]中所有殘差元素,其中,Q為同時提取的殘差矩陣元素的個數(shù);所述步驟2)中的處理具體包括以下步驟21)用每個殘差元素的值作為該元素對應(yīng)的level值;22)若該殘差元素值為0,則對應(yīng)的map值為第1個符號值,否則為第2個符號值;23)并行計算每個殘差元素對應(yīng)的run值;24)將得出的level值、map值和run值分別存儲。
3.如權(quán)利要求2所述的方法,其特征在于,所述步驟23)中,利用上次處理得到的lastrun并行計算每個殘差元素對應(yīng)的run值,其中,lastrun為同時處理的Q個殘差元素中最后出現(xiàn)的連續(xù)零元素個數(shù),若最后一個殘差元素為非零元素,則lastrun為0;該上次處理得到的lastrun為上一組Q個殘差元素中最后出現(xiàn)的連續(xù)零元素個數(shù),計算第一組Q個殘差元素時lastrun取0;步驟23)的處理具體包括以下步驟231)若第1個殘差元素為零,則其run值為“無效”,否則其run值為上次的lastrun;232)若第i個殘差元素為零,i=2,3…,Q,則其run值為“無效”,否則若第i個殘差元素前面有非零元素且與其距離最近的非零元素為第j個殘差元素,j=1,2…,i-1,則其run值為i-j-1,否則其run值為i-1+lastrun;233)重新計算當前Q個殘差元素中最后一個非零元素后面的連續(xù)零元素個數(shù)lastrun,如果Q個殘差元素均為零元素,則當前的lastrun等于上次的lastrun與Q之和。
4.如權(quán)利要求1所述的方法,其特征在于,所述步驟中1)中,預(yù)先設(shè)定的掃描順序包含但并不限于各種視頻編碼標準中采用的Zig-Zag掃描順序,MPEG-2等標準中采用的Alternate-Horizontal、Alternate-Vertical掃描順序;所述的殘差矩陣的讀取方式包括逐行讀取、逐列讀取以及逐象素讀取方式。
5.如權(quán)利要求1所述的方法,其特征在于,所述步驟2)中,一次同時提取的數(shù)據(jù)個數(shù)Q滿足N×M為Q的整倍數(shù)。
全文摘要
本發(fā)明涉及一種視頻編碼中對殘差矩陣的快速掃描方法,屬于信號處理中的視頻編碼領(lǐng)域。該方法包括將二維殘差矩陣的元素按照預(yù)先設(shè)定的映射方式并行地存入一個一維序列;從該一維序列中逐次順序提取多個殘差元素,計算每個殘差元素的level值、map值和run值,并分別存儲。本發(fā)明在掃描殘差矩陣的過程中,可并行高效讀取殘差矩陣元素,并行地完成數(shù)據(jù)的計算和信息的提取,快速得到所需的掃描結(jié)果,從而大大減少整個掃描過程的時間代價,提高編碼器編碼速度,有助于實現(xiàn)高分辨率下的實時編碼。
文檔編號H04N7/24GK101039430SQ20071009899
公開日2007年9月19日 申請日期2007年5月8日 優(yōu)先權(quán)日2007年5月8日
發(fā)明者安達, 佟欣, 李宇, 何蕓 申請人:清華大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1