三维模型表面空洞填补方法和装置
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种三维模型表面空洞填补方法和装置。
背景技术
在现有的三维房屋模型中,例如VR(Virtual Reality,虚拟现实)看房***,由于在拍摄过程中,有些位置会被其他物体被遮挡,从而无法采集到数据,也不能拍摄到实景图像。在构建三维房屋模型的过程中,没有数据的区域会在模型表面生成空洞,从模型展示来看就会显示一个黑洞,严重影响模型的展示效果。
因此,如何填补模型表面的空洞,成为亟待解决的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种三维模型表面空洞填补方法和装置。
一方面,本发明实施例提供一种三维模型表面空洞填补方法,所述方法包括:
在构建出整个三维模型框架的第一表面之后,将三维空间实景图的纹理映射到所述第一表面上,生成包含纹理的第二表面,所述第一表面由第一三角形集合组成,所述第二表面由第二三角形集合组成;
根据所述第一三角形集合和所述第二三角形集合的对应关系查找出所述第一表面的空洞,所述空洞由多个缺失纹理的三角形组成;
计算各空洞的面积,当空洞的面积小于预设数值时,在所述第一三角形集合中查找出与空洞边缘的三角形相连的所有三角形,组成第三三角形集合;
根据第三三角形集合与第二三角形集合的对应关系获取第三三角形集合中各三角形的顶点的颜色值,以及获取空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离;
根据空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离对所述第三三角形集合中各三角形的顶点的颜色值做加权平均,得到空洞中各三角形的顶点的颜色值;
根据空洞中各三角形的顶点的颜色值填补空洞。
另一方面,本发明实施例提供一种三维模型表面空洞填补装置,所述装置包括:
映射单元,用于在构建出整个三维模型框架的第一表面之后,将三维空间实景图的纹理映射到所述第一表面上,生成包含纹理的第二表面,所述第一表面由第一三角形集合组成,所述第二表面由第二三角形集合组成;
第一查找单元,用于根据所述第一三角形集合和所述第二三角形集合的对应关系查找出所述第一表面的空洞,所述空洞由多个缺失纹理的三角形组成;
第一计算单元,用于计算各空洞的面积;
第二查找单元,用于当空洞的面积小于预设数值时,在所述第一三角形集合中查找出与空洞边缘的三角形相连的所有三角形,组成第三三角形集合;
获取单元,用于根据第三三角形集合与第二三角形集合的对应关系获取第三三角形集合中各三角形的顶点的颜色值,以及获取空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离;
第二计算单元,用于根据空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离对所述第三三角形集合中各三角形的顶点的颜色值做加权平均,得到空洞中各三角形的顶点的颜色值;
填补单元,用于根据空洞中各三角形的顶点的颜色值填补空洞。
另一方面,本发明实施例还提供一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述方法的步骤。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述三维模型表面空洞填补方法的步骤。
本发明实施例通过对空洞中各三角形的颜色进行填补,能够填满三维模型表面的空洞,提高三维模型的完整性和展示效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的三维模型表面空洞填补方法的流程示意图;
图2为本发明一实施例提供的三维模型表面空洞填补装置的结构示意图;
图3为本发明一实施例提供的第一查找单元的结构示意图;
图4为本发明一实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在对本发明提供的内容进行详细介绍前,先给出“VR看房”概念的含义。
与目前流行的图片看房、视频看房、全景看房等无法提供深度信息和真实感知的看房概念不同的是,“VR看房”是指利用VR技术真实还原出房源三维场景,为消费者提供自由模式下的沉浸式看房体验,从而让用户足不出户即可体验到真实看房场景。例如,通过打开APP上的VR房源,触摸屏幕任意处即可获得包括房屋真实空间的尺寸、朝向、远近等深度信息。在还原房源三维场景这方面,可以先对房屋进行多点多角度的扫描拍摄,得到完整的三维点云数据、经纬度数据以及多曝光的高清彩色照片,后期通过自动建模、智能空洞填补、全自动数据提取,HDR(High-Dynamic Range高动态范围)图像优化等三维重建技术,将全部数据及图片纹理映射到三维模型上,得到最终用户看到的真实房屋空间。
图1示出了本发明实施例提供的一种三维模型表面空洞填补方法的流程示意图。
如图1所示,本发明实施例提供的三维模型表面空洞填补方法具体包括以下步骤:
S11、在构建出整个三维模型框架的第一表面之后,将三维空间实景图的纹理映射到所述第一表面上,生成包含纹理的第二表面,所述第一表面由第一三角形集合组成,所述第二表面由第二三角形集合组成;
本发明实施例应用于房屋的三维模型,房屋的三维模型框架是在对房屋进行扫描(如通过红外感应相机)获取房屋的三维点云数据,再根据三维点云数据搭建出的房屋三维空间模型框架。本发明实施例利用重建算法构建出整个房屋三维空间模型框架的表面,然后将扫描时获取的房屋的全景彩色照片的纹理映射到构建的表面上,生成包含纹理信息的表面,其中,三维模型框架的表面由第一三角形集合组成,包含纹理的表面由第二三角形集合组成,第二三角形集合仅包含带纹理的三角形,正常情况下三维模型框架的表面与包含纹理的表面共用相同的三角形集合,且存在一一对应关系,但是由于利用重建算法生成的三维模型框架的表面可能存在空洞,第二三角形集合中的三角形比第一三角形集合中的三角形数目少,因此第一三角形集合中的一些三角形可能在第二集合中不存在对应的三角形。
S12、根据所述第一三角形集合和所述第二三角形集合的对应关系查找出所述第一表面的空洞,所述空洞由多个缺失纹理的三角形组成;
三维房屋框架的表面存在没有拍摄数据的空洞,在模型表面显示为黑洞,不携带纹理信息。本发明实施例通过比较第一三角形集合中的所有三角形在第二三角形集合中是否有对应的带纹理的三角形,来定位属于空洞的三角形的位置,具体可通过广度优先搜索对所有三角形逐个比较,以保证完全搜索。
具体地,三角形作为组成表面的单元,面积很小,因此通常情况下一个空洞占据许多三角形的面积,本发明实施例将连接在一起的纹理缺失的三角形作为一个整体,称为一个空洞。
S13、计算各空洞的面积,当空洞的面积小于预设数值时,在所述第一三角形集合中查找出与空洞边缘的三角形相连的所有三角形,组成第三三角形集合;
本发明实施例在定位各个空洞之后,计算每个空洞的面积大小,对于面积值在预设范围内的进行后续的填补。针对一个空洞首先查找到与该空洞的边缘三角形相连并且包围该空洞的三角形,形成一个集合,集合中每个三角形都有完整的纹理信息。
S14、根据第三三角形集合与第二三角形集合的对应关系获取第三三角形集合中各三角形的顶点的颜色值,以及获取空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离;
第三三角形集合是第一三角形集合的一部分,因此可以确定第三三角形集合和第二三角形集合的对应关系,根据对应关系获取第三三角形集合中每个三角形的各顶点的纹理包含的颜色值,本发明实施例获取各顶点对应的颜色值,并且计算出空洞中的各三角形的顶点与第三三角形集合中各三角形的顶点的距离。
S15、根据空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离对所述第三三角形集合中各三角形的顶点的颜色值做加权平均,得到空洞中各三角形的顶点的颜色值。
本发明实施例以空洞中的各三角形的顶点与第三三角形集合中各三角形的顶点的距离为权重,计算出空洞中的各三角形的顶点的颜色值。
S16、根据空洞中各三角形的顶点的颜色值填补空洞。
得到空洞中各三角形的顶点的颜色值之后就能通过具体的图像处理技术来获得每个三角形的颜色信息,填补全每个三角形的颜色,再将补全颜色的三角形加入到第二表面中,从而使第二表面填满带纹理的三角形。
本发明实施例提供的三维模型表面空洞填补方法,查找出三维模型表面的空洞,根据空洞边缘的三角形的顶点的颜色计算出空洞中各三角形顶点的颜色,从而填补空洞中的各三角形。本发明实施例通过对空洞中各三角形的颜色进行填补,能够填满三维模型表面的空洞,提高三维模型的完整性和展示效果。
在上述实施例的基础上,S11所述构建出整个三维模型框架的第一表面包括:
对所述三维模型框架进行泊松表面重建,生成整个三维模型框架的表面。
本发明实施例通过泊松表面重建算法构建出三维模型框架的整个表面,例如,通过构建出房屋三维框架的表面,生成mesh.ply文件,mesh.ply文件表示的模型表面是由三角形集合组成的。
在上述实施例的基础上,S11具体包括:
将三维空间的实景图按照预设对应关系贴在所述三维模型框架的表面上,生成包含纹理的模型表面。
具体地,本发明实施例将房屋的全景图像按照一定的比例关系贴合在三维房屋框架中,使图像和三维房屋框架相匹配,进而实现全景图像与三维模型表面的纹理映射,从而三维模型的表面包含了图像纹理信息。例如,生成的包含纹理的三维模型的表面为output.obj文件,output.obj文件表示的模型表面也是由三角形集合组成,这些三角形都是带纹理的三角形。
在上述实施例的基础上,S12具体包括:
查找第一三角形集合中的三角形在第二三角形集合中对应的包含纹理的三角形;
当第一三角形集合中的三角形在第二三角形集合中查找不到对应的包含纹理的三角形时,确定所述第一三角形集合中的三角形为缺失纹理的三角形;
将所有相连的缺失纹理的三角形组成一个空洞。
本发明实施例通过对比mesh.ply文件和output.obj文件查找出模型表面缺失纹理的三角形,由于output.obj是基于mesh.ply生成的,所以这两个文件共用相同的三角形集合,所以通过比较mesh.ply中所有的三角形在output.obj中是否有对应的纹理信息来判断空洞的位置,如果mesh.ply中的三角形在output.obj中没有对应的带纹理的三角形,则认为该mesh.ply中的三角形属于一个空洞的三角形。通过这种判断方法对output.obj中所有三角形进行广度优先搜索,查找到所有连接在一起的没有纹理的三角形,连接在一起的没有纹理的三角形成一个空洞。
在上述实施例的基础上,S13具体包括:
根据空洞中各三角形顶点的三维坐标计算出各三角形的面积,得到空洞的面积。
具体地,一个空洞通常包括许多个三角形,通过计算出空洞中各个三角形的面积之和得到空洞的面积。
如果空洞的面积小于预设数据(例如5平方米),则对空洞进行进一步的填补。具体地,先找出包围空洞的三角形,包围空洞的三角形指在空洞的一周并且与空洞的边缘三角形相连,将这些三角形组成一个集合,集合中每个三角形都有完整的纹理信息。
上述实施例的基础上,在计算各空洞的面积之后,所述方法还包括:
当空洞的面积大于或等于所述预设数值时,不对所述空洞进行填补。
具体地,如果空洞的面积不小于预设数据(例如5平方米)时,该区域可能是泊松重建算法拟合出的错误的或者假的表面,很大概率上该区域是不存在的,因此放弃对该空洞的填补。
在上述实施例的基础上,S14具体包括:
查找第三三角形集合中的三角形在第二三角形集合中对应的包含纹理的三角形;
获取所述对应的包含纹理的三角形的顶点的纹理所对应的颜色值。
与确定第一三角形集合和第二三角形集合的对应关系相同,本发明实施例可以确定第三三角形集合和第二三角形集合的对应关系,根据对应关系获取第三三角形集合中每个三角形所对应的包含纹理的三角形的各顶点的颜色值。
在上述实施例的基础上,S16具体包括:
对空洞中各三角形的顶点的颜色值进行高斯模糊处理,得到各三角形内各像素点的颜色值;
将计算出颜色值的三角形填补在所述第二表面中。
具体地,本发明实施例对空洞中各三角形的顶点的颜色值做高斯模糊,得到顶点周边各像素点的颜色值,从而能够得到每个三角形的颜色,将补全颜色的三角形加到第二表面中,使第二表面的空洞填满带纹理的三角形。
本发明实施例还提供一种三维模型表面空洞填补装置。
图2示出了本发明实施例提供的一种三维模型表面空洞填补装置的结构示意图。
如图2所示,本发明实施例提供的三维模型表面空洞填补装置包括映射单元11、第一查找单元12、第一计算单元13、第二查找单元14、获取单元15、第二计算单元16以及填补单元17,其中:
所述映射单元11,用于在构建出整个三维模型框架的第一表面之后,将三维空间实景图的纹理映射到所述第一表面上,生成包含纹理的第二表面,所述第一表面由第一三角形集合组成,所述第二表面由第二三角形集合组成;
所述第一查找单元12,用于根据所述第一三角形集合和所述第二三角形集合的对应关系查找出所述第一表面的空洞,所述空洞由多个缺失纹理的三角形组成;
所述第一计算单元13,用于计算各空洞的面积;
所述第二查找单元14,用于当空洞的面积小于预设数值时,在所述第一三角形集合中查找出与空洞边缘的三角形相连的所有三角形,组成第三三角形集合;
所述获取单元15,用于根据第三三角形集合与第二三角形集合的对应关系获取第三三角形集合中各三角形的顶点的颜色值,以及获取空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离;
所述第二计算单元16,用于根据空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离对所述第三三角形集合中各三角形的顶点的颜色值做加权平均,得到空洞中各三角形的顶点的颜色值;
所述填补单元17,用于根据空洞中各三角形的顶点的颜色值填补空洞。
本发明实施例提供的三维模型表面空洞填补装置,查找出三维模型表面的空洞,根据空洞边缘的三角形的顶点的颜色计算出空洞中各三角形顶点的颜色,从而填补空洞中的各三角形。本发明实施例通过对空洞中各三角形的颜色进行填补,能够填满三维模型表面的空洞,提高三维模型的完整性和展示效果。
在上述实施例的基础上,所述装置还包括:
生成单元,用于对所述三维模型框架进行泊松表面重建,生成整个三维模型框架的表面。
在上述实施例的基础上,所述映射单元11包括:
贴合模块,用于将三维空间的实景图按照预设对应关系贴在所述三维模型框架的表面上;
生成模块,用于生成包含纹理的三维模型框架的表面。
图3示出了本发明实施例提供的第一查找单元12的结构示意图。
如图3所示,所述第一查找单元12包括:
第一查找模块121,用于查找第一三角形集合中的三角形在第二三角形集合中对应的包含纹理的三角形;
确定模块122,用于当第一三角形集合中的三角形在第二三角形集合中查找不到对应的包含纹理的三角形时,确定所述第一三角形集合中的三角形为缺失纹理的三角形;
组成模块123,用于将所有相连的缺失纹理的三角形组成一个空洞。
在上述实施例的基础上,所述计算单元13,用于根据空洞中各三角形顶点的三维坐标计算出各三角形的面积,得到空洞的面积。
在上述实施例的基础上,所述获取单元15包括:
第二查找模块,用于查找第三三角形集合中的三角形在第二三角形集合中对应的包含纹理的三角形;
获取模块,用于获取所述对应的包含纹理的三角形的顶点的纹理所对应的颜色值。
在上述实施例的基础上,所述填补单元17包括:
处理模块,用于对空洞中各三角形的顶点的颜色值进行高斯模糊处理,得到各三角形内各像素点的颜色值;
填补模块,将计算出颜色值的三角形填补在所述第二表面中。
本发明实施例中的功能模块可以通过硬件处理器(hardware processor)来实现相关功能模块,本发明实施例不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如图1的方法。
图4示出了本发明一实施例提供的电子设备的结构示意图。
如图4所示,本发明实施例提供的电子设备包括存储器21、处理器22、总线23以及存储在存储器21上并可在处理器22上运行的计算机程序。其中,所述存储器21、处理器22通过所述总线23完成相互间的通信。
所述处理器22用于调用所述存储器21中的程序指令,以执行所述程序时实现如图1的方法。
例如,所述处理器执行所述程序时实现如下方法:
在构建出整个三维模型框架的第一表面之后,将三维空间实景图的纹理映射到所述第一表面上,生成包含纹理的第二表面,所述第一表面由第一三角形集合组成,所述第二表面由第二三角形集合组成;
根据所述第一三角形集合和所述第二三角形集合的对应关系查找出所述第一表面的空洞,所述空洞由多个缺失纹理的三角形组成;
计算各空洞的面积,当空洞的面积小于预设数值时,在所述第一三角形集合中查找出与空洞边缘的三角形相连的所有三角形,组成第三三角形集合;
根据第三三角形集合与第二三角形集合的对应关系获取第三三角形集合中各三角形的顶点的颜色值,以及获取空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离;
根据空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离对所述第三三角形集合中各三角形的顶点的颜色值做加权平均,得到空洞中各三角形的顶点的颜色值;
根据空洞中各三角形的顶点的颜色值填补空洞。
本发明实施例提供的电子设备,通过对空洞中各三角形的颜色进行填补,能够填满三维模型表面的空洞,提高三维模型的完整性和展示效果。
本发明实施例还提供一种非暂态计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现如图1的步骤。
例如,所述处理器执行所述程序时实现如下方法:
在构建出整个三维模型框架的第一表面之后,将三维空间实景图的纹理映射到所述第一表面上,生成包含纹理的第二表面,所述第一表面由第一三角形集合组成,所述第二表面由第二三角形集合组成;
根据所述第一三角形集合和所述第二三角形集合的对应关系查找出所述第一表面的空洞,所述空洞由多个缺失纹理的三角形组成;
计算各空洞的面积,当空洞的面积小于预设数值时,在所述第一三角形集合中查找出与空洞边缘的三角形相连的所有三角形,组成第三三角形集合;
根据第三三角形集合与第二三角形集合的对应关系获取第三三角形集合中各三角形的顶点的颜色值,以及获取空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离;
根据空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离对所述第三三角形集合中各三角形的顶点的颜色值做加权平均,得到空洞中各三角形的顶点的颜色值;
根据空洞中各三角形的顶点的颜色值填补空洞。
本发明实施例提供的非暂态计算机可读存储介质,通过对空洞中各三角形的颜色进行填补,能够填满三维模型表面的空洞,提高三维模型的完整性和展示效果。
本发明一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:
在构建出整个三维模型框架的第一表面之后,将三维空间实景图的纹理映射到所述第一表面上,生成包含纹理的第二表面,所述第一表面由第一三角形集合组成,所述第二表面由第二三角形集合组成;
根据所述第一三角形集合和所述第二三角形集合的对应关系查找出所述第一表面的空洞,所述空洞由多个缺失纹理的三角形组成;
计算各空洞的面积,当空洞的面积小于预设数值时,在所述第一三角形集合中查找出与空洞边缘的三角形相连的所有三角形,组成第三三角形集合;
根据第三三角形集合与第二三角形集合的对应关系获取第三三角形集合中各三角形的顶点的颜色值,以及获取空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离;
根据空洞中的各三角形的顶点与所述第三三角形集合中各三角形的顶点的距离对所述第三三角形集合中各三角形的顶点的颜色值做加权平均,得到空洞中各三角形的顶点的颜色值;
根据空洞中各三角形的顶点的颜色值填补空洞。
本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。