用于六自由度的360°体虚拟现实视频的激光雷达立体融合真人实景三维模型视频重建的制作方法

文档序号:13041523阅读:694来源:国知局
用于六自由度的360°体虚拟现实视频的激光雷达立体融合真人实景三维模型视频重建的制作方法与工艺

版权和商业外观通知

本专利文献公开的一部分包含受版权保护的材料。该专利文献可以显示和/或描述是或可能成为所有者的商业外观的事物。版权和商业外观所有者不反对任何人对在专利和商标局专利文件或记录中出现的专利公开内容的传真复制,但是保留所有版权和商业外观权。

本公开涉及三维视频的捕获,更具体地涉及一种用于将真人实景立体视频与激光雷达三维数据融合以产生体虚拟现实视频的系统。



背景技术:

用于生成用于虚拟现实(vr)应用的三维环境的现有系统分为两个基本类别。第一类是完全呈现的三维环境,这些环境通常由开发者和艺术家使用“游戏引擎”软件以如下方式创建:在空间中创建三维物体并将艺术和照明效果应用于这些物体以给他们物理对象的外观。此后,用户可以“进入”由开发者和艺术家创建的三维环境。

这些环境具有充分实现三维空间的益处。通常,由于这样的空间是为了被充分开发而设计的,因此用户的化身(或者在vr情况下,用户本身)可以在这样的空间内自由移动。这些空间的问题在于他们只估计真实的位置,以及更根本地,需要开发者、艺术家几天或几周的工作(并且如果考虑游戏引擎的开发时间,则需要甚至更长的时间)来创建使其他开发者和艺术家能够创建环境的软件。虽然有些工具可以自动完成这些环境创建过程的一部分,但是必须进行很多手动工作以使化身或用户可信任并完全可导航。更复杂的系统结合了这两种方法,对于将要或已经成为二维拍摄主题的位置进行详细的摄影测量,以推算一些三维数据。然后,三维数据可以与视频组合,以创建有点拟真的视频环境。由于所涉及的时间和工作,这些系统中没有一个真正适合于捕获任何“真人实景”的视频同时轻松记录相关三维空间的特征。

另一类是由具有重叠视野的相机创建的“轨上(on-rails)”视频或一系列图像,从而使得全像域可以通过软件“缝合”在一起以在观看者周围创建“气泡(bubble)”。这个类别感觉有点像在视频格式的化身中逢场作戏,或者在各个面向图像捕获的化身中从一个固定位置转换到另一个固定位置。在“气泡”中,用户或化身可以“环顾”包围他们的图像域的内部。这些系统提供了非常高质量的图像,这些图像准确地反映了拍摄这些图像的地方(通常是室外空间)。然而,这些图像遭受视差问题,并且缝合的图像通常对准不好。

然而,化身或用户不可以偏离预选路径或固定位置,并且图像没有任何三维分量。因为没有预见运动,所以具有深度信息并不是太重要。但是,对于在环境中至少具有一定程度的运动自由度的真实三维环境非常需要深度信息,如使用“游戏引擎”风格的软件创建的完全实现的三维环境中可用的深度信息。

立体摄影(使用两个相机来捕获由两个相机创建的两个相应图像中可见元素的三维特征)已被用于估计图像内对象的相对深度。然而,因为虚拟现实系统优选地使用完全沉浸式的完全环绕的球形空间(通常是外部的),并且进一步因为外部具有虚拟的无限(天空)的深度,并且倾向于具有长视野(例如远离几个街区的建筑物),所以立体摄影的适用性有限。为了计算深度,两个相应图像之间必须存在明显的可察觉的差异。在很远的距离下,两个图像内的对象之间的差距是最小的(如果它存在的话)。因此,通常在外部、开放空间中使用立体摄影来记录视频是不准确的,并且不足以创建虚拟现实用户可以移动的完全环绕的三维球形空间。

基于深度传感器的系统(如kinect)支持类似的功能,但仅能够在一个方向上运行(即朝向用户)并具有非常有限的范围。因此,这些类型的系统不适用于室外环境或360°球面视频录制以及拍摄环境的三维重建。

类似地,激光雷达系统已经存在了一段时间,但对于一般使用来说,是相当昂贵的。此外,激光雷达系统生成的深度数据不能轻易与其他数据组合,也不易于翻译成可用于重新创建三维环境的数据。这部分上是因为激光雷达数据虽然非常准确,但在给定的目标环境中却非常稀疏,这意味着激光雷达的深度数据点互相之间相对较远。该稀疏性使得单独的激光雷达数据不足以重现目标环境的准确的三维呈现。

附图说明

图1是用于融合立体图像和激光雷达系统的框图;

图2是计算设备的框图;

图3由图3a、图3b、图3c和图3d组成;每个都是用于捕获三维实时视频的全向立体相机的不同示例配置;

图4是用于融合立体图像和激光雷达系统的控制器的功能框图;

图5是三维数据存储系统的功能框图;

图6是用于对立体图像和激光雷达进行融合以创建三维数据的方法的流程图;

图7是相对于立体相机校准激光雷达的方法的流程图;

图8是用于将激光雷达数据与立体相机数据组合从而导出三维数据的方法的流程图;

图9是具有片段内的两个已知激光数据点的图像的片段;

图10是用于缝合成单个三维图像的立体图像之间的混合接缝的方法的流程图;

图11由图11a和图11b组成,是立体相机图像的多边形投影。

在本说明书中,出现在附图中的元件被分配三位参考指示符,其中最高有效数字是元件被引入时的附图号,以及两个最低有效数字是该元件所特有的。没有结合附图来描述的元件可以被认为具有与其具有相同参考标记的先前描述的元件相同的特性和功能。

具体实施方式

装置的描述

