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

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

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

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

?

  機(jī)器視覺是目前智能機(jī)器人領(lǐng)域中的研究熱點(diǎn)之一,涉及光電子學(xué)、圖像處理、模式識別及計算機(jī)技術(shù)等諸多學(xué)科領(lǐng)域,內(nèi)容極為廣泛。機(jī)器視覺中圖像處理與目標(biāo)識別的特點(diǎn)是處理數(shù)據(jù)量大、計算復(fù)雜,對算法的實(shí)時性和精度要求高。
  目前機(jī)器視覺處理平臺主要有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)算,具有價格低、速度快等特點(diǎn),但其I/O接口功能較弱。32位ARM處理器處理能力已接近早期PC機(jī)的水平,且具有PC機(jī)無法比擬的體積小、價格廉、功耗低、性能強(qiáng)、可靠性高等特點(diǎn)。與DSP相比,其外圍接口更加豐富,能夠真正地“嵌入”到設(shè)備中,而且開放的體系結(jié)構(gòu)也保證系統(tǒng)能夠快速升級和更新。本文將機(jī)器視覺和嵌入式技術(shù)相結(jié)合,將機(jī)器視覺建立在基于ARM的嵌入式系統(tǒng)平臺上,設(shè)計一種基于S3C2410的運(yùn)動目標(biāo)跟蹤系統(tǒng),為開展微型化嵌入式機(jī)器視覺研究進(jìn)行有益的嘗試。
1 系統(tǒng)總體結(jié)構(gòu)與硬件設(shè)計方案
  系統(tǒng)總體結(jié)構(gòu)如圖1所示。在S3C2410嵌入式系統(tǒng)平臺上移植并配置Linux操作系統(tǒng),針對平臺和應(yīng)用的特點(diǎn),制作合適的文件系統(tǒng),編寫應(yīng)用程序。運(yùn)動目標(biāo)經(jīng)USB攝像頭實(shí)時采集后,送入S3C2410處理器,利用嵌入式處理器的強(qiáng)大運(yùn)算能力,對采集到的圖像進(jìn)行圖像分割、特征提取、形心計算等后期處理,完成目標(biāo)識別與定位,并控制步進(jìn)電機(jī),調(diào)整攝像頭位姿,使攝像頭對準(zhǔn)運(yùn)動目標(biāo),實(shí)現(xiàn)跟蹤。實(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虛擬存儲器管理、LCD控制器、支持NAND Flash系統(tǒng)引導(dǎo)、系統(tǒng)管理器、3通道UART、4通道DMA、4通道PWM定時器、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í)時性、高可靠性、可移植性等特點(diǎn)。Linux操作系統(tǒng)的開源性方便外部設(shè)備驅(qū)動程序的編寫,且開發(fā)成本低,現(xiàn)已成為主流的嵌入式操作系統(tǒng)。USB攝像頭使用的電源可以直接從USB主板上獲取,無需額外電源,增加了設(shè)備的便攜性且數(shù)據(jù)傳遞遠(yuǎn)快于普通的串口和并口,其價格也大大低于市場上通用的高速圖像采集裝置。
  綜上所述,本系統(tǒng)采用了將Linux移植到ARM系統(tǒng)的方法,使用USB攝像頭作為圖像采集方式。ARM最小系統(tǒng)由一個核心母版和外部電路構(gòu)成。核心母板包括SDRM、CPU、核心板接口等。外部電路主要有電源(主板5 V,I/O 3.3 V,CPU內(nèi)核1.8 V)、LCD、USB接口和電機(jī)驅(qū)動電路等。Linux自帶使用OV511采集芯片的攝像頭驅(qū)動,市場上大部分CMOS攝像頭采用中芯微電子公司ZC301P芯片,后者內(nèi)置DSP硬件編解碼器,采集延時大大縮短。
