胡釗政,伍錦祥,肖漢彪,周 哲
(1.武漢理工大學 信息工程學院, 武漢 430070;2.武漢理工大學 智能交通系統研究中心,武漢 430063;3.武漢理工大學重慶研究院,重慶 401120)
隨著人工智能的應用領域不斷擴大,移動機器人扮演著越來越重要的角色。作為避免碰撞和進行運動的先決條件,障礙物檢測在其更智能地完成任務方面發揮著重要作用[1]。目前,障礙物檢測方法按照獲取環境信息的方式可以分為兩類。一類為基于距離傳感器對障礙物進行感知和定位。其中超聲波雷達價格低廉,但其二維的掃描范圍盲區較大[2];毫米波雷達具有更大的作用范圍[3],其缺點是視野有限和價格高昂;同樣的,激光雷達[4-5]也由于其高昂的價格,難以廣泛應用于移動設備上。第二類則為基于視覺傳感器的方法。單目視覺主要使用基于特征的方法對目標進行檢測[6]。文獻[7]使用基于邊緣特征的障礙物檢測,通過邊緣算子檢測邊緣特征來檢測障礙物。但是單目視覺存在視場小、無法獲取目標準確的距離信息等問題。基于立體視覺的方法一般利用雙目相機獲取深度信息。文獻[8]使用密集立體匹配進行三維重建,并通過改進的半全局匹配算法以細化視差圖,實現障礙物檢測;文獻[9]提取目標角點和邊緣信息對左右目圖像進行立體匹配來深度重建,從而實現檢測和測距,但基于立體視覺的方法計算量大,實時性不足,且離相機越近盲區越大。基于環視的方法即利用環視系統生成全景圖進行障礙物檢測,文獻[10-11]通過生成全景鳥瞰圖,并在其中檢測道路和障礙物特征,可直觀的判斷周圍障礙物情況。但該方法仍存在計算量大,實時性差的問題。除了傳統檢測方法,深度學習也被廣泛應用于障礙物檢測。文獻[12]基于YOLO(you only look once)[13]網絡,提出一種Tiny-YOLO的改進算法,并通過剪枝技術實現了精準的目標檢測;文獻[14]提出一種改進的MDNet(multi-domain convolutional neural network)網絡結合長短期記憶神經網絡對行人、車輛等目標實現了檢測和跟蹤效果。雖然基于深度學習的方法對于特定目標的檢測與識別效果較好,但對不在數據集中的目標難以檢測。
同時,上述傳感器和算法對于距離非常近的障礙物檢測效果不佳。大多數雷達傳感器都有約1 m的近距離盲區,視覺傳感器由于比例尺異常,也難以檢測超近目標。實際上,超近距離障礙物檢測對于移動設備的安全至關重要,應以更準確可靠的方式進行檢測。基于此,提出了一種基于環視系統進行逆投影差分的新型障礙物檢測算法,能夠快速檢測移動機器人上每兩個相鄰相機視野公共區域中是否存在障礙物,并精準定位。
算法流程見圖1。主要包括以下步驟:1)以水平地面為參考平面,使用逆投影算法將環視系統各相機拍攝的圖像逆投影到參考平面,并統一各逆投影圖像到同一坐標系下;2)對相鄰視角逆投影圖像進行差分操作,并通過二值化與形態學濾波等后處理實現移動機器人的障礙物檢測;3)通過像素坐標系、局部坐標系以及機器人自身坐標系的轉換實現基于機器人自身坐標系的障礙物精準定位。

圖1 算法流程圖Fig.1 Algorithm flow chart
逆投影變換主要使用相機固有參數與外部參數把原始圖像重新映射到一個新的二維域(即世界坐標系下參考平面圖像)來去除透視形變,通過該方式可以消除原始圖像與世界坐標中距離的非線性,用于障礙物檢測與定位任務。
對于所使用的魚眼相機,拍攝的圖片具有明顯的畸變,所以在使用前,需要使用相機固有參數中的畸變系數對原始圖像進行畸變校正[15],校正后的圖像去除了畸變,適用于相機針孔成像模型,后續的外參標定、逆投影變換皆在校正圖上進行操作,以消除魚眼相機畸變帶來的影響。
由于關注的是地面以及區別于地面的障礙物,所以將水平地面π0作為參考平面,以π0上任意某點P作為原點,設n為π0的單位法向量,Z軸和法線重合,移動機器人正前方為Y軸,正右方為X軸,構建合適的世界坐標系,見圖2。設I(u,v)為環視系統某一路相機拍攝,并經過畸變校正后的校正圖像,I(x,y)為與之對應的逆投影圖像,則I(x,y)可由I(u,v)逆投影到π0得到:
(1)

