文章目录
1. 背景描述
最近的一次项目上,需要使用到激光雷达+相机组合,那么就出现了一个绕不开的话题:传感器标定。传统的标定方法是通过人工调节相机的外参(yaw,pitch和raw)来实现点云在图像上位置校准,这种方法能行,但效率和精度都不高。
本文提出一种新方法进行验证:基于棋盘格描点完成自动标定。
2. 整体架构
如下图所示:
- 数据接收:接收相机和雷达数据
- 内参标定:拍摄一定包含不同角度标定板的图像,进行自动内参生成
- 点云投影到图像:将3D点云通过坐标系转换后投影到2D图像上,方便查看雷达中的标定板和图像上的标定板融合效果
- 标定板描点:在标定板上预选择N个点,计算标定板的质心
- 自动标定:结合点云投影到图像上的标定板的质心和图像上已经选择的N个点的质心进行自动标定
- 外参保存:将内参和外参融合在一起存储到磁盘
3. 核心理论
3.1 相机内外参
标签:prime,frac,图像,标定,像素,相机,半自动,激光雷达 From: https://blog.csdn.net/u012926548/article/details/144863463相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述。这个模型有很多种,其中最简单的称为 针孔模型。
- O-x-y-z 相机坐标系
- z 指向相机前方、x 轴向右、y 轴向下(右手系)
- O 是光心
- 空间点 P,经过小孔 O 投影到 P’
- 设物理成像平面到小孔的距离为 f(焦距)
- 根据相似三角形
Z f = − X X ′ = − Y Y ′ \frac{Z}{f}=-\frac{X}{X^\prime}=-\frac{Y}{Y^\prime} fZ=−X′X=−Y′Y
负号表示成像是倒立的。由于可以将成像面平面对称地放到相机前方,和三维空间点在坐标系地同一侧。这样可以把负号去掉:
Z f = X X ′ = Y Y ′ \frac{Z}{f}=\frac{X}{X^\prime}=\frac{Y}{Y^\prime} fZ=X′X=Y′Y
整理得到,
X ′ = f X Z Y ′ = f Y Z \begin{align*} X^{\prime}=f\frac{X}{Z} \\ Y^{\prime}=f\frac{Y}{Z} \end{align*} X′=fZXY′=fZY
这里描述的是空间关系,单位是米。但是我们最终需要获得一个个像素,还需要在平面上对成像进行采样和量化。换言之,我们需要将它再变换到像素坐标系。
像素坐标系 通常的定义方式是:原点 o ′ o^\prime o′ 位于图像的左上角,u 轴向右与 x 轴平行,v 轴向下与 y 轴平行。
像素坐标系和成像平面之间,相差了一个缩放和一个原点的平移。
设像素坐标在 u 轴上缩放了 α \alpha α,在 v 轴缩放了一个 β \beta β 倍。同时,原点平移了 [ c x , c y ] T [c_x,c_y]^T [cx,cy]T。
那么, P ′ P^{\prime} P′ 的坐标与像素坐标 [ u , v ] T [u,v]^T [u,v]T 的关系为:
u = α X ′ + c x v = β Y ′ + c y \begin{align*} u&=\alpha X^{\prime} + c_x \\ v&=\beta Y^{\prime} + c_y \end{align*} uv=αX′+cx=βY′+cy
将 α f \alpha f αf 合并为 f x f_x fx,将 β f \beta f βf 合并为 f y f_y fy,得到:
u = f x X Z + c x v = f y Y Z + c y \begin{align*} u&=f_x \frac{X}{Z} + c_x \\ v&=f_y \frac{Y}{Z} + c_y \end{align*}