视线跟踪方法及应用该方法的残疾人辅助系统 【技术领域】
本发明中视觉跟踪算法属于图像处理和模式识别技术领域,其应用装置:残疾人辅助系统涉及嵌入式系统和单片机技术。
背景技术
人眼视线在人机交互中扮演重要角色,它具有直接、自然和双向等优点。目前视线跟踪技术刚起步,未达到实用阶段,成功的实用性项目很少并且价格昂贵,对硬件的要求高,通常需要两个甚至两个以上摄像头,并且要求具有非常高的像素。视觉跟踪技术一般可以分为两类,接触式和非接触式。接触式的精度高,但用户须穿戴特殊器具,这会给用户带来很大的不舒适。非接触式一般采用基于视频图像处理的办法,通过分析人眼部分图像判定视线方向,不对用户产生干扰,使用更加方便。
残疾人辅助系统,目前研究的主要方向是基于语音识别。但对于缺乏语言能力的重度残疾人,基于语音识别的辅助系统并不适用。鉴于语音识别在残疾人辅助系统上的局限性,可利用眼睛注视信息作为中介,完成残疾人与辅助系统之间的交互。经对现有技术文献的检索发现,国内尚未有报道过有基于视觉跟踪技术的残疾人辅助系统。
【发明内容】
本发明的目的在于克服现有技术存在的上述不足,提供视线跟踪方法及应用该方法的残疾人辅助系统,本发明针对视线跟踪技术中的不足,提供了一种非接触式,准确并且快速的跟踪算法。该算法对硬件要求低,只需一个普通的摄像头,解决了多摄像头视觉跟踪对硬件的限制,以及由此带来的高计算量,提高了视线跟踪的实时性。
同时本发明将视线跟踪技术应用于残疾人辅助系统,填补了我国残疾人辅助系统这方面的空白。通过摄像头跟踪人眼注视视线,将人眼注视屏幕四个区域的四种不同视线方向作为用户发出的四种控制信息,同时将1~3秒的闭眼这个眨眼动作用来确认以及切换控制命令功能,实现控制轮椅行驶方法,播放计多媒体音频文件以及完成计算机的其它基本操作功能。
本发明通过以下技术方案实现:
一种视线跟踪方法,在人脸正前方构造红外光源,红外光源经人眼角膜反射后会在其表面上形成亮点图像,称为普尔钦斑点,其特征在于该方法包括如下步骤:
(1)检测普尔钦斑点:采集经红外光源照射后的人脸图像,利用普尔钦斑点的几何特征检测普尔钦斑点的位置;
(2)精确定位瞳孔中心:对普尔钦斑点进行灰度修正,平滑处理之后,采用水平和垂直灰度投影法定位瞳孔中心;
(3)计算视线方向:通过几何计算求取瞳孔中心与普尔钦斑点的位置关系,从而判别视线方向;
(4)利用眨眼来确认视线方向:识别人眼状态,通过前后帧人眼区域黑色像素个数关系,确认眨眼动作。
上述方法中,所述红外光源个数为四个,且位于同一矩形的四个角上,所述普尔钦斑点表现为四个反射亮点,步骤(1)所述几何特征包括:
(1.1)位置位于瞳孔周围,与瞳孔中心距离小于30像素;
(1.2)大小为5~20个像素,灰度值在100以,表现为突出的亮点;
(1.3)眼部区域中,四个普尔钦斑点处灰度值突变最大;
(1.4)四个普尔钦斑点之间的距离在8~18像素范围内,且成矩形或类似矩形关系。
所述四个普尔钦斑点通过如下步骤确定:
首先利用投影法定位出瞳孔中心位置,在瞳孔中心周围距离小于30个像素范围内搜索满足普尔钦斑点几何特征的像素点集;再用Laplace算子对它们进行卷积,用Laplace卷积得到的值越大,说明该处灰度的突变越大,Laplace算子卷积运算后具有最大值的四个像素,即为四个普尔钦斑点。
上述方法中,若四个普尔钦斑点顺次连接形成矩形或者类矩形,则确定为四个所述红外光源的反射点。
上述方法中,步骤(2)中先采用水平和垂直灰度投影初步定位瞳孔中心,对普尔钦斑点进行灰度值修正,平滑处理之后,再次利用水平和垂直灰度投影法定位可得到精确的瞳孔中心位置。
上述方法中,普尔钦斑点灰度值修正的方法为以其中一个普尔钦斑点P0为中心,对与P0相邻的8个像素A1~A8中的每个像素的灰度值进行修正:以被修正像素为中心,取其周围相邻8个像素,寻找包括被修正的像素在内这9个像素中的灰度最小值,将其替代被修正像素的灰度值;再对P0的灰度值进行修正:取P0,A1~A8这9个像素中的灰度最小值,将其替代P0的灰度值,另外三个普尔钦斑点的灰度修正方法和P0相同。
上述方法中,于步骤(3)所述几何计算为:设P0、P1、P2、P3为检测到的四个普尔钦斑点,Q为瞳孔中心,利用定比分点公式求出P0~P3的对角线交点O的坐标,连结OQ,OP0,OP1,OP2,OP3,OP0~0P3把由点P0~P3连接成的矩形分割为四个区域,计算OQ处于哪个区域,便可判别出相应的视线方向。
上述方法中,步骤(4)中将人眼1~3秒眨眼动作用来确认视线方向,所述眨眼动作通过如下方法检测:用统一阈值对Harr特征定位所得人眼区域进行二值化处理,闭眼时黑色眼部面积变小,当前一帧与后一帧图像中人眼区域黑色像素个数比率大于设定阈值,则判定人眼从睁开变为闭合,有眨眼动作。
一种应用上述视线跟踪方法的残疾人辅助系统,为一嵌入式系统,其特征在于包括嵌入式平台、摄像头、显示屏、安装显示屏上四个角且排列成矩形的四个LED和轮椅行驶控制模块;所述摄像头将采集到的数字图像输入到嵌入式平台;所述显示屏位于人脸的正前方,通过VGA接口与嵌入式平台连接;轮椅行驶控制模块通过串口与嵌入式平台连接;所述轮椅行驶控制模块包括无线发射模块和无线接收模块,无线发射模块通过一个单片机与所述串口连接,无线接收模块通过另一个单片机与驱动电路连接,驱动电路与轮椅的驱动装置连接;所述嵌入式平台包括处理器和存储器,存储器中的软件用于实现所述视线跟踪方法的步骤(1)~(4);识别出用户视线信息后,处理器再根据用户视线方向将相应的控制信号通过串口传输给轮椅行驶控制模块,轮椅行驶控制模块对轮椅的驱动装置进行控制。
所述的系统中通过用户眨眼动作用来确认视线控制信息、模拟计算机键盘回车键并输入用户确认信息,显示屏中心与四个角的连线把屏幕划分为四个区域,人眼注视这四个区域的视线代表上、下、左、右四个视线方向,模拟键盘上、下、左、右这四个方向键,作为用户输入的控制信息。
本发明的优点与积极效果在于:
1.采用先进的视觉跟踪技术,实现了一个功能完善的残疾人辅助系统,具体功能有:
用眼睛控制轮椅,完成前进,左转,右转和停止等控制动作;
用眼睛控制计算机多媒体播放,如选择音乐文件,控制音乐播放等,满足残疾人生活和娱乐的需要;
可以用视线实现计算机的基本操作,如打开网页,电子书的上下翻页等,使残疾人可以流畅地阅读电子书,浏览网页,输入文字等。
2.采用由Modesto Castrillón训练的右眼分类器,该分类器基于Paul Viola提出的基于灰度图像中弱特征检测的方法,即Haar特征检测方法,该方法计算量小,精确度高,非常适合残疾人辅助系统的实时性和准确性要求。
3.瞳孔中心的定位算法上,本发明对现有的水平和垂直灰度投影算法定位人眼的方法进行了改进,对四个普尔钦斑点进行灰度值修正,提高了算法的精确度,同时也很好的控制了算法的复杂度。
4.在人眼状态识别上,对很多闭眼和睁眼的图像作了对比分析之后发现,从眼轮廓二值图中可看到人眼闭合时黑色像素较多,闭眼时黑色像素较少,这样黑色眼睛的黑色数目特征可以很好的将睁眼和闭眼两种情况区分开来,这样可以避免分别考虑睁眼和闭眼的情况,相比其他算法提供了更好的实时性。
5.采用一种实时有效的视线计算方法,该方法通过计算瞳孔中心与普尔钦斑点位置关系判断视线方向,对摄像头采集的数字图像进行一系列图像处理算法,便可完成非接触式的视线跟踪。测试数据证明:本发明的视觉跟踪算法具有96%判别准确率以及7帧/秒的处理速度。该技术并不局限于残疾人辅助系统,还可广泛应用于其他领域。
【附图说明】
图1是本发明实施方式中显示屏、红外光源与摄像头的布置示意图。
图2是本发明实施方式中视线跟踪方法的流程示意图。
图3是本发明实施方式中求普尔钦斑点构成矩形的对角线交点示意图。
图4是本发明实施方式中,的残疾人辅助系统构成框图。
图5是图4中轮椅行驶控制模块构成框图。
【具体实施方式】
下面结合附图对本发明的具体实施方式作进一步说明。
如图1,图像采集模块包括红外光源及摄像头。红外光源为安装在显示屏四角的四个LED灯,摄像头位于屏幕中心正下方,摄像头采集的数字图像输入视线跟踪模块。
如图2,视线跟踪算法具体实施步骤如下:
步骤一:图像预处理
步骤二:利用Harr特征定位人眼区域
步骤三:眨眼识别
步骤四:瞳孔中LED反射亮点的检测和判断
步骤五:瞳孔中心的精确定位
步骤六:视线方向的计算
其中步骤一的具体实施步骤为:
1.彩色图像灰度化
采集的数字图像是具有R,G,B分量的彩色图片,算法只需灰度图像,将彩色图像灰度化,公式如下:
V=0.259R+0.578G+0.144B;
式中V表示转换后的灰度值,R,G,B为图片的红,绿,蓝分量。
2.下采样
在各种目标检测方法中,算法的时间复杂度和图像分辨率成正比关系,在目标检测准确度较高的情况下,可通过对图像下采用以提高运算速度。本发明中摄像头采集到的图像分辨率为640×480,用灰度平均法将其收缩为320×240的图像。
其中步骤二的具体实施步骤为:
采用由Modesto Castrillón训练得到的右眼分类器,对图像进行人眼定位。
其中步骤三的具体实施步骤为:
分析人眼区域二值图像可知,人眼闭合时黑色像素较多,睁眼时黑色像素较少,因此二值眼部区域图像中黑色像素数目特征可以很好的将睁眼和闭眼区分开来。本发明统计每帧图像中二值眼部区域黑色像素的个数,并与前一帧进行比较,利用帧间黑色像素个数之间的关系,来判别是否存在人眼由开转为闭的眨眼动作。具体过程如下:
设第i帧图像为Fi,人眼区域为Di
1.统计Fi中,区域Di灰度值小于150的像素点数目Ci;
2.统计Fi+1中,区域Di灰度值小于150的像素点数目Ci’;
3.若Ci/Ci’>0.9,则认为可能出现闭眼事件;
4.若出现可能的闭眼事件后连续若干帧检测不到眼睛,则确定为闭眼。
其中步骤四的具体实施步骤为:
眼睛区域中,普尔钦斑点具有以下几何特征:
1.位于瞳孔周围,与瞳孔中心距离小于30像素
2.大小为5~20个像素不等,灰度值在100以上;
3.在眼睛区域,亮点处的灰度值各有一个极大值,且在理想条件下,四个普尔钦斑点处灰度的突变最大;
4.四个普尔钦斑点之间距离在8~18像素范围内,且近似成矩形关系;
因此通过以下步骤来寻找亮点:
1.用水平灰度投影和垂直灰度投影法定位瞳孔的中心,以该中心的上下左右各30像素的范围作为搜索区域;
2.在搜索区域内寻求灰度极值点,即寻找灰度值满足以下条件的点集G:
g(x0,y0)≥max{g(x,y)},g(x0,y0)>100
3.用如下所示的Laplace算子对点集G中每一个点与其周围点进行卷积,求出每个点g处的微分f。
-1-1-1-1-1-1-1-1-1-1-1-124-1-1-1-1-1-1-1-1-1-1-1-1]]>
由于Laplace算子是一种各向同性的微分算子,它的作用是强调图像中灰度突变的区域,Laplace卷积中值越大,说明该处灰度的突变越大。采用5×5的Laplace算子,可以进一步避免噪声干扰;
4.对点集G按其微分值f进行排序,选择f最大的四个点P0~P3,作为候选点;
5.检验P0~P3,若能形成矩形,则确定P0~P3为四个普尔钦斑点,否则丢弃当前帧图像。
其中步骤五的具体实施步骤为:
设人眼区域图像大小为m*n,按下式对其做水平和垂直灰度投影,发现在瞳孔中心的垂直方向和水平方向的灰度投影各有一个极小值。水平灰度投影是对灰度图像中各像素点的灰度值沿水平方向累计投影到图像竖直轴上;垂直灰度投影是对灰度图像中各像素点的灰度值沿竖直方向累计投影到图像水平轴上。具体过程如下:
Phy(y)=Σx=0n-1I(x,y)]]>
Phx(x)=Σy=0m-1I(x,y)]]>
其中Phy(y),Phx(x)分别为水平和垂直灰度投影,I(x,y)为眼部图像中各像素点的灰度值。
因此可求得瞳孔中心Q为:
(x0,y0)where Phy(y0)=Min(Phy(y))and Phx(x0)=Min(Phx(x))
LED反射亮点落在瞳孔区域内,会改变投影曲线特性,影响瞳孔中心定位。需分别对亮点P0~P3进行灰度修正,平滑其灰度值,提高瞳孔中心定位的准确性。以P0为例具体平滑方法如下:
A1 A2 A3 A4 P0 A5 A6 A7 A8
以P0为中心,修正像素A1~A8的灰度值。修正方法如下:以A1中心,取其周围相邻8个像素,寻找包括A1在内这9个像素中的灰度最小值,将其替代A1的灰度值。同理可修正A2~A8的灰度值,计算修改之后A1~A8最小值,将其替代P0的灰度值。
其中步骤六的具体实施步骤为:
根据物理和几何方法,可确定屏幕与采集图像的一一对应关系,即屏幕四个角的LED与人眼图像中四个亮点相对应,视线方向与瞳孔中心相对应。因此根据这个对应关系,就可通过采集的人眼图像判定视线方向,具体方法如下:
1.根据附图3,用计算几何的方法求P0~P3的对角线交点O:
由三角形的面积公式和叉积的定义有:
|P1O||P3O|=SΔP0P1P2SΔP0P3P2=P0P1→×P0P2→P0P1→×P0P3→]]>
由定比分点的公式,可以求出O点的x坐标为:
x0=SΔP0P1P2·xP1+SΔP0P3P2·xP3SΔP0P1P2+SΔP0P3P2]]>
同理也可以求出O点的y坐标。
2.连结OQ,OP0,OP1,OP2,OP3,则瞳孔中心Q所在的区域可以根据下列关系求出:
区域0:OQ落在OP0与OP1之间,对应视线方向为“上”
区域1:OQ落在OP1与OP2之间,对应视线方向为“右”
区域2:OQ落在OP2与OP3之间,对应视线方向为“下”
区域3:OQ落在OP3与OP0之间,对应视线方向为“左”
应用本发明视线跟踪算法的残疾人辅助系统的具体实施方式如下:
如图4,本系统采用基于英特尔Core Duo处理器的嵌入式平台,利用非接触式的视线跟踪作为核心算法,结合红外光源,一个30万像素摄像头,Linux操作系统和GTK+设计用户界面,并用无线控制的小车模拟残疾人电动轮椅。本嵌入式平台包括处理器,存储器,以及VGA,USB,AC97,串口等一系列外围接口。其中处理器为控制中心,存储器,外围接口均于处理相连。摄像头,液晶显示器,音频播放器分别通过USB,VGA,AC97接口与嵌入式平台连接。
系统中红外光源为安装在人脸正前方显示屏上四个角、排列成矩形的四个LED照射灯,一个摄像头位于屏幕中心的正下方。为使摄像头的镜头为对红外更敏感,在镜头前加上滤除自然光的光片。根据液晶显示屏中心与四个角的连线把屏幕划分为四个区域,人眼注视这四个区域的视线代表上、下、左、右四个视线方向,模拟键盘上、下、左、右这四个方向键,作为用户输入的控制信息。同时为了将人眼无意的视线漂移与控制视线区别开来,设计系统具有普通和锁定两个状态,普通状态时人眼视线变化才引起控制信息的变化。利用用户1~3的眨眼动作,切换系统这两种状态。同时通过眨眼动作用来确认视线控制信息,模拟键盘回车键,输入用户确认信息。
嵌入式系统的软件已经固化在硬件系统中,包括操作系统和应用软件两部分。本系统采用Ubuntu8.04的Linux操作系统,内核是2.6.24,避免了外设的驱动问题。将前文所述的视线跟踪方法用软件实现,便是本系统应用软件中的核心部分。视线跟踪软件先对输入的数字图像进行普尔钦斑点检测,瞳孔中心定位,检测眨眼等一系列图像处理算法,再计算并且根据眨眼动作确认视线方向,从而完成识别出采集图像中用户视线信息的任务,再根据用户的视线信息,发送控制信息至串口,从而对轮椅进行操控。在模拟方向键和确认(回车)键时,使用Linun下X11中的一个模拟键盘按键的函数库Xtest。同时在处理器上采用GTK+设计图形界面,一方面Gtk+很好的解决了在控件上显示图像的问题,另一方面GTK+支持多线程,可避免多个线程引起拥塞。
如图5,轮椅行驶控制模块由无线发射板和轮椅控制兼无线接收板组成。无线发射板将串口数据经过电平转换后输入单片机,单片机通过P0口把数据传送给发射模块。无线接收板将数据经过P2口传给单片机,单片机经一个驱动芯片后,把左转,右转及停止控制信息传给轮椅,通过制动或者停止左转,右转引擎控制轮椅行驶方法。
由于我们用一辆小车模拟轮椅,考虑到实际小车的电机所需的驱动力,驱动芯片我们采用L293D。如果是真正的轮椅,需较强的驱动力,将驱动芯片改为L298即可。