(2)
式中:K為攝像機的固有參數,旋轉矩陣R和平移向量t為攝相機的外部參數。r1和r2為R的前兩個列向量,滿足式(3):
(3)
上述畸變系數、相機內參數均通過張正友標定法獲得[16-17]。
對于環視系統的四路圖像,在逆投影時選取同一世界坐標系和參考平面即可把四路逆投影圖像統一于同一坐標系下,便于后續的差分操作。由于逆投影變換消除了透視形變,則在障礙物定位階段可以通過逆投影圖像來直接測量障礙物到攝像機的距離。
基于逆投影差分的障礙物檢測,用于移動機器人環視系統中每兩個相鄰相機公共視野中障礙物的檢測和定位。其原理就是通過環視系統兩個不同視角的圖像差分來去除噪聲和背景部分以對障礙物進行檢測。但是,很難通過傳統的圖像差分法對靜止的目標進行識別。由于障礙物上的點在不同視角下的逆投影平面所處的位置不同,而參考平面上的點在不同視角下的逆投影平面處于同一位置,因此,可以將任意兩個相鄰相機的逆投影圖像進行差分處理,以區分障礙物和參考平面,實現檢測。
圖2為算法原理,假設圖中為環視系統中某相鄰的兩個相機,其光心分別位于點C1和點C2,虛線框π0表示參考地平面,由圖可知,對于π0上一點Q2,在C1與C2處的成像逆投影到π0平面上均為Q2,像素值相同;而對于高于π0的點Q1和低于π0的點Q3,在C1和C2處的成像逆投影到π0分別為Q4、Q5以及Q6、Q7,像素值不同。

圖2 基于逆投影差分的障礙物檢測原理Fig.2 Obstacle detection principle based on inverse perspective mapping difference
這里以環視系統的前視和右視相機為例來說明檢測障礙物的過程。以π0為參考平面,設If(x,y)與Ir(x,y)為坐標統一之后的前視和右視逆投影圖像,則兩者之間的逆投影差分圖像d(x,y)為
d(x,y)=If(x,y)-Ir(x,y)
(4)
但是,由于不同視角的攝像機捕獲的圖像具有不同的視角和位置,不同圖像中位于地面的點像素值可能也有些許差異,相減可能并不剛好為零,為了突出障礙物區域,可對上述逆投影差分圖設置閾值進行二值化分割:

(5)
式中:B(x,y)為對應的二值圖,τ為二值操作的閾值,B(x,y)=1表示高出于參考平面的障礙物上點,B(x,y)=0表示位于參考平面的點。這里通過大津算法[18]來選取最佳閾值τ,設通過τ分割后前景的像素點數占全部像素點的比例為ω0,平均灰度為μ0;同理背景像素點數占全部像素點的比例為ω1,平均灰度為μ1。將圖像總平均灰度記為μ,類間方差記為g則有:
μ=ω0×μ0+ω1×μ1
(6)
g=ω0(μ0-μ)2+ω1(μ1-μ)2
(7)
由于式(7)計算量較大,將式(6)帶入式(7)即可得到其等價公式:
g=ω0ω1(μ0-μ1)2
(8)
采用遍歷的方法得到使g最大的閾值τ,即為所求。
為了能夠更清晰的分離參考平面點和障礙物上的點,這里使用形態學開運算的方法來濾除二值化產生的噪聲點,見式(9):
F(x,y)=(B(x,y)ΘSE)⊕SE
(9)
式中:F(x,y)為濾波后圖像,Θ為形態學中的腐蝕操作,⊕為形態學中的膨脹操作,SE為開運算操作的核函數。開運算操作可以很好的消除圖像中離散的噪聲。
由式(5)、(9)可得F(x,y)=0為參考平面上的點,F(x,y)=1為平面外障礙物上的點。則可通過二值圖中非平面點的占比來判斷移動機器人附近區域障礙物占用情況。
將機器人附近想要檢測的區域設置為感興趣區域(region of interest, ROI),可以使用式(10)計算感興趣區域中非平面的比率:
(10)
式中F(x,y)=1,(x,y)為ROI內的點。可以通過對t設置閾值來判斷ROI內是否存在障礙物,即當非平面的比率大于某一閾值時,則認定檢測區域內存在障礙物。
提出的算法除了障礙物檢測功能外還能夠實現障礙物的精準定位。用二值化后的逆投影差分圖來進行障礙物定位,通過障礙物在機器人自身坐標系下的方向和到原點的距離來描述障礙物的狀態。
為了更好的說明障礙物狀態估計的過程,同樣以前視相機與右視相機為例,所使用的坐標系配置見圖3,其中像素坐標系(pixel coordinate system,PCS)為OP-uv,坐標原點位于圖像左上角;障礙物局部坐標系(local coordinate system, LCS)為OL-XLYL,坐標原點位于移動機器人右前角;機器人自身坐標系(robot coordinate system,RCS)為OR-XRYR,坐標原點位于移動機器人中心點。

