《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 線性CCD圖像處理與識別算法研究
線性CCD圖像處理與識別算法研究
2015年微型機(jī)與應(yīng)用第8期
廖偉權(quán),劉海剛,項(xiàng)華珍,梁焯斌,范智暉
(五邑大學(xué) 信息工程學(xué)院,廣東 江門 529020)(五邑大學(xué) 信息工程學(xué)院,廣東 江門 529020)
摘要: 介紹了基于線性CCD傳感器的智能小車整體框架、圖像采集和處理以及路徑識別控制算法。智能小車控制系統(tǒng)中選擇線性CCD傳感器進(jìn)行路徑識別,對采集的像素點(diǎn)進(jìn)行中值濾波、二值化等處理,提取賽道兩邊的黑色邊緣,取其中心位置作為小車的引導(dǎo)方向,控制舵機(jī)的轉(zhuǎn)向,使得小車能夠穩(wěn)定、可靠地高速行駛。
Abstract:
Key words :

  摘  要: 介紹了基于線性CCD傳感器的智能小車整體框架、圖像采集和處理以及路徑識別控制算法。智能小車控制系統(tǒng)中選擇線性CCD傳感器進(jìn)行路徑識別,對采集的像素點(diǎn)進(jìn)行中值濾波、二值化等處理,提取賽道兩邊的黑色邊緣,取其中心位置作為小車的引導(dǎo)方向,控制舵機(jī)的轉(zhuǎn)向,使得小車能夠穩(wěn)定、可靠地高速行駛。
  關(guān)鍵詞: 線性CCD;數(shù)據(jù)采集;中值濾波;動態(tài)閾值;人字形彎道識別
0 引言
  在全國大學(xué)生“飛思卡爾”杯智能汽車競賽光電組的技術(shù)要點(diǎn)中,線性CCD圖像處理和路徑識別這兩個環(huán)節(jié)尤其重要,其決定著小車能否安全可靠快速運(yùn)行[1]。根據(jù)比賽規(guī)則和以往的比賽經(jīng)驗(yàn),小車能否以最短的時間完成比賽,確保不沖出賽道,都與小車的速度和路徑識別有著密切的關(guān)系。因此,路徑的識別和處理是整個比賽的關(guān)鍵,它能夠有效地控制智能小車在不同的路段該如何選擇合理、高效的速度完整地去完成比賽,從而可以提高整場比賽中的平均速度。
  基于線性CCD傳感器的智能小車控制系統(tǒng)結(jié)構(gòu)如圖1所示。該系統(tǒng)中執(zhí)行機(jī)構(gòu)是舵機(jī)和電機(jī),感應(yīng)機(jī)構(gòu)是線性CCD傳感器。路徑識別是實(shí)現(xiàn)智能小車沿賽道自主運(yùn)行的信息基礎(chǔ),獲得范圍廣而精確的路徑信息是提高智能小車運(yùn)行速度的關(guān)鍵[2]。
1 圖像采集
  一般的圖像CCD傳感器有模擬的和數(shù)字的,線性CCD傳感器(TSL1401CL)輸出的信號是模擬的。圖像CCD傳感器要處理的數(shù)據(jù)量比較大,使用硬件二值化比較好[3]。但對于線性CCD傳感器來說,數(shù)據(jù)量的處理沒有圖像CCD傳感器大,硬件二值化的優(yōu)勢并不明顯,所以直接采集模擬信號。采用固定曝光時間,整個函數(shù)運(yùn)行一遍的周期是10 ms,響應(yīng)時間充足,圖像穩(wěn)定。

Image 001.png

  在實(shí)際應(yīng)用中采用拉普蘭德的開源程序代碼,再根據(jù)單片機(jī)的特性進(jìn)行修改,縮短采集時間,提高響應(yīng)速度,使采集的圖像穩(wěn)定下來是最重要的。
