在 c++ 或 python 中生成像样的视差图以在 raspberry pi 上实现的最佳方法(算法或函数)是什么?

What is the best way(algorithim or function) of generating a decent disparity map in c++ or python for implementation on raspberry pi?

我正在尝试使用立体视频实时进行一些距离计算,但是没有适当的文档可用于 opencv3 的视差映射,并且 opencv2 的许多旧命令在最新版本上不起作用。有没有其他方法(库或算法)在 C++ 或 python.

中进行视差映射

我正在尝试在 raspberry pi 上实现我的代码,性能对我来说是个问题。我知道 c++ 速度更快,处理器密集度相对较低,所以我可能会使用它,但在这方面任何帮助将不胜感激。

是的,但如果您想要任何相当快速或准确的东西,您将需要使用由 CUDA 提供支持的半全局匹配:https://github.com/fixstars/libSGM。使用这样的库,您可以获得 ~640x480 像素图像的实时视差图。

第一步是使用 OpenCV 校准成像 system/stereo 相机。有很多很多关于此的教程,但这是一个很好的起点:https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html

然后一旦校准并创建了校正矩阵,您将需要校正传入的图像,使它们处于校正后的坐标中,并且由于镜头或光学系统中的其他缺陷而导致的任何失真都将是已更正。

然后使用您想要的视差 algorithm/library 从这个校正对生成视差图。这通常在 128 到 256 之间的差异级别,后者不太常见。然后,您可以使用 cv::reprojectImageTo3D() 将此视差图转换为度量深度图。从这里您可以使用任意数量的融合或 SLAM 库来融合深度图,KinectFusion 是最古老且最容易使用的库之一。事实上,它已经集成到 PCL.