我尝试匹配用相机拍摄的两个重叠图像。为此,我想使用OpenCV。我已经提取了SurfFeatureDetector
的功能。现在我试图计算两幅图像之间的旋转和平移向量。OpenCV:相机姿态估计
据我所知,我应该使用cvFindExtrinsicCameraParams2()
。不幸的是,这种方法需要objectPoints
作为参数。这些objectPoints
是提取的特征的世界坐标。这些在当前情况下是不知道的。
有人可以给我一个提示如何解决这个问题?
我尝试匹配用相机拍摄的两个重叠图像。为此,我想使用OpenCV。我已经提取了SurfFeatureDetector
的功能。现在我试图计算两幅图像之间的旋转和平移向量。OpenCV:相机姿态估计
据我所知,我应该使用cvFindExtrinsicCameraParams2()
。不幸的是,这种方法需要objectPoints
作为参数。这些objectPoints
是提取的特征的世界坐标。这些在当前情况下是不知道的。
有人可以给我一个提示如何解决这个问题?
的同时计算两个图像和3D未知世界坐标已经在这里治疗之间的相对位姿的问题:
贝特霍尔德K. P.号角。相对定位重新审视。 Berthold K. P. Horn。人工智能实验室,技术,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
假定有一个初始估计值可用。
编辑:我发现了一些代码资源,你可能想看一看:
资源我:
http://www.maths.lth.se/vision/downloads/
两个视图几何估计与离群
用于查找两个校准的相对方向的C++代码 存在异常值的相机。所获得的解决方案在内部数量最大化的意义上是最优的。
资源II:稍微更抛光C例程执行从 未知3D点为两个校准摄像机的相对取向的最小 溶液:从 5分
http://lear.inrialpes.fr/people/triggs/src/相对定向。需要5分,可以有多达10个可行的解决方案(但更常见的是2-5个)。还需要几个用于线性代数的CLAPACK例程。还有一个简短的技术报告 (包含在源代码中)。
资源III:
http://www9.in.tum.de/praktika/ppbv.WS02/doc/html/reference/cpp/toc_tools_stereo.html vector_to_rel_pose计算给定图像点对应2个 相机和已知的摄像机参数和 重建三维空间中的点之间的相对方位。
有一个理论上的解决方案,但是,相机姿态估计的OpenCV实现缺少所需的工具。
理论方法: 步骤1:提取单应性矩阵(描述图像之间几何变换的矩阵)。使用findHomography() 第2步。将结果矩阵分解为旋转和平移。使用cv :: solvePnP();
问题:findHomography()返回一个3x3矩阵,对应于从一个平面到另一个平面的投影。 solvePnP()需要一个3x4矩阵,表示对象的3D旋转/平移。我认为通过一些近似值,你可以修改solvePnP来给你一些结果,但是它需要很多的数学和对3D几何的很好的理解。
感谢您提供非常详细的答案!那正是我需要的。 – SecStone