实用交通标志自动识别方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5期李宁,陈彬:实用交通标志自动识别方法
(a)顺光条件下的交通标志(b)逆光条件下的交通标志
图2光照对交通标志颜色特征抽取的影响
分量的设置对于准确抽取颜色信息至关重要,通过试验和分析,本文采用动态自适应分量域值设置的方法可以有效地解决这个问题.
例如,在图2(a)中,通过初步简单统计可以得到黑色部分的最大颜色分量总和为406,则可将黑白分量域值设定为406,而在图2(b)中,该值为133,则可以认为图2(b)中在排除其他彩色的情况下颜色分量总和小于133的像素为黑色像素,反之则为白色像素,这样可以有效排出红色圈中的灰色部分被判断为黑色的情况出现.
在进行特征抽取时,可能存在禁令标志和指示标志分别包含于连通的红色区域和蓝色区域内部,为了有效避免多个禁令标志存于一块蓝色标志导致无法区分的情况,程序编制时进行有选择性的抽取,即单独抽取红色特征和蓝色特征,这样可以有效地将各种禁令标志和指示标志单独抽取出来.此外,基于禁令标志和蓝色标志的颜色特征,在对各特征进行抽取的时候,可以考虑将图像归一化误差进行弥补,例如可能将黑色像素(实际图片中可能偏蓝)抽取为蓝色像素的情况,在抽取红色禁令标志区域时,可将内部的蓝色全部转换为黑色,这种方法在实际的应用中具有很好的效果,唯一的问题可能是将禁止停车中的蓝色部分也转换为黑色,但是该标志的红色特征非常明显,在匹配的时候可以优先根据红色直方图进行识别,因此效果不会受到影响.
本文利用简单的扫描比较算法很容易地去除了特征边界之外的噪声,而对于特征之内的噪声,可以采用8邻域连通性算法来消除孤立的像素∞。J.
下述代码是根据上述算法思想用c4语言实现的类部分中相关函数代码.
intemalCharNormalizeColor(Colorcolor,intr_factor,intb_f.actor,intblk_factor)
{
doubletotal=color.R+color.G+color.B:
intdeltaRG=color.R—c010r.G:
intdeltaRB=color.R—color.B:
intdeltaBG=color.B—c010r.G:
if(deltaRG>r—factor&&deltaRB>r_factor)retum‘R’;//Red
if(deltaBG>b—factor&&一deltaRB>b—factor)retum‘B’;//Blue
if(Ma山.Abs(deltaBG)<10&&Ma出.Abs(deltaRB)<10&&Math.Abs(deltaRG)<10&&total<blk_factor)retum‘L’;//Black
retum‘W’://White
}
intemalBitInap[]Ext豫ct(Bitlllapbmp,chartype)
上海师范大学学报(自然科学版)2006年
{
bool[]flags=newbool[bmp.width水bmp.Height];
ArrayListblocks=newAmyList();
ExtractBoundary(blocks,nags,bmp,type);//Extract出efeatureboundaries.
MergeBlocks(blocks);//Merge也eadjacentblocks.
//Savetheextractedimagefeatures.
for(inti=0;i<bmp.width;i++){
for(intj=O;j<bmp.Height;j++){
if(flags[i冲cbmp。Height+j])continue;
Colorcol=bmp.GetPixel(i,j);
Pixelpix=newPixel();
pix.X=i;pix.Y=j;
if(c01.A<1)continue;
elseif(c01.R>0&&type==‘R’)pix.Type=‘R’;
elseif(c01.B>0&&type==‘B’)pix.Type=‘B’;
elsepix.7rype=‘L’;
Blockret=FindBlock(blocks,pix);
if(ret!=null)ret.Add(pix);
}
}
Bitmap[]bmps=newBitmap[bloeks.count];
for(inti=o;i<blocks.count;i++)bmps[i]=((B10ck)blocks[i]).ToBmp();
blocks.Clear();
nags=null;
retumbmps;
}
上述代码交通标志特征抽取代码示例
图3是软件进行特征抽取的示例.
(a)原始图像剪辑(b)颜色归一化结果(c)特征抽取结果
图3交通标志颜色归一化及特征抽取示例
3交通标志自动识别
由于部分标志具有对称性,部分标志可能被遮挡、不封闭等,因此本文在实现时可以计算多个方向
上海师范大学学报(自然科学版)2006年}
此段代码是交通标志特征匹配代码示例.
指示标志只需对蓝色直方图进行匹配即可,而禁令标志需要同时对红色和黑色直方图曲线进行匹配.图4为软件进行2个禁令标志匹配的误差结果.其中匹配的模板也是通过本文程序从网上下载的连体图片中抽取出来的,图5为部分抽取的模板:
从最小误差可以看出,抽取的标志1是一个禁止机动车行驶(模板_5)的标志(图3(c)中的红色特征),而标志2(图2(b)较暗特征)则为禁止向左转弯标志(模板-1).
为了更好地识别部分受遮挡或污脏的交通标志,可以在水平和垂直直方图曲线最小二乘匹配的基础上进行更模板名称标志1误差标志2误差禁止通行.bIfIp6.7484.833禁止向左转雹.bⅡ∞4.3802.500禁止超车.bI【iD5.2174.355限制轴重.b脯5.0744.2嘻l禁止后三轮摩托车通行.bmp4.0954.499禁止手按拖拉机通行.bmp3.8U4.104禁止拖拉机通行.b∞3.66()4.066禁止掉头.bⅡfD4.1670.880最高限速.bm5.0q73.858禁止某两种车通行,b咖4.0284.189禁止摩托车通行.b肿3.e334.185禁止噶嘲叭.b∞3.7444.303限制高度.bmp6.168q.457限制宽度.b珊5.6974.362禁止停车.b即4.0643.463禁止载簧汽车通行.bmD3.5284.3ll禁止大客车通行.bT【IDq.3584.113限制质量.b阶5.4723.6S5会车让行,b∞5.6134.694禁止机动车通行.b黜3.27S3.722禁止汽车拖挂车通行.b呻4.2574.469停车让行.b哪!O.q8010.q42禁止驶入.b肿13.00413.370禁止向右转弯.bmp4.4722,981
图4两个禁令标志匹配误差
多方向曲线的特征匹配,如增加45度、135度方向的颜色直方图曲线匹配,从而更加准确地识别出标志.
4结论
图5部分抽取的模板示例
现实情况中获取的图像存在着各种各样的问题,需要通过实验和分析采取有效的抽取方法.本文结合RGB颜色差量和各色块最高、最低值来进行动态分量域值的设定,有效地解决了抽取方法受影像色度等方面的影响,在实际的系统应用中具有良好的效果.
在特征匹配上,由于禁令标志和指示标志具有非常明显的特定特征,因此采用快速简单的匹配方法可以高效率地识别出准确抽取的交通标志特征,此外,为了识别出具有一定相似特征的标志或者部分被遮挡的标志,本文采取了多项颜色直方图方法进行特征匹配,在实际中起到了很好的效果.按照此类方
法,可以对警告标志、旅游标志、指路标志进行自动识别。