一种基于ALO优化和图像梯度的瞳孔中心定位算法
作者: 王晶仪 王艳霞 朱原雨润 张领
摘要:眼动追踪的应用很广泛,而瞳中心孔定位是眼动跟踪中的一项基本任务。基于图像梯度的瞳孔中心定位算法比较精确,但是难以在精度和速度之间取得平衡,因此使用ALO优化算法对其改进,在保证精度的同时,大幅提升其算法速度。经过实验证明,改进之后的算法,对于一张32×24大小的图片,其瞳孔中心定位速度由4秒提升到1秒以内,中心点平均误差在1.2个像素差左右。
关键词:ALO算法;图像梯度;瞳孔定位;眼动追踪;眼球中心
中图分类号:TP301 文献标识码:B
文章编号:1009-3044(2022)17-0086-03
眼动跟踪一直是个值得研究的领域,它有着广泛的应用,如自闭症谱系障碍早期诊断[1],利用自闭症儿童与普通儿童不同的注视模式,可以进行自闭症儿童的辅助诊断。人机交互[2]方面,通过眼睛操作虚拟现实场景或游戏,既可以减缓眼睛的疲劳,又可以通过捕捉用户注视点,增强注视点区域图像,从而呈现出高质量图像,提升用户体验。神经学营销[3]领域,追踪顾客视线的移动轨迹,可以发现顾客对什么产品更感兴趣。疲劳驾驶检测[4]领域,及时跟踪判断驾驶员的视线注意力情况,连续提醒驾驶员预防疲劳驾驶。可见眼动追踪的应用领域十分广泛,而瞳孔中心定位是眼动跟踪的基本任务,具有很高的研究价值。
在瞳孔中心定位领域中,Daugman等人[5]提出了一种利用图像梯度进行精确和稳定的瞳孔中心定位的方法,后文简称MOG瞳孔中心算法。该方法给出了一个只包含点积的目标函数,这个函数的最大值对应于大多数图像梯度向量相交的位置,由此确定眼睛的中心。
MOG算法精度很高,但是计算量大,对于每个像素,都需要计算其目标函数值。因此,本文使用ALO优化算法[6](antlion optimization)对其进行改进。ALO算法即蚁狮算法,是2015年被人提出来的一种仿生优化算法,具有全局优化、调节参数少、收敛精度高、鲁棒性好的优点,已被应用到SVM[7]、Elman神经网络[8]等场合。经过验证,将ALO优化算法与MOG瞳孔中心算法结合,可以大幅提升定位算法速度,同时也保持了算法的精确度。
1相关技术
1.1 图像梯度
图像的梯度是指图像某像素点在[x]和[y]两个方向上的变化率,假设有一幅图像[f],且[f(x,y)]是像素点[(x,y)]的灰度值,那么点[(x,y)]在[x]方向和y方向的梯度分别为:
[gx=∂f(x,y)∂x=fx+1,y-f(x,y)] (1)
[gy=∂f(x,y)∂y=fx,y+1-f(x,y)] (2)
其中,点[(x,y)]的梯度向量就是[(gx,gy)]。
1.2 MOG瞳孔中心算法
MOG瞳孔中心算法给出了一个用于确定瞳孔中心的适应度函数,适应度最大的像素点就是瞳孔中心。其算法原理如下:假设有人眼图片中有一个圆形的虹膜,首先在图像中取2个坐标点:[o]和[xi],其中点[o]是假设的瞳孔中心点,点[xi]是虹膜边缘上的点,如图1所示。
其次计算两个向量:[di]和[gi],其中[di]是点[o]到点[xi]的向量,[gi]为点[xi]处的梯度向量。
[o=(x0,y0)],[xi=(x1,y1)] (3)
[di=xi-o=(x1-x0,y1-y0)] (4)
[gi=(gx,gy)] (5)
根据向量的点积公式可知,当两个向量都是单位向量,那么它们的夹角[θ]越小,则点积值越大。[di]与[gi]两个单位向量的点积如下所示。
[di⋅gi=digicosθ] (6)
[di=xi-o∥xi-o∥2,∀i:∥gi∥2=1] (7)
如图1(a)所示,当[di]与[gi]两个单位向量方向不同,它们的点积值范围是[[-1,1)];如图1(b)所示,当它们方向相同(即夹角为0°),则点积为最大值1,而此时点[o]恰好是正确的圆心点。因此,可以通过计算[di]与[gi]向量的点积来求取最优圆心点。
又因为与巩膜、皮肤相比,瞳孔通常是暗的,因此将每一个像素点的亮度权值[wc]融入目标函数中,当某像素点灰度值越小(图像越暗),[wc]取值越大。最终,瞳孔中心的适应度函数如下所示,当某个像素点的适应度最大时,就是瞳孔中心点。
[C=1Ni=1Nwc(dTigi)2] (8)
[wc=255-fx,y] (9)
1.3 ALO优化算法
ALO算法包含以下几个角色:蚂蚁,蚁狮,精英蚁狮。蚂蚁表示尝试解,蚁狮表示局部最优解,精英蚁狮表示全局最优解。蚂蚁围绕蚁狮随机走动,还会因为陷阱会滑向蚁狮。在每次蚂蚁随机走动之后,根据蚂蚁和蚁狮的适应度大小来更新蚁狮。每轮迭代完成会选取适应度最优的蚁狮作为精英蚁狮,这样可以避免陷入局部最优解。通过不断地迭代,在局部最优解附近寻找更优解,最后得到一个比较精确的全局最优解。
2基于ALO优化的MOG瞳孔中心算法
在MOG瞳孔中心定位算法中,需要求解最大值的目标适应度函数是公式(8),解空间是图像中的像素坐标范围[(x,y)]。使用ALO算法对其进行求解,首先初始化蚂蚁、蚁狮的坐标,使用轮盘赌算法让每一只蚂蚁随机选择一只蚁狮进行随机游走,蚁狮的适应度越大,被选择的概率越大。然后通过随机游走函数[Xt]确定蚂蚁随机游走的步数集合。
[w=-1, 0<r≤0.5 1, 0.5<r<1] (10)
[Xt=i=0tw] (11)
其中t是迭代的轮次,[r]是0到1之间的随机数。
确定游走步数集之后,还要根据蚁狮的陷阱范围确定其游走范围。蚁狮的陷阱范围只与当前迭代次数有关,随着迭代次数的增加,陷阱比例逐渐减小,蚂蚁随机游走的范围也会逐渐减小,这里将陷阱比例I改为如下公式。
[I=0.8, t<0.5T0.6, 0.5T≤t<0.6T0.4, 0.6T≤t<0.7T 0.3, 0.8T≤t<0.9T 0.2, t≥0.9T] (12)
其中[T]为算法迭代轮次总数。
蚂蚁在选择的蚁狮陷阱内随机游走的坐标范围如下公式:
[cti=antliontj+c×I] (13)
[dti=antltontj+d×I] (14)
其中,[c]是坐标取值范围的最小值,[d]是坐标取值范围的最大值,[I]是陷阱比例,[cti]是第[t]轮第[i]个蚂蚁坐标取值范围的最小值,[dti]是第[t]轮第[i]个蚂蚁坐标取值范围的最大值,[antliontj]是第[t]轮第[i]个蚂蚁选择的蚁狮坐标位置。
得到游走步数和游走范围之后,就可以计算蚂蚁的具体游走坐标。为了防止蚂蚁游走到坐标范围之外,因此还需要通过以下公式对游走坐标进行规范化。
[Rti=Xti-Xmini×(Xmaxi-cti)(dti-Xmini)+cti] (15)
其中,[Xti]是第[t]轮第[i]个蚂蚁随机游走的步数,[Xmini是]第[i]个蚂蚁随机游走步数集合中的最小值,[Xmaxi是]第[i]个蚂蚁随机游走步数集合中的最大值。
蚂蚁的游走范围还会受到精英蚁狮的影响,要算出蚂蚁围绕选择蚁狮和精英蚁狮的随机游走坐标,取其平均值得到蚂蚁最终的游走坐标。
[Antti=RtA+RtE2] (16)
其中[RtA]是第[i]个蚂蚁第[t]轮绕着轮盘赌选择的蚁狮随机游走的位置,其中[RtE]是第[i]个蚂蚁第[t]轮绕着精英蚁狮随机游走的位置,[Antti]是第[i]个蚂蚁第[t]轮的最终像素坐标。
2.1算法流程伪代码
N: 种群数量; dim: 解的维度;
t: 当前迭代次数; T: 最大迭代次数;
ant: 蚂蚁的坐标;antlion: 蚁狮的坐标; elite: 精英蚁狮坐标
antlion_finess: 蚁狮适应度值; elite_fitness: 精英蚁狮适应度值
根据适应度函数公式(8)计算第一代蚁狮的适应度值并按降序排序
elite更新为适应度最大的蚁狮
while t