楊傳琪, 楊樹蔚, 劉詠梅, 閆克丁
(1.國網(wǎng)陜西省電力公司西咸新區(qū)供電公司, 陜西 西安 712000; 2.上海電力大學(xué), 上海 200090; 3.西安工業(yè)大學(xué), 陜西 西安 710021; 4.西北工業(yè)集團(tuán), 陜西 西安 710043)
目標(biāo)識別跟蹤是指通過攝像頭等視覺設(shè)備采集圖像,并且通過目標(biāo)檢測算法實現(xiàn)對圖像中所有目標(biāo)的提取,通過識別算法實現(xiàn)對特定目標(biāo)的提取,然后再利用跟蹤控制算法實現(xiàn)對識別的特定目標(biāo)的追蹤。
自20世紀(jì)50年代,越來越多的的研究人員開始鉆研目標(biāo)識別跟蹤系統(tǒng)。動態(tài)目標(biāo)識別跟蹤系統(tǒng),尤其是二維動態(tài)目標(biāo)識別跟蹤的研究已成為研究焦點。此課題涉及的學(xué)科包括圖像處理技術(shù)、自動控制、計算機視覺、機械設(shè)計制造等,作為多學(xué)科交叉的產(chǎn)物,目標(biāo)識別跟蹤具有極大的研究價值。隨著計算機視覺、計算機硬件的極速發(fā)展和完善,在科學(xué)和工程領(lǐng)域中,目標(biāo)識別跟蹤技術(shù)的運用越來越普遍。
在生活中,目標(biāo)識別跟蹤系統(tǒng)主要應(yīng)用于視頻監(jiān)控、交通管制、公安偵查等領(lǐng)域。視頻監(jiān)控系統(tǒng)能夠?qū)σ曇皟?nèi)的所有目標(biāo)實時監(jiān)控,完成提取目標(biāo)的檢測、識別與跟蹤,比較先進(jìn)的系統(tǒng)還可以根據(jù)人的行為判斷是否違法,進(jìn)而給出警告,通知工作人員處理。但是目前的視頻監(jiān)控都在系統(tǒng)后臺完成,需要有人負(fù)責(zé)相關(guān)工作,不僅浪費了人力資源,而且還可能由于個人原因?qū)е屡袛嗍д`。因此,無人工參加的視頻監(jiān)控系統(tǒng)越來越受到人們的歡迎。二維目標(biāo)識別跟蹤系統(tǒng)監(jiān)控范圍大、角度廣,應(yīng)用在視頻監(jiān)控系統(tǒng)中可以有效地解決固定攝像頭帶來的弊端,更好地實現(xiàn)多攝像頭接力跟蹤。
隨著生活中突發(fā)事件發(fā)生概率的增大,對社會信息的需求也趨向更加密集復(fù)雜。為提前預(yù)防各種事件,需要加強對重點區(qū)域運動目標(biāo)的檢測跟蹤能力,對被跟蹤目標(biāo)的當(dāng)前狀態(tài)進(jìn)行行為分析和態(tài)勢評估,可以減少意外的發(fā)生[1]。由此,自動目標(biāo)識別作為目標(biāo)跟蹤系統(tǒng)的重要技術(shù),已成為研究熱點[2]。
目前,對于圓形目標(biāo)的識別算法主要有基于Hough變換算法和基于圓度檢測算法。文獻(xiàn)[3]提出了基于廣義Hough變換的殘缺圓檢測方法,利用多圓快速隨機檢測特性,以提高對殘缺圓檢測的適應(yīng)性,但是對均值收斂的快慢、方差大小這些統(tǒng)計信息需求增多,導(dǎo)致檢測速度降低。近年來,由于目標(biāo)的視覺檢測技術(shù)逐漸成熟,研究者開始圍繞基于視覺的運動目標(biāo)檢測與跟蹤技術(shù)。文獻(xiàn)[4]針對道路識別和避障提出了輕度機器視覺方法。同時,清華大學(xué)、西安交大等機構(gòu)都在視覺跟蹤方面取得了成果,其研究目標(biāo)包括體育視頻中的運動目標(biāo)、野外環(huán)境下的目標(biāo)等[5-6]。
本文設(shè)計并實現(xiàn)了一種圖形識別跟蹤系統(tǒng)。該系統(tǒng)包括圖像處理、基于Arduino云臺控制器和舵機云臺3個模塊,計算機處理相機采集的圖像,通過Arduino控制舵機轉(zhuǎn)動角度,精確調(diào)整相機方位、俯仰姿態(tài),以實現(xiàn)圖形的追蹤。
本文設(shè)計的識別跟蹤系統(tǒng)框圖如圖1所示。
圖1 基于Arduino的目標(biāo)跟蹤系統(tǒng)框圖
基于Arduino的目標(biāo)跟蹤系統(tǒng)主要包括圖像處理前端和運動控制端兩個部分。圖像處理前端實現(xiàn)圖像預(yù)處理、目標(biāo)檢測識別和目標(biāo)跟蹤功能,通過對運動目標(biāo)圖像位置的提取,得到具體的位置數(shù)據(jù),并發(fā)送偏差數(shù)據(jù)。運動控制端接收圖像處理端發(fā)送的位置偏差量,通過控制算法控制舵機轉(zhuǎn)動。
基于Arduino的目標(biāo)跟蹤系統(tǒng)主要有相機、跟蹤云臺、控制器和上位機組成框架,如圖2所示。計算機將相機采集的目標(biāo)圖像進(jìn)行處理得到偏離圖像中心的像素差,然后通過串口給控制器發(fā)送指令,控制器接收圖像中心的像素差,以此完成對舵機的控制,從而保證目標(biāo)圖像位于視場中心區(qū)域,達(dá)到跟蹤目的。
圖2 基于Arduino的目標(biāo)跟蹤系統(tǒng)組成框架
跟蹤系統(tǒng)工作過程為:當(dāng)運動目標(biāo)在跟蹤路徑上開始運動,此時上位機發(fā)送串口指令,相機獲得該指令信號后開始對跟蹤路徑上的運動目標(biāo)進(jìn)行捕獲采集[7],控制二維轉(zhuǎn)臺在舵機收到相應(yīng)的控制指令后進(jìn)行相應(yīng)的轉(zhuǎn)動調(diào)整。
跟蹤系統(tǒng)中,當(dāng)相機光心與目標(biāo)載體的主要運動平行或重合時,忽略次要因素,將目標(biāo)看作是一維直線運動。成像視場的擴大借助舵機完成,能夠完成跟蹤路徑上每一位置的變化狀態(tài)的實時跟蹤,通過確定合理的方位軸旋轉(zhuǎn)角度和俯仰軸旋轉(zhuǎn)角度,擴大跟蹤視場的范圍,使跟蹤更加準(zhǔn)確。當(dāng)跟蹤算法得到的目標(biāo)圖像的位置與圖像中心位置之間有偏差時,表示運動目標(biāo)偏離圖像中心一定范圍[8]?;谶@一像素偏差,上位機軟件首先計算PID算法的輸出角度,再通過串口發(fā)送相應(yīng)的轉(zhuǎn)動角度,二維跟蹤轉(zhuǎn)臺得到轉(zhuǎn)動角度后向目標(biāo)圖像閾值框方向轉(zhuǎn)動,以減小運動目標(biāo)的跟蹤偏差,使運動目標(biāo)始終在相機的一定成像視場范圍內(nèi)。上位機對目標(biāo)圖像位置偏差信息進(jìn)行處理,通過上位機發(fā)送給單片機相應(yīng)的控制指令,使單片機控制二維跟蹤轉(zhuǎn)臺做出相應(yīng)的轉(zhuǎn)動調(diào)整,完成在跟蹤路徑上對運動目標(biāo)的實時跟蹤[9]。
二維轉(zhuǎn)臺是用于控制相機運動的執(zhí)行機構(gòu),通過舵機控制相機運動完成對圖形目標(biāo)的識別追蹤。下位機控制方位舵機和俯仰舵機轉(zhuǎn)動,進(jìn)而控制安裝在轉(zhuǎn)臺上的相機移動,以跟蹤目標(biāo)。對二維轉(zhuǎn)臺各部件的功能進(jìn)行分析,使用NX12.0完成了三維模型的建立,并搭建了云臺實物,如圖3所示。
圖3 二維轉(zhuǎn)臺三維模型及實物示意
2.2.1 云臺硬件設(shè)計
云臺控制器選擇Arduino開發(fā)板來實現(xiàn)對舵機的控制,圖形跟蹤系統(tǒng)選擇Arduino開發(fā)板作為硬件開發(fā)平臺,舵機選用MG996r型。Arduino和舵機連接圖如圖4所示。
圖4 Arduino和舵機連接示意
單片機10#管腳輸出脈沖寬度調(diào)制(Pulse Width Modulation,PWM)波控制水平舵機轉(zhuǎn)動,單片機9#管腳輸出PWM波控制俯仰舵機轉(zhuǎn)動,通過發(fā)送周期為20 ms的PWM信號控制舵機轉(zhuǎn)動。其中,脈沖寬度在0.5~2.5 ms,相對應(yīng)舵盤的位置為0~180°,呈線性變化。
2.2.2 云臺控制算法設(shè)計
基于Arduino的目標(biāo)跟蹤系統(tǒng)云臺控制采用PID算法,將像素偏差的比例P、積分I和微分D的線性組合作為控制量對被控對象進(jìn)行控制。PID控制框圖如圖5所示。
圖5 PID控制框圖
PID控制器的比例控制、積分控制和微分控制實施不同的控制規(guī)律,對控制系統(tǒng)產(chǎn)生不同的作用[10]。作為一種線性的閉環(huán)控制器,根據(jù)不同的控制策略可以進(jìn)行組合控制或者單獨控制。PID控制期望給定值yd(t)與系統(tǒng)真實值yt(t)構(gòu)成偏差,利用此種策略完成控制。
error(t)=yd(t)-yt(t)
(1)
PID的控制規(guī)律和傳遞函數(shù)形式分別為
(2)
(3)
式中:K——比例系數(shù);
TI——積分時間常數(shù);
TD——微分時間常數(shù);
U(s),E(s)——系統(tǒng)輸出量和輸入量。
在計算機控制中,需要利用離散化的PID算法將矩形法數(shù)值積分近似代替積分,以一階后向差分近似代替微分可以得到離散PID表達(dá)式[11]。采用數(shù)字PID控制器,采樣時間為T,進(jìn)行k次采樣,即
(4)
式中:k——采樣序列號;
KP——比例調(diào)節(jié)系數(shù);
e(k)——k時的偏差值;
KI——積分調(diào)節(jié)系數(shù);
ei——積分誤差;
T——采樣周期;
KD——微分調(diào)節(jié)系數(shù);
e(k-1)——k-1時的偏差值。
云臺跟蹤采用圖5所示的PID控制框圖,則圖形伺服控制框圖如圖6所示。
圖6 圖形伺服控制框圖
為了云臺控制的穩(wěn)定性,本文采用了帶死區(qū)的位置PID控制。由圖6可知,輸入為已知期望,輸出為位置偏差,本文設(shè)計的基于Arduino的目標(biāo)跟蹤系統(tǒng)采用基于位置偏差的PID算法,設(shè)置了5個像素的邊界閾值,在解決死區(qū)邊界問題時,通過對比例、積分、微分系數(shù)的整定,確定各個環(huán)節(jié)的系數(shù)值分別為KP=0.6,KI=0.003,KD=0.002時跟蹤效果最理想。
2.3.1 圖形跟蹤軟件流程
計算機通過連接相機實現(xiàn)目標(biāo)圖像釆集、圖像預(yù)處理、目標(biāo)檢測提取、目標(biāo)識別、云臺控制數(shù)據(jù)發(fā)送等功能。由于PyQt5具有文檔豐富、學(xué)習(xí)時間短、便于打包發(fā)布軟件等優(yōu)點,故本文選用PyQt5開發(fā)圖形界面。OpenCV是一個開源的跨平臺計算機視覺庫,因此本文選擇使用PyQt5+OpenCV庫來完成圓形識別的軟件開發(fā)。計算機軟件流程如圖7所示。
圖7 計算機軟件流程示意
2.3.2 基于Hough變換圓形識別算法
采用基于Hough變換圓形識別算法實現(xiàn)圓形的識別,其檢測原理是先進(jìn)行坐標(biāo)轉(zhuǎn)換后根據(jù)圓的3個維度累加度量結(jié)果進(jìn)行判斷。由于轉(zhuǎn)換到三維空間的計算量增大,為了增大可靠性,所以本文采用Hough梯度圓形檢測算法。該方法將三維累加平面轉(zhuǎn)化為二維累加平面,利用各個點的模向量和所有候選中心的邊緣非零像素來確定圓心和半徑,具體流程如圖8所示。
圖8 基于Hough變換圓形識別算法流程
首先對輸入圖像進(jìn)行邊緣檢測,獲取邊界點;然后進(jìn)行坐標(biāo)變換,由x-y坐標(biāo)系轉(zhuǎn)換到a-b坐標(biāo)系,寫成如下形式(a-x)2+(b-y)2=r2。原圖像中存在多個圓形,同樣存在多個圓心,為了獲得對應(yīng)圓形的圓心坐標(biāo)(a,b),根據(jù)Hough變換圓形識別算法,需要對局部交點處圓進(jìn)行統(tǒng)計與比較,得到每一個局部最大值。若某一個r下面檢測到圓形,則該圓的r值也隨之確定。
完成上述軟硬件開發(fā)后,在實驗室開展實驗,在黑暗背景照射以一個圓亮點作為跟蹤對象,實驗采集圖像如圖9所示。
圖9 圓點目標(biāo)跟蹤實驗結(jié)果
以圖9(a)中的點為起始時刻,目標(biāo)點靠左,不在中心位置,經(jīng)過圖像處理和云臺控制后,相機向左轉(zhuǎn)動,如圖9(e)中目標(biāo)點基本在相機視場中心位置,如圖9(g)向左移動目標(biāo)點后,圖9(i)又跟蹤至中心位置。經(jīng)過多次實驗驗證本系統(tǒng)能夠完成目標(biāo)點的跟蹤功能。
本文設(shè)計了圖形識別跟蹤系統(tǒng),實現(xiàn)了圓形識別和二維轉(zhuǎn)臺的精確控制。給出了圖形跟蹤的云臺控制器設(shè)計和軟件設(shè)計。在計算機軟件中,借助Python的圖像處理庫識別圖像中的目標(biāo),并根據(jù)預(yù)存特征判斷是否為特定目標(biāo),然后提取出目標(biāo)的位置信息,通過串口發(fā)送給下位機控制舵機轉(zhuǎn)動,最后實現(xiàn)了圖形的識別跟蹤。