结合光晕颜色和网格聚类的夜间尾灯识别

2020-06-09 07:36朱大全耿国庆刘志伟
关键词:光晕尾灯像素点

罗 石,朱大全,耿国庆,刘志伟

(江苏大学 汽车与交通工程学院,江苏 镇江 212013)

0 引言

车辆目标检测作为智能汽车领域的重要研究方向,一直是研究人员的关注重点。现有的夜间车辆检测技术,多是利用安装在路口固定的摄像头检测车辆[1-2],而应用于车载嵌入式的实时检测很少。近几年,随着辅助驾驶系统的快速发展,对基于车载摄像头的夜间车辆检测提出了更高的需求。

目前,车辆检测的研究方法主要分为机器学习[3-5]和基于知识的方法[6-10]。机器学习方法是通过大量样本图片训练分类模型,实现车辆检测。但是车辆种类多样,形状也各不相同,加上夜间照明条件多变,要求样本数量极其巨大,文献[5]指出没有合适的数据集实现车辆检测。基于知识的方法是根据人对典型车辆构成的认识,将人对车辆的知识转化为定义良好的规则进行识别,如根据车辆形状、车灯亮度等因素进行识别。此方法只需要判断图片像素点是否满足定义的规则,识别速度快。由于车载嵌入式系统对于实时处理速度要求较高,因此更适合使用基于知识的方法识别尾灯。

夜间前方同向车辆最明显的特征就是红色、明亮的尾灯。文献[6-8]的研究是根据像素点的色调(H)、饱和度(S)、亮度(V)识别尾灯,此方法转换公式复杂,计算耗时。文献[9]计算像素点的红(R)、绿(G)、蓝(B)3个通道的差值,通过改进最大类间方差法(OTSU),确定阈值,识别尾灯,此方法在前方只有偏黄路灯时,会将路灯误判为尾灯。文献[10]采用光晕层次亮度递减特点识别尾灯,检测率较高,但误检率也很高。文献[11]通过计算像素点的红(R)、绿(G)、蓝(B)3个通道的偏红水平识别尾灯,但计算过程涉及除法和浮点数运算,计算速度受到限制。

以上研究表明:通过计算像素点的颜色信息识别尾灯是可行的,但是颜色识别方法还有改进空间。与此同时,颜色信息计算完毕之后,如何识别目标像素点的具体范围,大部分文献都没有进行分析和实验,文献[12]采用密度聚类确定范围,但是此方法易识别很小的干扰噪点,且在目标像素点受到干扰不连续时,容易将同一尾灯分成多类。针对上述颜色空间转换、浮点数运算使计算时间增加和密度聚类算法误判等问题,本文提出了一种结合光晕颜色与网格聚类的夜间车辆尾灯识别方法。采用与上述方法不同的颜色处理公式计算像素点的颜色信息,将自适应阈值和固定阈值相结合,分割尾灯光晕和背景,使用网格聚类算法确定尾灯光晕区域,在此区域内通过计算光源面积完成尾灯识别。

1 尾灯光晕识别

1.1 尾灯成像特点

图1 夜间车辆成像的典型图片

根据GB 4785—2007的规定,汽车后位灯为红色,但实际上尾灯在摄像头采集的图片中呈现白色,周围包裹红色的光晕,夜间车辆成像的典型图片如图1所示。因此,本文通过识别尾灯光晕区域,确定尾灯位置。

1.2 图像颜色信息计算

夜间跟车行驶时,周围环境光主要包含路灯灯光、大灯照射光、尾灯灯光、路面反光和标志牌反光等。文献[9]采用2R-G-B对图像进行处理,但车灯之间区域波峰与波谷相差不大,同时对路灯等干扰光源去除不彻底。

夜间行车时,对尾灯红色光晕识别的最大干扰源是路灯的偏黄光晕,尾灯的红色光晕和路灯的黄色光晕主要是由像素点R和G的分量值决定的,B分量影响因素很小,因此可忽略。本文对区域图像像素点的R值与G值进行处理分析,提出颜色处理方法,如式(1)所示:

(R-G)2>>8。

(1)

通过平方增大尾灯光晕与背景的差异,右移8位可以将平方值固定在[0,255],方便灰度显示。使用上述两种方法对图1进行处理,三维分布及投影图如图2所示。

(a) 2R-G-B处理图

(b) 2R-G-B三维分布图

(c) 2R-G-B的X-Z投影图

(d) (R-G)2>>8处理图

