【Range Image】 创建Range Image

news/2024/7/21 3:44:43 标签: 计算机视觉, 人工智能, 图像处理

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.niftyadmin.cn/n/5214132.html

相关文章

【【linux C 编程记述 之 VIM的用法讲述】】

linux C 编程记述 之 VIM的用法讲述 我们所说的编写代码包括两部分&#xff1a;代码编写和编译&#xff0c;在Windows下可以使用Visual Studio来完成这两部&#xff0c;可以在 Visual Studio 下编写代码然后直接点击编译就可以了。但是在 Linux 下这两部分是分开的&#xff0c…

音频——S/PDIF

文章目录 BMC 编码字帧(sub-frame)格式帧(frame)格式参考S/PDIF 是 SONY 和 Philips 公司共同规定的数字信号传输规范,其实就是在 AES/EBU 上进行改动的家用版本。IEC60958 的标准规范囊括了以上两个规范。spdif 采用了双相符号编码(BMC),是将时钟信号和数据信号混合在一起…

树的序列化与反序列化

1 序列化与反序列化 二叉树的序列化与反序列化 1.1 实现思路 方式一&#xff1a;前序遍历 通过前序遍历方式实现二叉树的序列化将结果存入队列中要注意空节点也要存null 方式二&#xff1a;层序遍历 层序遍历也是用队列实现注意从左到右&#xff0c;遇到空节点存null 1.2 …

LeetCode Hot100 114.二叉树展开为链表

题目&#xff1a; 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…

java基于springboot公益帮学网站 新闻发布系统的设计与实现vue

以Java为开发平台&#xff0c;综合利用Java Web开发技术、数据库技术等&#xff0c;开发出公益帮学网站。用户使用版块&#xff1a;可以选择注册并登录&#xff0c;可以浏览信息、可以网上互动、发布文章、内容推荐等。后台管理员管理版块&#xff1a;以管理员身份登录网站后台…

VBA_MF系列技术资料1-227

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于定…

SpringBoot——配置及原理

优质博文&#xff1a;IT-BLOG-CN 一、Spring Boot全局配置文件 application.properties与application.yml配置文件的作用&#xff1a;可以覆盖SpringBoot配置的默认值。 ◀ YML&#xff08;is not a Markup Language&#xff1a;不仅仅是一个标记语言&#xff09;&#xff1…

3.3.3 linux内核位图bit操作知多少( bitmap, bitops, bitmask, bit find)

文章目录 前言1 位bit2 位操作bitops定义实现arm64的实现arm的实现示例3 bitfind定义示例1示例2bitmap定义使用宏BITS_TO_LONGS直接定义使用宏DECLARE_BITMAP接口示例bitmask定义示例