一种网格数据结构的邻域访问方法、装置、设备及介质与流程

文档序号:22616769发布日期:2020-10-23 19:17阅读:144来源:国知局
一种网格数据结构的邻域访问方法、装置、设备及介质与流程

本发明属于涉及计算机图形和计算机视觉技术领域,特别涉及一种点云数据的网格化后的访问方法。



背景技术:

近年来,随着计算机硬件性能的提高及价格的降低,其在扫描系统中被大量的引入。做法一般是使用点云获取装置获取物体的点云(即由多个三维离散点组成的点的集合),而后将点云数据输入计算机,执行相应软件对点云数据进行各种处理,比如计算机辅助验证(computeraidedverification,cav)、逆向工程(reverseengineering,re)、有限元网格自动生成、计算机图形处理及模式识别(如人脸的识别)等。

构建点云网格面是上述各种处理所需要使用的重要技术之一,也是上述各种处理所需要解决的一个关键问题。点云网格一般有三角形、四边形及多边形等多种形状。现有的技术中,只能构建点云三角网格面,

在工业制造、物流等领域,机床上下料、零件分拣、货品拆零拣选等无序分拣任务对于传统人工操作的方式来说,劳动强度大、分拣效率低、招工难度大。机器人无序分拣技术越来越多地替代人工,成为相关产业降本增效、智能化升级的重要手段。机器人无序分拣依靠视觉识别方法定位待分拣物体,进而引导机器人末端完成物体的抓取和放置操作。一般采用2d图像、3d点云或网格等方式表征物体信息,物体的视觉识别方法可分为2d方法和3d方法两类。

目前传统的2d视觉或3d视觉识别方法尚不能解决海量无序姿态工件的通用准确识别问题,难以应对电商物流的无序分拣需求。当待扫描工件的姿态倾角较大、杂乱堆叠时,比如进行位于周转箱侧放的桶装方便面识别,传统2d方法需要制作多个不同视角的模板进行匹配定位,这样面对海量工件时,建立模板工作量过于庞大;当待检测工件紧密放置时,3d视觉方法难以分割场景中的不同物体,且对物体形状变化较小的待检测工件难以适应,比如识别位于周转箱内紧密排列的手机包装盒。只有识别工件的完整形状(包括侧面和底面)等,才能工件实现准确码放,避免抓取贵重工件时损伤工件,而传统的2d/3d视觉识别方法,都只能基于工件上表面的局部信息进行识别,难以判断待测工件的完整形状,对准确码放难以适应。

上述问题的出现主要是由于现有视觉识别方法受限于表征三维物体的数据结构,其中得益于2d图像的矩阵形式,2d视觉中图像处理方法都十分成熟,但2d图像难以表示三维物体的全方位信息;在3d视觉处理中,现有3d图像处理方法大多基于无序点云,难以实现类似2d的有序邻域访问,从而无法利用2d的纹理特征;基于有序点云的3d图像处理方法,由于有序点云仅能表达工件的上表面信息,对底面和侧面无法表达,也无法实现完整形状的表达。鉴于此,申请人提出了提出一种5d纹理网格算法库(seizetcolormeshlibrary),该算法库采用一种5d纹理网格的数据结构(seizetcolormesh),该结构使用顶点、半边、四角面片的连接关系进行索引,用于点云数据的四角网格重构,点云基于5d纹理网格的数据结构的数据表示后,呈拓扑结构且可有效表征三维物体的全方位信息。

邻域搜索是法线计算、模型渲染、特征提取、数据精简、数据平滑及曲面重建等处理的基础,基于5d纹理网格的数据结构建立点云数据的空间拓扑结构后,如何通过mesh建立3d点与邻域点之间的访问方式,获取5d纹理网格结构中顶点的临近点的信息,以实现高效的邻域搜索对三维数据处理具有决定性的影响。



技术实现要素:

本发明的目的是提供一种5d纹理网格数据结构的邻域访问方法,以通过5d纹理网格的数据结构建立3d点与邻域点之间的访问方式,获取5d纹理网格结构中顶点的临近点的信息。

为实现上述目的,本发明提供一种5d纹理网格数据结构的邻域访问方法,所述5d纹理网格数据结构用于点云数据的四角网格重构,所述5d纹理网格数据结构包括多个半边四角网格,每个所述半边四角网格包括四个顶点、半边以及一四角面片,每个所述顶点存储点云数据中对应点pij的3d位置坐标(x,y,z)、法向量、颜色以及其为起始顶点的半边的指针信息,每个半边存储起始顶点、终止顶点、邻接面、上个半边、下个半边、对立半边的指针或索引;

