1. 程式人生 > >汽車輔助駕駛系統中的影象處理演算法

汽車輔助駕駛系統中的影象處理演算法

http://www.szaeia.com/NewsShow/2cf277eb-3a8e-4e6d-a7b7-03658f3eb5c6.htm

影像演算法瓶頸突破 汽車ADAS再進化

近年來,世界各國的交通主管單位皆大力倡導「防禦駕駛」,所謂防禦駕駛是一種預測危機並協助遠離危機的機制,意指除了駕駛本身遵守交通規則外,也要防範其他駕駛因為自身的疏忽或是故意違規,而發生交通意外。因此,防禦駕駛的目的是透過目視與耳聽的察覺,來認知並預測可能發生意外之情境,並且儘快採取必要的防禦措施,以避免意外發生。
        根據交通部的長期統計與特性分析報告指出,全國主要交通事故原因中,以「未保持行車安全距離」為最多。以2014年上半年國道高速公路為例,A1類(造成人員當場或24小時內死亡)的交通事故總計三十件,而未保持安全距離(車前狀態)佔最大宗,總共有十件,並造成十一人死亡、十三人重傷。其次為變換車道不當,總計為六件,並造成八人死亡、八人重傷。然事實上,交通部在2012年國道事故檢討報告指出,在這些造成不幸的交通事故當中,有高達79.1%的意外是有機會事先預防的。
        有鑑於此,各大車廠與駕駛人紛紛在車輛上安裝各種駕駛輔助系統,以降低肇事率(圖1)。在各種系統中,以影像為基礎的輔助駕駛系統市佔率最高;其主要原因為成本低廉,且可與行車記錄器結合使用,並能將偵測的結果以視覺影音的方式呈現給駕駛人,雖然其偵測距離不及紅外線與雷達,但仍廣受歡迎。

 開發成本低廉影像式ADAS受青睞
        為有效降低因駕駛者不專心所導致的事故發生,車道偏移警示系統(Lane Departure Warning System, LDWS)與前方碰撞警示系統(Forward Collision Warning System, FCWS)為世界各國重視,是業界爭相投入開發的兩大首要先進駕駛輔助系統(Advanced Driver Assistance System, ADAS)功能。


        LDWS
        LDWS主要功能運作是透過攝影機拍攝車輛前方的場景,然後經影象處理與計算,產生車道偵測的結果;一旦車輛在沒有打方向燈的情形下開始偏移車道時,系統則會自動發出各種警示訊號,提醒駕駛者立即做出反應以避免意外發生。


        FCWS
        FCWS的主要功能亦是透過攝影機拍攝車輛前方的場景,經過影象處理演算法的計算後,將前方的車輛偵測出來,並且推估兩車之間的距離;當兩車未保持適當的行車距離時,系統亦自動對駕駛人發出警告,甚至近年來已有車廠開始評估是否由行車計算機系統接管煞車功能。
