一种物体定位方法、装置及存储介质
技术领域
本发明实施例涉及视觉识别技术领域,特别涉及一种物体定位方法、装置及存储介质。
背景技术
在机器人与环境进行交互过程中,需要对所在环境进行充分的理解,对环境中物体的精确定位则在其中起到了基础性和至关重要的作用。目前常用的对环境中物体进行定位的方法之一是利用视觉信息先对物体进行识别,获得物体所在区域,然后利用深度信息或者双目视觉方法,获得物体的三维点云,并与模型库中的已有模型进行匹配,从而得到物体在相机坐标系下的精确位姿信息。
然而,发明人发现现有技术中至少存在如下问题:这种物体定位方法严重依赖于生成的三维点云质量和对应的匹配算法,当物体点云数据的质量较差,噪点较多时,会导致最终计算得到的物体位姿并不准确;且模型匹配算法通常会消耗大量的计算资源,随着点云的数量增加,匹配的时间也会成倍数增加,计算速度较慢。
发明内容
本发明实施方式的目的在于提供一种物体定位方法、装置及存储介质,减少了对待定位物体点云数据的依赖,在提高物体定位准确度的同时提升了计算速度。
为解决上述技术问题,本发明的实施方式提供了一种物体定位方法,包括:获取待定位物体的深度图像和彩色图像;获取深度图像中所有点的点云数据;根据点云数据确定待定位物体的放置面;依据彩色图像从点云数据中筛选出待定位物体的点云数据;根据待定位物体的点云数据确定待定位物体与放置面的接触位置坐标;根据接触位置坐标确定待定位物体的中心位置。
本发明的实施方式还提供了一种物体定位装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的物体定位方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述物体定位方法。
本发明实施方式相对于现有技术而言提供了一种物体定位方法,根据深度图像中所有点的点云数据确定待定位物体的放置面,从而借助所确定出的待定位物体的放置面以及筛选出的待定位物体的点云数据,确定出待定位物体与放置面的接触位置坐标,进而从而根据接触位置坐标确定待定位物体的中心位置。本实施方式中依据待定位物体的放置面与待定位物体的接触位置坐标确定待定位物体的中心位置,充分利用场景中待定位物体放置面的有效信息,由于利用待定位物体本身点云数据确定物体位置时,点云噪声影响较大,而深度图像中待定位物体的放置面的面积一般最大,所涉及的点云噪声较多,点云噪声对于确定待定位物体的放置面的影响较小,从而使得物体定位精度更更高;且不需要对整个待定位物体进行模型匹配,提升了计算速度。
另外,深度图像为多张,获取深度图像中所有点的点云数据,具体为:将每张深度图像转化为与深度图像对应的一组点云数据;根据点云数据确定待定位物体的放置面,具体包括:依据每组点云数据确定该组点云数据对应的深度图像中的平面,每张深度图像对应一个平面;从所有平面中确定一者作为待定位物体的放置面。该方案中从多张深度图像的多张平面中确定出一者作为待定位物体的放置面,相比于采用单张深度图像的平面作为待定位物体的放置面来说,提升了待定位物体的放置面的准确性。
另外,从所有平面中确定一者作为待定位物体的放置面,具体包括:计算每张深度图像中所有的点与该张深度图像中的平面的距离之和,将得到的距离之和作为该张深度图像的距离值;将距离值最小的深度图像中的平面确定为待定位物体的放置面。该方案中将距离值最小的深度图像中的平面确定为待定位物体的放置面,保证了待定位物体的放置面的计算准确性。
另外,彩色图像为多张,每张深度图像对应一张彩色图像;依据彩色图像从点云数据中筛选出待定位物体的点云数据,具体包括:将距离值最小的深度图像对应的彩色图像,输入预先训练好的神经网络模型中得到待定位物体的位置;依照位置从点云数据中筛选出待定位物体的点的点云数据。
另外,根据待定位物体的点云数据确定待定位物体与放置面的接触位置坐标,具体包括:计算待定位物体的点与放置面之间的距离;将与放置面之间的距离小于预设阈值的点的点云数据作为接触位置坐标。
另外,根据接触位置坐标确定待定位物体的中心位置,具体包括:根据接触位置坐标确定待定位物体的底面中心位置;从彩色图像中获取待定位物体的高度;根据底面中心位置以及待定位物体的高度确定待定位物体的中心位置。
另外,根据接触位置坐标确定待定位物体的底面中心位置,具体包括:预测彩色图像中待定位物体的底面形状;根据底面形状及接触位置坐标确定待定位物体的底面中心位置。该方案中直接预测待定位物体的底面形状,结合接触位置坐标确定待定位物体的底面中心位置,解决遮挡等问题导致的物体待定位物体轮廓不全的问题,从而得到精确的定位结果。
另外,根据接触位置坐标确定待定位物体的底面中心位置,具体包括:预先建立多个底面模型;将接触位置坐标与多个底面模型进行匹配确定待定位物体的底面形状;根据底面形状及接触位置坐标确定待定位物体的底面中心位置。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式的物体定位方法的流程示意图;
图2是根据本发明第二实施方式的物体定位方法的流程示意图;
图3是根据本发明第三实施方式的物体定位装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种物体定位方法,本实施方式的核心在于提供了一种物体定位方法,包括:获取待定位物体的深度图像和彩色图像;获取深度图像中所有点的点云数据;根据点云数据确定待定位物体的放置面;依据彩色图像从点云数据中筛选出待定位物体的点云数据;根据待定位物体的点云数据确定待定位物体与放置面的接触位置坐标;根据接触位置坐标确定待定位物体的中心位置。本实施方式中依据待定位物体的放置面与待定位物体的接触位置坐标确定待定位物体的中心位置,充分利用场景中待定位物体放置面的有效信息,由于利用待定位物体本身点云数据确定物体位置时,点云噪声影响较大,而深度图像中待定位物体的放置面的面积一般最大,所涉及的点云噪声较多,点云噪声对于确定待定位物体的放置面的影响较小,从而使得物体定位精度更更高;且不需要对整个待定位物体进行模型匹配,提升了计算速度。
下面对本实施方式的物体定位方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施方式中的物体定位方法的流程示意图如图1所示:
步骤101:获取待定位物体的深度图像和深度图像。
具体地说,彩色图像可以由彩色摄像头拍摄获得,深度图像可以由深度摄像头拍摄获得,也可以由两个或多个彩色摄像头的彩色图像的图像数据计算得到。深度图像和彩色图像对齐,从而确保每个彩色图像都与深度图像是对应的,然后将彩色图像数据进行校正,减少相机带来的图像失真影响。值得说明的是,获取的深度图像和彩色图像中待定位物体的放置面的面积应在图像中占据最大面积,从而保证在后续确定待定位物体的放置面的准确性。
步骤102:获取深度图像中所有点的点云数据。
具体地说,当深度图像为一张时,获取该张深度图像中所有点的点云数据;当深度图像为多张时,将每张深度图像转化为与该张深度图像对应的一组点云数据。
步骤103:根据点云数据确定待定位物体的放置面。
具体地说,当深度图像为一张时,直接依据该张深度图像的所有点的点云数据确定待定位物体的放置面。具体原理如下:由于深度图像中待定位物体的放置面的面积一般最大,因此深度图像中绝大多数的点都为放置面上的点,本实施方式中通过求取深度图像中所有点到某一平面的距离最小,则可确定出该平面为该深度图像中待定位物体的放置面。具体通过求解以下公式求解得到:
A*X=0(1)
||X||=1(3)
其中,X向量表示放置面,中间矩阵A是由所有点的点云数据和均值构成的矩阵,其中x,y,z为一个点的坐标,为所有点的均值坐标。
对中间矩阵A进行奇异值分解,假设当奇异值最小时,对应的最优解X=(a,b,c),则得到深度图像中待定位物体的放置面p的方程为:
p=ax+by+cz(4)
当深度图像为多张时,依据每组点云数据确定该组点云数据对应的深度图像中的平面,每张深度图像对应一个平面;从所有平面中确定一者作为待定位物体的放置面。具体地,从所有平面中确定一者作为待定位物体的放置面,具体包括:计算每张深度图像中所有的点与该张深度图像中的平面的距离之和,将得到的距离之和作为该张深度图像的距离值;将距离值最小的深度图像中的平面确定为待定位物体的放置面。具体通过以下公式计算得到距离值最小的深度图像中的平面:
其中,m为所有平面个数,n为点云个数;i代表第i个平面,j代表第j个点,D(pi,vij)是指第i个平面中的点vij到平面pi的距离。当E的值最小时,对应的pi即为待定位物体的放置面。相比于采用单张深度图像的平面作为待定位物体的放置面来说,计算出多张深度图像中每张深度图像的平面,并从所有平面中确定出距离值最小的深度图像中的平面确定为待定位物体的放置面,保证了待定位物体的放置面的计算准确性。
步骤104:依据彩色图像从点云数据中筛选出待定位物体的点云数据。
彩色图像为多张,每张深度图像对应一张彩色图像;依据彩色图像从点云数据中筛选出待定位物体的点云数据,具体包括:将距离值最小的深度图像对应的彩色图像,输入预先训练好的神经网络模型中得到待定位物体的位置;依照位置从点云数据中筛选出待定位物体的点的点云数据。
具体地说,将彩色图像输入到预先训练好的深度学习网络模型中,利用目标检测,确定待定位物体在图像中的位置区域,之后对照深度图像,从深度图像的点云数据中筛选出待定位物体所在的位置区域的点的点云数据。其中,深度学习网络模型的损失函数如下所示:
其中,x为置信度,c为类别,l为预测框,g为标定好的真实数据,d为补偿后的默认框,N为匹配的默认框,cx,cy为补偿后的默认框中心,w,h对应默认框的宽和高,Pos为负样本,Neg为正样本,Lloc为预测框和真值之间的L1损失函数,Lconf为多类别分类损失函数。至于本实施方式中的深度学习网络模型的训练方法,属于现有技术,本实施方式中不作过多说明。
步骤105:根据待定位物体的点云数据确定待定位物体与放置面的接触位置坐标。
根据待定位物体的点云数据确定待定位物体与放置面的接触位置坐标,具体包括:计算待定位物体的点与放置面之间的距离;将与放置面之间的距离小于预设阈值的点的点云数据作为接触位置坐标。
具体地说,在前述步骤中已经求出了待定位物体的放置面,之后又筛选出了待定位物体的点的点云数据,理论上来说,待定位物体的点中使得ax+by+cz=0的点即可以确定为待定位物体与放置面的接触位置坐标。但是,由于在根据深度图像中的点云数据确定平面时存在误差,不可能完全使得待定位物体与放置面的接触位置上的所有点满足ax+by+cz=0,因此,本实施方式中设置以预设阈值τ,认为与放置面之间的距离小于预设阈值的点即确认为待定位物体与放置面的接触位置上的点。其中,τ的取值范围可以为0~0.03m,代表距离平面0.03m范围内的待定位物体上的点都属于“待定位物体与放置面的接触位置上的点”。
步骤106:根据接触位置坐标确定待定位物体的中心位置。
根据接触位置坐标确定待定位物体的中心位置,具体包括:根据接触位置坐标确定待定位物体的底面中心位置;从彩色图像中获取待定位物体的高度;根据底面中心位置以及待定位物体的高度确定待定位物体的中心位置。
具体地说,利用接触位置坐标可以进一步估计待定位物体的底面中心位置,从彩色图像中获取待定位物体的高度后,根据放置面的方程确定该放置面的法线,将该待定位物体的底面中心位置沿着法线方向偏移一个距离,便可以得到待定位物体的中心位置。其中,偏移的距离是实际待定位物体高度的一半,或者可以根据实际待定位物体在图像中的倾斜情况来设置。
与现有技术相比,本发明实施方式提供了一种物体定位方法,根据深度图像中所有点的点云数据确定待定位物体的放置面,从而借助所确定出的待定位物体的放置面以及筛选出的待定位物体的点云数据,确定出待定位物体与放置面的接触位置坐标,进而从而根据接触位置坐标确定待定位物体的中心位置。本实施方式中依据待定位物体的放置面与待定位物体的接触位置坐标确定待定位物体的中心位置,充分利用场景中待定位物体放置面的有效信息,由于利用待定位物体本身点云数据确定物体位置时,点云噪声影响较大,而深度图像中待定位物体的放置面的面积一般最大,所涉及的点云噪声较多,点云噪声对于确定待定位物体的放置面的影响较小,从而使得物体定位精度更更高;且不需要对整个待定位物体进行模型匹配,提升了计算速度。
本发明的第二实施方式涉及一种物体定位方法。第二实施方式是对第一实施方式的改进,主要改进之处在于,该方案中直接预测待定位物体的底面形状,结合接触位置坐标确定待定位物体的底面中心位置,解决遮挡等问题导致的物体待定位物体轮廓不全的问题,从而得到精确的定位结果。
本实施方式中的物体定位方法的流程示意图如图2所示,具体包括:
步骤201:获取待定位物体的深度图像和深度图像。
步骤202:获取深度图像中所有点的点云数据。
步骤203:根据点云数据确定待定位物体的放置面。
步骤204:依据彩色图像从点云数据中筛选出待定位物体的点云数据。
步骤205:根据待定位物体的点云数据确定待定位物体与放置面的接触位置坐标。
上述步骤201至步骤205与第一实施方式中的101至步骤105大致相同,为避免重复,在此不再赘述。
步骤206:预测彩色图像中待定位物体的底面形状。
步骤207:根据底面形状及接触位置坐标确定待定位物体的底面中心位置。
具体地说,此种实现方式主要是针对形状简单有规则的物体,可以利用接触位置坐标的几何特征,结合待定位物体本身固有的几何特性(比如圆形,方形等),直接预测出待定位物体的底面形状,从而根据底面形状及接触位置坐标确定待定位物体的底面中心位置。该方案中直接预测待定位物体的底面形状,结合接触位置坐标确定待定位物体的底面中心位置,解决遮挡等问题导致的物体待定位物体轮廓不全的问题,从而得到一个更加精确的定位结果。
作为另一种可替换的实现方式,根据接触位置坐标确定待定位物体的底面中心位置,具体包括:预先建立多个底面模型;将接触位置坐标与多个底面模型进行匹配确定待定位物体的底面形状;根据底面形状及接触位置坐标确定待定位物体的底面中心位置。此种实现方式主要是针对形状不规则的物体,由于待定位物体本身特性很难用数学表示出来,不能直接进行预测,则可以通过预先建立一个简单的底面模型,然后接触位置坐标与模型进行匹配,从而确定待定位物体的底面形状,进而根据底面形状及接触位置坐标确定待定位物体的底面中心位置。
值得说明的是,除上述两种实现方式外,也可以利用深度学习训练一个网络模型来通过接触位置坐标来估计物体底面形状,本实施方式中不进行过多说明。
与现有技术相比,本发明实施方式中提供了一种物体定位方法,根据接触位置坐标确定待定位物体的底面中心位置,具体包括:预测彩色图像中待定位物体的底面形状;根据底面形状及接触位置坐标确定待定位物体的底面中心位置。该方案中直接预测待定位物体的底面形状,结合接触位置坐标确定待定位物体的底面中心位置,解决遮挡等问题导致的物体待定位物体轮廓不全的问题,从而得到精确的定位结果。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第三实施方式涉及一种物体定位装置,如图3所示,包括至少一个处理器301;以及,与至少一个处理器301通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够执行上述第一或第二实施方式中的物体定位方法。
其中,存储器302和处理器301采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器301和存储器302的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器301处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器301。
处理器301负责管理总线和通常的处理,还可以提供各种功能,包括定时、外围接口、电压调节、电源管理以及其他控制功能。而存储器302可以被用于存储处理器301在执行操作时所使用的数据。
本发明第四实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一或第二实施方式中的物体定位方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。