一种基于垂直放置的深度摄像头的人头检测方法

文档序号:6376743阅读:2069来源:国知局
专利名称:一种基于垂直放置的深度摄像头的人头检测方法
技术领域
本发明涉及一种检测方法,尤其是一种基于垂直放置的深度摄像头的人头检测方法,属于图像处理与模式识别的技术领域。
背景技术
人头计数在监控视频应用中是一个重要的组成部分,例如游客数量统计等。现有的基于可见光的人头计数方法,大体可分为如下三个方向基于检测的计数,基于回归的计数和无监督的跟踪。基于检测的计数即使用一个多尺度的滑框对待检测图像中的所有位置进行二分类,判断滑框内是否有人;基于回归的计数利用回归的方法训练一个图像纹理和其中的人数之间的一个分布从而对图像中的人数进行统计;基于无监督跟踪的方法利用点跟踪的方法对所有的点的轨迹进行聚类,从而获取图像序列中人的数量。以上三种方法在某些场景下可以取得很好的效果,但是由于遮挡,光照变化,目标颜色和纹理的多边性等, 在实际应用中检测正确率不高。现有的基于深度摄像头的人头计数方法都比较简单,大体可分为两类跟踪法和模板匹配法。跟踪法即利用深度摄像头精确获取场景内的运动目标,直接对其进行跟踪完成计数任务;模板匹配利用垂直放置深度摄像机获取场景内的深度图,其中人的头部和肩部形成的一个鞍形,使用一个固定模板在场景内进行滑框匹配从而检测到人头。以上两种方法必须在特定场景特定条件下才会取得良好效果,且对参数变化很敏感,不利用推广应用。

发明内容
本发明的目的是克服现有技术中存在的不足,提供一种基于垂直放置的深度摄像头的人头检测方法,其操作方便,鲁棒性好,适应性广。按照本发明提供的技术方案,一种基于垂直放置的深度摄像头的人头检测方法,所述人头检测方法包括如下步骤a、设置垂直分布的摄像头及与所述摄像头匹配的主动光源,并利用所述摄像头获取行人的深度图像;b、对所获得的深度图像进行背景建模,以获得对应的前景图像;C、对上述前景图像进行模拟随机撒水滴操作;d、对上述降落于前景图像内的水滴作为采样点,并将所述采样点与所述采样点的邻域进行比较,直至所述采样点移动到局部极小值区域,无法再进行移动,则采样点停留在所述局部极小值区域,并调节局部极小值区域的深度数值;e、当前景图像内所有的采样点均进行上述移动后,得到采用点的分布图,将分布图中局部极小值区域的深度数值与预设阈值比较,滤除深度数值小于预设阈值的局部极小值区域后,得到所需的行人头部位置区域,以实现对行人数量检测。所述步骤b中利用高斯背景建模的方法对深度图像进行建模。
所述步骤c中,随机撒水滴操作中每次降落的水滴为一个或多个。所述随机撒水滴操作中每次降落的水滴为一个时,则上述过程具体为hi、对于深度图像的前景图像f(x,y)和衡量函数g(x,y),并令g(x,y)=0 ;前景图像f(x,y)的范围为MXN,预设阈值T,水滴数量K;设置辅助变量k= I ;h2、若 k〈K,则 x=rand(l, M),y=rand(l, N),否则跳转到步骤 h6,其中,rand( ·)表示随机函数,点(x,y)为降落水滴的位置;h3、令 d (xn, yn) =f (xn, yn) +g (xn, yn) - (f (x, y) +g (x, y)),其中,(xn, yn)是点(x, y)的邻域;h4、令(x, , γ' ) =argmind(xn, yn);115、如果(10^ ,y' )〈0,则 X=X',y=y',跳转步骤 h3 ;否则 g(x,y) =g(x,y)+1,k =k+1,跳转步骤(h2);h6、对前景图像f(x,y)及得到的衡量函数g(x,y)与预设阈值T比较,去除衡量函数g(x,y)小于预设阈值T的区域,剩余为行人头部位置区域。所述随机撒水滴操作中每次降落的水滴为多个时,则上述过程具体为Si、对于深度图像的前景图像f(x,y)和衡量函数g(x,y),并令g(x,y)=0 ;前景图像f(x,y)的范围为MXN,预设阈值T,水滴数量K',一次降落的水滴数目为R ;设置辅助变量 k=l ;s2、若 k〈K',则 X = rand(l,M),y = rand(l,N),ω = R,否则跳转到步骤 s5,其中,rand ( ·)表示随机函数,点(x,y)为降落水滴的位置;s3、若 ω >0,则 d (xn, yn) =f (xn, yn) +g (xn, yn) - (f (x, y) +g (x, y)),其中,(xn, yn)是点(x, y)的邻域;并令(X',l' )=argmind(xn, yn);否则跳转至步骤s2 ;s^gcKx',y' )+r<0, jjllj x=x ;,y=y ',否则 g (x, y) =g (x, y)+min (r, ω),ω = ω-;τ,并跳转到步骤s3, r表示预设参数;s5、对前景图像f(x,y)及得到的衡量函数g (x,y)与预设阈值T比较,去除衡量函数g(x,y)小于预设阈值T的区域,剩余为行人头部位置区域。本发明的优点采用垂直设置摄像头的方法自上而下拍摄行人,获取深度图片,解决了遮挡问题,同时采用主动光源的深度摄像头获取场景中的深度图像,从而避免了光照,颜色和纹理的变化对检测造成的影响。本发明开发了一种新的聚类算法可有效快速鲁棒地获取局部最小值区域,且与图像中目标尺度无关,对参数依赖性小。利用这种算法对获取的深度图像进行处理,从而检测到图像中的行人数量,操作方便,适应性广。


