CN109033989A - 基于三维点云的目标识别方法、装置及存储介质 - Google Patents
基于三维点云的目标识别方法、装置及存储介质 Download PDFInfo
- Publication number
- CN109033989A CN109033989A CN201810707859.4A CN201810707859A CN109033989A CN 109033989 A CN109033989 A CN 109033989A CN 201810707859 A CN201810707859 A CN 201810707859A CN 109033989 A CN109033989 A CN 109033989A
- Authority
- CN
- China
- Prior art keywords
- posture
- point cloud
- model
- dimensional point
- camera
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/64—Three-dimensional objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20016—Hierarchical, coarse-to-fine, multiscale or multiresolution image processing; Pyramid transform
Abstract
本发明实施例提供了一种基于三维点云的目标识别方法、装置及存储介质,所述方法包括:生成模型的三维姿态LUT;生成三维点云金字塔;对三维姿态聚类;基于点云金字塔的目标识别。通过采用本发明实施例所述方法,能很好的解决在工业上对无序目标的识别与抓取,通过使用待识别的目标stl文件,可以在当前的三维点云场景中快速地识别出目标的位置与姿态,识别时间短,识别精度高。
Description
技术领域
本发明涉及机器视觉领域,尤其涉及一种基于三维点云的目标识别方法、装置及存储介质。
背景技术
在当前的工业自动化生产中,对人的依赖程度越来越低。一方面由于传统的自动化生产已经经过了长时间的发展与完善,对大部分的固定场景都能够比较好的解决,比如汽车配件安装,汽车喷漆工艺,自动焊接等,在这些工业场景中,通常是由机械臂与目标之间进行事先的校准,然后按照完全固定的方式进行工作。另一方面,由于机器视觉技术的发展,大部分的二维目标识别与检测任务都可以在受控环境下得到很好的解决。但是,对于工业上的无序目标的识别与抓取,当前并没有很好的解决方案。
发明内容
有鉴于此,本发明的目的在于提供一种基于三维点云的目标识别方法及其装置,旨在实时识别定位工业现场的三维目标的位置与姿态,以方便后续的工业自动化处理。
本发明解决上述技术问题所采用的技术方案如下:
本发明的第一方面提供一种基于三维点云的目标识别方法,该方法包括:
生成模型的三维姿态LUT;
生成三维点云金字塔;
对三维姿态聚类;
基于点云金字塔的目标识别。
在一些实施例中,所述生成模型的三维姿态LUT包括步骤:
将模型坐标系对齐到相机1坐标系下,使用欧拉XYZ旋转角θX,θY,θZ,将模型依次按照dX=π/180,dY=π/180,dZ=π/180的步长进行旋转;
生成当前姿态下的模型点云,并储存在以(i,j,k)为索引的查询表中。
在一些实施例中,所述生成当前姿态下的模型点云方法包括步骤:
输入欧拉旋转角表示的模型姿态(θX,θY,θZ);
将模型姿态变换到相机1的坐标下,并移至相机的光轴位置(0,0,Zok),其中深度位置为Zok;
使用OpenGL分别在相机1与相机2的位置设置模拟相机,模拟相机的内外参数根据实际相机配置;
使用模拟相机对当前姿态的模型进行拍照,得到图像img1和img2;
计算当前模型在相机1与相机2坐标系下的深度图;
分别扫描图像img1和img2上的所有像素位置,计算有效的模型在图上的二维点(uj,vj)与深度值zj;
将二维像素点(uj,vj)与深度值zj转化为相机1坐标系下的三维坐标,转换公式为:
其中,u0,v0为相机1光轴的图像坐标值,f为相机1的焦距;
筛选三维点,输出当前姿态下的三维模型点云。
在一些实施例中,所述筛选三维点,输出当前姿态下的三维模型点云包括步骤:
将相机1坐标系下的坐标转换到模型坐标系下,当前模型姿态θX,θY,θZ的坐标系到相机1的坐标系变换为保存此三维坐标
计算相机2坐标系下的有效模型三维点先将其转换到相机1的坐标系下然后再转换到模型坐标系下转换公式如下
其中,与为相机2坐标系到世界坐标系的转换,与tw←C1为相机1坐标系到世界坐标系的转换。
在一些实施例中,所述方法还可包括:判断三维点的两端直线方向上是否存在相机1的三维坐标点,如不存在,则将加入模型的三维坐标点集合,否则抛弃该三维点。
在一实施例中,所述生成三维点云金字塔包括步骤:
创建第1层金字塔,在大小为(Wpxl Hpxl Dpxl)分辨率为resl(l)的三维像素中,搜索位于其中的三维点云,如果每个三维像素中包含的三维点云不为空,则设其为true,否则设为false;
创建1层以上的金字塔,三维像素尺寸为Wpxl=Wmax/resl(l)+1,Hpxl=Hmax/resl(l)+1,Dpxl=Dmax/resl(l)+1。
在一实施例中,所述创建1层以上的金字塔包括方法:直接计算每个三维像素内是否包含原始的点云,再将点云坐标映射到三维像素索引时,将点云坐标偏移半个该层的分辨率大小。
在一实施例中,所述创建1层以上的金字塔包括方法:从下一层的计算上直接计算获取,上层三维像素值为
其中为第l层索引为(w,h,d)的三维像素值,OR为逻辑或运算操作;保存作为最终的计算结果。
在一实施例中,所述对三维姿态聚类包括步骤:
评估函数计算在位置tw←m处姿态的评估值;
其中,为距离评估函数,距离x=0时获得最大评估值1;
为模型上的三维点云i;
为当前点云中与模型上的三维点云i最近的三维点;
为当前模型坐标系到世界坐标系的旋转矩阵,即当前的姿态矩阵;
tw←m为模型坐标系到直角坐标系的平移量,即当前的搜索位置;
NR为当前姿态的模型上的三维点云数目。
在一实施例中,所述对三维姿态聚类包括步骤:
随机抽取Ns个姿态,Ns一般选为姿态总数目的20%;
选择第1个姿态,再从剩下Ns-1个姿态中选择与第1个姿态之间的距离大于指定距离dc的姿态,将这些姿态加入第1个姿态所属的类,选择第1个姿态作为种子;对剩下的姿态采用相同的方法,共生成个类其中 为类i中第j个姿态的姿态索引,Li为当前类i的姿态数目,ki为姿态i的种子姿态索引;姿态间的距离计算方法如下:
其中,为姿态1上的三维点i,为姿态2上与姿态1上的三维点i最近的三维点;
以生成的个种子类Si(ki)为基础,如果姿态j与种子类i中的种子姿态ki距离大于给定的阈值dc,则将姿态j加入种子类i:
如果某个姿态不属于任何种子类Si(ki),则以该姿态为种子建立新的种子类
在一实施例中,所述基于点云金字塔的目标识别包括步骤:
金字塔顶层的初始位置与姿态搜索;
使用上一层的初始位置与姿态作为初始值,在下一层进行搜索;
判断是否搜索到金字塔的最底层,如果不是最底层,则在上一层保存的有效位置与对应姿态附近搜索该层的有效位置与姿态;如果没有搜索到任何有效位置,则识别失败,返回识别失败结果;
如果搜索到最底层,则在上一层的搜索位置附近使用对应的点云类中的所有姿态进行搜索,获取得到局部极大值的位置与姿态;
输出检测的所有模型位置与姿态。
本发明的第二方面还提供一种基于三维点云的目标识别装置,包括:
模型点云LUT生成模块,用于生成模型的三维姿态LUT;
三维场景金字塔生成模块,用于对三维点云创建金字塔模型;
点云聚类模块,用于将生成的多个姿态下的模型点云按照点云的相似度进行聚类;
以及点云金字塔目标识别模块,用于对点云金字塔从顶层到底层进行逐层精细的搜索获取模型的位置与姿态。
本发明的第三方面还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述所述方法中的步骤。
本发明实施例提供的一种基于点云的三维目标识别方法及装置能很好的解决在工业上对无序目标的识别与抓取问题,通过使用上述本发明实施例方法可以在当前的三维点云场景中快速地识别出目标的位置与姿态,识别时间短,识别精度高。
附图说明
图1为本发明实施例的基于点云的三维目标识别方法流程图;
图2为本发明实施例的生成模型点云LUT的方法流程图;
图3为本发明实施例的生成当前姿态下的三维模型点云流程图;
图4为本发明实施例的三维点云金字塔生成示意图;
图5为本发明实施例的基于点云金字塔的目标识别方法流程图;
图6为本发明实施例的基于点云的三维目标识别装置结构框图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对于现有技术中无法很好解决工业上对无序目标的识别与抓取的问题,本发明提出一种基于三维点云的目标识别方法及其装置,能快速识别定位工业现场的三维目标的位置与姿态,从而方便后续的工业自动化处理。
本发明提出的一种基于三维点云的目标识别方法通过利用现有的stl(StandardTemplate Library的简称,中文名标准模板库)三维模型文件,在当前的三维点云中寻找匹配到该模型的目标的位置与姿态(位置与姿态可以是多个)。
本发明实施例所述方法可以实现2秒以内的识别速度,能极好地较快地满足自动化现场的工作要求,且识别精度高。下面本发明实施例将以2个相机的三维场景为例进行说明。
名词及函数定义:
定义在位置tw←m、姿态为时的评估函数为:
其中,为距离评估函数,距离x=0时获得最大评估值1;
为模型上的三维点云i;
为当前点云中与模型上的三维点云i最近的三维点;
为当前模型坐标系到世界坐标系的旋转矩阵,即当前的姿态矩阵;
tw←m为模型坐标系到直角坐标系的平移量,即当前的搜索位置;
NR为当前姿态的模型上的三维点云数目。
定义识别任务为寻找评估函数大于指定阈值thrreg=0.7,并且评估函数为局部极大值,即
其中为的邻域姿态,tw←m为的邻域位置。
实施例一:
本发明提供的一种基于三维点云的目标识别方法,具体包括以下步骤:
S1:生成模型的三维姿态LUT(Look Up Table显示查找表)
S11将模型坐标系对齐到相机1坐标系下(包括原点与姿态也均分别对齐),使用欧拉XYZ旋转角θX,θY,θZ,将模型依次按照dX=π/180,dY=π/180,dZ=π/180的步长进行旋转,x,y,z方向的旋转角度范围均为(-π,π)。
S12设当前的姿态索引为(i,j,k),则当前的姿态表示为θX=-π+i*dX,θY=-π+j*dY,θZ=-π+k*dZ,生成当前姿态下的模型点云并储存在以(i,j,k)为索引的查询表中,步骤如图2所示,具体包括:
判断θX与π的大小关系;当θX<π为YES时,则进入下一步,判断θY与π的大小关系;当θX<π为NO时,则输出结束。
判断θY与π的大小关系;当θY<π为YES时,则进入下一步,判断θZ与π的大小关系;当θX<π为NO时,则初始化θY,θZ为-π,更新θX←θX+dX,并返回到上一步继续判断θX与π的大小关系;
判断θZ与π的大小关系;当θZ<π为YES时,则进入下一步,生成模型姿态(θX,θY,θZ)的点云;当θZ<π为NO时,则初始化θZ为-π,并更新θY←θY+dY,并返回到上一步继续判断θY与π的大小关系。
S13当前姿态(θX,θY,θZ)的模型点云生成方法如图3所示,该生成方法主要使用OpenGL模拟相机对虚拟模型进行点云抽取,具体步骤如下:
S131、输入欧拉旋转角表示的模型姿态(θX,θY,θZ)。
S132、将模型姿态变换到相机1的坐标下,并移至相机的光轴位置(0,0,Zok),其中深度位置为Zok。
S133、使用OpenGL(全写Open Graphics Library,开放图形库)分别在相机1与相机2的位置设置模拟相机,模拟相机的内外参数根据实际相机配置。
S134、使用模拟相机对当前姿态的模型进行拍照,得到图像img1和img2;
具体地,通过模拟相机分别对位于相机1和相机2的深度位置Zok的模型进行拍照,分别得到图像img1和img2。
S135、计算当前模型在相机1与相机2坐标系下的深度图;
具体地,使用相机1与相机2对模型分别生成深度图,深度图表示模型上的三维点到相机坐标系原点的Z方向上的距离。
S136、分别扫描图像img1和img2上的所有像素位置,计算有效的模型在图上的二维像素点与深度值(uj,vj,zj)。
具体地,分别扫描相机1图像img1上的像素点(uj,vj),根据OpenGL生成的深度图判断该像素点是否为模型表面的有效映射点,如果是,则可以得到其对应的图表面上的二维点(uj,vj)及其深度值zj。
S137、将二维点与深度值(uj,vj,zj)转化为相机1坐标系下的三维坐标,转换公式为:
其中,u0,v0为相机1光轴的图像坐标值,f为相机1的焦距。
S138、筛选三维点,输出当前姿态下的三维模型点云;
具体地,将相机1坐标系下的坐标转换到模型坐标系下,当前模型姿态θX,θY,θZ的坐标系到相机1的坐标系变换为保存此三维坐标
同相机1一样,扫描相机2拍摄的图像img2,计算相机2坐标系下的有效模型三维点先将其转换到相机1的坐标系下然后再转换到模型坐标系下转换公式如下
其中,与为相机2坐标系到世界坐标系的转换,与tw←C1为相机1坐标系到世界坐标系的转换。
具体地,获取相机2的三维模型点云的方法和上述相机1的三维模型点云的方法基本相同,在此不再赘述。
判断三维点的两端直线方向上是否存在相机1的三维坐标点,如不存在,则将加入模型的三维坐标点集合,否则抛弃该三维点。
如采用多个相机M,则采用同相机2一致的获取三维模型点云的方式进行,首先计算相机M坐标系下的有效位置,并将其转换到模型坐标系下,然后采用同上述相机2同样的方法进行融合处理,在此不再赘述。
如果最终获取的点云数目N远大于事先给定的点云数Np,则需要对点云进行删减,删减方法为重新进行均匀采样,即以Np/N的采样率对获取的三维样本点进行重新筛选。
S2.生成三维点云金字塔
生成三维点云金字塔是为了加快搜索速度,因为通常情况下点云的数量都比较庞大,直接在原始点云上进行位置与姿态搜索是非常低效的。为此,可以先在较高层次上进行近似的搜索,然后在下一层中以上层的搜索位置为基础进行进一步的搜索,这样既保证了最终的搜索精度,又得到了极高的搜索效率。
设金字塔高度为L,层级l的空间分辨率为resl(l)=2l-1max(W/wimg,Hmax/himg),最底层的空间像素大小为Wpxl=Wmax/resl(1)+1,Hpxl=Hmax/resl(1)+1,Dpxl=Dmax/resl(1)+1,其中[Wmax Hmax Dmax]为搜索空间实际的最大搜索宽度(mm),长度(mm)与深度(mm),wimg为拍摄的图像像素宽度(mm),himg为拍摄的图像像素长度(mm),这里设两个相机拍摄的图像的像素尺寸一致。
在一实施例中,假设金字塔高度L=6,层级l的空间分辨率为resl(l)=2l-1max(Wmax/wimg,Hmax/himg)=2l-1/1.024,最底层的空间像素大小为Wpxl=Wmax/resl(1)+1,Hpxl=Hmax/resl(1)+1,Dpxl=Dmax/resl(1)+1,则其中[Wmax=1000 Hmax=1000 Dmax=1500]分别为搜索空间实际的最大搜索宽度W(mm),H长度(mm)与D深度(mm),wimg=1024为拍摄的图像像素宽度,himg=1280为拍摄的图像像素长度,这里设两个相机拍摄的图像像素尺寸一致。
具体地金字塔的创建步骤如下:
S21、创建第1层金字塔,在大小为(Wpxl Hpxl Dpxl)分辨率为resl(l)的三维像素中,搜索位于其中的三维点云,如果每个三维像素中包含的三维点云不为空,则设其为true,否则设为false。
S22、创建1层以上的金字塔,三维像素尺寸为Wpxl=Wmax/resl(l)+1,Hpxl=Hmax/resl(l)+1,Dpxl=Dmax/resl(l)+1。以两种方法进行创建,第一种方法是与第一层相同的方法,直接计算每个三维像素内是否包含原始的点云,再将点云坐标映射到三维像素索引时,将点云坐标偏移半个该层的分辨率大小。第二方法是从下一层的计算上直接计算获取,即上层三维像素值为其中为第l层索引为(w,h,d)的三维像素值,OR为逻辑或运算操作,i,j,k∈{0,1}表示将第l层索引为(2w+i,2h+j,2d+k)的8个(2x2x2)三维像素的值进行或运算,如图4所示。将两种方法计算的对应索引的三维像素值进行或运算,保存作为最终的计算结果。
S23点云金字塔中最底层除了保存三维像素内存在的点云外,还保存了点云的法向量信息。以方便后续的使用,最底层以上的金字塔仅保存有三维像素内点云的存在信息。
S3.对三维姿态聚类
评估函数计算在位置tw←m处姿态的评估值。
由于姿态的邻近姿态(如欧拉XYZ旋转角前后一个旋转步长)会产生相似的评估值,而在金字塔上的较上层上进行搜索时,并不能得到精确的有效位置与姿态,因此没有必要对所有的姿态进行评估,仅评估具有代表性的姿态就可以实现有效姿态的筛选。
每一个模型姿态都是由一系列三维点云构成,并且每个模型姿态的三维点云个数并不一致。由于姿态是旋转角度的连续变化,一个姿态可能与多个距离较远的姿态成为相邻姿态,也就是说在聚类时某些姿态可能被分到多个类别中去。而传统的聚类方法(如Mean-Shift等)不能很好的解决这个问题,这里采用随机抽取种子并持续分裂合并的方法进行聚类,具体步骤如下:
①随机抽取Ns个姿态,Ns一般选为姿态总数目的20%;在一实施例中,金字塔高度L=6,层级l的空间分辨率为resl(l)=2l-1max(Wmax/wimg,Hmax/himg)=2l-1/1.024中,Ns即359×359×359×0.2。
②选择第1个姿态,再从剩下Ns-1个姿态中选择与第1个姿态之间的距离大于指定距离dc的姿态,dc取值范围为[0.4,0.8],将这些姿态加入第1个姿态所属的类,选择第1个姿态作为种子;对剩下的姿态采用相同的方法,共生成个类其中为类i中第j个姿态的姿态索引(在全部姿态中),Li为当前类i的姿态数目,ki为姿态i的种子姿态索引(在全部姿态中);姿态间的距离计算方法如下:
其中,为姿态1上的三维点i,为姿态2上与姿态1上的三维点i最近的三维点。
在一实施例中,指定距离dc=0.6。
③以生成的个种子类Si(ki)为基础,如果姿态j与种子类i中的种子姿态ki距离大于给定的阈值dc,则将姿态j加入种子类i:否则跳到步骤④。如果一个姿态与多个种子类中的种子姿态之间的距离大于给定阈值,那么该姿态可以加入多个种子类。
④如果某个姿态不属于任何种子类Si(ki),则以该姿态为种子建立新的种子类
⑤循环执行步骤③④,直至所有的姿态均属于至少一个类。
S4.基于点云金字塔的目标识别
基于点云金字塔的目标识别采用的是从顶层到底层的(从粗到精)的逐层识别方法,最终在最底层实现最大精度的搜索,具体流程如图5所示,包括如下步骤:
S41、金字塔顶层的初始位置与姿态搜索;
具体地,顶层全面搜索初始值,由于顶层的点云进行了缩放,在计算位置及点云位置时需要还原到原始尺寸。由于在顶层没有采用精确的搜索,在每个位置处计算模型点云种子类i的评估值为如下式所示,其中表示类Si(ki)中的种子姿态
S42、使用上一层的初始位置与姿态作为初始值,在下一层进行搜索;
具体地,保存金字塔顶层的有效评估位置与对应的姿态集合,有效评估当前位置与模型点云种子类的评估值f(Si(ki),tw←m),当当前位置与模型点云种子类的评估值f(Si(ki),tw←m)大于指定的阈值时,则该位置与点云类被保存作为下一层的搜索起点。如果没有检测到任何有效位置,则识别失败,返回识别失败结果。
S43、判断是否搜索到金字塔的最底层,如果不是最底层,则在上一层保存的有效位置与对应姿态附近搜索该层的有效位置与姿态;如果没有搜索到任何有效位置,则识别失败,返回识别失败结果。
S44、如果搜索到最底层,则在上一层的搜索位置附近使用对应的点云类中的所有姿态进行搜索,使用上述精细的评估函数搜索最底层的位置与姿态,获取得到局部极大值的位置与姿态。
S45、输出检测的所有模型位置与姿态;
具体地,对搜索到的多个局部极大值的位置与姿态,按照评估值进行从大到小排序,删除评估值小于给定阈值thrreg的解,输出剩下的解并作为识别结果。
在一实施例中,所述阈值thrreg=0.7,当删除评估值小于给阈值0.7时,输出剩下的解作为识别结果。
本发明实施例通过使用上述方法能在当前的三维点云场景中快速地识别出目标的位置与姿态,经试验证明识别时间小于2秒,识别精度小于0.1mm。
通过采用本发明实施例所述方法,能很好的解决在工业上对无序目标的识别与抓取,通过使用待识别的目标st l文件,可以在当前的三维点云场景中快速得识别出目标的位置与姿态,识别时间短,识别精度高。
实施例二
本发明实施例还提供一种基于三维点云的目标识别装置,请参阅图6,所述装置包括如下模块:
模型点云LUT生成模块10,三维场景金字塔生成模块20,模型点云聚类模块30以及点云金字塔目标识别模块40。
所述模型点云LUT生成模块10,用于生成模型的三维姿态LUT;
所述模型点云LUT生成模块10包括旋转单元101,模型点云生成单元102以及模型点云储存单元103。
所述旋转单元101,用于将模型坐标系对齐到相机1坐标系下,使用欧拉XYZ旋转角θX,θY,θZ,将模型依次按照dX=π/180,dY=π/180,dZ=π/180的步长进行旋转;其中,x,y,z方向的旋转角度范围均为(-π,π)。
所述模型点云生成单元102,用于生成当前姿态(θX,θY,θZ)的模型点云。主要使用OpenGL模拟相机对虚拟模型进行点云抽取。
所述模型点云储存单元103,用于对当前姿态(θX,θY,θZ)的模型点云进行储存在以(i,j,k)为索引的查询表中。
所述三维场景金字塔生成模块20,用于对三维点云按照预定规则创建金字塔。
生成三维点云金字塔是为了加快搜索速度,因为通常情况下点云的数量都比较庞大,直接在原始点云上进行位置与姿态搜索是非常低效的。为此,可以先在较高层次上进行近似的搜索,然后在下一层中以上层的搜索位置为基础进行进一步的搜索,这样既保证了最终的搜索精度,又得到了极高的搜索效率。
金字塔创建规则如下:
S21、创建第1层金字塔,在大小为(Wpxl Hpxl Dpxl)分辨率为resl(l)的三维像素中,搜索位于其中的三维点云,如果每个三维像素中包含的三维点云不为空,则设其为true,否则设为false。
S22、创建1层以上的金字塔,三维像素尺寸为Wpxl=Wmax/resl(l)+1,Hpxl=Hmax/resl(l)+1,Dpxl=Dmax/resl(l)+1。以两种方法进行创建,第一种方法是与第一层相同的方法,直接计算每个三维像素内是否包含原始的点云,再将点云坐标映射到三维像素索引时,将点云坐标偏移半个该层的分辨率大小。第二方法是从下一层的计算上直接计算获取,即上层三维像素值为其中为第l层索引为(w,h,d)的三维像素值,OR为逻辑或运算操作,i,j,k∈{0,1}表示将第l层索引为(2w+i,2h+j,2d+k)的8个(2x2x2)三维像素的值进行或运算,如图4所示。将两种方法计算的对应索引的三维像素值进行或运算,保存作为最终的计算结果。
S23点云金字塔中最底层除了保存三维像素内点云的存在与否,还保存了点云的法向量信息。以方便后续的使用,最低层以上的金字塔仅保存有三维像素内点云的存在信息。
所述模型点云聚类模块30,用于将生成的多个姿态下的模型点云按照点云的相似度进行聚类,以加速对除底层外的姿态搜索。
由于姿态的邻近姿态(如欧拉XYZ旋转角前后一个旋转步长)会产生相似的评估值,而在金字塔上的较上层上进行搜索时,并不能得到精确的有效位置与姿态,因此没有必要对所有的姿态进行评估,仅评估具有代表性的姿态就可以实现有效姿态的筛选。
每一个模型姿态都是由一系列三维点云构成,并且每个模型姿态的三维点云个数并不一致。由于姿态是旋转角度的连续变化,一个姿态可能与多个距离较远的姿态成为相邻姿态,也就是说在聚类时某些姿态可能被分到多个类别中去。
所述模型点云聚类模块30主要通过随机抽取种子并持续分裂合并的方法进行聚类。
所述点云金字塔目标识别模块40,用于对点云金字塔从顶层到底层进行逐层精细的搜索获取模型的位置与姿态。
所述点云金字塔目标识别模块40包括初始位置搜索单元401、分层搜索单元402、判断单元403以及输出检测单元404。
所述初始位置搜索单元401,用于对金字塔顶层的初始位置与姿态进行搜索。
顶层全面搜索初始值,由于顶层的点云进行了缩放,在计算位置及点云位置时需要还原到原始尺寸。由于在顶层没有采用精确的搜索,在每个位置处计算模型点云种子类i的评估值为如下式所示,其中表示类Si(ki)中的种子姿态
所述分层搜索单元402,用于使用上一层的初始位置与姿态作为初始值,在下一层进行搜索。
具体地,保存金字塔顶层的有效评估位置与对应的姿态集合,有效评估当前位置与模型点云种子类的评估值f(Si(ki),tw←m),当当前位置与模型点云种子类的评估值f(Si(ki),tw←m)大于指定的阈值时,则该位置与点云类被保存作为下一层的搜索起点。如果没有检测到任何有效位置,则识别失败,返回识别失败结果。
判断单元403,用于判断是否有搜索到金字塔的最底层;如果不是最底层,则在上一层保存的有效位置与对应姿态附近搜索该层的有效位置与姿态;如果没有搜索到任何有效位置,则识别失败,返回识别失败结果;如果搜索到最底层;则在上一层的搜索位置附近使用对应的点云类中的所有姿态进行搜索,获取得到局部极大值的位置与姿态。
所述输出检测单元404,用于输出检测的所有模型位置与姿态。
具体地,对搜索到的多个局部极大值的位置与姿态,按照评估值进行从大到小排序,删除评估值小于给定阈值thrreg的解,输出剩下的解作为识别结果。
本发明所述点云的三维目标识别装置通过模型点云LUT生成模块10将待识别目标的stl三维文件在系统中进行姿态旋转,以获取不同姿态下的模型点云;然后通过三维场景金字塔生成模块20,将当前的三维点云场景进行多个尺度的缩放,提高目标位置与姿态搜索速度,从而方便后续的搜索;再由模型点云聚类模块30将生成的多个姿态下的模型点云按照点云的相似度进行聚类,以加速除底层外的姿态搜索;然后通过点云金字塔的目标识别模块10在前述的点云金字塔的基础上,使用聚类的模型点云对除底层外的金字塔层进行快速搜索,对金字塔底层使用种子类对应的所有姿态进行精细搜索,从而得到最终的识别结果。
通过使用本发明所述装置能快速的对无序的三维目标进行识别,快速识别定位工业现场的三维目标位置与姿态,从而方便后续的工业自动化处理,并且识别精度高。
实施例三:
根据本发明的一个实施例提供的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述基于点云的三维目标识别方法中的步骤,具体步骤如实施例一中描述所述,在此不再赘述。
本实施例中的存储器可用于存储软件程序以及各种数据。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
根据本实施例的一个示例,上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。该存储介质包括但不限于磁碟、优盘、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
Claims (13)
1.一种基于三维点云的目标识别方法,其特征在于,包括步骤:
生成模型的三维姿态LUT;
生成三维点云金字塔;
对三维姿态聚类;
基于点云金字塔的目标识别。
2.根据权利要求1所述的基于三维点云的目标识别方法,其特征在于,所述生成模型的三维姿态LUT包括步骤:
将模型坐标系对齐到相机1坐标系下,使用欧拉XYZ旋转角θX,θY,θZ,将模型依次按照dX=π/180,dY=π/180,dZ=π/180的步长进行旋转;
生成当前姿态下的模型点云,并储存在以(i,j,k)为索引的查询表中。
3.根据权利要求2所述的基于三维点云的目标识别方法,其特征在于,所述生成当前姿态下的模型点云方法包括步骤:
输入欧拉旋转角表示的模型姿态(θX,θY,θZ);
将模型姿态变换到相机1的坐标下,并移至相机的光轴位置(0,0,Zok),其中深度位置为Zok;
使用OpenGL分别在相机1与相机2的位置设置模拟相机,模拟相机的内外参数根据实际相机配置;
使用模拟相机对当前姿态的模型进行拍照,得到图像img1和img2;
计算当前模型在相机1与相机2坐标系下的深度图;
分别扫描图像img1和img2上的所有像素位置,计算有效的模型在图上的二维点(uj,vj)与深度值zj;
将二维像素点(uj,vj)与深度值zj转化为相机1坐标系下的三维坐标,转换公式为:
其中,u0,v0为相机1光轴的图像坐标值,f为相机1的焦距;
筛选三维点,输出当前姿态下的三维模型点云。
4.根据权利要求3所述的基于三维点云的目标识别方法,其特征在于,所述筛选三维点,输出当前姿态下的三维模型点云包括步骤:
将相机1坐标系下的坐标转换到模型坐标系下,当前模型姿态θX,θY,θZ的坐标系到相机1的坐标系变换为保存此三维坐标
计算相机2坐标系下的有效模型三维点先将其转换到相机1的坐标系下然后再转换到模型坐标系下转换公式如下
其中,与为相机2坐标系到世界坐标系的转换,与tw←C1为相机1坐标系到世界坐标系的转换。
5.根据权利要求4所述的基于三维点云的目标识别方法,其特征在于,还包括步骤:
判断三维点的两端直线方向上是否存在相机1的三维坐标点,如不存在,则将加入模型的三维坐标点集合,否则抛弃该三维点。
6.根据权利要求1所述的基于三维点云的目标识别方法,其特征在于,所述生成三维点云金字塔包括步骤:
创建第1层金字塔,在大小为(Wpxl Hpxl Dpxl)分辨率为resl(l)的三维像素中,搜索位于其中的三维点云,如果每个三维像素中包含的三维点云不为空,则设其为true,否则设为false;
创建1层以上的金字塔,三维像素尺寸为Wpxl=Wmax/resl(l)+1,Hpxl=Hmax/resl(l)+1,Dpxl=Dmax/resl(l)+1。
7.根据权利要求1所述的基于三维点云的目标识别方法,其特征在于,所述创建1层以上的金字塔包括方法:直接计算每个三维像素内是否包含原始的点云,再将点云坐标映射到三维像素索引时,将点云坐标偏移半个该层的分辨率大小。
8.根据权利要求1或7所述的基于三维点云的目标识别方法,其特征在于,所述创建1层以上的金字塔包括方法:从下一层的计算上直接计算获取,上层三维像素值为
其中为第l层索引为(w,h,d)的三维像素值,OR为逻辑或运算操作;保存作为最终的计算结果。
9.根据权利要求1所述的基于三维点云的目标识别方法,其特征在于,所述对三维姿态聚类包括步骤:
评估函数计算在位置tw←m处姿态的评估值;
其中,为距离评估函数,距离x=0时获得最大评估值1;
为模型上的三维点云i;
为当前点云中与模型上的三维点云i最近的三维点;
为当前模型坐标系到世界坐标系的旋转矩阵,即当前的姿态矩阵;
tw←m为模型坐标系到直角坐标系的平移量,即当前的搜索位置;
NR为当前姿态的模型上的三维点云数目。
10.根据权利要求9所述的基于三维点云的目标识别方法,其特征在于,所述对三维姿态聚类包括步骤:
随机抽取Ns个姿态,Ns一般选为姿态总数目的20%;
选择第1个姿态,再从剩下Ns-1个姿态中选择与第1个姿态之间的距离大于指定距离dc的姿态,将这些姿态加入第1个姿态所属的类,选择第1个姿态作为种子;对剩下的姿态采用相同的方法,共生成个类其中 为类i中第j个姿态的姿态索引,Li为当前类i的姿态数目,ki为姿态i的种子姿态索引;姿态间的距离计算方法如下:
其中,为姿态1上的三维点i,为姿态2上与姿态1上的三维点i最近的三维点;
以生成的个种子类Si(ki)为基础,如果姿态j与种子类i中的种子姿态ki距离大于给定的阈值dc,则将姿态j加入种子类i:
如果某个姿态不属于任何种子类Si(ki),则以该姿态为种子建立新的种子类
11.根据权利要求1所述的基于三维点云的目标识别方法,其特征在于,所述基于点云金字塔的目标识别包括步骤:
金字塔顶层的初始位置与姿态搜索;
使用上一层的初始位置与姿态作为初始值,在下一层进行搜索;
判断是否搜索到金字塔的最底层,如果不是最底层,则在上一层保存的有效位置与对应姿态附近搜索该层的有效位置与姿态;如果没有搜索到任何有效位置,则识别失败,返回识别失败结果;
如果搜索到最底层,则在上一层的搜索位置附近使用对应的点云类中的所有姿态进行搜索,获取得到局部极大值的位置与姿态;
输出检测的所有模型位置与姿态。
12.一种基于三维点云的目标识别装置,其特征在于,该设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至11中任一项所述的基于三维点云的目标识别方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至11任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810707859.4A CN109033989B (zh) | 2018-07-02 | 2018-07-02 | 基于三维点云的目标识别方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810707859.4A CN109033989B (zh) | 2018-07-02 | 2018-07-02 | 基于三维点云的目标识别方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109033989A true CN109033989A (zh) | 2018-12-18 |
CN109033989B CN109033989B (zh) | 2020-11-24 |
Family
ID=65522129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810707859.4A Active CN109033989B (zh) | 2018-07-02 | 2018-07-02 | 基于三维点云的目标识别方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033989B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109712174A (zh) * | 2018-12-25 | 2019-05-03 | 湖南大学 | 一种复杂异形曲面机器人三维测量的点云误配准滤除方法及系统 |
CN110398231A (zh) * | 2019-06-18 | 2019-11-01 | 广东博智林机器人有限公司 | 墙面参数的获取方法、装置、计算机设备和存储介质 |
CN111079565A (zh) * | 2019-11-27 | 2020-04-28 | 深圳市华汉伟业科技有限公司 | 视图二维姿态模板的构建方法及识别方法、定位抓取系统 |
CN111754515A (zh) * | 2019-12-17 | 2020-10-09 | 北京京东尚科信息技术有限公司 | 堆叠物品的顺序抓取方法和装置 |
CN112734932A (zh) * | 2021-01-04 | 2021-04-30 | 深圳辰视智能科技有限公司 | 一种条形物体拆垛方法、拆垛装置及计算机可读存储介质 |
CN112802093A (zh) * | 2021-02-05 | 2021-05-14 | 梅卡曼德(北京)机器人科技有限公司 | 对象抓取方法及装置 |
CN113681119A (zh) * | 2021-09-13 | 2021-11-23 | 上海柏楚电子科技股份有限公司 | 焊缝检测的数据处理方法、装置、焊接的控制方法、装置 |
CN115063496A (zh) * | 2022-08-19 | 2022-09-16 | 北京山维科技股份有限公司 | 一种点云数据快速处理方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104143194A (zh) * | 2014-08-20 | 2014-11-12 | 清华大学 | 一种点云分割方法及装置 |
US20150254499A1 (en) * | 2014-03-07 | 2015-09-10 | Chevron U.S.A. Inc. | Multi-view 3d object recognition from a point cloud and change detection |
CN106251353A (zh) * | 2016-08-01 | 2016-12-21 | 上海交通大学 | 弱纹理工件及其三维位姿的识别检测方法及系统 |
CN106651926A (zh) * | 2016-12-28 | 2017-05-10 | 华东师范大学 | 一种基于区域配准的深度点云三维重建方法 |
CN106651942A (zh) * | 2016-09-29 | 2017-05-10 | 苏州中科广视文化科技有限公司 | 基于特征点的三维旋转运动检测与旋转轴定位方法 |
US9868212B1 (en) * | 2016-02-18 | 2018-01-16 | X Development Llc | Methods and apparatus for determining the pose of an object based on point cloud data |
CN107610176A (zh) * | 2017-09-15 | 2018-01-19 | 斯坦德机器人(深圳)有限公司 | 一种基于Kinect的栈板动态识别与定位方法、系统及介质 |
CN107610219A (zh) * | 2017-08-29 | 2018-01-19 | 武汉大学 | 一种三维场景重构中几何线索感知的像素级点云稠密化方法 |
CN108182689A (zh) * | 2016-12-08 | 2018-06-19 | 中国科学院沈阳自动化研究所 | 应用于机器人搬运打磨领域的板状工件三维识别定位方法 |
-
2018
- 2018-07-02 CN CN201810707859.4A patent/CN109033989B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150254499A1 (en) * | 2014-03-07 | 2015-09-10 | Chevron U.S.A. Inc. | Multi-view 3d object recognition from a point cloud and change detection |
CN104143194A (zh) * | 2014-08-20 | 2014-11-12 | 清华大学 | 一种点云分割方法及装置 |
US9868212B1 (en) * | 2016-02-18 | 2018-01-16 | X Development Llc | Methods and apparatus for determining the pose of an object based on point cloud data |
CN106251353A (zh) * | 2016-08-01 | 2016-12-21 | 上海交通大学 | 弱纹理工件及其三维位姿的识别检测方法及系统 |
CN106651942A (zh) * | 2016-09-29 | 2017-05-10 | 苏州中科广视文化科技有限公司 | 基于特征点的三维旋转运动检测与旋转轴定位方法 |
CN108182689A (zh) * | 2016-12-08 | 2018-06-19 | 中国科学院沈阳自动化研究所 | 应用于机器人搬运打磨领域的板状工件三维识别定位方法 |
CN106651926A (zh) * | 2016-12-28 | 2017-05-10 | 华东师范大学 | 一种基于区域配准的深度点云三维重建方法 |
CN107610219A (zh) * | 2017-08-29 | 2018-01-19 | 武汉大学 | 一种三维场景重构中几何线索感知的像素级点云稠密化方法 |
CN107610176A (zh) * | 2017-09-15 | 2018-01-19 | 斯坦德机器人(深圳)有限公司 | 一种基于Kinect的栈板动态识别与定位方法、系统及介质 |
Non-Patent Citations (5)
Title |
---|
ANDERS GLENT BUCH等: "Rotational Subgroup Voting and Pose Clustering for Robust 3D Object Recognition", 《2017 IEEE INTERNATIONAL CONFERENCE ON COMPUTER VISION (ICCV)》 * |
PABLO GONZALEZ等: "Vision-based robotic system for polyhedral object grasping using kinect sensor", 《2016 INTERNATIONAL AUTOMATIC CONTROL CONFERENCE (CACS)》 * |
刘国华等: "《HALCON数字图像处理》", 31 May 2018, 西安电子科技大学出版社 * |
刘念: "基于视觉机器人的目标定位技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
陆鹏: "基于视觉的移动机器人三维场景感知技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109712174B (zh) * | 2018-12-25 | 2020-12-15 | 湖南大学 | 一种复杂异形曲面机器人三维测量的点云误配准滤除方法及系统 |
CN109712174A (zh) * | 2018-12-25 | 2019-05-03 | 湖南大学 | 一种复杂异形曲面机器人三维测量的点云误配准滤除方法及系统 |
CN110398231A (zh) * | 2019-06-18 | 2019-11-01 | 广东博智林机器人有限公司 | 墙面参数的获取方法、装置、计算机设备和存储介质 |
CN110398231B (zh) * | 2019-06-18 | 2021-06-01 | 广东博智林机器人有限公司 | 墙面参数的获取方法、装置、计算机设备和存储介质 |
CN111079565B (zh) * | 2019-11-27 | 2023-07-07 | 深圳市华汉伟业科技有限公司 | 视图二维姿态模板的构建方法及识别方法、定位抓取系统 |
CN111079565A (zh) * | 2019-11-27 | 2020-04-28 | 深圳市华汉伟业科技有限公司 | 视图二维姿态模板的构建方法及识别方法、定位抓取系统 |
CN111754515A (zh) * | 2019-12-17 | 2020-10-09 | 北京京东尚科信息技术有限公司 | 堆叠物品的顺序抓取方法和装置 |
CN111754515B (zh) * | 2019-12-17 | 2024-03-01 | 北京京东乾石科技有限公司 | 堆叠物品的顺序抓取方法和装置 |
CN112734932A (zh) * | 2021-01-04 | 2021-04-30 | 深圳辰视智能科技有限公司 | 一种条形物体拆垛方法、拆垛装置及计算机可读存储介质 |
CN112802093A (zh) * | 2021-02-05 | 2021-05-14 | 梅卡曼德(北京)机器人科技有限公司 | 对象抓取方法及装置 |
CN112802093B (zh) * | 2021-02-05 | 2023-09-12 | 梅卡曼德(北京)机器人科技有限公司 | 对象抓取方法及装置 |
CN113681119B (zh) * | 2021-09-13 | 2023-08-15 | 上海柏楚电子科技股份有限公司 | 焊缝检测的数据处理方法、装置、焊接的控制方法、装置 |
CN113681119A (zh) * | 2021-09-13 | 2021-11-23 | 上海柏楚电子科技股份有限公司 | 焊缝检测的数据处理方法、装置、焊接的控制方法、装置 |
CN115063496A (zh) * | 2022-08-19 | 2022-09-16 | 北京山维科技股份有限公司 | 一种点云数据快速处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109033989B (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033989A (zh) | 基于三维点云的目标识别方法、装置及存储介质 | |
US11887247B2 (en) | Visual localization | |
CN110568447B (zh) | 视觉定位的方法、装置及计算机可读介质 | |
CN109034077B (zh) | 一种基于多尺度特征学习的三维点云标记方法和装置 | |
Rusu et al. | Detecting and segmenting objects for mobile manipulation | |
US7961934B2 (en) | Probable reconstruction of surfaces in occluded regions by computed symmetry | |
CN112070770B (zh) | 一种高精度三维地图与二维栅格地图同步构建方法 | |
GB2543749A (en) | 3D scene rendering | |
CN111553949B (zh) | 基于单帧rgb-d图像深度学习对不规则工件的定位抓取方法 | |
GB2532948A (en) | Objection recognition in a 3D scene | |
CN104537705B (zh) | 基于增强现实的移动平台三维生物分子展示系统和方法 | |
CN109658454A (zh) | 一种位姿信息确定方法、相关装置及存储介质 | |
CN113192200B (zh) | 一种基于空三并行计算算法的城市实景三维模型的构建方法 | |
CN106503170B (zh) | 一种基于遮挡维度的图像库构建方法 | |
Zelener et al. | Cnn-based object segmentation in urban lidar with missing points | |
Zhuang et al. | Instance segmentation based 6D pose estimation of industrial objects using point clouds for robotic bin-picking | |
Huitl et al. | Virtual reference view generation for CBIR-based visual pose estimation | |
JP6016242B2 (ja) | 視点推定装置及びその分類器学習方法 | |
AU2019344408A1 (en) | System and method of selecting a complementary image from a plurality of images for 3D geometry extraction | |
US11747141B2 (en) | System and method for providing improved geocoded reference data to a 3D map representation | |
CN113298871A (zh) | 地图生成方法、定位方法及其系统、计算机可读存储介质 | |
JP5975484B2 (ja) | 画像処理装置 | |
Stipes et al. | 4D scan registration with the SR-3000 LIDAR | |
CN115063496B (zh) | 一种点云数据快速处理方法及装置 | |
CN113552586B (zh) | 一种移动机器人的定位方法和移动机器人 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |