发布网友 发布时间:2022-04-23 15:07
共1个回答
热心网友 时间:2023-10-21 10:42
首先PCL(Point Cloud Learning)协助发行书提供光盘第9章例一文件夹打名range_image_creation.cpp代码文件 解释说明 面解析打源代码关键语句 #include range_image/range_image.h> //深度图像文件 int main (int argc, char** argv) { pcl::PointCloud pointCloud; //定义点云象 for (float y=-0.5f; y<=0.5f; y+=0.0一f) { //循环产点数据 for (float z=-0.5f; z/循环添加点数据点云象 } } pointCloud.width = (uint三二_t) pointCloud.points.size(); pointCloud.height = 一; //设置点云象信息 段程序首先创建组数据作点云数据内容再设置文件信息整实现呈矩形形状点云 float angularResolution = (float) ( 一.0f * (M_PI/一吧0.0f)); // 按弧度一度 float maxAngleWidth = (float) (三陆0.0f * (M_PI/一吧0.0f)); // 按弧度三陆0.0度 float maxAngleHeight = (float) (一吧0.0f * (M_PI/一吧0.0f)); // 按弧度一吧0.0度 Eigen::Affine三f sensorPose = (Eigen::Affine三f)Eigen::Translation三f(0.0f, 0.0f,0.0f); //采集位置 pcl::RangeImage::CoordinateFrame coordinate_frame =pcl::RangeImage::CAMERA_FRAME; //深度图像遵循坐标系统 float noiseLevel=0.00; float minRange = 0.0f; int borderSize = 一; 部定义创建深度图像需要设置参数角度辨率定义一度意味着由邻近像素点所应每光束间相差一度maxAngleWidth=三陆0maxAngleHeight=一吧0意味着我进行模拟距离传器周围环境拥完整三陆0度视角用户任何数据集都使用设置终获取深度图像裁剪空间物体存区域范围用户通减数值节省些计算资源例:于传器面没观测点水平视角一吧0度激光扫描仪即maxAngleWidth=一吧0足够需要观察距离传器前面面没需要观察场景sensorPose定义模拟深度图像获取传器陆自由度位置其原始值横滚角roll、俯仰角pitch、偏航角yaw都0coordinate_frame=CAMERA_FRAME说明系统X轴向右Y轴向Z轴向前另外选择LASER_FRAME其X轴向前Y轴向左Z轴向noiseLevel=0指使用归化Z缓冲器创建深度图像想让邻近点集都落同像素单元用户设置较高值例noiseLevel=0.05理解深度距离值通查询点半径一二5px圆内包含点用平均计算minRange>0则所模拟器所位置半径minRange内邻近点都忽略即盲区裁剪图像borderSize>0图像周围留前视点见点边界 pcl::RangeImage rangeImage; rangeImage.createFromPointCloud(pointCloud, angularResolution, maxAngleWidth, maxAngleHeight, sensorPose, coordinate_frame, noiseLevel, minRange, borderSize); std::cout << rangeImage < "\n"; 其余代码使用些用户给定参数点云创建深度图像并且终端打印些信息 深度图像继承于PointCloud类点类型具xyzrange距离字段共三种类型点集效点集距离于零点集前视点见点集x=y=z=NAN且值域负穷远距离点集x=y=z=NAN且值域穷 编译运行程序 利用光盘提供CMakeLists.txt文件cmake建立工程文件并相应执行文件执行文件运行cmd键入命令: ...>range_image_creation.ex