现在参考图1,图1是用于融合立体图像和激光雷达的系统100的框图。系统100包括至少一个立体相机对110,该立体相机对110由110l、110r(110l为左相机,110r为右相机)组成。可以存在一个或多个附加立体相机对,诸如立体相机对110'、110”、110”'和110””。立体相机对110可以用于创建可以推导出三维相机数据的立体图像。如本文所使用的,“三维相机数据”是指从立体相机对拍摄的同步图像推导出的三维数据。

激光雷达120是一种深度传感技术,其依赖于至少一个激光器以及从至少一个激光器检测反射以产生三维空间的深度图。存在各种激光雷达的实施例。有些使用单个的、在整个视野中移动的扫描激光器,另一些则依赖于穿过各个视场移动的多个离散束。还有一些使用分束器或类似技术来使用单个离散激光器同时扫描多个区域。用于反射光束的独立传感器的数量也可以在一个到多个之间变化。较便宜的现代激光雷达通常依赖光学元件和一个大型传感器的组合来收集反射光束,从而推导出数据。优选地,激光雷达生成的三维数据是相对于激光雷达的(x,y,z)点场的形式。如本文所使用的,短语“三维激光雷达数据”是指从激光雷达产生的三维数据中捕获或推导出的三维数据。

立体相机对110和激光雷达120都在控制器130的指挥下操作。控制器130可以全部或部分是通用的计算设备。虽然显示为单个控制器130,但多个独立的控制器可相互作用,例如,用于激光雷达的一个单独控制器和用于一个或多个立体相机对的另一个控制器。控制器130可以协调每个立体相机对(例如立体相机对110)和激光雷达120之间的相互作用。控制器130可以仅捕获并存储稍后可以用于创建描述目标三维环境的三维数据的相机和激光雷达数据。或者,控制器130可以用于捕获、存储和随后执行适于生成描述目标三维环境的三维数据的计算。

控制器130可以与同步锁定系统140通信或包括同步锁定系统140。同步锁定(generatorlocking)是用于同步基于时间的材料源(如音频或视频)的系统或设备。这里,通过多个立体相机对110和激光雷达120,(分别独立地生成内容),同步锁定系统140在所生成的每组数据(图像或激光雷达数据)上提供单源时间戳,以使得其在被控制器130组合时可以被准确地同步。优选地,同步锁定系统140可以是具有访问或接收非常精确的时间数据的全球定位系统(gps)接收机。然而,用于执行同步锁定的其它方法和系统在本领域中是已知的。

如本文所使用的,短语“三维数据”是指包括相对于已知位置的深度信息的数据,该数据足以产生与位置(从该位置捕获了用于生成三维数据的数据)周围的三维空间相对应的三维场景。

现在转向图2,图2是示例性计算设备200的框图,计算设备200可以是图1的控制器130。如图2所示,计算设备200包括处理器210、存储器220、用户接口230(可选)和通信接口240。这些元件中的一些可能存在或可能不存在,这取决于具体实施方式。此外,虽然这些元件被彼此独立地示出,但是在某些情况下,可以将各自整合到另一个中。

处理器210可以是或包括一个或多个微处理器、微控制器、数字信号处理器、专用集成电路(asic)或单芯片系统(soc)。存储器220可以包括易失性和/或非易失性存储器(包括只读存储器(rom)、静态、动态和/或磁阻随机存取存储器(分别为sram、drm、mram)和非易失性可写存储器(如闪存))的组合。

存储器220可以存储由处理器执行的软件程序和例程,这些被存储的软件程序可以包括操作系统软件。操作系统可以包括支持通信接口240的功能,例如协议栈、编码/解码、压缩/解压缩和加密/解密。存储的软件程序可以包括使计算设备执行本文所述的部分过程和功能的计算机应用程序或“应用”。如本文所使用的,“存储器”一词明确地排除传播波形和暂态信号。

用户接口230(如果存在)可以包括显示器和一个或多个输入设备,例如触摸屏、小型键盘、键盘、触控笔或其他输入设备。

存储器240可以是或包括非易失性存储器,例如硬盘驱动器、为长期存储设计的闪存器件、可写入介质和专有存储介质(如用于长期存储照片或视频数据的介质(如与相机一起使用的,如立体相机对110))。

通信接口250可以包括一个或多个有线接口(例如通用串行总线(usb)、高分辨率多媒体接口(hdmi))、用于存储设备的一个或多个连接器(例如硬盘驱动器、闪存驱动器或专有存储解决方案)。通信接口250还可以包括蜂窝电话网络接口、无线局域网(lan)接口和/或无线个域网(pan)接口。蜂窝电话网络接口可以使用一个或多个蜂窝数据协议。无线lan接口可以使用无线通信协议或另一种无线局域网协议。无线pan接口可以使用有限范围的无线通信协议,例如蓝牙或一些其他公共或专有无线个域网协议。当计算设备200被配置作为相机和激光雷达装置(比如系统100)的一部分时,无线pan接口可以用于与有源声学滤波器装置110l、110r进行通信。蜂窝电话网络接口和/或无线lan接口可以用于与计算设备200外部的设备进行通信。

通信接口250可以包括射频电路、模拟电路、数字电路、一个或多个天线以及与外部设备进行通信所需的其他硬件、固件和软件。通信接口250可以包括一个或多个专用处理器,以执行如编码/解码、压缩/解压缩和加密/解密的功能,以便使用所选择的通信协议与外部设备进行通信。通信接口250可以依赖于处理器210来整体或部分地执行这些功能中的一些或全部。

如上所述,计算设备200可以被配置用于地理定位,也就是说确定其自己的位置。地理定位可以由计算设备200本身的组件或通过与适合于此目的的外部设备进行交互来进行。可以使用如全球定位系统(gps)接收机或其他方法来进行地理定位。

现在转到图3,在图3a、3b、3c和3d中示出了用于捕获三维真人实景视频的全向立体相机的不同示例配置的示例。这些图像来自相机装置的顶视角。图3a是包括总共四个立体相机对(8个相机)的装置:平行于水平面安装的三个顶部相机对(在这种情况下,“水平面”是垂直于观看者相对于该装置的位置的圆盘)和向上对准的一个相机对。这些相机,并且优选地,每个装置中的所有相机,具有110度或更大的视野以确保对该区域的最佳覆盖。直线透镜是优选的,但也可以使用广角(“鱼眼”)透镜。

