【问题标题】:3D stereo, bad 3D coordinates3D 立体,错误的 3D 坐标
【发布时间】:2014-12-22 00:32:27
【问题描述】:

我正在使用立体视觉来获得 3D 重建。我正在使用 opencv 库。 我以这种方式实现了我的代码:

1) 立体校准

2) 图像对的不失真和校正

3) 视差图 - 使用 SGBM

4) 3D 坐标计算深度图 - unsing reprojectImageTo3D();

结果:

-良好的视差图和良好的 3D 重建

-错误的 3D 坐标值,距离与现实不符。

3D 距离,即相机和物体之间的距离,有 10 毫米的误差,并且随着距离的增加而增加。我已经使用了各种基线,但总是出错。 当我比较外部参数向量 T 时,“stereoRectify”的输出与基线匹配。 所以我不知道问题出在哪里。

谁能帮帮我,在此先感谢

校准:

http://textuploader.com/ocxl http://textuploader.com/ocxm

【问题讨论】:

    标签: opencv 3d


    【解决方案1】:

    对于立体视觉解决方案来说,10 毫米的误差可能是合理的,这当然取决于传感器的灵敏度、分辨率、基线和到物体的距离。

    关于物体距离的误差增加也是该问题的典型特征 - 立体对应本质上是在两个视频传感器到物体之间进行三角测量,距离越大,视频传感器之间的角度导数到物体在深度轴上转换为更大的距离,这意味着更大的误差。一个很好的例子是视频传感器与物体之间的角度几乎是正确的,这意味着在估计它时任何小的正误差都会使估计的深度达到无穷大。

    您选择的架构看起来不错。您可以尝试提高传感器分辨率,或者深入研究在 openCV 库中有很大调整空间的校准过程 - 确保只选择在棋盘静止时拍摄的图像,选择更多不同的姿势棋盘,添加图像直到两个图像之间的配准下降到您可以允许的最大误差以下,等等。

    【讨论】:

    • 感谢您的快速回复。我已经在使用更高分辨率了
    • 感谢您的快速回复。但我得到的错误是 10 厘米而不是 10 毫米。这就是我担心的原因。我已经在使用更高的分辨率。 2个数字单色精灵M1280(1280*1024)。照片校准采集已经是静态的。棋盘在空间中移动了 16 个位置。我不知道我应该怎么做才能解决这个问题
    • 10 cm 对应什么物距和什么基线?
    • 另外,棋盘的16个位置意味着16个图像?这通常是不够的,你可以轻松地超过 80 甚至 100 并且仍然看到改进。
    • 是的,我的意思是 16 对照片。 10cm 误差 - 20cm 物距。基线 7 厘米(已经尝试过不同的基线)。我会尝试更多的照片,但我仍然认为错误比应该的要大得多。
    猜你喜欢
    • 1970-01-01
    • 2014-04-29
    • 2011-03-17
    • 1970-01-01
    • 2016-05-25
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多