CS231A 相机模型笔记

自己写全部太累了,我觉得用ai把大部分知识点写上,我聚焦我觉得需要关注的内容是最高效的

1. 引言

相机是计算机视觉中的核心工具,用于记录三维世界并生成图像。本笔记主要探讨如何对相机进行建模。

2. 小孔相机模型 (Pinhole Camera Model)

2.1 基本工作原理

小孔相机模型使用一个带小孔的屏障来阻挡大多数光线,仅允许通过小孔的光线在传感器上成像,从而建立三维场景点到二维图像点的一一映射。

alt text

2.2 形式化构建

  • 图像平面 (Image/Retinal Plane):感光传感器所在平面
  • 光心 (Pinhole O):小孔位置,相机中心
  • 焦距 (Focal length f):光心到图像平面的距离
  • 虚拟图像平面:位于光心和物体之间的平面,与实际图像平面存在相似变换关系

2.3 投影公式

对于三维点 $P=\left[\begin{array}{lll}x & y & z\end{array}\right]^{T}$,其投影到图像平面的点为: \(P^{\prime}=\left[\begin{array}{ll}x^{\prime} & y^{\prime}\end{array}\right]^{T}=\left[\begin{array}{ll}f\frac{x}{z} & f\frac{y}{z}\end{array}\right]^{T}\)

2.4 孔径大小的影响

  • 小孔径:图像更清晰但更暗
  • 大孔径:图像更亮但更模糊
  • 核心问题:如何获得既清晰又明亮的图像?

3. 相机与透镜 (Cameras and Lenses)

3.1 透镜的作用

透镜通过聚焦光线解决了小孔相机的亮度与清晰度矛盾,使来自同一点的光线汇聚到传感器同一点上。

alt text

3.2 焦点与景深

  • 焦点 (Focal point):平行于光轴的光线汇聚点
  • 焦距 (Focal length):透镜中心到焦点的距离
  • 景深 (Depth of field):相机能够清晰成像的距离范围

3.3 傍轴折射模型 (Paraxial Refraction Model)

投影公式: \(P^{\prime}=\left[\begin{array}{l}x^{\prime} \\ y^{\prime}\end{array}\right]=\left[\begin{array}{c}z^{\prime}\frac{x}{z} \\ z^{\prime}\frac{y}{z}\end{array}\right]\) 其中 $z^{\prime}=f+z_{0}$(与小孔模型不同,小孔模型中 $z^{\prime}=f$)

3.4 镜头畸变 (Lens Distortion)

  • 径向畸变 (Radial distortion):由于透镜不同部位焦距不同导致
  • 枕形畸变 (Pincushion distortion):放大率随距离增加而增加
  • 桶形畸变 (Barrel distortion):放大率随距离增加而减小

4. 数字图像空间 (Going to Digital Image Space)

4.1 相机矩阵模型 (Camera Matrix Model)

4.1.1 坐标系转换

属性 Image Plane Coordinates Digital Image Coordinates
定义 成像平面上的连续物理坐标 数字图像中的离散像素坐标
原点位置 图像中心(主点) 图像左上角或左下角(常见为左上角)
单位 物理单位(如毫米 mm) 像素(pixels)
坐标轴方向 通常以图像中心为原点,x向右,y向上 通常以左上角为原点,x向右,y向下
是否连续 是(实数坐标) 否(整数坐标)
用途 用于几何建模、投影计算 用于图像存储、显示、处理

需要处理两种差异:

  1. 图像平面坐标系与数字图像坐标系的原点不同
  2. 物理测量单位(厘米)与像素单位的转换

修正后的投影公式: \(P^{\prime}=\left[\begin{array}{l}x^{\prime} \\ y^{\prime}\end{array}\right]=\left[\begin{array}{l}\alpha\frac{x}{z}+c_x \\ \beta\frac{y}{z}+c_y\end{array}\right]\) 其中:

  • $\alpha = fk$, $\beta = fl$(像素/厘米)
  • $c_x, c_y$:原点偏移量

4.1.2 齐次坐标 (Homogeneous Coordinates)

使用齐次坐标将非线性投影转换为线性变换: \(P_h^{\prime}=\left[\begin{array}{ccccc}\alpha & 0 & c_x & 0 \\ 0 & \beta & c_y & 0 \\ 0 & 0 & 1 & 0\end{array}\right] P_h\)

4.1.3 完整的相机矩阵

制造过程中很多模型不是完整的,存在skewness倾斜和distortion畸变 也就是说,图像坐标系的两个轴之间的夹角略大于或小于90度。 大多数相机是 零倾斜(zero-skew) 的,但由于传感器制造误差,有时会出现一定程度的倾斜 相机矩阵分解: \(P^{\prime}=K\left[\begin{array}{ll} I & 0\end{array}\right] P\) 其中内在参数矩阵: \(K=\left[\begin{array}{ccc}\alpha & -\alpha\cot\theta & c_x \\ 0 & \frac{\beta}{\sin\theta} & c_y \\ 0 & 0 & 1\end{array}\right]\)

内在参数(5个自由度):

  • 2个焦距参数 ($\alpha, \beta$)
  • 2个偏移参数 ($c_x, c_y$)
  • 1个 倾斜 skewness 参数 ($\theta$)

alt text 透视变换,归一化的内参矩阵

4.2 外参 (Extrinsic Parameters)

齐次坐标系的变换 2d坐标系下的平移 alt text 缩放 alt text 旋转 alt text

二维平面下的变换总的来说就是这些

alt text

由于矩阵不满足交换律,所以说顺序是固定的,先scaling再旋转再平移 对于3d的来说 alt text 平移有3个自由度 alt text 旋转要以某个轴来旋转,特定的绕着哪个轴旋转就构造对应的旋转矩阵 对于刚体来说,没有缩放,3d的是这样 有的话是[ [RS,T], [0,1] ] alt text

