我想在相机图像{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]
有什么我想念的吗?
答案 0 :(得分:0)
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 –相机矩阵