发明内容
本发明提供了一种基于交互式纹元检索的建筑立面纹理快速生成方法,解决人为修复自动三维重建模型贴图效率低、时间长的问题,其技术方案如下所述:
一种基于交互式纹元检索的建筑立面纹理快速生成方法,包括以下步骤:
S1:构建包含纹理单元的纹理数据库;
S2:通过多目重建,提取自动重建的建筑三维模型立面贴图;
S3:人工圈出立面贴图中畸变、扭曲、模糊的区域;
S4:通过自动检索网络,将该区域作为检索网络的输入在原图中进行检索,自动检索出与步骤S3圈出的区域最相似的原图部分,用原图的非畸变、扭曲的图片内容进行替换;
S5:人工圈出原图中最小重复纹理单元,在纹理数据库中查找进行替换的纹理单元;
S6:对替换后的纹理单元图片进行后处理,将其贴回到建筑的三维模型上,得到完整的带纹理的重构建筑。
进一步的,步骤S1中,纹理数据库中存储有各种模板的纹理单元数据,每个纹理单元数据都对应有编号,将不同类别的纹理单元数据进行分类处理,在每一类中又对相近设计的纹理单元数据进行分组管理。
进一步的,步骤S2中,所述多目重建包括以下步骤:
S21:获取多目相机在建筑的同一高度的不同位置,通过多目相机的每个摄像头拍摄的第一组图片;
S22:通过卷积网络对所有摄像头拍摄的第一组图片同时提取锚点,通过多个锚点的确定,使得建筑在水平方向环绕一圈锚点;且同一高度拍摄的图片,在同一图片上至少有上下左右四个锚点;
S23:获取多目相机在建筑的另一高度的不同位置,每个摄像头拍摄的第二组图片;
S24:对所有摄像头拍摄的第二组图片同时提取锚点,通过神经网络对第二组图片的锚点与第一组图片的锚点进行对应,从而实现垂直方向的锚点匹配对应,使得建筑三维模型在高度上进行延伸;
S25:重复步骤S23和步骤S24,直至建筑三维模型的锚点完全实现;
S26:通过所有锚点,结合所有图片,对锚点间的图片内容进行填充,实现建筑三维模型的立面贴图。
进一步的,步骤S26中,对锚点间的图片内容进行填充时,对每一张图片进行亮度调整,包括以下调整步骤:
S261:对第一组图片的每张图片,获取第一组图片的平均亮度值,并计算每张图片的平均亮度值,用和第一组图片的平均亮度值最接近的图片作为样本图片;
S262:结合样本图片,采用能够使图像亮度分布和纹理分布一致的滤波方法对其他每一张图片的亮度进行滤波,得到其他每一张图片内每个像素点滤波后的亮度值;
S263:对其他每一张图片内每个像素点滤波后的亮度值与原始亮度值进行加权融合,得到修复后的图片;
S264:对后面各组的图片依次进行步骤S262、S263处理。
进一步的,步骤S262中,所述滤波方法的过程包括以下步骤:
S265:根据第一组图片的平均亮度值,查找和其平均亮度值最接近的图片,作为样本图片,从样本图片中,判断亮度值均匀的区域,作为样本区域,并计算所述样本区域的目标均值和目标方差;
S266:对于该图片样本区域之外的其他区域,遍历所有像素点,计算每个像素点的邻域均值和邻域方差;根据所述样本区域的目标均值和目标方差,以及其他区域每个像素点的原始亮度值、邻域均值和邻域方差,计算所述其他区域内每个像素点滤波后的亮度值;其中,采用如下公式计算图片每个像素点滤波后的亮度值:
其中,Iw (i,j) 表示滤波后的亮度值,Md和Sd分别表示目标均值和目标方差,I(i,j) 表示在 (i,j) 处像素点的原始亮度值,M(i,j)和 S(i,j)分别表示 (i,j) 处像素点的邻域均值和邻域方差;
S267:遍历下一张图片内的所有像素点,计算每个像素点的邻域均值和邻域方差;根据所述样本区域的目标均值和目标方差,以及下一张图片内每个像素点的原始亮度值、邻域均值和邻域方差,计算所述下一张图片内每个像素点滤波后的亮度值;
S268:重复步骤S267对每一张图片进行处理,从而完成图片的处理。
进一步的,步骤S3中,包括以下步骤:
S31:提取该区域的锚点信息;
S32:根据锚点信息迅速调取包含至少五个锚点的图片;
S33:对于调取出的每一张图片,根据自动检索网络进行处理。
进一步的,步骤S1中,本发明设置有自动检索网络,并通过训练数据集对自动检索网络进行训练,所述训练数据集中包含若干样本,每个样本是一个图片对,所述图片对有两种,第一种图片对为原始贴图中需要替换的区域,和原始纹理贴图的对应区域;第二种图片对为原始纹理贴图最小重复纹理单元,和纹理数据库中对应的纹理单元数据。
进一步的,对第一种图片对进行训练的过程如下:
S131:依次输入原始图片和替换图片至卷积神经网络,分别得到原始图片的第一特征向量和替换图片的第二特征向量;
S132:将第一特征向量和第二特征向量分别送入自动检索网络进行检索处理,所述检索处理是使用卷积结构提取整体图像特征和边界特征,对提取的整体图像特征和边界特征进行归一化,而后将二者特征值相结合,进而得到检索结果;
S133:将获得的第一特征向量的检索结果,与第二特征向量的检索结果相对比,计算二者的交叉熵损失,调整自动检索网络的提取参数,使计算的交叉熵损失小于设定的阈值,从而完成自动检索网络的学习。
进一步的,对第二种图片对进行训练的过程如下:
S134:提取图片对中,最小重复纹理单元的像素点和纹理单元数据的像素点,并计算每个像素点的单点相似度,以所述单点相似度作为第一损失函数;
S135:提取所述最小重复纹理单元和纹理单元数据的整体相似度,并以所述整体相似度的最大值作为第二损失函数;
S136:对所述第一损失函数和所述第二损失函数进行加权求和,以得到联合损失函数。
S137:通过最小化模型误差,通过训练得到自动检索网络。
进一步的,步骤S5中,如果该区域的纹理特征包括两种以上的纹理,则需要对每种纹理都进行标注,自动检索网络会将每种纹理各自对应的纹理单元进行替换处理,从而实现在原图中多种纹理单元的排列组成。
所述基于交互式纹元检索的建筑立面纹理快速生成方法,相比于原始的人工修复纹理的方法,通过交互式检索的方法,只需要更简单和更少的人力成本和更短的时间进行纹理修复,方式更加自动化。
具体实施方式
如图1所示,所述基于交互式纹元检索的建筑立面纹理快速生成方法,通过神经网络自动检索立面贴图和原图对应的区域,使用原图相应区域替换立面贴图的圈出区域,并通过设置纹理数据库,在纹理数据库中存储大量的纹理单元数据,对于原图相应区域的最小重复纹理单元,实现重复纹理的替换,具体的操作步骤如下所述:
S1:构建包含纹理单元的纹理数据库;
纹理数据库准备:为了快速修复建筑纹理贴图中的畸变、扭曲、模糊等问题,预先准备一个人工精选或美术搭建的纹理数据库,在纹理数据库中存储有各种模板的纹理单元数据,每个纹理单元数据都对应有编号,对于纹理单元数据,可以进行编号处理,并进行分类分组管理,将不同类别的纹理单元数据进行分类处理,在每一类中又对相近设计的纹理单元数据进行分组管理。
S2:提取自动重建的三维模型立面贴图;
通过多目重建,实现建筑三维模型的立面贴图。所述多目重建包括以下步骤:
S21:获取多目相机在建筑的同一高度的不同位置,每个摄像头拍摄的第一组图片;
S22:通过卷积网络对所有摄像头拍摄的第一组图片同时提取锚点,并对每个锚点做畸变矫正,所述锚点是在不同图片中出现的定位点或者特征点的表述。锚点设置有多个,一个锚点通常会出现在多个图片中,但不会出现在所有图片中,通过多个锚点的确定,使得建筑在水平方向环绕一圈锚点;且同一高度拍摄的图片,在同一图片上至少有上下左右四个锚点。其中,锚点通过神经网络自动确定,并在此基础上,进行人工标定实现。
S23:获取多目相机在建筑的另一高度的不同位置,每个摄像头拍摄的第二组图片;
S24:对所有摄像头拍摄的第二组图片同时提取锚点,并对每个锚点做畸变矫正,通过神经网络对第二组图片的锚点与第一组图片的锚点进行对应,从而实现垂直方向的锚点匹配对应,使得建筑三维模型在高度上进行延伸。
S25:重复步骤S23和步骤S24,直至建筑三维模型的锚点完全实现;
S26:通过所有锚点,结合所有图片,对锚点间的图片内容进行填充,实现建筑三维模型的立面贴图。
其中,步骤S26中,选取锚点间的图片内容时,优先使用包括有上下左右锚点的图片内容。
此外,对于图片内容的填充,还需要进行图片亮度调整:
S261:对第一组图片的每张图片,获取第一组图片的平均亮度值,并计算每张图片的平均亮度值,用和第一组图片的平均亮度值最接近的图片作为样本图片;
S262:结合样本图片,采用能够使图像亮度分布和纹理分布一致的滤波方法对其他每一张图片的亮度进行滤波,得到其他每一张图片内每个像素点滤波后的亮度值;
S263:对其他每一张图片内每个像素点滤波后的亮度值与原始亮度值进行加权融合,得到修复后的图片;
S264:对后面各组的图片依次进行步骤S262、S263处理。
其中,所述滤波方法的过程包括以下步骤:
S265:根据第一组图片的平均亮度值,查找和其平均亮度值最接近的图片,作为样本图片,从样本图片中,判断亮度值均匀的区域,作为样本区域,并计算所述样本区域的目标均值和目标方差;
S266:对于该图片样本区域之外的其他区域,遍历所有像素点,计算每个像素点的邻域均值和邻域方差;根据所述样本区域的目标均值和目标方差,以及其他区域每个像素点的原始亮度值、邻域均值和邻域方差,计算所述其他区域内每个像素点滤波后的亮度值;
S267:遍历下一张图片内的所有像素点,计算每个像素点的邻域均值和邻域方差;根据所述样本区域的目标均值和目标方差,以及下一张图片内每个像素点的原始亮度值、邻域均值和邻域方差,计算所述下一张图片内每个像素点滤波后的亮度值。
S268:重复步骤S267对每一张图片进行处理,从而完成图片的处理。
其中,采用如下公式计算图片每个像素点滤波后的亮度值:
其中,Iw (i,j) 表示滤波后的亮度值,Md和Sd分别表示目标均值和目标方差,I(i,j) 表示在 (i,j) 处像素点的原始亮度值,M(i,j)和 S(i,j)分别表示 (i,j) 处像素点的邻域均值和邻域方差。
S3:人工圈出立面贴图中畸变、扭曲、模糊的区域;
在完成建筑三维模型立面贴图后,因为摄像头拍摄角度以及图片填充不当,会存在畸变、扭曲、模糊的区域,需要对这些区域进行修复。当前的修复是人为检索相关建筑的真实照片,然后通过提取照片建筑部分贴图、吸色等方式赋予建筑模型新的贴图纹理。
对该区域的处理包括以下步骤:
S31:提取该区域的锚点信息;
S32:根据锚点信息迅速调取包含至少五个锚点的图片;
S33:对于调取出的每一张图片,根据自动检索网络进行处理。
在本发明中,需要用到自动检索网络进行处理,其中自动检索网络的训练工作可以在步骤S1的纹理数据库建立后开始,所述自动检索网络的训练包括以下步骤:
S11:算法工具库准备:
为了快速自动地从原贴图中匹配到交互式提取的扭曲、畸变、模糊的区域,以及从纹理数据库中匹配到最相似的最小重复纹理单元,本发明需要用到神经网络,作为自动检索网络。
S12:训练数据集准备:
为了检索网络的匹配结果更加精准,需要构造用于建筑贴图检索的训练数据集。
训练数据集中包含十万个样本,每个样本是一个图片对。这里,每一张图片的大小都是1024*1024。图片对包含有两种。
第一种:原始贴图中需要替换的区域,和原始纹理贴图的对应区域。原始贴图中需要替换的区域通过人为交互的方式获取,往往存在畸变、扭曲、模糊等问题,影响美观且存在一定错误信息。原始纹理贴图的对应区域是与需要替换的区域对应的区域,且纹理信息完好不存在缺失信息或信息错误的贴图。原始贴图是指多目重建的立面贴图,原始纹理贴图是对应区域的建筑图片。
第二种:原始纹理贴图最小重复纹理单元,和纹理数据库中对应的纹理单元数据。原始纹理贴图最小重复单元通过人为交互的方式获取,代表原始纹理贴图中可以被重复替换的区域。纹理数据库中对应的纹理单元数据是与原始纹理贴图最相似最匹配的纹理贴图,纹理单元数据可以通过人工精选的方式获取或美术制作而成。
S13:自动检索网络的训练
利用训练数据集中的图片对,采用交叉熵损失以端到端的方式训练自动检索网络。对于第一种图片对,可以分为原始图片和替换图片,所述替换图片是指需要使用原始图片进行替换的图片。原始图片对应原始纹理贴图的对应区域图片,替换图片对应原始贴图中需要替换的区域图片。所述训练包括以下步骤:
S131:依次输入原始图片和替换图片至卷积神经网络,分别得到原始图片的第一特征向量和替换图片的第二特征向量;
S132:将第一特征向量和第二特征向量分别送入自动检索网络进行检索处理,所述检索处理是使用卷积结构提取整体图像特征和边界特征,对提取的整体图像特征和边界特征进行归一化,而后将二者特征值相结合,进而得到检索结果;
S133:将获得的第一特征向量的检索结果,与第二特征向量的检索结果相对比,计算二者的交叉熵损失,调整自动检索网络的提取参数,使计算的交叉熵损失小于设定的阈值,从而完成自动检索网络的学习。
对于第二种图片对,为了得到更好的纹理匹配结果,将纹理贴图的余弦相似度在一定阈值下的纹理贴图归为一类,将每一类中对应的图片对当作相关匹配结果。
所述自动检索网络可以设定图片对的检测模型的损失函数,为两个损失函数的加权之和。包括以下步骤:
S134:提取图片对中,最小重复纹理单元的像素点和纹理单元数据的像素点,并计算每个像素点的单点相似度,以所述单点相似度作为第一损失函数;
S135:提取所述最小重复纹理单元和纹理单元数据的整体相似度,并以所述整体相似度的最大值作为第二损失函数;
S136:对所述第一损失函数和所述第二损失函数进行加权求和,以得到联合损失函数。
S137:通过最小化模型误差,就可以通过训练得到一个好的自动检索网络。
这样,对基于原始纹理贴图检索和基于纹理数据库贴图检索,分别训练两个不同的网络模型。训练后将一个需要进行检索的原始贴图,输入到自动检索网络之后,输出的原始纹理贴图是与输入最匹配的纹理贴图。
按上述方式训练两个自动检索网络,再分别用自动检索网络来检索原始纹理贴图或纹理数据库中的纹理单元数据,可以使得输出的纹理贴图与输入尽量相似。由此,可以达到以下效果:第一,对不同的检索场景可以得到不同的检索结果,使得检索结果满足检索的需求;第二,检索流程快速且自动化,只需要输入需要进行替换的纹理单元,即可得到原始贴图中相似的纹理单元或纹理数据库中最匹配的纹理贴图。
S4:通过自动检索网络,将该区域作为检索网络的输入在原图中进行检索,自动检索出与步骤S3圈出的区域最相似的原图部分,用原图的非畸变、扭曲的图片内容进行替换。
这样在原图中进行检索,能够更自动化地对原图进行修复。
S5:人工圈出原图中最小重复纹理单元,在纹理数据库中查找进行替换的纹理单元;
如果该区域的纹理特征包括两种以上的纹理,则需要对每种纹理都进行标注,自动检索网络会将每种纹理各自对应的纹理单元进行替换处理,从而实现在原图中多种纹理单元的排列组成。
将圈出的最小重复纹理单元作为检索网络的输入,在纹理数据库中快速且自动地检索出最相似的纹理单元,即在纹理数据库中自动检索最佳匹配的纹理单元,进行替换,能够更加高效并智能地检索到纹理数据库中预存的更清晰、更真实的纹理贴图。
替换后,对于不合适的纹理单元,可以进行编辑,通过在纹理数据库中录入新的纹理单元进行人工替换,或者直接输入纹理单元的编号,实现更准确的替代。
S6:对替换后的纹理单元图片进行后处理,将其贴回到建筑的三维模型上,得到完整的带纹理的重构建筑。
所述基于交互式纹元检索的建筑立面纹理快速生成方法,相比于原始的人工修复纹理的方法,通过交互式检索的方法,只需要更简单和更少的人力成本和更短的时间进行纹理修复,方式更加自动化。