因此我们可以得出一个结论:我们通常说的相机坐标系之间的坐标转换矩阵 R ,实际上是相机坐标系表征矩阵的逆。即对于如图AB这两个相机,将某点 P 的坐标从A坐标系转换到B坐标系的坐标转换矩阵,实际上等于A相机坐标系下B相机坐标系的表征矩阵的逆。这个结论对于各种视觉任务的理解非常重要。后面我们再说“坐标转换”说的就是这第二种情况。
相机绕Z轴旋转与2.1节很像,为了更好地推导数学公式,我们先从上图这个角度来看相机坐标系。图中Z轴方向为垂直于XY平面朝外,先脑补一下这个坐标系是不是和前面3.1中的坐标系是一模一样的(肯定是一样的啊,只不过从哪个角度来观察相机坐标系是不同的),XYZ相机坐标系绕找Z轴旋转了 roll 角度转换到了xyz坐标系,根据第1章的内容不难知道相机坐标系是一种右手系,且根据1.2中的结论可知上图中的旋转角 roll 为正。进一步地,根据2.1节中坐标系表征的结论,在XYZ坐标系下xoy坐标系的表征如下,式中 r 表示roll角
相机绕y轴旋转(yaw)
上图依然是从某个角度看的相机坐标系,其中Y轴为垂直于XOZ平面朝里。根据右手坐标系定理可知图中相机坐标系XYZ绕着Y轴旋转到xyz坐标系,这个方向的旋转角 yaw 为正。进一步地,在原始XYZ相机坐标系下观察旋转后的xyz坐标系的表征如下,其中 y 表示yaw角
相机绕x轴旋转(pitch)
上图中相机坐标系XYZ绕X轴旋转pitch角,其中X轴为垂直与YOZ平面朝外,按照右手原则上图中的pitch为正。进一步地,在原始XYZ坐标系下观察xyz坐标系的表征如下,其中 p 表示pitch角。
3.3 欧拉角与坐标变换
上一节中讨论的是欧拉角与坐标系表征之间关系的问题,更多地是用在头姿任务中。在很多视觉任务中,我们需要知道的是:当坐标系做了某种旋转之后,同一个点在前后两个坐标系下的映射关系。第2章中我们得到了结论:我们通常说的相机坐标系之间的坐标转换矩阵 R ,实际上是相机坐标系表征矩阵的逆相机绕z轴旋转(roll)
基于消失点标定外参的方法是通过相机模型推导的,式中 (X,Y,Z,1)为道路坐标系下某一点的齐次坐标,通过外参 (R,t)转换到相机坐标系,然后通过相机内参 K 转移到图像坐标系下。我们要做的就是计算外参 R 。
在我们AVM自标定的应用中,要标定的相机外参主要是俯仰角pitch,一般情况下yaw和roll很小。道路坐标系可以理解为朝向正前方,而我们的相机坐标系有一个俯仰角pitch,以一定角度向下倾斜。我们已经知道消失点对应的三维坐标点在无穷远处,即 Z 为正无穷,且根据4.2中消失点计算的方法可以求解出消失点的二维坐标。因此我们可以通过上述相机模型+消失点二维图像坐标+消失点三维坐标的Z为无穷大这些先验构建起约束关系,推导如下:
那么问题来了,我们得到了旋转矩阵的最后一列 r 有什么用呢?这就又要使用到第3章中的欧拉角知识。首先我们要确定,当前的问题是坐标转换(求解将某点的坐标从道路坐标系转换到相机坐标系的 R ),而不是坐标系表征,因此用到的是第三章表格中的第二行矩阵(这一点必须要明确,否则在算法实现的时候总是差一个正负号,或者你看到最终投影的结果反转之类的,这也是本贴为什么花了前三个章节分别讲了左右手坐标系、坐标系转换、坐标系表征、欧拉角这些东西)。相机坐标系与道路坐标系的转换关系可以理解成相机坐标系先绕x轴旋转某个pitch角度,再绕y轴旋转某个yaw角度,最后绕z轴旋转某个roll角度;也可以理解成先绕x轴旋转某个pitch角,再绕z轴旋转某个roll角,最后绕y轴旋转。一共有 =321=6 中不同的顺序组合。假设我们确定了坐标转换矩阵 R ,那么可以求解出6中不同的欧拉角,就是因为旋转轴的组合顺序不同。实际上我们在基于消失点进行相机外参标定时用的时如下组合:
上式的物理意义是:相机先绕Z轴旋转roll翻滚角,然后绕X旋转pitch俯仰角,最后绕Y旋转航偏角,需要注意的是坐标转换矩阵的连乘顺序为左乘。即假设 将点 p 的坐标从a坐标系转换到b坐标系得到 (即 =p ), 将点 的坐标从b坐标系转换到c坐标系(即 =),那么点 p 从a坐标系转换到c坐标系可表示为:
实际上roll、yaw、pitch的六种组合式中,每一种组合式的结果 R 必然有一列是非常简洁的,而在4.3节中我们根据消失点深度Z是无穷的+消失点图像坐标+相机内参这三个先验信息可以计算出 R 矩阵中第三列向量,因此我们在基于消失点计算外参的算法中构造这个 R 的时候,选取的是如上式的这种组合方式。yaw pitch的计算:
最近的工作中越来越意识到算法底层原理的重要性,就算是调参也要弄清楚算法的逻辑,更不用说像自标定这种没有现成的API需要自己一点一点堆砌的东西。本文中基于消失点的自标定只是一个糙版demo,目前还只能标定出yaw和pitch默认roll是0,外参矩阵中的t也是使用标定车间的标定结果,还有很多东西需要完善。比如车道线检测中的保护逻辑,标定出前后相机外参后需要在全局做优化等等。最后推荐一篇论文:《Automatic Calibration of an Around View Monitor System Exploiting Lane Markings》有些思路可以借鉴一下。ToDo List: