引言
隨著多媒體和網(wǎng)絡(luò)技術(shù)的發(fā)展,,數(shù)字圖像大信息量的特點對圖像壓縮技術(shù)的要求越來越高,因此,,專用高速數(shù)字信息處理技術(shù)成為發(fā)展的方向,。TI推出的C5000系列DSP將數(shù)字信號處理器使信號處理系統(tǒng)的研究重點又回到軟件算法上。在壓縮算法研究方面,,DCT,、小波等多個算法因為其高可靠性和高效性也越來越受到青睞。
系統(tǒng)硬件設(shè)計
TMS320C5409作為主處理器的可行性分析
TMS320C5409時鐘頻率為100MHz,,性價比極高,。采用圍繞1組程序總線、3組數(shù)據(jù)總線和4組地址總線建立的改進型哈佛結(jié)構(gòu),取址和讀數(shù)可同時進行,。有獨立的硬件乘法器,,有利于實現(xiàn)優(yōu)化卷積、數(shù)字濾波,、FFT,、矩陣運算等算法中的大量重復(fù)乘法運算。具有循環(huán)尋址,、位倒序等特殊指令,,這些指令使FFT、卷積等運算中的尋址,、排序及計算速度大大提高,。有一組或多組獨立的DMA總線,與CPU的程序,、數(shù)據(jù)總線并行工作。
在本系統(tǒng)中,,TMS320C5409作為主處理器,,任務(wù)是實現(xiàn)JPEG壓縮編碼。
通過分析不難得到,,當處理一幀大小為640×480的圖像時,,作JPEG壓縮編碼所需要的時間為:T=62×10(ns)×640×480=0.19866s,當所處理的圖像分辨率更小時,,則壓縮每幀所花的時間更少,,這對于應(yīng)用在對實時性要求不是很高的場合是完全可行的。

