• 沒有找到結果。

基於WinCE平台實現嵌入式車道偏移警示系統

N/A
N/A
Protected

Academic year: 2021

Share "基於WinCE平台實現嵌入式車道偏移警示系統"

Copied!
86
0
0

加載中.... (立即查看全文)

全文

(1)國立高雄大學電機工程學系碩士班 碩士論文. 基於WinCE平台實現嵌入式車道偏移警示系統 An Embedded Lane Departure Warning System Based on WinCE Platforms. 研 究 生:洪國振 撰 指導教授:蕭培墉 博士 共同指導教授:黃世勳 博士. 中華民國 99 年 7 月.

(2) i.

(3) 誌謝 能夠順利完成碩士學業,除了要感謝支持我的家人外,還要特別感謝我的指導教授 蕭培墉博士在我修業生涯上的細心教導,與我討論研究領域中的各種困難與問題,指導 我正確的研究態度與方法,無論是在課業上的疑難解惑,或是課業外的處世態度,蕭培 墉老師總是能夠明確地指引我,令我在修業期間得到許多幫助,獲益良多。 此外也要特別感謝國立高雄第一科技大學電腦與通訊工程學系的黃世勳博士,對於 一個外校生,黃世勳老師總是撥空指導我研究論文的不足處,以及許多可再進一步改善 的細節,幫助我更加順利完成我的碩士論文。 最後,要再感謝我實驗室的同學許佳豪和鄧凱,以及學弟毛銓毅與李孟哲,陪我一 起度過在學校的生涯,彼此在學業上的互相打氣,總是能幫助我度過情緒低落的時候。 最後,要再次跟在背後默默支持我的家人,曾經教導過我的老師及教授們和不斷鼓勵我 的朋友們致上我最深的謝意。. ii.

(4) 基於 WinCE 平台實現嵌入式車道偏移警示系統. 指導教授:蕭培墉 博士(教授) 國立高雄大學電機工程學系. 共同指導教授:黃世勳 博士 (教授) 國立高雄第一科技大學電腦與通訊工程學系. 學生:洪國振 國立高雄大學電機工程學系. 摘要. 嵌入式系統的應用在日常生活中隨處可見,以手機或 PDA 來說,其擁有可攜性及 便利性兩大特點。本論文針對此一特性,欲移植車道偏移警示演算法於結合攝影鏡頭的 嵌入式系統平台上,讓使用者在不多花費任何額外費用的情況下,提供一可用於行車安 全的車道偵測系統。 在本論文中,透過嵌入式作業系統本身內建的函式庫來擷取攝影機所捕捉到的影 像,此一作法可避免額外安裝其它程式導致系統不穩定和節省其所佔用的空間,接著, 將擷取到的影像資料經由車道偵測演算法偵測出車道線位置,接著利用所獲得的車道資 訊,透過時間與空間警示機制來判斷車子是否處於車道偏移狀態,來發出警示聲音提醒 駕駛者。. 關鍵字:嵌入式系統、嵌入式裝置、智慧型行車、車道線偵測、車道偏移警示系統。. iii.

(5) An Embedded Lane Departure Warning System Based on WinCE Platforms Advisor:Dr.(Professor) Pei-Yung Hsiao Institute of Electrical Engineering National University of Kaohsiung Advisor:Dr.(Professor) Shih-Shinh Huang Institute of Computer and Communication Engineering National Kaohsiung First University of Science and Technology. Student:Kuo-Chen Hung Institute of Electrical Engineering National University of Kaohsiung. Abstract Embedded System can be seen everywhere in daily life, like cell phone or PDA. It has two major characteristics, portability and convenience. In this work, we want to implement lane departure warning algorithm on the combination of camera embedded system platform. Allows users not to spend any additional costs, and provides a lane departure warning system for traffic safety. In this paper, through the built-in library on embedded operating system itself to retrieve the video camera images, this approach can avoid the additional installation of other programs cause system instability and to save spaces they occupy. We use lane detection algorithm to detect lane position of the image data captured. Then use the lane information, through spatial and temporal warning mechanisms to determine the state of the car is in lane departure. Finally give the alarm to remind drivers. key word:Embedded system, Embedded device, Smart vehicle, Lane detection, Lane departure warning system.. iv.

(6) 目錄 口試委員會審定書 ....................................................................................................................i 誌謝............................................................................................................................................ii 中文摘要 ................................................................................................................................. iii 英文摘要 ..................................................................................................................................iv 目錄............................................................................................................................................v 圖目錄 .....................................................................................................................................vii 表目錄 .......................................................................................................................................x 第一章 緒論 .............................................................................................................................1 1.1 研究動機 ................................................................................................................1 1.2 相關工作 ................................................................................................................3 1.3 問題挑戰 ................................................................................................................5 1.4 系統架構 ................................................................................................................5 1.5 章節組織 ................................................................................................................7 第二章 嵌入式系統環境 .........................................................................................................9 2.1 嵌入式系統介紹 ....................................................................................................9 2.1.1 嵌入式系統需求 ...........................................................................................9 2.1.2 嵌入式系統架構 .........................................................................................10 2.1.3 嵌入式作業系統 .........................................................................................12 2.2 嵌入式作業系統: Windows CE..........................................................................12 2.2.1 Windows CE 簡介 ......................................................................................12 2.2.2 Windows CE 5.0 ..........................................................................................12 2.2.3 Windows CE 的開發工具 ..........................................................................14 2.3 嵌入式系統平台 ..................................................................................................15 第三章 嵌入式系統移植 .......................................................................................................17 3.1警示系統移植 ........................................................................................................17 3.2 輸入影像擷取 ......................................................................................................18 3.2.1 圖像擷取分析 .............................................................................................18. v.

(7) 3.2.2 圖像擷取轉換 .............................................................................................19 3.3 空間與時間機制的車道偏移警示演算法 ..........................................................24 3.3.1 影像前處理 .................................................................................................25 3.3.2 車道線偵測 .................................................................................................28 3.3.3 偏移警示演算法 .........................................................................................35 3.3.4 警示結果輸出 .............................................................................................40 第四章 嵌入式系統最佳化 ...................................................................................................41 4.1 系統模組分析 ......................................................................................................41 4.2 最佳化策略 ..........................................................................................................42 4.3 最佳化範例 ..........................................................................................................43 第五章 車道偏移警示系統最佳化 .......................................................................................46 5.1 系統最佳化分析 ..................................................................................................46 5.2 系統最佳化結果 ..................................................................................................47 第六章 嵌入式系統實作 .......................................................................................................51 6.1 系統實作流程 ......................................................................................................51 6.2 系統核心建構 ......................................................................................................52 6.2.1 Platform Builder開發環境建構 .................................................................52 6.3 系統參數設定 ......................................................................................................54 6.4 裝置驅動程式 ......................................................................................................54 6.4.1 驅動程式原理和應用 .................................................................................54 6.4.2 驅動程式掛載 .............................................................................................55 6.5系統實作結果 ........................................................................................................56 6.5.1 啟動Boot Loader ........................................................................................56 6.5.2 下載並執行WINCE作業系統 ...................................................................57 第七章 實驗結果與分析 .......................................................................................................59 7.1 實驗環境 ..............................................................................................................59 7.2 實驗結果與分析 ..................................................................................................61 第八章 結論 ...........................................................................................................................70 參考文獻 .................................................................................................................................71. vi.

(8) 圖目錄 圖1.1、台灣地區民國 91 ~ 97 年道路交通事故統計 ..........................................................1 圖1.2、台灣地區民國 91 ~ 97 年道路交通死亡、受傷事故統計 ......................................2 圖1.3、台灣地區歷年肇事原因 ..............................................................................................2 圖1.4、車道偏移警示系統架構 ..............................................................................................6 圖1.5、車道偏移警示系統流程 ..............................................................................................6 圖2.1、Windows CE架構 ......................................................................................................14 圖2.2、Windows CE開發工具 ..............................................................................................15 圖2.3、系統攝影機 ................................................................................................................15 圖2.4、系統硬體平台 ............................................................................................................16 圖3.1、嵌入式車道偏移警示系統架構 ................................................................................17 圖3.2、嵌入式車道偏移警示系統流程圖 ............................................................................17 圖3.3、JPEG 編解碼過程 ....................................................................................................19 圖3.4、圖像擷取轉換流程 ....................................................................................................20 圖3.5、圖像擷取轉換架構示意圖 ........................................................................................21 圖3.6、有效區域設定 ............................................................................................................21 圖3.7、擷取螢幕資訊存放至記憶體中 ................................................................................23 圖3.8、轉存檔案格式流程 ....................................................................................................24 圖3.9、車道偏移警示演算法流程圖 ....................................................................................24 圖3.10、one_dimension_smooth函式迴旋運算圖 ..............................................................26 圖3.11、one_dimension_smooth函式流程圖 ......................................................................26 圖3.12、高斯平滑處理 ..........................................................................................................27 圖3.13、全域邊緣偵測 ..........................................................................................................28 圖3.14、頂點搜尋演算法之說明 ..........................................................................................29 圖3.15、find_peak_point函式流程圖 ..................................................................................29 圖3.16、頂點搜尋演算法 ......................................................................................................30 圖3.17、群組條件及群組後線段示意圖 ..............................................................................30 圖3.18、find_edge_point函式流程圖 ...................................................................................31. vii.