对于5d纹理网格数据结构中的任一顶点si,以所述顶点si作为初始顶点开始本次的邻域访问时,每次邻域访问包括如下步骤:判断所述初始顶点是否为边界点,若所述初始顶点为边界点,则返回空;若所述初始顶点不为边界点,则以所述初始顶点为中心,寻找访问半径为r的网格数据结构内的全部邻域顶点。

优选的,以所述初始顶点为中心,逐层获取半径从1至r的全部邻域顶点,每层的邻域访问获取8*r个顶点。

优选的,每层的邻域访问包括如下步骤:基于所述5d纹理网格数据结构获取始发顶点的出半边hi,并获取所述出半边hi的终止顶点ni,所述始发顶点为初始顶点或上一层访问所获取的第一个顶点:

i)从ni开始向上搜索r次,再依次向左搜索2r次、向下搜索2r次、向右搜索2r次、向上搜索r-1次,以获取每层的8r个顶点;

或,ii)从ni开始向下搜索r次,再依次向左搜索2r次、向上搜索2r次、向右搜索2r次、向下搜索r-1次,以获取每层的8r个顶点。

进一步的,所述i)中,从ni开始向上搜索r次包括如下步骤:获取本次向上搜索的第一个顶点:基于所述5d纹理网格数据结构获取ni的对立半边的上个半边hi+1,所述hi+1的起始顶点ni+1为本次向上搜索的第一个顶点;获取后续的r-1个顶点,后续r-1个顶点的搜索包括如下步骤:获取下一个顶点对应的出半边,将所述出半边对应的起始顶点作为下一个顶点,其中基于上一个顶点的上个半边的对立半边的上个半边获取下一个顶点对应的出半边;

和/或,所述i)中,向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次时,每次搜索分别包括如下步骤:获取本次搜索的第一个顶点:基于所述5d纹理网格数据结构获取上一次搜索所确定的最后一个顶点的上个半边,所述最后一个顶点的上个半边对应的起始顶点为本次搜索的第一个顶点;获取本次搜索的其他顶点,后续每个其他顶点的搜索包括如下步骤:获取下一个顶点对应的出半边,并将所述出半边对应的起始顶点作为下一个顶点,其中基于上一顶点的上个半边的对立半边的上个半边获取下一个顶点对应的出半边。

进一步的,所述ii)中,从ni开始向下搜索r次包括如下步骤:获取本次搜索的第一个顶点:ii-a)基于所述5d纹理网格数据结构获取hi的下个半边hi+1,所述hi+1的终止顶点ni+1为向下搜索的第一个顶点,获取后续的r-1个顶点:后续r-1次搜索时,每个顶点搜索包括:ii-b)获取下一个顶点对应的中间半边,所述中间半边对应的终止顶点即作为下一个顶点,其中基于上一顶点的下个半边的对立半边的下个半边获取下一个顶点对应的中间半边。

和/或,所述ii)中,向左搜索2r次、向上搜索2r次、向右搜索2r次以及向下搜索r-1次时,每次搜索分别包括如下步骤:ii-c)获取本次搜索的第一个顶点:获取前一次搜索最后一个顶点的下个半边,将所述最后一个顶点的下个半边对应的终止顶点作为本次搜索的第一个顶点;获取本次搜索的其他顶点:后续每个其他顶点搜索包括如下步骤:ii-b)获取下一个顶点对应的中间半边,并将所述中间半边对应的终止顶点作为下一个顶点,其中基于上一顶点的下个半边的对立半边的下个半边获取下一个顶点对应的中间半边。

优选的,若半径为m(m<r)的邻域访问返回结果中,顶点个数不为(2m+1)2-1,则返回为空。

优选的,若所述初始顶点无出半边或所述初始顶点的出半边无邻接四角面片,则判断所述初始顶点为边界点。

为了实现上述目的,本发明还提供了一种5d纹理网格数据结构的邻域访问装置,5d纹理网格数据结构用于点云数据的四角网格重构,5d纹理网格数据结构包括多个半边四角网格,每个半边四角网格包括四个顶点、半边以及一四角面片,每个顶点存储点云数据中对应点pij的3d位置坐标(x,y,z)、法向量、颜色以及其为起始顶点的半边的指针信息,每个半边存储起始顶点、终止顶点、邻接面、上个半边、下个半边、对立半边的指针或索引;

