代码之家  ›  专栏  ›  技术社区  ›  Kevin Boyd

摄像机校准矩阵如何?

  •  1
  • Kevin Boyd  · 技术社区  · 13 年前

    this 工具箱,我正在校准我的相机。

    然而,工具箱输出的结果是矩阵形式的,作为一个noob,我并不真正理解数学的东西。

    矩阵的形式如下。

    alt text

    其中r是旋转矩阵,t是平移向量。

    这些是我从工具箱中得到的结果。它以像素为单位输出值。

    -0.980755   -0.136184  -0.139905  217.653207
    0.148552    -0.055504  -0.987346  995.948880
    0.126695    -0.989128  0.074666  371.963957
    0.000000    0.000000  0.000000  1.000000
    

    使用这些数据,我能知道我的相机旋转了多少,以及它与校准物体的距离吗?

    2 回复  |  直到 13 年前
        1
  •  3
  •   andand    13 年前

    距离部分很容易。从原点开始的转换由最右边列的前三个数字给出。这分别表示X、Y和Z方向的平移。在您的示例中,相机的位置p=(p X ,P Y ,P Z )=(217.653207、995.948880、371.963957)。您可以获取相机位置和校准对象位置之间的欧几里得距离(C X ,C Y ,C Z )就是这样,就是sqrt((p X -C X ) +(P) Y -C Y ) +(P) Z -C Z ) )

    更困难的部分是矩阵左上3x3元素中捕获的旋转。不知道他们是怎么做到的,你就有点走运了。也就是说,把它转换回 Euler Angles ,如果这是你想要的。但是,可以将这些元素转换为 Quaternion Rotation 这将给你唯一的单位向量和角度,以旋转摄像机的方向。给出了具体的计算方法。 here . 四元数旋转后,可以轻松地将其应用于向量n=(0,0,1),up=(0,1,0)和right=(1,0,0),以获得法线(相机指向的方向),up和right向量。只有当您想从相机当前位置向左或向右旋转时,右向量才有用。

        2
  •  1
  •   Martin Beckett    13 年前

    我猜代码使用了' standard '编队-然后您将在 opencv library docs 或者他们的书。