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类型


3.3PCL已有点类型介绍和增加自定义的点类型的更多相关文章
- PCL已有点类型介绍和增加自定义的点类型
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=265 本小节不仅解释如何增加你自己的PointT点类型,也介绍了PCL中的模 ...
- HTTP协议的8种请求类型介绍
HTTP协议的8种请求类型介绍 转自:http://www.cnblogs.com/liangxiaofeng/p/5798607.html HTTP协议的8种请求类型介绍 HTTP协议中共定义了八种 ...
- WebKit Web Inspector增加覆盖率分析和类型推断功能
WebKit中的Web Inspector(Web检查器)主要用于查看页面源代码.实时DOM层次结构.脚本调试.数据收集等,日前增加了两个十分有用的新功能:覆盖率分析和类型推断.覆盖率分析工具能够可视 ...
- Go语言学习(四)经常使用类型介绍
1.布尔类型 var v1 bool v1 = true; v2 := (1==2) // v2也会被推导为bool类型 2.整型 类 型 长度(字节) 值 范 围 int8 1 128 ~ 12 ...
- Mysql 修改数据库,mysql修改表类型,Mysql增加表字段,Mysql删除表字段,Mysql修改字段名,Mysql修改字段排列顺序,Mysql修改表名
对于已经创建好的表,尤其是已经有大量数据的表,如果需要对表做一些结构上的改变,我们可以先将表删除(drop),然后再按照新的表定义重建表.这样做没有问题,但是必然要做一些额外的工作,比如数据的重新加载 ...
- jquery mobile常用的data-role类型介绍
转自原文 jquery mobile常用的data-role类型介绍 data-role参数表: page 页面容器,其内部的mobile元素将会继承这个容器上所设置的属性 header ...
- Typescript项目注意点和基本类型介绍
从typescript源文件到执行的过程 执行者 步骤 说明 TSC 1. TypeScript Source -> TypeScript AST TSC将ts文件转为TS AST(abstra ...
- HTTP 协议的 8 种请求类型介绍
HTTP 协议的 8 种请求类型介绍 HTTP 协议中共定义了八种方法或者叫“动作”来表明对 Request-URI 指定的资源的不同操作方式,具体介绍如下: OPTIONS:返回服务器针对特定资源所 ...
- Android Testing学习01 介绍 测试测什么 测试的类型
Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...
随机推荐
- New Concept English three (53)
30w/m 56errors The Scandinavian countries are much admired all over the world for their enlightened ...
- Image Pyramid
今天我们介绍图像处理邻域中比较常用的一种方法,image pyramid, 也叫图像金字塔.就是将图像进行一层一层的下采样,图像金字塔是为了构建图像的多尺度,让模型能够更好的适应图像的尺度变化,图像金 ...
- web.xml & web-fragment.xml (Servlet 2.3, 2.4, 2.5 + 3.0)模板
转自:http://jlcon.iteye.com/blog/890964 web.xml v2.3 <?xml version="1.0" encoding="I ...
- PLSQL Developer 攻略
.Net程序员学用Oracle系列(18):PLSQL Developer 攻略 1.功能说明及使用技巧 1.1.对象浏览器 1.2.SQL 窗口 1.3.测试窗口 1.4.命令窗口 1.5.图表 ...
- DIV横向排列_CSS如何让多个div盒子并排同行显示
如何让多个div盒子并排同行div横向排列显示呢? 我们先设置3个div盒子对象,什么css样式都不设置看看效果.代码如下: 三个div盒子均独占一行显示 div盒子本身默认样式属性是独占一行,而解决 ...
- ICanPay介绍
ICanPay介绍 ICanPay是一个支持多商户多种支付方式的跨平台网关处理类库,使用ICanPay可以简化订单的创建.查询.退款和接收网关返回的支付通知等操作. 目前支持的支付网关有:支付宝(Al ...
- java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
java.lang.Object ....|__java.util.Date ..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time ...
- JVM插码之四:Java动态代理机制的对比(JDK 和CGLIB,Javassist,ASM)
一.class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中.这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码.JVM虚拟机读取字节码文件, ...
- Python多进程-进程锁
多进程虽然不允许多个进程同时修改同一份数据,但是多进程也有锁,为了在屏幕上打印的时候不出现两个进程同时执行的显示错误 # -*- coding:utf-8 -*- __author__ = " ...
- Ubuntu下设置VNCServer
Ubuntu下设置VNCServer Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作.服 ...