基于椭圆拟合的改进Hough变换算法在眼控系统中的应用研究
2020-08-02赵慧民葛任贤熊建斌杨盛雄苏冠元
梁 琼,赵慧民,葛任贤,熊建斌★,杨盛雄,苏冠元
(1.广东技术师范大学 计算机科学学院;2.广东技术师范大学 自动化学院,广东 广州 510665)
0 引言
根据2018年末中国残联公布的数据,我国肢体残疾人数已经超过8500万人[1],无法享受先进科技(电脑、手机、平板等)所带来的便利和娱乐.近年来,视线追踪技术是研究的热门话题,它广泛应用于虚拟现实增强、人机交互、眼睛疾病诊断、人类行为等方面的研究[2].
到目前为止,已经有大量算法、新理论、新方法用于计算人眼视线监测[2].最早的时候,视线追踪装置需要与使用者有身体上的接触,例如直接放一个反射白点在眼睛上[3]或者在眼睛周围放许多电极[4].其中一个典型方法叫做电流记录法.因为角膜和视网膜之间存在电位差,利用眼睛周围的电极,记录眼球运动过程中电位的变化从而判断视线的方向,该方法的精度达到1.5°~2.0°[4].随着科学技术、通信技术、视频摄像技术的发展,数字视频分析技术在视线追踪技术上得到广泛的应用.由于不需要接触使用者,非接触式的视线追踪装置成为未来的发展方向[5-14].1901年,Cline和Dodge首次成功提出角膜反光法跟踪眼动,该方法先采用平行光照射在人的眼球上,再利用摄影机记录下由角膜反射出来的光点的运动轨迹,称为眼动轨迹[4].普金野图像方法是由眼睛的若干光学界面反射所形成的图像.Generation—V眼睛跟踪器[8],利用双普金野图像法跟踪视线.双普金野图像方法采用红外光照射形成第一和第四普金尔野反射,采集两个反射的相对位置图像数据,深入分析采集的图像数据,挖掘、计算出眼睛的位置.1988年末,美国弗吉尼亚大学推出的商用Erica系统是一种基于图像处理方法和红外电视的应用系统.该系统处理速度快、实用性强,可以实现对控制眼睛肌肉的重度残废人进行通信、控制、娱乐等,得到广大残疾人的欢迎[15].2010年11月11日TobiiTX300眼动仪以300Hz频率收集注视数据,并允许较大的头动范围.该系统专为有更高采样频率要求的研究如眼球运动而设计,如扫视、校正扫视、凝视、瞳孔大小变化和眨眼[16].2013年熊建斌等人提出一种基于Hough转换的算法,实现对人眼能够识别眨眼动作,但是,准确度不高.2016年熊建斌提出一种改进Hough变换算法提高人眼眨眼识别的准确度10%左右,同时把装置完善了,但是,眨眼识别时间太长.
为了解决上述问题,本文设计了基于椭圆拟合的改进Hough变换算法在眼控系统中的应用,能够识别眨眼动作且准确通过瞳孔跟踪实现眼睛控制键盘,有效地提高了瞳孔检测的精度.帮助肢体残疾人群使用眼睛操控手机、电脑、平板等,换言之就是让人们使用眼睛替代手按键、操作手机、电脑、平板等.
1 相关理论
目前,瞳孔定位算法和眼球检测有Canny算法、对称变换法、Hough变换法、椭圆拟合法、改进的Hough变换法、基于椭圆拟合的改进Hough变换算法[7],本文介绍Hough变换法、基于椭圆拟合的改进Hough变换算法.
1.1 Hough变换法
Hough变换法是最常见瞳孔定位的方法,该方法先把键盘图片的边缘点映射到参数空间中,然后,把映射在参数空间中所有坐标点元素对应累加值进行累加统计,最后,依据累加值计算出瞳孔圆的半径和瞳孔圆心坐标位置.该方法可以从基础特性中提取综合描述参数,具有良好的抗干扰性能,具有较高的容错度和鲁棒性[8-9],其基本原理如下:
图像上每一个非零像素点都有可能是一个潜在的圆上的一点,平面上的点对应着三维的圆心x,y以及半径r的三个参数,在笛卡尔坐标系中的圆方程为:
其中(a,b)是圆心,r是半径,将二维平面x-y上的圆转换到三维立体面x-y-r参数空间,则图像空间中过(x,y)点圆对应参数空间中,高度r变化下的一个三维锥面,即在三维坐标系中,一个点可以确定一个圆,见图1所示.
图1 三维锥面
对于x-y平面的一个点(x0,y0),则对应的由a、b、r组成三维空间的空间曲面.对于a-b-r平面的一个点,则对应的在x-y平面它是一个圆.由于图像空间中经过任意一点的圆对应于参数空间中的一个三维锥面.因此,经过图像空间上同一圆上的点,对应的参数空间中的三维锥面,在r高度必然相交于一点(a,b,r).这样通过检测这一点可以得到圆的参数,相应的圆也可求得了.对于在x-y平面上的三个点(x0,y0),(x1,y1),(x2,y2),在a-b-r三维空间是对应的三个空间曲面(此时a,b,r相当于常量),图像平面需要确定(a,b,r)三个参数的值.换言之,若知圆上的三个点,就能通过计算以下公式确认这三个参数的值.
通过公式(1)和(2),Hough变换算法就能将图像域转成参数域.将边缘点集代入到公式(2)中,得到对应的参数集.采用投票机制获得一个最优解的参数集.由此得到的圆心称之为Hough圆心.转化为参数平面,见图2所示.
Hough变换算法虽然拥有出色的容错度和鲁棒性,但对非标准圆的检测效果不佳.由于受到相机和眼睫毛的影响,瞳孔图像中的瞳孔通常都不是标准圆形.因此,Hough变换算法进行瞳孔检测时经常会出错.为此,提出了一种基于椭圆拟合的改进型Hough变换算法以增强该算法的性能.
1.2 基于椭圆拟合的改进Hough变换算法
椭圆拟合的改进Hough变换法由瞳孔粗定位算法、图像截取算法、图像过滤算法、Canny边缘检测算法和Hough变换算法构成.核心在于将瞳孔粗定位算法和Hough变换算法相结合.具体的实现如下:
(1)图像过滤算法
由于人眼图像大多数噪声均属于高斯噪声,本文采用文献[12]的高斯滤波算法,消除高斯噪声.操作步骤如下:将普通的人眼模板(卷积或掩模)扫描人眼图像中的每一个像素,采用普通人眼模板确定的邻域内像素加权平均灰度值代替普通人眼模板中心像素点的值.此算法在人眼处理图像中的随机噪声有很好的性能并且对后续的边缘检测很有帮助.
(2)Canny边缘检测算法
基于Canny边缘检测算法首先利用人眼梯度模板对边缘进行精化,求得局部最大值,然后采用高斯一阶微分进一步计算人眼图像的梯度[13-14].文献[14]中采用双阈值法对大量的人眼图像检测并计算,获得人眼图像强边缘、弱边缘,只有当弱边缘、强边缘连接成轮廓边缘时才能输出.算法实现步骤如下:
①采用高斯滤波对获取的人眼图像去噪、平滑;
②寻找人眼图像的强度梯度;
③消除人眼图像边缘误检.针对人眼图像边缘误检(本来不是但检测出来是),采用非最大抑制技术实现人眼图像消除边缘误检;
④采用双阈值方法确定可能边界;
⑤利用滞后技术来跟踪边界.
(3)普尔钦斑检测算法
本文采用光斑检测也就是对普尔钦斑中心的定位[15],是瞳孔角膜反射法的重要组成部分之一.在眼部灰度图像中,普尔钦斑为瞳孔内面积很小、灰度值非常高的圆形范围,受摄像头和红外光源角度影响,普尔钦斑多呈椭圆形.与瞳孔中心定位不同,由于普尔钦斑形成的椭圆形状完整,且周围干扰图像极少(相似灰度值图像少或距离较远),所以在此不采用Hough变换检测圆形的方法,而采用椭圆拟合的方法.
(4)眨眼检测算法
眨眼是人眼运动跟踪、眼球识别的最重要的动作,合理获取眨眼,有效地弥补眼球移动功能性的不足.常用的眨眼检测算法采用模板匹配算法,利用样本库中的闭眼模板和睁眼模板对眼部图像进行匹配.此算法的优点在于准确度非常高,适应性好,适合在人脸图像中检测眨眼[16].缺点是太复杂,运算速度慢,对硬件要求高,不适合本系统使用.由于本系统只需处理眼部图像且眼部图像清晰,因此本文提出一种简单有效的眨眼检测算法.
图3 普通Hough变换算法的处理效果
本文采用的眨眼检测算法的核心就是判断瞳孔和普尔钦斑是否存在.瞳孔粗定位算法和光斑识别算法中分别存在一个标志.当瞳孔或光斑从图像之中消失时,相应的标志就会表示成消失状态,如果两者的标志同时表示成消失状态,就会被眨眼检测算法判断成眨眼.
针对光斑识别算法或瞳孔粗定位算法在实时测试中会受到外界的干扰,人眼瞳孔或光斑误判断,导致光斑消失的问题,本文设置两个标志.另外,针对人眨眼过程中闭眼时间过长而产生多次眨眼误判的问题,采用眨眼检测算法需使两个标志都从消失状态恢复到存在状态时,确认为眨眼,并启动相应功能,普通Hough变换算法的处理效果与椭圆拟合的改进Hough变换法的处理效果见图3、图4所示,图4的效果明显比图3好,可以获取整个眼球.
2 眼睛控制系统实验
2.1 实验环境
实验室自主研发一套眼控键盘系统,该系统硬件由显示模块、照明模块和摄像模块三部分组成.显示模块采用了头戴式显示器,照明模块采用可调亮度的红外发射二极管,摄像模块采用微距红外摄像头.残疾人戴上头戴式眼控装置,通过微距摄像头,系统可以获得清晰的瞳孔图像,利用红外光源照明不会对人眼造成刺激,同时去除摄像头中的红外滤镜,就能使虹膜图像消失,获得清晰的瞳孔图像,装置的整体实物图如图5所示.研发环境:联想笔记本电脑,软件为VS2017、OPENCV2.4.9,瞳孔中心识别的准确率可以达到95%,检测瞳孔中心识别的界面如图6所示.本控制系统包括看视频、听音乐、记事、玩游戏、计算器、发信息、聊QQ、聊微信、打电话等15个键,每个键代表一个功能,眼睛可以选择任意键,眨眼可以确定选择其中的一个功能(键).图6 (d)是操作人员使用眼睛点击图6 (a)中的“Music”键后得到二级界面,操作人员可以自由使用眼控系统操作、控制播放音乐界面.
图5 头戴式眼睛控制装置整体实物图
图6 用户操作主界面与二级界面
2.2 实验步骤
首先,通过预处理模块从摄像头中获得原始眼部图像并进行灰度化和二值化处理;
其次,使用改进型Hough变换算法通过以下步骤从二值眼部图像中获得瞳孔中心坐标:
(1)对预处理后的图像进行粗定位[17].用最小二乘法的椭圆拟合算法检测二值化图,通过限制椭圆的大小与焦点范围,确定瞳孔粗定位中心(Xc,Yc).粗定位效果图如图7所示.
图7 粗定位效果图
(2)根据瞳孔粗定位中心(Xc,Yc)得到瞳孔区域的四个角点坐标(Xc-120,Yc-120),(Xc+120,Yc-120),(Xc-120,Yc+120),(Xc+120,Yc+120),并利用该区域从经过灰度化后的眼部完整图像中截取出240*240(pixel)的瞳孔区域图像(图8(a)).
(3)对瞳孔区域图像依次进行二值化处理、高斯平滑滤波[18]和Canny边缘化处理(如图8(a)-(d)所示).
图8 采用文献[18]的算法依次对瞳孔区域图像进行图像处理:(a)截取瞳孔区域图像,(b)对图像进行二值化,(c)对图像进行高斯平滑滤波,(d)对图像进行Canny边缘化
(4)使用普通的Hough变换算法[19]对得到的边缘点集合进行处理,得到的圆心称之为Hough圆心(Xh,Yh).
图9 检测到的普尔钦斑
(5)采用明可夫斯基距离计算方法,确定(Xc,Yc)粗定位中心和(Xh,Yh)Hough圆心的距离.若它们的距离在一定的区间时,就把粗定位中心代替瞳孔定位的最终中心(Xf,Yf);否则,求得两者坐标之间的中心点,就把计算获得中心点代替瞳孔定位的最终中心(Xf,Yf),检测到的普尔钦斑如图9所示.计算公式如下:
然后,利用改进型Hough变换算法中截取出来的瞳孔局部图像,可以通过普尔钦斑检测算法来确定普尔钦斑的圆心(Xp,Yp).
但是,此时的光标还不能正常的工作.所以,在用户正常使用打字功能前,要先启动校正程序,如果用户不移动头戴式设备,校正程序只需启动一次.校正之后,光标才能正常追踪视线.为了能够实时检测视线,系统在完成上述流程后会马上从预处理模开始重新处理新的图像,所以本程序会无限循环直到用户选择退出.
当用户盯着一个按键并眨眼时,该按键的边框就会变成蓝色.如果此时开启了眨眼输入功能,程序就会实现按键对应的功能,例如输出一个数字或删除一个字符等,否则不做任何工作.
2.3 实验结果和分析
(1)基于椭圆拟合的改进Hough变换算法实验与结果分析
观察及分析同一测试者多次测试的测试结果,盯着键盘上一固定点时,键盘光标的偏离范围基本在一个边长为140像素的正方形区域内.该固定点越接近键盘中央时,键盘光标的偏离范围越小,最小时能达到边长为100像素的正方形区域内.由于本系统自主研发的头戴式眼睛控制装置的显示屏分辨率为800*600(像素),所以此精度符合本系统用户界面中键盘15格(横向5格,纵向3格)的设计.而15格键盘足以实现完整的输入功能.键盘界面如图6所示,由于10个功能键、一个“小数点”键、一个空格键、一个删除键、一个键盘转换键和一个空白键.
表1 三种瞳孔中心定位方法比较
本文分别对三种不同类型的算法进行了三组识别瞳孔中心的实验,每组的样本为30个位置(可以有重复,每个格子代表不同的位置,一共15个位置),实验结果表明,瞳孔中心识别的准确率可以达到96%以上,检测瞳孔中心识别的界面如图6 (c)所示,每个空格用1-15个功能键表示.实验结果的数据记录如表1所示.
实验结果表明,经过椭圆拟合改进的算法,瞳孔中心定位的准确率得到了很明显的提高.本文算法主要从定位瞳孔粗定位的方法入手,前人是在一定的区域(ROI感兴趣区域)内进行扫描,寻找出黑色像素点分布最符合圆形的矩形区域,确定为瞳孔的粗定位区域,而本文算法则不同,主要是一定的区域内,二值化后用边缘检测算法检测边缘,再使用最小二乘法椭圆拟合,将符合大小的椭圆认定为瞳孔的粗定位区域.从表格2所得,采用本文的方法提高了瞳孔中心定位的准确率.
表2 三种不同算法扫描不同数量图片所需时间(ms)
实验数据表明,椭圆拟合改进型算法所需时间更短,所以,本文算法(椭圆拟合改进型算法)检测瞳孔中心的时间会更短.
(2)打开外部程序结果和分析
定位校验过后,用户进入操控打开电脑应用程序的界面,用户注视符号“×”,其变为“√”后,用户瞳孔的输入信息可以被读取,比如,注视记事本时,眨眼,就可以打开记事本,并进入记事本的功能菜单,其菜单的主要功能有最大化、最小化、关闭应用程序等.
本文设计的眼控系统能够打开PC机上的任何程序,由于眼睛控制键盘,应用程序打开后,受到眼睛功能的限制,通过应用程序的快捷键对打开的应用程序进行操作,有些程序没有快捷键,或者快捷键的种类很少,因此打开、关闭二级界面时,不方便用组合快捷键.由表1、2可知,采用本文的算法,测试者打开PC机的应用程序的速度快(眼控系统键盘输入速度受PC机性能以及摄像头分辨率的影响,本算法采用同一台PC机进行实验)、准确输入率达到93%以上,平均准确输入率达到95%.
2.4 实验对比与讨论
(1)眼睛控制系统控制电脑应用的局限性:起初只能使用绝对地址与进程PID打开和关闭对应的应用,以及通过窗口句柄控制电脑应用的最大化和最小化,无法完成应用的其他操作,比如无法控制音乐播放器播放、暂停、切换歌曲等操作.
解决方法:使用keybd event()函数模拟某些电脑按键的按下与释放,从而使用对应应用的快捷键,实现应用的其他操作.
(2)普尔钦斑误检测的处理:本系统同时采用普尔钦斑检测算法来实现瞳孔粗定位和检测光斑的位置,但是,其常常会将光斑误检测为瞳孔,而且因为眼睫毛的影响,造成瞳孔粗定位不准确.
解决方法:通过限制生成椭圆的大小与中心的位置,减少了眼睫毛带来的误差和区分瞳孔与光斑生成的椭圆.
3 结论
本文主要研究以椭圆拟合的改进型霍夫变换算法为核心的眼控系统,该系统选用头戴式投影仪装置与瞳孔摄像头,通过模拟输入快捷键的方法实现对电脑第三方应用的控制.实验过程中,该系统可以通过15格键盘使用电脑第三方应用的功能,可以达到95%的准确率.但是本系统依然存在一些缺陷:①改进控制第三方软件的算法,增加可以控制第三方软件的数量与控制方式;② 本控制算法是通过绝对地址的方式寻找并控制第三方软件,第三方软件的安装位置不同,需要人工修改绝对地址,使用时不方便.以后要改进为自动寻找与修改第三方软件绝对地址,使系统使用更方便;③提高定位精度,使得眼睛可以准确控制鼠标,使操作更加丰富.这是本实验室需要进一步深入研究的工作.