三维重建方法、三维重建装置和计算机可读存储介质转让专利

申请号 : CN201911312900.9

文献号 : CN111161336B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 不公告发明人

申请人 : 北京城市网邻信息技术有限公司

摘要 :

本公开实施例提供一种三维空间的三维重建方法、三维重建装置和计算机可读存储介质。根据本公开实施例的三维空间的三维重建方法,包括:利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵;根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息;利用所述旋转矩阵、所述平移向量和所述位置信息进行对于所述三维空间的三维重建。

权利要求 :

1.一种三维空间的三维重建方法,包括:

利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵;

根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息;

利用所述旋转矩阵、所述平移向量和所述位置信息进行对于所述三维空间的基于运动恢复结构的三维重建;

其中,所述方法还包括:根据所述三维空间的几何先验,对所述三维空间的三维重建的结果进行集束调整,具体包括以下至少一个:对所述三维空间的三维重建中所得到的至少一条直线进行参数化,并利用针对所述至少一条直线的共线性约束进行集束调整;

对所述三维空间的三维重建中所得到的至少两条共面直线进行参数化,并利用针对所述至少两条共面直线的共面性约束进行集束调整。

2.如权利要求1所述的方法,其中,所述三维空间的几何先验包括以下至少一个:所述三维空间中相对的两个面互相平行、所述三维空间中相邻的两个面互相垂直、所述三维空间中相交于一个点的三个面两两相互垂直。

3.如权利要求1所述的方法,其中,利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测包括:将所述全景图像校正为透视图像;

对所述透视图像进行几何形状检测,其中,所述几何形状检测包括直线检测;

至少根据所述直线检测的结果,确定所述三维空间中的至少一个灭点。

4.如权利要求3所述的方法,其中,利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵包括:至少根据多个透视图像中的至少两张透视图像的所述直线检测的结果和所确定的灭点,确定所述两张透视图像对应的相机的旋转矩阵;或至少根据多个透视图像中的至少一张透视图像的所述直线检测的结果和所确定的灭点,对通过所述相机的惯性测量单元得到的初始旋转矩阵进行修正,获取所述至少一张透视图像对应的相机的旋转矩阵。

5.如权利要求3所述的方法,其中,根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息包括:针对多个透视图像分别进行特征点检测,并根据所述特征点检测的结果进行特征点匹配,获取在所述多个透视图像中的至少两张透视图像上的至少一条直线;

针对所述至少一条直线构建共线性约束,至少根据所构建的所述共线性约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。

6.如权利要求3所述的方法,其中,利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,还包括:至少根据所述直线检测的结果,进行所述几何关系检测,其中,所述几何关系检测包括以下至少一个:共面直线组检测、平行直线组检测、共线直线组检测、垂直直线组检测。

7.如权利要求6所述的方法,其中,根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息包括:针对多个透视图像分别进行特征点检测,并获取至少两条直线,所述至少两条直线分别存在于所述多个透视图像中的至少两张透视图像上,并满足所检测的几何关系;

针对所述至少两条直线构建几何关系约束,至少根据所构建的所述几何关系约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。

8.如权利要求1-7中任一项所述的方法,其中,所述三维空间为建筑物室内空间,包括彼此平行的底面和顶面以及至少部分位于所述底面和所述顶面之间且垂直于所述底面和所述顶面的墙面以形成为至少部分封闭。

9.一种三维空间的三维重建装置,包括:

检测单元,配置为利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵;

确定单元,配置为根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息;

重建单元,配置为利用所述旋转矩阵、所述平移向量和所述位置信息进行对于所述三维空间的基于运动恢复结构的三维重建;

其中,所述装置还包括:调整单元,配置为根据所述三维空间的几何先验,对所述三维空间的三维重建的结果进行集束调整;

所述调整单元通过下至少一个方式进行集束调整:

对所述三维空间的三维重建中所得到的至少一条直线进行参数化,并利用针对所述至少一条直线的共线性约束进行集束调整;

对所述三维空间的三维重建中所得到的至少两条共面直线进行参数化,并利用针对所述至少两条共面直线的共面性约束进行集束调整。

10.如权利要求9所述的装置,其中,所述三维空间的几何先验包括以下至少一个:所述三维空间中相对的两个面互相平行、所述三维空间中相邻的两个面互相垂直、所述三维空间中相交于一个点的三个面两两相互垂直。

11.如权利要求9所述的装置,其中,

所述检测单元将所述全景图像校正为透视图像;

对所述透视图像进行几何形状检测,其中,所述几何形状检测包括直线检测;

至少根据所述直线检测的结果,确定所述三维空间中的至少一个灭点。

12.如权利要求11所述的装置,其中,

所述检测单元至少根据多个透视图像中的至少两张透视图像的所述直线检测的结果和所确定的灭点,确定所述两张透视图像对应的相机的旋转矩阵;或至少根据多个透视图像中的至少一张透视图像的所述直线检测的结果和所确定的灭点,对通过所述相机的惯性测量单元得到的初始旋转矩阵进行修正,获取所述至少一张透视图像对应的相机的旋转矩阵。

13.如权利要求11所述的装置,其中,

所述确定单元针对多个透视图像分别进行特征点检测,并根据所述特征点检测的结果进行特征点匹配,获取在所述多个透视图像中的至少两张透视图像上的至少一条直线;

针对所述至少一条直线构建共线性约束,至少根据所构建的所述共线性约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。

14.如权利要求11所述的装置,其中,

所述检测单元至少根据所述直线检测的结果,进行所述几何关系检测,其中,所述几何关系检测包括以下至少一个:共面直线组检测、平行直线组检测、共线直线组检测、垂直直线组检测。

15.如权利要求14所述的装置,其中,

所述确定单元针对多个透视图像分别进行特征点检测,并获取至少两条直线,所述至少两条直线分别存在于所述多个透视图像中的至少两张透视图像上,并满足所检测的几何关系;

针对所述至少两条直线构建几何关系约束,至少根据所构建的所述几何关系约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。

16.如权利要求9-15中任一项所述的装置,其中,所述三维空间为建筑物室内空间,包括彼此平行的底面和顶面以及至少部分位于所述底面和所述顶面之间且垂直于所述底面和所述顶面的墙面以形成为至少部分封闭。

17.一种三维空间的三维重建装置,包括:

一个或多个处理器;和

一个或多个存储器,在所述存储器中存储有计算机程序指令,

其中,在所述计算机程序指令被所述一个或多个处理器运行时,执行如权利要求1-8中任一项所述的三维重建方法。

18.一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行如权利要求1-8中任一项所述的三维重建方法。

说明书 :

三维重建方法、三维重建装置和计算机可读存储介质

技术领域

[0001] 本公开的实施例涉及图像处理领域,尤其涉及一种三维重建方法、三维重建装置和计算机可读存储介质。

背景技术

[0002] 三维重建是指从二维图像恢复出三维物体的三维模型,计算机三维重建是计算机视觉与计算机图形学中一个重要的研究领域。需要一种能够有效针对建筑物内部空间进行三维重建的方法和装置,以更加准确高效地获取建筑物内部空间的三维结构。

发明内容

[0003] 为解决上述技术问题,根据本公开的一个方面,提供一种三维空间的三维重建方法,包括:利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵;根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息;利用所述旋转矩阵、所述平移向量和所述位置信息进行对于所述三维空间的三维重建。
[0004] 根据本公开的一些实施例,其中,所述三维空间的几何先验包括以下至少一个:所述三维空间中相对的两个面互相平行、所述三维空间中相邻的两个面互相垂直、所述三维空间中相交于一个点的三个面两两相互垂直。
[0005] 根据本公开的一些实施例,其中,利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测包括:将所述全景图像校正为透视图像;对所述透视图像进行几何形状检测,其中,所述几何形状检测包括直线检测;至少根据所述直线检测的结果,确定所述三维空间中的至少一个灭点。
[0006] 根据本公开的一些实施例,其中,利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵包括:至少根据多个透视图像中的至少两张透视图像的所述直线检测的结果和所确定的灭点,确定所述两张透视图像对应的相机的旋转矩阵;或至少根据多个透视图像中的至少一张透视图像的所述直线检测的结果和所确定的灭点,对通过所述相机的惯性测量单元得到的初始旋转矩阵进行修正,获取所述至少一张透视图像对应的相机的旋转矩阵。
[0007] 根据本公开的一些实施例,其中,根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息包括:针对多个透视图像分别进行特征点检测,并根据所述特征点检测的结果进行特征点匹配,获取在所述多个透视图像中的至少两张透视图像上的至少一条直线;针对所述至少一条直线构建共线性约束,至少根据所构建的所述共线性约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。
[0008] 根据本公开的一些实施例,其中,利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,还包括:至少根据所述直线检测的结果,进行所述几何关系检测,其中,所述几何关系检测包括以下至少一个:共面直线组检测、平行直线组检测、共线直线组检测、垂直直线组检测。
[0009] 根据本公开的一些实施例,其中,根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息包括:针对多个透视图像分别进行特征点检测,并获取至少两条直线,所述至少两条直线分别存在于所述多个透视图像中的至少两张透视图像上,并满足所检测的几何关系;针对所述至少两条直线构建几何关系约束,至少根据所构建的所述几何关系约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。
[0010] 根据本公开的一些实施例,所述方法还包括:根据所述三维空间的几何先验,对所述三维空间的三维重建的结果进行集束调整。
[0011] 根据本公开的一些实施例,其中,根据所述三维空间的几何先验,对所述三维空间的三维重建的结果进行集束调整包括以下至少一个:对所述三维空间的三维重建中所得到的至少一条直线进行参数化,并利用针对所述至少一条直线的共线性约束进行集束调整;对所述三维空间的三维重建中所得到的至少两条共面直线进行参数化,并利用针对所述至少两条共面直线的共面性约束进行集束调整。
[0012] 根据本公开的一些实施例,其中,所述三维空间为建筑物室内空间,包括彼此平行的底面和顶面以及至少部分位于所述底面和所述顶面之间且垂直于所述底面和所述顶面的墙面以形成为至少部分封闭。
[0013] 根据本公开的另一方面,提供一种三维空间的三维重建装置,包括:检测单元,配置为利用所述三维空间的几何先验,对所述三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵;确定单元,配置为根据所述三维空间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息;重建单元,配置为利用所述旋转矩阵、所述平移向量和所述位置信息进行对于所述三维空间的三维重建。
[0014] 根据本公开的一些实施例,其中,所述三维空间的几何先验包括以下至少一个:所述三维空间中相对的两个面互相平行、所述三维空间中相邻的两个面互相垂直、所述三维空间中相交于一个点的三个面两两相互垂直。
[0015] 根据本公开的一些实施例,其中,所述检测单元将所述全景图像校正为透视图像;对所述透视图像进行几何形状检测,其中,所述几何形状检测包括直线检测;至少根据所述直线检测的结果,确定所述三维空间中的至少一个灭点。
[0016] 根据本公开的一些实施例,其中,所述检测单元至少根据多个透视图像中的至少两张透视图像的所述直线检测的结果和所确定的灭点,确定所述两张透视图像对应的相机的旋转矩阵;或至少根据多个透视图像中的至少一张透视图像的所述直线检测的结果和所确定的灭点,对通过所述相机的惯性测量单元得到的初始旋转矩阵进行修正,获取所述至少一张透视图像对应的相机的旋转矩阵。
[0017] 根据本公开的一些实施例,其中,所述确定单元针对多个透视图像分别进行特征点检测,并根据所述特征点检测的结果进行特征点匹配,获取在所述多个透视图像中的至少两张透视图像上的至少一条直线;针对所述至少一条直线构建共线性约束,至少根据所构建的所述共线性约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。
[0018] 根据本公开的一些实施例,其中,所述检测单元至少根据所述直线检测的结果,进行所述几何关系检测,其中,所述几何关系检测包括以下至少一个:共面直线组检测、平行直线组检测、共线直线组检测、垂直直线组检测。
[0019] 根据本公开的一些实施例,其中,所述确定单元针对多个透视图像分别进行特征点检测,并获取至少两条直线,所述至少两条直线分别存在于所述多个透视图像中的至少两张透视图像上,并满足所检测的几何关系;针对所述至少两条直线构建几何关系约束,至少根据所构建的所述几何关系约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。
[0020] 根据本公开的一些实施例,所述装置还包括:调整单元,配置为根据所述三维空间的几何先验,对所述三维空间的三维重建的结果进行集束调整。
[0021] 根据本公开的一些实施例,其中,所述调整单元通过下至少一个方式进行集束调整:对所述三维空间的三维重建中所得到的至少一条直线进行参数化,并利用针对所述至少一条直线的共线性约束进行集束调整;对所述三维空间的三维重建中所得到的至少两条共面直线进行参数化,并利用针对所述至少两条共面直线的共面性约束进行集束调整。
[0022] 根据本公开的一些实施例,其中,所述三维空间为建筑物室内空间,包括彼此平行的底面和顶面以及至少部分位于所述底面和所述顶面之间且垂直于所述底面和所述顶面的墙面以形成为至少部分封闭。
[0023] 根据本公开的另一方面,提供一种三维空间的三维重建装置,包括:一个或多个处理器;和一个或多个存储器,在所述存储器中存储有计算机程序指令,其中,在所述计算机程序指令被所述一个或多个处理器运行时,执行如前任一项所述的三维重建方法。
[0024] 根据本公开的另一方面,提供一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行如前任一项所述的三维重建方法。
[0025] 根据本公开的再一方面,提供一种三维房间的重建方法,包括:利用所述三维房间的几何先验,对所述三维房间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵;根据所述三维房间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息;利用所述旋转矩阵、所述平移向量和所述位置信息进行对于所述三维房间的三维重建。
[0026] 根据本公开的一些实施例,其中,所述三维房间的几何先验包括以下至少一个:所述三维房间中相对的两个面互相平行、所述三维房间中相邻的两个面互相垂直、所述三维房间中相交于一个点的三个面两两相互垂直。
[0027] 根据本公开的一些实施例,其中,利用所述三维房间的几何先验,对所述三维房间的多个全景图像分别进行几何形状检测和几何关系检测包括:将所述全景图像校正为透视图像;对所述透视图像进行几何形状检测,其中,所述几何形状检测包括直线检测;至少根据所述直线检测的结果,确定所述三维房间中的至少一个灭点。
[0028] 根据本公开的一些实施例,其中,利用所述三维房间的几何先验,对所述三维房间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵包括:至少根据多个透视图像中的至少两张透视图像的所述直线检测的结果和所确定的灭点,确定所述两张透视图像对应的相机的旋转矩阵;或至少根据多个透视图像中的至少一张透视图像的所述直线检测的结果和所确定的灭点,对通过所述相机的惯性测量单元得到的初始旋转矩阵进行修正,获取所述至少一张透视图像对应的相机的旋转矩阵。
[0029] 根据本公开的一些实施例,其中,根据所述三维房间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息包括:针对多个透视图像分别进行特征点检测,并根据所述特征点检测的结果进行特征点匹配,获取在所述多个透视图像中的至少两张透视图像上的至少一条直线;针对所述至少一条直线构建共线性约束,至少根据所构建的所述共线性约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。
[0030] 根据本公开的一些实施例,其中,利用所述三维房间的几何先验,对所述三维房间的多个全景图像分别进行几何形状检测和几何关系检测,还包括:至少根据所述直线检测的结果,进行所述几何关系检测,其中,所述几何关系检测包括以下至少一个:共面直线组检测、平行直线组检测、共线直线组检测、垂直直线组检测。
[0031] 根据本公开的一些实施例,其中,根据所述三维房间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息包括:针对多个透视图像分别进行特征点检测,并获取至少两条直线,所述至少两条直线分别存在于所述多个透视图像中的至少两张透视图像上,并满足所检测的几何关系;针对所述至少两条直线构建几何关系约束,至少根据所构建的所述几何关系约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息。
[0032] 根据本公开的一些实施例,所述方法还包括:根据所述三维房间的几何先验,对所述三维房间的三维重建的结果进行集束调整。
[0033] 根据本公开的一些实施例,其中,根据所述三维房间的几何先验,对所述三维房间的三维重建的结果进行集束调整包括以下至少一个:对所述三维房间的三维重建中所得到的至少一条直线进行参数化,并利用针对所述至少一条直线的共线性约束进行集束调整;对所述三维房间的三维重建中所得到的至少两条共面直线进行参数化,并利用针对所述至少两条共面直线的共面性约束进行集束调整。
[0034] 根据本公开的一些实施例,其中,所述三维房间中包括彼此平行的底面和顶面以及至少部分位于所述底面和所述顶面之间且垂直于所述底面和所述顶面的墙面以形成为至少部分封闭。
[0035] 根据本公开的又一方面,提供一种三维房间的重建装置,包括:检测单元,配置为利用所述三维房间的几何先验,对所述三维房间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄所述全景图像的相机的旋转矩阵;确定单元,配置为根据所述三维房间的几何先验,针对在所述几何形状检测和所述几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于所述三维重建的拍摄所述全景图像的相机的平移向量和位置信息;重建单元,配置为利用所述旋转矩阵、所述平移向量和所述位置信息进行对于所述三维房间的三维重建。
[0036] 根据本公开的再一方面,提供一种三维房间的重建装置,包括:一个或多个处理器;和一个或多个存储器,在所述存储器中存储有计算机程序指令,其中,在所述计算机程序指令被所述一个或多个处理器运行时,执行如前任一项所述的三维房间的重建方法。
[0037] 根据本公开的另一方面,提供一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行如前任一项所述的三维房间的重建方法。
[0038] 根据本公开所提供的三维重建方法和三维重建装置,能够利用三维空间,特别是建筑物内部空间的特定的几何先验,针对全景图像进行几何形状检测、几何关系检测,并作为约束条件获取三维重建所需的各项参数,从而辅助实现三维重建的过程。根据本公开的三维重建方法和三维重建装置能够更加准确高效地进行三维重建,从而获取建筑物内部空间的精准三维内部结构。

附图说明

[0039] 为了更清楚地说明本公开实施例中的技术方案,下面将对本公开实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0040] 图1示出根据本公开实施例的三维空间的三维重建方法的流程图;
[0041] 图2示出根据本公开实施例的三维重建方法所构建的三维户型图的示例;
[0042] 图3示出根据本公开实施例的三维空间的三维重建装置的框图;
[0043] 图4示出根据本公开实施例的三维空间的三维重建装置的框图;
[0044] 图5示出根据本公开实施例的三维空间的三维重建装置的结构示意图;
[0045] 图6示出根据本公开实施例的一种存储介质的示意图。

具体实施方式

[0046] 为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0047] 除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
[0048] 本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步。
[0049] 伴随着全景相机的普及,全景图像越来越常见。近年来,伴随着人工智能技术的热门、以及广大人民对于租房购房的强烈需求,越来越多的租房售房平台使用全景相机采集房源的全景图像。为了能够增强网络看房体验,希望能够有效利用这些房源的全景图像进行三维重建,以产生更加具有真实感的三维房间的示意图。
[0050] 运动恢复结构(SfM,Structure from motion)是一种根据计算机视觉理论计算相机位姿(位置和姿态)和物体三维结构,并进行三维重建的技术。基于SfM的三维重建技术一般需要利用相机拍摄多张全景图像,并通过获取相机的平移向量、旋转矩阵以及全景图像中的像素点或几何结构的位置信息,以针对三维空间进行三维重建。然而,基于SfM的针对建筑物内部空间的三维重建方法却依旧是个具有挑战性的问题。这一问题的难点,主要来源于以下两个方面:首先,建筑物内部空间往往具有大量的如白墙等的纹理缺失区域,这部分区域难以提取特征点,从而难以形成特征匹配用于后续的三维重建;其次,建筑物内部空间这种室内场景往往存在大量的家具或内饰等杂乱和对空间结构造成遮挡的物品,非常不利于特征点和墙角等三维重建关键信息的提取和检测。
[0051] 本公开的至少一个实施例提供一种三维空间的三维重建方法、三维重建装置和计算机可读存储介质。下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
[0052] 下面参照图1描述根据本公开实施例的三维空间的三维重建方法,图1示出该三维空间的三维重建方法100的流程图。该三维重建方法100包括如下的步骤S101~S103:
[0053] 步骤S101:利用三维空间的几何先验,对三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄全景图像的相机的旋转矩阵;
[0054] 步骤S102:根据三维空间的几何先验,针对在几何形状检测和几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于三维重建的拍摄全景图像的相机的平移向量和位置信息;
[0055] 步骤S103:利用旋转矩阵、平移向量和位置信息进行对于三维空间的三维重建。
[0056] 可选地,图1中所示的三维重建方法可以应用于建筑物室内空间,例如可以针对三维房间进行三维重建,从而得到各个房间的三维模型。例如,这里的建筑物室内空间可以包括彼此平行的底面和顶面,以及至少部分位于底面和顶面之间且垂直于底面和顶面的墙面以形成为至少部分封闭。可选地,室内空间可以包括住宅、办公室等,并且可以包括一个或多个子空间,例如该多个子空间位于同一层中。例如,当室内空间为住宅时,室内空间可以包括客厅子空间、主卧子空间、次卧子空间、阳台子空间、厕所子空间、厨房子空间等。以上关于室内空间的说明仅为示例,本公开包括但不限于此。针对三维空间进行三维重建的方法可以是通过普通相机拍摄的多个二维图像拼接后进行三维重建,也可以是针对通过全景相机拍摄的全景图像进行三维重建。在本公开实施例中,可以通过全景相机针对三维空间拍摄多张全景图像,从而利用这些全景图像实行快速有效的三维重建过程。
[0057] 如图1所示,在步骤S101中,利用三维空间的几何先验,对三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄全景图像的相机的旋转矩阵。
[0058] 在本公开实施例中,三维空间的几何先验(geometry prior)可以是针对某个特定三维空间的几何先验。例如,针对作为建筑物室内空间的三维空间,可能会基于房间的基本几何结构,而满足下述基本的几何关系中的至少一个:针对不同视角下同一条直线彼此重合的共线性关系,直线与直线之间的共面关系、平行关系、垂直关系,房间内天花板和地面相互平行,相对的墙面间相互平行,相邻的墙面间相互垂直,墙面与天花板或地面相互垂直,或者相交于一点的三个面两两垂直等。根据上述几何先验的各个示例,可以针对三维空间中所获取的多个全景图像构建更加具体的几何约束,从而进一步辅助确定进行三维重建的各个参数,提高三维重建结果的精确度。
[0059] 在本公开实施例中,考虑到三维空间的全景图像中的线条一般会产生较为强烈的扭曲,因此,可以首先将全景图像校正为透视图像,并以校正后的透视图像为基础进行后续的图像处理过程。在一个示例中,可以通过立方投影将全景图像投影为立方透视图像;在另一个示例中,可以通过经纬度投影将全景图像投影为经纬度透视图像;在再一个示例中,还可以通过柱状投影将全景图像投影为柱状透视图像等。上述对全景图像的校正方式仅为示例,在实际应用中,可以采用任何所需的全景图像校正方式,在此不做限制。例如,针对三维户型的全景图像,可以选择利用立方投影,将全景图像投影为具有前后、上下、左右六个视角的立方透视图像,并据此确定两两正交的三个曼哈顿主方向(如x、y、z三个坐标轴方向)。
[0060] 在将全景图像校正为透视图像之后,可选地,可以利用前述三维空间的几何先验对校正后的透视图像进行几何形状检测和几何关系检测。例如,可以利用某些几何形状或几何关系检测工具来针对校正后的透视图像进行检测,也可以通过深度学习的方式,利用训练好的神经网络对几何形状或几何关系等进行检测。可选地,对透视图像进行几何形状检测可以包括对透视图像进行直线检测,例如,可以调用Line Segment Detector等开源的直线段检测工具来对透视图像进行直线检测。当然,对透视图像的几何形状检测还可以包括其他方式,例如可以根据特定的应用场景检测某些特殊形状,如圆形、方形等,在此不做限制。
[0061] 在对透视图像进行了包括直线检测的几何形状检测之后,可选地,可以根据所检测到的直线确定三维空间中的至少一个灭点。根据本公开实施例,当三维空间为建筑物室内空间,即房间时,考虑到前述三维空间的几何先验,可以认为房间中的各相邻的墙体、天花板、地面之间相互垂直,从而会产生三个方向相互正交(即沿三个曼哈顿主方向)的灭点。在从透视图像中检测到直线之后,可以据此确定各个方向的灭点。在一个示例中,可以根据检测到的直线对相互正交的各个方向的灭点进行投票,以获取灭点的精确位置。例如,可以根据检测到的直线所指向的方向,针对相应灭点所有可能存在的位置进行打分,从中选择分数最高的结果作为通过直线所确定的相应灭点的位置。在另一个示例中,也可以利用训练好的针对灭点检测的神经网络对灭点位置进行检测,以得到灭点的精确位置。可选地,还可以将已确定的灭点与所检测到的直线的中点连接,以判断上述灭点和直线中点的连线与直线是否满足一定阈值内的共线关系,并采用迭代方式不断调整灭点的具体位置。
[0062] 在确定三维空间中的灭点之后,根据本公开实施例,还可以利用所确定的灭点来进一步完善在三维空间中的直线检测结果。例如,当三维空间为建筑物室内的房间时,可以基于房间内相互垂直的三个曼哈顿主方向,而对所检测到的直线进行优化。可选地,可以通过以下至少一种方式来优化直线检测的结果:可以将灭点与某条直线的连线周围的一定距离范围或角度范围内的直线进行相互合并;可以根据三个方向的灭点,针对其中某个方向的直线的缺失来对该方向的直线进行补充(如三个曼哈顿主方向xyz中,存在沿xy两个方向的直线,可以据此补充沿z方向的未能检测到的直线);还可以根据直线的交比的关系,来滤除某些不满足此关系的直线,以得到更加精确的直线检测结果。
[0063] 以上描述了利用三维空间的几何先验,对三维空间的全景图像进行几何形状检测的过程。在获得针对透视图像的几何形状检测结果(例如直线检测结果)之后,还可以至少根据直线检测的结果,进行几何关系检测。在几何关系检测过程中,所检测到的满足某几何关系的直线组中,可以为两两组成的直线对,也可以为包括两条以上直线在内的直线的集合。在后续利用几何关系构建几何约束时,可选地,可以直接利用上述直线对之间的几何关系构建约束,也可以利用直线集合中的多条直线之间的两两组合构建几何约束,还可以直接利用多条直线构建几何约束等,在此不做限制。在之后的具体示例中,主要针对满足几何关系的直线对构建几何约束。此外,根据本公开实施例,几何关系检测可以包括以下至少一个:共面直线组检测、平行直线组检测、共线直线组检测、垂直直线组检测。可选地,当三维空间为建筑物室内的房间时,针对几何关系检测中的共面直线组检测,可以限定共面直线组共同所在的平面符合三个曼哈顿主方向xyz的其中之一。此外,还可以针对所检测到的共面直线之间的相对关系进行进一步的类型划分,以用于之后针对特定几何关系的几何约束的构建,例如,可以将共面直线组进一步划分为:平行共面直线组(例如两条沿x方向的共面直线)、垂直共面直线组(例如分别沿x和y方向的两条共面直线)、共线共面直线组(例如共同沿x方向,且端点相近的两条共面直线)等多种类型的共面直线组。
[0064] 根据本公开至少一个实施例,上述利用三维空间的几何先验,对三维空间的全景图像进行的几何形状检测和几何关系检测的具体方式,可以分别应用于多个全景图像中的每个全景图像,也可以应用于多个全景图像的其中一部分全景图像,具体的应用方式也不做限制。在完成上述几何形状检测和几何关系检测之后,还可以利用检测结果确定用于三维重建的拍摄全景图像的相机的旋转矩阵。可选地,当已经获取到至少两张透视图像的至少直线检测结果并确定灭点后,可以据此确定该至少两张透视图像对应的相机的旋转矩阵。或者,可选地,当用于拍摄全景图像的相机搭载了惯性测量单元(IMU,Inertial Measurement Units)时,可以利用IMU测量相机在拍摄全景图像时的旋转姿态,以获取初始旋转矩阵,记录该初始旋转矩阵的数据可以包括在全景图像数据之中,例如拍摄不同的全景图像的相机的初始旋转矩阵不同;随后,可以利用所获取的至少一张透视图像的至少直线检测结果和灭点对初始旋转矩阵进行调整。例如,在建筑物室内的房间中,可以针对三个曼哈顿主方向,通过最小化相同方向上所检测到的直线与灭点的距离,来进一步优化该至少一张透视图像对应的相机的旋转矩阵。
[0065] 在获取到一个或多个相机的旋转矩阵之后,可以应用上述相机的旋转矩阵进行后续的三维重建的操作,也可以引入该相机的旋转矩阵进行三维重建后的集束调整过程,也即进行重投影校正。
[0066] 在步骤S102中,根据三维空间的几何先验,针对在几何形状检测和几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于三维重建的拍摄全景图像的相机的平移向量和位置信息。
[0067] 根据本公开实施例,可以针对多个透视图像分别进行特征点检测,并根据特征点检测的结果进行特征点匹配。可选地,通过对上述多个透视图像进行特征点匹配的结果,可以得到分别存在于至少两张透视图像上的同一条直线,也可以得到分别存在于至少两张透视图像上,并满足之前所检测的几何关系的至少两条直线,以用于构建相应的几何约束。
[0068] 可选地,可以针对分别存在于至少两张透视图像上的同一条直线构建共线性约束,并至少根据所构建的共线性约束确定用于三维重建的拍摄全景图像的相机的平移向量和位置信息。例如,当对于相机i所获取的全景图像来说,所检测到的直线l的中点 的深度为 可以将 表示为公式(1):
[0069]
[0070] 其中Ti为相机i的平移向量, 是相机i的光心到 的射线的单位向量。
[0071] 同理,当直线l同时位于相机j所获取的全景图像时,可以将在相机j所获取的全景图像上检测到的直线l的中点Plj表示为公式(2):
[0072]
[0073] 其中,Tj为相机j的平移向量, 是相机j的光心到Plj的射线的单位向量, 为Plj的深度。
[0074] 在此基础上,可以针对相机i所获取的全景图像中所表示的直线l和相机j所获取的全景图像中所表示的直线l构建共线性约束,将该几何约束表示为公式(3):
[0075]
[0076] 其中Nl1、Nl2为直线l的两个正交方向(例如,针对建筑物室内的房间,可以为三个曼哈顿主方向xyz中的任意两个方向,例如xy、xz或yz)上的单位向量。据此,可以根据所构建的共线性约束分别确定相机i和相机j的平移向量Ti、Tj和直线l的位置信息(例如可以为中点 Plj或深度 )。
[0077] 此外,可选地,还可以针对分别存在于至少两张透视图像上,并满足之前所检测的几何关系的至少两条直线构建针对相应的几何关系的几何约束,以至少根据所构建的几何关系约束确定用于三维重建的拍摄全景图像的相机的平移向量和位置信息。
[0078] 例如,当对于相机j所获取的全景图像来说,所检测到的直线m的中点 的深度为可以将 表示为公式(4):
[0079]
[0080] 其中,Tj为相机j的平移向量, 是相机j的光心到 的射线的单位向量。
[0081] 在此基础上,当前述直线l和直线m满足共面的几何关系时,可以针对相机i所获取的全景图像中所表示的直线l和相机j所获取的全景图像中所表示的直线m构建共面性约束,将几何约束表示为公式(5):
[0082]
[0083] 其中Nl,m为这对直线所在平面的法向量。例如,针对建筑物室内的房间,针对三个曼哈顿主方向xyz,当直线l和直线m所在平面为xy平面时,Nl,m可以指向z方向。据此,可以根据所构建的共线性约束分别确定相机i和相机j的平移向量Ti、Tj和直线l、m的位置信息(例如可以为中点 或深度 )。
[0084] 在步骤S103中,可以利用旋转矩阵、平移向量和位置信息进行对于三维空间的三维重建。
[0085] 根据本公开实施例,在已经获取了用于拍摄全景图像的相机的旋转矩阵、平移向量和用于三维重建所需的位置信息之后,可以利用例如SfM的方式对三维空间进行三维重建。在一个示例中,可以利用增量式SfM的方法,针对初始图像对计算相机位姿,并进行不断迭代优化,以获取三维重建结果;在另一个示例中,也可以利用全局式SfM的方法,针对所有的相机位姿将计算误差分摊到各个旋转或平移上,以获取三维重建结果。
[0086] 可选地,在获取了三维重建的结果之后,为了进一步提高三维重建的精确度,还可以根据三维空间的几何先验,对三维空间的三维重建的结果进行集束调整(Bundle Adjustment)。具体地,在一个示例中,可以对三维空间的三维重建中所得到的至少一条直线进行参数化,并利用针对至少一条直线的共线性约束进行集束调整。例如,针对直线l,以Al表示直线l的方向,并使用特定算法(例如,可以调用用于非线性优化的Ceres库使用Levenberg-Marquardt算法)计算得到直线的垂线Λl,并考虑共线性约束,使得满足公式(6),以进行集束调整。
[0087] Al·Λl=0                   (6)
[0088] 在另一个示例中,可以对三维空间的三维重建中所得到的至少两条共面直线进行参数化,并利用针对至少两条共面直线的共面性约束进行集束调整。例如,针对共面的两条直线l和m,将其分别参数化为Λl与Λm,并使用特定算法(例如可以调用Ceres库使用Levenberg-Marquardt算法)计算得到沿l和m共同所在的平面法向的直线间的距离Alm,考虑共面性约束,使得满足公式(7),以进行集束调整:
[0089] (Λl-Λm)·Alm=0             (7)
[0090] 上述集束调整的方式可以使得能够结合相应的约束来优化三维重建方法的重投影误差,得到更加精确的三维重建的结果。其中,在具体优化过程中,可以考虑上述利用几何约束的集束调整方式,也可以考虑其他的集束调整方式对三维重建的结果进行优化。可选地,可以针对不同的集束调整方式赋予相应的权重,以适应于不同的具体应用场景。
[0091] 图2示出了一个示例中针对住宅中各房间的全景图像,根据本公开实施例的三维重建方法所构建的三维户型图(或者,称为立体户型图)的示例。根据图2可知,该示例性的三维户型图示出了住宅的各个子空间(例如,客厅子空间、主卧子空间、次卧子空间、阳台子空间、厕所子空间、厨房子空间等)和各个子空间的位置排布等。
[0092] 根据本公开实施例所提供的三维重建方法,能够利用三维空间,特别是建筑物内部空间的特定的几何先验,针对全景图像进行几何形状检测、几何关系检测,并作为约束条件获取三维重建所需的各项参数,从而辅助实现三维重建的过程。根据本公开的三维重建方法能够克服建筑物内部空间纹理缺失或家具内饰遮挡等所造成的问题,从而更加准确高效地进行三维重建,以获取建筑物内部空间的精准三维内部结构。
[0093] 根据本公开实施例的三维重建方法所构建的例如房间的内部空间结构,能够向网络看房的用户提供更加具备真实感的三维房间模型,更加形象化地针对各个房源的户型结构、室内空间关系、房间内部尺寸等进行展示,以有利于远程的网络用户获得沉浸式的看房体验。
[0094] 下面,参照图3来描述根据本公开实施例的三维空间的三维重建装置。图3示出了根据本公开实施例的三维重建装置300的框图。如图3所示,三维重建装置300包括检测单元310、确定单元320和重建单元330。除了这些单元以外,三维重建装置300还可以包括其他部件,然而,由于这些部件与本公开实施例的内容无关,因此在这里省略其图示和描述。此外,由于根据本公开实施例的三维重建装置300执行的下述操作的具体细节与在上文中参照图
1-图2描述的细节相同,因此在这里为了避免重复而省略对相同细节的重复描述。
[0095] 图3中的三维重建装置300可以应用于建筑物室内空间,例如可以针对三维房间进行三维重建,从而得到各个房间的三维模型。具体地,这里的建筑物室内空间可以包括彼此平行的底面和顶面,以及至少部分位于底面和顶面之间且垂直于底面和顶面的墙面以形成为至少部分封闭。可选地,室内空间可以包括住宅、办公室等,并且可以包括一个或多个子空间,例如该多个子空间位于同一层中。例如,当室内空间为住宅时,室内空间可以包括客厅子空间、主卧子空间、次卧子空间、阳台子空间、厕所子空间、厨房子空间等。以上关于室内空间的说明仅为示例,本公开包括但不限于此。针对三维空间进行三维重建的装置可以是通过普通相机拍摄的多个二维图像拼接后进行三维重建,也可以是针对通过全景相机拍摄的全景图像进行三维重建。在本公开实施例中,可以通过全景相机针对三维空间拍摄多张全景图像,从而利用这些全景图像实行快速有效的三维重建过程。
[0096] 如图3所示,检测单元310利用三维空间的几何先验,对三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄全景图像的相机的旋转矩阵。
[0097] 在本公开至少一个实施例中,三维空间的几何先验(geometry prior)可以是针对某个特定三维空间的几何先验。例如,针对作为建筑物室内空间的三维空间,可能会基于房间的基本几何结构,而满足下述基本的几何关系中的至少一个:针对不同视角下同一条直线彼此重合的共线性关系,直线与直线之间的共面关系、平行关系、垂直关系,房间内天花板和地面相互平行,相对的墙面间相互平行,相邻的墙面间相互垂直,墙面与天花板或地面相互垂直,或者相交于一点的三个面两两垂直等。根据上述几何先验的各个示例,可以针对三维空间中所获取的多个全景图像构建更加具体的几何约束,从而进一步辅助确定进行三维重建的各个参数,提高三维重建结果的精确度。用于三维空间的三维重建的多个全景图像例如可以存储在本地存储器中,或者可以通过网络(服务器或云等)获取。
[0098] 在本公开至少一个实施例中,考虑到三维空间的全景图像中的线条一般会产生较为强烈的扭曲,因此,检测单元310可以首先将全景图像校正为透视图像,并以校正后的透视图像为基础进行后续的图像处理过程。在一个示例中,可以通过立方投影将全景图像投影为立方透视图像;在另一个示例中,可以通过经纬度投影将全景图像投影为经纬度透视图像;在再一个示例中,还可以通过柱状投影将全景图像投影为柱状透视图像等。上述对全景图像的校正方式仅为示例,在实际应用中,可以采用任何所需的全景图像校正方式,在此不做限制。例如,针对三维户型的全景图像,可以选择利用立方投影,将全景图像投影为具有前后、上下、左右六个视角的立方透视图像,并据此确定两两正交的三个曼哈顿主方向(如x、y、z三个坐标轴方向)。
[0099] 在将全景图像校正为透视图像之后,可选地,检测单元310可以利用前述三维空间的几何先验对校正后的透视图像进行几何形状检测和几何关系检测。例如,可以利用某些几何形状或几何关系检测工具来针对校正后的透视图像进行检测,也可以通过深度学习的方式,利用训练好的神经网络对几何形状或几何关系等进行检测。可选地,对透视图像进行几何形状检测可以包括对透视图像进行直线检测,例如,可以调用Line Segment Detector等开源的直线段检测工具来对透视图像进行直线检测。当然,对透视图像的几何形状检测还可以包括其他方式,例如可以根据特定的应用场景检测某些特殊形状,如圆形、方形等,在此不做限制。
[0100] 在对透视图像进行了包括直线检测的几何形状检测之后,可选地,检测单元310可以根据所检测到的直线确定三维空间中的至少一个灭点。根据本公开实施例,当三维空间为建筑物室内空间,即房间时,考虑到前述三维空间的几何先验,可以认为房间中的各相邻的墙体、天花板、地面之间相互垂直,从而会产生三个方向相互正交(即沿三个曼哈顿主方向)的灭点。在从透视图像中检测到直线之后,可以据此确定各个方向的灭点。在一个示例中,可以根据检测到的直线对相互正交的各个方向的灭点进行投票,以获取灭点的精确位置。例如,可以根据检测到的直线所指向的方向,针对相应灭点所有可能存在的位置进行打分,从中选择分数最高的结果作为通过直线所确定的相应灭点的位置。在另一个示例中,也可以利用训练好的针对灭点检测的神经网络对灭点位置进行检测,以得到灭点的精确位置。可选地,还可以将已确定的灭点与所检测到的直线的中点连接,以判断上述灭点和直线中点的连线与直线是否满足一定阈值内的共线关系,并采用迭代方式不断调整灭点的具体位置。
[0101] 在确定三维空间中的灭点之后,根据本公开实施例,检测单元310还可以利用所确定的灭点来进一步完善在三维空间中的直线检测结果。例如,当三维空间为建筑物室内的房间时,可以基于房间内相互垂直的三个曼哈顿主方向,而对所检测到的直线进行优化。可选地,可以通过以下至少一种方式来优化直线检测的结果:可以将灭点与某条直线的连线周围的一定距离范围或角度范围内的直线进行相互合并;可以根据三个方向的灭点,针对其中某个方向的直线的缺失来对该方向的直线进行补充(如三个曼哈顿主方向xyz中,存在沿xy两个方向的直线,可以据此补充沿z方向的未能检测到的直线);还可以根据直线的交比的关系,来滤除某些不满足此关系的直线,以得到更加精确的直线检测结果。
[0102] 以上描述了检测单元310利用三维空间的几何先验,对三维空间的全景图像进行几何形状检测的过程。在获得针对透视图像的几何形状检测结果(例如直线检测结果)之后,检测单元310还可以至少根据直线检测的结果,进行几何关系检测。在几何关系检测过程中,所检测到的满足某几何关系的直线组中,可以为两两组成的直线对,也可以为包括两条以上直线在内的直线的集合。在后续利用几何关系构建几何约束时,可选地,可以直接利用上述直线对之间的几何关系构建约束,也可以利用直线集合中的多条直线之间的两两组合构建几何约束,还可以直接利用多条直线构建几何约束等,在此不做限制。在之后的具体示例中,主要针对满足几何关系的直线对构建几何约束。此外,根据本公开实施例,几何关系检测可以包括以下至少一个:共面直线组检测、平行直线组检测、共线直线组检测、垂直直线组检测。可选地,当三维空间为建筑物室内的房间时,针对几何关系检测中的共面直线组检测,可以限定共面直线组共同所在的平面符合三个曼哈顿主方向xyz的其中之一。此外,还可以针对所检测到的共面直线之间的相对关系进行进一步的类型划分,以用于之后针对特定几何关系的几何约束的构建,例如,可以将共面直线组进一步划分为:平行共面直线组(例如两条沿x方向的共面直线)、垂直共面直线组(例如分别沿x和y方向的两条共面直线)、共线共面直线组(例如共同沿x方向,且端点相近的两条共面直线)等多种类型的共面直线组。
[0103] 根据本公开至少一个实施例,上述利用三维空间的几何先验,对三维空间的全景图像进行的几何形状检测和几何关系检测的具体方式,可以分别应用于多个全景图像中的每个全景图像,也可以应用于多个全景图像的其中一部分全景图像,具体的应用方式也不做限制。在完成上述几何形状检测和几何关系检测之后,检测单元310还可以利用检测结果确定用于三维重建的拍摄全景图像的相机的旋转矩阵。可选地,当已经获取到至少两张透视图像的至少直线检测结果并确定灭点后,可以据此确定该至少两张透视图像对应的相机的旋转矩阵。或者,可选地,当用于拍摄全景图像的相机搭载了惯性测量单元(IMU,Inertial Measurement Units)时,可以利用IMU测量相机在拍摄全景图像时的旋转姿态,以获取初始旋转矩阵,,记录该初始旋转矩阵的数据可以包括在全景图像数据之中,例如拍摄不同的全景图像的相机的初始旋转矩阵不同;随后,可以利用所获取的至少一张透视图像的至少直线检测结果和灭点对初始旋转矩阵进行调整。例如,在建筑物室内的房间中,可以针对三个曼哈顿主方向,通过最小化相同方向上所检测到的直线与灭点的距离,来进一步优化该至少一张透视图像对应的相机的旋转矩阵。
[0104] 在获取到一个或多个相机的旋转矩阵之后,可以应用上述相机的旋转矩阵进行后续的三维重建的操作,也可以引入该相机的旋转矩阵进行三维重建后的集束调整过程,也即进行重投影校正。
[0105] 确定单元320根据三维空间的几何先验,针对在几何形状检测和几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于三维重建的拍摄全景图像的相机的平移向量和位置信息。
[0106] 根据本公开实施例,确定单元320可以针对多个透视图像分别进行特征点检测,并根据特征点检测的结果进行特征点匹配。可选地,通过对上述多个透视图像进行特征点匹配的结果,可以得到分别存在于至少两张透视图像上的同一条直线,也可以得到分别存在于至少两张透视图像上,并满足之前所检测的几何关系的至少两条直线,以用于构建相应的几何约束。
[0107] 可选地,确定单元320可以针对分别存在于至少两张透视图像上的同一条直线构建共线性约束,并至少根据所构建的共线性约束确定用于三维重建的拍摄全景图像的相机的平移向量和位置信息。例如,当对于相机i所获取的全景图像来说,所检测到的直线l的中点 的深度为 可以将 表示为公式(1),其中Ti为相机i的平移向量, 是相机i的光心到 的射线的单位向量。
[0108] 同理,当直线l同时位于相机j所获取的全景图像时,可以将在相机j所获取的全景图像上检测到的直线l的中点Plj表示为公式(2),其中,Tj为相机j的平移向量, 是相机j的光心到Plj的射线的单位向量, 为Plj的深度。
[0109] 在此基础上,可以针对相机i所获取的全景图像中所表示的直线l和相机j所获取1 2
的全景图像中所表示的直线l构建共线性约束,将该几何约束表示为公式(3)。其中Nl 、Nl为直线l的两个正交方向(例如,针对建筑物室内的房间,可以为三个曼哈顿主方向xyz中的任意两个方向,例如xy、xz或yz)上的单位向量。据此,可以根据所构建的共线性约束分别确定相机i和相机j的平移向量Ti、Tj和直线l的位置信息(例如可以为中点 Plj或深度)。
[0110] 此外,可选地,还可以针对分别存在于至少两张透视图像上,并满足之前所检测的几何关系的至少两条直线构建针对相应的几何关系的几何约束,以至少根据所构建的几何关系约束确定用于三维重建的拍摄全景图像的相机的平移向量和位置信息。
[0111] 例如,当对于相机j所获取的全景图像来说,所检测到的直线m的中点 的深度为可以将 表示为公式(4)。其中,Tj为相机j的平移向量, 是相机j的光心到 的射线的单位向量。
[0112] 在此基础上,当前述直线l和直线m满足共面的几何关系时,可以针对相机i所获取的全景图像中所表示的直线l和相机j所获取的全景图像中所表示的直线m构建共面性约束,将几何约束表示为公式(5),其中Nl,m为这对直线所在平面的法向量。例如,针对建筑物室内的房间,针对三个曼哈顿主方向xyz,当直线l和直线m所在平面为xy平面时,Nl,m可以指向z方向。据此,可以根据所构建的共线性约束分别确定相机i和相机j的平移向量Ti、Tj和直线l、m的位置信息(例如可以为中点 或深度 )。
[0113] 重建单元330可以利用旋转矩阵、平移向量和位置信息进行对于三维空间的三维重建。
[0114] 根据本公开实施例,在已经获取了用于拍摄全景图像的相机的旋转矩阵、平移向量和用于三维重建所需的位置信息之后,重建单元330可以利用例如SfM的方式对三维空间进行三维重建。在一个示例中,可以利用增量式SfM的方法,针对初始图像对计算相机位姿,并进行不断迭代优化,以获取三维重建结果;在另一个示例中,也可以利用全局式SfM的方法,针对所有的相机位姿将计算误差分摊到各个旋转或平移上,以获取三维重建结果。
[0115] 可选地,在获取了三维重建的结果之后,为了进一步提高三维重建的精确度,重建单元330还可以根据三维空间的几何先验,对三维空间的三维重建的结果进行集束调整(Bundle Adjustment)。具体地,在一个示例中,可以对三维空间的三维重建中所得到的至少一条直线进行参数化,并利用针对至少一条直线的共线性约束进行集束调整。例如,针对直线l,以Al表示直线l的方向,并使用特定算法(例如可以调用Ceres库使用Levenberg-Marquardt算法)计算得到直线的垂线Λl,并考虑共线性约束,使得满足公式(6),以进行集束调整。
[0116] 在另一个示例中,可以对三维空间的三维重建中所得到的至少两条共面直线进行参数化,并利用针对至少两条共面直线的共面性约束进行集束调整。例如,针对共面的两条直线l和m,将其分别参数化为Λl与Λm,并使用特定算法(例如可以调用Ceres库使用Levenberg-Marquardt算法)计算得到沿l和m共同所在的平面法向的直线间的距离Alm,考虑共面性约束,使得满足公式(7),以进行集束调整。
[0117] 上述集束调整的方式可以使得能够结合相应的约束来优化三维重建方法的重投影误差,得到更加精确的三维重建的结果。其中,在具体优化过程中,可以考虑上述利用几何约束的集束调整方式,也可以考虑其他的集束调整方式对三维重建的结果进行优化。可选地,可以针对不同的集束调整方式赋予相应的权重,以适应于不同的具体应用场景。
[0118] 图2示出了一个示例中针对住宅中各房间的全景图像,根据本公开实施例的三维重建方法所构建的三维户型图(或者,称为立体户型图)的示例。根据图2可知,该示例性的三维户型图示出了住宅的各个子空间(例如,客厅子空间、主卧子空间、次卧子空间、阳台子空间、厕所子空间、厨房子空间等)和各个子空间的位置排布等。
[0119] 根据本公开实施例所提供的三维重建装置,能够利用三维空间,特别是建筑物内部空间的特定的几何先验,针对全景图像进行几何形状检测、几何关系检测,并作为约束条件获取三维重建所需的各项参数,从而辅助实现三维重建的过程。根据本公开的三维重建装置能够克服建筑物内部空间纹理缺失或家具内饰遮挡等所造成的问题,从而更加准确高效地进行三维重建,以获取建筑物内部空间的精准三维内部结构。
[0120] 根据本公开实施例的三维重建装置所构建的例如房间的内部空间结构,能够向网络看房的用户提供更加具备真实感的三维房间模型,更加形象化地针对各个房源的户型结构、室内空间关系、房间内部尺寸等进行展示,以有利于远程的网络用户获得沉浸式的看房体验。
[0121] 本公开至少一实施例还提供一种三维空间的三维重建装置。图4为本公开一实施例提供的一种三维重建装置400的示意图。
[0122] 例如,如图4所示,三维重建装置400可以包括一个或多个存储器410和一个或多个处理器420。应当注意,图4所示的三维重建装置400的组件只是示例性的,而非限制性的,根据实际应用需要,该三维重建装置400还可以具有其他组件。
[0123] 例如,存储器410用于非暂时性存储计算机程序指令;处理器420用于运行计算机程序指令,计算机程序指令被处理器420运行时执行根据上述任一实施例的三维空间的三维重建方法的一个或多个步骤。
[0124] 例如,计算机程序指令被处理器420运行时可以执行以下操作:利用三维空间的几何先验,对三维空间的多个全景图像分别进行几何形状检测和几何关系检测,并确定用于三维重建的拍摄全景图像的相机的旋转矩阵;根据三维空间的几何先验,针对在几何形状检测和几何关系检测中分别检测到的几何形状和几何关系构建几何约束,并根据所构建的几何约束确定用于三维重建的拍摄全景图像的相机的平移向量和位置信息;利用旋转矩阵、平移向量和位置信息进行对于三维空间的三维重建。
[0125] 例如,处理器420和存储器410等组件之间可以通过网络连接进行通信。网络可以包括无线网络、有线网络、和/或无线网络和有线网络的任意组合。网络可以包括局域网、互联网、电信网、基于互联网和/或电信网的物联网(Internet of Things)、和/或以上网络的任意组合等。有线网络例如可以采用双绞线、同轴电缆或光纤传输等方式进行通信,无线网络例如可以采用3G/4G/5G移动通信网络、蓝牙、Zigbee或者WiFi等通信方式。本公开对网络的类型和功能在此不作限制。
[0126] 例如,处理器420可以控制三维重建装置400中的其它组件以执行期望的功能。处理器620可以是中央处理单元(CPU)、张量处理器(TPU)或者图形处理器(GPU)等具有数据处理能力和/或程序执行能力的器件。中央处理元(CPU)可以为X86或ARM架构等。GPU可以单独地直接集成到主板上,或者内置于主板的北桥芯片中。GPU也可以内置于中央处理器(CPU)上。
[0127] 例如,存储器410可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机可读指令,处理器420可以运行计算机可读指令,以实现三维重建装置400的各种功能。在存储介质中还可以存储各种应用程序和各种数据等。
[0128] 例如,关于三维重建装置400执行三维重建方法的过程的详细说明可以参考应用于三维终端的三维重建方法的实施例中的相关描述,重复之处不再赘述。
[0129] 下面参考图5,其示出了适于用来实现本公开实施例的三维重建装置500的结构示意图。本公开实施例中的三维重建装置可以包括但不限于诸如智能手机、笔记本电脑、PAD(平板电脑)等等的移动终端以及诸如台式计算机等等的固定终端。图5示出的三维重建装置仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0130] 如图5所示,三维重建装置500可以包括处理装置(例如中央处理器、图形处理器等)510,其可以根据存储在只读存储器(ROM)520中的程序或者从存储装置580加载到随机访问存储器(RAM)530中的程序而执行各种适当的动作和处理。在RAM 530中,还存储有三维重建装置500操作所需的各种程序和数据。处理装置510、ROM 520以及RAM 530通过总线540彼此相连。输入/输出(I/O)接口550也连接至总线540。
[0131] 通常,以下装置可以连接至I/O接口550:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置560;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置570;存储装置580;以及通信装置590。存储装置580可以包括不同形式的程序储存单元以及数据储存单元,例如磁带、硬盘、只读存储器(ROM)、随机存取存储器(RAM),能够用于存储计算机处理和/或通信使用的各种数据文件,以及处理装置510所执行的可能的程序指令。通信装置590可以允许三维重建装置500与其他设备进行无线或有线通信以交换数据,例如发送和接收信息及数据。虽然图5示出了具有各种装置的三维重建装置500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
[0132] 特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机程序。例如,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置590从网络上被下载和安装,或者从存储装置580被安装,或者从ROM 520被安装。在该计算机程序被处理装置510执行时,执行本公开实施例的远程展示方法中限定的上述功能。
[0133] 需要说明的是,本公开实施例提供的三维重建装置500可以采用安卓(Android)系统、IOS系统、Linux系统、Windows系统等。
[0134] 本公开至少一实施例还提供一种存储介质,图6为本公开一实施例提供的一种存储介质的示意图。
[0135] 例如,如图6所示,在存储介质600上可以非暂时性地存储一个或多个计算机可读指令601。例如,当计算机可读指令601由计算机执行时可以执行根据上文的应用于三维空间的三维重建方法中的一个或多个步骤。
[0136] 例如,该存储介质600可以应用于上述三维重建装置400中,例如,其可以包括三维重建装置400中的存储器410。
[0137] 例如,关于存储介质600的说明可以参考三维重建装置400的实施例中对于存储器的描述,重复之处不再赘述。
[0138] 可以不脱离由所附权利要求定义的教导的技术而进行对在此的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
[0139] 提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不希望被限制到在此示出的方面,而是按照与在此公开明的原理和新颖的特征一致的最宽范围。
[0140] 为了例示和描述的目的已经给出了以上描述。此外,此描述不希望将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。