《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 嵌入式運(yùn)動(dòng)目標(biāo)跟蹤系統(tǒng)設(shè)計(jì)

嵌入式運(yùn)動(dòng)目標(biāo)跟蹤系統(tǒng)設(shè)計(jì)

2009-07-17
作者:毛曉波,,蔡宗慜,,陳鐵軍

  摘 要: 通過借鑒嵌入式系統(tǒng)在信號(hào)處理、電子技術(shù)和計(jì)算機(jī)等領(lǐng)域的成功應(yīng)用經(jīng)驗(yàn),,在分析機(jī)器視覺系統(tǒng)特點(diǎn)的基礎(chǔ)上,,將機(jī)器視覺和嵌入式技術(shù)相結(jié)合,,設(shè)計(jì)一種基于嵌入式處理器S3C2410的目標(biāo)跟蹤系統(tǒng),。介紹了系統(tǒng)工作原理和特點(diǎn),,給出了系統(tǒng)硬件結(jié)構(gòu)圖和軟件流程,,并以智能小車為例進(jìn)行了目標(biāo)的識(shí)別與跟蹤。
  關(guān)鍵詞: 嵌入式系統(tǒng),;機(jī)器視覺,;目標(biāo)跟蹤;S3C2410

?

  機(jī)器視覺是目前智能機(jī)器人領(lǐng)域中的研究熱點(diǎn)之一,,涉及光電子學(xué),、圖像處理、模式識(shí)別及計(jì)算機(jī)技術(shù)等諸多學(xué)科領(lǐng)域,,內(nèi)容極為廣泛,。機(jī)器視覺中圖像處理與目標(biāo)識(shí)別的特點(diǎn)是處理數(shù)據(jù)量大、計(jì)算復(fù)雜,,對(duì)算法的實(shí)時(shí)性和精度要求高,。
  目前機(jī)器視覺處理平臺(tái)主要有PC-BASED系統(tǒng)、PLC-BASED系統(tǒng)和FPGA系統(tǒng),。前兩種系統(tǒng)體積大,、軟硬件系統(tǒng)復(fù)雜、成本高,,使其應(yīng)用范圍受到了限制。后者使用硬件描述語言,,算法開發(fā)難度大,。DSP芯片具有專門的硬件乘法器,可實(shí)現(xiàn)單周期乘法與累加運(yùn)算,具有價(jià)格低,、速度快等特點(diǎn),,但其I/O接口功能較弱。32位ARM處理器處理能力已接近早期PC機(jī)的水平,,且具有PC機(jī)無法比擬的體積小,、價(jià)格廉、功耗低,、性能強(qiáng),、可靠性高等特點(diǎn)。與DSP相比,,其外圍接口更加豐富,,能夠真正地“嵌入”到設(shè)備中,而且開放的體系結(jié)構(gòu)也保證系統(tǒng)能夠快速升級(jí)和更新,。本文將機(jī)器視覺和嵌入式技術(shù)相結(jié)合,,將機(jī)器視覺建立在基于ARM的嵌入式系統(tǒng)平臺(tái)上,設(shè)計(jì)一種基于S3C2410的運(yùn)動(dòng)目標(biāo)跟蹤系統(tǒng),,為開展微型化嵌入式機(jī)器視覺研究進(jìn)行有益的嘗試,。
