欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

激光雷达-相机外参联合标定通过手动选取3D-2D点利用PnP求解

程序员文章站 2022-07-12 09:52:45
...

0、写在前面

差不多快半年没有更新博客了,这里先感慨一下找工作的不容易。
这个激光雷达-相机联合标定的需求是因为我前段时间所做的项目中有一个需求,需要给点云添加对应的温度。没错,给点云加温度,从红外相机中获取到温度。


1、激光雷达->相机的坐标变换

激光雷达-相机外参联合标定通过手动选取3D-2D点利用PnP求解
什么是激光雷达到相机坐标系的变换?
激光雷达坐标系下的一个3D点(x, y, z)通过外参矩阵(R, t)转换到相机坐标系,在通过相机内参转到像素平面得到2D点(u,v)

2、怎么解这个外参矩阵

为了解这个(R, t)矩阵,我们至少需要三对匹配点,利用三对匹配点的就变成了PnP中的P3P问题。具体的原理可以参考高翔slambook中第七章中相关内容

3、怎么获取匹配点对

之前用过Autoware的Calibration ToolKit ,它可以自动识别到图像和点云中的标定板,这在小范围场景下是可行的。

如果相机和激光雷达安装的位置很高,导致标定板在视野中很小,那么此时标定板就捕获不到了。那么有没有别的方法呢?
答案是可以的,我们可以在图像和点云中自己选取匹配的点对,通过鼠标的监听方式。但这种方式带来的困难也显而易见的,我们能确定这是同一块区域,但是对区域里的具体的点的选择确实困难的,概括来说就是:

  • 确定这是匹配点
  • 鼠标点的准

4、PnP求解3D-2D问题

可以调用opencv中的PnP方法完成求解

bool solvePnP( InputArray objectPoints, InputArray imagePoints,
               InputArray cameraMatrix, InputArray distCoeffs,
               OutputArray rvec, OutputArray tvec,
               bool useExtrinsicGuess = false, int flags = SOLVEPNP_ITERATIVE );

代码我上传到了github,觉得不错的话可以star哦!
PnPCameraLiDAR

相关标签: 标定 标定