2013-04-30 58 views
0

我与OpenCV的API使用一个camera.I增强现实项目的工作人员有:如何做对应关系的2D-3D指出

  • 我的3D对象的3D点(我从MeshLab得到4分)
  • 2D点我想跟随(我有4分):这些点不是3D点的投影。
  • 固有相机参数

使用这些参数,我有我已经用于呈现我的模型,并设置模型视图矩阵外部参数(旋转和平移使用cvFindExtrinsicParam功能)。 我的问题是,3D模型没有显示在特定的位置:它已经显示在我的图像上的不同位置。我如何修复模型的位置,然后modelView矩阵? 在其他论坛,他们告诉我,我应该做相应的2D-3D来获得外部参数,但我不知道如何将我的2D点与3D点对应起来?

+0

“这些点是**不是** 3D点的投影”他们还会是什么?这是一个错字吗? “未在特定位置显示”您的意思是他们没有处于正确的位置? – 2013-05-01 14:21:15

+0

我使用** cvgoodPointToTrack **函数来获取积分,然后使用** calcOpticalFlowPyrLK **来跟踪它们。 – 2013-05-02 10:00:45

回答

1

通常情况下,你会设计你想跟踪的点,这种方式立即清除2d-3d对应关系。最简单的方法是使用不同颜色的点。您也可以使用某种模式(谷歌增强现实卡),然后您必须分析这些模式才能了解它在图像中的旋转方式。当然模式不能是旋转对称的。

如果你不能这样做,你可以尝试点的所有不同排列,将它们插入到OpenCV中以获得矩阵,然后用这些矩阵将3D点投影到2D点,然后看看哪一个最合适。

+0

能否请你解释第二点。你是指什么点的不同排列? – 2013-05-02 09:57:03

+0

退房http://stackoverflow.com/questions/15776105/find-2d-3d-correspondence-of-4-non-coplanar-points?rq=1我想你需要告诉我们更多关于你的4点。 – 2013-05-02 17:21:23

+0

我已经固定** 5 **点的眼睛位置,然后我跟踪这个点与光流算法。我用'findextrinsicparameters2'获得**旋转/平移**矩阵。我的问题是我怎么能得到3D点哪些符合我的2D点?我如何获得** 3D点**坐标? – 2013-05-12 15:39:39