Halcon 基于表面的点云配准

主要包含两个算子create_surface_model和find_surface_model。

create_surface_model

create_surface_model( : : ObjectModel3DRelSamplingDistanceGenParamNameGenParamValue : SurfaceModelID)

概述

创建一个surface的模型,来为后面的匹配做准备。该算子输入 xyz_to_object_model_3d或者read_object_model_3d得到的对象。这个算子非常重要,它可以决定后续的匹配是基于表面、边缘还是视角,不同的方法对应不同的要求,比如如果要计算2D/3D的边缘匹配结果来提升精度,则必须要求模型的点法向量向内,并且模型必须包含三角形或多边形网格

参数:

RelSamplingDistance

第一次采样间距设置,这个值是相对值,相对于当前3D点云模型的凸包直径,越小代表着得到的点数多。

GenParamName

   model_invert_normals

     是否需要将点云模型的法向量取反,主要是针对于那些从CAD或者其他画图软件得到的3D模型,这些模型可能会与从硬件取得的点云法向量不同。

pose_ref_rel_sampling_distance

   第二次采样间距设置,这个值是相对值,相对于当前3D点云模型的凸包直径,越小代表着得到的点数多。

  feat_step_size_rel

将3D点云模型的点对距离属性离散化,值也是相对于3D点云模型的凸包的直径。

feat_angle_resolution

将3D点云模型的点对角度属性离散化,值也是相对于360°来细化的。也就是说如果设置为30,那么就会把角度分为12个等级。

 train_3d_edges

是否使用3D边缘属性来提升匹配精度。使用这个参数的时候需要模型包含网格和OpenGL。

个人理解:

      两个采样参数会得到两个较小的点云模型,这两个模型第一个用来提取特征的,特征包括点对距离,点对角度,选择性附加边缘,使用这些特征去搜索。第二个点云用来求变换关系的。

find_surface_model

find_surface_model( : : SurfaceModelIDObjectModel3DRelSamplingDistanceKeyPointFractionMinScore,ReturnResultHandleGenParamNameGenParamValue : PoseScoreSurfaceMatchingResultID)

概述

查找最佳匹配位姿。分了三个步骤:首先近似匹配,找到大概的位姿;第二步稀疏匹配,提升匹配精度;第三步稠密匹配,找到个更精确的位姿。

参数:

RelSamplingDistance

第一次采样间距设置,这个值是相对值,相对于当前3D点云模型的凸包直径,越小代表着得到的点数多。

KeyPointFraction

采样关键点,这个值是相对值,相对于当前3D点云模型的凸包直径,越小代表着得到的点数多。

MinScore

得分阈值。

GenParamName(第一步)   

num_matches

     搜索的最大数量。

max_overlap_dist_rel

   最大重叠距离。相对值

  max_overlap_dist_abs

最大重叠距离。绝对值

scene_normal_computation

是否将法向量作为条件来搜索

3d_edges

使用边缘,输入边缘点云模型。

3d_edge_min_amplitude_rel

    如果没有单独输入边缘模型,就会自动提取边缘,这个参数为提取边缘模型是使用的最小振幅,相对值。

3d_edge_min_amplitude_abs

    如果没有单独输入边缘模型,就会自动提取边缘,这个参数为提取边缘模型是使用的最小振幅,绝对值。

GenParamName(第二步)

sparse_pose_refinement

    是否启用第二步,稀疏姿态优化模型。

score_type

    略。

pose_ref_use_scene_normals

    是否使用法向量来优化姿态。

GenParamName(第三步)

dense_pose_refinement

    是否启用第三步,密集姿态优化模型。

score_type

    略。

pose_ref_num_steps

    密集姿态优化迭代次数。

pose_ref_sub_sampling

    密集姿态优化时采样距离。

pose_ref_dist_threshold_rel

    密集姿态优化距离阈值,决定迭代是否收敛,相对值。

pose_ref_dist_threshold_abs

    密集姿态优化距离阈值,决定迭代是否收敛,绝对值。

pose_ref_scoring_dist_rel

pose_ref_scoring_dist_abs

    将距离计入得分。

score_type

    略。

pose_ref_use_scene_normals

    使用法向量优化姿态。

pose_ref_dist_threshold_edges_rel

pose_ref_dist_threshold_edges_abs

    密集姿态优化边缘距离阈值,决定迭代是否收敛。

pose_ref_scoring_dist_edges_rel

pose_ref_scoring_dist_edges_abs

    将边缘距离计入得分。

个人理解:

      第一步主要是搜索相似的模型,并求以一个大致的变换姿态。

      第二步将第一步找到的所有模型进行姿态优化,这个时候使用的是采样后的模型来优化的。

      第三步将第二步通过得分筛选得到的模型继续进行优化,这个时候会使用所有的点模型,但是第三步会有一个独有的采样参数来控制效率。所谓的优化就是求变换矩阵,将得到的变换矩阵用于变换,求变换后的结果,判断是否在预期范围。这是一个迭代过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值