识别堆叠物体的方法和装置与流程

文档序号:12722542阅读:1245来源:国知局
识别堆叠物体的方法和装置与流程

本发明涉及识别堆叠物体的方法和装置。更具体地,本发明涉及识别堆叠物体的顶部物体层中的物体的方法和装置。



背景技术:

随着基于视觉的自动化技术的发展,大量的自动化系统和设备开始应用于多个领域,比如水果质量的分拣,药片检测与识别,细胞分析等。特别地机器人抓取这一技术逐步走出实验室并应用在了工业产品线上,将劳动者从复杂重负的工作里解放出来。通常可被机器手臂抓取的物品包括机电元器件,食品和农产品等。

为了让机器系统能从杂乱堆叠物体里识别出每个物件,已经提出了使用分层技术来从一堆杂乱堆放的物体里取出最顶层的物体并计算出最顶层的物体的位置以便于抓取。具体地,在现有的分层技术中,采用了单一的全局阈值来获得最顶层的图像。然而在这样的分层技术中,只有最顶层物体能被处理,而其它的物体对象,即使它们也处在顶层并同样完全暴露在相机的视野中而无遮挡,由于为它们并没位于最顶层的位置因此也不能被从深度图里抽取出来。

此外,对于这种单一阈值分层的方法而言,处理各物体之间的粘连问题很难得到较好的效果,特别是当上层物体和下层物体粘连较大时,难以准确地分割出的堆叠物体最顶层。由于所有物体都是自由堆放而不是一个挨一个一层叠一层的规则放置,并每个单独的物体都有它自身的大小和放置位置朝向的不同,因此通过单一阈值进行分层很难满足所有顶层物体正确分层的需求。



技术实现要素:

本发明实施例的目的在于提供一种识别堆叠物体的方法和装置,以有效地对堆叠物体进行分割和识别。

本发明的一个实施例提供了一种识别堆叠物体的方法,包括:获得堆叠物体的深度图;根据所获得的深度图将堆叠物体划分为多个物体区域;对于每个物体区域确定顶部物体层的分割位置,以及根据所确定的分割位置提取该物体区域的顶部物体层;识别每个物体区域的顶部物体层中包含的物体。

本发明的另一实施例提供了一种识别堆叠物体的装置,包括:深度图获取单元,配置来获得堆叠物体的深度图;区域划分单元,配置来根据所获得的深度图将堆叠物体划分为多个物体区域;物体层提取单元,配置来对于每个物体区域确定顶部物体层的分割位置,以及根据所确定的分割位置提取该物体区域的顶部物体层;以及识别单元,配置来识别每个物体区域的顶部物体层中包含的物体。

在根据本发明实施例的识别堆叠物体的方法和装置中,通过将深度图将堆叠物体划分为多个物体区域,并对每个物体区域分别进行顶部物体层分割和物体提取,可有效地识别出暴露在相机的视野中而无遮挡的、位于堆叠物体顶层的多个物体,从而大大提高了机器系统能从杂乱堆叠物体中识别并抓取物体的效率。

附图说明

图1是描述了根据本发明一个实施例的识别堆叠物体的方法的流程图。

图2是示出了根据本发明的一个示例将堆叠物体划分为多个物体区域的示意图。

图3是描述了本发明一个实施例的确定物体区域的顶部物体层的分割位置的方法的流程图。

图4是描述了本发明另一实施例的确定物体区域的顶部物体层的分割位置的方法的流程图。

图5a示出了堆叠物体的一个示意性说明图。

图5b是分别对应各物体区域的深度直方图。

图5c示出了对于堆叠物体的边缘检测结果。

图5d示出了掩码图所对应着的各物体区域的边缘深度直方图。

图6是示出了根据本发明的一个实施例的识别堆叠物体的装置的示范性结构框图。

图7是描述了本发明一个实施例的物体层提取单元的示范性结构框图。

图8是描述了本发明另一实施例的物体层提取单元的示范性结构框图。

图9是示出按照本发明实施例的识别堆叠物体的系统的总体硬件框图。

图10示出了根据本公开实施例的物体分割方法的流程图。

图11(a)例示了所获取的包含待分割物体的图像。

图11(b)例示了从图11(a)所示的包含待分割物体的图像转换得到的二值图像。

图11(c)例示了对图11(b)所示的二值图像进行距离变换后得到距离图。

图11(d)例示了在图11(c)所示的距离图中标定出的初始聚类区域的示意图。

图11(e)例示了利用分水岭方法进行区域增长后的增长结果。

图11(f)例示了图11(c)所示的距离图中与图11(e)中所示的包含不止一个物体的区域对应的部分。