图3b是五立体相机对装置(10个相机),其包括平行于水平面安装的四个相机对和向上对准的一个相机对。图3c是七相机对装置(14个相机),其包括稍高于水平面对准的五个相机对和大体以向上角度对准的两个相机对。最后,图3d是八相机对装置(16个相机),其包括平行于水平面安装的六个相机对和大体向上对准两个相机对。

几乎可以使用立体相机对的任何配置,只要相机以立体对布置,并且存在足够的重叠、由每个相机对产生的图像集可以结合到相邻的图像集以形成连贯的整体。七对(14台相机)或八对(16台相机)的相机装置优选用于全面覆盖。此外,作为包括任何数量的立体相机对的相机装置的校准的一部分,必须知道或学习每个相机对内和相机对之间的内在参数和外在参数。

内在参数定义了立体相机对创建的图像中的像素位置与现实世界单元之间的关系。内在参数包括焦距(透镜和图像平面之间的距离)、主点偏移(垂直于图像平面并穿过透镜的线与图像平面相交的点)和轴倾斜(一个轴向另一轴倾斜的程度)。知道这些内在参数使得能够将由相机创建的图像转换成实际尺寸和量度(基于它们可以进行数学计算)。

外在参数定义了相机与外部世界的关系。这些参数可以进行如定义相对于其他对象(包括其他相机)的方向和位置的操作。这些参数有助于将相机放置在世界中并确定相机的相对视域(例如,距离物体的距离,或根据相机在世界上的视角,某些物体是否被其他物体遮挡)。

图4是用于融合立体图像和激光雷达的系统400的控制器的功能框图。控制器430包括用于相机校准431的功能、用于立体校正432的功能、用于激光雷达校准433的功能、用于三维位置计算434的功能、用于点云融合435的功能和用于三维数据存储436的功能。同步锁定系统470可以被包括为控制器430的一部分或被包括在控制器外部(如图所示)。

尽管示出的为单个控制器430(如图1的控制器130)的一部分,但是系统400的功能方面实际上可以是多个不同的物理组件。例如,相机校准431可以内置到相机装置中,以使得相机组或控制器知道相机校准431被放入的装置,并且相机可以一起工作以确定它们自己的内在和外在参数。类似地,三维数据存储436可以在控制器的外部,或者可以在一个或多个立体相机内。为了简单起见,功能组件被显示为在控制器430的内部,但是可以预想各种实施例。

相机校准431是系统400确定立体相机对组的相关内部和外部参数的过程。内部参数使得通过立体相机对创建的图像能够被比较,以推导出在图像中看到的外部尺寸的物理测量值。例如,如果立体相机对的眼间距离(相机之间的距离)、焦点和焦距是已知的,则由这些立体相机对创建的图像可以用于通过使用相对简单的三角学和代数将出现在图像中的对象转化成三维空间中的深度。这些测定依赖于在两个图像中找到相同的点,然后在图像中确定相同点相隔的距离。该差异可以被转换成深度,具有较小的距离(视差)意味着物体更远,而较大的距离(视差)意味着物体更近。但是,为了进行这些计算,计算这些深度(或视差)所必需的内在和外在参数必须通过校准来知晓或确定。这是相机校准431执行的过程。

相对准确地进行该计算的一种方法是依赖具有已知参数的外部标记。这种标记包括例如棋盘样式标记,其中棋盘的方格是已知宽度和高度的。相应的棋盘(或棋盘中的单个框)可以相对容易地由个人手动地或由计算机视觉算法自动区分。然后,计算框或棋盘之间的视差,并且利用已知的可用的宽度和高度,可以确定立体相机对的内在和外在参数。用于进行这种校准的各种其他方法和不同种类的标记是本领域已知的。

立体校正432是控制器430的一个功能方面,其可以用于计算由立体相机对拍摄的立体图像对的各个方面的差异。如上面关于校准所讨论的,视差可以用于从立体相机对创建的对应图像中导出相对深度。

激光雷达校准433是控制器430的另一功能。激光雷达必须相对于相机进行校准,以便将来自立体相机对的结果数据与激光雷达生成的三维激光雷达数据进行比较。下面将更全面地讨论相机和激光雷达的校准过程。

三维位置计算434是控制器430的又一功能。如上所述,该计算可以在与控制器430物理上不同的设备上进行,但是为了便于描述,将其描述为控制器430的一部分。三维位置计算434将来自立体相机对的视差数据和三维激光雷达数据转换成用于三维空间(在该三维空间中相机装置和激光雷达组合记录影片)的三维数据。以下将在参考图8更全面地讨论该过程。

三维数据存储436用于存储三维数据。该数据可以包括例如用于视频帧的立体图像对、对应时间的三维激光雷达数据、由同步锁定系统470提供的时间标记数据,并且可以包括与从数据导出的计算出的视差和/或深度数据相对应的二次元数据。通过保留构成派生三维数据的组件,可以使用相同的源数据集来进行后续计算,以使得能够从中导出更好的三维数据,从而在未来可以创建更好的算法。

该三维数据存储436可以是本地的、或者可以是整个或部分地在控制器430的外部。

图5是三维数据存储系统500的功能框图。系统500可以是图4的三维数据存储436或者可以是图4的外部存储器。三维数据存储系统500包括数据库502、图像存储器504、激光雷达存储器506、三维数据存储器508和三维视频存储器509。虽然这些元件中的每一个被示出为构成系统500的一部分,但是一个或多个可以不存在,或者,一个或多个可以包含在另一个中。

数据库502可以用于存储与所记录图像之间的关系相关的数据、激光雷达数据和生成的三维数据。数据库502可以被更新为视差、深度和三维数据算法操作以适当地关联基础数据和所得到的三维数据。此外,数据库可以提供用于使得通过本文所述的系统和过程生成的三维数据的读取器或播放器能够被访问以用于重演或进一步编辑的结构。

