【问题标题】:Calculating camera coordinates from single img with marker使用标记从单个图像计算相机坐标
【发布时间】:2026-02-23 01:25:02
【问题描述】:

我的目标是使用平面标记计算相机的世界坐标。
我已经校准了相机并研究了所有内部参数。
标记是正方形。
看看我的illustration(很遗憾我还不能在这里发布)。

{Xc,Yc,Zc} - 相机基础坐标
{Xw,Yx,Zw} - 世界坐标

我的任务是以 {Xw,Yw,Zw} 为基础计算相机的坐标。
我只需要使用一张照片就可以做到这一点。
实际上,我需要为我收藏的每张照片都这样做。

我学过射影几何理论。
我还实现了单应性计算。
使用校准后我知道的内在相机矩阵,我已经解决了线性方程组 并找到外在矩阵。它是逆矩阵。 逆矩阵让我可以找到相机的 {Xw,Yw} 坐标。解决方案看起来正确。我尝试了几张从不同角度拍摄的照片。 但我无法计算 Zw。

现在我不确定问题是否有解决方案。 但增强现实应用解决了类似的问题。 他们以 {Xc,Yc,Zc} 为基础计算标记顶点的坐标。 如果我能做到这一点,我也能解决我的问题。

我试图调查 ARToolKit 的实现,但我没有克服它。 我想了解内容,而不是使用任何库或现成的解决方案。

【问题讨论】:

    标签: camera augmented-reality homography


    【解决方案1】:

    您的问题是具有 4 个共面点的 PnP 问题,您可以在其中检测标记角的投影点并与标记的 3d 角进行对应。通常,角点在标记的坐标系中定义,因此格式为 (X,Y,0)。

    如果你使用OpenCV,用solvePnP()实现起来相当简单。

    在此处查找示例(来自 Mastering OpenCV 书籍):

    https://github.com/MasteringOpenCV/code/blob/master/Chapter2_iPhoneAR/Example_MarkerBasedAR/Example_MarkerBasedAR/MarkerDetector.cpp

    以及此处的随附说明: http://www.packtpub.com/article/marker-based-augmented-reality-on-iPhone-or-iPad

    如果您想从单应性中找到姿势,请查看之前发布的这篇文章: Computing camera pose with homography matrix based on 4 coplanar points

    【讨论】: