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