一种基于目光追踪技术的移动设备辅助操作系统/ 针对于高位截瘫,渐冻人,脑瘫患者的简易手机操作软件设计

来源:互联网 发布:淘宝怎样设置分享有赏 编辑:程序博客网 时间:2024/04/30 11:56

界面预览

1 引子

酝酿了很久,一直想要设计这样一款移动应用,给那些因为疾病,事故等各种原因导致瘫痪的病人。能够帮助他们使用手机,平板,电脑等电子设备。甚至对于那些只能移动双眼的重病患(渐冻人)。让他们可以通过眼睛的活动,完成对电子设备像控制鼠标一样的基本操作,用目光控制指针的方向,再通过眨眼,左右眼的配合,完成一些必须的功能。
很多这类病人因为神经系统受损,手脚不能自主移动,有的甚至无法发出声音,只能靠眼睛与人交流。每天卧床,靠家人或护理人员照顾生活,恢复的周期有的很长,甚至没有恢复的可能。很多病人因此而放弃希望,放弃康复治疗,甚至放弃了继续活下去的勇气。但我们必须相信,生命终究是有价值的。只要努力活着,就一定有机会找到自己存在的意义。就像霍金一样,或许还能够创造出千千万万健康人都无法企及的成就。更重要的是随着科技的发展,很多疑难杂症或许在他们有生之年还会有痊愈的可能。如果我们能为他们创造这样一个能够自主获取信息,并能与人交流的平台。对于这些病人来说,其实就是给了他们生存的希望。
我们的初衷是开发一款完全免费的app/apk。当然,如果用我们有限的力量去做这件事,将会是一个非常漫长的过程。所以我把我们的想法公布出来,希望那些了解这些技术的朋友们能够帮我们完善它。当然我更希望有人能开发出类似的商业化的软件,让我们作为参考。不过由于受众群的特殊性,我坚信用它赚钱是不人道的。

2设计思路

在以前,设计这样的软件几乎是不可能的,但随着计算机技术的发展,特别是人工智能,面部追踪识别,eyetracing等各种各样新技术的崛起,类似的功能完全可以实现了!
微软刚刚宣布了win10的专业版将会整合眼控功能,可以在电脑上应用,但是要配合tobii的红外设备,价格在一千人民币以上,再加上专业版操作系统的价格。Tobii 专门的的Dynavox 平板设备售价也在1000美元左右。一般人可能会难以承受。
中国也有一家专门生产眼控仪器的公司叫“七鑫易维”,他们有两种产品,一种需要买他们的平板,一种需要类似头戴式类似google glass的仪器。虽然精度会比较高,但价格高昂,限制也多。“渐冻人眼控仪”,好像是每台3万元。

我们的目标就是利用普通的移动设备,带摄像头的手机,平板来实现类似的功能。或者是非常廉价的可以由病人家属自己配备的硬件设施。一个屏幕,一个摄像头,一个低配的电脑之类的就足够了。当然在软件说明里,可以附带基本的安装这些软硬件的方法作为参考。
首先我们要列出这个app的理论框架。介绍一下怎么一步步的完成我们的目标。在这个框架上,再逐渐的完善,加入相应的代码。并最终让它能够在手机等设备上流畅的运行。其中如果有涉及到人工智能,神经网络,图像识别等这些理论知识,我会按自己了解的程度,进行简单的介绍。让非计算机行业的人也能看懂一部分。当然会有很多错误,欢迎指正。

2.1硬件设备需求:

实际就两样,架子和手机。
首先是支架(淘宝上40块的玩意儿,作为一名机械工程师我只能说这个设计弱了点,不过真的足够了)。
支架
其次,带前置摄像头的手机或平板设备,因为现在手机硬件进步的非常快。市场上有的可以进行视频聊天的设备就都符合要求。

2.2软件框架及内容:

(什么前端后端的理解起来费劲,说简单点,就几个方面)

A.脸部追踪

