一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

三维模型构建方法、装置和设备与流程

2022-03-05 10:12:36 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种三维模型构建方法、装置和设备。


背景技术:

2.随着图片处理技术的不断发展和普及,三维模型构建被广泛应用于医疗、建筑和艺术等领域。三维模型构建即为根据图片集合中的一系列图片构建目标物体或者目标场景的点云。
3.目前,三维模型构建算法大多数是从单视图图片、多视图图片集合或者是视频的关键帧中获取匹配点对。进而,根据这些图片中的匹配点对进行拼接,构建得到目标物体或者目标场景稀疏点云。
4.然而,现有技术在大规模场景下的三维模型构建中,存在构建速度慢的问题。


技术实现要素:

5.本技术提供一种三维模型构建方法、装置和设备,用以解决现有技术在大规模场景下,三维模型的构建速度慢的问题。
6.第一方面,本技术提供一种三维模型构建方法,包括:
7.获取图片集合,所述图片集合中包括目标场景的至少一张场景图片,以及每一所述场景图片的图片信息;
8.根据所述图片集合中的所述场景图片和每一所述场景图片的所述图片信息,确定目标图结构,所述目标图结构中的顶点为所述图片集合中的场景图片,所述目标图结构中的边用于指示所述边连接的两张场景图片之间的匹配信息;
9.根据所述目标图结构构建所述目标场景的三维模型。
10.可选地,所述图片信息中包括拍摄所述目标场景时的拍摄坐标,所述根据所述图片集合中的所述场景图片和每一所述场景图片的所述图片信息,确定目标图结构,包括:
11.根据所述图片集合中每一所述场景图片的拍摄坐标,确定所述图片集合中所述场景图片两两之间的关联关系;
12.根据所述图片集合中所述场景图片两两之间的关联关系,构建目标图结构的连接关系,所述目标图结构中的边用于指示所述边连接的两张场景图片之间存在关联关系;
13.根据所述目标图结构的连接关系,确定所述目标结构图中每一所述边对应的匹配信息,所述匹配信息包括所述边对应的两张场景图片之间的匹配点对。
14.可选地,所述根据所述目标图结构的连接关系,确定所述目标结构图中每一所述边对应的匹配信息,包括:
15.根据特征点提取算法,从第一图片的点中提取得到第一图片的关键点,以及,从第二图片的点中提取得到第二图片的关键点,所述第一图片和所述第二图片为所述边连接的两张的场景图片;
16.根据所述第一图片的关键点和所述第二图片的关键点,确定所述第一图片和所述
第二图片中匹配的关键点对;
17.根据所述关键点对,估算用于指示所述第一图片和所述第二图片之间的变换关系的基础矩阵;
18.根据所述第一图片中的点、所述第二图片中的点和所述基础矩阵,确定所述第一图片和所述第二图片之间的匹配信息,所述匹配信息包括所述第一图片与所述第二图片之间的匹配点对和所述匹配点对的数量。
19.可选地,所述根据所述第一图片中的点、所述第二图片中的点和所述基础矩阵,确定所述第一图片和所述第二图片之间的匹配信息,包括:
20.根据第一预设哈希算法和所述基础矩阵,对所述第一图片中的待匹配点和所述第二图片中的点进行粗匹配,得到所述第二图片中与所述待匹配点匹配的第一点集;
21.根据第二预设哈希算法和所述基础矩阵,对所述待匹配点和所述第一点集中的点进行细匹配,得到所述第一点集中与所述待匹配点匹配的第二点集,所述第二点集中点的数量小于所述第一点集中点的数量;
22.根据预设匹配算法和所述基础矩阵,对所述待匹配点和所述第二点集中的点进行逐一匹配,确定与所述待匹配点匹配的目标匹配点,所述目标匹配点为所述第二点集中的点。
23.可选地,所述根据所述图片集合中每一所述场景图片的拍摄坐标,确定所述图片集合中所述场景图片两两之间的关联关系,包括:
24.根据所述图片集合中每一所述场景图片的拍摄坐标,确定所述场景图片两两之间的距离;
25.当所述场景图片两两之间的距离小于等于距离阈值时,确定所述场景图片两两之间具有关联关系。
26.可选地,所述图片信息中包括拍摄所述目标场景时的相机内参,所述根据所述目标图结构构建所述目标场景的三维模型,包括:
27.获取所述目标图结构中的一条边,以及所述边对应的两张场景图片;
28.根据所述相机内参、基础矩阵和所述边的匹配信息,构建两张所述场景图片的三维模型。
29.第二方面,本技术提供一种三维模型构建装置,包括:
30.获取模块,用于获取图片集合,所述图片集合中包括目标场景的至少一张场景图片,以及每一所述场景图片的图片信息;
31.处理模块,用于根据所述图片集合中的所述场景图片和每一所述场景图片的所述图片信息,确定目标图结构,所述目标图结构中的顶点为所述图片集合中的场景图片,所述目标图结构中的边用于指示所述边连接的两张场景图片之间的匹配信息;根据所述目标图结构构建所述目标场景的三维模型。
32.可选地,所述处理模块,具体用于:
33.根据所述图片集合中每一所述场景图片的拍摄坐标,确定所述图片集合中所述场景图片两两之间的关联关系;
34.根据所述图片集合中所述场景图片两两之间的关联关系,构建目标图结构的连接关系,所述目标图结构中的边用于指示所述边连接的两张场景图片之间存在关联关系;
35.根据所述目标图结构的连接关系,确定所述目标结构图中每一所述边对应的匹配信息,所述匹配信息包括所述边对应的两张场景图片之间的匹配点对。
36.可选地,所述处理模块,具体用于:
37.根据特征点提取算法,从第一图片的点中提取得到第一图片的关键点,以及,从第二图片的点中提取得到第二图片的关键点,所述第一图片和所述第二图片为所述边连接的两张的场景图片;
38.根据所述第一图片的关键点和所述第二图片的关键点,确定所述第一图片和所述第二图片中匹配的关键点对;
39.根据所述关键点对,估算用于指示所述第一图片和所述第二图片之间的变换关系的基础矩阵;
40.根据所述第一图片中的点、所述第二图片中的点和所述基础矩阵,确定所述第一图片和所述第二图片之间的匹配信息,所述匹配信息包括所述第一图片与所述第二图片之间的匹配点对和所述匹配点对的数量。
41.可选地,所述处理模块,具体用于:
42.根据第一预设哈希算法和所述基础矩阵,对所述第一图片中的待匹配点和所述第二图片中的点进行粗匹配,得到所述第二图片中与所述待匹配点匹配的第一点集;
43.根据第二预设哈希算法和所述基础矩阵,对所述待匹配点和所述第一点集中的点进行细匹配,得到所述第一点集中与所述待匹配点匹配的第二点集,所述第二点集中点的数量小于所述第一点集中点的数量;
44.根据预设匹配算法和所述基础矩阵,对所述待匹配点和所述第二点集中的点进行逐一匹配,确定与所述待匹配点匹配的目标匹配点,所述目标匹配点为所述第二点集中的点。
45.可选地,所述处理模块,具体用于:
46.根据所述图片集合中每一所述场景图片的拍摄坐标,确定所述场景图片两两之间的距离;
47.当所述场景图片两两之间的距离小于等于距离阈值时,确定所述场景图片两两之间具有关联关系。
48.可选地,所述处理模块,具体用于:
49.获取所述目标图结构中的一条边,以及所述边对应的两张场景图片;
50.根据所述相机内参、基础矩阵和所述边的匹配信息,构建两张所述场景图片的三维模型。
51.第三方面,本技术提供一种电子设备,包括:存储器和处理器;
52.所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序执行第一方面及第一方面任一种可能的设计中的三维模型构建方法。
53.第四方面,本技术提供一种可读存储介质,可读存储介质中存储有计算机程序,当电子设备的至少一个处理器执行该计算机程序时,电子设备执行第一方面及第一方面任一种可能的设计中的三维模型构建方法。
54.第五方面,本技术提供一种计算机程序产品,所述计算机程序产品包括计算机程序,当电子设备的至少一个处理器执行该计算机程序时,电子设备执行第一方面及第一方
面任一种可能的设计中的三维模型构建方法。
55.本技术提供的三维模型构建方法,通过从无人机或者其他终端设备中获取图片集合;根据图片集合中的场景图片,确定目标图结构中的顶点;根据图片集合中每一场景图片的图片信息,确定两两场景图片之间的关联关系;当两两场景图片之间存在关联关系时,在目标图结构中为该两张场景图片添加一条边,从而得到目标图结构;根据所述边连接的两张场景图片,确定该两张场景图片之间的匹配信息;根据该目标图结构,构建目标场景的三维模型的手段,实现了提高场景图片之间的匹配关系的计算效率,提高了三维模型的构建效率的效果。
附图说明
56.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
57.图1为本技术一实施例提供的一种三维模型构建的场景示意图;
58.图2为本技术一实施例提供的一种三维模型构建方法的流程图;
59.图3为本技术一实施例提供的一种场景图片的示意图;
60.图4为本技术一实施例提供的一种对极约束示意图;
61.图5为本技术一实施例提供的一种三维模型构建方法的流程图;
62.图6为本技术一实施例提供的一种特征点匹配阶段数据调度方法示意图
63.图7为本技术一实施例提供的一种子节点间数据传输优化方案示意图;
64.图8为本技术一实施例提供的一种三维模型构建方法的流程图;
65.图9为本技术一实施例提供的一种三维模型构建装置的结构示意图;
66.图10为本技术一实施例提供的一种服务器的硬件结构示意图;
67.图11为本技术一实施例提供的一种一种分布式服务器集群的结构示意图。
具体实施方式
68.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
69.随着图片处理技术的不断发展和普及,三维模型构建被广泛应用于医疗、建筑和艺术等领域。三维模型构建即为根据图片集合中的一系列图片构建目标物体或者目标场景的点云。目前,三维模型的研究成果被广泛应用于医疗、建筑、艺术等领域,例如虚拟手术、地图重建,地貌地形重建、古文物保护、游戏设计等应用场景中均实现了三维模型的应用。而随着摄像技术的不断发展,高清多视图图片集合的获取难度大大降低。例如,使用无人机拍摄的航拍图片集合具有安全、稳定、快速、低成本以及大尺度等优点。并且,无人机拍摄的航拍图片集合还可以根据实际需要进行多角度拍摄、调整清晰度从而丰富纹理。所以,使用无人机航拍图片集作为构建三维模型的输入图片集合,能够使三维模型的构建目标物体或
者目标场景的点云更加完整和精确。
70.现有技术中,三维模型构建算法大多数是从单视图图片、多视图图片集合或者是视频的关键帧中获取匹配点对。进而,根据这些图片中的匹配点对进行拼接,构建得到目标物体或者目标场景稀疏点云。这些三维模型构建算法多适用于室内场景或小场景。在大规模场景的三维模型构建中,图片集合中将会包括比室内场景或小场景多得多的场景图片。如果使用现有三维模型构建算法直接根据匹配点对构建目标物体或者目标场景稀疏点云,则会非常多的时间,存在三维模型构建速度慢的问题。
71.针对上述问题,本技术提出了一种三维模型构建方法。本技术中,服务器在获取目标场景的图片集合后,可以根据该图片集合中每一场景图片的gps信息,对该图片集合中图片的关联关系进行筛选。服务器可以确定两张场景图片的距离小于距离阈值时,该两张场景图片之间存在关联关系。服务器可以根据该图片集合中两两场景图片之间的关联关系,生成目标结构图。该目标结构图中,每一顶点为该图片集合中的一张图片。该目标结构图中的边用于指示该边连接的两张场景图片之间存在关联关系。当确定图片集合中两两场景图片之间的关联关系后,针对具有关联关系的两张场景图片,服务器可以使用级联哈希匹配的方法,快速确定该两张场景图片之间的匹配信息。该匹配信息可以包括两张场景图片的匹配点对。服务器可以将该匹配点对作为该边的信息。服务器可以根据该目标图结构,逐一获取边连接的两张场景图片,并将该两张场景图片构建的三维场景合并到目标场景的三维场景中。本技术通过使用级联哈希匹配方法,实现了提高模型构建效率的效果。
72.图1示出了本技术一实施例提供的一种三维模型构建的场景示意图。无人机拍摄目标场景的场景图片后,将这些场景图片输入到服务器中。服务器获取这些场景图片组成的图片集合后,根据下述实施例中的三维模型构建方法构建目标场景的三维模型。服务器将构建好的三维模型输出到其他终端设备,以实现该三维模型的应用。例如将该三维模型应用到虚拟手术、地图重建,地貌地形重建、古文物保护、游戏设计等场景中。
73.其中,无人机还可以实时将拍摄的目标场景发送到第一终端设备。该第一终端设备用于将场景图片整理为图片集合。该第一终端设备可以在完成目标场景的拍摄后,将该整理得到的图片集合发送到服务器中。或者,该第一终端设备还可以将目标场景分为多个区域。当第一终端设备获取无人机在一个区域拍摄的全部场景图片后,该第一终端设备可以向服务器发送该部分的场景图片。
74.其中,服务器可以为实现下述三维模型构建方法的服务器。或者,该服务器还可以为实现下述三维模型构建方法的服务器集群中的主服务器。
75.本技术中,以服务器为执行主体,执行如下实施例的三维模型构建方法。具体地,该执行主体可以为服务器的硬件装置,或者为服务器中实现下述实施例的软件应用,或者为安装有实现下述实施例的软件应用的计算机可读存储介质。
76.图2示出了本技术一实施例提供的一种三维模型构建方法的流程图。在图1所示实施例的基础上,如图2所示,以服务器为执行主体,本实施例的方法可以包括如下步骤:
77.s101、获取图片集合,图片集合中包括目标场景的至少一张场景图片,以及每一场景图片的图片信息。
78.本实施例中,服务器从无人机或者其他终端设备中获取图片集合。该图片集合中包括至少一张场景图片,以及每一张场景图片对应的图片信息。该图片集合中的全部场景
图片可以覆盖目标场景中的每一细节。一张场景图片的图片信息可以包括拍摄该场景图片的相机内参、拍摄该场景图片的拍摄坐标等。
79.其中,该目标场景可以为一个大规模区域,例如某一海岛、某一农场、某一林场等。或者,该目标场景还可以为一个大规模目标物体,例如一艘轮船。
80.s102、根据图片集合中的场景图片和每一场景图片的图片信息,确定目标图结构,目标图结构中的顶点为图片集合中的场景图片,目标图结构中的边用于指示边连接的两张场景图片之间的匹配信息。
81.本实施例中,服务器可以根据图片集合中的场景图片,确定目标图结构中的顶点。其中,每一场景图片对应于一个顶点。服务器还可以根据图片集合中每一场景图片的图片信息,确定两两场景图片之间的关联关系。当两两场景图片之间存在关联关系时,服务器可以在目标图结构中为该两张场景图片添加一条边。服务器还可以根据所述边连接的两张场景图片,确定该两张场景图片之间的匹配信息。
82.一种示例中,上述目标图结构确定的过程可以通过下述步骤进行归纳,其具体步骤可以包括:
83.步骤1、根据图片集合中每一场景图片的拍摄坐标,确定图片集合中场景图片两两之间的关联关系。
84.本步骤中,如图3所示为两张具有关联关系的场景图片。该两张场景图片中存在部分匹配特征。例如,图3左图与右图中的河流和马路为匹配特征。在三维模型构建中,这些匹配特征将以匹配点对的方式被重叠在一起。因此,存在关联关系的场景图片,可以被认为是存在匹配特征的场景图片。如图3所示,将左图和右图中匹配点对用直线连接。
85.现有技术中,使用传统的方式计算两张场景图片之间的匹配点对可以准确的确定两张场景图片之间的关联关系。然而,在大规模场景的三维模型构建中,图片集合中包括大量场景图片,且这些场景图片通常为高清图片。在这样的图片集合中,如果需要使用传统的方法计算两两场景图片之间的匹配特征,确定关联关系,其时间复杂度为图片数量的平方级别,耗时巨大且效率低下。并且,在大规模场景中,无人机航拍采集得到的场景图片之间,并不都存在有关联关系。因此,在使用传统方法对两张场景图片的匹配特征进行计算前,对两两场景图片之间是否存可能在匹配特征进行初步的筛选显然可以极大地提高三维模型的构建效率。
86.实际上在实际拍摄过程中,无人机的摄像头是固定的,因此,当两张场景图片中包括匹配特征时,拍摄该两张场景图片的拍摄位置必然较为接近。而拍摄时距离较远的两张场景图片之间一般不存在有意义的匹配特征。因此,在本技术中,服务器可以通过使用拍摄坐标粗略估算两两场景图片之间是否存在匹配特征。当两张场景图片之间存在匹配特征时,可以认为该两张场景图片之间存在关联关系。否则,该两张场景图片之间不存在关联关系。具体的,服务器根据场景图片的拍摄坐标,确定两两场景图片之间的关联关系的过程可以包括如下步骤:
87.步骤1.1、根据图片集合中每一场景图片的拍摄坐标,确定场景图片两两之间的距离。
88.本步骤中,拍摄坐标用于指示无人机在拍摄该场景图片时,在三维空间中的位置。服务器可以根据两张场景图片的拍摄坐标,计算该两张场景图片在该三维空间中的距离。
89.一种实现方式中,该拍摄坐标可以为gps坐标。该gps坐标可以包括经度、纬度和高度。拍摄该场景图片的无人机中还可以安装有gps模块。该gps模块用于在该无人机拍摄该场景图片时,对应生成该场景图片的gps坐标。该gps坐标作为图片信息与该场景图片一同存储。
90.在实际计算过程中,需要笛卡尔三维模型才能正确的计算两张场景图片之间的欧几里得距离。而gps坐标的经度、纬度、高度使用的是球形模型。并且,如果直接使用gps坐标计算两张场景图片的距离的过程中,则大地水准偏差e会对计算结果产生影响。因此,为了提高计算效率和精确度,本技术首先需要将拍摄坐标从地心坐标系(world geodetic system——1984 coordinate system,wgs-84)换成地球坐标系(earth-centered,earth-fixed coordinate system,ecef)。其具体转换公式如下:
[0091][0092]
其中,pe为ecef坐标系下的拍摄坐标。n为地球曲率半径。e为地球偏心率。h为拍摄该场景图片时摄像头的高度。为拍摄该场景图片时摄像头的维度。λ为摄该场景图片时摄像头的经度。
[0093]
地球偏心率e的计算公式为:
[0094][0095]
地球曲率半径n的计算公式为:
[0096][0097]
其中,a为地球长半轴长度,其值为6378137,单位为米。f为地球扁率其值为1/298.257223563。b为短半轴长度,单位为米。b的计算公式为:
[0098]
b=a(1-f)
[0099]
服务器可以直接利用ecef坐标系下的拍摄坐标pe对两张场景图片之间的距离进行计算。该计算过程并不消耗过多计算资源。记两张场景图片的拍摄坐标分别为p1(x1,y1,z1)和p2(x2,y2,z2),服务器可以通过以下公式计算得到该两场景图片在三维空间中的欧几里得距离:
[0100][0101]
服务器需要对该图片集合中两两场景图片计算其距离。当图片集合中包括n张图片时,服务器总共需要计算对场景图片之间的距离。
[0102]
步骤1.2、当场景图片两两之间的距离小于等于距离阈值时,确定场景图片两两之间具有关联关系。
[0103]
本步骤中,服务器中可以预设有距离阈值。服务器可以将两张场景图片之间的距离与距离阈值进行比较。当两张场景图片之间的距离小于距离阈值时,服务器可以确定该两张场景图片之间存在关联关系。否则,当两张场景图片之间的距离大于等于距离阈值时,服务器可以确定该两张场景图片之间不存在关联关系。该距离阈值可以为经验值。或者,该
距离阈值可以由服务器根据该图片集合中的全部距离计算得到。例如,当图片集合中包括n张图片时,服务器确定个距离的均值为距离阈值,或者,服务器可以确定个距离的中值为距离阈值。
[0104]
一种实现方式中,由于每一张图片与其他图片的距离可能存在差异,因此使用一个距离阈值容易出现一刀切的情况,导致关联关系确定不够准确。为此,本实现方式中,服务器可以根据每一场景图片与其他图片之间的距离,确定该场景图片的距离阈值。服务器根据该场景图片的距离阈值,确定该场景图片与其他图片之间的关联关系。具体地,该关联关系的确定过程可以包括:
[0105]
步骤1.2.1、服务器确定该图片集合中的一张场景图片为待关联图片。该待关联图片与该图片集合中其他的每一场景图片之间计算有距离。例如,当图片集合中包括n张图片时,根据该待关联图片可以确定n-1个距离。
[0106]
步骤1.2.2、服务器根据该待关联图片与该图片集合中其他的每一场景图片之间的距离,确定其中的最远距离maxd和最近距离mind。
[0107]
步骤1.2.3、服务器根据下述公式确定该待关联图片的距离阈值:
[0108][0109]
其中,d
φ
为该待关联图片的距离阈值。该距离阈值d
φ
的下标φ表示该图片集合中第φ张场景图片的距离阈值。n为图片集合中的图片数量。δ
l
为尺度常量,10≤δ
l
≤20。
[0110]
步骤1.2.4、服务器将该待关联图片与该图片集合中其他的每一场景图片之间的距离,与距离阈值进行比较。当一场景图片与该待关联图片的距离小于该距离阈值时,该场景图片与该待关联图片之间存在关联关系。否则,当一场景图片与该待关联图片的距离大于等于该距离阈值时,该场景图片与该待关联图片之间不存在关联关系。
[0111]
需要注意的是,使用本实现方式进行计算时可能存在一种情况:当将第一场景图片作为待关联图片时,该第一场景图片与第二场景图片之间的距离小于第一场景图片的距离阈值。即该第一场景图片与第二场景图片之间存在关联关系。当将第二场景图片作为待关联图片时,该第二场景图片与第一场景图片之间的距离大于第二场景图片的距离阈值。即该第二场景图片与第一场景图片之间不存在关联关系。针对该情况,可以认为第一场景图片与第二场景图片之间存在关联关系,以避免在计算过程中遗漏存在关联关系的两张场景图片,进而导致三维模型构建出现异常。
[0112]
服务器通过确定两两图片之间是否存在关联关系,完成了对该图片集合中场景图片的第一次筛选。在后续计算中,服务器只需要针对存在关联关系的两张场景图片进行匹配计算即可,不再需要对该图片集合中的两两场景图片计算其匹配信息,极大减少了不必要的计算量。
[0113]
步骤2、根据图片集合中场景图片两两之间的关联关系,构建目标图结构的连接关系,目标图结构中的边用于指示边连接的两张场景图片之间存在关联关系。
[0114]
本步骤中,服务器将该图片集合中的每一场景图片,作为目标图结构中的一个顶点。当两张场景图片之间存在关联关系时,服务器在该两张场景图片对应的顶点之间增加一条边,确定该两个顶点之间的连接关系。即,该目标图结构中的边用于指示边连接的两张
场景图片之间存在关联关系。当一场景图片与其他场景图片均不存在关联关系时,服务器可以将该场景图片对应的顶点从该目标图结构中删除。
[0115]
其中,该目标图结构可以表示为g=(v,e)。其中,顶点vi∈v。ci表示图片集合中的第i张场景图片。该目标图结构中的边e
ij
∈e。e
ij
表示连接于第i张场景图片和第j张场景图片之间的边。同时该边e
ij
的存在说明第i张场景图片和第j张场景图片之间存在匹配关系。
[0116]
步骤3、根据目标图结构的连接关系,确定目标结构图中每一边对应的匹配信息,匹配信息包括边对应的两张场景图片之间的匹配点对。
[0117]
本步骤中,该目标图结构中,存在连接关系的两张场景图片为初步确定存在匹配特征的两张场景图片。服务器可以匹配信息对一条边连接的两张场景图片的匹配关系进行描述。该匹配信息可以通过该两张场景图片之间的匹配特征所对应的匹配点对进行表示。为了便于描述,将一条边连接的两张场景图片分别命名为第一图片和第二图片。由于第一图片和第二图片中存在匹配特。因此,确定匹配特征中的一个特征点为x。例如,该特征点x可以如图4所示。
[0118]
如图4所示,o
l
为拍摄第一图时相机的中心。or为拍摄第二图片时相机的中心。x
l
为特征点x在第一图片中的映射点。xr为特征点x在第二图片中的映射点。特征点x、相机中心o
l
和or可以构成一个极面(xo
l
or)。该极面可以存在一个对极约束:第一图片的特征点x
l
在第二图片中的匹配点一定在极线x
rer
上,该极线x
rer
可以即为lr。假设映射点x
l
在第一图像中的像素点坐标为x1。可以使用基础矩阵f表示第一图片中的像素点坐标x1到第二图片的极线lr的映射关系。其具体公式可以表示为:
[0119]
lr=fx1[0120]
第一图片中的映射点x
l
与第二图片中的映射点xr为匹配点对。假设在第二图片中映射点xr对应的像素坐标点为x2。则x2必定在对极线lr上。因此,上述公式可以变形为:
[0121][0122]
当匹配点对(x
l
,xr)已知时,服务器可以根据匹配点对估算基础矩阵f。其中,实现基础矩阵估算的具体步骤可以包括:
[0123]
步骤3.1、根据特征点提取算法,从第一图片的点中提取得到第一图片的关键点,以及,从第二图片的点中提取得到第二图片的关键点,第一图片和第二图片为边连接的两张的场景图片。
[0124]
本步骤中,服务器可以使用特征点提取算法分别对第一图片和第二图片进行特征提取。具体地,服务器可以将第一图片输入该特征点提取算法。经过该特征点提取算法的计算后,服务器可以确定该第一图片的像素点中得到部分像素点为关键点。以及,服务器可以将第二图片输入该特征点提取算法。经过该特征点提取算法的计算后,服务器可以确定该第二图片的像素点中得到部分像素点为关键点。
[0125]
一种实现方式中,该特征点提提取算法可以为尺度不变特征转换(scale-invariant feature transform,sift)算法。该sift算法可以计算得到该第一图片和第二图片中每一像素点的sift特征。每一像素点的sift特征用于描述该像素点的尺度。该sift特征为128维。
[0126]
服务器可以根据第一图片中每一像素点的sift特征计算得到每一像素点的尺度。服务器可以根据该第一图片的每一像素点的尺度,对这些像素点进行排序。服务器可以从
这些像素点中选择第一预设数量个尺度最大像素点作为该第一图片的关键点。其中,第一预设数量可以为固定数量个,例如1000个、100个等。或者,第一预设数量个还可以为该第一图片的全部像素点的前20%。
[0127]
服务器可以根据第二图片中每一像素点的sift特征计算得到每一像素点的尺度。服务器可以根据该第二图片的每一像素点的尺度,对这些像素点进行排序。服务器可以从这些像素点中选择第一预设数量个尺度最大像素点作为该第二图片的关键点。其中,第一预设数量可以为固定数量个,例如1000个、100个等。或者,第一预设数量个还可以为该第二图片的全部像素点的前20%。
[0128]
例如,当第一图片和第二图片中分别包括4000个像素点时,服务器可以根据每一像素点的尺度,确定其中尺度最大的前20%像素点为关键点。即,可以从第一图片和第二图片中分别筛选得到800个关键点。
[0129]
步骤3.2、根据第一图片的关键点和第二图片的关键点,确定第一图片和第二图片中匹配的关键点对。
[0130]
本步骤中,服务器确定第一图片的关键点和第二图片的关键点后,可以根据外极约束,对这些关键点进行配对,得到关键点对。例如,如图4所示的(x
l
,xr)为一个关键点对。例如,当服务器从第一图片和第二图片中分别筛选得到800个关键点后,服务器可以通过外极约束确定其中包括200个关键点对。
[0131]
步骤3.3、根据关键点对,估算用于指示第一图片和第二图片之间的变换关系的基础矩阵。
[0132]
本步骤中,服务器可以根据这些关键点对,对基础矩阵进行估算,得到最终的基础矩阵。该基础矩阵可以用于指示第一图片与第二图片的匹配点对中两点的变换过程。具体地,服务器估算基础矩阵的过程可以包括:
[0133]
步骤3.3.1、服务器随机从这些关键点对中选出第二预设数量个关键点对。其中,第二预设数量可以为经验值。例如,8个。
[0134]
步骤3.3.2、服务器根据该第二预设数量个关键点对,使用预设算法估算基础矩阵。其中预设算法可以为现有算法,或者为改进后算法。该估算过程中,服务器中可以设置有一个初始基础矩阵。服务器使用第二预设数量个关键点对,对该初始基础矩阵进行优化,得到优化后的基础矩阵。
[0135]
步骤3.3.3、服务器使用步骤s3.3.2计算得到的基础矩阵计算这些关键点对的匹配关系,并确定这些关键点对中匹配的关键点对的百分比。这些关键点对实际上为已经确定匹配的点对。因此,使用步骤s3.3.2计算得到的匹配的关键点对的百分比越大,说明该基础矩阵越准确。
[0136]
步骤3.3.3、服务器判断该匹配的关键点对的百分比是否大于预设比例。当匹配的关键点对的百分比小于等于预设比例时,服务器可以返回s3.3.1,对基础矩阵进行优化。其中,由于该关键点对的选择过程为随机选择,且关键点对的数量通常远大于第二预设数量。因此,步骤3.3.1中再次随机选出的关键点对为相同关键点对的概率极小。例如,服务器可以从200个关键点对中随机选择8个关键点对。其中,步骤3.3.2会将上次计算得到的基础矩阵作为下一次迭代时的初始矩阵。当匹配的关键点对的百分比大于预设比例时,服务器结束本次迭代。其中,预设比例为经验值。例如,95%。
[0137]
步骤3.4、根据第一图片中的点、第二图片中的点和基础矩阵,确定第一图片和第二图片之间的匹配信息,匹配信息包括第一图片与第二图片之间的匹配点对和匹配点对的数量。
[0138]
本步骤中,第一图片与第二图片中存在匹配特征,这些匹配特征可以通过匹配点对的方式进行描述。其中,第一图片与第二图片中除了匹配特征外还存在不匹配的特征。因此,第一图片中存在部分像素点与第二图片中的部分像素点匹配。同时,第一图片中还存在剩余部分像素点不与第二图片中剩余部分像素点匹配。并且,由于在上述步骤3.1和步骤3.2中已经对第一图片中第一预设数量的像素点进行了匹配,因此,在本步骤中,服务器只需要对剩余的像素点进行匹配即可。
[0139]
当服务器完成对第一图片中全部像素点的匹配后,服务器可以得到多个匹配点对。该匹配点对中包括上述步骤3.2中确定的关键点对。服务器可以将这些匹配点存储在集合m
ij
中。m
ij
表示第i张场景图片和第j张场景图片之间的匹配点对集合。该集合m
ij
可以作为第一图片和第二图片连接的边,即第i张场景图片和第j张场景图片之间的边e
ij
的匹配信息。该匹配信息中还可以包括权重w
ij
。w
ij
表示第i张场景图片和第j张场景图片之间的匹配点对的数量。即集合m
ij
中对的数量。可以表示为w
ij
=|m
ij
|。
[0140]
一种实现方式中,服务器可以通过遍历的方式逐一获取剩余像素点。当服务器获取第一图片中的一个像素点为待匹配点后,服务器可以通过遍历第二图片中所有像素点的方式,将该第二图片中的像素点逐一与待匹配点进行匹配。服务器可以通过该匹配方式,确定与该待匹配点对应的第二图片中的目标匹配点。当第二图片中的一个像素点被第一图片中的一个像素点匹配形成匹配点对后,第二图片中的该像素点将不可能在于第一图片中的其他像素点匹配。因此,为了提高效率,服务器可以在确定待匹配点后,通过逐一匹配第二图片中未被匹配的像素点的方式,寻找目标匹配点。
[0141]
另一种实现方式中,服务器获取第一图片中的一个像素点为待匹配点后,利用外极约束,对第二图片中的像素点进行筛选。服务器使用待匹配点与筛选得到的像素点进行逐一匹配,确定其中的目标匹配点。在大规模三维模型的构建中,第一图片与第二图片通常为高清图片。使用外极约束对第二图片中的像素点进行筛选,可以有效的减少需要进行匹配计算的点对,提高匹配效率。
[0142]
其中,服务器筛选像素点的过程可以包括:
[0143]
假设第一图中的待匹配点可以表示为p=(x
p
,y
p
,1),第二图片中的目标匹配点可以表示为根据外极约束,第二图片中的目标匹配点在极限lq=(aq,b
q,
,c
q,
)上。因此,目标匹配点qs的候选点集可以表示为:
[0144]
c={q|dist(q,lq)≤d}
[0145]
其中,dist(q,lq)用于表示该候选点集中的候选点q到极线lq的距离。即,当该第二图片中的像素点到极线的该距离小于等于第一阈值d时,可以确定该像素点为候选点。否则,该像素点不是候选点。其中,第一阈值d可以为经验值。例如,第一阈值d为0.1。其中,dist(q,lq)的具体计算公式可以如下所示:
[0146]
[0147]
其中,候选点q=(xq,yq,1)。
[0148]
再一种实现方式中,确定待匹配点后,服务器还可以通过哈希匹配的方式,对第二图片中的像素点进行筛选。哈希匹配过程中,服务器可以根据散列值将原始数据分配到不同的桶中。其中,桶用于指代一个散列值对应的存储空间。被存储在一个桶中的一系列数据可以认为是数据集合。例如,常用的哈希算法中,服务器可以通过取余、求模等方式计算该散列值。不同的散列值可以对应于不同的桶。相同的原始数据必然对应于相同的散列值。相同的散列值可以对应于不同的原始数据。
[0149]
其中,服务器筛选匹配点的具体过程可以包括:
[0150]
步骤3.4.1、根据第一预设哈希算法和基础矩阵,对第一图片中的待匹配点和第二图片中的点进行粗匹配,得到第二图片中与待匹配点匹配的第一点集。
[0151]
本步骤中,服务器可以根据待匹配点p和基础矩阵进行计算,得到该待匹配点p映射到第二图片后的映射点p

