李佺振,王 強,曾 勇,于 蒙
(武漢理工大學 物流工程學院,武漢430063)
移動機器人通過跟隨人體目標實現視覺導航是一種較為便捷的方式。近年來,視覺導航機器人被廣泛應用于工業和服務領域,如載貨機器人[1]、老人看護機器人[2]、智能輪椅[3]等。實時定位目標是移動機器人順利實現跟蹤導航的核心。超聲波傳感器、 單線激光雷達、RGB-D 相機等多種傳感器的應用[4],在一定程度上提高了移動機器人跟蹤目標的精度。
當目標處于多人干擾環境時,利用RGB-D 相機或雙目立體相機獲取深度信息并結合骨架跟蹤定位跟蹤目標時,易受深度圖像精度和周圍環境變化的影響, 導致目標跟蹤的準確性和實時性下降[5]。
為了提高目標跟蹤的準確性和實時性,在此提出結合基于OpenCV-Haar 特征提取的人臉檢測與識別算法和KLT 稀疏光流追蹤法的移動機器人視覺導航方法。依據每個跟蹤目標相貌不同的特點,通過人臉識別算法確定跟蹤目標[6];使用稀疏光流算法提取目標特征點進行跟蹤。在真實環境中通過Pioneer-LX 機器人, 驗證了基于人臉識別與光流追蹤的視覺導航算法在多人環境下準確識別并跟蹤目標的實時性和有效性。
通過人臉識別算法檢測人臉并進行識別確定跟蹤目標,通過Harris 角點檢測算法提取目標特征點[7],使用KLT(Kanade-Lucas-Tomasi)稀疏光流追蹤算法確定目標特征點的運動信息,實現移動機器人跟隨目標移動。KLT 算法效率高、速度快,結合人臉識別提高了移動機器人視覺導航中目標定位的精度和實時性。
實現移動機器人的行人引航需要準確檢測到目標人體,通過人臉檢測與識別進行目標定位。在此,運用OpenCV,在滑動窗口與Haar 特征級聯分類器檢測[8]的雙機制作用下,進行人臉檢測識別。Haar 特征檢測進行人臉檢測訓練后生成一個xml特征池,之后使用固定大小的滑動窗口將待檢測的圖像與特征池進行遍歷比對。進行Haar 特征訓練時, 對于輸入的訓練圖像制作圖像金字塔模型,如圖1所示,以適應不同大小的圖像。由于圖像的任何位置出現人臉的可能性相同,在檢測的過程中使用大小固定的窗口對圖像進行遍歷,將遍歷窗口像素的RGB 通道值與xml 特征池進行比對,從而判斷該圖像是否為人臉,并準確定位目標人臉。
通過移動機器人攝像機拍攝的視頻流進行目標人臉檢測識別之后,忽視除目標人體外的圖像區域,突出目標所在的區域。只對目標所在區域進行Harris 角點提取,從而減少計算量,提高跟蹤的實時性。

圖1 圖像金字塔模型Fig.1 Image pyramid model
目前光流追蹤法廣泛應用于平面圖像和視頻流圖像的物體追蹤[9]。其中,稠密光流法需要對空間所有像素點進行微分計算,計算量大,實時性不高;稀疏光流法只需要提取目標的特征點并進行跟蹤,計算量大幅下降,能夠有效提高目標跟蹤的實時性。
KLT 光流法是一種兩幀差分的光流估計算法,利用幀間特征點信息并采用最小二乘方法(最優估計方法)實現幀間特征點的匹配。KLT 光流法認為平面圖像所有像素點的速度矢量構成光流場,當物體連續運動時,對應圖像上的像素點位置坐標發生變化,光流場也發生相應改變。假設,圖像上某一點坐標(x,y)在t 時刻的亮度為I(x,y,t),經過時間Δt亮度變化到I(x+Δx,y+Δy,t+Δt),當Δt 趨于無窮小時,認為該點的亮度不變,即

將式(1)泰勒展開,取極值,得到的光流計算基本公式為

其中

