影象處理車輛碰撞預判
固定攝像頭位置對車輛進行拍攝,通過影象處理來預判兩個車輛能否發生碰撞。這是這個程式的入手點。
通過模擬我用手機拍攝了三幅影象,第一幅是背景(用來模擬真實情況沒有車的時候),第二幅是第一時刻有車輛的影象,第二幅是下一時刻的影象。通過三幅影象我只需定義兩個影象之間的拍攝時間差就可以得到車輛的移動速度,從而能夠進行碰撞的**。
圖1
圖2
圖3不要問我為什麼不是車而是計算器,因為當時沒有找到車子的模型加上我也不想爬路燈。所以就自己模擬了一下現場的狀況。
接下來就是整個演算法的處理流程。
1. 首先處理彩色影象是比較複雜的所以第一步是度影象進行灰度變換。
2. 灰度變換後對影象進行0-90度查表式的旋轉,每次多旋轉一定度數找到橫向投影灰度和跟縱向投影灰度和方差相加的最大值
圖4在圖4中就可以看出當兩個方差和最大的時候是將影象旋轉43度,那麼接下來我們可以看一下旋轉後的影象。如下圖旋轉後的影象很容易看到兩車之間的間隙。
圖5 第一幅影象旋轉後的橫向縱向掃瞄灰度和的直方圖
圖6 第二幅影象旋轉後的橫向縱向掃瞄灰度和的直方圖
對比上兩幅影象我們可以明顯看出右邊的直方圖空隙變小,左邊的直方圖也有略微的移動。通過這個特點加上兩個影象拍攝的時間差我們可以去提取左右兩個車的x方向和y方向的速度。
由於灰度影象的處理還存在一定問題,我將上述影象進行二值化得到以下兩圖。
圖7
圖8為了排除除車輛以外其他雜訊的干擾需要去濾除雙峰以外的雜訊。我做了乙個處理去除了這種雜訊,演算法是不超過峰值1/8的直方圖全部清零。這樣可以有效地做到濾除不必要的雜訊。
圖10 二值化濾波後的影象1
圖11 而置換濾波後的影象2
在上述兩個影象中我們可以看到直方圖雜訊已經被濾除,影象也凸顯了兩個車所在的位置。
在接下來就是分別提取左右兩個車輛的x方向速度和y方向的速度。
圖12 提取後的圖1左右車輛的影象
圖13 提取後的圖2左右車輛的影象
通過上述兩個影象我可以推算出每個車子的速度,vx和vy,接下來就是**車子下一時刻的位置。已經知道速度和實踐就可以推出車子下一時刻的位置。
圖14 **後的車輛位置
預判修改方向
是否閃避修改方向 物件 線速度 當前物件 當前物件移動方向 當前物件移動速度 預判距離 public bool isdodgechangedir gameobject armsobject,vector3 armsvelocity,gameobject currentobject,vector3 c...
智慧型預判 (三 布局加強)
同時增加心跳,用來同步 資料並 定時批量儲存資料庫。protected override void onstarted 規定時間 檢查一次心跳 public void theout object source,system.timers.elapsedeventargs e 定時器 作用,同步 儲存...
智慧型預判 (二 最初的布局)
不太會畫圖,先簡單看下 程式流程,他比 其他 伺服器 多了 乙個 單獨的 執行緒 內部資料庫 物理運算,也就是 他的運算 不需要 客戶端 時時給資訊。下面是 片段 var bootstrap bootstrapfactory.createbootstrap if bootstrap.initiali...