Opencv 3D立体,糟糕的3D坐标

Opencv 3D立体,糟糕的3D坐标,opencv,3d,Opencv,3d,我用立体视觉来获得三维重建。我正在使用opencv库。 我以这种方式实现了我的代码: 1) 立体校准 2) 图像对的不失真与校正 3) 视差图-使用SGBM 4) 三维坐标计算深度图-取消使用重投影3D() 结果: -良好的视差图和良好的三维重建 -3D坐标值不正确,距离与实际不符 三维距离,即相机和物体之间的距离,有10毫米的误差,并且随着距离的增加而增加。一、 我使用了不同的基线,我总是得到错误。 当我比较外部参数,向量T,“stereorective”的输出时,基线匹配。 所以我不知道问题

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

1) 立体校准

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

3) 视差图-使用SGBM

4) 三维坐标计算深度图-取消使用重投影3D()

结果:

-良好的视差图和良好的三维重建

-3D坐标值不正确,距离与实际不符

三维距离,即相机和物体之间的距离,有10毫米的误差,并且随着距离的增加而增加。一、 我使用了不同的基线,我总是得到错误。 当我比较外部参数,向量T,“stereorective”的输出时,基线匹配。 所以我不知道问题出在哪里

有人能帮我吗,先谢谢你

校准:


对于立体视觉解决方案,10 mm的误差是合理的,当然这一切都取决于传感器的灵敏度、分辨率、基线和到物体的距离

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


您选择的体系结构看起来不错。您可以尝试提高传感器分辨率,或者深入到openCV库中有大量调整空间的校准过程中-确保仅选择棋盘静止时拍摄的图像,选择棋盘不同姿势的更高种类,添加图像,直到两个图像之间的注册降至允许的最大错误以下,等等。

感谢您的快速回复。我已经在使用更高的分辨率,希望您能快速回复。但是我得到的误差是10厘米而不是10毫米。这就是我担心的原因。我已经在使用更高的分辨率了。2台数码单色genie M1280(1280*1024)。照片校准采集已经是静态的。棋盘在太空中移动了16个位置。我不知道我应该做什么来解决这个问题,10厘米的物体距离和什么基线?还有,棋盘的16个位置意味着16幅图像?这通常是不够的,你可以很容易地超过80甚至100,仍然可以看到改善。是的,我的意思是16对照片。10厘米误差-20厘米物体距离。基线7cm(已尝试不同的基线)。我将尝试更多的照片,但我仍然认为错误比应该的要大得多。