一种基于星形假设的点云快速渐进式重建方法与流程

文档序号:15690191发布日期:2018-10-16 21:56阅读:188来源:国知局

本发明涉及几何图形处理的技术领域,具体涉及但不限于一种基于星形假设的点云快速渐进式重建方法,以实现点云数据的快速渐进式构型。



背景技术:

渐进式点云重建方法是一种由动态点云数据快速生成三维模型的方法,是面向虚拟环境仿真、移动机器人导航以及医学3d图像重构领域的一种基于点云的三维重建研究应用。目前常用的渐进式点云重建方法主要分为三种,这三种方法的具体内容以及局限性如下:一是隐式重建法,需要求解隐函数并抽取表面网格,但运算效率较低因此不适合渐进式重建,再者该方法通常要求输入点云的法向信息,而渐进式重建过程中难以估算法向方向;二是显式重建方法,例如基于alphashape的重建方法,难以保持模型表面光滑并且容易出现孔洞结构,而且若采用自适应调整参数进行改善会耗费运算时间;三是基于变形的方法,及利用点云数据驱动初始网格模型发生变形,使该网格模型紧密包围点云,但该方法无法避免运算时出现的网格点自交现象和相应的数值问题。此外,现有方法大多只能针对采集于重建对象表面的点云进行重建,而无法直接应用于在重建内部所采集的点云。



技术实现要素:

本发明的目的是提供一种能够克服现有技术中存在的曲面自交、不能保证模型水密性的点云快速渐进式重建方法,利用建立的星形模型的球面参数化结构,将点云数据表示为单位球面上的标量函数作进一步的计算,简化了运算步骤。

在本发明中,本发明提供了一种基于星形假设的点云快速渐进式重建方法(即针对重建对象的模型重建方法),该方法包括以下步骤:

步骤一,采集或提供重建对象内部的点云;

步骤二,根据所述点云,构建初始球面模型并划分具有n个顶点的三角形网格,对每个所述三角形网格的顶点配置一个大顶堆,利用全部所述顶点构造k-d树;其中,

所述初始球面模型包括球心o和球半径r;

步骤三,将每一个所述点云中的点,沿径向方向投影到所述初始球面模型的球面并得到对应的投影点,基于所述k-d树计算与所述投影点距离最近的所述网格顶点,并将该点绑定在所述距离最近的网格顶点处的所述大顶堆上;

其中,所述径向方向为所述球心o指向所述点云的矢量;

步骤四,根据所述点云计算每个所述网格顶点沿径向方向的目标长度ri,并根据所述目标长度更新所述初始球面模型的形状,从而得到类星形模型;

其中,如果绑定在所述网格顶点的点云集合则ri=max||pj-0||,否则,ri=r;

其中,i∈n,j∈n,n为≥1000的正整数;

步骤五,针对所述类星形模型,构建光滑且紧密包围所述点云的星形网格约束h:s→r,即,

h=argmin∑i||δ(ri+hi)||2+ω∑i||hi||2

其中,h是所述网格顶点在径向方向上相对于所述初始球面模型的网格顶点的偏移量构成的向量,hi是第i个所述网格顶点的偏移量,并且hi≥0,ω是用于控制包围所述点云的紧密程度的权重且ω>0,δ是球面拉普拉斯算子;

步骤六,根据所述h更新所述网格顶点的坐标得到星形模型,和

步骤七,继续渐进式地采集或提供所述重建对象内部的额外点云,并更新所述星形模型的所述球心o的位置;然后重复所述步骤三~六,得到所述重建对象的重建模型。

优选地,所述步骤二包括:根据依次输入的第一个和第二个所述点云中的点,计算所述球心o和所述球半径r,所述球心o=(p1+p2)/2,所述球半径r=||p1-p2||/2,,p1和p2分别代表所述依次输入的第一个和第二个点。

优选地,在所述步骤三中,采用基于k-d树的最近邻搜索法计算与所述投影点距离最近的所述网格顶点。

进一步地,在所述步骤三中,所述大顶堆的顺序根据所述绑定在对应网格顶点的点云到球心o的距离大小确定。

优选地,在所述步骤五中,所述δ采用均权拉普拉斯,对于每个网格顶点si,有δxi=∑i′(xi-xi′),

其中,i′为遍历所述网格顶点si的1-环邻域,

