机器视觉(三)3D模板匹配

3D的模板匹配的方法有很多,在物体识别,无序抓取等应用广泛,下面对几种3D的匹配方法进行简单测试记录。

1 可利用颜色信息的点云模板匹配

(1)plc的识别模块包括了linemod算法,针对颜色梯度信息和法向量特征进行点云匹配。具体的算法原理,可以参考另一篇笔记--2D边缘匹配。

 

 

此算法 唯一问题是模板的训练比较麻烦,因为不具有旋转不变性,所以需要自动训练很多个模板。在测试的时候,暂时只对一个模板进行了平移之后的匹配测试。还没有对一个物体的几千个点云模板自动训练研究。但是在测试当中,由于此算法在2D匹配当中有比较好的速度和效果。我相信,如果将训练工具开发好,此算法在3D当中进行匹配识别中可以达到很好的应用。

(2)利用SHOT点描述子匹配结合Hough算法聚类匹配

PCL中的识别模块有相应的代码教程http://pointclouds.org/documentation/tutorials/global_hypothesis_verification.php#global-hypothesis-verification

此算法包含以下步骤:

  • 计算点云的法向量
  • 将点云降采样,提取关键点。加快匹配速度。
  • 计算关键点的SHOT点描述子。SHOT点描述子的介绍可以参考https://www.cnblogs.com/BellaVita/p/10019409.html
  • 利用kd-tree找出目标点云中与模板点云中具有相似点特征的点对。
  • 利用hough算法对找出的点对进行聚类,分类之后就是找到的所有的目标以及各个目标与模板的转换矩阵。
  • 利用ICP配准对找到的所有目标进行配准优化,使得精度更高。

由于SHOT点描述子可以没有颜色信息,只有几何信息,所以此算法对普通的XYZ点云也可以。经过测试此算法的速度和效果都比较好。速度上SHOT点特征的计算要比下面介绍的FPFH点特征计算要快。抛开ICP优化,对于100000个点的点云进行目标查找,耗费了500多ms时间。

2 普通XYZ信息点云模板匹配

XYZ信息的点云匹配,大多采用基于表面法向量的特征去匹配。测试了以下两个方面:

(1)SAC算法结合FPFH点描述符配准以及ICP精确配准。

准确来说这种方法是配准方法,就是在一组点云中找到另一组点云相似的部分,利用相似的部分求出两组点云之间的刚性变换。 这些配准算法用在点云拼接当中比较合适。 对他们稍加修改,也可以用在物体识别当中。

SAC-IA的基本原理如下:

1) 从待配准点云P中选取n个采样点,为了尽量保证所采样的点具有不同的FPFH特征,采样点两两之间的距离应满足大于预先给定最小距离阈值d。

(2) 在目标点云Q中查找与点云P中采样点具有相似FPFH特征的一个或多个点,从这些相似点中随机选取一个点作为点云P在目标点云Q中的一一对应点。

(3) 计算对应点之间刚体变换矩阵, 然后通过求解对应点变换后的“距离误差和”函数来判断当前配准变换的性能。找出最佳的刚体变换矩阵。

SAC-IA粗匹配算法由于需要计算大量的FPFH特征,实际测试下来速度很慢。

下面是主要实现代码:

ICP则是比较常见的配准算法,实现两个点云一定范围内的配准。所以在ICP配准之前先进行粗配准。

值得注意的是:在实际应用中为了有一个很好的识别效果。在粗匹配之前要进行一系列预处理,常用的如:

下采样处理,直通滤波和聚类分割。

分割之后再去进行粗匹配,精确匹配。可能会得到比较理想的结果。

实际上,我经常把上面这些用在配准应用中,如物体完整模型的点云拼接等,因为有些物体没有三维模型可以加载,所以需要从多个角度采集数据进行拼接,形成一个完整的点云模板。

(2)Halcon中基于surface的点云匹配

Halcon中关于3D匹配的工具有很多,作为与PCL开发的对比,对下面基于surface的匹配算法进行了测试。不论速度以及准确率都非常高。在c++调用 建立模板和进行匹配的时候需要根据帮助文档多注意些细节。

解决方案指导------匹配(Matching)(1章、2章、3章) 1 第一章 简介 5 1.1 怎样使用该手册? 5 1.2 匹配是什么? 5 1.3 如何进行一般的匹配? 6 1.4 可用的方法有哪些? 6 1.5哪种方法适用于哪种情况? 7 1.5.1 匹配方法:2D与3D的比较 7 1.5.2 3D空间中3D对象和2D对象的决策 8 1.5.3 正交成像2D对象的第一个决策 10 1.5.4 基于形状的匹配VS基于相关性的匹配 11 1.5.5匹配方法的快速指南 12 第二章 总论 14 2.1 准备模板 15 2.1.1 将参考图像简化为模板图像 15 2.1.2 感兴趣区域的影响 16 2.1.2.1参照点 16 2.1.3 合成模型作为模板图像的替代品 18 2.2 模板再使用 23 2.3加快搜索速度 24 2.3.1限制搜索空间 24 2.3.2关于二次抽样 25 2.4 使用匹配结果 28 2.4.1 单个匹配方法的结果 28 2.4.2 关于转换 30 2.4.3 使用估计的二维位置和方向 33 2.4.4使用估计的二维尺度 43 2.4.5使用估计的二维单应矩阵 45 2.4.6使用估计的维姿态 47 2.4.7关于分数 49 第章 单个方法 50 3.1 基于灰度的匹配 50 3.2 基于相关性的匹配 51 3.2.1 一个例程 51 3.2.2选择模型ROI 53 3.2.3建立合适的NCC模型 53 3.2.4优化搜索过程 55 3.3 基于形状的匹配 56 3.3.1 一个例子 57 3.3.2选择模型ROI 60 3.3.3创建合适的形状模型 62 3.3.4优化搜索过程 69 3.3.5使用基于形状匹配的具体结果 80 3.3.6适应相机方向的改变 82 3.4基于组件的匹配 83 3.4.1一个例子 84 3.4.2提取初始组件 87 3.4.3创建合适的组件模型 88 3.4.4模型实例的搜索 95 3.4.5使用基于组件的匹配的具体结果 98 3.5局部形变匹配 100 3.5.1一个例子 100 3.5.2选择模型ROI 104 3.5.3建立合适的局部变形模型 104 3.5.4优化搜索过程 107 3.5.5使用局部形变匹配的具体结果 109 3.6透视变形匹配 111 3.6.1一个例子 112 3.6.2选择模型ROI 114 3.6.3创建合适的透视图变形模型 114 3.6.4优化搜索过程 118 3.6.5使用透视图变形匹配的具体结果 120 3.7 基于描述符的匹配 122 3.7.1一个例子 122 3.7.2选择模型ROI 125 3.7.3创建合适的描述符模型 125 3.7.4优化搜索过程 128 3.7.5使用基于描述符匹配的具体结果 130
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值