基于机器视觉的交通灯控制系统设计

  • 摘 要
  • Abstract
  • 引言
  • 1 课题背景
    • 1.1概述
    • 1.2传统交通路口信号灯
    • 1.3基于机器视觉的交通灯控制智能系统
      • 1.3.1国内研究现状
      • 1.3.2国外研究现状
      • 1.3.3目前主流方式
    • 1.4课题任务分析
    • 1.5论文结构
  • 2 开发环境和相关技术介绍
    • 2.1视觉检测
      • 2.1.1树莓派
      • 2.1.2 OpenCV
      • 2.1.3 USB摄像头
    • 2.2硬件控制技术
      • 2.2.1 STM32
      • 2.2.2 74HC595数码管模块
      • 2.2.3信号灯
  • 3需求分析
    • 3.1可行性分析
      • 3.1.1技术可行性分析
      • 3.1.2经济可行性分析
      • 3.1.3社会可行性分析
    • 3.2功能性需求
      • 3.2.1概述
      • 3.2.2交通灯控制
      • 3.2.3图像采集
      • 3.2.4图像处理算法
      • 3.2.5分析通过路口的需求
    • 3.3非功能性需求
      • 3.3.1环境需求
      • 3.3.2系统完善需求
  • 4 概要设计
    • 4.1总体设计
      • 4.1.1概述
      • 4.1.2交通灯控制
      • 4.1.3图像采集
      • 4.1.4图像处理
      • 4.1.5需求分析
  • 5 详细设计
    • 5.1系统硬件控制设计
      • 5.1.1交通信号灯
      • 5.1.2紧急情况的中断
      • 5.1.3 串口通信
    • 5.2视觉算法设计
      • 5.2.1图像采集
      • 5.2.2图像处理
      • 5.2.3 数据统计与分析
  • 6 系统测试
    • 6.1硬件模块测试
      • 6.1.1正常情况下
      • 6.1.2紧急情况下
      • 6.1.3改变路口车流量
  • 6.2 动态识别模块测试

摘 要

随着工业自动化和汽车行业的发展,汽车数量猛增,导致交通故障和城市交通拥堵发生的现象越来越频繁。即使道路日益扩宽,但仍无法解决现有存在问题,交通环境问题仍日趋严重。为了解决该问题,本文对交通灯配时控制器展开设计和研究,提出了一种基于机器视觉的交通灯控制方法。该交通灯能够根据实时车流信息进行智能配时,从而减少交通路口车辆的无故滞留,提高路口的通行效率。
本系统对智能交通灯的硬件结构和软件算法进行了详细的设计。基于机器视觉的智能交通灯硬件平台处理核心由STM32协作。功能上,系统由图像采集模块、图像处理模块和电源模块组成。图像采集模块中,由两个摄像头进行路口的图像采集。图像处理模块以树莓派搭载的opencv为核心,对图像进行中值滤波去噪、背景提取和更新,以及背景差分算法后,利用阈值分割出运动车辆前景的二值化图像。通过改进的加权面积法从二值化前景图像中统计路口运动车流信息,包括车辆的有无、车辆的多少状态。综合各路口的车流信息,对路口的红绿灯进行最优配时。电源模块给系统提供稳定可靠的多种工作电平。最后,建立实物模型对该智能交通灯进行了功能的验证。结果表面图像采集模块能够正常的采集该系统能够通过图像处理对路口车辆信息进行正确的提取,在典型的路况下,智能交通灯能够进行合理的红绿灯配时。
关键词:机器视觉 图像处理 OpenCv 交通灯 STM32通信

Abstract

With the development of industrial automation and the automotive industry, the number of cars has increased rapidly, leading to traffic breakdowns and urban traffic congestion more and more frequently. Although the roads are being improved, the fundamental problem cannot be solved, and the traffic environment problem is still getting more and more serious. In order to solve this problem, this paper designs and studies a traffic light timing controller and proposes a vision-based traffic light control method. The traffic light can be intelligently timed according to the real-time traffic flow information, thus reducing the unexplained detention of vehicles at traffic intersections and improving the traffic efficiency of intersections.
This project will provide a detailed design of the hardware structure and software algorithm of the intelligent traffic light. The hardware platform processing core of the vision-based intelligent traffic light is collaborated by STM32. Functionally, the system consists of an image acquisition module, an image processing module and a power supply module. In the image acquisition module, the image acquisition of the intersection is carried out by two cameras. The image processing module uses opencv on board the Raspberry Pi as the core, and after median filtering and denoising, background extraction and updating, and background differencing algorithm, the binarized image of the foreground of moving vehicles is segmented using threshold values. The information of moving traffic flow at intersections is counted from the binarized foreground image by the improved weighted area method, including the presence or absence of vehicles and how many states of vehicles. The traffic flow information of each intersection is integrated to optimize the traffic light timing of the intersection. The power supply module provides stable and reliable multiple operating levels to the system. Finally, a physical model is established to verify the function of this intelligent traffic light. The result is that the surface image acquisition module can properly acquire the system can correctly extract the intersection vehicle information through image processing, and the intelligent traffic light can carry out reasonable red light timing under typical road conditions.
Keywords:Machine Vision; Defect Detection; Image Processing; RaspberryPi; OpenCv

引言

