激光雷达坐标系、相机坐标系与到图像坐标系之间的转换

激光雷达坐标系、相机坐标系与到图像坐标系之间的转换
本文解决的问题是经联合标定后,点云和图像之间坐标相互转换的问题。需要的先验知识和条件:相机标定;激光雷达和相机联合标定;相机内参、相机和雷达外参。

把雷达坐标系看成世界坐标系,则世界坐标系中任意一点W,其世界坐标为:
在这里插入图片描述
其世界齐次坐标为:
在这里插入图片描述
又假设雷达坐标系到相机坐标系的转换矩阵为E,(该矩阵即是外参矩阵,取其英文Extrinsic首字母E),假设其逆矩阵为:
在这里插入图片描述
设点W在相机坐标系下的坐标表示为:
在这里插入图片描述
其在相机坐标系下的齐次坐标为:
在这里插入图片描述
则有:
在这里插入图片描述
即:
在这里插入图片描述
为消除齐次坐标、简化计算,特令:
在这里插入图片描述
则公式变为:
在这里插入图片描述
设相机坐标系到图像坐标系的转换矩阵K(K矩阵即是相机内参矩阵)及其逆矩阵K^(-1)为:
在这里插入图片描述
设点W在图像坐标系下的坐标为:
在这里插入图片描述
其在图像坐标系下的齐次坐标为:
在这里插入图片描述
则有:
在这里插入图片描述
即有:
在这里插入图片描述
带入上式即可得相机坐标Ximg_h和雷达坐标的互相转换公式:
在这里插入图片描述
其中,代表对矩阵M取前三行前三列。

由上式可知:已知世界(雷达)坐标,可以将其精确地投影到图像坐标上。但要使相机坐标能准确转换到雷达坐标,必须知道Zcam,这是点离相机平面的距离,由于仅从图像中无法得知Zcam,所以仅用图像无法把图像上的点投影到世界(雷达)坐标系。

  • 35
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
云数据从激光雷达坐标系转换图像坐标系,需要进行以下步骤: 1. 读取云数据,包括的三维坐标和颜色信息。 2. 将云数据从激光雷达坐标系转换相机坐标系。这个过程需要知道激光雷达相机之间的外参和内参矩阵。 3. 根据相机内参矩阵将云数据从相机坐标系转换到像素坐标系。 4. 将像素坐标系中的投影到图像平面上,得到其在图像上的坐标。 下面是一个示例代码,假设云数据已经存储在一个名为`point_cloud`的numpy数组中。这里使用的是OpenCV库进行相机坐标系到像素坐标系转换。 ```python import numpy as np import cv2 # 相机内参矩阵 K = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]]) # 相机外参矩阵 R = np.array([[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]]) t = np.array([tx, ty, tz]) # 将云数据从激光雷达坐标系转换相机坐标系 point_cloud_in_camera = R.dot(point_cloud.T) + t.reshape(3, 1) # 将云数据从相机坐标系转换到像素坐标系 point_cloud_in_pixel = K.dot(point_cloud_in_camera) point_cloud_in_pixel[0, :] /= point_cloud_in_pixel[2, :] point_cloud_in_pixel[1, :] /= point_cloud_in_pixel[2, :] # 投影到图像平面上 img_point_cloud = np.zeros((img_height, img_width, 3), dtype=np.uint8) for i in range(num_points): if point_cloud_in_pixel[0, i] > 0 and point_cloud_in_pixel[0, i] < img_width and point_cloud_in_pixel[1, i] > 0 and point_cloud_in_pixel[1, i] < img_height: x = int(point_cloud_in_pixel[0, i]) y = int(point_cloud_in_pixel[1, i]) color = point_cloud_color[i] img_point_cloud[y, x, :] = color ``` 其中,`fx`、`fy`、`cx`、`cy`是相机内参矩阵的参数,`r11`、`r12`、`r13`、`r21`、`r22`、`r23`、`r31`、`r32`、`r33`、`tx`、`ty`、`tz`是相机外参矩阵的参数,`img_height`和`img_width`是图像的高度和宽度,`num_points`是云数据中的数,`point_cloud_color`是云数据中的颜色信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值