//Logo Image
作者:徐業良(2009-12-14);推薦:徐業良(2009-12-14)
附註:本文發表於汽車購買指南雜誌,2010年一月號,史丹福專欄。

電腦視覺技術在汽車上的應用

很久沒有在史丹福專欄中提到我的小女兒了。向各位老讀友們報告,女兒已經不太小了,國小六年級,一百六十幾公分亭亭玉立的美少女,正在為著額頭上冒個不停的青春痘十分煩惱。

女兒算是個認真的小學生,她最頭疼的家庭作業就是作文,每回老師出了個作文題目,女兒總是心浮氣躁、唉聲嘆氣,在書桌前坐了半天,作文簿還是一片空白。這時老爸便得出馬,幫著女兒出主意看看作文要寫什麼。可是每回老爸的建議都被打回票,這個太老套、那個太無聊,扯到最後,常常是老爸也被搞得不耐煩,「什麼都不好,那妳自己寫好了!」,不歡而散。過程儘管辛苦,但女兒最後也總能寫出一大篇有條有理的文章,準時交卷。

其實老爸也是這樣,每個月最頭疼的便是想這個月的史丹福專欄要寫什麼,每回雜誌社催稿孔急,我便心浮氣躁、唉聲嘆氣,捧著電腦大半天,檔案內容還是一片空白。前幾天上網翻了一晚上,想找一個熱門、有趣的汽車科技話題,卻始終找不到好題目。女兒知道老爸心煩,也幫著出主意,「寫過關於汽車引擎嗎?」,「寫過好幾次了!」,「車燈?」,「也寫過」,「輪胎呢?」,「老套了」,「汽車音響或冷氣呢?」,「太無聊,沒有新東西可以寫…」

女兒倒沒有不耐煩,只是愛莫能助同情地說,「我知道的汽車就只有這樣了…」

週末在家突然想到,最近實驗室的研究開始用到一些電腦視覺(computer vision)的技術,自己正在研讀一些電腦視覺的資料,這個月的史丹福專欄何不寫一篇「電腦視覺技術在汽車上的應用」!

我像是中了頭彩一樣衝到女兒房間,希望這個題目會得到女兒的欣賞。女兒很冷靜地問我,「Computer vision是什麼?」,「在汽車上有什麼用?」,我結結巴巴地向她解釋。女兒聽完突然冒出一句英文,

Do you know anything about it?

Not really.」,我很誠實地搖搖頭。

女兒伸出三根手指,在額頭上比了一個「三條線」的手勢。

我們家三個人當中有兩個是大學教授,女兒也因此對大學教授不太尊敬,她總覺得實驗室的研究生哥哥們非常厲害,會作很多稀奇古怪的設計,最差勁的就是老爸,什麼都不會,還當教授哩!

殊不知教授最厲害的本事就是查資料、寫文章。一提到女兒,開場白就不知不覺講太長了,以下就向大家報告本月得來不易的主題,電腦視覺技術在汽車上的應用。

OK,女兒的第一個問題,電腦視覺是什麼?簡單的說,電腦視覺就是要讓機器能夠像人一樣「看得見」。光是在機器上加裝照相機、攝影機取得影像還不夠,所有的影像都是二維-2D的,電腦視覺最重要的目的便是在發展各種計算方法,能從2D影像中自動擷取出3D世界的有用資訊,讓機器也能理解3D真實世界。

電腦視覺是個很熱門的研究領域,應用範圍非常廣,包括工業檢測(利用影像檢測產品瑕疵)、門禁保全系統(辨識人臉等)、醫療影像處理(由影像偵測腫瘤之類的)、機器人、無人飛機、甚至太空探測等等,當然還有這個月的主題,汽車上的電腦視覺應用。

「看得見」這件事情對人來說應該再自然也不過,人對影像的處理有三個基本步驟:首先人經由眼睛取得影像(image acquisition),接著將取得的影像在大腦中快速地影像處理(image processing),將物件的形狀、顏色、特徵等等資訊與大腦中的記憶資料比對,辨別出所看到影像中的物件是什麼。影像中所有物件組合在一起,大腦再根據先前的經驗和推論對此影像有所理解(image understanding),便能進而做出判斷,控制身體其他部位執行適當的反應。

電腦視覺系統的事實上也就是在模擬這個人「看得見」的過程。女兒的第二個問題,電腦視覺在汽車上有什麼用?在汽車上的應用來說,電腦視覺是駕駛人輔助系統(driver assistance system)開發最關鍵的技術。

對照前面提到的三個基本步驟,汽車上電腦視覺應用的第一個層次是在車頭、車尾加裝照相機、攝影機等硬體裝置來取得影像,幫助駕駛人「看到」原本看不清楚的道路狀況。例如現在高檔一點的車子便已裝置有後視攝影機,倒車時駕駛人可以看到車子後方的死角;2000年開始陸續有車廠在汽車上加裝夜視裝置(凱迪拉克賓士、BMW、悍馬、本田、凌志等),在夜間或惡劣天候時以紅外線攝影機將人眼無法清楚看見的物體,以影像方式呈現在駕駛座前的儀表版中央螢幕或擋風玻璃上。