(9) 圖3.19、車道線峰值點群組 ..................................................................................................31 圖3.20、edge_connect函式流程圖........................................................................................32 圖3.21、車道線峰值點形成線段 ..........................................................................................33 圖3.22、線段接合示意圖 ......................................................................................................33 圖3.23、line_segment_combine函式流程圖........................................................................34 圖3.24、車道線段接合 ..........................................................................................................34 圖3.25、警示區域及危險區域在影像中的大小及位置 ......................................................35 圖3.26、 d M 和 d S 不在危險區域中不發出警示和 d M 在危險區域中發出警示 .................36 圖3.27、正常行駛無偏移和車道偏移發生時 ......................................................................36 圖3.28、正常無偏移情況下和車道偏移情況下 ..................................................................37 圖3.29、正常無偏移情形和空間機制觸發 ..........................................................................37 圖3.30、空間警示機制執行流程 ..........................................................................................38 圖3.31、 d M 、 d S 和的變化量和判斷變化量 δ 是否大於門檻值........................................38 圖3.32、時間警示機制執行流程 ..........................................................................................39 圖3.33、警示結果輸出 ..........................................................................................................40 圖4.1、程式碼調整 ................................................................................................................42 圖4.2、消除引導變數 ............................................................................................................42 圖4.3、減少強度 ....................................................................................................................43 圖4.4、高斯平滑函式程式虛擬碼 ........................................................................................44 圖4.5、高斯平滑函式流程圖 ................................................................................................44 圖5.1、執行結果各步驟所需消耗時間分析 ........................................................................46 圖5.2、執行結果各步驟所需消耗時間分析 ........................................................................47 圖5.3、最佳化前後執行結果所需消耗時間分析 ................................................................48 圖5.4、最佳化前後執行結果所需消耗時間分析 ................................................................48 圖5.5、為降低CPU負擔進行資料刪減 ................................................................................49 圖5.6、模組化規劃程式設計階層圖 ....................................................................................49 圖6.1、嵌入式系統實作流程 ................................................................................................51 圖6.2、Platform Builder開發步驟 .......................................................................................52 圖6.3、應用程式與驅動程式關係 ........................................................................................55. viii.

(10) 圖6.4、編譯平台 ....................................................................................................................56 圖6.5、Boot Loader啟動訊息 ...............................................................................................57 圖6.6、Platform Builder操作情形 .......................................................................................58 圖6.7、燒錄系統核心NK.bin................................................................................................58 圖7.1、車道偏移情形 ............................................................................................................59 圖7.2、偵測車道線段、斜率相近線段相連、利用車道斜率找出 d M 、 d S .....................60 圖7.3、系統實機車上安裝 ....................................................................................................60 圖7.4、電腦執行時,正常無車道偏移情形 ........................................................................62 圖7.5、嵌入式平台執行時,正常無車道偏移情形 ............................................................64 圖7.6、電腦執行時,車道緩慢偏移情形 ............................................................................65 圖7.7、嵌入式平台執行時,車道緩慢偏移情形 ................................................................67 圖7.8、電腦執行時,車道急速偏移情形 ............................................................................68 圖7.9、嵌入式平台執行時,車道急速偏移情形 ................................................................69. ix.

(11) 表目錄 表2.1、嵌入式系統與PC硬體平台比較 ...............................................................................11 表2.2、嵌入式系統與PC軟體平台比較 ...............................................................................11 表2.3、攝影機規格 ................................................................................................................15 表2.4、系統硬體平台規格 ....................................................................................................16 表4.1、系統模組分析表 ........................................................................................................41 表4.2、最佳化策略前後比較表 ............................................................................................45 表5.1、各階段所採用最佳化策略 ........................................................................................50 表7.1、個人電腦與嵌入式系統優化前後比較圖 ................................................................60. x.

(12) 第一章 緒論. 1.1 研究動機. 智慧型運輸系統(Intelligent Transportation System)是應用了先進的電子、通 訊、資訊和感測等技術,提供即時的道路訊息,讓車輛本身可獲得和外部的道路 訊息,增加運輸系統的安全性和便利性,以及減少運輸工具對於環境的傷害性。 其運用範圍相當廣泛,如交通管理、旅行者資訊提供、大眾運輸管理、車輛安全 系統等,可說是與生活密切相關,只要是有用到運輸工具者,皆可應用,其中與 人關係最為重要的莫過於行車安全性的運用,唯有確保人車上的安全,才可達到 交通運輸的目的。 根據內政部警政署的統計資料顯示,歷年來台灣地區的交通事故有逐年上升 的趨勢,以民國 97 年為例,其交通事故件數為 166,288 件,因車禍死亡者有 2,224 人,受傷者有 220,346 人,如圖 1.1、圖 1.2 所示,分析其肇事原因,百分之八十 五以上是駕駛疏忽及不當所致,如圖 1.3 所示,包括酒醉駕駛、行駛超速、疲勞駕 駛、開車使用手持式行動電話等因素,這些交通事故不僅帶來了個人和家庭的負 擔,更增加有限醫療資源的浪費及國家生產力的損失,若是能防患於未然的話, 不僅是對於個人和家庭,同時也能對社會帶來莫大益處。 道路交通事故統計. (件) 200,000 150,000. 137,221 100,000 50,000. 155,814. 160,897 163,971 166,288. 120,223 86,259. 0 91年. 92年. 93年. 94年 95年 ( 民國 ). 圖1.1、台灣地區民國 91 ~ 97 年道路交通事故統計. 1. 96年. 97年.

(13) 道路交通事故死亡人數統計. 道路交通事故受傷人數統計. (人). (人). 4,000 2,861 3,000. 2,718. 2,634. 2,894. 250,000. 3,140 2,573. 203,087. 200,000. 2,224. 150,000 2,000. 220,346 211,176 216,927. 179,108 156,303 109,594. 100,000 1,000 0. 50,000 91年. 92年. 93年. 94年. 95年. 96年. 0. 97年 ( 民國 ). 91年. 92年. 93年. 94年. 95年. 96年. 97年 ( 民國 ). 圖1.2、台灣地區民國 91 ~ 97 年道路交通死亡、受傷事故統計. 圖1.3、台灣地區歷年肇事原因 此外,嵌入式系統的產品從原僅限於工業用電腦普及到生活中的各個小家 電,IEEE 定義嵌入式系統是「用於控制、監視或者輔助操作的機器、設備或裝置」 , 其特性為通常執行特定功能、內含嵌入式微處理器(CPU)、嚴格的時序和穩定性要 求和全自動操作循環。其延伸應用如 PDA、WebPAD、Set Top Box、Cell Phone 和 Web Phone 等各式各樣的消費性電子產品。 因此,我們採用時下最熱門的嵌入式裝置當作平台,利用其具有普及性、可 攜性和便利性等特性,移植車道偏移雙警示機制演算法,來實現一部可用於輔助 駕駛安全的嵌入式裝置。根據此一目標,我們需要研究及發展一套可依賴的車道 偏移雙警示機制演算法和適用於嵌入式環境的執行系統,考量系統設計的簡單性 與設備價格,故本文採用電腦視覺中單眼視覺的方式來做為此次實驗系統的影像 輸入來源,單眼視覺與雙眼視覺不同在於採用單一攝影機與兩部(或更多)攝影機來 偵測,而本系統僅需一部攝影機來擷取影像,減少設備裝置成本。 本文採用的嵌入式系統環境,其作業系統為 Windows CE 5.0 和 CPU 520MHz 當作系統開發的環境,使用單一攝影機擷取影像,有別於其他額外增加硬體的方 式,輔助安全駕駛,提供駕駛者可靠的行車資訊和用路環境。. 2.

(14) 1.2 相關工作 駕駛輔助系統(Driver-Assistance System, DAS)的相關研究相當多,如擷取車子 前方資訊來研判行車狀況的研究有 Vivek Agarwal 等[1],利用超音波當感測器,其 目的為提供一成本較低的駕駛輔助系統。Massimo Bertozzi 等[2],利用攝影機加上 雷射雷達,擷取前方環境資訊完成智慧型行車。Genya Ogawa 等[3],結合行人偵 測與車體偵測來克服複雜的環境條件。Tang-Hsien Chang 等[4],結合車道偏移警 示與近端防碰撞警示達到行車安全目的。Nicolas Hautière 等[5],利用攝影機擷取 影像,在可視範圍內,利用影像中障礙物或車道線與路面的不同對比強度來偵測 前方資訊。更甚者,Tarak Gandhi 等[6]利用多個攝影鏡頭擷取車子週遭環境,偵 測四面八方的行車資訊。或是將感測器放於車中,蒐集分析駕駛者相關行為研判 行車情形的研究有 Joel C. McCall 等[7],將攝影機放於車內,研判駕駛者的行為及 情況,結合外部感測器來輔助煞車保護駕駛安全。Erik Murphy-Chutorian 等[8], 透過臉部偵測與頭部轉向判斷駕駛者意識是否正常。Luis M. Bergasa 等[9],則是 眼睛偵測及臉部偵測警戒駕駛者。Mohan Manubhai Trivedi 等[10],利用多部感測 器同時偵測車內駕駛者頭部擺動情形,結合外部雷達、攝影機、GPS 情形,輔助 行車駕駛。以及利用全球定位系統(Global Positioning System, GPS)高度準確定位, 依照車子位置來判斷行車狀況的研究有 Jin Wang 等[11]、Rafael Toledo-Moreo 等 [12],利用車道線層級的數位地圖來確保車子位於預定的車道線中。Thanh-Son Dao 等[13]更結合多部車子資訊來提高車子定位的準確性。前述的幾種研究方式皆需透 過外部裝置或是成本較高的方式來達到行車安全的目的,若是能在提供一可行的 行車安全方式下,降低裝置的使用成本,則會提高使用者的使用興趣,讓裝置更 為普及。 此外,考量嵌入式系統在各領域當中應用範圍相當廣泛,如 Yoo Rhee Oh 等 [14],透過可攜式語音辨識的方式,利用嵌入式裝置來獲得所需的推薦服務資訊, 並以裝置的螢幕以影像方式呈現。Ying Zhang 和 Hannan Xiao[15]則是透過藍芽感 測器來完成遠端居家照護,透過藍芽裝置擷取病患的心跳、血壓或體溫等生理數 據與伺服器連接資訊後可遠端觀測居家病患的情形。還有就是電子鼻的應用, Ahmet Özmen 和 Ercan Do˜gan[16]透過可攜式感測器的設置,判斷感測器所接觸到 3.

