一种建筑细部结构自动单体化方法、系统及可读存储介质转让专利

申请号 : CN202210952813.5

文献号 : CN115018893B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 史与正王嘉伟张淑玲高凯李鹏飞

申请人 : 武汉追月信息技术有限公司湖南省地质地理信息所(湖南省地质大数据中心)

摘要 :

本申请实施例提供的一种建筑细部结构自动单体化方法、系统及可读存储介质,该方法包括获取用于反映真实三维场景的城市模型,并从所述城市模型中切割出建筑细部结构部分,得到目标模型;从预设的模型库中提取出待配准的源模型,并分别对所述目标模型、以及源模型进行点云化处理,得到相应的目标点云以及源点云;基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准,并在确定配准成功时,得到适配的目标模型,以及,在确定配准失败时,基于从所述模型库中提取出的新模型样本更新所述源点云,并返回到所述基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准的步骤继续执行。该方法的实施能够加强点云匹配的可靠性。

权利要求 :

1.一种建筑细部结构自动单体化方法,其特征在于,包括以下步骤:S1、获取用于反映真实三维场景的城市模型,并从所述城市模型中切割出建筑细部结构部分,得到目标模型;

S2、从预设的模型库中提取出待配准的源模型,并分别对所述目标模型、以及源模型进行点云化处理,得到相应的目标点云以及源点云;

S3、基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准,并在确定配准成功时,得到适配的目标模型,以及,在确定配准失败时,基于从所述模型库中提取出的新模型样本更新所述源点云,并返回到所述基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准的步骤继续执行;

步骤S3中,所述基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准,包括:S31、分别对目标点云、以及源点云进行主分量分析,得到多个反映高维度特征信息的目标关键点、以及源关键点;

S32、构建涵盖各关键点的立体格网,并根据所述立体格网中每个格子的对应点的特征信息,确定各所述目标关键点、以及源关键点分别对应的bsc特征;

S33、根据各所述目标关键点、以及源关键点之间的bsc特征差异,确定相应关键点之间的特征距离;

S34、根据各所述目标关键点、以及源关键点之间在实际空间位置上的差异,确定相应关键点之间的欧式距离;

S35、基于所述特征距离、以及所述欧式距离进行加权平均,得到用于进行关键点配对的平均欧式距离;

其中, 特征距离定义为一个i×j的二维矩阵FD,其权重计算公式为:WFD = exp(‑1.0×iteration_number / EF.m);

iteration_number为迭代次数;EF.m为设计参数,其用于控制权重降低的速率;

定义欧氏距离为一个i×j的二维矩阵ED,其权重WED在已知权重WFD的情况下,通过1‑ WFD进一步确定;

平均欧式距离的计算公式为:

CD[x][y]=WFD*FD[x][y]+WED*ED[x][y];

求得平均欧式距离CD后,采用最邻近点配对方式进行关键点对的匹配;

S36、基于匹配出的关键点对,使用SVD分解求变换矩阵方法,求得相应的变换矩阵;

S37、在确定所述变换矩阵表达的平移距离和旋转角度均高于预设阈值时,根据所述变换矩阵对所述源模型进行仿射变换,并返回到步骤S33继续执行,否则,将认为源模型与目标模型趋近于重合,并基于当前迭代中匹配出的关键点之间的特征距离、以及欧式距离,判断是否配准成功。

2.根据权利要求1所述的方法,其特征在于,所述城市模型按照多节点方式存储,其中,每个节点分别对应一个小区块模型;步骤S1中,所述从所述城市模型中切割出建筑细部结构部分,得到目标模型,包括:S11、针对选定的待切割区域,以区域中心点为中心,以预设的阈值为半径,划定出涵盖所述待切割区域的包围盒;

S12、遍历所述城市模型中的所有节点,遍历节点的过程中,在确定相应节点被所述包围盒完全包含时,将所述相应节点添加到预设的输出列表,以及,在确定相应节点未被所述包围盒完全包含时,遍历所述相应节点中的所有面;

S13、遍历面的过程中,在确定遍历到的面被所述包围盒完全包围时,将当前遍历到的面添加到预设的新节点,以及,在确定遍历到的面未被所述包围盒完全包围时,将当前遍历到的面与所述包围盒的交集面添加到所述新节点;

S14、将所述新节点添加到所述输出列表,并在达到预设的遍历结束条件时,基于所述输出列表构建目标模型。

3.根据权利要求1所述的方法,其特征在于,将所述目标模型、以及源模型作为点云化对象,步骤S2中,对所述点云化对象进行点云化处理,得到相应的点云数据,包括:S21、遍历所述点云化对象中的所有面,遍历过程中,按照预设的采样规则,进行采样点的选取;

