王懷濤,曹明偉,邢皎玉 Wang Huaitao,Cao Mingwei,Xing Jiaoyu
?
基于HSV顏色空間與邊緣特征的黃色車(chē)道線(xiàn)檢測(cè)
王懷濤,曹明偉,邢皎玉 Wang Huaitao,Cao Mingwei,Xing Jiaoyu
(合肥工業(yè)大學(xué)汽車(chē)與交通工程學(xué)院,安徽合肥 230009)
車(chē)道線(xiàn)檢測(cè)是實(shí)現(xiàn)汽車(chē)智能行駛的首要技術(shù),文中闡述了一種在城市復(fù)雜道路環(huán)境中直線(xiàn)部分黃色車(chē)道線(xiàn)的檢測(cè)方法。首先,利用黃色車(chē)道線(xiàn)在HSV顏色空間的顏色特征檢測(cè)出照片中的黃色像素。為此,首先采集不同光照強(qiáng)度條件下的黃色車(chē)道線(xiàn)像素作為樣本值,再以此樣本值為后驗(yàn)知識(shí)來(lái)檢測(cè)出目標(biāo)照片中黃色像素,但此時(shí)會(huì)保留有較多的干擾像素;其次,利用車(chē)道線(xiàn)邊緣的直線(xiàn)特征檢測(cè)出目標(biāo)照片中具有直線(xiàn)特征的像素。再次,將前2步得到的結(jié)果作與運(yùn)算,去除絕大部分干擾像素;最后,在得到的結(jié)果圖上運(yùn)用霍夫變換,迅速得到所要檢測(cè)的黃色車(chē)道線(xiàn)。
黃色車(chē)道線(xiàn);HSV顏色空間;邊緣特征;與運(yùn)算;霍夫變換
智能化是未來(lái)汽車(chē)產(chǎn)業(yè)發(fā)展的趨勢(shì),車(chē)道線(xiàn)作為智能汽車(chē)安全行駛重要參考標(biāo)線(xiàn),其快速準(zhǔn)確地檢測(cè)顯得尤為重要。
當(dāng)前車(chē)道線(xiàn)檢測(cè)算法主要有基于灰度圖的閾值分割法[1-2],基于Canny算子的車(chē)道線(xiàn)邊緣檢測(cè)算法[3],基于車(chē)道線(xiàn)顏色特征的閾值分割法[4]。前2種方法未能利用車(chē)道線(xiàn)顏色這一重要特征,用于檢測(cè)道路中的白色車(chē)道線(xiàn)時(shí)具有較好的效果,但檢測(cè)亮度較低的黃色車(chē)道線(xiàn)時(shí)效果很差;后一種方法雖然利用了車(chē)道線(xiàn)的顏色特征,但是根據(jù)車(chē)道線(xiàn)顏色進(jìn)行圖像分割的顏色閾值會(huì)隨著光照、車(chē)道線(xiàn)的新舊不同而變化,而且會(huì)識(shí)別出干擾像素。
文中提出一種新的車(chē)道線(xiàn)檢測(cè)方法,專(zhuān)用于黃色車(chē)道線(xiàn)檢測(cè)。先通過(guò)查找H-S(Hue-Saturation,色相-飽和度)二維表識(shí)別出具有黃色特征的像素,再在這些具有黃色特征的像素中識(shí)別出具有直線(xiàn)邊緣特征的像素,然后濾除同時(shí)具有黃色和直線(xiàn)邊緣特征的干擾像素,最后進(jìn)行霍夫變換即可檢測(cè)出黃色車(chē)道線(xiàn)。
采集樣本照片中黃色車(chē)道線(xiàn)的像素點(diǎn),根據(jù)這些像素點(diǎn)在HSV(Hue,Saturation,Value,色相、飽和度、亮度)空間的H、S值建立一個(gè)用來(lái)描述、存儲(chǔ)車(chē)道線(xiàn)黃色特征的數(shù)據(jù)庫(kù),即H-S二維表;通過(guò)將目標(biāo)照片中的像素值與此H-S二維表中的值作比較即可識(shí)別出目標(biāo)照片中的黃色像素點(diǎn)。此H-S二維表應(yīng)能夠隨著車(chē)道線(xiàn)識(shí)別程序的運(yùn)行而不斷更新。
1.1 建表方法
拍攝20張?jiān)诓煌庹障潞胁煌蓴_因素的包含黃色車(chē)道線(xiàn)的照片。拍攝點(diǎn)選在車(chē)道中間,模擬車(chē)載相機(jī)的拍攝角度。選取不同光照條件下、含有不同干擾的6張照片作為樣本照片如圖1(a)所示,剩下3張照片作為目標(biāo)照片。用圖像編輯工具提取6張樣本照片中的黃色車(chē)道線(xiàn),并將它們放到黃色車(chē)道線(xiàn)提取圖如圖1(b)所示,再統(tǒng)計(jì)黃色車(chē)道線(xiàn)提取圖中每一對(duì)(H,S)像素特征值所對(duì)應(yīng)的像素個(gè)數(shù),該像素個(gè)數(shù)縮放后的數(shù)值就是所要建立二維表中對(duì)應(yīng)(H,S)坐標(biāo)處的數(shù)值,這樣能建立所需要的初始H-S二維表。
在HSV空間中每個(gè)黃色車(chē)道線(xiàn)像素均對(duì)應(yīng)H、S、V 3個(gè)值,根據(jù)不同光照、不同亮度條件下的顏色恒常性原理,僅選取H、S 2個(gè)值來(lái)建立二維表格,弱化光照強(qiáng)度對(duì)檢測(cè)結(jié)果的不利影響。
1.2 建表過(guò)程
提取的黃色車(chē)道線(xiàn)如圖1所示。
用OpenCV中的cvtColor函數(shù)(函數(shù)的轉(zhuǎn)換格式參數(shù)選用CV_BGR2HSV_FULL,這樣轉(zhuǎn)換后的H、S值的范圍均在0~255[5],和像素亮度范圍一致)將圖1(b)轉(zhuǎn)換到HSV顏色空間后,用calcHist函數(shù)統(tǒng)計(jì)圖1(b)中每一對(duì)(H,S)值對(duì)應(yīng)的像素個(gè)數(shù);不統(tǒng)計(jì)黑色(即H=S=0)區(qū)域的像素,因?yàn)樗鼈儾皇屈S色車(chē)道線(xiàn)像素。然后用convertTo函數(shù)將像素個(gè)數(shù)值縮放到0~255范圍內(nèi)。以左上角為坐標(biāo)原點(diǎn),以飽和度S為水平軸,以色相H為豎直軸,以縮放后的數(shù)值作為對(duì)應(yīng)(H,S)坐標(biāo)處的數(shù)值,得到初始二維表(表中數(shù)據(jù)太多,不便直接顯示)。由于表中的數(shù)值被縮放到0~255范圍內(nèi),與灰度像素的灰度值范圍相同,所以可以將初始二維表看做是一張灰度圖片的mat格式矩陣,以圖片格式顯示出來(lái)的結(jié)果如圖2所示[6]。為了方便打印,圖中像素點(diǎn)的黑色程度代表該像素的灰度值,像素點(diǎn)越黑,灰度值越大;以下各圖的處理方式與圖2相同。
由圖2可知,灰度值非0的像素大部分分布在H為15~30、S為30~105范圍內(nèi)。其他范圍內(nèi)灰度值為0,說(shuō)明在這些范圍內(nèi)的每對(duì)(H,S)值在圖1(b)中對(duì)應(yīng)的像素個(gè)數(shù)為0(H=S=0的像素除外)。圖2中某像素越黑,說(shuō)明該像素對(duì)應(yīng)的(H,S)值在圖1(b)中對(duì)應(yīng)的像素個(gè)數(shù)越多,則該對(duì)(H,S)屬于黃色車(chē)道線(xiàn)特征的概率越大。
有了初始二維表,就可以將其用于后面的查表操作。之所以將其稱(chēng)作初始二維表是因?yàn)樵摫硎遣粩喔碌?。?dāng)用初始二維表檢測(cè)出黃色車(chē)道線(xiàn)后,用檢測(cè)出的黃色車(chē)道線(xiàn)替換掉圖1(b)中的車(chē)道線(xiàn),得到新的二維表;不斷地更新二維表可以使查表結(jié)果圖(圖4)中的干擾像素更少,使檢測(cè)過(guò)程更快速準(zhǔn)確。
選擇一張目標(biāo)照片如圖3所示,可看出照片中的干擾。
先用cvtColor函數(shù)將彩色目標(biāo)照片1(圖3)轉(zhuǎn)換到HSV空間,再用OpenCV中的lut函數(shù)對(duì)圖3中的每個(gè)像素按照(H,S)分量值在初始二維表(圖2)中進(jìn)行查表操作,查表后得到一張灰度圖,如圖4所示。
由圖4可知,運(yùn)用查表法,無(wú)論是在教學(xué)樓陰影中的黃色車(chē)道線(xiàn)還是在陽(yáng)光下的車(chē)道線(xiàn)都能被順利檢測(cè)出來(lái);查表法能濾除大部分非黃色干擾像素。但是對(duì)于顯示為黃色的干擾像素(人體外露的黃色胳膊和小腿皮膚、法國(guó)梧桐樹(shù)干下端表皮脫落露出的黃色內(nèi)皮、黃色樹(shù)葉、黃色落葉以及在陽(yáng)光下反射淡黃色光的柏油路面),查表法無(wú)法濾除;因此需要利用車(chē)道線(xiàn)的邊緣特征來(lái)濾除余下的干擾像素。
黃色車(chē)道線(xiàn)的邊緣像素連線(xiàn)是一條傾斜的直線(xiàn),這一特征是其他黃色干擾像素所不具備的,利用這一特征可以濾除這些黃色干擾像素。
各種斜率的道路右側(cè)車(chē)道線(xiàn)(道路左側(cè)車(chē)道線(xiàn)類(lèi)同)的模擬放大圖如圖5所示,即以未經(jīng)過(guò)消除鋸齒處理的直線(xiàn)放大后的邊緣模擬實(shí)際車(chē)道線(xiàn)的邊緣,達(dá)到清楚顯示車(chē)道線(xiàn)邊緣特征的目的。檢測(cè)車(chē)道線(xiàn)的目的是獲得車(chē)道線(xiàn)的數(shù)學(xué)方程,因此只需要檢測(cè)出車(chē)道線(xiàn)上能反映其形狀特征的那一部分像素即可,無(wú)需檢測(cè)出車(chē)道線(xiàn)上的所有像素。選擇道路右側(cè)車(chē)道線(xiàn)的左邊緣像素和道路左側(cè)車(chē)道線(xiàn)的右邊緣像素為待檢測(cè)目標(biāo)像素,這樣檢測(cè)出的車(chē)道更窄,更有利于車(chē)輛偏離車(chē)道預(yù)警控制。
對(duì)于圖5中保留鋸齒的模擬道路右側(cè)車(chē)道線(xiàn),待檢測(cè)目標(biāo)像素為車(chē)道線(xiàn)的左邊緣鋸齒尖像素,因?yàn)殇忼X尖像素特征最為明顯,最易區(qū)分。將以鋸齒尖像素為中心的9個(gè)像素(3×3,編號(hào)1~9,鋸齒尖編號(hào)為5)局部放大并顯示在圖5中。由圖可知,不論右側(cè)車(chē)道線(xiàn)斜率多大,其左邊緣以鋸齒尖像素為中心的9個(gè)像素的亮度分布具有相同的特征:編號(hào)2、編號(hào)3、編號(hào)6這3個(gè)像素的亮度均比編號(hào)4、編號(hào)7、編號(hào)8這3個(gè)像素大了許多(命名為特征①)。利用這一特征來(lái)檢測(cè)道路右側(cè)車(chē)道線(xiàn)左邊緣鋸齒尖像素和道路左側(cè)車(chē)道線(xiàn)右邊緣鋸齒尖像素。
用于檢測(cè)出鋸齒尖像素的原圖可選擇目標(biāo)照片的查表結(jié)果圖(圖4)或者其在HSV空間的S或V分量圖(H分量圖中車(chē)道線(xiàn)在陽(yáng)光下的部分不可見(jiàn),所以不能選H分量圖)(圖6)。由圖4和圖6中的部分車(chē)道線(xiàn)邊緣放大圖可知,邊緣鋸齒特征最明顯且最滿(mǎn)足特征①的是V分量圖,選擇從V分量圖中檢測(cè)出鋸齒尖像素。
為了提高檢測(cè)速度,采用在前面識(shí)別出的黃色特征像素點(diǎn)內(nèi)部檢測(cè)出具有直線(xiàn)邊緣特征(特征①)的像素點(diǎn)。對(duì)于查表結(jié)果圖中每個(gè)不為0的像素點(diǎn),找到與它位置相同的在V分量圖中的像素點(diǎn)a;在V分量圖中以像素點(diǎn)a為編號(hào)5像素,考察其周?chē)?個(gè)像素亮度分布情況(圖5中的放大圖),如果編號(hào)2、編號(hào)3、編號(hào)6這3個(gè)像素的最小亮度比編號(hào)4、編號(hào)7、編號(hào)8這3個(gè)像素的最大亮度大10(之所以取10,是因?yàn)榻?jīng)對(duì)比分析,亮度差值小于10的分界線(xiàn),人眼基本無(wú)法區(qū)分),就認(rèn)為這個(gè)像素是目標(biāo)像素并將其像素值設(shè)為255,否則設(shè)為0;二值化后的檢測(cè)結(jié)果如圖7所示。
在圖7中,雖然檢測(cè)出了黃色車(chē)道線(xiàn)邊緣,但是也保留了白色車(chē)道線(xiàn)和白色人行橫道線(xiàn)的邊緣干擾像素。在多數(shù)情況下,經(jīng)過(guò)黃色特征提取和直線(xiàn)邊緣特征提取后,均能成功檢測(cè)出黃色車(chē)道線(xiàn)像素。但對(duì)于夕陽(yáng)照射下柏油路面,由于白色線(xiàn)為無(wú)色,柏油路面顯示淡黃色,導(dǎo)致白色線(xiàn)與柏油路面的交接處既具有黃色特征也具有直線(xiàn)邊緣特征,從而被檢測(cè)算法誤認(rèn)為是黃色車(chē)道線(xiàn)而被檢測(cè)出來(lái)。為了濾除此類(lèi)干擾,可以將檢測(cè)出來(lái)的鋸齒尖像素(圖7)向車(chē)道線(xiàn)中心方向水平移動(dòng)(右邊車(chē)道線(xiàn)檢測(cè)算法向右移,左邊車(chē)道線(xiàn)檢測(cè)算法向左移)4個(gè)像素的距離,然后再與查表結(jié)果圖(圖4)作與運(yùn)算;由于查表結(jié)果圖中白色車(chē)道線(xiàn)和人行橫道線(xiàn)內(nèi)部像素灰度值為0,而黃色車(chē)道線(xiàn)內(nèi)部像素灰度值不為0,與運(yùn)算便濾除了白色車(chē)道線(xiàn)和人行橫道線(xiàn)的邊緣干擾像素。圖7中的非0像素水平移動(dòng)4個(gè)像素后的結(jié)果與圖7類(lèi)似,不再給出。
此處的與運(yùn)算是指按位與運(yùn)算。如果水平移動(dòng)4個(gè)像素后的結(jié)果圖(圖7)像素灰度值為255,二進(jìn)制表示1111 1111,那么查表結(jié)果圖(圖4)中相應(yīng)位置的像素灰度值與其作按位與運(yùn)算后結(jié)果不變;如果其像素灰度值為0,二進(jìn)制表示0000 0000,那么查表結(jié)果圖(圖4)中相應(yīng)位置的像素灰度值與其作按位與運(yùn)算后結(jié)果為0。與運(yùn)算的結(jié)果圖二值化后如圖8所示。
由圖8可知,與運(yùn)算不但濾除了白色車(chē)道線(xiàn)和人行橫道線(xiàn)邊緣干擾,還濾除了其他大部分干擾像素,只保留少量的孤立干擾像素點(diǎn)。
通過(guò)霍夫變換來(lái)得到車(chē)道線(xiàn)方程的參數(shù),霍夫變換涉及到坐標(biāo)空間變換,耗時(shí)很長(zhǎng),為了縮短霍夫變換的運(yùn)算時(shí)間,圖8中剩下的干擾像素點(diǎn)越少越好;因此,有必要濾除圖8中的少量孤立干擾像素點(diǎn)。
若以一個(gè)灰度值大于0的像素點(diǎn)為中心,以5個(gè)像素長(zhǎng)度為邊長(zhǎng)的5×5正方形區(qū)域內(nèi)沒(méi)有其他非0像素(除了它自身),則稱(chēng)此像素點(diǎn)為孤立點(diǎn),如圖9所示。
將圖8放大后發(fā)現(xiàn)其中的干擾像素大部分為孤立點(diǎn),而車(chē)道線(xiàn)像素大部分為非孤立點(diǎn);根據(jù)這一區(qū)別可濾除孤立點(diǎn)干擾。具體算法是,對(duì)于圖8中的每個(gè)非0像素點(diǎn)a檢查其周?chē)?×5區(qū)域內(nèi)的24個(gè)像素點(diǎn)的灰度值,若這24個(gè)像素的灰度值均為0,則令a為0;否則a值不變。算法運(yùn)行后的結(jié)果如圖10所示。
由圖10可知,經(jīng)過(guò)孤立點(diǎn)清除運(yùn)算后,不僅清除了大部分孤立的干擾像素點(diǎn),還保留了黃色車(chē)道線(xiàn)像素。
在僅存在極少量干擾像素時(shí),使用OpenCV函數(shù)庫(kù)中的HoughLinesP函數(shù)來(lái)檢測(cè)黃色車(chē)道線(xiàn)的參數(shù),不僅精度高而且耗時(shí)少[2]。可以將該函數(shù)的threshold參數(shù)設(shè)定為較小值,經(jīng)過(guò)多次比較存在各種干擾情況的threshold最佳設(shè)定值,特取threshold=10,即圖9中在同一條直線(xiàn)上的像素點(diǎn)數(shù)量大于10時(shí)才能檢測(cè)到該直線(xiàn)。檢測(cè)結(jié)果以藍(lán)色顯示在原圖中,并以白色顯示在黑色背景圖中,如圖10所示?;舴蜃儞Q結(jié)果如圖11所示。
為驗(yàn)證黃色車(chē)道線(xiàn)檢測(cè)算法具有普適性,需要在其他目標(biāo)照片上進(jìn)行驗(yàn)證。驗(yàn)證結(jié)果如圖12和圖13所示。
圖12和圖13分別是在校園兩條路上的驗(yàn)證結(jié)果圖,圖中均準(zhǔn)確檢測(cè)出了黃色車(chē)道線(xiàn)而且濾除了其他所有干擾像素;但是兩圖中都僅僅檢測(cè)出了離相機(jī)較近的幾段黃色車(chē)道線(xiàn),未能檢測(cè)出照片中遠(yuǎn)處的車(chē)道線(xiàn)。這是因?yàn)檩^遠(yuǎn)處的黃色車(chē)道線(xiàn)經(jīng)相機(jī)處理轉(zhuǎn)換為照片后,其像素的黃色特征很不明顯,甚至不再顯示為黃色。這樣的檢測(cè)結(jié)果并不影響智能車(chē)輛的自動(dòng)化行駛,因?yàn)檐?chē)道線(xiàn)的檢測(cè)結(jié)果會(huì)隨著車(chē)輛的前行不斷更新。
經(jīng)過(guò)試驗(yàn)驗(yàn)證可知,算法具有很好的普遍適用性。在實(shí)時(shí)性方面,檢測(cè)算法首先采用快速方便的查表法濾除大部分干擾像素,其后的每一步操作都是在查表結(jié)果圖上亮度非零的像素點(diǎn)上進(jìn)行,參與計(jì)算的干擾像素點(diǎn)數(shù)量大大減少,檢測(cè)速度得到很大優(yōu)化,保證了算法的實(shí)時(shí)性。
[1]白冰潔,韓峻峰,潘盛輝,等. 基于雙閾值分割的車(chē)道線(xiàn)檢測(cè)方法[J]. 信息技術(shù),2013(3):43-45.
[2]金輝,吳樂(lè)林,陳慧巖,等. 結(jié)構(gòu)化道路車(chē)道線(xiàn)識(shí)別的一種改進(jìn)算法[J]. 北京理工大學(xué)學(xué)報(bào),2007,27(6):501-505.
[3]馬小龍. 基于視覺(jué)的復(fù)雜光照條件下的車(chē)道檢測(cè)及識(shí)別[D]. 成都:電子科技大學(xué),2013.
[4]張遠(yuǎn). 基于車(chē)道線(xiàn)邊緣及分布特征的車(chē)道線(xiàn)識(shí)別算法研究與實(shí)現(xiàn)[D]. 沈陽(yáng):東北大學(xué),2010.
[5]毛星云. OpenCV入門(mén)教程[EB/OL]. [2016-09-01]. http://blog.csdn.net/zhmxy555/article/category/1923021.
[6]毛星云,冷雪飛,王碧輝,等. OpenCV3編程入門(mén)[M]. 北京:電子工業(yè)出版社,2015.
[7]張博峰. 基于機(jī)器視覺(jué)的自主無(wú)人車(chē)道路識(shí)別研究[D]. 西安:西安工業(yè)大學(xué),2014.
1002-4581(2017)03-0014-06
U491.5+23
A
10.14175/j.issn.1002-4581.2017.03.004
安徽省科技重大專(zhuān)項(xiàng)(15czz02039)。