我下载并构建了OpenCV 4.1.1(使用install-opencv.sh),然后尝试在相机上使用stereo_calib,但结果始终不佳;我得到RMS误差0.6。博客文章Building OpenCV Stereo Vision - Calibration说:
校准完成后,将输出和RMS误差。我得到了RMS 0.3对于VGA相机来说相当不错,但可能会更好。如果RMS大于0.5,我建议您重复此过程。
为了演示一个好例子,我使用了samples/data-stereo_calib.xml中提供的示例数据及其列出的图像。来自stereo_calib的结果是:
..........................13 pairs have been successfully detected.
Running stereo calibration ...
done with RMS error=0.635856
average epipolar err = 0.443478
这似乎与我从数据中得到的大致相同。即使RMS误差大于0.5,这还是一个合理的结果吗?那平均对极误差呢?
我使用结果在第一个示例图像上运行stereo_match:
stereo_match -i=intrinsics.yml -e=extrinsics.yml -o=disparity.png -p=point_cloud.txt --max-disparity=16 --blocksize=15 left01.jpg right01.jpg
由此产生的差异看起来并不好:
但是在CloudCompare中查看point_cloud.txt似乎显示了一个平坦的对象(棋盘),尽管效果很差。这个工作正常吗?还是一个不好的例子?