使用多视点立体图和经校准的投射器的深度估计转让专利

申请号 : CN201580033397.7

文献号 : CN106464851B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·P·M·考德尔R·S·斯泽利斯基

申请人 : 微软技术许可有限责任公司

摘要 :

本公开涉及使用已知投射图案使得立体深度检测(或基于其它相机的深度检测)更为鲁棒。在采集图像中检测点并且将这些点与不同深度的已知投射图案进行比较,以确定每个深度的匹配置信度得分。该置信度得分可以被用作确定每个点位置处的深度的基础,这样的点位置可以处于亚像素分辨率。该置信度得分还可以用作权重等的基础以对像素深度进行内插,从而找出在与这些点位置对应的像素之间的像素的深度值。

权利要求 :

1.一种系统,包括:

投射器,所述投射器向场景投射点的光图案,其中所述光图案对于所述投射器是已知的并且被保存为投射点图案数据,所述投射点图案数据表示不同深度的点位置;

多个相机,所述多个相机中的每一个相对于所述投射器被固定,所述多个相机从不同视角采集所述场景的同步图像;以及处理器,可操作地耦合到存储器,所述处理器实现被存储在所述存储器中的深度估计器的指令,所述深度估计器:存储所述投射点图案数据;

利用所存储的所述投射点图案数据来校准所述深度估计器;

针对每个图像中的采集点确定点位置;

通过将针对采集点的点位置与所述投射器的所述投射点图案数据进行匹配来确定存在所述采集点的所述点位置的点深度;以及计算与每个图像中的每个点位置的不同深度对应的置信度得分的集合,每个置信度得分基于所述投射点图案数据以及与每个同步图像中的所述点位置的匹配关系,所述深度估计器还基于所述置信度得分估计在不存在采集点的每个点位置处的深度。

2.根据权利要求1所述的系统,其中每个点位置对应于亚像素位置。

3.根据权利要求1所述的系统,其中每个置信度得分基于点位置与所述投射点图案数据之间的匹配邻居的数目。

4.根据权利要求1所述的系统,其中每个置信度得分基于表示采集点的位置的矢量和表示不同深度处的所述投射点图案数据的图案矢量的集合。

5.根据权利要求4所述的系统,其中表示所述采集点的位置的所述矢量包括表示所述采集点的位置周围的邻居的位矢量,其中所述图案矢量的集合包括表示不同深度处的投射点位置周围的邻居的位矢量,并且其中所述置信度得分的集合基于表示所述采集点的位置周围的所述邻居的所述位矢量与表示所述不同深度处的所述投射点位置周围的所述邻居的所述位矢量的集合的接近度。

6.根据权利要求1所述的系统,其中所述深度估计器进一步检查针对特定像素的冲突深度并且在检测到冲突深度时基于所述像素的置信度得分来选择一个深度。

7.根据权利要求1所述的系统,其中所述深度估计器进一步针对所述点位置之间的像素对深度值进行内插。

8.根据权利要求7所述的系统,其中所述深度估计器至少部分基于所述置信度得分中的一些置信度得分来对所述深度值进行内插。

9.根据权利要求7所述的系统,其中所述深度估计器至少部分基于边缘检测来对所述深度值进行内插。

10.根据权利要求1所述的系统,其中所述多个相机包括左相机和右相机。

11.根据权利要求1所述的系统,其中所述置信度得分表示采集点与所述投射点图案数据之间的匹配。

12.一种机器实施的方法,包括:

处理图像以确定图像内的点位置,其中所述点位置处于亚像素分辨率;

存储已知投射器图案数据;

利用所存储的所述已知投射器图案数据进行校准;

针对每个点位置计算深度数据,包括访问不同深度的所述已知投射器图案数据以通过将针对采集点的点位置与所述已知投射器图案数据进行匹配来计算存在所述采集点的所述点位置的深度数据,基于将点位置数据与每个深度的所述已知投射器图案数据进行匹配来确定在所述深度处的置信度得分,基于所述置信度得分估计在不存在采集点的每个点位置处的深度;

针对多个像素中的每一个,基于与所述像素相关联的点亚像素位置的置信度得分确定深度值;以及针对处于与深度值相关联的像素之间的像素对所述深度值进行内插。

13.根据权利要求12所述的方法,其中对所述深度值进行内插包括:至少部分基于与正在内插操作中被使用的所述像素相关联的所述点亚像素位置的所述置信度,使用加权内插。

14.根据权利要求12所述的方法,进一步包括通过以下将所述点位置维持为压缩数据结构内的数据:压缩所述数据以排除在与像素位置相关联的亚像素中不具有点的至少一些像素位置。

15.根据权利要求12所述的方法,其中针对在不同深度的每个点位置计算所述深度数据包括:针对左图像点确定左置信度得分和针对右图像点确定右置信度得分。

16.根据权利要求15所述的方法,其中确实所述深度值包括:选择与最高置信度对应的深度,包括单独针对每个深度的所述左置信度得分和所述右置信度得分进行评估以及当被组合在一起时对所述左置信度得分和所述右置信度得分进行评估。

17.根据权利要求12所述的方法,其中基于将所述点位置数据与所述投射器图案数据进行匹配来计算所述深度数据包括:关于每个相邻位置是否包含点来评估相邻位置,或者计算表示所述点位置和所述点位置周围的邻居的矢量。

