TMS320C5409實(shí)現JPEG圖像壓縮系統設計

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

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

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

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

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