PCL中PointT类型详解
PCL中定义了⼤量的point类型,⼤多数需要⽤到的类型已经被包含在内了,如下:
1.PointXYZ------成员变量:float x,y,z;
这是最常⽤的⼀个,只包含三维坐标值,附加⼀个浮点进⾏对齐
union{
float data[4];
struct{
float x;
float y;
float z;
};
};
2.PointXYZI------成员变量:float x,y,z,intensity;
蔡可以组什么词这个是xyz三坐标加上⼀个intensity的point类型,本来这四个量定义在⼀个结构体中正好满⾜对齐,但是point经常会把data[4]元素设置为0或者1(⽤于变换),所以要将intensity和xyz分开定义,举个例⼦:两个点做点积的时候会把第四个元素设置为0.此外intensity也需要三个额外的浮点数来对齐
union{
float data[4];
struct{
float x;
float y;
float z;
};
};
union{
struct{
float intensity;
};
float data_c[4];
};
3.PointXYZRGBA------成员变量:float x,y,z;uint32_t rgba;
除了RGBA信息被包含再⼀个整数变量中,其他和PointXYZI类似
union{
float data[4];
struct{
float x;
float y;
float z;
};
};
union{
struct{
uint32_t rgba;
};
float data_c[4];
};
4.PointXYZRGB------成员变量:float x,y,z,rgb;
除了RGB信息被包含在⼀个float类型变量中,其他和PointXYZRGBA类似,RGB被压缩在⼀个浮点数中的原因是PCL早起是作为ROS的⼀部分被开发出来的
union{
float data[4];
struct{
float x;
蛇的简笔画
float y;
float z;
};
};
union{
struct{
float rgb;
};
float data_c[4];
};
5.PointXY------float x,y;
简单的⼆维x-y结构
struct{
float x;
float y;
};
6.InterestPoint------float x,y,z,strength;
除了strength表⽰关键点的强度的测量值,其他和PointXYZI类似
union{
float data[4];
struct{
float x;
float y;
float z;
};
};
union{
struct{
float strength;
};
float data_c[4];
};帮工
7.Normal------float normal[3],curvature;
跷跷板打一成语另⼀个常⽤的数据类型,Normal结构体表⽰给定点所在样本曲⾯上的法线⽅向,以及对应曲率的测量值
float normal[3];
struct{
float normal_x;
float normal_y;
float normal_z;
}
};
一字千钧union{
struct{
float curvature;
}
float data_c[4];
};
8.PointNormal------float x,y,z;float normal[3],curvature;
PointNormal储存XYZ数据的point结构体,并且包括采样点对应法线和曲率
union{
float data[4];
struct{
float x;
float y;
float z;
};
};
union{
float data_n[4];
float normal[3];
struct{
float normal_x;
float normal_y;
float normal_z;
}
};
union{
struct{
float curvature;
}
float data_c[4];
};
9.PointXYZRGBNormal------float x,y,z,rgb,normal[3],curvature; PointXYZRGBNormal储存XYZ数据和RGB颜⾊的point结构体,并且包括曲率法线和曲率
float y;
float z;
};
};
union{
float data_n[4];
float normal[3];
struct{
float normal_x;
float normal_y;
float normal_z;
}
};
union{
struct{
电动势float rgb;
float curvature;
}
float data_c[4];
};
10.PointXYZINormal------float x,y,z,intensity,normal[3],curvature; PointXYZINormal存储XYZ数据和强度值的point结构体,并且包括曲⾯法线和曲率
union{
float data[4];孕妇能吃虾吗
struct{
float x;
float y;
float z;
};
};
union{
float data_n[4];
float normal[3];
struct{
float normal_x;
float normal_y;
float normal_z;
}
};
union{
struct{
float intensity;
float curvature;
}
float data_c[4];
};
11.PointWithRange------float x,y,z,range;
PointWithRange除了Range包含所获得的视点到采样点的距离测量值之外,其他与PointXYZI类似
float y;
float z;
};
};
union{
struct{
float range;
}
float data_c[4];
};
12.PointWithViewPoint------float x,y,z,vp_x,vp_y,vp_z;
PointWithViewPoint除了vp_x,vp_y,vp_z以三维点表⽰所获得的视点之外,其他和PointXYZI类似
union{
float data[4];
struct{
float x;
无情泪
float y;
float z;
};
};
union{
struct{
float vp_x;
float vp_y;
float vp_z;
}
float data_c[4];
};
13.MomentInvariants------float j1,j2,j3;
MomentInvariants是⼀个包含采样曲⾯上⾯⽚的3个不变矩的point类型,描述⾯⽚上质量的分布情况
struct{
float j1,j2,j3;
};
14.PrincipalRadiiRSD------float r_min,r_max;
PrincipalRadiiRSD是⼀个包含曲⾯块上两个RSD半径的point类型
struct{
float r_min,r_max;
};
15.Boundary------uint8_t boundary_point;
Boundary存储⼀个点是否位于曲⾯边界上的简单point类型