用于检测图像中的车辆光的装置和方法与流程

文档序号:19948608发布日期:2020-02-18 09:56阅读:141来源:国知局
用于检测图像中的车辆光的装置和方法与流程

本发明涉及用于检测图像中的车辆光的装置和方法。



背景技术:

用于相机图像中的车辆光检测的方法通常基于传统的blob检测技术,其搜索在径向方向上亮度降低的亮点。另一种方法是使用监督分类法进行结构识别,例如卷积神经网络,其被训练以区分车辆光点和非车辆光点。但是,如果假设这些方法考虑世界亮度信息或像素之间的物理亮度比,则它们需要固定的摄像头设置和固定的图像预处理。否则它们仅响应图像结构。

将它们应用于在不考虑摄像头参数的情况下利用自动曝光控制拍摄的相机图像或者应用于具有可变预处理的图像(例如,基于直方图)强烈地降低了分类器性能。

如果仅关注亮点本身和紧邻区域,则车辆光很难与较不明亮的物体(例如,反射器)区分开来,这些物体在不同的摄像头设置下被拍摄或在图像预处理期间变亮。

因此,将它们分开需要复杂的特征,例如,对于大量候选者使用大的环境或运动信息。



技术实现要素:

本发明的基本目的是提供一种装置,该装置使得能够以减少的存储量和图像处理复杂度快速检测相机图像中的车辆光。本发明的另一个目的是提供一种包括所述装置的系统以及用于检测图像中的车辆光的方法。

在本申请的第一方面,提供了一种用于检测图像中的车辆光的装置。

该装置被配置成接收由摄像头拍摄的图像。图像包括像素阵列,并且图像的每个像素具有相应的场景亮度值。该场景亮度值反映了真实世界的光度。图像具有一定的像素深度。例如,图像可以具有12位的深度。该像素深度允许记录4096个不同的场景亮度值或强度,即灰阶(shadesofgray)。如果摄像头参数(例如曝光时间和/或增益)改变,则可能有更多不同的值。

该装置还被配置成压缩图像以生成压缩图像。压缩图像包括像素阵列,并且压缩图像的每个像素具有相应的灰度值。压缩图像的像素深度小于摄像头拍摄的图像。例如,压缩图像可以具有8位的深度,因此压缩图像可以包括256个不同的灰度值。

在压缩图像之前,还可以对图像进行预处理。预处理可以在摄像头和/或装置中执行。在图像已经进行了预处理的情况下,对经预处理的图像进行压缩。

该装置还被配置成针对压缩图像中的每个灰度值计算图像中的对应场景亮度值,并通过使用计算出的场景亮度值来检测压缩图像中的车辆光。

该装置提供了一种使用简单结构特征和关于真实世界光度的信息(即场景亮度)的组合来快速检测相机图像中的车辆光的方法。

所应用的摄像头可以在高动态范围模式下结合自动曝光控制模式操作,因此能够拍摄高度变化的照明条件而不会显著损失图像结构。

例如,摄像头可以返回12位图像。为了减少存储量和图像处理复杂度,可以随后将图像压缩成例如色调映射的8位图像。这对于随后的计算是有利的,因为嵌入式中央处理单元(cpu)可以高效地处理每像素一个字节。色调映射被开发成充分保持用于车辆光识别以及其它驾驶员辅助功能算法(例如车道偏离警告(ldw)和前向碰撞警告(fcw))的图像结构。

然而,关于世界中的实际亮度的信息丢失了,而这是用于容易地区分车辆光和其它亮点的基本特征。非线性色调映射还阻止具有关于同一图像的不同区域之间的亮度比的精确信息。夜间图像中的明亮区域通常仅覆盖图像的非常小的百分比,因此被压缩到小的灰度范围,尽管世界亮度可能存在巨大差异。

为了恢复场景亮度,装置为压缩图像中的每个灰度值提供图像中的对应场景亮度值。因此,关于世界中的实际亮度的信息不会丢失,并且该信息可用于检测压缩图像中的车辆光点。

在一个实施方式中,该装置还被配置成将针对压缩图像中的灰度值计算出的场景亮度值存储在查找表中。在上面给出的示例中,摄像头返回12位图像,然后其被压缩成8位图像,查找表具有256个针对压缩图像中的灰度值的条目,并且针对256个灰度值中的每一个,相应的场景亮度值被记录在查找表中。

