• 抗遮挡手势跟踪算法研究


                              抗遮挡手势跟踪算法研究

      单目普通摄像头下的目标跟踪过程中比较难解决的一个问题就是遮挡,当一个目标物被另一个物体部分遮挡或完全遮挡时,跟踪的特征就会不完整或者消失。导致跟踪过程中断,然后需要重新检测目标物进行跟踪的重新初始化。为了解决这个问题,可以采用多个摄像头,但我们也可采用一些抗遮挡的跟踪方法。根据个人的开发经验,以手势跟踪为例,在这里介绍两种比较好的抗遮挡跟踪算法。

    1、CamShift+Kalman

        第一种是采用具有预测机制的跟踪算法。可以在鲁棒性较好的跟踪算法上对其跟踪结果加一个预测机。这里介绍一种简单的预测机——Kalman滤波器。对于手势的跟踪算法采用CamShift跟踪算法,其原理可参考前面的文章《视觉跟踪综述》。

       Kalman滤波器是一个有效的预测机,但其观测值还需要我们用其他跟踪方法得到。如果将手部在较短时间的运动看作是一种近似恒定的运动,此时可以将目标的状态在该时间序列内看作为一时不变系统,那么可以设计一个Kalman跟踪器对手势进行预测跟踪。

    我们用X表示手势状态向量,(x,y)分别表示手势特征点在图像中的坐标位置和运动速度,则表示观测向量,这里我们只关注手势的位置信息。建立系统状态估计Kalman滤波模型:

    状态方程:

                                                  

    观测方程:

                                                      

    FH分别为状态转移矩阵和观测矩阵。

                                                           

    为从k时刻到k+1时刻系统的采样时间间隔。由于观测向量只与位置有关,这里:

                                                           

    wkvk为系统噪声和观测噪声,分别服从方差为RQ的标准正态分布,u(k)k时刻对系统的控制量,这里可以忽略。设计Kalman滤波方程对系统参数进行估计:

    预测:

                  

                                                   

       更新:

      

                          

      

    为了准确地对手部位置进行估计,就要使观测值即系统测量值的误差最小。当目标物被完全者当时,可以用预测值作为观测值假设物体做的匀速直线运动。或者可以采用其他的方法给系统一个观测值。

        其实,Kalman滤波器在轨迹平滑方面也有着出色的表现,我将在下一篇着重讲解下比较出色的跟踪轨迹平滑算法。

    跟踪结果:

     

       (来源:http://blog.sina.com.cn/s/blog_5d3402010100s0tr.html

     这种方法可以在一定程度上对目标进行较准确的预测跟踪,但跟踪精确度有限。下面介绍一种更有效的抗遮挡手势跟踪方法,我称之为目标拟合椭圆跟踪。

    2、目标拟合椭圆跟踪

    由于我们所采用的手势分割算法是基于肤色信息的,所以经过手势分割后背景中与手具有相同颜色信息的物体也会被分割出来(比如人脸)。我们将这样的一个肤色物体成为一个目标物。

        假设在时间t,经过肤色分割我们得到了M个肤色块。每一个肤色块bj(1<=j<=M)对应于一簇连续的肤色像素,但是肤色块和目标物之间不需要一一对应。比如两个交叉的手是两个不同的目标物,但是经过手势分割后它们却作为一个肤色块。这样,一个目标物可能对应一个肤色块或一个肤色块的一部分,而一个肤色块就可能对应一个或多个目标物。

      

        假设一个目标物的像素空间分布可以用一个椭圆近似表示。我们定义一个N,并用它来表示时间t场景中目标物的个数。用Oi(1<=i<=N)表示第i个目标物在图像上对应的肤色像素簇,用表示这个目标物所对应的椭圆模型(为椭圆中心,分别为椭圆长短轴,为椭圆的倾斜角),称之为目标拟合椭圆。最后,我们分别用来表示所有的肤色块集合,目标物对应像素簇集合以及目标拟合椭圆集合。这样,跟踪的过程实际就是一个随时间确定目标拟合椭圆hi和肤色块bj之间关系的过程。这个过程要解决三个子问题:

    1)       目标拟合椭圆的产生,这往往对应着新目标物的出现;

    2)       目标拟合椭圆的跟踪,比如已识别目标物继续存在场景中或不断运动;

    3)       目标拟合椭圆的释放,这对应于一个目标物从场景中消失。

    首先我们给出一个距离公式:

                           (1)            

      D(p,h)表示肤色像素点p(x,y)到目标拟合椭圆的距离。在此需要注意的是这个目标拟合椭圆是有倾斜角信息的。而这个距离的实际意义就是判断肤色像素点p是否在椭圆h中。我们认为,当D(p,h)<=1时,点p位于椭圆内部;D(p,h)>1时,点p位于椭圆外部。将目标拟合椭圆的定义如下:

        这里,我们将一个物体的最小包围盒矩形的最大内切椭圆称之为该物体的拟合椭圆。而一个目标物所对应像素簇的拟合椭圆就称之为一个目标拟合椭圆。要想求出这个目标拟合椭圆,关键是要确定它的五个参数。假设第i个目标物所对应的肤色像素簇为,那么此像素簇中的任一个像素都属于这个目标物。我们可以按照下面的方法求得此目标物所对应的目标拟合椭圆:

    1)肤色像素

    那么目标拟合椭圆的中心就是这个像素簇的质心:

        ,                                              (2)

        2)(a)的结果,我们可以求出像素簇Oi像素分布的协方差矩阵,那么目标拟合椭圆的其他三个参数可被定义为:

                                                     (3)

    这里:

        

     

                               (4)

    所以,要想求出一个目标物的目标拟合椭圆首先要较准确地划分出属于这个目标物的像素簇Oi(包括多个目标物存在遮挡的情况下)。

        对于第一个子问题,我们给出如下判断公式:

                                                                     (5)

    即对于肤色块b中的任意肤色像素p,如果它与当前存在的任一目标拟合椭圆的距离 都大于1,那么这个肤色块就是一个新出现的肤色块。依据公式(2)(3)(4)求出与之对应的目标拟合椭圆的五个参数,每出现一个新的目标物就会产生与之对应的一个新的目标拟合椭圆。

        第二个子问题是实现多目标跟踪的关键,假设上一时刻就已经存在的拟合椭圆集为{h1,h2,…,hN},那么我们通过如下两个规则确定任一肤色像素属于哪一个目标拟合椭圆:

    p属于h的条件为:

    1)       D(p,h)<1时,

    2)       若对于任意的h(a)都不满足,而且B为非新出现的肤色块,如果此时h为距离p最近的目标拟合椭圆,那么

    上述两条规则实现了目标物所对应的像素簇的更新,对新的像素簇再按照公式(2)(3)(4)计算新的拟合椭圆,就实现了目标拟合椭圆的更新。也就是用目标拟合椭圆实现了对目标物的跟踪。但是跟踪过程中可能会出现一个目标拟合椭圆占有两个或多个肤色块像素的情况,这时,我们按照占有像素数目最多的肤色块像素来更新椭圆。比如,椭圆h同时占有B1B2两个肤色块的像素,但是一个目标拟合椭圆只可能代表一个目标物的,两个独立的肤色块肯定是属于至少两个不同的目标物,这种现象往往是由于两个目标物在场景中第一次出现时是相连的,但在下一时刻就分开了造成的。这时,如果h占有B1的像素更多,就将h指派给B1,否则,指派给B2

        对于第三个子问题,我们知道,一个目标拟合椭圆实际是与一个目标物对应的,它是目标物在图像上的反映。当一个目标物移出场景或完全被非肤色物体遮挡时,我们就认为这个目标物从场景中消失了。这时它所对应的目标拟合椭圆也需要释放掉。这里,我们认为满足公式(6)的目标拟合椭圆是需要释放掉的。

                                                                        (6)

    即对于一个目标拟合椭圆h和任意肤色像素p,若D(p,h)>1,则这个目标拟合椭圆是空的,需要释放掉。但是由于环境、摄像设备等因素,可能在某帧并没检测到目标物但目标物仍然在场景中。所以我们往往认为连续多帧都未检测到目标物才认为它是从场景中消失了。

     

    整个跟踪算法的基本流程:

    对于每一帧

    1)     手势分割,分割出肤色块信息;

    2)     查找肤色块连通域,删除小连通域;

    3)     对于每一个连通域,用公式(5)判断此连通域是否为新出现的肤色块。若是则按公式(2)(3)(4)计算此肤色块的拟合椭圆的参数(中心点坐标、长、短轴、倾斜角),并为之创建一个新的拟合椭圆。若不是则按公式(1)和规则R1计算此肤色块中像素属于哪一个目标拟合椭圆;

    4)     若某像素点不在任一椭圆内,但它所在的肤色块并不是新肤色块,则按规则R2判断此点属于哪个椭圆。

    5)     按公式(6)判断某一椭圆是否为空,即某一椭圆所跟踪的目标是否在场景中消失。若连续多帧符合此公式,则从椭圆列表中删除此椭圆。

    更新椭圆,即实现了对目标的跟踪。重新计算此时每一个椭圆的参数,并对椭圆列表中的每一个椭圆进行更新。

    跟踪结果:

     

    可参看视频:

     

     

     参考

    http://blog.sina.com.cn/s/blog_5d3402010100s0tr.html

     Argyros AA, Lourakis MIA. Real time tracking of multiple skin colored bjects with a possibly moving camera[C]. In Proc.ECCV, 2004,3:368–379.

    王江涛,杨静宇.遮挡情况下基于Kalman均值偏移的目标跟踪[J].系统仿真学报,2007,18(19):4216-4220.

  • 相关阅读:
    ASP.NET里面,如果设置了form的 onsubmit="return false;"之后,就不能提交按钮了?
    存储过程(待填)
    关于电脑屏幕分辨率太高字太小怎么解决?
    最新版Android开发工具
    Xamarin For Visual Studio 3.0.54.0 完整离线破解版(C# 开发Android、IOS工具 吾乐吧软件站分享)
    ubuntu 16.04 source (HUST and 163)
    transmission简单使用
    Test Tex
    What is a Statistic?
    IDE、SATA、SCSI、SAS、FC、SSD硬盘类型介绍[zz]
  • 原文地址:https://www.cnblogs.com/CVArt/p/2111676.html
Copyright © 2020-2023  润新知