(e) (R-G)2>>8三维分布图

(f) (R-G)2>>8的X-Z投影图

图2 两种方法处理结果的三维分布及投影图

对比图2a和图2d可知:图2a中尾灯光晕、路灯光晕和部分树叶反光都是高亮区域,而图2d中,背景区域像素点偏黑色,只有尾灯光晕是高亮区域。图2b显示了图2a中每个像素点的2R-G-B值,从图2b中可以看出:整幅图像的像素点处理值偏高,尖峰数量明显多于尾灯数量。相反,图2e则显示出经过(R-G)2>>8处理后,背景像素点的处理值都被抑制在很小的范围,只有尾灯光晕处形成4个尖峰。对比图2c和图2f可知:图2c中,在像素点水平坐标为300处有一个峰值,在像素点水平坐标为1 500处峰值较宽,这些是由于路灯光晕、尾灯光晕和树叶反光共同形成的;图2f中只有尾灯光晕区域有峰值。因此,相对于文献[9]的方法,本文方法可以更好地将图片中尾灯光晕区域和背景区分开,将干扰光抑制在很小的范围内。

1.3 光晕范围确定

计算图像颜色信息后,需要对处理后的图像进行阈值划分,将光晕处红色像素点筛选出来,确定光晕范围。

1.3.1 自适应阈值和通用固定阈值的确定

自适应阈值由OTSU法确定[13-14]。实验发现: 当夜间前方没有车辆,只有路灯时,单独使用OTSU法会造成误判。单独使用OTSU阈值分割二值化图如图3所示。

(a) 夜间前方无车辆道路原图

(b) 颜色处理,阈值分割二值化图像

图3 单独使用OTSU阈值分割二值化图

图3a是夜间前方没有车辆尾灯,只有路灯的典型图片,图3b是图3a经过1.2节所述的颜色处理,并根据最大类间方差法确定阈值T1,进行分割后得到的二值化图像。从图3b中可以看出:路灯光晕、路面反光、绿化带反光等区域都被识别为红色光晕区域,对后续尾灯识别造成干扰。

针对上述误判问题,本文通过确定一个通用的固定阈值T2作为阈值分割的下限。对采集图片中尾灯光晕和路灯光晕手动提取,并进行颜色信息计算,根据统计直方图确定固定阈值T2。本文以30帧/s的速率采集各种交通道路图像,合计60 min的实验数据,从中提取具有代表性的尾灯和路灯图片进行颜色信息计算,尾灯光晕和路灯光晕区域(R-G)2>>8的统计直方图如图4所示。

(a) 尾灯光晕区域统计直方图

(b) 路灯光晕区域统计直方图

图4 光晕区域统计直方图

从图4a中可以看出: 尾灯光晕区域像素点的(R-G)2>>8值分布在区间[10,120],在区间[10,50]时,像素点数量迅速增加,之后缓慢下降。图4b则显示:路灯光晕区域像素点的(R-G)2>>8值分布范围较窄,主要集中在区间[2,10],之后像素点数量迅速下降趋于0。

为了准确找到合适的通用固定阈值T2,计算图4中光晕区域像素点出现的频率并进行曲线拟合,拟合结果如图5所示。从图5可以看出:在横坐标为10左右处有一个交点,路灯光晕像素点多分布在交点左侧,尾灯光晕像素点多分布在交点右侧。经过实验,发现通用固定阈值T2取15时分割效果较好。根据式(2)对(R-G)2>>8的图像进行二值化,

(2)

图5 光晕像素点频率拟合曲线图

其中:f(x,y)为(R-G)2>>8图像中坐标为(x,y)像素点的值;T1为最大类间方差法得到的自适应阈值;T2为固定阈值。

图3a经过颜色处理,自适应和固定阈值分割后,二值化结果为全黑,证明当夜间前方只有路灯没有车辆时,通过固定阈值与自适应阈值结合,路灯光晕、绿化带反光等不会被识别为尾灯红色光晕区域。

1.3.2 基于网格聚类算法的光晕范围确定

文献[15]采用基于像素点八连通算法识别目标区域,但此方法容易对一些小的干扰点进行聚类。本文为了提高识别光晕连通域的速度和准确度,采用基于网格四连通域聚类算法确定光晕范围。网格聚类算法流程如图6所示。

图6 网格聚类算法流程图

流程图中网格大小w=32,h=15,Min_num取60,ε邻域Nε(o)为上下左右网格四连通域,最终输出聚类簇Ck。对图2d进行自适应阈值和固定阈值分割后,采用基于像素点聚类算法(八连通)和基于网格聚类算法(四连通)处理,结果如图7所示。

