一种基于结构分析的点云场景物体识别方法与流程

文档序号:13698678阅读:301来源:国知局
技术领域本发明属于计算机视觉与模式识别相结合的交叉学科技术领域,具体涉及一种基于结构分析的点云场景物体识别方法。

背景技术:
三维物体识别一直都是计算机视觉与模式识别的一个重要研究领域。人类具有强大的识别能力,可以从复杂场景中迅速地识别物体。但是如何使计算机像人类一样,能够自动地识别出场景中的物体,仍有很大的困难。目前,基于图像的物体识别已经有很多成果,但是二维图像的成像过程是从三维空间映射到二维空间,这个过程会丢失大量的信息。而且一个无法忽视的事实是,最好的视觉系统应该是面向三维世界的。随着激光扫描技术的快速发展,获取场景的三维坐标数据已经非常便捷。同时,三维点云数据的采集不受光照影响,没有光照的阴影以及纹理的困扰,所以基于三维点云数据的物体识别也引起了人类的重视。目前,已有的物体识别方法可以分为两类:基于特征分析的物体识别方法和基于机器学习的物体识别方法。①基于特征分析的物体识别方法基于特征分析的物体识别方法主要思想是通过比对局部特征来识别物体。该类方法无需对处理数据进行分割,通过提取对象的特征点,边缘或者是面片等局部特征,进行局部特征比对,从而完成物体的识别。旋转图像法(SpinImage)也是一种典型的基于点的特征描述方法,它是Johnson等人在1999年提出的一种利用二维数据表征三维特征的自旋图方法。旋转图像主要思想是一个图像绕法向量旋转360°,以图像中每个像素栅格所遇到的点云数作为其灰度值。Frome提出三维形状上下文方法(3Dshapecontext)完成物体的识别。该方法将特征点邻域划分为三维球形栅格,通过统计栅格内的点云数据量得到三维形状上下文特征信息,通过比对特征信息完成物体的识别。但是该方法只定义了Z轴方向。Zhong提出了一种新的三维形状描述符(IntrinsicShapeSignatures,ISS)描述点云局部/半局部的特征。通过矩阵计算得到姿态的放置和变换,并将其直接代入识别检索表中,作为识别正确性的参数值,避免只定义Z轴带来的方位模糊。上述方法容易受到噪声以及点云数据分布不均匀的影响,导致特征鲁棒性不强。魏先将三维物体投影到二维,然后将测地距离和矢量夹角的变化引入到曲面片特征的描述中并形成模型库,通过比对曲面片的描述完成物体的识别。该方法把三维识别转化为二维识别,会造成三维信息的丢失,导致识别不准确。②基于机器学习的物体识别方法基于机器学习的物体识别方法是建立在已经知道场景中包含有哪些对象的基础上,通过学习,将场景分为多个类别。Anguelov提出一种基于马尔可夫随机场的点云场景分类方法。该方法认为整个场景是一个马尔可夫随机场,根据特征将场景分为地面、建筑物、树木和灌木四类。Kim认为室内场景通常包含高密度的重复物体,如桌子、椅子和显示器等。根据场景中包含物体的重复性,将每类物体看作是基本形状的组合,提取每类对象不同姿态下的特征,通过马尔可夫随机场进行学习,完成场景中物体的识别。Zhao首先利用扫描线算法对点云场景进行分割,然后通过提取每个分割面片的最大/最小高度、法向量分布方差等特征,利用支持向量机进行学习,将场景分为建筑物、地面、树木和行人等。基于扫描线的分割方法在沿扫描剖面进行处理时,只能提取出沿扫描剖面方向曲率变化大的特征点,不能顾及到物体的细节特征。庄将三维点云数据转化为二维BearingAngle图,利用区域扩张算法提取场景中的平面。将物体碎片及其相对于物体中心的位置作为特征,利用一种基于Gentleboost算法的有监督学习方法,完成对室内场景中屋顶、墙壁、房门以及地面物体的认知。在真实的三维点云场景中,由于扫描过程中遮挡、噪声的干扰或者由于单侧扫描,单个物体的完整点云数据很难获得,再加上点云数据的海量性以及场景中物体的多样性,导致已有的方法不适用于点云场景中物体的识别。

技术实现要素:
本发明的目的是提供一种基于结构分析的点云场景物体识别方法,解决了现有技术中存在的由于三维物体点云数据量大以及点云数据不完整,导致三维物体识别不准确的问题。本发明所采用的技术方案是,一种基于结构分析的点云场景物体识别方法,具体按照以下步骤实施:步骤1:利用区域增长的方法以及基于距离的聚类算法对点云场景进行分割,并基于高斯球的性质提取点云场景中的平面;步骤2:对步骤1提取的平面,将单个平面由结点表示,平面间的连接关系由边表示,分析结点属性以及边属性,定义平面之间的连接类型;步骤3:利用步骤2中对结点属性及边属性的定义,对目标物体的结构进行分析,并记录目标物体的连接编码;步骤4:根据步骤3对目标物体结构的分析,从点云场景中选取一个符合目标物体特征的平面作为种子点,利用区域增长的方法,依次迭代找到符合特征的平面进行组合,记录“组合平面”的连接编码,通过与目标物体的编码进行比对完成物体的识别。本发明的特点还在于,步骤1具体为:步骤1.1:利用主元分析法计算点云的法向量点云场景中的任意一点p,找到点p的k个邻近点点p的三阶协方差矩阵M为:M=1kΣi=1k(pi-p‾)(pi-p‾)T---(1)]]>其中,为点p的k个邻近点的平均位置,p‾=1kΣi=1kpi---(2)]]>通过奇异值分解对点p的三阶协方差矩阵M进行特征值分解,得到协方差矩阵M的特征值l3>l2>l1>0,点p的法向量为最小特征值l1所对应的特征向量对于点云数据中的任意一点p,利用k-d树找出与点p最近的点q,如果np·nq≈-1,将点p的法向量方向反转;步骤1.2:用区域增长的方法对点云场景进行分割步骤1.2.1:遍历点云场景中每一点,如果点pi未被标记,则将其设置为种子点,遍历其它未被标记的点pj,如果ni·nj≈1,则将点pi和pj分为一类,并对点pj进行标记,其中,和为点pi和pj的法向量;否则,对点pj不予标记,继续遍历下一个点;步骤1.2.2:如果点云场景中所有点都被标记,结束遍历;否则,返回步骤1.2.1继续遍历;步骤1.3:对于每个具有相似法向量的点云簇中的每一点pi,利用k-d树找出点pi的k个邻近点,筛选与点pi距离小于阈值r的点集NN;步骤1.4:遍历具有相似法向量的点云数据,如果点pi是被遍历的第一个点,标记点集NN中所有的点label=1;如果点pi不是被遍历的第一个点,则遍历点集NN中的每一点是否已经被标记,如果点集NN中所有的点均未被标记,则label++,将点集NN中所有的点标记为label;如果点集NN中存在已经被标记的点,找出被标记的点中最小的标记值mLabel,将点集NN中所有的点标记为mLabel;步骤1.5:重复步骤1.3、步骤1.4,直到点云数据中所有点均被标记;步骤1.6:经过分割后的点云数据集合分别为P1,P2...Pm,将P1,P2...Pm进行高斯映射后的数据集分别为G(P1),G(P2)...G(Pm),根据步骤1.1中点p的法向量通过下式获得点p在高斯球上的映射位置:ud=arcsin(ny)ld=arctan(nx,nz)---(3)]]>将球坐标映射到直角坐标,其转换公式为:xnorm=cos(ud)·cos(ld)ynorm=cos(ud)·sin(ld)znorm=sin(ud)---(4)]]>点云数据的法向量进行高斯映射后,具有相同法向量的点会映射到高斯球上同一位置,根据高斯球的性质对平面进行识别:首先,利用下式计算G(Pi)的中心ci‾=1NΣi=1NG(pi)---(5)]]>其中,pi为点云数据集合Pi中的任意一点,N为该点云数据集合Pi点的个数;其次,利用下式计算出每一点云数据集合的法向量的方差var(G(Pi)):var(G(Pi))=1NΣi=1N(G(pi)-ci‾)2---(6)]]>如果方差var(G(Pi))小于阈值ε,判断点云数据集合Pi为平面,如果方差var(G(Pi))大于阈值ε,点云数据集合Pi不为平面。阈值ε的范围为0.1-0.2。步骤2具体为:步骤2.1:将单个平面由结点表示,定义结点的属性将每一个平面利用一个单独的结点表示,即每一个结点是一个平面的抽象,针对分割后的平面S1,S2,...Sn,利用公式(7)计算出平面Si的中心点的位置,利用该中心点Ci代表平面Si:xi‾=1NΣj=1Nxjyi‾=1NΣj=1Nyjzi‾=1NΣj=1Nzj---(7)]]>其中,N为每个平面中点的个数,(xj,yj,zj)为平面Si中任意一点的坐标值;①面积Areai计算平面Si的面积Areai,由于平面的厚度为0,所以利用公式(8)计算平面的面积:Areai=lengthi×widthi(8)其中,lengthi是平面Si的长度,widthi是平面的宽度;②平均法向量AvgNorm利用公式(9)计算每个平面Si的平均法向量n‾xi=1NΣi=1Nnxin‾yi=1NΣi=1Nnyin‾zi=1NΣi=1Nnzi---(9)]]>其中,(nxi,nyi,nzi)是平面Si中任意一点的法向量,N为平面Si中点的个数;如果某一个平面Sj的平均法向量近似为(0,0,1.0),即和接近为0,接近为1,则Sj为与水平面垂直的平面;③高度差DeltZi高度差DeltZi是平面Si中z值最大值Zimax与z值最小值Zimin的差值:DeltZi=Zimax-Zimin(10)步骤2.2:平面间的连接关系由边表示,分析边的属性①连接类型根据平面与水平面的关系,将平面分为:与水平面平行的平面称为水平面,与水平面垂直的平面称为垂直面,既不与水平面平行又不与水平面垂直的平面称为倾斜面,根据平面的不同类型,将结点连接类型分为七类:a.一个水平面结点与一个垂直面结点相连接且相互垂直,连接类型Typeij=1;b.一个水平面结点与一个倾斜的结点相连接,两个结点不垂直,连接类型Typeij=2;c.两个垂直面结点相连接,且两个结点相互垂直,连接类型Typeij=3;d.两个倾斜的结点相连接,同时两个结点不垂直,连接类型Typeij=4;e.两个垂直面结点相连接,且两个结点相互不垂直,连接类型Typeij=5;f.一个倾斜的结点与一个垂直面结点相连接,两个结点不垂直,连接类型Typeij=6;g.两个倾斜的结点相连接,同时两个结点相互垂直,连接类型Typeij=7;②长度Distij利用公式(11)计算平面Si的中心点与平面Sj的中心点之间的距离即长度Distij:Distij=(xi‾-xj‾)2+(yi‾-yj‾)2+(zi‾-zj‾)2---(11)]]>③相连两平面之间的夹角θijAvgNormi和AvgNormj分别为平面Si和Sj的平均法向量,利用公式(12)计算两个平面之间的夹角θij:θij=arccos(AvgNormi,AvgNormj)=arccosAvgNormi×AvgNormj|AvgNormi|×|AvgNormj|---(12).]]>步骤3具体为:步骤3.1:确定构成目标物体的平面之间的连接类型为了提高程序的运行效率,在判定平面间是否相连时,不需要遍历平面中的每一个点,只需要遍历每个平面的边界点,寻找边界点的邻近点,判断邻近点中是否包含有其它平面的点;提取每个平面的边界点:pi是平面S1中的一点,利用k-d树找出pi的k个邻近点,找出与pi距离小于r的点的集合Pr-distace={{pi,pj,dij
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1