吕禾丰,陆华才,高文根
(安徽工程大学 电气传动与控制安徽普通高校重点实验室,安徽 芜湖 241000)
在经济发展迅速的今天,汽车给人们带来了巨大的便利。自动驾驶,辅助驾驶等技术逐渐进入人们的视野,而交通标志在驾驶过程中有着重要的地位,它关系到了驾驶过程中的安全问题,所以想要发展辅助驾驶等技术就必须先解决交通标志的识别问题。但对交通标志的识别过程中会有多种因素的干扰[1-4]。
在对不同环境中交通标志检测识别的研究中舒维安[5]通过采用一种处理交通标志颜色的概率模型,再结合最大稳定极值区域分割算法进行分割完成对复杂情况的交通标志识别。黎家超[6]通过Retinex理论的去雾算法以及RGB差值法对图像处理实现了对有雾情况下交通标志的识别。孙朝阳[7]通过研究“黑暗通道法”以及在YIQ颜色空间内进行色彩分割对图像去模糊、去雾。虽然对不同环境下的交通标志的检测识别率有了明显的提升,但是目前多数研究都是针对白天的交通标志识别的研究。白天与夜晚的识别是有所不同的,夜晚因为光线不足等问题导致对交通标志的检测难度大大增加。因此针对这种情况提出一种改进限制对比度自适应直方图均衡算法的夜间交通标志检测识别技术。图1为提出算法的流程图。首先使用改进的限制对比度自适应直方图均衡的方法对采集到的夜间的图像进行预处理,提高夜间图像的亮度和对比度,然后通过色彩空间分割对图像中的交通标志进行定位,最后通过支持向量机对采集的样本识别分类建立训练模型从而完成对交通标志的识别。
图1 本文算法流程图
传统提升图像对比度算法直方图均衡化算法(HE)通过变换图像的直方图使其均匀分布来达到提高对比度的效果。但是HE算法使用变换函数是对图像直方图整体进行调整,无法对局部对比度进行有效提高,并且有可能使图像中明亮部分或者较暗部分的细节丢失,因此HE算法只适用于少量场合。改进后的自适应直方图均衡化算法先将图像平均分成多个部分,再对每个部分进行直方图均衡化。这种方法虽然可以对图像局部的对比度进行调整,但是可能会使图像某些部分的对比度增加过大从而放大噪音。所以采用限制对比度自适应直方图均衡(CLAHE)算法[8-10]来提升图像的对比度。但CLAHE算法只能有效提升图像的对比度,在调整图像亮度方面效果并不理想。所以采用在CLAHE算法中加入伽马校正的方法对CLAHE算法进行改进。
理想的显示系统、采像设备与输入的视频信号(真实的图像信息)成正比,但显示系统或采像设备存在一个硬件特性指数,这个硬件特性指数会让输出图像与原图像之间产生非线性失真。所以为了使输出图像有更合适的亮度且更加真实,通常可以对原始图像进行一次预补偿,让原始真实图像产生与硬件特性指数相反的反向失真,将产生反向失真后的图像再输出到显示系统显示则可以达到线性输出的目的,这一过程称为伽马矫正[11-12]。伽马校正的公式如式(1)所示。
f=Iγ
(1)
式中γ为硬件特征指数。当γ<1时灰度值较低的部分图像对比度增加,在灰度值较高部分图像对比度降低,同时整个图像的灰度值会增大。所以对γ<1的情况适用于调整偏暗图像的亮度。当γ>1时图像灰度值较低的部分对比度降低,灰度值较高部分对比度增加,与此同时整个图像的灰度值减小,图像的各个部分亮度降低。所以对于γ>1的情况适用于光照过强时降低图像的亮度。
综上所述本文选择γ=0.5调整夜间的交通标志图像的亮度,通过伽马校正的图像如图2所示。
(a)原图 (b)伽马校正图2 原图与伽马校正图像
从图2中可以看出使用伽马校正提高了图像的亮度。
CLAHE算法通过限制图像灰度直方图的幅度达到限制对比度的目的,再通过引入线性插值的方法降低了算法的计算量,减少了算法的耗时。经过伽马校正调整之后的图像明显提高了较暗区域的亮度。所以在CLAHE算法中加入伽马校正后再进行图像预处理可以有效减轻夜间光照不足而造成的影响。进一步提高对夜间交通标志的检测与识别的准确率及精度,图3是改进CLAHE算法处理后的夜间交通标志的图像。可以看出图像整体的亮度以及对比度明显提高,适合进行下一步的交通标志检测定位处理。
图3 改进CLAHE处理后图像
为了能更好的对交通标志进行识别需要先对图像中的交通标志进行定位。交通标志作为交通警示提示标志具有较为统一的颜色。根据交通标志的分类大致分为黄色的警告标志,红色的禁令标志和蓝色的指示标志。因此可以采用色彩空间的方法对交通标志进行分割,去除不感兴趣的部分,提高对图像中的交通标志的定位,从而提高识别的精度。
所谓色彩空间就是一种数字化的立体模型,通过数学的方法去描述一个颜色。传统的RGB色彩空间以红黄蓝三种原色为基础,进行相互叠加就可以产生其他各种颜色[13]。而在图像分割时RGB空间会丢失图像的色彩信息,HSV空间则可以充分利用图像颜色的特点。HSV三个字母中H代表色调,S代表饱和度,V代表亮度。HSV色彩空间模型通常表示为一种六角的锥体形状,HSV中色调是通过角度来表示,它描述的是色彩的信息,代表了色彩在光谱中所处的位置,可以更加直观的对颜色进行描述。所以在使用色彩空间对夜间交通标志图像定位时先将RGB空间转换为HSV空间,再完成对交通标志的颜色分割。RGB空间转换为HSV空间的公式如式(2)、式(3)、式(4)所示。
V=max(R,G,B)
(2)
(3)
(4)
根据HSV色彩空间的颜色阈值分布,交通标志对应的黄、红、蓝三色对应的区间如下所示。
黄:min[26,43,46],max[34,255,255];
红:min1[156,43,46],max1[180,255,255],
min2[0,43,46],max2[10,255,255];
蓝:min[100,43,46],max[124,255,255]
图4为经过HSV空间分割的图像。
图4 HSV色彩空间分割图像
经过HSV色彩空间分割后的二值图像中已经可以看出交通标志的轮廓,但是图像中仍有噪点会影响对交通标志的定位,因此需要对图像进行形态学操作处理[14]。先对图像进行开操作去除图像中的小的干扰块,再对图像进行闭操作填充图像中闭合区域。经过开闭操作的图像如图5所示。
图5 开闭操作图像
开闭操作之后的图像已经可以看出交通标志的轮廓,而且噪音也被很好的去除了。再对图像中感兴趣的区域进行选择完成对交通标志的定位[16-17],如图6所示。
图6 交通标志检测结果
本文采用HOG+SVM支持向量机对交通标志进行分类识别[18-20]。通过SVM对训练集样本中利用HOG提取的特征进行训练分类得到模型与测试集匹配完成交通标志的识别过程。
SVM本质上是在空间中求出一个最优解作为界限将样本分类隔开,从而使测试样本与训练样本之间的误差达到最小,得到最优分类。
式(5)为计算虚线之间最大几何分类间隙公式。
(5)
在实际情况下几乎不存在完全线性可分的数据。所以就需要允许某些点的不满足条件在分类器中加入松弛变量。引入表示样本不满足约束的程度的松弛变量,相应的需要增加一个惩罚因子C,C值越大对分类的惩罚越大。式(6)为用拉格朗日乘子法得到的拉格朗日函数。
(6)
(7)
式(7)为化简后的函数由此可得最优解。当输入为非线性时需要对新的空间进行映射,此时引入核函数如式(8)所示。
k(a,b)=(a·b+1)2=φ(a)·φ(b)
(8)
用核函数代替内积,可以得到分类函数如式(9)所示。
(9)
进而实现在输入为非线性时对输入的分类。
为验证本文提出的夜间交通标志识别技术的效果还需进行实验验证。本次实验使用的硬件设备是2.9GHz的Intel i5-9400CPU计算机,程序调试环境为Windows10操作系统下的Pycharm平台,使用Python语言完成。
实验将采集到的1200张样本图片裁剪出目标区域作为SVM分类的正样本,同时裁剪出其他的区域作为负样本。为避免训练样本不足,通过将样本图片翻转、镜像、剪裁等方法扩充数据集,通过SVM训练出模型。再采集400张夜间图片作为测试集,用来测试本文算法对于夜间图片的识别率。实验的最终结果如图7所示。
(a)原图 (b)识别结果图7 交通标志识别结果
对比原图不难看出本文设计夜间交通标志识别技术对交通标志的识别效果很好。
经试验对算法测试情况如表1所示,本次实验的训练集中总共有五类交通标志,分别是人行横道,禁停标志,禁止鸣笛,限速标志和前方慢行。同样测试集也由这五类构成。
表1中检测率为检测出图像中含有交通标志的概率,识别率为识别检测出的交通标志的成功率。可以看出本文算法对夜间交通标志的识别有着较高的准确率,在光线不足的情况下仍然可以较为准确的识别出图像中的交通标志。
表1 本文算法测试结果
本文提出了通过改进CLAHE算法来对夜间交通标志的识别方法。首先对夜间交通标志图像进行预处理,通过在CLAHE算法中加入伽马校正的方法对夜间图像中的深色部分以及浅色部分进行检测,使两部分的比例增大提高夜间图像的亮度以及对比度,减少夜间光照不足对交通标志检测识别带来的影响。然后对经过预处理后的图像进行HSV色彩空间分割,提取出感兴趣的区域完成交通标志的检测。最后通过与支持向量机训练得到的模型进行匹配,完成对检测出的交通标志的识别。实验结果表明经过改进CLAHE算法处理的夜间交通标志图像大大减少了夜间光照不足因素的干扰并且可以很好被检测识别出,因此,本文方法对以后夜间的交通标志检测识别有着一定的研究价值。但是由于本文采用的是传统的机器学习方法对交通标志进行识别,所以可识别的交通标志类别较少,在后续的试验中可使用深度学习的算法训练更庞大的数据集,完成更多类别的交通标志识别。