先强调下面部追踪和识别的区别,识别是指在一大堆面孔图中找到需要的那一个(需要用到神经网络,tensorflow之类的技术)。而追踪仅仅是在一张图中找到哪个是脸,就像Facebook,qq空间上那种类似的功能,经常提示你去给找到的脸加标签什么的。(这里普及下视频分析的基本原理,视频由许多帧图片组成,图片由许多像素组成,每个像素具有四个值rgba。在计算机科学中,这四个值一般都是当作向量来处理。我们通过对这些个向量进行求模,进行灰度化,黑白化,当然还需要一段代码来自动调整阈值。调整到到能够找到明显轮廓的程度,轮廓定义好了,把它扔进一个轮廓识别库里进行对比,满足要求,就识别成脸。openCV已经提供了这种识别库,一个XML文件,可以免费下载。)详细的理论有空的人可以去读一读这篇论文:https://link.springer.com/article/10.1186/1687-6180-2011-40/fulltext.html
当然,这些太过理论化的东西我们不必在意,因为github上有很多已经可以拿来用的代码。就拿一个phython + opencv 的例子来说,短短几十行代码,已经可以近乎完美的追踪到摄像头前的人脸和眼部位置。https://github.com/Itseez/opencv/tree/master/data/haarcascades
OpenCV

如果只用了眼睛的特征库是不够的,比如说当他出错的时候,把鼻孔也误认为是眼睛。下面一张图就可以看到。
OpenCV mis

所以我们需要同时追踪脸和眼睛,再加上条件,脸的范围内,纵坐标靠下两个位置是鼻孔,进一步处理的时候把他们忽略掉。

B. Gaze-tracing/Eye-tracing目光追踪

脸部定位完了,眼睛的位置就大概确定了,用类似脸部追踪的技术确定瞳孔中心的位置,瞳孔是深色的,圆形的(不同角度可能是椭圆)。找到这个圆形中心的坐标值,就找到了瞳孔的位置。(盗图是必须的)
转
以盯着屏幕中心的眼球位置作为基础,用眼球移动后的相对位置来定位目光的位置。就像图中的这个,蓝色的是看屏幕中央的点,红色就是往左看的时候眼球的位置,然后蓝色和红色离得越远。说明往左偏的角度越大。
这里写图片描述
这项技术很多公司都在开发,但现在看来还不够成熟。而且大部分都用在什么商业网站分析,游戏产品开发之类的无聊目的上。我们这里举出一些例子,作为参考。
大部分的产品,在使用前都要进行调试calibrating,先对盯着屏幕中央和四角的瞳孔位置进行取样,记录下瞳孔移动的距离,再做一个相对于屏幕大小的scaling,按比例缩放算出目光所看到的具体位置。用tobii做例子,tobii是一个应用在游戏上的Gaze-tracing技术,他们的理论是,通过近红外光线在眼睛角膜反射产生的光斑和瞳孔中心的位置关系来确定视线方向,可以较精确的定位目光在电视上的位置,但,它所需要的相关配件,如屏幕下方的红外发射器,有的设备还需要专用的摄像头等。一套下来大概上千块,其实也并不能达到完美的定位。
tobii
这里写图片描述

另一个实验性的产品Gaze recorder。他们的源码貌似是公开的。 https://sourceforge.net/projects/gazerecorder/

这里写图片描述
这还是盯着15寸的屏幕看的效果。小屏幕的手机会更差。而且位置晃动很厉害,好像不能满足我们所要求的精度。为了解决这个问题,我们得找出一种更简易更实用的方案。
这种方案的思路大概是,只对盯着中心位置的瞳孔定位,再根据瞳孔移动的方向确定鼠标指针移动的方向,偏的越大移动指针移动的越快,还记得鼠标坏了的时候用键盘方向键控制鼠标的情景么,大概是一个意思。当移动到想要的位置的时候,通过闭上右眼来停止移动。连续眨左眼来表示点击,后面还可以详细定义这些操作和功能。
当然这里不得不提到两年前一位学生Radu做的毕业设计,它提供了一个非常简易的平台,完成了类似的功能。只用控制向左向右看,就能进行文字输入。他用的大概是叫二分法选择,把二十六个英文字母先分成左右两组,向左看选中a-m,向右看选中n-z,第一次选择完毕再进行第二次二分法,比如说要选b的时候,就向左看,再向左看,左左左… 最后剩下左a右b,最终向右看,就完成了b的输入。显而易见,想输入一句话该是有多麻烦。在后面我们会对输入法也进行一些改进。
radu

还有一个有意思的例子是eye tribe 公司开发的手机应用,看视频,还可以用目光定位玩切水果。价格不菲不言而喻。
切水果

除了这些。还有很多公开的gaze tracker 的程序,大家可以自己去搜来体验下。

C.操作界面以及输入法