图11(g)例示了在图11(f)中用虚线标出的部分地形图中重新标定出的初始聚类区域的示意图。

图11(h)例示了采用根据本公开实施例的物体分割方法得到的最终的分割结果。

图12(a)和12(b)示出了根据本公开实施例的物体分割方法在水位线上进行区域增长时的一个示例情形。

图13是以树图的方式展示迭代分割的示意图。

具体实施方式

为了使本领域技术人员更好地理解本发明,将参考附图详细描述本发明的优选实施例。注意,在本说明书和附图中,具有基本上相同步骤和元素用相同的附图标记来表示,且对这些步骤和元素的重复解释将被省略。

根据本发明的实施例的识别堆叠物体的方法和装置可应用于包括相机设备的机器分拣系统。例如,相机设备可以是例如双目相机之类的立体相机。此外,立体相机的具体形式不限于此,其还可以是例如三目相机或者由基于TOF或者主动光模式的相机等能够获得图像中对象的深度信息的任何其他相机。此外在根据本发明的实施例中,相机设备可设置在堆叠物体的上方,以拍摄堆叠物体的顶部深度图。

图1是描述了根据本发明一个实施例的识别堆叠物体的方法100的流程图。下面,将参照图1来描述根据本发明实施例的识别堆叠物体的方法。如图1所示,在步骤S101中,获得堆叠物体的深度图。在根据本发明的实施例中,堆叠物体的深度图可以是通过上述相机设备获得的堆叠物体的顶部深度图。

在步骤S102中,根据所获得的深度图将堆叠物体划分为多个物体区域。根据本发明的一个实例,可利用分水岭方法,逐渐降低对应于深度图中的深度值大小的水位线,以根据深度图将堆叠物体划分为多个物体区域。具体地,可确定在各水位线上确定在所获得的深度图中是否出现了新的物体。例如,在逐渐降低水位线的过程中,新的物体可以独立于在高于当前水位线的水位线上已经新的物体。

当在特定水位线上确定出现了新的物体并且当不存在已经确定的物体区域时,将新的物体标定为新的物体区域。此外在逐渐降低水位线的过程中,在下一水位线上可围绕该新的物体区域进行区域增长标定。

另一方面,当在特定水位线上确定出现了新的物体并且当存在已经确定的物体区域时,确定新的物体在深度图中的位置与存在的已经确定的物体区域的位置之间的距离是否大于或等于预定阈值。当新的物体在深度图中的位置与已经确定的物体区域的位置之间的距离大于或等于预定阈值时,将新的物体标定为新的物体区域,否则将新的物体确定为属于已经确定的物体区域。例如,可计算将新的物体中心位置与已经确定的物体区域的中心位置之间的距离作为新的物体在深度图中的位置与已经确定的物体区域的位置之间的距离。此外在逐渐降低水位线的过程中,在下一水位线上可围绕所有的确定物体区域各自进行区域增长。并且在下一水位线上可将所确定的物体区域包含的所有物体用于该物体区域的增长。

图2是示出了根据本发明的一个示例将堆叠物体划分为多个物体区域的示意图。如图2所示,如图当水位线下降到“p1”位置时,点“A”露出于水面,即,在“p1”位置确定出现了新的物体。由于此时不存在已经确定的物体区域,因此将物体A标定为新的物体区域,并开始在下一水位线上进行区域增长。当水位线下降到“p2”位置时,没有出现独立于物体A所在物体区域的新的物体,即,在“p2”位置确定没有出现新的物体。当水位线下降到“p3”位置时, 点“B”露出于水面。如图2所示,在水位线下降到“p3”位置时,点“B”独立于已经确定的点“A”所在的物体区域,因此在“p3”位置确定出现了新的物体。在图2所示的示例中,点“B”的位置与点“A”所在的物体区域的位置之间的距离大于预定阈值T。因此,将点“B”标定为新的物体区域。继续水位下降到“p4”位置,点“C”露出于水面,如图2所示,在水位线下降到“p4”位置时,点“C”独立于已经确定的点“A”所在的物体区域和点“B”所在的物体区域,因此在“p4”位置确定出现了新的物体。在图2所示的示例中,点“C”的位置与点“B”所在的物体区域的位置之间的距离小于预定阈值T。因此,将点“C”确定为属于已经确定的物体区域而不将其标定为新的物体区域。以此方法,可将堆叠物体分隔为多个物体区域,并且这多个物体区域可相互不重叠。