图像存储器504可用于将一系列对应的视频帧存储为固定图像。数据库502可以将由同步锁定系统(例如图4中的470)识别的图像链接作为已被同时捕获的图像。以这种方式,对于覆盖360度球面空间的相机装置,可以将用于创建一个球面视频帧的图像识别为彼此相对应。图像存储器504可以依赖于传统的视频数据格式,或者可以使用专有格式,以使得如时间戳数据的元数据可以在视频创建时被直接编码成一个或多个视频帧。

激光雷达存储器506可以用于存储作为激光雷达120(图1)的操作的结果而创建的激光雷达数据。该数据可以基于每帧视频,并且可以以各种形式存储,如与激光雷达120本身相关的三维(x,y,z)坐标的深度数据矩阵。该激光雷达存储器506可以在数据库502或激光雷达存储器506本身中存储激光雷达数据和相关的时间戳。

三维数据存储器508可以用于存储使用存储在图像存储器504中的图像和存储在激光雷达存储器506中的激光雷达数据生成的三维数据。三维数据存储器508可以包括用于图像存储器504中呈现的所捕获的每个视频帧的视差数据、深度数据和整体三维图。

相比之下,三维视频存储器509可以存储专用的三维视频数据格式,其用于在一个程序包中提供真人实景视频和三维数据,以便由播放装置播放或由编辑装置进行编辑。因为传统的视频格式是二维的,它们不足以表现由本文所述的系统和过程生成的三维数据的深度和三维特性。该生成的三维视频可以存储在三维视频存储器509中。

过程说明

图6是用于融合立体图像和激光雷达以创建三维数据的方法的流程图。该方法始于开始605并连续运行直到到达结束695。虽然显示为单一进程,但是可以同时进行多个同时进程。例如,多个核心或多个处理器系统可以对一个单独的视频帧进行操作,同时,图6中所示的相同进程的多个迭代可以同时进行。

首先,相机对在610处被校准。相机的内在和外在参数可以借助于外部标记(例如上面参照图4描述的棋盘标记)来计算。因为各个外部标记之间的实际距离是已知的,所以可以使用这样的外部标记来创建标记的三维位置与由相机对创建的图像中的标记的坐标之间的映射。给定两个图像之间的足够的对应关系,可以使用公知的方法来解决相机中的未知内在参数和外在参数。

解决两个相机之间的内在参数和外在参数是公知的,但是在多个相机的情况下更难以解决。例如,假设有三个前置摄像头a、b和c。我们可以解决a到b,b到c的内在参数和外在参数。在理想的测量中(无噪声的世界),a到b的参数与b到c的参数应该得到从a到c的良好测量。由于实际上,这些测量中的每一个都是不理想和充满噪音的。因此,简单地将内在参数和外在参数从a到b、b到c组合很可能导致a到c之间的大的二次投影误差。这里,由于图像中的测量和噪声的不理想,因此两个a到b和b到c之间的简单组合是不可能准确的。因此,二次投影误差是指通过将估计值基于不够准确的源数据引入的误差。因此,替代地,通过最小化场景内的已知矢量和已知像素之间的差异来得到每个相机的内在和外在参数的估计值,以使用捕获的图像对相机进行互相的校准。

接下来,通过将极点推到无穷远来进一步校正每个立体相机对,以使得可以沿着单个扫描线进行视差估计过程(下面讨论)的特征匹配以减少计算。本文所使用的“极点”是来自第二立体相机对的视差数据中的点,立体相机对中的第一相机聚焦于该点。本文所用的“校正”是沿着光学中心实际旋转相机直到焦平面变得共面的过程。为了对每个相机的内在和外在参数的估计值进行校正,优选立体相机对尽可能平行。这使得校正过程能够非常轻微地旋转图像,这使得当数字图像质量随着旋转或其他修改而降低时,失真和分辨率损失最小化。因为对于旋转图像有无限可能使焦平面共面,所以可能会引入额外的限制来限制搜索范围。例如,新的x轴可以被限制为始终沿着基线的方向。新的y轴可能被限制为始终与新的x轴和原始z轴正交。最后,可能限制新的z轴始终与基线和原始y轴正交。

接下来,激光雷达在620处被校准。参考图7示出了激光雷达校准的过程。该过程包括激光雷达与一个或多个相机对之间的外在参数的计算。首先,在710处和720处获得用于外部标记的相机图像和激光雷达数据。对于外部标记,可以使用具有已知半径的平面上的圆形孔。使用基于圆孔的外部标记允许在相机图像和激光雷达数据两者中进行直接的特征提取。如下面更多的讨论,圆圈最适合在图像数据和激光雷达数据中进行检测。

在730处在图像中检测标记的位置和半径。只要标记的平面的颜色强度和圆孔后面的背景足够明显,就可以应用霍夫圆检测来粗略地检测圆形标记的位置和半径。

接下来,在740处在激光雷达数据中检测标记。由于标记和背景之间存在深度不连续性,所以激光雷达能够获得圆的轮廓。圆形孔也优于矩形孔,因为激光雷达数据通常是水平扫描线的序列的形式。因此激光雷达可能无法检测矩形孔的水平边。这使得激光雷达数据没有足够的选项来将激光雷达中的点与相应图像上的像素进行匹配。然而,使用圆形标记可以应用点云球拟合算法来粗略地检测球体的位置和半径。

接下来,例如由控制器430确定是否有足够的数据来完成激光雷达的校准。简而言之,必须有足够的保真度和来自图像(或多个图像)和激光雷达的可用数据,以充分导出激光雷达和一个或多个相机之间的外在参数。如果收集的数据不足(745处为“否”),则可以使用在710处捕获的附加图像以及在720处获得的额外的激光雷达数据来重新启动该过程。

然而,如果获得的数据似乎是足够的(在745处为“是”),那么该过程可以继续在750处计算激光雷达和相机之间的相对旋转和平移。可以假设相机和激光雷达之间的几何变换是纯平移,因此外部圆形标记应被放置为尽可能与用于图像的相机平行。在概念上,通过确保rgb图像中的圆是正圆而不是椭圆,标记的图像被实际地并手动地旋转以与激光雷达点平行。

为了使光雷达对立体相机进行校准,必须使图像数据的相对位置与激光雷达数据相匹配。一旦匹配,可以计算出立体相机到激光雷达的相对位置和取向(即外部参数)。为了找到相对位置,可以将来自立体图像的检测到的“视觉”圆形标记与检测到的“深度”圆形标记之间的差异最小化,以使得使用不同过程检测的两个圆尽可能匹配。所得到的平移和旋转可被存储为外在参数(或相对于一个或多个立体相机对的平移和旋转)。

回到图6,一旦相机和激光雷达已通过相应的图像集被校准(在630处),则激光雷达数据可以被捕获(在640处)。所捕获的、与基于由立体相机对和三维激光雷达数据640创建的重叠二维图像的360度球体相对应的图像集包括相同位置的点或深度场映射。虽然三维激光雷达数据是稀疏的,但是非常准确。图像在视觉上是准确的,但是从其导出的三维数据比激光雷达数据的精度和保真度更低。因此,两者的组合可以更适合于生成三维空间(在其中捕获图像和激光雷达数据)的更准确的三维表示。

一旦在630处和640处获得了图像和激光雷达数据,则进行天空提取以降低用于计算三维空间内的深度的整体计算的需求。户外场景几乎可以确保包括天空(或用于计算深度的天空等价物)。以深度计算为目的,天空有一些特殊的属性。首先,相对于激光雷达和相机装置,天空具有无限的深度。第二,天空通常是大的、整体的,通常是单一颜色(或渐变颜色的范围),它没有可辨别的纹理,这些属性都不是在计算深度时特别有用的。如果天空实际上无限远,那么使用图像或激光雷达来“计算”其深度就没什么意义了。此外,由于它相对易于检测,所以可以方便地排除深度计算,而不会对为三维空间产生的整体三维数据产生不利影响。

排除天空(或检测到的天空区域)具有避免计算其三维数据的大量过程的附加益处。为了将天空排除在外,将第一边缘检测(例如sobel边缘检测)应用于主体图像。接下来,可以使用形态闭合来关闭边缘检测结果。以这种方式,所检测到的天空区域的“端部”被智能地连接以识别给定图像中的天空区域的粗略形状。通过将非边缘区域初始化为绝对背景,可以应用优化算法(例如抓取)来改善图像中的天空区域的形状,这意味着绝对背景中的非边缘区域被定义为背景,并且因为它们是天空(无限深度)所以不会对其进行任何深度计算。对其余区域进行深度计算。最后,可以应用加权中值滤波器来进一步优化靠近天空边界的结果。如果像素被归类为天空,则像素的深度被设置为无穷大,从而简化对于归类为天空的那些区域的任何算法计算。排除天空区域使得深度算法的其余部分能够更快地起作用,并且总体上要求每个视频帧较低的计算资源。

接下来,在650处确定图像的像素相对于视频的最后一帧中的图像的相同像素是否移动了。在是视频的第一帧的情况下,每个像素已从“不存在”移动到存在。但是在随后的帧中,移动检测使算法能够通过对于帧之间已经改变的图像部分仅计算深度来进一步减少计算负荷。如果像素没有移动(在650处为“否”),则在655处使用来自前一帧的像素三维位置。如果像素已经移动(在650处为“是”),则可以在660处计算该像素的三维位置。为了检测运动,可以使用各种运动检测算法,例如tv-l1光流估计。运动检测可以通过各种方法或算法进行。

接下来,在660处计算已被确定为处于运动中的像素的三维位置。以下将参考图8更全面地讨论该过程。

接下来,在675处确定还没有计算出三维位置的附加像素是否被保留。如果是(675处为“是”),则过程返回650处的用于下一个像素的运动检测。如果不是(675处为“否”),则在680处组合用于多个图像集(每个集由立体相机对创建)的三维和图像数据。该组合产生用于每个相机图像集的图像和三维数据。

根据该数据,可以在685处生成用于三维空间的三维数据。该数据可以采取组合图像数据的专有格式的形式,从而对于捕获的三维视频帧,对组合的图像和为立体相机捕获的每个图像集中的每个像素定义深度(或三维位置)的三维数据进行接缝混合(下面参考图9讨论)。

最后,在690处确定是否有另一帧视频。如果没有(在690处为“否”),则过程结束。如果有(690处为“是”),则过程返回到630处捕获另一组图像,并在640捕获三维激光雷达数据。在某些情况下,例如当捕获图像和三维激光雷达数据之后良好地生成了三维数据时,该过程可以直接返回到在645处的、对于对应于下一帧视频的已有图像的天空提取。然而,当过程在创建视频帧时实时进行时,必须在630处捕获下一帧视频(以相应的图像集的形式),并且在该过程可能对于下一帧视频再次开始之前还必须在640处捕获三维激光雷达数据。

图8是用于将激光雷达数据与立体相机数据组合从而导出三维数据的方法的流程图。该方法可对应于图6的步骤660-685,在其中计算相应图像集中的每个像素的三维位置,在其中来自多个图像的数据被组合以产生360度的球体,并且在其中为捕获图像和三维激光雷达数据的三维空间生成三维数据。

为相应的图像集和三维激光雷达数据生成三维数据(在上面参考图6描述的捕获和预处理之后)的第一步是在810处将图像分割。分割可以设计成使每个片段的尺寸(周长)和每个片段中的颜色变化最小化。使片段更小导致更精确地确定每个片段内的整体三维深度,并且优选单一颜色(或相关颜色)导致可能是单个对象(或单个对象的一部分)的图像片段。这些单个对象很可能具有相同或几乎相同的深度。