圖3 障礙物狀態估計的坐標系配置Fig.3 Coordinate system for obstacle state estimation
如圖3(b)所示,以障礙物在RCS中離其原點最近的點A的坐標來表示其的位置,障礙物的方向由θ表示。圖3(a)說明了PCS與LCS之間的轉換關系,由于逆投影變換是把圖像逆映射在了世界坐標系中z為0的參考平面(地平面)上,因此PCS與LCS之間的轉換關系可以僅通過二維變換來求得。
選擇我科2016年04月~2017年01月間收治的83例冠心病合并心絞痛患者為研究對象,其中,男性患者有63例,女性患者有20例,年齡在60歲~97歲之間,平均年齡為(75.1±2.3)歲,病程為13年~30年,平均病程為(20.5±0.3)年。
令(uA,vA)為障礙物上的最近點A在PCS中的坐標,而(uOL,vOL)來表示LCS的原點OL在PCS中的坐標。則點A在LCS中的坐標可以推導為
(11)
式中:(xL,yL)為障礙物上最近點A在LCS中的坐標,s為通過標定獲得的像素坐標與真實世界坐標之間的比例因子。
圖3(b)顯示了LCS和RCS之間的轉換關系。由于兩個坐標系的軸是平行的,因此只需通過平移來進行坐標系之間的轉換,可以表示如下:
(12)
式中:(xR,yR)為點A在RCS中的坐標,(xOL,yOL)為LCS的原點OL在RCS中的坐標,可以通過實際測量獲得。由于已經通過式(11)和式(12)計算出了障礙物在RCS中的坐標,因此可以通過式(13)、(14)估算障礙物在RCS中的方位。
(13)
式中D為障礙物上最近點A與RCS原點連線的長度,用來表示障礙物離機器人的距離。
θ=arctan(yR/xR)
(14)
式中θ為點A和RCS原點的連線與其X軸的夾角,用來表示障礙物方向。
圖4為實驗所用的移動機器人與傳感器安裝示意。如圖4(a)所示,選用輪式移動機器人為載體,角度可調節的廣角魚眼相機為感知設備,前后左右四路相機固定在移動機器人前后左右的中間約75 cm高度處組成機載環視系統;障礙物檢測范圍由兩相鄰相機的視場角以及安裝的位置和角度決定,實驗中每個攝像機水平視場為180°,分辨率為1 920×1 080像素,兩個相鄰相機之間的旋轉角度約為90°,俯仰角不做限制,以相機視野中剛好出現機器人底部為佳,有效檢測區域為視場相交區域的范圍約為80°。

圖4 移動機器人與傳感器安裝示意Fig.4 Diagram of mobile robot and sensor installation
實驗結果以移動機器人環視系統中的前視和右視相機進行障礙物檢測為例進行分析,前視相機和右視相機相關參數見表1。

表1 前視相機和右視相機參數Tab.1 Parameters of front-view and right-view cameras
由于相機內外參數沒有真值只能通過標定得到,因此對于利用棋盤格標定得到的標定精度數據,我們用棋盤格上角點在所設世界坐標系中的坐標通過內參數、畸變系數、外參數重投影到原圖上的誤差來表示,可同時衡量標定所得的內外參精度。如圖5所示,左邊為拍攝的棋盤格置于參考平面的原始圖片,右邊為棋盤格上角點通過標定數據重投影到圖像中的位置。24個角點中,最大重投影誤差為0.32個像素,最小重投影誤差為0.18個像素,平均重投影誤差為0.24個像素。

圖5 重投影圖Fig.5 Reprojection images
實驗過程分為:障礙物檢測、障礙物定位與對比算法三部分。在檢測階段,選取500 cm×500 cm的ROI區域來限制檢測范圍,以減少數據處理負荷和檢測異常的情況。使用3×3的核函數對二值圖像進行濾波消除離散的噪聲點,最后,通過計算ROI中非平面點的比率來判斷檢測區域是否存在障礙物。在障礙物定位階段,將障礙物上離相機最近的點設置為位置計算的起點,獲取各個障礙物相對移動機器人中心的距離。對比算法部分把本文算法與目前常見的三維重建以及深度學習的目標檢測方法進行性能對比,來說明所提出算法的優越性。
實驗分別在室內和室外兩種環境采集數據進行測試,且均在相同的軟硬件環境下進行,其CPU為: Intel Core i7-9750H 2.6 GHz,16 GB內存,編程環境為VS2019/C++。
1)室外場景實驗結果和分析
實驗一選取武漢理工大學余家頭校區航海樓的室外環境為實驗場景。相對于室內場景,室外場景的環境更為復雜多變,使得障礙物檢測與室內場景相比具有更大的難度。
在實驗中,控制移動機器人隨意行進,并使用本文算法對不同距離的障礙物進行檢測。選取具有代表性的動、靜態障礙物檢測過程見圖6。圖6中第1行為前視和右視相機拍攝的原始圖像經過畸變校正得到的校正圖,第2行為兩者所對應的逆投影圖像,第3行左邊為兩逆投影圖像經差分生成的逆投影差分圖,第3行右邊為差分圖通過二值化、形態學濾波和ROI提取等后處理之后得到的最終的檢測圖,圖中地平面為黑色,高于地面的障礙物部分則顯示為白色,可檢測區域為兩相鄰視角圖像的公共區域。

