一、项目设计与实现

1.1总体设计简介

交通标志有着显著的颜色和形状特征,主要功能以指示、提示和警示为主。标志的意义:警告标志用于警告车辆、行人注意危险地点;禁令标志用于禁止或限制车辆、行人的交通行为;指示标志用于指示车辆、行人的行进;标志的颜色、形状特点:警告标志均为黄底、黑边、黑色图案;形状都为顶角向上的等边三角形;禁令标志大部为为白底,红圈、红杠、黑色图案,部分存在特例,如解除禁止超车、解除限制速度标志为白底、黑圈、黑杠、黑色图案;形状大部分为圆形(除了让路标志为顶角向下的等边三角形);指示标志颜色为蓝底、白色图案,形状为圆形和矩形。根据交通标志的以上特点,我们将图像中的目标进行颜色和形状的分割,在处理后加以匹配和识别。

项目总体分为三个部分,分别是目标提取、特征提取、识别。下面从这三个方面介绍如何实现。

目标提取:将目标进行颜色分割,分为红、黄、蓝三部分,使用二值去噪去除噪声,之后使用八临点去除杂质等方法实现形态处理,最后实现目标提取。流程图如下。

图1

特征提取:将目标提取出来之后需要进行特征提取,根据一般路标的形态与特征,我们将目标分为红色圆形、黄色三角形、蓝色圆形、蓝色矩形、红色三角形五种,分别进行提取,提取出来之后通过Zernike矩计算,提取八个Zernike不变矩。流程图如下。

图2

识别:提取出不变矩之后,根据前面目标的分类,分别进入红色圆形神经网络、黄色三角形神经网络、蓝色圆形神经网络、蓝色矩形神经网络、红色三角形神经网络等五个神经网络,运用最小欧式距离进行相似度比较,最终实现目标。流程图如下。

图3

1.2相关算法介绍

1.2.1  颜色分割算法

1.   基于RGB空间的分割算法

分析:我国的交通标志基本分为三种(警告标志、禁令标志、指示标志)共有三种颜色(红色表示禁令,黄色表示警告,蓝色表示指示)在RGB模型中,其各分量极易受光照的影响,各个分量间关联性较大,难以较好的分割各个颜色,但RGB空间运算量小,速度快。

(1)     三色差量法:

对于所研究图像的所有像素点:

如果(R-G)>0.08&&(R-B)>0.08那么是红色像素

如果(B-G)>0.01&&(B-R)>0.01那么是蓝色像素

如果(R-B)>0.12&&(G-B)>0.12那么是黄色像素

如果(是其它数值)那么是其它色彩像素。

经测试和实践,我们选择了基于RGB空间的三色差量改进分割算法

具体算法如下:在上述三色差量改进算法中,实践测试下,黄色及蓝色分割并不理想。于是我们提出蓝色和黄色增强分割算法。对于蓝色分割,在RGB分割的初步条件下,确定蓝色目标大概范围,然后在截取该范围进行HSV空间的增强分割。对于黄色部分的分割,目前大多数算法都不够理想,我们提出在黄色部分的基础上在进行黑色的检测。这样对于黄色三角形标志,由于黄色部分所占的比例并不是太大,检测中容易漏检。加上黄色边缘的黑色分割,可以增大标志面积,提高提取率。

1.2.2         目标检测算法

对分割出的图像,进行轮廓提取。然后计算每个轮廓的外接矩形。初步通过矩形的大小、长宽比去掉一些小的目标。

1.2.3         形状分类算法

对于交通标志,一共有五类。即,红色圆形,红色三角形,蓝色圆形,蓝色矩形,黄色三角形。一般形状可以用几何特征、不变矩等方法分割。HU不变矩具有旋转、伸缩不变性。但要耗费一定时间计算HU不变矩。我们采用几何特征分类[5]

具体算法如下:

对于每个待提取目标,计算出每个目标轮廓的外接矩形或外接圆形、轮廓包含面积、轮廓长度等特征进行区分

对于圆形

rate =PI*radius*radius/(rect.area());

其中radius为目标外接圆形半径

if (rate<0.8||rate>1.4)  判断为非圆形

else 则为圆形

对于矩形

doublerarea=abs(contourArea(contour,true));//轮廓面积

doublerate_l,rate_s;

rate_l =lc/(2*(rect.width+rect.height));

rate_s =rarea/(rect.area());

其中lc为轮廓周长

if(rate_l<1.15&&rate_l>0.85&&rate_s<1.15&&rate_s>0.85)则为矩形

