基于手绘地图的3D场景重建实现方法及系统
未命名
08-06
阅读:98
评论:0

基于手绘地图的3d场景重建实现方法及系统
技术领域
1.本发明涉及的是一种计算机图形学领域的技术,具体是一种基于手绘地图的3d场景重建实现方法及系统。
背景技术:
2.现有的三维场景重建方法包括手工建模、利用gis数据重建、主动视觉三维重建、被动视觉三维重建等,其中手工建模是3d建模师使用建模软件进行交互建模,这种方式可以达到很高的模型精度和场景细节,但通常需要花费大量的时间和人力,同时当后续想对这类场景进行进一步修改也会造成相当多的关联改动。主动视觉三维重建是指用激光等技术来重建场景,被动视觉三维重建是指利用单张或多张图片来还原场景中各物体的位置,这些方法都难以提供给用户根据自己需求灵活生成三维场景的能力。利用gis数据重建是利用gis数据来辅助场景重建的过程,gis数据是一种有层级结构的多种地理信息数据集合,适用于大规模场景的快速重建,包括重建地表附着的建筑、道路、植被、水体等,其3d重建的模型精度通常很低,并且由于缺乏对应数据的原因,难以重建现实世界中不存在的地区。
技术实现要素:
3.本发明针对现有三维重建系统中,需要用户提供复杂地理信息、需要较多手工修改操作、不利于非专业用户自定义编辑、不适合快速大场景重建的问题,提出一种基于手绘地图的3d场景重建实现方法及系统,让用户通过绘制手绘地图的方式生成场景的语义分割(语义图),从而表达用户对场景的设计意图,用深度学习技术从语义图还原各类gis位图数据,并进一步生成与其相关的gis矢量数据,最后实现重建三维场景的目标,创建出约1km2含有地形、植被、房屋、道路模型的大型场景,解决高精度、可自定义的大规模场景高效3d重建问题。
4.本发明是通过以下技术方案实现的:
5.本发明涉及一种基于手绘地图的3d场景重建实现方法,包括:gis位图数据生成阶段和三维场景模型重建阶段,其中:gis位图数据生成阶段中,将用户输入的手绘地图转化为语义图后,采用图像翻译网络将输入的语义图(semantic label map)转换成街区位图,再利用strtdemgan网络模型将街区位图转换成地形梯度场从而获得地形的高度变化数据,最后以积分梯度的方式生成地形高度图;在三维场景模型重建阶段中,根据gis位图数据生成gis矢量数据,并依据各gis矢量数据重建地形上的各类附着物模型。
6.所述的手绘地图是指一种由多种纯色构成的区域俯视图,类似常见电子地图的手绘形式。用户可在其中标注出场景的居住区、文化区、绿化区、水域、一级道路、二级道路、三级道路、在建道路共八类区域,每一种区域均用一种纯色表示,而后本系统自动将其转化为语义图。
7.所述的语义图是一种每个像素由物体标签(label)标记而成的语义分割图片,相
当于像素级别的物体分类,其中物体标签是一些指代不同的功能区类型的数字,如居住区、文化区、绿化区、水域、一级道路、二级道路、三级道路、在建道路,其数值分别对应1-8。
8.所述的gis位图数据是本发明通过图像翻译网络和strtdemgan进行生成的,其包括:街区位图和地形高度图两种类型的图片数据。本发明将街区位图定义为具有常见电子地图样式的地图(如高德地图、百度地图中的电子地图样式),其包括:一个地区的街区、道路、水域等地理要素的位置和形状信息。地形高度图是指每一个像素表示地形对应位置高度值的灰度图片。
9.所述的图像翻译网络,其采用但不限于pix2pixhd实现,该网络出处为:ting-chun wang,ming-yu liu,jun-yan zhu et al.high-resolution image synthesis and semantic manipulation with conditionalgans[c].ieee/cvf conference on computer vision and pattern recognition(cvpr).2018,8798-8807.
[0010]
所述的strtdemgan网络模型采用gradient penalty技术以提升其训练的稳定性,该strtdemgan网络模型具体包括:生成器和判别器,该生成器包括:四层卷积层、两层反卷积层和九个resnet block,每层之间均有bn层和leakyrelu激活函数连接;判别器包括:5个卷积层,每层之间用leakyrelu激活函数进行连接,没有bn层。
[0011]
所述的strtdemgan网络模型输出矩阵形式的地形梯度场,矩阵中每个元素具有两个维度,分别表示该位置地形梯度的x和y方向值。
[0012]
所述的strtdemgan网络模型的损失函数包括一个基于格林公式的特殊函数,用于使输出数据满足积分与路径的无关条件,具体为:其中:g为网络的生成器,s为网络的输入,z为一个随机数,x为网络输出矩阵中每个元素的第0维变量,y为网络输出矩阵中每个元素的第1维变量。
[0013]
所述的积分梯度的方式是指对于地形高度图每一个位置(x
t
,y
t
)的像素值,从图片左上角开始,以一个初始值先沿x轴方向累加梯度场中的梯度值,当x值达到x
t
之后,再沿y方向累加梯度场的梯度值,直到到达目标点(x
t
,y
t
),此时累加的值就为x-y路径下该点地形的高度大小。然后再从图片左上角和初始值开始,先沿y方向累加,再沿x方向累加,得出y-x路径下该点的高度值,将两个高度值求平均得出(x
t
,y
t
)位置最终的地形高度。
[0014]
所述的图像翻译网络,通过以下方式构建得到用于训练的数据集ske2strt,包括以下步骤:
[0015]
1)使用java scripts脚本从高德地图中不断改变经纬度值,截取多个在不同经纬度但具有同样经纬度跨度的地图块做为街区位图,同步记录下截取这些街区位图所用的经纬度;
[0016]
2)根据截取到的街区位图,利用本发明修改制作的数据标注工具人工简易描绘这些地图,从而得到一张与街区位图对应的语义图。
[0017]
3)将街区位图和语义图转换为同样的大小并储存为一个数据集。
[0018]
所述的strtdemgan网络模型,通过以下方式构建得到用于训练的数据集srtr2dem,包括以下步骤:
[0019]
1)从srtm 30m数据库中按照经纬度收集一个较大范围的高程数据;
[0020]
2)使用java scripts脚本从高德地图中不断改变经纬度值,截取多个在不同经纬
度但具有同样经纬度跨度的地图块做为街区位图,同步记录下截取这些街区位图所用的经纬度,保证收集的高程数据在这些经纬度位置不为空;
[0021]
3)根据截取街区位图所用经纬度数据,在高程数据中截取同样范围的高程数据并转换为高度图;
[0022]
4)将街区位图和高度图转换为同样的大小并储存为一个数据集。
[0023]
所述的生成gis矢量数据是指:利用gis位图数据生成阶段生成的街区位图和高度图生成水文数据,再在水文数据的基础上根据街区位图生成道路矢量数据、区域划分矢量数据、建筑轮廓矢量数据和行道树数据;然后依据街区位图和已有的gis矢量数据决定植被和纹理的分布。
[0024]
所述的gis矢量数据包括:水文数据、道路矢量数据、建筑轮廓矢量数据、区域划分矢量数据,其为通过点线或者由点线构成的多边形组成的数据集合,使用其能还原出对应物体的位置和轮廓。
[0025]
所述的水文数据,其生成算法是:在街区位图上根据标记为水域的区域挑选出一定的泉眼,而后在高度图中,从泉眼开始从最低高度进行“涨水”,即标记所有低于当前高度的和泉眼连通像素作为当前的水面,不断提高当前高度直到目前被标记的像素区域和街区位图中的水域区域相似,此时被标记的所有像素即为一个水文数据。
[0026]
所述的道路矢量数据,其生成算法是:对街区位图中的道路进行细化后,确定每条道路的起点和交汇点,令交汇点为分段点并用其将不同的道路分成不同的段,当一段道路弯曲过度时再度向其中添加新的分段点,直到每段道路都差不多近似于直线,之后记录下每个分段点和它们之间的连接关系作为道路矢量数据。
[0027]
所述的建筑轮廓矢量数据,通过以下方式生成:
[0028]
1)对街区位图中的不同区域进行轮廓提取,并简化轮廓,以取得区域划分矢量数据(即不同区域的多边形轮廓)。
[0029]
2)将每个轮廓投影到一定距离内的道路上,令投影面积最大的道路为其主要道路,把主要道路的法线方向设为该区域的主要方向。
[0030]
3)人工提取建筑物3d模型俯视图的轮廓,根据这些轮廓制作建筑轮廓腐蚀算子。
[0031]
4)用建筑轮廓腐蚀算子腐蚀区域划分矢量数据,在腐蚀后保留的像素中选一个作为建筑的生成位置。
[0032]
5)重复步骤4)直到腐蚀后没有保留下来的像素。在记录到的建筑生成位置绘制建筑轮廓即得到由该街区位图生成的建筑轮廓矢量数据。
[0033]
所述的重建地形上的各类附着物模型是指:通过自动调用ue4的笔刷和物体生成功能,创建出有纹理和地形附着物的场景,具体为:根据区域划分矢量数据来决定植被笔刷、纹理笔刷的作用位置。在每一个绿化区都按照内部密集,边缘稀疏的方式插入植被笔刷点。每一种植物都被设定多种地形纹理,生成笔刷点时,随机选取一种植被类型和其设定的一种纹理与目标植被笔刷点绑定。重建植被模型时,再根据植被笔刷点绑定的信息在其坐标位置创建植被模型和对应的地形纹理。
[0034]
本发明涉及一种实现上述方法的基于手绘地图的3d场景重建系统,包括:交互层、核心层、支持层。
[0035]
所述的交互层包括:绘图模块和图形渲染模块,其中:绘图模块为用户提供了手工
绘制场景分割信息的功能,并能根据用户绘制的手绘地图创建对应的语义图,得出深度学习网络的输入。图形渲染模块根据重建的地形与附着物模型,利用底层调用展示出生成的场景。
[0036]
所述的核心层包括:gis位图数据生成模块、gis矢量数据生成模块、三维模型生成模块,其中:gis位图数据生成模块用于实现图像翻译网络模型和strtdemgan模型的训练和调用,利用这些网络根据语义图实现街区位图与高度图的生成。gis矢量数据生成模块根据已有的gis位图数据创建相应的gis矢量数据,即道路矢量数据、区域划分矢量数据、建筑轮廓矢量数据和行道树数据。三维模型生成模块根据gis矢量数据调用底层ue4模块,创建附着物模型。
[0037]
所述的支持层包括数据库、用于底层调用的深度学习框架和图形引擎,其中:数据库包含由语义图与街区位图成对数据组成的数据集ske2strt和由街区位图与高度图成对数据组成的数据集strt2dem。深度学习框架为pytorch。图形引擎为ue4。技术效果
[0038]
本发明通过strtdemgan网络模型生成地形梯度场,再以积分梯度场的方式生成地形,通过基于格林公式的损失函数保证生成的地形梯度场有积分与路径无关的性质,更好地表现山地、水域等的地理特征,同时保证人造区域的平坦,在地形高度图的创建上有更好的效果。用户在使用本系统的过程中只需要约一分钟的编辑时间,在系统的绘图模块中绘制期望生成的场景的俯视图并确认,后续的gis数据生成过程和场景模型创建流程系统都能自动将其完成,最终得出一个对应到现实世界中约1千平方公里面积的高精度大场景三维模型。
附图说明
[0039]
图1为本发明整体系统架构图;
[0040]
图2为本发明整体算法流程图;
[0041]
图3为本发明用户绘制提供的手绘地图样例;
[0042]
图4为本发明在gis位图数据生成阶段的算法流程;
[0043]
图5为本发明在生成gis矢量数据过程中不同系统模块之间的调用关系图;
[0044]
图6为本发明在生成各gis矢量数据过程中,不同gis矢量数据之间的依赖关系和生成顺序图;
[0045]
图7为本发明水域生成过程的算法流程。
[0046]
图8为本发明生成单水域场景的效果图。
[0047]
图9为本发明生成多水域场景的效果图。
[0048]
图10为本发明生成河流场景的效果图。
[0049]
图11为本发明生成湖畔小镇场景的效果图。
[0050]
图12为本发明生成城市场景的效果图。
[0051]
图13为本发明生成弯曲道路场景的效果图。
具体实施方式
[0052]
如图1所示,本实施例涉及一种基于手绘地图的3d场景重建系统,包括:交互层、核
心层和支持层,其中:交互层包括绘图模块和图形渲染模块组成;核心层包括gis位图数据生成模块、gis矢量数据生成模块和三维模型生成模块;支持层包括用于网络训练的ske2strt和strt2dem数据集、底层的深度学习框架pytorch和图形引擎ue4。
[0053]
所述的绘图模块实现涂抹、擦除等功能。利用该绘图程序,用户能在绘图模块中自由地绘制手绘地图并将其保存。在用户完成绘制的时候,绘图模块会根据手绘地图中的颜色将其转换成对应的物体标签(label),从而生成语义图用作后续网络的输入。
[0054]
所述的交互层的图形渲染模块主要用于展示生成的三维场景。
[0055]
所述的核心层的gis位图数据生成模块包含信息补充网络(progan)、图像翻译网络(pix2pixhd)、strtdemgan模型和街区位图后处理模块,其中:信息补充网络根据随机数,进行语义图生成处理,得出含补充信息的语义图;图像翻译网络根据语义图信息,进行语义图转换为街区位图的处理,得到街区位图;strtdemgan根据街区位图信息,进行街区位图转换为高度图的处理,得到高度图;街区位图后处理模块根据街区位图信息,进行降噪处理,用于减轻图像翻译网络生成结果的噪声。
[0056]
所述的信息补充网络,本实施例采用但不限于progan来实现,其它gan模型可将其代替,该网络出处为:tero karras,timo aila,samuli laine et al.progressive growing of gans for improved quality,stability,and variation[c].international conference on learning representations.2018.
[0057]
所述的图像翻译网络,本实施例采用但不限于pix2pixhd来实现,其它用于图像翻译的cgan模型可将其代替,该网络出处为:ting-chun wang,ming-yu liu,jun-yan zhu et al.high-resolution image synthesis and semantic manipulation with conditional gans[c].ieee/cvf conference on computer vision and pattern recognition(cvpr).2018,8798-8807.
[0058]
所述的strtdemgan网络模型采用gradient penalty技术以提升其训练的稳定性。strtdemgan包括:生成器和判别器,该生成器包括:四层卷积层、两层反卷积层和九个resnet block,每层之间均有bn层和leakyrelu激活函数连接;判别器包括:5个卷积层,每层之间用leakyrelu激活函数进行连接,没有bn层。表1和表2给出strtdemgan的网络结构。
[0059]
表1 strtdemgan生成器网络结构参数
[0060]
表2 strtdemgan判别器网络结构参数
[0061]
所述的strtdemgan输出梯度矩阵,矩阵中每个元素都有两个维度,分别表示该位置地形梯度的x和y方向值,strtdemgan的损失函数包括一个基于格林公式的特殊函数,用于使输出数据满足积分与路径的无关条件,具体为:其中:g为网络的生成器,s为网络的输入,z为一个随机数,x为网络输出矩阵中每个元素的第0维变量,y为网络输出矩阵中每个元素的第1维变量。
[0062]
所述的核心层的gis矢量数据生成模块由多个分别进行特定gis矢量数据生成的子模块组成,根据街区位图和高度图,各模块按照图5的顺序被调用,然后生成gis矢量数据并将其记录到特定的目录之中。
[0063]
所述的核心层的三维模型生成模块是一个植入于ue4的功能模块,它一方面用来调用ue4的地形生成和笔刷功能,一方面以命令行调用gis位图数据生成模块和gis矢量数据生成模块的方式来获取gis数据。其由地形和附着物配置、地形构建、附着物生成和材质生成这些子模块组成。其中:地形和附着物配置子模块储存预制好的模型素材;地形构建子模块根据生成好的高度图,调用底层ue4接口实现地形生成;附着物生成和材质生成子模块根据gis矢量数据利用模型素材在地形上自动创建地形附着物。
[0064]
如图2所示,本实施例以手绘地图作为输入数据,系统会自动将其转换为原始语义图,并最终生成地形模型。按照功能的不同,整个三维场景的重建过程可以分为gis位图数据生成和三维场景模型重建两个阶段。在gis位图数据生成阶段,默认状态下系统会利用progan根据随机噪声生成一张含补充信息的语义图,并将其不为0的像素值复制到原始语义图中相同位置且数值为0的像素上,从而为原始语义图添加更多的信息,用户可以通过设置禁用这一过程。在语义图合并完成之后本系统使用pix2pixhd将其转换为街区位图,获取街区位图后再进一步通过strtdemgan网络模型将其转变为地形梯度场,并以第二类路径积分的方式积分梯度场获取最终的高度图。在三维场景模型重建阶段,利用街区位图和高度图这两种gis位图数据,本系统能还原出重建地形附着物所需要的gis矢量数据,其中涉及对水文数据的重建、对道路矢量数据的重建、对区域划分矢量数据和建筑轮廓矢量数据的重建,并依据重建出的数据搜索、确定植被和地形纹理笔刷的种类与作用点。获取完整的gis位图与矢量数据和各类笔刷点后,本系统使用在ue4中内置的地形生成模块来生成地形模型和其上的各种附着物。
[0065]
所述的gis位图数据生成阶段包含以下步骤:
[0066]
1)通过progan生成多张含额外信息的语义图,从中寻找额外信息数量在一定阈值范围内,噪声少的最适宜的语义图,将其前景像素和用户提供的语义图进行合成;
[0067]
2)将语义图转换为one-hot形式,输入pix2pix2hd网络将其映射为和常见电子地图样式相近的街区位图;
[0068]
3)利用strtdemgan把获取到的街区位图映射到梯度空间,生成地形梯度场;
[0069]
4)对地形梯度场进行积分,具体为:先创建一张空的地形高度图,对于高度图每一个位置(x
t
,y
t
)的像素值,从梯度场图片左上角开始,以一个初始值先沿x轴方向累加梯度场中的梯度值,当x值达到x
t
之后,再沿y方向累加梯度场的梯度值,直到到达目标点(x
t
,y
t
),此时累加的值就为x-y路径下该点地形的高度大小。然后再从梯度场左上角和初始值开始,先沿y方向累加,再沿x方向累加,得出y-x路径下该点的高度值,将两个高度值求平均得出(x
t
,y
t
)位置最终的地形高度并赋值给高度图。当每一个像素位置的高度值都计算得出后,梯度场对应的高度图便生成完毕;
[0070]
5)根据高度图生成对应的地形模型。
[0071]
所述的三维场景模型重建阶段包含以下步骤:
[0072]
1)首先获取在gis位图数据生成阶段输出的街区位图和高度图;
[0073]
2)调用水文数据生成模块获取水文数据,即根据街区位图和高度图计算重建在地形中能与地形模型紧密贴合的水面区域和水面高度。
[0074]
如图7,在获取到街区位图之后用广度优先搜索将所有连通的水域区域(街区位图中的蓝色区域)标记为具有同一个“泉眼”,并根据高度图取连通区域中的高度最低的一点作为泉眼的位置,之后从泉眼的高度和位置开始再次进行广度优先搜索的过程,标记所有高度低于当前高度,并且能通过低于当前高度的像素到达泉眼的像素。每完成一次搜索后就令当前高度加1,模拟涨水的过程,直到街区位图中水域在当前水域所覆盖区域中的比值开始减小或者比值小于一个固定值(取0.5)时,搜索结束,这样能使当前水域和街区位图上的水域尽可能相似。此时把当前水域覆盖的区域转换成多边形表示的形式便获得该区域的水文数据。
[0075]
3)调用道路矢量数据生成模块获取道路矢量数据。具体为:设八领域内只有两个道路像素的像素为道路内像素点,超过两个道路像素或小于两个像素的像素点为道路交汇点,只有一个像素的为道路的起止点,交汇点和起止点都是道路的分段点。系统通过对街区位图中的道路使用细化算法和骨骼提取将其中的道路主体转换为宽度只有一个像素的栅格图形。通过遍历图片确定每条道路的起止点和交汇点,令现有交汇点为分段点并用其将道路分成不同的段,当一段道路弯曲过度时再度向其中添加新的分段点,直到每段道路都差不都近似于直线,之后记录下每个分段点和它们之间的连接关系作为道路矢量数据。
[0076]
4)对街区位图的各个区域进行划分上的简化以获取区域划分矢量数据。
[0077]
5)调用建筑轮廓矢量数据生成模块根据街区位图和区域划分矢量数据来生成建筑轮廓矢量数据。系统先对区域划分矢量数据中的每一个区域进行投影,将其投影到一定范围内的道路上,并选择投影面积最大的道路作为该区域的主要道路,以该道路的法线方向做为该区域的主要方向。本实施例事先根据建筑模型的俯视图人工标记出每一栋建筑的俯视轮廓图,并以此制作建筑轮廓的腐蚀算子,对于区域划分矢量数据中的每一个区域,系统随机选取一个建筑轮廓腐蚀算子,将腐蚀算子旋转到正对区域主要方向后对区域进行形态学腐蚀操作,腐蚀后从腐蚀结果中选择一个保留下来的像素位置作为建筑生成点,并将区域的主要方向设为该建筑的正面朝向,然后在区域划分矢量数据中于该点绘制建筑轮廓以避免后续的建筑和该建筑发生重叠,之后继续重复腐蚀和选建筑生成点的操作,直到找不到新的建筑生成点。此时获得的建筑生成坐标、建筑朝向和已有的建筑轮廓便构成该地
区的建筑轮廓矢量数据。
[0078]
6)根据收集到的gis位图数据和gis矢量数据来确定植被笔刷点的作用位置。本系统先对可能的植被笔刷点位置进行搜索,对区域划分矢量数据中的绿化区采用中心密集、边缘稀疏的方式来选取笔刷作用点并将这些笔刷作用点的植被类型设置为森林植被。针对水域则先提取其边缘,然后对边缘进行膨胀,生成一个“水边区域”。在水边区域中,本实施例均匀地采样出植被笔刷点,将这些笔刷点的植被类型设定为临水植物。设置好植被笔刷作用点后,系统会检查这些笔刷作用点离建筑物的距离,剔除和建筑物距离太近的笔刷点。
[0079]
7)根据gis位图和矢量数据以及笔刷点数据在地形构建模块中调用地形模型生成和植被、纹理笔刷功能,从而生成大场景3d模型(1km2)。
[0080]
如图4所示,所述的信息补充网络和图像翻译网络使用本实施例收集的ske2strt数据集进行训练,ske2strt数据集的收集过程具体包括:
[0081]
1)使用javascripts脚本从高德地图中不断改变经纬度值,截取多个在不同经纬度但具有同样经纬度跨度的地图块做为街区位图,同步记录下截取这些街区位图所用的经纬度。为保证截取的街区位图表示一个较大的场景范围,本实施例在截取的过程中选择纬度小于30
°
,长与宽均为0.01
°
跨度的地图块,此时其对应的区域面积约为1km2;
[0082]
2)根据截取到的街区位图,利用本实施例制作的数据标注工具人工简易描绘这些地图,从而得到一张与街区位图对应的手绘地图,数据标注工具会对手绘地图做进一步的处理从而得出对应的语义图数据;
[0083]
3)将街区位图和语义图转换为同样的大小并储存为一个数据集。
[0084]
如图4所示,所述的深度学习网络strtdemgan使用本实施例构建的strt2dem数据集进行训练,strt2dem数据集的收集过程具体包括:
[0085]
1)从srtm30m数据库中按照经纬度收集一个较大范围的高程数据;
[0086]
2)使用javascripts脚本从高德地图中不断改变经纬度值,截取多个在不同经纬度但具有同样经纬度跨度的地图块做为街区位图,同步记录下截取这些街区位图所用的经纬度,并保证收集的高程数据在这些经纬度位置不为空。截取的过程中只选择纬度小于30
°
,长与宽均为0.01
°
跨度的地图块,此时其对应的区域面积约为1km2;
[0087]
3)根据截取街区位图所用经纬度数据,在高程数据中截取同样范围的局部高程数据并将局部高程数据中的每个高程值比上该局部数据中的最大高程差以将其归一化,从而转换为高度图;
[0088]
4)将街区位图和高度图转换为同样的大小并储存为一个数据集。
[0089]
经过具体实际实验,在rtxgeforce3070ti、内存32g、windows10系统、pytorch1.9.0、unrealengine4.26.2的具体环境设置下,strtdemgan在根据街区位图生成高度图的任务上和其它图像翻译网络的生成结果对比如表3,其中区域抖动指标越小越好,水域稳定指标越大越好;以用户快速绘制手绘地图的方法,系统得到的场景生成结果对比如表4,其场景图片见图8至图13:
[0090]
表3不同网络的区域抖动指标和水域稳定指标对比 区域抖动指标(α)水域稳定指标(β)pix2pix3.020.19pix2pixhd12.710.49
gaugan10.950.1strtdemgan8.080.28
[0091]
表4从语义图生成的三维场景的渲染数据
[0092]
如表3,与现有技术相比,strtdemgan的性能指标提升在于:其它网络模型如pix2pix生成的居民、城市区最为平整但有最差的水域稳定性,意味着根据其生成的高度图产生的水体和街区位图上的水域差距较大。而实验显示pix2pix2hd有最好的水域稳定性,根据其生成结果创建的水体和原本设计的水域形状最为相似,但pix2pix2hd生成的城市区域却也是最为陡峭的。相比之下本发明提出的strtdemgan在两个指标上都达到较好的效果,这意味着strtdemgan能在保证三维场景中水体形状符合地理真实性的同时生成更类似真实地形的城市区域。
[0093]
相比现有技术,本发明使得用户现在只需要花费1分钟左右的时间进行编辑即可开始生成大范围的场景模型,在生成场景模型的过程中大概需要耗时15-40分钟。在生成的1平方千米的三维场景里,以第一人称视角进行操作时其帧率变化范围在30-120fps之间,平均可达80fps,总三角面片数处在5亿至40亿之间。
[0094]
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
技术特征:
1.一种基于手绘地图的3d场景重建实现方法,其特征在于,包括:gis位图数据生成阶段和三维场景模型重建阶段,其中:gis位图数据生成阶段中,将用户输入的手绘地图转化为语义图后,采用图像翻译网络将输入的语义图转换成街区位图,再利用strtdemgan网络模型将街区位图转换成地形梯度场从而获得地形的高度变化数据,最后以积分梯度的方式生成地形高度图;在三维场景模型重建阶段中,根据gis位图数据生成gis矢量数据,并依据各gis矢量数据重建地形上的各类附着物模型;所述的strtdemgan网络模型采用gradient penalty技术以提升其训练的稳定性,该strtdemgan网络模型具体包括:生成器和判别器,该生成器包括:四层卷积层、两层反卷积层和九个resnet block,每层之间均有bn层和leakyrelu激活函数连接;判别器包括:5个卷积层,每层之间用leakyrelu激活函数进行连接,没有bn层。2.根据权利要求1所述的基于手绘地图的3d场景重建实现方法,其特征是,所述的strtdemgan网络模型输出矩阵形式的地形梯度场,矩阵中每个元素具有两个维度,分别表示该位置地形梯度的x和y方向值。3.根据权利要求1所述的基于手绘地图的3d场景重建实现方法,其特征是,所述的strtdemgan网络模型的损失函数包括一个基于格林公式的特殊函数,用于使输出数据满足积分与路径的无关条件,具体为:其中:g为网络的生成器,s为网络的输入,z为一个随机数,x为网络输出矩阵中每个元素的第0维变量,y为网络输出矩阵中每个元素的第1维变量。4.根据权利要求1所述的基于手绘地图的3d场景重建实现方法,其特征是,所述的积分梯度的方式是指对于地形高度图每一个位置(x
t
,y
t
)的像素值,从图片左上角开始,以一个初始值先沿x轴方向累加梯度场中的梯度值,当x值达到x
t
之后,再沿y方向累加梯度场的梯度值,直到到达目标点(x
t
,y
t
),此时累加的值就为x-y路径下该点地形的高度大小;然后再从图片左上角和初始值开始,先沿y方向累加,再沿x方向累加,得出y-x路径下该点的高度值,将两个高度值求平均得出(x
t
,y
t
)位置最终的地形高度。5.根据权利要求1所述的基于手绘地图的3d场景重建实现方法,其特征是,所述的图像翻译网络,通过以下方式构建得到用于训练的数据集ske2strt,包括以下步骤:1)使用java scripts脚本从高德地图中不断改变经纬度值,截取多个在不同经纬度但具有同样经纬度跨度的地图块做为街区位图,同步记录下截取这些街区位图所用的经纬度;2)根据截取到的街区位图,利用本发明修改制作的数据标注工具人工简易描绘这些地图,从而得到一张与街区位图对应的语义图;3)将街区位图和语义图转换为同样的大小并储存为一个数据集。6.根据权利要求1所述的基于手绘地图的3d场景重建实现方法,其特征是,所述的strtdemgan网络模型,通过以下方式构建得到用于训练的数据集srtr2dem,包括以下步骤:1)从srtm 30m数据库中按照经纬度收集一个较大范围的高程数据;2)使用java scripts脚本从高德地图中不断改变经纬度值,截取多个在不同经纬度但具有同样经纬度跨度的地图块做为街区位图,同步记录下截取这些街区位图所用的经纬度,并保证收集的高程数据在这些经纬度位置不为空;
3)根据截取街区位图所用经纬度数据,在高程数据中截取同样范围的高程数据并转换为高度图;4)将街区位图和高度图转换为同样的大小并储存为一个数据集。7.根据权利要求1所述的基于手绘地图的3d场景重建实现方法,其特征是,所述的重建地形上的各类附着物模型是指:通过自动调用ue4的笔刷和物体生成功能,创建出有纹理和地形附着物的场景,具体为:根据区域划分矢量数据来决定植被笔刷、纹理笔刷的作用位置,在每一个绿化区都按照内部密集,边缘稀疏的方式插入植被笔刷点,每一种植物都被设定多种地形纹理,生成笔刷点时,随机选取一种植被类型和其设定的一种纹理与目标植被笔刷点绑定,重建植被模型时,再根据植被笔刷点绑定的信息在其坐标位置创建植被模型和对应的地形纹理。8.一种实现权利要求1~7中任一所述方法的基于手绘地图的3d场景重建系统,其特征在于,包括:交互层、核心层、支持层;所述的交互层包括:绘图模块和图形渲染模块,其中:绘图模块为用户提供了手工绘制场景分割信息的功能,并能根据用户绘制的手绘地图创建对应的语义图,得出深度学习网络的输入;图形渲染模块根据重建的地形与附着物模型,利用底层调用展示出生成的场景;所述的核心层包括:gis位图数据生成模块、gis矢量数据生成模块、三维模型生成模块,其中:gis位图数据生成模块用于实现图像翻译网络模型和strtdemgan模型的训练和调用,利用这些网络根据语义图实现街区位图与高度图的生成;gis矢量数据生成模块根据已有的gis位图数据创建相应的gis矢量数据,即道路矢量数据、区域划分矢量数据、建筑轮廓矢量数据和行道树数据;三维模型生成模块根据gis矢量数据调用底层ue4模块,创建地形和附着物模型;所述的支持层包括数据库、用于底层调用的深度学习框架和图形引擎,其中:数据库包含由语义图与街区位图成对数据组成的数据集ske2strt和由街区位图与高度图成对数据组成的数据集strt2dem。
技术总结
一种基于手绘地图的3D场景重建实现方法及系统,包括:GIS位图数据生成阶段和三维场景模型重建阶段,其中:GIS位图数据生成阶段中,先将用户输入的手绘地图转化为语义图,而后采用图像翻译网络将输入的语义图转换成街区位图,再利用StrtdemGAN网络模型将街区位图转换成地形梯度场从而获得地形的高度变化数据,最后以积分梯度的方式生成地形高度图;在三维场景模型重建阶段中,根据GIS位图数据生成GIS矢量数据,并依据各GIS矢量数据重建地形上的各类附着物模型。本发明只需要约一分钟的编辑时间,在系统的绘图模块中绘制期望生成的场景的俯视图并确认,即可得到对应到现实世界中约1千平方公里面积的高精度大场景三维模型。千平方公里面积的高精度大场景三维模型。千平方公里面积的高精度大场景三维模型。
技术研发人员:肖双九 杨睿恒 董德礼 杨旭波
受保护的技术使用者:上海交通大学
技术研发日:2022.01.25
技术公布日:2023/8/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:线扫激光组件及车辆的制作方法 下一篇:铝合金连杆精镗的设备的制作方法