圖6 室外場景障礙物檢測Fig.6 Obstacle detection in outdoor scenes
實驗中,共檢測障礙物107次,其中38次汽車,47次路緣石,7次路障,15次花壇。最終的檢測結果見表2,其中第3列給出了錯測次數,第4列顯示了檢測的準確率。可以看出,本文算法成功檢測障礙物104次,檢測精度為97.2%。

表2 室外場景障礙物檢測結果Tab.2 Obstacle detection results in outdoor scenes
2)室內場景實驗結果和分析
實驗二選取武漢理工大學余家頭校區航海樓室內走廊為實驗場景,室內環境相對于室外存在空間小、光線暗等限制。在實驗中,控制移動機器人沿室內過道行進,并使用所提出的算法進行障礙物檢測。共檢測障礙物113次,其中檢測行人48次,臺階19次,垃圾桶25次,墻壁21次。部分檢測結果見圖7,分別為動態障礙物和靜態障礙物檢測情況。

圖7 室內場景障礙物檢測Fig.7 Obstacle detection in indoor scenes
最終的結果統計見表3,在室內總共113次障礙物檢測實驗中,本文算法成功檢測110次,檢測精度為97.3%。

表3 室內場景障礙物檢測結果Tab.3 Obstacle detection results in indoor scenes
障礙物定位實驗中,檢測遠近不同目標距離共20次,以驗證算法對障礙物定位的效果,以及障礙物實際距離對于定位精度的影響。由于從機器人中心到障礙物的真實距離不方便測量,難以評定誤差,實驗結果由在LCS下的定位結果給出,部分結果見表4。表4列出了5 m范圍內由近及遠的10次障礙物定位結果,其中,前5次實驗為針對于距離在1 m以內的超近障礙物的定位;表中第1列為實驗次數編號,第2列為通過本文算法所計算的障礙物距離,第3列為障礙物上最近點到移動機器人的真實距離,第4列為誤差率。
由表4可知,本文提出的算法對于超近距離障礙物定位有較好效果,定位誤差在0.87%左右,隨著障礙物的距離增加測距的誤差變大,但5 m內的相對誤差都小于1.5%,平均相對誤差為1.1%。

表4 障礙物定位實驗結果Tab.4 Obstacle location experimental results
為體現本文算法的優越性,與目標檢測常用的兩種算法進行對比,包括基于三維重建的目標檢測方法和基于深度學習的目標檢測方法,在相同環境下,使用與本文算法相同的數據集,檢測結果見表5,分別列出了3種算法在檢測耗時、檢測準確性與定位誤差的優異。

表5 各方法對比結果Tab.5 Comparison of results of different methods
以文獻[8]為代表的立體視覺方法耗時較長,對于障礙物的檢測有一定局限性,不能滿足實時檢測的要求。檢測的準確性僅為93.2%,其原因是小物體的三維重建精度較差,立體相機基線長短以及與障礙物的距離也會對檢測精度造成影響。文獻[12-14]使用深度學習進行目標檢測,本文使用文獻[13]提出的YOLO系列最新的YOLO-V5網絡來進行對比實驗,由結果可知,深度學習在固定類別的目標檢測和識別上準確率高,但在檢測固定類別之外的障礙物方面存在缺陷。當場景中目標較多時,檢測耗時也會隨之增大,且生成包圍盒的位置會對障礙物檢測與定位的精度造成波動。
從表5給出的結果可以看出,相對于目前常見的算法,本文提出的算法在耗時以及檢測和定位精度方面均有較大提升。
1)障礙物檢測模塊,通過相鄰視角圖像的逆投影差分,來檢測其視野公共區域的障礙物,檢測準確率為97.3%。
2)障礙物定位模塊,通過坐標系的轉換,獲取障礙物相對于移動機器人的準確位置信息,定位誤差隨著距離的增加而增大,在5 m內定位平均相對誤差為1.1%。
3)提出的算法有效改善了傳統方法對于超近距離障礙物的檢測效果不佳的問題,可以檢測出1 m以內的超近障礙物,且定位誤差穩定在0.87%左右。
4)提出的算法無需經過耗時的三維重建與目標識別,提高了運算速度,檢測時間為46 ms/幀,能夠滿足移動系統對算法實時性的要求,實現障礙物快速檢測。