1. 程式人生 > >視覺無人機高速公路違章檢測的研究——階段思考與計劃2018.12.25-2019.1.1

視覺無人機高速公路違章檢測的研究——階段思考與計劃2018.12.25-2019.1.1

上週的思路: https://blog.csdn.net/u010712012/article/details/85082271

上週的flag:
1.車道線怎麼單獨給檢測出來,能不能通過閾值處理/ROI選取,把其他非車道線的部分給濾除。因為高速公路車道線基本都是白線,所以用閾值可能管用,或者彩色空間也可以試試。看看專門檢測車道線的論文,只剩下背景和車道線的,相當於車道線分割提取出來的論文,是這周到的重點。12.19-12.25

2.車輛檢測,這個用YOLO可以把車輛分類出來還能有一個bbx,怎麼在一張圖片中單獨檢測出有車,這個恰好是目前深度學習的優勢,或者有HOG_SVM檢測車輛,這個就是需要得到車輛的特徵,機器學習演算法無非就是我們人為給是車輛的標上正,不是的標負的標籤,然後用大量資料去訓練,最後計算機才知道一張圖片當中是不是車。這個也努力弄出來12.19-12.25

1.車道線檢測成果

1.1顏色空間嘗試
車輛違章壓線和變道的前提就是車道線檢測,利用閾值分割的手動閾值與OTSU演算法得到黑白二值閾值分割圖,這裡取的200,黑色的車被濾除了,白色的車道線和白色的車輛都能被濾出來,但是能不能用其他的顏色空間來研究?最終對車道線檢測有幫助?
在這裡插入圖片描述
HSV空間的解釋:https://blog.csdn.net/u010712012/article/details/85240100

這裡的飽和度Saturation,值越大,顏色越純,V亮度越大,影象越白。
在這裡插入圖片描述
HLS和HSV不一樣,所以可以看到圖片的狀態不一樣。HSB 中的 S 控制純色中混入白色的量,值越大,白色越少,顏色越純;HSB 中的 B 控制純色中混入黑色的量,值越大,黑色越少,明度越高;HSL 中的 S 和黑白沒有關係,飽和度不控制顏色中混入黑白的多寡;HSL 中的 L 控制純色中的混入的黑白兩種顏色。
在這裡插入圖片描述


暫時還沒有單獨把HSV/HLS通道單獨提取出來,後面可以看看三通道怎麼提取,看能否提高效果。邏輯就是:分開來增強或者處理,再融合得到更好的結果。

以下是經過RGB三通道split之後的圖,可以看到B通道的圖對比度很高,車道那塊區域感覺會很容易被區分出來。

在這裡插入圖片描述
再進行閾值分割後:這張圖閾值是145
在這裡插入圖片描述
我們看到B通道和R通道的背景會沒那麼多幹擾,於是就將這兩個通道給合併融合,如下:
在這裡插入圖片描述
如果是將融合的雙通道圖片經過高斯模糊,再取相同閾值145
在這裡插入圖片描述
可以看到背景基本沒有噪點了,這可能也是為什麼影象預處理都需要有降取樣,平滑的操作。

再對高斯平滑去躁的影象進行邊緣檢測,得到如下圖。
在這裡插入圖片描述
再對邊緣檢測的結果進行形態學的閉操作(先膨脹後腐蝕),把線與線之間的間隔或者斷續的地方進行填充補全。
在這裡插入圖片描述


因為是借鑑了一些論文的思路,把邊緣檢測形態學填充的結果和雙通道閾值分割的結果進行融合:
在這裡插入圖片描述
最後當然還是我們的Hough變換監測和直線了。https://blog.csdn.net/u010712012/article/details/84780943
這次進行了多車道線檢測
在這裡插入圖片描述
再加在原圖上:
在這裡插入圖片描述
非常好的實現了實線的車道線檢測。這裡很多引數需要調整才行,因為github掛了,後續把程式碼放在github上面供大家參考。

2.車輛檢測結果

用的YOLO_v1,這是詳解:https://blog.csdn.net/u010712012/article/details/85116365

我用的是網上的檢測程式碼,別人已經通過訓練得到了初始模型和權重,我拿來自己測試,可憐的是置信度低的可怕,而且小物體基本識別不出來。

原因一是模型yolov1本身的缺陷,二是資料集我無法知道質量和數量。

所以後面需要自己拿無人機去航拍並且標註,得到自己的資料集去訓練和檢測。
在這裡插入圖片描述

思考與計劃2018.12.25-2019.1.1:

這個課題最終應當是作為專案來實現,並能夠寫出論文。演算法專案就必然有方法方案的對比優化,並用抽象的數學模型去解決現實的問題。

因為需要檢測出車輛是否壓線,那麼有兩種思路:

1.如果是在有偏航角的二值影象中,怎麼判斷哪些是實線,哪些是虛線?有篇論文中設定峰值閾值peak_threshold來表示影象空間的車道線。設定 T m a x T_{max} 表示檢測實車道線,當檢測出的直線長度大於閾值,就認為該直線是實車道線,否則小於閾值就不是。用變數 T m i n T_{min} 來表示檢測虛車道線的閾值,當檢測到的直線大於該值,就是,否則就不是。這裡其實我不太明白,那介於中間的是什麼?

或者我們只顯示感興趣區域的實線部分,虛線部分我們不做處理,如果是深色車輛壓在線上,投影部分實線必然會有斷續,實線斷續前一部分判斷是否大於實線閾值,大於的話再判斷與他斜率一致的斷續上面的那一根實線,如果也大於實線閾值,就說明彷彿是實線了!看車輛檢測模組的情況是否在那裡有車。如果是亮色白色車輛壓線,二值圖就有線上那裡有一塊白色區域,那麼就在檢測車輛的那一部分如果檢測到車(YOLO演算法框定車),那麼兩張圖進行計算機影象匹配,就能判定是車輛壓線。

2.用Hough變換檢測出的車道線(彩色圖原圖),與YOLO檢測出的矩形框進行線與矩形的相交數學判定,進而判斷是否壓線。

這兩種判斷壓線演算法可以算作論文一小部分對比。

以上情況在無人機有俯仰視角時和垂直拍攝時是有區別的,垂直情況會更好判斷,所有這裡論文也可以進行演算法情況對比。

計劃
2018.12.25-2019.1.1:
1.把yolov2,yolov3原理搞懂,並用coco資料集/voc資料集實現(ubuntu)。28,29,30
2.拍攝自己的航拍車輛資料集,調研標註方法。29
3.車輛壓線演算法模型調研。影象處理方法,數學方法,與上述步驟銜接。30,31,1