完整解决方案打包奉送:多点触控智能家居平台软硬件实现
绪论
近年来,多点触控(Multi-Touch)成为了代替人机交互传统方式的新方式。它抛弃了键盘,鼠标,实现了多人同时交互,是人机交互的一场革命性创新。但可惜的是,该项技术还处在初级阶段,Multi-Touch的产品很多还只是面向高端或军工用户,价格十分高昂。这对广大消费者来说都是不能承受的。此外,目前基于Multi-Touch应用的软件业相当较少,且大多数停留在游戏娱乐的功能上,这样也限制了该技术的发展和应用。
为此,将Multi-Touch技术应用低廉化、市场化,就显得十分紧迫。考虑到Multi-Touch新鲜而高效的人机交互的方式,我们将其应用在日常的办公生活中,为广大的办公室人群提出了一套提高工作效率、增加工作乐趣的Multi-Touch应用解决方案。
多点触控智能家居平台
一,FTIR原理简述
作为Multi-Touch最初的被提出的实现方法,FTIR(Frustrated Total Internal Reflection,受抑全内反射)一直是最热门和被研究得最透彻的实现方法。其原理是在较厚的透明有机玻璃侧面放置红外LED,使红外光在玻璃内部产生全反射,当有手指触碰到有机玻璃表面时,全反射的平衡会被打破,于是会有部分的光散射到下面来,从而被摄像头捕捉到。由于有机玻璃是全透明的,在有机玻璃上部或下部还要附上一层背投影屏幕。综合来看,虽说效果不错,但此方案因为要合理地调整侧边入射的灯,且对材料的要求也很高,所以实现过于复杂。
图一
二、DI原理简述
DI的原理最初由微软提出,其实现原理见图2。图中,用户接触的平面不一定用有机玻璃,而整个技术的关键在于屏幕下方的红外散射光源,此光源将红外光均匀地散射在多点触摸屏的一面,当手指触碰到表面后,由于手指挡住了光向上散射的路线,此时在图像中会有一个阴影出现。经过进一步的图像处理,就可以提取有关手指的位置信息。
图二
具体实现上,DI可以变得简单一些。图1所示的是Back DI(背投光DI)的原理,可以看到红外光从下方入射。这种Back DI的好处是光源在触摸屏下面,可以自己控制,并且可以合理控制红外光的亮度;它不仅仅实现阴影捕捉,更可以实现物体识别。但是,这种方案需要合理摆放红外LED的位置,并且保证所有的红外LED的亮度几乎一致,还要达到最理想的均匀光照的效果,所以实现的难度很大。
实际操作中,我们尝试了一种Front DI(外光DI)的方案。与Back DI相反,Front DI负责采集的红外光来自触摸屏外。同样,由于手指的遮光作用,也会捕捉到阴影。虽说没有Back DI那样那样高清的分辨能力,但对于桌面应用,已经足够。
分析和实践了FTIR实现方案后,考虑到产品的成本和复杂度,我们尝试了DI的方案,效果较理想,而且DI的价格便宜,系统简单,更易于组装和实现。于是最终作品选用了DI的方案。
三、系统组成结构
整个系统主要有四个部分组成:PC,摄像头模块,投影仪及用户的桌面。总的说来,该系统硬件组成比较简单,摄像头原型使用罗技的一款高清摄像头产品,经过去除可见光滤光片并加装红外滤光片后,供系统采集手指位置信息,而投影仪作为显示部分,选用了爱普生的EB-X7。外框上,我们自行设计了平台的框架的组成结构和各部件的安装与工作方式。
四、软件部分
4.1 软件概述
在系统设计中,我们选择采用C#进行编写程序,将手指触摸事件用UP,DOWN,MOVE分别表示手指接触触摸屏,在触摸屏移动,离开触摸屏三个事件,并利用CCV来编写整个触摸屏的手指识别程序,并封装成动态链接库,方便后续程序的调用。
CCV(Community Core Vision)是一款解决计算机视觉和机器感应的开源/跨平台的软件。可识别出因为碰到手指而反射回来的红外光,在经过数据处理是图像更为清晰,再将事件传递给已编写好的DLL动态链接库文件,从而使软件识别出具体的手指动作。
用户可以在显示缓冲区上通过绘图绘制图形。图形系统使用了GDI+,GDI+提供了较为强大的绘图功能,这比较适合本系统提供的应用。可以通过一个函数提供获得GDI+绘图对象的指针。显示缓冲区在用户绘制完成后要更新到父窗口以最终显示到屏幕上。
每个消息处理队列都对应一个独立的消息处理线程,负责处理各种事件,特别是用户操作事件。事件以消息的方式发送到消息处理队列中,消息处理线程从队列中取出消息,处理后返回。消息发送有两种模式,一种是发送后返回,另一种是发送后等待消息处理完后再返回。消息处理线程直到窗口关闭才被销毁。消息队列是窗口系统具有了多线程的特性,可以使多个窗口在英特尔双核处理器上同时工作,大大提高了窗口的性能,特别是多个用户同时执
- 多点触控智能家居平台软硬件实现方案(10-22)
- 突破性多点触控技术将创新带到你的指尖(12-27)
- 基于Linux/Qt的智能家居系统设计(07-07)
- 基于ARM-linux的智能监控系统设计(08-25)
- 基于Linux的智能家居管理方案(01-05)
- 基于Android智能家居远程监控系统设计(12-01)