【问题标题】:Camera Calibration Matrix how to?相机校准矩阵如何?
【发布时间】:2011-05-13 20:40:02
【问题描述】:

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

但是,工具箱以矩阵形式输出结果,作为菜鸟,我不太了解数学知识。

矩阵形式如下。

其中 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

使用这些数据我可以知道我的相机旋转了多少以及它与校准对象的距离吗?

【问题讨论】:

    标签: language-agnostic math matrix camera camera-calibration


    【解决方案1】:

    我猜代码使用了 'standard' 格式 - 然后你会在opencv library docs 或他们的书中找到更多详细信息。

    【讨论】:

    【解决方案2】:

    距离部分很简单。最右边一列中的前三个数字给出了原点的翻译。这表示分别在 x、y 和 z 方向上的平移。在您的示例中,相机的位置 p = (px, py, pz) = (217.653207, 995.948880, 371.963957)。您可以获取相机位置和校准对象位置(cx、cy、cz)之间的欧几里得距离。那就是 sqrt( (px-cx)2 + (py-c y)2 + (pz-cz)2 )

    比较困难的部分是在矩阵左上角的 3x3 元素中捕获的旋转。在不知道他们是如何得出这个结论的情况下,你有点不走运。也就是说,如果您想要的话,将其转换回Euler Angles 并不容易。但是,您可以将这些元素转换为 Quaternion Rotation,这将为您提供唯一的单位矢量和角度,以将相机旋转到该方向。 here 提供了计算的细节。一旦你有了四元数旋转,你可以很容易地把它应用到向量 n = (0, 0, 1), up = (0, 1, 0) 和 right = (1, 0, 0) 以获得法线(方向相机是指向的),上和右向量。仅当您有兴趣从当前位置向左或向右旋转相机时,右矢量才有用。

    【讨论】:

    • 什么被认为是相机镜头或校准纸中心的原点?翻译一下,现在明白了但是还是不知道怎么得到cx、cy和cz或者相机到标定物体的距离?
    • 可能是软件认为校准对象在原点。在那种情况下,cx=cy=cz=0。如果不是这种情况,您将不得不查阅工具箱文档。
    • 更完整地查看您引用的网站,似乎文档有些稀疏。因此,您还有其他几个选择。一是尝试从提供的源代码中弄清楚;另一种是尝试联系作者,看看他们可以为您提供哪些信息。
    • 谢谢,我会这样做,你知道任何其他相机校准软件。
    • @Kevin Boyd:en.wikipedia.org/wiki/Camera_resectioning 上还有一些其他参考资料。此外,我发现您可以将矩阵中的 R 值直接应用于规范向量 n、向上和向右,而不是转换为四元数旋转。我最近一直在使用四元数,因此认为它们对于轮换至关重要。但是,这里不是这样。
    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2014-09-13
    • 2018-10-19
    • 2020-01-25
    相关资源
    最近更新 更多