否则进行HSV空间提取,再用同样的条件选取目标。

对于三角形

double rate_s =2*abs(contourArea(contour,true))/(rect.area());

coun为轮廓

通过轮廓面积与外接矩形的比值确定

if (rate_s<0.75||rate_s>1.35)   判断为非三角形

否则为三角形

1.2.4         特征提取算法

图像特征一般有几何特征、不变矩特征通过提取zernike不变矩,考虑到时间,我们提取了8个zernike不变矩特征作为神经网络的输入。

1.2.5         目标识别算法

目前识别算法主要有图片特征匹配、神经网络、支持SVM等

我们选取了应用较为广泛的BP神经网络算法。

根据目标分类,共设计训练了5类BP神经网络

具体特征如下:

/*****************************************

BP ANN NAME:     innode     hidenode    outnode

redcircle         8           12         6

redtri            8           6          2

bluecircle        8           10         5

bluerect          8           8          4

yellowtri         8           12        6

****************************************/

平台为OPENCV CVANN_MLP 神经网络;

1.3各模块设计与实现

1.3.1 图像分割

在image_segmentation.h下

//color division

void   colordivision(Mat rgbimage,Mat &redbw,Mat &yellowbw,Mat &bluebw );

void   hsvdivision(const Mat &src,Mat &division,int whichcolor);

1.3.2 目标提取

在image_segmentation.h下

//提取圆形、三角形、矩形标志

void   findCircleRegion(Mat&image ,Mat&bw,vector< vector<Point>> contours,vector<Rect> &signroi,bool Isdrawrectangle);

void   findRectangleRegion(Mat&image ,Mat&bw,vector< vector<Point>> contours,vector<Rect> &signroi,bool Isdrawrectangle);

void   findTriangleRegion(Mat&image ,Mat&bw,vector< vector<Point>> contours,vector<Rect> &signroi,bool Isdrawrectangle);

1.3.3 特征提取

在zernike.h目录小

void getZernikeMoment(const Mat &src, double Ze[8]);

1.3.4 神经网络识别

在data目录下5个XML文件通过加载可以直接识别

bpredcircle.load("data/redcircle.xml");

bpredtri.load("data/redtri.xml");

bpbluecircle.load("data/bluecircle.xml");

bpbluerect.load("data/bluerect.xml");

bpyellowtri.load("data/yellowtri.xml");

二、测试与分析

2.1数据来源与真实性

由于并没有找到可靠地数据库资源,为了保证图片来源的广泛性和真实性,我们通过互联网搜集与路标相关的图片,比较具有代表性,且真实的反映出实际环境下的识别和检测效果。

2.2基本分类器实现效果

对于红色:红色比较容易分割,目标提取率较高

对于蓝色:蓝色比较容易受环境的影响,比如天空的颜色,很容易干扰识别效果。

对于黄色:黄色范围比较小,识别较为困难,若增大识别范围,很容易识别多余的目标,比如偏于黄色的树叶等环境物体。在整体光线不强的情况下,黄色也十分难以分割出来。

目标检测测试

类型

测试数量

正确检测数量

正确检测率

红色圆形

30

28

93.3%

红色三角形

10

8

80%

黄色三角形

30

26

86.7%

蓝色圆形

20

18

90%

蓝色矩形

20

18

90%

2.3识别效果

由于我们训练的数据有限,我们选取了10组红色圆形标志、10组黄色三角形标志、10组蓝色圆形标志、7组蓝色矩形标志、4组红色三角形标志。对于已经训练过的图片,可以正确识别,和训练图片环境接近的图片也可以识别出来。受于训练数据的影响,对于其他受环境影响较大,残缺不完整的交通标志,识别准确率不高,还必须进一步优化和提高。

识别测试

类型

测试数量

正确识别数量

正确识别率

红色圆形

30

25

83.3%

红色三角形

10

7

70%

黄色三角形

30

23

76.7%

蓝色圆形

20

16

80%

蓝色矩形

20

16

80%

2.4 实时性

由于我们采用的RGB分割图像,减少了HSV浮点数运算的计算量,可以减小检测间,提高实时性。

硬件平台:

软件平台:

VS2010 +OPENCV 2.4.5实时性测试(图片没有归一化为640x480,仅供参考)

类型

图片大小

图片数量/张

平均时间/ms

红色

640x480~320x220

20

170

黄色

640x480~320x220

20

177

蓝色

640x480~320x220

20

160

混合

640x480~320x220

20

185

