在我们目前的项目中,我们使用安装在用户头部上方的深度摄像机来识别手指、手和触摸事件。这是相当好的工作,并已经可以作为一种新型的输入设备。
下一步是使用增强现实眼镜将按钮/控件显示在用户的手掌上。对于这一步,我们需要转换我们的识别数据(指尖,掌心四边形的角点),将它们显示在增强现实眼镜上的正确位置上。在未来,我们将使用一个真正的3D输出场景,但就目前而言,我们只是简单地用我们的眼镜显示2D图像。您可以想象整个设置为立体视图与深度相机和用户眼睛作为相机。
为了得到变换矩阵,我们连续地在输出图像上显示一个随机点,用户必须将他的指尖放在那个位置上。由此我们得到了输入图像(深度摄像机)和输出图像(增强现实眼镜)之间的点对应关系。我们目前使用其中的20个对应,然后使用Emgu的FindHomography()方法获得转换矩阵。
对于我们的第一次努力,这已经是正常的,但它并不完美。我们应该如何取得更好的结果?
我们有什么
我们需要什么
一种将与我们的深度相机相关的2D像素坐标或3D坐标映射到输出图像的方法(目前是2D的,也许是以后的3D )。
问题:
我们应该在这里使用哪种类型的转换?FindHomography(),GetPerspectiveTransformation(),fundamentalMatrix,essentialMatrix?
任何帮助/建议都是非常感谢的。提前谢谢你!
发布于 2014-03-10 14:55:46
首先,FindHomography()、GetPerspectiveTransformation()是相同的转换,除非前者在Ransac框架的后面重复尝试。它们在飞机之间匹配点,因此不适合你的3d任务。FundamentalMatrix和essentialMatrix不是转换--它们是你听到的热门词;)如果你试图重新投影一个虚拟物体从相机系统到眼镜的角度,你只需应用旋转和三维转换到你的对象坐标,然后重新投影他们。
步骤顺序如下:
https://stackoverflow.com/questions/22302801
复制相似问题