其中,δxi为第i个所述网格顶点的拉普拉斯,∑i′(xi-xi′)表示第i个所述网格顶点与其1-环邻域内所有网格顶点的位置差的总和。

进一步地,所述步骤五还包括求解h:

a.计算所述星形网格约束的一阶偏导方程并令所述一阶偏导方程等于0;

b.联立hi≥0,采用迭代方法求解h;

其中,每次迭代中,当计算所得的hi<0时,则令hi=0,迭代次数的上限可设置为100-500次;

优选地,所述步骤六包括子步骤:

根据qi=0+(si-0)(ri+hi)/r更新所述网格顶点的坐标,其中,qi是第i个所述网格顶点被更新后的坐标,si是所述初始球面模型上的第i个网格顶点的坐标。

优选的,步骤五中的迭代方法是投影高斯-赛德尔迭代方法。

优选地,所述步骤七中,

所述球心o为全部所述点云的重心c,即:c=(∑allpall)/m;

其中,all是动态采集的所有所述点云中点的个数,m是全部所述点云的中点个数。

优选地,所述三角形网格的顶点n为3000~20000。

优选地,所述ω的范围在0.01~100。

在另一优选例中,所述的步骤七被重复n次,其中n为1-10,000的正整数,较佳地2-1000的正整数。

在另一优选例中,n为1,000-100,000,000的正整数。

在另一优选例中,在步骤二中,所述的“划分”为均匀划分。

应理解,在本发明范围内中,本发明的上述各技术特征和在下文(如实施例)中具体描述的各技术特征之间都可以互相组合,从而构成新的或优选的技术方案。限于篇幅,在此不再一一累述。

附图说明

图1为本发明的一个实施例中的点云快速渐进式重建方法的流程图。

图2为本发明的一个实施例中的初始球面模型的示意图。

图3a是本发明的一个实施例中的类星形模型的示意图。

图3b为本发明的一个实施例中的重建对象的重建模型的示意图。

图4a和图4b为本发明的另一个实施例中的类星形模型更新球心o位置前后的示意图。

图5a和图5b为本发明的另一个实施例中的类星形模型删除部分点云前后的示意图。

具体实施方式

针对背景技术的不足,本发明的目的在于提供一种针对类星形形状的点云重建方法,不仅能实现点云的渐进式快速重建,而且能克服现有方法存在的曲面自交、不能保证水密等问题。

术语

如本文所用,术语“投影高斯-赛德尔迭代方法”指数值线性代数中的一个迭代法,可用来求出带不等式约束线性方程组解的近似值。

本发明公开了一种基于星形假设的点云快速渐进式重建方法,基于采集的重构对象的原始点云进行三维对象重构,通过建立球面三角网格并根据原始点云运算球面三角网格的顶点坐标,并且每进行一次网格顶点坐标的更新(即更新球面三角网格的大小)后,还重新根据原始点云进行球面三角网格的位置更新,保证重构模型与重构对象一致。

本发明的主要优点包括:(a)避免了图形运算过程中出现的网格自交现象;(b)重构模型的水密性好;(c)在主要考察点的径向坐标运算的情况下,避免了xyz三个方向上的坐标运算,极大地简化了运算步骤,提高了运算效率。进一步地,本发明方法能够在保证所重建的模型是光滑的、水密的和无自交的,且由于采用了与几何无关的均权拉普拉斯,能有效地避免数值问题;同时由于采用了k-d树最近邻搜索、大顶堆数据结构,并运用投影高斯-赛德尔迭代方法处理不等式约束,大大提高了重建效率,使之不仅适用于适用于一次性重建,而且适用于渐进式重建。

下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。

需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

实施例1

在本发明提及的所有文献都在本申请中引用作为参考,就如同每一篇文献被单独引用作为参考那样。此外应理解,在阅读了本发明的上述讲授内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

本发明的第一实施方式涉及一种基于星形假设的点云快速渐进式重建方法,设计了一种光滑并且尽可能紧密包围点云的星形网格约束h:s→r,能够基于渐进式输入的点云数据不断更新星形网格约束,而且运算速度快捷。