图7a是像素点聚类算法(八连通)的处理结果。像素点聚类会将二值化图中所有灰度值为255的像素点进行聚类,包括微小的干扰点,并且当同一尾灯光晕不连续时,会将同一尾灯光晕识别为多个类。图7b是网格聚类算法(四连通)的处理结果。网格聚类对于微小的干扰区域起到初步的筛选作用,并且当同一尾灯光晕不连续时,能够将光晕区域聚成一类。但是,图7a和图7b都反映出一个问题:路面的红色反光以及面积稍大的干扰源也被识别为尾灯光晕区域。

(a) 像素点聚类算法(八连通)

(b) 网格聚类算法(四连通)

图7 像素点聚类算法(八连通)和网格聚类算法(四连通)的处理结果

2 尾灯识别

从图7中可以看出:路面的红色反光以及面积稍大的干扰源内部没有主动光源。因此,本文采用计算光晕范围内像素点灰度值的方法识别尾灯。在1.3.2节中确定的光晕范围内,根据式(3),采用移位算法进行灰度转换。

Gray=(R+G<<1+B)>>2。

(3)

根据实验统计,尾灯灰度值为[230,255],最终灰度阈值取230,计算图像中亮像素点的连通域。为了提高尾灯识别的正确率,对亮像素点的连通域进行检测。由于车辆尾灯形状各异,使得基于形状检测[16-17]剔除干扰光源难度较大,同时一体式尾灯的使用,使得使用车灯之间的几何关系来区分车灯[18-20]的方法不可行。本文设定连通域的面积下限剔除干扰光源。从采集的图片中手动选取80张不同形状和不同距离的尾灯进行面积分析。尾灯占据像素点数统计直方图如图8所示。

从图8中可以看出:98.75%的尾灯在图像上占据的像素点数大于100,因此将100作为连通域的下限阈值。由于不同车辆尾灯的大小、形状相差较大,同时一体式尾灯的设计,使得尾灯占据的像素点数上限阈值很难统计,因此不设上限阈值。最终尾灯识别结果如图9所示,4个尾灯被准确识别,并使用绿色的方框进行标记。

图8 尾灯占据像素点数统计直方图

图9 最终尾灯识别结果图

3 实验结果与分析

本文使用的相机安装在汽车挡风玻璃内侧中间位置,相机分辨率为1 080 pixels×1 920 pixels,在夜间市区多种道路条件和城市郊区道路上采集RGB图像数据。在MATLAB软件中编写程序,对上述图像数据进行处理。表1给出了不同算法对夜间车辆尾灯检测的统计结果。由表1可知:在城市道路条件下,本文算法识别率达到87.53%,比2R-G-B算法和色相-饱和度-明度(hue-saturation-value,HSV)算法分别高出6.00%和4.20%;在郊区道路条件下,本文算法识别率达到95.43%,比2R-G-B算法和HSV算法分别高出5.23%和2.40%,并且本文算法在误检率和漏检率上也低于其他两种算法。同时,3种算法在郊区道路条件下的尾灯识别率都高于城市道路条件下的尾灯识别率,这是由于郊区道路比城市道路环境简单,干扰因素较少。

表1 不同算法对夜间车辆灯检测的统计结果

4 结论

(1)通过计算图像像素点的(R-G)2>>8值,可以增加尾灯光晕区域红色像素点和背景像素点的区别,降低阈值选取难度。

(2)最大类间方差法得到的自适应阈值T1,结合实验确定的通用固定阈值T2,可以有效区分目标像素点和干扰像素点,降低误判率。

(3)采用网格四连通域聚类算法,能够在同一尾灯光晕不连续时,将光晕区域聚成一类,同时对于微小的干扰区域起到初步的筛选作用。

(4)对比现有基于车载嵌入式系统的尾灯识别方法,本文算法可以有效提高夜间尾灯识别率,降低误检率和漏检率。

猜你喜欢
光晕尾灯像素点
风的渴望
图像二值化处理硬件加速引擎的设计
易于尾灯匹配的结构探讨
基于局部相似性的特征匹配筛选算法
侧围外板尾灯处排料困难的解决方案
基于像素点筛选的舰船湍流尾迹检测算法
基于canvas的前端数据加密
圣诞节的灯光
重型汽车尾灯支架振动疲劳分析及优化
凝固的光