基于卡尔曼滤波和均值漂移的瞳孔跟踪是在双环形主动红外光源系统中实现的。即在亮暗瞳差分方案中进行瞳孔跟踪。双环形光源根据帧同步信号控制内外环光源交替开关,内环光源点亮产生亮瞳孔,外环光源点亮产生暗瞳孔和普尔钦斑。在亮瞳图像上进行基于卡尔曼滤波的瞳孔跟踪,当瞳孔运动平稳时,卡尔曼滤波可以快速地跟踪瞳孔。当瞳孔快速大范围运动时,卡尔曼滤波跟踪失败,此时以上一帧的瞳孔信息初始化均值漂移跟踪器,利用亮暗瞳孔两个通道的信息作为均值漂移直方图相似度的度量。多次迭代均值漂移过程,直至跟踪结果收敛。跟踪结果与目标模型相符,则跟踪成功后,下一帧继续用快速的卡尔曼滤波进行瞳孔跟踪。如果均值漂移跟踪失败,那么下一帧重新检测眼睛目标。
如前所述,虽然眼睛和瞳孔可以在每帧中检测完成。但需要搜索每一帧的整个图像,明显降低了瞳孔检测的速度,影响检测的实时性。因此,在初始帧中检测眼睛和瞳孔后,可以在后续帧中对眼睛和瞳孔进行逐帧跟踪。通过预测和检测组合来更有效地实现眼睛和瞳孔的检测,即所谓的“先跟踪后检测”。卡尔曼滤波为视线追踪系统的瞳孔跟踪提供了一种机制。
卡尔曼滤波适合处理高斯分布的状态估计问题。因此,当头部快速移动或瞳孔特征不够突出的情况下,卡尔曼滤波跟踪将失效。因此,可以将卡尔曼滤波和均值漂移相结合来实现瞳孔跟踪。
1.基于卡尔曼滤波的瞳孔跟踪
卡尔曼滤波是一种递归算法,可以用来估计移动目标的状态和不确定性。对序列图像中的目标,可以通过卡尔曼滤波预测下一帧中目标的位置及搜索目标的区域。视线追踪系统中基于卡尔曼滤波的瞳孔跟踪方法如下:
在每一时刻t的图像帧中瞳孔状态以位置和速度表征。(ct,rt)代表t时刻的瞳孔质心像素水平和垂直方向坐标,(ut,vt)代表t时刻垂直和水平两个方向的速率。时刻t的状态矢量可表示为
根据卡尔曼滤波理论,t+1时刻的状态矢量Xt+1和当前状态Xt线性相关,系统状态转移模型为
Xt+1=ΦXt+Wt (6.17)
式中,Φ为状态转移矩阵;Wt为系统扰动。Wt服从p(Wt)~N(0,Q)分布,其中Q代表噪声协方差矩阵。
进一步假设,通过瞳孔特征检测的估计状态,为在t时刻检测的瞳孔位置信息。因此卡尔曼滤波的观测模型为
Zt=HXt+Mt (6.18)
矩阵H将当前状态和当前测量联系起来,Mt表示测量的不确定性,服从p(Mt)~N(0,R)分布,R是测量噪声协方差矩阵。为简单起见,Zt仅包含位置,H可表示为
给定式(6.17)的状态转移模型和式(6.18)的观测模型及初始条件,状态矢量Xt+1及其协方差矩阵Σt+1可更新如下:
设Xt+1是由系统状态转移模型产生的t+1时刻的估计状态矢量。通常称为先验估计。Xt+1不同于Xt+1,它是由系统状态转移模型式(6.17)和测量模型式(6.18)联合估计的。Xt+1通常被称为后验估计。设Σt-+1和Σt+1分别作为Xt+1和Xt+1的协方差矩阵。共同确定先验和后验状态估计的不确定性。卡尔曼滤波的目标是通过Xt,Σt,Zt和系统转移与测量模型来共同估计Xt+1Σt+1。卡尔曼滤波算法状态预测和更新可归纳如下。
(1)状态预测
给定当前状态Xt和协方差矩阵Σt,状态预测分两个步骤:状态投影和误差协方差估计Σ-t+1。
由先验估计Xt+1和其协方差矩阵Σ-t+1,瞳孔检测时在Xt+1附近搜索,搜索范围取决于Σ-t+1。
(2)状态更新
Zt+1代表检测到的瞳孔位置。状态更新由最终状态和协方差矩阵完成。状态更新中的首要任务是计算卡尔曼增益矩阵Kt+1。方法如下:
增益矩阵K作为权重因数来决定观测Zt+1和预测HXt+1对后验状态估计Xt+1的权重。将观测量合并到式(6.17)后验状态估计Xt+1。Xt+1按如下方法计算:
相应地,后验协方差误差估计为
在每个时刻状态转移和测量更新完成后,卡尔曼滤波器递归状态估计将以前的后验估计作为一个新的先验估计。
2.基于均值漂移的瞳孔跟踪
均值漂移追踪是基于物体外观的跟踪方法。通过均值漂移在候选目标区域中识别一个外观与目标模型相似的区域。
(1)相似性度量
两个模板的相似度可以采用巴氏系数来表达。目标灰度q和候选区域灰度p的巴氏系数反映其相似度。离散灰度从目标模型的m进制直方图得到。而从一个特定区域y的m进制直方图得到。巴氏系数的计算公式为
基于巴氏系数的距离定义为(www.daowen.com)
(2)眼睛直方图模型
为了区分眼睛区域和非眼睛区域的灰度分布,利用了眼睛图像灰度分布的特点,即偶数帧图像和奇数帧图像的灰度分布不同。在双环光源的作用下,内环光源产生亮瞳孔,外环光源产生暗瞳孔,如图6.4所示。眼睛目标区域相应的亮瞳和暗瞳图像有两个不同的灰度特征分布。
图6.4 眼睛图像
因此,可以用二维直方图表示这种不同的灰度分布。用二维直方图来表示眼睛区域的直方图分布,两个维度分别表示亮瞳灰度和暗瞳灰度,每个维度的长度为l=256,代表所有可能的像素灰度值。在计算瞳孔区域的二维直方图时,用一个凸的单调递减的加权函数k对像素远离目标中心的程度进行加权。用{xi}i=1,…,nh表示瞳孔区域内各个像素的位置,瞳孔区域共有nh个像素,在当前帧中以y为中心。灰度矢量Id和Ib分别代表在亮瞳和暗瞳图像的灰度,加权概率模型表示如下:
式中,b(xi)为位置为xi的像素的二维灰度值;h为加权函数的半径;δ为克罗内克符号函数。可以相似地建立瞳孔目标模型分布q。
(3)基于均值漂移的瞳孔跟踪
在前帧定位瞳孔之后,基于在前帧中检测到的瞳孔,通过式(6.27)建立一个瞳孔模型q^。然后,利用卡尔曼滤波预测当前帧的眼睛位置y0,把y0作为最初位置,并使用均值漂移去搜索最相似的瞳孔候选区域。在当前帧的目标模型中利用下面的算法:
1)在当前帧中用y0初始化目标位置,然后通过式(6.27)计算直方图分布p^(y0)u=1,…,m在模型q^和目标p^之间估计相似系数,即
2)得出权重{wi}i=1,…,mk有
3)基于加权平均,获得新位置的瞳孔目标:
当g(x)=-k′(x)时,更新,并且估计:
4)当,时,用0.5(y1+y0)替换y1,以避免均值漂移到不正确的位置。
5)如果y1-y0<ε,则停止。其中,ε是终止阈值,否则设置y0←y1,并且返回步骤1)。
在上一帧眼睛位置附近进行搜索,新的瞳孔位置能够在当前帧通过迭代的方法得到。考虑到算法的简单性,均值漂移方法比其他方法更快。图6.5b所示用巴氏系数划分表面为一些矩形标记。均值漂移算法从表面的最初位置往上爬,到最近的顶点,顶点代表着相似度测量的最大值。
图6.5 基于均值浮移的瞳孔追踪
3.卡尔曼滤波和均值漂移相结合的瞳孔跟踪
卡尔曼滤波的瞳孔跟踪跟踪效果良好。但是如果头部转动或外部照明干扰带来亮瞳不明显,会造成跟踪失败。当头部突然大范围移动时,卡尔曼滤波器也会失败。在这些情况下,卡尔曼滤波失败的原因是无法检测到亮瞳孔。
均值漂移跟踪速度快,但很容易被附近区域出现的与瞳孔类似的目标所干扰。由于只用直方图信息代表瞳孔区域的外观,不包含像素间的空间关系的任何信息,容易造成瞳孔中心计算错误。此外,均值漂移跟踪没有自我纠正错误能力,这些错误经过积累和传播,将最终导致跟踪失败。
均值漂移可能导致错误的瞳孔跟踪的另一个因素,是不能不断更新瞳孔目标模型。当瞳孔由于面部方向的改变明显不同于瞳孔模型图像时,均值漂移瞳孔跟踪将不能正确识别瞳孔位置。
基于上述原因,可以将卡尔曼滤波和均值漂移相结合进行瞳孔跟踪,以克服卡尔曼滤波的局限性和均值漂移跟踪不完善的缺点,有效地完成瞳孔跟踪。具体算法如下:
在序列图像初始帧瞳孔定位后,卡尔曼滤波用来跟踪瞳孔,如果由于亮瞳消失造成跟踪失败,则采用均值漂移继续跟踪过程。一旦亮瞳重新出现,则返回卡尔曼滤波跟踪瞳孔。如果均值漂移失败则重新进行瞳孔检测。通过两阶段的跟踪,可以提高瞳孔跟踪的鲁棒性,卡尔曼滤波结合均值漂移的瞳孔跟踪流程如图6.6所示。
跟踪过程:瞳孔检测成功以后,在亮瞳图像上进行基于卡尔曼滤波的瞳孔跟踪;当瞳孔运动平稳时,卡尔曼滤波可以快速的跟踪瞳孔;当瞳孔快速大范围运动时,卡尔曼滤波跟踪失败,此时以上一帧的瞳孔信息初始化均值漂移跟踪器,利用亮暗瞳孔两个通道的信息作为均值漂移直方图相似度的度量;多次迭代均值漂移过程,直至跟踪结果收敛;跟踪结果与目标模型相符,则跟踪成功;下一帧继续用快速的卡尔曼滤波进行瞳孔跟踪,如果均值漂移跟踪失败,那么下一帧重新检测眼睛目标。
图6.6 卡尔曼滤波结合均值 漂移的瞳孔跟踪流程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。