图像梯度下眼控机械臂的眼动追踪算法

2020-09-23 10:21王泽云陈耀忠柳仁地盛党红张闰楚
机械设计与制造工程 2020年9期
关键词:眼动舵机眼球

王泽云,陈耀忠,柳仁地,盛党红,张闰楚

(1.南京工程学院自动化学院,江苏 南京 211167) (2.北方信息控制研究院集团有限公司,江苏 南京 211153)

近年来,在硬件、软件和人工智能等多领域的共同助力下,眼动追踪技术发展神速,成为众科技巨头眼中下一个竞逐目标。该技术是通过软件算法以及机械、电子、光学等各种检测手段获取受试者当前视线方向的技术,广泛应用于人机交互、辅助驾驶、心理研究、虚拟现实和军事等多个领域[1]。为了提高残疾人士的生活质量,提高部分高风险作业的工作安全性,本文提出了一种眼控机械臂的构想。

眼控机械臂将眼动追踪技术与机械臂有机结合起来,只要通过人的眼球运动就能控制其运动,并完成一些相应的动作。对于这种机械臂,最重要的就是眼动追踪算法。

1 眼动追踪的实现过程

1.1 捕捉图像

进行眼动追踪,首先需要通过摄像头这一设备捕捉连续的图像。本文选用60 Hz摄像头,并将捕捉到的图像转换成RGB通道格式。考虑到设备的成本问题,所以采用每n帧一次比较方式替代逐帧比较方式。

1.2 图像预处理

由于一般的图像中很难保证没有影响识别的噪声,同时眼动追踪算法最终需要识别的是颜色较浅的眼白上的黑色瞳孔部分,所以首先利用灰度化来消除多余的颜色带来的干扰。图像灰度化的方法有多种,例如分量法、最大值法、平均值法和加权平均法。实验发现,分量法中G分量下的灰度化图像效果对于眼动追踪的后续处理最有效。

分量法是将RGB彩色图像分解成R通道、G通道和B通道的3张图像,可根据应用需要选取一种灰度化图像,其公式表述如下:

(1)

式中:R(i,j),G(i,j),B(i,j)分别为R通道、G通道和B通道灰度值,Gray1(i,j),Gray2(i,j),Gray3(i,j)为灰度图像中不同通道的灰度值;(i,j)为图像坐标。

最大值法是将RGB彩色图像中R通道、G通道和B通道灰度图像中亮度的最大值作为灰度图像的灰度值Gray(i,j),其公式表述如下:

Gray(i,j)=max{R(i,j),G(i,j),B(i,j)}

(2)

平均值法是将RGB彩色图像中R通道、G通道和B通道灰度值的平均值作为灰度图像的灰度值,其公式表述如下:

(3)

加权平均法根据重要性及其他指标,将R通道、G通道和B通道的灰度值以不同的权值进行加权平均[2]。按式(3)对RGB彩色图像的R通道、G通道、B通道的分量进行加权平均就能够得到合理的灰度图像:

Gray(i,j)=0.299R(i,j)+0.578G(i,j)+0.144B(i,j)

(4)

分量法中G分量下的灰度化图具体效果如图1所示。

图1 灰度化图像

1.3 人脸检测

人脸检测需要用到Haar特征和Adaboost分类器。首先进行Haar特征的运算,由于不知道人脸位于图像中的哪个位置[3],所以需要使用Haar特征进行遍历,这就导致运算量非常大,因此采用积分图的办法提高运算效率。Haar特征积分图如图2所示。

图2 Haar特征积分图

假设特征值为λ:

λ=(p1-p2-p3+p4)·q

(5)

式中:pn(n=1,2,3,4)是原图像i点左上角方向所有像素的和;q为图像内矩形特征数量。

有了特征之后就使用Adaboost分类器进行分类。

1)对训练数据的权值分布进行初始化操作。为每一个训练样本都先赋予相同的权值:wm=1/N,其中wm为单个训练样本初始权值(m=1,2,…,N),N为样本总数。那么训练样本集的初始权值分布D1(m)为:

(6)

