gpt4 book ai didi

c++ - 什么是 OpenCV stereo_calib 的好结果?

转载 作者:行者123 更新时间:2023-11-28 04:05:19 25 4
gpt4 key购买 nike

我下载并构建了 OpenCV 4.1.1(使用 install-opencv.sh )然后尝试使用 stereo_calib在我的相机上,但结果一直很差;我得到 0.6 的 RMS 误差。博文Building OpenCV Stereo Vision - Calibration说:

When calibration finished, it outputs and RMS error. I got an RMS of 0.3 which is pretty good for VGA cameras, but it could be better. If RMS is anything above 0.5, I'd advise that you repeat the process.

为了展示一个好的示例,我使用了 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

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

disparity.png

但在CloudCompare中查看point_cloud.txt|似乎确实显示了一个平面对象(棋盘),尽管效果很差。这工作正常吗?还是坏榜样?

最佳答案

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

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

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

关于c++ - 什么是 OpenCV stereo_calib 的好结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58826535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com