图像处理车辆碰撞预判
固定摄像头位置对车辆进行拍摄,通过图像处理来预判两个车辆能否发生碰撞。这是这个程序的入手点。
通过模拟我用手机拍摄了三幅图像,第一幅是背景(用来模拟真实情况没有车的时候),第二幅是第一时刻有车辆的图像,第二幅是下一时刻的图像。通过三幅图像我只需定义两个图像之间的拍摄时间差就可以得到车辆的移动速度,从而能够进行碰撞的预测。
图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 预测后的车辆位置
在这里灰色表示的是下一时刻移动的位置,白色是上一时刻的位置,这里选择的两幅图像时间差定义为10s。