OpenCV摄像机校准(计算[R | T])用线而不是点

时间:2015-07-14 17:13:13

标签: opencv camera-calibration robot

我正在研究一个this tutorial的足球(足球)机器人。 我的机器有2个摄像头,而地面图在目标前面有6个点可识别。

2 for the corners and 4 around the goal 我在做什么:

  1. 拍照并获得内在参数(焦距,扭曲);
  2. 移动时,找到要点并使用 solvePnP 来获取[R | T];
  3. 使用 projectPoints 获取其真实坐标。
  4. 正如我所尝试的那样(在6 * 9内角的棋盘中)10分可以正常工作,但只有5分我得到了非常糟糕的结果(当视力不好或者球被阻挡时甚至没有考虑过视力)。

    我正在考虑预设良好的[R | T](对整个地图有良好的视野),并且在移动时,利用其旧的[R | T](作为初始近似)来帮助获得更好的[R | T]。但过了一段时间后,由于[R | T]变得不那么准确,我不可能得到约。值。

    另一种解决方案是,尝试使用这些线来生成[R | T]。例如,在检测到一组线的点之后,将其与x = 0或y = 0 ...相关联,并使用它们来计算[R | T],这可能会产生更好的结果。有没有办法做到这一点?

    或者我弄错了?任何想法或帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我想做出贡献,但我对这些设置有一些疑问:

(i。)我假设相机固定在机器人上。然后,[R | t]相对于场(参考)改变。您是否在追踪现场的上述要点(功能)?在这种情况下,当机器人在野外移动时,它们的旋转和平移会发生变化。

(ii。)您是否从线路通信中检查了Hartley's paper校准?这可能会让您对第二个提案有所了解。

现在,假设我对项目 i。进行了假设,请先单独对相机进行相机校准,以获得镜头和切向失真参数。您希望在从运动中重新校准时修复它们。使用线条看起来更可行,因为它们可能对遮挡力很强。

如果您提供更多详细信息并丰富此讨论,我可以编辑此答案。

我会把它作为评论,但我没有足够的信用。