18.一个或多个具有可执行指令的机器可读设备,所述可执行指令在被执行时执行操作,包括:存储已知投射点图案数据,其中深度估计器利用所存储的所述已知投射点图案数据而被校准,估计多个像素中的每一个的深度数据,包括对均采集利用所述已知投射点图案数据所照亮的场景的至少两个同步图像进行处理以确定所述图像中的点位置,通过将针对采集点的点位置与所述已知投射点图案数据进行匹配来计算存在所述采集点的所述点位置的点深度,并且针对每个图像中的每个点位置确定表示点相关数据与不同深度的所述已知投射点图案数据匹配得如何的置信度得分,并且基于所述置信度得分估计在不存在采集点的每个点位置处的深度。

19.根据权利要求18所述的一个或多个机器可读设备,具有另外的可执行指令,包括生成深度图,包括使用所述深度数据估计在与所述点位置对应的像素处的像素深度值并且使用所述像素深度值和置信度得分来针对所述点位置之间的像素对深度值进行内插。

20.根据权利要求18所述的一个或多个机器可读设备,具有另外的可执行指令,包括校准所述已知投射点图案数据,包括确定不同深度处的点图案和将所述已知投射点图案数据维持在至少一个数据结构中。

说明书 :

使用多视点立体图和经校准的投射器的深度估计

背景技术

[0001] 基于相机的深度感应涉及将光图案投射到场景上并且然后使用图像处理来估计该场景中的每个像素的深度。例如,在立体深度感应系统中,深度感应一般通过如下来实现:将光图案(其可以是随机的)投射到场景上以提供纹理,并且使得两个立体相机从不同视点采集两个图像。然而,一种利用立体图像配对来执行深度估计的方式例如是找出这些图像之间的局部区块的对应性。一旦匹配,图像内被投射的图案就可以互相关联,并且被关联的点的一个或多个特征之间的视差(disparity)就被用来针对该特定点配对而估计深度。
[0002] 不同于使用两个相机,如果已知的光图案被投射到场景上,则该已知图案连同单个相机获得的图像可以一起被用来估计深度。通常,相机图像被处理以寻找相对于已知图案的视差,这些视差指示该场景中的对象的深度。

发明内容

[0003] 提供本发明内容用于以简化形式对将在下文的具体实施方式中进一步描述的代表性概念的选择进行介绍。本发明内容并非意在标识所请求保护主题的关键特征或必要特征,也非意在被用来以任何方式对所请求保护主题的范围进行限制。
[0004] 简言之,本文描述的各个方面中的一个或多个方面涉及估计多个像素中的每一个的深度数据,包括对均采集利用投射点所照亮的场景的图像进行处理以确定该图像中的点位置。针对每个点位置,确定表示点相关数据与不同深度的已知投射点图案数据匹配得如何的置信度得分,并且使用置信度得分估计深度数据。
[0005] 从下文结合附图的详细描述中,其它优点可以变为显而易见。

附图说明

[0006] 在附图中通过示例而非限制性的方式图示本发明,其中相同附图标记指示相似要素,并且其中:
[0007] 图1是根据一种或多种示例实施方式的表示示例组件的框图,上述组件可以被配置为投射和采集光图案以经由与已知投射图案数据进行匹配来确定深度。
[0008] 图2和图3是根据一种或多种实施方式的将点投射至场景之中以通过将采集的图像数据与已知投射图案数据进行匹配来确定深度的示例的表示。
[0009] 图4是根据一种或多种示例实施方式的在基于已知投射图案数据确定深度图时所使用的示例步骤的流程图。
[0010] 图5是根据一种或多种示例实施方式的投射点可以如何被用来以亚像素分辨率确定点峰值位置的表示。
[0011] 图6是根据一种或多种示例实施方式的点相关数据可以如何被压缩到数据结构的表示。
[0012] 图7是根据一种或多种示例实施方式的表示可以被采用来确定点峰值位置的示例步骤的流程图。
[0013] 图8是根据一种或多种示例实施方式的在将预期点位置与已知投射点位置进行匹配以确定深度数据时可以如何使用由投射射线产生的点的表示。
[0014] 图9是根据一种或多种示例实施方式的表示可以被采用来相对每个投射点对每个图像采集点进行评估以确定不同深度的匹配(置信度)得分的示例步骤的流程图。
[0015] 图10是根据一种或多种示例实施方式的表示可以被采用来确定点峰值是否足够接近于被认为匹配的示例步骤的流程图。
[0016] 图11是根据一种或多种示例实施方式的深度计算如何可以对半遮挡图像鲁棒的表示。
[0017] 图12是根据一种或多种示例实施方式的可以如何基于不同深度的置信度得分进行内插的表示。
[0018] 图13是表示本文描述的各个实施例的一个或多个方面可以在其中实施的游戏系统形式的示例性计算系统或操作环境的框图。

具体实施方式

