我已经构建了这个用leds构建的Gizmo形状。这种漂亮的漫射光来自聚苯乙烯泡沫塑料球。
gizmo http://sites.rapidus.net/plalance/head_tracking/gizmo.jpg
然后,我做了一个窗口c ++文件来启动一个连接的Kinect来检测光球并将跟踪器放在
上屏幕(使用sdl)。如果程序没有检测到Kinect,它会尝试启动网络摄像头并跟踪光线
球(使用OpenCV)。
超高动力学:
kinect http://sites.rapidus.net/plalance/head_tracking/kinect_track.jpg
网络摄像头:
webcam http://sites.rapidus.net/plalance/head_tracking/webcam_track.jpg
所以我最终得到了4个坐标(x,y),可以不断地给我。
我想从这些坐标创建一个3D表示并获得一个向量。我会进行重置定位,然后比较此位置的旋转和平移,以评估Gizmo位置的变化。
我们从维基百科知道,Kinect的低分辨率为640x480,传感器的水平视场角为57°,垂直角为43°。所以我会首先坚持使用kinect,因为我们肯定知道它的参数。
我试着用这些线程来理解如何做到这一点,但坦率地说,我并没有从中得到很多。 How do I reverse-project 2D points into 3D?
所以,如果某人有关于如何开始应对这一挑战的基本信息,我很乐意听取它的意见。我对矩阵和3D东西(点积,叉积)有点了解,但我不是数学家。如果可能的话,请保持简单。感谢。