| Developers' Corner

利用两项实用功能改善基于表面的匹配

您是否曾遇到过物体因为极小的损坏(例如物体上的小钻孔)而失去对称性的情况?您基于表面的 3D 匹配是否因此而无法找到正确的方向?

不必担心!自 HALCON 20.05 开始,我们引入了参数“train_self_similar_poses”,能帮助您更好地生成自相似、姿态近乎对称的物体的表面模型。

让我们来看看这一参数的出色表现:

如果没有这个参数,所有的物体都会被找到,但却无法保证方向的正确性。启用此参数后,所有方向均可得到校正。

其用法很简单,您只需在 create_surface_model() 中将参数“train_self_similar_poses”设置为“true”,并在 find_surface_model() 中与“use_self_similar_poses”一起使用。如果您对自动计算出的相似姿态不满意,还可以通过 set_surface_model_param(SurfaceModelID,“self_similar_poses”,SelfSimilarPoses)设置自己的相似姿态。您还可以使用支持此功能的其他算子,例如 fine_surface_model_pose()、refine_surface_model_pose_image()、find_surface_model_image()。

更多参数用法,请参考我们的标准示例 find_surface_model_self_similar_poses.hdev!

基于视图的分数

使用基于表面的匹配时,只有一小部分 3D 对象模型可见,这会导致分数较低,从而给MinScore 的设置带来困难。

在 HALCON 19.11 中,我们引入了参数train_view_based,该参数能通过基于表面的匹配和细化来训练基于视图的分数计算。在计算基于视图的分数时,使用的是匹配点与来自某个视点的最大潜在可见模型点数的比率,而不是匹配点与总点数的比率。

在基于视图的分数未激活的情况下,匹配分数很低,因为不可见的模型点数也会被算入最终匹配分数。启用基于视图的分数后,分数会更高,真实度也更高。为了使用基于视图的分数计算,在创建基于表面的模型时,需要将train_view_based设置为true,并在 find_surface_model() 中将use_view_based设置为true。如果在创建模型时禁用了train_view_based,则默认值为false,否则为true

关于此参数的更多用法,请参考标准示例 find_surface_model_view_based_score.hdev!

来自开发人员专区的更多内容

MVTec 专家定期分享使用 MVTec HALCON MERLIC 处理不同视觉任务的技巧和诀窍。欢迎访问 MVTec 网站上的开发人员专区,随时就您感兴趣的主题提出问题或发表建议。

阅读更多文章和技巧