自动驾驶环视感知:鱼眼相机模型
前言
在诸多智能驾驶研发当中,各类模型算法已成为重中之重,但实际量产中却又受到各种软硬件约束,成为算法工程师跨越落地的拦路虎。在环视近场感知任务中,由于鱼眼镜头成像的特殊性,使得在透视图成熟的算法模型难以直接拿来使用,成为了解决环视近场感知算法研发的第一关。本文将全面地对当前鱼眼相机的各类成像模型展开介绍,并进行归纳总结,希望对智能驾驶领域的从业者和爱好者有所帮助。
附赠自动驾驶最全的学习资料和量产经验:链接
背景
鱼眼相机的发展其实已有一段相当长的历史。工程师Wood在1908年就制造出第一个鱼眼相机并命名为“Fisheye”,而近期在环视感知比较热门的开源数据集WoodScape和SynWoodScape正是以这位工程师命名纪念。随后工程师Bond制作出第一款半球形镜的鱼眼镜头,开启了鱼眼镜头的光学设计发展之路。随着鱼眼镜头的演进,拥有大视场的鱼眼相机开始在多个场景获得使用,包括智能驾驶、监控、机器人等领域。最近,基于鱼眼成像的几个主流计算机视觉任务开始获得学术界的关注,包括物体检测、语义分割、赃污检测、移动检测等等。其中,对于智能驾驶场景,深度估计是一项非常重要的任务,但却很少在鱼眼成像中被研究。相比标准镜头,鱼眼镜头能够获得更大的视场角,一般都超过180度;那么仅需要较少的相机就能够覆盖完整的360度环视视场。
部署在高级车型的环视鱼眼相机已有十来年,功能从中控屏幕的可视化到为自动泊车提供感知能力。由于存在较大的径向畸变,一般的畸变矫正算法都会带来额外的损失,包括视场角减小以及周边存在的重采样扭曲缺陷,尤其是近距离物体会存在较大的外观畸变。正因如此,尽管鱼眼镜头在使用度上非常广泛,但感知难度很大,相比针孔相机所获的关注反而更少。
在真实的智能驾驶开发中,一般会选用各类不同视场角的相机以便来处理不同的场景。其中,前视相机往往采用100度的水平视场角,而为了获得环视感知能力则会搭配190度水平视场角的鱼眼相机。如下图所示,大视场角的鱼眼镜头成像会存在较大的畸变,其中主要是径向畸变以及小量的切向畸变。
图1 采用鱼眼相机拍摄的一处巴黎教堂
鱼眼镜头投影模型
截止当前,已有多种模型被用于描述鱼眼镜头成像,大致可以做一下几类。成像面模型,鱼眼镜头投影被定义为针孔相机投影的偏离;射线偏离模型,研究投影中心的光线投射角度变化;几何模型,通过研究在不同成像面上对鱼眼畸变建模。
对于标准相机而言,一般都采用针孔模型来建模;光线会在距离投影中心固定距离的单个平面进行交互。针对标准镜头,所有的畸变模型基本都在对光线接触点径向偏移来建模(一般切向畸变较弱)。几何畸变矫正算法则是通过建模来计算真实相机和理想针孔相机的偏离。
不同的是,鱼眼相机由于缺少统一的几何建模,反而在视觉感知任务中更为复杂。目前存在大量的成像模型用来描述鱼眼投影以及径向畸变。接下来将重点解析不同成像模型,尤其是近期比较热门的模型;同时也对各个模型之间的演化关系进行梳理。
专有名词及符号
由于视场角大于180度,因此投影不能再用平面来描述,从而改进成三维空间,其成像函数:
因此,也很难从图像逆投影回到三维空间,但通过定义一个中间单位球面,则其逆投影函数:
整个成像几何示意图如下图所示,
图2 鱼眼成像点与单位球体点的几何关系示意图
经典几何模型
针孔相机模型
对于视场角小于120度的镜头,往往采用Brown-Conrady模型来对径向和切向畸变进行建模。在相机坐标系下,针孔相机模型如下:
最后的畸变计算公式如下,
等距投影
如下图所示,等距投影模型下,成像面的坐标有单位球中入射角对应的弧长决定:
图3 等距和立体鱼眼投影模型
立体投影
如图3右图所示,成像平面沿着Z轴与单位球有一个切点;从立体视觉角度来分析,切点的对极点则形成了二次投影,其投影公式如下所示:
正交投影
如图4左侧所示,正交投影的定义如下:
扩展正交投影
扩展正交投影模型是在正交模型基础上,不再约束投影平面与单位投影球正切,而是引入了偏移量,因此投影公式变为:
代数模型
多项式模型
用来描述非鱼眼相机的Brown-Conrady模型采用了奇次多项式来对径向畸变进行建模。为了考虑鱼眼镜头畸变, Polynomial Fisheye Transform (PFET) 被广泛使用;两者之间最大不同在于PFET同时采用奇偶次多项式。其中, Kannala-Brandt已集成进入OpenCV库中。
除式模型
除式模型在实际工程中获得了比较大的青睐,仅通过一个参数变量就可以将直线建模成圆环,其公式如下:
几何模型
视场角模型
统一相机模型UCM
统一相机模型UCM一开始被用于建模折反式相机,之后又被引入对鱼眼相机的建模。整个投影几何可分为两步,第一步为将三维空间点投影到单一球体中,接着投影到一个针孔相机模型中。UCM投影可以建模如下,
增强统一相机模型
通过采用椭圆投影替换球形投影,增强UCM能获得更高的精度,其公式如下:
双球模型
在UCM模型基础上,通过引入第二个球形投影可以产生更复杂的建模
各模型间关系
通用透视投影及鱼眼模型
通用相机模型UCM是一类通用的球形垂直透视透射模型,同样立体和正交投影也属于这一类。下图4为一个经典的通用垂直透射投影,其映射公式如下:
从该公式可以看出,UCM、增强UCM以及双球模型都可以认为是立体相机模型的推广;甚至可以说UCM、增强UCM、双球、除式以及立体模型都输入通用透射模型。
图4 通用投射模型
如下图5总结了各类鱼眼模型与通用透射模型的关系。其中除式模型并没有放入其中,主要是因为它最初的设计并非几何投影模型。另外,增强UCM并不只局限于椭圆,还包括双曲线体、抛物面等等。下图也可以作为研发人员在给定场景选型的工具,可以根据特殊应用选择更加适配的模型,也可以拓展一些通用模型来解决具体问题。
图5 各类鱼眼模型与通用透射模型中间的关系总结。双实线表示模型之间为等价关系,单实线表示模型之间为泛化或特殊化关系。
鱼眼镜头的映射过程
通过鱼眼镜头,一个三维空间点会被映射成像平面的像素点,这个过程比较复杂,大致分为以下几步:
-
相机坐标系下三维空间坐标点被映射成一个归一化矢量;
-
计算沿着光轴的入射角
-
根据径向函数计算成像平面的半径
-
计算像素点位置
-
根据步骤3决定是否应用额外的畸变矫正方法
总结
本文差不多罗列20多种鱼眼相机模型,通过分析可以发现,诸多几何模型之间存在非常强的关联关系,至少有7种模型都可以归为通用透射投影模型。除此之外,通过公式分析,还发现近期一些鱼眼投影模型在数学上其实是等价于经典鱼眼投影模型,例如几十年前提出的立体和等距模型。之外,根据图5还能预见椭圆体通用透射模型和双球模型能够被统一起来。期望透过本文,能给相关从业者和工程师提供一个选型指引,能根据具体应用场景选择合适的相机模型。