車頭攝影的影像也被應用在導航系統上,提供所謂「影像導航(video navigation)」的功能,導航裝置顯示幕顯示的不是一般地圖,而是將車子前方的即時影像,導航行進方向的箭頭和導航資訊也直接重疊在影像上,駕駛人即使低頭注視導航系統螢幕閱讀導航資訊時,仍然能夠看到前方的交通狀況。

這一個層次的電腦視覺應用取得影像之後直接提供給駕駛人,由駕駛人自行判讀,不需經過任何電腦影像處理,主要工具是攝影機等硬體裝置,此時還不需要高階的計算能力,但對提升行車安全性已經有相當大的幫助了。電腦視覺技術在汽車上第二個層次的應用則需要開始作複雜的影像處理,進行「物件偵測(object detection)」,最常見的應用是路面分道線偵測,這也是所有車道偏移警示系統(lane departure warning system)的關鍵技術。

要從一個影像中偵測出路面分道線,電腦視覺系統先要對攝影機取得的影像作一些前處理,像是消除雜訊、將彩色影像轉成灰階、強化對比等工作,讓影像中的物件(例如路面分道線)以黑白方式清楚呈現;接著電腦視覺系統對前處理過的影像作特徵的擷取(feature extraction),搜尋黑白對比影像中物件的邊或特殊點,這時影像便會被歸類為一個一個物件;最後電腦視覺系統得作一些更高階的運算,逐一辨識影像中的這些物件是不是分道線,確認之後再由分道線在影像中的位置計算出汽車是否正常行駛在車道中。

這一長串的計算過程要在高速行駛的汽車上即時(real time)的進行,可以想見電腦視覺系統在汽車上的應用,電腦軟硬體運算的效率和速度是非常重要的挑戰,電腦工程師得努力開發聰明的演算法,能夠快速、正確地進行物件偵測的運算。

路面分道線的偵測要找的物件(分道線)形狀、顏色、出現的位置都非常特定,在影像處理技術上也相對比較單純,因此車道偏移警示系統大約在2001年左右便已開始出現在量產汽車上(日產、豐田、本田、雪鐵龍、通用、賓士)。大部分車廠的系統都是架設攝影機從高處直接照射路面,再利用影像處理技術偵測分道線,進而判斷汽車是否正常行駛在車道中,如果察覺汽車偏離車道,駕駛人又沒有打變換車道的方向燈,系統便會以警示燈光、聲音、或震動提示駕駛人,如果駕駛人仍然沒有回應,系統甚至會自行介入調整方向盤,使車子行駛回車道中。

比物件偵測難度更高一些的影像處理技術是「物件識別(object recognition)」,偵測到物件之後還需要識別這個物件是什麼,目前已有商用產品出現的是路旁交通號誌的識別技術,被應用在汽車導航系統上。汽車導航系統顯示的地圖,一般也會顯示出導航系統中記憶的路邊號誌資訊,加入電腦視覺物件識別技術之後,導航裝置可以即時識別路旁的交通號誌,像是臨時放置的施工、改道等號誌或者是新增、變更的交通號誌,也顯示在導航螢幕上。

再進階一些,物件識別技術中要作如汽車、行人的識別,影像處理計算的複雜度便更高了。這個層次的應用除了物件識別之外,也希望能夠判斷汽車、行人的距離,做到距離警示的功能,系統根據本身車速判斷行車安全距離,如果前方行駛汽車距離小於安全距離時,便會以警示燈或警示聲音警告駕駛人。

人的眼睛能夠分辨物件的遠近,很重要的原因是,人有兩隻眼睛,接收到的是「立體影像(stereo video)」。從一張2D的影像要判斷物件的遠近是很困難的,要作前車距離的判斷,得用兩支攝影機建立立體影像系統,進行3D物件重建,有立體視覺之後,可以更清楚辨識道路周圍物件(行人或其他車輛)的遠近及行進方向,進而可以作撞擊預測。

電腦視覺技術在汽車上的終極應用是讓汽車本身對周遭影像(路況、天候)有所瞭解,應用在史丹福專欄談過幾次的「自主駕駛技術」或「無人汽車」的開發,搭配GPS作衛星定位,控制車子沿著既定路線行進、閃避障礙物等等。美國國防部負責軍事科技發展的「國防先進研究計畫局(Defense Advanced Research Projects Agency, DARPA)」連續辦了幾次無人汽車大賽,光從這項比賽的結果來看,自主汽車技術確實是可行的,許多參賽的無人汽車都可以順利完成越野或市區行駛的賽程。

老爸每個月家庭作業的作文總算寫完了。其實老爸也還不賴,總是能在交稿期限之前化險為夷,及時交卷…