《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于DSP的數字圖像采集、壓縮系統的設計與實現
基于DSP的數字圖像采集、壓縮系統的設計與實現
李世軍,黃 鋒,屈喜龍,郭照南
摘要: 一種基于高速數字信號處理器TMS320VC5410DSP和CPLD的圖像采集、壓縮系統,分析了系統設計時的各個關鍵技術環節,介紹了JPEG圖像編碼算法的DSP的實現,討論了圖像編碼中DCT變換的實現和優化,利用DSP的乘法累加指令和雙字加/減法指令快速實現DCT。
關鍵詞: DSP JPEG DCT變換
Abstract:
Key words :

  摘 要: 一種基于高速數字信號處理器TMS320VC5410DSP和CPLD的圖像采集、壓縮系統,分析了系統設計時的各個關鍵技術環節,介紹了JPEG圖像編碼算法的DSP的實現,討論了圖像編碼中DCT變換的實現和優化,利用DSP的乘法累加指令和雙字加/減法指令快速實現DCT。
 關鍵詞: DSP;JPEG;DCT變換

 

  隨著計算機與圖像處理技術的日益發展,研究圖像采集、處理的實時實現具有重要的現實意義。而視頻圖像信號數據量較大、信號較為復雜,這就要求視頻圖像信號處理系統具有實時采集、大容量存儲和實時處理的特點。傳統的數字圖像處理系統多采用計算機加軟件、單片機或專用DSP等來實現。這些方法有的處理速度較慢,無法滿足現代圖像處理系統的實時性要求;有的專業性太強,應用受限制?;谝陨细鞣矫娴目紤],本文提出一種基于DSP和CPLD的視頻圖像采集、壓縮系統。JPEG算法是一種數字圖像壓縮編碼算法,具有壓縮比例高、失真小的特點,并已被確定為國際標準[1]。該標準被廣泛應用于數碼相機、監視系統、手機、可視電話等諸多方面。而實現JPEG算法一般有3種, 即純軟件實現法、專用集成電路實現法及基于DSP的軟硬件綜合實現法。純軟件實現法一般依賴PC機的支持,不適應嵌入式應用需要;專用集成電路實現法實時性好,但靈活性以及可擴展性差;用DSP編程實現JPEG,其算法靈活,滿足嵌入式應用需要,具有較好的交互能力,并且具有很好的可擴展性、可升級性和易維護性。
1 系統硬件設計
選用TMS320VC5410DSP芯片作為系統主處理器,CPLD為協處理器。該嵌入式系統能完成視頻圖像信號的采集、處理、壓縮編碼、存儲等一系列功能。構建的圖像處理系統由主處理器TMS320C5410DSP、1片256 K×16 bit Flash、2片4 M×16 bit SDRAM、外部存儲器接口EMIF(External Memory Interface)和其他通用外設接口,如RS-232、音頻接口等組成。另外采集模塊主要由視頻解碼A/D芯片、采集和顯示時序控制芯片IspLSI2064CPLD等[2]組成。系統結構原理如圖1所示。

 


