APP下载

自然环境下交通标志牌的检测与识别

2016-07-04关鑫

电脑知识与技术 2016年15期

关鑫

摘要:交通标志的识别系统是智能交通(ITS)的重要组成部分。随着现代化的进步,汽车逐步走进千家万户,然而也带来了交通拥堵,事故频发等一系列亟待解决的问题。发展具有主动安全技术的智能车辆已经成为各国政府、研究机构的研究重点方向,交通标志识别系统正是智能车辆和无人驾驶目标实现的重要技术需求之一。本文进行了交通标志牌识别的研究,包括以下三个方面的内容:1)交通标志的检测;2)交通标志的提取;3)交通标志的识别。

关键词:交通标志识别;颜色特征;相关系数匹配;Matlab

中图分类号:TP302 文献标识码:A 文章编号:1009-3044(2016)15-0190-03

1 绪论

1.1 研究的背景及意义

随着汽车数量的急剧增长,常规化的人力道路交通管理方式已经逐渐不能满足目前的交通道路需求,尤其是疲劳驾驶,醉驾等因驾驶员对路况的关注度太低而造成的交通事故比比皆是,这不仅给交通带来了诸多不便,也给人们的生命安全造成了威胁,因此智能交通行业越来越得到人们的重视。至2012年以来,中国的城市智能交通市场一直保持着高速的增长态势。

因此我们结合智能交通技术,设计本文所述的交通标志识别系统,可以及时提醒和警示驾驶员,使其了解行驶途中需要注意的交通标志,尽量避免事故的发生。

1.2 国内外的研究现状

1.2.1 国内研究现状

中国的智能交通研究开始于20世纪70年代末,最开始是在上海,北京,广州等经济相对发达的大城市进行了智能交通信号控制的研发。近年来,我国的ITS研究取得了丰硕的成果。然而虽然国内已经有一些自主开发的交通管路体制系统,但整体性能和国外同类系统相比较仍然有较大差距,这是不容我们忽视和否认的,目前许多城市在智能交通控制方面仍然采用引进的国外系统,像SCOOT和SCATS系统。因此我们也应该认清到当前的严峻局势,在智能交通控制方面仍有许多进步的空间,等待我们去研究和开发。

1.2.2 国外研究现状[1]

1994年在巴黎召开的智能交通大会成为发达国家正式研究和开发智能交通的标志性事件,经过不断地发展,智能交通在发达国家和发展中国家中都得到了突破性的发展。目前,国际ITS已经形成了美国、欧洲和日本三足鼎立的局面,其他国家像新加坡、澳大利亚、韩国等国家智能交通也具备了一定的规模。

2 交通标志识别设计思路

2.1 设计思路

通过简单的观察总结就可以发现,交通标志牌绝大多数为三种,即禁止标志(红色)、警告标志(黄色)、指示标志(蓝色),因此颜色是一个很好的切入点,我们可以最开始从颜色特征来出发,现将交通标志牌按颜色归类,再在相应的库中匹配,这样不仅提高了效率,而且简化了算法,根据颜色分类以后,我们就可以进行匹配前的处理,也就是对目标进行截取。最后选择一种匹配成功最高的算法进行匹配分析,那么交通标志识别的任务也就基本完成了。

3 交通标志牌检测

3.1 常见的色彩模型介绍[2]

3.1.1 RGB模型[2]

我们知道我们人眼所能见到的颜色都是有红、绿、蓝三种基色按照不同的比例混合产生的,也就是RGB模型。三种基色的分量都是0时,为黑色,三种分量都为1时是白色,任一一种分量的改变都会使颜色产生变化,我们常见的彩色显像管就是根据三原色的基理工作的,但不得不提的观点是:它并不适合人眼的视觉特点。

3.1.2 HSV模型[2]

HSV模型,H-色相,S-饱和度,V-亮度

HSV颜色模型通常用一个圆锥体来形象地表示。纵轴表示亮度,用V表示,数值越大亮度越大,而半径表示饱和度,用S表示,半径值越大表示饱和度越高,角度表示颜色,红色对应于角度0°,绿色对应于角度120°,蓝色对应于角度240°,不同的角度分别表示不同的颜色。

