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

  游佳興,黃魯
 ?。ㄖ袊茖W(xué)技術(shù)大學(xué) 電子科學(xué)與技術(shù)系,,安徽 合肥 230026)

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

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

圖像 001.png

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

圖像 002.png

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

圖像 003.png

  1.1圖像開運(yùn)算去毛刺
  開運(yùn)算是圖像形態(tài)學(xué)中的先腐蝕后膨脹的結(jié)果,,開運(yùn)算可以在不改變光條基本形狀的情況下平滑邊界,,消除邊界毛刺,避免中心線出現(xiàn)分支,。本文利用openCV自帶的腐蝕函數(shù)cvErode(src,dst,element,1)和膨脹函數(shù)cvDilate(src,dst,element,1)來進(jìn)行開運(yùn)算操作,。其中src為原圖像,dst為處理后的圖像,,element為腐蝕膨脹窗口的形狀和大?。ㄔ诒疚闹校x擇的是10×10的矩形窗口),,最后一個參數(shù)為膨脹腐蝕的次數(shù),。
  1.2中心線提取算法
  本文算法的思想是迭代刪除光條的上邊界和下邊界,且保證中心線上的像素點(diǎn)不會被刪除,,直至得到光條的中心線,。
  將開運(yùn)算處理后的二值圖像歸一化,利用openCV內(nèi)的函數(shù)cvThreshold,,光條部分的像素值為1,其他為0,。為了判定像素值為1(光條部分)的點(diǎn)P1(i,j)是否為邊界,,取其周圍3×3的窗口內(nèi)的像素點(diǎn)作為判定,如表1所示,。遍歷光條中的所有像素點(diǎn),,根據(jù)3×3窗口內(nèi)P1(i,j)周圍8個像素點(diǎn)確定其是否為上邊界或下邊界,如果是則將其像素置0(刪除邊界),,最終得到水平方向垂直寬度為1的中心線,。

圖像 010.png

  算法將迭代分為兩個部分:第一部分是將光條的上邊界刪除,第二部分是將光條的下邊界刪除,。將位于光條上邊界的點(diǎn)P1(i,j)置0的條件為:(1)B(P1)≤6;(2)A(P1)=1;(3)P2=0 && P6≠0,。
  其中,B(P1)為P1點(diǎn)周圍8個像素點(diǎn)中為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點(diǎn)不滿足上述3個條件中的任何一個,,則該點(diǎn)不屬于上邊界,P1點(diǎn)將不會被置0。位于光條下邊界的點(diǎn)滿足的條件與上邊界的條件類似,,只是條件(3)有所改變:
  P6=0 && P2≠0,。
  

圖像 005.png

       對于條件(1),如果B(P1)>6,則該點(diǎn)肯定不在邊界上,如圖5(a)所示,,該P(yáng)1點(diǎn)滿足條件(2)和條件(3),,但是該點(diǎn)明顯位于中心線上,不能置0,,所以需要滿足條件(1),。對于條件(2),如果出現(xiàn)圖5(b)所示的情況,該情況滿足(1)和(3)兩個條件,,但是該P(yáng)1點(diǎn)是位于中心線上,,不能置0,由圖可知A(P1)=2,不滿足條件(2),,該P(yáng)1點(diǎn)不會被置0,。因此,條件(1)和(2)都是為了保護(hù)中心線上的點(diǎn)不會被置0而被保存下來的必須條件,。
  在滿足條件(1)和(2)以后,,確定P1點(diǎn)不在中心線及光條內(nèi)部(B(P1)=8的情況),如果滿足條件(3),說明P1點(diǎn)位于光條的上邊界,,則該點(diǎn)會被標(biāo)記并置0,。同樣,條件(3)′確定P1點(diǎn)位于光條的下邊界,。如圖6所示為該算法得到中心線的例子,,其中“*”代表標(biāo)記置0的邊界,先標(biāo)記上邊界并置0,,再標(biāo)記下邊界并置0,,迭代以上步驟,直到得到圖6最右圖片的中心線為止,。

圖像 006.png

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

圖像 007.png

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

圖像 008.png

  

圖像 011.png

3實(shí)驗(yàn)結(jié)果及分析
 

圖像 009.png

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。