转载自:http://blog.csdn.net/hardvb/article/details/1657008
站长目前推出了最便宜的互动投影系统,让更多的人可以接触到这种新的互动形式,请大家到我的网站http://www.vvvision.net 查看。
互动投影最近一直比较火,价格却是不菲,最近研究了一下,其实原理是很简单的。
我们知道光是一种电磁波,它的波长区间从几个纳米(1nm=10-9m)到1毫米(mm)左右。人眼可见的只是其中一部分,我们称其为可见光,可见光的波长范围为380nm~780nm,可见光波长由长到短分为红、橙、黄、绿、青、兰、紫光,波长比紫光短的称为紫外光,波长比红外光长的称为红外光。普通的摄像头感光芯片分为CCD或者CMOS, CCD色彩更好一些,CMOS造价便宜些, ,它们都有一种特殊的本领,那就是感知人眼看不到的区域。它们对近红外线也都非常敏感。那么当使用滤光片技术过滤掉可见光以后,那么摄像机看到的是什么的,应该是一片由红外辐射组成的图像。
投影机投射的光线是可见光部分,它的红外部分被它内部的过滤膜过滤掉了,这样对于摄像机来讲它看不到投影机投射的内容,如果红外线如果强的话,摄像机就可以看见人体了。怎样加强摄像机看到的物体的图像呢,幸运的是目前市场上这样红外主动发射技术已经很成熟了,例如监控市场上卖的那种夜视摄像头就可以发射近红外(850 nm), 功率更大的有专门的远距离红外灯,不过目前夜视摄像头可以达到5m的距离,所以不需要了。夜视摄像头主动发射红外,然后ccd传感器接受红外,那么互动投影中最难的部分,人体与背景虚拟对象的分割就解决了,摄像机得到的是一副黑白的单色背景的包括人的图像。
那么下一步,怎样检测人体部分呢。这里对于计算机视觉来讲就是一个非常简单的技术了,就是差分,差分就是把摄像头得到的连续两帧的图像进行相减,那么得到的是什么呢,得到的是运动的部分,所以说只要人在动,差分就会把动的部分截取下来。接下来就是分析得到的数据了,再将虚拟部分投射出来了,不复杂吧。
差分图像示例:
当然复杂的互动投影不只是这些技术,这些只是最基本的原理了,其间还涉及到摄像机的标定,光流法寻找运动方向,性能的优化处理,特殊的效果。
那么互动投影最基本的设备有那些呢,
A 红外摄像机(只看红外部分,可以用监控市场上卖的那种夜视摄像头200-800元不等,如果追求更高实时交互性,可以使用高速红外相机。),
B 红外滤光片(过滤可见光,图为光谱范围)
C 高流明的投影机,(如果你没有投影机的话,也可以用你的LCD显示器代替,就可以跟你的手互动了。)
D 电脑一台(强劲的CPU是关键喽,如果你需要显示3d图形,高效的显卡也不能缺少。)
E 视频采集卡一个(负责从摄像机的模拟信号转到计算机的数字信号)
F 视频连接线等等
软件部分有
A 视频获取 directshow 或者vfw 或者采集卡的开发包
B 视频分析 (直接用bmp也可以, opencv更好了)
C 界面显示 (directx 3d 或者opengl 或者 flash)
D 其他辅助库 比如物理引擎ODE,载入3D模型库(lib3ds)等等