<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于攝像頭傳感器的智能車循跡算法設計方案

          基于攝像頭傳感器的智能車循跡算法設計方案

          作者:熊中華(山東理工大學交通與車輛工程學院,山東淄博 255000)時間:2022-07-28來源:電子產品世界收藏

          摘要:本方案通過進行攝像頭與單片機之間的信息傳輸,采用確定二值化閥值,進行圖像分割,極大提高圖像處理速度。本文主要介紹了中心線擬合、補邊界線、提取、與車庫元素識別與處理等算法,使智能車更平穩快速通過多種賽道元素。

          本文引用地址:http://www.ex-cimer.com/article/202207/436782.htm

          關鍵詞;;;;

          隨著汽車保有量的不斷攀升,交通擁堵、交通事故不斷頻發,越來越多的國家投入到智能網聯汽車的研發,智能網聯汽車多采用傳感器融合方案,視覺傳感器作為其中一種重要的傳感器,進行圖像采集。本文采用攝像頭傳感器進行圖像采集,進行賽道元素特征識別,輔助智能車快速通過多種賽道元素,對于提高城市交通智能化有著重要意義。

          1 攝像頭傳感器選取與安裝

          1.1 攝像頭傳感器選取

          攝像頭傳感器是視覺檢測的核心器件,信息量豐富,相較于電磁傳感器,掃描距離更遠,有利于提前進行路徑規劃。本方案采用龍邱神眼攝像頭 MT9V034 作為圖像傳感器 , 為灰度數字攝像頭,只需 3.3 V 供電,分辨率為 120×188,具有高動態成像、超低功耗等多種優 點,該攝像頭采用 8 位并行輸出,故像素點灰度值范圍為 0 ~ 255。

          結合智能小車循跡特點,一般會將分辨率設置為 80×60,即可獲取賽道圖像處理所需數據。高分辨率,圖像會更清晰,但數據量增加,傳輸時間延長,影響圖像處理效率,如果再打開串口使用上位機,有機發光半導體(organic electroluminescence display, OLED)屏上圖像會延遲,幀率降低,也不便于調試。一般會降低分辨率提高幀率,但也會考慮算法性能,應注重單片機處理速度與圖像刷新速度協調。

          1.2 攝像頭傳感器安裝

          智能小車采用后輪驅動,為避免車模抖動,應讓質心靠后,提高小車抓地力,同時還要保證攝像頭盡量靠前,采取到更多有效數據,故將攝像頭放在車模中部,關于車軸對稱。為減輕整車重量,選用空心碳素纖維管作為固定件,并用哥倆好膠水固定攝像頭角度,方便調試。

          將攝像頭正裝,OLED 屏幕上圖像顯示順序,從上到下依次為 0 ~ 59 行,從左到右依次為 0 ~ 79 列,一般小車前進時,近處圖像位于最大行處,遠處圖像位于 0 行處。

          2 圖像傳輸

          本方案采用 ( 直接存儲器訪問,Direct Memory Access) 進行數據傳輸,DMA 可以進行高速數據傳輸,通過 DMA 控制器,可以將攝像頭等外設單元采集的數據直接傳輸到我們的內存中,只有數據傳輸開始、結束時才會與 CPU(中央處理器)交流,傳輸過程中,CPU 可以專心進行圖像處理;普通數據傳輸方式,每一個數據傳輸都需要依賴 CPU 進行,極大占用 CPU 資源。DMA 傳輸,極大提高了單片機處理效率,故我們采用 DMA 進行數據傳輸。

          FRM 為場中斷,每當 FRM 管腳連接的 IO 口檢測到一個沿變化,攝像頭和單片機之間開始傳輸一副圖像數據;LINE 為行中斷,每當 LINE 管腳連接的 IO 口檢測到一個沿變化,攝像頭和單片機之間開始傳輸一行數據;PIX 為像素時鐘,每當 PIX 管腳連接的 IO 口檢測到一個沿變化,攝像頭和單片機之間開始傳輸一個數據。需要采集一副圖像時,會先讀取到一個場信號,連續兩個場信號之間為一副完整圖像,當讀取到一個場信號后,會連續讀取到 120 個行信號,每兩個行信號間,會連續讀取到 188 個點信號。獲得一個場中斷后,開始將圖像的每一行數據存入數組,并開始進行行累加計數,當計數達到 120 行后,會獲得下一個場中斷,一副圖像采集完畢,及時將行累加計數器清 0,并置場結束標志位,開始進行數據處理。

          3 圖像預處理

          因選用的攝像頭傳感器為灰度傳感器,無需額外進行圖像灰度化,本方案主要采用閥值分割法進行圖像分割。閥值的確定是閥值分割法的核心,常見的閥值分為:靜態閥值和動態閥值 [2] ,靜態閥值容易受到環境光線影響,對不同環境的賽道適應力較差;動態閥值抗干擾性強,對光照變化不敏感。為更好地適應不同賽道環境變化,本方案采用確定動態閥值。大津法(OTSU),利用統計學方法,讓計算機在每一張圖片上都自適應的根據圖片整體亮度確定閾值,單片機在不同環境下都能自適應找到不同的分割閾值,每一張圖片的閾值都不一樣,受圖像亮度和對比度的影響小,但對噪聲非常敏感。一般采集的灰度直方圖會存在兩個峰值,兩峰之間存在一個谷底,而大津法的閾值即為峰谷對應的灰度值。

          3.1 大津法算法原理

          假設灰度直方圖中某一灰度值 i 恰為峰谷,以此為 閥值 Threshold 進行圖像分割 , 將一幅圖像中所有像素分成前景和背景兩部分,前景即為白色,背景即為黑色,驗證類間方差是否最大。為優化算法性能,對傳統類間方差計算式作出變式,得到公式 1,通過下式計算類間方差值:

          1658999336741707.png

          在所有灰度值中使類間方差值最大的灰度值即為二值化分割閥值 Threshold。

          3.2 大津法算法邏輯與優化

          3.2.1 算法邏輯

          循環 0 ~ 255 個灰度值,記錄每一個灰度值對應的類間方差值,將其與已知的最大類間方差值比較,記錄兩者間最大值,并進行循環計數,當循環計數值達 256 次,即可確定此時最大類間方差值對應的灰度值為二值化閥值 Threshold。

          3.2.2 算法優化

          如果是固定賽道,可以多次試運行大津法算法,記錄對應多種賽道元素的二值化閥值,可以得到一個灰度值范圍,比如 70 ~ 140, 縮小灰度值遍歷范圍,提高算法效率。賽道上光線一般比較均勻,當一幅圖像中包含噪聲和非均勻光照時,可能會造成大津法閥值不準確,而賽道圖像中部分元素灰度差別大,特別是可能會遇到上帝之光的干擾,使部分賽道光照與正常賽道光照差異較大,可以采集賽道時,隔行隔列采集,以此形成的灰度直方圖,可以有效減少噪聲和非均勻光照;面對上帝之光,也可以嘗試部分區域求大津的方法,只對賽道前半部分用大津法求二值化閥值,對圖像后半部分舍棄,因為小車往往需要近處圖像進行數據處理,及時進行賽道循跡,舍棄遠處圖像數據,可以使圖像二值化數值更接近于賽道近處值,效果更好。也可將賽道劃分為遠近兩個區域,對其分別大津法求閾值,并分別加權求出更理想的二值化閾值。

          一般情況下,賽道光照強,二值化動態閾值會更大,對于光斑等干擾,不易找到合適閾值,可以安裝濾光片等光學元器件改善。

          3.3 二值化

          遍歷賽道所有像素點灰度值,如果某一像素點灰度值大于二值化閾值,則置為白點 1,如果灰度值小于二值化閾值,則置為黑點 0。

          4 圖像處理

          4.1 中線擬合與偏差

          因為攝像頭采集到的近處圖像實際中線 [4] 與賽道理想中線接近,遠處圖像可能兩者差別比較大,所以我們一般選擇從近處到遠處開始掃線。從底部第 59 行的理想中線位置第 40 列開始向左向右兩方向分別掃線,找到黑白跳變點,記錄左右邊界點位置。

          以向左掃線為例,當向左掃線找到一點 H 的值同其左邊一點 J 的值差值為 1 時,再以 H 點向左間隔 3 個點找到點 K,計算點 K 同其左邊一點 L 的差值為 0 時,繼續以 K 點向左間隔 3 個點找到點 M,計算點 M 同其左邊一點 N 的差值為 0 時,即可判斷找到第 59 行左邊界點,將其計入一個大小為 60 的左線數組,這種方法有效避免了噪聲、光斑對邊界點提取的影響。同理獲得第 59 行右邊界坐標,左邊界坐標與右邊界坐標求和后除以 2,即為當前賽道第 59 行實際中點坐標,并將其存入中線數組。

          向左掃線找左邊界原理如圖 1 所示。

          image.png

          圖1 找左邊界原理圖

          繼續以第 59 行實際中點坐標為起始點開始進行第 58 行左右掃線,因為部分賽道如果選取理想中點第 40 列作為下一行左右掃線起始點,可能理想中線正好位于黑色區域,左右兩邊掃線遇到的都是黑點,黑白跳變點位置同掃線起始點間隔較遠,連貫性不好,極大地浪費 CPU 性能,不利于小車快速巡線。同理進行 For 循環向上迭代求中線,直到掃線完 60 行,將各行中點連接,即為實際中線。

          用右邊界數組減左邊界數組,可以得到賽道寬度。從起始點第 59 行第 40 列的像素開始,向上掃線,找到白黑跳變點,用圖像總行數減去白黑跳變點的值即為賽道長度;在某些特定元素判斷中,可以使用賽道寬度、賽道長度作為輔助判斷,識別特定元素。

          選取一個控制行,控制行與實際中線、理想中線交點分別為 O、P,計算兩點差值作為偏差,乘以比例項系數 Kp, 作為 PWM 一部分用于小車轉向控制。也可以計算多行偏差,對遠處偏差賦予低權重,近處偏差賦予高權重,進行累加作為最終偏差,為進一步提高車速,可以針對不同賽道元素,對多行不同區域分別賦予不同的權重??刂菩械倪x取需要綜合考慮車速、攝像頭前瞻位置等,一般車速越快,控制行數值選取越小。

          4.2 丟線處理

          對于部分特殊賽道或者當小車偏離賽道理想中線時,可能無法找到邊界線。當出現單邊丟線時,根據不同賽道元素,有多種處理方法,以左邊丟線為例,可以將圖像左邊框線規定為黑點 0,當算法向左掃線檢測到只有第 0 列有黑點 0 的時候,即判定該點為左邊界點;也可以選擇找到某一特殊點,比如拐點,利用拐點和其他已知點進行補線,一般采用 [5] 補線處理賽道元素??梢哉业阶筮吔鐏G線前的 5 個左邊界點,利用公式 2 和公式 3 計算出擬合直線的 K 和 B,將丟線后的行數依次作為縱坐標帶入公式 4 計算出橫坐標,補齊左邊界。

          1658999808774802.png

          當出現雙邊丟線時,一般是處于特殊元素十字路口處,可以選擇存儲歷史數組的方法,用之前的實際中線數據過特殊元素。也可以選擇通過左右拐點等同時補線,通過兩邊界丟線處附件已知的 5 個邊界點分別擬合出兩條直線,補全左右邊界。為降低算法復雜度,也可以直接使用丟線前幾行的賽道進行直接補線,因車速、電池電量等情況,可能會不穩定。

          4.3

          image.png

          圖2 特征點標注圖

          圖 2 中:A 點為左下拐點、B 點為右下拐點、C 點為左上拐點、D 點為右上拐點、E 點為起始行左邊界、 F 點為起始行右邊界。

          正常直道的邊界線斜率為定值,當存在拐點時,如圖 2 標注所示,邊界線斜率會在拐點前后發生突變,A 為左下拐點,在 A 點下方的左邊界線為固定斜率的右傾直線,當從下往上掃線找邊界求中線時,突然發現 A 點上方的左邊界斜率急劇變緩,自 A 點開始向左接近水平生長。

          B 為右下拐點,在 B 點下方的右邊界線為固定斜率的左傾直線,當從下往上掃線找邊界求中線時,突然發現 B 點上方的右邊界斜率急劇變緩,自 B 點開始向右接近水平生長;

          同理可知,C 為左上拐點,在 C 點下方的左邊界線自右向左接近水平生長,斜率較小,在 C 點上方的左邊界斜率急劇變大;D 為右上拐點,在 D 點下方的右邊界線自右向左接近水平生長,斜率較小,在 D 點上方的右邊界線斜率急劇變大。

          1659000391226561.png

          1659000450341034.png

          4.4 十字路口處理

          4.4.1 正入十字路口

          當左右掃線找到左下拐點 A、右下拐點 B,且從左下拐點向上隔行掃描 2 行,發現下拐點上方白點數目大于某一設定值時,即可判定正入十字。

          十字路口下拐點上方有多行空白行,發生丟邊現象,需要找特征點,使用最小二乘法構造邊界線。左右巡線找到左下拐點 A、右下拐點 B、左上拐點 C、右上拐點 D, 利用斜截式分別構造線段 AC、BD,補出拐點空白行的左右邊界線,再利用左右邊界線求和除以 2 作為實際中線。正入補線圖如圖 3 所示。

          image.png

          圖3 正入十字元素補線圖

          進入圓環后,可以正常掃線找到左右邊界,出環后,用相同方法補線出十字路口。

          4.4.2 斜入十字路口

          以左斜進入十字路口為例,當左右掃線找到左下拐點 A、右上拐點 D,判定為斜入十字。

          十字路口下拐點上方有多行空白行,發生丟邊現象,需要找特征點,使用最小二乘法構造邊界線。左右掃線找到左下拐點 A、左上拐點 C、右上拐點 D, 利用斜截式構造線段 AC,作為左下拐點上方空白行的左邊界;取右上拐點 D 點后方 5 個邊界點,利用最小二乘法反向補線,從第 59 行作為縱坐標代入最小二乘法擬合右邊界線,循環到 y 取值為 D 點縱坐標,補出丟失的右上拐點下方的右邊界,再利用左右邊界線求和除以 2 作為實際中線,斜入十字元素補線圖如 4 所示。

          1659000964753512.png

          4.5 車庫元素處理

          以右入車庫為例,車庫有比較明顯的特點:左邊界為直線,右邊界丟線,可以找到右下拐點 B,空白行上方存在斑馬線。

          先找到右下拐點 B,右下拐點 B 上方存在空白行,繼續向上掃線,從右向左掃線,找到白黑跳變點,跳變點計數,繼續掃線,發現黑白跳變點,計算兩者差值,發現在某一范圍,對從右向左循線沿途中遇到的所有跳變點計數,發現大于某一閾值,同時滿足上述條件,即判定為車庫元素。

          找到右下拐點 B 后,B 點橫坐標減去賽道寬度,即確定到 Z 點坐標,因斑馬線總寬度小于賽道寬度,所以可以找到右上拐點 D 點,用最小二乘法構造線段 ZD,通過線段 ZD 加上最近處賽道一半構造出實際中心線,小車沿實際中心線順利入庫。車庫元素補線圖如 5 所示。

          1659001095504241.png

          5 結語

          本方案主要通過 DMA 傳輸數據、大津法分割圖像,提高單片機處理性能;尋找賽道元素特征點,擬合賽道中線,并對特殊元素進行識別與處理,使智能車更平穩快速通過多種賽道元素,達到了設計要求。

          參考文獻:

          [1] 符曉明.基于ADSP-BF60x網絡通信的DMA配置模式及中斷方法實現[J].中國計量,2018(03):109-110+112.

          [2] 巴德凱.自適應圖像分割及并行挖掘方法的研究與實現[D].北京:北方工業大學,2016.

          [3] 孫少林,馬志強,湯偉.灰度圖像二值化算法研究[J].價值工程,2010,29(05):142-143.

          [4] 蔡栩嘉,劉海剛,陳冠成,李勇祥,莊越.攝像頭智能小車設計與控制算法研究[J].工業控制計算機,2018,31(12):98-101.

          [5] 徐翔,王琪,高進可,秦海亭,張鈺潔.智能車車道識別與圖像處理[J].自動化技術與應用,2020,39(07):91-95.

          (注:本文轉載自《電子產品世界》2022年7月期)



          評論


          相關推薦

          技術專區

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();