邻域访问装置包括边界点判断模块与邻域访问模块;边界点判断模块用于对于5d纹理网格数据结构中的任一顶点si,以所述顶点si作为初始顶点开始本次的邻域访问时,判断所述初始顶点是否为边界点,若所述初始顶点为边界点,则返回空;若所述初始顶点不为边界点,则跳转至邻域访问模块;所述邻域访问模块用于以所述初始顶点为中心,寻找访问半径为r的网格数据内的全部邻域顶点。

优选的,邻域访问模块用于以初始顶点si为中心,逐层获取从半径为1至r的全部邻域顶点。

作为一优选方案,邻域访问模块包括逆时针访问子模块或顺时针访问子模块;逆时针访问子模块用于基于5d纹理网格数据结构获取初始顶点的出半边hi,并获取出半边hi的终止顶点ni,从ni开始向上搜索r次,再依次向左搜索2r次、向下搜索2r次、向右搜索2r次、向上搜索r-1次,以获取8r个顶点;顺时针访问子模块用于基于5d纹理网格数据结构获取初始顶点的出半边hi,并获取出半边hi的终止顶点ni,从ni开始向下搜索r次,再依次向左搜索2r次、向上搜索2r次、向右搜索2r次、向下搜索r-1次,以获取8r个顶点。

更进一步的,逆时针访问子模块包括第一类顶点获取单元、第二类顶点获取单元以及第三类顶点获取单元:

第一类顶点获取单元用于获取从ni开始向上搜索的第一个顶点,其中基于5d纹理网格数据结构获取ni的对立半边的上个半边hi+1,hi+1的起始顶点ni+1为本次向上搜索的第一个顶点;

第二类顶点获取单元用于获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的第一个顶点,其中基于5d纹理网格数据结构获取上一次搜索所确定的最后一个顶点的上个半边,最后一个顶点的上个半边对应的起始顶点为本次搜索的第一个顶点;

第三类顶点获取单元用于获取从ni开始向上搜索的后续的r-1个顶点以及用于获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的其他顶点,其中获取下一个顶点对应的出半边,将出半边对应的起始顶点作为下一个顶点,其中基于上一个顶点的上个半边的对立半边的上个半边获取下一个顶点对应的出半边。

上述第三类顶点获取单元也可拆分成两个独立的顶点获取单元,以分别获取获取从ni开始向上搜索的后续的r-1个顶点、以及获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的其他顶点。

此外,顺时针访问子模块包括第一类顶点获取单元’以及第二类顶点获取单元’以及第三类顶点获取单元’:

第一类顶点获取单元’用于获取从ni开始向下搜索的第一个顶点,其中获取hi的下个半边hi+1,hi+1的终止顶点ni+1为向下搜索的第一个顶点,

第二类顶点获取单元’用于获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的第一个顶点,其中获取前一次搜索最后一个顶点的下个半边,将最后一个顶点的下个半边对应的终止顶点作为本次搜索的第一个顶点;

第三类顶点获取单元’用于获取从ni开始向下搜索的剩余r-1个顶点以及用于获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的其他顶点,其中,获取下一个顶点对应的中间半边,中间半边对应的终止顶点即作为下一个顶点,其中基于上一顶点的下个半边的对立半边的下个半边获取下一个顶点对应的中间半边。此外,上述三类顶点获取单元’也可拆分成两个独立的顶点获取单元,以分别获取从ni开始向下搜索的剩余r-1个顶点与向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的其他顶点。

优选的,邻域访问模块还包括一报错子模块,用于判断若半径为m(m<r)的邻域访问返回结果中,顶点个数不为(2m+1)2-1,返回为空。

优选的,边界点判断模块中,若初始顶点si无出半边或初始顶点si的出半边无邻接四角面片,则判断初始顶点si为边界点。

为了实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述方法的步骤。

为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法的步骤。

本发明所示的一种5d纹理网格数据结构的邻域访问方法、系统、设备及介质,当点云数据转换为5d纹理网格数据结构后,对于5d纹理网格数据结构中的任一顶点si,以所述顶点si作为初始顶点开始本次的邻域访问时,每次邻域访问包括如下步骤:判断所述初始顶点是否为边界点,若所述初始顶点为边界点,则返回空;若所述初始顶点不为边界点,则以所述初始顶点为中心,寻找访问半径为r的网格数据结构内的全部邻域顶点,如可逐层获取以初始顶点为中心,半径从1至r的全部邻域顶点,从而建立3d点与邻域点之间的访问方式,获取5d纹理网格结构中顶点的全部邻域顶点的信息,实现高效的邻域搜索。

附图说明

图1为本发明的半边四角网格结构示意图;

图2为本发明的工作状态示意图;

图3本发明一种5d纹理网格数据结构的邻域方法一实施例访问方向示意图;

图4为r=2时,逆时针邻域访问方法一实施例的示意图;

图5为r=1时,顺时针邻域访问方法一实施例的示意图;

图6为本发明一种5d纹理网格数据结构的邻域访问装置一实施例的结构框图;

图7为本发明计算机设备的一个实施例的硬件架构图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,而非以任何方式限制本发明的保护范围。

在说明书的全文中,相同的附图标号指代相同的元件。表述“和/或”包括相关联的所列相目中的一个或多个的任何和全部组合。在附图中,为了便于说明,已稍微夸大了物体的厚度、尺寸和形状。附图仅为示例而非严格按比例绘制。

还应理解的是,用语“包括”、“包括有”、“具有”、“包含”和/或“包含有”,当在本说明书中使用时表示存在所陈述的特征、步骤、整体、操作、元件和/或部件,但不排除存在或附加有一个或多个其它特征、步骤、整体、操作、元件、部件和/或它们的组合。

如在说明书中使用的用语“基本上”、“大约”以及类似的用于用作表示近似的用语,而不用作表示程度的用语,并且旨在说明将由本领域普通技术人员认识到的、测量值或计算值中的固有偏差。

除非另有限定,否则本文中使用的所有用语(包括技术用语和科学用语)均具有与本申请所属领域普通技术人员的通常理解相同的含义。还应理解的是,用语(例如在常用词典中定义的用语)应被解释为具有与它们在相关技术的上下文中的含义一致的含义,并且将不被以理想化或过度正式意义解释,除非本文中明确如此限定。

需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

下文中,将描述用于进行本发明的实施例。注意,将以下面的次序给出描述:1、发明构思的概要(图1);2、一种5d纹理网格数据结构的邻域访问方法(图2-图5);3、一种5d纹理网格数据结构的邻域访问装置(图6);4、根据本发明的实施例的安装了应用程序的系统、5存储所述应用程序的计算机可读介质(图7)。

1、发明构思的概要

建立大规模三维点云数据的空间拓扑结构实现高效的邻域搜索是点云数据处理的前提,能极大地提高大规模点云数据的应用领域。本发明提供了一种5d纹理网格数据结构的邻域访问方法,在5d纹理网格数据结构基础之上进一步提供了一种5d纹理网格数据结构邻域访问方法,以实现高效的邻域搜索。

其中5d纹理网格数据结构使用顶点、半边、四角面片的连接关系进行索引,用于点云数据的四角网格重构,点云基于5d纹理网格的数据结构的数据表示后,呈拓扑结构且可有效表征三维物体的全方位信息。

5d纹理网格数据结构包括多个半边四角网格,每个半边四角网格包括一四角面片、设于四角面片上的四个顶点smn,sm,n+1.sm+1,n,sm+1,n+1以及多个半边,其中,基于点云数据pij以及pij的三个相邻点获取每个半边四角网格对应的四个顶点,每个顶点存储点云数据中对应点pij的3d位置坐标(x,y,z)、法向量、颜色以及其为起始顶点的半边的指针信息,每个半边存储起始顶点、终止顶点、邻接面、上个半边、下个半边、对立半边的指针或索引。

如图1所示,基于点云数据所生成的每个半边四角网格中包括顶点1)、半边2)和四角面片3),为方便说明,将顶点s(1,0)、s(1,1)、s(2,1)、s(2,0)简化为顶点a、b、c、d,其中,ab、bc、cd、da均为半边,abcd为四角面片。

顶点(vertex)a、b、c、d中存储对应点pi,j+1,pi+1,j+1,pi+1,j的3d坐标、法向量、颜色等信息;半边(halfedge)是顶点之间的有向连线,通过terminatevertex和originvertex指针分别记录其终止顶点和起始顶点,图1中半边ab的终止顶点和起始顶点分别为b和a。

半边通过nexthalfedge和prevhalfedge指针分别记录其下个半边和上个半边,图1中半边ab的下个半边和上个半边分别为bc和da;半边通过oppositehalfedge指针记录其对立半边,图1中半边ab的对立半边为ba;半边通过adjacentface指针记录与其邻接的四角面片,图1中半边ab的邻接四角面片为abcd;顶点通过outgoinghalfedge和incominghalfedge指针分别记录出半边和入半边,图1中顶点a的出半边和入半边分别为ab和ba。

四角面片(quadface)由4个顺序连接的半边组成,图1中四角面片abcd由半边ab、bc、cd、da组成;四角面片通过outerhalfedge和innerhalfedge指针记录其外半边和内半边,图1中四角面片abcd的外半边和内半边分别为ba和ab。

2、一种5d纹理网格数据结构的邻域访问方法

点云数据基于5d纹理网格数据结构表示后,呈拓扑结构且可有效表征三维物体的全方位信息,为实现后续点云的法线计算、模型渲染、特征提取、数据精简、数据平滑及曲面重建等处理,实现了更强大的感知识别效果,进而为机器人面对海量无序状态的工件抓取奠定了数据结构基础,本发明进一步提供了一种5d纹理网格数据结构的邻域访问方法。

对于5d纹理网格数据结构中的任一顶点si,以所述顶点si作为初始顶点开始本次的邻域访问时,每次邻域访问包括如下步骤:判断所述初始顶点是否为边界点,若所述初始顶点为边界点,则返回空;若所述初始顶点不为边界点,则以所述初始顶点为中心,寻找访问半径为r的网格数据结构内的全部邻域顶点。

在进行邻域访问时,为实现后续点云高效处理,需确保5d纹理网格数据结构全部邻域顶点都能搜寻到,本实施例中对邻域访问的顺序进行限定以在确保有效搜索到全部邻域顶点的同时,还可尽量提高搜索效率。

作为一优选方案,本实施例中,以所述初始顶点为中心,逐层获取半径从1至r的全部邻域顶点,每层的邻域访问获取8*r个顶点,当判断r=1,则直接寻找以初始顶点为中心,半径为1的8个邻域顶点,若r≥2,则逐层获取以初始顶点si为中心,从半径为1至r的全部邻域顶点。

本发明所示的一种5d纹理网格数据结构的邻域访问方法,当判断初始顶点si不为边界点后,首先确定给定邻域访问半径r的大小,若半径r为1,则直接寻找以初始顶点si为中心,半径为1的邻域顶点,即获取以初始顶点si为中心8个顶点;若邻域访问半径r≥2,根据5d纹理网格数据结构可知,其邻域顶点个数为(2r+1)2-1个,如图2所示,采用递归算法,首先寻找以初始顶点si为中心,半径为1即第一层共计8*1个邻域顶点,然后继续寻找以述初始顶点si为中心,半径为2即第二层的8*2个邻域顶点,直至寻找到以初始顶点si为中心、半径为r的第r层的8*r个邻域顶点,获取上述各层搜索获取的全部顶点,即为初始顶点si为中心、半径为r的范围内所有顶点。

在上述访问过程中,若初始顶点无出半边或顶点初始顶点的出半边无邻接四角面片,则判断初始顶点为边界点。此外,在访问过程中时,若半径为m(m<r)的邻域访问返回结果中,顶点个数不为(2m+1)2-1,说明其中一层的访问结果可能出现问题,为避免无法获得全部的邻域顶点,也返回空。

为进一步提高访问效率,本发明所示的一种5d纹理网格数据结构的邻域访问方法还对每一层顶点的搜索顺序进行限定。作为一优选方案,每层的邻域访问包括如下步骤:首先基于5d纹理网格数据结构获取始发顶点的出半边hi,并获取出半边hi的终止顶点ni,始发顶点为初始顶点或上一层访问所获取的第一个顶点;然后如图3所示,沿逆时针方向进行任意一层顶点的搜寻与访问,即i)从ni开始向上搜索r次,再依次向左搜索2r次、向下搜索2r次、向右搜索2r次、向上搜索r-1次,以获取8r个顶点;此外,也可沿顺时针方向进行任意一层顶点的搜寻,即ii)从ni开始向下搜索r次,再依次向左搜索2r次、向上搜索2r次、向右搜索2r次、向下搜索r-1次,以获取8r个顶点。

