在这里插入图片描述

书籍

在这里插入图片描述

鱼眼相机主流模型

在自动驾驶、机器人视觉、全景监控与手机超广角影像领域,鱼眼相机凭借120°–200°超大视场(FOV) 优势成为核心传感器。

但鱼眼镜头存在极强的非线性“桶形畸变”,标准针孔模型(RadTan)完全失效,必须采用专用鱼眼投影模型完成标定、去畸变与三维重建。


为什么鱼眼不能用标准针孔模型?

标准针孔模型(RadTan)基于小孔透视投影,假设光线沿直线传播,仅适用于FOV<120°的小畸变场景。

而鱼眼镜头为实现超大视场,采用球面投影设计,边缘光线严重弯折,呈现“边缘拉伸、中心压缩”的桶形畸变,此时:

  • 直线在图像中会弯曲
  • 透视关系完全失效
  • RadTan模型(k1/k2/p1/p2)拟合误差极大,甚至无法收敛

因此,鱼眼相机必须用基于球面/广义球面的投影模型


主流鱼眼模型详解(核心)

1. KB模型(Kannala-Brandt,OpenCV官方鱼眼模型)

原理

等距投影+4阶径向多项式,核心是入射角θ与成像半径rd成正比,无切向畸变,专为120°–180°鱼眼设计。
rd=f⋅(θ+k1θ3+k2θ5+k3θ7+k4θ9)r_d = f \cdot (\theta + k_1\theta^3 + k_2\theta^5 + k_3\theta^7 + k_4\theta^9)rd=f(θ+k1θ3+k2θ5+k3θ7+k4θ9)

  • θ:入射光线与光轴夹角(0°–90°)
  • rd:归一化平面上的径向距离
参数(共8个)
  • 内参:fx, fy, cx, cy
  • 畸变:k1, k2, k3, k4(仅径向,无切向p1/p2)
优缺点
  • ✅ 优势:OpenCV原生支持(fisheye::calibrate)、标定快、鲁棒性强、工业界最常用、适合车载/监控鱼眼
  • ❌ 劣势:FOV>180°时精度下降、无法建模折反射全向相机
适用场景
  • 手机超广角(120°–150°)
  • 车载环视鱼眼(150°–180°)
  • 工业监控鱼眼(≤180°)
  • OpenCV项目首选

2. MEI模型(Mei全向模型,含ξ参数)

原理

球面投影+径向切向畸变,在针孔模型基础上增加球面偏移参数ξ,统一建模鱼眼+折反射全向相机(如360°镜面相机)。

  • 3D点先投影到单位球面,再通过ξ投影到归一化平面
  • ξ=0 → 退化为标准针孔;ξ=1 → 纯鱼眼;ξ>1 → 折反射相机
参数(共9个)
  • 内参:fx, fy, cx, cy
  • 畸变:k1, k2, p1, p2(径向+切向)
  • 球面参数:ξ(核心,区分鱼眼/全向)
优缺点
  • ✅ 优势:通用最强、支持180°+全向相机、SLAM(VINS-Fusion)标配、可建模折反射系统
  • ❌ 劣势:参数多、标定易过拟合、OpenCV无原生支持(需自定义优化)
适用场景
  • 高端鱼眼(180°–200°)
  • 折反射360°全景相机
  • SLAM/VIO系统(如VINS-Fusion)
  • 学术高精度标定

3. UCM模型(Unified Camera Model,统一相机模型)

原理

单参数球面投影,MEI模型的简化版,用α控制投影球面形状,平衡精度与速度。
xu=xz+ξ⋅r,r=x2+y2+z2x_u = \frac{x}{z + \xi \cdot r}, \quad r = \sqrt{x^2 + y^2 + z^2}xu=z+ξrx,r=x2+y2+z2

  • α∈[0,1]:α=0→针孔;α=1→鱼眼;0<α<1→超广角
参数(共5个)
  • 内参:fx, fy, cx, cy
  • 球面参数:α(唯一畸变相关参数)
优缺点
  • ✅ 优势:参数最少、计算极快、适合实时系统、Google ARCore采用、手机超广角常用
  • ❌ 劣势:精度有限、大畸变(>170°)拟合差、无切向畸变补偿
适用场景
  • 手机超广角(120°–150°)
  • AR/VR实时定位
  • 低算力嵌入式设备(如无人机)

4. EUCM模型(Enhanced Unified Camera Model,增强统一模型)

原理

双参数广义球面投影,UCM的升级,用α+β两个参数建模椭球面投影,兼顾精度与速度。

  • 比UCM多一个β参数,能更好拟合非理想鱼眼镜头的畸变
参数(共6个)
  • 内参:fx, fy, cx, cy
  • 球面参数:α, β
优缺点
  • ✅ 优势:精度>UCM、速度>MEI、SLAM(ORB-SLAM3)支持、适合150°–180°鱼眼
  • ❌ 劣势:OpenCV无原生支持、需依赖第三方库(如Camodocal)
适用场景
  • 中高端鱼眼(150°–180°)
  • 高精度SLAM(ORB-SLAM3)
  • 自动驾驶感知(兼顾精度与实时性)

5. DS模型(Double Sphere,双球面模型,2018年后主流)

原理

双单位球面投影,当前精度最高、鲁棒性最强的鱼眼模型,用ξ+α两个参数建模两级球面投影,完美拟合180°+极端畸变。

  • 3D点先投影到第一个球面,再映射到第二个球面,最后投影到图像平面
参数(共6个)
  • 内参:fx, fy, cx, cy
  • 球面参数:ξ, α
优缺点
  • ✅ 优势:当前最优精度、支持200°+鱼眼、鲁棒性强、Basalt/Camodocal等最新SLAM首选
  • ❌ 劣势:计算复杂度略高、OpenCV无原生支持、需自定义实现
适用场景
  • 极端鱼眼(180°–200°)
  • 自动驾驶高端环视系统
  • 最新SLAM算法(Basalt)
  • 高精度三维重建

五大模型核心对比(一眼选型)

模型 适用FOV 参数总数 核心参数 精度 速度 OpenCV支持 典型用途
KB 120°–180° 8 k1~k4 ✅ 原生 车载/监控鱼眼、OpenCV项目
MEI 120°–200° 9 ξ+k1/k2/p1/p2 ❌ 自定义 SLAM、折反射全向相机
UCM 100°–150° 5 α 极快 ❌ 自定义 手机超广角、AR/VR
EUCM 120°–180° 6 α+β 中高 ❌ 第三方 ORB-SLAM3、自动驾驶
DS 150°–200° 6 ξ+α 最高 ❌ 自定义 高端鱼眼、最新SLAM

项目选型终极建议

  1. OpenCV+普通鱼眼(≤180°) → 选KB模型(原生支持、稳定高效)
  2. SLAM/VIO(VINS-Fusion) → 选MEI模型(通用强、支持全向相机)
  3. 手机超广角/AR(低算力) → 选UCM模型(参数少、实时性强)
  4. 高精度SLAM(ORB-SLAM3) → 选EUCM模型(精度速度平衡)
  5. 极端鱼眼(>180°)/最新SLAM → 选DS模型(当前最高精度)

总结

鱼眼相机模型的演进,本质是**从“简化拟合”到“精准建模”**的过程:KB是工业界“实用标杆”,MEI是“通用王者”,UCM是“实时首选”,EUCM是“平衡之选”,DS是“精度天花板”。

实际项目中,优先根据FOV范围、算力预算、算法依赖、工具链支持选择模型,避免盲目追求高精度而忽略实时性与稳定性。

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