2)将当前误差率最低的一个弱分类器h作为第l个基本分类器Hl,并计算弱分类器hl,该弱分类器在第t轮训练样本集权值分布Dt上的误差率et为:

(7)

式中:(xm,ym)为人脸检测过程中所使用到的图像像素点的坐标,m=1,2,…,N;t为迭代轮数;P为二项分布函数;I为指示函数;wtm为第t轮单个训练样本权值。

3)计算弱分类器在最终分类器中所占的权重αt:

(8)

4)刷新训练样本的权值分布Dt+1:

(9)

5)按照弱分类器的权重αt组合各个弱分类器,有:

(10)

式中:f(x)为弱分类器组合函数;T为迭代总轮数。最终得到强分类器Hfinal:

(11)

由此通过Haar特征和Adaboost分类器完成对人脸区域的检测,并用方框框出人脸区域,实际应用的效果如图3所示。

图3 人脸检测

1.4 提取粗略眼球区域

眼球区域的粗略提取是根据三庭五眼的原则完成的[4]。如图4所示,假设脸部图像的宽为wI,高为hI,左右眼球区域的宽、高分别为wE,hE。

图4 眼球区域粗略萃取示意图

1)估算眼球区域的宽wE和高wE:

(12)

(13)

2)估算左右眼左上角像素点的位置(如图4中较小方框所示):

(14)

(15)

(16)

式中:yL和yR分别为左右眼左上角像素点的纵坐标;xL和xR分别为左右眼左上角像素点的横坐标。

1.5 眼球中心定位

1.4节已经确定了人眼可能所在的区域,接下来只需要在两个较小区域内进行处理就能寻找到眼球中心。圆形对象的中心可以通过对图像梯度矢量场的分析来确定[5]。

图5所示为眼球中心梯度矢量场,通过计算图中任意一点Xi与一个可能的圆心c的位移矢量di和Xi点上的梯度矢量gi之间的点积来得到图像的特征量。

图5 眼球中心梯度矢量场

(17)

为了获取所有像素点的等权值,式(17)中位移向量di被缩放到单位长度。

对于一个图像的较佳中心c*可以用下式表示:

(18)

接下来通过式(19)计算偏导数以获取梯度向量gi:

gi=(∂I(xi,yi)/∂xi,∂I(xi,yi)/∂yi)T

(19)

式中:I(xi,yi)为梯度函数。

对每个可能的眼球中心进行质量限制,提高精确度,得到最佳中心c**:

(20)

式中:wc为输入图像经过平滑处理后在(cx,cy)位置上灰度值的取反,其中(cx,cy)为最佳中心的坐标。

根据最大值对目标函数设定阈值进行二值化处理,搜索像素值为1的连通区域,并记录每块区域像素点的个数,记为n,判断n是否大于某一阈值。当连通区域中像素个数n小于该阈值时,则认为该连通区域不足以描述人眼的特征[6],将该区域删除;只有当n大于该阈值时才认为该连通区域为可能的人眼区域,并对其进行处理。在该连通区域内选择3行3列像素值相加,规定最小的像素块中心即为瞳孔所在。

这种眼球中心定位的方法具体实验效果如图6所示。

图6 眼球中心定位实验效果

最后得到从眼球中心位置移动距离到目光移动距离的放大倍数。

1.6 眼球移动轨迹的绘制

在绘制眼球移动轨迹之前,必须先确定眼球中心位置和屏幕上目光聚焦位置的对应关系。首先采用参数整定的方法,即使用标准大小的图像,每次目光移动到目标点的时候进行一次记录,记录的数据见表1。

表1 眼动追踪目标点坐标

最后使用Pillow绘制出眼球移动的轨迹。

2 机械臂的运动控制

2.1 二维坐标系转三维坐标系

所有眼动追踪过程中眼球运动轨迹的坐标都是在二维平面上,而眼控机械臂的运动是在三维空间中进行的,所以需要先将二维坐标变换为三维坐标。

1)将屏幕上的某个坐标(x,y),使用glReadPixels读取该位置的深度z。

2)将屏幕二维坐标变换到NDC(归一化的设备坐标),将坐标(x,y)变换到(-1,1),将z值从(0,1)变换到(-1,1)。

3)添加齐次坐标p:

