微软专利介绍了MR系统深度映射信息的处理方法和技术

HoloLens QQ群493967447

查看引用/信息源请点击:映维网

处理深度映射,减少计算量

映维网 2021年11月26日)为了捕获复杂的3D几何图形,MR系统依赖于深度传感系统生成的深度映射信息。通过用光束照亮目标场景并分析反射光信号,MR系统可以利用这种深度信息来确定设备和特定对象之间的相对距离,同时识别对象的特定轮廓、边面和形状。

要计算单个深度映射或曲面网格,系统需要捕获大量的图像。图像越多,功耗就会大幅增加,而这又会影响MR系统的续航,甚至是整体形状参数设计。

在日前公布的三份专利申请中,微软介绍了深度映射处理方法和技术的不同方面。微软表示,发明描述的实施例能够减少计算量,并允许以高于传统方法的频率来生成深度映射。

1. 混合现实系统与头显示例

图2是头显200的示例。头显200可以是任何类型的MR系统200A,VR系统200B或AR系统200C。

头显200包括传感器250,传感器包括扫描传感器205和其他传感器,例如加速计255、陀螺仪260、指南针265。在一个实施例中,HMD 200包括图2中未示出的其他互感知和/或外感知传感器,例如眼动追踪系统、基于无线电的导航系统、麦克风和/或其他感测组件。

头显200中的视觉惯性同时定位和映射功能(SLAM)将一个或多个摄像头获得的视觉追踪数据与加速计255、陀螺仪260和指南针265获得的惯性追踪数据进行融合(例如使用姿态滤波器),以实施例六自由度定位。

扫描传感器205包括任何类型的扫描或摄像头系统,并且头显200可以使用扫描传感器205来扫描环境、映射环境、捕获环境数据和/或生成环境的任何类型的图像。例如在一个实施例中,头显200配置为生成真实世界环境的3D表示或生成透视视图。

在一个实施例中,头显包括RGB摄像头,而RGB摄像头可以实施例为立体摄像头,这意味着两个或多个RGB摄像头的视场至少部分地相互重叠。利用重叠区域,由可见光摄像头210生成的图像可用于识别捕获对象的特定像素之间的差异。基于像素差异,系统能够确定位于重叠区域内的对象的深度,而所述深度可用于一系列的目的。

可以对由任何类型和/或摄像头组合获得的立体图像对执行立体匹配。例如,头显200或其他系统可包括可见光摄像头210、微光摄像头215、热成像摄像头220、紫外摄像头225、近红外红色和/或其他摄像头的任意组合。

图3是一个头显的示例图例,其中头显300可代表图2中的头显200。头显300显示为包括多个不同的摄像头,包括摄像头305、310、315、320和325。摄像头305-325代表图2中的可见光摄像头210、微光摄像头215、热成像摄像头220和紫外摄像头225的任意数量或组合。尽管图3中仅示出了5个摄像头,但头显300可以包括多于或少于5个摄像头。

2. Low Compute Depth Map Generation

本章的图5A示出了生成下采样立体图像对510的概念表示。在一个实施例中,左图像515A和右图像520A是具有足够像素的高分辨率图像,能够以期望的精度水平表示捕获的环境。但如上所述,对高分辨率图像执行立体匹配以生成捕获环境的深度信息存在大量的挑战。

所以,图5A示出了对左图像515A执行的下采样操作525A和对右图像520A执行的下采样操作530A。下采样操作525A能够减小左图像515A的图像大小和像素分辨率。类似地,下采样操作530A减小右图像520A的图像大小和像素分辨率。所以,可以分别对左图像515A和右图像520A执行下采样操作525A和530A从而,生成下采样立体图像对510,其包括下采样左图像515B和下采样右图像520B。

在一个实施例中,下采样操作525A和530A包括减少原点中的像素部分。

在一个实施例中,下采样操作525A和530A包括将原始图像中的像素部分减少为下采样图像中的单个像素。例如,在某些情况下,下采样图像中的每个像素由原始图像的像素定义:p、 sub.d(m,n)=p(Km,Kn)

其中,p.sub.d是下采样图像中的像素,p是原始图像中的像素,K是比例因子,m是水平轴上的像素坐标,n是垂直轴上的像素坐标。在一个实施例中,下采样操作525A和530A同时包括用于定义下采样图像的像素的预滤波功能,例如防止混叠伪影的抗混叠预滤波。

在一个实施例中,下采样操作525A和530A利用平均滤波器,用于基于原始图像中一部分像素的平均值来定义下采样图像的像素,

在一个实施例中,下采样操作525A和530A在水平轴和垂直轴上将左图像515A和右图像520A的像素分辨率降低了2倍,使得下采样左图像515B和下采样右图像520B是左图像和右图像im的大小的四分之一。因此,使用下采样立体图像对510执行立体匹配的计算成本低于使用原始左图像515A和右图像520A执行立体匹配的计算成本。所以,使用下采样立体图像对510执行立体匹配可以降低计算成本与生成深度映射关联的属性。

例如,将水平轴和垂直轴上的像素分辨率降低2倍,可以将立体图像对中存在的像素数量减少4倍,并进一步将要执行的视差计算数量减少4倍。在一个实施例中,降低像素分辨率的另一个优势是用于识别图像之间的对应像素的搜索范围减小。所以,与使用原始图像对进行立体匹配相比,对下采样立体图像对510进行立体匹配的计算复杂度降低了16倍。

另外,下采样操作的数量和/或下采样立体图像对的最低像素分辨率基于各种因素动态更新。例如,在一个实施例中,过度下采样立体图像对可能导致环境中存在的薄结构消失,从而妨碍为此计算视差值。所以,在一个实施例中,系统可以识别环境中存在的可检测结构的厚度(例如通过对象分割),并基于可检测结构的厚度选择性地减少或增加要执行的下采样操作数量。

图5B示出了通过对下采样立体图像对执行立体匹配来生成深度映射的概念表示。具体地,图5B示出对下采样左图像515D和下采样右图像520D执行的立体匹配操作595。

图5B所示的立体匹配算法提供了左深度映射535A和右深度映射540A。左深度映射535A对应于下采样左图像515D的几何体,使得左深度映射535A中表示的结构在空间上与下采样左图像515D中表示的相同结构对齐。类似地,右深度映射540A对应于下采样右图像520D的几何体,使得右深度映射540A中表示的结构在空间上与下采样右图像520D中表示的相同结构对齐。

微软指出,通过避免生成对应于最初捕获的立体图像对得分辨率的高分辨率图像,可以降低与生成深度映射相关联的计算成本。

相关专利Microsoft Patent | Systems and methods for low compute depth map generation

3. Upsampling Low Temporal Resolution Depth Maps

图4A是头显400捕获环境405。在本文中,“场景”和“环境”可互换使用,并广义地指包括任何真实世界对象的任何真实世界空间。

头显400可以是图2中头显200。所以,头显400可以利用扫描传感器205来捕获环境405。例如在一个实施例中,头显400利用立体头来捕获环境405的立体图像对410A。左图像和右图像覆盖重叠区域(在图4A中描绘为立体图像对410A),其中左图像和右图像各自包括表示环境405的公共部分和/或对象的对应像素。例如,左图像和右图像都包括表示位于环境405内的球430和墙435的像素。

在一个实施例中,系统校正立体图像对410A并执行深度计算420A,例如立体匹配,以生成深度映射415A。深度映射415A包括立体图像对410A内表示的环境405的深度信息。

在一个实施例中,立体匹配涉及识别对应像素的视差值。立体匹配算法通过使用代价函数(或其他相似性度量)来确定相关差异在每个像素位置的代价,从而生成深度映射。立体匹配算法的代价函数可以实施例各种项和/或优化以确定每个像素位置处的代价。对于每个像素位置,立体匹配算法选择具有总体最小代价的视差值。

但就计算量而言,从立体图像对410A生成用于执行视差校正的深度映射十分昂贵,特别是对于高分辨率立体图像对。例如,图4A示出了在第一时间点捕获立体图像对410A的头显400。在一个实施例中,由于与执行深度计算420A以生成深度映射相关联的计算开销,直到自头显400捕获立体图像对410A的第一时间点起经过一段时间(如若干帧)后才完成深度映射415A。

