我目前正在开展一个项目,要求我使用opencv库查找相机的姿势。我正在研究iPod并且目前正在使用视频输入并使用ORB找到关键点和描述符,并使用BruteForceMatcher在准实时中从两个帧中获得匹配点(现在它是非常不受欢迎的)。我不确定这是否有必要,但我也过滤了匹配,因此只匹配该地图两种方式,即k-> k1和k1-> k
我有我正在使用的相机的内在参数以及2D关键点。由此我希望找到相机的位置(我假设这些是旋转和平移的外在参数)。
虽然我已经阅读了很多教程,但是我的头脑中有很多这样做了,我需要一些指导,说明哪种方法可行,以及解释。大多数教程使用了一组设置参考点,但除了从帧中拉出的关键点之外,我没有其他标记。
根据我的理解,步骤是:
a)找到相应的关键点
b)识别基本矩阵
c)估计基本矩阵d)将基本矩阵分解为旋转和平移向量
然而,除了步骤a)我被卡住了。
答案 0 :(得分:1)
从你的陈述中我了解到你已经获得了一组可以输入cvFindFundamentalMat的2D对应关系。这找到了与两个视角相关的基本矩阵。即,对于摄像机-1中的每个点p和摄像机-2中的对应点p',p'Fp = 0。 计算出的基本矩阵可以进一步传递给opencv中的ComputeCorrespondEpilines函数,该函数找到对应于指定点的对极线。它也可以传递给StereoRectifyUncalibrated函数来计算整流转换。在那里,您可以获得两个摄像机坐标系之间的旋转和平移(直到缩放)。
基本矩阵是与校准摄像机有关的度量对象,而基本矩阵描述了投影几何的更一般和基本术语的对应关系,所以我认为你不需要你的基本矩阵。所有信息都包含在基本矩阵。在不知道摄像机的内在参数及其在空间中的相对位置的情况下计算整流变换。
如果你没有使用棋盘校准模式,而是使用通用对象或图像你是正确的,你需要手动或使用强大的特征提取器和匹配器ORB,MSER,SURF,SIFT,FAST
此外,我建议参考opencv文档here我希望这会有所帮助。