互动投影最近一直比较火,价格却是不菲,最近研究了一下,其实原理是很简单的。 我们知道光是一种电磁波,它的波长区间从几个纳米(1nm=10-9m)到1毫米(mm)左右。人眼可见的只是其中一部分,我们称其为可见光,可见光的波长范围为380nm~780nm,可见光波长由长到短分为红、橙、黄、绿、青、兰、紫光,波长比紫光短的称为紫外光,波长比红外光长的称为红外光。普通的摄像头感光芯片分为CCD或者CMOS, CCD色彩更好一些,CMOS造价便宜些, ,它们都有一种特殊的本领,那就是感知人眼看不到的区域。它们对近红外线也都非常敏感。那么当使用滤光片技术过滤掉可见光以后,那么摄像机看到的是什么的,应该是一片由红外辐射组成的图像。
一张红外相机的图片 那么下一步,怎样检测人体部分呢。这里对于计算机视觉来讲就是一个非常简单的技术了,就是差分,差分就是把摄像头得到的连续两帧的图像进行相减,那么得到的是什么呢,得到的是运动的部分,所以说只要人在动,差分就会把动的部分截取下来。接下来就是分析得到的数据了,再将虚拟部分投射出来了,不复杂吧。 差分图像示例:
那么互动投影最基本的设备有那些呢, A 红外摄像机(只看红外部分,可以用监控市场上卖的那种夜视摄像头200-800元不等,如果追求更高实时交互性,可以使用高速红外相机。), C 高流明的投影机,(如果你没有投影机的话,也可以用你的LCD显示器代替,就可以跟你的手互动了。) F 视频连接线等等
软件部分有 A 视频获取 directshow 或者vfw 或者采集卡的开发包 B 视频分析 (直接用bmp也可以, opencv更好了) C 界面显示 (directx 3d 或者opengl 或者 flash) D 其他辅助库 比如物理引擎ODE,载入3D模型库(lib3ds)等等 (hardVB) |