摘 要: 介紹了基于線性CCD傳感器的智能小車整體框架,、圖像采集和處理以及路徑識(shí)別控制算法,。智能小車控制系統(tǒng)中選擇線性CCD傳感器進(jìn)行路徑識(shí)別,對采集的像素點(diǎn)進(jìn)行中值濾波,、二值化等處理,,提取賽道兩邊的黑色邊緣,取其中心位置作為小車的引導(dǎo)方向,,控制舵機(jī)的轉(zhuǎn)向,,使得小車能夠穩(wěn)定、可靠地高速行駛,。
關(guān)鍵詞: 線性CCD,;數(shù)據(jù)采集;中值濾波,;動(dòng)態(tài)閾值,;人字形彎道識(shí)別
0 引言
在全國大學(xué)生“飛思卡爾”杯智能汽車競賽光電組的技術(shù)要點(diǎn)中,線性CCD圖像處理和路徑識(shí)別這兩個(gè)環(huán)節(jié)尤其重要,,其決定著小車能否安全可靠快速運(yùn)行[1],。根據(jù)比賽規(guī)則和以往的比賽經(jīng)驗(yàn),小車能否以最短的時(shí)間完成比賽,,確保不沖出賽道,,都與小車的速度和路徑識(shí)別有著密切的關(guān)系。因此,,路徑的識(shí)別和處理是整個(gè)比賽的關(guān)鍵,,它能夠有效地控制智能小車在不同的路段該如何選擇合理、高效的速度完整地去完成比賽,,從而可以提高整場比賽中的平均速度,。
基于線性CCD傳感器的智能小車控制系統(tǒng)結(jié)構(gòu)如圖1所示,。該系統(tǒng)中執(zhí)行機(jī)構(gòu)是舵機(jī)和電機(jī),感應(yīng)機(jī)構(gòu)是線性CCD傳感器,。路徑識(shí)別是實(shí)現(xiàn)智能小車沿賽道自主運(yùn)行的信息基礎(chǔ),,獲得范圍廣而精確的路徑信息是提高智能小車運(yùn)行速度的關(guān)鍵[2]。
1 圖像采集
一般的圖像CCD傳感器有模擬的和數(shù)字的,,線性CCD傳感器(TSL1401CL)輸出的信號(hào)是模擬的,。圖像CCD傳感器要處理的數(shù)據(jù)量比較大,使用硬件二值化比較好[3],。但對于線性CCD傳感器來說,,數(shù)據(jù)量的處理沒有圖像CCD傳感器大,硬件二值化的優(yōu)勢并不明顯,,所以直接采集模擬信號(hào)。采用固定曝光時(shí)間,,整個(gè)函數(shù)運(yùn)行一遍的周期是10 ms,,響應(yīng)時(shí)間充足,圖像穩(wěn)定,。
在實(shí)際應(yīng)用中采用拉普蘭德的開源程序代碼,,再根據(jù)單片機(jī)的特性進(jìn)行修改,縮短采集時(shí)間,,提高響應(yīng)速度,,使采集的圖像穩(wěn)定下來是最重要的。
2 圖像處理
線性CCD有中值濾波法,、二值化處理法,、邊緣增強(qiáng)法等圖像處理方法。由于邊緣增強(qiáng)法的目的在于突出賽道的邊緣信息,,增強(qiáng)路徑的識(shí)別,,經(jīng)邊緣增強(qiáng)后的圖像能更清晰地顯示出路徑的邊界[4]。但是經(jīng)過實(shí)踐,,對于飛思卡爾智能車競賽黑白明顯的賽道而言,,邊緣增強(qiáng)法的效果并不十分明顯,所以舍棄了該方法,。
2.1 中值濾波法
采集回來的數(shù)據(jù)可能上下波動(dòng),,不夠穩(wěn)定,這時(shí)就需要調(diào)用中值濾波函數(shù),。中值濾波是一種非線性數(shù)字濾波器技術(shù),,用于去除圖像中的噪聲。其設(shè)計(jì)思想就是檢查采集像素點(diǎn)的值,,并判斷它是否代表了信號(hào),。從第一個(gè)像素點(diǎn)開始,,將其數(shù)值和相鄰的兩個(gè)像素點(diǎn)的數(shù)值進(jìn)行排序,3個(gè)像素點(diǎn)中數(shù)值為中值的像素點(diǎn)作為代表信號(hào)并輸出,。然后,,丟棄最早的值,取得新的采樣,,重復(fù)上面的計(jì)算過程到127個(gè)點(diǎn)為止[5],。
中值濾波程序如下:
short get_mid(short a,short b,,short c)
//get_mid取中間值b
{
short x=0,;
if(a>b){x=b;b=a,;a=x,;}
if(b>c){x=c;c=b,;b=x,;}
if(a>b){x=b;b=a,;a=x,;}
return b;//經(jīng)過以上比較賦值,,將中間值賦給b,,
返回給中間像素點(diǎn)gPixel[i]
}
for(i=1;i<128,;i++)//對128個(gè)點(diǎn)進(jìn)行平滑處理輸出
{
gPixel[i]=get_mid(gPixel[i-1],,gPixel[i],gPixel[i+1]),;
//gPixel[i]代表采集回來的像數(shù)點(diǎn)數(shù)值
}
2.2 二值化處理
圖像的二值化處理就是將圖像上點(diǎn)的灰度值置為0或255(在程序設(shè)計(jì)中置為0和1)的灰度值[6],。二值化的目的就是將所有灰度大于或等于閾值的像素判定為白色,否則像素點(diǎn)為黑色,,這樣明確地分出黑白兩種顏色,,小車就能準(zhǔn)確地轉(zhuǎn)彎。閾值的選取有很多種方法,,常用的有動(dòng)態(tài)閾值和試驗(yàn)確定法[7],。對圖像進(jìn)行二值化分割,選取恰當(dāng)?shù)拈撝党闪藴?zhǔn)確劃分的關(guān)鍵,。事實(shí)驗(yàn)證,,靜態(tài)閾值已經(jīng)不能滿足整幅賽道,所以采用動(dòng)態(tài)閾值算法[8]。由于四輪智能小車存在轉(zhuǎn)彎不靈活的特點(diǎn),,在賽道上跑時(shí)很容易丟線,,所用的動(dòng)態(tài)閾值要在丟線時(shí)調(diào)用上一個(gè)閾值(T_old)(T_old是上一次計(jì)算正確的閾值保留下來賦予的值T_last)。
軟件二值化的動(dòng)態(tài)閾值算法如下:
?。?)找出一組數(shù)據(jù)128個(gè)像素點(diǎn)的最大值(max)和最小值min,。
(2)判斷最大值(max)和最小值(min)的偏差是否大于全黑時(shí)的偏差(all_black_Difference_value),,若大于全黑時(shí)的偏差,,就繼續(xù)下面步驟,否則不計(jì)算下一步驟,,用上一次的閾值,。全黑時(shí)的偏差指的是全黑(丟線)情況下的最大值與最小值的偏差(是給定的一個(gè)值),由經(jīng)驗(yàn)得知丟線情況下的閾值是不正確的,,要用上一次的閾值T_old,。
(3)為全局閾值T選擇一個(gè)初始估計(jì)值:,。
?。?)二值化處理圖像,并產(chǎn)生兩組數(shù)組:sum_h為灰度值大于T的所有像素組成,,sum_l由所有小于等于T的像素組成,。
?。?)對sum_h和sum_l的像素分別計(jì)算平均弧度值(均值)max_ave和min_ave,。
(6)產(chǎn)生最終的閾值T_last,,再給T_old賦值:T_old=T_last(T_old丟線時(shí)調(diào)用),。
3 賽道識(shí)別
3.1 一般賽道的識(shí)別
普通賽道類型包括:直道、十字路口,、小S彎以及不同曲率的彎道,。因此,對不同的彎道識(shí)別及數(shù)據(jù)處理是成功與否的關(guān)鍵,。采用了一次元函數(shù)動(dòng)態(tài)Kp的算法來處理不同曲率的彎道,。主要公式為:
Error=Left_black-(128-Right_black)(2)
Kp=0.05×|Error|(3)
其中,Error為實(shí)際中心位置與測量中心值的偏差,。通過經(jīng)驗(yàn)得知,,Error等于左邊黑點(diǎn)減128與右邊黑點(diǎn)的差值。當(dāng)Error為負(fù)數(shù)時(shí)舵機(jī)向左轉(zhuǎn)彎,,為正數(shù)時(shí)舵機(jī)向右轉(zhuǎn)彎,,從而控制速度的變化。Error偏差在得出第一個(gè)黑點(diǎn)前還需要判斷其是否為噪點(diǎn)。當(dāng)全黑時(shí)設(shè)定了一個(gè)最低速度,,偏差為0時(shí)也限制了它的最高速度,,防止智能小車由于速度過高,造成擺尾或沖出賽道等問題,。
在直道,,偏差(Error)會(huì)變得很小,絕對值小于10,,控制舵機(jī)直行,,不轉(zhuǎn)彎。
十字路口都是與270°的彎道連接在一起的,。由于十字路口沒有兩端的黑色引導(dǎo)線,,通過CCD采集的數(shù)據(jù)分析,計(jì)算進(jìn)入前的3次偏差位置,,求出它的斜率,,再通過斜率計(jì)算出智能小車在十字路口上舵機(jī)轉(zhuǎn)彎大小,從而保證小車順利通過十字路口,。
緊跟著就進(jìn)入270°的彎道,。為了防止舵機(jī)誤判,當(dāng)上一個(gè)偏差與本次的偏差超過某一個(gè)值時(shí),,保持上一次的偏差,,這樣就能順利平滑通過彎道了[9]。
從CCD采集回來小S彎道的數(shù)據(jù)來看,,由于小S彎道的位置偏差較小,,而且采用一次元函數(shù)動(dòng)態(tài)Kp的方法來控制舵機(jī)轉(zhuǎn)彎,Kp的值可以通過這些小偏差的改變而改變,,即Kp=0.05×偏差,。因此,可以保證智能車以較高的速度完美通過小S彎道,。
3.2 特殊賽道的識(shí)別
為了增加行駛難度,,增加了人字彎道識(shí)別,如圖2所示,。本設(shè)計(jì)選擇了讓智能小車直接大拐角掉頭,。當(dāng)檢測到斑馬線時(shí),給舵機(jī)一個(gè)大轉(zhuǎn)角,,讓小車直接駛過,。然而當(dāng)小車高速行駛時(shí),處理不好速度與CCD檢測前瞻(CCD掃描的地方與車身間的距離)的關(guān)系,,小車很容易沖出賽道,。本設(shè)計(jì)在智能小車上安裝了兩個(gè)CCD,一個(gè)前瞻在50 cm,一個(gè)前瞻在40 cm,。
圖2中,,兩條平行線分別為兩個(gè)CCD拍攝圖像的位置。其中,,車子前瞻較近的CCD掃描的圖像是在直道運(yùn)行,,得到的數(shù)據(jù)是左右黑線都存在;前瞻較遠(yuǎn)的CCD掃描的賽道圖像,,得到的數(shù)據(jù)是左邊的黑線相差不大,,但右邊黑線與較近CCD相比卻突然丟失,據(jù)此判斷此時(shí)應(yīng)該右轉(zhuǎn),。
人字形判斷程序段如下:
Error=Left_black-(128-Right_black)
|Error|<10//判斷較近的CCD是否檢測到黑線,,
并計(jì)算出是否在直到上,在中線時(shí)偏差(Error)小于15,,在實(shí)際情況中這個(gè)值小于10就認(rèn)為是直道
|Left_black_near-Left_black_far|<8//判斷近的CCD左邊
黑線和較遠(yuǎn)CCD左邊黑線是不是偏差小于8(在直道上兩個(gè)CCD的左黑線像素點(diǎn)相差小于8)
|Right_black_near-Right_black_far|>30//判斷近的CCD
右邊黑線和較遠(yuǎn)CCD右邊黑線是不是偏差大于一定范圍(較遠(yuǎn)CCD丟線,,較近的還在直道上,所以兩個(gè)CCD的右黑線像素點(diǎn)相差大于30)
當(dāng)同時(shí)滿足以上3個(gè)條件時(shí),,判別出人字彎道后,,就向右轉(zhuǎn)彎,使小車控制舵機(jī)進(jìn)行較大角度的轉(zhuǎn)彎,,等到小車回到直道后,,再給與舵機(jī)中值,從而使小車快速,、穩(wěn)定通過人字彎,。左拐彎與之相反。
結(jié)合兩個(gè)CCD信息去識(shí)別可以準(zhǔn)確判別出人字彎道,。經(jīng)過實(shí)踐驗(yàn)證,,采用此方法誤判的概率非常小,,只有在智能小車軌跡異常偏離賽道中心時(shí)才會(huì)出現(xiàn)誤判,。
4 結(jié)論
通過對線性CCD圖像處理與識(shí)別算法進(jìn)行研究,將理論知識(shí)與實(shí)際情況相結(jié)合,,對采集的圖像進(jìn)行中值濾波,、二值化動(dòng)態(tài)閾值處理,再根據(jù)小車的實(shí)際情況進(jìn)行改善,,設(shè)計(jì)了一次元函數(shù)動(dòng)態(tài)Kp的算法,,對直道、十字路口,、小S彎以及不同曲率的彎道進(jìn)行辨識(shí),,并對人字形賽道特殊判斷識(shí)別,從而使小車能夠沿規(guī)定賽道穩(wěn)定、可靠,、快速地運(yùn)行,。
參考文獻(xiàn)
[1] 劉嘉豪,劉海剛,,張建偉,,等.智能車圖像處理與識(shí)別算法研究[J].工業(yè)控制計(jì)算機(jī),2014,,27(8):19-22.
[2] 卓晴,,黃開勝,邵貝貝,,等.學(xué)做智能車:挑戰(zhàn)“飛思卡爾”杯[M].北京:北京航空航天大學(xué)出版社,,2007.
[3] 劉祖臣.基于CMOS數(shù)字?jǐn)z像頭的硬件二值化方案[J].電子科技,2014,,27(7):99-102.
[4] 周磊,,任國全,肖浩,,等.結(jié)構(gòu)化道路車道線快速檢測的一種改進(jìn)算法[J].計(jì)算機(jī)仿真,,2012,29(4):362-366.
[5] 張毛女,,柳薇.一種基于邊緣檢測的改進(jìn)的中值濾波去噪方法[J].計(jì)算機(jī)與現(xiàn)代化,,2011,29(3):63-65,,73.
[6] 李俊,,王軍輝,譚秋林,,等.基于MC9S12XS128控制器的智能車圖像處理技術(shù)研究[J].化工自動(dòng)化及儀表,,2012,39(2):190-193.
[7] 季聰,,王思明,,漢鵬武.智能車路徑識(shí)別與控制研究[J].電視技術(shù),2013,,37(9):192-195,,209.
[8] 常江.基于視覺導(dǎo)航的智能車測控系統(tǒng)關(guān)鍵技術(shù)研究[D].天津:河北工業(yè)大學(xué),2010.
[9] 邱迎.道路自動(dòng)識(shí)別與控制的智能車系統(tǒng)的研究[D].重慶:重慶大學(xué),,2010.