日期
09/24
2024
咨询
  • QQ扫一扫

  • Vision小助手
    (CMVU)

相机标定与畸变校正
收藏
2024-09-24 09:59:24来源: 中国机器视觉网

镜头畸变是大多数成像系统的一部分,在某些情况下,镜头失真只是一个美学问题,影响了人类观察者对图像的看法。

然而在过去十几年里显著增长的计算机视觉应用中,镜头畸变影响了相机在图像平面上准确检测物体位置和大小的能力。

例如,如果不消除镜头失真:

汽车摄像头系统无法精确定位视野中的其他汽车、行人或物体的确切位置。机器人视觉系统难以抓取物体并在三维空间中进行相关操作。增强现实技术不能准确地投射出它们的图像供用户互动。在高级驾驶辅助系统(ADAS)、驾驶员/乘员监控系统(DMS/OMS)、增强/虚拟现实(AR/VR)、机器人、航空成像、手机摄像头物体测量和空间探索等具体应用中,镜头畸变干扰了相机视觉系统。

因此,镜头畸变必须测量和消除,以确保这些应用程序有一个清晰的愿景,以便应用系统或人类操作员可以作出适当的调整。

基于此需求,我们Image Engineering公司已经开发了GEOCAL衍射光标定设备,可以快速测量畸变参数和评估镜头畸变。将GEOCAL测量与开源软件(如OpenCV)相结合的方式,可以让您从这些应用程序捕获的图像中消除失真。

GEOCAL引入了一种紧凑的标定方案,使用光束扩展激光器结合衍射光学元件DOE来绘制失真图。该解决方案消除了对充足空间、外部光源、增距镜等需求,同时仍然提供了测量所有镜头畸变的内在和外在参数的能力。

360截图20240925095747687.jpg

360截图20240925095754585.jpg

GEOCAL与传统标定方法比较

传统上,镜头畸变是用棋盘测试车来测量的。利用该方法,被测设备(DUT)捕获图卡图像,然后提取相机畸变参数。虽然这种方法仍然有效,但在实践中,它有许多缺点,包括:

设置棋盘格图卡系统需要大量的地面空间,特别是当相机的视场特别大时。

棋盘格图卡需要外部照明来照亮图卡。

当校准具有不同视场的相机时,必须重新配置棋盘格图卡,因此需要改变地面空间、照明、测试图卡以及与DUT的距离。

棋盘格图卡不测量pitch,yaw,roll方向(外参)。

棋盘格图卡需要增距镜进行无限远处进行测量,特别是长焦的相机,这些增距镜头会会引入额外的失真,需要从测量中消除。

360截图20240925095806098.jpg

使用棋盘格图卡需要一个大的实验室空间和众多的图卡*https://medium.com/wovenplanetlevel5/high-fidelity-sensor-calibration-for-autonomous-vehicles-6af06eba4c26

GEOCAL测量

GEOCAL创造了一个从无穷远处开始的密集的点阵,然后由DUT捕获。由于投射点网格的几何形状是已知的,因此可以使用专门设计的GEOCAL软件来分析拍摄的网格图像中的镜头失真。

360截图20240925095815915.jpg

360截图20240925095823964.jpg

使用Geocal分析软件,你可以确定对消除失真至关重要的内在参数(径向和切向失真系数、主点、焦距)。此外,外参(pitch,yaw,roll)也可以被测量,用于立体相机对准或校准相机的角度方向。

GEOCAL可以快速计算相机标定所需的所有必要值:

内参主点u0、v0;焦距fx,fy;径向畸变系数k1~K15(可选);切向畸变系数p1,P2;相机外参ω,φ,κ角度;

以及报告均方误差(重投影误差)结果RMSE:

360截图20240925095830757.jpg

通常,我们建议在去除失真时使用OpenCV。如果使用OpenCV,一个兼容的透镜模型是至关重要的,以获得从网格图像的内在和外在系数。

计算出的参数可以输出为CSV或XML文件。用户还可以为径向畸变配置一些镜头模型系数。

下面是GEOCAL测试导出结果样例的XML(见本文末尾的下载部分,可下载示例结果并验证)。

360截图20240925095840398.jpg

用OpenCV去除失真

该代码将解释CSV文件输出中的相机校准参数,并使用OpenCV的 "undistort "功能将其应用于图像(见本文末尾的下载部分,下载示例结果)。

360截图20240925095848880.jpg

使用OpenCV,可以从原始图像中去除镜头失真,并且可以对相机进行几何校准。

360截图20240925095856516.jpg

360截图20240925095903913.jpg

(文章来源于艾宜光电,如有侵权请联系删除)