2 圖像處理
  線性CCD有中值濾波法、二值化處理法、邊緣增強(qiáng)法等圖像處理方法。由于邊緣增強(qiáng)法的目的在于突出賽道的邊緣信息,增強(qiáng)路徑的識別,經(jīng)邊緣增強(qiáng)后的圖像能更清晰地顯示出路徑的邊界[4]。但是經(jīng)過實(shí)踐,對于飛思卡爾智能車競賽黑白明顯的賽道而言,邊緣增強(qiáng)法的效果并不十分明顯,所以舍棄了該方法。
  2.1 中值濾波法
  采集回來的數(shù)據(jù)可能上下波動,不夠穩(wěn)定,這時就需要調(diào)用中值濾波函數(shù)。中值濾波是一種非線性數(shù)字濾波器技術(shù),用于去除圖像中的噪聲。其設(shè)計(jì)思想就是檢查采集像素點(diǎn)的值,并判斷它是否代表了信號。從第一個像素點(diǎn)開始,將其數(shù)值和相鄰的兩個像素點(diǎn)的數(shù)值進(jìn)行排序,3個像素點(diǎn)中數(shù)值為中值的像素點(diǎn)作為代表信號并輸出。然后,丟棄最早的值,取得新的采樣,重復(fù)上面的計(jì)算過程到127個點(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個點(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)彎。閾值的選取有很多種方法,常用的有動態(tài)閾值和試驗(yàn)確定法[7]。對圖像進(jìn)行二值化分割,選取恰當(dāng)?shù)拈撝党闪藴?zhǔn)確劃分的關(guān)鍵。事實(shí)驗(yàn)證,靜態(tài)閾值已經(jīng)不能滿足整幅賽道,所以采用動態(tài)閾值算法[8]。由于四輪智能小車存在轉(zhuǎn)彎不靈活的特點(diǎn),在賽道上跑時很容易丟線,所用的動態(tài)閾值要在丟線時調(diào)用上一個閾值(T_old)(T_old是上一次計(jì)算正確的閾值保留下來賦予的值T_last)。
  軟件二值化的動態(tài)閾值算法如下:
 ?。?)找出一組數(shù)據(jù)128個像素點(diǎn)的最大值(max)和最小值min。
 ?。?)判斷最大值(max)和最小值(min)的偏差是否大于全黑時的偏差(all_black_Difference_value),若大于全黑時的偏差,就繼續(xù)下面步驟,否則不計(jì)算下一步驟,用上一次的閾值。全黑時的偏差指的是全黑(丟線)情況下的最大值與最小值的偏差(是給定的一個值),由經(jīng)驗(yàn)得知丟線情況下的閾值是不正確的,要用上一次的閾值T_old。
 ?。?)為全局閾值T選擇一個初始估計(jì)值:30VYA3A0JV09[KF6`KILR0Z.jpg
 ?。?)二值化處理圖像,并產(chǎn)生兩組數(shù)組:sum_h為灰度值大于T的所有像素組成,sum_l由所有小于等于T的像素組成。
  (5)對sum_h和sum_l的像素分別計(jì)算平均弧度值(均值)max_ave和min_ave。
 ?。?)產(chǎn)生最終的閾值T_last,再給T_old賦值:T_old=T_last(T_old丟線時調(diào)用)。
  A1(PYA`4R8TAVDOM{0Y][AG.png

3 賽道識別
  3.1 一般賽道的識別
  普通賽道類型包括:直道、十字路口、小S彎以及不同曲率的彎道。因此,對不同的彎道識別及數(shù)據(jù)處理是成功與否的關(guān)鍵。采用了一次元函數(shù)動態(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ù)時舵機(jī)向左轉(zhuǎn)彎,為正數(shù)時舵機(jī)向右轉(zhuǎn)彎,從而控制速度的變化。Error偏差在得出第一個黑點(diǎn)前還需要判斷其是否為噪點(diǎn)。當(dāng)全黑時設(shè)定了一個最低速度,偏差為0時也限制了它的最高速度,防止智能小車由于速度過高,造成擺尾或沖出賽道等問題。
  在直道,偏差(Error)會變得很小,絕對值小于10,控制舵機(jī)直行,不轉(zhuǎn)彎。
  十字路口都是與270°的彎道連接在一起的。由于十字路口沒有兩端的黑色引導(dǎo)線,通過CCD采集的數(shù)據(jù)分析,計(jì)算進(jìn)入前的3次偏差位置,求出它的斜率,再通過斜率計(jì)算出智能小車在十字路口上舵機(jī)轉(zhuǎn)彎大小,從而保證小車順利通過十字路口。
  緊跟著就進(jìn)入270°的彎道。為了防止舵機(jī)誤判,當(dāng)上一個偏差與本次的偏差超過某一個值時,保持上一次的偏差,這樣就能順利平滑通過彎道了[9]。
  從CCD采集回來小S彎道的數(shù)據(jù)來看,由于小S彎道的位置偏差較小,而且采用一次元函數(shù)動態(tài)Kp的方法來控制舵機(jī)轉(zhuǎn)彎,Kp的值可以通過這些小偏差的改變而改變,即Kp=0.05×偏差。因此,可以保證智能車以較高的速度完美通過小S彎道。
  3.2 特殊賽道的識別
  為了增加行駛難度,增加了人字彎道識別,如圖2所示。本設(shè)計(jì)選擇了讓智能小車直接大拐角掉頭。當(dāng)檢測到斑馬線時,給舵機(jī)一個大轉(zhuǎn)角,讓小車直接駛過。然而當(dāng)小車高速行駛時,處理不好速度與CCD檢測前瞻(CCD掃描的地方與車身間的距離)的關(guān)系,小車很容易沖出賽道。本設(shè)計(jì)在智能小車上安裝了兩個CCD,一個前瞻在50 cm,一個前瞻在40 cm。
  圖2中,兩條平行線分別為兩個CCD拍攝圖像的位置。其中,車子前瞻較近的CCD掃描的圖像是在直道運(yùn)行,得到的數(shù)據(jù)是左右黑線都存在;前瞻較遠(yuǎn)的CCD掃描的賽道圖像,得到的數(shù)據(jù)是左邊的黑線相差不大,但右邊黑線與較近CCD相比卻突然丟失,據(jù)此判斷此時應(yīng)該右轉(zhuǎn)。

Image 002.png

  人字形判斷程序段如下:
  Error=Left_black-(128-Right_black)
  |Error|<10//判斷較近的CCD是否檢測到黑線,
  并計(jì)算出是否在直到上,在中線時偏差(Error)小于15,在實(shí)際情況中這個值小于10就認(rèn)為是直道
  |Left_black_near-Left_black_far|<8//判斷近的CCD左邊
  黑線和較遠(yuǎn)CCD左邊黑線是不是偏差小于8(在直道上兩個CCD的左黑線像素點(diǎn)相差小于8)
  |Right_black_near-Right_black_far|>30//判斷近的CCD
  右邊黑線和較遠(yuǎn)CCD右邊黑線是不是偏差大于一定范圍(較遠(yuǎn)CCD丟線,較近的還在直道上,所以兩個CCD的右黑線像素點(diǎn)相差大于30)
  當(dāng)同時滿足以上3個條件時,判別出人字彎道后,就向右轉(zhuǎn)彎,使小車控制舵機(jī)進(jìn)行較大角度的轉(zhuǎn)彎,等到小車回到直道后,再給與舵機(jī)中值,從而使小車快速、穩(wěn)定通過人字彎。左拐彎與之相反。
  結(jié)合兩個CCD信息去識別可以準(zhǔn)確判別出人字彎道。經(jīng)過實(shí)踐驗(yàn)證,采用此方法誤判的概率非常小,只有在智能小車軌跡異常偏離賽道中心時才會出現(xiàn)誤判。
4 結(jié)論
  通過對線性CCD圖像處理與識別算法進(jìn)行研究,將理論知識與實(shí)際情況相結(jié)合,對采集的圖像進(jìn)行中值濾波、二值化動態(tài)閾值處理,再根據(jù)小車的實(shí)際情況進(jìn)行改善,設(shè)計(jì)了一次元函數(shù)動態(tài)Kp的算法,對直道、十字路口、小S彎以及不同曲率的彎道進(jìn)行辨識,并對人字形賽道特殊判斷識別,從而使小車能夠沿規(guī)定賽道穩(wěn)定、可靠、快速地運(yùn)行。
  參考文獻(xiàn)
  [1] 劉嘉豪,劉海剛,張建偉,等.智能車圖像處理與識別算法研究[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].化工自動化及儀表,2012,39(2):190-193.
  [7] 季聰,王思明,漢鵬武.智能車路徑識別與控制研究[J].電視技術(shù),2013,37(9):192-195,209.
  [8] 常江.基于視覺導(dǎo)航的智能車測控系統(tǒng)關(guān)鍵技術(shù)研究[D].天津:河北工業(yè)大學(xué),2010.
  [9] 邱迎.道路自動識別與控制的智能車系統(tǒng)的研究[D].重慶:重慶大學(xué),2010.

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