在图4B,头显400捕获多个立体图像对,包括立体图像对410A和立体图像对410B-410F。头显400以第一频率f1捕获立体图像对。图4B同时示出了迭代生成深度映射的系统表示。例如,通过对立体图像对410A执行深度计算420A来生成深度映射415A,并且通过对立体图像对410D执行深度计算420D来生成深度映射415D。

但如图所示。深度计算420A的计算十分昂贵且耗时。所以,图4B中的头显400以低于第一频率f1的第二频率f2生成深度映射。在图4B所示的实例中,第二频率f2是第一频率f1的1/3,这意味着头显400(或其他系统)以头显400捕获立体图像对的1/3速率生成深度映射。在至少一个实例中,当第一频率f1是90hz时,第二频率f2是30hz。

针对这个问题,可以对低时间分辨率深度映射进行上采样来生成深度映射。5A-5C说明了基于来自先前时间点和目标时间点的图像数据来生成插值深度映射。

图5A示出了立体图像对510A和深度映射515A,它们分别代表来自图5A的立体图像对410A和深度映射415A。参考4A-4B,立体图像对410A和深度映射415A代表特定时间点的环境405。所述时间点在图5A中表示为先前的时间点555A。图5A同时示出了立体图像对510C,其代表来自图4B的立体图像对410C。

注意,在图4B中,没有通过对立体图像对410C执行立体匹配或其他常规深度计算来计算与立体图像对410C相关联的时间点的深度映射。所以回到图5A,立体图像对510C表示没有通过立体匹配或其他常规深度计算来计算其对应深度映射的时间点。

图5B是通过应用滤波器560生成插值深映射图520的概念表示。在一个实施例中,滤波器560是使用一个或多个引导图像的边缘保持滤波器。作为非限制性示例,在一个实施例中,滤波器560是联合双边滤波器、引导滤波器、双边解算器或任何其他合适的边缘保持滤波器。

在图5B所示的示例中,滤波器560配置为使用来自立体图像对510A、立体图像对510C和深度映射515A的图像数据来生成内插深度映射520。

在一个实施例中,滤波器560生成插值深度映射520的每个像素P,并作为深度映射515A的特定像素的加权平均值。在图5B的示例中,对于内插深度映射520的每个像素P,滤波器560识别立体图像对510C中对应于像素P的坐标的像素P。在一个实施例中,由于立体图像对510C和插值深度映射520都与目标时间点555C相关联,所以插值深度映射520和立体图像对510C中表示的对象将对齐。因此,在一个实施例中,像素P提供用于识别与先前时间点555A相关联的图像数据的参考起点,以实施例在插值深度映射520中生成像素P。

在一个实施例中,基于像素P的强度和像素坐标,滤波器560识别立体图像对510A中的一个或多个像素Q。立体图像对510A具有与像素P相似的像素坐标和与像素P相似的强度值。在一个实例中,滤波器560基于包含像素P的像素坐标的坐标范围565来识别像素坐标的相似性。

另外,在一个实施例中,滤波器560基于灰度强度差、距离度量和/或任何合适的相似性函数或技术来识别坐标范围565内具有与像素P的强度相似的强度的一个或多个像素Q的强度相似性。

在一个实施例中,基于一个或多个像素Q的像素坐标,滤波器560在深度映射515A中识别与一个或多个像素Q具有相同像素坐标的一个或多个像素Q。在一个实施例中,由于立体图像对510A和深度映射515A都与先前的时间点555A相关联,所以在深度映射515A和立体图像对510A中表示的对象将对齐。所以,在一个实施例中,一个或多个像素Q提供用于识别一个或多个像素Q的参考,以实施例用于在插值深度映射520中生成像素P。

在一个实施例中,基于来自深度映射515A的一个或多个像素Q的视差值的加权平均值,滤波器560生成像素P的深度值(例如视差值)。在一个实施例中,用于确定用于生成像素P的一个或多个像素Q的加权平均值的权重基于立体图像对510A的一个或多个像素Q和来自立体图像对510C的像素P之间的强度相似性、一个或多个像素Q和像素P之间的像素坐标相似性,或其组合。

图5C描绘了使用来自立体图像对510C、立体图像对510A和深度映射515A的图像数据生成插值深度映射520的所有像素P之后的插值深度映射520。

