文章目录

  • 前言
  • 为何进行相机标定?
  • 相机标定本质
  • 坐标系
  • 一、针孔模型



前言

环视AVM的第一步即对鱼眼相机进行标定,得到相机的内参、畸变系数。本文主要介绍了相机标定及其原理。相机标定本质上为坐标系之间的转换,最终目的是为了得到投影矩阵

为何进行相机标定?


1.物体在实际空间中的位置

2.物体在图像中对应点的位置

为了将1、2联系起来,必须找到一个纽带,这个纽带就是相机的参数(内参、外参、畸变系数)

相机标定本质


几个坐标系之间的转换

坐标系

世界坐标系(3D)——>相机坐标系(3D)——>图像坐标系(2D)

世界坐标系:定义物体在真实世界的具体位置

相机坐标系:以相机的角度去描述物体的位置

图像坐标系:描述物体3D——>2D的映射关系,即找到3D物体在平面上的对应位置

一、针孔模型

为了更好地理解鱼眼相机的模型,所以先从最基础的针孔模型进行建模。

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_相机标定


x: 成像的大小

f: 相机的焦距

Z:物体到针孔平面的距离

X:物体的大小

根据三角形相似性原理,针孔模型参数的几何关系为:

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_3D_02


为了消除负号使得公式更加简单,将成像平面围绕针孔旋转180°,并建立相机坐标系,如图

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_计算机视觉_03


翻转后的点表示为:

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_算法_04


此时针孔模型参数的几何关系为:公式(1):

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_相机标定_05

理想情况,K轴刚好通过成像平面的小孔,但实际情况下相机会出现偏移,所以引入偏移误差常量Cx,Cy,这时Pc点在平面i,j上的坐标变为

公式(2):

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_算法_06


并且,像素点往往是矩形,而不是正方形,所以再引入误差常量Sx,Sy。所以相机焦距变为:公式(3):

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_人工智能_07


此时,在平面i,j上的点==Pu(xu,yu)==就变为了公式(4):

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_算法_08

再结合公式(1)可以得出:

公式(5):

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_算法_09


求得Pu(Xu,Yu)的目的是因为我们要把三维空间中的点Pc(Xc,Yc,Zc)投影到这个上面,为了达到维度的统一,我们使用齐次坐标(其次坐标这里就不再进行描述),即将Pu表示为Pu(Xu,Yu,1)

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_算法_10


同时将最开始的三维坐标表示为:

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_相机标定_11

并将相机参数用一个==M(3*3)==矩阵来进行表示:

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_算法_12


这便是相机的内参,我们的最终目的是为了确定相机内参中的值。公式(6):

鱼眼相机 世界坐标 python distortion 鱼眼相机标定原理_算法_13

根据公式(6)进行化解求未知数即可获取得到M矩阵,其中λ为常量系数。