基于图像处理的智能交通信号系统设计
2024-07-15 来源:elecfans
社会经济逐步发展,汽车制造行业兴起,使我国汽车保有量大幅增加,但城市道路因各种原因无法进行扩建,易导致交通拥堵。在早高峰时间可能出现大量车在等红灯,而另一方向路口却很少有车辆通行。这种固定信号周期控制造成的交通拥堵,大大限制了交叉路口的通行能力。若信号灯绿灯时间可以随着车况进行调整,那这种情况将得以改善。由于人工统计车流量易造成遗漏且过于耗费人力,地下线圈统计则安装成本高且维护困难。
由此可见,一个能随着车流变化的智能交通信号系统尤为重要。在车流密集的道路上增长绿灯时间,在车流稀少的路口相应减少。利用视觉处理的方式避免安装传感器带来的高成本、高维护,减少对人力的投入。
1 系统总体方案设计
针对上述背景,设计了基于图像处理的智能交通信号灯控制系统,该系统在OpenCV 平台的基础上,利用Python语言编写,并以树莓派为主控。在使用过程中连接高清摄像头实时捕捉路上车辆行驶的视频图像,经过OpenCV 计算机视觉库对图像的处理,获取车流辆、车辆排队长度,通过智能算法对下一刻汽车的数量进行预测。根据此计算结果,调整交通信号灯的时间,以此实现智能交通信号,改善交通状况,使十字路口通行更加顺畅。
2 硬件控制核心选择
本设计需要对路面进行抓拍、图像处理以及计算等任务。可以使用OpenMV 硬件或树莓派+OpenCV+ 摄像头。OpenCV 是一个跨平台的计算机视觉库,有着多种计算机视觉的算法。而OpenMV 是视觉模块硬件,本质是一个STM32 单片机。在图像处理方面,OpenCV更占优势;在性能方面,OpenMV 在处理大量数据,运行实时性系统会比较吃力,树莓派性能较高可以搭载OpenCV 运行库,对图像数据进行处理,可以运行更多算法。同时,在公路上一般都装载摄像头,可以直接接入树莓派进行使用,更为方便。故采用树莓派+OpenCV+ 摄像头进行开发较为妥当。
3 系统程序设计
首先利用OpenCV 库对视频流进行获取,对路面的车流的每一帧进行处理,调节合适的参数使车辆凸显出来,并使用帧差法实现目标跟踪,用虚拟线圈法进行统计车流量。把得到的平均车流量、车辆排队长度输入到模糊控制器中得到一个更加合理的绿灯时间。程序设计流程如图1 所示:
图1 程序设计流程图
3.1 图像预处理
在图像预处理中,需要对形态学进行了解。这是对图像处理和描述的有力工具,其在计算机视觉、数据处理方面有着广泛的应用。
视觉图像处理就是运用数学形态学,它可分为二值形态学和灰度形态学。其主要的运算就是腐蚀( 式1)、膨胀( 式2)。腐蚀会缩小白色部分,使轮廓更加的细化,一般处理用于处理离散点,将两个不同物体的连接断开。膨胀会增大白色部分,使轮廓更加粗壮,一般处理一个物体内部像素点不全的问题。
在此过程中,设置腐蚀、膨胀内核,使用Numpy 库进行进行卷积核的设定kernel = np.ones((6, 6), np.uint8)更改数值可以对核的形状和尺寸进行设定。即可得到一个尺寸相同的矩阵。这时就可以对矩阵中选定的形态,进行腐蚀、膨胀将形状提取出来。二值化图像如图2 所示、腐蚀膨胀结果如图3 所示:
3.2 车流量检测设计
1)车辆目标跟踪
车辆目标跟踪采用帧差分法进行目标跟随通过cv2.cvtColor()函数对这这一帧与上一帧图像转为灰度图像,并通过高斯滤波消除噪音,以减小光线变化或摄像头轻微晃动引起的噪声,而后使用cv2.absdiff() 对这附近两帧进行差分,得到两张图的差异之处。采用二值化处理,将车辆从图中提取出来。最后将两帧图片变化的地方进行腐蚀、膨胀处理,获得更加明显的差异。并不断迭代形成一个连续的图像。但这种方式精度略低,可以使用改进方法:多帧间差分法[1],将当前帧、前后相邻两帧像素的灰度值进行运算,通过3 帧图像差分得到完整目标轮廓。
通过上述方法获得差异,利用cv2.findContours 进行对所有轮廓点的储存,并将轮廓添加到原始帧中,从而持续跟踪目标。目标跟踪算法如图4 所示:
图4 目标跟踪算法
2)虚拟线圈计数法
这种方法与传统的在路面下方安置物理线圈类似,但物理线圈有着维护费用高,易造成道路损坏等问题。使用虚拟线圈计数成本低,检测也更为方便。运用视觉处理,以道路单一方向的车流为基础,在视频的中央处垂直与车道线画一条虚拟检测线。每当车辆穿过这条检测线时,车流量计数加一,并在这辆车离开摄像头的范围将其计数减一。通过这种方式实时记录车流量。
在判断车辆是否穿过这条虚拟检测线,利用数学几何中的叉乘。以下为正方向时,车辆1 在线圈上方AC×AD 即为正、车辆2 在线圈下方BC×BD 为负。可得知在线圈上方时结果为正,下方为负。所以当观察到的目标计算值由正变为负时,就可以确定有车穿过了虚拟线圈,进而实现计数功能。虚拟线圈理论示意图如图5 所示、车流量计数测试图如图6 所示:
3.3 车辆排队长度获取
要完成对车队长度的测量,需将图像二值化处理将背景与车辆进行分离。利用基于模板的快速单车道提取[5], 这是一种模板化的方法,由于车道线在任意一帧图像中的位置是不变的,因此可以利用模板图像对任意一帧图像进行模板化处理,以直接完成该帧图像的单车道提取。由于图片的横向缺失故需进行膨胀处理,使白色图像更加丰满,最后对像素长度进行获取,得到图片中车辆的排队长度。车辆排队长度程序设计流程图如图7所示:
图7 车辆排队长度程序设计流程图
3.4 模糊控制器设计
一般十字路口变化基本为:①南北直行绿灯、东西直行红灯50 s。②南北路口黄灯闪烁3 s、东西路口继续红灯。③南北直行路口红灯、东西直行路口绿灯50 s。④南北直行红灯、东西路口黄灯闪烁。这4 个反复循环是十字路口的基本规则,南北或东西路口的左转、右转都穿插在这直行信号之间,使各个车辆能够安全地通过。但车流量会随着交通情况实时改变,很难建立一个完美的信号周期。由于模糊控制是一种基于特定规则和专家经验的控制思路,于人们的认知诞生的算法,它不需要特别精确的数学模型也可以得到想要的效果。故采用模糊控制策略得出相对合理的、符合当时道路的交通信号周期。
1)参数设置
模糊化处理是将获取到的南北通行平均车流量Rsn 、东西通行平均车流量Rew 、南北车辆排队长度Lsn、东西车辆排队长度Lew 这4 个参数进行模糊评级。将车流量密集程度分为4 个等级拥堵、稠密、正常、基本没有车辆通行并对其分别赋值9、6、3、0。给车辆排队长度也分为4 个等级极长、长、一般、基本没有车辆停止,也分别赋值为4、3、2、1。在进行模糊化后开始模糊推理,由于模糊推理的输出结果是模糊量,需要使用式(3)(4)得出清晰化结果。模糊控制器算法设计图如图8 所示:
图8 模糊控制器算法设计图
2)参数获取与优化算法
当处于①信号状态时,获取南北通行平均车流量Rsn 处于②状态时获取东西车辆排队长度Lew 、处于③状态时获取东西通行平均车流量Rew 、处于④状态时获取南北车辆排队长度Lsn 。
在进行①②③状态后于④状态的黄灯时间,整理获取到交通情况的各个参数后,开始对新一轮的南北绿灯时间Tsn和东西绿灯时间Tew进行评估(K 默认为1)。
通过这样的方式不改变信号周期的总时长 ,当哪个方位车流量增多,并以排队时间之比进行倍增,对于不同情况可以调节K 值,减小或增大ΔT 的范围,提高了本优化算法的适应性,使其更加适合交通情况。
4 结束语
本文主要介绍了基于图像处理的智能交通信号系统,利用目标跟踪与虚拟线圈法得到路口车流量的稠密程度,并设计了模糊控制器,它可以根据车流量、车辆排队长度对路口的绿灯时间进行适当调整,这种能够按照交通路口拥堵程度自行更改绿信比的智能交通信号系统可以大大提升十字路口的通行效率,使社会资源分配的更加合理,有效解决交通拥堵的现象。
参考文献:
[1] 宫金良,陈涛,张彦斐,等.一种基于多区域信息融合约束的改进帧间差分目标检测与跟踪算法[J].江苏大学学报(自然科学版),2022,43(3):302-309.
[2] 文丰,王乐群,张凯华.基于ZYNQ加速的帧差法运动目标检测[J].单片机与嵌入式系统应用,2022,22(6):74-78.
[3] 李春明,杨姗,远松灵.结合帧差法与窗口搜索的车道线跟踪方法[J].太赫兹科学与电子信息学报,2022,20(4):372-377.
[4] 黄大君,吴昊.基于虚拟线圈的车速检测算法研究[J].兰州文理学院学报(自然科学版),2020,34(1):76-81.
[5] 林彬.基于图像处理的智能交通信号灯控制系统的研究[D].哈尔滨:哈尔滨工业大学,2011.