專利名稱:離散余弦變換系數(shù)的編碼方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻編碼技術(shù),特別涉及 一 種離散余弦變換(Discrete CosineTransform, DCT)系數(shù)的編碼方法、以及一種DCT系數(shù)的編碼裝置。
背景技術(shù):
DCT系數(shù)由視頻圖像數(shù)據(jù)中Y、U、V分量(如果是黑白圖像則僅存在Y分量)計算 得到的頻率數(shù)據(jù),用于表征視頻圖像數(shù)據(jù)的光照強度變化情形。如圖l所示,每個DCT系 數(shù)為一個8X8的矩陣,8列元素從左到右依次對應(yīng)水平方向上逐漸升高的光照強度變化頻 率,8行元素從上至下依次對應(yīng)豎直方向上逐漸升高的光照強度變化頻率,在每個8X8的 矩陣中,第一行第一列的元素為l個直流(DC)分量(如圖1中陰影塊所示),其對應(yīng)水平方 向和豎直方向最低的光照強度變化頻率,而其余63個元素均為交流(AC)分量(如圖1中 空白塊所示)。水平方向上逐漸升高的光照強度變化頻率所導(dǎo)致的黑白像素分布狀態(tài)由圖 2a 圖2d順序示出;豎直方向上逐漸升高的光照強度變化頻率所導(dǎo)致的黑白像素分布狀 態(tài)由圖3a 圖3d順序示出。 對于普通常見的場景,63個AC分量中的高頻AC分量一般較弱;另外,人的視覺特 性決定了人眼對高頻的成分敏感度較低。因此,對于現(xiàn)有技術(shù)通常會對63個AC分量采取一 些措施來去除或大幅減弱高頻AC分量,而不會導(dǎo)致被人眼察覺。例如,利用量化表對8X8 矩陣的DCT系數(shù)進行量化處理,該量化表中對應(yīng)高頻AC分量的量化系數(shù)都比較大,那么,經(jīng) 量化后的8X8矩陣DCT系數(shù)中,63個AC分量中的高頻AC分量的取值就會多數(shù)為0、甚至 全部等于0,例如,假定8X8矩陣中最后l行、最后1列的最高頻AC分量為40,其對應(yīng)的量 化系數(shù)為99,則在量化完之后該AC分量的取值會變?yōu)?0/99 = 0. 404,四舍五入取整后即 變?yōu)?。此后,再對量化后的DCT系數(shù)進行編碼后即可傳輸。 在編碼過程中,對于1個DC分量可以按照預(yù)設(shè)的DC分量哈夫曼表進行編碼,而對 于63個AC分量,則依據(jù)預(yù)設(shè)的AC分量哈夫曼表、并從DC分量開始按照之字形掃描順序依 次進行編碼,即從最低頻AC分量開始掃描至最高頻的AC分量結(jié)束,如圖4所示,折線箭頭 表示之字形掃描路徑,而表示AC分量的空白塊中的序號,則標(biāo)識了該AC分量在之字形掃 描中的順序,當(dāng)然,圖4所示的之字形掃描僅僅是舉例說明,現(xiàn)有技術(shù)中還可以采用其他方 式。按照之字形掃描順序?qū)?3個AC分量編碼的流程如圖5所示 步驟500,設(shè)置參數(shù)K,用于表示當(dāng)前掃描到的AC分量順序、并設(shè)置K的初始值為 0 ;設(shè)置參數(shù)R,用于表示連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)、并設(shè)置R的 初始值為O。 步驟501,掃描到下一個AC分量,令K = K+l。 步驟502,判斷第K個AC分量的取值ZZ (K)是否為0,如果是,則執(zhí)行步驟503,否 則執(zhí)行步驟506。 步驟503,判斷當(dāng)前掃描到的取值為0的AC分量是否為最后一個、即K是否等于 63,如果是,則執(zhí)行步驟505,否則執(zhí)行步驟504。
9
步驟504,暫不對當(dāng)前掃描到的取值為0的AC分量進行編碼,并對連續(xù)掃描到但未
進行編碼的取值為0的AC分量個數(shù)進行累加,令R = R+l,然后返回至步驟501。 步驟505,按照之字形掃描的最后一個AC分量的取值為0,即63個AC分量是以取
值為0的AC分量為結(jié)尾,按照AC分量哈夫曼表,在最后1個AC分量的取值為0時,只要最
后一個AC分量之前的連續(xù)若干AC分量的取值也均為O,則將結(jié)尾處連續(xù)的所有取值為O的
AC分量統(tǒng)一編碼為l個塊結(jié)束(End Of Block, EOB)碼字,然后結(jié)束流程。假設(shè),63個AC分量中,最后6個AC分量的取值順序為非零的任意值、0、0、0、0、
0,則末尾處連續(xù)出現(xiàn)的5個0編碼為1個EOB碼字。 步驟506,當(dāng)前掃描到的AC分量取值ZZ(K)為非零值,判斷該取值非零的AC分量 之前是否有多于15個連續(xù)的取值為0的AC分量未進行編碼,即R是否大于15,如果是,則 執(zhí)行步驟507,否則執(zhí)行步驟508。 步驟507,按照AC分量哈夫曼表,將連續(xù)16個取值為0的AC分量統(tǒng)一編碼為1個 零持續(xù)長度(Zero Run Length, ZRL)碼字,并從記錄的連續(xù)掃描到但未進行編碼的取值為 0的AC分量個數(shù)減去16,即令R = R-16,然后返回步驟506循環(huán)操作、直至取值非零的AC 分量之前的連續(xù)取值為0的AC分量個數(shù)不足16個。 假設(shè),前31個AC分量取值均為0、即R = 31,第32個則為非0,則先將前16個AC 分量統(tǒng)一編碼為1個ZRL碼字、并令R = 31-16 = 15,剩余第17 31個取值為0的AC分 量個數(shù)不足16個,從而經(jīng)步驟506再判斷后即可執(zhí)行步驟508。 步驟508,取值非零的AC分量之前的連續(xù)取值為0的AC分量個數(shù)不足16個,將該 取值非零的AC分量與之前不足16個的連續(xù)取值為0的AC分量統(tǒng)一編碼為一個對應(yīng)碼字, 然后執(zhí)行步驟509。 步驟509,當(dāng)前掃描到的取值非零的AC分量之前少于16個連續(xù)取值為0的AC分
量,已在步驟508與當(dāng)前掃描到的取值非零的AC分量一同編碼,因而對記錄的連續(xù)掃描到
但未進行編碼的取值為0的AC分量個數(shù)清零,即令R = O,然后執(zhí)行步驟510。 步驟510,判斷當(dāng)前掃描到的取值非零的AC分量是否為最后一個,如果是,則結(jié)束
本流程,否則返回步驟501。 至此,本流程結(jié)束。 上述流程雖然能夠?qū)崿F(xiàn)對63個AC分量的編碼,但卻存在如下問題
如前所述,量化處理后的DCT系數(shù)中,對應(yīng)越高的光照強度變化頻率的AC分量的 取值越有可能是0,那么,之字形掃描63個AC分量通常是以多個連續(xù)0結(jié)尾,因此,每組DCT 系數(shù)編碼后的結(jié)果中都會包含EOB碼字; 而且,量化處理后的DCT系數(shù)中,63個AC分量的取值多數(shù)為0、甚至全部等于0,因 此,每組DCT系數(shù)編碼后的結(jié)果中除了 DC分量的碼字之外,很有可能只包含EOB碼字。
由此,對連續(xù)組若干量化后的DCT系數(shù)編碼得到的碼流數(shù)據(jù)中,基本上會近似周 期性地交替出現(xiàn)DC分量的碼字和EOB碼字;進一步,對于一種極端的情況,即連續(xù)若干組量 化后的DCT系數(shù)中,63個AC分量取值都為O,那么參見圖6,對連續(xù)若干量化后的DCT系數(shù) 進行編碼所得到的碼流中,就會僅僅交替出現(xiàn)DC分量的碼字和EOB碼字。
更進一步,如果這些組的DC分量都相同,則會在碼流中出現(xiàn)某種周期性規(guī)律?;?者,考慮圖像中存在類似天空的這樣一種亮度均勻的場景,可能每組8X8矩陣完全相同,因此每組8 X 8矩陣DCT系數(shù)經(jīng)過DCT變換、量化后得到的DC分量、AC分量都完全相同(未 必63個AC分量都為0),因而得到的碼字也都完全一致,從而也會在碼流中出現(xiàn)某種周期性 規(guī)律。 這樣,碼流數(shù)據(jù)具有基本固定的周期性規(guī)律,而對于具有周期性規(guī)律的碼流數(shù)據(jù) 來說,其在通過USB接口從攝像頭芯片至PC機等電器設(shè)備之間的傳輸時,會導(dǎo)致碼流數(shù)據(jù) 傳輸?shù)碾姶鸥蓴_(Electromagnetic Interference,EMI)頻譜中具有大量的離散峰值,即導(dǎo) 致較強的EMI產(chǎn)生。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種DCT系數(shù)的編碼方法、以及一種DCT系數(shù)的編碼裝 置,能夠降低DCT系數(shù)編碼后的碼流數(shù)據(jù)所產(chǎn)生的EMI。 本發(fā)明提供的一種DCT系數(shù)的編碼方法,先對當(dāng)前DCT系數(shù)進行量化,然后對量化 后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,再以之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流 AC分量進行編碼,對于不以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),先將取值非0的 AC分量之前的連續(xù)取值為0的AC分量編碼為零持續(xù)長度ZRL碼字,再將剩余連續(xù)取值為0 的AC分量與取值非0的AC分量一起編碼; 該編碼方法為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)、用以隨機選擇對 當(dāng)前DCT系數(shù)中結(jié)尾處連續(xù)取值為0的AC分量的編碼方式,其中,對于以連續(xù)取值為0的 AC分量結(jié)尾的當(dāng)前DCT系數(shù),如果產(chǎn)生的是第一隨機數(shù),則將結(jié)尾處連續(xù)的所有取值為0的 AC分量統(tǒng)一編碼為塊結(jié)束EOB碼字;如果產(chǎn)生的是第二隨機數(shù),則先將其中順序靠前的部 分取值為0的AC分量編碼得到若干ZRL碼字,再將其中順序靠后的剩余取值為0的AC分 量編碼為EOB碼字。 本發(fā)明提供的一種DCT系數(shù)的編碼裝置,包括
量化處理單元,用于對當(dāng)前DCT系數(shù)進行量化; 直流分量單元,用于對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼;
分量掃描單元,用于以之字形掃描順序掃描當(dāng)前DCT系數(shù)中的各交流AC分量;
交流分量單元,對于不以連續(xù)取值為O的AC分量結(jié)尾的當(dāng)前DCT系數(shù),用于先將 取值非0的AC分量之前的連續(xù)取值為0的AC分量編碼為零持續(xù)長度ZRL碼字,再將剩余 連續(xù)取值為0的AC分量與取值非0的AC分量一起編碼; 該編碼裝置還包括隨機數(shù)產(chǎn)生單元,用于為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù) 或第二隨機數(shù)、用以隨機選擇對當(dāng)前DCT系數(shù)中結(jié)尾處連續(xù)取值為0的AC分量的編碼方 式; 且,交流分量單元對于以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),在隨機數(shù) 產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時,將結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為塊結(jié) 束EOB碼字;在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時,先將其中順序靠前的部分取值為0 的AC分量編碼得到ZRL碼字,再將其中順序靠后的剩余取值為0的AC分量編碼為EOB碼字。 由上述技術(shù)方案可見,本發(fā)明為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機 數(shù),如果產(chǎn)生的是第一隨機數(shù),則在當(dāng)前DCT系數(shù)以連續(xù)取值為0的AC分量結(jié)尾時,將結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為E0B碼字;如果產(chǎn)生的是第二隨機數(shù),則在當(dāng) 前DCT系數(shù)以連續(xù)取值為0的AC分量結(jié)尾時,將其中順序靠前的部分取值為0的AC分量 編碼得到零持續(xù)長度ZRL碼字,再將其中順序靠后的剩余取值為0的AC分量編碼為EOB碼 字。這樣,對于通常以連續(xù)取值為O的AC分量結(jié)尾的各DCT系數(shù)來說,編碼后得到的碼流 數(shù)據(jù)中會被隨機插入數(shù)量不定的ZRL碼字,從而使得以多于連續(xù)16個取值為0的AC系數(shù) 結(jié)尾的DCT系數(shù)在編碼后的碼流數(shù)據(jù)中存在的各種周期性規(guī)律被不同程度地破壞,進而能 夠在一定程度上消除碼流數(shù)據(jù)傳輸?shù)腅MI頻譜中的離散峰值,即降低DCT系數(shù)編碼后的碼 流數(shù)據(jù)所產(chǎn)生的EMI。
圖1為現(xiàn)有DCT系數(shù)的8X8矩陣示意圖; 圖2a 圖2d為隨著水平方向光照強度變化頻率逐漸升高所導(dǎo)致的黑白像素分布 狀態(tài)示意圖; 圖3a 圖3d為隨著豎直方向光照強度變化頻率逐漸升高所導(dǎo)致的黑白像素分布 狀態(tài)示意圖; 圖4為現(xiàn)有對DCT系數(shù)的8X8矩陣進行之字形掃描的示意圖; 圖5為現(xiàn)有對DCT系數(shù)中AC分量編碼方法的流程示意圖; 圖6為現(xiàn)有對DCT系數(shù)編碼得到的一種碼流數(shù)據(jù)示意圖; 圖7a為本發(fā)明實施例對DCT系數(shù)編碼得到的一種碼流數(shù)據(jù)示意圖; 圖7b為本發(fā)明實施例對DCT系數(shù)編碼得到的另一種碼流數(shù)據(jù)示意圖; 圖8本發(fā)明實施例對DCT系數(shù)中AC分量編碼方法的示例性流程示意圖; 圖9為本發(fā)明方法實施例一中對DCT系數(shù)中AC分量編碼流程示意圖; 圖10為本發(fā)明方法實施例二中對DCT系數(shù)中AC分量編碼流程示意圖 圖11為本發(fā)明方法實施例三中對DCT系數(shù)中AC分 圖12為本發(fā)明方法實施例四中對DCT系數(shù)中AC分 圖13為本發(fā)明方法實施例五中對DCT系數(shù)中AC分 圖14為本發(fā)明方法實施例六中對DCT系數(shù)中AC分 圖15為本發(fā)明實施例中DCT系數(shù)編碼裝置的示例性結(jié)構(gòu)示意圖 圖16為本發(fā)明裝置實施例一中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖 圖17為本發(fā)明裝置實施例二中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖 圖18為本發(fā)明裝置實施例三中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖 圖19為本發(fā)明裝置實施例四中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖 圖20為本發(fā)明裝置實施例五中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖 圖21為本發(fā)明裝置實施例六中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖。
t編碼流程示意圖 t編碼流程示意圖 t編碼流程示意圖 t編碼流程示意圖
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對 本發(fā)明進一步詳細說明。 本發(fā)明實施例提出了一種新的AC分量編碼方式,該編碼方式可在DCT系數(shù)存在連續(xù)的多于16個取值為0的AC分量結(jié)尾時,針對本應(yīng)統(tǒng)一編碼為EOB碼字結(jié)尾處取值為0 的AC分量,盡可能多的先編碼得到ZRL碼字、爾后再將結(jié)尾處剩余不足16個取值為0的AC 分量編碼為EOB,即將由結(jié)尾處多于16個取值為0的AC分量統(tǒng)一編碼得到的EOB碼字,拆 分為若干ZRL碼字、以及由結(jié)尾剩余連續(xù)取值為0的AC分量編碼得到的EOB碼字。
但是,如果僅利用上述新的編碼方式,則對于背景技術(shù)部分所述的極端情況,增加 的ZRL碼字仍是按照周期性規(guī)律插入至碼流數(shù)據(jù)中。因此,本發(fā)明實施例針對連續(xù)的DCT 系數(shù),還需要隨機選擇如圖5所示編碼方式或者上述新的編碼方式,使連續(xù)DCT系數(shù)編碼后 的碼流數(shù)據(jù)中隨機插入位置和數(shù)量不定的ZRL碼字。 參見圖7a,以連續(xù)組若干量化后的DCT系數(shù)中,63個AC分量均全為0的一種極端 情況為例,除了以交替方式出現(xiàn)頻率最高的DC分量所對應(yīng)碼字和EOB碼字之外,還插入了 、 而且是隨機插入了若干ZRL碼字,從而能夠打亂碼流數(shù)據(jù)中交替出現(xiàn)的DC分量對應(yīng)碼字和 EOB碼字的周期性規(guī)律,進而降低DCT系數(shù)編碼后的碼流數(shù)據(jù)所產(chǎn)生的EMI。
參見圖7b,以連續(xù)組若干量化后的DCT系數(shù)中,63個AC分量不全為0、但每組DCT 系數(shù)中的63個AC分量相同的另一種極端情況為例,除了以交替方式順序出現(xiàn)頻率最高的 DC分量所對應(yīng)碼字、ZRL碼字、非零碼字和EOB碼字之外,還在非零碼字與EOB碼字之間插 入了、而且是隨機插入了數(shù)量不等的若干ZRL碼字,從而能夠打亂碼流數(shù)據(jù)中交替出現(xiàn)的 DC分量對應(yīng)碼字、ZRL碼字、非零碼字和EOB碼字順序構(gòu)成的周期性規(guī)律,進而降低DCT系 數(shù)編碼后的碼流數(shù)據(jù)所產(chǎn)生的EMI。 下面,先對本發(fā)明實施例中DCT系數(shù)編碼方法進行詳細說明。 本發(fā)明實施例中的DCT系數(shù)編碼方法,需要先按照現(xiàn)有方式對當(dāng)前DCT系數(shù)進行 量化,以盡可能使DCT系數(shù)中的各AC分量、尤其是對應(yīng)高光照強度變化頻率的AC分量取值 全部為O,然后再按照現(xiàn)有方式對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,最后,再以 之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流AC分量進行編碼。 其中,如圖8所示,對當(dāng)前DCT系數(shù)中的各交流AC分量進行編碼包括如下步驟
步驟800,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)、用以隨機選擇對當(dāng) 前DCT系數(shù)中結(jié)尾處連續(xù)取值為0的AC分量的編碼方式,如果產(chǎn)生的是第一隨機數(shù),則跳 轉(zhuǎn)至步驟801,如果產(chǎn)生的是第二隨機數(shù),則跳轉(zhuǎn)至步驟802。 步驟801,對于以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),將結(jié)尾處連續(xù)的所 有取值為0的AC分量統(tǒng)一編碼為EOB碼字;而對于不以連續(xù)取值為0的AC分量結(jié)尾的當(dāng) 前DCT系數(shù),可以按照如圖5中步驟306 309的現(xiàn)有方式,先將每個取值非0的AC分量 之前的連續(xù)取值為0的AC分量編碼為ZRL碼字,再將剩余連續(xù)取值為0的AC分量與該取 值非0的AC分量一起編碼,然后結(jié)束對當(dāng)前DCT系數(shù)的編碼。 步驟802,對于以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),先將其中順序靠前 的部分取值為0的AC分量編碼得到ZRL碼字,再將其中順序靠后的剩余取值為0的AC分 量編碼為EOB碼字;而對于不以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),可以按照如 圖5中步驟306 309的現(xiàn)有方式,先將每個取值非0的AC分量之前的連續(xù)取值為0的AC 分量編碼為ZRL碼字,再將剩余連續(xù)取值為0的AC分量與取值非0的AC分量一起編碼,然 后結(jié)束對當(dāng)前DCT系數(shù)的編碼。
至此,本流程結(jié)束。
那么,在本實施例的DCT系數(shù)編碼方法中,何時產(chǎn)生隨機數(shù)、何時判斷產(chǎn)生的是第 一隨機數(shù)還是第二隨機數(shù)、以及如何實現(xiàn)前述新的編碼方式以隨機插入ZRL碼字可以有多 種實現(xiàn)方式,因此下面提供了 6種方法實施例。
方法實施例一 本實施例中,設(shè)置如圖5所示的現(xiàn)有編碼方式、以及前述新的編碼方式,在開始以 之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中AC分量進行編碼之前,先為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一 隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù); 如果產(chǎn)生的是第一隨機數(shù),則利用如圖5所示的現(xiàn)有編碼方式,在每次判斷出當(dāng) 前掃描的AC分量取值為0之后,再判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量; 在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù) 取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分 量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束 對當(dāng)前DCT系數(shù)的編碼; 如果產(chǎn)生的是第二隨機數(shù),則利用前述新的編碼方式,在每次判斷出當(dāng)前掃描的 AC分量取值為0之后,只要已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先 將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC 分量數(shù)量減去16,然后再判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個;在判斷出該AC分 量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分 量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT 系數(shù)結(jié)尾處未被編碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對 當(dāng)前DCT系數(shù)的編碼。 這樣,就使得連續(xù)DCT系數(shù)隨機地選用如圖5所示現(xiàn)有編碼方式、或前述新的編碼 方式,從而連續(xù)DCT系數(shù)編碼后的碼流數(shù)據(jù)中會隨機地出現(xiàn)DC分量碼字和EOB碼字的組 合、或DC分量和ZRL碼字以及EOB碼字,從而使得連續(xù)DCT系數(shù)編碼后的碼流數(shù)據(jù)中不再 周期性規(guī)律地僅交替出現(xiàn)DC分量碼字和EOB碼字,進而能夠在一定程度上消除碼流數(shù)據(jù)傳 輸?shù)腅MI頻譜中的離散峰值,即降低DCT系數(shù)編碼后的碼流數(shù)據(jù)所產(chǎn)生的EMI。
本實施例中DCT系數(shù)的編碼方法,先按照現(xiàn)有方式對當(dāng)前DCT系數(shù)進行量化,以盡 可能使DCT系數(shù)中的各AC分量、尤其是對應(yīng)高光照強度變化頻率的AC分量取值全部為0, 然后再按照現(xiàn)有方式對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,最后,再以之字形掃 描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流AC分量進行編碼。 圖9為本發(fā)明方法實施例一中對DCT系數(shù)中AC分量編碼方法的流程示意圖。參 見圖9,本實施例中DCT系數(shù)的編碼方法按照如下步驟,對當(dāng)前已量化的DCT系數(shù)中的63個 AC分量進行編碼 步驟900,設(shè)置參數(shù)K,用于表示當(dāng)前掃描到的AC分量順序、并設(shè)置K的初始值為 0 ;設(shè)置參數(shù)R,用于表示連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)、并設(shè)置R的 初始值為O。 步驟901,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第 一隨機數(shù)還是第二隨機數(shù),如果是第一隨機數(shù),則跳轉(zhuǎn)至如圖5所示流程的步驟501,如果 是第二隨機數(shù)則執(zhí)行步驟902。
14
步驟902,掃描到下一個AC分量,令K = K+l。 步驟903,判斷第K個AC分量的取值ZZ(K)是否為0,如果是,則執(zhí)行步驟904,否 則執(zhí)行步驟909。 步驟904,判斷該取值為0的AC分量之前是否有多于15個連續(xù)的取值為0的AC 分量未進行編碼,即R是否大于15,如果是,則執(zhí)行步驟905,否則執(zhí)行步驟906。
步驟905,按照AC分量哈夫曼表,將連續(xù)16個取值為0的AC分量統(tǒng)一編碼為1個 ZRL碼字,并從記錄的連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)減去16,即令R =R-16,然后執(zhí)行步驟906。 步驟906,判斷當(dāng)前掃描到的取值為0的AC分量是否為最后一個、即K是否等于 63,如果是,則執(zhí)行步驟908,否則執(zhí)行步驟907。 步驟907,暫不對當(dāng)前掃描到的取值為0的AC分量進行編碼,并對連續(xù)掃描到但未 進行編碼的取值為0的AC分量個數(shù)進行累加,令R = R+l,然后返回至步驟902。
步驟908,按照之字形掃描的最后一個AC分量的取值為0,即63個AC分量是以取 值為0的AC分量為結(jié)尾,按照AC分量哈夫曼表,將結(jié)尾處此時未編碼的連續(xù)取值為0的AC 分量統(tǒng)一編碼為1個EOB碼字,然后結(jié)束流程。 步驟909 步驟913與如圖5所示的步驟506 步驟510的處理方式相同,并在步
驟913判斷當(dāng)前掃描到的取值非零的AC分量為最后一個時結(jié)束本流程、否則返回步驟902,
具體的處理過程在此不再贅述。 至此,本流程結(jié)束。 方法實施例二 本實施例中,設(shè)置如圖5所示的現(xiàn)有編碼方式、以及前述新的編碼方式,在開始以 之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中AC分量進行編碼之前,先為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一 隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù); 如果產(chǎn)生的是第一隨機數(shù),則利用如圖5所示的現(xiàn)有編碼方式,在每次判斷出當(dāng) 前掃描的AC分量取值為0之后,再判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量; 在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù) 取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分 量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束 對當(dāng)前DCT系數(shù)的編碼;S卩,產(chǎn)生第一隨機數(shù)時的處理方式與方法實施例一相同;
如果產(chǎn)生的是第二隨機數(shù),則利用前述新的編碼方式,在每次判斷出當(dāng)前掃描的 AC分量取值為0之后,先判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量;在判斷 出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為 0的AC分量數(shù)量,然后只要累加得到的已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足 夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù) 取值為0的AC分量數(shù)量減去16,然后繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后 一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的連續(xù)取值為0的AC分量統(tǒng)一編 碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;S卩,產(chǎn)生第二隨機數(shù)時的處理方式相比于方 法實施例一,區(qū)別在于,只要當(dāng)前已掃描的取值為0的AC分量不是最后一個,則先將當(dāng)前已 掃描但未編碼的取值為0的1個AC分量,計算在已掃描但未編碼的連續(xù)取值為0的AC分量總數(shù)量之內(nèi),然后再判斷累加得到的已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量是否 足夠16個、并編碼得到ZRL碼字。 這樣,仍可以與方法實施例一產(chǎn)生近似的技術(shù)效果。 本實施例中DCT系數(shù)的編碼方法,先按照現(xiàn)有方式對當(dāng)前DCT系數(shù)進行量化,以盡 可能使DCT系數(shù)中的各AC分量、尤其是對應(yīng)高光照強度變化頻率的AC分量取值全部為0, 然后再按照現(xiàn)有方式對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,最后,再以之字形掃 描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流AC分量進行編碼。 圖10為本發(fā)明方法實施例二中對DCT系數(shù)中AC分量編碼方法的流程示意圖。參 見圖IO,本實施例中DCT系數(shù)的編碼方法按照如下步驟,對當(dāng)前已量化的DCT系數(shù)中的63 個AC分量進行編碼 步驟1000,設(shè)置參數(shù)K,用于表示當(dāng)前掃描到的AC分量順序、并設(shè)置K的初始值為 0 ;設(shè)置參數(shù)R,用于表示連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)、并設(shè)置R的 初始值為O。 步驟1001,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是 第一隨機數(shù)還是第二隨機數(shù),如果是第一隨機數(shù),則跳轉(zhuǎn)至如圖5所示流程的步驟501,如 果是第二隨機數(shù)則執(zhí)行步驟1002。 步驟1002,掃描到下一個AC分量,令K = K+l。 步驟1003,判斷第K個AC分量的取值ZZ (K)是否為0,如果是,則執(zhí)行步驟1004, 否則執(zhí)行步驟1009。 步驟1004,判斷當(dāng)前掃描到的取值為0的AC分量是否為最后一個、即K是否等于 63,如果是,則執(zhí)行步驟1008,否則執(zhí)行步驟1005。 步驟1005,暫不對當(dāng)前掃描到的取值為0的AC分量進行編碼,并對連續(xù)掃描到但 未進行編碼的取值為0的AC分量個數(shù)進行累加,令R = R+l,然后執(zhí)行步驟1006。
步驟1006,判斷該取值為0的AC分量之前是否有多于15個連續(xù)的取值為0的AC 分量未進行編碼,即R是否大于15,如果是,則執(zhí)行步驟1007,否則返回步驟1002繼續(xù)掃描 下一個AC分量。 步驟1007,按照AC分量哈夫曼表,將連續(xù)16個取值為0的AC分量統(tǒng)一編碼為1 個ZRL碼字,并從記錄的連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)減去16,即令 R = R-16,然后返回步驟1002繼續(xù)掃描下一個AC分量。 步驟1008,按照之字形掃描的最后一個AC分量的取值為0,即63個AC分量是以 取值為0的AC分量為結(jié)尾,按照AC分量哈夫曼表,將結(jié)尾處此時未編碼的連續(xù)取值為0的 AC分量統(tǒng)一編碼為1個EOB碼字,然后結(jié)束流程。 步驟1009 步驟1013與如圖5所示的步驟506 步驟510的處理方式相同,并 在步驟1013判斷當(dāng)前掃描到的取值非零的AC分量為最后一個時結(jié)束本流程、否則返回步 驟1002,具體的處理過程在此不再贅述。
至此,本流程結(jié)束。
方法實施例三 本實施例中,設(shè)置如圖5所示的現(xiàn)有編碼方式、以及前述新的編碼方式,在開始以 之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中AC分量進行編碼之前,先為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù); 如果產(chǎn)生的是第一隨機數(shù),則利用如圖5所示的現(xiàn)有編碼方式,在每次判斷出當(dāng) 前掃描的AC分量取值為0之后,再判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量; 在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù) 取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分 量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束 對當(dāng)前DCT系數(shù)的編碼;即,產(chǎn)生第一隨機數(shù)時的處理方式與方法實施例一、方法實施例二 相同; 如果產(chǎn)生的是第二隨機數(shù),則利用前述新的現(xiàn)有編碼方式,每次判斷出當(dāng)前掃描 的AC分量取值為0之后,先判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量;在判 斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值 為0的AC分量數(shù)量,然后只要累加得到的已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量 足夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連 續(xù)取值為0的AC分量數(shù)量減去16,然后繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最 后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的連續(xù)取值為0的AC分量統(tǒng)一 編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;S卩,產(chǎn)生第二隨機數(shù)時的處理方式,相比于 方法實施例一、方法實施例二的區(qū)別在于,只有掃描取值為0、且作為當(dāng)前DCT系數(shù)結(jié)尾的 AC分量時,再判斷累加得到的已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量是否足夠16 個、并編碼得到ZRL碼字。這樣,仍可以與方法實施例一、方法實施例二產(chǎn)生近似的技術(shù)效果。
本實施例中DCT系數(shù)的編碼方法,先按照現(xiàn)有方式對當(dāng)前DCT系數(shù)進行量化,以盡 可能使DCT系數(shù)中的各AC分量、尤其是對應(yīng)高光照強度變化頻率的AC分量取值全部為0, 然后再按照現(xiàn)有方式對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,最后,再以之字形掃 描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流AC分量進行編碼。 圖11為本發(fā)明方法實施例三中對DCT系數(shù)中AC分量編碼方法的流程示意圖。參 見圖ll,本實施例中DCT系數(shù)的編碼方法按照如下步驟,對當(dāng)前已量化的DCT系數(shù)中的63 個AC分量進行編碼 步驟1100,設(shè)置參數(shù)K,用于表示當(dāng)前掃描到的AC分量順序、并設(shè)置K的初始值為 0 ;設(shè)置參數(shù)R,用于表示連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)、并設(shè)置R的 初始值為0。 步驟1101,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是 第一隨機數(shù)還是第二隨機數(shù),如果是第一隨機數(shù),則跳轉(zhuǎn)至如圖5所示流程的步驟501,如 果是第二隨機數(shù)則執(zhí)行步驟1102。 步驟1102,掃描到下一個AC分量,令K = K+l。 步驟1103,判斷第K個AC分量的取值ZZ(K)是否為0,如果是,則執(zhí)行步驟1104, 否則執(zhí)行步驟1109。 步驟1104,判斷當(dāng)前掃描到的取值為0的AC分量是否為最后一個、即K是否等于 63,如果是,則執(zhí)行步驟1106,否則執(zhí)行步驟1105。 步驟1105,暫不對當(dāng)前掃描到的取值為0的AC分量進行編碼,并對連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)進行累加,令R = R+l,然后返回至步驟1102。
步驟1106,判斷該取值為0的AC分量之前是否有多于15個連續(xù)的取值為0的AC 分量未進行編碼,即R是否大于15,如果是,則執(zhí)行步驟1107,否則執(zhí)行步驟1108。
步驟1107,按照AC分量哈夫曼表,將連續(xù)16個取值為0的AC分量統(tǒng)一編碼為1 個ZRL碼字,并對記錄的連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)減去16、即令 R = R-16,然后返回步驟1106。 步驟1108,按照之字形掃描的最后一個AC分量的取值為O,即63個AC分量是以 取值為0的AC分量為結(jié)尾,按照AC分量哈夫曼表,將結(jié)尾處此時未編碼的連續(xù)取值為0的 AC分量統(tǒng)一編碼為1個EOB碼字,然后結(jié)束流程。 步驟1109 步驟1113與如圖5所示的步驟506 步驟510的處理方式相同,并 在步驟1113判斷當(dāng)前掃描到的取值非零的AC分量為最后一個時結(jié)束本流程、否則返回步 驟1102,具體的處理過程在此不再贅述。
至此,本流程結(jié)束。 上述三個方法實施例,都是將現(xiàn)有編碼方式和前述新的編碼方式分別設(shè)置為兩個 流程,并依據(jù)隨機數(shù)選擇任一流程予以執(zhí)行。然而,考慮到現(xiàn)有編碼方式和前述新的編碼方 式存在部分相同的處理步驟,因而為了節(jié)省處理資源,還可以通過設(shè)置一個處理流程來復(fù) 用相同的處理步驟,具體參見后續(xù)方法實施例四 六。
方法實施例四 本實施例中,設(shè)置一個編碼流程,該編碼流程包括如圖5所示的現(xiàn)有編碼方式、以 及前述新的編碼方式所共有的處理步驟,還同時包括如圖5所示的現(xiàn)有編碼方式、以及前 述新的編碼方式不同的處理步驟。這樣,在需要執(zhí)行不同的處理步驟之前,判斷產(chǎn)生的是第 一隨機數(shù)還是第二隨機數(shù),然后再依據(jù)產(chǎn)生的隨機數(shù)進行選擇。 本實施例在開始以之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中AC分量之后,每次判斷出當(dāng) 前掃描的AC分量取值為0時為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或 第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù); 如果產(chǎn)生的是第一隨機數(shù),則在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC 分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量; 在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的 AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼; 如果產(chǎn)生的是第二隨機數(shù),則只要已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量 足夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連 續(xù)取值為0的AC分量數(shù)量減去16,然后判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC 分量;在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC 分量時,將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為 EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。 這樣,仍可以與方法實施例一 三產(chǎn)生近似的技術(shù)效果。此外,本實施例相比于方 法實施例一 三,除了進一步節(jié)省處理資源之外,由于隨機數(shù)是針對每個取值為0的AC分 量所產(chǎn)生的,因而插入ZRL碼字的隨機性也就更高。換言之,本實施例所能夠產(chǎn)生的碼字組合種類比方法實施例一 三更多,以63個AC分量全為0的極端情況為例,方法實施例一 三對于每組DCT系數(shù)中的63個AC分量僅能夠編碼得到"ZRL、 ZRL、 ZRL、 E0B",或"E0B"這 兩種之中的任一種,而本實施例對于每組DCT系數(shù)中的63個AC分量則能夠編碼得到"ZRL、 ZRL、ZRL、EOB",或"ZRL、ZRL、EOB",或"ZRL、EOB",或"EOB"這四種之中的任一種,因而本實 施例針對每個取值為0的AC分量生成一個隨機數(shù),要比對一組DCT系數(shù)統(tǒng)一生成一個隨機 數(shù)要更為靈活。 本實施例中DCT系數(shù)的編碼方法,先按照現(xiàn)有方式對當(dāng)前DCT系數(shù)進行量化,以盡 可能使DCT系數(shù)中的各AC分量、尤其是對應(yīng)高光照強度變化頻率的AC分量取值全部為0, 然后再按照現(xiàn)有方式對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,最后,再以之字形掃 描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流AC分量進行編碼。 圖12為本發(fā)明方法實施例四中對DCT系數(shù)中AC分量編碼方法的流程示意圖。參 見圖12,本實施例中DCT系數(shù)的編碼方法按照如下步驟,對當(dāng)前已量化的DCT系數(shù)中的63 個AC分量進行編碼 步驟1200,設(shè)置參數(shù)K,用于表示當(dāng)前掃描到的AC分量順序、并設(shè)置K的初始值為 0 ;設(shè)置參數(shù)R,用于表示連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)、并設(shè)置R的 初始值為0。 步驟1201,掃描到下一個AC分量,令K = K+l。 步驟1202,判斷第K個AC分量的取值ZZ(K)是否為O,如果是,則執(zhí)行步驟1203, 否則執(zhí)行步驟1209。 步驟1203,為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或第二隨 機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),如果是第一隨機數(shù),則直接執(zhí)行步驟 1204,如果是第二隨機數(shù)則執(zhí)行步驟1206。 步驟1204,判斷該取值為0的AC分量之前是否有多于15個連續(xù)的取值為0的AC 分量未進行編碼,即R是否大于15,如果是,則執(zhí)行步驟1205,否則執(zhí)行步驟1206。
步驟1205,按照AC分量哈夫曼表,將連續(xù)16個取值為0的AC分量統(tǒng)一編碼為1 個ZRL碼字,并從記錄的連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)減去16,即令 R = R-16,然后執(zhí)行步驟1206。 步驟1206,判斷當(dāng)前掃描到的取值為0的AC分量是否為最后一個、即K是否等于 63,如果是,則執(zhí)行步驟1208,否則執(zhí)行步驟1207。 步驟1207,暫不對當(dāng)前掃描到的取值為0的AC分量進行編碼,并對連續(xù)掃描到但 未進行編碼的取值為0的AC分量個數(shù)進行累加,令R = R+l,然后返回步驟1201繼續(xù)掃描 下一個AC分量。 步驟1208,按照之字形掃描的最后一個AC分量的取值為0,即63個AC分量是以 取值為0的AC分量為結(jié)尾,按照AC分量哈夫曼表,將結(jié)尾處此時未編碼的連續(xù)取值為0的 AC分量統(tǒng)一編碼為1個EOB碼字,然后結(jié)束流程。 步驟1209 步驟1213與如圖5所示的步驟506 步驟510的處理方式相同,并 在步驟1213判斷當(dāng)前掃描到的取值非零的AC分量為最后一個時結(jié)束本流程、否則返回步 驟1201,具體的處理過程在此不再贅述。
至此,本流程結(jié)束。
19
方法實施例五 本實施例中,設(shè)置一個編碼流程,該編碼流程包括如圖5所示的現(xiàn)有編碼方式、以 及前述新的編碼方式所共有的處理步驟,還同時包括如圖5所示的現(xiàn)有編碼方式、以及前 述新的編碼方式不同的處理步驟。這樣,在需要執(zhí)行不同的處理步驟之前,判斷產(chǎn)生的是第 一隨機數(shù)還是第二隨機數(shù),然后再依據(jù)產(chǎn)生的隨機數(shù)進行選擇。 本實施例在開始以之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中AC分量之后,先判斷該AC 分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量是最后一個AC分量時, 將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并 結(jié)束對當(dāng)前DCT系數(shù)的編碼;在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時, 累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量,然后為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC 分量隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù);
如果產(chǎn)生的是第一隨機數(shù),則繼續(xù)掃描下一個AC分量;S卩,在產(chǎn)生第一隨機數(shù)時 的處理方式,與方法實施例四實質(zhì)上相近似; 如果產(chǎn)生的是第二隨機數(shù),則只要累加得到的已掃描但未編碼的連續(xù)取值為0的 AC分量數(shù)量足夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但 未編碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后繼續(xù)掃描下一個AC分量;S卩,在產(chǎn)生第 二隨機數(shù)時的處理方式相比于方法實施例四,區(qū)別在于,判斷隨機數(shù)的時機不同,而且,只 要當(dāng)前已掃描的取值為0的AC分量不是最后一個,則先將當(dāng)前已掃描但未編碼的取值為0 的1個AC分量,計算在已掃描但未編碼的連續(xù)取值為0的AC分量總數(shù)量之內(nèi),然后再判斷 累加得到的已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量是否足夠16個、并編碼得到ZRL 碼字。 這樣,仍可以與方法實施例一 四產(chǎn)生近似的技術(shù)效果。此外,本實施例相比于方 法實施例一 三,除了進一步節(jié)省處理資源之外,由于隨機數(shù)是針對每個取值為0的AC分 量所產(chǎn)生的,因而插入ZRL碼字的隨機性也就更高。換言之,與方法實施例四同理,本實施 例所能夠產(chǎn)生的碼字組合種類比方法實施例一 三更多,因而本實施例針對每個取值為0 的AC分量生成一個隨機數(shù),要比對一組DCT系數(shù)統(tǒng)一生成一個隨機數(shù)要更為靈活。
本實施例中DCT系數(shù)的編碼方法,先按照現(xiàn)有方式對當(dāng)前DCT系數(shù)進行量化,以盡 可能使DCT系數(shù)中的各AC分量、尤其是對應(yīng)高光照強度變化頻率的AC分量取值全部為0, 然后再按照現(xiàn)有方式對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,最后,再以之字形掃 描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流AC分量進行編碼。 圖13為本發(fā)明方法實施例五中對DCT系數(shù)中AC分量編碼方法的流程示意圖。參 見圖13,本實施例中DCT系數(shù)的編碼方法按照如下步驟,對當(dāng)前已量化的DCT系數(shù)中的63 個AC分量進行編碼 步驟1300,設(shè)置參數(shù)K,用于表示當(dāng)前掃描到的AC分量順序、并設(shè)置K的初始值為 0 ;設(shè)置參數(shù)R,用于表示連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)、并設(shè)置R的 初始值為0。 步驟1301,掃描到下一個AC分量,令K = K+l。 步驟1302,判斷第K個AC分量的取值ZZ(K)是否為O,如果是,則執(zhí)行步驟1303, 否則執(zhí)行步驟1309。
20
步驟1303,判斷當(dāng)前掃描到的取值為0的AC分量是否為最后一個、即K是否等于 63,如果是,則執(zhí)行步驟1308,否則執(zhí)行步驟1304。 步驟1304,暫不對當(dāng)前掃描到的取值為0的AC分量進行編碼,并對連續(xù)掃描到但 未進行編碼的取值為0的AC分量個數(shù)進行累加,令R = R+l,然后執(zhí)行步驟1305。
步驟1305,為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或第二隨機 數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),如果是第一隨機數(shù),則直接返回步驟1301 繼續(xù)掃描下一個AC分量,如果是第二隨機數(shù)則執(zhí)行步驟1306。 步驟1306,判斷該取值為0的AC分量之前是否有多于15個連續(xù)的取值為0的AC 分量未進行編碼,即R是否大于15,如果是,則執(zhí)行步驟1305,否則執(zhí)行步驟1307。
步驟1307,按照AC分量哈夫曼表,將連續(xù)16個取值為0的AC分量統(tǒng)一編碼為1 個ZRL碼字,并從記錄的連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)減去16,即令 R = R-16,然后返回步驟1301繼續(xù)掃描下一個AC分量。 步驟1308,按照之字形掃描的最后一個AC分量的取值為O,即63個AC分量是以 取值為0的AC分量為結(jié)尾,按照AC分量哈夫曼表,將結(jié)尾處此時未編碼的連續(xù)取值為0的 AC分量統(tǒng)一編碼為1個EOB碼字,然后結(jié)束流程。 步驟1309 步驟1313與如圖5所示的步驟506 步驟510的處理方式相同,并 在步驟1313判斷當(dāng)前掃描到的取值非零的AC分量為最后一個時結(jié)束本流程、否則返回步 驟1301,具體的處理過程在此不再贅述。
至此,本流程結(jié)束。
方法實施例六 本實施例中,設(shè)置一個編碼流程,該編碼流程包括如圖5所示的現(xiàn)有編碼方式、以 及前述新的編碼方式所共有的處理步驟,還同時包括如圖5所示的現(xiàn)有編碼方式、以及前 述新的編碼方式不同的處理步驟。這樣,在需要執(zhí)行不同的處理步驟之前,判斷產(chǎn)生的是第 一隨機數(shù)還是第二隨機數(shù),然后再依據(jù)產(chǎn)生的隨機數(shù)進行選擇。 本實施例在開始以之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中AC分量之后,先判斷該AC 分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量;在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最 后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個 AC分量;在判斷出該AC分量是最后一個AC分量時,先為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機 數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù); 如果產(chǎn)生的是第一隨機數(shù),則將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分 量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;S卩,在產(chǎn)生第一隨機數(shù)時的處理方 式,與方法實施例四和五實質(zhì)上相近似; 如果產(chǎn)生的是第二隨機數(shù),則只要在該AC分量之前已掃描但未編碼的連續(xù)取值 為0的AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠 前的AC分量循環(huán)編碼為16整數(shù)倍數(shù)量的ZRL碼字,然后再將當(dāng)前DCT系數(shù)結(jié)尾處未被編 碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編 碼;即,產(chǎn)生第二隨機數(shù)時的處理方式,相比于方法實施例四、方法實施例五的區(qū)別在于,判 斷隨機數(shù)的時機不同,而且,只有掃描取值為0、且作為當(dāng)前DCT系數(shù)結(jié)尾的AC分量時,再判 斷累加得到的已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量是否足夠16個、并編碼得到ZRL碼字。 這樣,仍可以與方法實施例一 五產(chǎn)生近似的技術(shù)效果。此外,本實施例相比于方法實施例一 三,進一步具有節(jié)省處理資源的技術(shù)效果。 本實施例中DCT系數(shù)的編碼方法,先按照現(xiàn)有方式對當(dāng)前DCT系數(shù)進行量化,以盡可能使DCT系數(shù)中的各AC分量、尤其是對應(yīng)高光照強度變化頻率的AC分量取值全部為0,然后再按照現(xiàn)有方式對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,最后,再以之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流AC分量進行編碼。 圖14為本發(fā)明方法實施例六中對DCT系數(shù)中AC分量編碼方法的流程示意圖。參見圖14,本實施例中DCT系數(shù)的編碼方法按照如下步驟,對當(dāng)前已量化的DCT系數(shù)中的63個AC分量進行編碼 步驟1400,設(shè)置參數(shù)K,用于表示當(dāng)前掃描到的AC分量順序、并設(shè)置K的初始值為0 ;設(shè)置參數(shù)R,用于表示連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)、并設(shè)置R的初始值為O。 步驟1401,掃描到下一個AC分量,令K = K+l。 步驟1402,判斷第K個AC分量的取值ZZ(K)是否為O,如果是,則執(zhí)行步驟1403,否則執(zhí)行步驟1409。 步驟1403,判斷當(dāng)前掃描到的取值為0的AC分量是否為最后一個、即K是否等于63,如果是,則執(zhí)行步驟1405,否則執(zhí)行步驟1404。 步驟1404,暫不對當(dāng)前掃描到的取值為0的AC分量進行編碼,并對連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)進行累加,令R = R+l,然后返回步驟1401繼續(xù)掃描下一個AC分量。 步驟1405,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),如果是第一隨機數(shù),則直接執(zhí)行步驟1408,如果是第二隨機數(shù)則執(zhí)行步驟1406。 步驟1406,判斷該取值為0的AC分量之前是否有多于15個連續(xù)的取值為0的AC分量未進行編碼,即R是否大于15,如果是,則直接執(zhí)行步驟1408,否則執(zhí)行步驟1407。
步驟1407,按照AC分量哈夫曼表,將連續(xù)16個取值為0的AC分量統(tǒng)一編碼為1個ZRL碼字,并從記錄的連續(xù)掃描到但未進行編碼的取值為0的AC分量個數(shù)減去16,即令R = R-16,然后執(zhí)行步驟1408。 步驟1408,按照之字形掃描的最后一個AC分量的取值為0,即63個AC分量是以取值為0的AC分量為結(jié)尾,按照AC分量哈夫曼表,將結(jié)尾處此時未編碼的連續(xù)取值為0的AC分量統(tǒng)一編碼為1個EOB碼字,然后結(jié)束流程。 步驟1409 步驟1413與如圖5所示的步驟506 步驟510的處理方式相同,并在步驟1413判斷當(dāng)前掃描到的取值非零的AC分量為最后一個時結(jié)束本流程、否則返回步驟1401,具體的處理過程在此不再贅述。
至此,本流程結(jié)束。 上述僅僅是列舉了六個方法實施例,實際應(yīng)用中,基于這六個方法實施例的基本原理,為了實現(xiàn)前述新的編碼方式、并實現(xiàn)在現(xiàn)有編碼方式和前述新編碼方式之間隨機選擇,本領(lǐng)域技術(shù)人員還可以列舉出更多的實施例,在此不再一一贅述。
下面,再對本發(fā)明實施例中的DCT系數(shù)編碼裝置進行詳細說明。 圖15為本發(fā)明實施例中DCT系數(shù)編碼裝置的示例性結(jié)構(gòu)示意圖。如圖15所示,
本實施例中的DCT系數(shù)編碼裝置包括 量化處理單元1501,用于按照現(xiàn)有方式對當(dāng)前DCT系數(shù)進行量化; 直流分量單元1502 ,用于按照現(xiàn)有方式對量化后的當(dāng)前DCT系數(shù)中的直流DC分量
編碼; 分量掃描單元1503,用于按照現(xiàn)有方式以之字形掃描順序掃描當(dāng)前DCT系數(shù)中的各交流AC分量; 交流分量單元1505,對于不以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),用于先將每個取值非0的AC分量之前的連續(xù)取值為0的AC分量編碼為ZRL碼字,再將剩余連續(xù)取值為0的AC分量與該取值非0的AC分量一起編碼。
此外,該編碼裝置還包括 隨機數(shù)產(chǎn)生單元1504,用于為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)、
用以隨機選擇對當(dāng)前DCT系數(shù)中結(jié)尾處連續(xù)取值為0的AC分量的編碼方式; 且,交流分量單元1505對于以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),用于
在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時,將結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編
碼為EOB碼字;在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時,先將其中順序靠前的部分取值
為0的AC分量編碼得到零持續(xù)長度ZRL碼字,再將其中順序靠后的剩余取值為0的AC分
量編碼為EOB碼字。 實際應(yīng)用中,隨機數(shù)產(chǎn)生單元1504何時產(chǎn)生隨機數(shù),交流分量單元1505何時判斷
產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù)、以及如何實現(xiàn)前述新的編碼方式以隨機插入ZRL碼
字,可以有多種實現(xiàn)方式,由此,下面提供了6種裝置實施例、提供了不同的交流分量單元
1505實現(xiàn)方式。 裝置實施例一 本實施例中,隨機數(shù)產(chǎn)生單元1504在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)。且如圖16所示,本實施例中的DCT系數(shù)編碼裝置中的交流分量單元1505包括 第一選擇子單元1600,用于在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第一編碼子單元1601、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第二編碼子單元1602 ;
第一編碼子單元1601,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,先判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)分量掃描單元1503掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼; 第二編碼子單元1602,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,只要已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取 值為0的AC分量數(shù)量、并觸發(fā)分量掃描單元153掃描下一個AC分量;在判斷出該AC分量 是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的剩余連續(xù)取值為0的AC 分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼; 第一編碼子單元1601和第二編碼子單元1602,還均用于在每次掃描到取值非零 的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠 16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為 ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減16 ;然后,將 該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與取值非零的該AC 分量一同編碼,并將已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量清零;最后,在判斷出當(dāng) 前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)分量掃描單元1503掃描下 一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT系數(shù)的編碼。
本實施例中,第一編碼子單元1601具體可以按照如圖5所示現(xiàn)有編碼流程進行上 述處理,而第二編碼子單元1602則按照前述新編碼方式的基本原理進行處理,因而本實施 例可以看作是針對取值為O的AC分量,同時提供了相互獨立的基于現(xiàn)有編碼方式的一套處 理資源、以及基于前述新編碼方式的另一套處理資源。
裝置實施例二 本實施例中,隨機數(shù)產(chǎn)生單元1504在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之 前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)。且如圖17所示,本實施例中的DCT 系數(shù)編碼裝置中的交流分量單元1505包括 第二選擇子單元1700,用于在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,判斷 產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第 三編碼子單元1701、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第四編碼子單元1702 ;
第三編碼子單元1701,用于在每次判斷出當(dāng)前掃描的AC分量取值為O之后,先判 斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系 數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)分量 掃描單元1503掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT 系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的 編碼; 第四編碼子單元1702,用于在每次判斷出當(dāng)前掃描的AC分量取值為O之后,先判 斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系 數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量,然后只要累 加得到的已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將16個取值為0 的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減去16, 然后觸發(fā)分量掃描單元1503掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量 時,將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字, 并結(jié)束對當(dāng)前DCT系數(shù)的編碼; 第三編碼子單元1701、第四編碼子單元1702,還均用于在每次掃描到取值非零的 AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16
24個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為ZRL 碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減16 ;然后,將該 AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與取值非零的該AC分 量一同編碼,并將已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量清零;最后,在判斷出當(dāng)前 掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)分量掃描單元1503掃描下一 個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT系數(shù)的編碼。
本實施例中,第三編碼子單元1701具體可以按照如圖5所示現(xiàn)有編碼流程進行上 述處理,而第四編碼子單元1702則按照前述新編碼方式的基本原理進行處理、但具體處理 方式略區(qū)別于裝置實施例一中的第二編碼子單元1602,因而本實施例也可以看作是針對取 值為0的AC分量,同時提供了相互獨立的基于現(xiàn)有編碼方式的一套處理資源、以及基于前 述新編碼方式的另一套處理資源。
裝置實施例三 本實施例中,隨機數(shù)產(chǎn)生單元1504在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之 前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)。且如圖18所示,本實施例的DCT 系數(shù)編碼裝置中的交流分量單元1505包括 第三選擇子單元1800,用于在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,判斷 產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第 五編碼子單元1801、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第六編碼子單元1802 ;
第五編碼子單元1801,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,先判 斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系 數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)分量 掃描單元1503掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT 系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的 編碼; 第六編碼子單元1802,用于在每次判斷出當(dāng)前掃描的AC分量取值為O之后,先判 斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系 數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)分量 掃描單元1503掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,只要在該AC 分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將已掃描但未編 碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為16整數(shù)倍數(shù)量的ZRL碼字, 然后再將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為 EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼; 第五編碼子單元1801和第六編碼子單元1802,還均用于在每次掃描到取值非零 的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠 16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為 ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減16 ;然后,將 該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與取值非零的該AC 分量一同編碼,并將已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量清零;最后,在判斷出當(dāng) 前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)分量掃描單元1503掃描下一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT系數(shù)的編碼。
本實施例中,第五編碼子單元1801具體可以按照如圖5所示現(xiàn)有編碼流程進行上 述處理,而第六編碼子單元1802則按照前述新編碼方式的基本原理進行處理、但具體處理 方式略區(qū)別于裝置實施例一和二中的第二編碼子單元1602和第四編碼子單元1702,因而 本實施例也可以看作是針對取值為O的AC分量,同時提供了相互獨立的基于現(xiàn)有編碼方式 的一套處理資源、以及基于前述新編碼方式的另一套處理資源。 上述三個裝置實施例,都針對取值為0的AC分量,同時提供了相互獨立的基于現(xiàn) 有編碼方式的一套處理資源、以及基于前述新編碼方式的另一套處理資源,然后,考慮到無 論是采用哪一套處理資源,針對取值為0的AC分量均會存在部分相同的處理過程,因而還 可以復(fù)用相同的處理資源,具體參見后續(xù)裝置實施例四 六。
裝置實施例四 圖19為本發(fā)明裝置實施例四中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖。如圖19所示,
本實施例的DCT系數(shù)編碼裝置中的交流分量單元1505包括 第一公共子單元19,用于判斷出當(dāng)前掃描的AC分量取值是否為0 ; 第四選擇子單元1900,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,判斷
產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第
七編碼子單元1901、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第八編碼子單元1902 ; 第七編碼子單元1901,用于在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC
分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)分量掃描單元1503掃
描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)
的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼; 第八編碼子單1902,用于在已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠
16個時,先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值
為0的AC分量數(shù)量減去16,然后,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分
量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)分量掃描單元1503掃描
下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處未被編
碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編
碼; 非零公共子單元1500,無論產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),均用于在每次 掃描到取值非零的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的 AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC 分量循環(huán)編碼為ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù) 量減16 ;然后,將該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與 取值非零的該AC分量一同編碼,并將已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量清零; 最后,在判斷出當(dāng)前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)分量掃描 單元1503掃描下一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT 系數(shù)的編碼。 且,本實施例中隨機數(shù)產(chǎn)生單元1504在每次判斷出當(dāng)前掃描的AC分量取值為0 之后,為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)。
相比于裝置實施例一 三,本實施例中用于判斷當(dāng)前掃描的AC分量取值是否為0 的處理資源、以及針對取值非零的AC分量的處理資源被復(fù)用。而且,由于隨機數(shù)是針對每 個取值為0的AC分量所產(chǎn)生的,因而插入ZRL碼字的隨機性也就更高。換言之,本實施例 所能夠產(chǎn)生的碼字組合種類比裝置實施例一 三更多,因而本實施例針對每個取值為0的 AC分量生成一個隨機數(shù),要比對一組DCT系數(shù)統(tǒng)一生成一個隨機數(shù)要更為靈活。
裝置實施例五 圖20為本發(fā)明裝置實施例五中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖。如圖20所示,
本實施例的DCT系數(shù)編碼裝置中的交流分量單元1505包括 第一公共子單元19,用于判斷出當(dāng)前掃描的AC分量取值是否為0 ; 第二公共子單元20,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,判斷該
AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,如果不是,則累加已掃描但未編碼的連續(xù)
取值為0的AC分量數(shù)量,如果是,將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的連續(xù)取值為0
的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼; 第五選擇子單元2000,用于在每次累加已掃描但未編碼的連續(xù)取值為0的AC分量 數(shù)量之后,判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一 隨機數(shù)時觸發(fā)第九編碼子單元2001、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第十編 碼子單元2002 ; 第九編碼子單元2001,用于觸發(fā)分量掃描單元1503掃描下一個AC分量;
第十編碼子單元2002,用于在累加得到的已掃描但未編碼的連續(xù)取值為0的AC分 量數(shù)量足夠16個時,先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編 碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后觸發(fā)觸發(fā)分量掃描單元1503掃描下一個AC 非零公共子單元1500,無論產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),均用于在每次 掃描到取值非零的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的 AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC 分量循環(huán)編碼為ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù) 量減16 ;然后,將該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與 取值非零的該AC分量一同編碼,并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量清零; 最后,在判斷出當(dāng)前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)分量掃描 單元1503掃描下一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT 系數(shù)的編碼。 且,本實施例中,隨機數(shù)產(chǎn)生單元1504在每次累加已掃描但未編碼的連續(xù)取值為 0的AC分量數(shù)量之后,為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或第二隨 機數(shù)。 相比于裝置實施例一 三,本實施例中用于判斷當(dāng)前掃描的AC分量取值是否為0 的處理資源、用于判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量的處理資源、用于 累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量的處理資源、用于編碼得到EOB碼字的 處理資源、以及針對取值非零的AC分量的處理資源被復(fù)用。而且,由于隨機數(shù)是針對每個 取值為0的AC分量所產(chǎn)生的,因而插入ZRL碼字的隨機性也就更高。換言之,本實施例所
27能夠產(chǎn)生的碼字組合種類比裝置實施例一 三更多,因而本實施例針對每個取值為0的AC 分量生成一個隨機數(shù),要比對一組DCT系數(shù)統(tǒng)一生成一個隨機數(shù)要更為靈活。
裝置實施例六 圖21為本發(fā)明裝置實施例六中DCT系數(shù)編碼裝置的結(jié)構(gòu)示意圖。如圖21所示,
本實施例的DCT系數(shù)編碼裝置中的交流分量單元1505包括 第一公共子單元19,用于判斷出當(dāng)前掃描的AC分量取值是否為0 ; 第三公共子單元21,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,判斷該
AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,如果不是,則累加已掃描但未編碼的連續(xù)
取值為0的AC分量數(shù)量,如果是,則觸發(fā)第六選擇單元; 第六選擇單元2100,用于判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù) 產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第十一編碼子單元2101、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是 第二隨機數(shù)時觸發(fā)第十二編碼子單元2102 ; 第十一編碼子單元2101,用于將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分 量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼; 第十二編碼子單元2102,用于在該AC分量之前已掃描但未編碼的連續(xù)取值為0的 AC分量數(shù)量足夠16個時,先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC 分量循環(huán)編碼為16整數(shù)倍數(shù)量的ZRL碼字,然后再將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL 的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;
非零公共子單元1500,無論產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),均用于在每次 掃描到取值非零的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的 AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC 分量循環(huán)編碼為ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù) 量減16 ;然后,將該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與 取值非零的該AC分量一同編碼,并將已掃描但未編碼的連續(xù)取值為O的AC分量數(shù)量清零; 最后,在判斷出當(dāng)前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)分量掃描 單元1503掃描下一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT 系數(shù)的編碼。 且,本實施例中,隨機數(shù)產(chǎn)生單元1504在判斷出該AC分量是最后一個AC分量時, 為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)。 相比于裝置實施例一 三,本實施例中用于判斷當(dāng)前掃描的AC分量取值是否為0 的處理資源、用于判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量的處理資源、用于 累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量的處理資源、以及針對取值非零的AC 分量的處理資源被復(fù)用。 以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在 本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進等,均應(yīng)包含在本發(fā)明的保 護范圍之內(nèi)。
28
權(quán)利要求
一種離散余弦變換DCT系數(shù)的編碼方法,先對當(dāng)前DCT系數(shù)進行量化,然后對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼,再以之字形掃描順序?qū)Ξ?dāng)前DCT系數(shù)中的各交流AC分量進行編碼,對于不以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),先將取值非0的AC分量之前的連續(xù)取值為0的AC分量編碼為零持續(xù)長度ZRL碼字,再將剩余連續(xù)取值為0的AC分量與取值非0的AC分量一起編碼;其特征在于,該編碼方法為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)、用以隨機選擇對當(dāng)前DCT系數(shù)中結(jié)尾處連續(xù)取值為0的AC分量的編碼方式,其中,對于以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),如果產(chǎn)生的是第一隨機數(shù),則將結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為塊結(jié)束EOB碼字;如果產(chǎn)生的是第二隨機數(shù),則先將其中順序靠前的部分取值為0的AC分量編碼得到若干ZRL碼字,再將其中順序靠后的剩余取值為0的AC分量編碼為EOB碼字。
2. 如權(quán)利要求l所述的編碼方法,其特征在于,在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù) 或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù);如果產(chǎn)生的是第一隨機數(shù),則每次判斷出當(dāng)前掃描的AC分量取值為0之后在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為 0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;如果產(chǎn)生的是第二隨機數(shù),則每次判斷出當(dāng)前掃描的AC分量取值為O之后,只要已掃 描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將16個取值為0的AC分量編 碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的 剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。
3. 如權(quán)利要求l所述的編碼方法,其特征在于,在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù);如果產(chǎn)生的是第一隨機數(shù),則每次判斷出當(dāng)前掃描的AC分量取值為0之后 在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;如果產(chǎn)生的是第二隨機數(shù),則每次判斷出當(dāng)前掃描的AC分量取值為0之后 在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量,然后只要累加得到的已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的 連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。
4. 如權(quán)利要求l所述的編碼方法,其特征在于,在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù) 或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù);如果產(chǎn)生的是第一隨機數(shù),則每次判斷出當(dāng)前掃描的AC分量取值為0之后在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為 0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;如果產(chǎn)生的是第二隨機數(shù),則每次判斷出當(dāng)前掃描的AC分量取值為0之后在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,只要在該AC分量之前已掃描但未編碼的連 續(xù)取值為0的AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中 順序靠前的AC分量循環(huán)編碼為16整數(shù)倍數(shù)量的ZRL碼字,然后再將當(dāng)前DCT系數(shù)結(jié)尾處 未被編碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系 數(shù)的編碼。
5. 如權(quán)利要求1所述的編碼方法,其特征在于,該編碼方法每次判斷出當(dāng)前掃描的AC 分量取值為0之后為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生 的是第一隨機數(shù)還是第二隨機數(shù); 如果產(chǎn)生的是第一隨機數(shù),則在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為 0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;如果產(chǎn)生的是第二隨機數(shù),則只要已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠 16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值 為0的AC分量數(shù)量減去16,然后在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的 剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。
6. 如權(quán)利要求1所述的編碼方法,其特征在于,該編碼方法每次判斷出當(dāng)前掃描的AC 分量取值為0之后在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量,然后為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù); 如果產(chǎn)生的是第一隨機數(shù),則繼續(xù)掃描下一個AC分量;如果產(chǎn)生的是第二隨機數(shù),則只要累加得到的已掃描但未編碼的連續(xù)取值為0的AC分 量數(shù)量足夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編 碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的 連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。
7. 如權(quán)利要求1所述的編碼方法,其特征在于,該編碼方法每次判斷出當(dāng)前掃描的AC 分量取值為0之后在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的 連續(xù)取值為0的AC分量數(shù)量、并繼續(xù)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,先為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或 第二隨機數(shù),并判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),如果產(chǎn)生的是第一隨機數(shù),則將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng) 一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;如果產(chǎn)生 的是第二隨機數(shù),則只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的 AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC 分量循環(huán)編碼為16整數(shù)倍數(shù)量的ZRL碼字,然后再將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL 的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。
8. 如權(quán)利要求2至7中任一項所述的編碼方法,其特征在于,每次掃描到取值非零的 AC分量之后只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先 將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為ZRL碼字、 并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減16 ;將該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量與取值非零的 該AC分量一同編碼,并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量清零;然后,在判斷出當(dāng)前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,繼續(xù)掃描 下一個AC分量;在判斷出該AC分量是最后一個AC分量時,結(jié)束對當(dāng)前DCT系數(shù)的編碼。
9. 一種離散余弦變換DCT系數(shù)的編碼裝置,包括 量化處理單元,用于對當(dāng)前DCT系數(shù)進行量化;直流分量單元,用于對量化后的當(dāng)前DCT系數(shù)中的直流DC分量編碼; 分量掃描單元,用于以之字形掃描順序掃描當(dāng)前DCT系數(shù)中的各交流AC分量; 交流分量單元,對于不以連續(xù)取值為0的AC分量結(jié)尾的當(dāng)前DCT系數(shù),用于先將取值非0的AC分量之前的連續(xù)取值為0的AC分量編碼為零持續(xù)長度ZRL碼字,再將剩余連續(xù)取值為0的AC分量與取值非0的AC分量一起編碼;其特征在于,該編碼裝置還包括隨機數(shù)產(chǎn)生單元,用于為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)、用以隨機選擇對當(dāng)前DCT系數(shù)中結(jié)尾處連續(xù)取值為0的AC分量的編碼方式;且,交流分量單元對于以連續(xù)取值為O的AC分量結(jié)尾的當(dāng)前DCT系數(shù),在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時,將結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為塊結(jié)束E0B碼字;在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時,先將其中順序靠前的部分取值為O的AC分量編碼得到ZRL碼字,再將其中順序靠后的剩余取值為0的AC分量編碼為EOB碼字。
10. 如權(quán)利要求9所述的編碼裝置,其特征在于,隨機數(shù)產(chǎn)生單元在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù);且,交流分量單元包括第一選擇子單元,用于在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第一編碼子單元、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第二編碼子單元;第一編碼子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,先判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;第二編碼子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為O之后,只要已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。
11. 如權(quán)利要求io所述的編碼裝置,其特征在于,第一編碼子單元和第二編碼子單元,進一步用于在每次掃描到取值非零的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減16 ;然后,將該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與取值非零的該AC分量一同編碼,并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量清零;最后,在判斷出當(dāng)前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)掃描下一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT系數(shù)的編碼。
12. 如權(quán)利要求9所述的編碼裝置,其特征在于,隨機數(shù)產(chǎn)生單元在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù);且,交流分量單元包括第二選擇子單元,用于在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第三編碼子單元、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第四編碼子單元;第三編碼子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,先判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;第四編碼子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,先判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量,然后只要累加得到的已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后觸發(fā)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。
13. 如權(quán)利要求12所述的編碼裝置,其特征在于,第三編碼子單元和第四編碼子單元,進一步用于在每次掃描到取值非零的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減16 ;然后,將該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與取值非零的該AC分量一同編碼,并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量清零;最后,在判斷出當(dāng)前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)掃描下一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT系數(shù)的編碼。
14. 如權(quán)利要求9所述的編碼裝置,其特征在于,隨機數(shù)產(chǎn)生單元在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù);且,交流分量單元包括第三選擇子單元,用于在開始對當(dāng)前DCT系數(shù)中AC分量進行編碼之前,判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第五編碼子單元、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第六編碼子單元;第五編碼子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,先判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;第六編碼子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,先判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為16整數(shù)倍數(shù)量的ZRL碼字,然后再將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼。
15. 如權(quán)利要求14所述的編碼裝置,其特征在于,第五編碼子單元和第六編碼子單元,進一步用于在每次掃描到取值非零的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減16 ;然后,將該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與取值非零的該AC分量一同編碼,并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量清零;最后,在判斷出當(dāng)前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)掃描下一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT系數(shù)的編碼。
16. 如權(quán)利要求9所述的編碼裝置,其特征在于,交流分量單元包括第一公共子單元,用于判斷出當(dāng)前掃描的AC分量取值是否為0 ;第四選擇子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為O之后,判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第七編碼子單元、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第八編碼子單元;第七編碼子單元,用于在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;第八編碼子單,用于在已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個時,先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后,在判斷出該AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時,累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量、并觸發(fā)掃描下一個AC分量;在判斷出該AC分量是最后一個AC分量時,將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;且,隨機數(shù)產(chǎn)生單元在每次判斷出當(dāng)前掃描的AC分量取值為0之后,為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)。
17. 如權(quán)利要求9所述的編碼裝置,其特征在于,交流分量單元包括第一公共子單元,用于判斷出當(dāng)前掃描的AC分量取值是否為0 ;第二公共子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,如果不是,則累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量,如果是,將當(dāng)前DCT系數(shù)結(jié)尾處此時仍未被編碼的連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;第五選擇子單元,用于在每次累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量之后,判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第九編碼子單元、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第十編碼子單元;第九編碼子單元,用于觸發(fā)掃描下一個AC分量;第十編碼子單元,用于在累加得到的已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個時,先將16個取值為0的AC分量編碼得到ZRL碼字、并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減去16,然后觸發(fā)觸發(fā)掃描下一個AC分量;且,隨機數(shù)產(chǎn)生單元在每次累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量之后,為當(dāng)前DCT系數(shù)中當(dāng)前掃描的AC分量隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)。
18. 如權(quán)利要求9所述的編碼裝置,其特征在于,交流分量單元包括第一公共子單元,用于判斷出當(dāng)前掃描的AC分量取值是否為0 ;第三公共子單元,用于在每次判斷出當(dāng)前掃描的AC分量取值為0之后,判斷該AC分量是否為當(dāng)前DCT系數(shù)的最后一個AC分量,如果不是,則累加已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量,如果是,則觸發(fā)第六選擇單元;第六選擇單元,用于判斷產(chǎn)生的是第一隨機數(shù)還是第二隨機數(shù),并在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第一隨機數(shù)時觸發(fā)第十一編碼子單元、在隨機數(shù)產(chǎn)生單元產(chǎn)生的是第二隨機數(shù)時觸發(fā)第十二編碼子單元;第十一編碼子單元,用于將當(dāng)前DCT系數(shù)結(jié)尾處連續(xù)的所有取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;第十二編碼子單元,用于在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個時,先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為16整數(shù)倍數(shù)量的ZRL碼字,然后再將當(dāng)前DCT系數(shù)結(jié)尾處未被編碼為ZRL的剩余連續(xù)取值為0的AC分量統(tǒng)一編碼為EOB碼字,并結(jié)束對當(dāng)前DCT系數(shù)的編碼;且,隨機數(shù)產(chǎn)生單元在判斷出該AC分量是最后一個AC分量時,為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù)。
19. 如權(quán)利要求16至18任一項所述的編碼裝置,其特征在于,交流分量單元進一步包括非零公共子單元,用于在每次掃描到取值非零的AC分量之后,只要在該AC分量之前已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量足夠16個,則先將已掃描但未編碼的連續(xù)取值為0的AC分量中順序靠前的AC分量循環(huán)編碼為ZRL碼字、并在每次循環(huán)時對已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量減16 ;然后,將該AC分量之前不足以編碼為ZRL碼字的剩余連續(xù)取值為0的AC分量,與取值非零的該AC分量一同編碼,并將已掃描但未編碼的連續(xù)取值為0的AC分量數(shù)量清零;最后,在判斷出當(dāng)前掃描的AC分量不是當(dāng)前DCT系數(shù)的最后一個AC分量時觸發(fā)掃描下一個AC分量,在判斷出該AC分量是最后一個AC分量時結(jié)束對當(dāng)前DCT系數(shù)的編碼。
全文摘要
本發(fā)明公開了一種離散余弦變換(DCT)系數(shù)的編碼方法和裝置。本發(fā)明為當(dāng)前DCT系數(shù)隨機產(chǎn)生第一隨機數(shù)或第二隨機數(shù),如果產(chǎn)生的是第一隨機數(shù),則將結(jié)尾處連續(xù)的所有取值為0的交流(AC)分量編碼為塊結(jié)束(EOB)碼字;如果產(chǎn)生的是第二隨機數(shù),則在當(dāng)前DCT系數(shù)以連續(xù)取值為0的AC分量結(jié)尾時,將部分取值為0的AC分量編碼得到若干個零持續(xù)長度(ZRL)碼字,再將剩余取值為0的AC分量編碼為EOB碼字。這樣,對于通常以多于16個連續(xù)取值為0的AC分量結(jié)尾的很多組DCT系數(shù)來說,編碼后得到的碼流數(shù)據(jù)的周期性將被不同程度地破壞,進而能夠降低DCT系數(shù)編碼后的碼流數(shù)據(jù)所產(chǎn)生的電磁干擾(EMI)。
文檔編號H04N7/30GK101729899SQ20091023703
公開日2010年6月9日 申請日期2009年11月2日 優(yōu)先權(quán)日2009年11月2日
發(fā)明者王浩 申請人:北京中星微電子有限公司