该装置可以被配置成通过使用查找表来将压缩图像中的像素识别为车辆光的候选者。

为此目的,装置可以被配置成如果像素的灰度值高于局部阈值图像中的相同位置处的灰度值阈值,则将相应像素识别为车辆光点的候选者。

局部阈值图像可以通过装置执行以下步骤来生成。首先,平滑压缩图像以生成平滑图像。然后,平滑图像中的每个灰度值被转换为场景亮度值。针对灰度值的场景亮度值由查找表提供。将图像中的各场景亮度值乘以预定数,例如,该数为4,以便得到场景亮度中的阈值。然后对图像中的乘以预定数的各场景亮度值(即,场景亮度中的每个阈值)进行反向转换或反向映射以得到灰度值阈值。针对场景亮度值的灰度值由查找表提供。然后,将图像中的各灰度值阈值与预定的全局最小阈值进行比较。如果预定的全局最小阈值大于灰度值阈值,则相应的灰度值阈值被预定的全局最小阈值替换。最后,得到局部阈值图像。

在另一实施方式中,该装置使用第一分类器,其可以是例如treeboost分类器,以便减少车辆光点的候选者的数量。针对车辆光的每个候选者,装置计算一个或更多个第一特征,并且将该第一特征输入到第一分类器中。对于第一特征中的一些,第一分类器包括相应的阈值。第一分类器被配置成将相应候选者的第一特征中每一个与相应阈值进行比较。根据这些比较,第一分类器确定是否应丢弃相应候选者。

第一特征可以从以下特征a)、b)和c)中选择:

-特征a)是已被识别为车辆光点的候选者的像素周围的像素阵列的灰度值的平均值。例如,阵列是5x5像素阵列,其中已被识别为车辆光点候选者的像素位于5x5阵列的中心。那么特征a)则是5x5阵列的25个灰度值的平均值。

-特征b)是不同尺寸的像素阵列的灰度值的平均值的差,其中阵列布置在已被识别为车辆光点的候选者的像素周围。因此,对于具有不同尺寸的两个阵列,计算灰度值的平均值,然后确定两个平均值的差。

-特征c)是已被识别为车辆光点候选者的像素周围的像素阵列的灰度值的平均值,其中通过使用查找表将平均值转换为场景亮度值。

车辆光的候选者的数量可以借助第二分类器进一步减少。在该实施方式中,装置针对车辆光的每个候选者计算第二组特征,并将第二组特征输入到第二分类器中。第二分类器包括针对第二特征的阈值。第二分类器被配置成将相应候选者的第二特征中的每一个与相应阈值进行比较,并根据这些比较确定是否丢弃相应候选者。另外,第二分类器还可以使用如上结合第一分类器所讨论的一个或更多个第一特征。在这种情况下,第二分类器包括针对第一特征的新阈值,其通常不同于第一分类器中的阈值,使得它可以将相应候选者的第一特征与相应阈值进行比较。这些比较可以有助于第二分类器决定是否丢弃相应的候选者。

第二特征可以是不同尺寸的像素阵列的灰度值的平均值的比值,其中阵列布置在已被识别为车辆光点的候选者的像素周围,并且平均值已经通过使用查找表转换为场景亮度值。

为了细化车辆光点,该装置还可以被配置成如果像素位于候选者的邻域中并且像素的灰度值高于预定的细化阈值,则将相应像素识别为属于车辆光的候选者。

装置可以对图像进行压缩以通过色调映射生成压缩图像。色调映射是在图像处理中使用的众所周知的技术,用于将一组强度或颜色映射到另一组,以近似在具有更有限动态范围的介质中的高动态范围图像的出现。

此外,装置可以预处理由摄像头拍摄的图像以生成预处理图像并对该预处理图像进行压缩以生成压缩图像。尤其是,该装置可以通过线性化图像的灰度值来对由摄像头拍摄的图像进行预处理。

根据本申请的第二方面,一种系统包括安装在车辆上并配置成拍摄图像的摄像头和如上所述用于检测由摄像头拍摄的图像中的车辆光的装置。

