PCL —— (2)自帶的點雲類型PointT


@


在這里插入圖片描述

PointXYZ——成員變量: float x, y, z;

PointXYZ是使用最常見的一個點數據類型,因為它只包含三維xyz坐標信息,這三個浮點數附加一個浮點數來滿足存儲對齊,用戶可利用points[i].data[0],或者points[i].x訪問點的x坐標值。

union

{

float data[4];

struct

{

float x;

float y;

float z;

};

};

PointXYZI——成員變量: float x, y, z, intensity;

PointXYZI是一個簡單的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];

};

PointXYZRGBA——成員變量: floatx, 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];

};

PointXYZRGB——float x, y, z, rgb;

除了rgb信息被包含在一個浮點型變量中,其它和PointXYZRGB類似。rgb數據被壓縮到一個浮點數里的原因在於早期PCL是作為ROS項目的一部分來開發的,那里RGB數據是用浮點數來傳送的,PCL設計者希望所有遺留代碼會重新更改(在PCL 2.x中很可能這樣做),可能取消此數據類型。

union

{

float data[4];

struct

{

float x;

float y;

float z;

};

};

union

{

struct

{

float rgb;

};

float data_c[4];

};

PointXY——float x, y;

簡單的二維x-y point結構

struct

{

float x;

float y;

};

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

};

Normal——float normal[3],curvature ;

另一個最常用的數據類型,Normal結構體表示給定點所在樣本曲面上的法線方向,以及對應曲率的測量值(通過曲面塊特征值之間關系獲得——查看NormalEstimation類API以便獲得更多信息,后續章節有介紹),由於在PCL中對曲面法線的操作很普遍,還是用第四個元素來占位,這樣就兼容SSE和高效計算,例如,用戶訪問法向量的第一個坐標,可以通過points[i].data_n[0]或者points[i].normal[0]或者points[i].normal_x,再一次強調,曲率不能被存儲在同一個結構體中,因為它會被普通的數據操作覆蓋掉。

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

};

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

};

PointXYZRGBNormal——floatx, 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];

};

PointXYZINormal——floatx, 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];

};

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

PointWithRange除了range包含從所獲得的視點到采樣點的距離測量值之外,其它與PointXYZI類似。

union

{

float data[4];

struct

{

float x;

float y;

float z;

};

};

union

{

struct

{

float range;

};

float data_c[4];

};

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

};

MomentInvariants - float j1, j2, j3;

MomentInvariants是一個包含采樣曲面上面片的三個不變矩的point類型,描述面片上質量的分布情況。查看MomentInvariantsEstimation以獲得更多信息。

struct

{

float j1,j2,j3;

};

PrincipalRadiiRSD - float r_min, r_max;

PrincipalRadiiRSD是一個包含曲面塊上兩個RSD半徑的point類型,查看RSDEstimation以獲得更多信息。

struct

{

float r_min,r_max;

};

Boundary - uint8_t boundary_point;

Boundary存儲一個點是否位於曲面邊界上的簡單point類型,查看BoundaryEstimation以獲得更多信息。

struct

{

uint8_t boundary_point;

};

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

PrincipalCurvatures包含給定點主曲率的簡單point類型。查看PrincipalCurvaturesEstimation以獲得更多信息。

struct

{

union

{

float principal_curvature[3];

struct

{

float principal_curvature_x;

float principal_curvature_y;

float principal_curvature_z;

};

};

float pc1;

float pc2;

};

PFHSignature125 - float pfh[125];

PFHSignature125包含給定點的PFH(點特征直方圖)的簡單point類型,查看PFHEstimation以獲得更多信息。

struct

{

float histogram[125];

};

FPFHSignature33 - float fpfh[33];

FPFHSignature33包含給定點的FPFH(快速點特征直方圖)的簡單point類型,查看FPFHEstimation以獲得更多信息。

struct

{

float histogram[33];

};

VFHSignature308 - float vfh[308];

VFHSignature308包含給定點VFH(視點特征直方圖)的簡單point類型,查看VFHEstimation以獲得更多信息。

struct

{

float histogram[308];

};

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

Narf36包含給定點NARF(歸一化對齊半徑特征)的簡單point類型,查看NARFEstimation以獲得更多信息。

struct

{

float x,y,z,roll,pitch,yaw;

float descriptor[36];

};

BorderDescription - int x, y; BorderTraits traits;

BorderDescription包含給定點邊界類型的簡單point類型,看BorderEstimation以獲得更多信息。

struct

{

int x,y;

BorderTraitstraits;

};

IntensityGradient - float gradient[3];

IntensityGradient包含給定點強度的梯度point類型,查看IntensityGradientEstimation以獲得更多信息。

struct

{

union

{

float gradient[3];

struct

{

float gradient_x;

float gradient_y;

float gradient_z;

};

};

};

Histogram - float histogram[N];

Histogram用來存儲一般用途的n維直方圖。

template<int N>

struct Histogram

{

float histogram[N];

};

PointWithScale - float x, y, z, scale;

PointWithScale除了scale表示某點用於幾何操作的尺度(例如,計算最近鄰所用的球體半徑,窗口尺寸等等),其它的和PointXYZI一樣。

struct

{

union

{

float data[4];

struct

{

float x;

float y;

float z;

};

};

float scale;

};

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

PointSurfel存儲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

{

uint32_trgba;

float radius;

float confidence;

float curvature;

};

float data_c[4];

};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM