一种场景的三维重建方法、终端和可读存储介质
技术领域
本发明实施例涉及计算机视觉领域,特别涉及一种场景的三维重建方法、终端和可读存储介质。
背景技术
机器人在进行导航、避障等操作时,需要对所处场景进行充分理解,对场景的三维重建是机器人对自身所处场景进行充分理解的核心技术之一。
目前的三维重建方法是通过体素进行表达,该方法不需要估计物体表面的拓扑结构,仅仅利用对应的深度信息,就可以进行一个高精度的三维重建。例如:Kinect融合系统的数据结构就是利用常规3D网格来均匀地划分为一组体素,映射到预定义的物理维度上,实现对一定空间范围内的描述。
发明人发现相关技术中至少存在如下问题:目前随着待重建场景范围的增大,涉及到的重建数据量不断增大,导致三维重建的速度越来越慢,不能实现对大场景进行实时重建,如:一个房间的范围的场景。
发明内容
本发明实施方式的目的在于提供一种场景的三维重建方法、终端和可读存储介质,能够提高对场景的三维重建的速度,扩大了三维重建的场景范围。
为解决上述技术问题,本发明的实施方式提供了一种场景的三维重建方法,包括:在检测到第一存储空间增加新的图像数据后,获取第一存储空间内每帧图像数据各自对应的筛选数据,筛选数据用于表征对应的图像数据的重要程度;在筛选数据满足缓存存储空间对应的第一数据迁移条件后,将图像数据迁移至缓存存储空间;根据数据迁移后的第一存储空间内的图像数据,对目标场景进行三维重建。
本发明的实施方式还提供了一种终端,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述场景的三维重建方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的场景的三维重建方法。
本发明实施方式相对于现有技术而言,在检测到第一存储空间增加新的图像数据后,获取第一存储空间内每帧图像数据的筛选数据,由于筛选数据用于表征对应的图像数据的重要程度,通过对每帧图像数据的筛选数据进行判断后,可实现将不重要的图像数据迁移到缓存空间内,从而减少了第一存储空间的内存资源的占用量,提高了对目标场景进行三维重建的速度;同时由于不断将图像数据迁移至缓存存储空间内,由于实时将图像数据迁移至缓存存储空间,使得即使出现大范围的目标场景,也不会影响对该目标场景的三维重建速度,扩大了三维重建的场景范围。
另外,获取第一存储空间内每帧图像数据各自对应的筛选数据,具体包括:针对每帧图像数据进行以下处理:获取图像数据的距离因素和时间更新因素,距离因素为图像数据中目标场景与图像采集装置之间的距离与预设的距离阈值之差,时间更新因素为用于表征图像数据更新活跃度的时间更新值和预设的时间阈值之差,其中,距离因素的值与时间更新因素的值均大于0;根据距离因素、时间更新因素、预设的距离因素的第一比例因子以及预设的时间更新因素的第二比例因子,确定图像数据的筛选数据。通常与图像采集装置距离较远的区域的图像数据为不会被用于进行当前目标场景的三维重建,通过图像数据中目标场景与图像采集装置之间的距离与预设的距离阈值之差,且该差值大于0,可以快速确定距离当前图像采集装置较远的场景所对应的图像数据;不经常被更新的图像数据,表明该图像数据不重要,通过时间更新值和预设的时间阈值可以快速确定出未经常更新的图像数据,基于以上两个因素,可以较为准确地确定出用于表征图像数据重要程度的筛选数据。
另外,根据距离因素、时间更新因素、预设的距离因素的第一比例因子以及预设的时间更新因素的第二比例因子,确定图像数据的筛选数据,具体包括:若确定第一比例因子的值为0且第二比例因子的值不为0,则获取时间更新因素,将第二比例因子和时间更新因素之间乘积的第一积值作为图像数据的筛选数据;若第二比例因子的值为0且第一比例因子的值不为0,则获取距离因素,并将第一比例因子与距离因素之间乘积的第二积值作为图像数据的筛选数据;若第一比例因子的值和第二比例因子的值均不为0,则获取第一积值,以及获取第二积值,计算第一积值与第二积值之和,将和值作为图像数据的筛选数据;若第一比例因子的值和第二比例因子的值均为0,则将0作为图像数据的筛选数据。根据比例因子可以准确地确定出该不同情况下的筛选数据。
另外,在对目标场景进行三维重建之前,场景的三维重建方法还包括:若采集过目标场景的图像数据,且检测到第一存储空间内未存储目标场景的图像数据,则在缓存存储空间查找目标场景的图像数据,并将查找到的目标场景的图像数据迁移回第一存储空间。若采集过目标场景的图像数据,且检测到未存储目标场景的图像数据,则可读取该缓存存储空间的图像数据进行三维重建,而无需再次重新采集目标场景的图像数据进行三维重建,缩短三维重建的速度。
另外,第一存储空间为图形处理器的各存储块;缓存存储空间包括:中央处理器的存储空间和硬盘的存储空间;与中央处理器的存储空间对应的第一数据迁移条件为超过预设的第一阈值且小于预设的第二阈值;与硬盘的存储空间对应的第一数据迁移条件为超过第二阈值。通过不同的阈值可以将筛选数据划分为多种情况,进而可以根据筛选数据的重要程度将图像数据分开存储,可以减少CPU的内存资源占用量。
另外,在获取第一存储空间内每帧图像数据各自对应的筛选数据之前,场景的三维重建方法还包括:同步图形处理器内各存储块之间的图像数据。由于图形处理器的处理操作为异步操作,通过同步各存储块之间的图像数据,可以避免图形处理器出现死锁和不同线程下的误操作的情况。
另外,确定每帧图像数据的时间更新值的过程,具体包括:获取图像数据上一次更新后的时间更新值的数值,图像数据初始的时间更新值的数值为0;若当前检测到图像数据被更新,则将时间更新值的数值减1,否则,将时间更新值的数值加1。图像数据的时间更新值的数值越小,表明该图像数据被频繁使用,则该图像数据越活跃,通过该时间更新值可以较为准确低描述图像数据的活跃度。
另外,若缓存存储空间为中央处理器的存储空间,与中央处理器的存储空间对应的第一数据迁移条件为超过预设的第一阈值;在将图像数据迁移至缓存存储空间后,三维重建方法还包括:在缓存存储空间增加新的图像数据后,获取缓存存储空间内每帧图像数据各自对应的筛选数据;在筛选数据满足第二数据迁移条件后,将图像数据迁移至硬盘的存储空间,第二数据迁移条件为筛选数据超过预设的第二阈值,其中,第二阈值大于第一阈值。通过第二阈值可以将CPU中不常用的数据迁移至硬盘的存储空间,保证CPU足够的内存资源,提高CPU的运算速度。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式提供的一种场景的三维重建方法的具体流程图;
图2是根据本发明第一实施方式中提供的确定每帧图像数据对应的筛选数据的具体实现示意图;
图3是根据本发明第二实施方式提供的一种场景的三维重建方法的具体流程图;
图4是根据本发明第三实施方式提供的一种终端的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
发明人发现目前对大场景进行实时三维重建是通过GPU来计算的,尤其是与定位跟踪相关的数据全部存放于GPU内,随着图像数据的增加,消耗图形处理器的内存资源,当目标场景超过一定范围后,GPU将无法处理图像数据,无法完成对目标场景的三维重建。
本发明的第一实施方式涉及一种场景的三维重建方法。该场景的三维重建方法可以应用于具有三维重建功能的终端,该终端可以是智能机器人、无人驾驶汽车、智能导盲设备、智能轮椅等。该场景的三维重建方法具体的流程如图1所示。
步骤101:在检测到第一存储空间增加新的图像数据后,获取第一存储空间内每帧图像数据各自对应的筛选数据,筛选数据用于表征对应的图像数据的重要程度。
具体的说,图像数据可以彩色(RGB)图像和深度(depth)图像,深度图像可以通过深度摄像头采集获得,该深度图像还可以通过至少2个彩色图像计算获得。可以理解的是,该彩色图像和深度图像在输入第一存储空间之前已对齐,从而确保每个RGB图像都有对应的深度图像。另外,新增的图像数据在输入该第一存储空间之前还需要进行校正,以减小因图像采集装置导致的图像失真对三维重建的影响。
实时检测第一存储空间内是否增加新的图像数据,在确定第一存储空间增加新的图像数据后,针对每帧图像数据进行如图2所示的子步骤,获取图像数据对应的筛选数据:
子步骤1011:获取图像数据的距离因素和时间更新因素。
一个具体的实现中,距离因素为图像数据中目标场景与图像采集装置之间的距离与预设的距离阈值之差,时间更新因素为用于表征图像数据更新活跃度的时间更新值和预设的时间阈值之差,其中,距离因素的值与时间更新因素的值均大于0。
具体的说,计算图像数据中目标场景与图像采集装置之间的距离,该距离可以为欧氏距离;预设的距离阈值可以根据实际应用进行设置,例如,可以根据目标场景的范围,设置该距离阈值。距离以Fdistance表示,距离阈值以Fthred表示,则该距离因素Felement=Fdistance-Fthred。
时间更新值用于表征图像数据更新活跃度,该时间更新值的确定过程可以为:获取图像数据上一次更新后的时间更新值的数值,图像数据初始的时间更新值的数值为0;若当前检测到图像数据被更新,则将时间更新值的数值减1,否则,将时间更新值的数值加1。例如,以Ftime表示图像更新值,图像数据A的初始的时间更新值Ftime=0,该图像数据A上一次更新后的Ftime=3,当检测该图像数据A被更新后,将Ftime-1;否则,将Ftime+1。可以理解的是,确定时间更新值的还可以采用其他的方式,此处不再一一列举。
同理,预设的时间阈值可以根据实际应用进行设置。以Telement表示时间因素,以Ftime表示时间更新值,以Tthred表示预设的时间阈值,则Telement=Ftime-Tthred。
子步骤1012:根据距离因素、时间更新因素、预设的距离因素的第一比例因子以及预设的时间更新因素的第二比例因子,确定图像数据的筛选数据。
一个具体的实现中,若确定第一比例因子的值为0且第二比例因子的值不为0,则获取时间更新因素,将第二比例因子和时间更新因素之间乘积的第一积值作为图像数据的筛选数据;若第二比例因子的值为0且第一比例因子的值不为0,则获取距离因素,并将第一比例因子与距离因素之间乘积的第二积值作为图像数据的筛选数据;若第一比例因子的值和第二比例因子的值均不为0,则获取第一积值,以及获取第二积值,计算第一积值与第二积值之和,将和值作为图像数据的筛选数据;若第一比例因子的值和第二比例因子的值均为0,则将0作为图像数据的筛选数据。
具体的说,第一比例因子和第二比例因子可以根据实际应用进行设置。该筛选数据可以用公式(1)表示:
其中,factor表示筛选数据,fdis表示第一比例因子,ftime表示第二比例因子;Fdistance表示距离,Fthred表示距离阈值,Ftime表示时间更新值,Tthred表示时间阈值。
当fdis=0,ftime=1时,factor=Ftime-Tthred;当fdis=1,ftime=0时,factor=Fdistance-Fthred;当fdis≠0,ftime≠0时,factor=fdis*(Fdistance-Fthred)+ftime*(Ftime-Tthred);当fdis=0,ftime=0,factor=0。
本实施方式中,筛选数据的值越小,表明对应的图像数据越重要。
需要说明的是,第一存储空间为图形处理器的各存储块,由于图形处理器在进行计算处理时采用异步的方式,因而在获取第一存储空间内每帧图像数据各自对应的筛选数据之前,需要同步图形处理器内各存储块之间的图像数据,避免出现死锁或者同线程下的误操作的情况。
步骤102:在筛选数据满足缓存存储空间对应的第一数据迁移条件后,将图像数据迁移至缓存存储空间。
一个具体的实现中,若缓存存储空间为中央处理器的存储空间,与中央处理器的存储空间对应的第一数据迁移条件为超过预设的第一阈值。
具体的说,该第一阈值可以根据实际应用进行设置,分别将每帧图像数据的筛选数据和第一阈值进行比较,将超过第一阈值的筛选数据所对应的图像数据迁移至中央处理器的存储空间内。
可以理解的是,为了避免出现CPU的内存不够的问题,在将图像数据迁移至缓存存储空间后,该三维重建方法还包括:在缓存存储空间增加新的图像数据后,获取缓存存储空间内每帧图像数据各自对应的筛选数据;在筛选数据满足第二数据迁移条件后,将图像数据迁移至硬盘的存储空间,第二数据迁移条件为筛选数据超过第二阈值,其中,第二阈值大于第一阈值。
将图像数据迁移至硬盘的存储空间的判断方式与将图像数据迁移至CPU的存储空间的方式大致一致,此处不再赘述。
步骤103:根据数据迁移后的第一存储空间内的图像数据,对目标场景进行三维重建。
具体的说,利用第一存储空间内的图像数据,按照三维重建模型对目标场景进行三维重建。
本发明实施方式相对于现有技术而言,在检测到第一存储空间增加新的图像数据后,获取第一存储空间内每帧图像数据的筛选数据,由于筛选数据用于表征对应的图像数据的重要程度,通过对每帧图像数据的筛选数据进行判断后,可实现将不重要的图像数据迁移到缓存空间内,从而减少了第一存储空间的内存资源的占用量,提高了对目标场景进行三维重建的速度;同时由于不断将图像数据迁移至缓存存储空间内,使得即使出现大范围的目标场景,也不会影响对该目标场景的三维重建速度,扩大了三维重建的场景范围。
本发明的第二实施方式涉及一种场景的三维重建方法。该场景的三维重建方法包括:在检测到第一存储空间增加新的图像数据后,获取第一存储空间内每帧图像数据各自对应的筛选数据;在筛选数据满足缓存存储空间对应的第一数据迁移条件后,将图像数据迁移至缓存存储空间;根据数据迁移后的第一存储空间内的图像数据,对目标场景进行三维重建。
第二实施方式与第一实施方式大致相同,主要区别之处在于:在本发明第二实施方式中,在对目标场景进行三维重建之前,场景的三维重建方法还包括:若采集过目标场景的图像数据,且检测到第一存储空间内未存储目标场景的图像数据,则在缓存存储空间查找目标场景的图像数据,并将查找到的目标场景的图像数据迁移回第一存储空间。该场景的三维重建方法的具体流程如图3所示:
步骤201:在检测到第一存储空间增加新的图像数据后,获取第一存储空间内每帧图像数据各自对应的筛选数据。
该步骤与第一实施方式中的步骤101大致相同,此处将不再赘述。
步骤202:在筛选数据满足缓存存储空间对应的第一数据迁移条件后,将图像数据迁移至缓存存储空间。
一个具体的实现中,该第一存储空间为图形处理器的各存储块;缓存存储空间包括:中央处理器的存储空间和硬盘的存储空间;与中央处理器的存储空间对应的第一数据迁移条件为超过预设的第一阈值且小于预设的第二阈值;与硬盘的存储空间对应的第一数据迁移条件为超过第二阈值。
具体的说,第二阈值大于第一阈值,由于筛选数据表征了数据的重要程度,筛选数据的值越小,表明对应的图像数据越重要。通过第一阈值和第二阈值将不同重要程度的图像数据分别存储,可以减少CPU内存资源的占用量。可以理解的是,图像数据迁移至硬盘的存储空间的过程中,需要先经过CPU的存储空间,再将图像数据从CPU的存储空间迁移至硬盘的存储空间。
步骤203:若采集过目标场景的图像数据,且检测到第一存储空间内未存储目标场景的图像数据,则在缓存存储空间查找目标场景的图像数据,并将查找到的目标场景的图像数据迁移回第一存储空间。
具体的说,在重定位的过程中,若确定获取过该目标场景的图像数据,则检测第一存储空间内是否存储有该目标场景的图像数据,若未存在,可以利用在重定位过程中确定的特征数据在缓存存储空间内查找该目标场景的图像数据,并将查找到的目标场景的图像数据迁移回第一存储空间。
步骤204:根据数据迁移后的第一存储空间内的图像数据,对目标场景进行三维重建。
本实施方式提供的场景的三维重建方法,若采集过目标场景的图像数据,且检测到未存储目标场景的图像数据,则可读取该缓存存储空间的图像数据进行三维重建,而无需再次重新采集目标场景的图像数据进行三维重建,缩短三维重建的速度。
本发明第三实施方式涉及一种终端,该终端30的结构如图4所示,包括:至少一个处理器301;以及,与至少一个处理器301通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够执行第一实施方式或第二实施方式中场景的三维重建方法。
其中,存储器302和处理器301采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器301和存储器302的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器301处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器301。
处理器301负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本发明第四实施方式涉及一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现第一实施方式或第二实施方式中场景的三维重建方法。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。