写在前面:从第五章开始就写一写自己的论文里的CT-LineMod算法,考虑从相关的算法原理以及设计思路出发解释原理。关于前一章已经得到的物体6D位姿,可以结合第五章,均是在6D位姿识别领域的算法研究。得到的位姿后面再写怎么抠出来发送到机器人,用机械臂抓取(这部分又属于机器人控制系统设计这个方向)。所以虽然在项目工程里现做的抓取后升级的算法,但从写文章角度按逻辑来说还是先把6D位姿这部分算法说清楚再写怎么设计机器人控制系统。

------------------------------------------------------------

一、算法背景 

  尽管针对三维目标识别与6D位姿估计已经有了很多值得肯定的方法,如PPF算法、基于霍夫森林的一类位置估计算法、模板匹配算法以及最近几年采用的深度学习算法。但是,他们距离人类所具备的生物视觉系统的特性及识别方法还有很大的差距。不仅不能很好的应对单一场景下多目标物体姿态估计,在有单个物体严重遮挡的场景算法的鲁棒性也存在明显的问题。本文受到生物视觉系统中广泛存在的Müller-Lyer错觉效应的启发,提出了一种基于模板匹配的改进的认知模板聚类方法CT-LineMod(Cognitive Template-clustering improved LineMod)。

关于Müller-Lyer错觉效应:

  Müller-Lyer错觉效应是大脑在视觉信息处理过程中存在的一种特殊的视觉功能现象,大脑在处理三维空间中的不同点的认知距离的时候会受到与方向和幅度相关的附加特征的影响。如下图所示为Müller-Lyer错觉效应的三种基本类型,包括例如图a中的距离错觉效应、图b中的方向错觉效应和图c中的角度错觉效应。在人类视觉系统中所存在的这类错觉效应将有助于在6D姿态估计过程中进行特征检测和目标识别,特别是在三维空间中物体重度遮挡场景下显示出积极的意义。、

  与传统的模板匹配特征点聚类阶段不同,在三维物体模板上的特征点聚类的过程中,采用了一个7D特征向量取代标准的只包含3D位置的坐标向量,并且在进一步的特征点空间位置判断过程中,不同位置处的特征点分类会受到Müller-Lyer错觉效应中与特征方向及幅度相关的额外4D向量特征信息的影响。在特征信息降维的过程中,采用梯度下降法将包含7D向量的特征信息降维为3D向量,之后采用K-means特征点均值聚类实现模板的总匹配,并且自动消除多余的聚类,使模板匹配过程既具备了特征信息的整体性又保持了特征点的局部特性。

7D特征向量包含3D空间位置特征向量(X、Y、Z)以及4D位姿向量(梯度方向、梯度幅度、表面法向量方向、表面法向量幅度),如下图3-2所示为物体7D位置特征。

二、算法比较

  LineMod是一种基于模板匹配的6D位姿估计算法,可以通过较短的模型训练时间处理较复杂场景下无纹理物体的识别。然而该算法受制于有限的特征总数,在遮挡场景下识别能力会大打折扣,多个重叠物体识别率接近于0。LineMod主要是基于目标对象和整个模板的相似性来进行物体的姿态估计,与之不同,Patch-LineMod则通过K-means均值聚类算法将整个模板分割成不同的小模板(特征块),之后利用训练的小模板与目标物体的点云相似性进行识别判断,解决被遮挡物体只显示其中某些部分时候的位置估计。。LineMod和Patch-LineMod算法均包含训练和测试阶段:

(1)训练阶段

训练阶段如图a、b所示:LineMod和Patch-LineMod从不同的训练方向加载特定目标物体的RGB-D图像,并使用高斯模糊和Sobel算子对特征点进行预处理。之后两者都将处理后高于预先设定的阈值的梯度方向和幅度的特征点作为有效特征点。最后,学习有效特征点的特征点信息并分类为待匹配模板,用于测试阶段与物体特征点的匹配。

(2)测试阶段

测试阶段如图d所示:在与场景中物体匹配过程中,分别从水平和垂直方向使用预先定义的滑动窗口,计算整个训练模板(Patch-LineMod中为各个模板块)与目标对象的7D特征向量相似度,并选择相似度最大的训练模板位置作为预估计位姿。

LineMod算法、Patch-LineMod算法、CT-LineMod算法处理流程如下图所示

  LineMod算法直接将训练的模板与实际场景中的物体进行滑窗匹配计算二者相似度,但是在多目标重叠场景下其只能识别到完全无遮挡的物体,并且只能识别单个物体,不具备复杂场景的识别能力。

  与之比较,Patch-LineMod在训练阶段通过把模板分成多个小块模板的方式完成后续过程的滑窗匹配,这在一定程度上解决了多目标重叠场景的物体识别。然而,Patch-LineMod算法所采用的特征点分块的方式极其简单,只依据识别到的特征点的空间位置坐标(X、Y、Z值),将三维坐标通过K-means值分析特征点的空间坐标关系作为分块的依据,将相似度高于设定的固定阈值的模块作为识别结果。

  Patch-LineMod算法的分块原理与生物视觉识别系统相比相形见绌,以人类为例,在多个重叠物体的复杂场景中,人类可以依据物体的特殊特征(如尖角、平面、圆弧、物体边缘等)迅速判断出被掩盖的物体。这得益于人类对于特殊特征的敏感度。受此启发,利用特征点的梯度的幅度、方向及表面法向量的幅度、方向,与三维空间坐标X、Y、Z值结合形成7D特征向量,利用数据降维算法t-SNE(t-Distributed Stochastic Neighbor Embedding)与K-means相结合的方式,分析特征点的内在逻辑关联性作为特征分块依据(如图3-3c、e所示)而不限于固定阈值的影响,增加物体独特特征(物体边缘、角、圆弧等)对特征点分类影响的比重,完成复杂场景下的多目标重叠物体的识别。

三、CT-LineMod算法原理

  CT-LineMod算法信息层级处理结构图如图所示。三维物体的原始点云数据输入后,本模型通过计算每个3D特征点的四个附加特征(梯度方向、梯度幅度、表面法向量方向、表面法向量幅度)形成图b的7D特征向量。之后通过集成特征点邻域s*s区域范围内的特征作为待匹配特征块,通过K-means均值化降维为新的3D空间向量,依据Müller-Lyer错觉效应的原理对特征块分配成为更有相关性的特征模板。在测试阶段将输入图像的点云数据与来自图e中的该物体训练图像的特征模板进行匹配计算两者之间的相似性,相似度较高的待匹配模板将作为已匹配模板,并返回训练阶段包含的物体的6D位姿信息。(按照a->e这样来看即可)

-----------------------------------------

写在后面:这一篇第三节讲了一点点原理,下一篇着重从公式、原理来深入介绍一下CT-LineMod算法。