1 系統(tǒng)總體結(jié)構(gòu)與硬件設(shè)計(jì)方案
  系統(tǒng)總體結(jié)構(gòu)如圖1所示。在S3C2410嵌入式系統(tǒng)平臺(tái)上移植并配置Linux操作系統(tǒng),,針對(duì)平臺(tái)和應(yīng)用的特點(diǎn),,制作合適的文件系統(tǒng),編寫應(yīng)用程序,。運(yùn)動(dòng)目標(biāo)經(jīng)USB攝像頭實(shí)時(shí)采集后,,送入S3C2410處理器,利用嵌入式處理器的強(qiáng)大運(yùn)算能力,,對(duì)采集到的圖像進(jìn)行圖像分割,、特征提取、形心計(jì)算等后期處理,,完成目標(biāo)識(shí)別與定位,,并控制步進(jìn)電機(jī),調(diào)整攝像頭位姿,,使攝像頭對(duì)準(zhǔn)運(yùn)動(dòng)目標(biāo),,實(shí)現(xiàn)跟蹤。實(shí)時(shí)性好和體積小巧是本嵌入式跟蹤系統(tǒng)追求的目標(biāo),。

  基于ARM體系結(jié)構(gòu)的32位微控制器S3C2410芯片,,主頻可達(dá)200 MHz。它提供了豐富的片內(nèi)資源:分開的16 KB指令Cache和16 KB數(shù)據(jù)Cache,、MMU虛擬存儲(chǔ)器管理,、LCD控制器,、支持NAND Flash系統(tǒng)引導(dǎo)、系統(tǒng)管理器,、3通道UART,、4通道DMA,、4通道PWM定時(shí)器,、I/O端口、8通道10位ADC和觸摸屏接口,、IIC-BUS S3C2410接口,、USB主機(jī)、USB設(shè)備,、SD主卡和MMC卡接口等,。集高速處理、資源豐富與強(qiáng)大的控制功能于一體,,操作系統(tǒng)的配備更是普通DSP和MCU無法比擬的,。嵌入式操作系統(tǒng)不僅具備一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度,、同步機(jī)制,、中斷處理、文件功能等,,還具有可裁剪性,、實(shí)時(shí)性、高可靠性,、可移植性等特點(diǎn),。Linux操作系統(tǒng)的開源性方便外部設(shè)備驅(qū)動(dòng)程序的編寫,且開發(fā)成本低,,現(xiàn)已成為主流的嵌入式操作系統(tǒng),。USB攝像頭使用的電源可以直接從USB主板上獲取,無需額外電源,,增加了設(shè)備的便攜性且數(shù)據(jù)傳遞遠(yuǎn)快于普通的串口和并口,,其價(jià)格也大大低于市場上通用的高速圖像采集裝置。
  綜上所述,,本系統(tǒng)采用了將Linux移植到ARM系統(tǒng)的方法,,使用USB攝像頭作為圖像采集方式。ARM最小系統(tǒng)由一個(gè)核心母版和外部電路構(gòu)成,。核心母板包括SDRM,、CPU、核心板接口等,。外部電路主要有電源(主板5 V,,I/O 3.3 V,CPU內(nèi)核1.8 V)、LCD,、USB接口和電機(jī)驅(qū)動(dòng)電路等,。Linux自帶使用OV511采集芯片的攝像頭驅(qū)動(dòng),市場上大部分CMOS攝像頭采用中芯微電子公司ZC301P芯片,,后者內(nèi)置DSP硬件編解碼器,,采集延時(shí)大大縮短。
2 系統(tǒng)軟件設(shè)計(jì)
  基于嵌入式Linux的應(yīng)用已經(jīng)遍布很多領(lǐng)域,,如移動(dòng)多媒體設(shè)備,、手持設(shè)備、車載導(dǎo)航系統(tǒng),、機(jī)械控制等,。它支持多種CPU,包括沒有使用MMU的平臺(tái),。Linux原本是桌面和服務(wù)器市場上比較成功的操作系統(tǒng),,由于其免費(fèi)、開放源碼以及良好的代碼風(fēng)格和結(jié)構(gòu),,使它在很短的時(shí)間內(nèi)被移植到各種嵌入式系統(tǒng)中,。系統(tǒng)采用Linux操作系統(tǒng),不但提高了系統(tǒng)的可靠性和開發(fā)效率,,并且充分發(fā)揮了32位CPU的多任務(wù)潛力,。Linux操作系統(tǒng)的配置包括引導(dǎo)程序、內(nèi)核和文件系統(tǒng)三個(gè)方面,。引導(dǎo)程序是操作系統(tǒng)運(yùn)行之前的一段程序,,用來完成初始化設(shè)備、建立內(nèi)存空間的映射圖,,為操作系統(tǒng)內(nèi)核準(zhǔn)備正確的環(huán)境,。操作系統(tǒng)采用Linux 2.4.18內(nèi)核,開發(fā)模式采用宿主開發(fā)模式,,在宿主機(jī)上編譯內(nèi)核及應(yīng)用程序,,然后通過網(wǎng)口下載到目標(biāo)平臺(tái)運(yùn)行,通過超級(jí)終端調(diào)試信息,。文件系統(tǒng)負(fù)責(zé)存儲(chǔ)系統(tǒng)配置文件,,系統(tǒng)外設(shè)驅(qū)動(dòng)程序。在操作系統(tǒng)配置完成后,,主要工作是編寫驅(qū)動(dòng)程序和應(yīng)用程序,。
2.1 攝像頭驅(qū)動(dòng)程序
  驅(qū)動(dòng)程序是應(yīng)用程序與硬件之間的一個(gè)中間軟件層,在Linux中對(duì)設(shè)備驅(qū)動(dòng)的訪問也是以文件操作的方式實(shí)現(xiàn),。Video4linux是Linux中視頻設(shè)備的內(nèi)核驅(qū)動(dòng),,只需在內(nèi)核配置時(shí)靜態(tài)加載即可,。攝像頭驅(qū)動(dòng)加載過程為:在Linux Kernel Configuration對(duì)話框中,選擇配置Multimedia device,,設(shè)置Video For Linux為Y,;點(diǎn)擊Video For Linux,設(shè)置V4L information in proc file system為Y,;回到Linux Kernel Configuration,,選擇USB support,設(shè)置USB OV511 Camera support為Y,,然后保存退出,,重新編譯內(nèi)核,。ZC301攝像頭的驅(qū)動(dòng)采用靜態(tài)加載的方式,,具體步驟為:在/kerlnel/driver/usb下,解壓驅(qū)動(dòng),,打補(bǔ)丁,,在該目錄下新建spca5xx文件夾;編譯內(nèi)核,,選中SPCA5XXX,,執(zhí)行make dep、make zlmage,、make modules命令,,在/kernel/driver/usb/spca5xx中產(chǎn)生3個(gè).o文件;用新內(nèi)核啟動(dòng)insmod的3個(gè).o文件,。
2.2 電機(jī)驅(qū)動(dòng)程序
  步進(jìn)電機(jī)是作為字符設(shè)備進(jìn)行驅(qū)動(dòng)的,。Linux操作系統(tǒng)對(duì)字符設(shè)備的操作而言,驅(qū)動(dòng)程序需要提供相關(guān)的幾個(gè)操作,,分別為open,、read、write,、ioctl等相關(guān)的函數(shù)入口點(diǎn),。在驅(qū)動(dòng)程序的實(shí)現(xiàn)過程中需要定義這些文件相關(guān)的操作,填充進(jìn)入file_operations結(jié)構(gòu)中,。ioctl提供用戶程序?qū)υO(shè)備執(zhí)行特定命令的方法,,如設(shè)置設(shè)備驅(qū)動(dòng)程序內(nèi)部參數(shù),控制設(shè)備操作特性等操作,,調(diào)用成功返回非負(fù)值,。由于對(duì)步進(jìn)電機(jī)驅(qū)動(dòng)程序沒有相關(guān)的輸入與輸出,只需對(duì)I/O控制,,驅(qū)動(dòng)程序?qū)τ趙rite操作和read操作僅需返回0,,對(duì)于I/O控制在驅(qū)動(dòng)程序中由ioctl函數(shù)實(shí)現(xiàn),。步進(jìn)電機(jī)為四相步進(jìn)電機(jī),采用四相單,、雙八拍控制,。步進(jìn)電機(jī)轉(zhuǎn)速和轉(zhuǎn)向的控制通過改變輸出端口高四位脈沖的順序和頻率實(shí)現(xiàn)。需要注意的是,,由于用到了I/O端口,,而在Linux中操作端口要用虛擬地址而非實(shí)際的物理地址,所以要修改內(nèi)核代碼,。具體細(xì)節(jié)可參考相關(guān)文獻(xiàn)[1,,2]。
2.3 應(yīng)用程序
  系統(tǒng)應(yīng)用程序流程如圖2所示,。初始化后打開設(shè)備文件(攝像頭,,LCD,電機(jī)),,查詢和確認(rèn)設(shè)備性能,,設(shè)置捕獲的圖像的寬和高,設(shè)置色深,,建立內(nèi)存映射,,讀取圖像數(shù)據(jù),對(duì)圖像進(jìn)行處理,,驅(qū)動(dòng)電機(jī),,關(guān)閉設(shè)備。圖像采集有兩種方式:內(nèi)存映射(mmap)和直接讀取設(shè)備(read)[3,,4],。前者將設(shè)備文件映射到內(nèi)存,繞過I/O訪問,,使得讀取速度更快,,但是占用更多系統(tǒng)資源??紤]系統(tǒng)實(shí)時(shí)性,,這里采用內(nèi)存映射方式。

?

