虚拟触摸屏系统的实现方案
扫描二维码
随时随地手机看文章
1 引言
目前,普通触摸屏主要有红外线式、电阻式、表面声波式、电容式等类型,然而这些类型的大屏幕尤其是超大屏幕触摸屏产品,均存在价格昂贵、通用性差、稳定性差、准确性差的问题。现在实现了一种基于摄像头的虚拟触摸屏系统,改变了传统的触摸屏的实现技术,它由多个摄像头拍摄手指在虚拟触摸屏上的移动和点击操作,从拍摄的图像中将人手区域分割出来,进而提取手指的边缘轮廓,将手指轮廓的B 样条曲线的第4 个控制点定义为手指位置,由二维坐标射影变换公式转换进而获得手指在显示屏幕上的位置坐标。这一技术方案本质是用多个摄像头将手指及触摸屏的三维图像转换成多个二维图像,进而从这些二维图像中识别出手指及手指的移动、点击等动作。因为拍摄的图像必须包含显示屏幕,所以摄像头必须放置在显示屏幕的前方,对于大屏幕触摸屏必然存在人体遮挡无法识别手指的问题。该文设计的虚拟触摸屏系统由一维图像采集装置采集手指在虚拟触摸屏上的一维数据,由多个一维数据识别手指在二维虚拟触摸屏上的位置坐标,从而完成人机交互。
2 系统概述
虚拟触摸屏系统由至少两个一维图像采集装置、显示屏和数据处理装置组成。一维图像采集装置设置在虚拟触摸屏的四周,每个一维图像采集装置获取的一维图像所在面与虚拟触摸屏处于同一平面;虚拟触摸屏与显示屏幕的形状和尺寸完全相同,虚拟触摸屏与显示屏幕处在同一平面内,或虚拟触摸屏处于显示屏幕的正前方且平行于显示屏幕;多个一维图像采集装置将手指在虚拟触摸屏上的位置和点击动作转换成多个一维图像中的点及点的有无,数据处理装置根据一维图像中点的信息识别手指在虚拟触摸屏中的两维直角坐标,并执行相应的操作,完成人机交互功能。它结构简单,实现方便,造价低廉,解决了使用图像技术实现的普通触摸屏存在的人体遮挡手指的问题,特别适用于大屏幕触摸系统。一维图像采集装置采用一维线性传感器,配合设置镜头、信号转换和接口电路实现;或采用两维图像采集装置摄像头,以摄像头采集到的两维图像中的一行或一列的图像数据作为所需的一维图像数据。
系统结构如图1所示。
与已有技术相比,该设计的优点体现在:
(1)图像采集装置设置在虚拟触摸屏的四周,其拍摄方向与虚拟触摸屏平行,从根本上解决了人体遮挡引起手指无法识别的问题,尤其是因其避免了人体遮挡的问题,因而可以扩展到投影屏幕、普通墙面等任何大屏幕,通用性好。
(2)只需进行一维图像数据的处理,相比于二维图像的数据处理,其过程大为简化、算法简单。
(3)采用一维线性传感器,配合设置镜头、信号转换和接口电路,其配置简单,价格便宜。
(4)也可以采用两维图像采集装置摄像头,以两维图像中的一行或一列的图像数据作为所需的一维图像数据,易于实施。
(5)一般情况下只要使用两个图像采集装置。使用两个以上图像采集装置可以减小图像采集装置与显示屏之间的距离,对于较大屏幕来说,可以使整个系统更加紧凑。
3 实现原理
由于摄像头价格便宜,易于获得,于是将系统结构图中的一维图像采集装置由摄像头来替代,由其拍摄的二维图像中的一维图像数据来识别二维显示屏幕上的位置坐标。由于摄像头镜片与虚拟触摸屏垂直,当用户进行手指触摸操作时,手指的运动平面与虚拟触摸屏平行,因此手指在虚拟触摸屏上的运动轨迹一直显示在摄像头所拍摄图像的某条确定直线上。手指在二维显示屏幕平面上的运动,转换为手指点在摄像头拍摄的两幅图像的某条确定直线上的移动。左右摄像头拍摄的两幅图像中直线上的点和二维显示屏平面中的某点存在一一对应的关系。如图3所示,问题即转换为根据两幅图像中手指移动直线上的点的位置来唯一确定用户手指触摸的二维平面上的点坐标。其实质为由两个一维坐标点和一些初始角度值来唯一确定二维平面内的一点坐标。
下面以左边摄像头为例说明转换过程,右边摄像头类似。
假设虚拟触摸屏是如图4所示的矩形区域,以左下角为原点,建立二维坐标平面x、y。左边摄像头c1位于虚拟触摸屏左上角某处,其视角范围应包含整个矩阵区域,将c1与矩形的4个顶点连接构成摄像头拍摄各点的光线方向,以经过左下角和右上角顶点的光线方向为腰,c1为顶点作一个等腰三角形,底为虚线所示的(u1,u2)。当手指在矩形区域内任意一点触摸时,其在摄像头所拍摄的图像中均表现为虚线上的一点,手指在二维虚拟触摸屏上的移动投影到图像上不会超过这条虚线(u1,u2)范围,这是算法关注的兴趣区域,区域以外的部分不需要处理。因此以u1为原点沿着虚线方向建立一维坐标x1,右边摄像头拍摄图像中的一维坐标x2类似设立。
具体实施中,为准确识别手指位置,将虚拟触摸屏划分为n×n 的棋盘格,如图5 所示,由于摄像头离棋盘格距离较远,且每个棋盘格足够小,于是可以假设在棋盘格内,摄像头拍摄的光线是平行的,以简化点位置的转换。
该设计数据处理装置综合应用的识别算法包括:初始定位算法、手指识别算法、手指定位算法、点击判定算法等。
3.1 初始定位
初始定位时,用户在虚拟触摸屏n×n 的棋盘格的每个顶点上均触摸一次,以确定每个棋盘格在摄像头拍摄图像一维坐标上的位置范围,即建立每个棋盘格编号及其投影的起始位置和终止位置坐标的对照表。例如:(i,x11,x12,x21,x22)记录的是第i个棋盘格在x1坐标轴上的起始位置为x11,终点位置为x12,在x2坐标轴上的起始位置为x21,终点位置为x22。
同时初始设置时可以根据虚拟触摸屏的长宽和每个棋盘格在图像上的投影确定摄像头拍摄的每个棋盘格平行光的斜率。放大图5 中的棋盘格s,得到图6。假设摄像头c1以斜率k平行拍摄由顶点v1、v2、v3、v4组成的棋盘格s,其边(v4,v3)的长度为a,在图像平面上的投影(v3,v5)的长度为a′,其边(v1,v4)的长度为b,在图像平面的投影(v1,v5)的长度为b′。已知虚拟触摸屏的长宽,每个棋盘格的长a 和宽b 分别为其1/n,a′、b′可从拍摄的图像上获得,于是从摄像头拍摄该棋盘格的平行光的斜率k 可由下式获得:
将每个棋盘格的平行光的斜率构造一张斜率表,例如:(i,k)表示摄像头拍摄第i 个棋盘格的平行光的斜率。
另外,初始设置时可以确定手指触摸投影到图像上的直线的位置。如果在该直线上识别出手指,则认为用户进行了触摸操作。该直线实际上就是一维图像采集装置需要采集的一维数据。虽然使用二维图像采集装置摄像头来拍摄二维图像,但只使用其中的一维图像数据,即这条直线上的图像数据。
3.2 手指识别
需要在初始定位时确定的图像的直线上进行手指识别,判定用户是否进行了点击操作,因此识别出手指在一维坐标上的位置,是手指定位的前提和基础。按照人手检测的方法获得人手区域及其手指的粗略位置。将其与直线相交,得到的点即为一维坐标点。
3.3 手指定位
根据两个摄像头同时拍摄的图像直线上的两点,分别建立虚拟触摸屏平面内的两条直线方程,二者相交的点即为虚拟触摸屏平面上的点。当某点属于若干个棋盘格时,需进行特殊处理,计算出点坐标,检查其是否在该棋盘格内,若是,则得出点坐标;否则,保留直线方程,选择一个离棋盘格中心点距离最近的点作为点坐标。直线方程y=k·x+b (2)其中,k 表示斜率,b 表示截距。
具体方法如下:首先根据两幅图像中手指点的一维坐标来确定触摸的二维平面的棋盘格范围。查坐标对照表,如果该点既在x1轴上第i 个棋盘格的范围内,又在x2轴上第i 个棋盘格的范围内,则该点属于第i 个棋盘格。
确定棋盘格后,查斜率表可获得直线方程的斜率k,接下来需要求出截距b。如图7 所示,当用户在某点触摸时,表现为图像中直线上的某点v′,它是由虚拟触摸屏平面内过棋盘格内对角线上的点v、斜率为k 的直线上的任意一点产生的,其中点v 是由v′作摄像头拍摄光的平行线与棋盘格的对角线的交点。由于
,根据v1的坐标和下式:
可求出v 点的二维坐标,于是以斜率k、点v 的坐标代入直线方程y=k·x+b 求出截距b于是,图像中的任意一点v′,实际上是手指在直线方程为y=k·x+b 的直线上的运动产生的。其中k 是该棋盘格内平行光的斜率,b 是通过v 点直线方程的截距。
同时在右边摄像头拍摄的图像中的对应点可以获得虚拟触摸屏平面内的另外一条直线,两条直线相交,即可根据两幅图像中的点坐标求得手指触摸虚拟触摸屏平面上的点坐标。
3.4 点击判定
点击判定算法根据不同时间的手指位置检测是否产生点击操作。如果在初始定位时设置的直线位置上一定时间内识别到手指的有无,则表明进行了点击操作。
4 结语
设计了一种虚拟触摸屏系统,其特色在于由图像采集装置获取的一维图像数据来确立用户手指触摸二维虚拟触摸屏上的位置坐标。前提是一维图像采集装置的安装位置,它从根本上解决了大屏幕触摸屏中人体遮挡手指无法识别的问题,且其进行的是一维数据的处理,相比于二维图像处理算法更加简单。