这里有11个自由度

alt text

将世界坐标系转换为相机坐标系,与相机本身无关: \(P=\left[\begin{array}{cc} R & T \\ 0 & 1\end{array}\right] P_w\) 完整投影模型: \(P^{\prime}=K\left[\begin{array}{ll}R & T\end{array}\right] P_{w}=M P_{w}\)

投影矩阵 M(11个自由度):

  • 5个内在参数
  • 3个旋转参数
  • 3个平移参数

5. 相机标定 (Camera Calibration)

5.1 标定原理

通过已知三维点与对应图像点的关系,求解相机内外参数。

5.2 线性求解方法

对于每个对应点 $P_i \leftrightarrow p_i$,建立方程: \(\begin{align*}u_i\left(m_3 P_i\right)-m_1 P_i&=0\\ v_i\left(m_3 P_i\right)-m_2 P_i&=0\end{align*}\) 通过SVD求解最小二乘问题: \(\begin{array}{ll}\underset{m}{\operatorname{minimize}} & \|P m\|^{2} \\ \text{subject to} & \|m\|^{2}=1\end{array}\)

5.3 参数提取

从矩阵M中分解出内外参数:

内在参数: \(\begin{align*}\rho&=\pm\frac{1}{\left\|a_{3}\right\|}\\ c_{x}&=\rho^{2}\left(a_{1}\cdot a_{3}\right)\\ c_{y}&=\rho^{2}\left(a_{2}\cdot a_{3}\right)\\ \theta&=\cos^{-1}\left(-\frac{\left(a_{1}\times a_{3}\right)\cdot\left(a_{2}\times a_{3}\right)}{\left\|a_{1}\times a_{3}\right\|\cdot\left\|a_{2}\times a_{3}\right\|}\right)\\ \alpha&=\rho^{2}\left\|a_{1}\times a_{3}\right\|\sin\theta\\ \beta&=\rho^{2}\left\|a_{2}\times a_{3}\right\|\sin\theta\end{align*}\)

外在参数: \(\begin{align*} r_1&=\frac{a_2\times a_3}{\left\|a_2\times a_3\right\|}\\ r_2&=r_3\times r_1\\ r_3&=\rho a_3\\ T&=\rho K^{-1} b\end{align*}\)

5.4 退化配置 (Degenerate Configurations)

当点共面或位于两个二次曲面交线上时,标定问题无法求解。

6. 畸变标定 (Handling Distortion in Camera Calibration)

通过非线性优化技术处理径向畸变,简化方法是利用坐标比值的线性关系。

7. 附录A:刚体变换 (Rigid Transformations)

7.1 旋转矩阵

绕各坐标轴旋转的矩阵: \(R_x(\alpha)=\left[\begin{array}{ccc}1 & 0 & 0 \\ 0 & \cos\alpha & -\sin\alpha \\ 0 & \sin\alpha & \cos\alpha\end{array}\right]\) \(R_y(\beta)=\left[\begin{array}{ccc}\cos\beta & 0 & \sin\beta \\ 0 & 1 & 0 \\ -\sin\beta & 0 & \cos\beta\end{array}\right]\) \(R_z(\gamma)=\left[\begin{array}{ccc}\cos\gamma & -\sin\gamma & 0 \\ \sin\gamma & \cos\gamma & 0 \\ 0 & 0 & 1\end{array}\right]\)

7.2 平移变换

使用齐次坐标表示平移: \(T=\left[\begin{array}{cccc}1 & 0 & 0 & t_{x} \\ 0 & 1 & 0 & t_{y} \\ 0 & 0 & 1 & t_{z} \\ 0 & 0 & 0 & 1\end{array}\right]\)

7.3 缩放变换

缩放矩阵: \(S=\left[\begin{array}{ccc}S_{x} & 0 & 0 \\ 0 & S_{y} & 0 \\ 0 & 0 & S_{z}\end{array}\right]\)

7.4 组合变换

旋转、缩放、平移的组合: \(T=\left[\begin{array}{cc} R S & t \\ 0 & 1\end{array}\right]\)

8. 附录B:其他相机模型

8.1 弱透视模型 (Weak Perspective Model)

先正交投影到参考平面,再进行透视投影: \(x^{\prime}=\frac{f^{\prime}}{z_0} x \quad y^{\prime}=\frac{f^{\prime}}{z_0} y\) 投影矩阵简化为: \(M=\left[\begin{array}{ll} A & b \\ 0 & 1\end{array}\right]\)

8.2 正交投影模型 (Orthographic Projection Model)

忽略深度信息: \(\begin{array}{l}x^{\prime}=x \\ y^{\prime}=y\end{array}\) 适用于建筑和工业设计领域。

9. 关键概念总结

概念 描述 公式
小孔投影 基本投影模型 $P^{\prime}=\left[f\frac{x}{z}, f\frac{y}{z}\right]^{T}$
齐次坐标 用于线性化投影变换 $P_h = [x, y, z, 1]^{T}$
相机矩阵 包含内在参数 $K=\left[\begin{array}{ccc}\alpha & -\alpha\cot\theta & c_x \ 0 & \frac{\beta}{\sin\theta} & c_y \ 0 & 0 & 1\end{array}\right]$
投影矩阵 完整投影模型 $M = K[R \mid T]$
标定 参数估计方法 通过对应点求解线性系统

10. 应用场景

  • 计算机视觉:三维重建、目标检测
  • 摄影测量:从图像中提取测量信息
  • 机器人技术:视觉导航、环境感知
  • 增强现实:虚拟物体与真实场景的融合



Enjoy Reading This Article?

Here are some more articles you might like to read next: