本技术涉及图像重建技术,尤其涉及一种基于gpu的三维重建方法、装置、电子设备及介质。
背景技术:
1、随着地理信息系统(geographic information system,gis)的高速发展对gis数据的可视化需求也进一步提升。gis数据中建筑物信息,是以一个经纬度坐标序列来描绘一个建筑物轮廓,辅以高度信息的一个高度压缩的格式。在可视化过程中,需要将该格式信息重建为标准图形系统可以识别的三维模型格式。
2、传统的重建技术是将gis数据解析后,将代表建筑物的坐标序列生成一个二维矢量轮廓,再在cpu上逐一计算出建筑物的各个顶点等信息,生成对应的三维模型数据,该数据保存在本地内存或磁盘中,最后再交由三维图形系统进行绘制。
3、上述方案若应用于大数据场景中,由于数据量较大,cpu需要较长时间才能得到重建后的数据,且将重建后的数据传输至gpu也需要较长时间,所以无法实现实时响应。即使在不需要实时重建的场景下,仅存储重建后的数据,也会需求比原始gis数据更多的存储空间,对计算机的硬件资源提出了更高的要求。
技术实现思路
1、本技术提供一种基于gpu的三维重建方法、装置、电子设备及介质,使gpu侧负责重建计算,从而一方面减少cpu向gpu传输的数据量,加速了重建计算的效率,另一方面减少了cpu侧需要存储的数据量,从而降低了对于计算机硬件资源的需求。
2、一方面,本技术提供一种基于gpu的三维重建方法,由gpu侧执行,该方法包括:
3、获取cpu写入gpu的存储空间的二维数据,所述二维数据包括至少一个二维模型的模型数据,所述模型数据包括至少三个二维矢量及每个二维矢量的高度信息,同一二维模型中,不同的二维矢量的高度信息一致,所述二维数据是所述cpu对原始数据进行数据解析得到的;
4、根据所述二维数据进行立面重建处理和顶面重建处理,得到立面重建数据和顶面重建数据;
5、根据所述立面重建数据和顶面重建数据绘制三维模型。
6、在另一种可能实现的方式中,对于每个二维模型的模型数据,所述根据所述二维数据进行立面重建处理,得到立面重建数据,包括:
7、将所述二维模型中每个二维矢量作为一个目标线段,所述二维矢量的起点和终点为所述二维矢量对应的目标线段的两个端点;
8、基于所述目标线段及所述二维矢量对应的高度信息,确定平行于所述目标线段的重构线段;
9、基于所述目标线段、所述重构线段及所述高度信息进行重构,以得到三维立面;
10、对所述三维立面进行对角分割,得到与所述二维矢量对应的两个三角面各自的顶点数据和法线数据,并将所述顶点数据和所述法线数据作为所述立面重建数据。
11、在另一种可能实现的方式中,对于每个二维模型的模型数据,所述根据所述二维数据进行顶面重建处理,得到顶面重建数据,包括:
12、根据所述模型数据包括的二维矢量,得到待重建顶面;
13、若所述二维模型包括n个二维矢量,则将所述待重建顶面分割为n-2个三角形,所述n不小于3,所述n-2个三角形的各个顶点为所述二维矢量的起点或终点;
14、将所述n-2个三角形的顶点数据及法线方向作为所述顶面重建数据。
15、在另一种可能实现的方式中,所述将所述待重建顶面分割为n-2个三角形,包括:
16、以任一第一顶点出发,建立所述第一顶点与第二顶点的连接,得到n-2个三角形,所述第二顶点与所述第一顶点为不相邻顶点。
17、在另一种可能实现的方式中,所述根据所述立面重建数据和顶面重建数据绘制三维模型,包括:
18、基于每二维矢量对应的立面重建数据和顶面重建数据,进行三维模型的绘制;
19、记录所述待重建顶面各个区域的被覆盖次数;
20、对所述待重建顶面中所述被覆盖次数为偶数的区域进行裁剪,得到与所述二维模型对应的三维模型。
21、在另一种可能实现的方式中,所述根据所述二维数据进行立面重建处理和顶面重建处理,得到立面重建数据和顶面重建数据之前,所述方法还包括:
22、获取所述cpu发送的绘制批次,所述绘制批次用于指示所述二维数据的处理批次;
23、所述根据所述二维数据进行立面重建处理和顶面重建处理,得到立面重建数据和顶面重建数据,包括:
24、按照所述绘制批次,并行地对所述绘制批次内的二维数据进行立面重建处理和顶面重建处理,得到所述二维数据的立面重建数据和顶面重建数据。
25、第二方面,本技术提供一种基于gpu的三维重建装置,包括第一获取模块、第一处理模块及绘制模块,其中,
26、第一获取模块,用于获取cpu写入gpu的存储空间的二维数据,所述二维数据包括至少一个二维模型的模型数据,所述模型数据包括至少三个二维矢量及每个二维矢量的高度信息,同一二维模型中,不同的二维矢量的高度信息一致,所述二维数据是所述cpu对原始数据进行数据解析得到的;
27、第一处理模块,用于根据所述二维数据进行立面重建处理和顶面重建处理,得到立面重建数据和顶面重建数据;
28、绘制模块,用于根据所述立面重建数据和顶面重建数据绘制三维模型。
29、在另一种可能实现的方式中,所述第一处理模块具体用于:
30、将所述二维模型中每个二维矢量作为一个目标线段,所述二维矢量的起点和终点为所述二维矢量对应的目标线段的两个端点;
31、基于所述目标线段及所述二维矢量对应的高度信息,确定平行于所述目标线段的重构线段;
32、基于所述目标线段、所述重构线段及所述高度信息进行重构,以得到三维立面;
33、对所述三维立面进行对角分割,得到与所述二维矢量对应的两个三角面各自的顶点数据和法线数据,并将所述顶点数据和所述法线数据作为所述立面重建数据。
34、在另一种可能实现的方式中,所述第一处理模块具体用于:
35、根据所述模型数据包括的二维矢量,得到待重建顶面;
36、若所述二维模型包括n个二维矢量,则将所述待重建顶面分割为n-2个三角形,所述n不小于3,所述n-2个三角形的各个顶点为所述二维矢量的起点或终点;
37、将所述n-2个三角形的顶点数据及法线方向作为所述顶面重建数据。
38、在另一种可能实现的方式中,所述将所述待重建顶面分割为n-2个三角形,包括:
39、以任一第一顶点出发,建立所述第一顶点与第二顶点的连接,得到n-2个三角形,所述第二顶点与所述第一顶点为不相邻顶点。
40、在另一种可能实现的方式中,所述绘制模块具体用于:
41、基于每个二维模型对应的立面重建数据和顶面重建数据,进行三维模型的绘制;
42、记录所述待重建顶面各个区域的被覆盖次数;
43、对所述待重建顶面中所述被覆盖次数为偶数的区域进行裁剪,得到与所述二维模型对应的三维模型。
44、在另一种可能实现的方式中,所述第一处理模块还用于:
45、获取所述cpu发送的绘制批次,所述绘制批次用于指示所述二维数据的处理批次;
46、所述第一处理模块具体用于:
47、按照所述绘制批次,并行地对所述绘制批次内的二维数据进行立面重建处理和顶面重建处理,得到所述二维数据的立面重建数据和顶面重建数据。
48、第三方面,本技术提供一种基于gpu的三维重建方法,由cpu侧执行,该方法包括:
49、获取需要进行三维重建的原始数据;
50、根据所述原始数据得到二维数据,所述二维数据包括至少一个二维模型的模型数据,所述模型数据包括至少三个二维矢量及每个二维矢量的高度信息;
51、将所述二维数据写入至gpu的存储空间,以使所述gpu调用所述存储空间并根据所述二维数据进行三维重建。
52、在另一种可能实现的方式中,所述将所述二维数据写入至gpu的存储空间,包括:
53、对所述二维数据进行统计以得到数据总量,并根据所述数据总量申请所述gpu可调用的存储空间;
54、将所述二维数据存储至所述存储空间。
55、在另一种可能实现的方式中,所述将所述二维数据写入至存储空间之前,所述方法还包括:
56、根据所述二维数据中的二维模型的数量和所述gpu的算力,为所述二维数据划分绘制批次,所述gpu的算力用于表示所述gpu的计算能力;
57、将所述绘制批次发送至所述gpu,以使所述gpu按照所述绘制批次并行地对所述绘制批次内的二维数据进行三维重建。
58、在另一种可能实现的方式中,所述将所述二维数据写入至所述gpu的存储空间后,所述方法还包括:
59、释放cpu内存空间中的数据,所述cpu内存空间中的数据包括所述原始数据和所述二维数据。
60、第四方面,本技术提供一种基于gpu的三维重建装置,该装置包括第二获取模块、第二处理模块及写入模块,其中,
61、第二获取模块,用于获取需要进行三维重建的原始数据;
62、第二处理模块,用于根据所述原始数据得到二维数据,所述二维数据包括至少一个二维模型的模型数据,所述模型数据包括至少三个二维矢量及每个二维矢量的高度信息;
63、写入模块,用于将所述二维数据写入至gpu的存储空间,以使所述gpu调用所述存储空间并根据所述二维数据进行三维重建。
64、在另一种可能实现的方式中,所述写入模块具体用于:
65、对所述二维数据进行统计以得到数据总量,并根据所述数据总量申请所述gpu可调用的存储空间;
66、将所述二维数据存储至所述存储空间。
67、在另一种可能实现的方式中,所述写入模块还用于:
68、根据所述二维数据中的二维模型的数量和所述gpu的算力,为所述二维数据划分绘制批次,所述gpu的算力用于表示所述gpu的计算能力;
69、将所述绘制批次发送至所述gpu,以使所述gpu按照所述绘制批次并行地对所述绘制批次内的二维数据进行三维重建。
70、在另一种可能实现的方式中,所述写入模块还用于:
71、释放cpu内存空间中的数据,所述cpu内存空间中的数据包括所述原始数据和所述二维数据。
72、第五方面,本发明提供一种电子设备,包括:
73、gpu和cpu;
74、所述gpu用于执行如上第一方面任一项所述的方法,所述cpu用于执行如上第二方面任一项所述的方法。
75、第六方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面和第二方面任一项所述的基于gpu的三维重建方法。
76、本技术提供一种基于gpu的三维重建方法、装置、电子设备及介质,其中,cpu在接收到需要进行三维重建的原始数据时,对原始数据进行解析处理,以得到二维数据,并将二维数据发送至gpu。gpu在接收到二维数据时,对二维数据进行立面重建处理及顶面重建处理,以得到重建数据。最后gpu根据重建数据绘制目标得到的三维模型。
77、在上述过程中,cpu在对原始数据进行了解析处理后,便将二维数据发送至gpu,由gpu根据二维数据进行重建计算及绘制,一方面有效减少了cpu需要传输至gpu侧的数据量,加速了重建计算的效率,另一方面,cpu只需要暂时存储解析得到的二维数据,降低了cpu侧需要存储的数据量,从而降低了对于计算机硬件资源的要求。