
书籍

相机成像模型与畸变
很多刚接触计算机视觉、自动驾驶的同学,都会被「相机成像模型」「畸变校正」这些词搞懵:
为什么同样的物体,拍出来会弯成弧形?鱼眼镜头为什么能拍180°?我们平时说的相机标定,到底在标什么?
相机成像模型:现实世界到图片的"翻译官"
相机成像模型,就是把真实三维世界的物体,转换成二维平面图像的数学规则。
你可以把它理解成相机的「翻译手册」,规定了"现实里的点,在图片上该出现在哪"。
我们平时用的相机,理论上都可以用针孔模型来近似,但真实镜头会带来各种"变形",所以我们还要理解畸变,甚至专门的鱼眼模型。
最基础的「针孔相机模型」:初中几何就能懂
针孔模型是所有相机模型的基础,核心原理就是我们初中学过的小孔成像 和相似三角形。
1. 核心原理:小孔成像的数学表达
想象一个带小孔的黑盒子:外面的物体发出的光线,只能通过小孔,投射到盒子背面的成像平面上,形成倒立的像。
这个过程用相似三角形就能描述:
设相机坐标系里有一个点 Pc=(Xc,Yc,Zc)P_c=(X_c,Y_c,Z_c)Pc=(Xc,Yc,Zc),成像平面上的投影点为 (x,y)(x,y)(x,y),焦距为 fff,则:
x=f⋅XcZc,y=f⋅YcZcx = f \cdot \frac{X_c}{Z_c}, \quad y = f \cdot \frac{Y_c}{Z_c}x=f⋅ZcXc,y=f⋅ZcYc
再结合前面我们讲过的「世界→相机→图像→像素」的完整流程,就能得到针孔相机的完整成像公式:
Zcuv1=K⋅Rt01⋅XwYwZw1Z_c\begin{bmatrix}u\\v\\1\end{bmatrix}=K\cdot\begin{bmatrix}R&t\\0&1\end{bmatrix}\cdot\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}Zc uv1 =K⋅R0t1⋅ XwYwZw1
其中:
- KKK 是相机内参矩阵,描述镜头的光学属性
- Rt01\begin{bmatrix}R&t\\0&1\end{bmatrix}R0t1 是相机外参矩阵,描述相机的位置和朝向

2. 为什么说它是"理想模型"?
针孔模型假设光线是直线传播的,不会被折射,也不会变形。
但现实中我们用的是带透镜的相机,光线穿过透镜时会发生折射,导致成像点和理论位置有偏差,这就是相机畸变。
真实相机的"变形":相机畸变是什么?
简单说,畸变就是镜头让照片里的物体"变歪、变弯"了,比如直线拍出来变成弧线,方形的边变成弧形。
它主要分为两类:径向畸变 和切向畸变,其中径向畸变是最主要的。
1. 径向畸变:从中心向外的"拉伸/挤压"
径向畸变是由镜头的光学形状引起的,光线离镜头中心越远,弯曲得越厉害。
它又分为两种典型情况:
- 桶形畸变:图像边缘向外膨胀,像个水桶,鱼眼镜头的畸变就是典型的桶形畸变
- 枕形畸变 :图像边缘向内收缩,像个枕头,长焦镜头容易出现这种畸变

径向畸变校正公式(小白也能看懂)
我们可以用多项式来修正径向畸变带来的误差,标准公式如下:
xcorrected=x(1+k1r2+k2r4+k3r6)x_{\text{corrected}}=x(1+k_1r^2+k_2r^4+k_3r^6)xcorrected=x(1+k1r2+k2r4+k3r6)
ycorrected=y(1+k1r2+k2r4+k3r6)y_{\text{corrected}}=y(1+k_1r^2+k_2r^4+k_3r^6)ycorrected=y(1+k1r2+k2r4+k3r6)
- (x,y)(x,y)(x,y):畸变的原始坐标
- (xcorrected,ycorrected)(x_{\text{corrected}},y_{\text{corrected}})(xcorrected,ycorrected):校正后的坐标
- rrr:点到图像中心的距离,r2=x2+y2r^2=x^2+y^2r2=x2+y2
- k1,k2,k3k_1,k_2,k_3k1,k2,k3:径向畸变系数,由相机标定得到
- 一般相机用 k1,k2k_1,k_2k1,k2 就能校正,鱼眼等大畸变镜头才需要用到 k3k_3k3
2. 切向畸变:镜头安装歪了导致的偏差
切向畸变主要是因为镜头和成像平面不平行,光线不是垂直入射的,导致成像点沿切线方向偏移。
这种畸变相对径向畸变来说影响更小,一般用两个参数 p1,p2p_1,p_2p1,p2 来校正,公式稍微复杂一点,这里就不展开了,记住它是用来修正"镜头装歪"带来的误差就行。
3. 相机标定:就是求这些参数
我们常说的「相机标定」,核心就是求出:
- 内参矩阵 KKK(焦距、主点)
- 畸变系数 k1,k2,k3,p1,p2k_1,k_2,k_3,p_1,p_2k1,k2,k3,p1,p2
标定之后,我们就能用这些参数,把相机拍出来的畸变图像,还原成针孔模型下的理想图像,让后续的目标检测、SLAM等算法正常工作。
特殊场景:鱼眼相机模型
鱼眼相机是我们生活中很常见的特殊相机,车载环视、倒车影像、安防摄像头里基本都有它的身影。

