《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 一種基于光條中心線的測距方法
一種基于光條中心線的測距方法
2016年微型機與應用第17期
游佳興,黃魯
中國科學技術大學 電子科學與技術系,安徽 合肥 230026
摘要: 在單目視覺避障系統(tǒng)中,利用紅色LED水平光條照射前方障礙物,由攝像頭獲得圖像并處理后得到紅光光條,根據(jù)光條中心在圖像中的位置判斷障礙物與攝像頭之間的距離。該文對Zhang并行細化算法進行了改進,以適應嵌入式系統(tǒng)快速準確得到紅光光條的中心線,由中心線坐標得到障礙物距離及寬度。實驗結果證明,該算法具有很好的中心線提取效果;測距范圍為25 cm,測距誤差在3 mm以內。
Abstract:
Key words :

  游佳興,黃魯
  (中國科學技術大學 電子科學與技術系,安徽 合肥 230026)

       摘要:單目視覺避障系統(tǒng)中,利用紅色LED水平光條照射前方障礙物,由攝像頭獲得圖像并處理后得到紅光光條,根據(jù)光條中心在圖像中的位置判斷障礙物與攝像頭之間的距離。該文對Zhang并行細化算法進行了改進,以適應嵌入式系統(tǒng)快速準確得到紅光光條的中心線,由中心線坐標得到障礙物距離及寬度。實驗結果證明,該算法具有很好的中心線提取效果;測距范圍為25 cm,測距誤差在3 mm以內。
  關鍵詞:openCV;中心線提取;測距;單目視覺  

0引言
  目前,掃地機器人避障是非常熱門的研究領域,與傳統(tǒng)的超聲波、紅外測距[1]相比,視覺傳感器可以得到更多的環(huán)境信息;單目視覺系統(tǒng)具有成本低、體積小的特點,適合于掃地機器人。單目視覺避障的方法主要有單目圖像還原3D場景[2]、特征檢測[3]、結構光測距。本文利用紅色LED矩形光條照射前方障礙物,根據(jù)光條中心在圖像中的位置來判斷障礙物距離。
  圖1(a)、(b)所示分別為距離障礙物5 cm和10 cm的情況下攝像頭獲得的圖像。由這兩個圖像可知,不同距離下的光條中心在圖像上的位置不同,從而達到測距的目的。
  

圖像 001.png

1中心線提取
  目前中心線的提取算法主要有以下兩種:
 ?。?)基于距離變換的方法[4]。建立紅色光條的距離場模型,提取距離場中的局部極值點,然后細化處理得到的中心線。該算法的優(yōu)點是精度高,適合三維場景;缺點是計算復雜度高,實時性較差。
 ?。?)二值細化法[5]。該算法將得到的紅色光條二值化,利用迭代的方法從邊界開始逐漸刪除,直至得到中心線。該算法的優(yōu)點是實現(xiàn)簡單,速度快,可反映各個光條的形狀;缺點是如果邊界有許多毛刺將會出現(xiàn)除中心線外其他的分支。

圖像 002.png

       由于本單目視覺避障系統(tǒng)是用于掃地機器人上,要求測距精度較高、實時性好,因此本文采用二值細化法。提取光條中心線的步驟如圖2所示。首先在Open Source Computer Vision Library(openCV)中利用HSV顏色空間將紅色光條提取出來[6],如圖3所示,將紅色光條部分的像素值置0(黑色),其他背景的像素值置255(白色)。針對邊界出現(xiàn)毛刺會影響中心線提取的缺點,對提取出的紅色光條圖像進行開運算,消除邊界毛刺的影響。