然后,在步骤S103中,对于每个物体区域确定顶部物体层的分割位置,以及根据所确定的分割位置提取该物体区域的顶部物体层。根据本发明的一个实例,可获得堆叠物体中单个物体的平均高度。例如,可预先存储堆叠物体中单个物体的平均高度。对于每个物体区域,可根据单个物体的平均高度确定该物体区域的顶部物体层的分割位置。

图3是描述了本发明一个实施例的确定物体区域的顶部物体层的分割位置的方法300的流程图。如图3所示,在步骤S301中,根据在深度图中该物体区域的最高点和单个物体的平均高度计算参考位置。例如,可将深度图中的最小深度值(即物体区域中的最高点所对应的深度值)加上单个物体的平均高度后所获得的深度值作为参考位置。

例如,可将该参考位置直接作为物体区域的顶部物体层的分割位置。可替换地,也可结合实际获得的深度图对该参考位置进行修正,以获得更准确的分割位置。具体地,在步骤S302中,生成深度图的深度直方图。由于在物体分层位置通常位于深度直方图中的波谷点的位置,因此,在步骤S303中,在所生成深度直方图中,获得参考位置附近的波谷点的位置作为该物体区域的顶部物体层的分割位置。例如,可通过以下求最大化对比算子的公式(1)来进一步修正参考位置T1。

其中hk是图像深度直方图第k个位置的深度统计值,n和a是预先确定的窗口半径。通过公式(1)可在[T1-a,T1+a]这个范围内确定深度图直方图 上一个波谷点作为修正值T2,这个波谷点具有2侧最大化对比差。可将修正值T2作为分割位置。

图4是描述了本发明另一实施例的确定物体区域的顶部物体层的分割位置的方法400的流程图。如图4所示,在步骤S401中,在所述深度图中检测该物体区域中的物体边缘,以生成该物体区域的边缘深度直方图。由于希望物体边缘的深度信息同时能包含物体自身的深度信息和支撑该物体的下一层物体的深度信息,因此优选地,在深度图中检测到该物体区域中的物体边缘后,可对检测到的物体边缘进行膨胀以确保物体边缘能在提取深度数据前覆盖住物体,然后获得膨胀后的边缘二值化图。并且将膨胀边缘二值化图作为掩码图,根据深度图获得物体边缘所对应的深度,并计算出该物体区域的边缘深度直方图。

在步骤S402中,对边缘深度直方图进行聚类以获得聚类点。并且在步骤S403中,根据在深度图中该物体区域的最高点和单个物体的平均高度计算参考位置。例如,如上所述,可将深度图中的最小深度值(即物体区域中的最高点所对应的深度值)加上单个物体的平均高度后所获得的深度值作为参考位置。

然后在步骤S404中,根据在所获得的聚类点中的、最接近参考位置的目标聚类点确定该物体区域的顶部物体层的分割位置。根据本发明的一个实例,在步骤S404中,可生成深度图的深度直方图,然后在所生成的深度直方图中,获得所述目标聚类点附近的波谷点的位置作为该物体区域的顶部物体层的分割位置。例如,可通过以上公式(1)来在深度直方图中,获得目标聚类点附近的波谷点的位置作为该物体区域的顶部物体层的分割位置。具体地,可通过将公式(1)中的参考位置T1替换为目标聚类点L1,来获得目标聚类点附近的波谷点的位置作为该物体区域的顶部物体层的分割位置。

以下将结合图5a至图5d进一步描述根据本发明一个实施例生成的边缘深度直方图。图5a示出了堆叠物体500的一个示意性说明图。根据步骤S102可将堆叠物体500划分为物体区域510、520和530。图5b是分别对应物体区域510、520和530的深度直方图。根据步骤S401,堆叠物体500的深度图中检测该物体区域中的物体边缘,以生成该物体区域的边缘深度直方图。图5c示出了对于堆叠物体500的边缘检测结果。如上所述,可根据图5c所示的边缘检测结果生成膨胀边缘二值化图,并将膨胀边缘二值化图作为掩码 图。图5d示出了掩码图所对应着的物体区域510、520和530的边缘深度直方图。如上所述,结合图5b和图5d这两个不同的深度直方图,可能得到每个物体区域的顶层位置,从而分割出顶层图像。

通过图3和图4中所示的确定物体区域的顶部物体层的分割位置的方法,根据实际获取的堆叠图像的深度图来确定每个物体区域的顶部物体层的分割位置,而不是使用单一的阈值来分割顶部物体层,从而提高了对顶部物体层进行分割的准确性。

返回图1,在步骤S104中,在提取了每个物体区域的顶部物体层之后,识别每个物体区域的顶部物体层中包含的物体。例如,当每个物体区域的顶部物体层只包含单个物体时,可对该物体进行识别。

