发明内容
本申请提供一种三维重建方法及装置,用以解决现有技术中三维重建速度慢,效果差的技术问题。
第一方面,本申请提供一种三维重建方法,包括:
根据获取的重建请求中的关键视角,获取包含所述重建请求中的待重建场景的多张图片,并分别获取每个所述图片对应的第一点云和相机参数。
对于每张图片,采用预先配置的层级数,对所述图片进行分层处理,以获取多层;其中,每层对应一个分辨率。
对于每张图片中的每个点,根据所述图片对应的相机参数和第一点云,采用哈希编码和线性插值,获取所述点在每层中对应的第一坐标以及每层中对应的第一坐标对应的第一特征向量,将所述点在每层中的第一特征向量进行联结处理,并根据预配置的辅助输入向量,获取所述点对应的计算结果。
采用预配置的密度多感知层神经网络模型,对每张图片中的每个点对应计算结果进行处理,以获取3D场景辐射点云模型。
对所述3D场景点云模型进行反向传播训练,以获取训练后的3D场景点云模型,并将所述训练后的3D场景点云模型嵌入所述待重建场景的前端展示层界面进行显示处理。
在一种具体实施方式中,所述对于每张图片中的每个点,根据所述图片对应的相机参数和第一点云中,采用哈希编码和线性插值,获取所述点在每层中对应的第一坐标以及每层中对应的第一坐标对应的第一特征向量,包括:
对于每张图片中的每个点,根据所述第一点云及所述图片对应的相机参数,采用所述哈希编码,获取所述点在每层中的所述第一坐标临近的第二坐标;并查询哈希列表,以获取所述第二坐标对应的第二特征向量。
采用线性插值,对所述第二特征向量进行处理,获取所述点在每层中的所述第一坐标的具体值。
查询所述哈希列表,分别获取每层中的所述第一子坐标对应的第一特征向量。
在一种具体实施方式中,所述根据获取的重建请求中的关键视角,获取包含所述重建请求中的待重建场景的多张图片,包括:
根据所述关键视角,获取所述待重建场景下的视频数据,并将所述视频数据进行关键帧抽取处理,以获取基于所述关键视角下的多张图片。
或者,根据所述关键视角,获取所述待重建场景下的多张图像数据,并将所述多张图像数据作为所述关键视角下的多张图片。
在一种具体实施方式中,还包括:
获取显示请求,所述显示请求包括:待显示的视角。
根据所述显示请求,从所述训练后的3D场景点云模型中,获取与所述待显示的视角对应的二维图片,并将所述二维图片嵌入所述待重建场景的前端展示层界面进行显示处理。
在一种具体实施方式中,所述相机参数包括:所述相机的位姿参数、所述相机的内参数及所述相机的外参数。
第二方面,本申请提供一种三维重建装置,包括:
获取模块,用于获取重建请求中的关键视角,获取包含所述重建请求中的待重建场景的多张图片,并分别获取每个所述图片对应的第一点云和相机参数。
处理模块,用于对于每张图片,采用预先配置的层级数,对所述图片进行分层处理,以获取多层;其中,每层对应一个分辨率。
所述处理模块,还用于对于每张图片中的每个点,根据所述图片对应的相机参数和第一点云,采用哈希编码和线性插值,获取所述点在每层中对应的第一坐标以及每层中对应的第一坐标对应的第一特征向量,将所述点在每层中的第一特征向量进行联结处理,并根据预配置的辅助输入向量,获取所述点对应的计算结果。
所述处理模块,还用于采用预配置的密度多感知层神经网络模型,对每张图片中的每个点对应计算结果进行处理,以获取3D场景辐射点云模型。
所述处理模块,还用于对所述3D场景点云模型进行反向传播训练,以获取训练后的3D场景点云模型,并将所述训练后的3D场景点云模型嵌入所述待重建场景的前端展示层界面进行显示处理。
在一种具体实施方式中,所述处理模块,具体用于:
对于每张图片中的每个点,根据所述第一点云及所述图片对应的相机参数,采用所述哈希编码,获取所述点在每层中的所述第一坐标临近的第二坐标;并查询哈希列表,以获取所述第二坐标对应的第二特征向量。
采用线性插值,对所述第二特征向量进行处理,获取所述点在每层中的所述第一坐标的具体值。
查询所述哈希列表,分别获取每层中的所述第一坐标对应的第一特征向量。
在一种具体实施方式中,所述获取模块,具体用于:
根据所述关键视角,获取所述待重建场景下的视频数据,并将所述视频数据进行关键帧抽取处理,以获取基于所述关键视角下的多张图片。
或者,根据所述关键视角,获取所述待重建场景下的多张图像数据,并将所述多张图像数据作为所述关键视角下的多张图片。
在一种具体实施方式中,所述获取模块还用于:
获取显示请求,所述显示请求包括:待显示的视角。
所述处理模块还用于:
根据所述显示请求,从所述训练后的3D场景点云模型中,获取与所述待显示的视角对应的二维图片,并将所述二维图片嵌入所述待重建场景的前端展示层界面进行显示处理。
在一种具体实施方式中,所述相机参数包括:所述相机的位姿参数、所述相机的内参数及所述相机的外参数。
第三方面,本申请提供一种电子设备,包括:
处理器,存储器,通信接口。
所述存储器用于存储所述处理器的可执行指令。
其中,所述处理器配置为经由执行所述可执行指令来执行如第一方面所述的方法。
第四方面,本申请提供本申请提供一种可读存储介质,其上存储有计算机程序,在于,所述计算机程序被处理器执行时实现第一方面所述的方法。
本申请提供一种三维重建方法及装置。根据获取的重建请求中的关键视角,获取包含所述重建请求中的待重建场景的多张图片,并分别获取每个所述图片对应的第一点云和相机参数;对于每张图片,采用预先配置的层级数,对所述图片进行分层处理,以获取多层;其中,每层对应一个分辨率;对于每张图片中的每个点,根据所述图片对应的相机参数和第一点云中,采用哈希编码和线性插值,获取所述点在每层中对应的第一坐标以及每层中对应的第一坐标对应的第一特征向量,将所述点在每层中的第一特征向量进行联结处理,并根据预配置的辅助输入向量,获取所述点对应的计算结果;采用预配置的密度多感知层神经网络模型,对每张图片中的每个点对应计算结果进行处理,以获取3D场景辐射点云模型;对所述3D场景点云模型进行反向传播训练,以获取训练后的3D场景点云模型,并将所述训练后的3D场景点云模型嵌入所述待重建场景的前端展示层界面进行显示处理。相较于现有技术使用MLP的神经网络模型过于依赖GPU的计算能力,本申请减少对GPU的依赖,从而提升三维重建的效率和效果。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在根据本实施例的启示下作出的所有其他实施例,都属于本申请保护的范围。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
技术术语说明:
分辨率:指图像中存储的信息量,是每英寸图像内有多少个像素点,分辨率的单位为PPI(Pixels Per Inch),通常叫做像素每英寸。
线性插值:指插值函数为一次多项式的插值方式,其在插值节点上的插值误差为零。线性插值可以用来近似代替原函数,也可以用来计算得到查表过程中表中没有的数值。
现有技术中,采用MLP神经网络模型,通过捕获二维图片中高频局部细节已完成三维模型的重建,但现有技术过于依赖GPU计算能力,从而影响三维重建的速度和效果。
因此,本申请的技术构思在于:如何提升三维重建速度,并提升三维重建效果。
下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图1为本申请提供的一种三维重建方法实施例一的流程示意图。该方法应用于基于二维照片或者视频构建三维场景,参见图1,该方法包括:
步骤S101、根据获取的重建请求中的关键视角,获取包含重建请求中的待重建场景的多张图片,并分别获取每个图片对应的第一点云和相机参数。
在本实施例中,根据图片获取该图片对应相机的相关参数,并采用3D稀疏点云重建的方法获取该图片对应的稀疏点云即第一点云。
步骤S102、对于每张图片,采用预先配置的层级数,对图片进行分层处理,以获取多层。
在本实施例中,每层对应一个分辨率。根据不同分辨率对图片进行分层处理,获得该图片的第一层、第二层、……、第n层(n为正整数)。
步骤S103、对于每张图片中的每个点,根据图片对应的相机参数和第一点云,采用哈希编码和线性插值,获取点在每层中对应的第一坐标以及每层中对应的第一坐标对应的第一特征向量,将点在每层中的第一特征向量进行联结处理,并根据预配置的辅助输入向量,获取点对应的计算结果。
在本实施例中,根据相机参数可知相机位置,根据相机位置和图片中的点,向第一点云做射线,获取在该图片的第一层中该点在第一点云中对应的点即第一坐标,以此类推,获取该点在所有层中的第一坐标,根据第一坐标可获取第一特征向量,即获取所有分辨率下的第一坐标对应的第一特征向量,将所有分辨率下的第一特征向量进行联结处理,并增加预配置的辅助输入向量,获取该点对应的计算结果。
具体的,相机、图片分辨率及第一点云的位置关系如图2相机映射关系所示,相机位置为o,对某一分辨率对应层中的点x做投影,在第一点云中获取点x的对应点x’,即x’为第一坐标。
步骤S104、采用预配置的密度多感知层神经网络模型,对每张图片中的每个点对应计算结果进行处理,以获取3D场景辐射点云模型。
在本实施例中,将所有点的计算结果输入密度多感知层神经网络模型中,在具有高性能的GPU下进行计算,密度多感知层神经网络模型根据计算结果获取所有点对应的体素和RGB值,根据体素和RGB值可获取3D场景辐射点云模型。
步骤S105、对3D场景点云模型进行反向传播训练,以获取训练后的3D场景点云模型,并将训练后的3D场景点云模型嵌入待重建场景的前端展示层界面进行显示处理。
在本实施例中,对获取的3D场景点云模型进行体渲染处理,获取3D场景点云模型对应的二维照片,并将二维照片与待重建场景的图片进行对比,获取二维照片与待重建场景的图片的最小损失量,当最小损失量达到预设损失值时,该损失值对应的3D场景点云模型可作为密度多感知层神经网络模型的输出,即损失值达到预设损失值对应的3D场景点云模型为训练后的3D场景点云模型。
本实施例中,通过将带重建场景的图片按照不同分辨率进行分层处理,并获取不同层下所有点对应的第一特征向量,对于某一点来说,联结所有层下该点的第一特征向量和辅助向量形成计算结果,输入密度多感知层神经网络模型,密度多感知层神经网络模型根据计算结果输出训练后的3D场景点云模型,并将训练后的3D场景点云模型嵌入待重建场景的前端展示层界面进行显示处理,其中在密度多感知层神经网络模型中增加了检验机制,即密度多感知层神经网络模型根据输入获取3D场景辐射点云模型,对3D场景辐射点云模型进行体渲染和损失值计算,获取训练后的3D场景辐射点云模型。相较于现有技术,本申请在密度多感知层神经网络模型中设置反馈机制,提高了三维重建的准确性,除此之外,本申请重建程序的嵌入,接受输入源以及在展示层的展示方式,以及获取第一特征向量,减少神经网络中的缓冲量,缩小了多感知层训练网络的规模,使得GPU可以以小规模的训练网络行计算,大幅降低密度多感知层神经网络模型三维重建过程所消耗的时间,提高了大场景加载的速度,降低了加载过程计算设备的占用量,提升了三维重建的速度和效果。
图3为本申请提供的一种三维重建方法实施例二的流程示意图,该方法应用于基于二维照片或者视频构建三维场景,参见图3,该方法包括:
步骤S201、根据获取的重建请求中的关键视角,获取包含重建请求中的待重建场景的多张图片,并分别获取每个图片对应的第一点云和相机参数。
其中,相机参数包括:相机的位姿参数、相机的内参数及相机的外参数。
在本实施例中,根据关键视角,获取待重建场景下的视频数据,并将视频数据进行关键帧抽取处理,以获取基于关键视角下的多张图片;或者,根据关键视角,获取待重建场景下的多张图像数据,并将多张图像数据作为关键视角下的多张图片。
在本实施例中,根据图片获取该图片对应相机的相关参数,并采用3D稀疏点云重建的方法获取该图片对应的稀疏点云即第一点云。
步骤S202、对于每张图片,采用预先配置的层级数,对图片进行分层处理,以获取多层。
其中,每层对应一个分辨率。根据不同分辨率对图片进行分层处理,获得该图片的第一层、第二层、……、第n层(n为正整数)。
步骤S203、对于每张图片中的每个点,根据第一点云及图片对应的相机参数,采用哈希编码,获取点在每层中的第一坐标临近的第二坐标;并查询哈希列表,以获取第二坐标对应的第二特征向量。
在本实施例中,根据相机参数可知相机位置,根据相机位置和图片中的点,向第一点云做射线,获取在该图片的第一层中该点在第一点云中对应的点即第一坐标,并获取与第一坐标最邻近的第二坐标,通过查询哈希列表,获取第二坐标对应的第二特征向量。
步骤S204、采用线性插值,对第二特征向量进行处理,获取点在每层中的第一坐标的具体值。
步骤S205、查询哈希列表,分别获取每层中的第一坐标对应的第一特征向量。
步骤S206、将点在每层中的第一特征向量进行联结处理,并根据预配置的辅助输入向量,获取点对应的计算结果。
步骤S207、采用预配置的密度多感知层神经网络模型,对每张图片中的每个点对应计算结果进行处理,以获取3D场景辐射点云模型。
在本实施例中,将所有点的计算结果输入密度多感知层神经网络模型中,在具有高性能的GPU下进行计算,密度多感知层神经网络模型根据计算结果获取所有点对应的体素和RGB值,根据体素和RGB值可获取3D场景辐射点云模型。
步骤S208、对3D场景点云模型进行反向传播训练,以获取训练后的3D场景点云模型。
在本实施例中,对获取的3D场景点云模型进行体渲染处理,获取3D场景点云模型对应的二维照片,并将二维照片与待重建场景的图片进行对比,获取二维照片与待重建场景的图片的最小损失量,当最小损失量达到预设损失值时,该损失值对应的3D场景点云模型可作为密度多感知层神经网络模型的输出,即损失值达到预设损失值对应的3D场景点云模型为训练后的3D场景点云模型。
步骤S209、获取显示请求。
显示请求包括:待显示的视角。
步骤S2010、根据显示请求,从训练后的3D场景点云模型中,获取与待显示的视角对应的二维图片,并将二维图片嵌入待重建场景的前端展示层界面进行显示处理。
在本实施例中,待显示的视角可与前文中关键视角相同或不同,且也可将训练后的3D场景点云模型嵌入待重建场景的前端展示层界面进行显示处理。
在本实施例中,针对大场景的有限视角源进行处理,设置适合的层级数,每个层级对应一个分辨率,在相应分辨率下对每个图片通过哈希编码和线性插值计算,获取每个层级的计算结果,并将每层的计算结果进行连结,将计算结果输入预配置的密度多感知层神经网络模型,在具有高性能的GPU下进行计算,获取训练后的3D场景点云模型,实现3D场景的重建和照片级的新虚拟视角。嵌入前端展示层界面,能够生成照片级的新虚拟视角,有效降低加载时间和存耗,在保持场景分辨率以及效果的真实度的情况下,极大提高3D场景点云模型加载效率。
在本实施例中,通过将带重建场景的图片按照不同分辨率进行分层处理,并获取不同层下所有点对应的第一特征向量,对于某一点来说,联结所有层下该点的第一特征向量和辅助向量形成计算结果,输入密度多感知层神经网络模型,密度多感知层神经网络模型根据计算结果输出训练后的3D场景点云模型,并将训练后的3D场景点云模型嵌入待重建场景的前端展示层界面进行显示处理,其中在密度多感知层神经网络模型中增加了检验机制,即密度多感知层神经网络模型根据输入获取3D场景辐射点云模型,对3D场景辐射点云模型进行体渲染和损失值计算,获取训练后的3D场景辐射点云模型。相较于现有技术,本申请在密度多感知层神经网络模型中设置反馈机制,提高了三维重建的准确性,除此之外,本申请重建程序的嵌入,接受输入源以及在展示层的展示方式,以及获取第一特征向量,减少神经网络中的缓冲量,缩小了多感知层训练网络的规模,使得GPU可以以小规模的训练网络行计算,大幅降低密度多感知层神经网络模型三维重建过程所消耗的时间,提高了大场景加载的速度,降低了加载过程计算设备的占用量,提升了三维重建的速度和效果。
图4为本申请提供的一种三维重建装置实施例一的结构示意图。如图4所示,该三维重建装置10包括:获取模块11、处理模块12。其中,获取模块31,用于获取重建请求中的关键视角,获取包含重建请求中的待重建场景的多张图片,并分别获取每个图片对应的第一点云和相机参数;处理模块12,用于对于每张图片,采用预先配置的层级数,对图片进行分层处理,以获取多层;其中,每层对应一个分辨率;处理模块12,还用于对于每张图片中的每个点,根据图片对应的相机参数和第一点云,采用哈希编码和线性插值,获取点在每层中对应的第一坐标以及每层中对应的第一坐标对应的第一特征向量,将点在每层中的第一特征向量进行联结处理,并根据预配置的辅助输入向量,获取点对应的计算结果;处理模块12,还用于采用预配置的密度多感知层神经网络模型,对每张图片中的每个点对应计算结果进行处理,以获取3D场景辐射点云模型;处理模块12,还用于对3D场景点云模型进行反向传播训练,以获取训练后的3D场景点云模型,并将训练后的3D场景点云模型嵌入待重建场景的前端展示层界面进行显示处理。
本实施例中的三维重建装置可以执行上述图1所示的方法实例的,其实现原理和技术效果相类似,此处不再赘述。
在一种可能的实施方案中,获取模块11具体用于:
对于每张图片中的每个点,根据第一点云及图片对应的相机参数,采用哈希编码,获取点在每层中的第一坐标临近的第二坐标;并查询哈希列表,以获取第二坐标对应的第二特征向量。
采用线性插值,对第二特征向量进行处理,获取点在每层中的第一坐标的具体值。
查询哈希列表,分别获取每层中的第一坐标对应的第一特征向量。
在一种可能的实施方案中,获取模块11,具体用于:
根据关键视角,获取待重建场景下的视频数据,并将视频数据进行关键帧抽取处理,以获取基于关键视角下的多张图片。
或者,根据关键视角,获取待重建场景下的多张图像数据,并将多张图像数据作为关键视角下的多张图片。
在一种可能的实施方案中,获取模块11还用于:
获取显示请求,显示请求包括:待显示的视角。
处理模块12还用于:
根据显示请求,从训练后的3D场景点云模型中,获取与待显示的视角对应的二维图片,并将二维图片嵌入待重建场景的前端展示层界面进行显示处理。
在一种可能的实施方案中,相机参数包括:相机的位姿参数、相机的内参数及相机的外参数。
图5为本申请提供的一种电子设备的结构示意图,如图5所示,该服务器20包括:处理器21,存储器22,以及通信接口23;其中,存储器22用于存储处理器421可执行的可执行指令;处理器21配置为经由执行可执行指令来执行前述任一方法实施例中的技术方案。
可选的,存储器22既可以是独立的,也可以跟处理器21集成在一起。
可选的,当存储器22是独立于处理器21之外的器件时,电子设备20还可以包括:总线,用于将上述器件连接起来。
该服务器用于执行前述任一方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。
本申请实施例还提供一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现前述任一实施例提供的技术方案。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。