3 目標(biāo)跟蹤與控制
  由于嵌入式系統(tǒng)對(duì)功能,、成本,、處理能力、體積和可靠性均有嚴(yán)格要求,,因此,,對(duì)運(yùn)動(dòng)目標(biāo)的跟蹤,應(yīng)根據(jù)具體的應(yīng)用環(huán)境,,選用合適的算法,。常見的運(yùn)動(dòng)檢測算法有幀間差分法,、背景差分法和模板匹配法等。幀間差分法和背景差分法計(jì)算簡單,、實(shí)時(shí)處理效率高,,但幀間差分法依賴于圖像序列的選取間隔,不適合速度變化的運(yùn)動(dòng)跟蹤,;而背景差分法對(duì)場景變化敏感,,不適合攝像頭運(yùn)動(dòng)的情況;板板匹配方法適應(yīng)性好,,但是計(jì)算量較大[5,,6]??紤]攝像頭的圖像采集速度,、嵌入式處理器的處理能力和運(yùn)動(dòng)跟蹤場合及速度等方面的要求,這里采用特征匹配的方法,。處理過程主要包括運(yùn)動(dòng)檢測,、特征提取、目標(biāo)定位與攝像機(jī)控制,。流程如圖3所示。

?


3.1 運(yùn)動(dòng)檢測
  首先采用背景差分法,,將當(dāng)前圖像和參考背景模型相減實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)檢測,。采用這種方法是因?yàn)樵谶\(yùn)動(dòng)物體進(jìn)入監(jiān)控范圍前,攝像機(jī)不會(huì)發(fā)生運(yùn)動(dòng),,進(jìn)入監(jiān)控范圍后,,對(duì)差分圖像直接進(jìn)行處理,能夠檢測運(yùn)動(dòng)目標(biāo)所在區(qū)域,,根據(jù)運(yùn)動(dòng)區(qū)域進(jìn)行目標(biāo)特征提取,,不需要運(yùn)動(dòng)目標(biāo)的先驗(yàn)知識(shí)。常見的背景模型建立方法有兩種:一種是以圖像序列的平均值作為參考圖像,;另一種是假定像素服從某種分布模型,,如高斯分布,通過一段時(shí)間訓(xùn)練獲得其參數(shù)并不斷更新其分布參數(shù),。這里采用第一種方法,。檢測閾值T如下:
  
其中f(i,j)為當(dāng)前圖像,,g(i,,j)為背景圖像,m,、n為圖像的維數(shù),。當(dāng)閾值大于T時(shí)認(rèn)為有運(yùn)動(dòng)目標(biāo)進(jìn)入監(jiān)視區(qū)域,。實(shí)際環(huán)境中,受光線等因素影響,,運(yùn)動(dòng)目標(biāo)的陰影也會(huì)與運(yùn)動(dòng)目標(biāo)一起被檢出,,出現(xiàn)“形影不離”的現(xiàn)象,常導(dǎo)致跟蹤系統(tǒng)誤判,。此時(shí),,可將式(1)中的前景和背景的圖像亮度值用圖像色度值取代,可有效地消除陰影的影響[7],。實(shí)際應(yīng)用時(shí)取得了較好的效果,。
  差分運(yùn)算初步檢出目標(biāo)后,還需要對(duì)圖像進(jìn)行處理,,以方便后續(xù)的特征提取及目標(biāo)識(shí)別,。先對(duì)檢出的差分圖像進(jìn)行分割,得到圖像的二值圖像,。由于噪聲的影響,,得到的二值圖像有很多的空洞和碎片,采用形態(tài)學(xué)的方法對(duì)圖像進(jìn)行腐蝕膨脹,,可濾除噪聲,,得到較為清晰的結(jié)果。對(duì)于面積較小,、不產(chǎn)生歧義的空洞干擾,,可以不予考慮,只對(duì)面積較大的聯(lián)通區(qū)域進(jìn)行標(biāo)記,,以減少計(jì)算量,。然后標(biāo)記出最大面積的連通區(qū)域,即得到運(yùn)動(dòng)目標(biāo)的所在區(qū)域,。 原始圖像,、差分圖像及預(yù)處理結(jié)果如圖4所示。

?


3.2 特征提取
  不變矩是廣泛應(yīng)用的形狀特征之一,,一些基本的二維形狀特征都與矩有直接的關(guān)系,,被稱為旋轉(zhuǎn)、平移,、尺度不變量,。其具有穩(wěn)定性好、易于實(shí)現(xiàn),、匹配效率高的特點(diǎn),。這里簡單介紹不變矩的理論。對(duì)于非負(fù)整數(shù)p和q,,二維數(shù)字圖像f(x,,y)在平面R2上的p+q原始矩,、中心矩和歸一化中心矩的算法如下:
  