当沿逆时针方向进行任意一层顶点的搜寻,从ni开始向上搜索r次包括如下步骤:i-a)获取本次向上搜索的第一个顶点:基于5d纹理网格数据结构获取ni的对立半边的上个半边hi+1,hi+1的起始顶点ni+1为本次向上搜索的第一个顶点;i-b)获取后续的r-1个顶点,后续r-1个顶点的搜索包括如下步骤:获取下一个顶点对应的出半边,将出半边对应的起始顶点作为下一个顶点,其中基于上一个顶点的上个半边的对立半边的上个半边获取下一个顶点对应的出半边。

i)中,向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次时,每个顶点的搜索分别包括如下步骤:i-c)获取本次搜索的第一个顶点:基于5d纹理网格数据结构获取上一次搜索所确定的最后一个顶点的上个半边,最后一个顶点的上个半边对应的起始顶点为本次搜索的第一个顶点;i-b)获取本次搜索的其他顶点:后续每个其他顶点的搜索包括如下步骤:获取下一个顶点对应的出半边,并将出半边对应的起始顶点作为下一个顶点,其中基于上一顶点的上个半边的对立半边的上个半边获取下一个顶点对应的出半边。

如图4所示,以下以半径r=2,进一步详细说明沿逆时针方向进行顶点的搜寻与访问的。

步骤一:首先获取r=1的8邻域访问:判断初始顶点是否为边界点,若判断si为边界点,则返回空;其中,生成在网格数据结构中,如果si无出半边,或si的出半边无邻接四角面片,则判断si为边界点;若si不为边界点,则依次获取点si的8个邻域顶点。

如图2所示,将初始顶点si作为本层搜索的始发顶点,基于5d纹理网格数据结构获取初始顶点si的出半边hi,并获取出半边hi的终止顶点n0后,从n0开始向上搜索1次,然后向左搜索2次、向下搜索2次、向右搜索两次。

其中,从n0开始向上搜索1次,包括i-a)利用hi的对立半边的上个半边h1,找到h1的起始顶点n1。

从n1开向左搜索2次,包括:i-c)利用h1的上个半边h2,找到h2的起始顶点n2;i-b)利用h2的上个半边的对立半边的上个半边h3,找到h3的起始顶点n3;

从n3开始向下搜索2次,包括i-c)利用h3的上个半边h4,找到h4的起始顶点n4;i-b)利用h4的上个半边的对立半边的上个半边h5,找到h5的起始顶点n5;

从n5开始向右搜索2次,包括i-c)利用h5的上个半边h6,找到h6的起始顶点n6;i-b)利用h6的上个半边的对立半边的上个半边h7,找到h7的起始顶点n7

至此,si的8逆时针邻域访问结果为n0-n7。

步骤二:基于递归算法,获取半径为2的全部邻域顶点:

将上一层搜索所获取的第一个顶点n0作为始发顶点,基于5d纹理网格数据结构获取n0的出半边h8,找到h8的终止顶点n8,然后从n8开始向上搜索1次,再依次向左搜索4次、向下搜索4次、向右搜索4次、向上搜索2次,以获取本层的16(8*2)个顶点。

其中,从n8开始向上搜索2次,包括i-c)利用h8的对立半边的上个半边h9,找到h9的起始顶点n9;i-b)利用h9的上个半边的对立半边的上个半边h10,找到h10的起始顶点n10。

从n10开始向左搜索4次,包括i-c)利用h10的上个半边h11,找到h11的起始顶点n11;i-b)利用h11的上个半边的对立半边的上个半边h12,找到h12的起始顶点n12;i-b)利用h12的上个半边的对立半边的上个半边h13,找到h13的起始顶点n13;i-b)利用h13的上个半边的对立半边的上个半边h14,找到h14的起始顶点n14。

从n14开始向下搜索4次,包括i-c)利用h14的上个半边h15,找到h15的起始顶点n15;i-b)利用h15的上个半边的对立半边的上个半边h16,找到h16的起始顶点n16;i-b)利用h16的上个半边的对立半边的上个半边h17,找到h17的起始顶点n17;i-b)利用h17的上个半边的对立半边的上个半边h18,找到h18的起始顶点n18。

从n18开始向右搜索4次,包括i-c)利用h18的上个半边h19,找到h19的起始顶点n19;i-b)利用h19的上个半边的对立半边的上个半边h20,找到h20的起始顶点n20;i-b)利用h20的上个半边的对立半边的上个半边h21,找到h21的起始顶点n21;i-b)利用h21的上个半边的对立半边的上个半边h22,找到h22的起始顶点n22。

从n22开始向上搜索1次,包括i-c)利用h22的上个半边h23,找到h23的起始顶点n23。

至此,si的半径r=2逆时针邻域访问结果为n0-n23。

当沿顺时针方向进行任意一层顶点的搜寻,从ni开始向下搜索r次包括如下步骤:

ii-a)获取本次搜索的第一个顶点:获取hi的下个半边hi+1,hi+1的终止顶点ni+1为向下搜索的第一个顶点;

ii-b)获取后续的r-1个顶点:后续r-1次搜索时,每个顶点搜索包括:获取下一个顶点对应的中间半边,中间半边对应的终止顶点即作为下一个顶点,其中基于上一顶点的下个半边的对立半边的下个半边获取下一个顶点对应的中间半边。

向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次时,每次搜索分别包括如下步骤:

ii-c)获取前一次搜索最后一个顶点的下个半边,将最后一个顶点的下个半边对应的终止顶点作为本次搜索的第一个顶点;

ii-b)获取本次搜索的其他顶点:后续每个其他顶点搜索包括如下步骤:获取下一个顶点对应的中间半边,并将中间半边对应的终止顶点作为下一个顶点,其中基于上一顶点的下个半边的对立半边的下个半边获取下一个顶点对应的中间半边。

以下以半径r=1,对沿顺时针方向搜寻顶点的进行说明:如图5所示:

将初始顶点si作为本层搜索的始发顶点,基于5d纹理网格数据结构获取初始顶点si的出半边hi,并获取出半边hi的终止顶点n0后,从n0开始向下搜索1次,然后向左搜索2次、向上搜索2次、向右搜索两次。

其中,从n0开始向下搜索1次,包括ii-a)利用hi的下个半边h0,找h0的终止顶点n7;

从n7开始向左搜索2次,包括:ii-c)利用h0的下个半边h7,找到h7的终止顶点n6;i-b)利用h7的下个半边的对立半边的下个半边h6(中间半边),找到h6的终止顶点n5;

从n5开始向上搜索2次,包括ii-c)利用h6的下个半边h5,找到h5的终止顶点n4;i-b)利用h5的下个半边的对立半边的下个半边h4(中间半边),找到h4的终止顶点n3;

从n3开始向右搜索2次,包括ii-c)利用h4的下个半边h3,找到h3的终止顶点n2;ii-b)利用h3的下个半边的对立半边的下个半边h2(中间半边),找到h2的终止顶点n1。

至此,获得以si为中心的8邻域的顺时针访问结果n0-n7。

3、一种5d纹理网格数据结构的邻域访问装置

如图6所示,本申请还公开了一种5d纹理网格数据结构的邻域访问装置10,5d纹理网格数据结构用于点云数据的四角网格重构,5d纹理网格数据结构包括多个半边四角网格,每个半边四角网格包括四个顶点、半边以及一四角面片,每个顶点存储点云数据中对应点pij的3d位置坐标(x,y,z)、法向量、颜色以及其为起始顶点的半边的指针信息,每个半边存储起始顶点、终止顶点、邻接面、上个半边、下个半边、对立半边的指针或索引;

5d纹理网格数据结构的邻域访问装置10包括边界点判断模块11与邻域访问模块12;边界点判断模块11用于对于5d纹理网格数据结构中的任一顶点si,以所述顶点si作为初始顶点开始本次的邻域访问时,判断所述初始顶点是否为边界点,若所述初始顶点为边界点,则返回空;若所述初始顶点不为边界点,则跳转至邻域访问模块12;所述邻域访问模块12用于以所述初始顶点为中心,寻找访问半径为r的网格数据内的全部邻域顶点。

作为一优选方案,邻域访问模块12用于以初始顶点si为中心,逐层获取从半径为1至r的全部邻域顶点。

本发明所示的一种5d纹理网格数据结构的邻域访问装置10,当边界点判断模块11判断初始顶点si不为边界点后转入邻域访问模块12,邻域访问模块12首先确定给定邻域访问半径r的大小,若半径r为1,则直接寻找以初始顶点si为中心,半径为1的邻域顶点,即获取以初始顶点si为中心8个顶点;若邻域访问半径r≥2,则采用递归算法,首先寻找以初始顶点si为中心,半径为1即第一层共计8*1个邻域顶点,然后继续寻找以述初始顶点si为中心,半径为2即第二层的8*2个邻域顶点,直至寻找到以初始顶点si为中心、半径为r的第r层的8*r个邻域顶点,获取上述各层搜索获取的全部顶点,即为初始顶点si为中心、半径为r的范围内所有顶点,从而实现邻域顶点的高效搜索。