又例如,在顶部物体层中可包含多个相互粘连的物体。在此情况下根据本发明的一个实施例,在步骤S104中可对每个物体区域中的顶部物体层进行分割,并识别位于该物体区域的顶部物体层中包含的所有物体。例如,可生成每个物体区域的顶部物体层的距离图;利用分水岭区域增长方法,在每个物体区域的顶部物体层中分割物体子区域;然后根据所分割的物体子区域识别每个物体区域的顶部物体层中包含的物体。图10是描述了根据本发明一个实施例的物体分割方法的流程图。

如图10所示,在步骤S1010,获取顶部物体层的地形图,其中所述顶部物体层包含待分割物体。地形图(Topographic image)是图像与视频处理领域中的一种新的数据变换域的图像,其具有“高”和“低”概念的区域,这使得它看起来更像是山地地形的表面。地形图的典型代表包括梯度幅度图、距离图、以及深度图等。在本公开中,作为示例,采用距离图作为地形图来详细描述本发明。

距离图以及将灰度图像转换为距离图均是本领域中常用的图像处理手段,此处仅仅是为便于理解,简单介绍如下。具体的,在该步骤中,可以首先将包含待分割物体的图像转换为二值图像,随后对该二值图像进行距离变换得到距离图。

一幅二值图像可以认为仅仅包含目标物体和背景两种像素,其中目标物体的像素值为1,背景的像素值为0。距离变换是二值图像处理与操作中的常用手段,其在目标细化、骨架提取、形状插值及匹配、粘连物体的分离等中广泛应用。距离变换的结果不是另一幅二值图像,而是一幅灰度级图像,即 距离图,该距离图中每个像素的像素值表示该像素与距其最近的背景像素之间的距离。能够理解,当采用距离图作为地形图时,距离图中各像素的值对应于地形中的高度,代表该点在地形中的海拔。

图10中所示的方法可用于单层平铺的非规则粘连物体的分割。下面将对此进行详细的描述。炸鸡块是典型的非规则粘连物体,为了便于描述,下文中将以炸鸡块为例进行说明。图11(a)例示了所获取的包含待分割物体(炸鸡块)的图像。图11(a)示出了随机平放在一起的9块炸鸡块,其可以是通过对堆叠的炸鸡块进行分层操作而得到的顶部物体层的图像。图11(b)例示了从图11(a)所示的图像转换得到的二值图像,其中黑色的像素代表背景,而白色为目标物体,也就是炸鸡块自身。图11(c)例示了对图11(b)所示的二值图像进行距离变换后得到距离图。如图11(c)所示,越靠近炸鸡块中心位置的像素的值越大,越亮,而越靠近炸鸡块边缘位置的像素的值越小,越暗。

可选的,在该步骤中,可以将转换得到的距离图中的各像素的像素值归一化至一个适当的范围(例如,0-255),以提高后续的水位线下降处理的效率。

在步骤S1020,在所述地形图中标定初始聚类区域。

此处的初始聚类区域是一些连通的像素点聚合而成的块状区域,其位于前景图像中,代表着各个待分割物体的种子点。理想情况下,一个标定出来的初始聚类区域对应于一个待分割物体。在该步骤中,可以利用预定的阈值对所述地形图进行二值化来标定出所述初始聚类区域,其中所述预定的阈值可以根据待分割物体的形状、大小等先验知识来确定,以尽可能使得利用该预定的阈值恰好标定出所有待分割的物体。例如,仍然以待分割物体是炸鸡块、地形图是距离图为例,通常炸鸡块的大小是相对一致的,满足正态分布,因此可以设定可接受的置信区间从而确定进行二值化的阈值;随后,通过将距离图中各个像素的值与该阈值进行比较将该距离图二值化,可以得到初始的聚类区域。例如,图11(d)例示了在图11(c)所示的距离图中标定出的初始聚类区域的示意图,其中,各个白色块代表各个炸鸡块的种子点。

上述利用预定的阈值对距离图进行二值化仅仅是标定初始聚类区域的一种示例方法,也可以采用其他的适当方法来标定初始化聚类区域,比如采用形态学中的腐蚀算子,或者使用机器学习中的K-Means、最近邻KNN算法等 方法。

在步骤S1030,利用分水岭方法在各水位线上对所述初始聚类区域进行增长,直至水位线降至最低水位。

