熊晓博,黄颖妍,饶 兵
(武汉理工大学机电工程学院,湖北 武汉430070)
现代社会交通越来越便利便捷,各种货车、卡车以及各种运输车的使用逐渐增多,但由于体型过大,存在很大视野盲区,因而交通事故也频频发生。为了解决这个问题,可通过将多个相机合理布置安装到重型卡车上,构成复眼系统,最后将各个相机图像拼接成全景图供驾驶室监控,以有效解决视野盲区问题。查阅资料后发现,现有复眼系统研究对比如表1所示。
表1 现有复眼系统研究对比表格
针对此,国内外已经有相关复眼系统的研究,但是大多仅能实现图像拼接,不能给出自动适应不同卡车车型的不同相机位置布置方案。基于以上背景,设计了一种复眼数学模型与全景拼接结合的方式,此种方式可以根据车型给出子眼的最优布置方案,使得复眼系统适用性更广。其具有以下优势:将复眼相机系统与大型车辆结合,从而解决了长期困扰人们的车辆盲区问题;该装置同时实现收集和储存垃圾,提高了系统适应性;通过布置模型给出最优解,减少相机数量,降低了成本。
这款系统的设计解决了不同车型卡车视野盲区的问题,适用于各种重型卡车。
该系统主要由布置模块、采集模块、拼接模块、显示模块四个模块组成,系统结构框如图1所示,具体步骤如下:①利用Python与Matlab构建传统成像模型、复眼视野覆盖模型,对坏境数据采集模块观测计算进行矫正,以实现对卡车周围环境的无死角覆盖。通过构建几何光学模型与相机数量、剩余盲区面积等比较指标,计算出相机最优布置方案。②为获得清晰、无畸变的图像功能,为高清摄像头构建完整的硬件采集模块。③用opencv软件对两张有重叠区域的图像进行“缝合”,从而获得无缝隙、无死角、无多余、无迭代的360°全景。对现有拼接技术进行研究,解决现有技术不能有效去除错误匹配点对等问题。④利用OpenGL ES专门用来生成全景图的软件对来自拼接模块的图像信息数据进行计算处理。通过不断调试相应模块数据参数,输出拼接效果,最后分析研究其合成图像准确性,优化算法,达到预定指标后即将信号导入显示器,得到图像。⑤用此复眼系统解决重型卡车的视野盲区问题,减少甚至消除驾驶视野死角,从而在真正意义上提高卡车的安全性和降低事故发生率。
该卡车多子眼自动布置方法基于遗传算法与Matlab软件、Excel软件,其包括单相机视场四棱锥模型、盲区投影模型、遗传算法优化布局模型、最优方案筛选模块及求解代码。
所述单相机视场四棱锥模型以四棱锥代替相机形成的视场。所述盲区投影模型包括正视图投影、侧视图投影、俯视图投影。由于直接求盲区体积计算过于复杂,因此在该模型下,用三视图的盲区投影面积之和代替盲区体积,作为衡量盲区大小的参数。
图1 系统结构框图
所述遗传算法优化布局模型包括目标函数、编码、选择、交叉、变异、解码环节,以盲区大小为目标函数(个体),包括相机个数、视场角等在内的变量为染色体,依次进行种群初始化、染色体编码、适应度分配、选择、交叉重组、变异、解码,这样累代循环,最终得出最优布局方案。该模型的种群初始化、基因编码、选择、交叉、变异等均可依托Matlab遗传算法工具包GADS中的函数进行求解,因此求解的关键在于对目标函数的求解。由于该模型以卡车复眼系统车身正视图和侧视图盲区投影面积之和为目标函数,因此求解的关键在于盲区投影面积的求解。
所述最优方案筛选模块利用Excel进行数据统计,经观察筛选得出最具经济性的最优布局方案。
相关模型如图2所示。
图2 模型示意图
TF接口用于插入内存卡STM32控制主板的核心,使用内部SDⅠO外设驱动内存卡;使用内部的UART与上位机通信;使用SPⅠ运输子相机的图像数据,EXTⅠ(外部中断)用于处理特定的中断输入(如相机的HREF(帧同步信号)),GPⅠO用于模拟ⅠⅠC总线和对相机进行特定控制;DMA在SPⅠ与内存间,内存与SDⅠO间并行地搬运数据。
下面将对CH340和STM32中的外设进行详细介绍。
CH340:CH34是一个常用的USB与串口的转化芯片,用于将UART转为USB,用于与上位机通信,设计简单,使用方便,需要提供一个12 MHz的晶振和几个抗干扰的电容就可以正常工作(因为不用使用RS232接口,所以不用蓄能电容来升压),一般情况下使用说明书提供的推荐电路就可正常工作,在设计时只要注意连线是与STM32中UART特定的输入与输出管脚相连。
STM32中的外设如下。
GPⅠO:STM32的GPⅠO主要用于输入与输出,根据不同的需求STM32位其设计和不同的输入输出方式,如上拉、下拉、浮空和模拟(主要用于内部的ADC)输入,推挽和开漏的通用与复用输出(通用输出通过内部的输出数据缓存其设置,而复用输出为STM32特定内设的输入输出接口)。
UART:STM32的UART可提供强大的功能,但是在本设计中主要用于串口的通信,根据串口的通信协议可知,串口设置有波特率、检验方式、数据位和停止位;在武汉理工大学自主创新研究基金资助项目计划任务书11部UART对数据的传输有特定的标志位,通过将其标志位中断,可以实现数据的接收。
SPⅠ:SPⅠ是一种全双工的串行接口,支持同一个总线上连接多个设备,采用主从式的数据传输方式。STM32中SPⅠ的使用较为简单,首先根据SPⅠ协议对其的工作模式、波特率、触发方式、数据帧格式进行对应设置。
SDⅠO:SDⅠO是一种与SD卡进行通信的硬件接口,其主要对SD协议提供较好的支持,根据SDⅠO协议,与SD卡的通信主要分为命令与数据,其中命令包含(13中基本的命令和ACMD命令),SD接受到命令后将会对命令进行应答(136 bit的长应答和48 bit的短应答)。
DMA:DMA(Direct Memory Access)是一种无需消耗CPU资源,能将数据从一个地址复制到另一个地址的元件,使大规模的数据传输与CPU计算相并行。STM32中的DMA不但支持内存间的传输,还支持外设到内存间的传输。其支持多个通道,使用时主要将其与SPⅠ1、SPⅠ2和SPⅠ3相连,回传照片数据,同时与SDⅠO相连,将数据写入SD卡中。
本项目采用opencv中专门用来生成全景图的组件进行信息采集,使得图像之间相互重叠的部分对准,即图像整合,然后再缝合成一个新的更大画面的视图。
图像拼接是基于图像的虚拟现实系统中建立高度真实感场景的一种基本方法,是全景图生成技术中最关键的一步。基于面积的图像拼接方法和基于特征的图像拼接方法,在基于面积的图像拼接算法的基础上提出一个基于模板匹配的全景图拼接算法,并对此算法进行了研究和讨论。最后在Visual Studio 2017中使用OpenCV 3.4编程对此算法进行了验证。
全景拼接是对两张有重叠区域的图像进行“缝合”,从而获得一张全景图的技术,是利用计算机视觉和图像处理技术构建全景图。其原理是通过在输入的图片中检测关键点和提取局部不变特征,匹配出输入图像之间的特征,利用RANSAC算法得到单应矩阵,从而应用扭曲变换以获得输入图像的拼接全景图。
技术路线如图3所示。
图3 技术路线图
利用OpenGL ES或GoogleCardboard(Google VR)这些专门用来生成全景图的软件,对来自拼接模块的图像信息数据进行计算处理。通过不断调试相应模块数据参数,输出拼接效果,最后分析研究其合成图像准确性,优化算法,达到预定指标后即将信号导入显示器,得到图像。
团队已经设计并搭建了全景采集的复眼照相系统,并已获得专利,因此具有良好的学术氛围与研究基础。
团队已经取得多项软件著作权,包括复眼时钟同步系统、复眼采集数据传输系统、基于STM32与FreeRTOS的复眼相机主板控制程序,为本项目的研究打下坚实的研究基础。
重型卡车复眼系统利用环绕在车身周围的多个子眼拍摄的照片,合成全景图,以供司机观察车子周围的情况。可以完全消除视觉盲区的影响,有效减少交通事故的发生。长期以来,重型卡车等大型车辆发生的事故造成了大量的人员伤亡及财产损失,大部分原因都是这些大型车辆的视觉盲区较大,有时即使是靠近车身的行人与车辆都看不见。复眼系统便捷地解决了这个问题,车身前后左右都在视线之中,为司机及其他人提供了安全保障。图像拼接和显示方面,已有相应的准确可靠的算法,其理论基础是可靠的。本项目也可应用于无人驾驶系统,赋予其可靠的视觉。
本设计主要对不同车型的重型卡车盲区进行监控,比如洒水车、消防车、公路清洁车、油罐车、搅拌车,还有自卸车和货车以及一些不多见的越野车。经过实际校核,该系统可实现较为优化的复眼布置,同时其改变以往单纯依靠经验布置相机的方式,在使用最少数量子眼的情况下实现最大的视野覆盖,实现了布置的自动化,其图像拼接部分实现了视野全覆盖,同时材料和加工无特殊要求,具有很大的应用推广价值。