根据本申请的第三方面,一种检测图像中的车辆光的方法包括以下步骤:

-接收由摄像头拍摄的图像,其中,图像包括像素阵列,并且图像的每个像素具有相应的场景亮度值;

-对图像进行压缩以生成压缩图像,其中,压缩图像包括像素阵列,并且压缩图像的每个像素具有相应的灰度值;

-针对压缩图像中的每个灰度值计算图像中的对应场景亮度值;以及

-使用计算出的场景亮度值检测压缩图像中的车辆光。

根据本申请的第三方面的方法可以包括以上结合根据本申请的第一方面的装置公开的实施方式。

附图说明

下面将参考实施方式和附图以示例性方式更详细地描述本发明。在附图中:

图1示出了用于检测图像中的车辆光的系统的示例性实施方式的示意图;

图2示出了用于检测图像中的车辆光的方法的示例性实施方式的示意图;

图3示出了具有拐点的示例性响应曲线和示例线性化曲线;

图4示出了由摄像头拍摄的示例性图像;

图5示出了局部阈值图像的生成的示意图;

图6a示出了示例性压缩8位图像;

图6b示出了图6a所示图像的局部阈值图像;

图6c示出了示出图6a的图像的高于局部阈值的区域;

图6d示出了具有减少数量的候选点的图像;

图7示出了treeboost分类器的示例;

图8示出了不同尺寸的像素阵列的示意图;

图9示出了斑点细化的示例;以及

图10示出了细化阈值的生成的示意图。

附图标记列表

10系统

11摄像头

12装置

13图像

14输出信号

20方法

21步骤

22步骤

23步骤

24步骤

25步骤

26步骤

27步骤

28步骤

30响应曲线

31拐点

32拐点

33线性化曲线

40像素

411x1阵列

423x3阵列

435x5阵列

447x7阵列

具体实施方式

图1示意性地示出了用于检测图像中的车辆光的系统10。系统10包括摄像头11和装置12。系统10安装在车辆中,例如汽车或卡车。

摄像头11安装在车辆上并且拍摄车辆前方的区域/环境的图像13。

由摄像头11拍摄的图像13被送至装置12。装置12执行用于检测图像中的车辆光的方法20,并生成包含关于在图像13中检测到的车辆光的信息的输出信号14。在图2中示意性地示出了方法20。

装置12、系统10和方法20分别是根据本申请的第一、第二和第三方面的示例性实施方式。

在方法20的步骤21中,摄像头11拍摄图像13。摄像头11以帧、特别是视频帧拍摄图像13。在每一帧中,摄像头11可以拍摄一个图像13或多于一个的图像13。

为了受益于最大可能的动态范围,摄像头11的图像传感器以高动态范围模式被驱动,这意味着图像传感器相继捕获针对三个不同曝光时间的值。

最终图像13的响应曲线将三个测量值映射到一个分段线性12位值,其在前两个曝光时间饱和的位置处具有两个断点。在图3中,示出了具有拐点31、32的示例性响应曲线30。另外,使用自动曝光控制法来使曝光时间和增益适应变化的照明条件。

在方法20的步骤22中,装置12从摄像头11接收最终图像13。图像13包括像素阵列,并且图像13的每个像素具有指示真实世界光度的各自场景亮度值。场景亮度值可以具有单位勒克斯(lux)或与勒克斯成比例的单位。

在步骤23中,装置11通过执行以下步骤来对图像13进行预处理:

1.图像13的12位高动态范围输入数据被线性化为20位数据,尤其是根据摄像头11的图像传感器的数据表。图3中示出了示例性线性化曲线33。图3的图示的y轴示出了以12位存储的原始图像的数字值,x轴示出了在图像传感器输出端处接收到的数字值。

2.20位数据以对数方式映射到12位数据。

3.然后对12位图像进行压缩以生成压缩图像。压缩图像包括像素阵列,并且压缩图像的每个像素具有相应的灰度值。压缩图像的像素数可以与从摄像头11接收到的图像13的像素数相同。在示例性实施方式中,通过使用图像直方图将12位数据的图像色调映射到8位图像,来执行对12位图像的压缩。色调映射可以包括映射12位数据的灰度值,使得8位图像中的灰度值均匀分布。

摄像头11的图像传感器的输出端处的值与以下值成比例:

-入射光强度(场景亮度)

-摄像头曝光时间

-信号处理链中的应用增益。总增益是模拟增益和转换增益的乘积。

为了说明,应给出以下示例:比场景强度s1高四倍的场景强度s2仍然可以产生相同的传感器输出,例如,如果s2的曝光时间仅为s1的曝光时间的四分之一,或者s2的增益仅为s1的增益的四分之一,或者s2的曝光时间和增益都是s1的一半。

曝光时间和增益通过摄像头11的自动曝光控制算法适应当前的照明条件。它们被调节成增加传感器输出以减少光条件。由两个拐点31、32限定的摄像头曲线和三个部分的斜率在运行期间不会改变。

例如,可以以下面的方式执行将原始数据转换为线性化数据。使用分段线性摄像头曲线的参数将原始图像数据的域(值从0到4095)转换为20位线性值:

对于0≤y≤py1:y_lin=y

对于py1≤y≤py2:y_lin=py1+(y-py1)*fs1

对于py2≤y≤4095:y_lin=py2+(y-py2)*fs2

具有坐标(px1,py1)和(px2,py2)的点是两个拐点31、32。fs1和fs2是在两个拐点31、32之后斜率变化的因子。

输出范围包含4096个线性化的20位值,一个值针对输入范围中的每个可能点。

例如,可以按以下方式执行将线性化值转换为8位数据:

1.通过对数函数将20位数据映射到12位数据。输出范围包含4096个12位场景亮度值,一个值针对输入范围中的每个可能点。

2.通过色调映射将12位值映射到8位。输出范围包含4096个8位场景亮度值,一个值针对输入范围中的每个可能点。

在步骤24中,装置12针对压缩图像中的每个灰度值计算压缩之前图像13中的对应场景亮度值。关于场景亮度的信息另外存储在查找表中。查找表具有256个针对压缩的8位图像中的灰度值的条目,并且针对256个灰度值中的每一个,相应的场景亮度值被记录在查找表中。可以通过以下方式创建有关场景亮度的信息:

1.压缩图像的8位值被反转换为线性化的20位数据。

例如,对于每个可能的8位灰度值(0到255之间的值),我们在上一步的输出中搜索该值的所有出现(线性值为8位)。然后将一个反向映射的线性化值分配给每个灰度值,该值是所有对应的线性化值的平均值(在前一步骤中已映射到该8位值的所有值)。

输出范围包含256个8位线性化值,一个值针对8位灰度图像中的每个可能值。

2.在反向转换之后,将值除以预定数。考虑到曝光时间、模拟增益、数字增益和转换增益,该数可以是总增益。

例如,将线性化值转换为场景亮度值可以如下进行:线性化值除以包括模拟增益、数字增益和转换增益的增益以及曝光时间,以获得与场景亮度成正比的值。为了防止信息丢失,线性化值先前乘以一个因子,例如210=1024。输出范围包含256个30位场景亮度值,一个值针对8位灰度图像中的每个可能值。

图4示出了由摄像头11拍摄的示例性图像。对于图像中的两个斑点,给出了原始图像中的场景亮度值和压缩图像中的对应灰度值。从图4中可以看出,灰度值140和151非常接近,而场景亮度值763006和2176239具有巨大差异。因此,在不存储场景亮度值的情况下,该信息将丢失并且不能用于检测车辆光点。

在步骤25中,启动检测算法,该算法用于通过使用计算出的场景亮度值来检测压缩图像中的车辆光。

此外,在步骤25中,装置12通过使用查找表识别并选择压缩图像中作为车辆光的候选者的像素。车辆光的候选者意味着压缩图像中的对应像素可能显示车辆的光。

如果像素比场景亮度中的局部阈值更亮并且大于或等于来自其8x8邻域的最大值,则选择这些像素作为候选点。

在图5中示意性地示出了局部阈值图像的生成。首先,生成压缩的8位图像的平滑版本。使输入图像(即,压缩的8位图像)平滑并进行下采样(subsample)以创建平滑图像。因此,平滑图像中的每个像素包含压缩的8位图像中的局部邻域的平滑版本。详细地,输入图像通过2下采样:下采样图像中的每个像素包含2x2像素的平均值。这重复三次,因此分辨率除以8。然后,下采样图像与二项式滤波器[1,2,1;2,4,2;1,2,1]/16进行卷积以进一步平滑。