式中:u,v 為光流場中像素點在x,y 方向的速度分量。通過u,v 求得該點運動速度,測算出該點的運動方向與下一時刻的位置。
將移動機器人拍攝的目標人體圖像進行灰度處理后,通過人臉檢測識別算法劃分出部分區域進行Harris 角點(即目標人體的特征點)提取,并進行特征點位移方向預測。Harris 角點檢測算法通過一個固定窗口對人臉識別劃分的圖像區域進行檢測,比較檢測前后窗口中像素灰度值變化程度,如果該點的灰度值與周圍圖像灰度值存在較大差距,則認為該點為Harris 角點。窗口中像素點通過高斯濾波公式

卷積運算后的灰度值為

式中:a 為窗口沿x 方向的運動;b 為沿y 方向的運動;(a,b)為窗口的移動量;(x,y)為窗口內對應像素點坐標;I(x,y)表示窗口移動前的灰度值,I(x+a,y+b)表示窗口移動后的灰度值。選取E(a,b)中合適的點作為Harris 角點。對I(x+a,y+b)進行泰勒展開并略去高階無窮小,有

矩陣M 的2 個特征值λ1,λ2在函數E(a,b)中反映曲率大小。Harris 角點檢測算法的基本原理[10]如圖2所示,如果這2 個特征值都偏小,則窗口區域內的灰度值趨于常量,灰度變化不明顯,不適合作為特征點;如果2 個特征值一個偏大,一個偏小,則表示該點處于圖像的邊緣區域,即沿著某一方向的灰度值變化明顯,而沿著另一方向的灰度變化不明顯,也不適合作為特征點;如果2 個特征值都偏大,窗口沿著任意方向的灰度變化都很明顯,則適合作為特征點。

圖2 Harris 角點檢測算法原理Fig.2 Schematic of Harris corner detection algorithm
引入響應函數[11]求解角點,即

其中

式中:detM 為矩陣行列式;trM 為矩陣的跡;k 為修正系數,取k=0.04~0.06。通過式(7)求出R 值,并設置相應的閾值T, 當R>T 時表明2 個特征值λ1,λ2足夠大,并將該點作為特征點候選點。使用大小為3×3 的窗口檢測特征點候選點, 選出極大值作為該窗口的角點,即特征點。
但是當局限域Ω 中某些點違反了光流條件或局限域運動不連續,如出現陰影、燈光突然變暗等,所求得的解誤差增大。引入Hessian 矩陣[12]對解進行優化。使用Hessian 矩陣條件數判斷局限域內滿足基本約束的程度,篩選出滿足約束條件的特征點進行求解穩定的光流矢量。基于光流方程式(2)對x,y求偏導并寫成矩陣形式:

將Hessian 矩陣定義為

Hessian 矩陣的條件個數為

式中:λmax和λmin分別為矩陣H 的最大特征值和最小特征值。計算每點對應Hessian 矩陣的秩和條件數,根據條件數設置秩的許用值σ,大于該許用值的點認為是可靠的特征點,并將其條件數進行歸一化處理,倒數作為該特征點的權重,即

最后根據加權最小二乘法求解特征點的u,v 值。
在此主要針對移動機器人實時拍攝的經過人臉識別算法確定識別區域的視頻影像, 通過KLT稀疏光流法進行特征點追蹤。追蹤算法流程如圖3所示。

圖3 光流追蹤流程Fig.3 Optical flow tracking flow chart
當攝像機輸入第1 張圖像, 并進行灰度處理后, 通過人臉檢測識別算法確定追蹤區域, 然后Harris 角點算法開始檢測待追蹤區域圖像中的特征點,并繪制與保存這些特征點。當輸入第2 幀灰度圖像后,KLT 光流算法利用加權最小二乘法求出u,v 值,并計算出下一幀特征點會出現的位置。此時Harris 角點算法計算出來的特征點追蹤到這一位置,之后通過攝像機更新輸入的灰度圖像,Harris 角點算法基于新圖像計算出新的特征點,取代原有特征點數據,通過KLT 光流算法基于這些特征點測算出它們下一幀出現的位置,并讓這些特征點追蹤到這一位置。如此循環迭代,實時測算并追蹤特征點以加快移動機器人的追蹤速度。
在真實環境中通過Pioneer-LX 機器人,對所提出的視覺導航算法在多人環境下準確識別并跟蹤目標的實時性和有效性進行驗證。
在武漢理工大學化學樓310 實驗室的真實環境內, 使用Pioneer-LX 移動機器人研究平臺,在Windows 7 系統下, 實現對目標的檢測、 識別與跟蹤。Pioneer-LX 移動機器人通過海康威視攝像頭進行圖像捕捉,使用OpenCV 庫2.4.8 版對攝像頭獲取的圖像進行處理。Pioneer-LX 移動機器人實驗平臺如圖4所示。