由于交通标志牌位置是固定不动的,因此常用的获取目标的方法。例如背景差分法在此已经不再适用,无法通过利用背景作差来获取交通标志,因此我们对交通标志的检测运用了颜色模型的方法,由于RGB模型不适合人的视觉特点,而HSV颜色空间刚好与人眼的视觉特点相同,因此本文使用的颜色空间是HSV模型。

3.2 色彩模型之间的转换

3.2.1 RGB向HSV模型的转换

前面已经详细介绍过RGB、HSV模型了,下面介绍RGB转化到HSV的算法,因其他转换算法与本文无关,因此这里不作介绍:

RGB转化到HSV的算法

m=max(rr,gg,bb)

n=min(rr,gg,bb)

if rr = m, hh = (gg-bb)/(m-n)

if gg= m, hh = 2 + (bb-rr)/(m-n)

if bb= m, hh = 4 + (rr-gg)/(m-n)

hh = hh* 60

if hh< 0, hh= hh + 360

vv=max(rr,gg,bb)

ss=(m-n)/max

4 交通标志的阈值分割

4.1 禁止标志的分割

禁止标志为都为红色的,因此如果要识别禁止标志,第一步就是把它从被自然景物包含的图像中检测并分割出来。检测方法上一节已经提到过了,运用颜色模型。

将RGB模型转换为HSV模型

核心代码如下所示:

Hsv=rgb2hsv(I); %将图像由RGB颜色空间转化为HSV颜色空间

d1=Hsv(:,:,1); %H分量信息保存于d1

d2=Hsv(:,:,2); %S分量信息保存于d2

经过RGB模型转换成HSV模型后,H分量和S分量都是0-1之间的值,而且H是实际度数除以360度得到的值,色调正是以0到360度之间的不同度数来表示不同的颜色的。

4.1.1 利用颜色阈值将红色显示为白色

1)核心代码:

BW=roicolor(d1,0.1,0.8);

BW1=~BW;

BW2=roicolor(d2,0.4,1);

BW=BW1&BW2;

因为大红色部分在HSV模型中,参数范围基本为:H为0~0.1,0.8~1,S为0.4~1,因此我们要运用roicolor函数将符合这一参数要求的像素区域都标志为白色,其他区域均为黑色。经过上述代码之后,色调范围在0~0.1,0.8~1,饱和度范围在0.4~1的像素区域值均被置为1,其他为0,完成了对要识别图像的二值化。

2)roicolor函数简要介绍

功能:可以根据颜色选定区域。

用法:BW = roicolor(A,a,b)

A 中的像素值如果在[a,b]范围内,则像素值全返回1,否则返回0.且BW的大小和A相同,得到的是一个二值图像。

4.1.2 标注二值图的连通区域,求出最大值

核心代码

L=bwlabeln(BW);

s=regionprops(L,'Area','BoundingBox');

save0=cat(1,s.BoundingBox);

save1=cat(2,s.Area);len=length(s);

max=0;

for i=1:len

if(save1(1,i)>max)

max=save1(1,i);

ii=i;

end

end

该段代码首先要对连通对象的各个分离部分进行标注,bwlabeln函数可以完成这个功能,然后再获取标记图像中所有区域的面积和最小包围矩阵,最后求出连通区域的最大值,也就是我们所要的禁止标志所在位置。

3)Regionprops是用来度量图像区域属性的函数。

①'Area':即面积,简单地说就是对不同的连通区域都记录下它的区域中像素的总个数。

②'BoundingBox':记录的是包含连通区域的最小矩形的相关信息:左上角横坐标、纵坐标以及长和宽。

对警告和指示标志牌的分割道理相同,在此不作重复叙述。

5 交通标志的识别

5.1 颜色特征[4]

对计算机视觉来说,特征提取的算法尤其重要,只有能够提取图像中的特征信息,计算机才能进行识别,从而做出人们要求的反应。然而,通常的特征提取算法都要大量的数据来换得更好的效果,而颜色特征却只需要根据像素值进行转换,计算量比较低,因此是一个较好的特征。