(1)CCD攝像頭用來采集模擬視頻圖像數據。
(2)視頻解碼A/D芯片Philips SAA7113將模擬視頻電視信號(本系統PAL制)數字化。輸出為符合CCIR.601標準的數字視頻碼流。
(3)FIFO AL422B作為A/D與VC5416DSP之間的數據緩沖,使A/D的轉換速度與DSP讀取A/D數據的速度匹配。
(4)TMS320C5410 DSP為主處理器,實現對視頻數據的壓縮編碼處理。在存儲FIFO、存儲SDRAM和壓縮碼流輸出SDRAM采用DMA方式進行數據傳輸,可以提高數據傳輸的速率。
(5)CPLD采用Laitiice公司的IspLSI2064VE為系統協處理器,作為視頻A/D對FIFO進行寫操作,DSP對FIFO進行讀操作的時序控制。
(6)Flash 采用芯片256 K×16 bit的AM29LV400B,用于DSP上電或復位后的程序加載。
(7)SDRAM作為DSP的片外擴展存儲器,用于存儲A/D的圖像數據、中間過程的部分數據以及壓縮后的圖像數據。選用了4片ISSI公司的4 M×16 bit SDRAM芯片IS42S16400,構成了一個8 M×32 bit的外部存儲器。
1.1 圖像采集與存儲關鍵問題與解訣方法
本設計中解碼CCD攝像頭的模擬視頻信號采用專用的模擬視頻信號解碼器SAA71113。SAA71113視頻解碼器是雙通道模擬預處理電路、自動鉗位和增益控制電路、時鐘產生電路、數字多標準解碼器、亮度/對比度/飽和度控制電路、彩色空間矩陣的組合,是一款功能完善的視頻處理器。SAA71113只需要單一的3.3 V電源供電,與DSP的I/O電壓一致。SAA71113A接收CVBS(復合視頻)或S-video模擬視頻輸入,可以自動將PAL、SECAM、NTSC模式的彩色視頻信號解碼為CCIR-60l/656兼容的彩色數字分量值,器件功能通過I2C接口控制。這樣圖像采集過程可以全部在后臺完成,基本上不需要CPU的干預,可以節約大量的CPU時間。但是這樣設計有一個難點:由模擬視頻信號解碼得出的數字視頻信號數據量非常大,而且由于是實時視頻信號,所以數據輸出速率也非常高,但是DSP外部存儲器接口的讀出速率卻比較慢。為了解決這個問題,本設計采取高速FIFO對數據進行暫存以緩解速度上的差異,即采用FIFO來暫存10行圖像數據,視頻解碼器直接向FIFO中寫入圖像數據。當FIFO中寫入了10行圖像數據后,由CPLD向DSP發出中斷INT0請求;同時,DSP接到中斷請求后,啟動DMA方式將10行圖像數據從FIFO中讀入到其外部SDRAM中存放。這樣在采集的同時,DSP就可以讀取已采集的10行數據,而不必等待一幀圖像數據采集完成,從而提高了DSP的處理效率。CPLD主要控制解碼器向FIFO中寫入數據以及DSP從FIFO中讀出數據。系統可以采集到一幀圖像的尺寸為640(點/行)×480(行),從SA71113輸出的是4:2:2的YcrCb數據格式,一個像素用2個字節表示,一個字節表示Y,另一個字節為Cb和Cr,總的數據量為640×480×2=600 KB。對于亮度信號,每個像素Y占1B,一行共640 B,用640個存儲單元存儲一行的Y數據。對于色度信號Cb,一行共640點,每兩個像素共用一個色度信號Cb,占1 B,共320 B,用320個字節單元存放一行的數據。對于色度信號Cr,存儲格式與Cb一樣。這樣一幀圖像數據需要的的緩沖區大小為:640×480+320×480×2=600 KB。因此系統中對此擴展了8 M×32 bit的SDRAM,而且用了具有3 Mbit緩沖的FIFO[3,5]。
2 JPEG壓縮編碼流程與優化實現
JPEG壓縮編碼主要由圖像數據分塊、DCT變換、量化、Huffman編碼4個步驟[4]。先將原始YcbCr空間的二維圖像分成8×8的數據塊,然后將各數據塊按從左到右、從上到下的順序分別進行DCT變換、量化、“之”字型(Zig-Zag)掃描和Huffman編碼(量化和Huffman編碼分別需要量化表和Huffman表的支持),其中DCT變換是JPEG算法的關鍵部分。
 DCT變換的快慢決定了整個JPEG算法的速度。8×8數據塊的DCT計算有直接計算法和行列法兩大類,但直接計算法較復雜,占用更多的DSP資源,因此一般使用行列法,將8×8數據塊的DCT計算轉換為16次一維8點DCT計算,只要提高一維DCT的運算速度就可以提高二維DCT的運算速度。本文應用一種基于DSP乘法累加單元的DCT快速算法,DSP都具有乘法累加/減單元,能在單周期內完成1次乘法運算和1次累加運算[4]。VC5410DSP具有多條乘法累加指令,其中2條雙操作數乘法累加指令如表1所列。

 


表1中2條指令都能在單周期內完成讀出2個操作數、2個操作數相乘及乘法運算結果,與源累加器相加后送給目的累加器不同的是,第二條指令能將加法結果四舍五入后再送給目的累加器,可見這2條指令的功能非常強大。引入DCT計算,將大大簡化程序的復雜度,并減少DCT的時間。
(1)二維DCT正變換
二維DCT正變換的公式如下(8×8):
 

  將以上二維變換分解為一系列一維變換(行,列)進行計算。即:

  從上述表達式可以看出,Y0~Y7都是乘法累加運算,而S0~S7可由x0~x7經過蝶形運算得到。因此將DCT算法分成兩級運算,即第一級蝶形運算,第二級乘法累加運算,減少了運算級數,也就減少了中間數據的存、取時間。這樣利用DSP的專用指令乘累加運算大大優化了DCT算法[4,5]。
(2)8點DCT的DSP實現
第一級運算包括4個蝶形運算,每個蝶形運算包括1次加法運算和1次減法運算,可以采用DSP的雙字加減法指令。例如計算(x0+x7)、(x0-x7)、(x1+x6)及(x1-x6)的程序段,需要如下5條指令:
    DLD      *AR2+0,B      ;取x0、x1
    DADD     *AR3,B,A     ;計算(x0+x7)、(x1+x6)
    DSTA,   *AR4+          ;存儲(x0+x7)、(x1+x6)
    DSUB     *AR3-0,B,A   ;計算(x0-x7)、(x1-x6)
    DSTA,   *AR5-          ;存儲(x0-x7)、(x1-x6)
故4個蝶形運算共需要10條指令。
計算一個DCT系數需要4次乘法累加運算和1次存儲操作,共5條指令,被乘數是蝶形運算結果,乘數是已知常數(事先計算好系數并存放在DSP的內部存儲器中)。乘法累加運算的程序段如下:
MAC     *AR4+,*AR5+0%,B,A  ;乘法累加
    MAC     *AR4+,*AR5+0%,A     ;乘法累加
    MAC     *AR4+,*AR5+0%,A     ;乘法累加
    MACR    *AR4+,*AR5+0%,A     ;乘法累加
    STHA,  *AR2-0                ;存儲結果
    其中,AR4、AR5分別指向被乘數和乘數,累加器B事先被清零,因此,第二級運算共需要40條指令,計算一個8點DCT要50條指令,實際編程時還要加幾條輔助指令,最后以54條指令和非常簡潔的程序結構實現了8點DCT[4-7]。
本文以上述算法和流程為基礎,設計了基于DSP實現JPEG的編碼算法,并進行了優化。與基于ASIC的方法相比,本方案具有通用性強、靈活高效的特點。圖2(CCS界面顯示)為采集的640×480×16 bit的本人彩色視頻頭像進行JPEG標準壓縮后復原的圖像,相應的壓縮編碼指標在表2中列出。

 


  從上面的結果可以看出,整個壓縮系統基本上可以實現對視頻圖像壓縮編碼。對本算法進行適當修改,可以應用到數碼相機、手機等多種嵌入式系統中。同時,該壓縮系統可以通過PCI總線控制,將壓縮后的碼流通過JPEG文件的形式傳輸給PC機。另外,該壓縮系統可以成為一個通用的視頻圖像采集壓縮處理平臺,在該平臺上可以實現JPEG2000、H.264、MPEG-4等多種視頻壓縮。


參考文獻
[1] PENNEBAKER W B,MITCH1L J L.JPEG still image data compression standard.VNR 115 fifth Avenue,New York,NY 10003,1993.
[2] 劉政,葉漢民.CPLD在DSP多分辯率圖像采集系統中的應用[J].微計算機信息,2007(29).
[3] 馮琪,裴海龍.視頻采集與實時傳輸系統的軟件實現方法研究[J].計算機應用研究,2005(7).
[4] 齊美彬.基于DSP的視頻圖象壓縮系統的研究.合肥工業大學碩士學位論文,2001.
[5] 王元中,胡瑞繁.整數DCT變換中變換基的通用生成算法[J].中國圖像圖形學報,2008(6).
[6] 魯昌華,石洪源.基于FPGA+DSP的實時圖像處理平臺的設計與實現[J].電子技術應用,2007(12).
[7] 須文波,陳玉萍.基于DSP圖像壓縮系統設計與算法研究[J].計算機工程與應用,2007(43).

 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 蜜臀91精品国产高清在线观看 | 激情五月婷婷丁香 | 高清视频一区二区 | 成人a毛片久久免费播放 | 国产爆操 | 一级一级一级毛片免费毛片 | 久99久热只有精品国产99 | 不卡视频一区二区三区 | 99热国产免费 | 久久久久毛片成人精品 | 国产国产在线播放你懂的 | 久久亚洲精品国产亚洲老地址 | 成 人 黄 色 视频 免费观看 | 久久精品中文字幕久久 | 韩国精品视频 | 国产人人艹 | www.黄色| 久久九九青青国产精品 | 国产98色在线 | 日韩 | 免费观看一区二区 | 精品二区| 久久亚洲精品人成综合网 | 久久久一本 | 都市激情网 | 免费伦费一区二区三区四区 | 免费电影mv网址入口 | 国产精品久久精品视 | 99视频国产精品免费观看app | 久久久久久久久久综合情日本 | 久久99国产综合精品 | 丁香五六月婷婷 | 欧美日韩国产手机在线观看视频 | 四虎永久影院永久影库 | 中国国产一国产一级毛片视频 | 一级毛片免费播放 | 三级韩国一区久久二区综合 | 国产高清一 | 美国性网站 | 国产青草视频免费观看97 | 搡老女人免费视频 | 久久99精品久久久久久噜噜噜 |