发明内容
本发明的目的就是针对鲁棒随机霍夫变换法估计出的法向量具有二义性,目前的重定向方法对点云中的尖锐区域处理效果不理想的问题,提出一种基于均匀网格局部聚焦的点云法向量重定向方法及装置,用来对点云法向量进行重定向。
为了实现上述目的,本发明技术方案如下:
一种基于均匀网格局部聚焦的点云重定向方法,用于对点云中点的法向量进行重定向,所述方法包括步骤:
步骤1、将点云所在的最大区域栅格化为基于均匀网格的三维立方体;
步骤2、选取所述三维立方体的一个方向为当前方向;
步骤3、沿当前方向对所述三维立方体的每一层网格进行逐行扫描,扫描到每一行网格在该方向上的首个有点网格,将该网格前一个空白网格的中心设为该有点网格的焦点;
步骤4、对于设定了焦点的每一个有点网格内的点的法向量进行局部聚焦重定向,并对被重定向的点作上标记;
步骤5、判断所有方向是否都扫描完毕,如果是则进入下一步,否则选取三维立方体的另一个方向为当前方向,返回步骤3;
步骤6、判断是否有未重定向的点,如果有则对点云进行一次随机旋转后,返回步骤1,否则结束重定向。
进一步地,所述均匀网格大小相同,且每个网格内包含的点云中点的数量为10~50个。
进一步地,所述选取栅格化后三维立方体的一个方向为当前方向,其中可以选取的方向包括:X轴正方向,X轴负方向、Y轴正方向,Y轴负方向、Z轴正方向和Z轴负方向。
进一步地,所述沿当前方向对所述三维立方体的每一层网格进行逐行扫描,扫描到每一行网格在该方向上的首个有点网格,将该网格前一个空白网格的中心设为该有点网格的焦点,包括步骤:
选定当前方向上第一层网格,从第一行开始沿当前方向扫描,若该行都是空白网格,则直接换下一行继续扫描,若遇到首个有点网格,将该网格前一个空白网格的中心设为该有点网格的焦点,换下一行继续扫描,直到本层扫描完毕;
在一层扫描结束后,换下一层继续进行扫描,直到三维立方体的每一层网格均扫描完毕。
进一步地,所述对于设定了焦点的每一个有点网格内的点的法向量进行局部聚焦重定向,根据如下策略:
其中点(x0,y0,z0)为焦点坐标,(xi,yi,zi)为点云中的点的坐标,(xni,yni,zni)为该点的法向量,即保持指向三维立方体外部的法向量,改变指向三维立方体内部的法向量的方向。
进一步地,对于非全封闭的点云,在开口处对点云进行采样,通过人为增加点云,使其成为一个封闭的模型。
本发明还提出了一种基于均匀网格局部聚焦的点云重定向装置,用于对点云中点的法向量进行重定向,所述装置包括:
栅格化模块,用于将点云所在的最大区域栅格化为基于均匀网格的三维立方体;
扫描模块,用于选取所述三维立方体的一个方向为当前方向,沿当前方向对所述三维立方体的每一层网格进行逐行扫描,扫描到每一行网格在该方向上的首个有点网格,将该网格前一个空白网格的中心设为该有点网格的焦点;
重定向模块,用于对于设定了焦点的每一个有点网格内的点的法向量进行局部聚焦重定向,并对被重定向的点作上标记;
第一判断模块,用于判断所有方向是否都扫描完毕,如果是则结束扫描,否则选取三维立方体的另一个方向为当前方向,返回扫描模块继续扫描;
第二判断模块,用于判断是否有未重定向的点,如果有则对点云进行一次随机旋转后,返回所述栅格化模块重新对旋转后的点云进行栅格化,否则结束重定向。
进一步地,所述选取栅格化后三维立方体的一个方向为当前方向,其中可以选取的方向包括:X轴正方向,X轴负方向、Y轴正方向,Y轴负方向、Z轴正方向和Z轴负方向。
进一步地,所述重定向模块根据如下策略进行重定向:
其中点(x0,y0,z0)为焦点坐标,(xi,yi,zi)为点云中的点的坐标,(xni,yni,zni)为该点的法向量,即保持指向三维立方体外部的法向量,改变指向三维立方体内部的法向量的方向。
进一步地,所述装置还包括点云封闭模块,用于对于非全封闭的点云,在开口处对点云进行采样,通过人为增加点云,使其成为一个封闭的模型。
本发明提出的基于均匀网格局部聚焦的点云法向量重定向方法及装置,通过将点云所在的最大区域栅格化为基于均匀网格的三维立方体,并从六个方向上对三维立方体的每层网格进行扫描,为包含点数据的有点网格设定其前一个空白网格的中心点为焦点,并根据设定的焦点对有点网格中的点的法向量进行重定向。本发明提出的基于均匀网格局部聚焦的点云法向量重定向方法及装置,避免了求取点与点之间的拓扑关系而带来的复杂计算,同时由于该方法是一种全局的重定向方法,无关重建物的几何特征,从后续的实验结果可以观察到,利用本发明方法重定向的法向量,达到了比较理想的重建效果,而且由于该方法易于被并行化处理,这将有助于运算效率提升。
具体实施方式
下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。
本发明基于均匀网格局部聚焦的点云重定向方法建立在鲁棒随机霍夫变换法向量估计方法的基础上,鲁棒随机霍夫变换法向量估计方法是AlexandreBoulch和RenaudMarlet于2012年提出的点云法向量估计方法,其基本思想是对一个点进行多次求法向量,然后将这些法向量绘制成离散概率分布图,最后根据鲁棒统计理论估计法向量。
对于估计出的点云中点的法向量,由于估计出的法向量具有二义性,需要进行重定向,本实施例基于均匀网格局部聚焦的点云重定向方法如图1所示,包括步骤:
步骤101、将点云所在的最大区域栅格化为基于均匀网格的三维立方体。
对于点云所在的最大区域,建立一个均匀的三维立方体将点云所在的最大区域均匀地分成M*N*L个网格,每个网格大小相同,其中M、N、L为坐标系X、Y、Z轴上网格的数量,如图2所示。栅格化后,所有点云中的点都包含在各个网格中,每个网格(Cell)按有无点数据分别有两种情况,一种是完全空的无任何点的Cell,另一种是有点的Cell。第一种完全空的情况又分为两种子情况,分布在点云外围的,称为“Out-white-cell”;分布在点云内部的,称为“In-white-cell”。对于第二类有点的Cell,称为“Black-cell”。
在对点云进行栅格化了后,点云在某一层的分布情况如图3所示。其中的Black-cell用黑色方格表示,Out-white-cell和In-white-cell用白色方格表示。
需要说明的是,点云栅格化后,每个Cell里面的点的数量不能过多也不能过少,过多化会导致求得错误的局部焦点,过少在后续逐层扫描的时候会进入模型内部也会导致错误的局部焦点。因此,为了权衡速度与质量,设定Black-cell的平均点数量的上限设为50;同时如果模型的表面复杂度比较高,则适当增加栅格化的深度,设定Black-cell的平均点数量的下限阈值为10。
步骤102、选取栅格化后三维立方体的一个方向为当前方向。
本发明的基本思想是分别扫描点云的六个面,为每个面上的点确定法向量重定向的焦点,然后将点云中点的法向量统一为指向三维立方体的外部。对于图2所示的三维立方体的六个面,对应六个方向,分别是X轴正方向,X轴负方向、Y轴正方向,Y轴负方向、Z轴正方向和Z轴负方向。本实施例分别沿这六个方向对三维立方体进行扫描,为点云各个面上的点确定焦点。
步骤103、沿当前方向对三维立方体的每一层网格进行逐行扫描,扫描到每一行网格在该方向上的首个有点网格,将该网格前一个空白网格的中心设为该网格的焦点。
本实施例采用沿给定方向逐层扫描三维立方体的方法来进行局部聚焦。具体步骤如下:
S1、选定当前方向上第一层网格,从第一行开始沿当前方向扫描,若该行都是空白网格,则直接换下一行继续扫描,若遇到首个有点网格,将该网格前一个空白网格的中心设为该有点网格的焦点,换下一行继续扫描,直到本层扫描完毕。
对于任一方向,例如沿X轴正方向扫描时,可以沿Z轴将三维立方体水平分为L层,或是沿Y轴,将三维立方体垂直分为N层,本实施例在X轴正方向扫描时选择沿Z轴将三维立方体水平分为L层,如图3所示。其他方向扫描时,情况类似,这里不再赘述。
对于选定的当前方向,如X轴正方向,以图3所示的一层为例,从第一行的第一个网格开始扫描,遇到Black-cell则停止扫描,否则继续扫描,直到本行扫描结束。
如从x=0,y=0的Cell开始,此时x=0,y=0所在的Cell是Out-white-cell,然后沿着x轴的正方向逐格推进,当扫描到还是Out-white-cell时,继续向前推进,直到碰上Black-cell,则停止本行扫描。
扫描的方向是沿着X轴正方向的,而且已经停在了Black-cell上,因此可以推出Black-cell沿X轴负方向上数的第一格为Out-white-cell,而且是离Black-cell最近的,将此Out-white-cell的中心点设为该Black-cell的焦点。
S2、在一层扫描结束后,换下一层继续进行扫描,直到三维立方体的每一层网格均扫描完毕。
步骤104、对于设定了焦点的每一个有点的网格内的点的法向量进行局部聚焦重定向,并对被重定向的点作上标记。
本实施例沿X轴正方向扫描,其中一层的扫描结果如图4所示,可见经过逐层扫描,在X轴正方向上的Black-cell都设定了焦点,就可以根据设定的焦点对该Black-cell中的点的法向量进行重定向,重定向根据如下策略:
其中点(x0,y0,z0)为聚焦点,(xi,yi,zi)为点云中的某点,(xni,yni,zni)为该点的法向量。即保持指向外部的法向量,改变指向立方体内部的法向量的方向,从而完成重定向。
同时对于已被重定向的点云数据,作上一个标识记号,这样,可以防止重复被重定向,减少计算量。
步骤105、判断所有方向是否都扫描完毕,如果是则进入下一步,否则选择三维立方体的另一个方向为当前方向,返回步骤103。
三维立方体有6个方向,步骤103-步骤104完成了一个方向上的扫描,通过改变扫描的方向,完成其他各个方向上的扫描,从而为点云的每个面上的点的法向量进行重定向。如图5所示,其中一层网格经过扫描后的焦点示意图。
需要说明的是,对于非全封闭的点云模型,处理方法是在开口处采样少许点云,然后通过人为增加点云,使其成为一个封闭的模型,这样,用本发明的方法亦可很好地处理重定向。对于单侧点云模型,由于只要人为在一侧采集几处焦点,便能很好地重定向,这里不再赘述。
步骤106、判断是否有未重定向的点,如果有则对点云进行一次随机旋转后,返回步骤101,否则结束重定向。
当对点云及其法向量经过上述处理后,一部分点已被成功重定向,然而,有一部分点云数据在扫描方向上被遮挡而无法被重定向,因此,在前两步完成后,对点云及其法向量进行一次随机旋转,由于被重定向过的点云进行过标记,当再进行逐层扫描和局部聚焦重定向这一步时,遇到已被重定向的点,则作忽略处理。
图6示出了基于均匀网格局部聚焦的点云法向量重定向装置,基于上述重定向方法,本实施例还提出了用于实现该基于均匀网格局部聚焦的点云法向量重定向方法的装置,包括:
栅格化模块,用于将点云所在的最大区域栅格化为基于均匀网格的三维立方体;
扫描模块,用于选取所述三维立方体的一个方向为当前方向,沿当前方向对所述三维立方体的每一层网格进行逐行扫描,扫描到每一行网格在该方向上的首个有点网格,将该网格前一个空白网格的中心设为该有点网格的焦点;
重定向模块,用于对于设定了焦点的每一个有点网格内的点的法向量进行局部聚焦重定向,并对被重定向的点作上标记;
第一判断模块,用于判断所有方向是否都扫描完毕,如果是则结束扫描,否则选取三维立方体的另一个方向为当前方向,返回扫描模块继续扫描;
第二判断模块,用于判断是否有未重定向的点,如果有则对点云进行一次随机旋转后,返回所述栅格化模块重新对旋转后的点云进行栅格化,否则结束重定向。
对于非全封闭的点云,本装置还设置了点云封闭模块,用于对于非全封闭的点云,在开口处对点云进行采样,通过人为增加点云,使其成为一个封闭的模型,便于进行扫描和局部聚焦。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。