S22、将所述采样点添加到预设的点集合中,并在结束遍历时,基于所述点集合确定点云数据。

4.根据权利要求3所述的方法,其特征在于,步骤S22中,所述基于所述点集合确定点云数据,包括:S221、将所述点集合输出到点云中,得到采样后的初始点云;

S222、在确定所述初始点云的点规模大于、或等于预设的规模阈值时,基于具备相同网格编号的多个点仅包括其中第一个点的规则,对所述初始点云进行降采样处理,得到点规模小于预设的规模阈值的点云数据;

S223、在确定所述初始点云的点规模小于预设的规模阈值时,基于所述初始点云确定点云数据。

5.根据权利要求1所述的方法,其特征在于,将所述目标点云以及所述源点云分别作为点云对象,步骤S31中,所述对目标点云、以及源点云进行主分量分析,包括:S311、针对所述点云对象中的每个点,分别对相应点在预设搜索半径内关联到的领域点进行搜索;

S312、针对所述点云对象中的每个点,分别基于关联到的各领域点进行主成分分析,得到包含多个特征值的特征值数组,所述特征值用于表征不同主成分坐标轴所对应的主成分方差;

S313、根据各点在主成分坐标轴上的方差差异、以及关联到的领域点数量确定筛选规则,并基于所述筛选规则从所述点云对象中筛选出明确高维度特征信息的关键点。

6.根据权利要求1所述的方法,其特征在于,将所述目标关键点、以及所述源关键点分别作为关键点对象,步骤S32中,所述确定各所述目标关键点、以及源关键点分别对应的bsc特征,包括:S321、针对各关键点对象,分别对相应关键点对象在预设特征半径内的临近点进行搜索、以及建立局部坐标系,所述局部坐标系的主方向为Z轴正方向,法方向为X轴正方向;

S322、将搜索的临近点变换到局部坐标系中,并根据预设的格网生成标准,生成与所述局部坐标系相适应的立体格网,所述立体格网包括XOY、 XOZ以及YOZ这三张投影面;

S323、遍历各临近点分别往XOY面、 XOZ面以及YOZ面的投影,并利用高斯距离加权计算落入每个格子中的点个数;

S324、遍历所述立体格网中的所有格子,并根据所述落入每个格子中的点个数确定每个格子的归一化权值;

S235、根据每个格子的归一化权值、与格子中的点的局部坐标系的深度值之间的乘积,确定每个格子的深度值;

S326、根据所述立体格网中每个格子的深度值与预设的标准差之间的偏离比较结果,为每个格子设定相应的特征值;

S327、基于所述每个格子设定相应的特征值,构建用于反映关键点特征、以及确定bsc特征的特征值集合。

7.一种建筑细部结构自动单体化系统,其特征在于,所述系统包括模型切割模块、点云化模块以及点云配准模块,其中:所述模型切割模块,用于获取用于反映真实三维场景的城市模型,并从所述城市模型中切割出建筑细部结构部分,得到目标模型;

所述点云化模块,用于从预设的模型库中提取出待配准的源模型,并分别对所述目标模型、以及源模型进行点云化处理,得到相应的目标点云以及源点云;

所述点云配准模块,用于基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准,并在确定配准成功时,得到适配的目标模型,以及,在确定配准失败时,基于从所述模型库中提取出的新模型样本更新所述源点云,并返回到所述基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准的步骤继续执行;

所述点云配准模块基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准的具体实现为:分别对目标点云、以及源点云进行主分量分析,得到多个反映高维度特征信息的目标关键点、以及源关键点;

构建涵盖各关键点的立体格网,并根据所述立体格网中每个格子的对应点的特征信息,确定各所述目标关键点、以及源关键点分别对应的bsc特征;

根据各所述目标关键点、以及源关键点之间的bsc特征差异,确定相应关键点之间的特征距离;

根据各所述目标关键点、以及源关键点之间在实际空间位置上的差异,确定相应关键点之间的欧式距离;

基于所述特征距离、以及所述欧式距离进行加权平均,得到用于进行关键点配对的平均欧式距离;

其中, 特征距离定义为一个i×j的二维矩阵FD,其权重计算公式为:WFD = exp(‑1.0×iteration_number / EF.m);

iteration_number为迭代次数;EF.m为设计参数,其用于控制权重降低的速率;

定义欧氏距离为一个i×j的二维矩阵ED,其权重WED在已知权重WFD的情况下,通过1‑ WFD进一步确定;

平均欧式距离的计算公式为:

CD[x][y]=WFD*FD[x][y]+WED*ED[x][y];

求得平均欧式距离CD后,采用最邻近点配对方式进行关键点对的匹配;

基于匹配出的关键点对,使用SVD分解求变换矩阵方法,求得相应的变换矩阵;