因此,可以在算法上选择片段,以便为每个图像找到最小和颜色最相似的片段。例如,颜色匹配可以基于梯度检测,将预定或动态范围内(例如,取决于搜索空间的整个范围或整个图像)的颜色检测为与相同范围内的其它颜色相同的颜色,同时确定该范围之外的颜色是不同的。此外,较小的片段(即较小的颜色范围)是优选的,因为图像数据被用于驱动三维数据的创建,并且较小的片段更有可能产生准确性而在计算的复杂性方面没有明显的缺点。

一旦分割完成,在820处该过程将立体图像和三维激光雷达数据转换为视差数据以用于进行视差估计。如本文所使用的,术语“视差”是指在由立体相机对中的一个或另一个从两个不同视角拍摄的两个对应图像中出现的单个对象的图像内位置之间的差异(例如测量的距离)。用于计算立体图像对的视差的过程是公知的。如上所述,可以使用已知的内在参数和外在参数来比较同时拍摄的两个图像,以识别那些图像中的相应像素。然后,可以计算实际(例如145厘米)或图像内(例如42像素或15微米)的图像之间的视差。

为了降低相关数学的整体复杂性,也可以将激光雷达数据转换成为视差数据。为了将三维激光雷达数据转换为视差数据,数据被转换为二维视差数据的投影。然而,因为激光雷达数据是非常准确的,所以对于激光雷达数据提供的稀疏数据点(是完全准确的),是可以依赖的。一旦在图像内识别出对应的点,则导出的激光雷达视差数据可以被绝对正确地应用于图像数据的那些部分。这使得激光雷达数据能够用作种子点以繁衍用于基于图像的视差计算中的视差数据。

视差可以使用基于图像的视差和在830处的每个片段的转换的激光雷达数据点(如果可用)中的至少一个来估计。例如,图9示出了片段内具有两个已知激光雷达数据点的片段910。这里,图像片段内的两点的深度912和深度914是已知的。因为片段已被确定为颜色相似且尽可能小同时保持颜色相似性,所以该片段内的深度平滑且相对均匀的可能性非常高。因此,基于该片段内的激光雷达数据点知道深度912和深度914可以使得使用从其导出的视差数据来极为精确地估计该片段的实际深度。

回到图8,为了使用用于视差的激光雷达数据点(如果可获得)估计视差,视差估计首先用于缩小必须搜索的可用深度的范围。一旦图像被分割,片段内的视差应该是平滑的。即使该片段不完全正确,根据该片段的可用的基于激光雷达的视差数据也将是可辨别的。

通过最小化两个相邻像素之间的差异可以使片段中每个像素的视差变平滑。这是有意义的,因为极其可能:在具有相对较小尺寸并且具有非常相似的着色的片段内,每个像素的相对深度倾向于非常相似。此外,该估计可以用于通过拒绝改变那些像素深度并且仅改变从基于图像的视差导出的像素深度来繁衍整个片段中的准确性已知的激光雷达视差数据。多次进行平滑处理同时不改变基于激光雷达视差数据的像素深度,使得每个片段的视差估计都相对准确。

基于如上所述生成的估计值,在840处可以使用平面拟合来导出更准确的视差。平面拟合本质上是试图将一组数值拟合在平面内的算法。在这种情况下,这些数值都是从图像数据导出的和从激光雷达数据导出的视差数据。

这里,片段的总体视差是连续的而不是离散的。因此,搜索空间可以是无限大以产生精确的值(例如浮点值),这使得问题很难解决。例如,因为搜索空间太大,使用多标记凸优化(convexoptimization)问题导出精确的深度值不是可接受的解决方案。

然而,将已知的视差拟合到平面中在这种情况下倾向于是准确的,并且基本上限制了给定的片段的视差的潜在值。为了做到这一点,平面通过使用来自视差的点形成平面的标准来参数化。但是,除了从激光雷达数据中抽出的几个点,标准是未知的。因此,标准可以根据激光雷达数据中已知的标准来衍化,以代替未知或不正确的用于平面的标准。视差也可用于避免正面平行偏差。具体来说,假设给定片段中的所有对象具有相同的视差。然而,依赖激光雷达数据的平面拟合解决了与“倾斜”或曲面相关的潜在问题。标准和视差的无限可能组合可以使用随机初始化来解决。使用随机初始化,一些正确的数据被引入到平面拟合算法中,即使存在偶然,已知激光雷达数据被认为是正确的。从那里正确的数据可以跨片段繁衍。

在上述估计的、预计算出的视差的范围内初始化视差。标准值在0.5到1的范围内初始化,因为具有极端倾斜或角度的物体是不可能的。然后,良好的样本可以在空间上跨片段传播,其中标准和视差随机浮动。

使用自适应支持权重来计算成本。对于空间传播,使用来自相邻像素的平面参数的成本与原始成本(例如,随机成本或先前估计的成本)进行比较。如果原始成本较低,则更新平面参数。为了引入随机干扰,平面参数在一个小的方差内随机变化,并将成本与原始成本进行重新比较。如果更新后的成本较低,则平面参数将再次被更新。这个过程一直重复直到收敛,实际上,这种收敛相对较快。如果需要,迭代可能被有意地限制到特定数量的迭代或总运行时间,以便加速得到结果。其他方法也可用,但被证明效率较低。

视差估计的下一阶段是在850处填充遮挡区域。可以在左视差图和右视差图之间进行左右一致性检查。如果左右视差图之间的差异大于0.5,并且法向量的角度之间的偏差大于5度,则该区域被标记为遮挡。还有其他遮挡检测方法,只要检测遮挡的方法可以应用以在适应图像中的部分遮挡的同时更好地将所得到的三维数据拟合到三维空间中。当检测到遮挡时,通过扩展从上一级计算得到的平面,将每个被遮挡的像素替换为与最近的没被遮挡的像素对应的数据。

接下来,通过对视差图应用加权中值滤波器来进行后处理。加权中值滤波器用于在保留硬边缘(例如,多过单个点的、但是看起来为边缘的深度上的大的变化)的同时通过去除异常值来使整体视差图变平滑。将加权中值滤波器应用于数据的方法通常是已知的。

最后,在870可以将视差数据转换回深度数据或三维数据。上面的计算是作为视差计算完成的,因为它大大简化了深度计算。尽管有三维激光雷达数据可用,但从立体图像导出视差比三维导出视差更容易操作。每次计算不是在三维中运行,而是通常将计算限于两个维度。

一旦使用上述过程确定视差,则视差可以被转换回适合于生成三维场景(例如用于视频)的三维数据。场景的图像可以与深度数据智能地组合以基于图像创建视觉上准确的和三维准确的三维空间重建。与典型的球面“缝合”摄影不同,所得到的三维数据(其可以包括逐帧视频数据)包括两个缝合在一起的图像以及指示这些图像内的对象的轮廓和物理深度的三维数据。同时,作为这些过程的结果而创建的三维数据可以用于准确地和视觉地重建具有用于虚拟现实或增强现实应用的可感知深度的三维空间。

一旦在870处将数据转换回深度或三维数据,则过程在895结束。

现在转到图10,示出了用于混合拼接成单个三维图像的立体图像之间的接缝的方法的流程图。接缝混合过程只是被带入到虚拟三维空间中的图像的二次投影的大的过程的一部分。对于上下文,总体上将讨论总体过程,具体参考图10,但是图10着重于接缝混合过程。虽然图10的过程中示出了以1005开始和以1095结束,但该进程可以在用于独立部分的视频帧的多个处理器或核心上同时进行,并且对于整个三维视频是可以迭代的。

通常,一旦对每个相机创建的图像中的每个像素计算三维位置,则应用点云融合算法。点云融合算法包括1010处的初始全景投影,1020处的最优接缝发现,1030-1080处的颜色校正(例如接缝混合),以及最后在1090处修正后的点云与现在校正后的颜色的三维二次投影。

第一步是在1010处三维点云的全景投影。全景投影意味着作为上述立体图像和三维激光雷达数据融合的结果产生的完整三维数据被下转换换成与用于捕获图像的相机相同的方式布置的一系列有效平面图像。通过使系统能够在二维域而不是三维域中找到接缝,全景投影简化了在三维点云之间找到最佳接缝(在最终三维数据中可视地融合两个图像的位置)的过程。此外,用于二维的数学通常要简单得多,因此所需的处理能力和时间也同样会降低。进一步地,全景投影通过使用具有可比结果的泊松方程能在二维域中而不是在三维域中进行修正来简化沿着接缝的颜色校正。

最后,使用全景投影,图像网格化的过程比使用行进立方体算法或泊松重建算法处理复杂三维结构或点云本身要简单得多。替代地,根据全景网格可以相对简单连接,这对于虚拟现实环境来说非常有效,因为观看vr耳机内的三维空间的个人将以有限的运动成为全景投影的中心。因此,基于全景的网格化实际上看起来非常自然和引人注目,同时保持三维空间的整体三维面貌。

可以参考图11(图11包括图11a和图11b)来理解可以称为多边形投影的全景投影。多边形投影的形状取决于用于拍摄立体图像的原始相机的配置。图11a和图11b所示的多边形投影1100基于七面(14个相机)的装置,图11a是开放形式的棱镜,因此可以看到平面1110-1116,而图11b是形成多边形投影的棱镜,以使得平面1110-1116形成棱镜。在这样的棱镜中,由多边形投影重新创建的虚拟现实环境中的观看者将大致处于多边形投影1100的中心。可以看出,在多边形投影中呈现代表一组立体图像(多个立体相机)的每一侧。因此,用于图11a和图11b中的多边形投影1100的相机装置是五边形棱柱体,其中前置相机对代表每个矩形平面,顶部和底部相机对代表顶部和底部五边形平面。

多边形投影1100的显著优点在于,其能够在全景图的每个部分进行相等的采样,因为每一侧直接与拍摄相机平行。相比之下,如果使用传统的球形投影,则由于两个相机的视点之间缺少像素,因此需要额外的孔填充。与传统的球面投影相比,多边形投影还具有用更少的像素显示同样像素的全景图的能力。由于不均匀的采样,一旦应用了球形投影在球形投影的北极和南极上会有许多不必要的像素。多边形投影在每个图像中具有相等的采样。

回到图10,在1010处应用全景投影之后,在1020处必须检测图像接缝并沿着这些接缝进行切割。图像接缝是每个图像中、两个图像将被连接的那些位置。需要一个最佳的接缝切割来将点云与相邻视图分开,这主要是因为相机校准和三维位置计算是不可能完美的,因此,来自不同相机的、被假设相同(重叠)的点在其相对位置上有一些偏差。在没有接缝混合的情况下进行多边形投影时,这会导致重影伪像。简而言之,相同的对象在重叠图像中出现两次,因此它们的图像(及其相关联的三维数据)出现在投影中,这不是所希望的。因此,必须消除这些在图像中特别是点云中重复的对象,并且数据必须被拼接和智能地混合以准确地代表现实并消除重影的伪像。沿着接缝进行切割有许多方法,本过程可以与任何切割选择和植入过程同样良好地工作。

然而,理想切割优选地在低梯度区域(即颜色和深度相对均匀的区域)中的接缝中进行。如果沿着这些接缝进行切割,则使用的视觉伪像不太可能被所得场景内的观看者察觉。通过选择使沿着接缝的颜色变化最小化的接缝,可以根据相对相似的颜色和深度来自动选择接缝。所选择的图像接缝可以或可以不被选择为直线,这取决于具体实施方式。

