《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于DSP的數(shù)字圖像采集、壓縮系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
基于DSP的數(shù)字圖像采集、壓縮系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
李世軍,黃 鋒,屈喜龍,郭照南
摘要: 一種基于高速數(shù)字信號(hào)處理器TMS320VC5410DSP和CPLD的圖像采集、壓縮系統(tǒng),分析了系統(tǒng)設(shè)計(jì)時(shí)的各個(gè)關(guān)鍵技術(shù)環(huán)節(jié),介紹了JPEG圖像編碼算法的DSP的實(shí)現(xiàn),討論了圖像編碼中DCT變換的實(shí)現(xiàn)和優(yōu)化,利用DSP的乘法累加指令和雙字加/減法指令快速實(shí)現(xiàn)DCT。
關(guān)鍵詞: DSP JPEG DCT變換
Abstract:
Key words :

  摘 要: 一種基于高速數(shù)字信號(hào)處理器TMS320VC5410DSP和CPLD的圖像采集、壓縮系統(tǒng),分析了系統(tǒng)設(shè)計(jì)時(shí)的各個(gè)關(guān)鍵技術(shù)環(huán)節(jié),介紹了JPEG圖像編碼算法的DSP的實(shí)現(xiàn),討論了圖像編碼中DCT變換的實(shí)現(xiàn)和優(yōu)化,利用DSP的乘法累加指令和雙字加/減法指令快速實(shí)現(xiàn)DCT。
 關(guān)鍵詞: DSP;JPEG;DCT變換

 

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

 


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

 


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

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

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

 


  從上面的結(jié)果可以看出,整個(gè)壓縮系統(tǒng)基本上可以實(shí)現(xiàn)對(duì)視頻圖像壓縮編碼。對(duì)本算法進(jìn)行適當(dāng)修改,可以應(yīng)用到數(shù)碼相機(jī)、手機(jī)等多種嵌入式系統(tǒng)中。同時(shí),該壓縮系統(tǒng)可以通過PCI總線控制,將壓縮后的碼流通過JPEG文件的形式傳輸給PC機(jī)。另外,該壓縮系統(tǒng)可以成為一個(gè)通用的視頻圖像采集壓縮處理平臺(tái),在該平臺(tái)上可以實(shí)現(xiàn)JPEG2000、H.264、MPEG-4等多種視頻壓縮。


參考文獻(xiàn)
[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多分辯率圖像采集系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2007(29).
[3] 馮琪,裴海龍.視頻采集與實(shí)時(shí)傳輸系統(tǒng)的軟件實(shí)現(xiàn)方法研究[J].計(jì)算機(jī)應(yīng)用研究,2005(7).
[4] 齊美彬.基于DSP的視頻圖象壓縮系統(tǒng)的研究.合肥工業(yè)大學(xué)碩士學(xué)位論文,2001.
[5] 王元中,胡瑞繁.整數(shù)DCT變換中變換基的通用生成算法[J].中國圖像圖形學(xué)報(bào),2008(6).
[6] 魯昌華,石洪源.基于FPGA+DSP的實(shí)時(shí)圖像處理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2007(12).
[7] 須文波,陳玉萍.基于DSP圖像壓縮系統(tǒng)設(shè)計(jì)與算法研究[J].計(jì)算機(jī)工程與應(yīng)用,2007(43).

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。