Hough變換與FCM演算法相結合檢測車道線

大寫的ZDQ發表於2019-03-04

https://blog.csdn.net/u010712012/article/details/87477554
之前一小段時間分析的三大塊,車輛檢測,車道線檢測,車輛壓線判別。

主要分析了一下車道線檢測的優化問題,經過影像處理,canny邊緣檢測,Hough變換檢測出的圖如第二幅

在這裡插入圖片描述
在這裡插入圖片描述
因為車道是具有雙邊緣的,所以根據之前的車道線檢測演算法檢測出來的直線會有不止一條,如果能夠用一種演算法把多條直線能夠合併成一條車道線,能夠對後面的違章壓線變道判決減少很多干擾。

根據Hough變換的原理 https://blog.csdn.net/u010712012/article/details/86104053 ,原圖座標的直線在k,b空間就是點,把這些點反映到下面這個座標

在這裡插入圖片描述
可以看出,一條車道線的多條檢測出來的直線的斜率和截距差距一般不是很大,所以是否能夠把這些代表直線的點聚類為一點,那麼聚類結果的各點,就代表具體的那根車道線。

https://blog.csdn.net/u010712012/article/details/87952752
這篇文章描述了模糊C均值聚類演算法,這個聚類演算法通過計算隸屬度矩陣U和類別中心C,得到最終的聚類中心,從而可以在這個場景下使用。

只需要把我們想要最終聚類出的車道線的條數明確,確定迭代次數,就能得到結果。

在這裡插入圖片描述
但是這裡有一個明顯的問題就是,FCM演算法需要手動設定需要聚類出來的類數,假設一條道路有6條車道線,那麼K=6,不同的場景車道線數量不同。這讓人想到了無監督學習中的Kmeans演算法,他的缺點也是需要人工先確定K值,且該值和真實的資料分佈未必吻合,也易受到噪聲點的影響,容易陷入區域性最值,並不能有力地求到全域性最優。所以個人感覺只適合於道路清晰的高速公路上,一旦有多輛車在內做干擾,或者路面老舊導致車道線不清晰,FCM並不能算是一個非常魯棒的演算法。

但是不可否認的是,FCM聚類演算法使用的邊緣去重和結構化過濾方法還是很有借鑑意義,可以起到穩固車道線的作用,從而對後續的車輛壓線判別模型奠定了基礎。

而且我們得到的(k,b)座標軸,可以看出,在原影像座標中的斜率為正的直線,都集中在右下角的點,很密集。而斜率負的很大的直線則分散在左上角而且距離比較大,按照聚類(物以類聚)的思想,應該是離得越遠的點越沒可能是一類。

可以考慮把斜率的k=tanθk=tan\theta,這裡的角度在斜率比較小的時候差距不大,但是有可能在斜率很大的時候,多條線之間的角度差距也不大

因為每條線的theta都有具體的值,每一條線的θ\theta相減,如果角度差距超過設定的一個閾值的話,就代表不是一類,如果角度小於一類的,就看成是一類。就要看怎麼和聚類的演算法進行融合了

然後思考一下能不能把k,b座標軸轉變成ρ,θ\rho,\theta極座標空間,然後看FCM聚類演算法是否能夠解決上述的角度截距的問題。

得到聚類結果的斜率和截距(這裡還是k,b),可以根據兩點座標把各車道線繪製出來如下:
在這裡插入圖片描述
這裡繪圖車道線的結果是貫穿整個圖片的,最後融合起來。
在這裡插入圖片描述
這裡效果還行吧。。。

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
3.
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
4.
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
後面如果轉成極座標空間更佳,會換過來。

相關文章