然后,通过使用查找表(lut)将平滑图像中的每个灰度值转换为场景亮度值。此外,图像中的每个场景亮度值乘以预定数,在本实施方式中为4,但也可以不同,以便得到场景亮度中的阈值。

然后,通过使用查找表将图像中的每个场景亮度值反向转换或反向映射为灰度值。

然后,将图像中的每个灰度值与预定的全局最小阈值进行比较,并应用最大运算符。仅当预定的全局最小阈值大于灰度值时,相应的灰度值才被预定的全局最小阈值替换。结果,获得包含灰度值阈值的局部阈值图像。作为对平滑图像中的每个像素进行该计算的替代方案,可以使用阈值查找表来从8位平滑值生成灰度值阈值。阈值查找表针对每个可能的平滑值包含对应的灰度值阈值。

昂贵的查找表操作的数量限于局部阈值图像的大小,其以因子64减少。针对每一帧预先计算阈值查找表。

对于候选点选择,阈值比较后跟非最大值抑制。检查候选点是否大于或等于其8x8邻域的最大值。

图6a示出了示例性压缩8位图像,图6b示出了对应的局部阈值图像。

如果压缩图像中的像素的灰度值高于局部阈值图像中的相同位置处的灰度值阈值,则相应像素被识别为车辆光的候选者。图6c示出了图6a的8位图像中高于局部阈值的区域。

图6d示例性地示出了在非最大值抑制之后作为候选点选择的结果的图像。

在方法20的步骤26中,通过计算上快速的特征来减少候选点。

通过使用基于候选像素本身的值和具有各种尺寸的围绕候选者的二次区域的平均值的特征的第一分类器,可以显著减少候选者的数量。

可以使用treeboost分类器作为第一分类器,并根据以下第一特征a)、b)和c)进行训练:

特征a):方形尺寸1、3、5和7的计算平均值,

特征b):不同尺寸的方形的平均值的差;和

特征c):场景亮度的计算平均值。

特征a)是围绕已被识别为车辆光点的候选者的像素的像素阵列的灰度值的平均值。图8示例性地示出了已经被识别为候选者的像素40以及围绕像素40的1x1阵列41、3x3阵列42、5x5阵列43和7x7阵列44,其中像素位于每个阵列41至44的中心。特征a)是阵列41至44之一的像素的灰度值的平均值。

特征b)是不同尺寸的像素阵列的灰度值的平均值的差,其中阵列围绕已被识别为车辆光点的候选者的像素布置。因此,对于具有不同尺寸的两个阵列,计算灰度值的平均值,然后确定两个平均值的差。两个阵列可以是例如阵列41至44中的两个。

特征c)是围绕已被识别为车辆光点的候选者的像素的像素阵列(例如阵列41至44中的一个)的灰度值的平均值。该平均值通过使用查找表转换为场景亮度值。

针对车辆光的每个候选者,计算第一特征a)、b)和c)并将其输入到treeboost分类器中。对于第一特征a)、b)和c)中的一些,treeboost分类器包括相应的阈值。treeboost分类器将相应候选者的第一特征a)、b)和c)中的每一个与相应阈值进行比较。根据这些比较,treeboost分类器确定是否应丢弃相应的候选者。

在图7中示出了treeboost分类器的示例。treeboost分类器按以下方式工作:它包含多个决策树,例如20个,各自包含多个节点,例如3个。图7示出了具有3个节点的决策树的示例。

图7中所示的决策树的输出是图7中所示的权重w0、w1和w2或w3中的一个。在三个节点中的每一个处,将特征f0、f1和f2中的一个与相应的阈值t0、t1和t2进行比较。当具有已知特征的图像被呈现给treeboost分类器时,在训练模式期间生成所述阈值t0、t1和t2。

决策树的输出如下:

如果特征f0>阈值t0且特征f1>阈值t1,则为w0;

如果特征f0>阈值t0且特征f1≤阈值t1,则为w1;

如果特征f0≤阈值t0且特征f2>阈值t2,则为w2;

如果特征f0≤阈值t0且特征f2≤阈值t2,则为w3。