硬件設(shè)計框圖
圖1是基于TMS320C5409的圖像處理系統(tǒng)結(jié)構(gòu)圖,。C5409為中央處理器,,SRAM為DSP片外擴展數(shù)據(jù)存儲器,EEPROM為脫機工作時的程序存儲器,,用于存儲系統(tǒng)的引導(dǎo)程序和其它應(yīng)用程序,,A/D轉(zhuǎn)換部分負責(zé)把轉(zhuǎn)換為數(shù)字信號的圖像存入幀存儲器中。地址譯碼,、圖像采集系統(tǒng)控制電路產(chǎn)生本系統(tǒng)各部分的地址譯碼信號,,使之映射到不同的地址區(qū)域,并控制ADC進行圖像采集,,這部分由CPLD控制;圖像采集芯片的寄存器控制由51單片機完成,。
存儲空間的擴展方案
經(jīng)過A/D轉(zhuǎn)換的原始圖像數(shù)據(jù)是非常大的,TMS320C5409的內(nèi)部僅有32KB的RAM和16KB的ROM,,不能滿足需要,,因此,必須擴展存儲器來存放原始圖像數(shù)據(jù)和應(yīng)用程序。本文考慮外接64KB的RAM和512KB的Flash,,RAM使用Cypress公司的CY7C1021V33,,F(xiàn)lash采用SST公司的SST39VF512。由于C5409的數(shù)據(jù)空間僅為64KB,,因此采用內(nèi)存頁擴展技術(shù),。C5409的擴展輸出口1Q和2Q作為擴展內(nèi)存的頁選擇信號。用C5409的A15引腳和XF引腳通過3/8譯碼器來控制擴展存儲器片選信號的產(chǎn)生,,當A15=0時,,選擇片內(nèi)RAM;當A15=1,XF=0時選擇片外SRAM;當A15=1,,XF=1時選擇片外Flash;存儲器的擴展如圖2所示,。將外部擴展RAM的64KB中的48KB用于存放原始圖像數(shù)據(jù),16KB用于存放壓縮后的圖像和程序以及暫存的數(shù)據(jù),。
DSP芯片電源電路設(shè)計
電源設(shè)計中需要考慮的主要問題是功率和散熱,。功率要求:電流的消耗主要取決于器件的激活度,即CPU的激活度,,外設(shè)功耗主要取決于正在工作的外設(shè)及其速度,,與CPU相比,外設(shè)功耗是比較小的,。以TMS320C5409為例,,進行FFT運算時,需要的電源電流最大,。因此在設(shè)計電源時,,必須考慮在電源電流和實際需用電流之間留有一定裕量,因為峰值電流會更大,,裕量至少是20%,。
C5409采用了雙電源供電機制,工作電壓為3.3V和1.8V,。其中,,1.8V主要為DSP的內(nèi)部邏輯提供電壓,包括CPU和其它所有外設(shè)邏輯,。外部接口引腳采用3.3V電壓,。本系統(tǒng)的電源采用了TI公司的兩路輸出電源芯片TPS73HD318,它是一種雙輸出穩(wěn)壓器,。輸出電壓一路為3.3V,、一路為1.8V,每路電源的最大輸出電流為750mA,。
JPEG圖像壓縮算法
JPEG算法的優(yōu)化
盡管JPEG基本系統(tǒng)能夠?qū)D像進行低壓縮比壓縮,,但是DCT和IDCT在軟件實現(xiàn)的過程中,,是最耗費時間的運算,而且,,由于沒有考慮圖像本身的頻譜特性,,JPEG量化表對于所有圖像壓縮并不一定最優(yōu)。采用快速DCT算法可提高軟件的速度,,增強軟件的實時性,。同時,根據(jù)圖像本身的頻譜特性,,自適應(yīng)改進JPEG推薦的量化表,。
快速DET算法
如果將一幅圖像分成許多8×8的小塊后直接進行2D—DCT變換,運算量將會十分巨大,。因此,,需要將8×8二維DCT變換轉(zhuǎn)換成兩次8點的一維DCT復(fù)合運算。具體做法是對每一個8×8塊先做列方向上的DCT變換,,得到一個中間矩陣,,再對該矩陣各行進行DCT變換??梢钥吹?,8×8矩陣的2維DCT可以轉(zhuǎn)換成16次一維8點DCT。
目前,,很多針對一維DCT運算的DCT快速算法已經(jīng)提出,。其中,,Loeffler算法所需要的計算量最小,。Loeffler算法將8點一維DCT運算分為4級,由于各級之間的輸入/輸出存在依存關(guān)系,,4級操作必須串行進行,,而各級內(nèi)部的運算可并行處理。
流程圖中有三種運算因子:蝶形因子,、旋轉(zhuǎn)因子和倍乘因子,,分別如圖3中的a,b,,c所示,。蝶形因子的運算關(guān)系為:

D0=I0+I1
O1=I0-I1
需要2次加法完成,倍乘因子的輸入/輸出關(guān)系比較簡單:,,只需1次乘法,,旋轉(zhuǎn)因子的運算關(guān)系為:

需4次乘法、2次加法完成,。如果對其輸入/輸出關(guān)系式做以下變換:

只需要3次乘法,、3次加法,。其中,

和差都是已知系數(shù),可通過查表獲得,。
由此計算可知,,一個8點DCT的Loeffler算法共需要11次乘法和29次加法。從DSP匯編語言編程的角度來看,,一個代數(shù)運算應(yīng)包括取操作數(shù),、運算、存操作數(shù)三個步驟,。因此,,該算法大約需要120條指令。C5409的運算能力很強,,支持單周期加/減法和單周期乘法運算,,并且能夠在單周期內(nèi)完成兩個16位數(shù)的加/減法運算,再加上DSP中有3組數(shù)據(jù)總線,,因而可以利用長操作數(shù)(32位)進行長字運算,。在長字指令中,給出的地址存取的總是高16位操作數(shù),,因而只需5條長字指令即可計算2個蝶形運算,。加上采取其它優(yōu)化措施,大約需90條指令完成Loeffler算法,。
雖然Loeffler算法運算量最小,,但是運用于本文系統(tǒng)并不是最優(yōu)。因為該算法是為高級語言設(shè)計,,沒有利用匯編語言的特點和DSP硬件的特點,。本文提出了基于DSP乘法累加單元的DCT快速算法。
DSP的乘法累加單元能在單周期內(nèi)完成一次乘法和一次累加運算,。如匯編指令運用于DCT運算,,將大大簡化程序的復(fù)雜度并減少計算時間。具體算法如下,,利用蝶形運算:

