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