程鴻芳 錢峰 李敏
(蕪湖職業(yè)技術學院,安徽蕪湖 241000)
“飛思卡爾”杯全國大學生智能車大賽是由摩托羅拉旗下飛思卡爾公司贊助、由高等學校自動化專業(yè)教學指導委員會負責主辦的全國性的賽事。按照首屆全國大學生“飛思卡爾”智能車大賽規(guī)則要求,根據(jù)賽道特點,主要有3種尋線設計方案:光電傳感器方案、攝像頭方案和電磁方案。2011年第六屆比賽中要求賽道是由白色底板和黑色的指引虛線組成,綜合考慮3種方案的特點,本文采用的是攝像頭方案。
在攝像頭方案的前提下,在實時的圖像數(shù)據(jù)獲取的基礎上對圖像信息進行數(shù)據(jù)處理,從而提取賽道中心的黑色指引虛線,以此來作為舵機和驅動電機的控制依據(jù)。以往的賽道中的黑色指引線是實線,而第六屆比賽賽道是黑色的指引虛線,中間存在斷點。針對這種賽道,本文采用的方法是在改進的邊緣檢測算法和左邊跟蹤檢測法的基礎上,將虛線跑道補實,從而完成智能車的賽道信息采集。由邊緣檢測算法和左邊跟蹤檢測法得出的各行黑線的中心值center(i),縱坐標記為i;當檢測遇到虛線時,將上一行實線的中心值center(j)彌補本次的中心值,橫坐標記為center(j),這樣虛線兩邊與實線交界點的坐標記為 (center(j1),j1)和 (center(j2),j2),求出這兩點構成直線的斜率k和直線方程,即可算出虛線行的橫坐標,來補足虛線。
本文采用的數(shù)字攝像頭的型號為OV7620,將攝像頭固定在車體的中間,前瞻性約1 m。要想采集的圖像準確,必須要了解攝像頭的時序,攝像頭的時序圖如圖1所示。
圖1 OV7620時序圖
在圖像采集方面,因為單片機XS128的內存和數(shù)據(jù)處理能力,使得只能對整幅賽道圖像的一部分進行采集。目前常用的采集方法有2種:一是采取固定的隔行數(shù)進行隔行采集;二是采取遠近隔行采集。本文采取遠近隔行采集,因為攝像頭在采集過程中會產(chǎn)生畸變以及光線的影響,距離越遠,圖像畸變的越厲害,那么就把采集到的賽道圖像分成幾部分處理。本文將圖像分4段采集,以遠處的圖像小近處圖像大的特點使用遠密進疏的原則,前20行每隔2行采1次,20到60行中每隔3行采1次,60到140行中每隔4行采1次,剩下的每隔5行采1次。這樣能更真實的展現(xiàn)圖像。
圖像的邊緣包含用于識別的有用信息,圖像的其他特征都是由邊緣和區(qū)域這些基本特征推導出來的[1]。文獻[2]將邊緣定義為場景某一區(qū)域的不連貫,文獻[3]則根據(jù)外形將邊緣分為:線、階梯、尖頂。圖像中的物體與物體,或者物體與背景之間的交界可以視為邊緣,圖像的灰度及顏色急劇變化的地方也可以看作是邊緣。在圖像中有顏色的變化必定會有灰度的變化,故對于邊緣的檢測焦點集中在灰度上就可以[4]。常規(guī)算法將圖像進行二值化處理,在本文中直接使用攝像頭獲取的灰度值,減少了二值化的過程。實際操作中,我們認定閾值在20~50之間為黑點,閾值在180~220之間為白點。具體操作:從第一行的第一列開始進行處理,用第一行的第i個點的灰度值減去第i+1個點的灰度值,當它們的差在[20,50]時,說明已找到黑點,即找到了黑線的起始點,然后記下該點的位置,并把該點標記為左邊界left,然后繼續(xù)進行判斷,當出現(xiàn)差值在[180,220]時,說明已找到了黑線的結束點,記下該點的坐標值,并標記為右邊界right。如果前2個點大于閾值且后2個點小于閾值,即為無效行。分別求出每行的左右黑點位置,并標記為left和right,然后各行的中心值為,最后賦給數(shù)組center(i)。
左邊跟蹤檢測法是一種改進的邊緣檢測算法。其思路是:先根據(jù)邊緣檢測算法找到第一行的黑線中心坐標,對于下面的行處理,根據(jù)圖像的連續(xù)性,下一行的黑線中心就是在上一行的黑線中心附近進行搜索[5]。具體操作:找出離攝像頭最近的第一行采用邊緣檢測找出中心值center;從第二行開始以前行的中心值為基準點,設定步變量,值為20。從基準點開始向左邊以20以內的范圍進行查找,如果符合條件,將符合條件的縱坐標作為中心值。如不符合條件,就以基準點開始向右邊以20以內的有效范圍內進行查找。如果符合條件,將符合條件的縱坐標作為中心值。如不符合條件,則為無效行。
黑色指引虛線的提取算法在邊緣檢測算法和左邊跟蹤檢測法的基礎上,將虛線補成實線,然后提取黑色實線。xs128(飛思卡爾的芯片)片內的ran是8 K,為減少ran的使用效率,應盡量減小圖像矩陣。本文中使用64*84的圖像矩陣。具體操作:
步驟1:從離攝像頭開始選取12行,采用邊緣檢測法,檢測提取出黑線中心值center[i];
步驟2:當遇到虛線時,暫時先用上一次采用的黑線中心值彌補這一次的中心值,記下此虛線區(qū)的行號范圍;
步驟3:剩下的40行采用左邊跟蹤檢測法,以范圍型的檢測提取黑線中心值center[i];
步驟4:同步驟2;
步驟5:采用中值濾波,將中心值進行中值濾波,使圖像更圓滑;
步驟6:進行虛線處理,將虛線的上下2點連成直線,2 點的坐標分別為 (x1,y1),(x2,y2),該直線的斜率,根據(jù)公式y(tǒng)=kx+b,求出所有點的列號。將所有點根據(jù)坐標值,進行相連,將虛線轉變成直線。
步驟7:返回步驟1。
(1)在實驗過程中,賽道原圖如圖2所示,攝像頭采集長度約為1 m的路徑,如圖3所示。
圖2 賽道原圖
圖3 賽道采樣圖
(2)對虛線賽道進行提取操作,如圖4所示。
圖4 賽道提取圖
(3)對虛線的處理操作,將虛線的上下2點A、B連成直線,A點的坐標為(x1,y1),B點的坐標為(x2,y2),直線AB的斜率,根據(jù)公式y(tǒng)AB=kABx+b,求出所有點的列號。將所有點根據(jù)坐標值,進行相連,將虛線轉變成直線,如圖5所示,補齊的賽道如圖6所示。
圖5 坐標圖
圖6 賽道圖
本文提出的算法是在改進的邊緣檢測算法和左邊跟蹤檢測法的基礎上,利用直線斜率和直線方程,將虛線跑道補實,來完成智能車信息采集的。在系統(tǒng)設計完成后,經(jīng)過多次的調試運行,智能車系統(tǒng)在遵守比賽規(guī)則正確尋跡的前提下,平均速度達到2 m/s,彎道速度可達1.8 m/s,而在直道上,智能車的速度可以達到2.2 m/s。實際測試表明,該方法能夠實現(xiàn)路徑識別的正確性和快速性,可在黑白(或色差較大)賽道上獲得良好的自主尋跡效果。
[1]朱振偉,劉廣瑞,劉巧紅.一階邊緣檢測算法的研究[J].現(xiàn)代電子技術,2009,24(11):88-90.
[2]吳晴,吳振華,鄭榜貴.形態(tài)學在道路圖像邊界檢測中的應用[J].控制工程,2010,17(1):80-86.
[3]許寰,魯五一,趙治平.攝像頭路徑識別和小車控制策略[J].計算機工程與科學,2009,31(5):110-115.
[4]艾寧,瞿少成,劉冬,等.基于CCD攝像頭的智能車路徑識別及跟蹤研究[J].電子測量技術,2009,32(8):77-80.
[5]朱廣,周程亮.CCD圖像傳感器在路徑識別系統(tǒng)中的應用[J].工業(yè)控制計算機,2009,22(3):50-51.
[6]梁業(yè)宗,李波,趙磊.基于路徑識別算法的智能車控制系統(tǒng)的設計[J].自動化技術與應用,2009,28(1):121-123.
[7]韓毅,楊天.基于紅外傳感器的智能尋跡賽車的設計與實現(xiàn)[J].計算機工程與設計,2009,30(11):2687-2690.
[8]陳東,向巍.基于光電管的智能車模設計[J].機床與液壓,2007,35(7):51-54.
[9]吳斌華,黃衛(wèi)華,程磊,等.基于路徑識別的智能車系統(tǒng)設計[J].電子技術應用,2007(3):80-83.
[10]程釗,萬齊齊,唐旋來,等.智能車道路識別及控制研究[J].伺服控制,2007(11):49-51.