matlab与逆透视变换,基于逆透视变换的车道线检测方法与流程
本發明屬計算機視覺、圖形處理技術領域,具體涉及一種通過照度不變及逆透視變換進行車道線快速魯棒檢測的方法。
背景技術:
車道線檢測作為自動駕駛技術的第一個環節,能夠有效感知車輛周圍世界,并獲取可行駛區域,是實現車道偏離預警、前車防碰撞等功能的前提和保證。針對車道線檢測,Jiang R等在文獻“Jiang R,Reinhard K,Tobi V,et al.Lane detection and tracking using a new lane model and distance transform[J].Machine Vision&Applications,2011,22(4):721-737.”中提出通過對車道建立三角約束,建立車道線模型,在經過距離變換的圖像中,通過粒子濾波進行對車道線的生長。這種方法只能處理兩邊道路同時有車道線時的情況,并且對陰影、噪聲等敏感性高。
針對陰影、噪聲等問題,Son J等在文獻“Son J,Yoo H,Kim S,et al.Real-time illumination invariant lane detection for lane departure warning system[J].Expert Systems with Applications,2014,42(4):1816-1824.”中提出使用基于色彩轉換不變性來對不同光照條件下、不用路面情況進行處理的方法,但是其處理方式較為單一,不能很好的處理強陰影及高噪聲情況。并且該方法對于顏色轉換不變性只考慮了白色線與黃色線,對于可能出現的其他情況,例如由于照明條件不好導致車道線顏色與平時差距大等情況并沒有很好的魯棒性。
已有方法由于對現實世界的建模過于簡單,不能很好的實現快速魯棒實時檢測車道線,具有局限性。
技術實現要素:
為了克服現有車道線檢測方法對實際場景適應性不好、局限性高的問題,本發明提出了一種基于照度不變變換與逆透視變換的快速車道線檢測方法,在可能出現單一車道線及路面上具有大量陰影噪聲干擾的情況下,可以更好地進行車道線檢測,滿足車道線檢測中對速度要求高以及對各種環境魯棒的要求。
一種基于逆透視變換的車道線檢測方法,其特征在于包括以下步驟:
步驟1:假設輸入圖像為IRGB=(IR,IG,IB),IR,IG,IB分別指輸入圖像的R、G、B通道,對輸入圖像按照如下公式進行變換,得到變換后的顏色空間r和b:
r=log(IR/IG) (1)
b=log(IB/IG) (2)
步驟2:令照度獨立角度lθ從0度至90度逐度連續變化,按照對每一個lθ計算得到一個灰度圖像Igray,并按確定最優的照度獨立角度其中,L為灰度圖像Igray的最大灰度級,Hθ(i)為圖像中第i個灰度級對應的像素個數;再按照計算得到最終的照度不變變換后的灰度圖像
步驟3:按照事先定義好的道路位置在步驟2得到的灰度圖像中提取標本小塊圖像,并計算其直方圖;計算灰度圖像中的任一大小與標本小塊相同的小塊圖像的直方圖,并計算其與標本小塊圖像直方圖的協方差;將協方差最小的30%的小塊歸為道路區域;
步驟4:使用泛洪填充算法對步驟3得到的道路區域進行優化,再利用形態學算法進行邊緣檢測,得到道路區域的邊界,則邊界內圖像為道路區域圖像;
步驟5:對步驟4得到的道路區域圖像進行逆透視變換,再進行邊緣檢測,得到二值圖像;
步驟6:利用Hough變換對二值圖像進行計算,得到二值圖像中直線可能存在的位置及其出現次數,選擇出現次數最多的n個位置的直線為車道線,對二值圖像中這些直線附近的點進行三次曲線擬合,得到n條曲線,即為檢測出的車道線;一般取n為2,即檢測左右兩條車道線;所述的附近是指距離不超過3個像素。
本發明的有益效果是:由于將照度不變變換與逆透視變換相結合,可以有效解決復雜狀況下車道線的快速檢測;由于采用了逆透視變換,使得本發明方法具有更高的準確率和更強的魯棒性。在一些極端情況下,如路面中有大量陰影以及曝光過度的情況下,可以達到更好的效果。
附圖說明
圖1是本發明的一種基于逆透視變換的車道線檢測方法流程圖
圖2是利用本發明方法進行車道線檢測的結果圖
具體實施方式
下面結合附圖和實施例對本發明進一步說明,本發明包括但不僅限于下述實施例。
如圖1所示,本發明的一種基于逆透視變換的車道線檢測方法,其實現步驟如下:
步驟1:假設輸入圖像為IRGB=(IR,IG,IB),IR,IG,IB分別指輸入圖像的R、G、B通道。對輸入圖像按照如下公式進行變換,得到變換后的顏色空間r和b:
r=log(IR/IG) (3)
b=log(IB/IG) (4)
步驟2:對上一步得到的顏色空間r、b進行如下變換得到灰度圖像:
其中,lθ為照度獨立角度,令lθ從0度至90度連續變化,則每一個lθ可以得到一個灰度圖像Igray。設L為灰度圖像Igray的最大灰度級,Hθ(i)為第i個灰度級對應的像素個數。利用如下公式確定最優照度獨立角度
再將代入公式(5)得到最終的灰度圖像。
步驟3:在上一步得到的最終的灰度圖像中固定位置(即事先定義好的道路位置)提取標本小塊圖像,并計算其直方圖;然后,對灰度圖像中任一個小塊(與標本小塊大小相同),同樣計算直方圖,并計算其直方圖與標本小塊圖像直方圖的協方差。
步驟4:對所有圖像小塊對應的協方差,通過設定閾值的方式判斷每個圖像小塊屬于道路區域與否。閾值設定方法為下位百分比法,即取所有圖像小塊中與標本小塊最相似的,即協方差最小的百分之三十作為道路區域。
步驟5:使用泛洪填充算法對得到的道路區域圖像進行優化,再利用形態學算法中的邊緣檢測方法進行檢測,得到道路區域的邊界,則邊界內圖像為道路區域圖像。
步驟6:對道路區域圖像進行逆透視變換,得到俯視角度下的灰度圖像。
首先,利用已經標定好的攝像機參數,生成參數矩陣。假設攝像機俯仰角為α,攝像機偏航角為β,焦距分別為fu、fv,cu、cv分別為圖像分辨率的一半,攝像機高度為h,則參數矩陣可寫為:
然后,對圖像中的每一個點(x,y),構造向量P=[x,y,1,1T],則變換后的坐標為Pnew=T·P,再將變換前與變換后的坐標的顏色對應起來即得到逆透視變換后的圖像,即俯視角度下的灰度圖像。
步驟7:對逆透視變換后的圖像進行邊緣檢測,得到二值圖像。
步驟8:利用Hough變換對二值圖像進行計算,得到二值圖像中直線可能存在的位置及其出現次數。
步驟9:選出出現次數最多的n個位置直線,這n個位置直線就對應著n條車道線。在二值圖像中,對這n個位置直線附近的點(距離不超過3個像素)分別進行三次曲線擬合(即三階曲線擬合),得到n條曲線,即檢測出的車道線。一般取n=2,即左右兩條車道線。
本實施例在中央處理器為i5-3470 3.2GHz CPU、內存16G、WINDOWS 10操作系統上,運用MATLAB軟件進行仿真。仿真中使用的數據為自主采集的路面圖片。圖2是用本發明方法進行車道線檢測的結果圖,可以看出,本發明方法具有較好的檢測效果,車道線定位的精度也很高。通過MATLAB仿真運行,檢測速度超過了30幀每秒??偟膩碚f,本發明方法具有檢測魯棒、速度好的特點。
總結
以上是生活随笔為你收集整理的matlab与逆透视变换,基于逆透视变换的车道线检测方法与流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Photoshop脚本 给图片添加噪点
- 下一篇: 交通灯管理系统I