專利名稱:一種低復(fù)雜度整數(shù)4×4離散余弦變換量化裝置及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)字電視圖像處理中數(shù)字視頻的編解碼技術(shù)和芯上系統(tǒng)(SOC,System on Chip)技術(shù)領(lǐng)域,尤其是涉及一種低復(fù)雜度整數(shù)4×4離散余弦變換量化裝置及其實(shí)現(xiàn)方法。
背景技術(shù):
高效的視頻編解碼技術(shù)是實(shí)現(xiàn)多媒體數(shù)據(jù)存儲(chǔ)與傳輸?shù)年P(guān)鍵,先進(jìn)的視頻編解碼技術(shù)通常以標(biāo)準(zhǔn)的形式進(jìn)行規(guī)定。目前,典型的視頻壓縮標(biāo)準(zhǔn)有國(guó)際標(biāo)準(zhǔn)化組織(ISO)下設(shè)的運(yùn)動(dòng)圖像專家組(MPEG,Moving Picture Expert Group)推出的系列國(guó)際標(biāo)準(zhǔn),國(guó)際電信聯(lián)盟(ITU)提出的國(guó)際電信聯(lián)盟最新視頻編解碼標(biāo)準(zhǔn)H.26x系列視頻壓縮標(biāo)準(zhǔn),以及ISO和ITU建立的聯(lián)合視頻工作組JVT(Joint VideoTeam)正在制定的JVT視頻編碼標(biāo)準(zhǔn)等。JVT標(biāo)準(zhǔn)采用的是一種新型的編碼技術(shù),它比現(xiàn)存的任何一種編碼標(biāo)準(zhǔn)的壓縮效率都高的多。JVT標(biāo)準(zhǔn)在ISO中的正式名稱是MPEG-4標(biāo)準(zhǔn)的第十部分,在ITU中的正式名稱是H.264標(biāo)準(zhǔn)。
變換和量化是實(shí)現(xiàn)視頻編、解碼的關(guān)鍵技術(shù),如果沒(méi)有變換和量化,任何視頻編、解碼標(biāo)準(zhǔn)的應(yīng)用都幾乎是不可能的。引入變換的根本原因就是提高壓縮效率,(上述標(biāo)準(zhǔn)和相關(guān)的現(xiàn)有技術(shù)中關(guān)于技術(shù)變換和量化技術(shù)的出處、技術(shù)狀況和存在的主要問(wèn)題是什么?)由于離散余弦變換(DCT)最接近卡文羅夫(Karhunen-Loeve)變換,所以目前國(guó)際通用的圖像和視頻壓縮編解碼標(biāo)準(zhǔn)幾乎都采用了這種變換方法,但這種傳統(tǒng)的DCT變換方法中存在數(shù)據(jù)飄移問(wèn)題,造成編、解碼端的不匹配,從算法上看,采用乘法,使得硬件實(shí)現(xiàn)和應(yīng)用復(fù)雜和困難,復(fù)雜度較高。
在最新H.264/AVC建議/標(biāo)準(zhǔn)中則采用了類似于DCT的整數(shù)4×4變換,但是,H.264/AVC中所采用的整數(shù)4×4變換陣,它的每行的絕對(duì)值的和不相等,而且每行的模相差很大,這就不利于將解碼端的縮放放到編碼端進(jìn)行,不能減少解碼端的運(yùn)算復(fù)雜度和解碼的時(shí)間開(kāi)銷;另外,在H.264/AVC中所采用的量化方法,量化和反量化分別使用了6個(gè)2維4×4表,讀取量化表和反量化表的時(shí)間開(kāi)銷以及數(shù)據(jù)的存儲(chǔ)開(kāi)銷都較大。
發(fā)明內(nèi)容
為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種低復(fù)雜度整數(shù)4×4離散余弦變換量化裝置及其實(shí)現(xiàn)方法,使DCT變換中浮點(diǎn)運(yùn)算編碼端和解碼端相匹配。
本發(fā)明的另一個(gè)目的在于提供一種低復(fù)雜度整數(shù)4×4離散余弦變換量化裝置及其實(shí)現(xiàn)方法,降低變換的運(yùn)算復(fù)雜度。
為了完成上述發(fā)明任務(wù),本發(fā)明采用的總體技術(shù)方案是一種低復(fù)雜度整數(shù)4×4離散余弦變換量化裝置,包括幀內(nèi)預(yù)測(cè)模塊、熵編碼模塊、環(huán)形濾波電路、幀緩存,還包括正變換模塊,用于對(duì)幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)模塊產(chǎn)生的殘差系數(shù)矩陣進(jìn)行4×4行列變換,其輸入端連接運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)或幀內(nèi)預(yù)測(cè)模塊的輸出端,輸出端連接縮放模塊;縮放模塊,用于對(duì)正變換模塊輸出的變換矩陣進(jìn)行統(tǒng)一歸一化處理;
量化模塊,用于將縮放后得到的中間結(jié)果矩陣進(jìn)行量化,其輸出端連接縮放模塊的輸入端和熵編碼模塊;反量化模塊,用于將量化后矩陣反量化,反量化模塊輸入端與縮放模塊縮放輸出端連接,其反量化矩陣輸出端與反變換模塊的輸入端連接;反變換模塊,用于對(duì)反量化輸出的圖像參數(shù)矩陣反變換,反變換模塊輸出端連接到環(huán)形濾波和幀緩存。
一種低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,包括以下步驟步驟1正變換模塊對(duì)幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)殘差矩陣做水平方向整數(shù)4×4離散余弦行變換,并做豎直方向列變換;步驟2縮放模塊對(duì)正變換模塊變換后的矩陣的模進(jìn)行歸一化處理;步驟3縮放模塊將經(jīng)歸一化處理后得到的結(jié)果矩陣的運(yùn)算位右移,并將運(yùn)算位限制在一定位數(shù)之內(nèi);步驟4量化模塊在編碼端和解碼端用一個(gè)一維數(shù)組對(duì)經(jīng)過(guò)縮放的變換矩陣進(jìn)行量化,并向熵編碼模塊輸出量化后的結(jié)果矩陣;步驟5反量化模塊在編碼端和解碼端用一個(gè)一維數(shù)組對(duì)量化后的變換矩陣進(jìn)行反量化;步驟6反變換模塊對(duì)反量化后的矩陣的列和行進(jìn)行反變換。
所述步驟1進(jìn)一步包括步驟11、正變換模塊接收幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè)模塊殘差系數(shù)矩陣;步驟12、正變換模塊將核心變換矩陣分解為相乘的兩個(gè)矩陣,用第一個(gè)矩陣左乘圖像參數(shù)殘差矩陣,再用第二個(gè)矩陣左乘第一個(gè)矩陣左乘圖像預(yù)測(cè)殘差系數(shù)矩陣后的矩陣,得到中間結(jié)果矩陣;步驟13、正變換模塊將得到的中間結(jié)果矩陣右乘第一個(gè)矩陣的轉(zhuǎn)秩矩陣,再將右乘得到的矩陣右乘第二個(gè)矩陣;步驟14、正變換模塊將正變換結(jié)果矩陣輸出到縮放模塊。
所述步驟11中的核心變換矩陣為222231-1-32-2-2-21-33-1]]>所述步驟12中的第一個(gè)矩陣和第二個(gè)矩陣為第一個(gè)矩陣220000132-20000-31]]>第二個(gè)矩陣1001011001-10100-1]]>所述步驟1中的水平方向整數(shù)4×4變換后的每一行運(yùn)算位為12位,它包括變換矩陣的行位數(shù)3位和殘差位數(shù)9位。
所述步驟1中豎直方向列變換后運(yùn)算位為15位。
所述步驟2中對(duì)變化后的矩陣的模進(jìn)行統(tǒng)一的歸一化處理具體為將組成矩陣的各元素分別去除它所在的行或列的各個(gè)元素經(jīng)平方再開(kāi)方的值,使每一行或列的模都等于1。
所述步驟3中的運(yùn)算位限制位數(shù)為16位。
所述步驟4中的量化具體包括步驟41、針對(duì)某一量化步長(zhǎng),根據(jù)公式Q(i)=32768/2i/8確定其相對(duì)應(yīng)的量化參數(shù),并保存在一個(gè)一維的量化表中;
步驟42、將經(jīng)過(guò)縮放處理后所得到的中間結(jié)果矩陣Y’乘以相對(duì)應(yīng)的量化參數(shù);步驟43、再將上述結(jié)果矩陣的運(yùn)算位右移,使得最終的結(jié)果矩陣運(yùn)算位保持在16位以下。
所述步驟5中的反量化的步驟具體包括步驟51、針對(duì)量化時(shí)所采用的某一量化步長(zhǎng),根據(jù)公式IQ_TAB[64]=32768×2qp/8確定其相對(duì)應(yīng)的反量化參數(shù),并保存在一個(gè)一維的反量化表中;步驟52、將經(jīng)過(guò)熵解碼處理后所得到的量化矩陣Y”乘以相對(duì)應(yīng)的反量化參數(shù);步驟53、再將上述結(jié)果矩陣運(yùn)算位右移,使得最終的結(jié)果矩陣的運(yùn)算位保持在16位以下。
所述步驟6中的反變換具體包括以下步驟步驟61、反變換模塊將核心變換矩陣的轉(zhuǎn)秩矩陣分解為兩個(gè)相乘的第一矩陣轉(zhuǎn)秩矩陣和第二矩陣轉(zhuǎn)秩矩陣,用第二矩陣轉(zhuǎn)秩矩陣左乘反量化后的矩陣,再用第一矩陣轉(zhuǎn)秩矩陣左乘得到的矩陣,得到乘積矩陣;步驟62、反變換模塊將得到的上述乘積矩陣的轉(zhuǎn)秩矩陣再右乘第二矩陣和第一矩陣,得到最后的結(jié)果矩陣。
本發(fā)明有顯著的優(yōu)點(diǎn)和積極效果,本發(fā)明采用不同于現(xiàn)有技術(shù)的的核心變換矩陣,對(duì)變換矩陣中每行的模作了歸一化處理,采用整數(shù)4×4離散余弦變換陣,每行的絕對(duì)值的和都等于8,第一、三行的模為 第二、四行的模等于 相差很小,有利于將解碼端的縮放放到編碼端進(jìn)行,減少了解碼端的運(yùn)算復(fù)雜度和解碼的時(shí)間開(kāi)銷,因此,在量化端和反量化端分別只需要一個(gè)一維數(shù)組即可完成不同級(jí)別的量化、反量化,這就使得量化和反量化所需的存儲(chǔ)空間大大降低,大大減少了時(shí)間開(kāi)銷和存儲(chǔ)開(kāi)銷。本發(fā)明在性能上克服了傳統(tǒng)的DCT變換方法中存在的數(shù)據(jù)飄移的缺陷,避免了編、解碼端不匹配的問(wèn)題,在方法,本發(fā)明用3以內(nèi)的系數(shù)矩陣實(shí)現(xiàn)低復(fù)雜度、低存儲(chǔ)開(kāi)銷的整數(shù)變換,使得軟件與硬件的實(shí)現(xiàn)復(fù)雜度均較低。完全取消了乘法,只采用加法和移位,使得硬件實(shí)現(xiàn)和應(yīng)用更加方便和容易,并將計(jì)算結(jié)果限制在16Bit之內(nèi),降低了運(yùn)算復(fù)雜度,尤其適合低端處理器。
圖1是本發(fā)明的主要功能模塊圖;圖2是本發(fā)明的方法流程圖;圖3是正變換快速DCT計(jì)算示意圖;圖4是反變換快速DCT計(jì)算示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
請(qǐng)參閱圖1,本發(fā)明的一種低復(fù)雜度整數(shù)離散余弦變換量化裝置,包括幀內(nèi)預(yù)測(cè)模塊;熵編碼模塊;環(huán)形濾波電路;幀緩存;用于對(duì)幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)模塊產(chǎn)生的殘差數(shù)據(jù)塊進(jìn)行行、列整數(shù)4×4變換的正變換模塊,其輸入端連接幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)模塊的殘差系數(shù)矩陣輸出端,輸出端連接縮放模塊;用于對(duì)正變換模塊輸出的變換矩陣進(jìn)行統(tǒng)一歸一化處理的縮放模塊;用于將縮放后得到的中間結(jié)果矩陣進(jìn)行量化的量化模塊,其輸出端連接縮放模塊的輸入端和熵編碼模塊;用于將量化后矩陣反量化的反量化模塊,反量化模塊輸入端與縮放模塊縮放輸出端連接,其反量化矩陣輸出端與反變換模塊的輸入端連接;用于對(duì)反量化輸出的圖像參數(shù)矩陣反變換的反變換模塊,反變換模塊輸出端連接到環(huán)形濾波和幀緩存。
編碼時(shí),對(duì)于幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)殘差,進(jìn)行如下的4×4變換Y=CfXCfT⊗Ef=(222231-1-32-2-221-33-1×232121-2-32-1-232-32-1)⊗a2aba2ababb2abb2a2aba2ababb2abb2]]>CfXCfT是二維變換的核心部分,Ef是縮放系數(shù)矩陣。運(yùn)算符表示每一個(gè)變換后的系數(shù)分別與矩陣Ef中相同位置的縮放因子相乘,它是標(biāo)量乘法而不是矩陣乘法。這里a,b分別為Cf第一行與第二行系數(shù)的模的倒數(shù)。
對(duì)于Y、U、V信號(hào)采用8位精度表示,因?yàn)檩斎刖仃囀穷A(yù)測(cè)誤差,因此需要9位來(lái)表示,變換矩陣每一行絕對(duì)值之和的最大值為8,因此,對(duì)于變換后的矩陣元素需要9+log28×8=15位來(lái)表示。在進(jìn)行了二維核心變換CfXCfT后,縮放過(guò)程是和量化相結(jié)合的,這樣就減少了運(yùn)算量,降低了運(yùn)算復(fù)雜度。
請(qǐng)參閱圖2本發(fā)明的方法流程圖。本發(fā)明的一種整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,主要包下述步驟第一步、正變換模塊對(duì)幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)后殘差數(shù)據(jù)塊做水平方向整數(shù)4×4離散余弦行變換,并做豎直方向列變換;正向行變換時(shí)首先對(duì)幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)后殘差系數(shù)矩陣做水平方向的整數(shù)4×4離散余弦變換。從上述矩陣公式可以知道,核心變換矩陣[A]的每行的絕對(duì)值最大和為8,由于核心變換陣每行的模不為1,這樣完成一次完整的行變換,就相當(dāng)于用原始的DCT變換陣做一次完整的行變換后,再左移log28=3Bit,再加上原來(lái)存儲(chǔ)殘差的9Bit,就會(huì)需要9+3=12Bit的運(yùn)算位。做完行變換后,緊接著開(kāi)始做豎直方向的列變換,方法同正向行變換。因此,列變換完成后,運(yùn)算位會(huì)增加到15Bit。
如下面公式所示,其中,Y為變換后的陣,X為輸入的殘差陣,A為核心變換陣,B、E為A的分解陣。
Y=AXAT=(222231-1-32-2-221-33-1×232121-2-32-1-232-32-1)⊗a2aba2ababb2abb2a2aba2ababb2abb2]]>[A]=[B]×[E]其中,A,B,E定義如下所示[A]=222231-1-32-2-221-33-1,]]>[B]=220000132-20000-31,]]>[C]=1001011001-10100-1,]]>[B]T=202020-20010-30301,]]>[C]T=1001011001-10100-1]]>[A]=[B]×[C]=222231-1-32-2-221-33-1=220000132-20000-31×1001011001-10100-1]]>1、首先設(shè)接收幀內(nèi)預(yù)測(cè)或運(yùn)動(dòng)矢量預(yù)測(cè)模塊輸出的圖像參數(shù)為[X]=[x1,x2,x3,x4]T;2、再將核心變換矩陣[A]分解[B]×[C],并用[C]、[B]先后左乘[X]。先計(jì)算[C]×[X],設(shè)得到的中間結(jié)果為[G]=[g1,g2,g3,g4]T,這是用加法實(shí)現(xiàn)的。其中,g1=x1+x4,g2=x2+x3,g3=x2-x3,g4=x1-x4。接著,再計(jì)算[B]×[G],設(shè)得到的結(jié)果為[V]=[v1,v2,v3,v4]T,這是用加法和移位實(shí)現(xiàn)的,先將g1,g2左移1位,再相加,得到v1、v3其中,v1=2×(g1+g2);v3=2×(g1-g2);再將g3、g4作如下處理
先計(jì)算v2,將g4左移一位,得到2×g4,再加上g4、g3,得到v2,即v2=2×g4+g4+g3。再計(jì)算v3,將g3左移一位,得到2×g3,然后取反,再加上-g3,g4,得到v4,即v4=g4-2×g3-g3;3、將得到的中間結(jié)果矩陣[V]=[v1,v2,v3,v4]T再右乘[C]T、[B]T,得到最后的變換結(jié)果矩陣[Y]=[y1,y2,y3,y4]。具體算法如下先計(jì)算[V]×[C]T,設(shè)得到的中間結(jié)果為[H]=[h1,h2,h3,h4],這一步完全是用加法實(shí)現(xiàn)的。此時(shí),設(shè)[V]=[v1’,v2’,v3’,v4’],這樣就將[V]的表現(xiàn)形式,由第一、第二步的行向量的表現(xiàn)形式改為列向量表現(xiàn)形式。
這樣得到[H]h1=v1’+v4’;h2=v2’+v3’;h3=v2’-v3’;h4=v1’-v4’。
然后,再計(jì)算[H]×[B]T,這一步是用加法和移位實(shí)現(xiàn)的。先將h1、h2各左移一位,然后相加,得到y(tǒng)1、y3y1=2×(h1+h2)y3=2×(h1-h3)然后再將h4左移一位后,與h3相加,得到y(tǒng)2;將h3左移一位后,與h4相加,得到y(tǒng)4y2=2×h4+h4+h3y4=-2×h3-h3+h4正變換的快速DCT算法如圖3所示。
第二步、縮放模塊對(duì)將解碼端反變換的縮放歸到編碼端的正變換處進(jìn)行歸一化處理,處理完成后,即可進(jìn)行量化。
針對(duì)變換完成后的矩陣Y,在量化之前首先會(huì)有一個(gè)縮放的過(guò)程。目的是將所有行的模都作了歸一化的處理,使得將來(lái)量化時(shí),只需要一個(gè)一維數(shù)組即可完成不同級(jí)別的量化。縮放完成后,運(yùn)算位會(huì)恢復(fù)到11Bit??s放的公式如下所示Scale2(i,j)=norm(A(1,))×norm(A(1,))×norm(A(1,))×norm(A(1,))×32768/(norm(A(i,))×norm(A(j,))×norm(A(j,))×norm(A(i,)))Y’(i,j)=abs(Y(i,j))×Scale2(i,j)>>19其中Scale2(i,j)為變換當(dāng)前塊所需的縮放因子,(i,j)表示4×4陣中相應(yīng)的位置,i=1,2,3,4;j=1,2,3,4;norm(A(i,))和norm(A(j,))表示第i行或第j行的模。在量化之前,對(duì)Y中各位置的元素按公式③進(jìn)行歸一化處理,歸一化處理具體是指將組成矩陣的各元素分別去除它所在的行或列的各個(gè)元素平方之和再開(kāi)方的值,這樣,使每一行或列的模都等于1,從而達(dá)到了模的歸一化。Y,為進(jìn)行縮放處理后所得到的中間結(jié)果。
第三步、由于在縮放中的放大處理,使得運(yùn)算位超出了16Bit,因此,必須做出相應(yīng)處理,將運(yùn)算位限制在16Bit之內(nèi)。右移后,運(yùn)算結(jié)果保持11Bit。
第四步、量化模塊在編碼端和解碼端用一個(gè)一維數(shù)組對(duì)經(jīng)過(guò)縮放的變換矩陣進(jìn)行量化。量化的具體步驟是首先針對(duì)某一量化步長(zhǎng),根據(jù)公式Q(i)=32768/2i/8確定其相對(duì)應(yīng)的量化參數(shù),并保存在一個(gè)一維的量化表中,然后將經(jīng)過(guò)縮放處理后所得到的中間結(jié)果矩陣Y’乘以相對(duì)應(yīng)的量化參數(shù);最后,再將上述結(jié)果運(yùn)算位右移,使得最終的結(jié)果的運(yùn)算位保持在16位以下。
本發(fā)明采用的是0~63的量化機(jī)制,并且在量化前都已經(jīng)做了歸一化處理,因此,量化時(shí),只需要一個(gè)一維數(shù)組即可完成不同級(jí)別的量化。
其中,向量化步長(zhǎng)為2i/8,i=0,...,63;所以量化表可以用下式表示Q(i)=32768/2i/8;i=0,...,63;這樣,量化就采用下式進(jìn)行
Y”=Y(jié)’×Q(i)>>15。
第五步、反量化模塊在編碼端和解碼端用一個(gè)一維數(shù)組對(duì)量化后的變換矩陣進(jìn)行反量化。反量化的步驟是首先針對(duì)量化時(shí)所采用的某一量化步長(zhǎng),根據(jù)公式IQ_TAB[64]=32768×2qp/8,確定其相對(duì)應(yīng)的反量化參數(shù),并保存在一個(gè)一維的反量化表中,然后將經(jīng)過(guò)熵解碼處理后所得到的量化矩陣Y”乘以相對(duì)應(yīng)的反量化參數(shù),最后,再將上述結(jié)果矩陣的運(yùn)算位右移,使得最終的結(jié)果矩陣的運(yùn)算位保持在16位以下。
反量化按如下公式進(jìn)行Y=(Y”×IQ_TAB[qp])>>IQ_SHIFT[qp];其中,IQ_TAB[64]=32768×2qp/8,qp=0,...,63;IQ_SHIFT[64]={14,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,9, 9, 9, 9, 9, 9, 9,9, 8, 8, 8, 8, 8, 8, 8,7, 7, 7, 7, 7, 7, 7, 7};其中,IQ_TAB[qp]是反量化表,IQ_SHIFT[64]是移位表。
第六步、反變換模塊對(duì)反量化后的矩陣的列和行進(jìn)行反變換。反量化模塊的輸出,就是反變換模塊的輸入。反變換過(guò)程和變換過(guò)程相反,也是分別針對(duì)行和列進(jìn)行處理。具體方法如下1、設(shè)反量化模塊輸出的圖像參數(shù)[Y]=[y1,y2,y3,y4]T,反變換的輸出圖像參數(shù)為[X]=[x1,x2,x3,x4];這樣,[X]=[A]TY[A];
2、將變換矩陣[A]T分解[C]T×[B]T,然后用[B]T,[C]T先后左乘[Y]。
(1)首先計(jì)算[B]T×[Y],設(shè)得到的中間結(jié)果為[M]=[m1,m2,m3,m4]T,這是用加法和移位實(shí)現(xiàn)的。先將y1,y2左移1位,再相加,得到m1、m2其中,m1=2×(y1+y3);m2=2×(y1-y3);再將y2,、y4作如下處理先計(jì)算m3,將y4左移一位,得到2×y4,再加上g4、g3,得到m3,即m3=y(tǒng)2-2×y4-y4。再計(jì)算m4,將y2左移一位,得到2×y2,再加上y2、y4,得到m4,即m4=2×y2+y2+y4。
(2)接著,再計(jì)算[C]T×[M],設(shè)得到的結(jié)果為[U]=[u1,u2,u3,u4]T,這是用加法實(shí)現(xiàn)的u1=m1+m4,u2=m2+m3,u3=m2-m3,u4=m1-m4。
3、將得到的中間結(jié)果矩陣[M]=[m1,m2,m3,m4]T再右乘[B],[C],得到最后的結(jié)果矩陣[X]=[x1,x2,x3,x4]。具體方法如下(1)、先計(jì)算[M]×[B],設(shè)得到的中間結(jié)果為[z]=[z1,z2,z3,z4],這一步是用加法和移位實(shí)現(xiàn)的。此時(shí),設(shè)[M]=[m1’,m2’,m3’,m4’],這樣就將[M]的表現(xiàn)形式由第二步的行向量的表現(xiàn)形式改為列向量表現(xiàn)形式。
首先,將m1’,m3’左移一位,這樣得到z1=2(m1’+m3’);z2=2(m1’-m3’);然后,將m4’左移一位,再與m2相加,得到z3z3=m2’-2*m3’-m3’最后,將m2’左移一位,再與m4’相加,得到z4z4=2*m2’+m2’+m4’(2)、再計(jì)算[Z]×[C],這樣可以得到最終的結(jié)果[X],這一步是完全是用加法實(shí)現(xiàn)的,其中x1=z1+z4x2=z2+z3x3=z2-z3x4=z1-z4由于在變換時(shí)每次行變換都左移了3Bit,因此在反變換中要右移3Bit。反變換中的列變換也作相應(yīng)的處理。這樣,完成一次完整的反變換,要右移6Bit,此時(shí),運(yùn)算位達(dá)到6Bit。但由于在作一致性量化處理時(shí),每行的模被作了縮小的處理,因此,在這里要針對(duì)不同位置的元素給予相應(yīng)的放大恢復(fù)。在公式Y(jié)=CfXCfT⊗Ef=(222231-1-32-2-221-33-1×232121-2-32-1-232-32-1)⊗a2aba2ababb2abb2a2aba2ababb2abb2]]>中分三種情況給予放大處理1、如果是針對(duì)a2位置的元素,那么應(yīng)該放大16×16倍,這樣,運(yùn)算位達(dá)到log2256+6=14Bit,接著再進(jìn)行右移5位的處理,最后將數(shù)據(jù)恢復(fù)到14-5=9Bit;2、如果是針對(duì)ab位置的元素,那么應(yīng)該放大16×20倍,這樣,運(yùn)算位達(dá)到log2320+6=14.32Bit,接著再進(jìn)行右移5位的處理,最后將數(shù)據(jù)恢復(fù)到14.32-5=9.32Bit;3、如果是針對(duì)b2位置的元素,那么應(yīng)該放大20×20倍,這樣,運(yùn)算位達(dá)到log2400+6=14.644Bit,接著再進(jìn)行右移5位的處理,最后將數(shù)據(jù)恢復(fù)到14.644-5=9.644Bit。
反變換的快速DCT蝶形算法如圖4所示。
表1是各個(gè)步驟運(yùn)算時(shí)和運(yùn)算后的運(yùn)算位的跟蹤和統(tǒng)計(jì)表,該表顯示了不同操作時(shí),數(shù)據(jù)位的動(dòng)態(tài)變化和最終的運(yùn)算位。
表1數(shù)據(jù)位變化表
以上實(shí)施例僅用以說(shuō)明而非限制本發(fā)明的技術(shù)方案,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解可以對(duì)本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1一種低復(fù)雜度整數(shù)4×4離散余弦變換量化裝置,包括幀內(nèi)預(yù)測(cè)模塊、熵編碼模塊、環(huán)形濾波電路、幀緩存,其特征在于,該裝置還包括正變換模塊,用于對(duì)幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)模塊產(chǎn)生的殘差系數(shù)矩陣進(jìn)行4×4行列變換,其輸入端連接運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)或幀內(nèi)預(yù)測(cè)模塊存儲(chǔ)殘差的殘差數(shù)據(jù)矩陣輸出端,輸出端連接縮放模塊;縮放模塊,用于對(duì)正變換模塊輸出的變換矩陣進(jìn)行統(tǒng)一歸一化處理;量化模塊,用于將縮放后得到的中間結(jié)果矩陣進(jìn)行量化,其輸出端連接縮放模塊的輸入端和熵編碼模塊;反量化模塊,用于將量化后矩陣反量化,反量化模塊輸入端與縮放模塊縮放輸出端連接,其反量化矩陣輸出端與反變換模塊的輸入端連接;反變換模塊,用于對(duì)反量化輸出的圖像參數(shù)矩陣反變換,反變換模塊輸出端連接到環(huán)形濾波和幀緩存。
2.一種低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,包括以下步驟步驟1正變換模塊對(duì)幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)殘差數(shù)據(jù)塊做水平方向整數(shù)4×4離散余弦行變換,并做豎直方向列變換;步驟2縮放模塊對(duì)正變換模塊變換后的矩陣的模進(jìn)行歸一化處理;步驟3縮放模塊將經(jīng)歸一化處理后得到的結(jié)果矩陣的運(yùn)算位右移,并將運(yùn)算位限制在一定位數(shù)之內(nèi);步驟4量化模塊在編碼端和解碼端用一個(gè)一維數(shù)組對(duì)經(jīng)過(guò)縮放的變換矩陣進(jìn)行量化,并向熵編碼模塊輸出量化后的結(jié)果矩陣;步驟5反量化模塊在編碼端和解碼端用一個(gè)一維數(shù)組對(duì)量化后的變換矩陣進(jìn)行反量化;步驟6反變換模塊對(duì)反量化后的矩陣的列和行進(jìn)行反變換。
3.根據(jù)權(quán)利要求2所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟1進(jìn)一步包括步驟11、正變換模塊接收幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)模塊殘差系數(shù)矩陣;步驟12、正變換模塊將核心變換矩陣分解為相乘的兩個(gè)矩陣,用第一個(gè)矩陣左乘圖像參數(shù)殘差矩陣,再用第二個(gè)矩陣左乘第一個(gè)矩陣左乘圖像參數(shù)殘差矩陣后的矩陣,得到中間結(jié)果矩陣;步驟13、正變換模塊將得到的中間結(jié)果矩陣右乘第一個(gè)矩陣的轉(zhuǎn)秩矩陣,再將右乘得到的矩陣右乘第二個(gè)矩陣;步驟14、正變換模塊將正變換結(jié)果矩陣輸出到縮放模塊。
4.根據(jù)權(quán)利要求3所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟11中的核心變換矩陣為222231-1-32-2-221-33-1]]>
5.根據(jù)權(quán)利要求3所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟12中的第一個(gè)矩陣和第二個(gè)矩陣為第一個(gè)矩陣220000132-20000-31]]>第二個(gè)矩陣1001011001-10100-1]]>
6.根據(jù)權(quán)利要求2所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟1中的水平方向整數(shù)4×4變換后的每一行運(yùn)算位為12位,它包括變換矩陣的行位數(shù)3位和殘差位數(shù)9位。
7.根據(jù)權(quán)利要求2所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟1中豎直方向列變換后運(yùn)算位為15位。
8.根據(jù)權(quán)利要求2所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟2中對(duì)變化后的矩陣的模進(jìn)行統(tǒng)一的歸一化處理具體為將組成矩陣的各元素分別去除它所在的行或列的各個(gè)元素經(jīng)平方后相加再開(kāi)方的值,使每一行或列的模都等于1。
9.根據(jù)權(quán)利要求2所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟3中的運(yùn)算位限制位數(shù)為16位。
10.根據(jù)權(quán)利要求2所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟4中的量化具體包括步驟41、針對(duì)某一量化步長(zhǎng),根據(jù)公式Q(i)=32768/2i/8確定其相對(duì)應(yīng)的量化參數(shù),并保存在一個(gè)一維的量化表中;步驟42、將經(jīng)過(guò)縮放處理后所得到的中間結(jié)果矩陣Y乘以相對(duì)應(yīng)的量化參數(shù);步驟43、再將上述結(jié)果矩陣的運(yùn)算位右移,使得最終的結(jié)果矩陣運(yùn)算位保持在16位以下。
11.根據(jù)權(quán)利要求2所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟5中的反量化的步驟具體包括步驟51、針對(duì)量化時(shí)所采用的某一量化步長(zhǎng),根據(jù)公式IQ_TAB[64]=32768×2qp/8確定其相對(duì)應(yīng)的反量化參數(shù),并保存在一個(gè)一維的反量化表中;步驟52、將經(jīng)過(guò)熵解碼處理后所得到的量化矩陣Y”乘以相對(duì)應(yīng)的反量化參數(shù);步驟53、再將上述結(jié)果矩陣運(yùn)算位右移,使得最終的結(jié)果矩陣的運(yùn)算位保持在16位以下。
12.根據(jù)權(quán)利要求2所述的低復(fù)雜度整數(shù)4×4離散余弦變換量化實(shí)現(xiàn)方法,其特征在于,所述步驟6中的反變換具體包括以下步驟步驟61、反變換模塊將核心變換矩陣的轉(zhuǎn)秩矩陣分解為兩個(gè)相乘的第一矩陣轉(zhuǎn)秩矩陣和第二矩陣轉(zhuǎn)秩矩陣,用第二矩陣轉(zhuǎn)秩矩陣左乘反量化后的矩陣,再用第一矩陣轉(zhuǎn)秩矩陣左乘得到的矩陣,得到乘積矩陣;步驟62、反變換模塊將得到的上述乘積矩陣的轉(zhuǎn)秩矩陣再右乘第二矩陣和第一矩陣,得到最后的結(jié)果矩陣。
全文摘要
本發(fā)明是一種低復(fù)雜度整數(shù)4×4離散余弦變換量化裝置及其實(shí)現(xiàn)方法,包括幀內(nèi)預(yù)測(cè)模塊、熵編碼模塊、環(huán)形濾波電路、幀緩存、用于進(jìn)行行列變換的正變換模塊、用于對(duì)正變換模塊輸出的變換矩陣進(jìn)行歸一化處理的縮放模塊、量化模塊、反量化模塊、反變換模塊。正變換模塊對(duì)幀內(nèi)或幀間預(yù)測(cè)的圖像塊殘差系數(shù)矩陣做整數(shù)4×4離散余弦變換;縮放模塊對(duì)正變換后的矩陣的模進(jìn)行歸一化處理;右移變換矩陣運(yùn)算位,將運(yùn)算位限制在一定位數(shù)之內(nèi);量化模塊用一個(gè)一維數(shù)組對(duì)經(jīng)過(guò)縮放的變換矩陣進(jìn)行量化;反量化模塊對(duì)量化后的變換矩陣進(jìn)行反量化;反變換模塊對(duì)反量化后的矩陣的列和行進(jìn)行反變換。本發(fā)明克服了數(shù)據(jù)漂移、編解碼端不匹配等問(wèn)題,降低了運(yùn)算復(fù)雜度。
文檔編號(hào)G06F17/10GK1589017SQ200410062700
公開(kāi)日2005年3月2日 申請(qǐng)日期2004年8月6日 優(yōu)先權(quán)日2004年8月6日
發(fā)明者高文, 趙德斌, 馬思偉, 鄭玉 申請(qǐng)人:聯(lián)合信源數(shù)字音視頻技術(shù)(北京)有限公司