车拍条件下交通标志实时识别相关推荐

  1. matlab交通标志神经网络识别,基于神经网络的交通标志识别方法

    Municipal & Traffic Construction SCIENCE & TECHNOLOGY FOR DEVELOPMENT 149 基于神经网络的交通标志识别方法 赵丹 ...

  2. 荔枝hsv空间图像分割程序matlab,基于Retinex图像增强的不同光照条件下的成熟荔枝识别_熊俊涛...

    第29卷第12期农业工程学报V ol.29 No.12 170 2013年6月Transactions of the Chinese Society of Agricultural Engineeri ...

  3. 基于Yolov5的交通标志检测识别设计

    项目介绍 上一篇文章介绍了基于卷积神经网络的交通标志分类识别Python交通标志识别基于卷积神经网络的保姆级教程(Tensorflow),并且最后实现了一个pyqt5的GUI界面,并且还制作了一个简单 ...

  4. 基于深度学习的道路交通标志数字识别

    基于MATLAB深度学习的交通标志识别 课题介绍 交通标志识别技术的研究最早开始于奔驰等14家大型汽车公 司组成的民间组织所资助的Prometheus(Program for European Tra ...

  5. 港中文周博磊团队:无监督条件下GAN潜在语义识别指南

    点击上方"机器学习与生成对抗网络",关注"星标" 获取有趣.好玩的前沿干货! 作者:Yujun Shen.Bolei Zhou   机器之心编译 参与:蛋酱.魔 ...

  6. opencv自然背景下交通标志形状分类c++代码_前端革命时刻:前端代码是怎样智能生成的-图像分离篇

    作为阿里经济体前端委员会四大技术方向之一,前端智能化项目经历了 2019 双十一的阶段性考验,交出了不错的答卷,天猫淘宝双十一会场新增模块 79.34% 的线上代码由前端智能化项目自动生成.在此期间研 ...

  7. 德国交通标志检测识别数据集

    http://benchmark.ini.rub.de/?section=gtsdb&subsection=dataset http://benchmark.ini.rub.de/?secti ...

  8. 小技巧(6):进行BelgiumTSC交通标志数据集识别(定义自己的数据集)

    小技巧(5):将TT100K数据集转成VOC格式,并且用Python脚本选出45类超过100张的图片和XML 文章目录 1 数据预处理 1.1 下载数据集 1.2 制作bs_dataset 1.3 制 ...

  9. TSR交通标志检测与识别

    TSR交通标志检测与识别 说明: 传统图像处理算法的TSR集成在在ARM+DSP上运行,深度学习开发的TSR集成到FPGA上运行. 输入输出接口 Input: (1)图像视频分辨率(整型int) (2 ...

最新文章

  1. KDD 2020 | 理解图表示学习中的负采样
  2. Joseph cicyle's algorithm
  3. 基于深度学习和机器学习的心电图智能分析参赛总结
  4. 自定义控件--实现步骤
  5. 【OpenCV 例程200篇】22. 图像添加非中文文字
  6. crontab 定时备份 出现permission:denied
  7. 商汤押注AI教育,成立“商汤教育”子品牌
  8. 飞磨科技php,昆虫飞行信息系统(飞行磨)
  9. bzoj4498: 魔法的碰撞
  10. Centos6.9编译安装nginx1.14.0
  11. HCIA物联网初级考试-第二章物联网常用的通信技术
  12. linux的打包和压缩
  13. OTL音频功率放大器
  14. 高德地图哪个语音包最好_高德语音导航怎么呼叫?高德地图语音包怎么设置
  15. 立体视觉:合成数据集的解析与工具
  16. Android11裁剪,Andorid 11调用系统裁剪
  17. 霹雳猿教程网站正式上线
  18. 在Domino上部署运行在Web浏览器中的Notes客户机
  19. HTML5+CSS3之快速入门 day6-day10布局,表单,css精灵,css hack,BFC规范
  20. 叠加等边三角形的绘制 python_《叠》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...

热门文章

  1. AgileEAS.NET SOA平台多帐套的实现
  2. 用selenium解决滑块验证码
  3. jQuery和JS获取选中复选框的值
  4. kafka一个服务配置到不同topic的不同group
  5. 2022.6.7日报:quickjs版miniblink逐步完善
  6. 【毕业设计】大数据 - 网络游戏数据分析可视化
  7. 人工智能数学基础-线性代数4:矩阵及矩阵运算
  8. css背景边框列表链接
  9. (十)系统集成中级-进度管理
  10. Android 13添加自定义native服务