基于DSP的JPEG視頻壓縮系統的實現
5.2 C代碼優化
在JPEG的編碼中,根據VC5509A結構特點及結合圖像數據量大的特點,提高編碼效率,考慮程序編寫和優化如下:
(1)利用編譯器優化,開啟編譯器的優化選項,包括基本優化、文件級優化和程序級優化。
(2)使用本征(intrinsics)函數,C55x提供了一種特殊函數一本征函數,可迅速優化C代碼。本征甬數前有個下劃線“一”,調用方法和普通函數相同。
(3)使用圖像庫,TI提供基于C55x的圖像庫IMGLIB,庫中都是圖像處理常用的函數,而且可以用C語言調用,匯編優化好,執行效率高,因此盡量用庫函數。在JPEG編碼中比較關鍵的是DCT變換可調用庫函數中的IMG_sw_fdct_8x8(short*fdct_data,short, *inter_buffer),該函數完成一次DCT變換需用1 078個時鐘周期。大大提高JPEG的編碼效率。
(4)高效使用MAC硬件,C55x有專門的硬件高效執行MAC運算。一個周期中可以執行一個單乘加或一個雙乘加(dual-MAC)運算。
(5)使用特殊數據類型(register類型、volatile類型、const類型),對于需要多次重復訪問的變量,如for循環中的變量值,一般可設置為register型變量。聲明變量為register型能提高效率,但必須小心使用。在某些編譯器中,優化器會自動分配一些變量為register 型。
(6)減少判斷循環,在使用判斷方式選取控制語句時應盡量減少判斷轉移。DSP多采用流水線結構。由于TMS320C55X采用7級流水線結構,頻繁的轉移指令使得流水線難以發揮作用。
另外。DSP的大多數指令為單周期指令,但轉移類指令卻通常要耗費較多的機器周期。因此,應盡可能減少程序中的轉移分支,以提高程序的效率。本文引用地址:http://www.j9360.com/article/191911.htm
6 實驗結果
6.1 壓縮效果實驗結果
通過改變量化因子Q,改變圖像的壓縮比。壓縮比越大,壓縮過程中的視覺損失越大,壓縮后的圖片越不清晰。圖6為采用不同的量化因子Q的壓縮前后效果比較圖。其中,圖6a為未壓縮,大小57.4 KB的原始BMP圖像,圖6b為壓縮后大小為5.18 KB的圖像,圖6c為壓縮后大小5.18 KB的圖像。由圖知,壓縮后的圖像與原始圖像在視覺效果上相差不大。當Q=50時,壓縮后圖像所需存儲空間僅為原圖像的1/14。
6.2 壓縮耗時實驗結果
對于一個8x8數據塊,各步耗時如下:分塊:1.335μs;DCT變換:5. 39μs;量化:1.355μs;哈夫曼編碼:3.375μs。說明一個8x8數據塊總耗時為11.455μs,一幀720x576灰度圖像的壓縮總耗時為90x72x11.455=74 228.4μs,再加上其他輔助操作,實際耗時約75 ms。根據上述結果,在1 s內向上位機發送13幀720x576的灰度圖像,基本滿足系統要求。
7 結束語
介紹基于TMS320VC5509A DSP的JPEG視頻壓縮系統的設計和實現方案,該系統硬件設計采用DSP+FPGA的方案,充分發揮了各自優勢;而軟件設計針對C55x的結構進行程序結構和算法優化,經過驗證達到較好的實時效果。由于該系統體積小、功耗低,適用于一些野外圖像采集、遠程視頻監控等需要連續傳輸圖像的場合。
評論