TMS320C5409實現(xiàn)JPEG圖像壓縮系統(tǒng)設計
只需要3次乘法、3次加法。其中,
和差都是已知系數(shù),可通過查表獲得。
由此計算可知,一個8點DCT的Loeffler算法共需要11次乘法和29次加法。從DSP匯編語言編程的角度來看,一個代數(shù)運算應包括取操作數(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)。因為該算法是為高級語言設計,沒有利用匯編語言的特點和DSP硬件的特點。本文提出了基于DSP乘法累加單元的DCT快速算法。
DSP的乘法累加單元能在單周期內(nèi)完成一次乘法和一次累加運算。如匯編指令運用于DCT運算,將大大簡化程序的復雜度并減少計算時間。具體算法如下,利用蝶形運算:
從上面表達式可以看出,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)化
本文提出了基于實際情況的自適應量化方法,即量化階段采用二次計算的方法,其算法主要分為兩步:(1)對變換后的圖像系數(shù)進行自適應處理;(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é)省了一半時間,其效果是十分明顯的。
自適應量化
對自適應量化器進行仿真。本文采用中等復雜度的標準圖像作為測試圖,與基本JPEG系統(tǒng)進行性能比較(基于峰值信噪比(PSNR))。只將JPEG標準方法中的量化表更改為修正的量化表,就可以在同等壓縮比下,提高恢復圖像的質(zhì)量。表2為不同壓縮比下,采用JPEG量化表和自適應量化表兩種方法的峰值信噪比。從壓縮比和峰值信噪比的對比結(jié)果可看出,自適應量化JPEG方法的壓縮比略高于標準JPEG方法。
結(jié)語
該系統(tǒng)的優(yōu)點是提高了JPEG的運行速度,增強了圖像的壓縮率和質(zhì)量,并且易于硬件實現(xiàn)。這一方案可應用于需要對視頻圖像進行實時采集、壓縮及存儲的絕大部分場合。
評論