转载请注明: http://blog.csdn.net/wchccy?viewmode=contents
Driver Assistance System已经成为学术研究的一大领域,作为智能交通的一部分,有大量研究人员投身其中,每年都会有大量的成果发表在IEEE trans on intelligent transportation system等顶级期刊,会议上。有些成熟技术甚至已走出学术界,应用于工业界,如福特公司的自动刹车系统,Google 的无人驾驶汽车,而 Mobileye 甚至已将其固化为车载芯片,并占有大部分的高档车市场份额。
近来跟随师兄也在探究此方面的发展,并努力实现自己的系统。
这里首先是对于交通路牌的识别:大部分交通路牌可以分为两部分:
red circular sign blue rectangular sign
由于其外形规则,图案单一,因此在这里我主要采用rule-based method,而非机器学习(当然,也是因为机器学习实验失败了)。由于要检测的物体局限于红色和蓝色,因此在这里我们利用其颜色信息,于Jack Greenhalgh and Majid Mirmehdi 的 Real-Time Detectionand Recognition of Road Traffic Signs IEEE TRANSACTIONSON INTELLIGENT TRANSPORTATION SYSTEMS, VOL. 13, NO. 4, DECEMBER 2012这篇paper,遍历所有像素点,成功将蓝色及红色区域变的比背景更亮。
在这之后,我利用hough circle transformation 以及 contour contourpolygonization,成功分割出相应区域,效果较好,但逐像素计算效率低下,对一张图的检测时间的70%都花在了像素处理上,所以准备最近看一看opencv的灰度转换源码,提升效率,争取达到实时性。
在这之后,好学的博主怎会就此终止,于是有了下面的识别部分,这也是博主第一次接触pattern recognition,虽然内容很简单……
首先将识别对象局限于红色圆形的限速标志,(指路牌的识别,博主是不敢想的,中文字符,分布不对则,想想就头痛)。于是博主开始了艰辛的旅程:首先想到的是最简单的模板匹配,但模板匹配要求template与target大小一致,思索良久,受当初看haar检测目标的源码启示,我将待检测图像以一定比例不断缩放,然后用template作为搜索框在待检测图像范围内进行移动匹配,根据归一化平方差公式计算得到最小的值即为匹配。
模板: (尺寸统一,这里采用双数,而非单个数字是因为单个数字虽然检测更准,但结果只能得到一个数字,暂时还未想到如何找到里面的两个数字);
下表左侧为测试图片,右侧为6个模板与图像的最小平方差:
(1)待测图像经过压缩后长宽比失调,其标志牌高度大于宽度,因此检测出现错误,这并非方法的问题;
(2)“15”是一个奇特的标志,两数字之间的空白区域大小不一,如图:
在成功识别出这些标示牌之后,一个新的问题出现了,就是红色圆形标志不仅包括限速标志,还有一些其他的诸如禁止通行,禁止鸣笛等标志,那么这些标志的出现超出了我们预期的简单环境,在此介绍一种博主自己想出来的方法:
1.我们观察上面表格里的实验数据,将每一组数据的方差值取均值得到六组均值分别为(10^6):
1.31 | 1.20 | 1.28 | 1.08 | 1.07 | 1.23 |
2.当将测试图片替换为非限速标志,其得到的数据如下:
1.71 | 1.64 | 1.82 |
到此我们对于交通标志牌的检测以及简单识别就告一段落了,在现有的少量待测数据面前,其结果不错,至于鲁棒性受角度及光照的影响还需要大量数据进行检测及改进。
PS:在此之前,我曾试着用sift以及surf进行识别,但大概是因为图案过于简单,导致极值点很少,而match的特征点更少,因而放弃。
转载请注明: http://blog.csdn.net/wchccy?viewmode=contents