以前的交通信号灯管理系统由于信号灯单独分开、控制信号灯还要到交通现场控制、全市区的交通情况得不到及时反馈,缺少全局的交通信号平衡管理的能力,从而导致交通的效率日益低下。由于许多市里面的红绿灯大多为数年前建设,当时城市初步发展阶段,无论是人流量还是车流量都较少。
而近几年来,中心城市发展迅猛,人流、车流量猛增,原有的红绿灯设置已逐渐不能满足需求,所以部分路口红绿灯存在一定程度上的不合理问题。另外由于车辆的迅速增加,每年以高速的递增,由此给道路管理特别是红绿灯设置问题带来了影响。许多交通负责人都认识到:鉴于红绿灯问题日益突出,交通部门要着手对全区的红绿灯进行整体研究,摸底调查,全面分析,定期对各路口红绿灯进行检查。根据道路车辆流量流向分析,以保证主向交通顺畅。随着社会经济的发展,出现了交通阻塞,交通事故发生频率高,交通环境污染,交通治安混乱等一系列问题,严重影响着当前社会经济的发展和人民的生活,而同时交通设施的建设存在普遍滞后的状况,解决这些问题是当前所需,也是刻不容缓的。这时智能交通信号管理系统在此发挥了重大的作用
目前的智能交通灯控制系统有以按预订时间段改变通行时间的,有通过加压电式传感器测量车辆停留时间改变信号灯跳变时间的、还有通过铺设地感线圈检测车流量来控制交通灯跳变的,这些方法或者造成等时浪费或者由于建设成本高而使其发展受到阻碍。通过视频检测技术检测十字路口各车道车流情况,将各个车道车辆信息汇总后通过智能控制系统的调控,及时改变路口交通信号灯跳变周期,尽量减少车辆等时,在一定程度上可以有效提高城市道路交通运行效率。另外,该系统可以直接在现有交通系统上进行实施,具有安装方便、开发成本低的特点。
使用树莓派作为主要控制,能够有效的对图像进行处理与分析
使用STM32作为模拟交通信号灯的控制芯片,能够较为直观模拟实际十字路口的红绿灯状态。
使用opencv开源免费平台,由python编程语言撰写代码量降低,易于读写。
结合上述优秀软硬件平台完成智能系统的设计,并通过各个模块单独测试,以及系统整体测试,该系统具有一定稳定性与准确性。
本文涵盖了课题背景,需求分析,各框架简单介绍,各模块的阐述,功能设计和算法设计。旨在基于机器视觉的交通灯控制智能系统,实现自主调节红绿灯时间,优化城市路口的问题。

1 课题背景

本章的内容阐述了本次课题的研究背景,介绍传统模式下的交通信号灯控制以及机器视觉的交通灯控制系统的方法和区别,并分析基于机器视觉的交通控制系统的未来实际应用场景以及发展需求,描述了课题需要完成的任务和本篇文章的论文结构。

1.1概述

交通运输是一个综合性极强的行业,它涉及到了很多方面包括:道路、车辆、人、能源、环境等,它在城市经济发展进程中取到了至关重要的作用,更是可以说便利、和谐的交通是一个城市现代化的必要条件。研究表明,汽车产业能以1:2的增加比例促进上游产业的发展,而在全世界较发达的城市中,汽车产业对城市中下游相关的产业能起到几乎100%的带动作用[2]。而经济的发展又能促进汽车的发展。随着科技、工业和济的迅猛发展,我国刚刚经历了机动车辆发展最快的十几年,机动车尤其是私家车的数量大幅度增长[3]。我国大部分城市进入汽车化社会,因此带来了越来越多的交通故障和城市交通拥堵,直接导致汽车的运行工况恶劣、交通时效低、能源浪费、汽车尾气多余的排放等一系列交通问题,给经济造成了巨大的损失。造成这一系列交通问题的原因主要有以下三点:
路口条件较差,如道路较窄,路面不平整,直接制约了车流量的大小;
交通流量过大,如一些繁华的商业地带,车流庞大,一般的路口无法承担;
红绿灯配时不合理,车辆总是会不必要的滞留。
在我国,近几年也在大力加强交通道路的改善工作,道路基础设施建设不断的扩大,对改善我国交通现状起到了一定的作用。但是随着绝大多数的城市进入汽车社会,汽车数量的增多已经远远超过了修建道路的速度,单纯的依靠在有限的城市土地资源上扩宽道路和修建高架已经逐渐满足不了人们对道路交通的需求。国内城市交通的状况还是在日趋恶化。政府也出台了一些政策用于减少私家车出行,如限制车辆单双牌照出行、限量的发放牌照等政策。这些政策在一定程度上起到了暂时缓解交通压力的作用,但却无法从根本上解决问题,而且还会制约汽车行业的发展。
针对于交通灯配时不合理这一原因,随着计算机技术、传感器技术、电子技术和智能控制等高科技领域高度的发展,通过信息化的手段实现的智能交通系统(Intelligent Transport System,ITS)管理调度交通资源,给解决当前道路交通故障问题提供了一条有效的出路[4]。国内几乎所有交通路口的交通灯都是采用定时分配方式,在郊区或是夜晚车流量不大的路况下,在十字路口经常会出现以下情形:左右两边车道均无车辆等待或都已放行完毕时,但本车道还需不必要的停车等待绿灯放行;另外,在十字路口其他三个象限均无车辆时,有一辆车正要正常行驶穿过十字路口,红绿灯却突然变成红灯,结果则导致车辆必须停车等待一个红灯的周期。根据路口实时的车流信息结合智能控制算法来实现交通路口红绿灯的智能配时,能够有效的解决这个问题。
交通流的检测技术是智能交通系统决策的依据,是智能交通灯的基础。早期,经过数十年专家学者的研究,传统的交通流的检测方法主要有磁感应线圈、超声波、微波、声频、红外线等[5]。但随着图像传感器和图像处理技术的高速发展,基于机器视觉来获取车流信息的方法,逐渐有取代传统方法的趋势。
基于视觉的智能交通灯通过图像传感器采集交通路口的图像信息并进行存储,再利用这些采集的图像信息结合数字图像处理方法得到路口的车流信息,最后综合每个路口的车流情况通过微处理器实现控制算法智能的控制交通红绿灯最优化的配时。它具有以下优势[6]:
1)系统只涉及到图像传感器和处理单元,因此安装维护简便。安装维护期间不用翻修破坏道路,不会影响车辆的正常行驶;
2)可同时提供图像监视和多种交通数据信息;
3)检测范围大,可靠性高,实时性好;
4)使用寿命长,绿色环保无污染。

1.2传统交通路口信号灯

