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