分水岭方法是本领域中常用的图像处理方法,此处不再进行详细描述。在该步骤中,采用分水岭方法,模拟水位从高处下降至最低水位,并在水位下降过程中进行区域增长处理。如前所述,分水岭方法对噪音敏感容易导致过分割,针对这一问题,与常规的分水岭方法不同,在该步骤中,在各水位线上只对已经标定出的初始聚类区域进行增长,而不对水位下降过程中新出现的、除了初始聚类区域之外的其他孤立区域进行增长。下面将结合图12(a)和12(b)对此进行详细的说明。

图12(a)和12(b)示出了根据本公开实施例的物体分割方法在水位线上进行区域增长时的一个示例情形。假设图12(a)左侧的小山丘代表地形图的正视图,并且该山丘右侧的山峰代表一个初始聚类区域a,图12(a)右侧为该地形图的俯视图。假设当水位线从高处下降到水位“A”时,小山丘的一个局部凸起浮出水面形成一新的孤立区域s。该新的孤立区域在右侧的俯视图中用一个小圆圈来表示,小圆圈右侧的黑圆代表初始聚类区域a在当前的水位“A”处的增长后的区域。此时不对该新浮出水面的孤立区域s进行增长,并且在随后的各个水位上也不对其进行增长。如图12(b)所示,当水位线继续下降到水位“B”时,黑圆所代表的初始聚类区域a继续增长至连接到了该孤立区域s(图中浅色外圈部分表示初始聚类区域a在该水位“B”处新增长的部分),这样该孤立区域s被增长后的初始聚类区域a所吸收(如图3(b)最右侧的黑色实心形状所示)。

在上面描述的情形中,只有一个初始聚类区域在水位线降至水位“B”时新增长至连接到孤立区域s;如果在该水位线处,多个初始聚类区域进行增长后都将连接到该孤立区域s,则可以选择这多个初始聚类区域中的一个增长至连接到该孤立区域s,并控制其他初始聚类区域进行增长时不连接该孤立区域s。可以采用各种适当的方式来选择多个初始聚类区域中的一个初始聚类区域来增长至连接到该孤立区域。比如,作为一种常规方法,可以采用固定的交替增长方式来进行选择。再比如,可以采用竞争增长方式来进行选择。在竞争增长方式中,当多个初始聚类区域进行增长后都将连接到孤立区域s时,选择竞争力最大的区域增长至连接到该孤立区域s,其中竞争力可以根据需要任 意设定。例如,竞争力可以是该多个初始聚类区域在上一个水位线上的增长速度或绝对增量、在当前水位线上的面积大小、到孤立区域s的距离等等。

在该步骤中,作为常规处理方式,进行区域增长的水位线的起始水位是最高水位。可选的,如果在之前的步骤S1020中通过利用预定的阈值对距离图进行二值化来标定初始聚类区域,则在该步骤S1030中,水位线的起始水位可以是该预定的阈值。

以上结合附图对本公开实施例中利用分水岭方法在各水位线上对初始聚类区域进行增长的处理过程进行了详细描述。由于在该增长过程中,在各水位线上只对已经标定出的初始聚类区域进行增长,而不对水位下降过程中新出现的其他孤立区域进行增长,因此在整个增长过程中不会引入新的区域,最终增长得到的区域(对应于分割出的物体)的数目就是最初标定的初始聚类区域的数目。由于初始聚类区域的数目是可控的,因此分割的结果也是可控的,从而能够避免过分割的产生。

然而,另一方面,由于分割结果依赖于初始聚类区域的标定,因此如果初始聚类区域标定不准确,例如由于物体紧密粘连导致未能标定出全部待分割物体,则最终增长得到的区域的数目会少于实际物体的数目,即未能分割出所有的物体。例如,如前文中提到的,11(a)中例示的包含待分割炸鸡块的图像中包含有9块平铺放置的炸鸡块,而通过初始聚类区域标定,仅仅标定出了8个区域,如图11(d)所示。通过该步骤S1030中的区域增长处理,得到了如图11(e)所示的8个区域,即分割出8个物体。从图11(e)可以看出,该图中用斜线标出的区域实际上包含了紧密粘连在一起的两个炸鸡块,由于在标定初始聚类区域的时候只标定出了其中的一块,因此导致最终没能将这两个粘连的炸鸡块分割开。针对这样的情形,根据本公开实施例的物体分割方法将通过下面将要描述的步骤进行进一步的处理。

回到图10,在步骤S1040,确定各个增长后的初始聚类区域是否均只包含一个物体,如果判断结果为是,则将每个增长后的初始聚类区域作为一个分割出来的物体,并且分割结束,否则执行步骤S1050。

