OpenCV立体摄像机深度计算

时间:2018-10-23 08:42:55

标签: opencv distance stereo-3d disparity-mapping

我们一直在使用OpenCV和一对摄像机来确定一个完整的解决方案,以确定场景中检测到的物体的距离。
我们已经成功执行了校准,并且可以显示合理的点云。
校准设置并不完美,但结果令人满意。

这很清楚,我们继续使用通过校准过程获得的内在和外在数据来计算距离。
视差图看起来不错,可视化时场景的深度是有道理的。

没有意义的是计算出的距离。

我已将所有内容放到git上:https://github.com/depauwjimmy/stereoDepthPerception

图片在左/右目录中。
校准结果在两个yml文件中。
我参考的是中间的木炉上方的盒子。 盒子的真实距离是3米。
我使用了3.5厘米见方的尺寸进行校准。

我尝试了许多不同的方法和参数来获取视差图,但是我总是得到130左右的结果(不乘以squareSize),这太低了。 reprojectImageTo3D给出相同的结果。 如果我乘以我的平方大小,那就太高了。

现在我想知道问题出在哪里。
校准不够好并导致这种错误吗?
进行校准时使用的squareSize有什么影响,乘以结果是否正确?
也许我应该这样做,但是我做错了方法。 也许我应该使用1的平方进行校准,然后将结果乘以3.5。

我的代码计算距离看起来正确吗?

任何帮助将不胜感激。

编辑:

由于图片是在弱光环境下拍摄的,因此我尝试通过预处理来改善视差图。
我们也尝试了其他图片。据我了解,squareSize在这里并不重要,因为一开始是使用正确的校准进行的。

/ data / set_1仍然与我的尝试完全脱离距离。
/ data / set_2和set_3更好,并且可以正确估计一些其他对象不佳的对象。
似乎阴影对导致错误有很大的影响。前面的第一个框有一个,并且报告的深度是错误的。
似乎需要使物体处于不同的距离,这样视差图才能准确。
我现在想知道该系统是否可以在外部/不受控制的环境中使用。

0 个答案:

没有答案