传统的交通路口往往才用固定时间的红绿灯模式,即每次红绿灯的时间都是一样的,只能通过人为的方式修改红绿灯的时间,并且如果需要修改红绿灯的的时间很麻烦,这样的方式对于今天日益复杂的交通状况显然很难满足路口的通行需求。
传统的交通路口对突发事件的处理能力不足。例如,在某一方向上没有车辆通行或者只有少数几辆汽车,但是因为预先设置固定的红绿灯时间,此时另一侧的交通压力很大,但是必须等待,这样势必造成交通压力的剧增。因外一种情况是,目前的十字路口,当有特种车辆(执行任务的救护车、消防车、警车等等)只能通过靠前面车主的礼让方式通过,信号灯不会自行改变,这样势必会耽误救援的时间。因此改变传统的路口交通信号灯十分具有必要。

1.3基于机器视觉的交通灯控制智能系统

1.3.1国内研究现状

国外汽车化的进程比我国早几十年,交通问题的出现也更早,所以从 20世纪70年代末国外的一些专业人士就开始研究基于图像的方法的智能交通系统。随着计算机行业和电子信息行业的发展,美国加州帕萨迪纳市的JetPropulsion 实验室第一次提出了利用机器视觉检测交通信息的新型方法,并且预言了其未来良好的发展前景。同时期,欧洲和日本也开始了视频车辆检测技术的广泛研究[7]。1987年,第一台由美国ISS 公司(Image Sensing System)开发的视频检测系统AUTOSCOPE原型机诞生,它采用了美国明尼苏达大学交通工程系的视频检测算法[8]。AUTOSCOPE是机器视觉应用于交通检测的代表性产品。该系统的硬件核心主要是由一台286(或386)微机、多个电路模块和一台普通工业电视摄像机组成[9]。该视频检测系统中,微机利用摄像机采集回的交通道路上的图像信息进行数字图像处理和分析,能够同时检测出多个车道的交通信息包括:车流量、车辆存储、行驶速度、机动车类型、车辆排队等,并且可以将图像存储在录像带中进行离机分析[l0]。1989年,ISS公司正式推出了用于外场车辆检测的第一代产品 AUTOSCOPE 2002视频车辆检测系统。1993年的AUTOSCOPE 2003能够实现全天候的交通信息检测。AUTOSCOPE系统具有非常高的准确性和可靠性,这一点之后美国SRF Consulting Group 公司给明尼苏达州运输部的测试结果中指出[1]。AUTOSCOPE系统不仅证明了基于视觉检测交通信息的可行性和可靠性,更展现出这种方法对比于传统检测方式的巨大优势和未来交通检测的发展方向。

1.3.2国外研究现状

经过20多年的发展,美国ISS公司的AUTOSCOPE系统已经开发出来了很多成功产品,并且逐渐的成熟和可靠,兼容各种工业标准,具有良好的使用效果,已然成为全球安装使用最为广泛的视频车辆检测系统。其产品遍布在欧洲、美洲、亚洲等许多国家的智能交通系统中,赢得了全世界专业人士的一致好评。另外,当下市场中常见的视频车辆检测系统还有美国ITERIS公司的vantage、英国PEEK 公司的IDS和新加坡电子科技公司的cetrae TMS2000等,这些系统也都发展的比较成熟,具有良好的性能[12]。

1.3.3目前主流方式

现阶段,大多数都是以PC机为处理核心,主要还是因为PC机有着当下最为高速的运算能力和成熟的技术。国内很多高校和科研机构也都在深入研究交通视频检测方面的课题,大多数都是研究基于PC平台的数字图像处理算法,如何最优化的从交通视频中提取出运动的目标,从而提取交通流信息;也有研究基于TI公司C6000系列DSP实现的交通流视频检测系统。由于国内在汽车行业和计算机行业都起步比较晚。现在,国内也有多家研究机构如海康威视、浙大中控等公司推出基于视频监控的交通检测系统[13],但这些系统的功能和性能整体上都不如国外的产品。国内目前绝大多数交通路口都安装了视频监控系统,它们能将路口的交通图像信息传至交通控制中心服务器,自动的进行违规检测牌照、交通录像。但对于交通事故、智能的交通调度等工作需要工作人员配合才能完成。国内在交通视频检测领域的水平跟国外还有一段差距,但作为一个热门研究方向,随着投入的越来越多,在稳步快速的发展和趋于完善。

1.4课题任务分析

本课题是针对于这一问题现状,本文主要介绍了一种低成本、易安装、简洁的基于视觉的智能交通灯的设计和实现方法。该智能交通灯以硬件控制和图像处理为核心,能够脱离PC机运行,不用铺设通讯线路。该系统能独立的、实时的检测出交通路口交通流信息,并依据车辆滞留情况智能的进行交通灯配时。本文设计的基于视觉的智能交通灯系统具有小型化、低成本、低功耗、易于安装维护等一系列优点。
具体完成以下任务:

硬件部分:

  1. 南北方向车道和东西方向车道两条交叉道路上的车辆交替运行,每次通行时间都设为23秒,然后红灯时间为20秒,时间可设置修改。
  2. 在绿灯转为红灯时,要求黄灯先亮3秒钟,才能变换运行车道;
  3. 能够根据树莓派传输的信息进行红绿灯时间调控,主要分为以下几种情况:
    (1)某一方向上的车辆比另一方向的多,能够在下一个红绿灯周期减少该方向上红灯时间,增加绿灯时间。
    (2)某一方向上有车,另一方向无车,能够直接把有车方向的交通灯变为绿灯让车辆通行,另一方向直接变成红灯。
  4. 东西方向、南北方向车道除了有红、黄、绿灯指示外,采用数码管进行显示(采用计时的方法)。
  5. 一道有特种车辆(实验时用开关 K1 和 K2 控制),交通灯控制系统能立即让该方向放行,无特种车方向禁止通行。
  6. 在出现紧急情况(实验中用开关K3控制)时可由交警动手实现全路口车辆禁行状态(即所有方向均为红灯)。

图像处理:

  1. 能够静态识别车辆(采用模型小车替代真实车辆),统计两个方向的车辆数目并根据不同情况发送不同代码给STM32。
  2. 能够统计实际道路视频中的车辆数目,实现动态识别。

通信:

  1. 实现STM32与树莓派的串口通信
  2. 树莓派能够发送相应的信息给STM32,STM32能够反馈信息确保接收到

