一种基于特征拐点的人体高度估计方法与流程

文档序号:11459177阅读:266来源:国知局
一种基于特征拐点的人体高度估计方法与流程

所属领域

本发明属于计算机视觉技术领域,具体涉及一种基于特征拐点的人体高度估计方法,可用于智能交通系统、智能监控系统以及视觉定位系统。



背景技术:

随着计算机视觉的发展和应用,室内行人视觉定位技术迅速兴起并得到广泛关注。在单目视觉下,通过运动检测得到运动行人前景,通过摄像机标定可以得到摄像机内参数以及标定板所处的地平面外参数,根据前两部分结果可以完成行人定位。由于单目视觉无法获取深度信息,主流的单目定位方法是对行人的脚部进行检测定位。在行人下半身被遮挡的情况下,行人脚部所处的位置无法得到,对定位带来困难。传统的解决办法是通过双目视觉获取运动行人深度信息完成定位。但双目视觉存在一些问题:1)相比于单目视觉,成本较高;2)双目的计算量较大,对于计算单元的性能要求较高,对于实时性的要求是个挑战;3)双目的立体匹配一直是立体视觉中最困难的一步,它易受光学噪声、平滑表面镜面反射、透视失真、投影缩减、重复纹理、低纹理等因素的影响,使得匹配结果变差。



技术实现要素:

发明目的:在于针对上述已有技术中的问题,提出一种基于特征拐点的人体高度估计方法,能够在低成本、低运算性能要求的前提下,解决因遮挡带来的定位困难问题,提高定位精度。

技术方案:为实现上述目的,本发明中一种基于特征拐点的人体高度估计方法,包括以下步骤:

(1)对视频帧进行运动检测获取运动行人的前景目标区域t;

(2)对运动行人的前景目标区域t进行特征拐点检测得到头肩特征拐点p1与p2

(3)根据头肩特征拐点p1与p2分割出行人头部,计算当前头身比rc;

(4)根据当前帧头身比rc以及头身比模型值rs完成人体遮挡判断,若未遮挡则更新头身比模型值rs,若遮挡,则进行高度估计获取人体脚步位置。

其中,步骤(2)中所述特征拐点检测包括如下步骤:

1)对前景区域t进行轮廓线提取得到若干轮廓线;

2)对若干轮廓线进行检测,滤除轮廓线点个数小于预设门限th的噪声轮廓,得到有效行人轮廓c;

3)以顺时针方向为轮廓线方向,对有效行人轮廓线c上的任一点pi分别取其前后各n个点,计算pi的轮廓走向矢量adi,所述轮廓走向矢量adi定义为:

adi={prepi,r,prepi,l,prepi,u,prepi,d,sufpi,r,sufpi,l,sufpi,u,sufpi,d}

其中,pre表示点pi前面的点,suf表示点pi后面的点,pi,rpi,lpi,upi,d分别表示轮廓向右、左、上、下的程度;

4)将adi中各元素初始化为0,分别对点pi之前的n个点以及点pi之后的n个点进行扫描,得到pi点的走向矢量adi;

5)将满足prepi,r>m1并且sufpi,u>m2的点记录为特征拐点p1;将满足prepi,d>m1并且sufpi,r>m2的点记录为特征拐点p2,m1与m2为预设阈值。

具体地,步骤4)中对点pi之前的n个点以及点pi之后的n个点进行扫描,指的是:

1)对于点pi之前的某个点pj,若该点的下一个点pj+1在该点的右侧,则prepi,r加1;若该点的下一个点pj+1在该点的上侧,则prepi,u加1;若该点的下一个点pj+1在该点的下侧,则prepi,d加1;若该点的下一个点pj+1在该点的左侧则prepi,l加1;

2)对于点pi之后的某个点pj,若该点的下一个点pj+1在该点的右侧,则sufpi,r加1;若该点的下一个点pj+1在该点的上侧,则sufpi,u加1;若该点的下一个点pj+1在该点的下侧,则sufpi,d加1;若该点的下一个点pj+1在该点的左侧,则sufpi,l加1。