图1是本发明的一个实施例中的基于星形假设的点云快速渐进式重建方法的流程图。该点云快速渐进式重建方法包括以下步骤:步骤101,采集或提供重建对象内部的点云,点云包括海量的点;步骤102,根据点云构建一个初始球面模型;步骤103,将点云中的每一个点投影到初始球面模型的球面并得到对应的投影点,并计算与该投影点距离最近的网格顶点;步骤104,计算每个网格顶点的目标位置初始球面模型根据目标位置进行变形得到类星形模型;步骤105,构建一个光滑且紧密包围点云的星形网格约束;步骤106,根据星形网格约束,重新计算网格顶点的坐标,类星形模型进一步变形得到星形模型;步骤107,继续渐进式地采集或提供重建对象内部的额外点云,更新上述星形模型的球心并对星形模型继续重建,得到重建对象的重建模型。

具体地说,在一个实施例中,该点云快速渐进式重建方法包括以下步骤:

步骤一:采集或提供重建对象内部的点云(点云内包括海量的点)。这些点包含了坐标信息、地址信息等,并构成点云。应注意,本发明的方法也可以用于动态地采集重建对象表面的点云。在本实施例中,重建对象为心脏。

步骤二:在仿真环境下,根据这些动态点云构建一个初始球面模型,并且对该初始球面模型的球面进行网格划分,网格单元取三角形网格,总共为n个,n为1,000-100,000,000的正整数,从而得到球面三角形网格s。在另一优选例中,在步骤二中,所述的“划分”为均匀划分。

图2是本发明的一个实施例中的初始球面模型的示意图。出于运算精度的要求,网格s的个数可以是3000~20,000,在图2所示的实施例中,网格的顶点个数为10000。

该初始球面模型具有球心o和球半径r。同时,每个网格的顶点si配置有一个大顶堆hi,用于存放点云数据,其中,下标i=1,2,3...10000。根据全部的网格顶点构造一颗k-d树。

在本实施例中,点云包含海量的点pk,其中下标k∈n,n为正整数。应该注意的是,点云所包含的点的数量是可以远远超过三角形网格顶点的数量,例如网格顶点为20,000个,点的数目可以为100万个,因此在本实施例中,max(k)>>10,000。所采集的点的个数取决于仿真环境的内存大小。

在本实施例中,初始球心o和初始球半径r的确定方法如下:当输入的点的个数大于2时,根据输入的前两个点计算球面模型的位置和形状大小。具体地说,依次输入点p1、点p2、点p3和点p4,则球心o被设定成点p1和点p2连线的中心,球半径r被设定成点p1与点p2之间模长的一半,也就是,球心o的坐标是:o=(p1+p2)/2,球半径r的长度是:r=||p1-p2||/2。其中||p1-p2||表示点p1与点p2之间的模长计算公式。

该步骤二是用于根据输入的点云确定初始球面模型。

步骤三:将每一个输入的点pk,沿着径向方向投影到上述球面模型的球面并得到投影点pk’,即,

p′k=r(pk-0)/||pk-0||

其中,o表示球心o的位置坐标,r表示球半径r的长度。

同时根据k-d树的结构,计算距离该投影点pk’最近的网格顶点sj;为了快速找到顶点sj上与新球心o距离最远的点,将点pk绑定在对应的网格顶点sj的大顶堆hj上,其中下标j表示绑定有点或点云的网格顶点,并且1≤j≤10,000且j∈n。

总体而言,i∈n,j∈n,n为≥1000的正整数。

这些绑定在对应的网格顶点sj的大顶堆hj的点构成点云集合{pj}。

在本实施例中,径向方向指的是球心o指向点pk的矢量方向。

步骤四,根据当前点云的位置(即点云所包含的各个点的位置),计算球面模型上的每一个网格顶点si沿径向方向的目标长度ri;如果绑定在网格顶点的点云集合则ri=max||pj-0||,否则,将ri取为球半径r,即,ri=r。其中||pi-0||表示点云集合中的每个点pj与球心o之间的模长。

该目标长度ri表示网格顶点的新位置。

其中,求解网格顶点的新位置,需确定每个顶点的位置约束,而位置约束由绑定在该顶点上的离其最远的点的位置确定,为了快速找到这个最远点,可以使用大顶堆以o(1)的时间复杂度获取堆顶元素,即为最远点。因此,每个大顶堆的顺序是根据绑定在网格顶点的点云到球心o的距离大小进行确定。

根据每个网格顶点沿径向方向的目标长度ri,上述球面模型发生进一步变形,得到类星形模型,图3a是本发明的一个实施例中的类星形模型的示意图。可以看见,图3a所示的类星形模型表面连续且并无孔洞出现,水密性良好。