设想中的操作界面是用半透明的操作框遮罩来覆盖整个屏幕,指针是高亮的,用来实现鼠标一样的基本操作。调整遮罩的alpha值(透明度)到百分之40左右,不影响背景信息的获取,阅读时取消遮罩,隐藏eye-tracing操作界面。指针移动到屏幕边缘弹出菜单,等等。
输入法方面,如果病人情况允许,语音输入当然是最好的选择。但我们还需要考虑那些特殊的情况,只用眼睛来输入。
我们的提议是用传统的类似九键输入法的方块覆盖屏幕,靠控制目光方向来指向八个方向和中间的键。利用不同眨眼方式切换数字,符号,前进后退方向的几种不同布局。当然输入界面还是半透明遮罩。
这里写图片描述
相比二分法,这显然提高了输入速度,又会比那种商业用的精确定位全键盘输入法节省了很多空间,使它在手机等小型设备上运行得以实现。

D.动作,功能定义

这一部分是最难清晰定义的,由于病患程度的不同,可以表达的方式也不同。我们从最基本的病例开始考虑,只能动双眼。
其实很像windows初期的操作方式,鼠标只有移动和左右键。我们的想法是,左右眼的双眨眼,或多次眨眼,代表了左右键的点击。Eye-tracing的技术,当然是相当于控制鼠标的移动。还好现在的视频设备帧数都比较高了,区分正常眨眼和指令性眨眼还是不困难的。
一些其他特殊的功能:
首先,这些病人最需要的是要表达自己当前状态的简单功能。我们需要把它预设成一些固定的常用语句。 比如表达疼痛感,诉求,给亲人发固定的信息,呼叫求助,控制床位高度等。然后用一些特定的表情来激活他们。
当然还有其他一些必须的功能操作,如,需要重新calibrate的时候,连续眨眼3s。关闭系统,长闭双眼5s。调整音量大小,亮度大小,休眠,等。
这部分的设计,必须要考虑到人眼的适应能力以及疲劳程度,我们需要做一些测试来保证使用者不会过度疲劳甚至伤害眼睛。另外,不同程度的病人可以加入更多的功能。比如说,不同方向的嘴角上扬,眉毛的动作,用来实现滚动,翻页,复制粘贴等等。(需要对前面提到的xml库进行解读和修改)。这些动作在软件设计的过程中还需要提供一定的自由度。用来给不同程度的病人自定义。
右撇嘴是向右翻页,皱眉头是发送警报,吐舌头的方向控制床位高度。。。

3. 使用实例

软件的设计初期不能太复杂,我们先尽量实现一些基本的功能,完成基本的操作就行。必须满足的操作例子:瘫痪病人在支架和平板架设好以后,在护理人员的帮助下激活eye-tracing系统,用指针打开浏览器或相应app,浏览到相应页面,在论坛里发帖,回帖。激活输入法,输入并修改。基本操作能保证完成后。再逐渐的加入更多的功能,扩展等。

4. 未来的扩展

如果说想远一点,我们可以将这个理念扩展到残障病人车辆的应用上,之前的残疾人助动设备,是针对于上肢或手有能力活动的程度上,利用遥控杆操作设备。但随着自动驾驶技术已经基本成熟,利用这个理念可以实现让更高位瘫痪的病人有机会操作助动设备,达到自主移动的效果。(很多自动驾驶系统,像tesla的Autopilot 2.0,谷歌的什么什么名字忘了,都比较成熟了。大规模的应用是迟早的事儿。https://user.qzone.qq.com/4862545/mood/51324a00da389d58b4510b00)
结尾
对这个太过商业化的社会来说,这样的公益项目可能比较难实施。但因为它是一件对生命有意义的事,我们会坚持把它做下去,我会持续不断的对这篇文章进行更新,把想到的或找到的思路和代码一点点加入其中。坚信总有一天我们会完成这个项目。为那些需要帮助的人们带去希望。

作者简介

2006毕业于北京机械工业学院,06-08机械设计。2008-10结构设计。10-12 AAUC Hoegskolen i Aalesund, Norway, MSc. Product & System design。2012-16 产品设计,Siemens, Subsea department。2016-17 NTNU i Aalesund, Norway,MSc. Virtualization & Simulation
邮箱地址:peach0865@hotmail.com 期待您的反馈和支持。

阅读全文
0 0
原创粉丝点击