AVM环视自标定算法
前言
AVM环视系统中相机参数通常是汽车出厂前在标定车间中进行的离线阶段标定。很多供应商还提供了不依赖于标定车间的汽车自标定方法。自标定指的是:汽车在马路上慢速行驶一段路,利用车道线等先验信息标定出相机的外参。
笔者在算法实现的开始阶段没有从头推导公式,而是直接使用论文中的结论公式,导致自标定出的外参矩阵与车间标定的结果(车间标定结果当作真值)总是存在一个正负号的差别。最终的拼接结果表现为图像与预想的结果存在反转、旋转等问题。笔者从头梳理了一下左右手坐标系、坐标系表征、坐标转换、欧拉角等基本原理,发现网上很多作者对这部内容都是抄来抄去文档很混乱。在实现自标定算法前,需要把这些都搞清楚。
附赠自动驾驶学习资料和量产经验:链接
在本帖中,笔者1.2.3节从基础原理讲起,最后第4节讲这些原理在自标定中的应用。
关键字:相机自标定、车道线、消失点、坐标系表征、坐标转换、欧拉角
00:17
1. 左右手坐标系
1.1 左右手坐标系判定方式
右、左手坐标系
-
右手坐标系:右手大拇指指向Z轴,其余四指握向x->y(90°而不是270°)
-
左手坐标系:左手大拇指指向Z轴,其余四指握向x->y(90°而不是270°)
1.2 旋转角正、负判定方式
方法一:
-
右手坐标系:从旋转轴上方看下去,逆时针方向为旋转正方向
-
左手坐标系:从旋转轴上方看下去,顺时针方向为旋转正方向
方法二:
-
右手坐标系:右手大拇指指向旋转轴正方向,四指握向的方向为正方向(90°而不是270°)
-
左手坐标系:左手大拇指指向旋转轴正方向,四指握向的方向为正方向(90°而不是270°)
方法二中四指握向的方向始终是x->y->z->x,即角度为90°,而不是270°。
本节的内容先当作一个先验知识,在后面自标定的实际应用中我们可以一起体会一下。
2. 坐标系表征与坐标转换
2.1 坐标系表征
- 什么是坐标系的表征
“坐标系表征”表达的物理意义用通俗的话解释就是:在A坐标系下观察B坐标系时,所看到的B坐标系的X、Y轴的方向。再通俗一点举个简单的例子:我们观察别人头部的时候,可以很容易知道这个人在看哪里,这就是因为我们获取到了对方人头坐标系的x、y、z轴在我们自己坐标系下的朝向。
可以理解为在XOY坐标系下观察xoy坐标系的坐标轴方向。
举个简单的视觉任务中的头姿例子:
如图所示,红色的XYZ坐标系为标准人头坐标系,即人头没有任何角度正朝前方的姿态。黄色的xyz为人头有一些旋转时当前姿态的坐标系。“头姿”指的就是在XYZ坐标系下xyz坐标系的表征,即在标准XYZ坐标系下观察当前人头的姿态:
2.2坐标转换
对XOY坐标系下的点(1,0)进行坐标转换也分为两种情况,对应两种不同的物理意义
- 使用2.1中的坐标系表征矩阵
显然XOY坐标系下的点(1,0)跟随坐标轴做了 旋转后,在原XOY坐标系下的坐标为 ()
- 使用2.1中的坐标系表征矩阵的逆
这种情况对应的物理意义为:XOY坐标系下的点&#