本公开涉及计算机技术领域,尤其涉及一种三维模型的语义生成方法、三维模型的语义生成装置、计算机可读存储介质与电子设备。
背景技术:
三维重建是计算机视觉的基础性技术。利用三维重建的相关算法,能够基于二维图像的处理,建立真实世界的三维模型。
目前,三维重建的重点在于恢复真实世界的三维结构与实景,这样得到的三维模型仅停留在较低的视觉层次,无法完成高层次、复杂的视觉任务,如智慧城市建设、沉浸式ar(augmentedreality,增强现实)游戏等。
因此,有必要对三维模型赋予语义,以便于计算机从人类的感官层面上理解三维模型,从而实现高层次视觉任务的处理。
技术实现要素:
本公开提供了一种三维模型的语义生成方法、三维模型的语义生成装置、计算机可读存储介质与电子设备,进而至少在一定程度上解决三维模型不具备语义的问题。
根据本公开的第一方面,提供一种三维模型的语义生成方法,包括:获取多张二维图像与三维模型,所述三维模型是通过所述多张二维图像进行三维重建所得到的模型,所述三维模型包括多个面片;基于第一映射关系、第二映射关系、第三映射关系中的至少两种映射关系与所述二维图像的语义,生成所述面片中至少两种元素的语义,所述面片中的元素包括点、线与纹理区域,所述第一映射关系为所述面片中的点与所述二维图像中的像素点的映射关系,所述第二映射关系为所述面片中的线与所述二维图像中的线的映射关系,所述第三映射关系为所述面片中的纹理区域与所述二维图像中的图像区域的映射关系;融合所述至少两种元素的语义,以输出所述三维模型的语义。
根据本公开的第二方面,提供一种三维模型的语义生成装置,包括:数据获取模块,被配置为获取多张二维图像与三维模型,所述三维模型是通过所述多张二维图像进行三维重建所得到的模型,所述三维模型包括多个面片;元素语义生成模块,被配置为基于第一映射关系、第二映射关系、第三映射关系中的至少两种映射关系与所述二维图像的语义,生成所述面片中至少两种元素的语义,所述面片中的元素包括点、线与纹理区域,所述第一映射关系为所述面片中的点与所述二维图像中的像素点的映射关系,所述第二映射关系为所述面片中的线与所述二维图像中的线的映射关系,所述第三映射关系为所述面片中的纹理区域与所述二维图像中的图像区域的映射关系;元素语义融合模块,被配置为融合所述至少两种元素的语义,以输出所述三维模型的语义。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面的三维模型的语义生成方法及其可能的实现方式。
根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述第一方面的三维模型的语义生成方法及其可能的实现方式。
本公开的技术方案具有以下有益效果:
对三维模型的面片中不同种类元素分别生成语义,再融合不同种类元素的语义,输出三维模型的语义,提供了一种为三维模型生成语义的方案。一方面,面片中的点、线、纹理区域可以从不同的信息维度上与二维图像中的像素点、线、图像区域形成映射关系,由此,在不同的信息维度上得到不同种类元素的语义,能够克服单一映射关系的局限性,提高语义的准确性。另一方面,将复杂的三维语义分割问题转换到二维图像上解决,减少了计算量与耗时,提高了处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1示出本示例性实施方式中一种系统架构的示意图;
图2示出本示例性实施方式中一种电子设备的结构示意图;
图3示出本示例性实施方式中一种三维模型的语义生成方法的流程图;
图4示出本示例性实施方式中一种确定映射关系的流程图;
图5示出本示例性实施方式中三维模型与二维图像投影关系的示意图;
图6示出本示例性实施方式中一种添加纹理的流程图;
图7示出本示例性实施方式中一种生成顶点语义的流程图;
图8示出本示例性实施方式中一种生成纹理区域语义的流程图;
图9示出本示例性实施方式中一种生成三维模型语义的流程图;
图10示出本示例性实施方式中一种生成具有语义的三维模型的流程图;
图11示出本示例性实施方式中一种三维模型的语义生成装置的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
相关技术中,将二维图像的语义分割移植到三维模型上进行应用。一般是训练三维语义分割网络(如pointnet等),利用该网络对三维模型的点云进行语义分割处理,输出三维模型的语义。与二维图像的语义分割相比,由于三维模型的点云数量庞大,且包含更多的信息维度,导致三维模型的语义分割所需计算量大,耗时长,且难以保证语义分割的准确性。
鉴于上述问题,本公开的示例性实施方式首先提供一种三维模型的语义生成方法。下面先对本示例性实施方式运行环境的系统架构进行介绍。
图1示出了系统架构的示意图,该系统架构100可以包括图像采集设备110与计算设备120,两者可以通过有线或无线的通信链路形成连接。
其中,图像采集设备110可以是具备摄像头的终端设备,如智能手机、数码相机、无人车等。图像采集设备110用于在不同位姿下采集真实世界的多张二维图像,例如,图像采集设备110为智能手机,用户手持智能手机在当前场景中一边移动一边拍摄,得到关于当前环境的多张二维图像。图像采集设备110可以将所采集的多张二维图像发送至计算设备120。在一种实施方式中,图像采集设备110还可以通过所采集的多张二维图像进行三维重建,得到真实世界的三维模型,并将二维图像与三维模型发送至计算设备120。
计算设备120可以是与图像采集设备110配套部署的终端计算机,或者提供三维语义分割服务的处理器。计算设备120用于对所接收的二维图像或者二维图像与三维模型进行处理,实现三维模型的语义生成。当计算设备120从图像采集设备110处仅接收二维图像时,可以先通过二维图像进行三维重建,得到真实世界的三维模型,然后基于二维图像与三维模型执行上述三维模型的语义生成方法;当计算设备120从图像采集设备110处接收二维图像与三维模型时,可以基于二维图像与三维模型执行上述三维模型的语义生成方法。
应当理解,图像采集设备110与计算设备120可以是独立设置的两台设备,也可以集成在一台设备中,例如可以通过智能手机执行图像采集设备110与计算设备120的功能,先采集二维图像,再通过二维图像进行三维重建,然后执行上述三维模型的语义生成方法。本公开对于图像采集设备110的数量不做限定,例如可以在多个图像采集设备110中安装三维建模相关的客户端,使得这些图像采集设备110连接到位于后台的计算设备120,以发送二维图像。
本公开的示例性实施方式还提供一种电子设备,用于执行上述三维模型的语义生成方法。该电子设备可以是上述计算设备120,或者集成有图像采集设备110与计算设备120的一台设备。下面参考图2对该电子设备进行说明。应当理解,图2显示的电子设备200仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
如图2所示,电子设备200以通用计算设备的形式表现。电子设备200的组件可以包括但不限于:至少一个处理单元210、至少一个存储单元220、连接不同系统组件(包括处理单元210和存储单元220)的总线230。
其中,存储单元存储有程序代码,程序代码可以被处理单元210执行,使得处理单元210执行上述三维模型的语义生成方法。
存储单元220可以包括易失性存储单元,例如随机存取存储单元(ram)221和/或高速缓存存储单元222,还可以进一步包括只读存储单元(rom)223。
存储单元220还可以包括具有一组(至少一个)程序模块225的程序/实用工具224,这样的程序模块225包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线230可以包括数据总线、地址总线和控制总线。
电子设备200也可以与一个或多个外部设备260(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(i/o)接口240进行。电子设备200还可以通过网络适配器250与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图2所示,网络适配器250通过总线230与电子设备200的其它模块通信。应当理解,尽管图2中未示出,可以在电子设备200中设置其它硬件和/或软件模块,包括但不限于:显示器、微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
下面对本示例性实施方式的三维模型的语义生成方法进行说明。该方法的应用场景包括但不限于:用户位于商场内,使用智能手机采集商场内部的二维图像,发送至云端服务器,云端服务器进行三维重建,并通过执行三维模型的语义生成方法,生成带有语义的商场三维模型,从而提供室内导航、ar等服务。
图3示出了三维模型的语义生成方法的示例性流程,可以包括:
步骤s310,获取多张二维图像与三维模型,该三维模型是通过该多张二维图像进行三维重建所得到的模型,该三维模型包括多个面片;
步骤s320,基于第一映射关系、第二映射关系、第三映射关系中的至少两种映射关系与上述二维图像的语义,生成面片中至少两种元素的语义;其中,面片中的元素包括点、线与纹理区域,第一映射关系为面片中的点与二维图像中的像素点的映射关系,第二映射关系为面片中的线与二维图像中的线的映射关系,第三映射关系为面片中的纹理区域与二维图像中的图像区域的映射关系;
步骤s330,融合上述至少两种元素的语义,以输出三维模型的语义。
通过上述方法,对三维模型的面片中不同种类元素分别生成语义,再融合不同种类元素的语义,输出三维模型的语义,提供了一种为三维模型生成语义的方案。一方面,面片中的点、线、纹理区域可以从不同的信息维度上与二维图像中的像素点、线、图像区域形成映射关系,由此,在不同的信息维度上得到不同种类元素的语义,能够克服单一元素语义的局限性,提高语义的准确性。另一方面,将复杂的三维语义分割问题转换到二维图像上解决,减少了计算量与耗时,提高了处理效率。
下面对图3中的每个步骤进行具体说明。
参考图3,在步骤s310中,获取多张二维图像与三维模型,该三维模型是通过该多张二维图像进行三维重建所得到的模型,该三维模型包括多个面片。
其中,二维图像是针对真实世界采集的图像,三维模型是真实世界的模型。为了对真实世界建模,需要采集至少两张二维图像,可以采用sfm(structurefrommotion,运动恢复结构)等相关算法对二维图像进行三维重建,得到三维模型。
在一种实施方式中,获取多张二维图像后,可以执行以下三维重建流程,以得到三维模型:
在至少两张二维图像间,确定具有匹配关系的特征点或特征线。例如可以分别从每张二维图像中提取特征点或特征线,特征点可以是二维图像中颜色变化显著的区域内的像素点,如角点等,特征线可以是二维图像中颜色变化显著的区域内的二维线(由于二维图像中的线位于二维的图像平面上,为便于区分三维空间中的三维线,将二维图像中的线称为二维线),如边缘线等,以特征描述子表示特征点或特征线;通过计算不同二维图像间特征点或特征线的特征描述子的相似度,得到不同特征点的匹配度或不同特征线的匹配度,从而确定具有匹配关系的特征点或特征线。
根据上述至少两张二维图像间的位姿变换参数,确定具有匹配关系的特征点所对应的三维点,或者具有匹配关系的特征线所对应的三维线。其中,对于两张二维图像,找到该两张二维图像间具有匹配关系的特征点对,可以利用特征点对中每个特征点在各自二维图像中的坐标,求解该两张二维图像间的本质矩阵,进而通过奇异值分解等算法得到位姿变换参数,通常包括旋转矩阵与平移向量。根据位姿变换参数,以及具有匹配关系的特征点在各自二维图像中的坐标,可以计算每个特征点的深度值(即沿焦距方向的坐标值),得到特征点的三维坐标,并将其转换到世界坐标系中。世界坐标系可以是预先确定的与二维图像无关的三维坐标系,也可以是某一张作为基准的二维图像对应的相机坐标系,例如以第一帧二维图像的相机坐标系作为世界坐标系。对于特征线以及三维线的处理方式类似。
将上述三维点或三维线形成集合,得到三维模型。例如,将三维点的坐标形成集合,得到三维点云模型。
本示例性实施方式通过面片对三维模型进行表示。面片是三维模型的组成单元,一般面积较小,可以认为一个面片具有统一的属性,如颜色、纹理等。面片具有一定的几何形状,例如可以是三角形、矩形等。
在一种实施方式中,对上述二维图像进行三维重建后,得到三维点云模型。根据三维点云模型的结构,确定其中的表面,将表面分割为一个个面片,例如可以是大量的三角形面片,从而得到上述三维模型。
继续参考图3,在步骤s320中,基于第一映射关系、第二映射关系、第三映射关系中的至少两种映射关系与上述二维图像的语义,生成面片中至少两种元素的语义。
其中,二维图像的语义可以是二维图像的语义分割信息。在一种实施方式中,可以利用预先训练的语义分割模型分别对每张二维图像进行处理,得到每张二维图像的语义分割信息,包括每张二维图像中每个像素点的语义。
面片中的元素包括点、线(包括直线或曲线)与纹理区域。需要说明的是,面片中的元素也是三维模型中的元素,均处于三维空间内,因此可以将面片中的点视为三维点,面片中的线视为三维线,面片中的纹理区域视为三维纹理区域。
二维图像是三维模型在平面上的映射,因此可以将三维模型的面片与二维图像建立映射关系,包括第一映射关系、第二映射关系、第三映射关系。
面片中的点可以是面片中任意位置的点,例如可以是面片的顶点。第一映射关系为面片中的点与二维图像中的像素点的映射关系,即三维点与其映射在二维图像中的二维点具有第一映射关系。在一种实施方式中,获取由三角形面片组成的三维白模后,提取每个三角形面片的顶点,并获取顶点与二维图像中的像素点的第一映射关系。
面片中的线可以是面片中任意位置的线,例如可以是面片的边界线。第二映射关系为面片中的线与二维图像中的线的映射关系,即三维线与其在映射在二维图像中的二维线具有第二映射关系。在一种实施方式中,获取由三角形面片组成的三维白模后,提取每个三角形面片的边界线,并获取边界线与二维图像中的二维线的第二映射关系。
面片中的纹理区域可以是面片中包含纹理的任意局部区域或全部区域。第三映射关系为面片中的纹理区域与二维图像中的图像区域的映射关系,即三维纹理区域与其在映射二维图像中的二维图像区域具有第三映射关系。在一种实施方式中,获取三维白模后,可以对三维白模中的每个面片添加纹理,并以每个面片添加纹理后的整片区域作为纹理区域,获取纹理区域与二维图像中的图像区域的第三映射关系。
下面对如何获取第一映射关系、第二映射关系、第三映射关系,进行示例性说明。
在一种实施方式中,参考图4所示,三维模型的语义生成方法还可以包括步骤s410与s420:
步骤s410,根据三维重建的信息,获取第一投影关系、第二投影关系、第三投影关系中的至少两种投影关系。
其中,第一投影关系为面片中的点与二维图像中的像素点的投影关系,第二投影关系为面片中的线与二维图像中的线的投影关系,第三投影关系为面片中的纹理区域与二维图像中的图像区域的投影关系。图5示出了三维模型与二维图像的投影关系。图5中,对于真实世界中的苹果采集多张二维图像,包括二维图像1、二维图像2、二维图像3。通过二维图像进行三维重建,得到苹果的三维模型,其包括大量的三角形面片。以其中某一面片为例,包括点a(面片的一个顶点)、线b(面片的一条边界线)、纹理区域c(面片的整片区域)三种元素。点a、线b、纹理区域c在二维图像1~3中分别有对应的投影,点a、线b、纹理区域c在二维图像1中的投影分别为像素点a1、二维线b1、图像区域c1,在二维图像2中的投影分别为像素点a2、二维线b2、图像区域c2,在二维图像3中的投影分别为像素点a3、二维线b3、图像区域c3。由此可以得到点a的三组第一投影关系,线b的三组第二投影关系,纹理区域c的三组第三投影关系。
三维重建的信息包括但不限于:二维图像的位姿信息,通常为每张二维图像的图像坐标系与世界坐标系间的位姿变换参数;三维点与二维图像中的特征点的匹配信息;三维线与二维图像中的特征线的匹配信息,等等。
在一种实施方式中,利用二维图像的位姿信息,可以将三维模型面片中的点、线、纹理区域投影至二维图像的平面上,得到对应的像素点、二维线、图像区域,进而得到上述第一映射关系、第二映射关系、第三映射关系。
在一种实施方式中,三维点与二维图像中的特征点的匹配信息实际表示的就是三维点与特征点的投影关系,而三维点等同于面片中的点。因此,对于面片中的某一点,如果查找到其与二维图像中的特征点的匹配信息,则可以得到该面片中的点与该特征点的第一映射关系。
同理,三维线与二维图像中的特征线的匹配信息实际表示的就是三维线与特征线的投影关系,而三维线等同于面片中的线。因此,对于面片中的某一条线,如果查找到其与二维图像中的特征线的匹配信息,则可以得到该面片中的线与该特征线的第二映射关系。
在一种实施方式中,可以基于第一投影关系确定第二投影关系。由于面片中的线是由点形成的,二维图像中的线是由像素点形成的。在确定第一投影关系的基础上,在面片中的线上确定多个点,根据第一投影关系找到每个点在二维图像中对应的像素点,将这些像素点连接形成一条二维线,则得到该面片中的线与该二维线的第二投影关系。
在一种实施方式中,可以基于第一投影关系或第二投影关系确定第三投影关系。由于面片中的纹理区域是由点或线形成的,二维图像中的图像区域是由像素点或二维线形成的。在确定第一投影关系或第二投影关系的基础上,在纹理区域中确定多个点或线,根据第一投影关系或第二投影关系找到其在二维图像中对应的像素点或二维线,将这些像素点或线连接形成一片图像区域,则得到该纹理区域与该图像区域的第三投影关系。
在一种实施方式中,在三维重建中,对于每个三维点,确定与其最接近的二维图像,得到该三维点与该二维图像中的像素点的一组匹配信息。该匹配信息可以存储在三维重建的信息中。则获取三维重建的信息后,通过读取其中每个三维点的一组匹配信息,可以得到每个三维点的一组第一投影关系匹配。
步骤s420,基于第一投影关系确定第一映射关系,基于第二投影关系确定第二映射关系,或者基于第三投影关系确定第三映射关系。
对于每个三维点,如果其具有一组第一投影关系,则将该第一投影关系确定为第一映射关系,如果其具有多组第一投影关系,则可以将所有的第一投影关系确定为第一映射关系,即图5中的点a分别与像素点a1、a2、a3形成三组第一映射关系。在一种实施方式中,还可以对每个三维点的多组第一投影关系进行筛选,将保留下来的第一投影关系确定为第一映射关系。本公开对于具体的筛选方式,以及所保留下来的第一投影关系的数量不做限定,下面进行示例性说明:
①获取三维点所在面片的法向量与二维图像的法向量,分别计算每张二维图像的法向量与该面片的法向量的相似度,得到相似度最高的一张或多张二维图像或者相似度高于预设的相似度阈值(可以是经验阈值)的二维图像。如果该三维点与这些二维图像中的像素点具有第一投影关系,则保留这些第一投影关系,如果该三维点与其他二维图像中的像素点具有第一投影关系,则删除这些第一投影关系。
②对与同一三维点具有第一投影关系的像素点,计算该三维点与每个像素点的距离,确定其中距离最短的一个或多个像素点,保留其与该三维点的第一投影关系。
③在与同一三维点具有第一投影关系的像素点之间进行匹配,根据匹配结果确定一个或多个与该三维点匹配度最高的像素点,保留其与该三维点的第一投影关系。例如,图5中像素点a1、a2、a3均与点a具有第一投影关系,在点a1、a2、a3之间进行两两匹配,类似于特征点匹配的方式,如可以在二维图像1中提取a1的特征描述子,在二维图像2中提取a2的特征描述子,在二维图像3中提取a3的特征描述子,分别计算每两个像素点的特征描述子的相似度,以作为两个像素点的匹配度。进而,可以删除其中匹配度较低(如预设的第一匹配度阈值,可以是经验阈值)的像素点所对应的第一投影关系,如a2与a3的匹配度较低,则删除a与a2、a3的第一投影关系,保留a与a1的第一投影关系。或者保留其中平均匹配度最高的一个或多个像素点所对应的第一投影关系,如计算a1与a2的匹配度以及a1与a3的匹配度的平均值,得到a1的平均匹配度,同理得到a2、a3的平均匹配度,保留其中平均匹配度最高的一个像素点或一定数量的像素点所对应的第一投影关系,或者保留平均匹配度高于预设的第二匹配度阈值(可以是经验阈值)的像素点所对应的第一投影关系。
对于第二投影关系、第三投影关系,也可以采用与第一投影关系类似的方式进行处理,得到第二映射关系、第三映射关系。例如,可以将所有的第二投影关系确定为第二映射关系,或者对第二投影关系进行筛选,将保留下来的第二投影关系确定为第二映射关系。可以将所有的第三投影关系确定为第三映射关系,或者对第三投影关系进行筛选,将保留下来的第三投影关系确定为第三映射关系。
应当理解,对于同一面片中的不同元素,其可能与不同的二维图像中的对应元素形成映射关系。例如,在图5的面片中,点a与像素点a1形成第一映射关系,线b与二维线b2形成第二映射关系,纹理区域c与图像区域c3形成第三映射关系,像素点a1、二维线b2、图像区域c3分别位于不同的二维图像中。由此,面片中不同元素的映射关系体现了面片与不同的二维图像间的投影关系。
在一种实施方式中,可以在为面片添加纹理时确定第三映射关系。参考图6所示,当所获取的三维模型不包含纹理时,例如是三维白模时,语义生成方法还可以包括以下步骤s610与s620:
步骤s610,在二维图像中确定每个面片对应的图像区域。
其中,面片与对应的图像区域之间具有投影关系。每个面片可以对应一个图像区域,也可以对应多个图像区域。
在一种实施方式中,步骤s610可以通过以下方式实现:
对于每个面片,获取其在每张二维图像中的投影区域,根据各投影区域的面积在各投影区域中确定该面片对应的图像区域。
举例来说,对于图5中的面片,可以分别基于每张二维图像的位姿信息,将该面片投影至每张二维图像中,在二维图像1中的投影区域为c1,在二维图像2中的投影区域为c2,在二维图像3中的投影区域为c3。获取c1、c2、c3的面积,可以将其中面积最大的一个或多个投影区域、或者面积大于预设的第一面积阈值(可以是经验阈值)的投影区域作为该面片对应的图像区域,例如c1的面积最大,则确定该面片对应的图像区域为c1。由此,将面片与面积较大的投影区域之间建立对应关系,使得该投影区域包含较多的信息,保证该对应关系的准确性,提高后续所添加的纹理质量。
在一种实施方式中,步骤s610可以通过以下方式实现:
对于每个面片,获取其在每张二维图像中的投影区域,根据各投影区域的面积以及各投影区域的语义,在各投影区域中确定该面片对应的图像区域。
其中,投影区域的语义是指投影区域在所属的二维图像中的语义,通过对二维图像进行语义分割,可以得到二维图像中每个区域的语义,包括投影区域的语义。本示例性实施方式中,综合投影区域的面积与语义两方面信息来确定面片与投影区域的对应关系。举例来说,将面片f投影至m张二维图像中,得到m个投影区域;获取m个投影区域的面积与语义,统计其中出现次数最多的语义,在这些语义对应的投影区域中,进一步选取面积最大的一个或多个投影区域、或者面积大于预设的第二面积阈值(可以是经验阈值)的投影区域,作为面片f对应的图像区域。由此,进一步提高面片与图像区域对应关系的准确性。
步骤s620,根据上述图像区域的纹理为对应的面片添加纹理,并得到该面片中的纹理区域与该图像区域的第三映射关系。
例如,可以将图像区域的纹理填充至对应的面片中,并确定面片中的全部纹理区域与该图像区域具有第三映射关系。
在一种实施方式中,在对每个面片添加纹理后,可以在不同面片的边界部分进行颜色过渡处理,例如在两个面片的边界处确定过渡区域,根据两个面片的纹理颜色,生成渐变色纹理,填充在过渡区域中,这样可以防止不同面片发生纹理颜色的突变,导致视觉感受不和谐。
在获取第一映射关系、第二映射关系、第三映射关系中的至少两种映射关系后,结合二维图像的语义,可以生成面片中至少两种元素的语义。一般的,可以将二维图像中像素点、二维线或图像区域的语义,作为面片中点、线或纹理区域的语义。
在一种实施方式中,面片中的点包括面片中的顶点。参考图7所示,步骤s320可以包括以下步骤:
步骤s710,基于第一映射关系,在二维图像中确定每个顶点对应的像素点;
步骤s720,根据二维图像中上述像素点的语义,生成该像素点对应的顶点的语义。
其中,顶点与对应的像素点具有第一映射关系。可以获取像素点在二维图像中的语义,以作为对应顶点的语义。
在一种实施方式中,面片中的线包括面片中的边界线。步骤s320可以包括以下步骤:
基于第二映射关系,在二维图像中确定每条边界线对应的二维线;
根据二维图像中上述二维线的语义,生成该二维线对应的边界线的语义。
其中,边界线与对应的二维线具有第二映射关系。可以获取二维线在二维图像中的语义,以作为对应边界线的语义。
在一种实施方式中,参考图8所示,步骤s320可以包括以下步骤:
步骤s810,基于第三映射关系,在二维图像中确定每个面片的纹理区域对应的图像区域;
步骤s820,根据二维图像中上述图像区域的语义,生成该图像区域对应的纹理区域的语义。
其中,纹理区域与对应的图像区域具有第三映射关系。可以获取图像区域在二维图像中的语义,以作为对应纹理区域的语义。
应当理解,可以基于任意两种映射关系的组合,生成对应的两种元素的语义,也可以基于全部三种映射关系,生成对应的三种元素的语义。例如,获取第一映射关系与第三映射关系,并结合二维图像的语义,生成面片中的点与纹理区域的语义。
继续参考图3,在步骤s330中,融合上述至少两种元素的语义,以输出三维模型的语义。
步骤s320中所生成的不同元素的语义,可能存在不一致的情况,例如同一面片中的点、线、纹理区域具有不同的语义。本示例性实施方式中,可以通过设定一系列的判定规则,为面片中的不同元素附加上一致性的语义,从而融合不同元素的语义,能够消除局部语义的歧义或不稳定性,提高语义的准确性。
在一种实施方式中,可以在每个面片中融合不同元素的语义,得到该面片的一致性语义。
在一种实施方式中,参考图9所示,步骤s330可以包括以下步骤:
步骤s910,对于三维模型中的每个元素,融合该元素的语义与该元素的邻域内其他元素的语义,得到该元素的最终语义;
步骤s920,将全部元素的最终语义形成为三维模型的语义。
举例来说,对于某一三维点,可以获取其邻域内所有元素的语义,并进行统计,得到其中占比最高的一种语义,作为该元素的最终语义。在统计时,可以为不同元素的语义赋予不同的权重,如可以按照元素的种类设置不同的权重,也可以按照其他元素与该元素的距离设置不同的权重。本公开对于邻域的大小不做限定,可以以面片为单位,按照面片的大小来确定,例如邻域可以包括元素所在的面片与相邻面片。
得到全部元素的最终语义后,将其形成为集合,或者添加在三维模型中,例如以不同的颜色表示不同的语义,从而得到三维模型的完整语义。
图10示出了生成三维模型的流程图,包括:
步骤s1010,获取二维图像,对二维图像进行语义分割,得到对应的语义分割图像;
步骤s1020,通过二维图像进行三维重建,生成三维白模,该三维白模包括多个不含纹理的面片;
步骤s1030,根据二维图像的纹理对面片添加纹理,生成带有纹理的三维模型;
步骤s1040,基于第一映射关系以及语义分割图像,生成三维白模中面片顶点的语义,得到顶点带有语义的三维白模;
步骤s1050,基于第三映射关系以及语义分割图像,生成三维模型中纹理区域的语义,得到纹理区域带有语义的三维模型;
步骤s1060,将顶点的语义与纹理区域的语义进行融合,输出具有语义的三维模型。
该具有语义的三维模型可用于实现高层次、复杂的视觉任务,如智慧城市建设、沉浸式ar游戏等,具有极大的实用价值。
本公开的示例性实施方式还提供一种三维模型的语义生成装置。参考图11所示,该语义生成装置1100可以包括:
数据获取模块1110,被配置为获取多张二维图像与三维模型,该三维模型是通过多张二维图像进行三维重建所得到的模型,该三维模型包括多个面片;
元素语义生成模块1120,被配置为基于第一映射关系、第二映射关系、第三映射关系中的至少两种映射关系与二维图像的语义,生成面片中至少两种元素的语义;其中,面片中的元素包括点、线与纹理区域,第一映射关系为面片中的点与二维图像中的像素点的映射关系,第二映射关系为面片中的线与二维图像中的线的映射关系,第三映射关系为面片中的纹理区域与二维图像中的图像区域的映射关系;
元素语义融合模块1130,被配置为融合上述至少两种元素的语义,以输出三维模型的语义。
在一种实施方式中,所获取的三维模型为三维白模。元素语义生成模块1120,还被配置为:
在二维图像中确定每个面片对应的图像区域;
根据图像区域的纹理为对应的面片添加纹理,并得到面片中的纹理区域与图像区域的第三映射关系。
在一种实施方式中,元素语义生成模块1120,被配置为:
对于每个面片,获取其在每张二维图像中的投影区域,并根据各投影区域的面积在各投影区域中确定面片对应的图像区域。
在一种实施方式中,面片中的点包括面片中的顶点。元素语义生成模块1120,还被配置为:
基于第一映射关系,在二维图像中确定每个顶点对应的像素点;
根据二维图像中上述像素点的语义,生成该像素点对应的顶点的语义。
在一种实施方式中,元素语义生成模块1120,还被配置为:
基于第三映射关系,在二维图像中确定每个面片的纹理区域对应的图像区域;
根据二维图像中上述图像区域的语义,生成该图像区域对应的纹理区域的语义。
在一种实施方式中,元素语义生成模块1120,还被配置为:
根据三维重建的信息,获取第一投影关系、第二投影关系、第三投影关系中的至少两种投影关系;其中,第一投影关系为面片中的点与二维图像中的像素点的投影关系,第二投影关系为面片中的线与二维图像中的线的投影关系,第三投影关系为面片中的纹理区域与二维图像中的图像区域的投影关系;
基于第一投影关系确定第一映射关系,基于第二投影关系确定第二映射关系,或者基于第三投影关系确定第三映射关系。
在一种实施方式中,元素语义融合模块1130,被配置为:
对于三维模型中的每个元素,融合元素的语义与元素的邻域内其他元素的语义,得到元素的最终语义;
将全部元素的最终语义形成为三维模型的语义。
上述装置中各部分的细节在方法部分实施方式中已经详细说明,因而不再赘述。
本公开的示例性实施方式还提供了一种计算机可读存储介质,可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。在一种实施方式中,该程序产品可以实现为便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。