点云图像融合(点云着色)——基于PCL、OpenCV和kitti数据集

本文介绍了一种在C/C++中利用PCL、OpenCV库和Kitti数据集进行点云图像融合的方法,通过图像像素值为点云着色。步骤包括数据读入、变换矩阵计算、坐标变换和点云显示,最终实现了点云数据与图像数据的融合。


前言

一种图像数据与激光雷达点云数据融合的c/c++方法实现,使用图像像素值给对应的点云着色。基于PCL点云库、OpenCV库、kitti数据集。


一、准备

1)运行环境:Ubuntu16.04(18.04也可)

2)安装OpenCV库;

3)安装PCL库;

4)kitti数据集,中的1组png图像及对应的bin点云文件,及坐标变换说明txt文件;

5)bin2pcd的app,用于把kitti数据集的bin点云文件转换成pcd文件。
参考:ubuntu16.04下用pcl库将点云bin文件转成pcd文件

二、点云图像融合(点云着色)

1. 数据读入

使用OpenCV读入png图像文件;使用PCL读入对应的pcd点云文件;

//图像读入
Mat img = imread(“000005.png”);
//点云读入
pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr(new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::io::loadPCDFile (“5.pcd”, *point_cloud_ptr);

png文件
pcd文件

2. 变换矩阵准备

根据kitti数据集采集时标定的坐标转换公式,来计算由点云坐标中的点x(x, y, z, 1)到图像坐标中的y(u, v, 1)的变换:
在这里插入图片描述
其中,T为坐标变换旋转平移矩阵;
R(0)为各摄像头到摄像头0的修正矩阵;
P为各摄像头的内参矩阵;

在工程计算时需对各矩阵进行行列扩展:
点云图像坐标变换
各矩阵的元素值在kitti数据集的对应的calib/文件夹下:
calib文件中的变换矩阵元素
提前计算出P * R * T,用于下一步的坐标变换:

Mat trans = Mat(3,4,CV_32FC1);	
trans = P2 * R0_rect * Tr_velo_
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值