APP下载

基于红外视频定位交互系统的鼠标模拟方法

2014-09-23查文锦孙孝彬赵太飞

电子设计工程 2014年2期
关键词:棋盘鼠标摄像头

查文锦,孙孝彬,赵太飞,高 波

(1.西安理工大学 自动化与信息工程学院,陕西 西安 710048;2.河北邯郸永年海军四七二三工厂五车间,河北 邯郸 057150)

基于红外视频定位交互系统的鼠标模拟方法

查文锦1,孙孝彬1,赵太飞1,高 波2

(1.西安理工大学 自动化与信息工程学院,陕西 西安 710048;2.河北邯郸永年海军四七二三工厂五车间,河北 邯郸 057150)

本论文针对红外视频定位采用端口操作驱动程序组件(WinIo)模拟鼠标事件的局限性,提出了用win32 API函数的方法实现鼠标驱动,解决了因内外部数据冲突导致鼠标失控的问题,并实现WinIo难以做到的双击事件,扩展了红外视频定位系统的功能,为实现基于视频的多点触控提供解决方案。

人机交互;指示点定位;坐标转换;鼠标模拟

基于视频定位[1]实现人机交互是在专门的应用程序的支持下,构造一个大屏幕、交互式的商务会议或教学环境,它将显示幕布变成了“触摸屏”。首先,电脑将屏幕的视频信号通过投影机,投射到幕布上,通过摄像头采集幕布上的图像信息送到电脑;然后,利用软件计算,就可以将幕布上的触摸位置与电脑的鼠标信息相对应。为配合各种应用软件在大屏互动操作,更好的应用于教学,会议,指挥,远程协作等各种场合,实现传统方式所无法实现的互动动态的多媒体操作,改变传统的教学模式,将理论教学和实践有机的结合在一起,调动学生的多种感官参与学习,提升教学的质量,提高教学效率,扩大教学规模[2],本文提出了应用编程接口(API)鼠标模拟方案,并对模拟双击做出了理论研究和实验分析。

1 视频定位人机交互系统原理

1.1 视频定位人机交互系统组成

系统的整体设计主要划分为以下几个模块,各个模块之间相互联系,形成一个完整的人机交互系统。为实现鼠标事件模拟的前期准备,将系统的模块划分为如图1所示。

图1 系统的模块组成图Fig.1 The constitution of system modules

由图中可以看出,该模块的设置自下而上形成了一个数据流,同时通过交互设置模块进行参数的设置,与用户交流。其中,该模块又根据功能划分为若干个功能子模块,各个子模块的功能分别为:

1)视频图像获取与显示子模块(实现该子模块功能封装C++类为CVideo):利用摄像头对显示画面的图像进行连续不断的拍摄,软件上利用该模块从摄像头中连续不断的获取视频图像,在设置模块需要对摄像机的位置进行可视化校正,并将图像显示在对话框上的相应控件上。

2)图像畸变校正子模块(实现该子模块功能封装的C++类为CCamCalibration):在图中,该子模块是以虚线框显示的,表明该功能是一个可选项,主要是为了应对摄像头的镜头畸变,只需提取摄像头标定的参数[3]即可进行畸变校正。

3)图像分析与指示点提取子模块(实现该子模块功能封装的 C++为 CCoordinateInImage和 CCoordinateTrans):通过摄像头拍摄计算机显示的纯白色背景图像、白色背景加3个顶点图像和棋盘格图像。对采集到的三幅图像进行分析,提取出棋盘格在拍摄图像中的位置,即代表了显示画面在拍摄图像中的位置。并在获得位置信息的基础上自动生成一幅索引图。当红外光屏上有动作时,通过opencv图像处理算法[4]可以从摄像头拍摄的视频图像中找到指点的区域,并计算输出一个指点坐标。

4)坐标转换与动作测试子模块(实现该子模块功能封装的C++为CCoordinateTrans和PointDetect):利用显示画面在图像中的位置信息,以及索引图像及提取的小矩形坐标等信息,对计算出的坐标点进行转换,将图像坐标系中的坐标转换到屏幕坐标系中的实际坐标,在测试对话框中进行动作测试,及时调整模拟鼠标的各项参数。

5)鼠标模拟(实现该子模块功能封装的C++类为CMouseSimu):通过对图像的分析以及指示点的提取得到手指位置在屏幕中的坐标,调用windows函数来实现相应功能。

6)交互设置模块:该模块由若干对话框组合构成,这些对话框将以上各子模块联系起来,向用户提供了视频画面显示,参数设置,位置校正等功能,以提高该系统的环境适应性,同时也提高了鼠标事件模拟的准确度。

1.2 指示点提取计算方法