微软指出,在一个实施例中,以根据图5A-5C公开的方式生成深度映射可以以比传统立体匹配或其他深度计算技术更低的计算成本来提供深度映射,从而实施例高时间分辨率深度映射生成。

相关专利Microsoft Patent | Upsampling low temporal resolution depth maps

4. Temporally Consistent Depth Map Generation

图7A示出了头显700以第一姿态P1捕获环境705。头显700可以代表图2中提到的头显200。所以,头显700可以利用扫描传感器205来捕获环境705。图7A中描绘的实例示出头显700利用立体摄像头捕获环境705的P1立体图像对710,同时头显700具有第一姿态P1。图7A描绘了重叠区域,其中P1立体图像对710的多个图像各自包括表示环境705的对应像素。例如,P1立体图像对710的多个图像包括表示球730和墙735和740的像素。

另外,在一个实施例中,头显700使用一个或多个惯性追踪组件(例如加速计255、陀螺仪260和指南针265)识别第一姿态P1。在一个实施例中,惯性追踪部件与一个或多个扫描传感器205(例如头部追踪摄像头)协同工作,以估计头显700的六自由度姿态。

图7A同时示出,头显700基于P1立体图像对生成P1深度映射715A。可以通过执行立体匹配来获得深度映射。

图7B识别不同于姿态P1更新姿态P2。在一个实施例中,更新的姿态P2是与第一姿态P1相关联的时间点之后的时间点处的姿态。在一个实施例中,头显700基于各种组件获得的数据来识别更新的姿态P2。

当用户在环境705中随时间改变其位置时,头显700的立体摄像头捕获环境705的不同视角和/或部分。例如,当头显700具有更新的姿态P2时,立体摄像头捕获环境705的P2立体图像对720。虚线框745描绘了基于P1的捕获图像,而P2则是720。但745和720均捕获了目标区域的重要部分,如区域750。

由于透视图的变化和立体深度计算的固有复杂性(例如立体匹配),基于P1立体图像对710生成的P1深度映射715A中的深度信息,以及基于P2立体图像对720生成的P2深度映射中的深度信息之间存在差异。在一个示例中,P1深度映射中的球730视差值可能与P2深度映射中的球730视差值不一致。

若连续生成的深度映射中的对象深度不一致,例如时间不一致,这将会导致用户体验下降,例如这球的帧到帧表示不准确。

所以,可以利用来自先前深度映射的深度信息来提供连续生成的深度映射之间的时间一致性,同时生成后续深度映射。

根据提供时间上一致的连续生成的深度映射,图7C示出了通过在P1深度映射715A执行重投影操作765来生成重投影的P1深度映射715B。

在一个实施例中,头显700利用获得的更新姿态P2的姿态数据执行重投影操作765。头显700然后重新投影P1深度映射715A,以对应于与更新姿态P2相关联的环境的透视图,从而提供重投影的P1深度映射715B。

换言之,头显700通过使用更新姿态P2来重新投影P1深度映射715A,以将P1深度映射715A与P2立体图像对720对齐,从而生成重投影的P1深度映射715B。

例如在一个实例中,头显700将视差值投影到三维空间中,基于P1深度映射715A中表示的视差值来识别三维空间中的深度点,例如点云或其他三维重建)。然后,系统可以使用更新姿态P2的姿态数据重投影或变换深度点,以将P1深度映射715A与P2立体图像对720的透视图对齐。

例如,图7C的虚线框785描绘了捕获P2立体图像对720,以与重投影的P1深度映射715B进行比较的透视图。

如图7C所示,P1深度映射715B中表示的对象的深度信息与区域770所示的P2立体图像对720中表示的相同对象对齐。例如,P1深度映射715B中的球730的深度值的空间坐标与P2立体图像对720中的球730的像素的空间坐标对齐。

另外,如图7C所示,重投影的P1深度映射715B包括P2立体图像对中未表示的环境705部分的深度信息,如区域775。在一个示例中,重投影的P1深度映射包括在P2立体图像对720中未示出的墙735的部分的深度信息。在一个实施例中,在进一步处理中可以省略区域775中的无关深度信息,从而节省计算资源。