如果由于紧密粘连等原因导致在步骤S1020中将多个物体标定为一个初始聚类区域,则该初始聚类区域经过步骤S1030的处理后得到的增长后的初始聚类区域的外形显然不同于其他正确分割出来的物体。因此,在该步骤S1040中,可以针对每个增长后的初始聚类区域,判断其是否包含不止一个 物体。作为一个示例,可以根据增长后的初始聚类区域的尺寸判断其是否包含不止一个物体。比如,如果一个增长后的初始聚类区域的尺寸(长、宽或面积)大于1.5倍的单个物体的平均尺寸,则很可能是因为其包含了不止一个物体。作为另一个示例,可以根据增长的初始聚类区域的形状判断其是否包含不止一个物体。比如,可以采用傅里叶描述子的低频系数来描述形状信息,然后采用诸如决策树等机器学习的方法来判断某个增长后的初始聚类区域是否包含不止一个物体。

在步骤S1050中,对于每个包含不止一个物体的增长后的初始聚类区域,将步骤S1010中转换得到的地形图中与该增长后的初始聚类区域对应的部分作为待分割地形图,并在该待分割地形图中重新标定至少两个初始聚类区域。下面将结合图11(e)-11(g)对此进行描述。

假设在该步骤S1040中确定出图11(e)中用斜线标出的区域包含了一个以上的物体,则在该步骤S1050中,如图11(f)所示,从地形图中提取出与该区域对应的部分作为待分割地形图,在图11(f)中用虚线标出了该部分。随后,在该待分割地形图中重新标定至少两个初始聚类区域。该重新标定初始聚类区域的处理与上文中针对步骤S1020所描述的类似,此处不再进行详细描述,仅对其不同之处进行说明。

仍然以采用二值化方法来标定初始聚类区域为例,在前述的步骤S1020中,可以根据待分割物体的形状、大小等先验知识来确定阈值,以尽可能使得利用该预定的阈值恰好标定出所有待分割的物体;而在该步骤S1050中,则调整采用的阈值以使得可以重新标定出至少两个初始聚类区域。例如,图11(g)示出了对图11(f)中用虚线标出的待分割地形图重新标定出的初始聚类区域。

通过上述步骤S1050中的处理,针对每个包含有一个以上的物体的区域都从地形图中提取出了与其对应的部分作为待分割地形图,并在该待分割地形图中重新标定了至少两个初始聚类区域。随后,处理返回步骤S1030,并对于每个这样的待分割地形图重复地执行S1030-S1050。更明确的说,由于每个待分割地形图中都包含了不止一个物体,因此可以将每个这样的待分割地形图作为一副新的地形图,针对其中重新标定出的至少两个初始聚类区域再次执行步骤S1030-S1050中的处理,不断重复这一过程,直到在步骤S1040中确定对于每个待分割的地形图,各个增长后的初始聚类区域均只包含一个 物体为止。能够理解,该过程实际是一个迭代分割的过程,对于每个在步骤S1040中被确定为包含不止一个物体的区域,都将从初始的地形图中取出对应部分,并作为独立的输入进入到迭代分割中,直到各个增长后的初始聚类区域均只包含一个物体、即所有物体都被分割开为止。图11(h)例示了通过该迭代分割得到的最终的分割结果,可以看到该图中每个区域均只包含一个鸡块。

为了有助于理解,下面结合图13对迭代分割进行简单的说明。图13是以树图的方式展示迭代分割的示意图。如图13所示,假设有13个球要进行分割,其中左边3个球相互粘连在一起。在最初的分割中(即第一次迭代中),4个球被分为2部分,左边3个、右边1个。由于左边3个包含了不止一个要分割的物体,因此对左边的3个球继续进行第二次迭代分割。经过第二次迭代分割后,3个球被分为2部分,左边2个、右边1个。继续对左边的2个球进行第三次迭代分割,最终所有的球都相互分割开。

以上已经参考附图描述了根据本公开实施例的物体分割方法。根据该方法,在利用分水岭方法进行分割的过程中,只对已经标定出的初始聚类区域进行增长,而不对水位下降过程中新出现的其他孤立区域进行增长,因此在整个增长过程中不会引入新的区域,从而能够避免过分割的产生;另一方面,通过迭代分割的方式弥补由于物体紧密粘连导致标定的初始聚类区域不准确的缺陷,从而实现了粘连物体的有效分割。

需要说明的是,尽管在以上的描述中,特别针对非规则粘连物体描述了根据本公开实施例的物体分割方法,但这并非是对本发明的限制。根据本公开实施例的上述物体分割方法对于规则物体或非粘连物体的分割也同样适用。

