由于工作需求,需要将三维雷达点云数据投影到二维平面上,以便进行后续的可视化分析或与其他2D传感器(如摄像头)的数据融合。为此,我整理并实现了完整的3D到2D投影代码,并在此记录整个过程,以备日后查阅与复用。下图展示了投影后的效果:原始的3D点云经过坐标变换与视角映射后,成功呈现在2D图像平面上,保留了关键的空间结构信息,为后续的目标检测、场景理解等任务奠定了基础。
原始点云 含强度信号转灰度图
纯绿色投影投影
增加颜色投影
该实现充分考虑了雷达坐标系与图像坐标系之间的转换关系,支持灵活调整投影参数(如俯仰角、偏航角、视场角等),具有良好的通用性和可扩展性。
1. pcl库的安装- sudo apt install libpcl-dev
复制代码 2. opencv库的安装- sudo apt-get install libopencv-dev
复制代码 3. 准备摄像机的内参标定
我使用的是棋盘标定法,用matlab做的,具体参考我的另一篇博客: https://www.cnblogs.com/cqwo/p/19179297
相机内参标定
相机内参素材
4. 相机雷达参数标定
标定参数图像
标定参数对应点云
具体步骤参数下面港大论文和公共的
参考论文:http://arxiv.org/abs/2103.01627
参考代码:https://github.com/hku-mars/livox_camera_calib
代码1():
[code]#include #include #include #include #include #include // for min_element, max_elementint main() { // 1. 读取带 intensity 的 PCD pcl: ointCloud: tr cloud(new pcl: ointCloud); if (pcl::io::loadPCDFile("your_pointcloud.pcd", *cloud) == -1) { std::cerr |