訊號燈的檢測與識別的作用
交通訊號燈的檢測與識別是無人駕駛系統必不可少的一部分,其識別精度直接關乎智慧駕駛的安全。自動駕駛車輛如果無法準確識別交通訊號燈,是不能上路行駛的。同時,訊號燈的檢測與識別作為ADAS中重要的一環,還可以輔助色覺障礙人群和疲勞司機進行安全駕駛。
訊號燈的檢測與識別還可以應用在一些特殊場景,例如:部分公交公司會要求駕駛員在透過路口時,車速要控制在30km/h以內,訊號燈的檢測與識別系統可以應用在路口限速中。
交通訊號燈
交通訊號燈是指揮交通執行的訊號燈,一般由紅燈、綠燈、黃燈組成。紅燈表示禁止通行,綠燈表示准許通行,黃燈表示警示。
國內現行的交通訊號燈都遵循國家標準《GB 14887-2003道路交通訊號燈》和《GB 14886-2016道路交通訊號燈設定與安裝規範》。交通訊號燈的尺寸、色調、飽和度、亮度等均需要滿足相應的範圍要求。
透過標準可知,交通訊號燈按發光單元透光面尺寸可分為:φ200mm、φ300mm、φ400mm。
交通訊號燈按光源可分為白熾燈、低壓滷鎢燈、發光二極體及其他符合相關標準的光源。
交通訊號燈按功能可分為:機動車訊號燈、非機動車訊號燈、人行橫道訊號燈、方向指示指示燈(箭頭訊號燈)、車道訊號燈、閃光警告訊號燈、道路與鐵路平面交叉道口訊號燈等。
交通訊號燈檢測原理
人類靠眼睛和大腦去完成訊號燈的檢測與識別,一些封閉園區、測試園區可以透過V2V、ZigBee等近場通訊的方式識別紅綠燈,公開道路上的交通訊號燈的檢測與識別則需要使用攝像機。
目前有用較強學習能力的卷積神經網路去進行交通訊號燈的識別,但這類方法往往需要大量的訓練樣本來避免過擬合的風險。傳統的影象處理方法按照原理可分為基於色彩特徵的識別、基於形狀特徵的識別和基於模板匹配的識別等多種方式。
基於色彩特徵的識別方法在背景環境相對簡單的情況下,能夠有效地檢測和識別出交通訊號燈。但在實際的道路場景中,採集的交通訊號燈影象具有複雜的背景,如存在車輛尾燈、行人、廣告牌、樹木、路牌等影響,且感興趣的訊號燈區域只佔很少的一部分,基於色彩特徵的識別方法很容易出現虛警現象。
基於形狀特徵的識別方法可以有效地減少基於色彩特徵識別出的虛警,但需要建立形狀特徵規則。針對不同樣式的交通訊號燈,需要建立不同的形狀特徵規則,這嚴重限制了演算法的靈活性和通用性。
基於模板匹配的識別方法同樣需要建立不同樣式的交通訊號燈模板或者建立多級的交通訊號燈模板來實現對不同樣式的交通訊號燈的識別。
單一的方法都不能很好地完成交通訊號燈的識別,目前的大多數方法都是在各種顏色空間中利用訊號燈顏色的先驗進行分割得到興趣區域,然後再透過訊號燈所特有的形狀特徵和角點特徵等進行進一步的判定。比如,Masako Omachi等人提出在RGB色彩空間分割交通訊號燈,使用HOUGH變換檢測分割出的訊號燈所在的圓形區域;徐成等提出在Lab色彩空間分割交通訊號燈,使用模板匹配的方法識別交通訊號燈的狀態;谷明琴等則在HSV色彩空間中使用顏色直方圖統計影象的H分量,確定交通訊號燈的型別。
訊號燈識別系統結構
訊號燈識別所採用的系統結構可分為:影象採集模組、影象預處理模組、識別模組、跟蹤模組,其系統結構圖如下圖所示。
1、影象採集模組,攝像機成像質量直接影響後續識別和跟蹤的效果,攝像機的焦距、曝光時間、增益、白平衡等引數的選擇對攝像機的成像效果和後續處理有重要影響。
一般來說,影象質量客觀評價會分成九個評測專案,曝光、清晰度、顏色、質感、噪音、防手抖、閃光燈、對焦和偽像,每一個評測專案往往還會分成好幾個評測小專案,如偽像就要測試銳化、畸變、暗角這些專案。透過測試這些專案,透過科學的計算,可以非常直觀地看到影象的效能的各個方面的表現有何不足。
2、影象預處理模組,包括彩色空間選擇和轉換、彩色空間各分量的統計分析、基於統計分析的彩色影象分割、噪聲去除、基於區域生長聚類的區域標記,透過影象預處理得到訊號燈的候選區域。
3、識別模組,包括離線訓練和線上識別兩部分。離線訓練是透過交通訊號燈的樣本和背景得到分類器,利用得到的分類器完成訊號燈的檢測,結合影象預處理得出的結果完成其識別功能。
4、跟蹤模組,透過識別模組得到的結果可以得到跟蹤目標,利用基於彩色的跟蹤演算法可以對目標進行跟蹤,有效提高目標識別的實時性和穩定性。
基於影象識別的訊號燈識別
1、彩色空間轉換
構成影象的最小單元是畫素(pixel),畫素值的值域一般在0到255(包括)之間,不同的畫素值代表了不同的顏色。
畫素值總共有256個整數,所以畫素值一般都是用unsigned char型別表示。0-255並不能對映到彩色,而只是對應黑色到白色之間的灰度值。白色為255,黑色為0,故黑白圖片也稱灰度影象。
要表示彩色畫素,我們就要用到初中物理中學到的紅綠藍(RGB)三原色,飽和的紅綠藍三種顏色疊加起來就是白色,透過改變三種顏色的配比,我們就可以表示其他的顏色了。灰度值的顏色空間在幾何上可以用一根直線表示,而RGB彩色空間在幾何上則對應了一個立方體。表示灰度值我們用一個維度,要表示彩色值,我們則需要3個維度,也就是3個影象通道。每個畫素值用3個數字表示,如(255,255,255)表示白色,(255,0,0)表示紅色,(255,255,0)表示黃色。
RGB是三通道的,灰度只有一個通道,若想透過RGB求灰度,最直接的想法是對於同一個RGB畫素值,我們把這三個通道值求一個平均值作為灰度值。
用公式表示一下就是:Gray = R /3 + G/ 3 + B /3 。
HSV(Hue, Saturation, Value)是根據顏色的直觀特性由A. R. Smith在1978年建立的一種顏色空間, 也稱六角錐體模型(Hexcone Model)。這個模型中顏色的引數分別是:色調(H),飽和度(S),明度(V)。
HSV空間可以由RGB空間演變過來的,RGB空間在幾何上是一個正方體,當你從正方體的一個頂點看向離它最遠的另一個頂點時,就會看到一個六角錐體,通常,我們會把頂上的這個六邊形近似成一個圓,就變成了一個圓錐。
H引數表示色彩資訊,即所處的光譜顏色的位置。該引數用一個角度量來表示,紅、綠、藍分別相隔120度。互補色分別相差180度。
純度S為一比例值,範圍從0到1,它表示成所選顏色的純度和該顏色最大的純度之間的比率。S=0時,只有灰度。
V表示色彩的明亮程度,範圍從0到1。有一點要注意:它和光強度之間並沒有直接的聯絡。
HSV空間對顏色的描述是使用者友好的,而RGB是硬體友好的。HSV空間在我日常學習中更多是作為顏色篩選的基礎,人眼能區分的不同顏色的範圍對應HSV的值都比較固定,下面是一個對照表:
我們要做紅綠燈識別,我的第一步是要把紅綠燈的區域摳出來,紅綠燈的顏色為紅、黃、綠,我們可以不管三七二十一先把紅、黃、綠色的東西都摳出來再做篩選,這時候就要用到HSV空間。所以訊號燈識別的第一步就是要把原始的RGB空間轉化為HSV空間。
max=max(R,G,B);
min=min(R,G,B);
V=max(R,G,B);
S=(max-min)/max;
if (R = max) H =(G-B)/(max-min)* 60;
if (G = max) H = 120+(B-R)/(max-min)* 60;
if (B = max) H = 240 +(R-G)/(max-min)* 60;
if (H < 0) H = H+ 360;
2、彩色分割
交通訊號燈的顏色要求需要滿足國家標準,訊號燈的色調、飽和度、亮度均需要滿足相應的範圍要求。因此,基於HSV空間的閾值分割法具有很好的實用性和實時性。透過在HSV彩色空間中設定閾值,並與影象畫素的HSV各個分量值進行比較,就能從影象背景中提取出訊號燈。
3、訊號燈區域判定與識別
由於彩色分割中,背景環境中會存在一些與訊號燈的色調、飽和度、亮度相似的點或區域,這一步我們需要在前一步驟的基礎上根據訊號燈的特有特徵過濾出真正的訊號燈區域。訊號燈的面積、形狀、長寬比等均需要滿足相應的國標要求,根據這一特性,可以進一步篩選,排除干擾。
訊號燈的面積:訊號燈的面積在國標中有明確要求,可根據實際情況進行設定,過濾面積過大或過小的區域。
訊號燈的形狀:形狀特徵是交通訊號燈重要而顯著的另一個特徵,儘管氣候、道路環境等會對採集的交通訊號燈產生不同程度的噪聲、褪色及形變,但是交通訊號燈的形狀和幾何尺寸不會發生太大的變化。對於圓形交通訊號燈使用圓形度檢測,過濾圓形度過低的區域,其中圓形度是指候選區域邊緣接近圓形的程度 。
訊號燈的黑色邊框:交通訊號燈在形狀上有個顯著的特徵,即它的燈板是一個黑色矩形框。根據交通訊號燈的設計規範,利用該特徵可以將交通訊號燈的範圍提取出來。
4、跟蹤最佳化
當訊號燈出現在當前視野中時,在接下來的一段時間內都會出現該訊號燈,並且幀與幀之間的訊號燈位置不會出現很大的偏移(主要取決於採集車和CCD)且呈現一定的運動方向,如下圖。那麼我們完全可以利用這種特性,在下一幀的檢測中取當前訊號燈位置處一定的視窗範圍,使用mean shift演算法在特徵空間中搜索所謂的模點(區域性極值點)找到訊號燈位置;甚至可以在該視窗檢測範圍內,使用顏色分割,根據顏色判定訊號燈的位置和顏色。
上述步驟是訊號燈識別的一種簡單方法,只適用於交通燈環境較為簡單的場景,對於複雜的行駛環境,需要進一步擴充套件訊號燈的檢測演算法,提高訊號燈檢測的實時性和準確性。