5.2 颜色直方图

颜色直方图反映的是图像颜色的分布情况,从直方图可以直观地看到各个颜色在图片中所占的比例。常常提取颜色特征,利用两幅图的颜色直方图来比较两幅图像的差异。而且如果背景颜色和前景颜色有较大的差异的话,颜色直方图会呈现出双峰的形状。

但颜色直方图的缺点也很明显,那就是它只能反映图像的颜色分布情况,却完全丢失了图像中各像素点之间的位置关系,因此可能会造成错误识别的情况,即两幅图像的颜色直方图分布十分相近,但它们的像素点之间的位置关系却截然不同,这样的话,若是利用颜色直方图去识别图像,就有可能判断错误,误以为是相匹配的图像。

5.3 Pearson相关系数

相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变量之间相关的程度。于是,著名统计学家卡尔·皮尔逊设计了统计指标——相关系数(Correlation coefficient)。相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数是按积差方法计算,同样以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关程度;着重研究线性的单相关系数。

设(X,Y)是二维随机变量,则称

为X与Y的相关系数。

5.4 基于计算图像在两个方向上的相关系数的交通识别

本设计的识别方法是通过提取标准图片和待识别图片的水平、垂直方向的灰度分布,进行Pearson相关系数的计算,并设定一定的阈值,在待识别图片与所有标准图片都进行过Pearson相关系数计算后,相关系数取得最大且大于所给阈值的则视为匹配成功。

1) 核心代码如下所示:

%求垂直相关系数

for i=1:300

z(1:2,2*i-1:2*i)=corrcoef(double(M(:,i)),double(N(:,i)));end

sum=0;

for i=2:2:600

sum=sum+z(1,i);

end

%求水平相关系数

for i=1:300

z(1:2,2*i-1:2*i)=corrcoef(double(M(i,:)),double(N(i,:)));

end

sum1=0;

for i=2:2:600

sum1=sum+z(1,i);

end

b=max(sum,sum1);%求出垂直和水平相关系数中最大的

End

2)MATLAB中相关函数corrcoef的用法

corrcoef(x,y)表示序列x和序列y的相关系数,得到的结果是一个2*2矩阵,其中对角线上的元素分别表示x和y的自相关,非对角线上的元素分别表示x与y的相关系数和y与x的相关系数,两个是相等的。

对于核心代码的运行结果,我们可以从matlab中查看:

for i=1:300

z(1:2,2*i-1:2*i)=corrcoef(double(M(:,i)),double(N(:,i)));end

遍历每一行,比较目标图和标准图的每一行,得出一个相关系数值,正相关是正值,负相关是负值,相关程度越大,绝对值也越大。

for i=2:2:600

sum=sum+z(1,i);

这两句代码是把相关系数值都累加起来,且不加自相关的系数1,通过比较得到相关系数的最大值的那个标准图片作为识别的结果(累加的相关系数值必须大于指定阈值可以)

6 结论

本文先是对交通标志识别的背景和历史意义进行了阐述,接着又分析了国内外的研究现状,本设计的设计流程图,还有交通标志的检测、截取、识别,详细说明了在设计这个交通标志识别系统的详细过程。整个交通识别系统做起来并不容易,尤其对截取目标图像的方式和识别算法的选择最为重要,需要不断地进行尝试,才能知道正确率如何,可实施性如何,但这个系统仍是不成熟的,许多方面需要进行改进。

参考文献:

[1] 国外智能交通系统的发展情况http://www.docin.com/p-545672525.html

[2] RGB和HSV颜色模型 - 知行知的专栏 - 博客频道.CSDN.NEThttp://blog.csdn.net/liuying_1001/article/details/7363353

[3] HSI颜色模型_360百科.http://baike.so.com/doc/1607662-1699477.html

[4] 颜色特征提取方法 - Rachel Zhang的专栏 - 博客频道 - CSDN.NET.http://blog.csdn.net/abcjennifer/article/details/7424971