我们一直在使用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更好,并且可以正确估计一些其他对象不佳的对象。
似乎阴影对导致错误有很大的影响。前面的第一个框有一个,并且报告的深度是错误的。
似乎需要使物体处于不同的距离,这样视差图才能准确。
我现在想知道该系统是否可以在外部/不受控制的环境中使用。