李艷瑋, 鄭偉勇, 李 可
(河南工程學院 計算機學院,河南 鄭州 451191)
鏈碼跟蹤直線提取算法在道路標志判斷中的應用
李艷瑋, 鄭偉勇, 李 可
(河南工程學院 計算機學院,河南 鄭州 451191)
為了準確快速提取和識別道路中的標志線,提出了一種基于鏈碼的道路標志線提取與識別算法.道路中的標志線在圖像處理中可以作為直線處理,整個提取算法分為3個步驟:首先,通過對道路圖像的預處理去除噪聲,利用Canny算子提取邊緣;然后,對邊緣圖像進行鏈碼編碼并進行直線判斷;最后,對屬于同一條直線的直線段進行線段連接,過濾短的非道路標志線.實驗表明,該算法可以準確快速地識別城市道路中的標志線和道路邊緣,達到了實時準確的要求.
道路標志;鏈碼跟蹤;直線提?。痪€段連接;識別
在智能交通領域,對道路邊界和標志線的識別是一個重要的研究課題.道路中的標志線主要針對城市道路,有分道線、斑馬線和停車線等,正確識別這些車道標志線可以為智能車輛的行駛提供重要信息.在提取道路標志線的研究中,通常把車道標志線看作直線或分區(qū)域作為直線處理,文獻[1]中用B-Snake算法把道路分成橫向區(qū)域,每一個區(qū)域中的道路標志線作為直線段,再把直線段連起來趨近Snake模型.在直線提取中,常用的算法有Hough變換和Freeman鏈碼提取[2-3].Hough 變換是一種全局性的直線提取算法,具有很好的容錯性和魯棒性,時間復雜度和空間復雜度都很高.但是在道路標志線的提取中,道路圖像中標志線并不是全局的直線,尤其是斑馬線和停車線等,而且Hough變換不能提供直線的長度和方向等信息,不適用于提取短直線.另一種受到人們重視的直線段檢測方法是基于Freeman提出的鏈碼直線提取[4],其基本思想是先對目標邊界進行鏈碼跟蹤,然后在得到的鏈碼串集合中進行直線判定[5].該方法的最大優(yōu)點是運算量小并且能同時得到直線段的位置、長度和方向等信息,缺點是算法性能受目標邊界跟蹤算法的制約.本研究在基于鏈碼跟蹤的原理上,對鏈碼跟蹤、直線判定和直線段連接提出了改進算法.在鏈碼跟蹤時,根據前面的方向碼確定后面的方向碼,并初步判定直線并截斷;在直線判定時,采用簡單的公式判定;在線段連接時,摒棄以前復雜的算法,采用平面線段共線的特性進行線段連接,最后應用于道路圖像,實現(xiàn)道路標志線的識別提取.
1.1道路圖像的預處理
為了減少各種水漬、陰影和行人等非道路元素對道路標志線提取的干擾,先對圖像進行預處理,道路的原始圖像如圖1所示.
圖1 道路的原始圖像Fig.1 Original image of road
由原始圖像可知,由于道路表面不均勻,直接提取邊緣會產生很多干擾,所以要對圖像進行濾波和二值化.中值濾波可以在保護邊緣信息的同時盡可能地平滑噪聲,二值化可以突出檢測目標,忽略掉無用的信息,本研究利用Ostu自適應算法對圖像進行二值化.
邊緣提取的精度直接影響鏈碼提取的精度,本研究采用Canny 算子對道路圖像進行邊緣檢測.Canny算法首先應用高斯平滑處理,然后在x和y方向應用Sobel算子,再應用非極大值抑制求得邊緣點,最后利用連接邊緣點的滯后閾值處理剔除不需要的邊緣點.Canny算法的兩個閾值選擇可以控制保留邊緣的多少,為了盡可能地保留邊緣信息,高低閾值分別選擇0.7和0.4.預處理后提取的邊緣圖像如圖2所示,未經過預處理直接提取的邊緣圖像如圖3所示.
圖2 預處理后提取邊緣Fig.2 Edge extraction after pretreatment
圖3 未經過預處理直接提取邊緣的圖像Fig.3 Edge extraction image without pretreatment
對比圖2和圖3可以看出,預處理后的邊緣圖像噪聲點更少,周圍建筑物的信息被大幅度地忽略掉,突出了中間道路標志線的信息,為以后的鏈碼跟蹤創(chuàng)造了前提.
圖4 八鄰域示意圖Fig.4 Eight neighborhood schematic
1.2鏈碼跟蹤
相較于霍夫直線檢測的不確定性,鏈碼編碼是對圖像邊緣直接編碼,能提供更多關于直線的信息.鏈碼跟蹤的目的是對邊緣圖像進行編碼,存進數(shù)據鏈表,以便進行下一步的線段提取.對于Canny算子進行的邊緣檢測的結果,首先要對邊緣進行細化處理,然后檢測像素八鄰域進行鏈碼編碼,如圖4所示.觀察邊緣圖像中的直線,有兩種情況,第一是重復一個方向碼,第二是兩個方向碼交替出現(xiàn).因此,可以在鏈碼跟蹤時初步判斷出屬于一條直線的鏈碼.
算法具體流程如下:①取圖像中的一個未訪問邊緣點,對于二值化邊緣圖像取圖像中的白色邊緣點;②標記為已訪問,存儲其方向碼,如果此邊緣點為該條鏈碼的第一個點,則搜索其優(yōu)先級高的鄰域,否則搜索其與前一個方向碼相同的邊緣點,若未訪問,標記為已訪問,進入第③步,若沒有邊緣點,則搜索其前不相同的方向碼的邊緣點,若有并未訪問,標記為已訪問,進入第③步,若沒有則鏈碼結束;③重復第②步,直到沒有白色未訪問點,則一條鏈碼結束;④重復第①步,直到搜索完整個圖像.算法具體流程如圖4所示.
算法中,為了更精確地跟蹤邊緣,八個鄰域區(qū)分優(yōu)先級,依次為0,2,4,6,1,3,5,7.
2.1線段判定
基于直線提取準則的判定,國內外學者提出了許多改進算法,文獻[6]與文獻[7]提出了基于Freeman直線判別準則的BL算法,但是算法為了提高精度而引入了復雜的判據,并且其直線連接算法的判據也不嚴密,其缺點在文獻[8]中有所分析.文獻[9]對鏈碼的跟蹤方法進行了改進,但未對Freeman編碼本身進行改進,其直線檢測和直線連接沿用已有的方法,未提出自己的新方法.
本研究用以下形式表示目標邊界的鏈碼串:X,Y,d,X,Y,d,….采用鏈表實現(xiàn),每一個節(jié)點包括3個元素,X和Y為當前鏈碼串起始點的圖像坐標;d為當前像素點對于上一像素點的方向碼.因為鏈碼跟蹤時,已經初步把可能為一條直線的邊緣點作為一條鏈碼,所以首先對鏈碼的長度作一個約束,只對滿足長度閾值的鏈碼進行直線判定.長度閾值可以根據要判斷的圖片進行選擇,本研究中選40(像素).判定準則采用直線段相似度檢驗,對于長度過長的鏈碼采用分段檢驗,設定分段閾值LSec,小于LSec的鏈碼直接進行相似度檢驗,大于LSec的鏈碼從起點開始依次選擇長度為LSec約束的子鏈碼串.計算鏈碼串的實際長度Len(p1,p2)和兩個端點p1和p2之間的理想直線距離‖p1-p2‖,該鏈碼串的直線近似度可以表示為式(1)[10]:
S=‖p1-p2‖/Len(p1,p2).
(1)
圖5 提取的直線Fig.5 Extracted straight
2.2線段連接
噪聲干擾及圖像模糊經常使標志線邊緣線出現(xiàn)斷裂,提取直線后還需對提取的直線進行分類,對屬于同一條直線的線段進行線段連接.本算法摒棄了以前的復雜算法,提出了一種簡單、準確、高效的新算法.若兩條線段共線,則連接兩條線段的第3條線段也必與這兩條線段共線.設第1條直線的兩個端點為(p1,p2)和(p3,p4),第2條直線的端點為(q1,q2)和(q3,q4),則線段(p3,p4)與(q1,q2)連接成的線段一定與前兩條直線斜率兩兩相等.經過線段連接的直線在邊緣圖像中如圖5所示.
圖5中白色的為提取的直線,淺灰色的為提取的邊緣圖像,觀察可知本算法提取出了道路中間的白色分道線、道路邊緣等有效直線.當設備參數(shù)為雙核CPU、內存2 G、主頻3.0 G時,整個過程用時200 ms.隨著配置的提高,用時會更少,可以用于實時提取.
應用本算法對道路中人行道線進行提取,人行道線原始圖像如圖6所示.
采用識別道路標志線的具體算法如下:
(1)對圖像進行二值化和濾波處理,使用Canny 算子對道路圖像進行邊緣檢測,并進行單邊化處理;
(2)從圖像頂部開始逐點向右、逐行向下掃描進行編碼;
(3)提取長度為Len的鏈碼進行直線判斷,存儲直線的有效信息;
(4)對屬于同一條直線的線段進行連接;
(5)對最終提取的直線長度進行限定,剔除不是道路標志線的直線,提取的直線如圖7所示.
圖6 人行道線原始圖像Fig.6 Original image of sidewalks line
圖7 提取的直線Fig.7 Extracted straight
從圖7可以看出,采用本算法能夠在復雜的道路環(huán)境中準確檢測出道路中的人行道線.
分析道路標志線的直線特征,通過鏈碼跟蹤的方法來提取道路中的標志線,算法簡單、精確度較高,可以滿足實際應用中的實時性.通過對圖像的預處理,可以使本算法有較好的抗陰影能力,并能在復雜的道路環(huán)境中準確地檢測出車道標志線和道路邊緣,為后續(xù)的道路分析和車輛行駛提供有效信息.
[1] Wang Y,Shen D G,Teoh E K.Lane detection and tracking using B-Snake[J].Image Vision Computing,2004,22(4):269-280.
[2] Wang Y,Shen D,Teoh E K.Lane detection using spline model[J].Pattern Recognition Letters,2000,21(8) :677-689.
[3] Bandera A,Urdiales C,Arrebola F,et al.2D object recognition based on curvature functions obtained from local histograms of the contour chain code[J].Pattern Recognition Letters,1999,32(20):49-55.
[4] Jianxing Y,Ching Y.Suen identifying line segments from a sequence of chain codes[J].Pattern Recognition,1995,28(5):635-646.
[5] Li D W.On the chain code of a line[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1982,4(3):347-353.
[6] 魯光泉,許洪國,李一兵.基于鏈碼檢測的直線段檢測方法[J].計算機工程,2006,32(14):57-61.
[7] 史冊,徐勝榮,荊仁杰,等.實時圖像處理中一種快速的直線檢測算法[J].浙江大學學報:工學版,1999,33(5):99-102.
[8] 孫涵,任明武,楊靜宇.一種快速實用的直線檢測算法[J].計算機應用研究,2006,23(2):256- 260.
[9] 裘鎮(zhèn)宇,危輝.基于Freeman鏈碼的邊緣跟蹤算法及直線段檢測[J].微型電腦應用,2008,24(1):88-90.
[10]馬兆敏,齊保謙,廖鳳依,等.基于神經網絡的車道偏移自動檢測的研究[J].科學技術與工程,2012,12(30):8097-8099.
[11]閆旭琴,吳曉兵,車曉波,等.基于邊緣分布函數(shù)的車道標志線識別方法[J].計算機應用,2010,30(4):974-976.
Chaincodetrackingstraightlineextractionalgorithmappliedinroadsignsjudgment
LI Yan-wei, ZHENG Wei-yong, LI Ke
(CollegeofComputer,HenanInstituteofEngineering,Zhengzhou451191,China)
To extract and recognize the marked lines of road quickly and accurately, an extraction and recognition algorithm of road sign line based on chain code is proposed, the road sign line in the image processing is treated as straight line. Three steps in the whole extraction algorithm, firstly the noise is removed through the preprocessing for road image and the edge is extracted using canny operator. Then the edge image is encoded to chains which needed to be judge whether it is a straight. Finally the straight segments belong to the same straight line are connected and the short lines which is not road line are filtered.Experiments show that this algorithm can quickly and accurately recognize the sign line and edge of road to meet the accurate and real-time requirements.
road signs; chain code tracking; line extraction; line segment connection; recognition
2014-04-14
李艷瑋(1980-),女,河南鄭州人,講師,主要研究方向為人工智能與計算機應用.
TP391.41
A
1674-330X(2014)03-0069-04