【问题标题】:Is there a way to align the view plane of my camera parallel to the object surface in the scene?有没有办法将我的相机的视图平面与场景中的物体表面平行对齐?
【发布时间】:2019-06-04 09:26:57
【问题描述】:

我正在以正交方式设置两个摄像头,以便每个摄像头都可以看到放置在中间的立方体的相邻表面之一,并且两个摄像头的主线之间的角度是 90 度。我正在考虑在被查看的立方体的每一侧粘贴两个棋盘图案以帮助对齐。我应该如何进行或有其他选择吗?

布局基本上是这样的:

原则线之间的角度需要非常接近90度,或者至少我可以通过某种方式量化误差,所以我放弃了物理方法。

提前致谢。

编辑:
立方体的中心与两个摄像机的视平面之间的距离为 400 英寸;
相机焦距为0.77英寸;
FOV(视野)的水平视角为 0.95 rad;
视图的纵横比为 1280x720。

立方体用作参考对象,仅用于设置相机。它可以是大的或小的,而我认为 1m x 1m x 1m 的立方体是合理的。

这里可以忽略热条件的影响。

我瞄准的误差是+-1度。与在相机端使用气泡管之类的东西相比,在目标端进行校准似乎给了我更少的错误。

我一直在使用带有棋盘的姿势估计方法 (https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_calib3d/py_pose/py_pose.html)。但是当棋盘表面的法向量与相机视图平面的法向量对齐时,它停止工作或不再准确。

对于上述问题,还有其他合适的解决方案吗?

【问题讨论】:

  • 您似乎已经用 c++ 和 python 标记了您的问题,您实际上要求的是哪个?如果您询问的是特定软件,这些标签是无关紧要的,应替换为标识您询问的软件的标签。
  • 我建议深入研究第 11 章。这里www-cs.ccny.cuny.edu/~wolberg/capstone/opencv/…
  • 您需要更精确地定义参数。接近90度?您可以接受的错误是什么?立方体的大小是多少?摄像机的视野是多少。请注意,如果您所需的精度接近十分之一或更少,您肯定需要开始担心设置的机械和热稳定性,并对其进行控制

标签: python c++ opencv image-processing camera-calibration


【解决方案1】:

姿势估计应该足够了(为什么它在你的情况下停止工作??)。 或者您可能需要其他校准,请向下滚动!

首先。 你定义两个相机的内在参数。

秒。 您放置棋盘图案是一个不错的选择,因为您将通过检测角获得更准确的图像点结果。您已经知道这些图案的几何形状和距离,并且您将棋盘的左上角定义为原点 (0,0,0),就像标准的 opencv 一样(是吗?)。

第三。 您使用 solvePnP 来获得姿势估计(旋转和平移)。您必须(并且小心)将初始旋转和平移放入 solvePnP() 中,因为这将决定您的整个结果。

第四。 您将相机位置调整到所需的 90 度。此时,请确保放置棋盘的立方体侧面也完全是 90 度。您可以结合使用来自 opencv 的手动校准和姿态估计。

替代方案:(光源校准)

您可以使用光学物理学中的干涉仪概念,用光源替换您的相机并仔细标记其位置。用棱镜更换立方体并仔细标记其位置。

你可以借用干涉仪的概念,用你自己的术语来设置。

一旦你得到你想要的,把相机放回去,把它作为你上面第3步的初始旋转和平移位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    相关资源
    最近更新 更多