欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

从建模、推导到求解,分析最基本的相机内在和外在特性

最编程 2024-04-07 21:37:44
...

相机内参与外参分析,从建模,推导到求解:Camera Extrinsics and Intrinsics.

  • I. 坐标系的建立,Coordinate System.
  • II. 转换关系,Transformation.
  • III. From the world coord to the sensor coord.
    • 3.1 Extrinsics,相机的外参
      • 3.1.1 从世界坐标系到相机坐标系
    • 3.2 Intrinsics,相机的内参
      • 3.2.1 从相机到图像平面
      • 3.2.2 从图像平面到传感器
      • 3.2.3 传感器平面的非线性误差
  • IV. 总结.

一些内容来自于:Camera Extrinsics and Intrinsics. Link: Extrinsics, Intrinsics.

本文的坐标变换,矩阵变换完全建立在单应性坐标 homogeneous coordinate和单应性变换的基础上,包括了基础的刚体变换,以及投影变换等。具体的描述参见:homogeneous单应性坐标的定义,以及不同投影,仿射,相似,刚体变换矩阵的关系和*度分析。

I. 坐标系的建立,Coordinate System.

主要讲从世界坐标系到图像平面坐标系以及到相机的传感器感光元件上的坐标系定义。注意:下面开始,所有的坐标点的含义均遵循下面的命名规则:

  • o o o表示的是object,world,也就是世界坐标系下面的坐标或者转换矩阵,3D;
  • k k k表示camera,相机坐标系下的坐标或者变换矩阵;
  • c c c表示image plane,图像平面坐标系下的坐标点或者变换矩阵;
  • s s s表示sensor,传感器平面坐标系下的坐标点或者变换矩阵;
  • 一个投影变换矩阵,写成 b H a ^bH_a bHa或者写成 b P a ^bP_a bPa,它的含义为:从a坐标系投影到b坐标系下的homo矩阵H或者投影矩阵P,都是可以的。也可以说成,将a坐标系下的点投影到b坐标系下的transformation变换矩阵。

因此, s H c {^sH_c} sHc表示从image plane图像平面投影到sensor传感器平面的投影矩阵,以此类推, c H k {^cH_k} cHk表示从camera相机坐标系投影到image plane图像平面的投影矩阵, k H o {^kH_o} kHo表示从object/ world世界坐标系投影到camera相机坐标系下的投影矩阵,也可以称之为homo矩阵。

根据表述规则,罗列出不同坐标系下的坐标点的表示方法。

  1. World/ Object coordinate system.
    S o = [ X , Y , Z ] T ,   o   f o r   o b j e c t . S_{o}=[X, Y, Z]^T,\ o \ for \ object. So=[X,Y,Z]T, o for object.
  2. Camera coordinate system.
    S k = [ k X , k Y , k Z ] T ,   k   f o r   c a m e r a . S_{k}=[{^kX}, {^kY}, {^kZ}]^T,\ k \ for \ camera. Sk=[kX,kY,kZ]T, k for camera.
  3. Image (plane) coordinate system.
    S c = [ c x , c y ] T ,   c   f o r   i m a g e   o r   p l a n e . S_c=[^cx,{^cy}]^T, \ c \ for \ image \ or \ plane. Sc=[cx,cy]T, c for image or plane.
  4. Sensor coordinate system. This has some distortion and nonlinearity from image coord to sensor coord.
    S s = [ s x , s y ] T ,   s   f o r   s e n s o r . S_s=[^sx, {^sy}]^T, \ s \ for \ sensor. Ss=[sx,sy]T, s for sensor.

II. 转换关系,Transformation.

从目标的世界坐标系3D,转换到相机坐标系3D,然后转换到图像平面坐标系2D,最后转换到传感器坐标系2D。转换的矩阵关系为:
[ s x s y 1 ] = s H c c H k k H o [ X Y Z 1 ] \left[ \begin{matrix} ^sx \\ ^sy \\ 1 \end{matrix} \right] = {^sH_c} {^cH_k} {^kH_o}\left[\begin{matrix} X\\ Y\\ Z\\ 1 \end{matrix}\right] sxsy1=sHccHkkHoXYZ1
其中,image plane和camera system的原点,在x和y方向是重合的,只是说image plane的原点坐标相较于camera origin向z轴平移了c。因此,图像平面的原点可以表示为相机平面的z轴平移。
k O c = k [ 0 , 0 , − c ] T ^kO_c={^k[0, 0, -c]^T} kOc=k[0,0,c]T
下图展示了图像平面与相机平面的原点关系。
图像平面与相机平面的原点关系图

III. From the world coord to the sensor coord.

下面分析从世界坐标系,通过一系列转换,到图像和传感器平面坐标的关系。其中,目标到相机是外参,相机与图像平面,传感器平面,是内参。
世界坐标系到传感器坐标系的转换关系
他们之间的变换关系,对应的刚体变换到投影变换等不同方式。具体如下图:
变换方式分析

3.1 Extrinsics,相机的外参

Extrinsic parameters describe the pose of the camera in the world.

3.1.1 从世界坐标系到相机坐标系

world coordinate to camera coordinate.
从世界坐标系到相机坐标系的转换是可逆的。知道了外参,就知道转换的矩阵。求逆就可以相互转换。
是目标点的3D位置与相机点的3D位置的相互关系所组成的homo矩阵。包括的目标位置和相机位置的一个平移和旋转关系。是一个刚体变换。只是旋转和平移。6个*度 X p X_p Xp为投影的目标点的世界坐标系下的3D坐标。
k X p = k H X p {^kX_p} = {^kH}X_p kXp=kHXp
其中, k H {^kH} kH矩阵为:
k H = [ R − R X o 0 T 1 ] {^kH}= \left[ \begin{matrix} R &-RX_o \\ 0^T&1 \end{matrix} \right] kH=[R0TRXo1]
X o X_o Xo为camera在世界坐标系下的坐标。通过 k H ^kH kH矩阵,将世界坐标系下的点 X p X_p Xp投影到相机坐标系下的 k X P ^kX_P kXP
下图是对上面的一个小的总结,手写的推导。
相机的不同坐标系的转换关系

3.2 Intrinsics,相机的内参

Intrinsic parameters describe the mapping of the scene in front of the camera to the pixels in the final image (sensor).
其中,可逆的部分是从图像平面到sensor平面以及传感器的偏差,这里表述为model deviation。这两部分是可逆的,都是2D与2D直接的变换。而对于相机到图像,这是一个中心投影,由3D到2D的一个变换。在这个过程中,缺少了深度信息,因此,是不可逆的变换。

3.2.1 从相机到图像平面

相机坐标系到图像平面坐标系,camera coordinate to image plane。
这里采用了相似三角形的方式,来分析相机上的一点