时间:2024-06-19
田 全,王 涵,蔡睿妍,陶 昊
(台州学院 电子与信息工程学院,浙江 台州 318000)
键盘作为计算机的重要输入设备,一直扮演着其他设备不可替代的角色。无论是数据的输入,还是控制信号的发送,都离不开键盘。然而,传统键盘[1]体积较大、携带不便,无法满足移动终端对输入设备的需求。随着科学技术的发展,人们越来越追求电子产品的轻便化与高度集成化,作为人机交互[2]重要工具之一的键盘也随之发展起来。在新技术和设备的支持下,基于图像识别技术[3]的虚拟键盘应运而生。
国内对虚拟键盘的研究起步稍晚,早期的研究较少。最早是石艳玲[4]验证了虚拟键盘的可行性,并初步实现了基于Visual C++的图像处理和基于FPGA的非定长码字拼接等部分功能。汪忠德[5]设计了包含投射按键影像系统、红外线摄像系统、信号转换系统等系统的红外虚拟键盘。当使用者敲击键盘时,红外摄像机采集手指的信息并通过信号转换系统将其转换为键盘命令,模拟传统键盘敲击后的响应行为。张金等[6]针对图像采集过程中因出现失真而影响按键落点的问题,提出了一种图像坐标变换的几何失真校正方法,即将失真的横坐标进行适当拉伸,纵坐标不变。蔡睿妍[7]在激光投影、定位以及图像分析等技术的支持下,设计了激光虚拟键盘,并验证了激光虚拟键盘的可靠性和稳定性。杨骋[8]研究了基于单个摄像头,利用微软的VWF从逐帧图像中捕获追踪手指,根据手指位置和动作以及颜色和轮廓来实现虚拟键盘。李振伟等[9-10]提出了离线建模算法,通过固定摄像头和键盘的距离,采集信息后,再利用轮廓检测算法确定键盘位置信息。卢亮[11]设计了基于嵌入式STM32的半虚拟键盘,提升了操作的舒适度。陈士凯[12-13]探究了如何低成本自制激光投影键盘,并对其原理进行了具体阐述。李延平等[14]设计了基于OpenCV的虚拟键盘,该虚拟键盘由摄像头、激光器、滤波片以及键盘投射激光器等组成。同时,虚拟键盘逐渐向算法研究和应用场景方面发展。如栾禄祥[15]基于GPRS和激光虚拟键盘,设计了智能电子门锁系统。张峰境等[16]研究了激光投影键盘的连通域标记算法。
国外对虚拟键盘的研究也随着时间的推移取得了长足的进步。IBM公司Seibel[17]的研究团队设计了第1款数据手套式的人机交互的键盘。Jiang等[18]设计了HiPad系统,该系统利用带有虚拟键盘的圆形触摸板,支持移动头戴显示器实现单手文本输入。Pavlovic等[19]根据红外线被阻挡出现光斑的原理,设计了由纸质键盘和红外激光器所组成的虚拟键盘。当手指在纸质键盘区域按下时,产生光斑被红外接收器识别,但该设计对手指按压的动作精确度要求较高,容易误判。Su等[20]在激光和图像处理的基础上提出了由红外激光模块、键盘图案投影模块、嵌入式系统,以及CMOS传感器组成的虚拟键盘系统,通过指尖敲击键盘图案的顺序帧来进行判别。Asonov等[21]通过检测按键敲击的声音以及利用神经网络训练收集到的声音数据集,来判定按键是否按下。Cecotti[22]研究了利用眼动仪来捕捉人眼特征,来控制包含8个主要命令的虚拟键盘,该虚拟键盘可以拼写30种不同的字符并加以更正,该虚拟键盘对眼睛有疾病的残疾人也有效。Zhang等[23]研究了基于手部肤色信息以及指间位置的按键识别,他们将虚拟键盘打印到纸上,使其可以在倾斜的表面或者墙上使用。Wu等[24]研究了基于虚拟现实和头戴式显示器的虚拟键盘,该虚拟键盘可以在虚拟现实环境中的任何位置弹出,并用可以捕捉手指位置和姿势的5个数据手套来控制按键,同时利用微型扬声器模拟震动,提供模拟的触觉反馈。Hosni等[25]研究了基于脑电图和脑机接口的虚拟键盘,来帮助残疾人过上正常生活。Barbara等[26]提出了基于眼电图的虚拟键盘,该键盘按键布局和传统的QWERTY布局相同,并提出一种新的阈值法来检测眼电图信号来判断眼球运动,基于该信号的峰值和梯度特征来区分扫视和眨眼。Hu等[27]设计了单毫米波无线电虚拟键盘系统,利用毫米波的独特优势,使设计的虚拟键盘系统能将任意平整表面转换为打字媒介,并支持多种按键布局。
通过初步分析国内外的研究现状,了解了虚拟键盘的发展历史以及激光虚拟键盘的实现方法。本文设计的激光虚拟键盘主要基于图像处理技术和激光三角测距原理,从硬件结构和软件设计两个方面进行阐述说明。
如图1所示,激光虚拟键盘的具体原理:首先是位于最下方的红外一字激光向空间中的某一平面投射激光,来覆盖键盘投影激光投射出的键盘图案(键盘图案是由键盘投影激光器运用3D全息投影技术,将事先保存在全息镜片中的键盘画面投影到特定的平面所产生的,也用于确定手指按下键盘的位置);然后最上方的摄像头负责实时采集图像信息,来实现手指和上位机的交互功能。当手指按下投影出的键盘的位置时,激光器发射出的激光将会反射指尖的红外光,反射的红外光可以被经过特殊处理的摄像头捕捉,最后通过上位机中的软件算法实现按键的映射,工作流程如图2所示。
图1 激光键盘工作原理
图2 激光键盘工作流程图
激光虚拟键盘系统主要由图像采集模块、键盘投影激光模块、红外一字激光模块以及电源模块4部分组成,系统通过DC电源线及USB线连接。具体硬件包括100万像素30帧频率的CMOS摄像头,790 nm红外一字激光发射器,3.3 V供电的低功率键盘投影模块,以及输入电压为12 V、输出电压为5 V或者3.3 V的电源模块。投影出的键盘一共5行,包含63个按键。硬件框图如图3所示。
图3 硬件框图
图像采集模块主要用到了120°的广角摄像头,图像采集主要考虑到以下问题:一是摄像头是否能采集到红外光;二是摄像头是否能完全覆盖所投影出的键盘。由于普通的摄像头加装的是带通滤波片,无法采集红外光,所以要根据激光器的波长选择适当波长的摄像头,以免对实验结果产生干扰。
本文采用790 nm滤波片,如图4所示,普通的摄像头1水平视角比较小,当检测到激光器所投影出来键盘图像时所需的高度为高度1;广角摄像头2检测同样的键盘范围所需的高度为高度2,可以明显地看到高度2小于高度1,所以本文选择了广角摄像头,可以使结构更加简单,减小体积。
图4 不同视角摄像头高度关系图
在选择一字激光器时,要考虑功率过高对人体的损害,本文选择的激光器的功率是15 mW。功率为5~500 mW的激光器产生的激光属于CLASS IIIB类激光[28],只要不直接在光束内进行观察就不会有危险。该激光器工作电压为3.3 V,波长为790 nm。此外,一字激光器能够完全覆盖键盘激光器投影的键盘图案,符合设计要求。
键盘画面的投影用到了激光器的全息投影技术[29],利用干涉和衍射原理,将物体的具体信息用三维图像再次重现。该模块可以通过照射保存有键盘画面的全息镜片在对应平面上产生相应画面,在目标平面内投影出一个键盘形状的图片,用于用户确认手指按下的按键位置。实验采用的键盘投影激光模块波长为650 nm,其不会对摄像头检测790 nm的红外光信号造成干扰,工作电压为3.3 V。
由于红外一字激光器和键盘投影模块的工作电压均为3.3 V,实验采用了对外接12 V DC电源进行降压的方式来供给电源。降压用到了LM2596S芯片及AMS1117芯片,电路图分别如图5和图6所示。LM2596S芯片可以将外接的12 V DC电源转换成5 V,该芯片内部集成有频率补偿和固定频率发生器,其开关频率为150 kHz,且只须外接4个元器件,这可以极大地简化开关电源的设计。此外,LM2596S芯片还拥有限流保护电路和过热保护电路,能充分满足设计需求。用AMS1117芯片将5 V电压降为3.3 V,使一字激光器和键盘投影激光能正常工作。AMS1117是正电压输出的高效线性稳压器,其固定输出版本包括3.3 V、5 V等,精度为1%,且内部集成有过热保护和限流电路,符合设计要求。
图5 LM2596S电路图
图6 AMS1117电路图
摄像头标定[30]是为了获得摄像头的校正参数,方便后续对按键的精准定位和识别,并减少实验误差。摄像头标定采用基于MATLAB软件的calibration程序和棋盘格定位法。首先多角度拍摄一定数量的图片,然后将待标定的图片用calibration程序进行标定,最后去掉误差较大的几张图片并导出标定参数。标定前需用量尺测量棋盘格的尺寸,如图7所示。
图7 测量标定板的方格尺寸
标定时需要逐张处理标定图片,严格控制标定误差,并且尽量使蓝色画叉的标记分布在棋盘格的角点处,如图8所示。处理完所有图片后会获得如图9所示的标定误差图,图中数字横坐标1~9是导入的图片编号,纵坐标为每幅图片的平均误差,图中虚线表示所有被标定图片的总体平均误差。
图8 单张图片标定
标定完成后可以得到镜头畸变参数。通过在程序中导入这些畸变参数,可以验证镜头畸变参数是否正确。标定参数检验如图10所示,图10(a)为标定前图片,图10(b)为标定后图片。从图中可以看出,标定后的棋盘格方形较为标准,而标定前的图片有线性失真,从而验证了标定参数没有问题。
图10 标定前后的图片比较
图像预处理可以帮助改善图片质量,提取图片中有用的信息。由于后续处理的是红外光,可以先对图像进行灰度处理,将摄像头拍摄的RGB图像转换为灰度图像。同时,创建阈值滚动条对图像进行初步处理,再使用二值化滤去很大或者很小的圆形点,从而使图像的黑白效果更加明显,增强去噪效果。最后使用中值滤波使图像变得平滑。中值滤波法是一种非线性平滑技术,可以将每个像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。
原始图像和预处理以后的图像如图11所示。图11(a)为摄像头拍摄的原始图像,最上方的灰色矩形框是阈值滚动条,可以对图像进行阈值分割,选择合适阈值来提取指尖轮廓,图像中的白色圆点为摄像头拍摄到的指尖轮廓,摄像头的影像效果进行过重新设置,使拍摄的图片黑白对比更加强烈;图11(b)是预处理以后的图片,图中白色不规则椭圆是经过处理后的指尖轮廓。经对比,图11(b)周边的白色残影已经被成功过滤,保留了所需要的指尖轮廓,提取到了有用的指尖信息。
图11 处理前后图像对比
图像预处理完成后,就需要对目标进行定位与检测[31]。首先用findContours函数检测轮廓,本系统采用的findContours函数模式是检测所有轮廓建立等级树结构且只保留拐点处的信息以减少数据量;然后用approxPolyDP函数减少轮廓点的数目,使其平滑;最后用drawContours函数和boundingRect绘制多边形轮廓及外包络矩形。如图12所示:图12(a)的四个光点是摄像头识别到的手指的四个指尖;图12(b)左上角的文字表明当前所识别到的总的目标数以及在键盘的哪一行,白色图形记录的是哪个按键,当目标数为1时,白色图形可以正确反映当前的按键。右下角四个矩形框则为绘制出的指尖轮廓,白色文字描述了矩形框中心点的横坐标和纵坐标。
图12 轮廓检测与定位
找到手指光斑的轮廓并成功定位后,需要对手指的按下状态进行识别,最后完成按键的映射。按键映射具体过程如下:首先建立二维数组用于存储按键信息;其次根据手指按下的位置所对应的坐标进行行列扫描;接着判别手指在哪一行,以及该行作为所存储的二维数组的行坐标和手指所在列作为所存储的二维数组的列坐标;最后进行按键的转换。划分键盘采用的方法是对图像进行线性划分,摄像头虽然存在一定的线性失真,但通过一些算法校正以后依然能保持线性。所以将图片比例化,先判断是哪一行的按键,判定完成后根据光斑的位置信息可以直接映射到所对的按键位置,映射成功时可以用rectangle函数填充白色矩形块来作为提示信息。
如图13所示,灰色数字和字母共同组成了常用的键盘布局,当上位机识别到手指的按键信息后,会对图中对应按键的键盘通过白色矩形块填充的方式来形象地告诉用户当前响应的按键,提高了用户的交互体验。
图13 击键效果图
本文以激光三角测距、红外光成像的目标检测和定位技术为基础,设计了包括摄像头、红外一字激光器、键盘投影激光器、电源转换电路等4部分组成的激光虚拟键盘系统。文中阐述了激光虚拟键盘系统的图像采集、图像处理、目标检测、轮廓提取和按键映射的原理,实现了当检测到手指反射的红外光时,系统会根据目标的位置信息通过算法进行按键映射,并模拟传统键盘完成击键后的响应。测试结果表明:本文设计的激光虚拟键盘系统各模块可以稳定协同运行,能够精确地检测到用户对激光虚拟键盘的按键操作,验证了激光虚拟键盘系统的可行性和实用性。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!