【MV】Camera Calibration Fundamentals: Image Formation
文章目录
- 相机标定——成像基本原理
- 1、相机成像
- 小孔成像
- 透镜系统
- 2、欧式空间与射影空间
- 3、相机标定
- 坐标系
- 齐次坐标
- 摄像机坐标与世界坐标之间的变换关系
- 像平面坐标与摄像机坐标之间的变换关系
- 图像坐标与像平面坐标之间的变换关系
- 三维计算机视觉
相机标定——成像基本原理
1、相机成像
成不了像,都是白色的点
如何成像?在物体和胶片之间,增加一块带有小孔的屏障
小孔成像
大光圈(曝光时间短、模糊图像)
小光圈(曝光时间增加、高亮度图像)
如何又快又清晰——透镜
透镜系统
凸透镜聚光的原理,又快又清晰
按下快门的时候,蓝色的挡板复位,光可以打到后面的 sensor 上
eyepiece / viewfinder(目镜 / 取景器)中看到的是正立的像,反射了好几次
下面左图是按下快门拍照的场景,下面右图是么有按下快门,view finder 看到的是正立缩小的像
2、欧式空间与射影空间
同侧是虚像平面(Virtual Image Plane)
物体 ↓ Virtual Image Plane ↓ Camera Center虚像平面就是为了简化针孔相机模型而人为假想放在针孔前方的一块成像平面,它不真实存在,但能让图像保持正立,使投影公式更加简单直观,因此成为计算机视觉和相机标定中的标准表示方式。
成像过程就是三维空间坐标到二维图像坐标的变换,这是一个投影过程(降维、丢失深度信息)
相机矩阵(camera projection matrix)就是建立这种三维到二维的投影关系
3、相机标定
相机标定指建立相机图像像素位置与场景点位置之间的关系,即求解相机模型的参数。
坐标系
相机模型——坐标系
点 P
在世界坐标系中的坐标( X , Y , Z ) (X,Y,Z)(X,Y,Z),
在相机坐标系中的坐标( x , y , z ) (x, y, z)(x,y,z),
在像平面坐标系中( x ′ , y ′ ) (x', y')(x′,y′),
在图像坐标系中( u , v ) (u, v)(u,v),
四个坐标系
齐次坐标
齐次坐标,
齐次坐标最大的意义是:将旋转、平移、缩放和透视投影等几何变换统一表示为矩阵乘法,从而极大地简化了计算机视觉和计算机图形学中的数学推导与计算。(把原本需要"矩阵 + 加法"才能完成的几何变换,统一变成"一次矩阵乘法"。)
“加一维,统一变换;一次矩阵,解决所有几何变换。”
为什么还要发明齐次坐标?原因只有一个:
普通坐标没办法把"平移"写成矩阵乘法。
例如:
点:
(2,3)向右移动:
5向上移动:
2结果:
(7,5)写成公式:
x ′ = x + 5 x'=x+5x′=x+5
y ′ = y + 2 y'=y+2y′=y+2
发现这里有加法,不是矩阵乘法。
例如:向右 5,向上 2
以前做不到,现在可以:
[ 1 0 5 0 1 2 0 0 1 ] \begin{bmatrix} 1 & 0 & 5 \\ 0 & 1 & 2 \\ 0 & 0 & 1 \end{bmatrix}100010521
乘:
[ 2 3 1 ] \begin{bmatrix} 2 \\ 3 \\ 1 \end{bmatrix}231
得到:
[ 7 5 1 ] \begin{bmatrix} 7 \\ 5 \\ 1 \end{bmatrix}751
成功!平移也变成矩阵乘法。这就是齐次坐标最大的意义。
摄像机坐标与世界坐标之间的变换关系
旋转 Z 轴,X,Y 轴不变
旋转 X 轴,Y,Z 轴不变
旋转 Y 轴,X,Z 轴不变
最终的旋转矩阵可以写成R = R 1 R 2 R 3 R = R_1R_2R_3R=R1R2R3,还是 3x3 矩阵
光转不行,还要平移
推导一下
[ x y z 1 ] = [ R ∣ t ] [ X Y Z 1 ] \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} = [R | t] \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix}xyz1=[R∣t]XYZ1
[ R t 0 T 1 ] [ X Y Z 1 ] = [ ( r 11 X + r 12 Y + r 13 Z ) + t x ( r 21 X + r 22 Y + r 23 Z ) + t y ( r 31 X + r 32 Y + r 33 Z ) + t z ( 0 ⋅ X + 0 ⋅ Y + 0 ⋅ Z ) + 1 ] \begin{bmatrix} R & t \\ 0^T & 1 \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix} = \begin{bmatrix} (r_{11}X + r_{12}Y + r_{13}Z) + t_x \\ (r_{21}X + r_{22}Y + r_{23}Z) + t_y \\ (r_{31}X + r_{32}Y + r_{33}Z) + t_z \\ (0 \cdot X + 0 \cdot Y + 0 \cdot Z) + 1 \end{bmatrix}[R0Tt1]XYZ1=(r11X+r12Y+r13Z)+tx(r21X+r22Y+r23Z)+ty(r31X+r32Y+r33Z)+tz(0⋅X+0⋅Y+0⋅Z)+1
简化得到:[ x y z 1 ] = [ R [ X Y Z ] + t 1 ] \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} = \begin{bmatrix} R \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} + t \\ 1 \end{bmatrix}xyz1=RXYZ+t1
这里平移就是齐次坐标的目的,把平移可以转化为矩阵相乘
像平面坐标与摄像机坐标之间的变换关系
z zz越大,离得远,y ′ y'y′越小,也即成的像也越小
根据相似三角形得到像平面y ′ y'y′与相机坐标系 (x,y,z) 的关系
同理也可以得到像平面x ′ x'x′与摄像机坐标系 (x,y,z) 的关系
OP 连线上所有点,在像平面上都是p pp
把z zz略去,就是相似关系
图像坐标与像平面坐标之间的变换关系
u uu、v vv是图像坐标系,x ′ x'x′、y ′ y'y′是像平面坐标系
f x f_xfx和f y f_yfy的单位都是像素
三维计算机视觉
三角化解决"点在哪儿",
姿态估计解决"相机在哪儿",
相机标定解决"相机长什么样",
稀疏重建解决"很多点在哪儿",
而 SfM(Structure from Motion)则把这些步骤串联起来,同时恢复相机轨迹和三维场景。
相机标定 (知道相机参数) │ ▼ 姿态估计(Pose) (知道相机在哪里) │ ▼ 三角化(Triangulation) (恢复一个点的3D坐标) │ ▼ 稀疏重建(Sparse Reconstruction) (恢复很多特征点形成稀疏点云) │ ▼ SfM(Structure from Motion) (把以上步骤串起来,同时恢复相机轨迹和场景)SfM 包含了姿态估计和三角化,稀疏重建则是三角化不断重复后的结果。
| 概念 | 对应现实中的工作 |
|---|---|
| 相机标定 | 校准测量仪器,确保尺子准确 |
| 姿态估计 | 记录每次站在什么位置、朝哪个方向测量 |
| 三角化 | 根据两个观测点计算一个建筑角点的位置 |
| 稀疏重建 | 把成千上万个角点都测出来,形成建筑骨架 |
| SfM | 完整的测绘流程:边移动边测量,最终得到测绘轨迹和建筑三维骨架 |
双目视觉 = 已知相机姿态 + 三角化;
SfM:通常只有一台相机在移动,相机姿态未知,需要先估计每张图片的姿态,再进行三角化和重建。
SfM = 未知相机姿态 + 姿态估计 + 三角化 + 重建。
相机标定负责"认识相机",姿态估计负责"定位相机",三角化负责"定位一个点",稀疏重建负责"定位很多点",而 SfM 则负责把这些步骤组织起来,仅凭多张图片恢复整个三维世界和相机运动轨迹。