根据训练过程,特征f0、f1和f2可以是与第一特征a)、b)、c)的集合都相同的特征或不同的特征。treeboost分类器置信度是所有包含的决策树(例如20个)的权重之和。更高的置信度意味着候选者是亮点的概率更高。如果置信度低于在检测器训练过程期间训练的阈值,则丢弃或拒绝候选者。第一级联的treebost在所有第一特征上进行训练,即使在运行时可能没有选择所有功能。

一旦训练了treeboost阈值,就可以通过交替地将场景亮度特征的treeboost阈值从场景亮度转换为8位值来避免查找操作。

这是更昂贵的,因为需要搜索算法来在查找表中找到阈值的位置。但是,只需要对于很少的阈值每图像帧进行一次。在大多数情况下,计算工作量相对于对所有候选者进行查找操作是微不足道的。此外,它独立于候选者的数量,因此提高了实时计算特性。

在方法20的步骤27中,通过使用第二分类器进一步减少车辆光的候选者数量,第二分类器可以是treeboost分类器。第二分类器针对第二特征进行训练。另外,第二分类器也可以针对一个或更多个第一特征进行训练,如上面结合第一分类器所讨论的。第二特征是不同尺寸的像素阵列的灰度值的平均值的比值,其中阵列围绕已被识别为车辆光的候选者的像素布置,其中平均值通过使用查找表转换为场景亮度值。

发现场景亮度中的图像平均值之间的比值是最有价值的特征,但是相对于之前的步骤来说太昂贵,因为通过查找表转换为场景亮度以及做除法是不可避免的。

在运行期间,装置12针对车辆光的每个候选者计算第二特征,并且第二分类器将第二特征与在训练期间生成的阈值进行比较。第二分类器可以包含如上所述的决策树。可以针对第二分类器的决策树再次选择来自第一级联即第一分类器的特征。

此外,场景亮度信息用于斑点细化。如果像素高于细化阈值并且连接到候选点,即位于候选者的邻域中,则认为这些像素属于亮点。如果在相应像素与候选点之间的某个路径上的像素也高于阈值,则与候选点的连接是间接的就足够了。这在图9中示例性地示出。这里的阈值是235。在图9的左侧,示出了围绕具有值255的候选斑点的7x7图像块。在图9的右侧,所有被认为属于亮点的像素被标记为1。所有其它像素被标记为0。

围绕像素的属于该像素邻域的区域也可以预先确定。

细化阈值对应于候选点与来自表示局部邻域的平滑图像的值之间的场景亮度的几何平均值,其已在步骤25中使用。出于运行时原因,聚类可限于围绕候选点的7x7像素阵列。

在图10中示意性地示出了细化阈值的生成。候选点灰度值和局部周围灰度值借助查找表转换为场景亮度中的对应值。将这些值相乘并计算平方根以获得场景亮度中的细化阈值,然后使用查找表将其反向映射到细化阈值灰度值。

为了找到更大的斑点,该算法另外在具有较低分辨率的图像上进行。由于细化步骤,对于每个步骤将每个维度的分辨率降低2就足够了,而不是针对每个可能的斑点尺寸具有一个分辨率。

在方法20的步骤28中,可以执行附加步骤以检测压缩图像中的车辆光。

总之,本文提出的亮点检测方法使用三个不同子步骤的场景亮度信息:

-用于计算用于候选点选择的局部阈值,

-用于特征计算,其中发现有价值的场景亮度特征是

1.转换为场景亮度的围绕候选点的区域的平均图像值,以及

2.围绕候选点的不同尺寸区域之间的场景亮度的比值,以及

-用于计算用于后续斑点细化的局部阈值。

然而,使用查找操作来获得场景亮度也非常昂贵。因此,检测器的前两个步骤通过交替地应用转换的阈值来避免针对每个候选点的转换。对于每个视频帧,仅需要计算一次阈值。这需要少得多的计算时间量,因为它独立于已处理候选点的可变数量。

仅额外的细化步骤和进一步的亮度特征计算需要将与特定亮点候选者相关的值转换为场景亮度。步骤25和26能够拒绝掉大多数候选者。只有数量显著减少的剩余候选者被传递到步骤27,因此允许其更昂贵。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1