一种三维重建方法及系统与流程

专利检索2022-05-10  3



1.本发明涉及图像三维重建领域,特别涉及一种基于相机的实时三维重建方法及系统、计算机设备及计算机可读存储介质。


背景技术:

2.三维重建是捕捉真实物体的形状和外观,并还原三维立体结构的过程。尤其是实时三维重建,其已经成为多媒体和计算机图像领域的焦点。三维重建可以应用于自由视角视频、3d游戏互动以及增强现实或虚拟现实等场景,而在这些领域的应用对实时性能有很高的要求。尽管实时重建技术在静态物体重建领域已经很成熟,但受限于庞大的数据量和算法的复杂性,动态场景的实时重建仍然是一个很大的挑战。
3.目前rgb

d传感器通常被用作实时系统的数据采集设备。如:深度传感器:kinect v1、kinect v2和azure kinect。然而基于深度传感器的三维重建系统仍具有较多不足,如:现有三维重建系统通常采用客户端

服务器结构,每个客户端驱动一台相机,所有的客户端连接到同一个服务器上,随着相机数量的增多,则需要多台计算机才能完成三维重建系统的搭建,进而使得三维重建系统的结构复杂。另外,在实时性能方面,随着场景大小和相机数量的增加,现有的三维重建系统的帧率也会相应下降,重建的准确度及质量也有所降低。
4.因此,如何能够提供一种重建的准确度和质量都较高的三维重建方法,成为目前亟待解决的问题之一。


技术实现要素:

5.本发明提供一种三维重建方法、系统、计算机设备及计算机可读存储介质,以提高三维重建的准确度和质量。
6.本发明提供一种三维重建方法,包括:
7.获取面向同一标定物的多个图像采集器采集的多帧图像,其中,每一帧图像包括彩色图像和深度图像,各图像采集器采集的帧图像是准同步的;
8.基于各图像采集器采集的帧图像生成与其对应的点云;
9.将各图像采集器对应的点云转换至世界坐标系以获得融合后的点云;
10.去除融合后的点云中的重叠区域和离群点,以获得三维模型。
11.可选的,所述去除融合后的点云中的重叠区域包括:
12.对于任意两个图像采集器,将第一图像采集器采集到的深度图像中各第一像素点的第一深度值映射至第二图像采集器的坐标系下的第二深度值;
13.若在第二图像采集器采集到的深度图像中,存在一第二像素点的第二深度值与该第一像素点的第二深度值之差小于第一阈值,则在融合后的点云中去除第一像素点或第二像素点。
14.可选的,将第一图像采集器采集到的深度图像中各第一像素点的第一深度值映射至第二图像采集器的坐标系下的第二深度值,包括:
15.确定标定物的特征点的空间位置,以标定物的特征点的空间位置作为世界坐标系的原点;
16.基于世界坐标系和图像采集器的坐标系以确定图像采集器的外参数;
17.将第一像素点的第一坐标系位置映射至世界坐标系,以获得第一像素点的世界坐标系位置;
18.基于第二图像采集器的外参数将第一像素点的世界坐标系位置映射至第二坐标系位置;
19.基于第一像素点的第二坐标系位置获得其在第二坐标系下的第二深度值;
20.其中,第一坐标系是指第一图像采集器的坐标系,第二坐标系是指第二图像采集器的坐标系。
21.可选的,所述去除融合后的点云中的离群点包括:
22.基于融合后的点云中各像素点与其临近的像素点之间的深度距离,确定该像素点是否为离群点。
23.可选的,基于融合后的点云中各像素点与其临近的像素点之间的深度距离,确定该像素点是否为离群点,包括:
24.确定深度图中位于像素点上下、左右的四个临近像素点;
25.若由像素点和其临近的两个像素点组成的各三角形中,像素点和两个临近像素点之间的深度距离,以及两个临近像素点之间的深度距离均小于第二阈值,则该像素点为非离群点。
26.可选的,基于图像采集器采集的帧图像生成的点云通过如下公式获得:
[0027][0028]
其中:(u,v)是深度图像中像素点的坐标值,x,y,z是该像素点的三维空间坐标值,f
x
,f
y
,c
x
,c
y
是图像采集器的内参数。
[0029]
可选的,所述三维重建方法,还包括同步各图像采集器采集的帧图像,所述同步各图像采集器采集的帧图像包括:
[0030]
获取各图像采集器采集每一帧图像的时间间隔,其中,采集每一帧图像的时间间隔是指图像采集器采集每一帧图像的时刻与该图像采集器启动时刻之差;
[0031]
若第一图像采集器在某一时刻采集一帧图像的时间间隔与该时刻第二图像采集器采集一帧图像的时间间隔之差小于第三阈值,则丢弃两帧图像中为超前帧的一帧图像。
[0032]
本发明还提供一种三维重建系统,包括:
[0033]
获取单元,用于获取面向同一标定物的多个图像采集器采集的多帧图像,其中,每一帧图像包括彩色图像和深度图像,各图像采集器采集的帧图像是准同步的;
[0034]
生成单元,用于基于各图像采集器采集的帧图像生成与其对应的点云;
[0035]
转换单元,用于将各图像采集器对应的点云转换至世界坐标系以获得融合后的点云;
[0036]
去除单元,用于去除融合后的点云中的重叠区域和离群点,以获得三维模型。
[0037]
本发明还提供一种计算机设备,包括至少一个处理器、以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器能够执行上述的三维重建方法。
[0038]
本发明还提供一种计算机可读存储介质,当所述存储介质中的指令由设备内的处理器执行时,使得所述设备能够执行上述的三维重建方法。
[0039]
与现有技术相比,本发明的技术方案具有如下有益效果:
[0040]
在获取了面向同一标定物的多个图像采集器采集的多帧图像后,基于各图像采集器采集的帧图像生成与其对应的点云,并将各图像采集器对应的点云转换至世界坐标系以获得融合后的点云,去除融合后的点云中的重叠区域和离群点,以获得三维模型。其中,每一帧图像包括彩色图像和深度图像,各图像采集器采集的帧图像是准同步的。由于,对每一帧图像进行了准同步,且去除了融合后的点云中的重叠区域和离群点,因此,在大幅度的抑制了重建后的点云中的噪声,提高了重建点云的质量,进而在很大程度上提高了三维重建后的图像的质量和准确度。
[0041]
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
[0042]
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
[0043]
图1为本发明实施例的三维重建方法的流程示意图;
[0044]
图2为本发明实施例的三维重建方法的一应用场景示意图;
[0045]
图3为本发明实施例的去除点云重叠区域的过程示意图;
[0046]
图4为本发明实施例的三维重建系统软件设计模式的示意图;
[0047]
图5为本发明实施例的三维重建系统输出的效果图。
具体实施方式
[0048]
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
[0049]
正如背景技术中提及的,目前的三维重建方法在重建的准确度和精度上都有所欠缺。图1为本发明实施例的三维重建方法的流程示意图,如图1所示:所述三维重建方法包括:
[0050]
s101:获取面向同一标定物的多个图像采集器采集的多帧图像,其中,每一帧图像包括彩色图像和深度图像,各图像采集器采集的帧图像是准同步的。
[0051]
s102:基于各图像采集器采集的帧图像生成与其对应的点云。
[0052]
s103:将各图像采集器对应的点云转换至世界坐标系以获得融合后的点云。
[0053]
s104:去除融合后的点云中的重叠区域和离群点,以获得三维模型。
[0054]
执行s101,本实施例中的图像采集器可以是相机、摄像机等,具体地,可以是kinect v2深度相机或深度摄像机。采用kinect v2深度相机或深度摄像机可以提供可接受的分辨率和可负担的成本。采用深度相机采集的一帧图像中包括了彩色图像和深度图像。以下以图像采集器为深度相机(相机)为例进行相应的说明。本实施例中,可以采用三架相机来进行三维重建。参见图2,图2为本发明实施例的三维重建方法的一应用场景示意图,图2中,三架相机两两呈120
°
角放置,且每架相机的正面均朝向同一标定物。该标定物可以放置于由三架相机组成的区域的中心,如若将图2中的相机简化为一个点,则标定物可以放置于由三个点组成的三角区域的中心。本实施例中,通过图2中所示的三架相机对其中的场景进行拍摄。三架相机采集到的图像信息分别传送至计算机终端。
[0055]
需要说明的是,本实施例中是以三架相机为例进行了说明,在其他实施例中也可以采用四架,两两呈90
°
角放置,或者五架,两两呈90
°
放置,因此,相机个数不应作为对本发明技术方案的限定。
[0056]
本实施例中,每架相机采集到的一帧图像均包括彩色图像和深度图像。且不同相机采集的帧图像是准同步的。本实施例中,可以通过以下方式同步相机采集到的帧图像。
[0057]
首先:获取各相机采集每一帧图像的时间间隔,其中,采集每一帧图像的时间间隔是指相机采集每一帧图像的时刻与该相机启动时刻之差。具体地,可以记录各相机采集每一帧图像的时刻t
i
,i=1,...,n,其中,n为相机的个数。当所有相机刚被启动时,记录该时刻为t0,一般来讲所有相机的启动时刻相同。然后记录采集每一帧图像的时间间隔为:
[0058][0059]
然后,若第一相机在某一时刻采集一帧图像的时间间隔与该时刻第二相机采集一帧图像的时间间隔之差小于第三阈值,则丢弃两帧图像中为超前帧的一帧图像。如对于第一相机i而言,其在某一时刻采集一帧图像的时间间隔为第二相机j,在该时刻采集一帧图像的时间间隔为若:
[0060][0061]
则丢弃两帧图像中为超前帧的一帧图像,其中,threshold为第三阈值。举例来说,若在某一时刻第一相机采集的是第5帧图像,而在该时刻第二相机采集的是第3帧图像,则丢弃第一相机采集的第5帧图像。本实施例中,第三阈值可以是12ms到18ms中的任意一个值,如第三阈值可以为16ms。
[0062]
执行s102,基于各相机采集的帧图像生成与其对应的点云。本实施例中,对于每一架相机而言,可以基于相机采集到的多帧图像的色彩信息和深度信息以及相机的内参数来生成单视角点云。具体地,可以通过如下公式生成每架相机对应的点云:
[0063][0064]
其中:(u,v)是深度图像中像素点的坐标值,x,y,z是该像素点的三维空间坐标值,
f
x
,f
y
,c
x
,c
y
是相机的内参数。相机的内参数可以通过相机的sdk获取,通过上述公式,在已知每个像素点的(u,v)坐标和深度值z时,可以计算出该像素点在三维空间的x,y坐标(相机坐标系下的三维空间)。
[0065]
执行s103:将各相机对应的点云转换至世界坐标系以获得融合后的点云。
[0066]
本实施例中,先确定世界坐标系的原点,具体地,可以先确定标定物的特征点的空间位置。标定物的特征点可以是标定物的中心点,也可以是标定物上其他的点,一般而言以标定物的中心点作为特征点。检测每架相机采集到的彩色图像中标定物的特征点,并结合该特征点在每架相机采集到的深度图像中的深度信息,则可以得标定物的特征点在三维空间的位置。本实施例中,以标定物的特征点的空间位置作为世界坐标系的原点。在确定了世界坐标系的原点后,根据世界坐标系和相机坐标系之间的映射关系,则可以将各相机对应的点云转换至世界坐标系,进而得到融合后的点云。
[0067]
执行s104,去除融合后的点云中的重叠区域和离群点,以获得三维模型。
[0068]
本实施例中,为了大幅的抑制噪声,因此在获得融合后的点云后,要去除其中重叠的区域和离群点。图3为本发明实施例的去除点云重叠区域的过程示意图,以下结合图3对本发明实施例的去除融合后的点云中的重叠区域进行说明。
[0069]
本实施例中,可以通过如下方式去除融合后的点云中的重叠区域:
[0070]
首先:对于任意两架相机,将第一相机采集到的深度图像中各第一像素点的第一深度值映射至第二相机的坐标系下的第二深度值。本实施例中,将第一相机采集到的深度图像中的像素点均称为第一像素点,将第一相机的坐标系称为第一坐标系,将第一坐标下的像素点的深度值均称为第一深度值,如第一像素点的深度值为第一深度值,其他坐标系的像素点映射至第一坐标系下,该像素点的深度值也称为第一深度值。同样地,将第二相机采集到的深度图像中的像素点均称为第二像素点,将第二相机的坐标系称为第二坐标系,将第二坐标下的像素点的深度值均称为第二深度值,如第二像素点的深度值为第二深度值,其他坐标系的像素点映射至第二坐标系下,该像素点的深度值也称为第二深度值。
[0071]
本实施例中,为了将第一像素点的第一深度值映射至第二坐标系下的第二深度值,需要先获取第一相机的外参数。由上述可以知道,已经确定了世界坐标系的原点,因此可以根据第一坐标系和世界坐标系之间的关系来获取第一相机的外参数(旋转矩阵和平移矩阵),相机外参数的获取。在获得了相机的外参数后,还可以对其进行优化,如通过迭代最近邻算法输入待配准点云和目标点云,其中待配准点云可以为当前相机对应的点云,目标点云可以为其他相机对应的点云融合后得到的点云,通过迭代过程中不断的缩小待配准点云和目标点云之间的距离,以实现对当前相机外参数的优化。
[0072]
接下来,将第一像素点的第一坐标系位置映射至世界坐标系,以获得第一像素点的世界坐标系位置。对于第一相机a的深度图中的每个像素p
a
(x,y),而言,都有一个三维空间中的点与其对应,具体地,可以通过如下公式将该三维点(第一像素点的第一坐标系位置)映射到世界坐标系中,即得到该像素点的世界坐标系位置:
[0073][0074]
其中,r
a
和t
a
是第一相机a的外参矩阵,为第一像素点的第一坐标系位
置,为第一像素点的世界坐标系位置。
[0075]
然后,基于第二相机的外参数将第一像素点的世界坐标系位置映射至第二坐标系位置。具体地,可以通过如下公式将第一像素点的世界坐标系位置映射至第二坐标系位置:
[0076][0077]
其中,r
b
和t
b
是第二相机b的外参矩阵,为第一像素点的世界坐标系位置,为第一像素点的第二坐标系位置。
[0078]
最后,基于第一像素点的第二坐标系位置获得其在第二坐标系下的第二深度值。具体地,可以通过如下公式获得第一像素点在第二坐标系下的第二深度值:
[0079][0080]
其中,π表示针孔相机模型3d到2d的映射,k
b
是第二相机b的内参数,为第一像素点的第二坐标系位置,p
ab
(x,y)为第一像素点在第二坐标系下的第二深度值。
[0081]
至此,通过上述方式获得了第一像素点在第二坐标系下的第二深度值。
[0082]
然后,若在第二相机采集到的深度图像中,存在一第二像素点的第二深度值与该第一像素点的第二深度值之差小于第一阈值,则在融合后的点云中去除第一像素点或第二像素点。本实施例中,为了快速的去除重叠区域,可以在以映射至第二坐标系下的第一像素点为中心,距离该中心预定距离的几何体(如立方体或者球体等)内确定是否存在一第二像素点的第二深度值与该第一像素点的第二深度值之差小于第一阈值,若小于,则在融合后的点云中去除第一像素点或第二像素点,本实施例可以去除第一像素点,第一阈值可以为25mm~35mm之间的任意一个值,如可以是30mm。对于多架相机中的每两架相机进行上述的去除重叠区域的操作,即可对去除融合后的点云中的重叠区域。
[0083]
继续执行s104,去除融合后的点云中的离群点。本实施例中,可以基于融合后的点云中各像素点与其临近的像素点之间的深度距离,来确定该像素点是否为离群点。
[0084]
具体地,与该像素点临近的像素点可以取位于该像素点上下、左右的四个临近像素点,若由像素点和其临近的两个像素点组成的各三角形中,像素点和两个临近像素点之间的深度距离,以及两个临近像素点之间的深度距离均小于第二阈值,则该像素点为非离群点。举例来说:对于深度图中的每个像素点(x,y)其深度值为p=i
z
(x,y),位于其上下左右的四个点依次为:p
t
=i
z
(x,y

1),p
d
=i
z
(x,y 1),p
l
=i
z
(x

1,y)和p
r
=i
z
(x 1,y)。这五个点可以组成四个三角形。对于每一个三角形而言,若均满足以上条件,则该像素点为非离群点。举例来说,当三角形s1={p,p
t
,p
l
},满足|p

p
t
|<t且|p

p
l
|<t且|p
l

p
t
|<t,三角形s2={p,p
t
,p
r
}满足|p

p
t
|<t且|p

p
r
|<t且|p
r

p
t
|<t,三角形s3={p,p
d
,p
l
}满足|p

p
d
|<t且|p

p
l
|<t且|p
l

p
d
|<t,三角形s4={p,p
d
,p
r
}满足|p

p
d
|<t且|p

p
r
|<t且|p
r

p
d
|时,该像素点为非离群点。若上述条件不能同时成立,则该像素点为离群点需去除。
[0085]
在执行完s104获得三维模型后,可以在opengl中进行渲染以实现对三维重建后的图像的可视化。
[0086]
本发明实施例还提供一种三维重建系统,包括:
[0087]
获取单元,用于获取面向同一标定物的多个图像采集器采集的多帧图像,其中,每
一帧图像包括彩色图像和深度图像,各图像采集器采集的帧图像是准同步的。
[0088]
生成单元,用于基于各图像采集器采集的帧图像生成与其对应的点云。
[0089]
转换单元,用于将各图像采集器对应的点云转换至世界坐标系以获得融合后的点云。
[0090]
去除单元,用于去除融合后的点云中的重叠区域和离群点,以获得三维模型。
[0091]
本实施例的三维重建系统的实施可以参见上述的三维重建方法的实施,此处不再赘述。
[0092]
图4为本发明实施例的三维重建系统软件设计模式的示意图,以下结合图4对本发明实施例的三维重建方法进行相应的说明。图4中,通过多路相机采集rgb