在确定所述变换矩阵表达的平移距离和旋转角度均高于预设阈值时,根据所述变换矩阵对所述源模型进行仿射变换,并返回到步骤S33继续执行,否则,将认为源模型与目标模型趋近于重合,并基于当前迭代中匹配出的关键点之间的特征距离、以及欧式距离,判断是否配准成功。

8.一种可读存储介质,其特征在于,所述可读存储介质中包括建筑细部结构自动单体化方法程序,所述建筑细部结构自动单体化方法程序被处理器执行时,实现如权利要求1至

6中任一项所述的方法的步骤。

说明书 :

一种建筑细部结构自动单体化方法、系统及可读存储介质

技术领域

[0001] 本申请涉及实景三维建模技术领域,具体而言,涉及一种建筑细部结构自动单体化方法、系统及可读存储介质。

背景技术

[0002] 随着信息技术的发展,“数字地球”和“数字城市”等宏大概念已经不在停留在纸面。据统计,所有副省级以上城市、超过89%的地级及以上城市均提出智慧城市的建设。对此,无论其中的GIS地理信息系统还是VR虚拟现实应用,都离不开基础的城市模型建设。而在城市模型建设中,占比最高,同时也是最为复杂的就是建筑物。因此,在生产过程中,大量时间和人力被用于建筑模型的生产。
[0003] 目前,城市模型建设中主要分为下述几种方式进行建模:1、利用三维软件(例如,3DMAX,Maya 及AutoCAD等建模软件)进行手工建模;2、利用仪器设备(例如,三维扫描仪、无人机等)进行自动建模。
[0004] 然而,上述几种方式并未考虑到采用合适的方式,保证对建筑物内部的细节结构(尤其是凹陷部位和拐角部位)的精准化表达、以及对存在相似性甚至一致性的细部结构进行有效甄别,以避免反复执行相同的执行步骤,存在建筑物内部细节的呈现效果不佳,操作执行效率低的问题。

发明内容

[0005] 本申请实施例的目的在基于提供一种建筑细部结构自动单体化方法、系统及可读存储介质,可以提高建筑物内部细节结构的呈现效果,提高执行效率。
[0006] 本申请实施例还提供了一种建筑细部结构自动单体化方法,包括以下步骤:
[0007] S1、获取用于反映真实三维场景的城市模型,并从所述城市模型中切割出建筑细部结构部分,得到目标模型;
[0008] S2、从预设的模型库中提取出待配准的源模型,并分别对所述目标模型、以及源模型进行点云化处理,得到相应的目标点云以及源点云;
[0009] S3、基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准,并在确定配准成功时,得到适配的目标模型,以及,在确定配准失败时,基于从所述模型库中提取出的新模型样本更新所述源点云,并返回到所述基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准的步骤继续执行。
[0010] 第二方面,本申请实施例还提供了一种建筑细部结构自动单体化系统,所述系统包括模型切割模块、点云化模块以及点云配准模块,其中:
[0011] 所述模型切割模块,用于获取用于反映真实三维场景的城市模型,并从所述城市模型中切割出建筑细部结构部分,得到目标模型;
[0012] 所述点云化模块,用于从预设的模型库中提取出待配准的源模型,并分别对所述目标模型、以及源模型进行点云化处理,得到相应的目标点云以及源点云;
[0013] 所述点云配准模块,用于基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准,并在确定配准成功时,得到适配的目标模型,以及,在确定配准失败时,基于从所述模型库中提取出的新模型样本更新所述源点云,并返回到所述基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准的步骤继续执行。
[0014] 第三方面,本申请实施例还提供了一种可读存储介质,所述可读存储介质中包括建筑细部结构自动单体化方法程序,所述建筑细部结构自动单体化方法程序被处理器执行时,实现如上述任一项所述的一种建筑细部结构自动单体化方法的步骤。
[0015] 由上可知,本申请实施例提供的一种建筑细部结构自动单体化方法、系统及可读存储介质,将三维模型中的代表建筑物的细部结构区域的多边形网格单体化出来,然后将其与模型库中的源模型进行检索对比,最终得到适配的细部结构。其中,采用了基于全局的点云特征和基于实际配准的点云对的平均欧氏距离结合的方式来判断最终的点云配准结果,既综合了点云的全局特征,也考虑了模型中的细节相似度,大幅加强了点云匹配的可靠性,进一步提高了建筑物内部细节结构的呈现效果。
[0016] 本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

[0017] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0018] 图1为本申请实施例提供的一种建筑细部结构自动单体化方法的流程图;
[0019] 图2为模型切割示意图;
[0020] 图3为本申请实施例提供的一种建筑细部结构自动单体化系统的结构示意图。

具体实施方式

[0021] 下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0022] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0023] 请参照图1,图1是本申请一些实施例中的一种建筑细部结构自动单体化方法的流程图。以该方法应用于计算机设备(该计算机设备具体可以是终端或服务器,终端具体可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群)为例进行说明,包括以下步骤:
[0024] 步骤S1,获取用于反映真实三维场景的城市模型,并从所述城市模型中切割出建筑细部结构部分,得到目标模型。
[0025] 步骤S2,从预设的模型库中提取出待配准的源模型,并分别对所述目标模型、以及源模型进行点云化处理,得到相应的目标点云以及源点云。
[0026] 步骤S3,基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准,并在确定配准成功时,得到适配的目标模型,以及,在确定配准失败时,基于从所述模型库中提取出的新模型样本更新所述源点云,并返回到所述基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准的步骤继续执行。
[0027] 由上可知,本申请公开的一种建筑细部结构自动单体化方法,将三维模型中的代表建筑物的细部结构区域的多边形网格单体化出来,然后将其与模型库中的源模型进行检索对比,最终得到适配的细部结构。其中,采用了基于全局的点云特征和基于实际配准的点云对的平均欧氏距离结合的方式来判断最终的点云配准结果,既综合了点云的全局特征,也考虑了模型中的细节相似度,大幅加强了点云匹配的可靠性,进一步提高了建筑物内部细节结构的呈现效果。
[0028] 在其中一个实施例中,所述城市模型按照多节点方式存储,其中,每个节点分别对应一个小区块模型;步骤S1中,所述从所述城市模型中切割出建筑细部结构部分,得到目标模型,包括:
[0029] 步骤S11,针对选定的待切割区域,以区域中心点为中心,以预设的阈值为半径,划定出涵盖所述待切割区域的包围盒。
[0030] 具体的,请参考图2,当前实施例中,计算机设备将以图中示意的A点为中心,以预设的阈值r为半径,划定出一个圆形的包围盒Abox。
[0031] 在其中一个实施例中,A点的坐标可以基于鼠标锚点与模型之间的碰撞坐标得以确定。
[0032] 步骤S12,遍历所述城市模型中的所有节点,遍历节点的过程中,在确定相应节点被所述包围盒完全包含时,将所述相应节点添加到预设的输出列表,以及,在确定相应节点未被所述包围盒完全包含时,遍历所述相应节点中的所有面。
[0033] 具体的,在已知包围盒Abox的坐标时,计算机设备将遍历整体模型的所有节点,并将遍历到的节点坐标与包围盒Abox的坐标进行对比,其中,与包围盒Abox存在重叠区域的节点加入到节点列表nodelist中。
[0034] 之后,计算机设备还会遍历该节点列表nodelist,且遍历过程中,会将被包围盒Abox完全包含的节点,加入到输出列表resultlist中。
[0035] 另外,对于只有一部分包含在包围盒Abox中的节点,计算机设备还会遍历该节点的所有面。
[0036] 步骤S13,遍历面的过程中,在确定遍历到的面被所述包围盒完全包围时,将当前遍历到的面添加到预设的新节点,以及,在确定遍历到的面未被所述包围盒完全包围时,将当前遍历到的面与所述包围盒的交集面添加到所述新节点。
[0037] 步骤S14,将所述新节点添加到所述输出列表,并在达到预设的遍历结束条件时,基于所述输出列表构建目标模型。
[0038] 具体的,计算机设备将新节点new_node1添加到输出列表resultlist,并在结束遍历时,基于该输出列表resultlist生成一个新的模型,该模型即为切割好的目标模型。
[0039] 在其中一个实施例中,将所述目标模型、以及源模型作为点云化对象,步骤S2中,对所述点云化对象进行点云化处理,得到相应的点云数据,包括:
[0040] 步骤S21,遍历所述点云化对象中的所有面,遍历过程中,按照预设的采样规则,进行采样点的选取。
[0041] 具体的,计算机设备将读取模型中所有面的信息,并将其保存在预设的列表all_planes中。
[0042] 之后,计算机设备在遍历列表all_planes时,计算机设备将按照预设的采样规则,例如,从左到右,从上到下、且每间隔相应的采样间隔(该参数可以预先设定好,本申请实施例不对其具体取值进行限定)进行采样点P的选取。
[0043] 步骤S22,将所述采样点添加到预设的点集合中,并在结束遍历时,基于所述点集合确定点云数据。
[0044] 具体的,计算机设备会将选取到的采样点P,统一添加到预设的点集合point_net中。之后,在结束遍历时,再将该点集合point_net输出到点云,即可得到采样后的点云。
[0045] 上述实施例,在进行点云配准之间,对非点云类型的模型进行点云化处理,以将模型的点线面转化为纯点的格式,保证了点云配准的顺利实施。
[0046] 在其中一个实施例中,步骤S22中,所述基于所述点集合确定点云数据,包括:
[0047] 步骤S221,将所述点集合输出到点云中,得到采样后的初始点云。
[0048] 步骤S222,在确定所述初始点云的点规模大于、或等于预设的规模阈值时,基于具备相同网格编号的多个点仅包括其中第一个点的规则,对所述初始点云进行降采样处理,得到点规模小于预设的规模阈值的点云数据。
[0049] 具体的,计算机设备将按照设定大小,进行网格划分。其中,在每个网格中只取一个点,从而达到只遍历一次,就完成均匀采样的效果。
[0050] 在其中一个实施例中,降采样的实施步骤包括:
[0051] 1、设定抽稀格网的大小voxel。
[0052] 2、确定点云包围盒box,计算包围盒box在x,y,z方向上的长度lx, ly, lz。
[0053] 3、结合格网大小voxel,计算在x,y,z方向涵盖的网格数量nx,ny,nz:
[0054] nx = ceil(lx/voxel)+1;
[0055] ny = ceil(ly/voxel)+1;
[0056] nz= ceil(lz/voxel)+1。
[0057] 4、遍历点云,并计算每个点云在格网中的位置即网格编号。其中:
[0058] (1)根据点坐标(x,y,z)、格网坐标左上角坐标(x0, y0,z0)、格网大小voxel计算点云在格网中的位置。
[0059] (2)编号方式是按照由Z、Y、X轴负方向到正方向依次排序。示例性的,点(x,y,z)在X、Y、Z方向的编号可以为:
[0060] vx=(x‑x0)/voxel,vy=(y‑y0)/voxel,vz=(z‑z0)/voxel。
[0061] (3)因此,对于点坐标(x,y,z),其所在的网格编号则为index = vx * ny * nz + vy * nz + nz。
[0062] 5、将点云中的点,按照网格编号大小进行排序。
[0063] 6、再次遍历排序后的点云,由于相同网格编号的点只保留第一个,因此,将点云中的其余包含相同网格编号的多余点进行移除,并将保留下的点保存到结果点云result_PointNet中。
[0064] 上述实施例,仅需要遍历两次点云,避免了遍历中还嵌套一次遍历,提高了算法的执行效率。
[0065] 步骤S223,在确定所述初始点云的点规模小于预设的规模阈值时,基于所述初始点云确定点云数据。
[0066] 在其中一个实施例中,步骤S3中,所述基于目标点云与源点云之间全局特征和平均欧式距离进行点云配准,包括:
[0067] 步骤S31,分别对目标点云、以及源点云进行主分量分析,得到多个反映高维度特征信息的目标关键点、以及源关键点。
[0068] 具体的,虽然目标点云、以及源点云都已经经过上述的点云化和降采样处理,并转化为较小的点云模型。但此时,点云中点的规模通常仍然超过100000。
[0069] 为此,当前实施例中,将采用主成分分析法分别从上述两个点云中提取数量更少,且包含更多高维度特征信息的点云特征。
[0070] 步骤S32,构建涵盖各关键点的立体格网,并根据所述立体格网中每个格子的对应点的特征信息,确定各所述目标关键点、以及源关键点分别对应的bsc特征。
[0071] 具体的, bsc特征进一步反映了点云的关键点代表的局部特征。
[0072] 当前实施例中,在进行bsc特征计算的时候,首先,将关键点在XOY、XOZ、YOZ三个面上进行投影,并转化到对应的局部坐标系。将每个格子对应关键点的局部坐标系的z值加权平均作为对应格子的深度。基于立体格网中每个格子的深度值与预设的标准差之间的偏离比较结果,构建反映格网特征的第一个二进制特征值集合feature1。示例性的,二进制特征值集合的构建方式可以包括:在确定相应格子的深度值偏离了预设的标准差时,即深度值‑均值>标准差,可以将该处相应格子的特征值置为1,否则,将置为0。
[0073] 之后,在保持Z轴不变,X、Y轴反向的情况下,再重复上述的特征值集合的构建步骤,得到相应的第二个二进制特征值集合feature2。
[0074] 最终,所得的第一特征值集合feature1、以及第二特征值集合feature2将构成对应的bsc特征。
[0075] 步骤S33,根据各所述目标关键点、以及源关键点之间的bsc特征差异,确定相应关键点之间的特征距离。
[0076] 具体的,点与点之间的bsc特征差异性即构成了特征距离,当前实施例中,在源模型和目标模型中各包含i个和j个关键点时,该特征距离即可定义为一个i×j的二维矩阵FD。
[0077] 其中,对于该二维矩阵FD中的第x行、第y列的元素取值,即FD[x][y],其可以通过源模型中的第x个关键点和目标模型中的第y个关键点之间的特征距离求解得到。
[0078] 步骤S34,根据各所述目标关键点、以及源关键点之间在实际空间位置上的差异,确定相应关键点之间的欧式距离。
[0079] 具体的,欧式距离也可定义为一个i×j的二维矩阵ED,但是对于每一组点,与特征距离不同的是,欧氏距离是通过两个点之间的实际空间距离计算得到,也就是求三维坐标的平方和之后,再进行开方,本申请实施例不对其具体的计算公式进行限定。
[0080] 步骤S35,基于所述特征距离、以及所述欧式距离进行加权平均,得到用于进行关键点配对的平均欧式距离。
[0081] 需要说明的是,特征距离代表着关键点的特征相似性,也就是关键点与周围的临近点之间的关系的相似性,其不会随着模型的旋转或位移而发生改变,衡量的是点云中特征的相似性。
[0082] 而,欧式距离则代表着关键点之间的实际空间位置的差异性,其会随着模型的旋转或位移而发生改变,且,在对源模型进行变换的过程中,源模型与目标模型之间的空间位置也会逐渐接近。
[0083] 为此,当前实施例中,设定对应ED的权重WED会随着迭代次数的增加,逐步由0趋近于1,设定对应FD的权重WFD会随着迭代次数的增加,逐步由1趋近于0。
[0084] 在其中一个实施例中,对应FD的权重WFD可通过以下公式计算得到:
[0085] WFD = exp(‑1.0×iteration_number / EF.m);
[0086] 其中,iteration_number为迭代次数;EF.m为人为设计的参数,其用于控制权重降低的速率;对应ED的权重WED可以在已知权重WFD的情况下,通过:1‑ WFD进一步确定。
[0087] 综上所述,对应平均欧式距离CD将通过以下方式计算得到:
[0088] CD[x][y]=WFD*FD[x][y]+WED*ED[x][y]。
[0089] 当前实施例中,在求得平均欧式距离CD的情况下,将采用最邻近点配对方式进行关键点对的匹配,包括:
[0090] 遍历源点云中的每一个关键点,其中,对于遍历到的第x个关键点,将遍历目标点云中的每一个关键点,并计算两个遍历点之间对应取到的CD值。当前,通过识别两个遍历点之间的综合性差异,在确定遍历点x与y之间对应取到的CD值最小,且低于设定阈值时,将y作为与源点云中第x个关键点匹配成功的点,并以此组成相应的关键点对。
[0091] 在其中一个实施例中,在完成上述的遍历之后,即可得到成功匹配的两两对应的关键点对,并以关键点在源点云和目标点云中的序号进行保存。
[0092] 步骤S36,基于匹配出的关键点对,使用SVD分解求变换矩阵方法,求得相应的变换矩阵。
[0093] 具体的,在已知点两两对应且按对应顺序排列的pcS和pcT点云(示例性的,在已知匹配得到了关键点对,以500对为例,若已知该500对关键点在源点云和目标点云中的序号,则可以从源点云、以及目标点云中将其读取出来,并分别记作pcS和pcT)时,计算机设备可以使用SVD分解求变换矩阵方法,求得对应的变换矩阵Rt_temp。
[0094] 在其中一个实施例中,计算机设备可以基于开源pcl库中提供的SVD.estimateRigidTransformation方法接口实现上述操作,在此不进行过多赘述。
[0095] 需要说明的是,由于源模型和目标模型之间存在差异,所以关键点匹配的过程也会产生误差,导致计算的变换矩阵也存在误差。因此,一次变换得到结果往往难以达到要求,此时的pcS和pcT还可以继续拟合。
[0096] S37、在确定所述变换矩阵表达的平移距离和旋转角度均高于预设阈值时,根据所述变换矩阵对所述源模型进行仿射变换,并返回到步骤S33继续执行,否则,将认为源模型与目标模型趋近于重合,并基于当前迭代中匹配出的关键点之间的特征距离、以及欧式距离,判断是否配准成功。
[0097] 具体的,为了通过pcS拟合pcT,当前实施例中,还将对pcS通过步骤S36中求得的Rt_temp进行仿射变换。
[0098] 在其中一个实施例中,经过如下变换之后: pcS =pcS*Rt_temp,将使得pcS的坐标得到更新,并更加趋近于pcT。
[0099] 具体的,在迭代中,计算机设备将定义的Rt_result来保存变换矩阵,由于每次变换都相当于pc_new = pc_old * Rt_temp。当前实施例中,基于矩阵乘法结合律,可以在每次迭代后,计算Rt_result = Rt_result*Rt_temp,如此,就可以得到用于替代多次迭代Rt_temp的Rt_result。
[0100] 另外,计算机设备还可以基于如下方式,判断是否配准成功:
[0101] (1)当配准的FDstd值(即匹配出的关键点之间的特征距离)和RMSE值(即匹配出的关键点之间的欧式距离)均低于设定阈值时,判定本次配准成功。
[0102] (2)否则,判定本次配准失败,并从模型库中取新的模型样本进行匹配。其中,当有多个匹配成功时,将RMSE值最小的作为最终的匹配结果。
[0103] 上述实施例中,可以认为,迭代变换的过程就是将源模型经过旋转和位移的方式进行变换,从而达到在不改变形状的情况下,让两个点云达到重合(或接近重合)的目的,进而提高配准精准度。
[0104] 在其中一个实施例中,将所述目标点云以及所述源点云分别作为点云对象,步骤S31中,所述对目标点云、以及源点云进行主分量分析,包括:
[0105] 步骤S311,针对所述点云对象中的每个点,分别对相应点在预设搜索半径内关联到的领域点进行搜索。
[0106] 具体的,计算机设备将并行处理点云中的所有点,并搜索每个点在预设搜索半径内的领域点,以及,同步确定涵盖到的领域点数量以及用于进行标识的领域点序号。
[0107] 步骤S312,针对所述点云对象中的每个点,分别基于关联到的各领域点进行主成分分析,得到包含多个特征值的特征值数组,所述特征值用于表征不同主成分坐标轴所对应的主成分方差。
[0108] 具体的,计算机设备可以利用开源库opencv对各点的邻域点坐标进行主成分分析。其中,针对各点,在输入所有的邻域点坐标到开源库opencv时,将通过开源库opencv中的库函数cvCalcPCA求得该点的均值、特征向量feature_vectors、以及包含多个特征值的特征值数组feature_values。
[0109] 在其中一个实施例中,该特征值数组feature_values中共包含了三个特征值,分别记作feature_value1、feature_value2、以及feature_value3。
[0110] 步骤S313,根据各点在主成分坐标轴上的方差差异、以及关联到的领域点数量确定筛选规则,并基于所述筛选规则从所述点云对象中筛选出明确高维度特征信息的关键点。
[0111] 需要说明的是,该特征值数组feature_values中包含的各项特征值分别代表不同主成分坐标轴所对应的主成分方差,其中,主成分方差越大,则代表特征值越明显。
[0112] 当前实施例中,可以通过设定相应的阈值,来筛除在各个主成分坐标轴上方差差异不大,即宏观上认为特征不明显的特征点。
[0113] 在其中一个实施例中,在筛除特征不明显的特征点时,计算机设备可以通过计算特征值数组中的feature_value2和feature_value1之间的比例ratio1,即ratio1=feature_value2/ feature_value1,以及,feature_value3和feature_value2之间的比例ratio2,即ratio2=feature_value3/ feature_value2进行关键点的选定。其中,对应比例低于设定的阈值ratio_max、且邻域点数多于设定值min_neighborhood的点,将作为选中的关键点,否则,将作为多余点,即特征不明显的点进行移除。
[0114] 在其中一个实施例中,计算机设备还可以对点云中的每个点进行邻域搜索,且,对于局部区域也只保留一个特征,由于前面已经进行了特征筛选步骤,当前将采用保留检索点的方案,以提高执行速度。其具体可通过以下步骤实现:
[0115] (1)设定邻域搜索半径r,并将筛选出的关键点全部加入到预设的unVisitedPtId列表中,以及,同步记录未筛选点。
[0116] (2)通过邻域搜寻算法,遍历所有的未筛选点,遍历过程中,将对应未筛选点的邻域搜索半径r以内的点,从unVisitedPtId列表中移除。
[0117] (3)最终,unVisitedPtId列表中剩下的点,即为经过非极大值抑制后所确定的关键点keyPointIndices。
[0118] 在其中一个实施例中,将所述目标关键点、以及所述源关键点分别作为关键点对象,步骤S32中,所述确定各所述目标关键点、以及源关键点分别对应的bsc特征,包括:
[0119] 步骤S321,针对各关键点对象,分别对相应关键点对象在预设特征半径内的临近点进行搜索、以及建立局部坐标系,所述局部坐标系的主方向为Z轴正方向,法方向为X轴正方向。
[0120] 步骤S322,将搜索的临近点变换到局部坐标系中,并根据预设的格网生成标准,生成与所述局部坐标系相适应的立体格网,所述立体格网包括XOY、 XOZ以及YOZ这三张投影面。
[0121] 具体的,计算机设备将根据设定的格网个数voxel_side_num和点密度计算的点大小来生成包含XOY、XOZ、YOZ三张投影面的立体格网grid。
[0122] 步骤S323,遍历各临近点分别往XOY面、 XOZ面以及YOZ面的投影,并利用高斯距离加权计算落入每个格子中的点个数。
[0123] 具体的,计算机设备将遍历各临近点分别往XOY面、 XOZ面以及YOZ面的投影,利用高斯距离加权计算在相应投影方向中,落入每个格子中的点个数Ng。
[0124] 在其中一个实施例中,针对XOY面中落入每个格子中的点个数,计算机设备将遍历XOY面,并以XOY面的中心点的中心,基于面的边长确定搜索半径,从相应搜索范围内搜索出相应的投影点。
[0125] 之后,再利用这些投影点加权计算得到落入每个小格网中的点个数。其中,在计算其他投影方向上,落入相应投影面的每个格子中的点个数时,也可以参考上述的实施方式,本申请实施例对此不作限定。
[0126] 步骤S324,遍历所述立体格网中的所有格子,并根据所述落入每个格子中的点个数确定每个格子的归一化权值。
[0127] 具体的,每个格子的归一化权值可以通过以下公式计算得到:
[0128] (Ng/Vg)/(Nn/Vn);
[0129] 其中,Ng为落入每个格子中的点个数,Vg为每个格子所占的面积;Nn为局部邻域内的所有点,Vn为局部邻域所占的面积。
[0130] 步骤S235,根据每个格子的归一化权值、与格子中的点的局部坐标系的深度值之间的乘积,确定每个格子的深度值。
[0131] 具体的,计算机设备将计算得到的每个格子的归一化权值,以及该格子中的点的局部坐标系的深度值z做相乘处理,以得到每个格子的深度值。
[0132] 步骤S326,根据所述立体格网中每个格子的深度值与预设的标准差之间的偏离比较结果,为每个格子设定相应的特征值。
[0133] 具体的,针对所有的格子,计算机设备还将计算它们之间深度值变化的均值和标准差。其中,若相应格子的深度值偏离了标准差,即其深度值与均值之间的差值大于标准差时,则将该处的特征值置为1;否则,将该处的特征值置为0。
[0134] 其中,所有格子的特征值集合则构成了该点特征,即每个关键点都得到长度为:voxel_side_num*voxel_side_num*3位二进制特征。
[0135] 步骤S327,基于所述每个格子设定相应的特征值,构建用于反映关键点特征、以及确定bsc特征的特征值集合。
[0136] 请参考图3,其为本申请实施例提供的一种建筑细部结构自动单体化系统400,该系统400包括模型切割模块401、点云化模块402以及点云配准模块403,其中:
[0137] 所述模型切割模块401,用于获取用于反映真实三维场景的城市模型,并从所述城市模型中切割出建筑细部结构部分,得到目标模型。
[0138] 所述点云化模块402,用于从预设的模型库中提取出待配准的源模型,并分别对所述目标模型、以及源模型进行点云化处理,得到相应的目标点云以及源点云。
[0139] 所述点云配准模块403,用于基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准,并在确定配准成功时,得到适配的目标模型,以及,在确定配准失败时,基于从所述模型库中提取出的新模型样本更新所述源点云,并返回到所述基于目标点云与源点云之间的全局特征和平均欧式距离进行点云配准的步骤继续执行。
[0140] 在其中一个实施例中,该系统400中的各模块用于执行上述实施例的任一可选的实现方式中的方法。
[0141] 由上可知,本申请公开的一种建筑细部结构自动单体化系统,将三维模型中的代表建筑物的细部结构区域的多边形网格单体化出来,然后将其与模型库中的源模型进行检索对比,最终得到适配的细部结构。其中,采用了基于全局的点云特征,和基于实际配准点云对的平均欧氏距离结合的方式来判断最终的点云配准结果,既综合了点云的全局特征,也考虑了模型中的细节相似度,大幅加强了点云匹配的可靠性,进一步提高了建筑物内部细节结构的呈现效果。
[0142] 本申请实施例提供一种可读存储介质,所述计算机程序被处理器执行时,执行上述实施例的任一可选的实现方式中的方法。其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory, 简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read‑Only Memory, 简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory, 简称EPROM),可编程只读存储器(Programmable Red‑Only Memory, 简称PROM),只读存储器(Read‑Only Memory, 简称ROM),磁存储器,快闪存储器,磁盘或光盘。
[0143] 上述可读存储介质,将三维模型中的代表建筑物的细部结构区域的多边形网格单体化出来,然后将其与模型库中的源模型进行检索对比,最终得到适配的细部结构。其中,采用了基于全局的点云特征,和基于实际配准点云对的平均欧氏距离结合的方式来判断最终的点云配准结果,既综合了点云的全局特征,也考虑了模型中的细节相似度,大幅加强了点云匹配的可靠性,进一步提高了建筑物内部细节结构的呈现效果。
[0144] 在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0145] 另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0146] 再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0147] 在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0148] 以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。