第4章:相机内参回顾:针孔相机模型、内参矩阵与畸变参数
各位同学,欢迎来到第四章。在正式开始外参标定之前,我强烈建议大家先回头把内参这块儿夯实了。为什么?因为外参标定的精度,很大程度上依赖于内参是否准确。说白了,内参是相机的“出厂设置”,外参是相机在空间中的“站位”。设置错了,站位再准也没用。
这一章,我们就来系统地回顾一下相机内参的三大核心:针孔模型、内参矩阵、畸变参数。嗯,都是老朋友了,但咱们得用工程师的视角再审视一遍。
4.1 针孔相机模型:最朴素的成像原理
针孔模型,说白了就是初中物理课上那个小孔成像实验。光线穿过一个小孔,在后面的屏幕上形成一个倒立的像。相机镜头虽然复杂,但核心思想没变——把三维世界投影到二维平面上。
数学上怎么描述?就是相似三角形。假设世界中的一个点 P(X, Y, Z),经过相机光心投影到成像平面上的点 p(x, y)。根据相似关系:
x = f * (X / Z)
y = f * (Y / Z)
这里的 f 是焦距,单位是毫米。但注意,这只是理想情况。实际相机里,成像平面是传感器(CCD/CMOS),我们最终拿到的是像素坐标,不是物理毫米坐标。所以需要引入内参矩阵来做单位转换。
4.2 内参矩阵 K:从物理世界到像素坐标
内参矩阵 K 是一个 3x3 的上三角矩阵,它描述了相机坐标系下的3D点如何映射到图像像素坐标系。它的标准形式是:
K = [ fx 0 cx
0 fy cy
0 0 1 ]
我来拆解一下每个参数的含义:
| 参数 | 含义 | 单位 | 典型值范围 |
|---|---|---|---|
| fx | x方向上的像素焦距(f / dx) | 像素 | 几百 ~ 几千 |
| fy | y方向上的像素焦距(f / dy) | 像素 | 几百 ~ 几千 |
| cx | 主点x坐标(光心在像素坐标系中的位置) | 像素 | 图像宽度的一半左右 |
| cy | 主点y坐标 | 像素 | 图像高度的一半左右 |
有了内参矩阵,完整的投影公式就是:
s * [u, v, 1]^T = K * [X_c, Y_c, Z_c, 1]^T
其中 s 是尺度因子(其实就是 Z_c),[u, v] 是像素坐标,[X_c, Y_c, Z_c] 是相机坐标系下的3D点。
4.3 畸变参数:现实总是不完美的
针孔模型是理想情况。但实际镜头有透镜,透镜就会引入畸变。畸变主要分两类:径向畸变和切向畸变。
4.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^2 = x^2 + y^2,是像素点到光心的距离平方。k3 通常只在鱼眼镜头等大畸变情况下才需要。
4.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]
切向畸变的数值通常比径向畸变小一个数量级。但别小看它,在精密测量中,这点偏差足以让三维重建结果偏掉几毫米。
4.4 完整的畸变模型
把径向和切向畸变合在一起,就是 OpenCV 里常用的畸变模型。畸变参数向量通常表示为:
dist_coeffs = [k1, k2, p1, p2, k3]
标定流程大致是:
- 拍摄多张不同角度的棋盘格图像
- 提取角点坐标
- 用最小二乘法同时优化内参和畸变参数
- 得到 K 矩阵和 dist_coeffs
4.5 为什么外参标定前必须知道内参?
这个问题很关键。外参标定的本质,是求解相机坐标系相对于世界坐标系的旋转和平移。但在这个过程中,我们需要把图像上的 2D 像素点反投影到 3D 空间。这个反投影过程,必须用到内参矩阵和畸变参数。
具体来说:
- 先用畸变参数对图像做去畸变处理
- 再用内参矩阵把像素坐标转换到归一化平面坐标
- 最后结合外参,建立 3D-2D 的对应关系
如果内参不准,就好比你用一把没校准的尺子去量东西。量出来的外参,自然也是错的。所以,我个人的习惯是:每次做外参标定之前,先花 10 分钟重新标定一下内参。尤其是相机被拆装过、或者环境温度变化大的时候,内参可能会漂移。
- 针孔模型是基础,用相似三角形描述投影
- 内参矩阵 K 包含 fx, fy, cx, cy,完成物理到像素的转换
- 畸变参数包括径向 (k1,k2,k3) 和切向 (p1,p2),修正镜头缺陷
- 内参不准 → 外参必歪,这是铁律
好了,内参这块儿我们就回顾到这里。下一章,我们将正式进入外参标定的核心内容。到时候你会发现,今天打下的内参基础,会派上大用场。