容器识别方法、装置和机器人
技术领域
本发明实施例涉及计算机视觉技术领域,具体涉及一种容器识别方法、装置和机器人。
背景技术
随着人工智能技术的发展,越来越多的工作需要依靠机器人进行,比如货物搬运、小区巡逻、环境清理等。垃圾桶清理是小区物业管理中很重要的一项工作内容,清洁工人一般会在垃圾桶堆满后去清走垃圾,以免影响业主扔垃圾这种日常行为。但是垃圾桶什么时候堆满是一个随机事件,清洁工人无法踩准时间点去清理。清理得过频繁,会增加清洁工人的工作量,也有浪费垃圾桶里面朔料清洁袋的问题,造成污染,清理不及时也会影响环境卫生。所以小区里面一般会派保安时时去巡查,发现了需要清理的垃圾桶再通知清洁工人,但这样会增加物业公司保安的人力成本。
现在一些智慧小区已经引入了巡逻机器人进行小区的巡逻以及安保等工作,但是目前的巡逻机器人却没有办法主动识别垃圾桶以及没有主动检查垃圾桶是否堆满的功能,造成资源上的浪费。
发明内容
鉴于上述问题,本发明实施例提供了一种容器识别方法、装置和机器人,用于解决现有技术中存在的容器识别的问题。
根据本发明实施例的一个方面,提供了一种容器识别方法,所述方法包括:
通过图像采集器获取所述容器的深度图及RGB图;
在所述RGB图中识别出预设在所述容器表面的标识图的位置区域;
将所述容器的深度图转换为点云图;
根据所述标识图在所述RGB图中的位置区域确定所述标识图在所述点云图中的点云集合P0;
根据所述图像采集器的平面参数,将所述标识图的点云集合P0转换为与所述图像采集器所在平面平行的标识图的点云集合P1;
将所述转换后的标识图的点云集合P1转换为所述标识图的深度图;
根据所述标识图的深度图获取所述标识图的深度值集D1;
根据所述标识图的深度值集D1对所述容器进行识别。
进一步的,所述根据图像采集器的平面参数,将所述标识图的点云集合P0转换为与所述图像采集器所在平面平行的标识图的点云集合P1,包括:
获取所述标识图的点云集合P0所在平面的法向量和所述图像采集器所在平面的法向量;
根据所述标识图的点云集合P0所在平面的法向量和所述图像采集器所在平面的法向量获取旋转向量;
根据所述旋转向量转换所述标识图的点云集合P0得到转换后的点云集合P1。
进一步的,所述根据所述标识图的深度值集D1对所述容器进行识别,包括:
以所述标识图的深度值集D1为基准,获取所述容器的左右两侧的深度值,当深度值增加量大于预设第一阈值时,则将所述深度值作为所述容器左右边缘的深度值;
根据所述容器左右边缘的深度值,获取所述容器的形状。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值开始不规则变化,则确定所述容器已满。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值有规则变小,继续向上探测,并获取深度值;若所述深度值不规则变化,则确定所述容器已满。
进一步的,所述深度值开始不规则变化之后,进一步包括:
若所述深度值开始不规则变化,则统计发生不规则变化的区域内的深度值大于第二预设阈值的比例;
若所述比例小于第三预设阈值,则确定所述容器已满。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值有规则变小,继续向上探测,若所述深度值大于所述第二预设阈值,则确定所述容器未满。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值大于所述第二预设阈值,则确定所述容器未满。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向下探测,并获取深度值;
若所述深度值开始不规则变化,则确定所述容器周围有溢出物;
若所述深度值开始有规则变小,则确定所述容器周围没有溢出物。
进一步的,所述第二预设阈值为根据深度值集D1确定的,具体包括:
若所述深度值集D1的深度值满足圆弧排列,则将所述圆弧的半径作为第二预设阈值;
若所述深度值集D1的深度值满足直线排列,则根据所述容器左右边缘计算所述容器的宽度值,将所述宽度值的一半作为第二预设阈值。
本发明实施例还提出了一种容器识别装置,包括:
图像采集模块:用于通过图像采集器获取容器的深度图和RGB图;
标识图确定模块:用于在所述RGB图中识别出预设在所述容器表面的标识图的位置区域;
第一图像转换模块:用于将所述容器的深度图转换为点云图;
点云集合确定模块:用于根据所述标识图在所述RGB图中的位置区域确定所述标识图在所述点云图中的点云集合P0;
点云拟合模块:用于根据所述图像采集器的平面参数,将所述标识图的点云集合P0转换为与所述图像采集器所在平面平行的标识图的点云集合P1;
第二图像转换模块:用于将所述转换后的标识图的点云集合P1转换为所述标识图的深度图;
容器识别模块:用于根据所述标识图的深度图获取所述标识图的深度值集D1;并根据所述标识图的深度值集D1对所述容器进行识别。
本发明实施例还提出了一种机器人,包括:图像采集器、处理器、存储器、通信接口和通信总线,所述图像采集器、处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述实施例中的容器识别方法的操作。
根据本发明实施例的又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使容器识别装置或机器人执行上述实施例中的容器识别方法的操作。
综上所述,本发明实施例提供的容器识别方法,通过识别容器上的标识图,获取所述标识图的深度值集,基于所述深度值集对所述容器进行识别,提高了容器识别的准确性,同时进一步的,基于所述标识图对所述容器进行向上和向下检索,识别是否有溢出物溢出所述容器,进一步提高了容器判断的识别效率,大大节省了人力。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的容器识别方法应用环境示意图;
图2示出了本发明实施例提供的容器识别方法的流程示意图;
图3示出了本发明另一实施例提供的容器识别方法的流程示意图;
图4示出了本发明实施例提供的容器溢出识别方法的流程示意图;
图5示出了本发明另一实施例提供的容器溢出识别方法的流程示意图;
图6示出了本发明实施例提供的容器识别装置的结构示意图;
图7示出了本发明实施例提供的容器识别设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
在实际生活中,很多场景都会用容器进行物体的盛放,机器人需要进行容器识别的场景比较多,最常见的就是巡逻机器人在小区巡逻过程中,需要识别存放垃圾的垃圾桶,以及识别这些垃圾桶是否已经放满,是否有垃圾溢出等等,本发明实施例就以垃圾桶为例进行阐述,来阐述如何进行容器的识别,需要指出的是,本发明实施例不仅仅适用于垃圾桶的识别,还可以用于其他容器的识别。
目前市面上的垃圾桶形状、颜色、款式各异,想要让巡逻机器人能够识别出所有垃圾桶,难度很大。但是实际中,不管什么类型的垃圾桶,其筒体上都有相似的标识图,根据实际生活中的这些特点,本发明实施例提出了一种容器识别方法,用于机器人智能识别物体,特别是适用于巡逻机器人进行垃圾桶的识别。图1所示为常见的垃圾桶,虽然垃圾桶的形状各有差异,在实际的执行过程中,可以通过对巡逻机器人进行训练学习,识别不同的垃圾桶形状。在通过形状识别出垃圾桶后,再通过设置于垃圾桶表面的标识图进行进一步的识别,当然,也有一些垃圾桶由于使用时间比较久,或者,由于标准不规范,缺少垃圾桶标识图,在这种情况下,巡逻机器人的维护人员可以自行为上述缺少标识图的垃圾桶贴上标识图以便巡逻机器人及时识别。通过本发明实施例提供的容器识别方法,巡逻机器人可以自动识别垃圾桶,并判断垃圾桶是否装满垃圾,或者是否有垃圾溢出。
具体的,本发明实施例提供的容器识别方法,如图2所示,包括:
步骤201:通过图像采集器获取所述容器的深度图及RGB图;
巡逻机器人通过包括摄像头、显示屏、机械手等,本发明实施例中,在巡逻机器人上设置有图像采集器,所述图像采集器可以为RGB-D深度摄像机,也可以是其他类型的摄像头,巡逻机器人通过设置的图像采集器获取周边环境的RGB图及对应的深度图。本发明实施例提供的巡逻机器人通过图像采集器采集到周边环境后,通过实现训练好的识别模型,识别出那些是垃圾桶。然后从采集的图像信息中提取出垃圾桶的图像信息,包括其深度图和RGB图等。
步骤202:在所述RGB图中识别出预设在所述容器表面的标识图的位置区域;
所述巡逻机器人采集到的RGB图像信息后,通过数据分析,识别出预设在所述容器表面的标识图的位置区域。所述巡逻机器人的识别过程可以通过神经网络来实现,通过向所述巡逻机器人输入大量的垃圾桶标识图,进行训练,使其具备识别标识图的能力,进而从拍摄到的RGB图中识别出垃圾桶上的标识图的位置区域。具体的识别过程和训练过程,在这里不再赘述。
步骤203:将所述容器的深度图转换为点云图;
由于RGB-D深度相机的深度方向与被采集到的垃圾桶标识图平面的法向量方向不是平行的,没有办法以该平面为基准,向四周检索。所以需要使垃圾桶标识图平面的法向量平行于RGB-D深度相机的深度方向,即需要使垃圾桶标识图平面的法向量与所述RGB-D深度相机所在平面的法向量平行,使垃圾桶标识图内的深度值都相等。本发明实施例中,需要把标示图平面旋转到与RGB-D深度相机所在平面平行,则需要先把深度图转为点云图。具体的转换过程如下,RGB-D深度相机中的点云坐标[x,y,z]和在深度图中的坐标[u,v,d]存在一个固定的对应关系:
x=(u-cx)*z/fx
y=(v-cy)*z/fy
其中,fx,fy指相机在x,y两个轴上的焦距,cx,cy指相机的光圈中心,s指深度图的缩放因子。
因此,转换后的点云图坐标(x,y,z)如上所示,通过上述公式可以由深度图坐标得到点云图。
步骤204:根据所述标识图在所述RGB图中的位置区域确定所述标识图在所述点云图中的点云集合P0;
由于深度图中的每一个点都可以转为对应的点云图中的一个点,同时,RGB图与深度图又是一一对应的,因此,在RGB图中找到垃圾桶的标识图的位置后,就可以根据标识图在RGB图中的位置找到属于垃圾桶标识图的点云集合P0。
步骤205:根据所述图像采集器的平面参数,将所述标识图的点云集合P0转换为与所述图像采集器所在平面平行的标识图的点云集合P1;
由于RGB-D深度相机的深度方向与被采集到的垃圾桶标识图平面的法向量方向不是平行的,无法以该平面为基准,向四周检索。所以需要使得垃圾桶标识图平面的法向量平行于RGB-D深度相机的深度方向,即需要使垃圾桶标识图平面的法向量与所述RGB-D深度相机所在平面的法向量平行,使垃圾桶标识图内的深度值都相等。
在将深度图转换为点云图,并根据RGB图中标识图的位置找到垃圾桶标识图的点云集合P0后,将根据图像采集器的平面参数将所述标识图的点云集合P0进行旋转,转换为与所述图像采集器所在平面平行的标识图的点云集合P1,具体的转换方法如图3所示。
步骤2051:获取所述标识图的点云集合P0所在平面的法向量和所述图像采集器所在平面的法向量;
根据所述标识图的点云集合P0所在平面的法向量和所述图像采集器所在平面的法向量,确定两个平面的初始位置。
步骤2052:将标识图的点云集合所在的平面旋转固定角度,求得点云集合P0所在平面与图像采集器所在平面的夹角;
将标识图的点云集合所在的平面朝图像采集器所在平面旋转固定角度后,计算两个平面的夹角的绝对值,比如:每次固定旋转0.01度,获取当前点云的法向量,再与图像采集器所在平面的法向量比较夹角大小。
步骤2053:判断所述夹角是否趋近于0度,如果否,则转步骤2054;如果是则转步骤2055;
如果所述夹角小于预设值,比如小于0.001度,则认为两个平面平行,否则认为不平行,转步骤2054,继续进行旋转,否则转步骤2055.
步骤2054:向夹角减小的方向旋转点云;
继续对所述标识图的点云集合所在的平面进行旋转。
步骤2055:得到旋转向量;
当所述标识图的点云集合所在的平面与所述图像采集器所在的平面平行时,则根据旋转的总角度,得到旋转向量,假设在上述步骤中,所述标识图的点云集合在x轴方向上旋转了角度b,则旋转向量M如下:
M=[[1,0,0],[0,cos(b),sin(b)],[0,-sin(b),cos(b)]]。
步骤2056:根据所述旋转向量转化所述标识图的点云集合P0,得到转换后的点云集合P1;
即根据上述旋转向量M,可以得到点云集合P1=<P0,M>。
步骤206:将所述转换后的标识图的点云集合P1转换为所述标识图的深度图;
根据上述旋转向量得到旋转后的点云集合P1后,重新将所述点云集合P1转换为深度图,具体的转换方法如下:
假设点云集合P1中的坐标值为[x1,y1,z1],深度图中的坐标值为[u,v,d],则:
d=z*s
其中,fx,fy指相机在x,y两个轴上的焦距,cx,cy指相机的光圈中心,s指深度图的缩放因子。
步骤207:根据所述标识图的深度图获取所述标识图的深度值集D1;
当将所述标识图的点云集合P1转化为深度图后,获取旋转后的标识图的深度值集D1。
步骤208:根据所述标识图的深度值集D1对所述容器进行识别。
以深度值集D1为基准,对所述容器进行识别,进行上下左右的深度搜索,来对所述容器进行识别。
由上可知,本发明实施例通过获取所述容器上的标识图,并对所述标识图的点云图进行旋转,得到旋转后的所述标识图对应的深度值集,基于所述深度值集对所述容器进行识别,提高了容器识别的准确性,大大提升了巡逻机器人的识别能力。
进一步的,在上述实施例的基础上,本发明实施例进一步提出了一种容器识别方法,能够智能的判断所述容器是否已经装满或者是否发生了物品溢出现象,以垃圾桶为例进行说明。
如图4和图5所示,在上述实施例中,通过确定标识图的深度值集,提高了容器识别的准确性,本实施例将以上述标识图的深度值集D1为基准进行是否发生容器溢出的判断。首先,巡逻机器人以所述标识图的深度值集D1为基准,分别向所述容器的左右两侧进行探测,获取所述容器的左右两侧的深度值,当深度值增加量大于预设第一阈值时,则说明已经探测到了容器的边缘,则将对应的深度值作为所述容器左右边缘的深度值,并根据所述容器左右边缘的深度值,获取所述容器的形状。当探测到容器的左右边缘以后,系统将沿着容器的边缘分别向上和向下进行探测。
当系统向上探测时,具体的探测过程如图4所示,包括:
步骤2081:根据所述容器的形状,沿所述容器的左右边缘向上探测,并获取深度值;
巡逻机器人沿着所述容器的左右边缘向上探测,实时获取深度值,并对所述深度值进行分析。
步骤2082:分析所述深度值的变化规律;
在探测的过程中,不断地对获取的深度值进行分析,以便确定是否到达了容器的上端部以及是否发生物品溢出。
步骤2083:若所述深度值开始不规则变化,则确定所述容器已满;
系统对获取到的一系列的深度值,进行分析,当发现所述深度值开始不规则变化时,则判断所述容器有物品溢出,并有可能覆盖到了所述容器的上边缘。以垃圾桶为例,垃圾桶上边缘往往会有突出的边缘,以便固定垃圾桶盖,如果没有垃圾覆盖所述边缘,则其边缘的深度值应该是有规律的变化。当发生了不规则变化时,则可以确定所述垃圾桶发生了垃圾溢出,并且有垃圾盖住了所述垃圾桶的上边缘,需要通知相关人员进行清理。
其中,所述“不规则变化”是指获取一系列点的深度值的变化规律,是分析相关的深度值后得出的,具体可以有多种定义方式,通常,可以统计相邻两个点之间的深度值的差值,如果各所述相邻点之间的深度值差值相差比较大,则认为所述深度值为不规则变化的;如果深度值差值相差比较小,则认为是规则变化的。在下文中提到的规则与不规则的定义均为上述方式,后续将不再赘述。
当探测到垃圾桶已满时,则通知服务人员进行垃圾清理。
步骤2084:若探测到的深度值有规则的变大,则确定所述容器未满。
系统向上探测,如果探测到的深度值有规则的变大,而且所述深度值都大于第二预设阈值,则说明容器上方为空,没有垃圾,说明垃圾桶未满。
其中,所述“有规则的变大”是指获取一系列点的深度值的变化规律,是分析相关的深度值后得出的,具体可以有多种定义方式,通常,可以统计相邻两个点之间的深度值的差值,如果所述深度值在变大,而且各所述相邻点之间的深度值差值相差比较小,或者差值相等,则认为所述深度值为有规则的变大的。
所述的第二预设阈值的设置可以根据经验进行设置,也可以采用其他方式,优选的,本发明实施例以设置于所述垃圾桶上的标识图为参考设置所述第二预设阈值。通过分析所述标识图的深度值集D1,当所述深度值集D1的深度值满足圆弧排列时,则说明所述标识图为圆形结构,则将所述圆弧的半径作为第二预设阈值。若所述标识图的深度值集D1的深度值满足直线排列,则根据所述容器左右边缘计算所述容器的宽度值,将所述宽度值的一半作为第二预设阈值。通过以所述标识图为基础设置所述第二预设阈值,可以更准确的对所述容器上边缘的垃圾进行检测。
当探测到垃圾桶未满时,则不做任何操作,继续进行巡逻。
步骤2085:若所述深度值有规则变小,继续向上探测,并获取深度值;
当获取一系列的深度值,并发现所述深度值开始有规则的变小时,根据垃圾桶的特点,则说明探测到了垃圾桶的上边缘,当探测到上边缘时,继续向上进行探测,以便确定是否有垃圾溢出所述垃圾桶。
步骤2086:若所述深度值不规则变化,则确定所述容器已满。
当探测到所述垃圾桶的上边缘时,系统继续对上边缘的上方区域进行探测,以便确定是否有垃圾溢出。当探测到所述容器上方的深度值不规则变化时,则说明垃圾桶里面的垃圾已经露出了所述垃圾桶的上边缘,说明垃圾已经满了。
当然,也会有特殊的情况发生,比如:有时在垃圾桶中放置了高度比较高的物品,突出了垃圾桶的上边缘,但垃圾桶的其他部分并没有填满,此时,不应该判断为垃圾桶已满,为了解决该种情况,本发明实施例进一步的,在探测到所述容器上边缘上方的深度值开始不规则变化之后,进一步统计在发生不规则变化的区域内的深度值大于第二预设阈值的比例,其中,当深度值大于第二预设阈值时,则说明没有垃圾;如果小于第二预设阈值,则说明有垃圾。比如:在所述垃圾桶上边缘上方,采集量N个点的深度值,其中有M个点的深度值大于预设第二阈值,则深度值大于所述预设第二阈值的比例为M/N,如果所述比例M/N小于预设第三阈值,则说明垃圾垃圾占的比例比较高,确定垃圾桶已满;如果大于或等于第三预设阈值,则说明垃圾占的比例较小,确定垃圾桶未满。
所述第二预设阈值的设置可以参考步骤2084中的设置方法,在这里不再赘述。
当系统向下探测时,具体的探测过程如图5所示,包括:
步骤2091:根据所述容器的形状,沿所述容器的左右边缘向下探测,并获取深度值;
巡逻机器人沿着所述容器的左右边缘向下探测,实时获取深度值,并对所述深度值进行分析。
步骤2092:分析所述深度值的变化规律;
在探测的过程中,不断地对获取的深度值进行分析,以便确定是否到达了容器的下端部以及是否发生物品溢出。
步骤2093:若所述深度值开始不规则变化,则确定所述容器周围有溢出物;
当沿着所述容器左右边缘向下进行探测时,如果探测到的深度值开始不规则变化,则说明垃圾桶周围出现了垃圾,探测到了垃圾的位置。
当有垃圾溢出时,则确定所述垃圾桶有垃圾溢出,通知相关人员进行清理;当然也有可能不是溢出,而是垃圾被不小心扔到了垃圾桶外面;这种情况下仍然需要通知相关人员进行清理。
其中,所述“不规则变化”是指获取一系列的深度值的变化规律,是分析相关的深度值后得出的,具体可以有多种定义方式,通常,可以统计相邻两个点之间的深度值的差值,如果各所述相邻点之间的差值相差比较大,则认为所述深度值为不规则变化的;如果差值相差比较小,则认为是规则变化的。在下文中提到的规则与不规则的定义均为上述方式,后续将不再赘述。
步骤2094:若所述深度值开始有规则变小,则确定所述容器周围没有溢出物;
当沿着所述容器左右边缘向下进行探测时,如果探测到的深度值开始有规则变小,则说明已经探测到了垃圾桶的底部位置,底部周边没有垃圾溢出。这种情况下,不需要任何处理。
其中,所述“有规则的变小”是指获取一系列点的深度值的变化规律,是分析相关的深度值后得出的,具体可以有多种定义方式,通常,可以统计相邻两个点之间的深度值的差值,如果深度值在变小,而且各所述相邻点之间的深度值差值相差比较小,或者差值相等,则认为所述深度值为有规则的变小的。
由上可知,本发明实施例通过分别对所述容器向上和向下进行探测,并对探测到的深度值进行分析,进而判断是否有溢出物,使巡逻机器人能够自主判断是否有溢出物,进而通知相关人员进行处理,提高了巡逻的效率,大大节省了人力。
综上所述,本发明实施例提供的容器识别方法,通过识别容器上的标识图,获取所述标识图的深度值集,基于所述深度值集对所述容器进行识别,提高了容器识别的准确性,同时进一步的,基于所述标识图对所述容器进行向上和向下检索,识别是否有溢出物溢出所述容器,进一步提高了容器判断的识别效率,大大节省了人力。
本发明另一实施例提供了一种容器识别装置,如图6所示,所述容器识别装置600包括:图像采集模块601、标识图确定模块602、第一图像转换模块603、点云集合确定模块604、点云拟合模块605、第二图像转换模块606和容器识别模块607,
所述图像采集模块601:用于通过图像采集器获取容器的深度图和RGB图;
所述标识图确定模块602:用于在所述RGB图中识别出预设在所述容器表面的标识图的位置区域;
所述第一图像转换模块603:用于将所述容器的深度图转换为点云图;
所述点云集合确定模块604:用于根据所述标识图在所述RGB图中的位置区域确定所述标识图在所述点云图中的点云集合P0;
所述点云拟合模块605:用于根据所述图像采集器的平面参数,将所述标识图的点云集合P0转换为与所述图像采集器所在平面平行的标识图的点云集合P1;
所述第二图像转换模块606:用于将所述转换后的标识图的点云集合P1转换为所述标识图的深度图;
所述容器识别模块607:用于根据所述标识图的深度图获取所述标识图的深度值集D1;并根据所述标识图的深度值集D1对所述容器进行识别。
进一步的,所述点云拟合模块605还用于获取所述标识图的点云集合P0所在平面的法向量和所述图像采集器所在平面的法向量;
根据所述标识图的点云集合P0所在平面的法向量和所述图像采集器所在平面的法向量获取旋转向量;
根据所述旋转向量转换所述标识图的点云集合P0得到转换后的点云集合P1。
进一步的,所述容器识别模块607还用于以所述标识图的深度值集D1为基准,获取所述容器的左右两侧的深度值,当深度值增加量大于预设第一阈值时,则将所述深度值作为所述容器左右边缘的深度值;
根据所述容器左右边缘的深度值,获取所述容器的形状。
进一步的,所述容器识别模块607还用于根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值开始不规则变化,则确定所述容器已满。
进一步的,所述容器识别模块607还用于根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值有规则变小,继续向上探测,并获取深度值;若所述深度值不规则变化,则确定所述容器已满。
进一步的,所述容器识别模块607还用于若所述深度值开始不规则变化,则统计发生不规则变化的区域内的深度值大于第二预设阈值的比例;
若所述比例小于第三预设阈值,则确定所述容器已满。
进一步的,所述容器识别模块607还用于根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值有规则变小,继续向上探测,若所述深度值大于所述第二预设阈值,则确定所述容器未满。
进一步的,所述容器识别模块607还用于根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值大于所述第二预设阈值,则确定所述容器未满。
进一步的,所述容器识别模块607还用于根据所述容器的形状,沿所述左右边缘向下探测,并获取深度值;
若所述深度值开始不规则变化,则确定所述容器周围有溢出物;
若所述深度值开始有规则变小,则确定所述容器周围没有溢出物。
进一步的,所述标识图确定模块602还用于确定第二预设阈值,用于若所述深度值集D1的深度值满足圆弧排列,则将所述圆弧的半径作为第二预设阈值;
若所述深度值集D1的深度值满足直线排列,则根据所述容器左右边缘计算所述容器的宽度值,将所述宽度值的一半作为第二预设阈值。
综上所述,本发明实施例提供的容器识别装置,通过识别容器上的标识图,获取所述标识图的深度值集,基于所述深度值集对所述容器进行识别,提高了容器识别的准确性,同时进一步的,基于所述标识图对所述容器进行向上和向下检索,识别是否有溢出物溢出所述容器,进一步提高了对所述容器的识别效率,大大节省了人力。
图7示出了本发明另一实施例提出的一种机器人的结构示意图,本发明具体实施例并不对机器人的具体实现做限定。
如图7所示,该机器人可以包括:图像采集器701、处理器(processor)702、通信接口(Communications Interface)704、存储器(memory)706、以及通信总线708。
其中:图像采集器701、处理器702、通信接口704、以及存储器706通过通信总线708完成相互间的通信。通信接口704,用于与其它设备比如客户端或其它服务器等的网元通信。处理器702,用于执行程序710,具体可以执行上述容器识别方法实施例中的相关步骤。
具体地,程序710可以包括程序代码,该程序代码包括计算机可执行指令。
所述图像采集器701可以为RGB-D深度相机或其他类型的图像采集设备,主要用于对机器人周边环境进行扫描、成像和识别。
处理器702可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。所述机器人包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器706,用于存放程序710。存储器706可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序710具体可以被处理器702调用使机器人执行以下操作:
通过图像采集器获取所述容器的深度图及RGB图;
在所述RGB图中识别出预设在所述容器表面的标识图的位置区域;
将所述容器的深度图转换为点云图;
根据所述标识图在所述RGB图中的位置区域确定所述标识图在所述点云图中的点云集合P0;
根据所述图像采集器的平面参数,将所述标识图的点云集合P0转换为与所述图像采集器所在平面平行的标识图的点云集合P1;
将所述转换后的标识图的点云集合P1转换为所述标识图的深度图;
根据所述标识图的深度图获取所述标识图的深度值集D1;
根据所述标识图的深度值集D1对所述容器进行识别。
进一步的,所述根据图像采集器的平面参数,将所述标识图的点云集合P0转换为与所述图像采集器所在平面平行的标识图的点云集合P1,包括:
获取所述标识图的点云集合P0所在平面的法向量和所述图像采集器所在平面的法向量;
根据所述标识图的点云集合P0所在平面的法向量和所述图像采集器所在平面的法向量获取旋转向量;
根据所述旋转向量转换所述标识图的点云集合P0得到转换后的点云集合P1。
进一步的,所述根据所述标识图的深度值集D1对所述容器进行识别,包括:
以所述标识图的深度值集D1为基准,获取所述容器的左右两侧的深度值,当深度值增加量大于预设第一阈值时,则将所述深度值作为所述容器左右边缘的深度值;
根据所述容器左右边缘的深度值,获取所述容器的形状。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值开始不规则变化,则确定所述容器已满。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值有规则变小,继续向上探测,并获取深度值;若所述深度值不规则变化,则确定所述容器已满。
进一步的,所述深度值开始不规则变化之后,进一步包括:
若所述深度值开始不规则变化,则统计发生不规则变化的区域内的深度值大于第二预设阈值的比例;
若所述比例小于第三预设阈值,则确定所述容器已满。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值有规则变小,继续向上探测,若所述深度值大于所述第二预设阈值,则确定所述容器未满。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向上检测,并获取深度值;
若所述深度值大于所述第二预设阈值,则确定所述容器未满。
进一步的,所述根据所述容器左右边缘的深度值,获取所述容器的形状后,进一步包括:
根据所述容器的形状,沿所述左右边缘向下探测,并获取深度值;
若所述深度值开始不规则变化,则确定所述容器周围有溢出物;
若所述深度值开始有规则变小,则确定所述容器周围没有溢出物。
进一步的,所述第二预设阈值为根据深度值集D1确定的,具体包括:
若所述深度值集D1的深度值满足圆弧排列,则将所述圆弧的半径作为第二预设阈值;
若所述深度值集D1的深度值满足直线排列,则根据所述容器左右边缘计算所述容器的宽度值,将所述宽度值的一半作为第二预设阈值。
综上所述,本发明实施例提供的机器人,通过识别容器上的标识图,获取所述标识图的深度值集,基于所述深度值集对所述容器进行识别,提高了容器识别的准确性,同时进一步的,基于所述标识图对所述容器进行向上和向下检索,识别是否有溢出物溢出所述容器,进一步提高了容器判断的识别效率,大大节省了人力。
本发明实施例提供了一种计算机可读存储介质,所述存储介质存储有至少一可执行指令,该可执行指令在容器识别装置或机器人上运行时,使得所述容器识别装置或机器人执行上述任意方法实施例中的容器识别方法,具体的执行步骤与上述容器识别方法相同,在此不再赘述。
本发明实施例提供一种容器识别装置,用于执行上述容器识别方法,具体的执行步骤与上述容器识别方法相同,在此不再赘述。
本发明实施例提供了一种计算机程序,所述计算机程序可被处理器调用使上述容器识别装置或机器人设备执行上述任意方法实施例中的容器识别方法。
本发明实施例提供了一种计算机程序产品,计算机程序产品包括存储在计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令在计算机上运行时,使得所述计算机执行上述任意方法实施例中的容器识别方法。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。