【问题标题】:OpenCV: Camera Pose EstimationOpenCV:相机姿势估计
【发布时间】:2011-11-19 20:36:11
【问题描述】:

我尝试匹配用相机拍摄的两张重叠图像。为此,我想使用 OpenCV。我已经用SurfFeatureDetector 提取了这些特征。现在我尝试计算两个图像之间的旋转和平移向量。

据我所知,我应该使用cvFindExtrinsicCameraParams2()。不幸的是,这种方法需要objectPoints 作为参数。这些objectPoints 是提取特征的世界坐标。这些在当前上下文中是未知的。

谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: opencv computer-vision


    【解决方案1】:

    这里已经处理了同时计算两个图像之间的相对位姿和未知的 3d 世界坐标的问题:

    Berthold K. P. 霍恩。重新审视了相对方向。 Berthold 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

    假设有一个初步估计

    编辑:我找到了一些您可能想看看的代码资源:

    资源一:

    http://www.maths.lth.se/vision/downloads/

    带有异常值的两视图几何估计

    用于查找两个已校准的相对方向的 C++ 代码 存在异常值的相机。得到的解是最优的 内点数最大化的感觉。

    资源二:

    http://lear.inrialpes.fr/people/triggs/src/ 相对方向来自 5 分:一个更精致的 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 空间点。

    【讨论】:

    • 感谢您非常详细的回答!这正是我所需要的。
    【解决方案2】:

    有一个理论上的解决方案,但是,相机姿态估计的 OpenCV 实现缺乏所需的工具。

    理论方法: 步骤 1:提取单应性(描述图像之间几何变换的矩阵)。使用 findHomography() 步骤 2. 将结果矩阵分解为旋转和平移。使用 cv::solvePnP();

    问题:findHomography() 返回一个 3x3 矩阵,对应于从一个平面到另一个平面的投影。 solvePnP() 需要一个 3x4 矩阵,表示对象的 3D 旋转/平移。我认为通过一些近似值,您可以修改 solvePnP 以获得一些结果,但它需要大量的数学知识和对 3D 几何的非常好的理解。

    http://en.wikipedia.org/wiki/Transformation_matrix了解更多信息

    【讨论】:

    • 如果 (i) 姿势的唯一区别是围绕相机中心旋转 (ii) 两个图像都描绘了一个平面对象填充整个图像平面。通常,单应性不会对图像之间的转换进行建模。
    • 您在这里描述的是仿射变换。单应性是从任何 3D 位置到任何其他 3D 位置的一般变换。它完全由一个 4x4 矩阵描述。但是,如果对变换应用一些约束(就像所有约束都应该保持在同一平面上),则只能使用 3x3 矩阵。
    • 哦,我以为你的意思是 3x3 单应矩阵,它将 2d 图像点与两幅图像之间的齐次坐标相关联。
    • Homography 假设所有点都位于同一平面上,但此处可能并非如此。至于旋转和平移 - 您可以计算基本矩阵 (cv::findFundamentalMat()),计算基本矩阵 (cv::findEssentialMat()) 并使用 SVD 以及几个额外的步骤分解第二个矩阵(参见书“计算机视觉中的多视图几何”,由 Hartley 和 Zisserman 撰写)以获得这些。
    • Homography 仅在您在飞机上测试点时才有效。或者运动是纯粹的旋转。否则你将不得不使用基本矩阵来提取相对姿势
    猜你喜欢
    • 2013-02-15
    • 1970-01-01
    • 2011-12-26
    • 2020-10-31
    • 2021-08-28
    • 2023-03-29
    • 1970-01-01
    • 2013-11-05
    • 2015-05-01
    相关资源
    最近更新 更多