我使用opencv示例代码进行立体相机校准,以获取我的立体相机的本征和非本征。我使用了149个图像对,该程序检测到114个图像对
我的校准结果:
..... 114 pairs have been successfully detected.
Running stereo calibration ...
done with RMS error = 1.60208
average epipolar error = 1.15512
我知道错误应该小于1,但是在少数图像对中,我只会得到小于1的错误。所以我不确定我的结果是好是坏。
答案 0 :(得分:1)
您应该能够得到小于1的错误,但是还不错。我还对大约100张图像进行了校准。我经常丢弃一些检测不可靠的图像。 如果将图像数量减少到10张图像,则在这些情况下校准可能会不合适。该错误将不可靠。
在校准过程中,我遇到的问题来自校准设置。我的建议如下:
检查校准图案是否完全平坦。以我为例,我在不干胶纸上打印并将其粘贴在一块玻璃上。
检查校准图案在旋转中是否不对称,否则姿势估计可能是错误的。
检查中间图案点检测。 opencv中有一些示例可显示检测到的角或圆心。
也可以为每一帧显示错误。这可以帮助您了解哪些图像有问题。如果您发现这些图像实际上存在检测问题,则可以将其丢弃。
如果您获取视频而不是图像,则两个摄像机都应通过硬件连接进行同步。就我而言,我没有这样的链接,因此我为校准目标建立了某种支架以使其保持静止,并且我仅获取图像,而不获取视频。
这不会减少校准误差,但是会使用非常不同的图案位置来覆盖最大视野。
如果景深较小,并且在对焦之前/之后图像模糊,请从棋盘样式更改为圆形样式(opencv中也提供此功能)。
如果您的图像没有严重失真(例如,使用iphone拍摄的照片并未真正显示出类似鱼眼的严重失真),请考虑将K3 = 0设为强制。
在我的情况下,我固定了图像中央的“主要点”,因为该算法总是会为这些参数找到疯狂的值,例如K3。
希望这会有所帮助。祝你好运!