p=(x,y,z,w)

(21)

式中:x,y,z为笛卡尔空间坐标系中的维度向量;w为投影空间中一个新增的分量,其会影响投影图片大小。

4)执行逆变换,公式表述如下:

p=m-1v-1

(22)

式中:v,m分别为对应视图、模型的变换矩阵。

5)采用透视除法,除去齐次坐标:

(23)

式中:u为获得符合透视投影规则的三维坐标。

2.2 参数的传递

第1节介绍的眼动追踪算法是在中心控制单元中完成的,最终机械臂的运动是通过对关节上舵机的控制完成的。5个舵机控制机械臂在空间中的位置,1个舵机控制机械夹爪的张开和闭合[7]。

中心控制单元在完成眼动追踪之后,会确定出人眼球在空间中所看向的坐标点,此时中心控制单元会传递一组舵机参数给机械臂,控制其位置的改变。用1×5的矩阵表示这组参数,记为A:

A=(a1,a2,a3,a4,a5)

(24)

其中

舵机两边的转动角度一共是180°,这里将其细分为1 500份,一份相当于0.12°,用B表示5个舵机分别转动的角度:

B=(0.12a1,0.12,a2,0.12a3,0.12a4,0.12a5)

(25)

机械臂接收到转动角度参数之后,5个舵机会转动相应的角度以到达空间中眼球看向的位置。

2.3 机械夹爪的张闭(脑电波控制)

眼球的运动只能够控制机械臂在空间中位置的改变,而无法控制机械夹爪的张开和闭合。本文提出了一种脑电波的控制方式,通过脑电波传感器上的干电极感应大脑皮层上微弱的电压变化,进行差分放大、滤波、数模转换后将生物电信号变成脑电波的原始数据。中心控制单元通过分析数据控制机械夹爪的舵机以实现爪子的张开、闭合。

2.4 机械臂工作的实际效果

眼控机械臂实际工作效果如图7所示。

图7 工作中的眼控机械臂

眼控机械臂通过眼球和脑电波实现控制,眼球的运动负责机械臂在空间中的位置变换,脑电波的变化控制机械夹爪的张闭动作[8]。眼控机械臂的机械夹爪前端有一个摄像头,用来跟踪机械夹爪的视觉,同时能够辅助实现较为精准的物品夹取。

眼控机械臂具体的工作流程如下:

1)通过人眼球寻找需要夹取的物体,电脑上的摄像头(眼控机械臂的底座上也有一个同样捕捉人眼球运动轨迹的摄像头)捕捉人眼球的运动轨迹并最终确定待夹取物品。

2)将人眼球运动轨迹的二维坐标通过投影转换成空间中的三维坐标。

3)眼控机械臂接收到中心控制单元传递过来的一组参数后,5个舵机分别转动指定的角度,移动到待抓取物品的上方。

4)脑电波传感器通过干电极感应微弱电压变化,并将经过放大滤波转换后的原始数据传给中心控制单元,最后中心控制单元控制机械夹爪的舵机实现夹爪的张开和闭合以完成对物体的夹取。

3 结束语

根据本文描述的方法,可以构建一种在自然光的照射下,分辨率较低时也能正常工作并且成本较低的眼动追踪系统。实验证明,该眼动追踪算法的准确性、快速性以及鲁棒性都较好。但是该系统有个缺陷,就是默认了瞳孔在图像中所表现出来的图形都是圆形,而当其表现出椭圆形或其他非圆形时,精度可能会有较大的下降。

在实际应用中,可以将这种眼动追踪算法与机械臂结合起来,通过眼球的运动控制机械臂的运动并完成一些相应的动作,能够在一定程度上提高残疾人士的生活质量,具有较高的社会意义和研究价值。

猜你喜欢
眼动舵机眼球
抓人眼球
抓人眼球
基于眼动的驾驶员危险认知
基于ssVEP与眼动追踪的混合型并行脑机接口研究
如何在1分钟之内抓住读者的眼球
含齿隙弹载舵机的全局反步模糊自适应控制
基于眼动信号的便携式无线智能交互系统设计
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计
静止眼动和动作表现关系的心理学机制