【Range Image】 创建Range Image

news/2024/11/8 22:39:08/

1 介绍

范围图像是一种将点云数据转换为二维图像的表示形式。它将点云中的每个点映射到图像中的像素,每个像素表示了点在三维空间中的距离信息。范围图像的每个像素包含了点的深度信息,可以用来表示物体的形状和几何结构。范围图像通常用于进行深度感知和三维重建等任务。

范围图像在PCL中使用 pcl::RangeImage 类型表示,它包含了范围图像的像素数据以及相关的参数和方法。范围图像可以从点云数据中创建,并可以通过可视化工具进行可视化。

2 创建Range Image代码

#include <pcl/range_image/range_image.h>#include <pcl/visualization/pcl_visualizer.h>int main ()
{pcl::PointCloud<pcl::PointXYZ>::Ptr pointCloud(new pcl::PointCloud<pcl::PointXYZ>);// Generate the data
for (float y=-0.5f; y<=0.5f; y+=0.01f) {for (float z=-0.5f; z<=0.5f; z+=0.01f) {pcl::PointXYZ point;point.x = 2.0f - y;point.y = y;point.z = z;pointCloud->push_back(point);}}pointCloud->width = pointCloud->size();pointCloud->height = 1;// We now want to create a range image from the above point cloud, with a 1deg angular resolution// 角度分辨率,以弧度表示float angularResolution = (float) (  1.0f * (M_PI/180.0f));  //   1.0 degree in radians// 范围图像的水平最大角度范围,以弧度表示float maxAngleWidth     = (float) (360.0f * (M_PI/180.0f));  // 360.0 degree in radians// 范围图像的垂直最大角度范围,以弧度表示float maxAngleHeight    = (float) (180.0f * (M_PI/180.0f));  // 180.0 degree in radians// 传感器的姿态,即传感器相对于世界坐标系的位置和方向Eigen::Affine3f sensorPose = (Eigen::Affine3f)Eigen::Translation3f(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 = 1;pcl::RangeImage rangeImage;rangeImage.createFromPointCloud(*pointCloud, angularResolution, maxAngleWidth, maxAngleHeight,sensorPose, coordinate_frame, noiseLevel, minRange, borderSize);std::cout << rangeImage << "\n";pcl::visualization::PCLVisualizer vis("cloud vis");pcl::visualization::PointCloudColorHandlerCustom<pcl::PointWithRange> color_handler(rangeImage.makeShared(), 255, 255 ,255);vis.addPointCloud<pcl::PointWithRange>(rangeImage.makeShared(), color_handler, "range_image");vis.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 4, "range_image");vis.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_REPRESENTATION, pcl::visualization::PCL_VISUALIZER_REPRESENTATION_SURFACE, "range_image");while(!vis.wasStopped()){vis.spinOnce();}
}


http://www.ppmy.cn/news/1241423.html

相关文章

宿主Linux——KVM安装Windows7系统

KVM虚拟技术 KVM(Kernel-based Virtual Machine) 是基于Linux内核的开源虚拟化技术&#xff0c;在一台物理机上可同时运行多个虚拟系统。KVM使用硬件虚拟化扩展&#xff0c;例如Intel的VT和AMD的AMD-V&#xff0c;在性能方面更加高效&#xff0c;可提供更好的计算能力和响应速…

微软 Edge 浏览器目前无法支持 avif 格式

avif 格式在微软 Edge 浏览器中还是没有办法支持。 如果你希望能够查看 avif 格式&#xff0c;那么只能通过浏览器打开&#xff0c;然后浏览器将会把这个文件格式下载到本地。 avif 格式已经在其他的浏览器上得到了广泛的支持&#xff0c;目前不支持的可能就只有 Edge 浏览器。…

YOLOv8改进 | 2023 | FocusedLinearAttention实现有效涨点

论文地址&#xff1a;官方论文地址 代码地址&#xff1a;官方代码地址 一、本文介绍 本文给大家带来的改进机制是Focused Linear Attention&#xff08;聚焦线性注意力&#xff09;是一种用于视觉Transformer模型的注意力机制(但是其也可以用在我们的YOLO系列当中从而提高检测…

nodejs+vue+python+PHP+微信小程序-书吧租阅管理系统的设计与实现-安卓-计算机毕业设计

在当今高度发达的信息中&#xff0c;信息管理改革已成为一种更加广泛和全面的趋势。为确保中国经济的持续发展&#xff0c;信息时代日益更新&#xff0c;书吧租阅管理系统仍在蓬勃发展。同时&#xff0c;随着信息社会的快速发展&#xff0c;各种管理系统面临着越来越多的数据需…

macos安装小软件 cmake

一&#xff0c;cmake下载主页 Download CMake 二&#xff0c;下载&#xff0c;解压&#xff0c;配置&#xff0c;编译&#xff0c;安装 0. 假设macos中已经存在了 clang和make工具 1. 通过网页下载最新的稳定版 cmake***.tar.gz 源代码 2. tar zxf cmake***.tar 3. cd cmake***…

Linux(7):Vim 程序编辑器

vi 基本上 vi 共分为三种模式&#xff0c;分别是【一般指令模式】、【编辑模式】与【指令列命令模式】。 这三种模式的作用分别是&#xff1a; 一般指令模式(command mode) 以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式&#xff0c;也简称为一般模式)。在这个模…

实现简单的操作服务器和客户端(下)

一、说明 描述:本教程介绍如何使用 simple_action_client 库创建斐波那契操作客户端。此示例程序创建一个操作客户端并将目标发送到操作服务器。 内容 代码代码解释编译运行操作客户端连接服务器和客户端

BUUCTF [HBNIS2018]低个头 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。来源&#xff1a; https://github.com/hebtuerror404/CTF_competition_warehouse_2018 密文&#xff1a; 下载附件&#xff0c;得到一个.txt文件。 解题思路&#xff1a; 1、低头…