OpenCV 相机标定不一致

问题描述 投票:0回答:1

我正在尝试使用 OpenCV 校准我的相机。我正在使用以下指南:

https://docs.opencv.org/4.8.0/d4/d94/tutorial_camera_calibration.html

但是我发现相机矩阵得到的结果在很大程度上取决于校准图像距相机的距离。应该是这样吗?指南中似乎没有讨论图像应该距离相机多远。

最终我想使用在调用solvePnP时通过校准获得的相机矩阵来获取物体的姿态。如果相机矩阵取决于校准网格的位置,那么solvePnP计算的结果也将取决于它。

我错过了什么?

opencv camera camera-calibration
1个回答
0
投票

相机校准本质上是一个数据拟合过程,类似于直线与数据的最小二乘拟合。良好的拟合需要足够的高质量数据来很好地约束模型。否则,最小量的噪声就会影响参数。我怀疑用远处的棋盘进行校准时会得到非常不确定的结果,因此棋盘只覆盖了图像的一小部分。 一些提示:

  • 棋盘视图理想情况下应覆盖图像的全部或大部分。否则,估计的参数会与估计的板位姿混淆。 ChArUco 和其他编码目标允许检测部分可见的目标。
  • 数学相机模型应该只根据需要灵活 - 以避免过度拟合。大多数普通镜头只需使用 OpenCV 中使用的 Brown-Conrady 模型中的一个径向畸变参数即可准确建模。
  • 对于焦距和主点估计,必须观察透视(倾斜的板视图)。
  • 为了获得良好的镜头畸变估计,应覆盖整个传感器区域。
  • 使用
    cv::calibrateCamera()
    的扩展重载,它提供了
    stdDeviationsIntrinsics
    中参数不确定性的估计。根据经验,与参数值相比,这些不确定性应该很小。
  • Calib.io 的校准器等专业软件可以让您获得图像或 3D 空间中的不确定性,这最终是有趣的品质因数。
  • 这里有更多深入的信息(我是作者):https://calib.io/blogs/knowledge-base/calibration-best-practiceshttps://calib.io/blogs/知识库/理解参数不确定性
© www.soinside.com 2019 - 2024. All rights reserved.