[0019] 本文描述的技术的各个方面总体上涉及使得已知光图案被投射至场景之中,并且使用对采集图像和已知图案的图像处理来提供总体上更准确且可靠的深度估计(相对于其它技术而言)。该技术还对本文描述的一种或多种不同技术进行权衡,诸如在点而不是像素上进行枚举,三目(trinocular)匹配(或多于三路的匹配),亚像素分辨率的使用,以及基于置信度的内插。该光图案可以是事先已知的固定结构、例如在制造时被校准的固定结构,或者是在用户执行的校准操作中被学习到,而与该光图案是以计划图案还是随机(但是随后并不改变)图案被生成无关。
[0020] 在一个方面,两个或更多相机被用来采集场景的图像。例如,利用左立体相机和右立体相机,两个采集图像连同已知光图案一起可以随三路匹配技术而被用来确定指示深度的视差。换句话说,该已知图案、左图像和右图像可以被用来基于每个投射/采集点的视差而估计深度。使得多个相机观察场景有助于克服深度估计中的不确定性并且有助于减少非匹配情形。此外,该技术对于相机故障是鲁棒的,并且只要至少一个相机在观察场景并且它的位置关于投射器是已知的,就可以继续估计深度(虽然通常不太可靠)。
[0021] 可以使用点检测处理,包括一种将点的位置估计到亚像素准确性、给出更准确的亚像素视差的处理。这提供了更准确的匹配并且避免使得视差离散化。
[0022] 可以使用内插,其中所计算的匹配得分(例如,均对应于针对像素的估计深度的置信度)被用来计算如下像素的深度,这些像素不具有针对它们而估计的基于点的深度。例如,每个深度处的置信度可以被用作内插计算中的权重。这连同诸如以颜色(例如,RGB)图像和/或清晰IR图像为基础的基于边缘的数据之类的可能的其它数据一起用作内插的引导。
[0023] 应当理解,本文的任何示例都是非限制性的。例如,本文一般例示的投射光图案包括一般为圆形的点,但是投射点可以是任意形状;(尽管诸如点之类的二维投射形状趋于促成比诸如条带之类的一维投射更准确的匹配)。因此,本发明并不局限于本文描述的任何特定实施例、方面、概念、结构、功能或示例。相反,本文描述的任何实施例、方面、概念、结构、功能或示例都是非限制性的,并且本发明可以以总体上在深度感应和图像处理中提供益处和优点的各种方式而被使用。
[0024] 图1示出了示例系统,其中图像采集系统或子系统104的立体相机102和103采集时间上同步的左和右立体图像105(例如,这些相机被“同步锁定(genlocked)”)。在一种实施方式中,相机102和103采集红外(IR)图像,因为IR不影响场景的可视外观(这通常是有利的,诸如在视频会议和对象建模应用中)。如能够容易理解的,在诸如工作室环境的一些情形中,可能存在多于两个的IR深度感应相机。另外,给定系统中可能存在一个或多个其它相机,诸如RGB相机,并且这样的其它相机可以被用来在例如估计深度中提供帮助。
[0025] 在图1中示出了投射器106,该投射器106将IR图案投射至场景上,IR图案诸如是点的图案,但是也可以使用其它斑点形状和/或图案类型。出于简明的目的,下文中通常对点进行描述。该图案可以被设计(例如,被编码)到衍射光学组件(衍射光学元件或元件组合)中,该衍射光学组件将激光例如作为点的图案而散射至场景中。如以上阐述的,该图案可以是已计划的或者是随机的,但通过校准而被学习到。
[0026] 图2和图3例示了投射的概念。投射器106将点图案投射到场景222(图2)上,该投射器106在图2中被表示为立体相机102和103之间的圆形并且在图3中被表示为耦合至在设备334中集成的衍射光学元件332的激光器330。经过校准,投射的点图案108被深度估计器110所知,该深度估计器110可以是图像处理系统或子系统112的一部分。已知的点图案可以被保存在各种可能深度处的每个点的任何适当数据结构中,并且在一种实施方式中,该已知的点图案至少遵循(x,y)坐标(其可以处于以下所描述的亚像素分辨率);这对应于存储每个点的投射射线。一种可替换方式是将每个点表示为位矢量(bit vector),该位矢量包括用于与由矢量类似表示的相机采集点矢量相匹配的邻居。
[0027] 相机102和103在它们对场景222和(可能地)背景中的对象表面加以反射时采集这些点。一般而言,采集点的一个或多个特征指示与反射表面的距离。注意到,图2和图3(或者本文的任何附图)并非意按尺寸描绘,也不表示彼此相同的场景,更不传达任何大小、距离、点分布图案、点密度等等。
[0028] 注意到,投射器106的放置可以处于相机之外(例如,图1),或者处于相机之间(图2和图3)或处于另一个位置、诸如处于上述一个或两个相机的上方或下方。本文的示例关于相机和/或投射器相对于彼此定位在何处不做出限制,并且类似地,相机可以相对于彼此被定位在不同位置。然而,相机和投射器的相对位置是已知的,例如在制造时被确定和/或能够在需要的情况下重新测定。
[0029] 通过利用相对大量的分布式红外点(例如通常是数十万的量级)来照亮场景,相机102和103采集纹理数据以作为该场景中的任何对象的红外图像数据的一部分。如本文所描述的,为了促进左图像和右图像之间更准确的点匹配,这些图像中的点连同已知的点图案一起被处理。
[0030] 在一种实施方式中,示例图像采集系统或子系统104包括控制器114,该控制器114经由相机接口116控制相机102和103的操作。所例示的控制器114还可以经由投射器接口118控制投射器106的操作。例如,相机102和103诸如通过控制器信号(或者针对每个相机的不同信号)而被同步(例如,被同步锁定)以同时采集立体图像。投射器106可以被开启或关闭、暂停,并且另外具有例如以可控方式变化的一个或多个参数。
[0031] 相机102和103采集的图像105被提供给图像处理系统或子系统112。在一些实施方式中,图像处理系统112和图像采集系统或子系统104或者它们的多个部分可以被组合为单个设备。例如,家庭娱乐设备可以包括图1所示的所有组件(以及其它未示出的组件)。在其它实施方式中,图像采集系统或子系统104的多个部分(或全部)—诸如相机和投射器—可以处于单独的设备中,该单独的设备耦合至游戏机、个人计算机、移动设备、专用处理设备等。实际上,游戏机在下文中被例示为可以用于将图像处理成深度数据的一种环境。
[0032] 图像处理系统或子系统112包括处理器120和存储器122,该存储器122包含一个或多个图像处理组件,诸如深度估计器110。在一个方面,深度估计器110包括三目匹配组件126等,该三目匹配组件126使用图像和已知投射器图案106来估计深度数据。可以经由本文描述的深度估计器110而获得一个或多个深度图128。
[0033] 图1中还示出了针对图像处理系统或子系统118的接口132,以诸如用于适当连接计算机程序、键盘、游戏控制器、显示器、定点设备、用于话音命令的麦克风等,以供用户与使用深度图的应用等进行交互。
[0034] 图4是示出一种总体过程的示例步骤的一般流程图,该过程包括步骤400的一次性校准处理、诸如在制造设备时的一次性校准处理;(有可能的情况信是:可以由设备所有者重复该校准或者通过将该设备送交服务而重复该校准,诸如在运送的情况下,热量或其它环境因素会导致漂移)。
[0035] 在下文中更详细地描述在深度图生成中使用的示例步骤,这些步骤总体上包括如步骤402(并且参考图7)所表示的点检测过程,在该过程中相机采集的点的位置得以被定位并存储。如在步骤404(并且参考图9和图10)一般表示的,表示相机采集的点的数据与表示已知的投射点的数据进行匹配。
[0036] 在匹配之后,可以在步骤406执行一些后处理,这些后处理一般是清理异常数据。在步骤408执行内插以便确定如下像素的深度值,这些像素不具有直接的基于点而估计的深度值,例如这些像素是点之间的像素。内插可以基于具有直接的基于点而估计的深度值的附近像素的置信度得分以及基于诸如边缘检测的其它技术,这些技术考虑如下的因素:
深度是否可能由于像素刚好超出前景对象的边缘而针对该像素而有所变化。
[0037] 在差值填入在完成深度图所需的像素深度值中后,步骤410输出该深度图。该过程经由步骤412而以适当帧速率进行重复,直至不再需要深度图的帧,例如该设备关机、需要深度图的帧的应用关闭或改变模式等等。
[0038] 关于点的检测,一般而言,点具有类似于高斯或模糊圆形的柔和圆形对称外观(尽管确切形状并不重要)。在红外图像中,点的至少一部分所照亮的每个像素具有相关联的强度值。在一种或多种实施方式中,每个输入图像被模糊化、例如利用在每个像素上所使用的1-2-1滤波器而被模糊化,这减少了噪声。下一个操作在图像上使用s×s最大值滤波器(在每个窗口位置中找出最大强度值的s×s滑动窗口,这在图像处理中也是熟知的),从而将每个像素进行比较以找出作为s×s区域内的局部最大值(或相等的最大值)的像素。s的适当值为五(5)。
[0039] 针对每个这样的局部最大值点,使用针对强度的水平和垂直三点抛物线拟合法来找出亚像素峰值位置和该位置处的最大值(例如,被内插的值);(也就是说,在峰值不处于亚像素的中心时可以使用内插来调整)。如能够在像素(被表示为图5的部分图像550的正方形)中看到的,该点图案的特征是点峰值强度的位置。这能够被估计到亚像素准确性之内。更具体地,如图5所表示的,更精细的网格表示552中的X形交叉表示所估计的点中心,其中像素被虚线划分为亚像素。每个估计的中心对应于一个亚像素。所例示的网格以外(例如,该网格可以是更大图像的一部分)的一些另外的点的中心也被示出。
[0040] 注意,图5将像素细分为2×2个亚像素,以使得分辨率得以倍增。然而,不同于使得亚像素分辨率倍增,可以通过例如将像素均进一步细分为九个亚像素、十六个亚像素等而获得甚至更高的分辨率;(也可以使用非正方形的细分)。
[0041] 表示检测到的峰值的数据可以以如下的数据结构来存储,该数据结构包括针对每个峰值的亚像素位置和峰值大小、并且还提供用于在点匹配期间容纳诸如匹配得分之类的信息的附加空间。在一种或多种实施方式中,由于衍射光学元件的构造,这些峰值可能没有以比d个像素的距离更接近的方式被定位,由此可以使用更小的数据结构(包括单元阵列的存储图像)。更具体地,如图6所表示的,在压缩操作660中,从图像662获得的针对每个峰值的数据可以被置于如下容器(bin)中,该容器通过将其实际位置除以d并且舍入到最接近的像素而被计算得到,这提供了经压缩的图像结构664。注意到,图6中的单元网格并非如图5那样表示亚像素网格,而是表示用于压缩数据结构所需的大小的方式,大小的压缩通过排除为不具有峰值的大多数像素保留存储的需要来实现。
[0042] 适当压缩参数足够大以尽可能多地移除点(峰值)之间的空间,但是又足够小以使得两个不同的点不会在相同单元内形成冲突。在以上示例中,使用了压缩因数2,因为任何一对峰值至少彼此远离的两个像素。
[0043] 图7概况了示例点检测过程,该过程开始于步骤702,在该步骤中采集图像被模糊处理以减少噪声。注意,图7是对例如左图像和右图像中的每个图像执行的,左图像和右图像可以至少一定程度上并行地被执行。步骤704表示使用最大值滤波器来找出峰值。
[0044] 针对每个峰值或局部最大值点,步骤706、708和710将代表性信息存储在数据结构中,该代表性信息包括该峰值的亚像素位置和该位置处的(例如,内插的)强度值。这填充了如图6所表示的数据结构,该数据结构由于衍射光学元件的设计而通常是稀疏的。同样如图6所示并且参考其所描述的,步骤712对该数据结构进行压缩。
[0045] 一旦图像已经被处理得找到点的峰值并且将它们存储在压缩数据结构中,就执行匹配。在一种可替换形式中,使用三目点匹配。注意,不同于对每个像素进行处理,在一种实施方式中,三目点匹配使用平面扫描算法来针对激光点图案中的每个点估计视差。由于投射器图案是已知的(在校准操作被计算和存储),所以三目点匹配将该已知图案中的每个点与左图像和右图像进行匹配,从而估计每个点的视差。
[0046] 通常,针对已知图案,处于不同深度的点的射线(x,y)位置可以被预先计算。如图8所表示的,如果该深度处于D1,则左相机图像应当在(亚像素)881L处具有对应的点,并且右相机图像应当在(亚像素)881R处具有对应的点;如果该深度是D2,则这些亚像素位置将会分别被移动至882L和882R。每个可能的深度都可以被使用,然而在一种或多种实施方式中,可以使用这些深度中的一些深度的采样。例如,可以使用移动大约一个像素的深度变化,其中该深度变化可以与逆向深度相关。
[0047] 针对给定深度和已知图案中的点位置,每个图像在视差扫描中被处理,包括确定它在该深度处是否也具有处于预期对应位置的点。对于计算效率而言,三路匹配可以以逐图块(tile)为基础进行操作(并且图块可以被扩充从而能够适当汇聚2D支持),其中每个图块执行它自己的视差扫描。
[0048] 在一种实施方式中,该视差扫描在多带图像中返回胜出的匹配得分,该多带图像中的带与MatchTriplet结构对应:
[0049]
[0050]
[0051] 如图9所表示的,该视差扫描在视差扫描范围(dMin,dMax)所指定的所有视差上具有一次外部迭代(步骤902、920和922),该视差扫描范围表示要测量的最小和最大深度。该视差扫描包括左和右图像上的中间迭代(步骤904、916和918),以及图块中的(x,y)峰值单元上的内部迭代(步骤906、912和914)。
[0052] 通常,对于当前深度而言,步骤908的内部迭代估计在投射点的位置和预期的左侧点位置是否存在匹配,以及类似地估计在投射点的位置和预期的右侧点位置是否存在匹配。然而,一般由于噪声,即使在应当存在匹配的情况下,在确切的位置处也可能没有匹配,因此在一种实施方式中还对邻居/相邻像素或亚像素进行估计。
[0053] 通常,相似的邻居越多,就越确信存在匹配。关于邻居而言,为了在空间上汇聚支持,具有兼容视差的邻居的得分例如通过调用UpdateNeighbors例程而被增大。这个操作消除潜在匹配之间的歧义,因为(每个峰值的邻居距离内的)邻居的数目是如下的得分,胜出匹配决策可以以该得分为基础。
[0054] 一种将点与图案数据进行匹配的可替换方式(或附加方式)是将每个采集点表示为矢量并且将每个已知投射点表示为矢量,其中这些矢量包括点的周围邻居(像素或亚像素值)的数据。点的已知投射图案的矢量表示可以被预先计算并且保存在查找表中等等。最接近的矢量—例如相对于不同深度的矢量集合来评估采集点矢量—被赋予最高的置信度得分,下一个最接近的矢量被赋予下一个最高得分,以此类推直至最低置信度得分。
[0055] 这些矢量可以是位矢量,其中每个位值针对邻居中的每个周边位置指示存在是否点。随后,针对采集图像中的每个点,在计算该点的邻居位矢量之后,可以使用位矢量之间的距离(例如,汉明(Hamming)距离)来找出最接近的匹配。注意,这例如可以以低成本硬件来有效实现。另外,这种基于矢量的技术可以高度适用于某些应用,例如骨架追踪。
[0056] 在一种或多种实施方式中,在视差扫描阶段内处于最深级别的是TestMatch子程序(例如,图10),该例程测试两个峰值是否兼容。如果峰值在对极几何(epipolar geometry)中充分接近,那么这些峰值是兼容的;(注意,另一种可以使用的测试是检查左峰值和右峰值是否具有相似的量级)。如果得分(对极距离)处于容差(tol)参数之内(步骤1002)并且是新的匹配(步骤1004),则使用NewMatch例程将该匹配推至MatchStack结构上(步骤1006)。tol参数的适当值可以被设置为1.5个像素。
[0057] 在匹配阶段结束时,每个投射器峰值的MatchStack结构在它的best字段中包含胜出的匹配。MatchTriplet具有针对左图像上的最佳匹配、右图像上的最佳匹配以及左和右都认可的最佳匹配中的胜出匹配。
[0058] 在实际实践中,左相机和右相机采集的图像中存在微小不同,这在一些情况下导致相邻峰值在检测时融合至一个点。在理想情况下,左图像上的最佳匹配、右图像上的最佳匹配以及左右两个的最佳匹配将导致相同的视差;最佳联合视差在理想情况下是最佳的三路匹配视差。然而,噪声、低于阈值的强度值等会使得点被丢失,这导致了不同的视差。
[0059] 另外,半遮挡(semi-occlusion)能够防止两个相机看到相同的点。图11总体上表示了半遮挡,在该图中左相机C1无法在它对应的图像I1中采集到投射点1100,但右相机C2能够在它的图像I2中采集到该点。因此,可以使用鲁棒决策,该鲁棒决策即使在存在有效(但得分较低)的三路匹配时也允许双视点匹配成为用于确定点的深度的最终胜出方。
[0060] 最终结果通常由于确信不正确的点匹配而具有稀疏误差。这些伪差(artifact)可以通过执行一个或多个后处理步骤而有所减少。例如,一个步骤可以移除浮点、包括单异常值的点,这些单异常值的点具有与5×5邻居中最接近的点明显不同的视差。出于这个目的,可以使用邻居中的点的视差的均值和标准偏差(sigma),以便例如在被指派给当前像素的视差与均值视差相差超过三倍sigma的情况下将指派给当前像素的视差移除。
[0061] 另一个后处理步骤是执行唯一性检查。这个步骤关于对特定像素而言没有冲突深度的左和右深度数据进行检查。一种实施方式考虑(投射的、左像素)配对以及(投射的、右像素)配对;当任一个配对中存在冲突时,得分较低的像素被标记为无效。除了双路检查之外或作为双路检查的替代,也可以使用可替换的三路唯一性检查。
[0062] 点匹配允许针对点获得基于视差的深度估计,从而形成稀疏的视差图。下一个阶段是内插操作(上采样阶段),该内插操作以在这些点处估计的稀疏深度作为开始并且在其余像素处插入丢失的数据,以便例如提供具有针对每个像素的深度值的深度图。一种内插过程使用推拉(push-pull)内插技术,该技术由匹配得分和/或一个或多个引导图像(例如,没有点的清晰IR图像和/或一个或多个RGB图像)进行引导,以恢复场景的密集深度。当前像素(正在针对该当前像素对深度进行内插)与每个被使用的像素的距离是一种对内插进行加权的方式。
[0063] 图12表示使用与检测到的点相关联的置信度得分(例如,S1-S6)的概念。例如,针对在图12中由箭头表示的给定射线,相机可能已经检测到附近的点,但是在与深度D3处的投射点进行比较时,由得分S3表示的一个点处于它在采集图像之中预期的位置并且因此具有较高的置信度得分。如以上所描述的,置信度得分可以通过相邻匹配(例如,总邻居数目)、或者经由矢量位图相似性(例如,与汉明距离成反比)、或者经由另一匹配技术来计算。在用于针对相邻像素确定深度值的内插中,针对该深度赋予更大权重。
[0064] 因此,上采样阶段将这些稀疏视差/深度值传播至其它像素。点匹配得分在针对点之间的像素的深度进行内插时可以被用作内插权重的基础。
[0065] 在实践中,内插还可以将边缘纳入考虑之中,例如包括边缘感知内插,因为在对象的边缘相遇时会在相邻像素上发生实质性的深度变化。RGB图像中的颜色变化经常指示边缘,就如IR图像中的强度变化一样。如果能够在经校准的位置处得到场景的RGB和/或清晰IR(没有点)视图,则稀疏深度可以对于该视图将发生变形并且该稀疏深度可以使用诸如边缘感知推拉内插之类的技术或者使用双边滤波来执行边缘感知内插。注意,可以使用陷波滤波器来获得清晰IR,该陷波滤波器移除采集到的IR图像中的点(并且可能使用一个不同频率的IR源,该IR源总体上照亮整个场景以提供充分的IR)。
[0066] 注意,置信度得分和/或边缘的权重能够从训练数据中被学习到。通过这种方式,例如两倍于另一置信度得分的一个置信度得分并不必然需要被赋予双倍权重、而可以是一些其它因数。
[0067] 本文描述的一些技术可以被应用于具有已知投射器图案的单个相机。例如,利用以上描述的三目列举所进行的基于点的列举已经解决了丢失的像素,并且因此虽然可能并不像三路(或更多路)匹配那样准确,但是诸如在相机故障的情况下适用相同的过程。另外,如能够容易理解的,如果该系统仅被设计有单个相机,则匹配配对结构和图9可以针对单个图像进行修改,例如通过移除右图像场和右图像的中间迭代。
[0068] 类似地,可以向数据结构增加附加字段并且可以针对多于两个的相机使用附加的中间迭代。例如,工作室环境可能具有多于两个的相机,并且这些相机可以围绕投射器定位而不是与之并排定位。图9的步骤904、916和918可以针对任何数目的相机进行修改,以例如选择第一相机图像(步骤904),评估最后的相机图像是否已经被处理(步骤916),并且如果未被处理的话,则选择下一相机图像(步骤918)。
[0069] 因此,本文描述的一种优点在于执行多视点匹配,因为这降低了错误对应性的概率并且还减少了支持或验证匹配所需的相邻点的数目。另外,处于一个相机或另一个相机的阴影中的区域仍然与预期点位置匹配(尽管具有较低的可靠性)。实际上,相同的匹配算法可以被修改/扩展,以便使用投射器和单个相机来执行匹配或者使用投射器图案和多于两个的相机来执行匹配。
[0070] 经过校准,可以使用被投射到场景上的任何随机或已知的点图案,包括静态的点图案。这与使用动态结构的照明的解决方案形成了对比,使用动态结构的照明的那种解决方案需要具有快速切换和精确控制的复杂投射器。
[0071] 另外,本文描述的多视点立体解决方案在实践中改善了估计的深度。仅需要在点处而不是在每个像素处进行匹配,这明显更为有效。而且,由于点的位置可以被估计到亚像素的精确度,所以仅匹配在对极几何方面相当接近的点并且获得可以匹配的亚像素视差估计。最后,所研发的系统对于多视点环境内的相机故障是鲁棒的,即使利用单个相机观察投射点图案也具有质量良好的估计深度。
[0072] 一个或多个方面涉及一种向场景投射点的光图案的投射器,其中该光图案对于投射器是已知的并且被保存为投射点图案数据,投射点图案数据表示不同深度的点位置。每一个都相对于投射器被固定的多个相机(例如,左相机和右相机)从不同视角采集场景的同步图像。深度估计器针对每个图像中的采集点确定点位置并且计算与每个图像中的每个点位置的不同深度对应的置信度得分集合,其中每个置信度得分基于投射点图案数据以及与每个同步图像中的点位置的匹配关系。该深度估计器进一步基于置信度得分估计每个点位置处的深度。每个点位置可以对应于亚像素位置。
[0073] 置信度得分可以基于点位置与投射点图案数据之间的匹配邻居的数目,和/或基于表示采集点的位置和表示不同深度处的投射点图案数据的图案矢量的集合。表示采集点的位置的矢量可以包括表示采集点的位置周围的邻居的位矢量,并且图案矢量的集合可以包括表示不同深度处的投射点位置周围的邻居的位矢量。置信度得分的集合可以基于表示采集点的位置周围的邻居的位矢量与表示不同深度的投射点位置周围的邻居的位矢量的集合的接近度。
[0074] 深度估计器可以基于统计信息来移除至少一个点。该深度估计器可以进一步用于针对特定像素的冲突深度,并且在检测到冲突深度时基于该像素的置信度得分来选择一个深度。
[0075] 该深度估计器可以针对点位置之间的像素对深度值进行内插。该内插可以基于置信度得分和/或边缘检测。
[0076] 一个或多个方面针对于对图像进行处理以确定该图像内的点位置,其中点位置处于亚像素分辨率。针对每个点位置计算深度数据,包括访问不同深度的已知投射器图案数据,以基于将点位置数据与每个深度的投射器图案数据进行匹配来确定该深度的置信度得分。深度值基于与该像素相关联的点亚像素位置的置信度得分而被估计。针对处于与深度值相关联的像素之间的像素,使用内插来找出深度值。深度值的内插可以使用加权内插,该加权内插基于与内插操作中所使用的像素相关联的点亚像素位置的置信度得分。
[0077] 点位置可以被包含为压缩数据结构内的数据。这通过如下来实现:将数据进行压缩以排除至少一些在与像素位置相关联的亚像素中不具有点的像素。
[0078] 针对不同深度的每个点位置计算深度数据可以包括针对左图像点确定左置信度得分和针对右图像点确定右置信度得分。确定深度值可以包括选择与最高置信度对应的深度,包括单独对每个深度的左和右置信度进行评估以及当被组合在一起时对这些置信度进行评估。
[0079] 基于将点位置数据与投射器图案数据相匹配来计算深度数据可以包括关于每个相邻位置是否包含点来评估每个相邻位置。计算该深度数据可以包括计算表示点位置的矢量以及该点位置周围的邻居。
[0080] 一个或多个方面涉及估计多个像素中的每一个的深度数据,包括对均采集利用投射点所照亮的场景的至少两个同步图像进行处理以确定图像中的点位置,并且针对每个图像中的每个点位置确定表示点相关数据与不同深度的已知投射点图案数据匹配得如何的置信度得分。该置信度得分可以被用来估计深度数据。
[0081] 本文还描述了生成深度图,包括使用深度数据来估计与点位置对应的像素处的像素深度,并且使用这些像素深度值和置信度得分来针对点位置之间的像素的值进行内插。进一步描述了对已知的投射点图案数据进行校准,包括确定不同深度处的点图案位置,并且将已知的投射点图案数据保存在至少一个数据结构中。
[0082] 示例操作环境
[0083] 能够容易理解的是,以上描述的实施方式及其替换方式可以在任何合适的计算设备上被实施,包括游戏系统、个人计算机、平板电脑、DVD、机顶盒、智能电话等。当多个这样的设备被链接在一起时,这样的设备的组合也是可行的。出于描述的目的,以下描述一种游戏(包括媒体)系统,以作为一种示例性操作环境。
[0084] 图13是示例游戏和媒体系统1300的功能框图并且该图更详细示出了功能组件。控制台1301具有中央处理单元(CPU)1302以及存储器控制器1303,该存储器控制器1303便于处理器访问各种类型的存储器,包括闪存只读存储器(ROM)1304、随机存取存储器(RAM)1306、硬盘驱动器1308以及便携式媒体驱动器1309。在一种实施方式中,CPU 1302包括1级高速缓存1310和2级高速缓存1312,这些高速缓存用于临时存储数据并且因此减少对硬盘驱动器进行的存储器访问周期的数目,从而提高了处理速度和吞吐量。
[0085] CPU 1302、存储器控制器1303以及各种存储器设备经由一个或多个总线(未示出)互连。在这个实施方式中所使用的总线的细节与对此处所讨论的主题的理解并不特别相关。然而,将理解的是,这样的总线可以包括以下一个或多个总线:使用各种总线体系结构中的任何结构的串行和并行总线、存储器总线、外围总线以及处理器或局部总线。作为示例,这样的架构可以包括工业标准体系结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也被称为夹层总线(Mezzanine bus)的外围部件互连(PCI)总线。
[0086] 在一种实施方式中,CPU 1302、存储器控制器1303、ROM 1304以及RAM 1306被集成到公共的模块1314上。在此实施方式中,ROM1304被配置为经由外围部件互连(PCI)总线之类的总线以及ROM总线之类的总线(两者均未示出)连接到存储器控制器1303的闪存ROM。RAM 1306可以被配置为多个双倍数据速率同步动态RAM(DDR SDRAM)模块,这些模块被存储器控制器1303经由分离的总线(未示出)而独立地控制。硬盘驱动器1308和便携式媒体驱动器1309被示为经由PCI总线和AT附接(ATA)总线1316而连接到存储器控制器1303。然而,在其它实施方式中,也可以备选地应用不同类型的专用数据总线结构。
[0087] 三维图形处理单元1320和视频编码器1322构成了视频处理管线,以用于高速和高分辨率(例如,高清晰度)图形处理。数据经由数字视频总线(未示出)从图形处理单元1320传递到视频编码器1322。音频处理单元1324和音频编解码器(编码器/解码器)1326构成了对应的音频处理管线,以用于对各种数字音频格式进行多通道音频处理。经由通信链路(未示出)在音频处理单元1324和音频编解码器1326之间传送音频数据。视频和音频处理管线向A/V(音频/视频)端口1328输出数据,以便传输到电视机或其它显示器/扬声器。在图示的实施方式中,视频和音频处理组件1320、1322、1324、1326和1328被安装在模块1314上。
[0088] 图13示出了模块1314包括USB主控制器1330和网络接口(NW I/F)1332,网络接口1332可包括有线和/或无线组件。USB主控制器1330被示为经由总线(例如,PCI总线)与CPU 
1302和存储器控制器1303进行通信并且用作外围控制器1334的主机。网络接口1332提供对网络(例如,互联网、家庭网络等)的访问并且可以是各种不同的有线和无线接口组件中的任何一种,包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等。
[0089] 在图13中描绘的示例实施方式中,控制台1301包括用于支持四个控制器1341(1)-1341(4)的控制器支持子部件1340。控制器支持子部件1340包括支持与外部控制设备的有线和/或无线操作所需的任何硬件和软件组件,这样的外部控制设备诸如举例而言是媒体和游戏控制器。前面板I/O子部件1342支持暴露在控制台1301的外表面上的电源按钮1343、弹出按钮1344以及任何其它按钮和任何LED(发光二极管)或其它指示器等的多个功能。子部件1340和1342经由一个或多个线缆子部件1346等与模块1314通信。在其它实施方式中,控制台1301可以包括另外的控制器子部件。图示的实施方式还示出了光学I/O接口1348,该光学I/O接口1348被配置为发送和接收可传送给模块1314的信号(例如来自遥控器1349的信号)。
[0090] 存储器单元(MU)1350(1)和1350(2)被图示为分别可连接到MU端口“A”1352(1)和“B”1352(2)。每一个MU 1350都提供附加存储,在该附加存储上可以存储游戏、游戏参数以及其它数据。在一些实施方式中,其它数据可以包括以下一项或多项:数字游戏组件、可执行的游戏应用,用于扩展游戏应用的指令集以及媒体文件。当被插入到控制台1301中时,每个MU 1350能够由存储器控制器1303访问。
[0091] 系统供电模块1354向游戏系统1300的组件供电。风扇1356冷却控制台1301内的电路。
[0092] 包括机器指令的应用1360通常被存储在硬盘驱动器1308上。当控制台1301通电时,应用1360的各个部分被加载到RAM 1306和/或高速缓存1310和1312上以供在CPU 1302上执行。一般而言,应用1360可以包括一个或多个程序模块,用于执行各种显示功能,诸如控制对话屏幕在显示器上(例如,高分辨率监视器)呈现、基于用户输入控制会话以及控制在控制台1301与外部连接设备之间的数据传输和接收。
[0093] 可以通过将游戏系统1300连接到高分辨率监视器、电视机、视频投射器或其它显示设备来将该系统作为独立系统进行操作。在此独立模式下,游戏系统1300允许一个或多个玩家玩游戏或欣赏数字媒体,例如观看电影或聆听音乐。然而,随着通过网络接口1332使得宽带连接的集成成为可能,游戏系统1300还可以作为更大的网络游戏社区或系统的参与组件来进行操作。
[0094] 结语
[0095] 尽管易于对本发明做出各种修改和替换构造,但本发明的某些说明性实施例在附图中被示出并且在上文被详细描述。然而,应当理解,这并不旨在将本发明局限于所公开的具体形式,而是相反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。