摘要:针对汽车夜间行车时因远近光切换不及时而造成交通事故的问题,本文设计了一套基于OpenMV机器视觉模块的汽车远近光灯切系统,该系统使用python语言编程,采用LAB颜色模型,对采集数据进行图像切割及色块识别,实现对图像的实时处理。场景测试实验证明,该系统具备良好的自适应能力,能够实现对远近光灯智能化调节,从而提高驾驶员夜间行驶的安全系数。
关键词:远近光灯切换 机器视觉 实时处理 0penMV
Key words:Near and far light switch, machine vision, real-time processing, 0penMV 0 绪论随着社会的发展,汽车已经成为必不可少的代步工具,但是汽车行驶中存在很多安全问题,例如夜间行驶时由于远近光灯切换不及时而引发事故,为了解决上述问题,本文设计了一种自动切换远近光的前照灯系统。
目前,有很多研究机构对汽车远近光灯自动切换进行了研究,其中:
江苏省先进激光材料与器件重点实验室的李全彬提出基于光电检测技术实现灯光切换,成本较高且不能完全解决远光危害问题。长春理工大学的邹祖军提出利用光敏传感器探测外界光照强度来变换灯光,但系统的造价高,液晶面板的耐温特性差,此技术尚不成熟。公安部交通管理科学研究所的高岩提出利用车载波雷达感知外界光信息实现灯光切换,成本较高且技术尚不成熟。
但大多现有技术方案均采用光敏传感器采集距离信号,本文将OpenMV机器视觉模块应用于汽车前照灯切换领域,在该领域尚属首次。该模块相比于光敏常感器,能够更及时、更准确的采集到灯光信号并实时处理。基于此模块设计了一款远近光灯切换系统,能够根据外界环境实时的切换远近光灯。在一定程度上辅助驾驶员处理在行车过程中遇到的问题。 1 基本原理 系统结构框图本文所设计的汽车远近光灯切换系统由图像采集与处理、传输通路、处理单元、执行机构四个模块组成。图像采集与处理属于引入的辅助系统,传输通路、处理单元、执行机构属于汽车原有系统。由于汽车原有系统相关的技术已相当成熟,故本文就图像采集与处理作详细阐述。
Fig. 1. System structure diagram
首先,根据夜间行车时外界环境的变化,通过OpenMV机器视觉模块采集特定的图像信息。OpenMV是一个开源、低成本、功能强大的机器视觉模块,集成了OV7725摄像头芯片。其次,通过串口通信将采集到的图像数据传输到STM32F42进行识别处理。最后,通过can总线将ARM处理后的数据传输到汽车的中央处理器上,再由中央处理器控制远近光灯的切换。 1.2图像采集与处理本文将道路场景的视觉信息通过可编程摄像头OpenMV转化为图像数据。其优点是其基于STM32处理器,使用python语言进行编程,耗能小,体积小,编程容易且可操作范围大,而对于机器视觉来说,相比其他传感器,抗干扰性强且相对稳定。在程序编写方面,使用其专用IDE进行编程。
本文采用的颜色模型是LAB模型,LAB模式是由三个通道组成,第一个通道是明度,即“L”。A通道的颜色是从红色到深绿;B通道则是从蓝色到黄色。两个分量的变化都是从-120到+120。当A=0、 B=0时显示灰色,同时L=100时为白色,L=0时为黑色。LAB色彩模型除了上述不依赖于设备的优点外,还具有色域宽阔的优势。
在感光元件参数配置方面,摄像头部分,采用的是2.8mm广角镜头,使用只能通过650nm以内的滤光片以去除红外光对图像采集造成不良影响,在上车实验时,安装位置为车内后视镜背部,镜头与车内后视镜平行。在使用其专用IDE对其进行编程时,其感光元件的初始化参数设置如下:像素模式为彩色(RGB565),每个像素16bit。图像大小为160x120,自动增益与白平衡皆为关闭状态。
在使用openmv录制和拍摄大量夜间行车的视屏和照片后(如下图),经过统计可见在图像下半部分,并无有效信息可以利用,反而存在不少反光或对场景判断不利的信息,所以为了减少不良光源带来的识别误差,采取图像切割的方法设置上半部分为感兴趣区,具体采用ROI的格式为(0,0,160,60)。
Fig. 2. Night Traffic Light Collection map
而对于各种不同的光源进行识别的工作,则是对视屏和照片中有效灯光部分的LAB值进行检测和统计,对路灯,前车尾灯和来车前照灯所造成的光斑进行LAB值提取,则可得到各光源在图片上体现的颜色的不同数值。通过对大量图片及视屏的对比,为了减少不同环境下不同颜色对场景识别的不利影响,则允许色差的存在,将对比后的数据进行分析,得到L、A、B、的误差范围,即△L、△A、△B,而色差△E与△L、△A、△B的关系为:
△E= (△L) ²+(△a) ²+(△b)²(1)
式中:△L=Lmax-Lmin(2)
△A=Amax-Amin(3)
△B=Bmax-Bmin(4)
在确定误差范围后,设定其阈值(Lmax,Lmin,Amax,Amin,Bmax,Bmin)
再设置△E的值使其色差过大时不予响应,以达到提高识别精度的目的。
而在实际场景分辨过程中,由于判断大灯是否开启的逻辑十分简单,即存在路灯,尾灯,和前照灯的情况下为近光灯状态,若不存在时则开启远光,所以为了提高系统的实时性和减少计算量,则可以通过大量统计和分析后得到的阈值与色差范围,直接对图片上灯光造成的色块进行色块寻找。
在获得各灯光在图片上展现的颜色的阈值后及确定色差范围后,在其专用IDE上进行程序编写,实现在感兴趣区寻找对应色块,并对应其寻找结果,发出不同的信号给下一级的功能。 2 场景测试 2.1测试实验与结果本文制作了一个夜间行车的模拟场景来便于实验和展示自适应前照灯系统。以材质均匀的木板拼接成场景基座,并贴上黑色胶布充当轨迹,用寻迹小车模拟汽车行驶。以相同材质木板沿一侧轨迹搭建出一个隧道,入口处不加遮盖,出口处放置一个可抬起的挡板,小车进入时,挡板遮光,在隧道内模拟黑夜场景。小车驶出时,挡板抬起使小车顺利通过。在隧道两侧,以适当距离设置黄色LED,模拟路灯。在挡板上用红色LED、白色LED分别模拟前车尾灯、来车前照灯。在小车前端固定openmv,小车尾部固定一个51单片机,并用杜邦线使openmv与51单片机通信,51单片机上的小灯即模拟汽车大灯模块(为方便观察因此单片机小灯固定在小车尾部)。
Fig. 3 schematic diagram of the simulation scene
Fig.4schematicdiagram of communication between Stm32 and 51 SCM
在进行模拟测试时,小车驶入隧道,控制隧道内相应led亮起。摄像头识别灯光,stm32处理后,将相应数据传输到51单片机,通过单片机上的LED小灯灯光发生变化来体现远近光灯的切换,蓝色LED小灯代表远光,红色LED小灯代表近光。无灯光时,小车上蓝色LED小灯亮。路灯亮时,小车上红色LED小灯亮。前车尾灯时,小车上红色LED小灯亮。来车前照灯时,小车上红色LED小灯亮。