gpt4 book ai didi

matlab - 什么是最好的相机校准方法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:44 25 4
gpt4 key购买 nike

我明白上面的问题是广泛而模糊的。但要放在上下文中:我正在尝试确定相机姿势和位置估计的准确性。我花了数周时间校准和尝试不同的方法和不同尺寸的板、照明、距离等。

我尝试过的方法:

描述:

  • 在相机前使用大约 20 张不同方向和位置的图像
  • 对于尺寸为 25mm、32mm 和 50mm 的 9x6 棋盘格
  • 分辨率为 1280x720 和 1920x1080
  • 距离从小板的 500 毫米到大板的 2000 毫米不等

在所有情况下,我都按照此链接遵守严格的指导方针 How to verify the correctness of calibration of a webcam?

在上述因素的所有组合中,我得到的结果相差几毫米 (+- 15mm)对于上述方法,我对 1280x720 的 25mm block 的内在特性如下:

  • OpenCV 的内置校准方法 > fx = 1269.4 fy = 1269.49 cx = 639.5 cy = 359.5
  • Matlab 校准工具箱 > fx = 1259.53 fy = 1260.76 cx = 661.3 cy = 306.5
  • Matlab 校准应用 > fx = 1255.1 fy = 1254.8 cx = 652.6 cy = 340.7
  • 手动调整值。 > 各种结果,除 cx = 639.5 cy = 359.5 外均不稳定

这不应该是这样的。在处理 1 米以下的距离时,相机相对于电路板原点的位置应该精确到平均一两毫米,如果不是亚毫米精度的话。除非我弄错了?

我的问题是,对于高清网络摄像头,失真小的理想、简单的校准方法是什么?

最佳答案

有许多可能的错误来源。

首先,虽然您尝试过的所有三种校准实现都使用基本相同的算法,但存在足够多的差异可以解释结果的差异。

主要区别在于棋盘角检测。 Caltech Calibration Toolbox 没有自动棋盘检测功能,而是使用第二个优化 channel 来细化角点。 OpenCV 和 Camera Calibrator App 都会自动检测棋盘,但 Camera Calibrator App 中使用的算法要好得多。它更健壮,这意味着它很可能在 OpenCV 未检测到板时检测到板,并且其亚像素定位更精确。我的观点是,在这三种方法中,您使用不同的数据点进行校准。因此,您的结果不同也就不足为奇了。

校准后,您会得到什么样的重投影误差? Camera Calibrator App 会显示重投影误差的条形图。你应该看看它,并排除给你带来高错误的图像。理想情况下,您希望平均重投影误差小于半个像素。越低越好。

现在我不得不问你,你是如何测量从相机到棋盘的距离的?您从校准中获得的外部参数表示从棋盘坐标系到相机坐标系的转换,其原点位于相机外壳内部的光学中心。这很难准确测量。更好的方法是 place a flat object of a known size on the checkerboard and measure it using the camera .事实上,您可以测量检测到的棋盘角之间的距离。请注意,检测精度是另一个误差来源。

另外,请确保不要将校准图像保存为 jpeg。压缩伪像会影响棋盘角检测的准确性。使用 tiff 或 png 等无损格式。

关于matlab - 什么是最好的相机校准方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256994/

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