天天看點

基于虛拟線圈法的車速識别和撞線預測(附Python代碼)

首發于https://juejin.cn/post/6924222163868188679/,轉載注明出處

GitHub

https://github.com/KinghooWei/VehicleSpeedRecognition

開門見山了,記得star一下呀

最終效果圖

基于虛拟線圈法的車速識别和撞線預測(附Python代碼)
基于虛拟線圈法的車速識别和撞線預測(附Python代碼)

設計思路

項目的程式設計環境為python3.7.7,編譯器使用pycharm2019.3.4 x64,視訊序列30幀每秒。項目采用虛拟線圈法估算車速,取線圈内平均灰階值相對于沒有車輛的線圈内平均灰階值的變化c作為對象特征,當c的絕對值大于某一門檻值時,判斷有汽車通過線圈。

基于虛拟線圈的車速檢測算法

虛拟線圈法是利用虛拟感應線圈代替真實感應線圈,工作原理類似于地埋式線圈檢測器。在圖像上垂直于道路方向上定義2個檢測線圈的位置,系統通過檢測線圈的灰階變化來判斷車輛經過,由車輛經過前後兩個線圈的間隔幀數p、兩個線圈在現實中的距離l和第二個線圈與停止線的距離s,可以估算出目前車輛的速度及撞線時間。該方法的優點是操作簡單,耗時短,能夠實時完成速度和撞線時間估計。算法的具體步驟如下:

  1. 确定兩個虛拟線圈的位置、大小和傾斜角度,確定首幀序列的虛拟線圈内沒有車輛,在視訊序列中把虛拟線圈标注出來;
  2. 計算首幀序列在2個虛拟線圈中的平均灰階值,記為 a a a、 b b b;
  3. 逐一計算視訊幀在2個虛拟線圈中的平均灰階值,記為 m m m、 n n n,并與首幀的計算結果 a a a、 b b b進行比較。當 ∣ m − a ∣ \left|m-a\right| ∣m−a∣大于某一門檻值時,判斷第一個線圈有車輛通過,記錄目前幀的序号 i i i,如圖3-1所示,當 ∣ n − b ∣ \left|n-b\right| ∣n−b∣大于某一門檻值時,判斷第二個線圈有車輛通過,記錄目前幀的序号 j j j;
  4. 當車輛通過第二個虛拟線圈時,由 i i i、 j j j、實際現實中兩虛拟線圈的間距、第二個虛拟線圈與停止線的間距和視訊的幀率等資訊,即可估算出車輛的車速和撞線時間。

總結

考慮到實際應用中,攝像頭可以固定在道路中,穩定程度和角度都要好于我在樓頂手持錄像,但也存在一些問題,一是對白色車輛不敏感,隻是通過黑色後視窗進行識别,原因可能是特征選擇為灰階圖的平均灰階值差異,白色車輛跟道路的平均灰階值差異不夠明顯,改進的話可以使用SHV圖像的顔色做判别,這也比較符合人的判斷;二是實驗視訊時間短,隻考慮白天,實際現實還要工作于夜晚,可以運用動态門檻值進行改進。