(15) 空氣中分子的不同,經設備分析後來找出現在空氣中是何種味道。以及行車安全 中,Javier Díaz Alonso 等[17]利用車上攝影機的影像來判斷鄰近車道的車子是否靠 的太近,導致可能會發生碰撞的情形,經系統判斷後來決定是否發出警示聲提醒 駕駛。 而透過嵌入式作業系統 Windows CE 進行開發的研究則有 Zhifeng Pang 等 [18],將 Windows CE 中開發應用程式的過程進行整理,利用影像處理方式當作範 例進行研究。而 Dong Yibing 和 Wang Lang[19]則是研究在 Windows CE 底下感測 器資料獲取的架構,研究該架構如何於地理資訊系統(GIS)或全球衛星定位系統 (GPS)中獲得發揮。以及 Kaihua Xu 等[20]研究在 Windows CE 有限的環境下,如何 讓圖片能夠完美的被呈現,類似現今市面上的數位相框產品。故本論文希望提供 一使用方便,普及性高,裝置成本低的方式,來完成行車安全的目的。 而本篇論文採用的演算法,是利用改 良的尖峰尋找演算法 (peak-finding algorithm)。其中在改良部份,包括利用一維高斯濾波器(1-dimension Gaussian filter) 減少大部分的雜訊,並加入全域邊緣偵測器(global edge detector),移除無用的影像 背景資訊,而該演算法原始來源可由[28] (Ahmad et al’s algorithm)得知。 在車道偏移警示的部份,有的研究透過多個感測器偵測眼睛注視方向及頭部 轉動方向判斷是否處於車道偏移情形[21, 22, 23, 24]。有的研究則是利用電腦視覺 加上全球定位系統(GPS)來提高車道偏移警示的正確性[25, 26, 27]。還有其他研究 是 利 用 角 度 基 礎 車 道 偏 移 警 示 演 算 法 (angle based lane departure warning algorithm)[29, 30, 31]。然而,以角度為基礎的車道偏移警示演算法,一般情況下對 於非常明顯的角度變化會引起太多的錯誤。大部分的 LDWS 只採用一種警示機 制,而當車輛沿著車道的一邊行駛但沒有偏移時,則可能造成錯誤的警示。我們 相信太多錯誤警示可能造成駕駛的不安,而沒有適時的警示則會帶來嚴重的危險。 車道線偵測的相關研究相當多,更是本系統一重要環節,需有良好的車道線 偵測率,其後續的車道偏移警示機制才能有較好的效果,有許多有效的基於影像 視覺的車道線偵測演算法被提出,如 J. C. McCall 等[32]所整理,還有利用影像顏 色的研究[33, 34, 35],也有利用機率學習的方式來進行研究[36, 37, 38],或是利用 機器學習的研究[39],但是這些研究較為複雜且都需花費較多時間來找出車道線, 故參考[40]中所提方式,採用一較簡單且快速的演算法來完成車道線偵測,如本文 第 3.3 節所示。雙警示機制的設計[41, 42, 43, 44]是本系統另一重要分析,我們採用 4.

(16) 雙機制警示演算法避免錯誤警示。第一種警示機制專注於車道邊界截距(lane boundary intercepts)的位置,可直接由影像取得,而不需複雜計算,警示訊號只會 在車道邊界截距非常接近中心影像時觸發,也就是當車輛在兩個車道之間。為了 避免車輛稍微靠近車道的一邊時所產生的錯誤警示,因此另提出第二種基於車道 截距改變(lane intercept changing rates)率而建立的警示機制。. 1.3 問題挑戰 在嵌入式系統平台上移植程式會遭遇到許多個人電腦上沒有的問題,除了硬 體上的限制外,軟體部分也需要頗多考量。以下整理出此次移植至嵌入式平台時 所需考量的困難處。 (1) 作業系統支援有限 嵌入式作業系統不同於一般作業系統,對於各應用函式庫不盡完全支援,甚 至是不支援,若是在開發過程中呼叫其他外部函式庫時,就必須考量此呼叫是否 會佔用系統太多資源而引起系統不正常回應。 (2) 外接設備多變 系統的輸入輸出設備以及被控設備千變萬化,其種類和複雜性超過一般作業 系統的外接設備,對於所採用的外接設備需針對平台開發相對應的驅動程式,以 達成所需功能,增加開發時程。 (3) 佔用系統資源要少 嵌入式系統本身資源有限。CPU 運算速度不快、儲存空間不大,不可能允許 作業系統佔據一大部分的資源。 (4) 對作業系統可靠性要求高 在關鍵領域運用的嵌入式作業系統,不允許發生任何影響系統可靠性的故 障,重新啟動系統就可能意味著重大事故,造成使用者不便。. 1.4 系統架構 本系統採用單一攝影機鏡頭置於車上後照鏡下方的中央位置,利用其來即時 擷取前方地面影像,輸入至嵌入式系統平台運算,找出前方車道線位置,進而完 5.

(17) 成車道偏移警示的判定。 系統可分為三部份,第一部份為輸入影像擷取,第二部份為車道偏移演算法 運算,第三部份為警示結果輸出,如圖 1.4、1.5 所示。. 警示結果影像輸出 輸入影像擷取. 警示結果聲音輸出. 車道偏移演算法運算. 圖1.4、車道偏移警示系統架構. 圖1.5、車道偏移警示系統流程 在輸入影像擷取方面,由於嵌入式平台掛載外部裝置時,與個人電腦相同, 皆需先掛載驅動程式,但是與個人電腦不同的是,嵌入式平台其軟體支援方面並 不如個人電腦來得充裕,許多特定的軟體函式皆需依平台的不同而有不同的撰寫 與掛載方式,其原因在於嵌入式平台是一專為某特定功能而設計的裝置,其具有 強烈的客製化特性,不如個人電腦般的,同一部裝置可做各種不同的運用,但也 因為如此,所以其體積大小也就可以達到可攜式的便利性,故當攝影機擷取影像. 6.

(18) 輸入時,考量到可在各種不同嵌入式平台執行的可移植性,故在設計系統程式時, 是採取以功能為導向,而不以裝置為導向,即不針對某特定平台的裝置來進行撰 寫,而是以欲達到的功能進行撰寫,只要能在嵌入式平台上開啟本系統,皆可執 行本系統的功能。本系統可針對各種不同嵌入式平台的輸入影像進行畫面擷取並 轉換成可運算的檔案格式。 在車道演算法運算方面,將輸入畫面經灰階平滑處理,減少影像資料量,接 著利用車道的亮度、窄度和區域性的特徵,將車道線找出並標示,接著進行空間 與時間偏移警示演算法判定輸入影像是否偏移車道線。 最後將警示判定結果以影像及聲音方式輸出,提醒使用者。經上述系統程序 後,可讓駕駛者在行進間透過嵌入式系統的裝置,如 PDA 或智慧型手機等,來達 到車道線偵測的效果,提供駕駛者道路的相關安全資訊。. 1.5 章節組織 本論文的組織架構如下 第二章主要為嵌入式系統環境介紹,講述開發嵌入式系統運用的相關背景知 識和開發工具及流程。介紹本系統所採用的嵌入式環境軟硬體,分析採用該軟硬 體的原因與理由是否滿足系統所需。 第三章主要介紹當影像輸入進來時,如何透過本身既有函式來將影像畫面擷 取出來,並在擷取出來後轉換為程式可利用的檔案格式(BMP 檔)。此外還介紹車 道偵測演算法的執行步驟,首先將輸入進來的彩色影像資料轉為灰階處理,接著 進行 Gaussian 平滑處理,將雜訊濾除後,再利用車道線特性來找出畫面中的車道 線,接著利用時間與空間機制演算法判斷是否偏離車道線來決定是否發出警示提 醒駕駛者。 第四章主要介紹嵌入式系統移植時,可針對嵌入式系統資源嚴苛的環境進行 的各種最佳化策略,如程式撰寫技巧或程式可改善的空間。 第五章主要針對車道偏移警示系統進行分析,找出系統各步驟缺點,針對該 缺點來採取對應的最佳化策略,以利系統執行效果近乎個人電腦 第六章為嵌入式系統環境的相關設定,透過此步驟可有效規畫所需元件的加 載與捨棄避免無謂的資源浪費,同時也可讓系統執行更有效率。 7.

(19) 第七章為實驗結果與分析,分析經前述系統流程最佳化處理後,獲得的成效 以及探討在嵌入式平台上與個人電腦上車道偏移警示機制演算法執行的差異性。 第八章主要為本論文的結論,並討論可以再加強或改進的地方。. 8.