d数据,该rgb

d数据(帧图像)包含一帧彩色图像和一帧深度图像,对帧图像进行同步,并根据各相机的内参数将一帧rgb

d数据映射到三维空间,得到单视角点云。对各相机对应的点云进行融合以获得融合后的点云,去除融合后的点云中的重叠区域,在去除融合后的点云中的重叠区域后,基于深度图的连续性和拓扑结构,对其进行滤波以去除离群点。最后对获得的三维模型在opengl中进行渲染,实现对三维重建后的图像的可视化。本实施例中通过去除融合后的点云中的重叠区域和离群点,大幅度的抑制了融合后的点云中的噪声,提高了重建的点云的质量,进而也提高了三维重建后的图像的质量和准确度。
[0093]
实际应用中,在搭建本实施例的三维重建系统时,可以仅通过一台计算机连接多架相机,以实现简单的系统配置。可以采用流水线设计模式,利用队列的先进先出特性,将其作为数据传输和线程分离的数据结构,使得系统中各单元并行执行,取得较好的实时性能,达到相机固有帧率;另外还可以在异构平台上集成cpu多线程和gpu并行加速等优化手段(参见图4),通过异构计算大幅提升三维重建性能,达到了相机固有帧率30fps。
[0094]
表一是本发明实施例的三维重建系统流水线的性能测试结果表,通过选择不同数量的相机和不同的重建场景大小,对三维重建系统的各个单元的延迟和1000帧的平均帧率进行了测试,如表1所示,本发明实施例的三维重建方法在不同的相机数量和场景大小上取得了几乎相同的实时性能。需要说明的是,本实施例的三维重建系统的平均帧率并未达到给定的30fps,主要是由于相机sdk自身的不稳定性导致的在某些情况下的丢帧。
[0095]
表一三维重建系统流水线的性能测试结果表
[0096][0097]
图5为本发明实施例的三维重建系统输出的效果图。图5中分别给出了多个视角和场景的原始点云经过重叠区域去除和离群点去除后,最终输出的效果图。从图5中可以看出,本实施例的三维重建方法在多种场景下,三维重建后的质量较高。
[0098]
基于相同的技术构思,本发明实施例提供了一种计算机设备,包括至少一个处理器、以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器能够执行上述的三维重建方法。
[0099]
基于相同的技术构思,本发明实施例提供了一种计算机可读存储介质,当所述存储介质中的指令由设备内的处理器执行时,使得所述设备能够执行上述的三维重建方法。
[0100]
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0101]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0102]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0103]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0104]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0105]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
转载请注明原文地址:https://win.8miu.com/read-50270.html

最新回复(0)