2 系統(tǒng)軟件設(shè)計
  基于嵌入式Linux的應(yīng)用已經(jīng)遍布很多領(lǐng)域,如移動多媒體設(shè)備、手持設(shè)備、車載導(dǎo)航系統(tǒng)、機(jī)械控制等。它支持多種CPU,包括沒有使用MMU的平臺。Linux原本是桌面和服務(wù)器市場上比較成功的操作系統(tǒng),由于其免費(fèi)、開放源碼以及良好的代碼風(fēng)格和結(jié)構(gòu),使它在很短的時間內(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)三個方面。引導(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)平臺運(yùn)行,通過超級終端調(diào)試信息。文件系統(tǒng)負(fù)責(zé)存儲系統(tǒng)配置文件,系統(tǒng)外設(shè)驅(qū)動程序。在操作系統(tǒng)配置完成后,主要工作是編寫驅(qū)動程序和應(yīng)用程序。
2.1 攝像頭驅(qū)動程序
  驅(qū)動程序是應(yīng)用程序與硬件之間的一個中間軟件層,在Linux中對設(shè)備驅(qū)動的訪問也是以文件操作的方式實(shí)現(xiàn)。Video4linux是Linux中視頻設(shè)備的內(nèi)核驅(qū)動,只需在內(nèi)核配置時靜態(tài)加載即可。攝像頭驅(qū)動加載過程為:在Linux Kernel Configuration對話框中,選擇配置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ū)動采用靜態(tài)加載的方式,具體步驟為:在/kerlnel/driver/usb下,解壓驅(qū)動,打補(bǔ)丁,在該目錄下新建spca5xx文件夾;編譯內(nèi)核,選中SPCA5XXX,執(zhí)行make dep、make zlmage、make modules命令,在/kernel/driver/usb/spca5xx中產(chǎn)生3個.o文件;用新內(nèi)核啟動insmod的3個.o文件。
2.2 電機(jī)驅(qū)動程序
  步進(jìn)電機(jī)是作為字符設(shè)備進(jìn)行驅(qū)動的。Linux操作系統(tǒng)對字符設(shè)備的操作而言,驅(qū)動程序需要提供相關(guān)的幾個操作,分別為open、read、write、ioctl等相關(guān)的函數(shù)入口點(diǎn)。在驅(qū)動程序的實(shí)現(xiàn)過程中需要定義這些文件相關(guān)的操作,填充進(jìn)入file_operations結(jié)構(gòu)中。ioctl提供用戶程序?qū)υO(shè)備執(zhí)行特定命令的方法,如設(shè)置設(shè)備驅(qū)動程序內(nèi)部參數(shù),控制設(shè)備操作特性等操作,調(diào)用成功返回非負(fù)值。由于對步進(jìn)電機(jī)驅(qū)動程序沒有相關(guān)的輸入與輸出,只需對I/O控制,驅(qū)動程序?qū)τ趙rite操作和read操作僅需返回0,對于I/O控制在驅(qū)動程序中由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ù),對圖像進(jìn)行處理,驅(qū)動電機(jī),關(guān)閉設(shè)備。圖像采集有兩種方式:內(nèi)存映射(mmap)和直接讀取設(shè)備(read)[3,4]。前者將設(shè)備文件映射到內(nèi)存,繞過I/O訪問,使得讀取速度更快,但是占用更多系統(tǒng)資源??紤]系統(tǒng)實(shí)時性,這里采用內(nèi)存映射方式。

?

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

?


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

?


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


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

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


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


參考文獻(xiàn)
[1] 田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.
[2] 趙敏,劉振興.基于嵌入式Linux的步進(jìn)電機(jī)驅(qū)動程序設(shè)計[J].微計算機(jī)信息,2008,13(051):113-114.
[3] 孟超,張曦煌.基于嵌入式系統(tǒng)的圖像采集與傳輸設(shè)計[J].計算機(jī)工程與設(shè)計,2008,29(17):4415-4416.
[4] Video4 Linux User′s Manual.http:/www.v4l.com.cn.
[5] 楊淑瑩.VC++圖像處理程序設(shè)計[M].北京:清華大學(xué)出版社,2003.
[6] 邵文珅,黃愛民,韋慶.動態(tài)場景下運(yùn)動目標(biāo)跟蹤方法研究[J].計算機(jī)仿真,2006,05(50):181-184.
[7] 毛曉波,謝曉芳,張曉林.消除運(yùn)動物體陰影的最大色度差分檢測法[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)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。