在根据本实施例的识别堆叠物体的方法中,通过将深度图将堆叠物体划分为多个物体区域,并对每个物体区域分别进行顶部物体层分割和物体提取,可有效地识别出暴露在相机的视野中而无遮挡的、位于堆叠物体顶层的多个物体,从而大大提高了机器系统能从杂乱堆叠物体中识别并抓取物体的效率。

此外,应注意以上流程图中各个步骤不一定按照附图中所示顺序执行。例如图4中可先执行根据在深度图中该物体区域的最高点和单个物体的平均高度计算参考位置(步骤S403),再执行生成该物体区域的边缘深度直方图(步骤S401)或者对边缘深度直方图进行聚类以获得聚类点(步骤S402); 也可以同时执行步骤S403和步骤S401,或者同时执行步骤S403和步骤S402。

下面,参照图6说明本发明实施例的识别堆叠物体的装置。图6是示出了根据本发明的一个实施例的识别堆叠物体的装置600的示范性结构框图。如图7中所示,本实施例的识别堆叠物体的装置600包括深度图获取单元610、区域划分单元620、物体层提取单元630和识别单元640。在识别堆叠物体的装置600中的各个单元可分别执行上述图1中的识别堆叠物体的方法100的各个步骤/功能。因此,以下仅对识别堆叠物体的装置600的主要部件进行了描述,而省略了以上已经结合图1至图5描述过的细节内容。

具体地,深度图获取单元610获得堆叠物体的深度图。在根据本发明的实施例中,堆叠物体的深度图可以是通过上述相机设备获得的堆叠物体的顶部深度图。

区域划分单元620根据所获得的深度图将堆叠物体划分为多个物体区域。根据本发明的一个实例,可利用分水岭方法,逐渐降低对应于深度图中的深度值大小的水位线,以根据深度图将堆叠物体划分为多个物体区域。具体地,区域划分单元可包括物体检测模块和区域确定模块。物体检测模块可确定在各水位线上确定在所获得的深度图中是否出现了新的物体。例如,在逐渐降低水位线的过程中,新的物体可以独立于在高于当前水位线的水位线上已经新的物体。

当在特定水位线上确定出现了新的物体并且当不存在已经确定的物体区域时,区域确定模块可将新的物体标定为新的物体区域。此外在逐渐降低水位线的过程中,在下一水位线上可围绕该新的物体区域进行区域增长标定。

另一方面,当在特定水位线上确定出现了新的物体并且当存在已经确定的物体区域时,区域确定模块可确定新的物体在深度图中的位置与存在的已经确定的物体区域的位置之间的距离是否大于或等于预定阈值。当新的物体在深度图中的位置与已经确定的物体区域的位置之间的距离大于或等于预定阈值时,将新的物体标定为新的物体区域,否则将新的物体确定为属于已经确定的物体区域。例如,可计算将新的物体中心位置与已经确定的物体区域的中心位置之间的距离作为新的物体在深度图中的位置与已经确定的物体区域的位置之间的距离。此外在逐渐降低水位线的过程中,在下一水位线上可围绕所有的确定物体区域各自进行区域增长。并且在下一水位线上可将所确 定的物体区域包含的所有物体用于该物体区域的增长。

然后,物体层提取单元630对于每个物体区域确定顶部物体层的分割位置,以及根据所确定的分割位置提取该物体区域的顶部物体层。根据本发明的一个实例,可获得堆叠物体中单个物体的平均高度。例如,可预先存储堆叠物体中单个物体的平均高度。对于每个物体区域,可根据单个物体的平均高度确定该物体区域的顶部物体层的分割位置。

图7是描述了本发明一个实施例的物体层提取单元630的示范性结构框图。如图7所示,物体层提取单元630可包括参考位置计算模块710、深度直方图生成模块720和分割位置确定模块730。

具体地,参考位置计算模块710可根据在深度图中该物体区域的最高点和单个物体的平均高度计算参考位置。例如,可将深度图中的最小深度值(即物体区域中的最高点所对应的深度值)加上单个物体的平均高度后所获得的深度值作为参考位置。

例如,确定模块730可将该参考位置直接作为物体区域的顶部物体层的分割位置。可替换地,也可结合实际获得的深度图对该参考位置进行修正,以获得更准确的分割位置。具体地,深度直方图生成模块720可生成深度图的深度直方图。由于在物体分层位置通常位于深度直方图中的波谷点的位置,因此,分割位置确定模块730可在所生成深度直方图中,获得参考位置附近的波谷点的位置作为该物体区域的顶部物体层的分割位置。例如,可通过更以上求最大化对比算子的公式(1)来进一步修正参考位置T1。

