專利名稱:Dct量化的并行裝置及其方法
技術(shù)領(lǐng)域:
本發(fā)明屬于圖像處理技術(shù)領(lǐng)域,更進(jìn)一步涉及一種DCT (離散余弦變換)及量化的 裝置及其方法,可用于H. 264 (新一代視頻壓縮編碼標(biāo)準(zhǔn))的視頻編碼技術(shù)中。
背景技術(shù):
隨著視頻編解碼技術(shù)的飛速發(fā)展,數(shù)據(jù)壓縮技術(shù)得到了廣泛的應(yīng)用,其中離散余 弦變換(DCT)及量化技術(shù)作為一種有效的數(shù)據(jù)壓縮方法而被廣泛應(yīng)用在視頻編解碼領(lǐng)域。 例如,杭州高特信息技術(shù)有限公司擁有的專利技術(shù)“一種DCT快速變換結(jié)構(gòu)”(授權(quán)公告號 CN 1326397C)。該專利技術(shù)采用查表運(yùn)算替代乘法運(yùn)算,完成一次DCT需要一次蝶形運(yùn)算, 24個加法器,同時利用流水線設(shè)計思想以提高運(yùn)算速度。該專利存在的主要不足是第一, 由于該發(fā)明是針對8X8數(shù)據(jù)塊的實數(shù)變換,實數(shù)的浮點(diǎn)運(yùn)算將會造成解碼端數(shù)據(jù)失配,引 起漂移問題。第二,由于該發(fā)明只涉及離散余弦變換,在實際應(yīng)用中,還需單獨(dú)設(shè)計量化部 分,將DCT和量化分開設(shè)計的方法必然導(dǎo)致系統(tǒng)實時性降低。第三,由于該發(fā)明只是針對 8X8數(shù)據(jù)塊的處理,所以對于只允許采用4X4數(shù)據(jù)塊離散余弦變換的新一代視頻壓縮編 碼標(biāo)準(zhǔn)-H. 264則無能為力。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提出一種基于FPGA的集4X4整數(shù)離散 余弦變換和量化為一體的并行裝置及其方法。為實現(xiàn)上述目的,實現(xiàn)本發(fā)明的具體裝置包括整數(shù)離散余弦變換模塊、參數(shù)預(yù)處 理模塊以及量化模塊。離散余弦變換模塊由列整數(shù)離散余弦變換模塊和行整數(shù)離散余弦變 換模塊組成。參數(shù)預(yù)處理模塊由地址產(chǎn)生單元1、乘法因子存儲器、地址產(chǎn)生單元2、加法因 子存儲器、除法器、加法器1組成。量化模塊由求絕對值單元、乘法器、加法器2、移位器、符 號提取單元、轉(zhuǎn)換單元組成。列整數(shù)離散余弦變換模塊、行整數(shù)離散余弦變換模塊通過總線 串接后的輸出端與量化模塊中求絕對值單元、符號提取單元的輸入端相連。地址產(chǎn)生單元 1、乘法因子存儲器通過總線串接后的輸出端與量化模塊中乘法器的輸入端相連。地址產(chǎn)生 單元2、加法因子存儲器通過總線串接后的輸出端與量化模塊中加法器2的輸入端相連。除 法器、加法器1通過總線串接后的輸出端與量化模塊中移位器的輸入端相連。在量化模塊 內(nèi)部,求絕對值單元、乘法器、加法器2、移位器通過總線串接后的輸出端與轉(zhuǎn)換單元的輸入 端相連,符號提取單元的輸出端與轉(zhuǎn)換單元的輸入端相連。本發(fā)明方法的具體實施步驟如下(1)整數(shù)離散余弦變換。la)列整數(shù)離散余弦變換。將4X4數(shù)據(jù)矩陣輸入到列整數(shù)離散余弦變換模塊中, 與該模塊中的變換矩陣進(jìn)行加法及移位運(yùn)算。lb)行整數(shù)離散余弦變換。將列整數(shù)離散余弦變換結(jié)果輸入到行整數(shù)離散余弦變 換模塊中,與該模塊中的變換矩陣進(jìn)行加法及移位運(yùn)算。
(2)參數(shù)預(yù)處理。2a)獲取乘法因子。參數(shù)預(yù)處理模塊中地址產(chǎn)生單元1對輸入的量化參數(shù)q進(jìn)行 求余運(yùn)算,獲得地址值 =q% 6,B1作為輸入信號觸發(fā)乘法因子存儲器,輸出與 對應(yīng)的 存儲單元中的乘法因子。2b)獲取加法因子。參數(shù)預(yù)處理模塊中地址產(chǎn)生單元2對輸入的幀類型i以及量 化參數(shù)q進(jìn)行除法及加法運(yùn)算,獲得地址值a2=z‘+ 1,a2作為輸入信號觸發(fā)加法因子存儲器, 輸出與a2對應(yīng)的存儲單元中的加法因子。2c)獲取移位因子。參數(shù)預(yù)處理模塊中除法器、加法器1對輸入的量化參數(shù)q進(jìn)行 除法及加法運(yùn)算,獲得移位因子^ = 15 + f。(3)量化。3a)符號提取運(yùn)算。量化模塊中符號提取單元將步驟(Ib)行離散余弦變換結(jié)果的 16個數(shù)據(jù)的符號位依次存放到一個符號矢量寄存器中,提取出每個數(shù)據(jù)的符號位。3b)絕對值運(yùn)算。量化模塊中求絕對值單元對步驟(Ib)行離散余弦變換結(jié)果的 16個數(shù)據(jù)進(jìn)行絕對值運(yùn)算。3c)乘法運(yùn)算。量化模塊中乘法器對步驟3b)得到的16個絕對值與步驟2a)得到 的16個乘法因子進(jìn)行乘法運(yùn)算。3d)加法運(yùn)算。量化模塊中加法器2對步驟3c)得到的16個乘法結(jié)果與步驟2b) 得到的16個加法因子進(jìn)行加法運(yùn)算。3e)移位運(yùn)算。量化模塊中的移位器將步驟3d)得到的16個加法結(jié)果分別向右移 位y個位數(shù),y為步驟2c)中獲得的移位因子。3f)轉(zhuǎn)換運(yùn)算。量化模塊中轉(zhuǎn)換單元將步驟3a)得到的符號位添加到步驟3e)的 移位結(jié)果上,使得無符號數(shù)轉(zhuǎn)化為有符號數(shù)。與現(xiàn)有技術(shù)比較,本發(fā)明具有如下優(yōu)點(diǎn)第一,在視頻編解碼應(yīng)用中,由于本發(fā)明采用4X4整數(shù)離散余弦變換,與采用 8X8實數(shù)離散余弦變換相比,避免了解碼端圖像數(shù)據(jù)的匹配問題,使得圖像質(zhì)量更好。第二,本發(fā)明將離散余弦變換中的乘法和量化中的乘法合二為一,統(tǒng)一由量化中 步驟3c)的乘法運(yùn)算實現(xiàn),與現(xiàn)有技術(shù)中將兩者分開的設(shè)計相比效率更高。而且本發(fā)明采 用整數(shù)運(yùn)算代替現(xiàn)有技術(shù)中的實數(shù)運(yùn)算,可有效減少計算量,使得效率更高。第三,本發(fā)明中由于采用并行處理技術(shù),對整數(shù)離散余弦變換與參數(shù)預(yù)處理并行 執(zhí)行;對乘法因子、加法因子與移位因子的獲取并行執(zhí)行;對符號提取運(yùn)算與求絕對值運(yùn) 算也是并行執(zhí)行,所以本發(fā)明充分利用了 FPGA的并行處理結(jié)構(gòu),使得數(shù)據(jù)處理的效率大大 提尚。
圖1是本發(fā)明裝置的結(jié)構(gòu)示意圖。圖2是本發(fā)明方法的流程圖。圖3是本發(fā)明的仿真結(jié)果示意圖。
具體實施例方式下面結(jié)合附圖,對本發(fā)明做進(jìn)一步的描述。步驟一、整數(shù)離散余弦變換。在視頻編碼技術(shù)中,為了節(jié)省圖像傳輸碼率,需要將圖像數(shù)據(jù)進(jìn)行整數(shù)離散余弦 變換,整數(shù)離散余弦變換可以有效去除圖像信號中數(shù)據(jù)的相關(guān)性,從而實現(xiàn)對圖像數(shù)據(jù)的 壓縮。在FPGA硬件實現(xiàn)中,通常將整數(shù)離散余弦變換分成列整數(shù)離散余弦變換、行整數(shù)離 散余弦變換兩個過程,以提高效率。la)列整數(shù)離散余弦變換。將4X4數(shù)據(jù)矩陣輸入到列整數(shù)離散余弦變換模塊中, 與該模塊中的變換矩陣進(jìn)行加法及移位運(yùn)算。lb)行整數(shù)離散余弦變換。將列整數(shù)離散余弦變換結(jié)果輸入到行整數(shù)離散余弦變 換模塊中,與該模塊中的變換矩陣進(jìn)行加法及移位運(yùn)算。步驟二、參數(shù)預(yù)處理。為了對整數(shù)離散余弦變換后的結(jié)果進(jìn)行后續(xù)的量化操作,需要做一些參數(shù)預(yù)處理 的操作,以獲取量化過程中需要的乘法因子、加法因子以及移位因子。2a)獲取乘法因子。乘法因子存儲器劃分為6個存儲區(qū),每個存儲區(qū)設(shè)定為16個 存儲單元,每個單元中存放一個14位位寬的乘法因子。參數(shù)預(yù)處理模塊中的地址產(chǎn)生單元 1對輸入的量化參數(shù)q進(jìn)行求余運(yùn)算,獲得取值范圍0 5的地址值ai = 6, 作為輸 入信號觸發(fā)乘法因子存儲器,并行輸出與對應(yīng)的存儲區(qū)中16個存儲單元內(nèi)的乘法因子。2b)獲取加法因子。加法因子存儲器設(shè)定為18個存儲單元,每個單元中存放一個 26位位寬的加法因子。參數(shù)預(yù)處理模塊中的地址產(chǎn)生單元2對輸入的幀類型i以及量化參
數(shù)q進(jìn)行除法與加法運(yùn)算,獲得取值范圍0 17的地址值a2=z‘ + "|,a2作為輸入信號觸發(fā)加
法因子存儲器,輸出與&2對應(yīng)的存儲單元內(nèi)的加法因子。2c)獲取移位因子。參數(shù)預(yù)處理模塊中的除法器、加法器1對輸入的量化參數(shù)q進(jìn) 行除法與加法運(yùn)算,獲得移位因子少=15+*。步驟三、量化。在視頻編碼技術(shù)中,為了節(jié)省圖像傳輸碼率,在將圖像數(shù)據(jù)進(jìn)行整數(shù)離散余弦變 換后,還需要對變換后的圖像數(shù)據(jù)進(jìn)行量化操作。量化操作可以減少圖像編碼的動態(tài)范圍, 從而在離散余弦變換壓縮的基礎(chǔ)上,實現(xiàn)對圖像數(shù)據(jù)的進(jìn)一步壓縮。3a)符號提取運(yùn)算。量化模塊中的符號提取單元取出步驟(Ib)行離散余弦變換結(jié) 果中16個數(shù)據(jù)的16個最高位,即符號位,將16個數(shù)據(jù)的符號位按照從低位到高位的順序 依次存放到一個16位的符號矢量寄存器中。3b)求絕對值。量化模塊中的求絕對值單元對步驟(Ib)獲得的行離散余弦變換結(jié) 果中16個數(shù)據(jù)分別取絕對值,絕對值的獲取是調(diào)用Verilog原語庫中現(xiàn)存的求絕對值模塊 lpm_abs0來實現(xiàn)的。3c)乘法運(yùn)算。量化模塊中的乘法器將步驟3b)得到的16個絕對值與步驟2a)得 到的16個乘法因子對應(yīng)相乘,調(diào)用Verilog原語庫中現(xiàn)存的乘法器模塊lpm_mult0實現(xiàn)乘
法運(yùn)算。3d)加法運(yùn)算。量化模塊中的加法器2對步驟3c)得到的16個乘法結(jié)果分別與步驟2b)得到的加法因子進(jìn)行加法運(yùn)算,調(diào)用Verilog原語庫中現(xiàn)存的加法器模塊lpm_add_ subO實現(xiàn)加法運(yùn)算。3e)移位運(yùn)算。量化模塊中的移位器將步驟3d)得到的16個加法結(jié)果分別向右移 位y個位數(shù),y為步驟2c)獲得的移位因子。3f)轉(zhuǎn)換運(yùn)算。量化模塊的轉(zhuǎn)換單元取出步驟3a)獲得的符號位矢量寄存器中的 16個符號位信息,按照從低位到高位的順序,將該16個符號位分別添加到步驟3e)獲得的 16個移位結(jié)果上,完成無符號數(shù)向有符號數(shù)轉(zhuǎn)換的運(yùn)算。本發(fā)明的效果可通過以下仿真進(jìn)一步說明。本發(fā)明在Quartus II 8. 0軟件下進(jìn)行仿真,輸入幀類型信號i,輸入量化參數(shù)q,
輸入待處理的16路并行數(shù)據(jù)(xOO、x01.....x33),經(jīng)本發(fā)明的離散余弦變換及量化處理
后,輸出16路并行處理結(jié)果(y00、y01.....y33)。圖3的仿真波形中在第5個時鐘elk
上升沿到來時,(y00、y01.....y33)的值是第一組數(shù)據(jù)的處理結(jié)果,隨后每個時鐘elk上升
沿到來時,(y00、y01.....y33)的值是下一組數(shù)據(jù)的處理結(jié)果。圖3中所有輸出結(jié)果與經(jīng)
離散余弦變換及量化后的理論值完全一致,驗證了本發(fā)明的正確性。
權(quán)利要求
一種DCT量化的并行裝置,包括整數(shù)離散余弦變換模塊、參數(shù)預(yù)處理模塊以及量化模塊,其特征在于列整數(shù)離散余弦變換模塊、行整數(shù)離散余弦變換模塊通過總線串接后的輸出端與量化模塊中求絕對值單元、符號提取單元的輸入端相連;地址產(chǎn)生單元1、乘法因子存儲器通過總線串接后的輸出端與量化模塊中乘法器的輸入端相連;地址產(chǎn)生單元2、加法因子存儲器通過總線串接后的輸出端與量化模塊中加法器2的輸入端相連;除法器、加法器1通過總線串接后的輸出端與量化模塊中移位器的輸入端相連;求絕對值單元、乘法器、加法器2、移位器通過總線串接后的輸出端與轉(zhuǎn)換單元的輸入端相連;符號提取單元的輸出端與轉(zhuǎn)換單元的輸入端相連。
2.根據(jù)權(quán)利要求1所述DCT量化的并行裝置,其特征在于所述的乘法因子存儲器劃 分為6個存儲區(qū),每個存儲區(qū)設(shè)定為16個存儲單元,每個單元中存放一個14位位寬的乘法 因子。
3.根據(jù)權(quán)利要求1所述DCT量化的并行裝置,其特征在于所述的加法因子存儲器設(shè) 定為18個存儲單元,每個單元中存放一個26位位寬的加法因子。
4.一種DCT量化的并行方法,包括如下步驟(1)整數(shù)離散余弦變換la)列整數(shù)離散余弦變換將4X4數(shù)據(jù)矩陣輸入到列整數(shù)離散余弦變換模塊中,與該 模塊中的變換矩陣進(jìn)行加法及移位運(yùn)算;lb)行整數(shù)離散余弦變換將列整數(shù)離散余弦變換結(jié)果輸入到行整數(shù)離散余弦變換模 塊中,與該模塊中的變換矩陣進(jìn)行加法及移位運(yùn)算;(2)參數(shù)預(yù)處理2a)獲取乘法因子參數(shù)預(yù)處理模塊中地址產(chǎn)生單元1對輸入的量化參數(shù)q進(jìn)行求余 運(yùn)算,獲得地址值 =q% 6,輸入地址值ai觸發(fā)乘法因子存儲器并行輸出與對應(yīng)的存 儲區(qū)中16個存儲單元內(nèi)的16乘法因子;2b)獲取加法因子參數(shù)預(yù)處理模塊中地址產(chǎn)生單元2對輸入的幀類型i以及量化參數(shù)q進(jìn)行除法及加法運(yùn)算,獲得地址值&2=ζ‘ + |,輸入地址值a2觸發(fā)觸發(fā)加法因子存儲器輸出與a2對應(yīng)的存儲單元內(nèi)的加法因子;2c)獲取移位因子參數(shù)預(yù)處理模塊中除法器、加法器1對輸入的量化參數(shù)q進(jìn)行除法及加法運(yùn)算,獲得移位因子^ = 15 + i ;6(3)量化3a)符號提取運(yùn)算量化模塊的符號提取單元將步驟(Ib)行離散余弦變換結(jié)果的16 個數(shù)據(jù)的符號位依次存放到一個16位的符號矢量寄存器中,提取出每個數(shù)據(jù)的符號位;3b)絕對值運(yùn)算量化模塊中求絕對值單元對步驟(Ib)行離散余弦變換結(jié)果的16個 數(shù)據(jù)分別取絕對值;3c)乘法運(yùn)算。量化模塊中乘法器對步驟3b)得到的16個絕對值與步驟2a)得到的 16個乘法因子進(jìn)行乘法運(yùn)算;3d)加法運(yùn)算量化模塊中加法器2對步驟3c)得到的16個乘法結(jié)果與步驟2b)得到 的16個加法因子進(jìn)行加法運(yùn)算;3e)移位運(yùn)算量化模塊中的移位器將步驟3d)得到的16個加法結(jié)果分別向右移位y 個位數(shù),y為步驟2c)獲得的移位因子;3f)轉(zhuǎn)換運(yùn)算量化模塊中轉(zhuǎn)換單元將步驟3a)得到的符號位添加到步驟3e)的移位 結(jié)果上,使得無符號數(shù)轉(zhuǎn)化為有符號數(shù)。
全文摘要
本發(fā)明公開了一種DCT量化的并行裝置及其方法。其裝置包括整數(shù)離散余弦變換模塊,參數(shù)預(yù)處理模塊以及量化模塊。其方法的步驟為(1)整數(shù)離散余弦變換模塊分別對數(shù)據(jù)矩陣進(jìn)行列整數(shù)離散余弦變換和行整數(shù)離散余弦變換;(2)參數(shù)預(yù)處理模塊同時獲取乘法因子、加法因子及移位因子;(3)量化模塊完成符號提取運(yùn)算、絕對值運(yùn)算、乘法運(yùn)算、加法運(yùn)算、移位運(yùn)算及轉(zhuǎn)換運(yùn)算。本發(fā)明采用4×4整數(shù)離散余弦變換,在避免解碼端圖像數(shù)據(jù)匹配問題的同時具有計算量小的優(yōu)點(diǎn)。本發(fā)明充分利用了FPGA的并行處理結(jié)構(gòu),具有數(shù)據(jù)處理的效率高的優(yōu)點(diǎn)。
文檔編號H04N7/30GK101977318SQ20101052797
公開日2011年2月16日 申請日期2010年10月29日 優(yōu)先權(quán)日2010年10月29日
發(fā)明者劉洋, 劉飛飛, 初秀琴, 吳碩, 孔聰, 常方, 張松松, 王飛 申請人:西安電子科技大學(xué)