上述兩種ADAS的主要功能,其共同點就是拍攝車輛前方的場景資訊。一般而言,FCWS與LDWS都會使用同一個攝影機所取得的影像資訊,且該攝影機亦可將影像資訊儲存起來,做為行車記錄器之用。因此,FCWS與LDWS除了現有汽車製造商進行開發研究之外,製作行車記錄器的廠商亦積極投入研發。


        PC-based為早期慣用平臺


        數字影象處理平臺主要可分為兩大類,分別為軟體導向的PC-based與硬體導向的獨立型(Stand Alone)平臺;這兩類各有其優缺點。早期,由於獨立型的系統運算資源非常侷限,中央處理器(CPU)指令週期較慢、記憶體空間不足、可支援的介面裝置亦短缺,加上缺乏有效的影像程式開發介面,導致影象處理演算法的開發人員習慣採用PC-based做為硬體平臺。現在,由於超大規模積體電路(VLSI)與系統單晶片(SoC)的進步,數字系統的晶片有大幅進步同時縮小化的進展,使得目前嵌入式系統可以在低價位的情形下,提供高速CPU、海量儲存器、更多的周邊控制,甚至可以有多核心的處理器(Processor)。
        獨立型平臺符合輕薄短小設計需求 如此進步下,嵌入式系統已經開始朝多媒體邁進,增加影像與視訊等二維(2D)/三維(3D)訊號的運算,以擴大應用範圍;再加上隨著智慧化與雲端化的趨勢,多媒體應用與安全監控平臺,已漸由PC-based走向獨立型嵌入式系統,以便滿足車載應用對省電與輕薄短小的需求。 有鑑於此,工研院便以獨立型嵌入式系統方式來進行ADAS的開發與驗證。 首先,演算法開發人員為取得影像來開發演算法,在開發初期必須自行駕駛配有行車記錄器的車輛,於道路上拍攝各種不同場景、天候等行車影片,過程中還必須兼顧「正確率」與「效能」,因為對任何演算法而言,良好的正確率只是最基本的條件。 攸關警告提示速度ADAS演算法驗證至為重要
        ADAS對於演算法的效能必然斤斤計較,因為當危險狀況發生時,系統必須實時(Real-time)發出警告。以FCWS為例,當某車輛於國道高速公路以時速100公里行駛時,亦即其每秒前進27.7公尺;系統若延遲0.1秒發出警告,則車輛將繼續前進2.77公尺;因此設計人員習慣以訊框速(Frame Per Second, FPS)來驗證ADAS中的演算法之效能,當FPS值越大時,代表該演算法的效能越佳。
        當然,演算法的效能必定與嵌入式平臺的處理器速度、資源相關,所以在開發初期就必須考慮演算法的計算量是符合何種嵌入式平臺,否則將出現演算法無適當平臺可用的困境。
        

      結合快速影像分割結果車道線偵測演算法效能穩健
        LDWS為ADAS中較早被開發的功能,車道偏移警示系統的研發,主要包含「車道線偵測」以及「車道偏移偵測」兩個專案。雖然這個研究已經有十幾年的歷史,同時也有許多知名學者投入此領域的研究,但是其研究成果還有許多須要改進之處;如在車道線偵測方面,因為無法預測車道線與道路的顏色差距(梯度(Gradient))程度。因此,演算法中預設的引數便無法偵測出所有型別的車道線。此外,為強化車道線的特性,往往須要重迭多張連續的畫面,以加長車道線的長度。
最後,由於使用的直線偵測演算法,無法提供直線是否屬於車道線或是非車道線等資訊,因此傳統的車道偏移系統,需要一個手動設定的畫面,標示出可能的車道線區域,藉此過濾掉非車道路線。
在車道偏移偵測方面,須要分析連續畫面的變化,才能判斷車子是否偏移,如此一來,系統便無法實時通知駕駛有關車道偏移的資訊。有鑑於此,工研院已經自行開發出一種快速且強健的車道偏移警示系統;藉由結合「快速影像分割」的結果,所開發的車道線偵測演算法,可以偵測出各種型別的車道線,不須要分析連續畫面的變化,可以僅由一張畫面,便判斷出車輛是否偏移。
        該演算法的執行流程(圖2)主要有五個步驟。


圖2LDWS演算法流程圖

        影像分割(Image Segmentation)
        首先,對原始影像進行「區域化」的步驟,將影像分成若干區域。
        車道線區域偵測(Road Line Region Detection)
        然後結合「影像分割後的結果」以及「梯度分析」,以完成車道線區域偵測。
        車道線候選區域(Road Candidate Determination)
        使用區域標記(Connected Component Labeling)的方式,標記每個連通區域(Connected Component),進而分析各區域的特性,去除「非車道線區域」,以完成工作。
        車道線判定(Road Line Determination)
        接著進行車道線判定步驟。
        車道偏移警示(Lane Departure Warning)
        最後,藉由判斷左右車道線的角度,以完成警示的功能。
        該演算法的執行結果可參考圖4。