图8是描述了本发明另一实施例的物体层提取单元630’的示范性结构框图。如图8所示,物体层提取单元630’可包括边缘深度直方图生成模块810、聚类点获取模块820、参考位置计算模块830和分割位置确定模块840。

具体地,边缘深度直方图生成模块810在所述深度图中检测该物体区域中的物体边缘,以生成该物体区域的边缘深度直方图。由于希望物体边缘的深度信息同时能包含物体自身的深度信息和支撑该物体的下一层物体的深度信息,因此优选地,在深度图中检测到该物体区域中的物体边缘后,可对检测到的物体边缘进行膨胀以确保物体边缘能在提取深度数据前覆盖住物体,然后获得膨胀后的边缘二值化图。并且将膨胀边缘二值化图作为掩码图,根据深度图获得物体边缘所对应的深度,并计算出该物体区域的边缘深度直方图。

聚类点获取模块820对边缘深度直方图进行聚类以获得聚类点。并且参考位置计算模块830可根据在深度图中该物体区域的最高点和单个物体的平均高度计算参考位置。例如,如上所述,可将深度图中的最小深度值(即物体区域中的最高点所对应的深度值)加上单个物体的平均高度后所获得的深度值作为参考位置。

然后分割位置确定模块840可根据在所获得的聚类点中的、最接近参考位置的目标聚类点确定该物体区域的顶部物体层的分割位置。根据本发明的一个实例,分割位置确定模块840可生成深度图的深度直方图,然后在所生成的深度直方图中,获得所述目标聚类点附近的波谷点的位置作为该物体区域的顶部物体层的分割位置。例如,可通过以上公式(1)来在深度直方图中,获得目标聚类点附近的波谷点的位置作为该物体区域的顶部物体层的分割位置。具体地,可通过将公式(1)中的参考位置T1替换为目标聚类点L1,来获得目标聚类点附近的波谷点的位置作为该物体区域的顶部物体层的分割位置。

图7和图8中所示的物体层提取单元根据实际获取的堆叠图像的深度图来确定每个物体区域的顶部物体层的分割位置,而不是使用单一的阈值来分割顶部物体层,从而提高了对顶部物体层进行分割的准确性。

返回图6,识别单元640在提取了每个物体区域的顶部物体层之后,识别每个物体区域的顶部物体层中包含的物体。例如,当每个物体区域的顶部物体层只包含单个物体时,可对该物体进行识别。又例如,在顶部物体层中可包含多个相互粘连的物体。在此情况下根据本发明的一个实施例,识别单元640可对每个物体区域中的顶部物体层进行分割,并识别位于该物体区域的顶部物体层中包含的所有物体。例如,识别单元640可通过以上结合图10-13描述的分割方法来分割物体子区域识别每个物体区域的顶部物体层中包含的物体。

在根据本实施例的识别堆叠物体的装置中,通过将深度图将堆叠物体划分为多个物体区域,并对每个物体区域分别进行顶部物体层分割和物体提取,可有效地识别出暴露在相机的视野中而无遮挡的、位于堆叠物体顶层的多个物体,从而大大提高了机器系统能从杂乱堆叠物体中识别并抓取物体的效率。

此外,根据本发明的另一示例,本发明还可以通过一种识别堆叠物体的 系统来实施。图9是示出按照本发明实施例的识别堆叠物体的系统900的总体硬件框图。如图9所示,识别堆叠物体的系统900可以包括:输入设备910,用于从外部输入例如通过立体相机采集的图像,并且例如可以包括图像传输线、图像输入端口等等;处理设备920,用于实施上述的按照本发明实施例的识别堆叠物体的方法,例如可以包括计算机的中央处理器或其它的具有处理能力的芯片等等,此外,处理设备920还可以连接到诸如因特网的网络(未示出),根据处理过程的需要向远程传送处理后的结果等等;输出设备930,用于向外部输出实施上述堆叠物体识别过程所得的结果,例如可以包括显示器以及通信网络及其所连接的远程输出设备等等;以及存储设备940,用于以易失或非易失的方式存储上述所采集的图像等,此外存储设备940还可存储计算机可执行指令,处理设备920可读取并执行存储设备940中存储的指令,以执行上述的按照本发明实施例的识别堆叠物体的方法。存储设备940例如可以包括随机存取存储器(RAM)、只读存储器(ROM)、硬盘、或半导体存储器等等的各种易失或非易失性存储器。

所属技术领域的技术人员知道,本发明可以实现为系统、装置、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“组件、“模块”、“装置”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。

可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者 器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1