圖像 003.png

  1.1圖像開運算去毛刺
  開運算是圖像形態(tài)學中的先腐蝕后膨脹的結果,開運算可以在不改變光條基本形狀的情況下平滑邊界,消除邊界毛刺,避免中心線出現(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內的函數(shù)cvThreshold,光條部分的像素值為1,其他為0。為了判定像素值為1(光條部分)的點P1(i,j)是否為邊界,取其周圍3×3的窗口內的像素點作為判定,如表1所示。遍歷光條中的所有像素點,根據(jù)3×3窗口內P1(i,j)周圍8個像素點確定其是否為上邊界或下邊界,如果是則將其像素置0(刪除邊界),最終得到水平方向垂直寬度為1的中心線。

圖像 010.png

  算法將迭代分為兩個部分:第一部分是將光條的上邊界刪除,第二部分是將光條的下邊界刪除。將位于光條上邊界的點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。
 

圖像 004.png

  如果P1點不滿足上述3個條件中的任何一個,則該點不屬于上邊界,P1點將不會被置0。位于光條下邊界的點滿足的條件與上邊界的條件類似,只是條件(3)有所改變:
  P6=0 && P2≠0。
  

圖像 005.png

       對于條件(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點不在中心線及光條內部(B(P1)=8的情況),如果滿足條件(3),說明P1點位于光條的上邊界,則該點會被標記并置0。同樣,條件(3)′確定P1點位于光條的下邊界。如圖6所示為該算法得到中心線的例子,其中“*”代表標記置0的邊界,先標記上邊界并置0,再標記下邊界并置0,迭代以上步驟,直到得到圖6最右圖片的中心線為止。

圖像 006.png

  圖7所示為程序的流程圖,vector M的初始值為0,即size(vector M)=0。
  

圖像 007.png

2根據(jù)中心線坐標求出距離
  圖8所示為攝像機透視投影模型,其中,ABCD為圖像坐標系,A′B′C′D′為實際坐標系,機器人的前進方向為X′軸方向。O點為攝像機位置,O′為LED所在位置,OO′的距離為h,G點為圖像中心,G′為G點在實際坐標系的投影點,攝像機的俯仰角即∠G′OO′為θ,P點為1.2節(jié)中得到的中心線上的一點,相對于G點的坐標為P(x,y),P′為P點對應的實際坐標系上的點,Dx為X′軸方向上P′與機器人之間的距離(即障礙物與機器人之間的距離),Dy為P′在Y′軸方向上的距離(即障礙物的水平距離)。
  由圖8可以得到Dx和Dy的距離公式如式(1)和式(2)所示,其中,(x,y)為P點相對于圖像坐標系中心G的坐標,dx和dy分別為圖像坐標系水平和垂直方向上的坐標點距,f為攝像機焦距。dx、dy、f為攝像機參數(shù),通過標定得到,如表2所示。
  QQ圖片20160926194207.png

圖像 008.png

  

圖像 011.png

3實驗結果及分析
 

圖像 009.png

       為了檢測算法的有效性,選取了前方障礙物為紙盒的環(huán)境信息。圖9(a)表示具體的環(huán)境信息圖片,(b)為攝像頭獲得并處理后的紅色光條的圖像,(c)為本文算法得到的中心線,(d)為Zhang并行化細化算法得到的骨架中心線。如圖9(d)所示,由于Zhang并行細化得到的是骨架中心線,是在兩個方向上對圖像進行細化,如果光條寬度不一致,就會得到豎直方向的分支,且會縮減中心線的長度,這樣會給機器人避障帶來很大的誤差(中心線的位置代表障礙物的位置)。
  如表3所示,P(x,y)為圖9(c)中兩條中心線上的其中一個點相對于圖像中心的坐標。根據(jù)式(1)、式(2)測得障礙物距離。兩個盒子與機器人之間的實際距離分別為5 cm和10 cm,水平實際距離分別為8 cm和11.5 cm,結果如表3所示,其中Dy為正代表障礙物在機器人中心左邊,負為右邊。測距誤差在3 mm以內。在ARM CortexA8,CPU主頻為1 GHz,內存為512 MB的開發(fā)板中,對于圖9(a)所示的環(huán)境信息,該算法的運行時間為0.23 s。圖像 012.png
4結束語
  本文針對單目視覺避障系統(tǒng)提出了一種快速的測距方法,算法處理效果好,測距精度較高,在嵌入式系統(tǒng)中能夠較好地保證實時性,但在算法的處理時間上還需改進。在未來的工作中,可以通過提高硬件要求來改進算法,改進算法的方案是增加中心線算法窗口大小,使每次迭代刪除的邊界更多,縮短運算時間。
  參考文獻
  [1] 曹小松,唐鴻儒,楊炯. 移動機器人多傳感器信息融合測距系統(tǒng)設計[J]. 自動化與儀表,2009,24(5):48.
  [2] LIN Z, DAVIS L. Shapebased human detection and segmentation via hierarchical parttemplate matching[J]. Pattern Analysis and Machine Intelligence,2010,32(4):604618.
 ?。?] 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):824840.
 ?。?] SHARF A,LEWINER T,SHAMIR A,et al. Onthefly curveskeleton computation for 3D shapes[J].Computer Graphics Forum,2007,26(3):323328.
 ?。?] PALAGYI K,KUBA A. A parallel 3D 12subiteration thinning algorithm[J]. Graph Models Image Process,1999,61(4):199221.
  [6] 湯一平, 宗明理. 基于雙色反射模型的彩色結構光顏色識別的研究[J]. 計算機學報,2013,36(9):19081916.

此內容為AET網站原創(chuàng),未經授權禁止轉載。