图I为本发明获取深度图像的结构示意图。图2为本发明的检测流程图。附图标记说明1_摄像头、2_地板及3_行人。
具体实施例方式下面结合具体附图和实施例对本发明作进一步说明。本发明的整个流程为,首先通过垂直放置的摄像头获取检测区域内的行人图像,对获取的深度图像进行背景建模,然后根据获取的前景大小进行模拟随机水滴撒点操作,每个点都根据周围的点的大小决定自己的运行方向以及停留位置,最后统计所有的点的聚集处,经过区域大小滤波,获取场景中人的个数。如图I和图2所示本发明人头检测方法包括如下步骤,分别为a、设置垂直分布的摄像头I及与所述摄像头I匹配的主动光源,并利用所述摄像头I获取行人3的深度图像;如图I所示摄像头I位于行人3的顶部,即摄像头I处于垂直分布状态,摄像头I安装于所需的室内环境内,主动光源采用现有的光源系统,采用的垂直放置的摄像头获取行人的深度图像,由于从摄像头I位置观察,行人3的头部一定是要比其他部位更靠近摄像头1,头部的深度值比相邻区域小,从而对人的检测转变为对图像中局部极小值的寻找。本发明实施例中,所述深度均值行人3的头部与摄像头I间的距离。b、对所获得的深度图像进行背景建模,以获得对应的前景图像; 因为由主动光源获取的深度图像与外界光照变化无关,不受光照变化影响,同时也不会检测到阴影,从而可获取鲁棒的前景图像,本发明采用的是多高斯背景建模方法,此种方法在多种文献中都有介绍。C、对上述前景图像进行模拟随机撒水滴操作;设函数f为对深度图像进行背景建模之后获取的前景图像,其中f(x,y)表示点(x, y)的深度值。由于噪声影响,f(x, y)并不是可导的,甚至是不连续有值的。此外,因为垂直放置的摄像头I获取的图像中,行人3的头部会比其它部位更接近摄像头I,则行人3的头部的深度值要高于肩膀等其它部分,则在图像中寻找行人3的个数等同于在前景图像中寻找局部极极值。在数学上,这个问题等同于寻找一个合适的A和Q满足以下方程Ea(f (x, y)) + n ^ Eqxa(f (x, y))(I)其中A e Q,A是局部区域而Q则是其领域,E代表深度图中一定区域的深度信息。η则是预先定义的阈值使得区域A—定比区域Q\A的深度要小。为了高效而鲁棒地解决上述问题,需要引入一个额外的衡量函数g(x,y),去衡量f(x, y)中某一个区域与其临近区域的差异,如果差异超过预先设定的阈值,且这个区域大小超过预先设定的阈值,则认为这个区域为人的头部。在数学描述上,定义g(x,y)如下g(x, y)是一个对 f(x,y)的衡量方程,当且仅当3£>0,/0,,.1,,),(12,),2),使得I (X1-X2)2+ (Yry2) I〈 ε ,如果 f (X1, Y1) ^ f (x2, y2)、,贝Ijf (X1, Y1) +g(X1, Y1) f (x2, y2) +g(χ2, y2)(2)g(x1; Y1) ^ g(x2, y2)(3)g(x1; Y1) ^ 0, g(x2, y2) ^ 0(4)其中,(X1,y2)、(x2, y2)为点(x, y)的邻域,g(x, y)可以为 0。受到水滴从高处往低处运动的启发,本发明实施例提出一种新算法来获取g(x,y)。如果把f(x,y)看做一个地面,其中的深度信息作为高地或者洼地,如果有水滴进入则会在其邻域内寻找较低的位置并进行移动,而那些较低位置则会最终聚集大量的水滴,g(x, y)用来表示在(x,y)位置的水滴数量。在撒点移动过程之后,那些拥有很多水滴的区域就是人的头部。d、对上述降落于前景图像内的水滴作为采样点,并将所述采样点与所述采样点的邻域进行比较,直至所述采样点移动到局部极小值区域,无法再进行移动,则采样点停留在所述局部极小值区域,并且所述局部极小值区域的深度值增加对应数值;e、当前景图像内所有的采样点均进行上述移动后,得到采用点的分布图,将分布图中局部极小值区域的深度数值与预设阈值比较,滤除深度数值小于预设阈值的局部极小值区域后,得到所需的行人头部位置区域,以实现对行人数量检测。步骤d和步骤e中,本发明的算法可以被看做上面随机撒水滴一个过程的模拟,但是,水滴的数量是一个连续的值,并且不同的水滴会到达不同的位置,它们直接的互相影响非常复杂。在本发明的聚类算法当中,设定每个水滴都有相同的质量,而地表则是离散的区域;每个水滴都是一个一个顺序在地表降落运动,所以任意两个水滴之间没有相互作用存在。则算法的具体实现细则如下hi、对于深度图像的前景图像f(x,y)和衡量函数g(x,y),并令g(x,y)=0 ;前景图像f U,y)的范围为MXN,预设阈值T,水滴数量K ;设置辅助变量k=l ;本发明实施例中,水滴数量K是根据所获得的深度图像及其需要进行设置,预设阈值T根据水滴数量K对应设 置,具体实施时,预设阈值T为2 ;h2、若 k〈K,贝丨J x=rand(l, M), y=rand(l, N),否则跳转到步骤(h6),其中,rand( ·)表示随机函数,点(x,y)为降落水滴的位置;h3、令 d (xn, yn) =f (xn, yn) +g (xn, yn) - (f (x, y) +g (x, y)),其中,(xn, yn)是点(x, y)的邻域;f (x, y)即为点(x, y)的深度值;g(x,y)能表示在点(x, y)落下的雨滴数目,g(x,y)初始时为O,每一个点(X,y)处的数值由两个部分组成,即初始图像深度值f (X,y)以及后来又落在此处的雨滴数目g(x,y)。(χη, yn)为点(x,y)的邻域,实际上就是点(x,y)的周围八个点,上面的这个表达式即是将这八个邻域点依次与(x,y)进行比较,d(xn,yn)即为八个点中的某一个点与中间的点(x,y)之间的差值,可依次写为d(Xl,yi),d(X2,y2)···d (x8, y8),此处统统以d (xn, yn)来表示。h4、令(X' , j' ) =argmind(xn, yn);argmind (xn, yn)即是寻找一点(x, y),使得d (xn, yn)最小,其实就是对上一步计算得来的八个点的d(xn,yn)寻找一个最小值,并将其相应的位置复制给(X' ,y'),此步骤其实就是要寻找点(x,y)周围八个点与自己的差值的最小值。h5、如果 dV ,Y' )<0,pjx=x/,y=y',跳转步骤 h3 ;否则 g (x,y) =g (x,y)+1,k=k+1,跳转步骤h2 ;此步骤是将雨滴移动到这个最小值点,进行下一次的循环;h6、对前景图像f(x,y)及得到的衡量函数g (x,y)与预设阈值T比较,去除衡量函数g(x,y)小于预设阈值T的区域,剩余为行人头部位置区域。上述的具体过程是一个雨滴到达点(X,y)时,要比较一下点(X,y)的邻域八个点值和(X,y)处的值,如果邻域八个点中有的点的值比(X,y)处的小,则雨滴就移动到这个最小值所在的位置上去,如果邻域八个点的值都比自己大,则这雨滴就落在了(x,y)点上,不会再进行移动,再进行下一个雨滴的移动,即跳转到步骤h2。步骤h3就是获取点(X,y)邻域八个点中的值与(X,y)之间的差值,然后步骤h4在这些差值中寻找最小值,步骤h5判断这个最小值是否小于0,如果小于0,则说明邻域内有某个点的值比(x,y)处的值小,则要移动该雨滴到这个最小值位置上去,进行下一个步骤h3,步骤h4;如果这个最小值大于O,说明点(x,y)即为邻域内的最小值,则雨滴在点(x,y)处落下,回到步骤h2,进行下一个雨滴的移动这里的阈值T与局部极小值的区域大小是没有关系的,实际上g(x,y) >0即表示点(X,y)位置上有雨滴降落,则此区域为局部极小值区域,但是只有降落了 T个雨滴以上的区域才能被当做头部,则在局部最小值区域的基础上,将g(x,y)与阈值T进行比较,小于阈值T的区域去除掉之后,即为滤波后的区域了,即为人的头部区域。其中水滴数目K设置为t —般设置为100,在每个循环当中,点(x,y)在前景图像f(x,y)中随机产生,如果点(x,y)的邻域内存在有点,ι')满足f(x/ ,1' )+g(x/ ,1' )〈€(\7)+80^,7),即(\7)点的深度值比0^ ,1')点小,则位于(x,y)点的水滴就要移动到,1'),直到水滴不能再移动位置,假设最终移动到的位置为(χο,y。),则g(x。,yo)=g(xo, yQ)+i。若所有的κ个水滴都找到了固定位置,则最终得到了衡量函数g(x,y)。随后根据衡量函数g(x,y)及预设阈值T进行前景区域大小滤波,对于过小的区域进行消除,剩下的即为人头区域。针对上述算法虽然对场景鲁棒但是运算速度缓慢的缺点,本发明实施例基于上述的算法,提出了一套加速方案。由于初始降落在同一个区域的水滴走过的路径大致相似,甚至倾向于最终移动到同一个区域,根据这个特点,可以每次循环当中不必每次都只降落一个水滴,而使用R个水滴降落在某一区域,这样就可以使用W=K/R次循环。当R个水滴运动到点(X。,yQ),且对周围所有的点(X' , 1')满足条件f (X。,yQ)+g(xQ,yQ)>f (X' , i' )+g(X' , l'),则R=R-r,且gh,yj+r,其中r为预先设定参数。随后这R个水滴以(x0,10)为初始点继续进行判断运动,直到R = O,详细算法如下所示Si、对于深度图像的前景图像f (X,y)和衡量函数g(x, y),并令g(x, y) =0 ;前景图 像f(x,y)的范围为MXN,预设阈值T,水滴数量K',一次降落的水滴数目为R ;设置辅助变量 k = I ;s2、若 k〈K',则 X = rand(l, Μ),y = rand(l, N), ω = R,否则跳转到步骤 s5,其中,rand ( ·)表示随机函数,点(x,y)为降落水滴的位置;w就是一个局部变量,每次循环开始的时候都将它的值设置为R,然后在循环当中的s4步骤中,会逐渐减小,直至小于O之后跳转至s2进行下一轮循环;s3、若 ω >0,则 d (xn, yn) =f (xn, yn) +g (xn, yn) - (f (x, y) +g (x, y)),其中,(xn, yn)是点(x, y)的邻域,并令(X' , l' ) =argmind(xn, yn);否则跳转至 s2.s^gcKx',y' )+r<0, jjllj x=x ;,y=y ',否则 g (x, y) =g (x, y)+min (r, ω),ω = ω-Γ,并跳转到步骤S3,r表示预设参数;r为算法中唯一需要调节的参数,一般是根据现场摄像机的高度来进行调节的,但是最终的结果对于这个参数依赖性不强,这种对参数不敏感也是算法的优点之一,即如果摄像机的高度相差不大,这个参数也不用更改。一般地,采用的R=25,r=5。s5、对前景图像f(x,y)及得到的衡量函数g (x,y)与预设阈值T比较,去除衡量函数g(x,y)小于预设阈值T的区域,剩余为行人头部位置区域。是对应于区域内的水滴数量的,降落的水滴才是指示头部位置所在的关键,而不是本身的深度值。
本发明采用垂直设置摄像头I的方法自上而下拍摄行人,获取深度图片,解决了遮挡问题,同时采用主动光源的深度摄像头获取场景中的深度图像,从而避免了光照,颜色和纹理的变化对检测造成的影响。本发明开发了一种新的聚类算法可有效快速鲁棒地获取 局部最小值区域,且与图像中目标尺度无关,对参数依赖性小。利用这种算法对获取的深度图像进行处理,从而检测到图像中的行人数量,操作方便,适应性广。
权利要求
1.一种基于垂直放置的深度摄像头的人头检测方法,其特征是所述人头检测方法包括如下步骤(a)、设置垂直分布的摄像头及与所述摄像头匹配的主动光源,并利用所述摄像头获取行人的深度图像;(b)、对所获得的深度图像进行背景建模,以获得对应的前景图像;(C)、对上述前景图像进行模拟随机撒水滴操作;(d)、对上述降落于前景图像内的水滴作为采样点,并将所述采样点与所述采样点的邻域进行比较,直至所述采样点移动到局部极小值区域,无法再进行移动,则采样点停留在所述局部极小值区域,并调节局部极小值区域的深度数值;(e)、当前景图像内所有的采样点均进行上述移动后,得到采用点的分布图,将分布图中局部极小值区域的深度数值与预设阈值比较,滤除深度数值小于预设阈值的局部极小值区域后,得到所需的行人头部位置区域,以实现对行人数量检测。
2.根据权利要求I所述的基于垂直放置的深度摄像头的人头检测方法,其特征是所述步骤(b )中利用高斯背景建模的方法对深度图像进行建模。
3.根据权利要求I所述的基于垂直放置的深度摄像头的人头检测方法,其特征是所述步骤(C)中,随机撒水滴操作中每次降落的水滴为一个或多个。
4.根据权利要求3所述的基于垂直放置的深度摄像头的人头检测方法,其特征是,所述随机撒水滴操作中每次降落的水滴为一个时,则上述过程具体为(hi)、对于深度图像的前景图像f (X,y)和衡量函数g(x, y),并令g(x, y) =0 ;前景图像 f(x,y)的范围为MXN,预设阈值T,水滴数量K;设置辅助变量k= I ;(h2)、若 k〈K,贝丨J X = rand (I, Μ), y = rand (I, N),否则跳转到步骤(h6),其中,rand (·) 表示随机函数,点(x,y)为降落水滴的位置;(h3)、令 d (xn, yn) =f (xn, yn) +g (xn, yn) - (f (x, y) +g (x, y)),其中,(xn, yn)是点(x, y)的邻域;(h4)、令(x,,y, ) =argmind(xn, yn);(h5)、如果 d(x' ,y' )〈0,则 X=X',y=y',跳转步骤(h3);否则 g(x,y)=g(x,y)+l,k =k+1,跳转步骤(h2);(h6)、对前景图像f(x,y)及得到的衡量函数g(x,y)与预设阈值T比较,去除衡量函数 g(x, y)小于预设阈值T的区域,剩余为行人头部位置区域。
5.根据权利要求3所述的基于垂直放置的深度摄像头的人头检测方法,其特征是,所述随机撒水滴操作中每次降落的水滴为多个时,则上述过程具体为(Si)、对于深度图像的前景图像f (X,y)和衡量函数g(x, y),并令g(x, y) =0 ;前景图像 f(x, y)的范围为MXN,预设阈值T,水滴数量K',一次降落的水滴数目为R ;设置辅助变量 k = I ;(s2)、若 k〈K',则 X = rand (I, Μ), y = rand (I, N),co=R,否则跳转到步骤(s5),其中, rand( ·)表示随机函数,点(x,y)为降落水滴的位置;(s3 )、若 ω >0,则 d (xn, yn) =f (xn, yn) +g (xn, yn) - (f (x, y) +g (x, y)),其中,(xn, yn)是点 (x,y)的邻域;并令(X' ,1' )=argmind(xn,yn);否则跳转至步骤(s2);(s4)、若 d(x ' , y ' )+r<0,则 x=x ' ,y=y ',否则 g(x, y) =g(x, y)+min(r, ω),ω = ω-Γ,并跳转到步骤(S3),r表示预设参数;(s5)、对前景图像f(x,y)及得到的衡量函数g(x,y)与预设阈值T比较,去除衡量函数 g(x, y)小于预设阈值T的区域,剩余为行人头部位置区域。
全文摘要
本发明涉及一种基于垂直放置的深度摄像头的人头检测方法,其包括如下步骤a、设置垂直分布的摄像头及主动光源,并获取行人的深度图像;b、对获得的深度图像进行背景建模,以获得对应的前景图像;c、对前景图像进行模拟随机撒水滴操作;d、对上述降落于前景图像内的水滴作为采样点,并将采样点与其邻域进行比较,直至采样点移动到局部极小值区域,则采样点停留在所述局部极小值区域,并调节局部极小值区域的深度数值;e、得到采用点的分布图,将分布图中局部极小值区域的深度数值与预设阈值比较,滤除深度数值小于预设阈值的局部极小值区域后,得到所需的行人头部位置区域,以实现对行人数量检测。本发明操作方便,鲁棒性好,适应性广。
文档编号G06T7/00GK102930524SQ201210335299
公开日2013年2月13日 申请日期2012年9月11日 优先权日2012年9月11日
发明者李子青, 雷震, 易东, 张旭聪 申请人:无锡数字奥森科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1