(20) 第二章 嵌入式系統環境. 2.1 嵌入式系統介紹 何謂嵌入式系統?廣義來說,任何一種可程式化的電腦裝置,但卻不是用在 一般用途,就可以算是嵌入式電腦系統。狹義來說,則是以應用為中心,以計算 機為基礎,並且軟硬體可修改,適用於應用系統對功能、可靠性、成本、體積、 功耗有嚴格要求的專用計算機系統。 根據英國電機工程師協會所做的定義,【嵌入式系統為控制、監視或輔助設 備、機器或甚至工廠運作的裝置】,它具備了下列四項特性: 1.. 用來執行特定功能. 2.. 以微電腦與周邊構成核心. 3.. 需要嚴格的時序與穩定度. 4.. 全自動操作循環. 由上述可知,嵌入式系統是電腦軟體與硬體的綜合體,亦可涵蓋機械或其他 的附屬裝置。整個綜合體的設計目的是在於滿足某種特定功能,並用在各類實驗 儀器、辦公設備、交通運輸設備、電信設備、製造設備、建築設備、醫療設備、 航太設備及個人電腦等設備之上。 更進一步舉例來說,到目前為止,嵌入式的應用幾乎已經深入到各個領域: 工業控制領域,無線通信領域,網路應用,消費性電子產品等。MP3 播放器、PDA、 智慧型手機、DVD 播放器、STB、ATM 提款機、車載 GPS、數位式家庭,甚至是 探測火星的機器人都是屬於嵌入式產品,可見嵌入式系統覆蓋範圍之廣,與人類 生活結合之深。. 2.1.1 嵌入式系統需求 有別於一般的桌上型電腦系統,在此列出幾項嵌入式系統共同的需求特徵。 (1) 記憶體(Memory)大小: 一 般 用 於 嵌 入 式 系 統 的 記 憶 體 為 ROM 、 RAM 或 快 閃 記 憶 體 (Flash 9.

(21) Memory)。記憶體主要是用來存放作業系統、資料、應用程式,所以要依照需求來 精簡記憶體的使用。 (2) 運算速度的限制: 嵌入式系統只需滿足其單一且特定狀況的應用需求,所以其處理速度不需要 多快的運算速度。 (3) 硬體設計成本: 在設計嵌入式產品的過程之中,必然會有軟體與硬體的花費。如果能夠有效 的控管成本,對產品在市場上的競爭是極為有利。 (4) 電源管理: 在嵌入式系統中,電源管理扮演很重要的角色,因為目前開發越來越多的手 持嵌入式裝置,電源管理的效能好壞會直接影響系統的執行時間和系統消耗的功 率。 (5) 可靠度: 在嵌入式系統產品中,不論是生活中的消費性產品、以及工廠裡的工業電腦 控制,使用者都希望能減少系統執行產生的錯誤率,唯有穩定的系統產品才能廣 為被接受。. 2.1.2 嵌入式系統架構 嵌入式系統是不同於常見電腦的一種電腦系統,不以獨立設備的型態出現。 嵌入式系統的元件根據主體設備以及應用的需要,嵌入在主體設備內部,發揮著 運算、處理、儲存以及控制等等作用。從體系結構看,嵌入式系統主要由嵌入式 處理器、周邊硬體和嵌入式軟體組成。其中嵌入式處裡器通常是單晶片或微控制 器,一般是8位元或16位元,目前32位元正在佔據主流地位。週邊硬體主要包括儲 存元件,如ROM、RAM、快閃記憶體(Flash Memory)等,通信元件,如USB介面、 網路介面等,顯示元件,如VGA顯示卡、液晶顯示元件等,I/O介面,如RS232介 面、鍵盤等。不少嵌入式系統的周邊硬體中還提供類比信號與數位信號之間的轉 換元件。嵌入式軟體包括支援硬體的驅動軟體、作業系統、支援軟體以及應用中 介軟體,如通訊協定、圖形介面、資料庫系統和瀏覽器等。我們可以由表2.1和表 2.2來了解比對出嵌入式系統與常見電腦系統的差異。 10.

(22) 表2.1、嵌入式系統與PC硬體平台比較 設備名稱. 嵌入式系統. PC. 嵌入式處理器(ARM、MIPS) CPU(INTEL、AMD). CPU 記憶體. SDRAM. SDRAM或DDR. 儲存設備. FLASH. 硬碟. 輸入設備. 按鍵、觸控螢幕. 滑鼠、鍵盤. 輸出設備. LCD. 顯示器. 聲音設備. 音效晶片. 音效卡. 串列介面. RS232. 主機板提供. 其他設備. USB. 主機板提供或外接卡. 表2.2、嵌入式系統與PC軟體平台比較 嵌入式系統 開機程式. 作業系統. PC. Bootloader引導,對不同硬體平台 進行移植 WinCE、VxWork、Linux…,需移 植 每個設備驅動都必須針對硬體平. 驅動程式 台進行重新開發或移植,一般不能 直接下載使用. 主機板BIOS引導,無須修改. Windows、Linux等,不需要移植. 作業系統含有大多數驅動程式,或 從網路上下載直接使用. 開發環境. 藉由PC進行交叉編譯. 在本機就可以開發測試. 模擬器. 需要. 不需要. 11.

(23) 2.1.3 嵌入式作業系統 市面上的嵌入式作業系統大約可分為兩種,即時作業系統與非即時作業系 統。對於時間要求非常嚴格的系統,可稱之為即時作業系統,而即時作業系統又 可再分為硬即時與軟即時。 ‹. 硬即時: 系統有一個強制的、不可改變的時間限制。他不允許任何超出實現的錯 誤,逾時錯誤會帶來損害甚至導致系統失敗,或者導致系統不能實現預 期的目標。. ‹. 軟即時: 系統的時間限制是有靈活性的。它可以容忍偶然的逾時錯誤,失敗造成 的後果並不嚴重,通常是輕微的降低了系統的流量。本次所採用的 Windows CE 即是屬於此系統。. 2.2 嵌入式作業系統: Windows CE 2.2.1 Windows CE 簡介 Windows CE 是微軟公司的產品,但不是縮小版的 Windows 版本。它是從整體 上為有限資源的平台設計的多執行緒、完整優先權、多任務的作業系統。Windows CE 採用模組化設計,並允許它對掌上型電腦到專用的工控電子設備進行定製,是 一個開放的、可裁減的、32 位元的即時嵌入式視窗作業系統。和其他桌面版視窗 作業系統(Windows98/2000/XP)相比,它具有可靠性好、即時性高、核心體積小的 特點,所以廣泛用於各種嵌入式智慧設備的開發,被廣泛應用於工業控制、資訊 家電、移動通訊、汽車電子、個人電子消費品等各種領域,是當今應用最多、增 長最快的嵌入式作業系統。. 2.2.2 Windows CE 5.0 Windows CE 5.0 因為豐富的功能、親切的介面和穩定的性能,故被本論文選 12.

(24) 為當作嵌入式作業系統,不僅如此,其還具備了以下特性 1.. 模組化和小記憶體佔用 被設計成為一種高度模組化的作業系統,以適應不同類型的智慧設備對於作. 業系統映射大小的不同要求,系統設計者可以根據設備的性質只選擇哪些必要的 模組或模組中的元件包含進作業系統映射。 2.. 可靠性 具有比以往作業系統都可靠的穩定性,可有效地保護用戶應用的資料。. 3.. 多 CPU 支援和豐富的驅動程式支援。 提供了豐富的 BSP 和驅動程式支援,為每種不同類型得硬體設備提供了範例. 驅動程式原始程式碼,便於用戶直接應用這些驅動程式或快速為自己的硬體設備 開發驅動程式。 4.. 即時多工處理 具有強大的即時多工處理能力,使它可用於應付許多時間關鍵的任務。. 5.. 多種無線與有線支援 提供了豐富而靈活的無線通訊支援和有線網路連接支援。. 6.. 多媒體支援 多媒體技術特徵為 CE 設備提供了多媒體功能,包括對播放聲音和視訊檔或透. 過網路連接的資料所使用的各種協定和資料流格式的支援。 7.. 多語言支援 使用 Unicode 字元編碼,並被本地化為多種語言,特別是用戶介面和輸入法皆. 已支援中文系統。 8.. 強大的開發工具支援 Windows CE 為在最新的硬體上快速創見豐富的應用程式提供了兩組端對端. 的開發工具集,包括作業系統開發工具集 Platform Builder 和應用程式開發工具集 Microsoft Embedded Visual C++或 Visual Stdio。 以上種種特性都有助於在開發嵌入式系統相關程式時,能夠更快或是更有效 率地完成各種應用,雖說仍會遭遇到許多問題,不過該作業系統已經符合車道偏 移警示系統所需的作業環境。 此外,在進行研究開發時,也得了解 Windows CE 5.0 的系統架構,如圖 2.1 所示,Windows CE 被設計成為一種分層結構,從底層向上分別為硬體層、OEM 13.

