发明内容
有鉴于此,本申请的目的在于提供一种建筑物屋顶的建模方法、建模装置、设备及介质,利用神经网络来检测屋顶的结构,有效的防止干扰,以提取主要结构为主,避免的杂乱的其他物体的影响。同时,基于屋顶结构的不同类型来生成三维结构模型,可以构建各种各样的真实屋顶,使三维模型的生产更简单快捷,提高了屋顶建模的准确性和效率。
第一方面,本申请实施例提供了一种建筑物屋顶的建模方法,所述建模方法包括:
将获取到的原始遥感影像输入到预先训练好的U-Net网络模型中,对所述原始遥感影像中的建筑掩膜进行检测,得到建筑物掩膜分割图;
将所述建筑物掩膜分割图输入到预先训练好的屋顶结构识别模型中,确定出所述建筑物掩膜分割图中每个建筑物所包含的至少一个屋顶结构对应的结构类型,以及每个屋顶结构对应的屋顶边界框;
针对于每个建筑物所包含的每个屋顶结构,利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型;
在所述建筑物掩膜分割图中对该建筑物的建筑掩膜进行规整化处理,以得到该建筑物对应的规整化掩膜;
基于该建筑物对应的规整化掩膜对至少一个屋顶结构对应的初始结构模型进行组合,得到该建筑物对应的屋顶三维模型,以使所述屋顶三维模型的边缘与该建筑物对应的规整化掩膜的边缘重叠。
进一步的,所述利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型,包括:
基于所述屋顶边界框在所述建筑物掩膜分割图中的区域范围从所述数字地表模型中获取该屋顶结构对应的模型数据;
基于所述模型数据确定该屋顶结构中存在的多条直线,并从所述多条直线中确定出该屋顶结构的屋脊线;
基于该屋顶结构对应的结构类型以及所述屋脊线,从所述模型数据中确定出组成该屋顶结构的点云数据,并对所述点云数据进行三维平面拟合,以得到组成该屋顶结构的拟合平面;
基于该屋顶结构的拟合平面生成该屋顶结构对应的初始结构模型。
进一步的,当该屋顶结构对应的结构类型为尖顶或山墙顶时,通过以下步骤从所述多条直线中确定出该屋顶结构的屋脊线:
从所述多条直线中确定出长度最长的目标直线;
从所述模型数据中确定出与所述目标直线相邻的第一参考直线和第二参考直线;
判断所述第一参考直线的数据高度和所述第二参考直线的数据高度是否均小于所述目标直线的数据高度,且所述第一参考直线与所述第二参考直线是否基于所述目标直线对称;
若是,则将所述目标直线确定为该屋顶结构的屋脊线;
若否,则将所述目标直线从所述多条直线中删除,返回执行所述从所述多条直线中确定出长度最长的目标直线的步骤。
进一步的,当该屋顶结构对应的结构类型为折线型屋顶或金字塔型屋顶时,通过以下步骤从所述多条直线中确定出该屋顶结构的屋脊线:
从所述多条直线中确定出长度最长的目标直线;
针对于所述目标直线中的每个点,从所述模型数据中确定出与该点的数据高度相同的多个参考点,并基于该点和所述多个参考点生成参考矩形;
确定出每个参考矩形的中心点,并判断位于预设范围内的所述中心点的数量大于或等于数量阈值;
若是,则将所述目标直线确定为该屋顶结构的屋脊线;
若否,则将所述目标直线从所述多条直线中删除,返回执行所述从所述多条直线中确定出长度最长的目标直线的步骤。
进一步的,在所述基于该屋顶结构的拟合平面生成该屋顶结构对应的初始结构模型之后,所述建模方法还包括:
利用所述拟合平面,计算出所述初始结构模型对应的初始结构参数;
使用所述初始结构参数对所述屋脊线进行优化,得到优化屋脊线;
基于该屋顶结构对应的结构类型以及所述优化屋脊线,生成该屋顶结构对应的优化结构模型,并计算所述优化结构模型对应的优化结构参数;
若所述优化结构参数与所述初始结构参数之间的差距小于预设差距阈值,则将所述优化结构模型确定为该屋顶结构对应的初始结构模型。
进一步的,通过以下步骤对所述屋顶结构识别模型进行训练:
获取多张样本图像;
针对多张所述样本图像中每一张带有屋顶样本区域的样本图像,确定所述屋顶样本区域在该样本图像中的第一位置区域和屋顶样本类型;
针对每一张样本图像,将该样本图像输入到屋顶结构识别初始模型中,得到屋顶预测区域的第二位置区域和屋顶预测类型;
基于所述屋顶样本区域在该样本图像中的第一位置区域和所述屋顶样本类型,以及所述屋顶预测区域的第二位置区域和所述屋顶预测类型,对所述屋顶结构识别初始模型进行训练,得到所述屋顶结构识别模型。
进一步的,所述基于所述屋顶样本区域在该样本图像中的第一位置区域和所述屋顶样本类型,以及所述屋顶预测区域的第二位置区域和所述屋顶预测类型,对所述屋顶结构识别初始模型进行训练,得到所述屋顶结构识别模型,包括:
若所述屋顶预测区域对应的样本图像为未带有屋顶样本区域的图像,则调整所述屋顶结构识别初始模型的训练参数,直至所述屋顶结构识别初始模型输出的屋顶预测区域为空;
若所述屋顶预测区域对应的样本图像为带有屋顶样本区域的图像,则将所述屋顶样本区域在该样本图像中的第一位置区域与所述屋顶预测区域的第二位置区域进行对比,将所述屋顶样本类型与所述屋顶预测类型进行对比,计算当前状态下所述屋顶结构识别初始模型的损失函数;
基于所述屋顶结构识别初始模型的损失函数,不断调整所述屋顶结构识别初始模型的训练参数,直至所述屋顶结构识别初始模型达到收敛状态,得到所述屋顶结构识别模型。
第二方面,本申请实施例还提供了一种建筑物屋顶的建模装置,所述建模装置包括:
掩膜分割图确定模块,用于将获取到的原始遥感影像输入到预先训练好的U-Net网络模型中,对所述原始遥感影像中的建筑掩膜进行检测,得到建筑物掩膜分割图;
屋顶结构检测模块,用于将所述建筑物掩膜分割图输入到预先训练好的屋顶结构识别模型中,确定出所述建筑物掩膜分割图中每个建筑物所包含的至少一个屋顶结构对应的结构类型,以及每个屋顶结构对应的屋顶边界框;
初始结构模型生成模块,用于针对于每个建筑物所包含的每个屋顶结构,利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型;
规整化掩膜生成模块,用于在所述建筑物掩膜分割图中对该建筑物的建筑掩膜进行规整化处理,以得到该建筑物对应的规整化掩膜;
屋顶三维模型确定模块,用于基于该建筑物对应的规整化掩膜对至少一个屋顶结构对应的初始结构模型进行组合,得到该建筑物对应的屋顶三维模型,以使所述屋顶三维模型的边缘与该建筑物对应的规整化掩膜的边缘重叠。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的建筑物屋顶的建模方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的建筑物屋顶的建模方法的步骤。
本申请实施例提供的建筑物屋顶的建模方法、建模装置、设备及介质,首先,将获取到的原始遥感影像输入到预先训练好的U-Net网络模型中,对所述原始遥感影像中的建筑掩膜进行检测,得到建筑物掩膜分割图;然后,将所述建筑物掩膜分割图输入到预先训练好的屋顶结构识别模型中,确定出所述建筑物掩膜分割图中每个建筑物所包含的至少一个屋顶结构对应的结构类型,以及每个屋顶结构对应的屋顶边界框;针对于每个建筑物所包含的每个屋顶结构,利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型;在所述建筑物掩膜分割图中对该建筑物的建筑掩膜进行规整化处理,以得到该建筑物对应的规整化掩膜; 最后,基于该建筑物对应的规整化掩膜对至少一个屋顶结构对应的初始结构模型进行组合,得到该建筑物对应的屋顶三维模型,以使所述屋顶三维模型的边缘与该建筑物对应的规整化掩膜的边缘重叠。
与现有技术中的屋顶建模方法相比,本申请利用神经网络来检测屋顶的结构,而不是点、线、面这些基础特征,可以有效的防止干扰,以提取主要结构为主,避免的杂乱的其他物体的影响,及其他方式检测的屋顶掩膜的不完善的问题。同时,基于屋顶结构的不同类型来生成三维结构模型,可以构建各种各样的真实屋顶,解决模型库死板不灵活的问题。
本申请提供的屋顶三维自动建模的方法具有先进性、开放性、可靠性、经济性和易使用性等,可以有效提高无人机、地面遥感数据的应用范围和效率,不需要人工标注数据而取得较高的三维模型和结构化分析结果。并且使用规整化掩膜对生成的结构模型进行位置和尺寸的调整,本申请的三维建模结果更加规则、更加美观,结构元素清晰,可直接自动生成三维建筑的屋顶矢量模型,解放了传统人工标注的劳动力,使三维模型的生产更简单快捷,提高了屋顶建模的准确性和效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
首先,对本申请可适用的应用场景进行介绍。本申请可应用于计算机建筑建模技术领域。
屋顶建模是建筑建模中不可或缺的重要组成部分,稳定高效准确的屋顶建模方法有利于提高建筑建模系统的性能和稳定性。
经研究发现,在现有技术中,往往通过数字高程图和正射影像,利用图像和高程的特征,提取屋顶的点、线、面等信息,然后组成相关的屋顶三维模型。或者利用神经网络,通过大量数据学习,直接提取屋顶的点、线、面及其拓扑关系,然后利用DSM数据或者生成神经网络,对屋顶三维模型进行重建。
但上述两种屋顶建模方法均存在缺点:提取点、线、面这些基础特征的方法,容易受到干扰,当有一个特征提取不准确的时候,就会严重影响其生成的模型。神经网络提取点、线、面基础特征也面临错误提取而严重影响模型生成的问题。而生成性神经网络需要大量的数据学习,应用的区域有限。因此,如何提高屋顶建模的准确性和效率成为了不容小觑的技术问题。
基于此,本申请实施例提供了一种建筑物屋顶的建模方法,使三维模型的生产更简单快捷,提高了屋顶建模的准确性和效率。
请参阅图1,图1为本申请实施例所提供的一种建筑物屋顶的建模方法的流程图。如图1中所示,本申请实施例提供的建模方法,包括:
S101,将获取到的原始遥感影像输入到预先训练好的U-Net网络模型中,对所述原始遥感影像中的建筑掩膜进行检测,得到建筑物掩膜分割图。
需要说明的是,本申请中所述的原始遥感影像指的是记录各种地物电磁波大小的胶片或者照片,主要指卫星采集的卫星相片。建筑物掩膜分割图则是对原始遥感影像进行建筑边缘检测后得到的图像,该图像中包括每个建筑物的掩膜图像。
针对上述步骤S101,在具体实施时,使用移动电子设备进行拍摄,获取移动电子设备采集到的原始遥感影像,然后将原始遥感影像输入到预先训练好的U-Net网络模型中,对原始遥感影像中的建筑掩膜进行检测,以对原始遥感影像中的建筑物进行分割,得到建筑物掩膜分割图,建筑物掩膜分割图中即包括每个建筑物的掩膜图像,相当于得到了每个建筑物在建筑物掩膜分割图中的边界。
S102,将所述建筑物掩膜分割图输入到预先训练好的屋顶结构识别模型中,确定出所述建筑物掩膜分割图中每个建筑物所包含的至少一个屋顶结构对应的结构类型,以及每个屋顶结构对应的屋顶边界框。
需要说明的是,屋顶结构识别模型指的是预先训练好的,用来检测建筑物掩膜分割图中存在的屋顶结构的结构类型以及屋顶边界框的模型。这里,屋顶结构识别模型可以选用YOLO模型,YOLO模型是一种基于深度神经网络的对象识别和定位算法,用于检测屋顶结构对应的类型以及图像中的屋顶边界框。请参考图2,图2为本申请实施例所提供的一种不同结构类型下的屋顶俯视图。如图2所示,本申请将屋顶结构拆分为五个主要的组成结构,包括平顶、山墙顶、尖顶、金字塔型屋顶和折线型屋顶。
针对上述步骤S102,在具体实施时,将建筑物掩膜分割图输入到预先训练好的屋顶结构识别模型中,由于建筑物可以由多个屋顶结构组成,因此屋顶结构识别模型可以从建筑物掩膜分割图中确定出建筑物掩膜分割图中存在的每个建筑物所包含的至少一个屋顶结构对应的结构类型,以及每个屋顶结构对应的屋顶边界框。
具体的,针对上述步骤S102,通过以下步骤对所述屋顶结构识别模型进行训练:
I:获取多张样本图像。
II:针对多张所述样本图像中每一张带有屋顶样本区域的样本图像,确定所述屋顶样本区域在该样本图像中的第一位置区域和屋顶样本类型。
需要说明的是,样本图像指的是模型训练集中用于训练预测模型的每一个训练样本。样本图像既可以是带有屋顶结构的遥感影像,也可以是不带有屋顶结构的遥感影像。作为一种可选的实施方式,样本图像可以是通过摄像头拍摄到的图像,也可以是用户上传的图像,对此本申请不做具体限制。屋顶样本区域指的是样本图像中真实存在屋顶结构的区域。第一位置区域用来表征屋顶样本区域在样本图像中的位置。屋顶样本类型用来表征样本图像中存在的屋顶结构的类型。例如,当样本图像是带有屋顶结构的图像时,这里的屋顶样本区域就是样本图像中屋顶结构的区域,这里的第一位置区域就是该屋顶样本区域在该样本图像中的位置,屋顶样本类型则是该样本图像中存在的屋顶的类型。
针对上述步骤I-步骤II,在具体实施时,获取多张用于训练预测模型的样本图像。然后,针对多张样本图像中每一张带有屋顶样本区域的样本图像,确定屋顶样本区域在该样本图像中的第一位置区域和屋顶样本类型。
III:针对每一张样本图像,将该样本图像输入到屋顶结构识别初始模型中,得到屋顶预测区域的第二位置区域和屋顶预测类型。
需要说明的是,屋顶结构识别初始模型指的是用于检测样本图像中的屋顶结构区域和结构类型的初始模型。屋顶预测区域指的是屋顶结构识别初始模型针对样本图像检测出的屋顶结构区域。屋顶预测类型则是屋顶结构识别初始模型针对样本图像检测出的屋顶结构的类型。由于样本图像可能是带有屋顶结构的图像,也可以是不带有屋顶结构的图像,因此屋顶结构识别初始模型识别出的屋顶预测区域的第二位置区域和屋顶预测类型可能不存在。
针对上述步骤III,在具体实施时,针对每一张样本图像,将该样本图像输入到屋顶结构识别初始模型中,利用屋顶结构识别初始模型中的卷积神经网络,来预测该样本图像中屋顶预测区域的第二位置区域和屋顶预测类型。
IV:基于所述屋顶样本区域在该样本图像中的第一位置区域和所述屋顶样本类型,以及所述屋顶预测区域的第二位置区域和所述屋顶预测类型,对所述屋顶结构识别初始模型进行训练,得到所述屋顶结构识别模型。
针对上述步骤IV,在确定出屋顶样本区域的第一位置区域和屋顶样本类型,以及屋顶预测区域的第二位置区域和屋顶预测类型后,利用上述四个参数对屋顶结构识别初始模型进行训练,以得到屋顶结构识别模型。
具体的,针对上述步骤IV,在具体实施时,所述基于所述屋顶样本区域在该样本图像中的第一位置区域和所述屋顶样本类型,以及所述屋顶预测区域的第二位置区域和所述屋顶预测类型,对所述屋顶结构识别初始模型进行训练,得到所述屋顶结构识别模型,包括:
i:若所述屋顶预测区域对应的样本图像为未带有屋顶样本区域的图像,则调整所述屋顶结构识别初始模型的训练参数,直至所述屋顶结构识别初始模型输出的屋顶预测区域为空。
针对上述步骤i,样本图像中包含带有屋顶样本区域的图像,也包含未带有屋顶样本区域的图像。当屋顶结构识别初始模型针对未带有屋顶样本区域的图像进行识别时,得到了一个屋顶预测区域,这时认为该屋顶结构识别初始模型的识别是错误的,则需要对屋顶结构识别初始模型的训练参数进行调整。屋顶结构识别初始模型会通过迭代的方式不断去调整屋顶结构识别初始模型的训练参数,在迭代的每一步,都会重新输出一个屋顶结构识别初始模型预测的屋顶预测区域,当屋顶预测区域不为空时,不断屋顶结构识别初始模型的训练参数,新的参数会输出得到新的屋顶预测区域,直至训练的屋顶结构识别初始模型输出的屋顶预测区域为空,这时则认为屋顶结构识别初始模型的识别是准确的。
ii:若所述屋顶预测区域对应的样本图像为带有屋顶样本区域的图像,则将所述屋顶样本区域在该样本图像中的第一位置区域与所述屋顶预测区域的第二位置区域进行对比,将所述屋顶样本类型与所述屋顶预测类型进行对比,计算当前状态下所述屋顶结构识别初始模型的损失函数。
iii:基于所述屋顶结构识别初始模型的损失函数,不断调整所述屋顶结构识别初始模型的训练参数,直至所述屋顶结构识别初始模型达到收敛状态,得到所述屋顶结构识别模型。
需要说明的是,损失函数(loss function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数值。在应用中,损失值通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。
针对上述步骤ii-步骤iii,在具体实施时,当屋顶结构识别初始模型针对带有屋顶样本区域的样本图像进行识别时,针对于每个带有屋顶样本区域的样本图像,将屋顶样本区域在该样本图像中的第一位置区域与屋顶预测区域的第二位置区域进行对比,将屋顶样本类型与屋顶预测类型进行对比,来判断当屋顶结构识别初始模型的检测是否准确,当该样本图像的第一位置区域与第二位置区域不相同,且/或屋顶样本类型与屋顶预测类型不相同时,则认为屋顶结构识别初始模型的检测不准确。这时需要计算当前状态下屋顶结构识别初始模型的损失函数。计算损失函数的方式在现有技术中有详细的说明,在此不再过多说明。然后不断调整屋顶结构识别初始模型的训练参数,屋顶结构识别初始模型会通过迭代的方式不断对损失最小化,在迭代的每一步,都会计算出屋顶结构识别初始模型的损失值,屋顶结构识别初始模型的损失值不能达到损失阈值时,不断更新屋顶结构识别初始模型的模型参数,新的参数会计算得到新的损失值,从而使得迭代过程中损失值呈现波动下降的趋势。最后当损失值到达平滑的时候,即训练的屋顶结构识别初始模型的损失值不大于损失阈值时,也就是损失值与上一次计算的损失值相比下降不明显时,认为屋顶结构识别初始模型达到收敛状态,此时的屋顶结构识别初始模型的检测比较准确,这时结束训练,得到屋顶结构识别模型。
S103,针对于每个建筑物所包含的每个屋顶结构,利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型。
需要说明的是,数字地表模型(Digital Surface Model,DSM)是指包含了地表建筑物、桥梁和树木等高度的地面高程模型,一般用一系列地面点坐标(x,y,z)及地表属性(目标类别、特征等)绗成数据阵列,以此组成数字地面模型。模型数据则是数字地表模型中,在屋顶边界框对应的范围内的点云数据。初始结构模型则是基于模型数据生成的初始三维屋顶模型。
针对上述步骤S103,在具体实施时,针对于每个建筑物所包含的每个屋顶结构,利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型。
具体的,针对上述步骤S103,所述利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型,包括:
步骤1031,基于所述屋顶边界框在所述建筑物掩膜分割图中的区域范围从所述数字地表模型中获取该屋顶结构对应的模型数据。
针对上述步骤1031,在具体实施时,首先确定屋顶边界框在建筑物掩膜分割图中的区域范围。这里的区域范围可以是该屋顶结构在真实环境中所处的坐标范围。然后基于屋顶边界框在建筑物掩膜分割图中的区域范围从数字地表模型中获取该屋顶结构对应的模型数据。
步骤1032,基于所述模型数据确定该屋顶结构中存在的多条直线,并从所述多条直线中确定出该屋顶结构的屋脊线。
针对上述步骤1032,在具体实施时,获取到该屋顶结构对应的模型数据后,由于模型数据中存在多个点云数据,因此基于模型数据中的点云数据即可确定出该屋顶结构中可能存在的多条直线,并从多条直线中筛选出该屋顶结构的屋脊线。具体的,在该屋顶结构对应的模型数据上,先执行top-hat操作,top-hat操作可以提供明显的屋脊线或单点,提取该屋顶结构中提取屋脊可能存在的部分。然后,利用霍夫空间变化法,检测屋脊可能形成的直线,即可得到该屋顶结构中存在的多条直线。具体的,利用霍夫空间变化法检测该屋顶结构中存在的多条直线。这里,可以将屋脊存在的部分中的点云数据映射到霍夫直线参数空间,通过变化,空间中的每个点(x,y)就被映射为一个(r,θ)极坐标空间中的正弦曲线。根据投影累加的最大参数空间点,可以确定出屋顶结构中大概率存在直线的地方。得到多条直线后,再从多条直线中确定出该屋顶结构的屋脊线。
具体的,针对上述步骤1032,当该屋顶结构对应的结构类型为尖顶或山墙顶时,通过以下步骤从所述多条直线中确定出该屋顶结构的屋脊线:
A:从所述多条直线中确定出长度最长的目标直线。
针对于上述步骤A,在具体实施时,首先确定出多条直线中每条直线的长度,然后基于每条直线的长度,从多条直线中确定出长度最长的直线,作为目标直线。
B:从所述模型数据中确定出与所述目标直线相邻的第一参考直线和第二参考直线。
C:判断所述第一参考直线的数据高度和所述第二参考直线的数据高度是否均小于所述目标直线的数据高度,且所述第一参考直线与所述第二参考直线是否基于所述目标直线对称。
D:若是,则将所述目标直线确定为该屋顶结构的屋脊线。
E:若否,则将所述目标直线从所述多条直线中删除,返回执行所述从所述多条直线中确定出长度最长的目标直线的步骤。
作为示例,如图2所示,当屋顶结构对应的结构类型为尖顶或山墙顶时,该屋顶结构的屋脊线的高度大于该屋顶结构中的任何一条除屋脊线外的其他直线的高度。因此,针对上述步骤B-步骤E,在具体实施时,从模型数据中确定出于目标直线相邻的第一参考直线和第二参考直线。这里,第一参考直线和第二参考直线分别位于目标直线的两侧。然后判断第一参考直线的数据高度和第二参考直线的数据高度是否均小于目标直线的数据高度,且第一参考直线与第二参考直线是否基于目标直线对称。上述两个条件均满足,则说明目标直线是该屋顶结构的屋脊线,执行上述步骤D,将目标直线确定为该屋顶结构的屋脊线。若不满足,则将目标直线从多条直线中删除,并返回执行上述步骤A中的所述从所述多条直线中确定出长度最长的目标直线的步骤,按照直线长短的顺序继续测试下面一条检测到的直线。
具体的,针对上述步骤1032,当该屋顶结构对应的结构类型为折线型屋顶或金字塔型屋顶时,通过以下步骤从所述多条直线中确定出该屋顶结构的屋脊线:
a:从所述多条直线中确定出长度最长的目标直线。
b:针对于所述目标直线中的每个点,从所述模型数据中确定出与该点的数据高度相同的多个参考点,并基于该点和所述多个参考点生成参考矩形。
c:确定出每个参考矩形的中心点,并判断位于预设范围内的所述中心点的数量大于或等于数量阈值。
d:若是,则将所述目标直线确定为该屋顶结构的屋脊线。
e:若否,则将所述目标直线从所述多条直线中删除,返回执行所述从所述多条直线中确定出长度最长的目标直线的步骤。
作为示例,如图2所述,当屋顶结构对应的结构类型为折线型屋顶或金字塔型屋顶时,该屋顶结构的屋脊线为倾斜的四条直线。针对上述步骤a-步骤e,在具体实施时,首先确定出多条直线中每条直线的长度,然后基于每条直线的长度,从多条直线中确定出长度最长的直线,作为目标直线。然后,针对于目标直线中的每个点,从模型数据中确定出与该点的数据高度相同的多个参考点,并基于该点和多个参考点生成参考矩形。如果该目标直线是屋脊线,则针对于目标直线上的任意一个点,和与该点的数据高度相同的多个参考点会形成一个矩形,并且每个矩形的中心在同一个位置。形成多个参考矩形后,确定出每个参考矩形的中心点,并确定位于预设范围内的中心点的数量。这里的预设范围可以是3*3的范围,对此本申请不做具体限定。若判断位于预设范围内的中心点的数量大于或等于数量阈值,则说明目标直线是该屋顶结构的屋脊线,则执行上述步骤d,将所述目标直线确定为该屋顶结构的屋脊线。若否,则执行上述步骤e,将所述目标直线从所述多条直线中删除,并返回执行上述步骤a中的所述从所述多条直线中确定出长度最长的目标直线的步骤,按照直线长短的顺序继续测试下面一条检测到的直线。
具体的,当该屋顶结构对应的结构类型为平顶时,由于该屋顶为平面,因此在确定该屋顶结构的屋脊线时,基于模型数据确定该屋顶结构中存在的多条直线,其中多条直线中最长的直线即为该屋顶结构的屋脊线。
步骤1033,基于该屋顶结构对应的结构类型以及所述屋脊线,从所述模型数据中确定出组成该屋顶结构的点云数据,并对所述点云数据进行三维平面拟合,以得到组成该屋顶结构的拟合平面。
步骤1034,基于该屋顶结构的拟合平面生成该屋顶结构对应的初始结构模型。
针对上述步骤1033-步骤1034,在具体实施时,该屋顶结构的屋脊线确定出后,基于该屋顶结构对应的结构类型以及屋脊线,从模型数据中确定出组成该屋顶结构的点云数据。这里,根据该屋顶结构对应的结构类型即可确定出该屋顶结构的形状,然后根据屋脊线在模型数据中的位置以及该屋顶结构的形状即可从模型数据中确定出组成该屋顶结构的点云数据。然后,再对点云数据进行三维平面拟合,以得到组成该屋顶结构的拟合平面。然后,基于该屋顶结构的拟合平面即可生成该屋顶结构对应的初始结构模型。
作为一种可选的实施方式,在步骤1034基于该屋顶结构的拟合平面生成该屋顶结构对应的初始结构模型之后,本申请所提供的建模方法还包括:
(1)利用所述拟合平面,计算出所述初始结构模型对应的初始结构参数。
针对上述步骤(1),在具体实施时,利用构建好的拟合平面,计算出初始结构模型对应的初始结构参数。具体的,初始结构模型的初始结构数据可使用如下公式表示:
其中,
表示初始结构模型的初始结构数据,P={/>
}表示位置和方向参数,C={width,height}表示大小参数,S={/>
} 表示形状参数。
请参阅图3,图3为本申请实施例所提供的一种参数含义示意图。作为示例,当屋顶结构对应的结构类型为折线型屋顶时,上述各个参数的具体含义如图3所示。下表1为本申请实施例所提供的不同结构类型下的参数对照表,根据屋顶结构对应的结构类型即可从下表1中确定出该屋顶类型对应的各个参数。
表1:不同结构类型下的参数对照表
(2)使用所述初始结构参数对所述屋脊线进行优化,得到优化屋脊线。
(3)基于该屋顶结构对应的结构类型以及所述优化屋脊线,生成该屋顶结构对应的优化结构模型,并计算所述优化结构模型对应的优化结构参数。
(4)若所述优化结构参数与所述初始结构参数之间的差距小于预设差距阈值,则将所述优化结构模型确定为该屋顶结构对应的初始结构模型。
针对上述步骤(2)-步骤(4),在具体实施时,计算出初始结构模型对应的初始结构参数后,使用初始结构参数对该屋顶结构的屋脊线进行优化,得到优化屋脊线。这里,初始结构模型的初始结构参数得到后,由于初始结构模型可能与真实的建筑结构存在差距,因此需要使用初始结构参数来进行优化。根据初始结构参数可以再确定出一个屋顶结构,这个屋顶结构中的屋脊线则为优化屋脊线。然后,基于该屋顶结构对应的结构类型以及得到的优化屋脊线,生成该屋顶结构对应的优化结构模型,并计算优化结构模型对应的优化结构参数。具体的,生成优化结构模型的方法与上述生成初始结构模型的方法相同,计算优化结构参数的方法与上述计算初始结构参数的方法相同,在此不再赘述。然后,计算优化结构参数与初始结构参数之间的差距,若优化结构参数与初始结构参数之间的差距小于预设差距阈值,例如,差距不超过5%,则将优化结构模型确定为该屋顶结构对应的初始结构模型。
S104,在所述建筑物掩膜分割图中对该建筑物的建筑掩膜进行规整化处理,以得到该建筑物对应的规整化掩膜。
针对上述步骤S104,在具体实施时,在建筑物掩膜分割图中对该建筑物的建筑掩膜进行规整化处理,以得到该建筑物对应的规整化掩膜。具体的,通过如下方式得到该建筑物对应的规整化掩膜:在建筑物掩膜分割图中对该建筑物的建筑掩膜,以得到组成该建筑掩膜对应的区域的至少一个矩形区域,然后,针对于建筑掩膜在每个矩形区域内的部分掩膜,分别对该部分掩膜进行横向群聚分割和纵向群聚分割,得到该矩形区域内的规整化掩膜,最后,将每个矩形区域内的规整化掩膜进行组合,即可得到该建筑物对应的规整化掩膜。这样,得到的规整化掩膜的边缘整齐,并且拐角垂直,更符合建筑的真实地面轮廓。
S105,基于该建筑物对应的规整化掩膜对至少一个屋顶结构对应的初始结构模型进行组合,得到该建筑物对应的屋顶三维模型,以使所述屋顶三维模型的边缘与该建筑物对应的规整化掩膜的边缘重叠。
针对上述步骤S105,在具体实施时,针对于每个屋顶结构,从该建筑物对应的规整化掩膜中确定出该屋顶结构对应的掩膜,然后以该屋顶结构对应的掩膜为准,基于该掩膜的位置和尺寸对该屋顶结构对应的初始结构模型的位置和大小进行调整,将初始结构模型的方向调整为与该掩膜的边缘平行或垂直,并且将初始结构模型的尺寸调整为与该掩膜的尺寸,得到该屋顶结构对应的三维模型。然后对至少一个屋顶结构对应的三维模型进行组合,以得到该建筑物对应的屋顶三维模型,以使屋顶三维模型的边缘与该建筑物对应的规整化掩膜的边缘重叠。这样,每个屋顶结构对应的屋顶三维模型均被规整化的矩形建筑掩膜边界所统一,大大提高了屋顶三维模型的美观性。
本申请实施例提供的建筑物屋顶的建模方法,首先,将获取到的原始遥感影像输入到预先训练好的U-Net网络模型中,对所述原始遥感影像中的建筑掩膜进行检测,得到建筑物掩膜分割图;然后,将所述建筑物掩膜分割图输入到预先训练好的屋顶结构识别模型中,确定出所述建筑物掩膜分割图中每个建筑物所包含的至少一个屋顶结构对应的结构类型,以及每个屋顶结构对应的屋顶边界框;针对于每个建筑物所包含的每个屋顶结构,利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型;在所述建筑物掩膜分割图中对该建筑物的建筑掩膜进行规整化处理,以得到该建筑物对应的规整化掩膜; 最后,基于该建筑物对应的规整化掩膜对至少一个屋顶结构对应的初始结构模型进行组合,得到该建筑物对应的屋顶三维模型,以使所述屋顶三维模型的边缘与该建筑物对应的规整化掩膜的边缘重叠。
与现有技术中的屋顶建模方法相比,本申请利用神经网络来检测屋顶的结构,而不是点、线、面这些基础特征,可以有效的防止干扰,以提取主要结构为主,避免的杂乱的其他物体的影响,及其他方式检测的屋顶掩膜的不完善的问题。同时,基于屋顶结构的不同类型来生成三维结构模型,可以构建各种各样的真实屋顶,解决模型库死板不灵活的问题。
本申请提供的屋顶三维自动建模的方法具有先进性、开放性、可靠性、经济性和易使用性等,可以有效提高无人机、地面遥感数据的应用范围和效率,不需要人工标注数据而取得较高的三维模型和结构化分析结果。并且使用规整化掩膜对生成的结构模型进行位置和尺寸的调整,本申请的三维建模结果更加规则、更加美观,结构元素清晰,可直接自动生成三维建筑的屋顶矢量模型,解放了传统人工标注的劳动力,使三维模型的生产更简单快捷,提高了屋顶建模的准确性和效率。
请参阅图4,图4为本申请实施例所提供的一种建筑物屋顶的建模装置的结构示意图。如图4中所示,所述建模装置400包括:
掩膜分割图确定模块401,用于将获取到的原始遥感影像输入到预先训练好的U-Net网络模型中,对所述原始遥感影像中的建筑掩膜进行检测,得到建筑物掩膜分割图;
屋顶结构检测模块402,用于将所述建筑物掩膜分割图输入到预先训练好的屋顶结构识别模型中,确定出所述建筑物掩膜分割图中每个建筑物所包含的至少一个屋顶结构对应的结构类型,以及每个屋顶结构对应的屋顶边界框;
初始结构模型生成模块403,用于针对于每个建筑物所包含的每个屋顶结构,利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型;
规整化掩膜生成模块404,用于在所述建筑物掩膜分割图中对该建筑物的建筑掩膜进行规整化处理,以得到该建筑物对应的规整化掩膜;
屋顶三维模型确定模块405,用于基于该建筑物对应的规整化掩膜对至少一个屋顶结构对应的初始结构模型进行组合,得到该建筑物对应的屋顶三维模型,以使所述屋顶三维模型的边缘与该建筑物对应的规整化掩膜的边缘重叠。
进一步的,所述初始结构模型生成模块403在用于利用该屋顶结构对应的屋顶边界框从数字地表模型中确定出该屋顶结构对应的模型数据,并基于该屋顶结构对应的结构类型以及所述模型数据,生成该屋顶结构对应的初始结构模型时,所述初始结构模型生成模块403还用于:
基于所述屋顶边界框在所述建筑物掩膜分割图中的区域范围从所述数字地表模型中获取该屋顶结构对应的模型数据;
基于所述模型数据确定该屋顶结构中存在的多条直线,并从所述多条直线中确定出该屋顶结构的屋脊线;
基于该屋顶结构对应的结构类型以及所述屋脊线,从所述模型数据中确定出组成该屋顶结构的点云数据,并对所述点云数据进行三维平面拟合,以得到组成该屋顶结构的拟合平面;
基于该屋顶结构的拟合平面生成该屋顶结构对应的初始结构模型。
进一步的,当该屋顶结构对应的结构类型为尖顶或山墙顶时,所述初始结构模型生成模块403通过以下步骤从所述多条直线中确定出该屋顶结构的屋脊线:
从所述多条直线中确定出长度最长的目标直线;
从所述模型数据中确定出与所述目标直线相邻的第一参考直线和第二参考直线;
判断所述第一参考直线的数据高度和所述第二参考直线的数据高度是否均小于所述目标直线的数据高度,且所述第一参考直线与所述第二参考直线是否基于所述目标直线对称;
若是,则将所述目标直线确定为该屋顶结构的屋脊线;
若否,则将所述目标直线从所述多条直线中删除,返回执行所述从所述多条直线中确定出长度最长的目标直线的步骤。
进一步的,当该屋顶结构对应的结构类型为折线型屋顶或金字塔型屋顶时,所述初始结构模型生成模块403通过以下步骤从所述多条直线中确定出该屋顶结构的屋脊线:
从所述多条直线中确定出长度最长的目标直线;
针对于所述目标直线中的每个点,从所述模型数据中确定出与该点的数据高度相同的多个参考点,并基于该点和所述多个参考点生成参考矩形;
确定出每个参考矩形的中心点,并判断位于预设范围内的所述中心点的数量大于或等于数量阈值;
若是,则将所述目标直线确定为该屋顶结构的屋脊线;
若否,则将所述目标直线从所述多条直线中删除,返回执行所述从所述多条直线中确定出长度最长的目标直线的步骤。
进一步的,所述建模装置400还包括修正模块,在所述基于该屋顶结构的拟合平面生成该屋顶结构对应的初始结构模型之后,所述修正模块用于:
利用所述拟合平面,计算出所述初始结构模型对应的初始结构参数;
使用所述初始结构参数对所述屋脊线进行优化,得到优化屋脊线;
基于该屋顶结构对应的结构类型以及所述优化屋脊线,生成该屋顶结构对应的优化结构模型,并计算所述优化结构模型对应的优化结构参数;
若所述优化结构参数与所述初始结构参数之间的差距小于预设差距阈值,则将所述优化结构模型确定为该屋顶结构对应的初始结构模型。
进一步的,所述建模装置400还包括模型训练模块,所述模型训练模块通过以下步骤对所述屋顶结构识别模型进行训练:
获取多张样本图像;
针对多张所述样本图像中每一张带有屋顶样本区域的样本图像,确定所述屋顶样本区域在该样本图像中的第一位置区域和屋顶样本类型;
针对每一张样本图像,将该样本图像输入到屋顶结构识别初始模型中,得到屋顶预测区域的第二位置区域和屋顶预测类型;
基于所述屋顶样本区域在该样本图像中的第一位置区域和所述屋顶样本类型,以及所述屋顶预测区域的第二位置区域和所述屋顶预测类型,对所述屋顶结构识别初始模型进行训练,得到所述屋顶结构识别模型。
进一步的,所述模型训练模块在用于基于所述屋顶样本区域在该样本图像中的第一位置区域和所述屋顶样本类型,以及所述屋顶预测区域的第二位置区域和所述屋顶预测类型,对所述屋顶结构识别初始模型进行训练,得到所述屋顶结构识别模型时,所述模型训练模块还用于:
若所述屋顶预测区域对应的样本图像为未带有屋顶样本区域的图像,则调整所述屋顶结构识别初始模型的训练参数,直至所述屋顶结构识别初始模型输出的屋顶预测区域为空;
若所述屋顶预测区域对应的样本图像为带有屋顶样本区域的图像,则将所述屋顶样本区域在该样本图像中的第一位置区域与所述屋顶预测区域的第二位置区域进行对比,将所述屋顶样本类型与所述屋顶预测类型进行对比,计算当前状态下所述屋顶结构识别初始模型的损失函数;
基于所述屋顶结构识别初始模型的损失函数,不断调整所述屋顶结构识别初始模型的训练参数,直至所述屋顶结构识别初始模型达到收敛状态,得到所述屋顶结构识别模型。
请参阅图5,图5为本申请实施例所提供的一种电子设备的结构示意图。如图5中所示,所述电子设备500包括处理器510、存储器520和总线530。
所述存储器520存储有所述处理器510可执行的机器可读指令,当电子设备500运行时,所述处理器510与所述存储器520之间通过总线530通信,所述机器可读指令被所述处理器510执行时,可以执行如上述图1所示方法实施例中的建筑物屋顶的建模方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1所示方法实施例中的建筑物屋顶的建模方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。