我尝试匹配用相机捕获的两张重叠的图像。要做到这一点,我想使用OpenCV。我已经用SurfFeatureDetector提取了特征。现在我尝试计算两个图像之间的旋转和平移向量。
据我所知,我应该使用cvFindExtrinsicCameraParams2()。不幸的是,此方法需要objectPoints作为参数。这些objectPoints是提取的特征的世界坐标。这些在当前上下文中是未知的。
谁能给我一个如何解决这个问题的提示?
发布于 2011-11-21 02:37:15
这里处理了同时计算两个图像和未知3d世界坐标之间的相对姿态的问题:
伯托尔德·K·P·霍恩。重新审视了相对方向。伯托尔德·K·P·霍恩。人工智能实验室,麻省理工学院,545技术...
编辑:这是论文的链接:http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.64.4700
请参阅我对相关问题的回答,其中我对此问题提出了解决方案:
OpenCV extrinsic camera from feature points
编辑:你可能也想看看捆绑调整,
http://en.wikipedia.org/wiki/Bundle_adjustment
这假设有一个初步估计可用。
编辑:我发现了一些代码资源,你可能想看看:
资源I:
http://www.maths.lth.se/vision/downloads/
带离群点的双视图几何估计
C++代码,用于在存在异常值的情况下找到两个校准相机的相对方向。从最大化内点数目的意义上讲,所获得的解是最优的。
资源II:
http://lear.inrialpes.fr/people/triggs/src/ Relative orientation from 5 points:一个更精致的C例程,实现了从未知3D点进行两个校准相机的相对定向的最小解决方案。5个点是必需的,可以有多达10个可行方案(但2-5个更常见)。对于线性代数,还需要一些CLAPACK例程。还有一份关于这方面的简短技术报告(包括在源代码中)。
资源三:
http://www9.in.tum.de/praktika/ppbv.WS02/doc/html/reference/cpp/toc_tools_stereo.html vector_to_rel_pose在给定图像点对应关系和已知相机参数的情况下计算两个相机之间的相对方向,并重建3D空间点。
发布于 2011-11-20 15:45:39
有一个理论上的解决方案,然而,摄像机姿态估计的OpenCV实现缺乏所需的工具。
理论方法:步骤1:提取单应性(描述图像之间几何变换的矩阵)。使用findHomography()步骤2.将结果矩阵分解为旋转和平移。使用cv::solvePnP();
问题: findHomography()返回一个3x3矩阵,对应于从一个平面到另一个平面的投影。solvePnP()需要一个3x4矩阵,表示对象的3D旋转/平移。我认为通过一些近似,你可以修改solvePnP来给出一些结果,但它需要大量的数学知识和对3D几何的很好的理解。
要了解更多信息,请访问http://en.wikipedia.org/wiki/Transformation_matrix
https://stackoverflow.com/questions/8197107
复制相似问题