基于攝像頭傳感器的智能車循跡算法設計方案
摘要:本方案通過DMA進行攝像頭與單片機之間的信息傳輸,采用大津法確定二值化閥值,進行圖像分割,極大提高圖像處理速度。本文主要介紹了中心線擬合、最小二乘法補邊界線、特征點提取、十字元素與車庫元素識別與處理等算法,使智能車更平穩(wěn)快速通過多種賽道元素。
本文引用地址:http://2s4d.com/article/202207/436782.htm隨著汽車保有量的不斷攀升,交通擁堵、交通事故不斷頻發(fā),越來越多的國家投入到智能網(wǎng)聯(lián)汽車的研發(fā),智能網(wǎng)聯(lián)汽車多采用傳感器融合方案,視覺傳感器作為其中一種重要的傳感器,進行圖像采集。本文采用攝像頭傳感器進行圖像采集,進行賽道元素特征識別,輔助智能車快速通過多種賽道元素,對于提高城市交通智能化有著重要意義。
1 攝像頭傳感器選取與安裝
1.1 攝像頭傳感器選取
攝像頭傳感器是視覺檢測的核心器件,信息量豐富,相較于電磁傳感器,掃描距離更遠,有利于提前進行路徑規(guī)劃。本方案采用龍邱神眼攝像頭 MT9V034 作為圖像傳感器 , 為灰度數(shù)字攝像頭,只需 3.3 V 供電,分辨率為 120×188,具有高動態(tài)成像、超低功耗等多種優(yōu) 點,該攝像頭采用 8 位并行輸出,故像素點灰度值范圍為 0 ~ 255。
結合智能小車循跡特點,一般會將分辨率設置為 80×60,即可獲取賽道圖像處理所需數(shù)據(jù)。高分辨率,圖像會更清晰,但數(shù)據(jù)量增加,傳輸時間延長,影響圖像處理效率,如果再打開串口使用上位機,有機發(fā)光半導體(organic electroluminescence display, OLED)屏上圖像會延遲,幀率降低,也不便于調(diào)試。一般會降低分辨率提高幀率,但也會考慮算法性能,應注重單片機處理速度與圖像刷新速度協(xié)調(diào)。
1.2 攝像頭傳感器安裝
智能小車采用后輪驅(qū)動,為避免車模抖動,應讓質(zhì)心靠后,提高小車抓地力,同時還要保證攝像頭盡量靠前,采取到更多有效數(shù)據(jù),故將攝像頭放在車模中部,關于車軸對稱。為減輕整車重量,選用空心碳素纖維管作為固定件,并用哥倆好膠水固定攝像頭角度,方便調(diào)試。
將攝像頭正裝,OLED 屏幕上圖像顯示順序,從上到下依次為 0 ~ 59 行,從左到右依次為 0 ~ 79 列,一般小車前進時,近處圖像位于最大行處,遠處圖像位于 0 行處。
2 圖像傳輸
本方案采用 DMA( 直接存儲器訪問,Direct Memory Access) 進行數(shù)據(jù)傳輸,DMA 可以進行高速數(shù)據(jù)傳輸,通過 DMA 控制器,可以將攝像頭等外設單元采集的數(shù)據(jù)直接傳輸?shù)轿覀兊膬?nèi)存中,只有數(shù)據(jù)傳輸開始、結束時才會與 CPU(中央處理器)交流,傳輸過程中,CPU 可以專心進行圖像處理;普通數(shù)據(jù)傳輸方式,每一個數(shù)據(jù)傳輸都需要依賴 CPU 進行,極大占用 CPU 資源。DMA 傳輸,極大提高了單片機處理效率,故我們采用 DMA 進行數(shù)據(jù)傳輸。
FRM 為場中斷,每當 FRM 管腳連接的 IO 口檢測到一個沿變化,攝像頭和單片機之間開始傳輸一副圖像數(shù)據(jù);LINE 為行中斷,每當 LINE 管腳連接的 IO 口檢測到一個沿變化,攝像頭和單片機之間開始傳輸一行數(shù)據(jù);PIX 為像素時鐘,每當 PIX 管腳連接的 IO 口檢測到一個沿變化,攝像頭和單片機之間開始傳輸一個數(shù)據(jù)。需要采集一副圖像時,會先讀取到一個場信號,連續(xù)兩個場信號之間為一副完整圖像,當讀取到一個場信號后,會連續(xù)讀取到 120 個行信號,每兩個行信號間,會連續(xù)讀取到 188 個點信號。獲得一個場中斷后,開始將圖像的每一行數(shù)據(jù)存入數(shù)組,并開始進行行累加計數(shù),當計數(shù)達到 120 行后,會獲得下一個場中斷,一副圖像采集完畢,及時將行累加計數(shù)器清 0,并置場結束標志位,開始進行數(shù)據(jù)處理。
3 圖像預處理
因選用的攝像頭傳感器為灰度傳感器,無需額外進行圖像灰度化,本方案主要采用閥值分割法進行圖像分割。閥值的確定是閥值分割法的核心,常見的閥值分為:靜態(tài)閥值和動態(tài)閥值 [2] ,靜態(tài)閥值容易受到環(huán)境光線影響,對不同環(huán)境的賽道適應力較差;動態(tài)閥值抗干擾性強,對光照變化不敏感。為更好地適應不同賽道環(huán)境變化,本方案采用大津法確定動態(tài)閥值。大津法(OTSU),利用統(tǒng)計學方法,讓計算機在每一張圖片上都自適應的根據(jù)圖片整體亮度確定閾值,單片機在不同環(huán)境下都能自適應找到不同的分割閾值,每一張圖片的閾值都不一樣,受圖像亮度和對比度的影響小,但對噪聲非常敏感。一般采集的灰度直方圖會存在兩個峰值,兩峰之間存在一個谷底,而大津法的閾值即為峰谷對應的灰度值。
3.1 大津法算法原理
假設灰度直方圖中某一灰度值 i 恰為峰谷,以此為 閥值 Threshold 進行圖像分割 , 將一幅圖像中所有像素分成前景和背景兩部分,前景即為白色,背景即為黑色,驗證類間方差是否最大。為優(yōu)化算法性能,對傳統(tǒng)類間方差計算式作出變式,得到公式 1,通過下式計算類間方差值:
在所有灰度值中使類間方差值最大的灰度值即為二值化分割閥值 Threshold。
3.2 大津法算法邏輯與優(yōu)化
3.2.1 算法邏輯
循環(huán) 0 ~ 255 個灰度值,記錄每一個灰度值對應的類間方差值,將其與已知的最大類間方差值比較,記錄兩者間最大值,并進行循環(huán)計數(shù),當循環(huán)計數(shù)值達 256 次,即可確定此時最大類間方差值對應的灰度值為二值化閥值 Threshold。
3.2.2 算法優(yōu)化
如果是固定賽道,可以多次試運行大津法算法,記錄對應多種賽道元素的二值化閥值,可以得到一個灰度值范圍,比如 70 ~ 140, 縮小灰度值遍歷范圍,提高算法效率。賽道上光線一般比較均勻,當一幅圖像中包含噪聲和非均勻光照時,可能會造成大津法閥值不準確,而賽道圖像中部分元素灰度差別大,特別是可能會遇到上帝之光的干擾,使部分賽道光照與正常賽道光照差異較大,可以采集賽道時,隔行隔列采集,以此形成的灰度直方圖,可以有效減少噪聲和非均勻光照;面對上帝之光,也可以嘗試部分區(qū)域求大津的方法,只對賽道前半部分用大津法求二值化閥值,對圖像后半部分舍棄,因為小車往往需要近處圖像進行數(shù)據(jù)處理,及時進行賽道循跡,舍棄遠處圖像數(shù)據(jù),可以使圖像二值化數(shù)值更接近于賽道近處值,效果更好。也可將賽道劃分為遠近兩個區(qū)域,對其分別大津法求閾值,并分別加權求出更理想的二值化閾值。
一般情況下,賽道光照強,二值化動態(tài)閾值會更大,對于光斑等干擾,不易找到合適閾值,可以安裝濾光片等光學元器件改善。
3.3 二值化
遍歷賽道所有像素點灰度值,如果某一像素點灰度值大于二值化閾值,則置為白點 1,如果灰度值小于二值化閾值,則置為黑點 0。
4 圖像處理
4.1 中線擬合與偏差
因為攝像頭采集到的近處圖像實際中線 [4] 與賽道理想中線接近,遠處圖像可能兩者差別比較大,所以我們一般選擇從近處到遠處開始掃線。從底部第 59 行的理想中線位置第 40 列開始向左向右兩方向分別掃線,找到黑白跳變點,記錄左右邊界點位置。
以向左掃線為例,當向左掃線找到一點 H 的值同其左邊一點 J 的值差值為 1 時,再以 H 點向左間隔 3 個點找到點 K,計算點 K 同其左邊一點 L 的差值為 0 時,繼續(xù)以 K 點向左間隔 3 個點找到點 M,計算點 M 同其左邊一點 N 的差值為 0 時,即可判斷找到第 59 行左邊界點,將其計入一個大小為 60 的左線數(shù)組,這種方法有效避免了噪聲、光斑對邊界點提取的影響。同理獲得第 59 行右邊界坐標,左邊界坐標與右邊界坐標求和后除以 2,即為當前賽道第 59 行實際中點坐標,并將其存入中線數(shù)組。
向左掃線找左邊界原理如圖 1 所示。
圖1 找左邊界原理圖
繼續(xù)以第 59 行實際中點坐標為起始點開始進行第 58 行左右掃線,因為部分賽道如果選取理想中點第 40 列作為下一行左右掃線起始點,可能理想中線正好位于黑色區(qū)域,左右兩邊掃線遇到的都是黑點,黑白跳變點位置同掃線起始點間隔較遠,連貫性不好,極大地浪費 CPU 性能,不利于小車快速巡線。同理進行 For 循環(huán)向上迭代求中線,直到掃線完 60 行,將各行中點連接,即為實際中線。
用右邊界數(shù)組減左邊界數(shù)組,可以得到賽道寬度。從起始點第 59 行第 40 列的像素開始,向上掃線,找到白黑跳變點,用圖像總行數(shù)減去白黑跳變點的值即為賽道長度;在某些特定元素判斷中,可以使用賽道寬度、賽道長度作為輔助判斷,識別特定元素。
選取一個控制行,控制行與實際中線、理想中線交點分別為 O、P,計算兩點差值作為偏差,乘以比例項系數(shù) Kp, 作為 PWM 一部分用于小車轉(zhuǎn)向控制。也可以計算多行偏差,對遠處偏差賦予低權重,近處偏差賦予高權重,進行累加作為最終偏差,為進一步提高車速,可以針對不同賽道元素,對多行不同區(qū)域分別賦予不同的權重??刂菩械倪x取需要綜合考慮車速、攝像頭前瞻位置等,一般車速越快,控制行數(shù)值選取越小。
4.2 丟線處理
對于部分特殊賽道或者當小車偏離賽道理想中線時,可能無法找到邊界線。當出現(xiàn)單邊丟線時,根據(jù)不同賽道元素,有多種處理方法,以左邊丟線為例,可以將圖像左邊框線規(guī)定為黑點 0,當算法向左掃線檢測到只有第 0 列有黑點 0 的時候,即判定該點為左邊界點;也可以選擇找到某一特殊點,比如拐點,利用拐點和其他已知點進行補線,一般采用最小二乘法 [5] 補線處理賽道元素??梢哉业阶筮吔鐏G線前的 5 個左邊界點,利用公式 2 和公式 3 計算出擬合直線的 K 和 B,將丟線后的行數(shù)依次作為縱坐標帶入公式 4 計算出橫坐標,補齊左邊界。
當出現(xiàn)雙邊丟線時,一般是處于特殊元素十字路口處,可以選擇存儲歷史數(shù)組的方法,用之前的實際中線數(shù)據(jù)過特殊元素。也可以選擇通過左右拐點等同時補線,通過兩邊界丟線處附件已知的 5 個邊界點分別擬合出兩條直線,補全左右邊界。為降低算法復雜度,也可以直接使用丟線前幾行的賽道進行直接補線,因車速、電池電量等情況,可能會不穩(wěn)定。
4.3 特征點
圖2 特征點標注圖
圖 2 中:A 點為左下拐點、B 點為右下拐點、C 點為左上拐點、D 點為右上拐點、E 點為起始行左邊界、 F 點為起始行右邊界。
正常直道的邊界線斜率為定值,當存在拐點時,如圖 2 標注所示,邊界線斜率會在拐點前后發(fā)生突變,A 為左下拐點,在 A 點下方的左邊界線為固定斜率的右傾直線,當從下往上掃線找邊界求中線時,突然發(fā)現(xiàn) A 點上方的左邊界斜率急劇變緩,自 A 點開始向左接近水平生長。
B 為右下拐點,在 B 點下方的右邊界線為固定斜率的左傾直線,當從下往上掃線找邊界求中線時,突然發(fā)現(xiàn) B 點上方的右邊界斜率急劇變緩,自 B 點開始向右接近水平生長;
同理可知,C 為左上拐點,在 C 點下方的左邊界線自右向左接近水平生長,斜率較小,在 C 點上方的左邊界斜率急劇變大;D 為右上拐點,在 D 點下方的右邊界線自右向左接近水平生長,斜率較小,在 D 點上方的右邊界線斜率急劇變大。
4.4 十字路口處理
4.4.1 正入十字路口
當左右掃線找到左下拐點 A、右下拐點 B,且從左下拐點向上隔行掃描 2 行,發(fā)現(xiàn)下拐點上方白點數(shù)目大于某一設定值時,即可判定正入十字。
十字路口下拐點上方有多行空白行,發(fā)生丟邊現(xiàn)象,需要找特征點,使用最小二乘法構造邊界線。左右巡線找到左下拐點 A、右下拐點 B、左上拐點 C、右上拐點 D, 利用斜截式分別構造線段 AC、BD,補出拐點空白行的左右邊界線,再利用左右邊界線求和除以 2 作為實際中線。正入十字元素補線圖如圖 3 所示。
圖3 正入十字元素補線圖
進入圓環(huán)后,可以正常掃線找到左右邊界,出環(huán)后,用相同方法補線出十字路口。
4.4.2 斜入十字路口
以左斜進入十字路口為例,當左右掃線找到左下拐點 A、右上拐點 D,判定為斜入十字。
十字路口下拐點上方有多行空白行,發(fā)生丟邊現(xiàn)象,需要找特征點,使用最小二乘法構造邊界線。左右掃線找到左下拐點 A、左上拐點 C、右上拐點 D, 利用斜截式構造線段 AC,作為左下拐點上方空白行的左邊界;取右上拐點 D 點后方 5 個邊界點,利用最小二乘法反向補線,從第 59 行作為縱坐標代入最小二乘法擬合右邊界線,循環(huán)到 y 取值為 D 點縱坐標,補出丟失的右上拐點下方的右邊界,再利用左右邊界線求和除以 2 作為實際中線,斜入十字元素補線圖如 4 所示。
4.5 車庫元素處理
以右入車庫為例,車庫有比較明顯的特點:左邊界為直線,右邊界丟線,可以找到右下拐點 B,空白行上方存在斑馬線。
先找到右下拐點 B,右下拐點 B 上方存在空白行,繼續(xù)向上掃線,從右向左掃線,找到白黑跳變點,跳變點計數(shù),繼續(xù)掃線,發(fā)現(xiàn)黑白跳變點,計算兩者差值,發(fā)現(xiàn)在某一范圍,對從右向左循線沿途中遇到的所有跳變點計數(shù),發(fā)現(xiàn)大于某一閾值,同時滿足上述條件,即判定為車庫元素。
找到右下拐點 B 后,B 點橫坐標減去賽道寬度,即確定到 Z 點坐標,因斑馬線總寬度小于賽道寬度,所以可以找到右上拐點 D 點,用最小二乘法構造線段 ZD,通過線段 ZD 加上最近處賽道一半構造出實際中心線,小車沿實際中心線順利入庫。車庫元素補線圖如 5 所示。
5 結語
本方案主要通過 DMA 傳輸數(shù)據(jù)、大津法分割圖像,提高單片機處理性能;尋找賽道元素特征點,擬合賽道中線,并對特殊元素進行識別與處理,使智能車更平穩(wěn)快速通過多種賽道元素,達到了設計要求。
參考文獻:
[1] 符曉明.基于ADSP-BF60x網(wǎng)絡通信的DMA配置模式及中斷方法實現(xiàn)[J].中國計量,2018(03):109-110+112.
[2] 巴德凱.自適應圖像分割及并行挖掘方法的研究與實現(xiàn)[D].北京:北方工業(yè)大學,2016.
[3] 孫少林,馬志強,湯偉.灰度圖像二值化算法研究[J].價值工程,2010,29(05):142-143.
[4] 蔡栩嘉,劉海剛,陳冠成,李勇祥,莊越.攝像頭智能小車設計與控制算法研究[J].工業(yè)控制計算機,2018,31(12):98-101.
[5] 徐翔,王琪,高進可,秦海亭,張鈺潔.智能車車道識別與圖像處理[J].自動化技術與應用,2020,39(07):91-95.
(注:本文轉(zhuǎn)載自《電子產(chǎn)品世界》2022年7月期)
評論