式中,M和N為圖像水平和垂直方向的維數(shù),,f(m,,n)是圖像在點(diǎn)(m,n)處的灰度值,,為圖像的重心坐標(biāo),,


  利用歸一化的二階和三階中心矩組合得到圖像的7個(gè)不變矩,,這7個(gè)不變矩對(duì)平移,、旋轉(zhuǎn)、尺度具有一定的適應(yīng)性,。選用前4個(gè)不變矩作為特征向量,,然后保存特征向量作為識(shí)別規(guī)則。
   

  首先,,在當(dāng)前圖像的灰度圖像中,,根據(jù)運(yùn)動(dòng)目標(biāo)所在聯(lián)通區(qū)域的坐標(biāo),計(jì)算運(yùn)動(dòng)目標(biāo)的特征向量,,然后,,提取運(yùn)動(dòng)目標(biāo)的顏色信息。
3.3 目標(biāo)定位與攝像機(jī)控制
  提取運(yùn)動(dòng)目標(biāo)的特征后,,對(duì)新讀取的每一幀圖像轉(zhuǎn)化為灰度圖像,,進(jìn)行閾值分割、邊緣提取,、腐蝕膨脹處理后,對(duì)各聯(lián)通單元進(jìn)行標(biāo)記,。計(jì)算各聯(lián)通單元的特征向量,,與模板特征向量匹配度最高的即為運(yùn)動(dòng)目標(biāo)區(qū)域。這里選擇目標(biāo)區(qū)域的重心定位,。在復(fù)雜背景情況下,,有時(shí)不能很好地提取運(yùn)動(dòng)目標(biāo)的特征。當(dāng)特征匹配失敗時(shí),,可以結(jié)合圖像的顏色信息,,增加跟蹤的穩(wěn)定性。然后根據(jù)重心的坐標(biāo)與圖像中心坐標(biāo)的位置,,由步進(jìn)電機(jī)調(diào)整攝像頭的位姿使攝像頭鏡頭對(duì)準(zhǔn)目標(biāo),。由重心的坐標(biāo)和圖像中心像素的坐標(biāo)(X0,Y0)即可表示出運(yùn)動(dòng)目標(biāo)偏離攝像機(jī)鏡頭中心的偏移量(x,,y),,根據(jù)偏移量方向和正負(fù),,建立控制規(guī)則庫,調(diào)整電機(jī)轉(zhuǎn)動(dòng)的方向,、速度和攝像機(jī)位姿,。攝像機(jī)位姿調(diào)整分為水平、垂直兩個(gè)方向,。以水平方向?yàn)槔榻B控制規(guī)則集:
  If?x>=X1??then m=M1
  If?x<-X1??then m=-M1
  If?x>=X2??then m=M2
  If?x<-X2??then m=-M2
  ……
  If?|x|<=Xn??then m=0
  其中,,x表示水平方向偏移量的大小,m表示步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的脈沖數(shù),;X1,、X2、…為常數(shù),,表示偏移量劃分邊界,;M1、M2,、…為常數(shù),,表示電機(jī)輸出脈沖數(shù)量。相鄰兩幀的跟蹤結(jié)果如圖5所示,。


  本文研究了基于ARM處理器的嵌入式跟蹤系統(tǒng),,利用圖像信息實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)跟蹤,算法簡單有效,;在速度和精度兩方面作了折中,,具有體積小、性價(jià)比高的特點(diǎn),,適合于嵌入式系統(tǒng),。嵌入式操作系統(tǒng)的植入提高了系統(tǒng)功能的可裁剪性和擴(kuò)展性,使系統(tǒng)具有良好的開放性,。該系統(tǒng)的設(shè)計(jì)方案已在仿生機(jī)器視覺系統(tǒng)中成功應(yīng)用,。


參考文獻(xiàn)
[1] 田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.
[2] 趙敏,,劉振興.基于嵌入式Linux的步進(jìn)電機(jī)驅(qū)動(dòng)程序設(shè)計(jì)[J].微計(jì)算機(jī)信息,,2008,13(051):113-114.
[3] 孟超,,張曦煌.基于嵌入式系統(tǒng)的圖像采集與傳輸設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),,2008,29(17):4415-4416.
[4] Video4 Linux User′s Manual.http:/www.v4l.com.cn.
[5] 楊淑瑩.VC++圖像處理程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,,2003.
[6] 邵文珅,,黃愛民,韋慶.動(dòng)態(tài)場景下運(yùn)動(dòng)目標(biāo)跟蹤方法研究[J].計(jì)算機(jī)仿真,2006,,05(50):181-184.
[7] 毛曉波,,謝曉芳,張曉林.消除運(yùn)動(dòng)物體陰影的最大色度差分檢測法[J].電子技術(shù)應(yīng)用,,2007,,33(1).

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。