<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DSP Builder的JPEG靜態(tài)圖像壓縮算法的實現(xiàn)

          基于DSP Builder的JPEG靜態(tài)圖像壓縮算法的實現(xiàn)

          作者: 時間:2011-08-16 來源:網(wǎng)絡(luò) 收藏

          摘 要: 利用Altera公司提供的數(shù)字信號處理開發(fā)工具DSP Builder和現(xiàn)代DSP技術(shù),在Matlab/Simulink環(huán)境中建立了算法模型,并進(jìn)行了仿真驗證,最后將編譯代碼下載到硬件上進(jìn)行了在線調(diào)試。
          關(guān)鍵詞: DSP Builder;;FPGA

           隨著數(shù)字信號處理技術(shù)在應(yīng)用領(lǐng)域的迅速發(fā)展,以DSP處理器(如TI的TMS320系列)為應(yīng)用系統(tǒng)核心器件的傳統(tǒng)DSP技術(shù),由于其硬件結(jié)構(gòu)的不可變性和固定的數(shù)據(jù)總線寬度,很難滿足用戶對DSP系統(tǒng)可重配置性或可定制性的要求。而以大容量、高速度的FPGA為核心器件的現(xiàn)代DSP技術(shù)的出現(xiàn)成功解決了以上問題。FPGA內(nèi)嵌有可配置的高速RAM、PLL以及硬件乘法累加器等DSP模塊。因此,用FPGA實現(xiàn)數(shù)字信號處理可以很好地解決并行性和速度問題,而且其靈活的可配置特性,使得以FPGA為核心器件的DSP系統(tǒng)易于修改、測試及硬件升級。
          本文利用Altera公司推出的一個面向DSP開發(fā)的系統(tǒng)級設(shè)計工具DSP Builder,在深入研究算法原理的基礎(chǔ)上,設(shè)計了JPEG算法模型,并在Matalab/Simulink環(huán)境下進(jìn)行了算法級仿真;最后將算法編譯下載到FPGA硬件上,利用DSP Builder的HIL(Hardware In Loop)功能,由Simulink通過下載電纜向硬件輸入測試數(shù)據(jù),然后將測試結(jié)果送入Simulink中顯示。采用這種方法實現(xiàn)了硬件級的仿真驗證。
          1 DSP Builder介紹
          DSP Builder開發(fā)工具是Altera公司提供的數(shù)字信號處理平臺,它是一個系統(tǒng)級(或算法級)設(shè)計工具,架構(gòu)在多個軟件工具之上,并把系統(tǒng)級和RTL級兩個設(shè)計領(lǐng)域的設(shè)計工具連接起來,最大程度地發(fā)揮了兩種工具的優(yōu)勢。DSP Builder依賴于MathWorks公司的數(shù)學(xué)分析工具M(jìn)atlab/Simulink,以Simulink的Blockset出現(xiàn),可以在Simulink中進(jìn)行圖形化設(shè)計和仿真,同時通過SignalCompiler把Matlab/Simulink的設(shè)計文件(.mdl)轉(zhuǎn)成相應(yīng)的硬件描述語言VHDL設(shè)計文件(.vhd),以及用于控制綜合與編譯的TCL腳本。而對后者的處理可以由FPGA/CPLD開發(fā)工具Quartus II來完成。
          設(shè)計人員能夠同時進(jìn)行多個HDL模型或者QuartusII軟件設(shè)計工程的設(shè)計,為每一個模塊生成一個獨立的仿真模型,并且能夠在同一設(shè)計環(huán)境中,以標(biāo)準(zhǔn)Simulink/DSP Builder模型來仿真HDL模塊。此外,該工具可充分利用和重復(fù)使用現(xiàn)有設(shè)計,從而大大提高產(chǎn)品開發(fā)速度。在仿真軟件方面,除了可以利用Simulink的仿真環(huán)境,DSP Builder還提供了與Modelsim的接口,充分利用Modelsim仿真的優(yōu)勢。以前DSP開發(fā)者只能直接使用VHDL或VerilogHDL語言進(jìn)行FPGA的DSP系統(tǒng)設(shè)計,難度比較大?,F(xiàn)在利用基于FPGA的DSP開發(fā)工具DSP Builder以及完整的軟件開發(fā)平臺,可以使設(shè)計者遵循一條類似于軟件設(shè)計流程的開發(fā)方法進(jìn)行FPGA的DSP設(shè)計,設(shè)計效率大為提高?;贒SP Builder的系統(tǒng)級開發(fā)流程如圖1所示。

          2 JPEG算法原理

          JPEG專家組開發(fā)了兩種基本的壓縮算法,一種是以離散余弦變換DCT(Discrete Cosine Transform)為基礎(chǔ)的有損壓縮算法;另一種是以預(yù)測技術(shù)為基礎(chǔ)的無損壓縮算法。使用有損壓縮算法時,在壓縮比為25:1的情況下,壓縮后還原得到的圖像與原始圖像相比較,非圖像專家難于找出它們之間的區(qū)別,因此得到了廣泛的應(yīng)用。例如,在VCD和DVD-Video電視技術(shù) 中,就使用JPEG的有損壓縮算法來取消空間方向上的冗余數(shù)據(jù)。
          JPEG壓縮是有損壓縮,它利用了人眼視角系統(tǒng)的特性,使用量化和無損壓縮編碼相結(jié)合來去掉視角的冗余信息和數(shù)據(jù)本身的冗余信息。JPEG算法框圖如圖2所示。

          JPEG算法框圖

          壓縮編碼大致分成三個步驟:
          (1)使用正向離散余弦變換FDCT把空間域表示的圖變換成頻率域表示的圖。
          (2)使用加權(quán)函數(shù)對DCT系數(shù)進(jìn)行量化,這個加權(quán)函數(shù)對于人的視覺系統(tǒng)是最佳的。
          (3)使用霍夫曼可變字長編碼器對量化系數(shù)進(jìn)行編碼。譯碼(或者叫解壓縮)過程與壓縮編碼過程相反。
          3 JPEG算法模型的實現(xiàn)
          在DSP Builder下進(jìn)行系統(tǒng)搭建。DSP Builder平臺提供了加法器、乘法器以及數(shù)字信號處理涉及到的眾多模塊,對這些模塊可以進(jìn)行可視化的參數(shù)編輯。本設(shè)計從Matlab的Workspace中導(dǎo)入需要壓縮的圖像,然后通過用DSP Builder構(gòu)建的JPEG壓縮算法壓縮編解碼,最后在Matlab中顯示重建的圖像。JPEG靜態(tài)算法壓縮的對象是YCbCr格式的,所以在進(jìn)行圖像壓縮前要進(jìn)行預(yù)處理。通過Matlab中的Color Space Conversion將RGB格式的圖像轉(zhuǎn)換成YcbCr格式。
          待壓縮的圖像數(shù)據(jù)首先要進(jìn)行DCT變換,受FPGA硬件資源的限制,可以先進(jìn)行一維行變換,將得到的數(shù)據(jù)按列存儲到RAM中,等到數(shù)據(jù)全部輸入到RAM中,再對RAM中的數(shù)據(jù)進(jìn)行一維的DCT行變換。然后重復(fù)利用一維的DCT模塊,以節(jié)省硬件資源。
          DCT變換后的頻率系數(shù)要進(jìn)行量化。JPEG算法使用均勻量化器進(jìn)行量化,量化步距按照系數(shù)所在的位置和每種顏色分量的色調(diào)值確定。因為人眼對亮度信號與對色差信號敏感度不同,因此使用了兩種量化表。設(shè)計實現(xiàn)方法為:將DCT系數(shù)除以量化步長取整數(shù)。為了保證DCT系數(shù)中低頻分量先出現(xiàn),高頻分量后出現(xiàn),量化后的系數(shù)要重新編排,JPEG算法采用Z字型編碼,增加了連續(xù)“0”系數(shù)的個數(shù),即“0”的游程長度,以達(dá)到用更少的數(shù)據(jù)表示更多信息的目的,從而優(yōu)化編碼。量化的目的是減小非“0”系數(shù)的幅度以及增加“0”值系數(shù)的數(shù)目。
          JPEG算法使用了差分脈沖調(diào)制編碼(DPCM)技術(shù),對相鄰圖像塊之間量化DC系數(shù)的差值(Delta)進(jìn)行編碼。量化交流AC系數(shù)的特點是1×64矢量中包含許多“0”系數(shù),并且許多“0”是連續(xù)的,因此使用非常簡單和直觀的游程長度編碼(RLE)對它們進(jìn)行編碼。使用熵編碼還可以對DPCM編碼后的直流DC系數(shù)和RLE編碼后的交流AC系數(shù)作進(jìn)一步壓縮。在JPEG有損壓縮算法中,通過使用霍夫曼編碼器來減少熵,原因是使用霍夫曼編碼器可以用很簡單的查表(Lookup Table)方法進(jìn)行編碼。壓縮數(shù)據(jù)符號時,霍夫曼編碼器對出現(xiàn)頻度比較高的符號分配比較短的代碼,而對出現(xiàn)頻度較低的符號分配比較長的代碼。這種可變長度的霍夫曼碼表可以事先定義。
          JPEG編碼的最后一個步驟是把各種標(biāo)記代碼和編碼后的圖像數(shù)據(jù)組成一幀一幀的數(shù)據(jù),以便于傳輸、存儲和譯碼器譯碼,這種數(shù)據(jù)通常稱為JPEG位數(shù)據(jù)流。
          4 模型仿真分析
          設(shè)計采用DSP Builder的HIL進(jìn)行仿真驗證。HIL把設(shè)計包裹在一套接口中間進(jìn)行編譯,然后下載到板子的FPGA中。首先將模型文件(.mdl)用SignalCompiler編譯生成Quartus II的工程文件(.qpf);然后將工程文件加載到HIL模塊中,在HIL模塊中進(jìn)行時鐘、復(fù)位等信號設(shè)置,選擇FPGA器件型號;最后編譯文件并將配置下載到FPGA中。Simulink通過下載電纜把測試數(shù)據(jù)不斷輸入,然后在輸出端不斷獲得硬件運行的結(jié)果。利用HIL在硬件上進(jìn)行仿真,可以加快仿真速度,同時可對算法、時序和引腳配置進(jìn)行檢測。由于FPGA可以無限次燒錄,所以利用HIL進(jìn)行仿真非常方便。HIL仿真模塊如圖3所示。

          利用HIL進(jìn)行圖像的壓縮和解壓仿真驗證,觀察經(jīng)過壓縮和解壓后的圖像可以發(fā)現(xiàn),該仿真模型成功實現(xiàn)了JPEG靜態(tài)圖像壓縮的編解碼算法,解壓后的圖像效果很好。把SignalCompiler編譯生成Quartus II的工程文件(.qpf)下載到FPGA芯片中,觀察到使用的邏輯單元塊LE(Logic Elements)數(shù)量為1 224個,而用VHDL語言編寫JPEG算法下載到FPGA芯片中將占用1 483個單元塊。表1表明用DSP Builder進(jìn)行系統(tǒng)級的算法設(shè)計與用傳統(tǒng)的VHDL語言進(jìn)行設(shè)計更節(jié)省硬件資源。

          應(yīng)用現(xiàn)代DSP技術(shù),通過Altera公司提供的數(shù)字信號處理開發(fā)工具DSP Builder搭建了JPEG靜態(tài)圖像壓縮編解碼模型,并用HIL進(jìn)行了仿真驗證。實驗結(jié)果表明,設(shè)計的JPEG模型能夠成功實現(xiàn)靜態(tài)圖像的壓縮編解碼,且重建的圖像效果很好。應(yīng)用DSP Builder進(jìn)行系統(tǒng)級的算法設(shè)計相比用VHDL語言設(shè)計更節(jié)省硬件資源。



          關(guān)鍵詞: JPEG 圖像壓縮

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();