在红外光屏上提取指示点的原理如图2所示(其中1-红外激光器,3-投影幕布,2-激光器投射的红外光屏)。摄像头套上滤光片后可滤除可见光干扰,当手指或者其他不透光的物体在红外光屏上有动作时,就会出现明显的光斑,很容易被摄像头捕捉到。当有多个光斑出现时,会选择连通域面积最大光斑的质心坐标作为鼠标模拟操作的坐标。在求取指示点坐标前,需要求取图像x方向与y方向的步长,对图像进行二值化以及形态学滤波,贴标签等计算处理,按照步长逐个寻找棋盘格上的角点[5],如(1)式。

式中 f(x,y)为贴标签后图像在 x,y 点的灰度值,点(xi,yi),i=1~3是标记区域的中心坐标值,ni为图像中灰度值为i的点的总个数。

图2 指示点采集原理图Fig.2 The principle of indicator point collection

标定棋盘格上的角点后便可进行指示点坐标的计算,在调试的过程中发现,采集角点要屏蔽掉棋盘格之外的角点,否则会对下步坐标转换产生很大的影响。由于采集图像和计算机屏幕画面的坐标系是相互独立的,所以提取到的指示点坐标不能进行鼠标模拟动作.为了实现所见即所得,需要建立了两个坐标系之间的映射关系来获取准确的计算机屏幕画面的坐标,用转换后的坐标来进行鼠标事件的模拟。使用四点定位法[6]来计算,假设小矩形rect11是棋盘格中序号为11(从 1 开始)的矩形,如(2)式,ABCD 是该矩形的 4 个点,lx,ly是该矩形的列与行的长度,T是待转换坐标的点,分别是水平和垂直方向的比例值,即可求得点T在计算机屏幕中的真实坐标(xscreen,yscreen)。

1.3 鼠标事件模拟方法

windows提供的API函数可以直接向目标程序发送消息,常用的有SendMessage和 PostMessage,模拟鼠标消息要用PostMessage函数,用该函数向系统消息队列中压入一个自定义的鼠标动作消息即可模拟鼠标操作,但用这种方法模拟鼠标并不是对所有程序都有效的,对于某些程序会禁止用户对它使用模拟鼠标程序。 或者利用函数SendInput来模拟鼠标事件,该函数合成键盘事件和鼠标事件,用来模拟鼠标或者键盘操作。事件将被插入在鼠标处理队列里面,这是一种比较底层的模拟方法。 也可利用全局钩子(Hook)[7]等方式进行模拟,钩子过程是Windows中提供的一种用以替换DOS下“中断”的系统机制。在对特定的系统事件进行hook后,操作系统在传递消息时,将目的消息先传递给该钩子过程,对该消息进行检查,这时程序就能在第一时间对该事件做出响应。在程序中设置一个鼠标钩子过程,截获所有的鼠标消息,然后进行判断是否是目的消息,如果不是则将该消息放行交由系统处理,否则根据需求进行鼠标事件的模拟。在WinIo驱动级上模拟是通过加载一个内核模式的设备驱动程序,利用几种底层编程技巧,使得Windows应用程序可以直接对I/O端口和物理内存进行存取,从而绕过了Windows系统的保护机制。由于直接的硬件端口读写使得很多程序无法对其进行屏蔽,但是实验结果表明该方法也具有一定的局限性,就是驱动级的模拟是硬件相关的,因而兼容性不高。

在对以上几种方法进行测试比较,发现利用API函数mouse_event进行模拟效率最高,兼容性较好,例如用该函数结合MOUSEEVENTF_LEFTDOWN和MOUSEEVENTF_LEFTUP即可模拟一次单击鼠标左键的过程。模拟过程为:先让光标移动到触点位置,当光标停下时触发点击鼠标左键的事件。当手指离开红外光屏,即检测不到光斑时调用触发弹键事件。为模拟鼠标左键双击,需要使用时间函数来计时。当手指离开光屏面时触发计时,再次检测到光斑停止计时,计算出时间差。若时间差小于某个数时相当于在光屏上点击了两次。在对时间差的调整过程中发现,当时间差设为500 ms时,测试的效果最好。为加强对目标的精确点击,又定义一个距离变量,计算第一次点击的地方到第二次点击的地方的距离。当这个距离小于250个像素范围时,可以确定点击的目标。

2 实验结果及分析

在实际环境中利用该系统进行了测试,如图3,测试在室内环境下完成,系统测试结果如下。

图3 系统测试图Fig.3 System test

上面四幅图分别是系统运行弹出的人机交互对话框。首先要调整摄像头的位置使之能拍摄全部幕布图像,如图(a);再拍摄保存显示屏显示的棋盘格,通过分析棋盘格可标定计算机显示屏,如图(b);对棋盘格进行图像处理,标出棋盘格上的角点,这些角点将用于计算指示点的坐标,如图(c);最后对指点检测进行设置,调整各项参数使之适应当前的环境,如图(d)。综上,交互设置模块大大提高了系统运行的环境适应性。

对模拟双击之间的时间间隔的最佳值的计算做了统计,如图 4。

图4 时间差-模拟双击成功率的关系图Fig.4 The relationship between time difference and the success rate of double-click

