发明内容
本发明的目的在于克服现有技术的不足,提高识别率,从而提供一种基于车辆部位特征的车辆检测与跟踪方法,该方法能够适用于光照变化、车辆遮挡、车辆阴影、图像分辨率变化等复杂环境,准确的检测和跟踪车辆,获取车辆的运动轨迹。获取的运动轨迹,可以用于电子警察系统中的上层智能交通服务,如车流量统计、车辆违章检测以及治安卡口等服务。
为实现上述目的,本发明提出了一种基于车辆部位特征的车辆检测与跟踪方法。本发明首先定位视频图像中的车辆部位,包括车牌以及车灯,然后利用结构信息组合这些部位,定位车辆,最后实现了一种基于扩展卡尔曼滤波器的车辆跟踪方法。
所述基于车辆部位特征的车辆检测与跟踪方法,包括以下步骤:
步骤S1,对视频序列中所有的车牌位置进行定位;
步骤S2,对视频序列中所有的车辆尾灯位置进行定位;
步骤S3,利用车牌和车辆尾灯之间的结构关系构建车辆模型,从而从每一帧图像中检测得到车辆位置;
步骤S4,根据检测得到的车辆位置,对车辆进行跟踪从而获取车辆的运动轨迹;
所述步骤S1进一步包括以下步骤:
步骤S11,根据中国国标车牌的底色,获取视频序列每一帧图像的颜色灰度图像;
步骤S12,利用所述颜色灰度图像计算图像梯度,得到梯度图像;
步骤S13,在梯度图像中进行滑动窗口扫描,计算窗口内像素的平均梯度,以平均梯度值作为窗口中心像素点的像素值,得到该梯度图像对应的得分图像;
步骤S14,在所述得分图像上确定车辆所在的区域,并利用非极大值抑制方法在车辆区域范围内求得局部极大值,如果该局部极大值大于设定的得分阈值,则以所述局部极大值为中心点,根据国标车牌的尺寸信息得到一车牌区域,将该车牌区域作为候选车牌区域;
所述步骤S2进一步包括以下步骤:
步骤S21,根据车辆尾灯的颜色,即红色,获取视频序列每一帧图像的颜色灰度图像;
步骤S22,利用多阈值方法将所述颜色灰度图像分割为多幅二值化图像;
步骤S23,对所述多幅二值化图像分别做连通域分析,取长宽比、面积大小在一定范围内的连通域作为候选车辆尾灯区域;
步骤S24,对于出现重叠的候选车辆尾灯区域,保留其中面积最大的那个区域,最终得到检测出来的车辆尾灯区域。
本发明与现有技术相比的显著效果在于:可以自动检测视频序列中的车辆位置,并跟踪它们获取车辆运动轨迹,不需要对原始视频信号进行任何的预处理,而且对实际监控视频中所出现的车辆遮挡、车辆在强光条件下的阴影、光照变化、摄像机抖动、检测噪声等干扰同时具有较高的鲁棒性。由于克服了这些现有技术在实际工程应用方面难以解决的困难,因此本发明真正实现了视频中车辆目标的实时检测与跟踪。
本发明针对智能视频监控中目标检测和跟踪的需要,利用频域分析技术,实时检测和跟踪视频中的车辆目标,具有算法简单、精确度高、鲁棒性强等优点。特别是不需要对原始视频信号进行任何的预处理,自动实现了周期检测,克服了现有技术难以克服的难点,也消除了实现真正工程应用的主要障碍。本发明使用图像处理和模式识别技术,实现车辆目标的检测与跟踪,最终为智能交通监控的上层服务如流量统计、治安卡口、违章检测等提供可靠的基础。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图1是本发明基于车辆部位特征的车辆检测与跟踪方法流程图,如图1所示,本发明基于车辆部位特征的车辆检测与跟踪方法包括以下步骤:
步骤S1,对视频序列中所有的车牌位置进行定位;
在本发明的一实施例中,选取一段监控摄像机拍摄的高清视频片断,分辨率为2592*1936,视频场景为覆盖三车道的交通路口,视频中车辆之间有可能存在部分遮挡。为了获取图像相关的物理参数,本发明使用OpenCV(Intel开源计算机视觉库)自带的摄像机标定程序对交通场景进行标定,实现图像坐标系与物理坐标系的相互转换,为本发明的算法提供标定结果。另外,采用OpenCV中的功能函数进行视频读取,把视频读入计算机。
图2是本发明车牌定位算法流程图,如图2所示,所述步骤S1进一步包括以下步骤:
步骤S11,根据中国国标车牌的底色,获取视频序列每一帧图像的颜色灰度图像;
中国国标车牌的底色包括蓝色、黄色、白色、黑色,下面以蓝底白字和黄底黑字车牌为例进行说明:图3(a)为视频序列中的某一帧图像,考虑到计算速度,使用下式来计算该图像中某一像素点x的颜色灰度值:
Color(x)=abs(B(x)-min{R(x),G(x)}),
其中,R(x)、G(x)、B(x)分别是像素x的红、绿、蓝通道的像素值,Color(x)为像素x变换后的灰度值,abs(B(x)-min{R(x),G(x)})为求取B(x)-min{R(x),G(x)}的绝对值。
蓝底白字和黄底黑字车牌可以用同一计算公式,因为蓝色的标准RGB值为(255,0,0),而黄色为(0,255,255),两者的颜色值是互补的,故可以用同一计算公式来计算。如果彩色图像某一像素的颜色越接近车牌底色-蓝色或黄色,则变换后的该像素的灰度值越大。
类似地,对于黑底白字和白底黑字车牌,直接采用其灰度图作为颜色灰度图像。
对于图3(a)所示的图像,计算得到的颜色灰度图像如图3(b)所示。
步骤S12,利用所述颜色灰度图像计算图像梯度,得到梯度图像;
本发明使用一种快速的梯度计算方法,即某一中间像素x的梯度值,为其邻域像素的最大值与最小值之差:
Gradient(x)=Max{Nb(x)}-Min(Nb(x)),
其中,Gradient(x)为像素x的梯度值,Nb(x)为x的邻域像素,在本发明的一实施例中,邻域的大小取为3x3。
利用图3(b)所示的颜色灰度图像计算得到的梯度图像如图3(c)所示,由于实际处理结果图片太暗,为了便于查看,图3(c)中的梯度图像对于实际处理结果中的每个灰度值均增加一个常数值60。
步骤S13,在梯度图像中进行滑动窗口扫描,计算窗口内像素的平均梯度,以平均梯度值作为窗口中心像素点的像素值,得到该梯度图像对应的得分图像,如图3(d)所示。
在本发明的一实施例中,滑动窗口的大小取为车牌的大小。由于实际处理结果图片太暗,为了便于查看,图3(d)中的得分图像对于实际处理结果中的每个灰度值均增加一个常数值60。
步骤S14,在所述得分图像上确定车辆所在的区域,并利用非极大值抑制方法在车辆区域范围内求得局部极大值,如果该局部极大值大于设定的得分阈值,则以所述局部极大值为中心点,根据国标车牌的尺寸信息得到一车牌区域,将该车牌区域作为候选车牌区域;
基于图3(d)的得分图像的车牌定位结果如图3(e)所示。
该步骤的重点是获取车牌的位置,即车牌的中心点位置,在接下来的步骤中需要使用车牌的中心点位置进行计算。
其中,在所述得分图像上确定车辆所在的区域进一步包括以下步骤:
步骤S141,根据与图像坐标系相应的物理坐标系获得得分图像中车牌所在区域的物理位置信息;
步骤S142,按照车辆与车牌的尺寸比例关系,得到该得分图像中车辆所在的区域。其中,车辆与车牌的尺寸比例关系为:车辆的宽度为车牌长度的4-5倍,车辆的长度为车牌长度的7-8倍。
根据《GA36-2007机动车号牌标准》,中国城市行驶的机动车号牌的尺寸主要为440mm×140mm、440mm×220mm两种,本发明的实施例中,采用的车牌的尺寸为440mm×140mm。
步骤S2,对视频序列中所有的车辆尾灯位置进行定位;
图4是本发明车辆尾灯定位算法流程图,如图4所示,所述步骤S2进一步包括以下步骤:
步骤S21,根据车辆尾灯的颜色,即红色,获取视频序列每一帧图像的颜色灰度图像;
图像中某一像素x的颜色灰度值按照下式来计算:
Color(x)=R(x)-max{G(x),B(x)}-abs(G(x)-B(x))*2,
其中,R(x)、G(x)、B(x)分别是像素x的红、绿、蓝通道的像素值,Color(x)为像素x变换后的灰度值,abs(G(x)-B(x))为求取G(x)-B(x)的绝对值。
图5(a)为视频序列中的某一帧图像,根据所述步骤21得到的该图像的颜色灰度图像如图5(b)所示。
步骤S22,利用多阈值方法将所述颜色灰度图像分割为多幅二值化图像;
本发明中分别选取了三个阈值对所述颜色灰度图像进行阈值分割,所述三个阈值分别为20、60、80,从而得到三幅二值化图像,如图5(c)-(e)所示。
步骤S23,对所述多幅二值化图像分别做连通域分析,取长宽比、面积大小在一定范围内的连通域作为候选车辆尾灯区域;
在本发明的一实施例中,所述长宽比范围为1∶3~3∶1,面积大小范围为400~15000像素。
步骤S24,对于出现重叠的候选车辆尾灯区域,保留其中面积最大的那个区域,最终得到检测出来的车辆尾灯区域。
基于图5(c)-(e)所示的二值化图像得到的车辆尾灯区域的检测结果如图5(f)所示。
其中,若两个车辆尾灯区域中心点之间的距离在1/4车身宽度(约0.5米)范围以内,则判断为重叠。
步骤S3,利用车牌和车辆尾灯之间的结构关系构建车辆模型,从而从每一帧图像中检测得到车辆位置;
本发明利用车牌和车辆尾灯之间的结构关系,将车牌和车辆尾灯组合为一个车辆模型,如图6所示,所述结构关系包括位置关系和角度关系。所述车辆模型中主要定义了两个车辆部位的结构关系:
①车牌与车辆尾灯之间的结构关系,记为约束1。经过统计结果得出,车辆的左侧尾灯与车牌之间的夹角为120度-240度,右侧尾灯与车牌之间的夹角为-60度-60度,尾灯与车牌之间的距离在0.5m到2.6m之间,即θPlate_Rwar-lamp∈[-60°,60°]∪[120°,240°],LPlate_Rear-lamp∈[0.5,2.6]。
②车辆尾灯与车辆尾灯之间的结构关系,记为约束2。经过统计结果得出,车辆尾灯与车辆尾灯之间的距离在1.5m到3m之间,两个车辆尾灯区域的中心点的连线与水平线之间呈一定的夹角,考虑到车辆姿态变化,该角度范围定为-60度到60度,即LRear-lamps∈[1.5,3],θRear-lamps∈[-60°,60°]。除此之外,两个车辆尾灯区域中心点连线的中垂线上还应存在车牌区域。
如果检测到的车辆部位满足所述车辆模型定义的约束1和约束2,即认为这几个车辆部位组成了一辆车,并以车牌中心点的位置作为车辆的位置,反之,则认为是误检。
步骤S4,根据检测得到的车辆位置,对车辆进行跟踪从而获取车辆的运动轨迹;
在本发明的一实施例中,使用扩展卡尔曼滤波方法进行车辆的跟踪,进而得到车辆的运动轨迹,在扩展卡尔曼滤波方法中,将车牌的中心位置及速度信息作为系统状态变量,即其中xposition和yposition分别为车辆的x和y坐标,xspeed和yspeed分别为x和y方向上的速度。
Kalman滤波器是一种递归估计方法,通常情况下分两步完成:预测和更新。
①预测
预测阶段,对状态变量及状态误差方差进行估计,计算公式如下:
其中,为上一时刻k-1的状态,F为状态转移矩阵,为预测的当前时刻k的状态,即为当前时刻的车辆预测位置和速度,也即预测值。
Pk=F*Pk-1*Ft+Q’
其中,Pk-1和Pk分别为上一时刻k-1和当前时刻k的状态误差协方差矩阵,Q是处理噪声协方差,Ft为状态转移矩阵F的转置,Kk为卡尔曼增益,H为观测矩阵。
②更新
在车辆跟踪过程中,将与当前时刻的预测位置距离最近、且距离小于一定阈值的观测目标位置作为观测值如果没有找到观测值,则跳过更新步骤,重新执行预测步骤。
为了对车辆的状态进行更新,首先按照下式计算卡尔曼增益Kk:
Kk=Pk*Ht*(H*Pk*Ht+R)-1,
其中,H为观测矩阵,其值为
Ht为观测矩阵H的转置,R为观测噪声协方差矩阵。所述卡尔曼增益Kk的值越大,更新率越小,观测值的比重就越小,反之,观测值的比重就越大。
接着利用预测步骤得到的预测值和观测得到的观测值、以及计算得到的卡尔曼增益Kk,对当前时刻k的状态变量和误差协方差矩阵进行更新:
Pk=(I-Kk*H)*Pk。
至此就得到了目标车辆在当前位置更新的状态估计值也就实现了使用最小方差估计方法估计当前时刻k的车辆位置。以此类推,就能够得到目标车辆的运动轨迹。
然而,由于摄像机采集图像时的帧间隔经常变化,因此可以从相机端获取每帧图像的时标,在每个更新步骤中利用前后帧的时标间隔来更新状态转移矩阵F。
其中,dt为摄像机的帧间隔,即当前时刻k与上一时刻k-1的时间间隔。
另外,考虑到车速不是均匀不变的,因此,还需要每次更新车速。考虑到车速测量的不准确性,本发明采用加权方法对车速进行更新,用于下一时刻的预测步骤:
xspeed_k=0.2*xspeed_measure+0.8*xspeed_k-1
yspeed_k=0.2*yspeed_measure+0.8*yspeed_k-1,
其中,xspeed_measure、yspeed_measure分别为x和y方向上的车辆观测速度。
如果某个目标车辆驶出摄像机视场或丢失跟踪,连续三帧没有得到状态变量的匹配,则认为该目标已退出。根据本发明的一实施例得到的车辆跟踪结果如图7所示。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。