在一个实施例中,通过对P2立体图像对720执行立体匹配来生成P2深度映射的同时,使用重新投影的P1深度映射,以提供P1深度映射和P2深度映射之间的时间一致性。

图8示出了使用重投影深度映射执行立体匹配,从而生成与更新姿态相对应的深度映射。

图8同时示出了立体匹配操作830,其通过操作P2立体图像对820并使用重投影的P1深度映射来生成P2深度映射825。在一个实施例中,立体匹配操作通过使用代价函数835(或其它相似性度量)来确定相关差异的每个像素位置处的代价来生成深度映射。对于每个像素位置,立体匹配操作830选择具有总体最小代价的视差值。

在一个实施例中,立体匹配操作830的代价函数835实施例各种项和/或优化以确定每个像素位置处的代价。

立体匹配操作830的代价函数835实施例时间一致性项840。在一个实施例中,代价函数835的时间一致性项840对P2深度映射825的像素(或像素位置)应用代价加成(例如,代价降低)。其中,P2深度映射825的像素(或像素位置)与重投影的P1深度映射815的对应像素(或像素位置)共享相同或相似的视差值。

为了帮助理解,可将重投影的P1深度映射815视为P2深度映射825的一组预测视差值。在一个实施例中,时间一致性项840将通过采用预测视差值来致使P2深度映射825的像素具有最小代价。

以在重投影P1深度映射815中表示的球850作为说明。可将重投影P1深度映射815中的球850的视差值视为P2深度映射825中的像素的预测视差值。其中,P2深度映射825将描述在P2立体图像对820中捕获的球850。

当执行立体匹配操作830以计算P2深度映射中的球850的视差值时,代价函数835可基于P2立体图像对820之间的像素匹配来确定与描述球850的像素的视差值相关联的代价。基于P2立体图像对820之间的像素匹配的视差值可以接近基于重投影P1深度映射815的预测视差值,但依然可以与预测视差值不一致。采用不一致的视差值可能会降低依赖于连续深度计算的用户体验。

所以,立体匹配操作830的代价函数835包括时间一致性项840,其为与重投影P1深度映射815的对应像素的预测视差值共享相同或相似视差值的像素提供代价加成(例如,代价降低)。继续上面的例子,当描述球850的像素采用重投影P1深度映射815的对应像素的预测视差值时,代价函数835可确定与描述球850的像素的视差值相关联的代价低于基于像素匹配的视差值的代价(例如,由于与时间一致性项840相关的成本加成)。

在一个说明性示例中,如果球850处于运动中,故其位置不同于重新投影P2深度映射815中捕获的球850的位置。当基于像素匹配而不是基于来自重新投影P1深度映射815的预测视差值时,球850的视差值可以具有最低成本。

在一个实施例中,重投影P1深度映射815未能包括P2立体图像对820中表示的环境的每个部分的预测视差值。然而,立体匹配操作830可以基于像素匹配获得所述部分的视差值。例如,P2深度映射825包括区域855,其表示重新投影的P1深度映射815不包括视差值的环境的一部分。在一个实例中,基于P2立体图像对820之间的像素匹配,在深度映射中识别并表示P2深度映射825的视差值。

应注意的是,这种时间一致的深度映射生成原理可选择性地应用于各种情况。例如,在一个实施例中,系统以初始姿态捕获初始高分辨率立体图像对,执行立体匹配以获得初始深度映射。然后,系统以更新姿态捕获后续高分辨率立体图像对,并基于后续高分辨率立体图像对生成更新的深度映射,同时使用基于更新的姿态重新投影的初始高分辨率立体图像对。

在其他情况下,系统捕获第一对立体图像并对第一对立体图像进行下采样,并基于下采样的第一对立体图像生成深度映射。然后,系统在第二姿态捕获第二对立体图像并对第二对立体图像进行下采样。然后,系统生成深度映射基于下采样的第二立体图像对的第二深度映射,同时使用基于第二姿态重新投影的下采样的第一立体图像对。

通过上面描述的方式,可以生成具有时间一致性的深度映射。

相关专利Microsoft Patent | Systems and methods for temporally consistent depth map generation

上述三份专利申请均于2020年5月提交,并在日前由美国专利商标局公布。

HoloLens QQ交流群493967447

更多阅读推荐......

专栏