題目 : 電腦視覺應用於轉向駕駛輔助系統 組員姓名及學號 : B995 李衷旭 組別 : C8 指導老師 : 林昌鴻教授 一 摘要本專題透過電腦視覺技術, 欲設計出一項行車輔助系統 : 當駕駛人企圖轉向時, 系統會判斷出轉向的安全性, 當有預期的危險時便警告駕駛人 本專題以 c 語言為基礎, 並透過 OpenCV library 來進行電腦視覺的影像處理, 並將研究分為幾個主要的部分 :() 行駛車道的偵測 ;() 辨識出車道上的物體 ( 汽機車 行人 腳踏車等 );(3) 計算物體的距離與移動速度 ;(4) 判斷是否會有危險發生 本專題的研究結果, 以日間含有車道邊線的一般道路為基準, 獲得良好效果 唯在夜間因視線昏暗, 無法應用本專題之技術, 因此需不同技術之整合, 有待後續研究與發展
二 簡介. 研究目的本專題希望透過電腦視覺的技術, 設計出一套在轉向時能幫助駕駛人辨別危險的系統 系統的主要功能為隨時監控車道後方, 若有來車出現則監控其速度與距離 當駕駛人在轉向時, 若系統預期會有危險發生則警告駕駛人. 研究方法本專題主要以電腦視覺之影像處理為主, 研究將分為以下三個部分 : () 行駛中車道的偵測 () 找出行駛中車道的來車 (3) 來車的距離與速度偵測 首先, 透過攝影機擷取數段不同實際道路行駛的影片作為樣本, 之後透過電腦視覺的研究與實驗, 找出最適於一般道路之車道偵測, 透過車道偵測定位出車道中的來車 之後進行攝影機校正與測距, 透過座標轉換取得影像中車輛距離的判斷, 並透過兩張影像與幀數的關係計算出車輛的速度 專題將分成以上部分完成整個系統的功能 3. 軟體開發環境 () 作業系統 :Windows 7 64bit () 編譯軟體 :Bloodshed Software Dev-C++ (3) 函式庫 :OpenCV. (4) 處理器核心 :AMD Phenom II X4 945 (5) 繪圖卡 :NVIDIA GeForce GTX6 3. 研究結果透過一系列的研究, 本專題利用裁切後的影像, 經過灰階處理 邊緣偵測 侵蝕運算 二值化等預先處理, 最後透過霍夫轉換的方式於影像中定位找出車道線 透過車道的定位, 再利用車輛與道路影像的象素差異特徵, 定位出車道中的來車 在基於日間含有車道線之一般道路中, 本專題之研究能取得良好的效果 三 理論方法. 行駛中車輛的後方影像樣本透過安置在機車後座的攝影機, 我們擷取了一段行駛中車輛的後方影像的影片 由於在初步階段, 目的是要找出在畫面中取得重要資訊的方式, 所以還不需要連續的影像 於是我們擷取了影片中的某一時間點之影像作為研究的樣本, 如圖 3..
圖 3.. 車輛後方影像樣本.影像裁切 從圖 3.. 中可以發現 影像中上四分之一的部分 因為距離較遠 收集 到太多不必要的資訊 且當車輛出現在上四分之一部分時 也處於安全距離 所以 為了減低誤判機率與降低計算量 我們將原影像中的上四分之一予以 刪除 如圖 3.. 從圖 3.. 中可以看出 裁切掉以後的影像 少了後面的 背景和距離較遠的景物 留下了車道的範圍和少數車道外的景物 圖 3.. 裁切後的樣本影像 3.行駛中車道的定位 裁切掉不必要的影像之後 要找出影像中屬於行駛中車道的區域 找出 行駛中的車道對於我們之後判斷後方來車有很大的幫助 以一般情形來說 後方來車將出現在駕駛人行駛的車道之中 若是成功的找出車道區域 不只 可以減低之後在定位後方來車時的運算量 也可以避免系統誤判如圖 3.. 中停在路旁停車格中的汽車為後方來車 4.車道線偵測 對於車道線的偵測 本專題主要是利用霍夫轉換(Hough transform)的原 理 找出影像中的直線 再對這些直線進行條件判斷 則可以定位出車道線
而在進行霍夫轉換偵測之前, 將對影像進行灰階 邊緣偵測 二值化與侵蝕的處理, 以免太多不必要的影像資訊影響偵測的結果 4. 灰階一般來說, 攝影機擷取到的影像都是以 (RGB) 三色的 4 位元模式儲存 在我們進行車道線偵測的過程中, 並不需要色彩資訊, 所以我們利用 (RGB) 與另一常用的影像色彩模式 (YIQ) 之間的轉換來完成影像的灰階處理 其中 Y 代表亮度 ;I 代表 In-phase, 色彩從橙色到青色,Q 代表 Quadrature-phase, 色彩從紫色到黃綠色 其中 (RGB) 與 (YIQ) 之間的轉換關係如式 (3.4.) (3.4.) 對於灰階處理, 我們只需要影像中亮度的部分, 於是我們利用式 (3.4.) 將 RGB 三色轉換為灰階圖像, 轉換後的結果如圖 3.4. (3.4.) 圖 3.4. 轉換後的灰階影像 4. 邊緣偵測從圖 3.4. 中可以看出, 經過灰階處理後的影像, 車道線與路面有顯著的亮度差異, 所以我們將透過偵測影像中的邊緣, 篩選可能為車道線的像素點 我們利用周圍鄰近的像素點來做判斷, 當像素值差異很大時, 該點即為邊緣點 利用一個 3 3 的遮罩對原始影像做捲積 (Convolution) 之後, 即可得到邊緣點資訊 假設 h 為我們的邊緣偵測遮罩 ;x 為我們的原始圖像, 則捲積的結果 y 以式 (3.4.3) 表示 (3.4.3)
本專題利用兩個 45 度邊緣偵測運算子如式 (3.4.4) 和式 (3.4.5), 分別偵測左右兩邊車道線的邊緣點 圖 3.4. 為 (3.4.4) 偵測結果 圖 3.4.3 為 (3.4.5) 的偵測結果 從結果中可以看出, 兩個遮罩分別偵測出影像中斜率分別為 - 與 + 且亮度高於右側像素點的邊緣點 (3.4.4) (3.4.5) 圖 3.4. 以式 (3.4.4) 進行邊緣偵測之結果 圖 3.4.3 以式 (3.4.5) 進行邊緣偵測之結果 4.3 二值化二值化是將灰階圖像轉換成黑白兩種像素值的圖像 而二值化的方法即是對灰階圖像設定一個門檻值, 大於門檻值的像素點則設為 55, 小於門檻值的點則設為零 而本專題中門檻值的設定, 是採用統計式門檻值的方式 統計式門檻值的核心概念是找出一個臨界值 k 使群集 (Class) 變異數 (Variance) 的加權值和最小化 設原影像大小為 M N 灰階值個數為 I=56, 則灰階值 i 的出現機率可表示為式 (3.4.6):
P( i) ni M N (3.4.6) 若以 k 為臨界值將影像灰階度分兩個群集 C 與 C, C 代表灰階度 ~k 的群 集, C 代表灰階度 k+~55 的群集, 則各群出現的機率為 W 和 W : W 個群集之期望值為 與 W Pr( C ) k i Pi 55 Pr( C) P i k i k i Pi i W 55 i k 利用 與 可以算出各群集之變異數為 k i P W i 與 ( i ) C 與 C 的變異數加權總合為 i 55 ( i ) i k w Pi W Pi W W w W W 找出可以令群集變異數的加權值總和最小的 k 值即為我們的門檻值 將圖 3.4. 進行二值化的結果如圖 3.4.4 所示
圖 3.4.4 二值化結果 4.4 侵蝕 (Erosion) 侵蝕是一種消除邊界點, 使邊界點向內收縮的過程, 可以用來消除影像內不必要的雜訊, 可以表示成式 (3.4.7) (3.4.7) 我們透過侵蝕運算消除一些影像中不需要的雜點, 圖 3.4.5 為將圖 3.4.4 經過 一次 侵蝕運算後的結果 圖 3.4.5 侵蝕運算結果 4.5 霍夫轉換 (Hough transform) 霍夫變換是圖像處理中識別幾何形狀的一種方法, 在圖像處理中有著廣泛應用 最簡單的霍夫變換是在圖像中識別直線 在平面直角坐標系 (x,y) 中, 一條直線可以用方程式 r xcos ysin 來表示 其中 r 代表直線到原點的距離 ; 則代表 r 與 x 軸的夾角, 如圖 3.4.6 所示 圖 3.4.6 霍夫轉換 ( r, ) 參數說明 假設 (x,y) 平面中有一點 A(,), 若將其代入直線方程式可以得到 r cos sin, 則該式可以在 ( r, ) 的平面中得到一條線方程式 同樣的, 若在 ( r, ) 平面中有一點 B( r, ), 則可在 (x,y) 平面中得到一條直線方程式 如 圖 3.4.7 所示
圖 3.4.7 霍夫轉換示意圖 整個霍夫轉換演算法便是將影像中的所有點皆轉換到( r, )參數空間 並 在( r, )參數空間中得到多條線方程式 之後對所有線方程式的交點進行門檻 值的檢測 若有足夠多的線通過該點即為有效的參數點 再將有效的參數點 轉換回影像平面 即可得到影像中的直線 圖 3.4.8 為將圖 3.4.5 進行霍夫轉 換直線偵測後將偵測出的直線以紅色繪製至圖 3.. 的結果 圖 3.4.8 霍夫轉換直線偵測結果 4.6.從直線中找出車道線
要進行車道線的篩選, 首先我們需先將上面分別進行正負 45 度邊緣偵 測的結果整合起來 圖 3.4.9 為圖 3.4.5 與進行過二值化與侵蝕運算的圖 3.4.3 進行 OR 運算的結果 : 圖 3.4.9 OR 運算的結果 接下來對圖像做霍夫轉換直線偵測 : 圖 3.4. 圖 3.4.9 的直線偵測結果 為了對直線偵測的結果進行篩選以得到車道線, 我們先以式 (3.4.8) 算出 直線的斜率 : m y x y x (3.4.8) 之後利用斜率過濾掉太直或太平的直線, 本專題使用的條件為 (m >.45)&&(m < ) (m<-.45)&&(m>-)) 結果如圖 3.4. 所示 :
圖 3.4. 斜率篩選的結果 之後我們將圖像分成左右兩邊, 以圖像中點為基礎向左右兩邊掃描, 第一條 出現的直線即為車道線 結果如圖 3.4. 所示 : 圖 3.4. 車道線偵測結果. 5. 車輛偵測 5. 車道定位找出車道線之後, 我們需先定位出車道, 並排除車道區域外的影像 我們利用兩條車道線的直線方程式, 計算出我們需要的影像範圍 假設左邊車 道線的直線方程式為 y m x b, 右邊車道線的直線方程式為 y m x b, 則判斷式為 : ( y m x b ) & &( y mx b ) (3.5.) 符合條件的象素點即為我們需要的車道區域, 其餘為不必要的區域, 圖 3.5. 為篩選後的結果
圖 3.5. 車道定位結果 5. 車輛定位 定位出車道之後 我們需定位出車道中的來車 圖 3.5. 為一張包含車 輛的道路影像 圖 3.5. 車輛影像 將圖 3.5. 經過前述處理之後 可以得到圖 3.5.3
圖 3.5.3 經過處理的車輛影像由圖 3.5.3 可以看出, 影像已非常簡單, 只包含車道路面區域與車輛影像 圖中可看出, 在日間的車道中, 路面區域有相近的象素值, 而車輛影像則有不同的象素值, 車輛的陰影也將切割出車輛的輪廓範圍 於是我們利用此點, 先將影像做門檻二值化, 將高於 65 像素值的點設為, 低於的點設為 55, 如圖 3.5.4 所示 : 圖 3.5.4 圖 3.5.3 的二值化結果圖中可以看出, 車輛影像被凸顯出來, 接下來我們利用連通法找出車輛輪廓並定位 5.3 物件連通二值化影像的物件連通主要是將影像分成多個子集合, 每個子集合都有其他相鄰的像素, 要判斷兩個像素是相鄰有兩種方法, 分別為四連通和八連通 以九宮格圖來表達, 八連通比四連通多考慮了四個角的像素, 如圖 3.5.5: 圖 3.5.5 連通法示意圖 以四連通為例, 若 N 與 N 沒有被標號, 則中心座標標示成一新的標號 若 N 與 N 其中一點有標號, 中心座標則標示成其標號 若 N 與 N 皆有標號, 則將中心座標標示成兩者中較小的標號, 並把大標號改成小標號 八連通法 則依此類推 依此方法, 能將二值化影像中的物件標示出來 將連通物件標示之後, 我們透過追蹤物件的輪廓來定位其在影像中的位 置 輪廓追蹤主要分成四個步驟,(a) 當點 A 第一次被遇到, 便開始追蹤輪 廓直至重回 A 點, 並將所有點標成同一標號 (b) 當遇到標記過的點時, 則 沿著掃描線尋找連續的點, 並將所有點標成同一標號 (c) 當內部輪廓點 B
被遇到, 則沿著連續點追蹤輪廓, 並將所有點標號 (d) 當遇到已標記的內 部輪廓點, 則沿著連續的點標記標號 如圖 3.5.6 所示 : 圖 3.5.6 輪廓追蹤示意圖 將圖 3.5.4 做輪廓追蹤如圖 3.5.7 所示 : 圖 3.5.7 輪廓追蹤結果 將輪廓與原影像結合, 則得到車輛的影像, 如圖 3.5.8:
圖 3.5.8 車輛偵測結果 5.4 車輛測距 5.4. 攝影機模型如圖 3.5.9 為一般攝影機之成像原理 : 圖 3.5.9 成像原理示意圖當物體透過攝影機成像於影像平面時, 物體在影像中的大小和距離的關係, 可以透過相似三角形表示成焦距 f 的函數, 即 : X x f Z 然而, 若將圖 3.5.9 稍微轉換一下便得到圖 3.5.: (3.5.) 圖 3.5. 轉換後的成像示意圖
則可將式 3.5. 的負號拿掉, 且若再考慮到數位影像的原點與投影原點不在 同一軸 (Optical axis) 上, 則式 3.5. 可改寫為 : c x 為一攝影機內部參數, 用來調整投影平面上可能的位移 5.4. 攝影機校正 (3.5.3) 為了取得攝影機的參數, 我們必須透過相機校正的方法來測量 相機校 正大約分為照相測量校正 (Photogrammetric Calibration) 與自我校正 (Self-Calibration) 兩種 照相測量校正需靠著一個已知且非常精確的三維資訊校正物體, 其校正 物體包含二個或三個互相垂直的平面, 藉由校正物體投影在影像平面上, 進 而算出相機之內部與外部參數 此方法雖然精確, 但需要昂貴設備且設定複 雜 使用自我校正可不需透過校正物體的三維資訊, 只需將相機在固定的場 景中移動, 因使用同一部相機且內部參數不會更動 ( 保持焦距不變 ), 所以可 以透過相機在固定的場景中移動所取得的相同對應點去計算出內部參數與 外部參數 本專題利用黑白棋盤來做自我校正, 其特徵點為棋盤之角點, 藉由多次 的移動鏡頭 ( 固定焦距 ) 並計算每次特徵點的座標與圖像上座標的關係近而 求出內部參數 5.4.3 測距 透過校正取得攝影機內部參數後, 透過固定攝影機與地面的高度與角度 再利用式 (3.5.3), 則可計算出路面影像中的每點所代表的距離, 再配合車 輛影像, 即可算出車輛與攝影機的距離 四 實驗結果 我們透過將攝影機設置於機車後方, 拍攝了一段行駛中影片, 做為系統 的實驗樣本 實驗結果如下 :. 車道偵測 x screen 下面圖 4.. 至 4..4 為影片連續處理車道偵測的影像擷圖 : f x X Z c x 五 時間進度表 第第第第第第第第第第第第 備
工作項目 月次 最外圍車道的偵測 3 4 5 6 7 8 9 註月月月月月月月月月月月月 辨識出車道上的物體 計算距離與速度 判斷出預期的危險 功能整合 完整功能實驗與改良 統整報告 預定進度累計百分比 8 7 5 33 4 5 58 67 75 83 9 預定進度目前進度預期進度六 參考資料. Gary Bradski and Adrian Kaehler, Learning OpenCV, 8. 張瑋珊, 動態視訊之車牌辨識系統, 民國 年 3. 李彥鋒, 以視覺為基礎之嵌入式車輛偵測系統, 民國 98 年 4. 劉家賢, 以立體視覺為基礎的前方車輛偵測與防撞警示系統, 民國 98 年 5. Wilhelm Burger and Mark James Burge, Digital Image Processing: An Algorithmic Introduction Using Java, 8 6. 范耿豪, 以霍夫轉換為基礎之智慧型快速車道線偵測, 民國 98 年
7. 陳韋任, 使用霍夫神經網路於車道線偵測之研究, 民國 年 8.Wikipedia, http://en.wikipedia.org/ 7. 詹凱鈞, 低成本棒球偵測三維軌跡重建系統, 民國 年