TMS320DM642在機器視覺中的應用研究
目前,一般機器視覺信息處理平臺主要有(1)基于通用PC :主要是用軟件實現(xiàn)圖像處理和識別,能夠提供中等的圖像處理和識別能力,但是要占用CPU過多的處理能力;(2)基于通用DSP芯片:優(yōu)點是設計簡便、靈活,特別適合于新型產品的研究開發(fā);(3)基于可編程FPGA:采用的是硬件描述語言(VHDL),用其開發(fā)圖像處理算法難度較大。
機器視覺中,圖像處理與識別技術的特點是處理的數(shù)據(jù)量大,計算復雜,計算中間結果精度要求高,具有大量的乘法運算,并且在實現(xiàn)機器人視覺方面實時性要求較高;而DSP具有運算速度快,精度高,有專門的硬件乘法器,可實現(xiàn)單周期乘法與累加的運算等特點,所以特別適合運用在對實時性要求較高的場合。DM642是TI公司推出的專門用于處理視頻圖像和語音的微處理器,具有速度快,并行處理能力強等特點,非常適合于圖像實時地處理與識別。
1 TI DM642 DSP簡介
DM642是德州儀器(TI)公司最新推出的針對多媒體處理領域應用的DSP。DM642建立在C64x DSP核心架構基礎上,采用德州儀器公司開發(fā)的第二代高性能長指令架構VelociTI.2TM,其每個乘法器對于每個時間周期內可執(zhí)行兩個16位乘以16位的乘法或者四個8位乘以8位的乘法。另外六個算術邏輯單元,在每個時間周期內可執(zhí)行兩個16位或8位的加減、比較、移位等運算。在并行架構下,每個時間周期最高可執(zhí)行八個指令,且在600MHz頻率下,DM642每秒可執(zhí)行24億次16位的乘累加或48億次8位的乘累加。在這種強大運算能力下,對于復雜度較高與數(shù)據(jù)量較大的視頻編碼以及圖像處理可進行實時的數(shù)據(jù)運算,并提供相關的指令集,例如圖像與視頻處理庫(Image and Video Processing Library),讓開發(fā)者能夠更加容易的開發(fā)圖像或視頻的相關產品[1,2]。
2 系統(tǒng)的總體設計思路
由于圖像識別算法的設計需要大量的測試和分析,而直接在嵌入式環(huán)境下對其進行開發(fā)以及調試都相對比較困難,因此,本文針對DSP開發(fā)圖像識別算法,總體設計思路和開發(fā)步驟為視覺處理的相關算法首先在PC平臺上進行驗證和實現(xiàn),進而移植到DSP平臺上,并加以優(yōu)化。
2.1 系統(tǒng)的硬件結構設計
本文硬件平臺系統(tǒng)原理框圖如圖1所示:攝像機選用普通的PAL制式彩色攝像機,解碼芯片采用TVP5150;外擴2個大小為4MX32位的SDRAM。外擴的FLASH大小為4MX8位;RS-232電平轉換芯片選用TL16C752BPT;TVP5150A是一種超低功耗的NTSC/PAL/SECAM的視頻解碼芯片,可以把NTSC/PAL/SECAM轉換成8-bit ITU-R BT.656格式[3,4]。
500)this.style.width=500;" border="0" />
圖1 系統(tǒng)硬件原理圖
2.2 系統(tǒng)的軟件流程設計
下面以機器視覺中比較典型的問題――門牌號識別為例,介紹DM642在機器視覺中的應用。門牌號識別算法主要功能模塊如圖2所示。
500)this.style.width=500;" border="0" />
圖2軟件功能模塊流程圖
3 視覺相關算法在PC平臺上的驗證與實現(xiàn)
門牌號識別算法方案確定后,需要在PC平臺上進行驗證,測試其實際效果,調整相關參數(shù),為算法移植到DSP平臺上實現(xiàn)做好準備。本文使用集成開發(fā)環(huán)境Visual C++,充分利用微軟基本類庫(MFC),從而加快開發(fā)速度、提高開發(fā)效率。本文為了測試識別算法,開發(fā)了基于MFC的測試平臺,前端的圖像采集部分主要利用VFW。小波神經網(wǎng)絡的數(shù)字樣本通過文件菜單加載進去,訓練后的輸入層到隱含層的權值保存在wih.txt中,隱含層到輸出層的權值保存在who.txt中。
4 視覺識別算法在DSP平臺上的實現(xiàn)
在上文算法驗證基礎上,可進一步實現(xiàn)基于DM642的門牌識別系統(tǒng)。根據(jù)PC平臺與DM642平臺的不同,程序移植主要注意以下幾個問題[5-7]:
(1)刪除或替換DSP不支持的C函數(shù)[!--empirenews.page--]
PC平臺上所有使用MFC的代碼一律刪除,因為DSP不支持任何MFC的類和對象。
(2)變量的存取方式調整
在DM642中程序按段存儲,主要包括.text、.cinit、.switch、.bss、.far、.stack、.system等。CCS的C編譯器支持兩種內存模式:大內存模式和小內存模式。不同的內存模式影響對.bss段變量的訪問。程序中的全局和靜態(tài)變量都分布在.bss段內,小內存模式下其總和不超過32KB。由于程序的全局變量和靜態(tài)變量已經超過32KB,所以應采用大內存模式,即在編譯選項中設置為-ml3。
(3)更改數(shù)據(jù)類型
PC機平臺上long型是32位的,而DSP的long型是40位的。因為DM642通用寄存器為32位,訪問40位數(shù)據(jù)時需要對兩個寄存器進行讀寫操作,從節(jié)省程序運行時間的角度考慮,應把程序中所有的long型改成INT32或UINT32。
(4)存儲空間的分配
在進行存儲空間分配前必須了解芯片內外的存儲空間的大小,編譯后的C程序“跑飛”往往是超出存儲區(qū)訪問允許范圍造成的;另外,還需注意堆棧的分配,在程序“跑飛”時注意檢查是否發(fā)生堆棧溢出。
4.1 存儲空間的分配
在本系統(tǒng)中,內存空間包括:DM642的256KB字節(jié)的二級緩存L2,可部分或全部作為SRAM存儲空間,存取速度快;32MB字節(jié)的SDSRAM片外內存,存取速度慢。內存使用的一個原則是應盡量把數(shù)據(jù)和代碼放入片內內存。但由于片內內存容量的限制,往往不可能將所有數(shù)據(jù)和代碼都放入片內存,而將編程過程中頻繁使用的一些關鍵數(shù)據(jù)(如濾波的模板、圖像二值化的閾值、圖像提取的閾值、門牌傾斜的角度等)放入片內保存。片外SDRAM中主要放置圖像數(shù)據(jù)(如圖像采集的數(shù)據(jù)等)。
在本系統(tǒng)程序存儲器的分配中,capChaAYSpace存放采集的圖像的亮度信號Y;capChaACbSpace存放采集的圖像的色度信號Cb;capChaACrSpace存放采集的圖像的色度信號Cr;WEIGHT存放小波神經網(wǎng)絡訓練好的權值;INPUT 存放小波神經網(wǎng)絡輸入值,即特征化后的圖像數(shù)據(jù);tempYbuffer、tempY1buffer和tempY2buffer主要存儲各個算法模塊處理前和處理后的數(shù)據(jù)。
4.2 系統(tǒng)程序的實現(xiàn)
程序的實現(xiàn)部分主要包括圖像采集部分的實現(xiàn)和圖像處理與識別算法的實現(xiàn)。
圖像采集部分的程序是通過設置在視頻端口控制寄存器(VPCTL)中的TSI(transport stream interface)位和在視頻捕獲通道控制寄存器(VCxCTL)中的CMODE位以選擇視頻捕獲的模式。本文選擇的是8-Bit ITU-R BT.656捕獲模式,主要是因為選用的解碼芯片TVP5150支持BT.656格式。本文只需要處理YCbCr中的亮度信號Y。圖像采集部分主要過程是:PAL攝像頭通過TVP5105解碼器產生BT656格式的數(shù)據(jù)流,然后通過EDMA傳送給SDRAM。BT656格式為隔行掃描,每幀實際圖像大小為720×576,每幀分為奇偶兩場,奇場的行數(shù)范圍為0-288,偶場為289-576。為了提高實時性;在本文中只取奇場的數(shù)據(jù),即程序只處理0-288行。在識別算法實現(xiàn)部分中,本文列出了圖像經過各個算法功能模塊的結果。圖像顯示的設置在CCS中路徑為view->graph->image。
下面以門牌號523為例說明基于DSP的圖像處理的各個過程:通過攝像頭采集原始門牌圖像,其中視頻流采用BT.656標準,隔行掃描。每一幀的大小為720×576。在這里只取奇場的數(shù)據(jù),即圖3(a)的大小為720×288,可以看出圖像質量并沒有明顯的下降;圖3(b)為二值化后的圖像,主要是根據(jù)直方圖信息選取閾值,具有較好的效果;圖3(c)為傾斜度校正后的圖像;圖3(d)為歸一化后的圖像,此圖像是被放大后的圖像,原圖像的大小為8X16;圖3(e)為特征提取后的結果,本文主要是把數(shù)組中的數(shù)據(jù)提取出來,然后進行編排,從而便于理解。
500)this.style.width=500;" border="0" />
500)this.style.width=500;" border="0" />[!--empirenews.page--]
實驗結果表明本文設計的系統(tǒng)識別單個門牌數(shù)字準確率達到100%,識別3個數(shù)字門牌識別率為90%以上。
4.3 代碼的優(yōu)化
本文系統(tǒng)中涉及的識別算法具有數(shù)據(jù)量大,計算復雜,二重循環(huán)多等特點。在沒有優(yōu)化前,系統(tǒng)資源利用率低、運行速度慢、遠遠沒有達到系統(tǒng)實時性的要求。本文通過代碼優(yōu)化技術[8]使系統(tǒng)具有較好的實時性,具體包括開發(fā)C/C++代碼、優(yōu)化C/C++代碼和編寫線性匯編代碼等幾個階段。
5 結束語
本文提出的基于DM642的機器人視覺系統(tǒng)完成了以下基本功能:
(1)在走廊中實現(xiàn)機器人的自定位和目標定位功能;
(2)在走廊中可以實現(xiàn)對操作者和典型障礙物的識別功能。
本文的創(chuàng)新點主要體現(xiàn)在以下2個方面:
(1)實現(xiàn)了基于DSP平臺的門牌識別和優(yōu)化,有效地提高了系統(tǒng)的目標的識別速度;
(2)探索了基于圖像識別技術、RFID技術、傳感器技術相融合的自主移動機器人的機器視覺系統(tǒng),這種方法有效地提高了系統(tǒng)的可靠性和魯棒性。
實際應用表明,本文設計的機器視覺系統(tǒng)具有較好的合理性和實用性。