通过OpenCV立体声_calib有什么好的结果?

我下载并构建了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

由此产生的差异看起来并不好:

通过OpenCV立体声_calib有什么好的结果?

但是在CloudCompare中查看point_cloud.txt似乎显示了一个平坦的对象(棋盘),尽管效果很差。这个工作正常吗?还是一个不好的例子?

zhuangmisi 回答:通过OpenCV立体声_calib有什么好的结果?

视差是来自立体摄像机对的两个图像中相应点之间的距离(以像素为单位)(与距离成反比)。快速的手动估算显示(在原始未校正图像中)最大差异超过130(棋盘的右上角)。

您需要具有足够大的视差搜索范围才能获得不错的视差。 max-disparity的值必须更高,至少与预期的最大差异一样大。

校准中的高RMS误差通常表示校准不良,但是RMS误差低并不一定意味着校准良好。如果要快速检查立体声校准,可以进行可视化校正输入的图像,然后在两个图像上绘制一些水平线。如果校准良好,则对于一个图像中的任何点,如果在同一水平线上(相同的y坐标,x坐标的差就是视差),则可以找到另一幅图像中的相应点(如果可见)。>

本文链接:https://www.f2er.com/3114359.html

大家都在问