LiDAR到相机图像融合

时间:2019-04-12 14:54:49

标签: matlab opencv camera fusion lidar

我想在相机图像{X,Y,Z,1}上融合LiDAR {u,v}点,为此我们需要LiDAR点,相机矩阵(K),失真系数(D),位置相机和LiDAR(x,y,z)的旋转,相机和LiDAR(w+xi+yj+zk)的旋转。涉及三个坐标系。车轴坐标系(X:向前,Y:向左,Z:向上),激光雷达坐标(X:向右,Y:向前,{ {1}}:向上)和相机坐标系(Z:向右,X:向下,Y:向前)。我尝试了以下方法,但这些要点没有正确融合。所有点都被错误绘制。

坐标系:

对于给定的摄像机和LiDAR旋转和位置,我们使用以下公式计算平移。

Z

然后将相对旋转和平移计算为流量

t_lidar     = R_lidar  * Position_lidar^T
t_camera    = R_camera  *Position_camera^T

然后,最终的转换矩阵和LiDAR点R_relative = R_camera^T * R_lidar t_relative = t_lidar - t_camera 与图像帧[X,Y,Z,1]之间的点转换由下式给出:

[u,v,1]

有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

直接使用opencv projectpoint

https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#projectpoints

enter image description here

C ++:void projectPoints(InputArray objectPoints,InputArray rvec,InputArray tvec,InputArray cameraMatrix,InputArray distCoeffs,OutputArray imagePoints,OutputArray jacobian = noArray(),double AspectRatio = 0)

objectPoints –对象点的数组,3xN / Nx3 1通道或1xN / Nx1 3通道(或vector),其中N是视图中的点数。

rvec –旋转向量。有关详细信息,请参见Rodrigues()。

tvec –翻译向量。

cameraMatrix –相机矩阵