1. 鱼眼相机的特点
- 超大视角:FOV(视场角)通常大于180°,有的甚至能拍360°全景
- 低光性能好:对光线不敏感,地库、夜晚也能拍出清晰画面
- 运动模糊小:快速移动时图像不容易糊,适合车载场景
2. 鱼眼相机的成像原理
鱼眼镜头为了实现超大视角,光线经过镜头时会发生强烈折射,不再满足针孔模型的"直线传播"假设,所以需要专门的成像模型来描述。
简单来说,鱼眼相机的畸变是"设计出来的",它的镜头就是为了把180°的场景压缩到一张图里,所以边缘的变形会非常严重。

鱼眼相机的投影本质
鱼眼相机和普通针孔相机最大的区别,就是光线不再沿直线传播,而是被镜头折射后,投射到成像平面上。
我们用一个核心变量来描述这个过程:
- θ\thetaθ:入射光线和镜头光轴的夹角(入射角)
- rrr:光线在成像平面上,距离图像中心的距离
- fff:相机的焦距
不同的投影模型,就是用不同的数学公式,描述 θ\thetaθ 和 rrr 之间的映射关系。
5种投影模型
1. 透视投影(针孔模型)
投影函数 :
r=ftanθr=f\tan\thetar=ftanθ
- 原理:就是我们前面讲过的普通针孔相机模型,光线沿直线传播,成像满足相似三角形。
- 特点 :
- 能保持直线不变形,拍出来的建筑、物体边缘都是直的
- 缺点:视场角受限制,当 θ\thetaθ 接近90°时,tanθ\tan\thetatanθ 会趋近于无穷大,无法实现180°视角
- 适用场景:普通手机相机、监控摄像头
2. 体视投影(等角投影)
投影函数 :
r=2ftanθ2r=2f\tan\frac{\theta}{2}r=2ftan2θ
- 原理 :也叫等角投影,核心特点是保角性------物体的夹角在成像后保持不变。
- 特点 :
- 能保留物体的角度信息,不会让两条线的夹角变形
- 可以实现比透视投影更大的视场角
- 适用场景:早期的鱼眼相机、一些测绘类设备
3. 等距投影(鱼眼最常用)
投影函数 :
r=fθr=f\thetar=fθ
- 原理 :这是车载鱼眼相机最主流的模型,公式最简单,计算也最方便。
- 特点 :
- 成像平面上,点到中心的距离 rrr,和入射角 θ\thetaθ 成正比
- 不会出现透视投影那种边缘拉伸严重的问题,视场角可以轻松超过180°
- 适用场景:车载环视摄像头、倒车影像、大部分消费级鱼眼相机
4. 等积投影
投影函数 :
r=2fsinθ2r=2f\sin\frac{\theta}{2}r=2fsin2θ
- 原理 :核心特点是保面积性------物体在三维空间中所占的立体角,投影到二维图像上后,面积比例保持不变。
- 特点 :
- 能保证图像上的面积比例和真实世界一致
- 边缘变形比等距投影小,但计算稍复杂
- 适用场景:地图测绘、天文观测、全景相机
5. 正交投影
投影函数 :
r=fsinθr=f\sin\thetar=fsinθ
- 原理:光线平行于光轴投影,相当于从正前方"压扁"三维物体。
- 特点 :
- 视场角受限制,最大不能超过180°(θ=90°\theta=90°θ=90°时,r=fr=fr=f;θ>90°\theta>90°θ>90°时,sinθ\sin\thetasinθ会减小)
- 畸变非常大,边缘物体被严重压缩
- 适用场景:工业测量、一些特殊的光学设备
一张表看懂5种模型的区别
| 投影模型 | 核心公式 | 关键特性 | 视场角能力 | 典型应用 |
|---|---|---|---|---|
| 透视投影 | r=ftanθr=f\tan\thetar=ftanθ | 直线不变形 | 小于120° | 普通相机 |
| 体视投影 | r=2ftanθ2r=2f\tan\frac{\theta}{2}r=2ftan2θ | 角度不变形 | 约140° | 早期鱼眼 |
| 等距投影 | r=fθr=f\thetar=fθ | 距离与入射角成正比 | 可超180° | 车载鱼眼 |
| 等积投影 | r=2fsinθ2r=2f\sin\frac{\theta}{2}r=2fsin2θ | 面积比例不变 | 约180° | 测绘/天文 |
| 正交投影 | r=fsinθr=f\sin\thetar=fsinθ | 边缘畸变最大 | 不大于180° | 工业测量 |
为什么车载鱼眼用等距投影?
- 视场角够大:能轻松实现180°以上的视角,覆盖车辆周围无死角
- 计算简单 :r=fθr=f\thetar=fθ 这个公式最容易实现,实时去畸变、拼接环视图像时效率高
- 变形均匀:图像边缘不会像透视投影那样严重拉伸,拼接后的画面更自然
总结
- 针孔相机模型:相机成像的基础,用相似三角形描述"3D点→2D像素"的关系,是理想无畸变的模型。
- 相机畸变:真实镜头导致的成像偏差,主要分为径向畸变(桶形/枕形)和切向畸变,通过标定得到的系数可以校正。
- 鱼眼相机:为了实现超大视角,采用特殊的折射成像,畸变是其固有特性,需要专门的模型处理。
- 相机标定:求出内参和畸变系数,让相机从"真实镜头"变回"理想针孔模型",是所有视觉算法的前提。
