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结构体表示给定点所在样本曲面上的法线方向,以及对应曲率的测量值

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];
};

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结构体,并且包括曲率法线和曲率

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

union{
    float data[4];
    struct{
        float x;
        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类型

struct{
    uint8_t boundary_point;
};

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

PrincipalCurvatures包含给定点主曲率的简单point类型

struct{
    union{
        float principal_curvature[3];
        struct{
            float principal_curvature_x;
            float principal_curvature_y;
            float principal_curvature_z;
        };
    };
    float pc1;
    float pc2;
};

17.PFHSignaturel125------float pfh[125];

PFHSignaturel125包含给定点的PFH的简单point类型

struct{
    float histogram[125];
}

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

FPFHSignature33包含给定点的FPFH的简单point类型

struct{
    float histogram[33];
}

19.VFHSignature308------float vfh[308];

VFHSignature308包含给定点VFH的简单point类型

struct{
    float histogram[308];
}

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

Narf36包含给定点NARF的简单point类型

struct{
    float x,y,z,roll,pitch,yaw
    float descriptor[36];
}
发布了54 篇原创文章 · 获赞 80 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41685265/article/details/104448675
今日推荐