游佳興,黃魯
?。ㄖ袊茖W(xué)技術(shù)大學(xué) 電子科學(xué)與技術(shù)系,安徽 合肥 230026)
摘要:在單目視覺避障系統(tǒng)中,利用紅色LED水平光條照射前方障礙物,由攝像頭獲得圖像并處理后得到紅光光條,根據(jù)光條中心在圖像中的位置判斷障礙物與攝像頭之間的距離。該文對Zhang并行細化算法進行了改進,以適應(yīng)嵌入式系統(tǒng)快速準(zhǔn)確得到紅光光條的中心線,由中心線坐標(biāo)得到障礙物距離及寬度。實驗結(jié)果證明,該算法具有很好的中心線提取效果;測距范圍為25 cm,測距誤差在3 mm以內(nèi)。
關(guān)鍵詞:openCV;中心線提?。粶y距;單目視覺
0引言
目前,掃地機器人避障是非常熱門的研究領(lǐng)域,與傳統(tǒng)的超聲波、紅外測距[1]相比,視覺傳感器可以得到更多的環(huán)境信息;單目視覺系統(tǒng)具有成本低、體積小的特點,適合于掃地機器人。單目視覺避障的方法主要有單目圖像還原3D場景[2]、特征檢測[3]、結(jié)構(gòu)光測距。本文利用紅色LED矩形光條照射前方障礙物,根據(jù)光條中心在圖像中的位置來判斷障礙物距離。
圖1(a)、(b)所示分別為距離障礙物5 cm和10 cm的情況下攝像頭獲得的圖像。由這兩個圖像可知,不同距離下的光條中心在圖像上的位置不同,從而達到測距的目的。
1中心線提取
目前中心線的提取算法主要有以下兩種:
?。?)基于距離變換的方法[4]。建立紅色光條的距離場模型,提取距離場中的局部極值點,然后細化處理得到的中心線。該算法的優(yōu)點是精度高,適合三維場景;缺點是計算復(fù)雜度高,實時性較差。
?。?)二值細化法[5]。該算法將得到的紅色光條二值化,利用迭代的方法從邊界開始逐漸刪除,直至得到中心線。該算法的優(yōu)點是實現(xiàn)簡單,速度快,可反映各個光條的形狀;缺點是如果邊界有許多毛刺將會出現(xiàn)除中心線外其他的分支。
由于本單目視覺避障系統(tǒng)是用于掃地機器人上,要求測距精度較高、實時性好,因此本文采用二值細化法。提取光條中心線的步驟如圖2所示。首先在Open Source Computer Vision Library(openCV)中利用HSV顏色空間將紅色光條提取出來[6],如圖3所示,將紅色光條部分的像素值置0(黑色),其他背景的像素值置255(白色)。針對邊界出現(xiàn)毛刺會影響中心線提取的缺點,對提取出的紅色光條圖像進行開運算,消除邊界毛刺的影響。
1.1圖像開運算去毛刺
開運算是圖像形態(tài)學(xué)中的先腐蝕后膨脹的結(jié)果,開運算可以在不改變光條基本形狀的情況下平滑邊界,消除邊界毛刺,避免中心線出現(xiàn)分支。本文利用openCV自帶的腐蝕函數(shù)cvErode(src,dst,element,1)和膨脹函數(shù)cvDilate(src,dst,element,1)來進行開運算操作。其中src為原圖像,dst為處理后的圖像,element為腐蝕膨脹窗口的形狀和大?。ㄔ诒疚闹?,選擇的是10×10的矩形窗口),最后一個參數(shù)為膨脹腐蝕的次數(shù)。
1.2中心線提取算法
本文算法的思想是迭代刪除光條的上邊界和下邊界,且保證中心線上的像素點不會被刪除,直至得到光條的中心線。
將開運算處理后的二值圖像歸一化,利用openCV內(nèi)的函數(shù)cvThreshold,光條部分的像素值為1,其他為0。為了判定像素值為1(光條部分)的點P1(i,j)是否為邊界,取其周圍3×3的窗口內(nèi)的像素點作為判定,如表1所示。遍歷光條中的所有像素點,根據(jù)3×3窗口內(nèi)P1(i,j)周圍8個像素點確定其是否為上邊界或下邊界,如果是則將其像素置0(刪除邊界),最終得到水平方向垂直寬度為1的中心線。
算法將迭代分為兩個部分:第一部分是將光條的上邊界刪除,第二部分是將光條的下邊界刪除。將位于光條上邊界的點P1(i,j)置0的條件為:(1)B(P1)≤6;(2)A(P1)=1;(3)P2=0 && P6≠0。
其中,B(P1)為P1點周圍8個像素點中為1的個數(shù),即:
B(P1)=P2+P3+P4+P5+P6+P7+P8+P9
A(P1)為P2,P3,P4,…,P8,P9順序中01序列的個數(shù),如圖4(a)所示,A(P1)=1;圖4(b)所示,A(P1)=2。
如果P1點不滿足上述3個條件中的任何一個,則該點不屬于上邊界,P1點將不會被置0。位于光條下邊界的點滿足的條件與上邊界的條件類似,只是條件(3)有所改變:
P6=0 && P2≠0。
對于條件(1),如果B(P1)>6,則該點肯定不在邊界上,如圖5(a)所示,該P1點滿足條件(2)和條件(3),但是該點明顯位于中心線上,不能置0,所以需要滿足條件(1)。對于條件(2),如果出現(xiàn)圖5(b)所示的情況,該情況滿足(1)和(3)兩個條件,但是該P1點是位于中心線上,不能置0,由圖可知A(P1)=2,不滿足條件(2),該P1點不會被置0。因此,條件(1)和(2)都是為了保護中心線上的點不會被置0而被保存下來的必須條件。
在滿足條件(1)和(2)以后,確定P1點不在中心線及光條內(nèi)部(B(P1)=8的情況),如果滿足條件(3),說明P1點位于光條的上邊界,則該點會被標(biāo)記并置0。同樣,條件(3)′確定P1點位于光條的下邊界。如圖6所示為該算法得到中心線的例子,其中“*”代表標(biāo)記置0的邊界,先標(biāo)記上邊界并置0,再標(biāo)記下邊界并置0,迭代以上步驟,直到得到圖6最右圖片的中心線為止。
圖7所示為程序的流程圖,vector M的初始值為0,即size(vector M)=0。
2根據(jù)中心線坐標(biāo)求出距離
圖8所示為攝像機透視投影模型,其中,ABCD為圖像坐標(biāo)系,A′B′C′D′為實際坐標(biāo)系,機器人的前進方向為X′軸方向。O點為攝像機位置,O′為LED所在位置,OO′的距離為h,G點為圖像中心,G′為G點在實際坐標(biāo)系的投影點,攝像機的俯仰角即∠G′OO′為θ,P點為1.2節(jié)中得到的中心線上的一點,相對于G點的坐標(biāo)為P(x,y),P′為P點對應(yīng)的實際坐標(biāo)系上的點,Dx為X′軸方向上P′與機器人之間的距離(即障礙物與機器人之間的距離),Dy為P′在Y′軸方向上的距離(即障礙物的水平距離)。
由圖8可以得到Dx和Dy的距離公式如式(1)和式(2)所示,其中,(x,y)為P點相對于圖像坐標(biāo)系中心G的坐標(biāo),dx和dy分別為圖像坐標(biāo)系水平和垂直方向上的坐標(biāo)點距,f為攝像機焦距。dx、dy、f為攝像機參數(shù),通過標(biāo)定得到,如表2所示。
3實驗結(jié)果及分析
為了檢測算法的有效性,選取了前方障礙物為紙盒的環(huán)境信息。圖9(a)表示具體的環(huán)境信息圖片,(b)為攝像頭獲得并處理后的紅色光條的圖像,(c)為本文算法得到的中心線,(d)為Zhang并行化細化算法得到的骨架中心線。如圖9(d)所示,由于Zhang并行細化得到的是骨架中心線,是在兩個方向上對圖像進行細化,如果光條寬度不一致,就會得到豎直方向的分支,且會縮減中心線的長度,這樣會給機器人避障帶來很大的誤差(中心線的位置代表障礙物的位置)。
如表3所示,P(x,y)為圖9(c)中兩條中心線上的其中一個點相對于圖像中心的坐標(biāo)。根據(jù)式(1)、式(2)測得障礙物距離。兩個盒子與機器人之間的實際距離分別為5 cm和10 cm,水平實際距離分別為8 cm和11.5 cm,結(jié)果如表3所示,其中Dy為正代表障礙物在機器人中心左邊,負為右邊。測距誤差在3 mm以內(nèi)。在ARM CortexA8,CPU主頻為1 GHz,內(nèi)存為512 MB的開發(fā)板中,對于圖9(a)所示的環(huán)境信息,該算法的運行時間為0.23 s。
4結(jié)束語
本文針對單目視覺避障系統(tǒng)提出了一種快速的測距方法,算法處理效果好,測距精度較高,在嵌入式系統(tǒng)中能夠較好地保證實時性,但在算法的處理時間上還需改進。在未來的工作中,可以通過提高硬件要求來改進算法,改進算法的方案是增加中心線算法窗口大小,使每次迭代刪除的邊界更多,縮短運算時間。
參考文獻
?。?] 曹小松,唐鴻儒,楊炯. 移動機器人多傳感器信息融合測距系統(tǒng)設(shè)計[J]. 自動化與儀表,2009,24(5):48.
?。?] LIN Z, DAVIS L. Shapebased human detection and segmentation via hierarchical parttemplate matching[J]. Pattern Analysis and Machine Intelligence,2010,32(4):604618.
?。?] SAXENA A, SUN M, NG A Y. Make 3 D: Learning 3 D scene structure from a single still image[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,2009,31(5):824840.
[4] SHARF A,LEWINER T,SHAMIR A,et al. Onthefly curveskeleton computation for 3D shapes[J].Computer Graphics Forum,2007,26(3):323328.
?。?] PALAGYI K,KUBA A. A parallel 3D 12subiteration thinning algorithm[J]. Graph Models Image Process,1999,61(4):199221.
?。?] 湯一平, 宗明理. 基于雙色反射模型的彩色結(jié)構(gòu)光顏色識別的研究[J]. 計算機學(xué)報,2013,36(9):19081916.