。其中,p

=(x
p

,y
p

,1)。服务器可以使用第一预设哈希算法,确定映射点p

和该第二图片中每一像素点q的散列值。其中,q=(xq,yq,1)。其中,第一预设哈希算法可以为局部敏感哈希算法。例如,映射点p

的散列值可以为10100010。第二图片中一个像素点q的散列值可以为10100010。服务器可以计算该映射点p

的散列值和该第二图片中每一像素点q的散列值的汉明距离。例如,当第二图片中包括2000个像素点时,服务器可以计算得到2000个汉明距离。服务器可以根据该汉明距离,将该第二图片中的每一像素映射到不同的桶中。每一个桶对应于一个汉明距离。
[0152]
在最理想状态下,当映射点p

与像素点q匹配时,这两个点重合。因此,在理想状态下,映射点p

与像素点q的汉明距离为0。因此,服务器可以根据第二阈值,选择散列值小于第二阈值的多个桶。服务器可以将这多个桶中的像素点q组成第一点集。其中,第二阈值为经验值。例如,第二阈值可以为3。
[0153]
步骤3.4.2、根据第二预设哈希算法和基础矩阵,对待匹配点和第一点集中的点进行细匹配,得到第一点集中与待匹配点匹配的第二点集,第二点集中点的数量小于第一点集中点的数量。
[0154]
本步骤中,服务器可以使用第二预设哈希算法计算待匹配点p的映射点p

与第一点集中每一个点q的散列值。其中,第二预设哈希算法可以为局部敏感哈希算法。由于该次哈希算法将用于更加细致的从第一点集中筛选得到更接近映射点p

的像素点。因此,本步骤中的第二预设哈希算法可以使用更长的散列值,以增加数据的精确度。例如,第一预设哈希算法可以计算得到8为的散列值。第二预设哈希算法可以计算得到16位的散列值。例如,映射点p

的散列值为1001010001001010。一个像素点q的散列值为1001010001001011,它们的汉明距离为1。
[0155]
在最理想状态下,当映射点p

与第一点集中的点q匹配时,这两个点重合。因此,在理想状态下,映射点p

与第一点集中的点q的距离为0。因此,服务器可以根据第三阈值,选择散列值小于第三阈值的多个桶。服务器可以将这多个桶中的第一点集中的点q组成第二点集。其中,第三阈值为经验值。例如,第三阈值可以为3。
[0156]
步骤3.4.3、根据预设匹配算法和基础矩阵,对待匹配点和第二点集中的点进行逐一匹配,确定与待匹配点匹配的目标匹配点,目标匹配点为第二点集中的点。
[0157]
本步骤中,服务器可以使用预设的匹配算法对待匹配点和第二点集中的点进行逐
一匹配。当该第二点集中的一个点与待匹配点配成成功时,确定该点为目标匹配点。当该第二点集中的点与待匹配点均无法匹配成功时,确定该待匹配点不存在目标匹配点。其中,预设的匹配算法可以为现有算法或者改进后的算法。
[0158]
s103、根据目标图结构构建目标场景的三维模型。
[0159]
本实施例中,当完成目标图结构的计算后,服务器可以根据该目标图结构,构建目标场景的三维模型。具体地,服务器可以顺序获取该目标图结构中的边。当服务器获取该目标图结构中的边后,服务器可以将该边对应的两张场景图片拼接在一起,并构建成该两张场景图片的三维模型。服务器还可以在该两张图片的三维模型构建完成后,将该两张图片构建的三维模型添加到该目标场景图片的三维模型中,以逐步完善该目标场景的三维模型。
[0160]
其中,当服务器获取该目标图结构中的一条边后,服务器具体构建三维模型的过程可以包括:
[0161]
步骤1、获取目标图结构中的一条边,以及该边对应的两张场景图片。
[0162]
步骤2、根据相机内参、基础矩阵和边的匹配信息,构建该两张场景图片的三维模型。
[0163]
本技术提供的三维模型构建方法,服务器从无人机或者其他终端设备中获取图片集合。服务器可以根据图片集合中的场景图片,确定目标图结构中的顶点。服务器还可以根据图片集合中每一场景图片的图片信息,确定两两场景图片之间的关联关系。当两两场景图片之间存在关联关系时,服务器可以在目标图结构中为该两张场景图片添加一条边,从而得到目标图结构。服务器还可以根据所述边连接的两张场景图片,确定该两张场景图片之间的匹配信息。服务器根据该目标图结构,构建目标场景的三维模型。本技术中,通过构建目标图结构,实现目标场景的三维模型的快速构建。本技术还通过使用哈希算法,极大地提高了两两场景图片之间匹配点对的计算效率,提高了三维模型的构建效率。
[0164]
图5示出了本技术一实施例提供的一种三维模型构建方法的流程图。在图上述实施例的基础上,本实施例还能够在分布式服务器集群中实现构建目标场景的三维模型的步骤,以提高大规模场景下三维模型的构建效率的效果。如图5所示,以分布式服务器的主服务器为执行主体,本实施例中构建目标场景的三维模型的过程可以包括如下步骤:
[0165]
s201、主服务器获取目标图结构。
[0166]
本实施例中,该主服务器可以为图2所示实施例中的服务器。该主服务器可以直接从内存中读取该目标图结构。或者,该主服务器与图2所示实施例中的服务器为不同服务器。该主服务器可以从图2所示实施例的服务器中获取该目标图结构。
[0167]
s202、主服务器从目标图结构中随机读取一条未被读取过的边。主服务器根据子服务器的任务执行情况,将该边发送到一个子服务器。
[0168]
本实施例中主服务器获取每一子服务器的任务处理情况。其中,一个任务用于指示一个条边对应的两张场景图片的三维模型片段构建情况。当子服务器完成条边对应的两张场景图片的三维模型片段的构建,并将构建得到的三维模型片段发送到主服务器时,任务完成。当子服务器处理完一个任务后,主服务器可以再次获取一条未被读取过的边,并将该边发送到该子服务器中。
[0169]
一种实现方式中,主服务器在第一次与子服务器连接时,向子服务器发送第三预
设数量条边。在后续处理中,主服务器可以根据子服务器的任务完成情况,确定是否需要向子服务器发送新的边。其中,第三预设数量为正整数。
[0170]
一种实现方式中,当第三预设数量为1时,每一子服务器中仅构建当前获取的边对应的三维模型片段。当子服务器完成一个三维模型片段的构建,并将该三维模型片段反馈到主服务器后,该子服务器进入空闲状态。该子服务器需要等待接收主服务器下发的新的边后,再次进入工作状态。
[0171]
另一种实现方式中,当第三预设数量大于1时,每一子服务器中可以存储有多条边。例如,第三预设数量为3时,子服务器中存储有3条边。其中,该子服务器可以根据写入顺序,顺序处理该三条边。当子服务器完成一个三维模型片段的构建,并将该三维模型片段反馈到主服务器后,该子服务器可以从主服务器中获取下一条边,以使该子服务器中的待处理边的数量保持在2个,并且总是存在一条边处于处理状态。
[0172]
s203、子服务器根据主服务器发送的边,确定两张场景图片所在的组,并将该两个组写入内存中。
[0173]
本实施例中,每一子服务器的磁盘中存储有图片集合中的全部场景图片。该图片集合中的图片被分成m组存放在子服务器的磁盘中。每一组中包括n张场景图片,每一张场景图片为一个块。该场景图片在子服务器的硬盘中的存储可以如图6所示。其中,该硬盘中除了存储该场景图片外,还可以存储该场景图片中每一像素点的sift特征,以及图片信息。
[0174]
一种实现方式中,当子服务器获取到主服务器发送的边后,从磁盘中读取该边对应的两张场景图片。
[0175]
其中,每一场景图片可以对应于一个编号。子服务器可以根据该编号,确定该两张场景图片所在的组。例如,如图6所示,该边对应的两张场景图片分别位于组i和组j。子服务器将组i和组j从磁盘中读取到内存中。
[0176]
该子服务器的gpu可以从内存中的组i和组j中分别读取块a和块b。该块a和块b分别对应该边的两张场景图片。该gpu根据该边中存储的匹配信息,构建该两张场景图片的三维模型片段。
[0177]
另一种实现方式中,如图7所示,子服务器还可以从别的子服务器中获取该边对应的场景图片所在的组。具体地,以子服务器a和子服务器b为例该过程可以包括:
[0178]
步骤1、当子服务器a根据该边确定两张场景图片的图片编号后,该子服务器a可以确定该两张场景图片所在的组。例如,该两张场景图片分别在组i和组j。
[0179]
步骤2、子服务器a向主服务发送查询请求,该查询请求用于请求主服务器查询组i和组j是否被其他子服务器读取到内存中。
[0180]
步骤3、主服务器接收子服务器a发送的查询请求,并进行查询。例如,如图7所示,该主服务器中包括用于标记组号和位置的表格。该表格用于指示某一组已经被某一个子节点读取。例如,该表中第一行用于说明组11已经被子服务器c读取到内存中。第二行用于说明组127已经被读取到子服务器d的内存中。第四行用于说明组239还没有被子服务器读到内存中。主服务器可以从该表中查询,组i和组j是否已经被某一子服务器读取到内存中。
[0181]
步骤3、主服务向子服务器a反馈结果。子服务器a根据该结果,获取组i和组j。例如,当子服务器a确定其他子服务器均未将组i读取到内存中时,子服务器可以从磁盘中读取该组i。当子服务器a确定其他子服务器b中已经将组j读取内存中时,子服务器a向子服务
器b请求获取该组j。由于从磁盘中读取效率低于子服务器之间的数据传输效率,因此,当子服务器b已经将组j读取到内存中时,组j从子服务器b的内存发送到子服务器a的内存的效率,高于子服务器a直接从磁盘中读取该组j的效率。
[0182]
步骤4、子服务器a将其内存保存有组i和组j的信息上传到主服务器。主服务器在表中记录组i和组j对应的子服务器a。
[0183]
s204、子服务器的gpu从内存中的组i和组j中读取块a和块b。子服务器根据块a和块b构建三维模型片段。子服务器将该三维模型片段发送到主服务器中。
[0184]
s205、主服务器获取子服务器处理得到的三维模型片段,并拼接这些三维模型片段。
[0185]
本步骤中,主服务器可以从各个子服务器中获取子服务器根据数据块信息中的边以及边对应的场景图片拼接得到的三维模型片段。主服务器可以根据该数据块在该目标图结构中的位置,将该三维模型片段添加到目标场景的三维模型中。
[0186]
一种实现方式中,主服务器在将多个三维模型片段拼接在一起时,还可以使用基于相似变换(similarity transformation)的方法对这些三维模型片段拼接得到的目标场景的三维模型。例如,当一个三维模型片段中包括场景图片a、c,另一个三维模型片段中包括c、d时,主服务器可以使用相似变化,将场景图片c对应的特征点进行拼接得到包括a、c、d的三维模型片段。
[0187]
本技术提供的三维模型构建方法,主服务器获取目标图结构。主服务器可以根据子服务器的数据处理能力,将目标图结构分为多个数据块。主服务器从目标图结构中随机读取一个未被读取过的数据块。主服务器可以根据多个子服务器的任务处理情况,将该数据块对应的数据块信息发送到对应的子服务器中。主服务器获取各个子服务器处理得到的三维模型片段。该三维模型片段中包括该目标场景的三维模型中的部分内容。主服务器可以根据该数据块在该目标图结构中的位置,将该三维模型片段添加到目标场景的三维模型中。本技术中,通过使用分布式计算,将该三维模型的构建过程分发到各个子服务器中进行计算,主服务器只需要将子服务器构建的三维模型分段组合即可得到目标场景的三维模型,极大地提高了计算效率,提高了三维模型的构建效率。
[0188]
图8示出了本技术一实施例提供的一种三维模型构建方法的流程图。在图上述实施例的基础上,本实施例还能够在分布式服务器集群中实现目标图结构中匹配信息的计算,以提高大规模场景下三维模型的构建效率的效果。如图8所示,以分布式服务器的主服务器为执行主体,本实施例中构建目标场景的三维模型的过程可以包括如下步骤:
[0189]
s301、主服务器获取仅包括关联关系的目标图结构。
[0190]
本实施例中,该目标图结构为图2中s102的步骤2所示的目标图结构。该目标图结构中不包括用于指示边对应的两张场景图片之间的匹配关系的匹配信息。其中,每一顶点为没图片集合中一张场景图片。每一条边用于指示该边对应的两张场景图片之间存在关联。
[0191]
其中,该主服务器可以为图2所示实施例中的服务器。该主服务器可以直接从内存中读取该目标图结构。或者,该主服务器与图2所示实施例中的服务器为不同服务器。该主服务器可以从图2所示实施例的服务器中获取该目标图结构。
[0192]
s302、主服务器从目标图结构中随机读取一个未被读取过的数据块。该数据块中
可以包括至少一条边。
[0193]
本实施例中,主服务器可以根据子服务器的数据处理能力,将目标图结构分为多个数据块。每一数据块中可以包括至少一条边。例如,一个数据块中可以包括一条边、三条边等。每一个数据块中包括的边的数量相等。其中,当一个数据块中包括多条边时,这些边可以为相邻的边,或者,任意两条边之间可以存在一个相同的定点。例如,当该数据块中包括三条边时,该三条边可以为分别连接图a和图b、图a和图c、图a和图d。又如,该三条边可以分别连接图a和图b、图b和图c、图c和图d。
[0194]
服务器可以使用标签的方式,将已经读取过的数据块打上标签,以区分已经读取过的数据块和未被读取过的数据块。或者,服务器还可以通过将已经读取过的数据块与未被读取过的数据块存储在不同存储区域的方式,区分已经读取的数据块和未被读取的数据块。或者,服务器可以通过在两个不同的存储区域存储已经读取的数据块的索引和未被读取的数据块的索引的方式,区分已经读取的数据块和未被读取的数据块。
[0195]
s303、主服务器可以根据多个子服务器的任务处理情况,将该数据块对应的数据块信息发送到对应的子服务器中。
[0196]
本实施例中,主服务器获取每一子服务器的任务处理情况。其中,一个任意用于指示一个数据块信息的处理。当子服务器完成一个数据块信息的处理,并将计算得到的该数据块中每一条边对应的匹配信息发送到主服务器时,任务完成。当子服务器处理完一个任务后,主服务器可以将一个新的数据块信息发送到该子服务器中。例如主服务器在第一次与子服务器连接时,向子服务器发送第四预设数量个数据块信息。在后续处理中,主服务器可以根据子服务器的任务完成情况,确定是否需要向子服务器发送新的数据块信息。其中,第四预设数量为正整数。
[0197]
一种实现方式中,当第四预设数量为1时,每一子服务器中仅存储当前处理的数据块信息。当子服务器完成一个数据块信息的处理,并将计算得到的该数据块信息中每一条边对应的匹配信息反馈到主服务器后,该子服务器进入空闲状态。该子服务器需要等待接收主服务器下发的新的数据块信息后,再次进入工作状态。
[0198]
另一种实现方式中,当第四预设数量大于1时,每一子服务器中可以存储有多个数据块信息。例如,第四预设数量为3时,子服务器中存储有3个数据块信息。其中一个数据块信息可以处于计算状态,另外两个数据块信息存储于该子服务器中。当处于计算状态的数据块信息被处理完成后,子服务器可以根据写入顺序,读取下一个数据块信息进行计算。当主服务器接收到子服务器发送的该数据块信息中每一条边对应的匹配信息后,主服务可以向该子服务器发送一个新的数据块信息,以使该子服务器中的数据块信息数量保持在3个。
[0199]
其中,当子服务器完成一个数据块信息中的数据的计算后,该子服务器可以将该数据块信息对应的内容从内存中删除,以避免过大的数据量导致子服务器存储异常。同样的,当子服务器将该数据块信息中每一条边对应的匹配信息发送到主服务器后,该子服务器可以删除该数据块信息中每一条边对应的匹配信息,以使该子服务器保留更多的空闲内存空间。
[0200]
一种实现方式中,主服务器在将数据块信息发送到子服务器之前,还可以根据该数据块中的边,获取边对应的场景图片。主服务器可以将这些场景图片添加到数据库信息中,以使这些场景图片可以与数据块中的边一起发送到子服务器中。
[0201]
另一种实现方式中,主服务器将仅包括边在内的数据块信息发送到子服务器。当子服务器从内存中读取该数据块信息时,子服务器根据该数据块信息中的边,向主服务器请求获取该边对应的场景图片信息。当该数据块信息中包括多条边时,子服务器需要逐一对这些边和边对应的两张场景图片进行处理。因此,子服务器可以在处理第一条边时,向主服务器请求第二条边对应的两张场景图片,从而提高第二条边的处理效率。
[0202]
s304、主服务器获取各个子服务器处理得到的数据块信息中每一条边对应的匹配信息。
[0203]
本步骤中,主服务器可以从各个子服务器中获取子服务器根据数据块信息中的边以及边对应的场景图片计算得到的该数据块信息中每一条边对应的匹配信息。主服务器可以将每一条边的匹配信息添加到该条边中。
[0204]
本技术提供的三维模型构建方法,主服务器获取仅包括关联关系的目标图结构。该目标图结构中不包括用于指示边对应的两张场景图片之间的匹配关系的匹配信息。主服务器可以根据子服务器的数据处理能力,将目标图结构分为多个数据块。主服务器从目标图结构中随机读取一个未被读取过的数据块。主服务器可以根据多个子服务器的任务处理情况,将该数据块对应的数据块信息发送到对应的子服务器中。主服务器获取各个子服务器处理得到的数据块信息中每一条边对应的匹配信息。主服务器可以将每一条边的匹配信息添加到该条边中。本技术中,通过使用分布式计算,将该场景图片中边对应的两张场景图片之间的匹配信息分发到各个子服务器中进行计算,极大地提高了计算效率,提高了三维模型的构建效率。
[0205]
图9示出了本技术一实施例提供的一种三维模型构建装置的结构示意图,如图9所示,本实施例的三维模型构建装置10用于实现上述任一方法实施例中对应于服务器的操作,本实施例的三维模型构建装置10还包括:
[0206]
获取模块11,用于获取图片集合,图片集合中包括目标场景的至少一张场景图片,以及每一场景图片的图片信息。
[0207]
处理模块12,用于根据图片集合中的所述场景图片和每一所述场景图片的所述图片信息,确定目标图结构,目标图结构中的顶点为图片集合中的场景图片,目标图结构中的边用于指示边连接的两张场景图片之间的匹配信息。根据目标图结构构建目标场景的三维模型。
[0208]
一种示例中,处理模块12,具体用于根据图片集合中每一场景图片的拍摄坐标,确定图片集合中场景图片两两之间的关联关系。根据图片集合中场景图片两两之间的关联关系,构建目标图结构的连接关系,目标图结构中的边用于指示边连接的两张场景图片之间存在关联关系。根据目标图结构的连接关系,确定目标结构图中每一边对应的匹配信息,匹配信息包括边对应的两张场景图片之间的匹配点对。
[0209]
一种示例中,处理模块12,具体用于根据特征点提取算法,从第一图片的点中提取得到第一图片的关键点,以及,从第二图片的点中提取得到第二图片的关键点,第一图片和第二图片为边连接的两张的场景图片。根据第一图片的关键点和第二图片的关键点,确定第一图片和第二图片中匹配的关键点对。根据关键点对,估算用于指示第一图片和第二图片之间的变换关系的基础矩阵。根据第一图片中的点、第二图片中的点和基础矩阵,确定第一图片和第二图片之间的匹配信息,匹配信息包括第一图片与第二图片之间的匹配点对和
匹配点对的数量。
[0210]
一种示例中,处理模块12,具体用于根据第一预设哈希算法和基础矩阵,对第一图片中的待匹配点和第二图片中的点进行粗匹配,得到第二图片中与待匹配点匹配的第一点集。根据第二预设哈希算法和基础矩阵,对待匹配点和第一点集中的点进行细匹配,得到第一点集中与待匹配点匹配的第二点集,第二点集中点的数量小于第一点集中点的数量。根据预设匹配算法和基础矩阵,对待匹配点和第二点集中的点进行逐一匹配,确定与待匹配点匹配的目标匹配点,目标匹配点为第二点集中的点。
[0211]
一种示例中,处理模块12,具体用于根据图片集合中每一场景图片的拍摄坐标,确定场景图片两两之间的距离。当场景图片两两之间的距离小于等于距离阈值时,确定场景图片两两之间具有关联关系。
[0212]
一种示例中,处理模块12,具体用于获取目标图结构中的一条边,以及边对应的两张场景图片。根据相机内参、基础矩阵和边的匹配信息,构建两张所述场景图片的三维模型。
[0213]
本技术实施例提供的三维模型构建装置10,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本实施例此处不再赘述。
[0214]
图10示出了本技术实施例提供的一种服务器的硬件结构示意图。如图10所示,该服务器20,用于实现上述任一方法实施例中对应于服务器的操作,本实施例的服务器20可以包括:存储器21,处理器22和通信接口24。
[0215]
存储器21,用于存储计算机程序。处理器22,用于执行存储器存储的计算机程序,以实现上述实施例中的三维模型构建方法。可选地,存储器21既可以是独立的,也可以跟处理器22集成在一起。
[0216]
当存储器21是独立于处理器22之外的器件时,电子设备20还可以包括总线23。该总线23用于连接存储器21和处理器22。
[0217]
通信接口24可以通过总线23与处理器21连接。该通信接口24用于获取图片集合。该图片集合可以为无人机拍摄后直接通过该通信接口24上传到该服务器20。或者,该图片集合还可以为其他终端设备根据摄像头拍摄的图片整理得到图片集合后,上传到服务器20。该通信接口24还用于输出构建得到的目标场景的三维模型。处理器21可以通过该通信接口24将该三维模型输出到该服务器20的显示器。或者处理器21还可以通过该通信接口24将该三维模型输出到其他终端设备。
[0218]
本实施例提供的服务器可用于执行上述的三维模型构建方法,其实现方式和技术效果类似,本实施例此处不再赘述。
[0219]
图11示出了本技术实施例提供的一种分布式服务器集群的结构示意图。如图11所示,该分布式服务器集群30,用于实现上述任一方法实施例中对应于分布式服务器集群的操作,本实施例的分布式服务器集群30可以包括:一个主服务器31和至少一个子服务器32。
[0220]
主服务器31为如图10所示的服务器。该主服务器31用于根据如图7和图8所示的实施例,将目标图结构分成多个数据块,并将数据块分发到子服务器中进行计算。
[0221]
子服务器32用于接收主服务器发送的数据块,并根据预设算法对各个数据块信息进行计算。该子服务器32还用于将计算结果反馈到主服务器中,以便于主服务对计算结果进行合并。
[0222]
本实施例提供的服务器可用于执行上述的三维模型构建方法,其实现方式和技术效果类似,本实施例此处不再赘述。
[0223]
本技术还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。
[0224]
本技术还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。
[0225]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制。本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献