1.5论文结构

本篇论文结构,详细说明如下:
摘要(Abstract):对本论文全文内容的提要。
引言:描述本课题总体思想,提纲振领,总揽全局。
第一章课题背景:着重说明了研究背景,项目意义、国内外的研究现状以及本文的一个行文结构
第二章开发环境和相关技术介绍:分别从视觉处理和硬件设计说明。
第三章需求分析:着重从可行性,功能性等方面展开讨论。
第四章概要设计:在需求分析的基础上,将其转化为系统原型
第五章详细设计:全面细致的讲述整个项目的具体实现方法。
第六章系统测试:本章对系统展开进行测试,能否与本课题需要实现的任务契合。
第七章总结与展望:对本课题的一些总结与收获,并对未来该项目的展望 。
参考文献。

2 开发环境和相关技术介绍

本章节主要介绍了基于机器视觉的交通灯控制智能系统所使用到的开发技术和工具,分别从视觉检测和硬件控制介绍。

2.1视觉检测

2.1.1树莓派

树莓派由注册于英国的慈善组织“Raspberry Pi 基金会”开发,Eben·Upton/埃·厄普顿为项目带头人。2012年3月,英国剑桥大学埃本·阿普顿(Eben Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板,中文译名”树莓派”。
自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。自从树莓派问世以来,经历了A型、A+型、B型、B+型、2B型、3B型、3B+型、4B型等型号的演进。2019年6月25日,树莓派基金会宣布树莓派4B版本发布,其开办板功能介绍如图所示。

树莓派4b开发板采用了当下最流行的Type-C供电接口使用便捷;提供了网卡用于链接wife,可通过远程桌面链接服务Xrdp链接树莓派,从而在windows环境下也能进行开发,节省了外接显示屏的成本;其提供的Usb3.02高速口和Usb2.02口共计四个usb接口,且Usb接口版本向下兼容,非常契合本课题所使用到的3个Usb2.0摄像头。

上面是树莓派4b的GPIO引脚图,共40pin,以20*2阵列分布。包含有2个5V和2个3.3V恒压电源引脚,8个GND引脚。原则上树莓派每个引脚都可以作为输入输出使用,但不见建议如此做,则优先选择其余28个引脚作为通用信号引脚。
引脚具有4种模式,普通输入(INPUT),普通输出(OUTPUT),PWM输出(PWM_OUTPUT),支持CLOCK输出模式,。通常作为输出模式时,设置为高电平(HIGH)状态时,提供3.3V恒定电压,设置为低电平(LOW)状态时,电压接近0V。因为Io口功率输出较低,输出能力有限,通常不能直接为原件供电,容易造成引脚烧毁,如驱动电机时需要外接驱动板和电源。
当作PWM输出时,可使用软件配置PWM的频率和脉冲宽度,能够非常简单有效的控制舵机。但需要注意的是除了GPIO 18引脚外,树莓派PWM波的输出是利用软件完成的,输出能力较弱。
作为输入模式时,可以监听引脚上的高低电平变化,从而回应传感器发出的信号调用回调函数做出相应的操作。
在软件中通过不同的方式初始化引脚后,是通过不同的编码进行控制。在PWM输出时需要保持程序处于运行中。

2.1.2 OpenCV

OpenCV,全名为Open Source Computer Vision Library,是 Intel公司资助的开源计算机视觉库。它由一系列C函数和少量C++类构成,提供了针对各种形式的图像和视频源文件(如: bitmap图像,video文件和实时摄像机)的帧提取函数和很多标准的图像处理函数,实现了图像处理和计算机视觉方面的很多通用算法。其重要特性包括:
(1)拥有包括300多个C函数的跨平台的中、高层API。它不依赖于其它的外部库一尽管也可以使用某些外部库。
(2)对非商业应用和商业应用都是免费的。
(3)为 Integrated Performance Primitives(IPP)提供了透明接口。这意味着如果有为特定处理器优化的的IPP库,OpenCV将在运行时自动加载这些库。下图为OpenCv模块构成。

本课程设计选用opencv的优势在于:

  1. Python代码,源代码开放。
  2. 丰富的函数功能,强大的图像和矩阵运算能力:OpenCV提供了数组、序列、矩阵、树等基本结构,也包含了差分方程求解、傅立叶分析、积分运算、特殊函数等众多高级数学计算函数,以及各种图像处理操作和目标跟踪、摄像机校准、三维重建等高级视觉函数。
  3. 平台无关性。基于OpenCV开发的程序可以直接在Windows,Unix,Linux,MacOS x,Solaris,HP等平台之间相互移植,无需对代码进行任何修改。
  4. 方便灵活的用户接口。OpenCV作为一个开放的计算机视觉函数库在使用上必然没有Matlab那样解释执行来得方便,而Softlmegration将CH和OpenCV绑定起来推出的CH OpenCV,解决了这一使用上的瓶颈。
  5. 可嵌入性:与C/C一编译器不同。Ch能嵌在C/C++应用程序和硬件的机器脚本中。它为用户减轻了开发维护应用程序庞大机器代码的沉重负担。统一的结构和功能定义,基于Intel处理器指令集开发的优化代码。可见,作为一个基本的图像处理、计算机视觉和模式识别的开源项目,OpenCV可以直接应用于很多领域,作为二次开发的理想工具。

2.1.3 USB摄像头

摄像头在计算机视觉中视作机器的眼睛,起着直接获得图像的用途。通常由镜头和图像采集卡组成,协同实现光学信号到机器可辨识的数字信号的转变,压缩并上传至机器。需要根据不同的应用场景,选择合适的焦距,分辨率,帧率等。
本课题选择了AX-2930-176V1.0的USB高清宽动态1080P摄像头模组,该摄像头输出接口为USB2.0,镜头毫米数为3.6mm适用于0-3m的拍摄距离。下图为 AX-2930-176V1.0摄像头模组。摄像头实物图如下图所示。

表2.1 AX-2930-176V1.0摄像头参数

类别参数
分辨率640480/1280720/12801024/19201080
像素200万
帧率30fps
信噪比39db
输出格式MJPG/UVC/YUY2(YUYV)
接口类型USB2.0免驱
功率2W
工作电压5V
适用操作系统Windows/Android/Linux

通过查找资料,摄像头的参数图表2.1所示,下面结合本课题拍摄环境对相机几个重要参数进行分析。

  1. 帧率:由于本系统检测速度要求为3s/个,因此30fps的帧率可以满足要求。
  2. 接口类型:树莓派提供4个usb接口可以保证能够同时接入3个摄像头。
  3. 工作电压:系统采用Type-c供电,电压为5V,因此摄像头的工作电压为5V可以满足系统要求。
  4. 适用操作系统:本摄像头能够适合Windows/Android/Linux系统,方便系统开发前期电脑调试。
  5. 分辨率:本摄像头有多种分辨率,因此能够方便我们调整分辨率适应系统的要求。

2.2硬件控制技术

2.2.1 STM32

STM32单片机主要是由意法半导体公司设计的微控制器,其具有低功耗、低成本和高性能的特点,适用于嵌入式应用。其采用ARM Cortex-O内核,根据其内核架构的不同,可以将其分成一系列产品,当前主流的产品包括STM32F0、STM32F1、STM32F3,具有超低功耗的产品包括STM32L0、STM32L1、STM32L4等。由于STM32单片机中应用的内核具有先进的架构,使其在实施性能以及功耗控制等方面都具有较强表现,因此在整合和集成方面就有较大的优势,开发起来较为方便,该类型的单片机能非常迅速地实现开发和投入市场,当前市场中这种类型的单片机十分常见,类型多样,包括基础型、智能型和高级型等,应用都比较广泛[1]。本次课程设计我们根据实际情况与现有材料相结合,最终选用STM32F103芯片。STM32F103芯片架构简图如下图所示。

从STM32F103系统框图中可以看出,AHB 总线延伸出来的两条 APB2 和 APB1总线,上面挂载着STM32各种各样的特色外设。我们经常说的 GPIO、串口、 I2C、 SPI这些外设就挂载在这两条总线上,这个是我们学习STM32的重点,在此次的课程设计过程中,我们需要对使用各种的外设去模拟实际上十字路口上交通灯的变化情况。

2.2.2 74HC595数码管模块

74HC595数码管模块搭载了SM74HC595,SM74HC595是硅结构的CMOS器件,兼容低电压的TTL电路,是 8 位串行移位寄存器,带有存储寄存器和三态输出。移位寄存器和存储寄存器分别采用单独的时钟。遵守JEDEC标准。它的主要功能是8位串行输出移位寄存器,也就是串行转变为并行。 其封装图如下图所示

由SM74HC595各个引脚符号所对应的描述如表2.2所示:
表2.2 SM74HC595引脚功能表

符号引脚描述
Q0~Q7第15脚,第1~7脚8位并行数据输出
GND第8脚
Q7’第9脚串行数据输出,级联输出端,接下一个595的DS端
MR第10脚低电平有效,清空移位寄存器中已有的数据,一般不用,接高电平即可
SH_CP或SCK第11脚移位寄存器时钟引脚,上升沿时,移位寄存器中的数据整体后移,并接受新的数据(从DS输入)
ST_CP 或RCK第12脚存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。
OE第13脚低电平有效,输出使能控制脚,所以接GND
DS第14脚串行数据输入引脚
VCC第16脚电源

74HC595数码管模块是一个8位串行输入、平行输出的位移缓存器:平行输出为三态输出。在SCK的上升沿,单行数据由SDL输人到内部的8位位移缓存器,并由Q7输出,而平行输出则是在LCK的上升沿将在8位位移缓存器的数据存人到8位平行输出缓存器。当串行数据输人端OE的控制信号为低使能时,平行输出端的输出值等于平行输出缓存器所存储的值。而当OE为高电位,也就是输出关闭时,平行输出端会维持在高阻抗状态。串行输入,并行输出。
在我们的课设实际过程中,由于需要模拟十字路口情况,需要四组两位的数码管,考虑到由于使用普通数码管会极大的占用硬件的IO资源,而且各种线路十分复杂,不利于我们完成本次课程设计。使用74HC595数码管模块虽然会增加预算,但是保障我们团队后续的工作。下图为我们使用的74HC595数码管模块实物图。

2.2.3信号灯

在实际生活的十字路口交通过程中,不仅仅有数码管倒计时,也有红绿灯指示灯。为了更好的模拟十字路口的情况我们购买了LED红绿灯模块,用来模拟实际道路的红绿灯情况。该模块使用5V电压供电,共阴极红黄绿灯单独控制的方式进行控制。其实物图如下图所示

3需求分析

本章节主要对课题需求进行分析,从经济,技术,功能性和非功能性等多维度探讨了所设计的基于机器视觉的智能交通灯系统的市场实际需求。

3.1可行性分析

3.1.1技术可行性分析

本系统所设计的基于机器视觉的智能交通灯系统主要分为两部分:硬件控制结构和视觉算法部分。
对于视觉算法部分,由树莓派4b开发板,摄像头模组,算法部分由opencv完成。这些模组以及算法在之前的项目小组成员都有过实际操作的经验,并且一些使用方法以及使用文档都能查阅到丰富的资料,能够支持本次课设的完成,算法部分的技术是可行性的。
对于硬件控制,我们使用STM32作为硬件部分的控制芯片,使用到了74HC595数码管模块以及LED交通灯模块,实现交通信号灯的实际应用场合的模拟需要对IO口的输入输出控制、TME3定时器的数码管倒计时、树莓派和STM32之间的串口通信和特殊情况下的紧急情况下按键的中断控制。这些基本的单片机控制在以往的课程种涉及到,并且有许多的资料以及文档可以借鉴。在硬件控制结构中技术是可行的。

3.1.2经济可行性分析

本课题旨在提供一个基于机器视觉的智能交通灯系统解决城市十字路口红绿灯时间不能应对实际情况的方案,本课题主要的花费在于硬件芯片上。具体成本如下表3.1所示。
表 3.1课题成本

项目价格(单位:元)
树莓派4b818
STM32F103ZET6398
摄像头*2174
74HC595*44.6
LED红绿模块*414
汽车模型*若干20
总成本1425.6

本课题主要的花费成本开支主要是由于控制芯片树莓派以及STM32所造成的,由于改项目需要进行实时的识别与检测,且对处理结果要求有较高精确度的要求,因此对芯片的性能要求程度较高,但是在日后的项目过程中可以使其他性能达到要求的芯片代替树莓派和STM32,这样成本会相对的有所降低。在实际的十字交通路口中,红绿灯、摄像头等设备已经存在,只需要能够进行视觉算法的芯片既可以完成对交通灯的智能控制。相对于通过交警或者调度中心对十字交通路口对突发事件的红绿灯调节,这样节约巨大的人力资源成本。
综上所述,两者相互对比,经济可行性是可行的。

3.1.3社会可行性分析

随着我们现在生活水平不断提高,我们很多的人都开始购买汽车了。那么汽车在现在社会来说是越来越多,而且我们的汽车在现在道路上行驶也是非常缓慢的,因为我们现在的汽车数量不断的增加,我们的道路也变得越来越拥堵了,现在我们出门在外不管是什么情况都是要遇到红绿灯了,那么红绿灯也就是指挥我们交通运行的一种信号灯,很多时候都设置在一些十字路口,这也是为了我们交通拥堵能够有秩序的畅通通行所设置的。中国最多红绿灯的公路,一公里就有30个红绿灯。由此可见我国的十字路口红绿灯数量是十分庞大的。
数量庞大同时现如今的十字路口红绿灯又存在不足,因此在这样的社会背景条件之下,对这样一款基于视觉的智能交通灯系统具有庞大的需求。在如今快节奏的生活之下,时间就是生产效率,本课程所带来的基于视觉的智能交通系统能够大大提高通过十字路口的效率,因此社会可行性分析是正确的。

3.2功能性需求

3.2.1概述

本课题旨在设计一个基于视觉的智能交通灯系统,通过对路口等待车辆的识别,分析各个对通过该路口的需求,调整红绿灯时间。同时,也考虑到一些紧急情况下的事件,能够手动控制红绿灯的状态。

  1. 交通灯模拟
  2. 图像采集
  3. 图像处理
  4. 分析通过路口需求

3.2.2交通灯控制

系统会模拟实际的十字交通路口的红绿灯的方式,有数码管倒计时、有红、黄、绿灯的指示灯提示等等。交通灯的变换时间控制由识别到的各个路口车辆数量来确定,车辆多的方向车辆通行时间相应的增加。反之,若该方向道路车辆较少,通行时间则相应减少。最后,考虑特种车辆等特殊情况的快速通行方式。
因此,本项目所设计的交通灯控制与实际道路的交通逻辑结构具有高度的相似性,极大还原了实际的交通十字路口。

3.2.3图像采集

这部分是整个系统的关键一环,采集到的图片数据帧的好坏直接影响到接下来的算法部分,对图片的分析处理。因此获得高质量的照片对于接下整个系统能够准确的判断出各个路口对于通过需求。
我们都知道,光线是对摄像头读取照片的影响十分巨大的,因此在进行图像的识别过程中需要保持光源的一致性。这样能够大大增加识别的精确性。

3.2.4图像处理算法

通过摄像头采集到的各个路口等待车辆的图像,为了方便图像的处理于观测,首先需要将图像进行压缩到指定大小的图像。通过图像的处理,将汽车的颜色与道路的颜色进行一系列处理任何区分出来。车辆与车辆之间有一定的距离。因此,处理后的图像保持着车辆的轮廓,因此我们只需要通过对轮廓的计数就能判断该路口下有多少辆汽车在等待通行,并由此可以分析出该方向上对于通行的需求迫切与否。
树莓派能够较快的完成图像的处理,因此能够满足实时监测的要求。也可以按照预定的时间检测一次。
综上,所设计的算法是符合课题要求的。

3.2.5分析通过路口的需求

在上面已经知道各个路口的一个车流量的数据,我们通过分析不同方向上车流量的差值,例如南北方向与东西方向。所比较的值的不同反映了哪个方向上的车流量大,因此需要更多的通行时间缓解该方向上的车流量。将差值与预先设置的阈值进行匹配,获得最终路口的一个通行时间,这样大大提高十字交通路口的通行效率。
综上所述,通过这样一个路口通行的需求,达到了智能交通灯系统的基本要求。

3.3非功能性需求

3.3.1环境需求

项目是依托在硬件上实现一个视觉的智能交通灯系统,因此需要在硬件上添加环境完成本次项目,是一个软硬件结合的项目。
我们需要在树莓派上配置python-opencv的一个环境,另外需要注册vml进行可视化的操控树莓派。

3.3.2系统完善需求

系统的设计不可能一步就能完成的,需要不断的根据实际应用场合的不同做出自己的修改与系统不断的更新能力。因此我们需要不断的对我们系统进行完善和更新。

4 概要设计

本章节在需求分析的基础上,将其转化为系统原型。简要介绍了总体设计,包括交通灯控制,图像采集,图像处理以及需求分析,不涉及具体实现。

4.1总体设计

4.1.1概述

本课题旨在设计一个基于视觉的智能交通灯系统方案,主要由交通灯控制,图像采集,图像处理以及需求分析组成:
运动控制主要是模拟实际交通路口的红绿灯状态
图像采集主要负责作为道路等待车辆的数据收集,作为算法的输入。
图像处理是根据输入图像处理后得到路口的车辆信息。
需求分析是根据各个路口车辆对通过路口的分析,计算出路口方向的通行时间。

4.1.2交通灯控制

图 4-1 硬件控制流程图

如图4-1所示,由流程图可以知道,在交通灯控制控制部分主要完成以下功能:

  1. 南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,主、支干道开始通行时间都设为30秒,时间根据识别分析得到的各个路口通行需求量进行修改。
  2. 在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;
  3. 黄灯亮时,要求每秒闪亮一次。
  4. 东西方向、南北方向车道除了有红、黄、绿灯指示外,采用数码管进行显示(采用计时的方法)。
  5. 一道有特种车辆(实验时用开关 K1 和 K2 控制),交通灯控制系统能立即让有车道放行,无特种车车道禁止通行。
  6. 在出现紧急情况(实验中用开关K3控制)时可由交警动手实现全路口车辆禁行而行人通行状态。

4.1.3图像采集

本课题的关键一环,图像采集质量的好坏,直接关系到接下来图形处理过程的准确性。图像采集流程如下图:
图 4-2 图像采集流程图

上图为采集图像过程及流向示意图。首先先打开摄像头,如果不能打开摄像头则会报出错误信息,打印“打开摄像头失败”,然后摄像头采集当前帧的画面,并保存在本地以及传输给接下来的图像处理部分。如果采集失败,则会打印“获取摄像头打开失败”,然后关闭摄像头。

4.1.4图像处理

本儿课题研究的基于机器视觉的智能交通灯系统,其视觉部分主要是对车辆模型的识别与目标提取。图像处理过程如图4-3:

图 4-3图像处理流程图

本课题主要通过对图像进行二值化处理,获得车辆的轮廓,并经过对轮廓信息的一些判断处理,排除一些干扰信息
首先彩色图像信息含量过大,进行车辆目标检测时计算时间过长,同时灰度图像可以满足本次实验,因此需要将彩色图像转化为灰度图像。
灰度图像还包含着许多的其他的特征信息,因此为了更好识别,需要将灰度图像转化为二值化图像,并设置相应的区间。
完成二值化后需要对一些干扰信息进行处理,将图像上的噪声等信息排除。
最后统计车辆的轮廓有多少个。

4.1.5需求分析

需求分析即路口各个方向对通过这个路口的需求,即统计该路口需要通过该路口的车流量,车流量大的路口方向则表示这个方向对通行的需求较大,反之。需求分析考虑到以下几个方面。

  1. 当东、西方向没有车时,而南、北方向有大量车辆需要通过。此时南、北的需求达到最大值。
  2. 当南、北方向没有车时,而东、西方向有大量车辆需要通过。此时东、西的需求达到最大值。
  3. 当东、西、南、北四个方向均没有车辆时,此时标明此时的没有任何方向有通过路口的需求。
  4. 当东、西的车流量大于南、北的车流量时,说明此时东、西方向的通行大于南、北方向,需求的大小取决于两者之间车辆量差异的大小决定。
  5. 当南、北的车流量大于东、西的车流量时,说明此时南、北方向的通行大于东、方向,需求的大小取决于两者之间车辆量差异的大小决定。

5 详细设计

详细设计是系统开发中必不可少的一个步骤,是对概要设计的细化。本章节将会对每个模块的实现进行进一步的说明并考虑到实现过程中的细节和各种问题。

5.1系统硬件控制设计

5.1.1交通信号灯

整个系统模拟真实路口红绿灯,整个系统正常情况下各个方向的红灯时间为23秒,绿灯时间为20秒,黄灯时间为3秒,具体逻辑如下表5.1所示:
表5.1 正常情况下交通灯状态表

信号灯东西方向南北方向
信号灯状态1红灯绿灯
信号灯状态2红灯黄灯
信号灯状态3绿灯红灯
信号灯状态4黄灯红灯

同时,本系统的红绿灯能够进行调节,通过树莓派传输的信息判断,在下一个红绿灯周期进行交通灯的时间调节控制,主要设置为表5.2几种情况:
表5.2 交通灯调节情况表

情况描述执行操作
东西向车辆少,南北向车辆多东西向绿灯时间减少5秒,红灯时间增加5秒;南北向绿灯时间增加5秒,红灯时间减少5秒
东西向车辆多,南北向车辆少东西向绿灯时间增加5秒,红灯时间减少5秒;南北向绿灯时间减少5秒,红灯时间增加5秒
东西巷没有车,南北向有车且处于红灯状态东西向直接变成红灯,南北向直接变成绿灯
东西巷有车且处于红灯状态,南北向没有车东西向直接变成绿灯,南北向直接变成红灯

5.1.2紧急情况的中断

根据实际情况,本系统设计了在特殊情况下的处理办法,并采用按键控制的方式进行控制,主要包括:特殊车辆(110警车、120急救车、119消防车等)通过路口时、路口发生紧急情况时。具体如表5.3所示:
表5.3 紧急情况处理模式表

特殊情况描述处理方式处理过后
东西方向有特殊车辆经过且东西方向为红灯东西方向直接变成绿灯,南北方向变为红灯,数码管显示“99”并停止计时东西方向恢复绿灯计时
南北方向有特殊车辆经过且南北方向为红灯南北方向直接变成绿灯,东西方向变为红灯,数码管显示“99”并停止计时南北方向恢复绿灯计时
路口发生紧急情况东西方向及南北方向均变成绿灯,数码管显示“99”并停止计时东西方向恢复绿灯计时

5.1.3 串口通信

通过发送一行字符串进行控制,根据字符串中“n”的位置的不同来控制信号灯执行不同的操作,具体逻辑如表5.4所示:
表5.4 串口通信协议表

字符内容代表的路口情况STM32执行操作
“#n1111123”东西向车辆少,南北向车辆多东西向绿灯时间减少5秒,红灯时间增加5秒,南北向绿灯时间增加5秒,红灯时间减少5秒
“#1n111123”东西向车辆多,南北向车辆少东西向绿灯时间增加5秒,红灯时间减少5秒,南北向绿灯时间减少5秒,红灯时间增加5秒
“#11n11123”东西巷没有车,南北向有车且处于红灯状态东西向直接变成红灯,南北向直接变成绿灯
“#111n1123”东西巷有车且处于红灯状态,南北向没有车东西向直接变成绿灯,南北向直接变成红灯

5.2视觉算法设计

5.2.1图像采集

本课程由于考虑到经费的问题,我们使用到两个摄像头,用来获取两个路口的信息。我们将两个摄像头搭载在树莓派上,使用opencv驱动摄像头。能够实现摄像头的打开、获取视频流、获取当前帧等操作。

图5-1 模拟道路小车

如图5-1,使用小车模型来模拟道路上的车辆情况,由opencv调用摄像头抓取图片,并且返回输出的情况,由于需要将摄像头固定在一个较高的位置。我们使用纸壳箱作为固定摄像头的支架,因此在获取图像帧的过程中时,图像上会存在阴影。这可能会导致实验过程中出现误差。

5.2.2图像处理

在获取图像后,我们需要对图像进行一系列的处理,达到我们能够在道路上识别到我们车辆轮廓的一个过程。
首先将从摄像头获取到的图像读取出来,如图5-2所示:

图5-2 摄像头获取图像

为了获得更好的输出,我们需要将图像做进一步的转换,在这里我们需要将图像先转化为灰度图像,再转化为二值化化图像。效果如图5-3所示:

图5-3 二值化图像

由图像我们可以看到,在图像上还有许多的黑点点,这是由于外部的干扰所导致的,同时车辆的轮廓中间也存在着许多不连接的部分。因此,为了进一步的分析、提高最终的检测结果,我们需要进行一系列的处理。第一步,需要进行高斯滤波,将图片的边缘信息变得更加的平滑,在这里我们使用3*3的高斯矩阵和标准差为5进行处理。第二步,需要进行腐蚀处理,将一下不连续的小黑点或者小细线腐蚀。第三部需要膨胀处理,将中心不连续部分能够连在一起。最后进行闭运算。处理的结果如图5-4所示:

图5-4 处理后图像

由处理后图像我们看到,一些细小的干扰项被消除了。车辆的轮廓信息也更加明显,为后续对轮廓信息的提取提供保障。这也是本课程设计最为关键的一个环节。

5.2.3 数据统计与分析

我们得到处理后的图像之后,需要进行对车辆轮廓信息的一个提取。Opencv库里面自带一个提取轮廓信息的函数FindContours,它的输入是一幅二值图像,输出是每一个每一个区域的轮廓点集合。
当返回一个轮廓信息后,我们需要对这些信息作为一个筛选,因为不是所有的轮廓都是车辆的轮廓,因此我们需要过滤掉不是车辆信息的轮廓。我们采用的是检测车辆返回轮廓的大小来确定这个是不是汽车的轮廓。在实际的道路上,汽车是作为道路上的最大物体,因此我们只需要设置一个阈值,比较这个轮廓的大小是不是大于我们设置的阈值,就可以判断该轮廓是否为我们所需要的汽车轮廓。满足后,我们对满足要求的轮廓进行计数,即为道路车辆的数量。效果如图5-5所示。

图5-5 以视频为输入的检测情况

为方便确认计数的轮廓信息是否为正确的,我们将上面测试结果的中心点信息打印出来,可以方便我们分析系统的可靠性。如图5-6所示:

图5-6 识别车辆(x,y)坐标

同时获取两个路口的车辆信息后,我们通过比对两个路口车流量的差异,然后进行输出,并且将这些信息传递给STM32。如图5-7所示:

图5-7 根据车流量确定时间

6 系统测试

本章对系统进行检验,是否符合课题设计要求,检查运行是否符合预期。

6.1硬件模块测试

主要是对数码管、红绿灯、摄像头模块功能进行测试。

6.1.1正常情况下

表6.1 正常情况下交通灯测试表

测试编号东西方向理论信号灯南北方向理论信号灯东西方向实际信号灯东西方向实际信号灯数码管是否正常显示
1绿绿
2
3绿绿
4绿绿
5
6绿绿
7
8绿绿
9绿绿
10绿绿

通过测试,正常情况下两个方向的红绿灯结合性较好,能够及时改变亮灯的顺序,灯和数码管的误差也小于一秒,实际测试过程中的测试图如图6-1-1、6-1-2所示

图6-1-1 东西方向

图6-1-2 南北方向

6.1.2紧急情况下

这里将测试三种情况——东西方向有特殊车辆、南北方向有特殊车辆和路口出现紧急情况,如表6.2、6.3、6.4所示。
表6.2 东西方向有特殊车辆

测试编号东西方向交通灯颜色南北方向交通灯颜色数码管显示数字
1绿“99”
2绿“99”
3绿“99”
4绿“99”
5绿“99”

表6.3 南北方向有特殊车辆

测试编号东西方向交通灯颜色南北方向交通灯颜色数码管显示数字
1绿“99”
2绿“99”
3绿“99”
4绿“99”
5绿“99”

表6.4 路口出现紧急情况

测试编号东西方向交通灯颜色南北方向交通灯颜色数码管显示数字
1“99”
2“99”
3“99”
4“99”
5“99”

通过测试,可以看到,通过按键改变不同特殊情况的时候,系统能够很好的改变交通灯的状态,能够最大程度完成任务,系统测试过程如图6-2-1、6-2-2、6-2-3所示。

图6-2-1 东西方向有特殊车辆

图6-2-2 南北方向有特殊车辆

图6-2-3 路口出现紧急情况

6.1.3改变路口车流量

通过改变模拟车辆的信息,测试系统识别是否正确,测试用例及结果如表6.5所示。
表6.5 车辆更改测试表

测试编号东西方向放置车辆数目南北方向放置车辆数目东西方向识别车辆数目东西方向识别车辆数目识别结果是否与实际结果相同
10000
20101
31111
41212
52222
62323
73333
83434
94444
104040

通过测试,两个方向拥有不同车辆时,系统基本上能够识别出来,并且能够根据车辆数目的不同,调节红绿灯时间,其过程如图6-3-1、6-3-2、6-3-3、6-3-4所示。

图6-3-1 东西方向摄像头拍摄结果及处理

图6-3-2 南北方向摄像头拍摄结果及处理

图6-3-3 输出结果

图6-3-4 信号灯调节结果

6.2 动态识别模块测试

通过测试,系统基本能够统计视频中通过设定线的车辆并能够在屏幕中间显示,基本上实现了设定的目标,其过程如图6-4所示。

图6-4 动态识别车辆

代码链接
链接: 基于机器视觉的交通灯控制系统设计