圖3FCWS演算法流程圖

     以純水平線為依據前車偵測演算法更精確
        保持安全車距是駕車的基本守則,尤其是在高速公路上,當前方車輛有任何狀況發生時,保持安全車距才有足夠的時間進行防禦駕駛。所以,工研院開發FCWS的目標為,當前方車輛與本身車輛距離30公尺時,則實時發出警示訊號。
        前方碰撞警示系統的研發,主要包含「前方車輛偵測」以及「車距計算」兩大專案。目前的前方車輛偵測研究中,有許多方法是使用「車底陰影」來當作特徵值。但是,陰影容易受到外在光線的影響,造成偵測正確率不穩定的困擾。此外,為克服夜間、陰雨等天候問題,有許多方法是以「後車燈」為偵測的特徵值。這種做法雖然可在夜間獲得良好的成果,但是僅適用於夜間。
        有鑑於此,工研院自行研發適用於嵌入式系統,快速且穩定之前方車輛偵測演算法;藉由Sobel濾波器取得前方車輛的水平、垂直邊緣,並且透過梯度方向(Gradient Orientation)將「純水平邊緣」擷取出來。
        「純水平邊緣」是很重要的特徵,因為從很多測試影片中可以觀察到,前方車輛必定有「純水平邊緣」,例如保險桿、後擋風玻璃、行李箱等,然而有時候場景中亦可能出現一些非車輛的純水平邊緣。為避免誤判,可以使用標記(Labeling)、角點偵測(Corner Detection)、區域二元圖(Local Binary Pattern, LBP)紋理分析(Texture Analysis)將前方車輛準確的偵測出來。如同LDWS演算法一樣,該演算法的前方車輛偵測系統,亦不須要分析連續畫面的變化,可以僅由一張畫面便判斷出前方車輛。本演算法的執行流程如圖3所示,而執行結果如圖4所示。


圖4FCWS與LDWS之執行結果

在車距計算方面,由於僅有單一攝影機,所以無法使用雙攝影機的演算法來計算距離;但透過固定攝影機的方式,於靜止狀態預先量測距離,建立對應表格(Table)方式進行計算(圖5)。將攝影機固定架設完畢後,透過實際量測可知,5公尺線對應至該影像的第162列(Row)、10公尺對應至第137列、15公尺對應至第126列、20公尺為第123列。


圖5單一攝影機之前方距離量測

藉由實際距離與影像座標的對應產生對應表,當行進間前方車輛被偵測時,再利用查表的方式換算出前車距離。利用影像座標對應的方法,其誤差值將會隨著距離增加而增加,不過在控制攝影機鏡頭條件下,在實際距離小於30公尺時,其誤差值仍在公尺級的接受範圍內。
        最後,將ADAS於嵌入式平臺進行驗證且程式優化之後,即可安裝於車輛上做實車測試。在此使用的嵌入式平臺為Cortex-A15的雙核心處理器與其他相關的周邊配備;測試場景為新竹68號快速道路,並且於上午、中午、傍晚進行數次的實車測試;天候狀況已包含晴天、陰天、大雨。FCWS與LDWS的正確率至少皆有90%以上,且執行速度可達25FPS。
        輔助駕駛技術迭有進展主動式ADAS前景可期
        隨著車用電子與車用影像技術的進步,各種輔助駕駛的系統成為各大車廠的發展目標,且不停的推陳出新,因此車廠投入研發各式主動式ADAS的力道與能量越來越強。然而,早期的ADAS大多是停留在警示功能,用以提醒駕駛人須要儘快進行防禦駕駛,不過於近年,已經有些車廠推出半自動式的輔助系統,可協助駕駛者進行煞車或車道維持等。
        發展這些功能的最終目的就是要朝向全自動駕駛,在行車途中遇到危機時,系統會主動介入接管駕駛,並且快速判斷應如何閃避危險,且保持車體不受碰撞,無人的自動駕駛已然成為未來發展的關鍵;然而,在這段過渡期間,各廠依舊致力發展相關技術,各種單一功能警示輔助系統正於產業界蓬勃發展。未來,當技術成熟且成本能被市場接受時,相信各大車廠就將會整合多個單一警示系統,逐漸邁向無人駕駛。
        目前,Google在自動駕駛車方面已有長足的進展,2014年中公佈的無人駕駛車已沒有方向盤與油門,且以40公里/小時的速度,在美國加州地區進行測試。其實,無人駕駛車輛最大的挑戰仍是在一般道路,誠如Google自動駕駛計劃負責人Chris Umson所言,以無人駕駛系統在高速公路開上1公里,和在市區開上1公里,這是完全不一樣的兩件事情;在高速公路上開車的變因僅有數種,但若在一般道路上恐怕會激增到上百種。所以,Google無人駕駛車除了安裝傳統的攝影機之外,更搭載光達系統(LiDAR)進行光學定向測距,用以提高安全性與可靠性。由於技術、法令等因素尚未成熟,無人駕駛汽車無法在幾年內就上市,但透過自動駕駛技術的不斷進步,相關的配備必定下放至一般車款上,對消費者來說亦是一大福音。