(25) 層、作業系統層和應用層。每一層分別由不同的模組組成,每個模組又由不同的 組件構成。這種層次性的結構試圖儘量將硬體和軟體、作業系統與應用程式隔離 開,以便於實現系統的移植,便於進行硬體、驅動程式、作業系統和應用程式等 開發的人員分工合作、並行開發。 以本論文為例,雖說主要開發是位於應用層,但是在開發過程中也得了解作 業系統層的架構,以及如何透過韌體層來啟動硬體層的周邊設備,所以在進行實 驗測試時,不僅得完成開發程式的目的,同時也得注意到不影響背後作業系統層 或韌體層的運作。. 圖2.1、Windows CE架構. 2.2.3 Windows CE 的開發工具 Platform Builder 是 Windows CE 作業系統開發工具,它除了整合了一個完全的 IDE 介面,使平台使用者可以完全在 IDE 中快速創建、除錯和部署 Windows CE 作業系統。Platform Builder 整合的設備模擬器使平台設計者可以完全脫離硬體在 開發機上創建 CE 設備原型。 Microsoft Embedded Visual C++是專門用來開發 Windows CE 應用程式的開 發,它的整合 IDE 環境可以使用戶快速開發控制台、MFC、ATL、DLL 等多種 14.

(26) WindowsCE 應用程式,並可以不依賴於硬體在整合的模擬器上完成應用程式的開 發。整合了.NET Compact Framework 的 Microsoft Visual Stdio .NET 也可以開發基 於 Windows CE 的智慧設備應用程式,並使開發者在編譯語言上可以選擇 Microsoft Visual BASIC 或 Visual C#,Microsoft Visual Stdio .NET 也整合了 Windows CE 模擬 器,用於脫離硬體開發、除錯和部署智慧設備元件。如圖 2.2 所示,可看到本次開 發環境所使用的 Platform Builder 5.0 和 Microsoft Embedded Visual C++ 4.2 操作環 境介面。. 圖2.2、Windows CE開發工具. 2.3 嵌入式系統平台. 系統硬體所採用的攝影機是羅技科技的快看高手專業版(Pro 5000 Image Sensor Module),如圖 2.3、表 2.1 所示,其視訊擷取可達 1280x1024 像素,但本實 驗將其縮放至 320x240 像素,用以符合顯示螢幕顯示輸出,其每秒可擷取 15 張畫 面,符合此次及時擷取功能。 表2.3、攝影機規格. 圖 2.3、系統攝影機 15.

(27) 嵌入式系統平台採用的是研揚科技的嵌入系統平台 GENE-1270 平台,如圖 2.4、表 2.2 所示,內容主要包含 CPU 時脈高達 520MHz、系統記憶體 128MB SDRAM、儲存記憶體 128MB Flash Disk、輸出解析可達 640x480 大小等,有效幫 助車道偏移警示系統開發並利用,系統核心採用 Microsoft Windows CE 5.0。 表2.4、系統硬體平台規格. 圖 2.4、系統硬體平台. 16.

(28) 第三章 嵌入式系統移植 3.1 警示系統移植. 車道偏移警示系統架構在嵌入式環境平台上,並以單一攝影機為影像輸入來 源,系統預設為320x240大小的彩色影像,經由演算法分析輸入影像獲得可用資 訊,如車道線在影像中位置、車道線斜率和截距,後經雙警示機制演算法判斷後 再將警示結果輸出,如聲音和影像,呈現給駕駛者,確認駕駛者是否有偏移車道, 如圖3.1所示。 車道偏移警示系統可規劃為三部份針對嵌入式環境進行開發,分別為輸入影 像擷取、演算法運算和執行結果輸出,如圖3.2所示。 XScale Processor. Memory Module. USB Module. System Bus. Speaker Module. LCD Module. Camera Module. 圖3.1、嵌入式車道偏移警示系統架構. 圖3.2、嵌入式車道偏移警示系統流程圖 輸入影像擷取中使用攝影機模組當作影像擷取裝置,每秒可擷取15張的彩色 影像,320x240大小供系統演算法運算,並透過USB模組傳輸。系統的擷取影像是 17.

(29) 利 用 USB 介 面 的 網 路 攝 影 機 , 所 使 用 的 驅 動 程 式 是 利 用 MSDN 中 社 區 計 畫 (Community Project)所提供的驅動程式,原程式撰寫者Douglas Boling。Windows CE 的裝置驅動程式一般而言都是以*.dll為主。本裝置也不例外,只要把編譯好的DLL 檔加入到系統中,再去製作系統的映像檔,最後再把系統映像檔燒錄至開發板上 的NOR Flash,就可以驅動USB網路攝影機。. 3.2 輸入影像擷取. 3.2.1 圖像擷取分析 針對於不同平台上的影像輸入而言,目前市面上的 Image Sensor 其輸入的影 像格式皆有不同,如 MJPEG、MPEG、AVI、DAT、WMV、ASF、VOB、DVR-MS、 3GP、MP4 等,各種不同類型的影像檔案型別,其所擷取到的畫面也會隨著軟硬 體的不同而有不同的檔案格式,如 BMP、JPG、JPEG、GIF、TIF、TIFF、PSD、 GIF 等。在一般的嵌入式系統平台上,如照像手機,數位相機等,大多是以 JPEG 檔案為儲存格式,其全名為“Joint Photographic Experts Group”技術團隊的縮寫,其 技術是將 RGB 格式的影像轉換成 YCrCB 格式,目的是為了減少檔案大小,一般 約可減少 1/3 ~ 2/3 左右。 而本實驗環境所採取的 Image Sensor 即是以 MJPEG 為資料串流格式,其全名 為“Motion JPEG”,顧名思義就是會動的 JPEG 圖像,許多 Video Streaming 的場 合,像是簡單的視訊會議軟體都會使用 MJPEG 來取代 MPEG,原因無它,因為 MJPEG 格式簡單,但缺點是不支援聲音,而其擷取的檔案格式即是 JPEG 檔案格 式。 因為 JPEG 檔案裡像素的位置,經編碼壓縮後,已非原先的 RGB 各像素的位 置,若需進行存取,則需經過解碼的程序才可取得,故為了達到可存取圖像裡的 各像素值位置的目的,所以必須在影像輸入時將 JPEG 檔案格式轉換為 BMP 檔案 格式。 JPEG 壓縮分四個步驟實現,如圖 3.3 所示:顔色模式轉換及採樣、DCT 變換、 量化和編碼,反之而言,如果要解壓縮的話,則需依上述步驟反向進行,但是在. 18.

(30) 嵌入式系統環境底下,由於軟硬體資源的關係,限制了其轉換上面的效率,對於 一欲即時偵測的系統而言是不具意義的,故本論文採取另一種做法,利用圖像顯 示的原理,將螢幕上所限定的有效區域內各點像素擷取起來,依照 BMP 標準格式, 將擷取到的像素值另存成 BMP 檔案,以方便偵測系統存取。 此方式有兩項優點,一項是其所使用的系統資源遠較於 JPEG 解碼來的少,僅 需與圖像大小的資源即可,而無需其他額外運算,另一項優點是,由於其擷取方 式是針對螢幕上有效區域內的各點像素值,而非針對輸入的圖像檔案格式進行擷 取,故可在不同的圖像格式底下另存成 BMP 檔案格式,方便系統移植到各嵌入式 環境。. 圖3.3、JPEG 編解碼過程. 3.2.2 圖像擷取轉換 跟個人電腦相比的話,在嵌入式系統底下,其開發過程中如欲額外增加其它 函式庫,像 OpenCV、FreeImage 等針對個人電腦環境開發的函式庫,其會遭遇到 下述困難: z. Embedded Visual C++並不完全支援所有的 C/C++函式,僅支援基本的 C/C++ 函式,如果其它函式庫裡有使用到其不支援的函式的話,則會增加編譯過程 19.

(31) 中的困難度。 z. Embedded Visual C++其編譯過程複雜,且使用特定格式,如需使用寬字元, 採用 Unicode 顯示,而 ASCII 則需額外處理等,此外,其可參考的資源不多, 常常是利用嘗試錯誤的方式來除錯,若是因為函式庫內部資料型態宣告導致 程式錯誤,會增加開發時程。. z. 嵌入式環境的資源受到嚴格限制,若是函式庫內宣告太多記憶體空間則會導 致嵌入式系統執行上的不穩定,甚至導致嵌入式系統當機狀況產生。. z. 無法確定在不同的嵌入式系統下皆支援所使用開發的函式庫。 根據上述等因素,為確保開發過程順利,故採用另一變通的方式,來確保不. 會因為其它函式庫導致錯誤的發生,如直接針對輸入的畫面進行擷取。其流程如 圖 3.4 所示,當螢幕上顯示輸入影像時,利用螢幕擷圖的方式將螢幕上資訊另存成 BMP 檔案格式,其中為確保其圖像大小為完整的影像大小,所以透過設定有效區 域的方法,來擷取顯示在螢幕上的影像,考量 SDRAM 的存取時間遠小於 Flash Disk 存取和系統需偵測大量的輸入影像,而偵測完的影像輸出後即不具意義的情形 下,所以將螢幕上的像素值擷取至宣告好的 SDRAM 空間中存放,每次處理完的 資料可暫存在 Flash Disk 中來減少 SDRAM 記憶體空間的使用。 此方式目的主要用來克服 JPEG 轉 BMP 的不便之處,在無需透過任何額外函 式庫狀況下,僅需關心螢幕上各點位置的像素值,大幅縮短 JPEG 解碼的時間,如 圖 3.4 所示。. Screen. Set Valid Rectangle. Write BMP File to Flash. Get Screen Information. Set BMPFileHeader. Set BMPInfo. 圖3.4、圖像擷取轉換流程 接著,流程主要可概分為三部份,如圖 3.5 所示. 20. Copy from Screen to Memory.