可看出当两次单击之间的时间间隔在200 ms时,双击模拟成功率较低;大于200 ms后,双击模拟成功率开始上升;在500 ms时,双击的模拟成功率达到最高;大于500 ms后双击模拟成功率开始下降。这是因为系统程序处理每次单击需要一定的时延,当时间间隔为200 ms时,相当于在一次单击处理时延里模拟双击,结果被判为单击,造成双击模拟成功率低。随着时延增大,在单击时延里处理双击事件的概率开始降低,使双击模拟成功率得到提高。而两次单击的时间间隔大于500 ms时,这两次单击会被分配到两个单击处理时延中,被判定为两次单击。时间间隔越大被分配到两个时延的概率就越大,模拟成功率开始下降。所以500 ms是最佳时间间隔。

屏幕分辨率就是屏幕上显示的像素个数,分辨率越高,像素的数目越多。在屏幕尺寸一样的情况下,分辨率越高,显示效果就越精细和细腻。在实验中,对于屏幕分辨率和光标定位的准确度之间的关系进行了测试分析,如图5,可以看出,屏幕分辨率越高,模拟光标的移动延时越小,光标定位准确度越高,这是因为图像处理要先采集图像信息,图像越细腻,采集到的指示点越精确,处理得到的指示点坐标越接近目的坐标,定位的准确度就越高,人手直接对幕布进行操作的效率也得到提高,能满足精度以及实时性要求。

图5 屏幕分辨率—光标定位准确度关系图Fig.5 The relationship between screen resolution and the cursor positioning accuracy

3 结束语

本文首先阐述了红外交互系统的构建,包括系统的硬件与软件环境,并介绍各个模块的划分以及模块间的关联,重点阐明了系统的最终目标,即鼠标事件模拟,使用API函数避开在驱动级上进行模拟,又克服了一般应用软件禁止鼠标模拟的缺点,在此基础上完成了双击事件。最后对整个系统进行了测试,测试结果证明系统能很好的完成各项功能。基于视频定位的人机交互系统因其较低的成本、更自然的交互方式和对多媒体技术更充分的利用,在未来将会有更为广阔的发展前景。未来的工作将向多点触控展开,构造基于多点触控的大屏幕教学、娱乐系统。多点触控是在同一显示界面上的多点或多用户的交互操作模式,摒弃了键盘、鼠标的单点操作方式,利用视频定位方式将能很大程度上的降低其成本。

[1]李岩.视频定位人机交互系统的研究与实现 [D].西安:西安理工大学,2012.

[2]吴恺.基于红外感应的交互式白板系统的设计与实现[D].长沙:国防科学技术大学,2009.

[3]Gary Bradski,Adrian Kaebler.学习OpenCV (中文版)[M].于仕琪,刘瑞祯,译.北京:清华大学出版社,2009.

[4]于仕琪.OpenCV教程——基础篇[M].北京:北京航空航天大学出版社,2007.

[5]王玉珠.图像角点检测算法研究[D].重庆:重庆大学,2007.

[6]崔如春,谭海燕.电阻式触摸屏的坐标定位与笔画处理技术[J].仪表技术与传感器,2004(8):49-50.

CUI Ru-chun,TAN Hai-yan. Interface and software processing technology for resistive touch screen[J].Instrument Technique and Sensor,2004(8):49-50.

[7]孙鑫.VC++深入详解[M].北京:电子工业出版社,2006.

Human-computer interaction system based on infrared video positioning

ZHA Wen-jin1, SUN Xiao-bin1, ZHAO Tai-fei1, GAO Bo2
(1.Faculty of Automation and Information Engineering,Xi'an University of Technology,Xi’an 710048, China;2.The Fifth Workshop of 4723 Factory,Hebei Yongnian Navy, Handan 057150, China)

There are some limitations when using port operation driver components (WinIo) to simulate mouse events in infrared video positioning technology.According to the above problem,the method of win32 API function to achieve mouse driver is proposed.Using this method,the mouse out of control caused by internal and external data collision is solved and the double-click event which is difficult to do using WinIo function is achieved.Analysis and results show that the functions of infrared video positioning system are expanded and the method can provide solution to realize the multi-point touch based on the infrared video positioning.

human-computer interaction;indicate a point positioning;coordinate transformation;mouse simulation

TP37

A

1674-6236(2014)02-0165-03

2013-05-29 稿件编号:201305288

国家自然科学基金资助项目(61001069);西安市技术转移促进工程重大项目(CX12166);陕西省自然科学基础研究计划项目(2011JQ8028);陕西省教育厅产业化培育项目(2012JC19)

查文锦(1990—),男,安徽黄山人。研究方向:通信。

猜你喜欢

棋盘鼠标摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
Progress in Neural NLP: Modeling, Learning, and Reasoning
棋盘人生
奔驰360°摄像头系统介绍
棋盘里的天文数字
棋盘疑案
棋盘游乐园
找出摄像头花屏的“罪魁祸首”
45岁的鼠标