步骤五,根据上述的类星形模型,建立一个光滑且紧密包围点云的星形网格约束h:s→r,该星形网格约束表示所有网格顶点si在径向方向上相对于初始位置的偏移量,初始位置是指初始球面模型上的网格顶点的位置。h:s→r的计算公式表示如下:

h=argmin∑i||δ(ri+hi)||2+ω∑i||hi||2

其中,,h是所有网格顶点在径向方向上相对于所述初始球面模型的网格顶点的的偏移量,hi是第i个网格顶点的偏移量,并且限定hi≥0,ω是用于控制包围全部点云的紧密程度的权重且ω>0,δ是球面拉普拉斯算子。

权重ω的取值范围是0.01~100,在本实施例中,权重ω取0.1。

接着,对h:s→r进行求解得到h。

具体地说,对目标函数:

h=argmin∑i||δ(ri+hi)||2+ω∑i||hi||2

求一阶偏导并令公式等于0,从而得到ltl(r+h)+ωdiag(h)=0。其中,l为均权拉普拉斯矩阵,在本实施例中为全部网格顶点形成的拉普拉斯矩阵。对于每一个网格顶点i有:axi=∑i′(xi-xi′),也就是i′遍历所有网格顶点i的1-环邻域;其中,δxi为第i个所述网格顶点的拉普拉斯,∑i′(xi-xi′)表示第i个所述网格顶点与其1-环邻域内所有网格顶点的位置差的总和。

进一步地,联立等式δxi=∑j(xi-xi′)和不等式约束hi≥0,得到一个线性系统;然后采用投影高斯-赛德尔迭代方法求解该线性系统。应该注意地是,在每次迭代时,先对不等式约束hi≥0进行松弛并更新hi,然后对将结果投影到可信域内(hi≥0),也就是说,当计算得到的hi<0时,设置hi=0。如此循环,直至迭代次数达到上限,迭代的上限为100~500次,在本实施例中,设置迭代次数为100。

在完成迭代计算后,求解得到h(即所有网格顶点si相对于初始位置的偏移量的集合)和hi(第i个网格顶点si相对于其初始位置的偏移量),其中,这里的初始位置是初始球面模型上的网格顶点的位置。

步骤六,根据步骤五求得的h,更新上述类星形模型的网格顶点的坐标,从而得到星形模型。具体地说,qi表示为该星形模型的第i个网格顶点的坐标,qi的计算公式如下:

qi=0+(si-0)(ri+hi)/r

其中si为初始球面模型上的第i个网格顶点的坐标,也称为第i个网格顶点的初始坐标,o表示已更新的球心o的坐标,ri为在步骤四中所计算的目标长度。

在本步骤中,继续更新了网格顶点的坐标,类星形模型得到进一步变形,变成星形模型。

步骤七,继续渐进式地(即“依次累计地输入点”)采集或提供所述重建对象内部的额外点云,更上述星形模型的球心o的位置。具体地说,将输入的全部点云的重心c作为星形模型的新球心o’,

该重心c的计算方法如下:

其中,all是全部点云内点的个数,m是全部所述点云的中点个数,也就是点云按照输入顺序构成的连线的中点个数,例如,点p1、点p2和点p3构成两条连线p1p2和p2p3,中点个数m为2。

进一步地,重复步骤三~六,对星形模型的所有网格顶点的坐标进行更新,得到的模型即为重建对象的重建模型。

在另一优选例中,步骤七被重复n次,其中n为1-10,000的正整数,较佳地2-1000的正整数。图3b为本发明的一个实施例中的重建对象的重建模型的示意图。

图4a和图4b为本发明的另一个实施例中的类星形模型更新球心o位置前后的示意图。如图4a所示,更新球心o位置前的类星形模型表面坑洼不平,并且具有明显孔洞,在更新球心o位置后,如图4b所示,该模型表面变得光滑且紧密包围点云,孔洞消失。因此对初始球面模型的球心o进行更新能够提高运算的精度,保证模型表面不出现自交。

当需要根据条件删除部分点云时,可以通过待删点云的地址,快速搜索存放有待删点云的网格顶点的大顶堆并删除这部分数据,然后重复步骤104~108对模型进行重建。图5a和图5b为本发明的另一个实施例中的类星形模型删除部分点云前后的示意图。

需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

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