1、标定基础与相机模型

相机标定,说白了就是搞清楚相机到底是怎么「看」世界的。我刚开始接触这个领域时,总觉得标定就是拍几张棋盘格照片跑个脚本完事。直到有一次项目里标定结果总是不对,才逼着我回头把相机模型彻底啃了一遍。嗯,这一章我们就从最基础的成像原理讲起。

1.1 相机成像原理:从三维世界到二维照片

相机成像的本质,是把三维空间中的点映射到二维图像平面上。这个过程涉及三个坐标系:世界坐标系、相机坐标系和图像坐标系。我个人习惯把这三个坐标系想象成「物体在哪」→「相机怎么看」→「底片怎么记录」。

具体来说,一个三维点 Pw 要经过以下变换才能变成像素坐标 (u, v):

  1. 刚体变换:从世界坐标系转到相机坐标系(旋转 + 平移)
  2. 透视投影:从相机坐标系转到图像物理坐标系(针孔模型)
  3. 仿射变换:从物理坐标转到像素坐标(缩放 + 偏移)

核心公式(齐次坐标形式):

s * [u, v, 1]^T = K * [R | t] * [X, Y, Z, 1]^T

其中 K 是内参矩阵,[R | t] 是外参矩阵,s 是尺度因子。

1.2 针孔模型:最朴素的成像模型

针孔模型是相机模型的基础。它假设光线通过一个小孔后,在后面的成像平面上形成倒立的像。你想想看,这其实就是一个简单的相似三角形关系。

数学上,针孔模型可以表示为:

x = f * (X / Z)
y = f * (Y / Z)

其中 (X, Y, Z) 是相机坐标系下的三维点,(x, y) 是图像物理坐标,f 是焦距。

我的经验:实际相机很少是完美针孔。镜头有厚度、有折射,所以我们需要用更复杂的模型来逼近真实成像。但针孔模型是所有标定算法的起点,理解它比背公式更重要。

1.3 畸变模型:为什么直线会变弯?

实际镜头不是完美的针孔,光线经过镜头时会发生折射和偏移,导致图像变形。这就是畸变。畸变主要分两类:径向畸变和切向畸变。

1.3.1 径向畸变

径向畸变是光线在镜头边缘弯曲造成的。离光轴越远,畸变越明显。它有两种表现形式:

  • 桶形畸变:图像向外膨胀,常见于广角镜头
  • 枕形畸变:图像向内收缩,常见于长焦镜头

数学模型(通常用前三个系数 k1, k2, k3 描述):

x_distorted = x * (1 + k1*r^2 + k2*r^4 + k3*r^6)
y_distorted = y * (1 + k1*r^2 + k2*r^4 + k3*r^6)

其中 r 是像素到光轴中心的距离。

1.3.2 切向畸变

切向畸变是镜头与成像平面不平行造成的。说白了就是镜头装歪了。用两个参数 p1, p2 描述:

x_distorted = x + [2*p1*x*y + p2*(r^2 + 2*x^2)]
y_distorted = y + [p1*(r^2 + 2*y^2) + 2*p2*x*y]

我曾经踩过的坑:有一次标定鱼眼镜头,我只用了 k1, k2 两个径向畸变参数,结果标定出来的图像边缘还是弯的。后来加上 k3 才解决问题。对于大畸变镜头,一定要用 3 个径向参数。

1.4 标定的核心目标与数学本质

标定的核心目标,就是求解相机的内参(焦距、主点、畸变系数)和外参(旋转、平移)。数学本质是一个非线性最小二乘优化问题。

具体来说,标定要做三件事:

目标 数学表达 物理意义
求解内参矩阵 K fx, fy, cx, cy 焦距和主点位置
求解畸变系数 k1, k2, k3, p1, p2 镜头畸变程度
求解外参 [R | t] 3×3 旋转矩阵 + 3×1 平移向量 相机在世界坐标系中的位姿

优化目标是最小化重投影误差:

min Σ || p_observed - p_projected(K, R, t, dist_coeffs, P_w) ||^2

说白了,就是让「根据模型算出来的像素位置」和「实际拍到的像素位置」尽可能接近。

数学本质一句话:标定是一个从 2D-3D 对应点中,通过非线性优化反推相机参数的过程。你提供的对应点越多、分布越均匀,结果越准。

1.5 知识体系总览

下面这张图把本章的核心逻辑串起来了。我建议你把它当作标定的「地图」,以后遇到问题先回来看这张图。

标定基础与相机模型知识体系 标定基础与相机模型知识体系 相机成像原理 针孔模型 畸变模型 坐标系变换 径向畸变 切向畸变 标定核心目标:求解内参 + 外参 + 畸变系数 数学本质:非线性最小二乘优化(重投影误差最小化) 提示:标定精度取决于 2D-3D 对应点的数量、分布和测量精度

我的建议:学标定不要一上来就调 OpenCV 的 calibrateCamera。先拿一张棋盘格,手动算一次单应性矩阵,再理解重投影误差是怎么来的。这个过程会让你对相机模型有「手感」。

好了,这一章我们把标定的地基打好了。从成像原理到针孔模型,从畸变模型到标定的数学本质,每一步都是后面实操的基础。记住:标定不是玄学,是数学。你理解得越深,调参时就越有底气。