一、源头论文
论文:A Generic Camera Model and Calibration Method for Conventional, Wide-Angle, and Fish-Eye Lenses
二、工程化
Kannala Brandt 模型、 opencv中的fisheye::calibrate、kalibr中的 pinhole + equidistant 都是指该模型。
- opencv
- https://docs.opencv.org/4.x/db/d58/group__calib3d__fisheye.html
- kalibr
- https://github.com/ethz-asl/kalibr/wiki/supported-models
三、介绍
本论文介绍了一种可以建模传统相机和鱼眼相机的通用的内参模型(radially symmetric projection model)
- 由于镜头的制造工艺等,并不是所有的鱼眼相机都是Radially Symmetric,因此作者又额外建模了径向畸变和切向畸变(14个参数),p9 + 14 = p23
- 但在各大开源工具对该模型的复现中,一般只用p9模型,并不用p23,可能是因为如今的镜头工艺比较成熟了。
四、先说:鱼眼镜头的四种投影模型
在之前的博客【鱼眼镜头1】鱼眼镜头的四种投影模型(指导镜头的设计),中央镜头综述,说明了投影模型的重要性:为了从全向相机捕获的图像中提取有用的信息,我们需要知道光线如何从三维空间映射到二维图像平面。这就是投影模型的作用。一个准确的投影模型可以帮助我们更准确地估计场景中物体的位置、姿态和其他属性。
常见的鱼眼相机基本成像模型主要有四种,它们分别是等距投影(最广泛)、等立体角投影、体视投影、正交投影。镜头的设计基本是按照上述四种投影模型而制作的。
Equidistant模型(等距投影模型)是一种常用的鱼眼相机投影模型。在这个模型中,图像半径rd
与入射角Θ
(光线与相机光轴的夹角)之间的关系是线性的,即rd = f * Θ
,其中f
是相机的焦距。这个模型假设在图像平面上,沿各个方向上的距离都是等比例缩放的。
对于实际的鱼眼镜头来说,由于制造和设计的限制,它们不可能完全精确地按照某个特定的投影模型来设计。因此,为了更准确地描述鱼眼相机的成像过程,需要使用更复杂的模型或近似方法。为了提高提高标定的准确性:Kannala提出了一种鱼眼相机的一般多项式近似模型。这个模型使用多项式来近似描述图像半径rd
与入射角Θ
之间的关系。这种方法的优点是可以更灵活地适应不同鱼眼相机的成像特性,提高标定的准确性。
总结:使用Equidistant模型可以简化鱼眼相机的成像过程,但实际的鱼眼镜头可能无法完全遵循这个模型。为了更准确地描述鱼眼相机的成像过程,可以使用更复杂的模型或近似方法,如Kannala的多项式近似模型。
五、投影过程:3D到2D投影
Kannala 的多项式近似模型:
-
Kannala 提出了一种更灵活的模型,用多项式来近似描述 r d rd rd 和 Θ \Theta Θ 的关系。
-
公式可以写成: r d = f ⋅ ( Θ + k 1 Θ 3 + k 2 Θ 5 + ⋯ ) rd = f \cdot (\Theta + k_1 \Theta^3 + k_2 \Theta^5 + \cdots) rd=f⋅(Θ+k1Θ3+k2Θ5+⋯),其中 k 1 , k 2 k_1, k_2 k1,k2 是多项式系数。
-
奇函数和泰勒级数展开:
- Θ d \Theta_d Θd 是 Θ \Theta Θ 的奇函数,也就是说 Θ d ( − Θ ) = − Θ d ( Θ ) \Theta_d(-\Theta) = -\Theta_d(\Theta) Θd(−Θ)=−Θd(Θ)。这是因为鱼眼相机的成像过程在光轴的两侧是对称的。
- 通过泰勒级数展开, Θ d \Theta_d Θd 可以表示成 Θ \Theta Θ 的奇次多项式: Θ d = Θ + k 1 Θ 3 + k 2 Θ 5 + ⋯ \Theta_d = \Theta + k_1 \Theta^3 + k_2 \Theta^5 + \cdots Θd=Θ+k1Θ3+k2Θ5+⋯。奇次多项式在原点附近是对称的,这与鱼眼相机的成像特性相符。
Kannala-Brandt(KB)模型是一种通用的鱼眼相机标定模型,适用于大视场角(FOV)镜头的几何畸变建模。其核心思想是将3D空间点通过非线性的角度-半径映射投影到2D图像平面。以下是一个具体的3D到2D投影过程示例及步骤说明:
1. 3D点定义
假设有一个世界坐标系下的3D点 P w = [ X w , Y w , Z w ] T \mathbf{P}_w = [X_w, Y_w, Z_w]^T Pw=[Xw,Yw,Zw]T,需通过以下步骤投影到图像平面:
-
转换到相机坐标系
通过相机外参(旋转矩阵 R \mathbf{R} R 和平移向量 t \mathbf{t} t)将 P w \mathbf{P}_w P