图7.15 夜间车灯预警系统的示意图。系统通过实时检测车灯轨迹,及时对危险车辆进行预警,从而为路边工作人员(例如交警)争取宝贵的逃离时间。
基于本章的理论知识,我们设计了一个夜间车灯预警系统,如图7.15所示。系统通过实时检测车灯轨迹,及时对危险车辆进行预警,从而为路边工作人员(例如交警)争取宝贵的逃离时间[7]。系统包括三个模块(参见图7.15):1)识别和跟踪车灯,2)正常车灯“区域”的学习与维护,3)对危险车辆的预警。我们将逐一介绍系统三个模块的实现方式。
系统平台运行在智能手机上,考虑到智能手机计算性能的约束,我们采用本章中的二值图处理方法来进行车灯识别。首先,设置一个阈值(例如图像亮度最大值的1/2),从而生成一张二值图{bi,j};然后,采用图7.7所示的串行标注算法,将图像中的各个区域标注出来。为了节省计算开销,在二值图的遍历标注过程中,设置一些累加器,用于记录下:
图7.16 转动惯量可以被进一步用于判断图像区域的形状,然后,和面积一起作为形态学特征,对图像区域进行筛选。图中的数值表示:最小和最大转动惯量的比值λ1/λ2。
其中Lk表示标号为k的区域。同时,还要记录下:
用于后面计算区域中心,同时记录下来的还有:
用于后面计算区域的形状和朝向。串行扫描结束后,根据扫描结果对连通区域进行归并,如图7.7所示。然后,根据连通区域归并结果,将上面的计算结果对应地叠加在一起,生成各个连通区域的对应数据。整个过程中,我们只对二值图进行了一次遍历,较之于传统的连通区域标注算法(需要进行两次遍历),节省了一半的工作量。
根据本章所介绍的方法,我们可以通过上述数据直接计算出:各个区域的面积、中心和转动惯量。转动惯量被进一步用于判断图像区域的形状,然后,和面积一起作为形态学特征,对图像区域进行筛选,如图7.16所示。区域中心将被用于后续的车灯跟踪过程。(www.xing528.com)
受计算性能的约束,我们直接使用经典的匈牙利算法实现两帧图像中(多个)中心点之间的匹配,进而完成对车灯的跟踪,跟踪的结果可以帮助我们进一步区分“车灯”和“路灯”。根据车灯的识别和跟踪结果,我们用所有车灯(的中心点)所构成的凸包,来做为正常车灯“区域”,并定时(例如每隔五分钟)对其进行更新与维护,如图7.17所示。
图7.17 根据车灯的识别和跟踪结果,我们用所有车灯(的中心点)所构成的凸包,来做为正常车灯“区域”,并定时(例如每隔五分钟)对其进行更新与维护。
最后,我们需要实时识别:冲出正常车灯“区域”的车灯,及时发送预警信息给道路旁边的工作人员,例如交警。受智能手机计算能力的约束,我们需要使用一些技巧来减少计算量。如果车灯在正常车灯“区域”的内部,那么,凸包的面积不会发生明显变化,但是,一旦车辆突然冲出正常车灯“区域”,凸包的面积会立刻发生很大变化。因此,可以通过计算凸包的面积,来实现对危险车辆的预警。
为了完成这一任务,我们必须解决的一个熟悉问题是:如何根据多边形的(所有)顶点(x0,y0),(x1,y1),···,(xn,yn)来计算多边形的面积A?事实上,这个问题已经得到了解决,相应的面积计算公式为:
参见习题7.9。受到手机计算性能的约束,实时预警任务对识别和跟踪算法提出了很高的要求。通过运用本章中介绍的二值图处理技术,我们顺利地完成了这一任务,图7.18中给出了系统的实验结果。
图7.19中所示的是系统的测试与验证环境,系统运行在安卓手机上,通过蓝牙通信与智能穿戴设备进行交互,传送预警信号,后面的摄像机记录下实验结果,用于后续的实验效果分析和系统性能评估。
图7.18 实验结果演示。正常车辆直行经过路口,系统对转弯的车辆实时预警。
图7.19 预警系统运行在安卓手机上,通过蓝牙通信与智能穿戴设备进行交互,传送报警信号。后面的摄像机记录下的结果,被用于实验效果分析和系统性能评估。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。