圖4 Pioneer-LX 移動機器人實驗平臺Fig.4 Experimental platform of mobile robot Pioneer-LX
先通過人臉識別算法檢測識別出目標人臉,并劃分出提取特征點的圖像范圍,如圖5所示。由圖可見,右上角對話框對攝像頭所傳入的圖像進行提取識別,該對話框中的圓圈標記即為人臉。

圖5 驗證試驗中人臉識別Fig.5 Face recognition in verification test
攝像機輸入的圖像經過人臉檢測識別劃分特征點檢測區域后進行灰度處理,然后通過Harris 角點檢測算法提取被劃分的圖像區域內的目標特征點,并將提取出來的特征點繪制顯示在圖像中,如圖6所示。

圖6 驗證試驗中特征點提取Fig.6 Feature point extraction in verification test
當目標人體移動時,通過KLT 光流算法對比前后2 幀圖片測算出下一幀圖像的特征點,并更新上一幀圖像的特征點,然后保存特征點數據并繪制出跟蹤軌跡, 如圖7所示右下角camera input 圖像框及其放大圖。

圖7 移動目標特征點跟蹤情況Fig.7 Tracking of moving target feature points
KLT 光流追蹤算法根據人體的移動趨勢,追蹤特征點到下一位置,camera input 圖像框中的線條表示目標人體從前一幀到后一幀的移動趨勢,通過追蹤這些特征點實現移動機器人實時追蹤目標人體移動。移動機器人通過判斷特征點的移動趨勢調節旋轉角度,保證目標人體始終位于移動機器人視野范圍中央;通過激光雷達探測當前位置與目標位置的距離,如果大于設定的閾值,則朝目標方向運動;如果小于設定的閾值,便停止運動。如果目標人體移動速度過快,超出了移動機器人攝像頭的視野范圍,移動機器人停止移動并根據前一幀圖像基于KLT 光流算法測算出人體運動趨勢,進而朝目標運動方向旋轉一定角度找尋目標。圖像更新的同時,特征點數據也會隨著更新,從而實現KLT 光流追蹤算法的循環迭代。
移動機器人在進行目標跟蹤時,偏轉角度會隨目標特征點的移動而變化。當目標人體移動時,移動機器人位置變化數據見表1。以表中第1 行為例,移動機器人的位置數據為:camera input 圖像框寬度為500 像素格; 移動機器人初始偏轉角度為-101°;當目標中心移動到296 像素格位置時,移動機器人向左偏轉3°進行跟蹤。

表1 追蹤數據變化值Tab.1 Tracking data change values
移動機器人的目標跟蹤效果如圖8所示。當目標人體從圖8a 中的點A1 位置移動到圖8b 中的點A2時,移動機器人追蹤目標人體從圖8a 中的點B1 位置移動到圖8b 中的點B2,偏轉角度也發生相應改變。

圖8 移動機器人目標跟蹤效果Fig.8 Target tracking effect image of mobile robot
FR-KLT 視覺導航算法與光流追蹤算法[11]跟蹤目標的性能對比如圖9所示。

圖9 跟蹤性能的對比Fig.9 Comparison of tracking performance
通過以上結果,可以驗證基于人臉識別與光流追蹤的視覺導航算法,在真實環境下準確識別并跟蹤目標的實時性和有效性。
所提出的基于人臉識別算法與KLT 稀疏光流追蹤算法的移動機器人視覺導航方法,將人臉檢測與識別應用于目標定位, 提高了目標定位的精度。同時, 將通過人臉識別劃分出目標區域的圖像,使用KLT 光流追蹤算法對目標區域進行目標特征點提取與測算,減少了計算量,從而提高了目標跟蹤的實時性。通過Pioneer-LX 移動機器人在真實環境下的試驗,驗證了該視覺導航方法的有效性。該試驗由于Pioneer-LX 的攝像頭數據通過服務器傳到計算機,導致其反應速度延遲1~2 s,實際試驗過程中Pioneer-LX 的反應速度稍微下降,但相對提高了實時性。