发明名称 一种基于形状特征和轨迹分析的行人事件检测方法
摘要 本发明提供了一种基于形状特征和轨迹分析的行人事件检测方法,通过使用背景差分法的目标分割获得前景目标,对同一目标的连通域采用基于块的方法标记,同时记录该连通域的外接矩形并提取其几何形状特征完成目标识别,当识别出类行人目标后提取目标的角点,利用角点位置信息对角点跟踪匹配,重复上述过程,可以得到目标的运动轨迹,对该轨迹求分段拐点,在拐点形成的每个分段内分别做线性分析,实现目标速度的求取,在此基础上分析行人事件状态信息,完成交通安全预警。本发明的检测方法适用于复杂多变的交通场景,能对监控视频范围内出现的行人准确识别、跟踪并预警,实用价值高,具有广阔的应用前景。
申请公布号 CN103324913A 申请公布日期 2013.09.25
申请号 CN201310208226.6 申请日期 2013.05.29
申请人 长安大学;中国公路工程咨询集团有限公司 发明人 宋焕生;崔华;付洋;张骁;王国锋;李东方;李建成;张鹏
分类号 G06K9/00(2006.01)I;G06T7/20(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 西安恒泰知识产权代理事务所 61216 代理人 李婷
主权项 一种基于形状特征和轨迹分析的行人事件检测方法,其特征在于,该方法按照以下步骤进行:步骤一,建立图像像素到路面实际距离的映射关系,即映射表,同时将道路图像划分为道路内和路肩两部分;步骤二,将第1帧图像和背景图像在相同的块坐标系下都划分成多个块区域,背景的大小为W*H,划分的块大小为w*h,划分的块区域个数T为T=(W/w)*(H/h),用当前第1帧图像和背景图像对应像素相减,得到大小都为W*H的帧差图像,将帧差图像划分为T个大小都为w*h的块,记第j个块内大于灰度阈值A的像素个数为Nj,若Nj大于阈值B,则该块内所有像素值赋为255,否则赋为0,其中:W为图像水平方向像素个数;H为图像竖直方向像素个数;w为块的像素宽度;h为块的像素高度;j=1,2,3...T;所述的阈值A的取值为30;所述的阈值B的取值范围为块内像素总数的0.5~0.75倍;步骤三,以块为单位对二值化图像从左到右,从上到下依次扫描,对同一个目标的连通域标以相同的标号,同时获得该连通域的最小外接矩形,计算该外接矩形的高度Rh、宽度Rw、高宽比Ra和矩形度Rj,当Ra的值在阈值C范围内,并且Rj的值在阈值D范围内时,保留该目标,当Ra或Rj不在阈值C和D范围内时,去除该目标,其中:所述的阈值C范围为1.5~8;所述的阈值D范围为0.5~1;步骤四,对第1帧图像上标记的第j个前景目标寻找最佳角点,选取该目标某像素点Pi(m,n)为中心,建立一个大小为a*a的窗口,分别计算过中心像素点Pi(m,n)的横向、纵向以及两个对角线方向上相邻像素灰度差的平方和,取其结果中的最小值gmin,若gmin大于阈值E,则该点为角点,若gmin小于等于阈值E,则该点不为角点并舍去,其中:所述的a为窗口边长的像素宽度;所述的阈值E的取值范围为180~220;步骤五,将角点的位置信息以及匹配跟踪次数信息记录在一个新建的空的结构体中,目标匹配跟踪次数初始化为零;步骤六,对第二帧、第三帧、…、第i帧图像,重复步骤二、步骤三和步骤四的方法得到当前帧中目标的角点位置,然后以前一帧记录的角点位置为依据,与当前帧中的记录的目标的角点位置做比较,则有:当两者位置绝对值差大于阈值F,就确定当前帧中该角点所在的目标是当前帧中新的目标,再按照步骤五的方法进行处理;当两者位置绝对值差小于等于阈值F,则用当前帧的角点位置信息替换前一帧的角点位置信息作为新的比较基准依据,匹配跟踪次数加1,其中:i为正整数;所述的阈值F的取值范围为1~5;步骤七,当匹配次数大于等于阈值G时,则跟踪完毕,得到跟踪轨迹为:Track={Pi,Pi+1,...Pi+n},执行步骤八,其中:所述的阈值G的取值范围是50~70;步骤八,查找映射表,得到轨迹Track={Pi,Pi+1,...Pi+n}中每个角点对应的实际距离,即实际运动轨迹Track’={(si,0),(si+1,1),...,(si+n,n)},其中:si+n表示像素点Pi+n对应的实际距离,n表示点的下标;步骤九,由实际运动轨迹曲线首点Pi和尾点Pi+n得到经过这两点的一条直线的直线方程:y=kx+b,该轨迹上任意一点到这条直线的距离为: <mrow> <msub> <mi>d</mi> <mi>r</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mo>|</mo> <mi>k</mi> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mi>r</mi> </mrow> </msub> <mo>-</mo> <mi>r</mi> <mo>+</mo> <mi>b</mi> <mo>|</mo> </mrow> <msqrt> <msup> <mi>k</mi> <mn>2</mn> </msup> <mo>+</mo> <mn>1</mn> </msqrt> </mfrac> </mrow>式中:k为直线的斜率,b为截距,(x,y)表示该直线上的任意一点,(si+r,r)表示该轨迹上任意一点,dr表示(si+r,r)点到直线的距离;对所有的dr进行排序找出最大的dmax,若大于阈值H,则该点为目标运动轨迹的拐点,保存该点(si+r,r),执行步骤十,其中:所述的阈值H的取值为70cm;步骤十,拐点(si+r,r)将运动轨迹曲线分段,以(s0,0)和(si+r,r)为首尾点的曲线段,以及以点(si+r,r)和(si+n,n)为首尾点的曲线段,在这两条曲线段内分别执行步骤九,继续求取各段轨迹的拐点,直到这条轨迹上所有点到直线距离dr≤H时为止,这样得到一组拐点{(si+r0,r0),(si+r1,r1),...,(si+rm,rm)};步骤十一,拐点将运动轨迹分割成运动轨迹曲线段,对每一段运动轨迹曲线段使用最小二乘法进行线性拟合得到相关系数r,则有:当r≥0.5时,保留该段运动轨迹曲线段;当r<0.5时,去除该段运动轨迹曲线段;最终得到一组运动轨迹曲线段;步骤十二,利用经过步骤十一筛选后得到的每个运动轨迹曲线段的首点和尾点的实际距离和时间差求取分段内目标速度v,表达式为: <mrow> <mi>v</mi> <mo>=</mo> <mfrac> <mrow> <mo>|</mo> <msub> <mi>s</mi> <mi>f</mi> </msub> <mo>-</mo> <msub> <mi>s</mi> <mi>s</mi> </msub> <mo>|</mo> </mrow> <mi>N&Delta;t</mi> </mfrac> </mrow>式中:N表示一段运动轨迹曲线段中轨迹点的间隔段数;sf表示一段运动轨迹曲线段的尾点实际距离;ss表示一段运动轨迹曲线段的首点实际距离;Δt表示一段运动轨迹曲线段中相邻两个轨迹点的时间间隔;当所有分段内的速度都满足0.3m/s<v<2m/s时,即可确定该目标为行人;步骤十三,根据目标在当前帧的坐标点Pi+n位置判断行人事件危险等级:(1)当点Pi+n处于道路内部时,该行人事件危险等级为高;(2)当点Pi+n处于路肩时,如果行人运动轨迹矢量的方向与道路正确行使方向夹角大于30度,则该行人事件危险等级为中;(3)当点Pi+n处于路肩时,如果行人运动轨迹矢量的方向与道路正确行使方向夹角小于等于30度,则该行人事件危险等级为低。
地址 710064 陕西省西安市南二环中段