zoukankan      html  css  js  c++  java
  • 3.3PCL已有点类型介绍和增加自定义的点类型

    1、PCL中有哪些可用的PointT类型

    这些point类型都位于point_types.hpp文件中,如果用户需要自己定义类型,需要对已有类型了解。

    1)PointXYZ---成员变量:float x,y,z;

    它是最常用的一个点数据类型,只包含三维XYZ坐标信息,这三个浮点数附加上一个浮点数来满足存储对齐,可利用points[i].data[0]或者points[i].x访问点的x坐标值。

    2)、PointXYZI---成员变量:float x,y,z,intensity;

    由于对于该类型的点point大部分操作都会把data[4]元素设置成0或1(用于变换),不能让intensity与XYZ在同一结构体中,如果这样intensity的内容会被覆盖。例如两个点的点积操作,则会把data[4]设置为0。为了兼容存储对齐用3个额外的浮点数来填补intensity,虽然在存储效率上降低,但是运行效率提高了。如下

    3)PointXYZRGBA---成员变量:float x,y,z;uint32_t rgba;

    除了RGBA信息被包含在一个整型变量中,其他的和PointXYZI类似。

    4)PointXYZRGB---float x,y,z,rgb;

    这里的rgb是用一个浮点型来存储的,源于早期PCL属于ROS项目。

    5)PointXY---float x,y;

    简单的二维点,

    6)InterestPoint---float x,y,z,strength;

    strength表示关键点的强度的测量值,其他的和PointXYZI类似。

    7)Normal---float normal[3],curvature;

    8)PointNormal---float x,y,z;float normal[3],curvature;

    PointNormal是存储XYZ数据的point结构体,并且包括采样点对应法线和曲率。

    9)PointXYZRGBNormal---float x,y,z,rgb,normal[3],curvature;

    PointXYZRGBNormal存储XYZ数据和RGB颜色的point结构体,并且包含曲面法线和曲率

    10)PointXYZINormal---float x,y,z,intensity,normal[3],curvature;

    其存储XYZ数据和强度值的point结构体,并且包括曲面法线和曲率。

    11)PointWithRange---float x,y,z(union with float point[4]),range;

    其除了range包含从所获得的视点到采样点的距离测量值之外,其他与PointXYZI类似。

    12)PointWithViewpoint---float x,y,z,vp_x,vp_y,vp_z;

    其中vp_x、vp_y和vp_z以三维点表示所获得的视点,其余与PointXYZI一致

    13、MomentInvariants---float j1,j2,j3;

    14、PrincipalRadiiRSD----float r_min,r_max;

    15、Boundary---uint8_t boundary_point;

    16、PrincipalCurvatures---float principal_curvature[3],pc1,pc2;

    17、PFHSignature125---float pfh[125];

    18、FPFHSignature33---float fpfh[33];

    19、VFHSignature308---float vfh[308]

    20)Narf36---float x,y,z,roll,pitch,yaw;float descriptor[36];

    21)BorderDescription---int x,y;BorderTraits traits;

    22)IntensityGradient---float gradient[3];

    23)Histogram---float histogram[N];

    24、PointWithScale---float x,y,z,scale;

    25)PointSurfel---float x,y,z,normal[3],rgba,radius,confidence,curvature;

    2、如何在模板类中使用这些point类型

    为了使包含和链接到PCL库的用户代码编译速度提高,我们使用显示的模板实例化,最终编译链接的库包括了所有可能的模板实例---在这些组合中使PCL中已经定义的point类型所有的模板类都能够直接调用,不需要重新编译,这意味着一旦PCL编译成库,任何用户代码都不需要编译模板化代码,这样就加速了用户编译过程。这个是通过在头文件中首先声明了我们的类和方法,再在模板类实现头文件中进行实现,配置在原文家中进行显示的实例化,最后在编译链接时分别实例化。例如:

    3、如何增加新的PointT类型

  • 相关阅读:
    032 Gradle 下载的依赖jar包在哪?
    031 can't rename root module,Android Studio修改项目名称
    030 Cannot resolve symbol'R' 问题解决汇总大全
    029 Android Studio层级显示目录文件
    028 You are about to commit CRLF line separators to the Git repository.It is recommended to set the core. autocrlf Git attribute to true to avoid line separator issues If you choose Fix and Comit ,
    027 【Android基础知识】Android Studio 编译慢及 Adb connection Error:远程主机强迫关闭了一个现有的连接
    026 Android Studio 和Gradle版版本对应关系
    025 Cause: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm
    024 Android Studio上传项目到Github 最全记录
    023 解决AndroidStudio下载gradle慢的问题
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6611981.html
Copyright © 2011-2022 走看看