具体地,步骤(4)中根据当前头身比rc以及头身比模型值rs完成人体遮挡判断,具体如下:

1)根据头身比模型值rs以及预设置信区间[rl,rh]计算无遮挡时头身比有效范围[rs·rl,rs·rh],判断当前帧头身比rc是否在此范围中;

2)若当前帧头身比rc在有效范围中,则没有发生遮挡;

3)若当前帧头身比rc不在有效范围中,则发生遮挡。

有益效果:本发明中基于特征拐点的人体高度估计方法,通过运动检测得到行人的前景区域,根据检测到的两个特征拐点分割行人头部,通过行人未被遮挡时构建的头身比模型以及分割出的头部高度对人体高度进行估计,完成人体脚部位置的估计,从而实现遮挡情况下的定位。本发明方法在实现时只需要采用单目摄像头,成本低,算法时间复杂度低,避免了传统双目视觉的问题,并能使结果维持在较高的精度。

附图说明

图1是头肩特征拐点以及头身比定义示意图;

图2是本发明中基于特征拐点的人体高度估计方法的流程图;

图3是轮廓走向矢量计算模板;

图4是本发明方法拐点检测效果对比图,(a)是运动行人的前景目标区域,图4(b)为图4(a)的拐点检测效果图;

图5是轮廓走向矢量计算示意图,图5(a)是人体轮廓片段图,图5(b)是对轮廓片中的点1进行扫描示意图,图5(c)是对轮廓片中的点2进行扫描示意图,图5(d)是对轮廓片中的点3进行扫描示意图。

具体实施方式

下面结合实施例对本发明作更进一步的说明。

如图1所示,本发明中的两类特征拐点p1、p2,分别位于人头与一侧肩膀之间,p1反映轮廓先向右,后向上的走向,p2反映轮廓先向下,后向右的走向。定义头身比为h1/h2,h1为头顶至肩膀的距离,h2为头顶至脚的距离。

如图2所示,本发明中基于特征拐点的人体高度估计方法,对于每一时刻的视频数据进行处理,包括以下步骤:

(1)对视频帧进行运动检测获取运动行人的前景目标区域t;

(2)对运动行人的前景目标区域t进行特征拐点检测得到头肩特征拐点p1与p2;

(3)根据头肩特征拐点p1与p2分割出行人头部,计算当前帧头身比rc;

(4)根据当前帧头身比rc以及头身比模型值rs完成人体遮挡判断,若未遮挡则可以直接获取到人体脚步位置,不需要进行高度估计,此时更新头身比模型值rs,若遮挡,则进行高度估计获取人体脚步位置。

利用上述步骤对运动行人的高度进行估计后,便可根据人头坐标和所估计的高度估计出人体脚部位置,实现定位;对每个视频帧进行上述处理后,便可获取到运动行人的行进轨迹。

上述步骤(2)中,特征拐点检测具体包括如下步骤:

1)对前景区域t进行轮廓线提取得到若干轮廓线;

2)对若干轮廓线进行检测,滤除轮廓线点个数小于预设门限th(th>>10)的噪声轮廓,得到有效行人轮廓c;

3)规定顺时针方向为轮廓线方向,对轮廓线c上的任一点pi分别取其前后各n(n=10)点,按图3所示的模板计算pi的轮廓走向矢量adi,该模板中以pj(i-n≤j<i+n)为中心,按轮廓线方向检测点pj下一个点pj+1的位置,数字0至7代表的是点pj+1可能出现的位置,如1代表的是pj+1在pi的右侧,3代表的是pj+1在pi的下侧,5代表的是pj+1在pi的左侧,7代表的是pj+1在pi的上侧。

轮廓走向矢量adi定义为:

adi={prepi,r,prepi,l,prepi,u,prepi,d,sufpi,r,sufpi,l,sufpi,u,sufpi,d}

pre表示前面的点,suf表示后面的点,pi,rpi,lpi,upi,d分别表示轮廓向右、左、上、下的程度;

4)将adi中各元素初始化为0,分别对点pi之前的n个点以及点pi之后n个的点进行扫描,得到pi点的走向矢量adi;具体如下:

4a)对点pj(i-10≤j≤i-1),重复以下步骤:

将点pj(i-10≤j≤i-1)作为图3表格的中心,点pj的下一个点pj+1如果在位置1,则prepi,r加1,如果在位置7,则prepi,u加1,在位置3,则prepi,d加1,在位置5,则prepi,l加1,其他位置则不变。

4b)对点pj(i≤j≤i+9),重复以下步骤:

将点pj(i≤j≤i+9)作为图3表格的中心,点pj的下一个点pj+1如果在位置1,则sufpi,r加1,如果在位置7,则sufpi,u加1,在位置3,则sufpi,d加1,在位置5,则sufpi,l加1,其他位置则不变。

5)对轮廓线c上所有点的adi进行遍历,将满足prepi,r>m1并且sufpi,u>m2的点记录为第一类拐点;将满足prepi,d>m1并且sufpi,r>m2的点记录为第二类拐点,m1与m2为预设阈值,实际检测效果如图4(b)所示,左侧白点为第一类拐点p1,右侧白点为第二类拐点p2。

为了进一步清楚地解释步骤4),以图5(a)所示的行人轮廓片段为例,设n=5,计算轮廓片段中的轮廓点6的走向矢量ad6,过程如下:

1)将ad6中各元素初始化为0,则:

ad6={0,0,0,0,0,0,0,0}

2)第一步,先对轮廓点6之前的5个点中的轮廓点1进行扫描,按照图3走向矢量计算模板计算ad6,如图5(b)所示,此时轮廓点1的下一个轮廓点2在矢量模板位置2,所以ad6不变;

3)扫描轮廓点2,按照图3走向矢量计算模板计算ad6,如图5(c)所示,此时轮廓点2的下一个轮廓点3在矢量模板位置3,则ad6的prep6,d加1变为:

ad6={0,0,0,1,0,0,0,0}

4)扫描轮廓点3,按照图3走向矢量计算模板计算ad6,如图5(d)所示,此时轮廓点3的下一个轮廓点4在矢量模板位置3,则ad6的prep6,d加1变为:

ad6={0,0,0,2,0,0,0,0}

5)依次扫描轮廓点6之前的5个点中剩下的轮廓点4-5,得到ad6为:

ad6={0,0,0,3,0,0,0,0}

6)第二步,对轮廓点6及轮廓点6之后的5个轮廓点6-10按照类似于2)3)4)5)中的扫描方式进行扫描,得到最终的ad6为:

ad6={0,0,0,3,5,0,0,0}。

上述步骤(3)中,根据特征拐点分割头部以及头身比rc计算具体包括如下步骤:

1)依据图1坐标系定义读取特征拐点坐标p1(u1,v1)与p2(u2,v2),头顶坐标ph(uh,vh),及检测到的人体前景区域底部坐标pf(uf,vf);

2)计算头部分割线

3)计算当前帧头身比

上述步骤(4)中根据当前帧头身比rc以及头身比模型值rs完成人体遮挡判断及高度估计,具体如下:

1)根据头身比模型值rs以及预设置信区间[rl,rh]计算无遮挡时头身比有效范围[rs·rl,rs·rh],判断rc是否在此范围中;

2)若rc在有效范围中,则此时没有发生遮挡,用rc更新数据库中的头身比模型rs;

3)若rc不在有效范围中,则此时发生遮挡,根据此时的rs以及p1与p2分割出的头部高度估计人体高度,即得到人体脚部位置。

其中,头身比模型值rs的更新过程如下:

1)初始化头身比模型值rs为r0(头身比r0大约为1/7),并初始化头身比模型滑动数组moveave_fifo[n]={r0,r0...r0}(n为滑动数组大小,n一般取10);

2)根据当前帧头身比rc进行行人遮挡判断,若发生遮挡,根据rs完成人体高度估计,若未发生遮挡,更新moveave_fifo及rs值,更新策略具体为:

21)将moveave_fifo的后n-1个数据前移一位;

22)将当前帧rc放入数组最后一个位置;

23)则更新的头身比模型值

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