在选择用于执行切割和拼接的最佳接缝之后,需要进行颜色校正,因为在接缝处可能存在明显的颜色不连续。已知相机传感器具有固有的差异,即使在本文所述的相机装置中通常使用的相同型号的相机也是如此。作为结果,即使原始图像本身对于图像中的各种对象也将具有轻微的颜色差异。即使在颜色平衡之后以及在白平衡和增益被调整之后,这也可能发生。相机的不同位置也将导致对外部照明的不同响应,从而导致视图之间的轻微或有时较大的色差。可以使用各种颜色校正方法。优选地,可以使用泊松混合,因为它旨在解决梯度域中的颜色校正问题。在检测到的接缝中,总是存在不需要的梯度。所以泊松混合在接缝上进行颜色校正,效果很好。此外,可以采用各种方法,但是优选地,所选择的方法使图像接缝(和周围)的颜色变化最小化。

为了降低搜索区域以进行合适的颜色校正色的选择,当进行颜色校正时,首先,在1030处创建要混合的图像的低分辨率版本。对于高分辨率图像,迭代次数在收敛前可能相当大。因此,可以使用多分辨率方法来减少计算。一旦在1020处识别接缝并且在1030处产生低分辨率,则可以选择混合颜色,并且在1040处对低分辨率图像进行混合。在相对低的分辨率下,该过程可以以低的计算成本快速发生。所得到的混合被保存并线性插入以获得更高分辨率的图像。

接下来,在1045处确定该图像的分辨率是否与捕获的分辨率相同。在第一遍,当然不是这样(1045处为“否”),但在后来的过程中可能是这样。接下来,在1050创建稍高分辨率的图像。以较低分辨率使用和保存的混合用于在1040处以较高分辨率(仍然为低)进行新的盲点,并在1045处将捕获的分辨率再次与低分辨率图像进行比较,此过程将重复,直到达到原始分辨率,从而混合完成。

最终,当达到捕获的分辨率(在1045处为“是”)时,在1070处使用来自最近的较低分辨率版本的图像选择混合颜色,并且在1080处进行接缝混合。在每个较高分辨率下,可以根据新的更高分辨率的接缝分别用双三次插值对色差进行上采样。这意味着只有从相同图像分类的那些像素才会在上采样时影响较高分辨率的结果。此外,分离过程确保在接缝附近不会出现颜色伪像。

最后,在1090处应用全景二次投影,以使用现在已校正和校正的颜色的三维数据重新创建三维空间。根据显示设备(例如,目标虚拟现实耳机或其他环境),可以使用不同的三维二次投影方法。

如果目标虚拟现实耳机具有位置跟踪器,则三维数据点可以作为网格与三维空间的网格代表相连接。对于网格中的每个像素,(x,y)坐标简单地作为集合而不包含几何意义。每个像素与一组三维点(x,y,z)相关联,并且三维点根据(x,y)坐标三维点连接到“相邻”点,以形成封闭的网格。即使在大的深度不连续处可能存在大的条纹,但是优选的是在大的深度不连续内看到大的空白空间,这对于佩戴者来说可能是几乎无限的“黑洞”。不可避免的是,在深度不连续中会有两个相机都未捕获的遮挡,因此,通常无法准确地对这些遮挡物归档。虽然不一定是可取的,但是这些大的深度不连续可以使用探索的方法来解决。

如果目标虚拟现实耳机(或其他设备)没有位置跟踪器,则将三维数据点二次投影到立体全景。在这些情况下,与使用三维数据重新创建的三维空间内的运动相反,观看者将体验到具有深度的三维电影。因为耳机没有位置跟踪器,所以不需要完全重新创建三维空间。用户无法在空间内“移动”,因此,通过二次投影到立体全景图中(这仍然能从立体图像提供深度,但仅从单一角度),数据大小和计算复杂度都可以变小。

没有位置跟踪的虚拟现实耳机通常具有功能较弱的处理器,这些处理器通常不能充分运行能够进行全三维呈现的复杂图形引擎,但实际上所有这些设备都能够解码二维视频以进行播放。因此,立体全景图对于这些设备是完美的,因为全景将创建三维感觉,同时使得观看者能够在环境中转动,但可以显示为传统的二维视频。

因为系统知道每个像素的三维位置,所以可以通过收集全部与公共观察圆相切的光线来产生立体全景图,这是相关领域中已知的方法。然而,现有的方法通过手动或机械地移动立体相机来收集光线以获得多个图像,然后提取中心列像素以获得密集的光线样本。由于三维数据点云通过三维激光雷达数据和立体相机融合被重建,因此通过合成虚拟视点来收集与公共观察圆相切的多条光线是优选的。因此,可以通过自动收集与公共观察圆相切的多条光线来重构任何虚拟观察点(约束条件内)。

小结

在整个本说明书中,所示出的实施例和示例应被视为示例,而不是对所公开或要求保护的装置和程序的限制。虽然本文提出的许多示例涉及方法动作或系统元件的具体组合,但是应当理解,这些动作和这些元件可以以其他方式组合以实现相同的目标。关于流程图,可以采取附加的和较少的步骤,并且可以组合或进一步改进所示的步骤以实现本文所述的方法。仅结合一个实施例讨论的动作、元件和特征并不旨在排除其在其它实施方案中的类似作用。

如本文所使用的,“多个”是指两个或更多个,如本文所使用的,“集合”的项目可以包括这样的项目中的一个或多个。本文所用的术语“包括”、“携带”、“具有”、“包含”、“涉及”等术语在书面描述或权利要求中应被理解为开放的,即意味着包括但不限于此。只有连接性短语“由...组成”和“基本上由...组成”分别是关于权利要求的封闭或半封闭的连接性短语。在权利要求中使用如“第一”、“第二”、“第三”等顺序术语来修改权利要求元素本身并不意味着一个权利要求要素相对于另一个或时间的任何优先权、优先级或顺序但是仅仅被用作标签来区分具有某个名称的一个权利要求要素与具有相同名称的另一元素(但用于序数项)来区分权利要求要素的顺序。如本文所用,“和/或”是指所列项目是可替代的,但是替代方案还包括所列项目的任何组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1