1. 传统相机模型及缺陷
传统相机模型主要是基于小孔模型,物空间到像空间近似呈现相似三角关系。但是传统相机存在一些缺陷:
- 光始终沿着直线传播,难以捕捉到边沿物体;
- 同样长度的红色箭头,边沿的经过镜头成像后会变得越长,但是sensor的像面尺寸是有限的,接近边沿的物体就无法成像了。
因此小孔模型就无法适用于大广角或鱼眼相机了。因此鱼眼相机需要有专门的鱼眼相机模型。
2. 鱼眼相机模型
可以用下图所示的单位球面投影模型来近似鱼眼相机的成像过程。
- 三维世界中的空间点线性投影到球面上,虚拟的球面球心和相机坐标系的远点重合
- 单位球面上的点投影到图像平面上,这是一个非线性的过程
- 这里就包含了不同的非线性投影模型
3.四种鱼眼相机的投影(畸变)模型
3.1 等距投影模型
- 成像点的位置和入射角成正比,即
- 成像为随着入射角不断变化的同心圆
- 最大视场角可达360°
3.2 等角投影模型
- 图像不失真
- 映射关系比较复杂
3.3 正交投影模型
- 从0度到90度等差的视场角成像越来越密
- 180度以内的场景都可以模拟
3.4 体视投影模型
- 图像不失真
- 映射关系比较复杂
3.5 四种投影模型的对比
四种投影模型畸变程度由大到小:
正交投影>等角投影>等距投影>体视投影
等距投影模型便于计算,被各大工程广泛应用。
4. 鱼眼相机的KB(Kannala-Brandt)模型
基于上述四种模型,我们可以统一用如下模型表示:
上面讲的四种模型可以看出,是的奇函数,如果将其按照泰勒级数展开:
一般取前5项,即到9次方
这就是所谓的KB模型,也是opencv鱼眼标定中用的到模型。
根据该模型的成像过程如下:
首先定义:
X: 空间中的三维坐标点
Xc,Yc,Zc 相机坐标系下的空间点
R,t :旋转平移矩阵
xc,yc:图像坐标系的坐标
u,v:像素坐标系坐标
step1: 世界坐标系到相机坐标系的转换
step2: 相机坐标系到球面图像坐标系
step3: 计算角
step4: KB畸变模型进行畸变处理
step5:计算点在像素坐标系中的坐标