從上面表達式可以看出,,y(0)-y(7)都是乘法累加運算,而s0-s7可由x(0)一x(7)經(jīng)過蝶形運算得到,,因此,,DCT算法由原來的4級運算變成兩級,即第一級蝶形運算和第二級乘法累加運算,,第一級蝶形運算共要10+4=14(10次計算操作和4次輔助操作)條指令,,第二級運算中,每個輸出要4+1+1=6條指令(做4次乘法累加運算,、1次讀取操作和1次存儲操作),,一共48條指令,,這樣,計算一個8點DCT要62條指令,,大大縮減了運算時間,,提高了CPU的工作效率,增強系統(tǒng)的實時性,。
量化運算優(yōu)化
本文提出了基于實際情況的自適應(yīng)量化方法,,即量化階段采用二次計算的方法,其算法主要分為兩步:(1)對變換后的圖像系數(shù)進行自適應(yīng)處理;(2)構(gòu)造新的量化表,。具體方法如下:

首先求出亮度分量和兩個色度分量在頻域中所有8×8子塊的63個交流系數(shù)絕對值的平均值P(u,,v),其中,,u,,v=0…7為位置信息。接下來求出163個交流系數(shù)平均值中的最大值,,Z1(u,,v)=MAX[P1(u,v)],,最后將63個交流系數(shù)平均值進行歸一化處理,,同時加入頻率位置信息,分別得出亮度和色度量化表中63個交流分量的矯正系數(shù),,計算過程為:

由此可以得到量化表的矯正式Qpl(u,,v)=Q1(u,v)/X1(u,,v),,對JPEG量化表進行矯正。
將上述矯正后的量化表作為最終的量化表,,對圖像進行標準JPEG壓縮,,形成完全符合JPEG格式的壓縮文件,。本算法的解碼過程與標準.JPEG解碼過程完全相同,,可以看出它也是標準.IPEG編碼過程的逆過程。
實驗結(jié)果
快速DCT運算
將本文提出的算法,、Loeffler的DSP優(yōu)化算法和純Loeffler算法分別進行測試,。結(jié)果見表1,可以看到本文算法較Loeffler的DSP優(yōu)化算法大約節(jié)省了1/4的時間,,較純Loeffler算法大約節(jié)省了一半時間,,其效果是十分明顯的。
自適應(yīng)量化
對自適應(yīng)量化器進行仿真,。本文采用中等復(fù)雜度的標準圖像作為測試圖,,與基本JPEG系統(tǒng)進行性能比較(基于峰值信噪比(PSNR)),。只將JPEG標準方法中的量化表更改為修正的量化表,就可以在同等壓縮比下,,提高恢復(fù)圖像的質(zhì)量,。表2為不同壓縮比下,采用JPEG量化表和自適應(yīng)量化表兩種方法的峰值信噪比,。從壓縮比和峰值信噪比的對比結(jié)果可看出,,自適應(yīng)量化JPEG方法的壓縮比略高于標準JPEG方法。
結(jié)語
該系統(tǒng)的優(yōu)點是提高了JPEG的運行速度,,增強了圖像的壓縮率和質(zhì)量,,并且易于硬件實現(xiàn)。這一方案可應(yīng)用于需要對視頻圖像進行實時采集,、壓縮及存儲的絕大部分場合,。