(32) Set Valid Rectangle. Get Screen Information Copy from Screen to Memory. Write BMP File to Flash. 圖3.5、圖像擷取轉換架構示意圖 (1) 設定有效區域 以螢幕解析度 640x480 環境下來說,為了演算法運算及輸出畫面容易辨識, 我們設定其影像輸入解析度為 320x240,針對其影像輸入大小,有效區域也設定為 320x240,而在有效區域下的各像素點位置也就是欲進行擷取的目標,如圖 3.6 所 示。. 圖3.6、有效區域設定 (2) 擷取螢幕資訊 進行擷取螢幕資訊前,如圖 3.7 所示,首先需針對所採用的函式或變數有初步 了解 HDC - 為一被 Graphics Device Interface (GDI)所呼叫使用的記憶體空間,其主 要存放設備內容中所描繪的點、直線或圖形,當描繪視窗介面時,常被用來存放 此介面的相關屬性設定。 HBITMAP - 為一資源標識值,針對所載入的圖片進行標識 如欲在視窗下顯 21.

(33) 示一圖片時,首先呼叫 CreateCompatibleDC 創建一視窗的空間 DC,接著利用函 式 SHLoadDIBitmap 將 圖 片 載 入 至 HBITMAP , 再 利 用 函 式 SelectObject 將 HBITMAP 載入至 DC 視窗空間中,最後呼叫函式 BitBlt 重繪視窗。 CreateDIBSection - 此 函 式 用 來 創 建 一 與 設 備 無 關 的 bitmap 檔 (device-independent bitmap DIB)供程式使用其函式結構為 HBITMAP CreateDIBSection( HDC hdc,. //視窗內容空間. const BITMAPINFO *pbmi, //指向 BITMAPINFO 指標 UINT iUsage,. //設定 BITMAPINFO 內的顏色. void *ppvBits,. //指標內容為存放的像素值. HANDLE hSection,. //現已不支援,設為 NULL. DWORD dwOffset. //現已不支援,設為 0. ); BitBlt - 此函式用來轉移從特定來源區域的像素值到特定的目標區域,其函式 結構包含 BOOL BitBlt( HDC hdcDest,. //目標端裝置內容. int nXDest,. //目標端區域內容起始 x 座標. int nYDest,. //目標端區域內容起始 y 座標. int nWidth,. //來源端及目標端區域寬度. int nHeight,. //來源端及目標端區域高度. HDC hdcSrc,. //來源端裝置內容. int nXSrc,. //來源端區域內容起始 x 座標. int nYSrc,. //來源端區域內容起始 x 座標. DWORD dwRop. //結合來源端與目標端的顏色為最終呈現顏色. );. 22.

(34) 圖3.7、擷取螢幕資訊存放至記憶體中 (3) 轉存檔案格式 過程中可將執行結果輸出暫存在 Flash Disk 中,原因在於可利用此暫存圖像供 本系統進一步運用,或繼續開發其他演算法,故在存放時需依 BMP 標準格式存放 為 24-bit RGB 彩色圖像,其大小為輸入影像的寬高,此為 320x240。 更進一步來說,如圖 3.6 所示拆解整體流程為 a. 將攝影機擷取的 MJPEG 影像載入到系統記憶體中(1),接著在透過函式呼叫顯 示在螢幕上(2)。 b. 透過擷取螢幕上的像素點,將各像素值資料轉為 RGB 值(3、4),並且將其另存 為 BMP 資料格式在 Flash Disk 下供演算法存取使用(5)。 c. 演算法運算擷取到的像素值(6),並將結果回存(7),再由函式將結果輸出顯示在 螢幕上(8) 在 a 中又分為 1. 從環境擷取 320x240 影像至 SDRAM 中 ( StartStreaming() ) 2. 從 SDRAM 中顯示 320x240 影像至螢幕 (ReadFrameThread() ) 在 b 中又分為 3. 從螢幕擷取 320x240 影像至 SDRAM 中 ( OnScreenSave() ) 4. 替擷取影像宣告 BMPHeader 及 BMPInfo ( BITMAPINFO、BITMAPFILEHEADER ) 5. 將宣告 BMP 檔頭及擷取好的像素(BMPData)寫入 Flash Disk 中 ( fwrite() ) 在 c 中又分為 6. CPU 從 Flash Disk 中讀取 BMP File,執行演算法 ( LaneDetection() ) 7. CPU 將運算結果寫回 Flash Disk ( fwrite() ) 8. 將結果顯示在螢幕上 ( Draw() ). 23.

(35) 圖3.8、轉存檔案格式流程. 3.3 空間與時間機制的車道偏移警示演算法. 本文的車道偏移警示演算法首先針對輸入的影像資料進行影像前處理步驟, 降低系統運算量及提高警示正確率,接著偵測出車道標線在影像中的特性,利用 亮度及窄度找出路面上亮度高且寬度大小不大於門檻值的區域進行偵測,篩選出 車道線後,最後再採取警示危險區域方式來判斷車道線位於警示區域中何處來決 定是否發出警示。從以上來看,演算法整體架構可規劃為影像前處理、車道線偵 測和車道偏移警示三步驟流程來執行,如圖 3.9 所示。. 圖3.9、車道偏移警示演算法流程圖. 24.

(36) 3.3.1 影像前處理 影像前處理中可分為彩色灰階轉換、高斯平滑處理和全域邊緣偵測。當系統 將輸入影像讀入時,其內容為 RGB 24-bit 彩色影像,此時需對於輸入影像進行灰 階值轉換,轉為 8-bit 的灰階影像,以減少資料量的運算。制定灰階公式很多,其 中最常用的莫過於將 R+B+G 三種像素直接相加除以 3 以取得各像素點的加總平均 值,即是此影像的灰階圖。本文中採取灰階轉換公式(1)來減少影像運算量。. Gray = Red × 0.299 + Green × 0.587 + Blue × 0.114. (1). 接著將經灰階函式轉換後的灰階影像,透過高斯濾波器(Gaussian filter)去除或 降低雜訊的影響。高斯濾波器主要是藉由模糊影像來移除黑白點的雜訊(black and white pepper noise),而使影像的亮度分布更為平滑。濾波器所使用之核心函數為一 平均值為 0,標準差為 σ 之一維高斯分布函數(Gaussian distribution),如式(2)所示:. G ( x) =. 1 e 2πσ. ⎛ − x2 ⎜ ⎜ 2⋅σ 2 ⎝. ⎞ ⎟ ⎟ ⎠. (2). 為了讓影像能與此核心分佈作迴旋運算(convolution),我們將核心數位化,取. x = −2,−1,0,1,2, σ = 1.0 帶入(2)後,將得到數位化之 G (x) 值,如(3)所示: 1 16. 1 4 6 4 1. (3). 其中 x = ±2,σ = 1.0 代入為. G ( x) =. 1 e 2π (1.0). ⎛ − ( ±2 )2 ⎞ ⎜ ⎟ ⎜ 2⋅(1.0 )2 ⎟ ⎝ ⎠. = 0.39894 ⋅ 0.13534 = 0.05399 ≈ 0.06250 =. 1 16. = 0.39894 ⋅ 0.60653 = 0.24197 ≈ 0.25000 =. 4 16. x = ±1,σ = 1.0 代入為. G ( x) =. 1 e 2π (1.0). ⎛ − ( ±1)2 ⎞ ⎜ ⎟ ⎜ 2⋅(1.0 )2 ⎟ ⎝ ⎠. x = 0,σ = 1.0 代入為. 25.

(37) G ( x) =. 1 e 2π (1.0). ⎛ − (0 )2 ⎞ ⎜ ⎟ ⎜ 2⋅(1.0 )2 ⎟ ⎝ ⎠. = 0.39894 ⋅1.00000 = 0.39894 ≈ 0.37500 =. 6 16. 利用與一維高斯遮罩迴旋運算的方式,即以一個像素點(pixel)為中心,中心的 像素 f ( x, y ) 與鄰近的四個像素點各自乘上一個對應位置的遮罩函式 mask (i ) ,將五 個運算結果加總運算得到 g ( x, y ) (4),最後再除以遮罩係數總和,所得到結果即為 該點 f ( x, y ) 的平滑運算值,如圖 3.10 所示。 2. g ( x, y ) =. ∑ f (x + i, y ) ⋅ mask (i ). i =−2. 2. ∑ mask (i ). i = −2. 圖3.10、one_dimension_smooth函式迴旋運算圖 Start Variables initialize Memory allocation. No. y <= Image height ?. Saving to BMP data structure. Yes. No. x <= Image width ?. Quit. Yes. Smooth Normalize. 圖3.11、one_dimension_smooth函式流程圖 26. (4).

(38) 圖 3.12(A)為高斯平滑處理前的情形,圖 3.12(B)為圖 3.12(A)中水平軸為 160 時的像素強度分布,圖 3.12 (C)為高斯平滑處理後,圖 3.12 (D) 為圖 3.12(C)中水 平軸為 160 時的像素強度分布,可看出在圖 3.12 (B)時,其像素強度的分布較為劇 烈,意即分佈的曲線變化較為銳利,如圖中紅線圈選處,但在圖 3.12 (D)時,圖 3.11. (B)的紅色圈選處曲線變化變得較為緩和,意即受雜訊點的干擾較為不明顯。. 圖3.12、(A)高斯平滑處理前 (B)圖(A)中,水平軸為160時的像素強度分布 (C) 高斯平滑處理後 (D)圖(C)中,水平軸為160時的像素強度分布 接著將在[8]的運算式修改成(5)與(6)。以(x,y)為中心的3×3遮罩,將其平 均強度定義為 μ x, y ,可用公式表示︰. μ x, y = (. 1 8. −. 1 64. Δ x =1 , Δ y =1. ). ∑ g ( x + Δx, y + Δy ). Δ x = − 1, Δ y = − 1. (5). g ( x, y ) 是像素 ( x, y ) 的影像強度。此外,標準差由數學式(5)來做近似。最後,我們. 經由在 σ x, y 的門檻操作取得二進位邊緣遮罩,如圖3.12所示。. σ x, y = (. 1 8. −. 1 64. Δx = −1,Δ y =1. ). ∑. Δx = −1,Δ y =1. g ( x + Δx, y + Δy ) − μ x , y. (6). 圖 3.13(A)為全域邊緣偵測前,圖 3.13(B)為全域邊緣偵測後,此處的門檻值設 為 6,並將水平軸 120 以上的影像進行消除,以減少輸入的資料量和降低非路面資 訊造成的干擾,提高車道線的偵測率。. 27.

(39) 圖3.13、(A)全域邊緣偵測前 (B) 全域邊緣偵測後. 3.3.2 車道線偵測 車道辨識主要分成三部分,車道特徵點擷取、車道線段偵測及車道接合與選 取。在進行特徵點擷取前,需分析車道在影像中的性質,以利擷取有效之車道特 徵點。根據[40]所述,車道特徵點具有三點性質,敘述如下: ‹. 亮度:道路標線的灰階值比路面還要來得高,而不論此標線為白色或黃色。. ‹. 窄度:道路標線是一道狹窄且明亮的細線。. ‹. 區域性:同一車道邊界上之標線,無論標線形式為虛線或實線,皆可視為是 一條相連的物件。. (1) 車道特徵點擷取 在影像前處理中,彩色影像經過灰階與二值化處理後會得到一黑白影像,接 著再利用車道線與路面的像素強度不同來篩選出可能為車道線的像素點。在峰點 尋找演算法中,定義山丘爬升過程的起始點 Ps (Start point)、山丘下降過程的終點. Pe (End point)、山丘頂點為爬升過程中第一個下降點 Pp (Peak point),若是有兩個相 鄰近的 Pp 點的話,則會在兩 Pp 點中間位置,取一新的 Pp 點來合併兩個相鄰近的 Pp 點,如圖 3.14 所示。. 28.

(40) Pp. Ps. Pe. 圖3.14、頂點搜尋演算法之說明 Start Call mean_operation Variables initialize. y <= Image height ?. No. Quit. Yes. No. x <= Image width ?. Yes. Find Vs & Ps Find Vp Find Ve & PP Find Vp. 圖3.15、find_peak_point函式流程圖. 29.

(41) 藉由這些參數,可以簡單地計算出有效山丘的寬度,若有山丘滿足寬度門檻 值的話(Width threshold),而門檻值是根據所觀察到之車道標線亮度及窄度之性質 所制定出來的,此處設為 25,則我們認定它是有效山丘,而有效山丘上之頂點(山 峰) Pp 點,即為車道辨識之特徵點。圖 3.16(B)則是圖 3.16(A)經過頂點搜尋演算法 處理之後的結果圖。. 圖3.16、(A)頂點搜尋演算法處理前 (B)頂點搜尋演算法處理後. (2) 車道線段偵測 在執行完頂點搜尋演算法後,為了偵測出地面上的路標,我們利用條件(7)來 將圖中相鄰的特徵點聚集起來,形成一群相鄰峰值點( Pp )群組,此處 Tv 設為 2,Tu 設為 3,如圖 3.17 所示。圖 3.18 為 find_edge_point 函式流程圖。圖 3.19(A)表示峰 值演算法後的結果,經車道線峰值點群組後,可得圖 3.19(B)。 Given two points, p(u p , v p ) and q(u q , v q ), If v p − v q < Tv and | u p − u q |< Tu , then group the two points to a Line - Segment, where Tv and Tu are predefined vertical and horizontal thresholds, respectively.. No Group. q (u q , vq ) p (u p , v p ). L( pL (u L , vL ), pU (uU , vU ), b0 , b1 ). Tu Tv. pU (uU , vU ). p L (u L , vL ). 圖3.17、群組條件及群組後線段示意圖 30. (7).

(42) 圖3.18、find_edge_point函式流程圖. 圖3.19、(A)車道線峰值點群組前 (B) 車道線峰值群組後 針對所蒐集的峰值點群組,可以下述資料結構(8)來描述它. L( pL (u L , vL ), pU (uU , vU ), b0 , b1 ). (8). 其中: p L 與 pU 分別為線段 L 於影像中最下方與最上方的點, (u, v) 為該點之 影像座標, b0 為 L 之截距, b1 為 L 之斜率。為避免雜訊的干擾,我們利用最小平方 法 (Least-Square Method) 來 計 算 出 b0 與 b1 , 其 公 式 如 (9) 所 示 : 31.

(43) Let uˆ = b0 + b1 vˆ be the approximated form of a Line - Segment, where b1 =. n. n. n. i =1. i =1 n. i =1. n∑ u i ⋅ vi − ∑ u i ∑ vi n. n ∑ vi − (∑ vi ) 2 i =1. 2. (9) , b0 = U − b1V. i =1. u i 與 vi 分別是特徵點 i 在 peak-point image 的水平與垂直座標, n 為 L 內特徵 點之個數, U 與 V 分別是 u i 與 vi 的平均值。利用(9)計算出 b0 與 b1 之後,經由斜截 式與端點 p L 、 pU 就可在影像上描繪出 line-segment,如圖 3.21 所示。圖 3.20 為. edge_connect 函式流程圖。圖 3.21(A)表示車道線峰值點群組,圖 3.21(B)為所有峰 值點群組經取得群組最上點與最下點後,再用最小平方法計算可代表該群組的斜 率與截距,來形成代表此群組的線段。 Start. No. i <= LSNum?. Quit. Yes. Variables initialize. No. j <= EPSNum?. Yes. Find new group. Check group. Can grouped ?. Yes. No. keep. Combine. Save to data structure. 圖3.20、edge_connect函式流程圖. 32.

(44) 圖3.21、(A)車道線峰值點形成線段前 (B) 車道線峰值點形成線段後. (3) 車道接合與選取 獲得線段影像圖之後,利用線段接合演算法(Line-Segment Combine),銜接斜 率相近的線段以形成一條車道邊界候選。若有兩條 line-segments 屬於同一條車道 邊界的話,則將影像下方 line-segment 延長,如此會與上方 line-segment 相交會, 如下圖 3.22 所示。這是運用標線具有區域性之特質,無論實線或虛線,都會在影 像中相交。而兩線段接合的定義如(10)所述,此處 Tc 設為 25。 Given two Line - Segments : Lower Line - Segment : L p ( p Lp (u Lp , v Lp ), p Up (u Up , vUp ), b 0 p , b1 p ) and Upper Line - Segment : L q ( p Lq (u Lq , v Lq ), p Uq (u Uq , vUq ), b 0 q , b1 q ), where vUp > v Lq. (10). If u Lq − b 0 p − b1 p ⋅ v Lq < Tc , then these two Line - Segments belong to the same lane boundary, where T c is the predifined threshold .. Lp ( pLp (u Lp , vLp ), pUp (uUp , vUp ), b0 p , b1 p ). Tc. Tc. Tc. Lq ( p Lq (u Lq , vLq ), pUq (uUq , vUq ), b0 q , b1q ). 圖3.22、線段接合示意圖 圖 3.23 為 line_segment_combine 函式流程圖。圖 3.24(A)為車道線段接合前, 圖 3.24(B)為透過線段接合演算法後,可將不符合條件的線段篩選,並將符合條件 的線段接合成一新線段,其中除了 Tc 門檻值外,還另外增加了線段斜率比例要為. 0.7~1.3 內的篩選條件,去除斜率相差太遠的線段。 33.

(45) 圖3.23、line_segment_combine函式流程圖. 圖3.24、(A)車道線段接合前 (B)車道線段接合後. 34.

(46) 3.3.3 偏移警示演算法. 車道偏移警示中,考慮到車道偏移情形分為車輛所在靠近車道線發生偏移和 快速的移動情形導致偏移發生,故可分為空間偏移警示和時間偏移警示來處理, 其作用在於當車道發生偏移時,可利用空間和時間兩種機制來判斷是否發出警 示。首先定義警示框寬高大小,寬為影像寬度,高為二分之一影像高度,在影像 中以車道消失點為基準設為警示框上方邊界的中間點,接著並在警示框中定義危 險區域,代表當車道與警示框相交於危險區域內時則發出警示,其寬為二分之一 影像寬度,高為二分之一影像高度,利用上述警示框和危險區域完成空間和時間 偏移警示,如圖 3.25 所示。. 圖3.25、警示區域及危險區域在影像中的大小及位置 此外,由於必須針對大量串流影像輸入並運算的關係,所以在執行演算法時 皆以影像中獲得的車道資訊為主進行運算,此方法可讓所使用的空間減至最小, 方便整體演算法執行,故車道資訊會以結構化方式進行儲存,包含車道線位置上 端點、車道線位置下端點、車道線斜率、車道線截距和車道線長度,約佔 28Bytes 大小,方便系統讀取運算。 觀察車道在影像中情形,可發現當車子偏移靠近車道時,影像中的車道線會 越來越接近車子正前方,圖 3.26 所示,故要判斷車子是否有發生偏移情形時,可 由車道在影像中位置判定,亦即利用空間偏移警示機制判定,再藉由車道在影像 中快速接近情形進一步完成時間偏移警示機制,如圖 3.29 所示。. 35.

(47) 空間偏移警示定義如下,當完成車道偵測時,會得到兩條分別為左右的車道 線,計算出左右車道線各自的斜率 am 、 a s 與截距 bm 、 bs 後,求出車道線和警示框 下邊界的交點與警示框底部角點的距離,分別以 d M 、 d S 代表,判斷車道線是否與 警示框下邊界相交於危險區域內,若是則發出警示,若不是則不發出警示,如圖. 3.26 所示。. dm. ds. dm. 圖3.26、(a) d M 和 d S 不在危險區域中不發出警示 (b) d M 在危險區域中發出警示 圖 3.27 表示出 spatial_warning 函式的相關參數,圖 3.27(A)表示車道未發生偏 移時 d M (Master_check_x) 或 d S (Slave_check_x) 皆落於 dangerous_region 外,即 <. dangerous_region_left 和> dangerous_region_right,但在圖 3.27(B)時,由於車道偏 移 發 生 , 故 可 由 圖 中 看 到 dangerous_region_left< d M (Master_check_x)<. dangerous_region_right , 因 此 觸 發 了 空 間 警 示 。 圖 3.28 則 表 示 實 際 執 行 spatial_warning 函式時在正常行駛無偏移和車道偏移發生時的狀況。. 圖3.27、(A)正常行駛無偏移,故主和副車道線與綠色警示框下邊界藍色交點 Master_check_x和 Slave_check_x不落於紅色危險區域中,而粉紅色線表示 d M 和 d S (B)車道偏移發生時,主車道線與 綠色警示框下邊界藍色交點Master_check_x落於紅色危險區域中,可視為 d M 大於危險區域左邊界 減警示框左邊界的距離,此處相減值為80. 36.

(48) 圖3.28、(A)正常無偏移情況下,spatial_warning函式執行前 (B)正常無偏移情況下,spatial_warning 函式執行後,車道線交點落於危險區域外(C)車道偏移情況下,spatial_warning函式執行前 (D)車 道偏移情況下,spatial_warning函式執行後,車道線交點落於危險區域內. dS. dM. dM. Warning Box. Warning Box. Dangerous Region. Dangerous Region. dM Warning Box. dM + dS. Dangerous Region. Time Period. Time Period. 圖 3.29、(a)正常無偏移情形 (b)空間機制觸發 (c)時間機制觸發 (d)時間區間內 d M + d S 急速變化 圖 3.29 表示車道偏移時的俯視圖,由圖中可看到黑色攝影機視野線、綠色警 示框線、紅色危險區域線、藍色車道與警示框截距 d M 、 d S 和粉紅色時間區間。. 37.

(49) 運算流程規劃為,首先計算警示框大小,找出危險警示區位置,接著計算車 道線在影像中位置,求出車道線與警示框的交點是否落於危險區內,若是,發出 警示聲,若不是,則不發出警示聲,如圖 3.30 所示。圖 3.29(b)即為空間偏移警示 機制觸發狀況。. 圖3.30、空間警示機制執行流程 時間偏移警示定義如下,統計空間偏移警示內的 d M 與 d S 的總和在單位時間 Δt 下前後兩個不同瞬間 v(t ) 的差值 δ ,是否有超出所設定之門檻值,舉例來說,在. 總執行畫面數 20 張下,若是前 10 張畫面的 d M 、 d S 和除以平均 10 張的執行時間 減掉後 10 張畫面的 d M 、 d S 和除以平均 10 張的執行時間的差值,結果若大於門檻 值則發出警示,若小於門檻值則不發出警示,如圖 3.31 所示。. d M (t ) + d S (t ). v(t ). d M (t ), max. v(t 2 ). δ. v(t1 ). dM dS Δt Δt. Δt. 2Δt. 圖3.31、(a) d M 、 d S 和的變化量 (b)判斷變化量 δ 是否大於門檻值. 38.

(50) 運算流程規劃為,先求出車道線與警示框截距 d M 、 d S ,並且紀錄一個時間區 間後,可為五張或十張車道資訊,接著將在此時間區間內的 d M 、 d S 加總後判斷其 總和是否大於所設立的門檻值 δ ,若是,發出警示聲,若不是,則不發出警示聲, 如圖 3.32 所示。圖 3.29(c)、(d)即為車輛在時間區間下急速偏移,導致時間偏移警 示機制觸發。. 圖3.32、時間警示機制執行流程 其中時間警示機制與空間警示機制關係為時間警示機制中的時間區間是根據 空間警示機制處理每張畫面所花費的時間來決定,以本系統為例,處理每張畫面 大約花費 300ms,即 fps 約為 3 表示為 Pt = 3,當空間警示機制中,車道由畫面中 間到畫面邊緣,其 d M 及 d S 和最大為 1/2 影像寬度 I W ,表示為 0 ≤ d m + d s ≤ 1 2 I W , 加上平均車道變換時需花費 3 ~ 5 秒時間,約佔 3 x 3 = 9 張畫面,故最靠近車道時 約需花費 4.5 張畫面,根據此數據,設定時間區間 Fn 為 2,以確保當車道開始發生 偏移時最快不超過 4 張畫面,可表示為 1 2 × Fn Pt ,整理成式(12),代入各數據, 可得門檻值 δ = 0.12 為, 10 3 表示 ms。 39.

(51) 1 IW δ =± 2 2 Fn × 103 Pt. (12). 3.3.4 警示結果輸出. 警示結果輸出可分為影像結果輸出和聲音結果輸出。影像結果輸出即將演算 法處理完的畫面資料描繪在螢幕上供使用者觀看。聲音結果輸出,採用系統本身 支援的 WAV 檔案格式,考量聲音檔大小會影響系統整體執行時間,故在播放聲音 檔同時,採用函式呼叫方式,不採取函式回傳方式來設計,不讓主程式等待該函 式回傳值,當聲音檔播放完畢時即自動停止,儘量避免拖延系統執行時間,如圖. 3.33 所示。 影像結果輸出. 影像結果輸出. 不回傳任何值. 不回傳任何值. 播放聲音檔 系統執行時間. 播放聲音檔. 系統執行時間. 系統執行時間. 影像結果輸出. 系統執行時間. 影像結果輸出 不回傳任何值. 不回傳任何值. 播放聲音檔. 播放聲音檔. 圖3.33、警示結果輸出. 40.

數據

圖 3.12(A)為高斯平滑處理前的情形,圖 3.12(B)為圖 3.12(A)中水平軸為 160 時的像素強度分布,圖 3.12 (C)為高斯平滑處理後,圖 3.12 (D) 為圖 3.12(C)中水 平軸為 160 時的像素強度分布,可看出在圖 3.12 (B)時,其像素強度的分布較為劇 烈,意即分佈的曲線變化較為銳利,如圖中紅線圈選處,但在圖 3.12 (D)時,圖 3.11  (B)的紅色圈選處曲線變化變得較為緩和,意即受雜訊點的干擾較為不明顯。  圖3.12、(A)高斯平滑處理前 (B)圖(A)中
圖 4.2 為引導變數消除的修改,由圖中可看到(a)與(b)式差別在於由靜態空間 陣列宣告改為動態空間指標宣告,目的在於節省記憶體使用的浪費,而(c)式更進 一步將(b)式中的乘法運算修改為加法運算節省 CPU 運算時間。  圖4.3、減少強度  圖 4.3 為減少強度的方式,由圖中可看到,當欲進行 2 倍數的乘法運算時,可 利用資料位移的方式來達成。快取最佳化為改善存取記憶體的方式或改用較快速 度的記憶體來存取。省電最佳化為使用較好的演算法,來取代比較複雜且耗電的 運算,減少記憶體存取的動作,將會降低耗電

參考文獻

相關文件

Soille, “Watershed in Digital Spaces: An Efficient Algorithm Based on Immersion Simulations,” IEEE Transactions on Pattern Analysis and Machine Intelligence,

F., “A neural network structure for vector quantizers”, IEEE International Sympoisum, Vol. et al., “Error surfaces for multi-layer perceptrons”, IEEE Transactions on

Muraoka, “A Real-time Beat Tracking System for Audio Signals,” in Proceedings of International Computer Music Conference, pp. Goto, “A Predominant-F0 Estimation Method for

[16] Goto, M., Muraoka, Y., “A real-time beat tracking system for audio signals,” In Proceedings of the International Computer Music Conference, Computer Music.. and Muraoka, Y.,

When? Where? What? A Real-Time System for Detecting and Tracking People.’’ Proc. International Conference on Face and Gesture Recognotion, April, pp. Pentland, “Pfinder:

D.Wilcox, “A hidden Markov model framework for video segmentation using audio and image features,” in Proceedings of the 1998 IEEE Internation Conference on Acoustics, Speech,

[16] Goto, M., “A Robust Predominant-F0 Estimation Method for Real-time Detection of Melody and Bass Lines in CD Recordings,” Proceedings of the 2000 IEEE International Conference

[7]Jerome M .Shapiro “Embedded Image Using Zerotree of Wavelet Coefficients”IEEE TRANSACTIONS ON SIGNAL PROCESSING, VOL,41,NO.12,DECEMBER 1993. [8 ]Amir Said Willam