关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 虚拟触摸屏系统的实现方案

虚拟触摸屏系统的实现方案

作者: 时间:2011-08-16 来源:网络 收藏
具体实施中,为准确识别手指位置,将划分为n×n 的棋盘格,如图5 所示,由于摄像头离棋盘格距离较远,且每个棋盘格足够小,于是可以假设在棋盘格内,摄像头拍摄的光线是平行的,以简化点位置的转换。

本文引用地址://www.cghlg.com/article/161583.htm

  

  该设计数据处理装置综合应用的识别算法包括:初始定位算法、手指识别算法、手指定位算法、点击判定算法等。

  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 结语

  设计了一种虚拟触摸屏,其特色在于由图像采集装置获取的一维图像数据来确立用户手指触摸二维虚拟触摸屏上的位置坐标。前提是一维图像采集装置的安装位置,它从根本上解决了大屏幕触摸屏中人体遮挡手指无法识别的问题,且其进行的是一维数据的处理,相比于二维图像处理算法更加简单。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