作为一优选方案,邻域访问模块12包括逆时针访问子模块或顺时针访问子模块;逆时针访问子模块用于基于5d纹理网格数据结构获取初始顶点的出半边hi,并获取出半边hi的终止顶点ni,从ni开始向上搜索r次,再依次向左搜索2r次、向下搜索2r次、向右搜索2r次、向上搜索r-1次,以获取8r个顶点;顺时针访问子模块用于基于5d纹理网格数据结构获取初始顶点的出半边hi,并获取出半边hi的终止顶点ni,从ni开始向下搜索r次,再依次向左搜索2r次、向上搜索2r次、向右搜索2r次、向下搜索r-1次,以获取8r个顶点。

更进一步的,逆时针访问子模块包括第一类顶点获取单元、第二类顶点获取单元以及第三类顶点获取单元:

第一类顶点获取单元用于获取从ni开始向上搜索的第一个顶点,其中基于5d纹理网格数据结构获取ni的对立半边的上个半边hi+1,hi+1的起始顶点ni+1为本次向上搜索的第一个顶点;

第二类顶点获取单元用于获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的第一个顶点,其中基于5d纹理网格数据结构获取上一次搜索所确定的最后一个顶点的上个半边,最后一个顶点的上个半边对应的起始顶点为本次搜索的第一个顶点;

第三类顶点获取单元用于获取从ni开始向上搜索的后续的r-1个顶点以及用于获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的其他顶点,其中获取下一个顶点对应的出半边,将出半边对应的起始顶点作为下一个顶点,其中基于上一个顶点的上个半边的对立半边的上个半边获取下一个顶点对应的出半边。

上述第三类顶点获取单元也可拆分成两个独立的顶点获取单元,以分别获取从ni开始向上搜索的后续的r-1个顶点、以及获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的其他顶点。

此外,顺时针访问子模块包括第一类顶点获取单元’以及第二类顶点获取单元’以及第三类顶点获取单元’:

第一类顶点获取单元’用于获取从ni开始向下搜索的第一个顶点,其中获取hi的下个半边hi+1,hi+1的终止顶点ni+1为向下搜索的第一个顶点;

第二类顶点获取单元’用于获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的第一个顶点,其中获取前一次搜索最后一个顶点的下个半边,将最后一个顶点的下个半边对应的终止顶点作为本次搜索的第一个顶点;

第三类顶点获取单元’用于获取从ni开始向下搜索的剩余r-1个顶点以及用于获取向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的其他顶点,其中,获取下一个顶点对应的中间半边,中间半边对应的终止顶点即作为下一个顶点,其中基于上一顶点的下个半边的对立半边的下个半边获取下一个顶点对应的中间半边。此外,上述三类顶点获取单元’也可拆分成两个独立的顶点获取单元,以分别获取从ni开始向下搜索的剩余r-1个顶点与向左搜索2r次、向下搜索2r次、向右搜索2r次以及向上搜索r-1次中的其他顶点。

作为一优选方案,邻域访问模块12还包括一报错子模块,用于判断若半径为m(m<r)的邻域访问返回结果中,顶点个数不为(2m+1)2-1,返回为空。

优选的,边界点判断模块11中,若初始顶点si无出半边或初始顶点si的出半边无邻接四角面片,则判断初始顶点si为边界点。

4、一种计算机设备

图7所示是本发明实施例提供的一种计算机设备的结构示意图,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备20至少包括但不限于:可通过系统总线相互通信连接的存储器21、处理器22,如图7所示。需要指出的是,图7仅示出了具有组件21-22的计算机设备20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本实施例中,存储器21(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,存储器21还可以既包括计算机设备20的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如方法实施例中的5d纹理网格数据结构的邻域访问装置的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器22在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行5d纹理网格数据结构的邻域访问装置,以实现方法实施例中的5d纹理网格数据结构的邻域访问方法。

5、一种计算机可读存储介质

本申请还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储5d纹理网格数据结构的邻域访问装置,被处理器执行时实现方法实施例的5d纹理网格数据结构的邻域访问方法。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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