namespace pcl
{
enum SacModel
{
SACMODEL_PLANE,
SACMODEL_LINE,
SACMODEL_CIRCLE2D,
SACMODEL_CIRCLE3D,
SACMODEL_SPHERE,
SACMODEL_CYLINDER,
SACMODEL_CONE,
SACMODEL_TORUS,
SACMODEL_PARALLEL_LINE,
SACMODEL_PERPENDICULAR_PLANE,
SACMODEL_PARALLEL_LINES,
SACMODEL_NORMAL_PLANE,
SACMODEL_NORMAL_SPHERE,
SACMODEL_REGISTRATION,
SACMODEL_REGISTRATION_2D,
SACMODEL_PARALLEL_PLANE,
SACMODEL_NORMAL_PARALLEL_PLANE,
SACMODEL_STICK,
SACMODEL_ELLIPSE3D
};
}
在PCL(Point Cloud Library)的pcl::SacModel枚举中,定义了多种几何模型,用于样本一致性算法(如RANSAC)从点云中拟合特定形状。以下是各模型的区别及其应用场景:
1. 基础几何模型
SACMODEL_PLANE
定义:三维平面模型(方程:ax+by+cz+d=0)。
应用:检测平面结构(如墙面、地面、桌面等)。
最小点数:3个非共线点。
SACMODEL_LINE
定义:三维直线模型(由一点和方向向量定义)。
应用:检测管道、边缘或线状物体。
最小点数:2个点。
SACMODEL_CIRCLE2D
定义:二维圆模型(在特定投影平面上,如XY平面)。
应用:适用于投影到二维平面的圆形结构(如地面上的圆形标记)。
参数:圆心 (x,y) 和半径r。
最小点数:3个点。
SACMODEL_CIRCLE3D
定义:三维空间中的圆(通过圆心、法向量和半径定义)。
应用:检测三维空间中的圆环(如机械零件中的孔洞)。
最小点数:3个点。
2. 三维复杂形状
SACMODEL_SPHERE
定义:球体模型(由中心 (x,y,z) 和半径 r 定义)。
应用:检测球形物体(如球体容器、灯具)。
最小点数:4个点。
SACMODEL_CYLINDER
定义:圆柱体模型(由轴线方向、中心点和半径定义)。
应用:检测管道、柱状结构。
依赖:通常需要点云法线(使用SAC_SEGMENTATION时)。
最小点数:5-7个点。
SACMODEL_CONE
定义:圆锥模型(由顶点、轴线方向和半角定义)。
应用:检测圆锥形物体(如交通锥、锥形工具)。
最小点数:4个点。
SACMODEL_TORUS
定义:三维圆环面模型(由主半径、管半径和中心定义)。
应用:检测环形物体(如轮胎、机械密封圈)。
最小点数:6个点。
SACMODEL_ELLIPSE3D
定义:三维椭圆模型(需中心、主轴、次轴等参数)。
应用:复杂曲线形状检测(如椭圆形机械零件)。
最小点数:5个点。
3. 带约束的几何模型
SACMODEL_NORMAL_PLANE
定义:平面模型,同时约束点法线方向与平面法线一致。
应用:精确检测平面(如点云带有可靠法线信息时)。
示例:剔除倾斜平面,仅保留与法线方向严格对齐的平面。
SACMODEL_NORMAL_SPHERE
定义:球体模型,约束点法线指向球心。
应用:精确检测球体(需法线信息)。
示例:区分球体和其他类球形点云。
SACMODEL_PARALLEL_PLANE
定义:与指定参考平面平行的平面。
应用:检测多层平行结构(如楼梯台阶、书架隔板)。
参数:需提供参考平面法向量。
SACMODEL_NORMAL_PARALLEL_PLANE
定义:平面模型,同时满足与参考平面平行且点法线对齐。
应用:强约束下的平面检测(如工业零件对齐)。
SACMODEL_PERPENDICULAR_PLANE
定义:与指定方向垂直的平面。
应用:检测垂直于某方向的平面(如垂直于重力方向的水平面)。
4. 多目标与配准模型
SACMODEL_PARALLEL_LINE
定义:与指定参考直线平行的直线。
应用:检测平行线结构(如铁轨、电缆)。
参数:需输入参考直线方向。
SACMODEL_PARALLEL_LINES
定义:同时检测多条平行直线(可能为复数形式)。
应用:批量检测平行线(如栅栏、百叶窗)。
SACMODEL_REGISTRATION / SACMODEL_REGISTRATION_2D
定义:用于点云配准(对齐)的模型。
应用:计算两片点云之间的刚体变换(3D或2D)。
原理:通过匹配对应点估计旋转和平移矩阵。
5. 特殊模型
SACMODEL_STICK
定义:棒状模型(细长圆柱体,可能指定长度和半径)。
应用:检测细长物体(如树枝、钢筋)。
参数:可能包含长度约束。
关键区别总结
模型 | 维度 | 依赖信息 | 典型应用场景 |
---|---|---|---|
PLANE | 3D | 无/法线(可选) | 墙面、地面检测 |
LINE | 3D | 无 | 管道、边缘提取 |
CIRCLE2D vs CIRCLE3D | 2D/3D | 投影平面/三维空间 | 地面标记 vs 三维孔洞 |
CYLINDER vs CONE | 3D | 法线 | 管道 vs 锥形物体 |
NORMAL_* | 3D | 法线 | 高精度形状检测(需法线信息) |
PARALLEL_* | 3D | 参考方向/平面 | 结构化环境中的平行结构 |
选择建议
简单形状:优先使用基础模型(如PLANE, LINE)。
复杂形状:使用SPHERE, CYLINDER等,确保点云密度足够。
法线约束:若点云包含法线,使用NORMAL_PLANE等提高精度。
结构化场景:利用PARALLEL_*或PERPENDICULAR_*检测规则排列的物体。
通过合理选择模型,可以高效地从点云中提取目标几何结构。