微软AR/VR专利用单光子雪崩二极管(SPAD)传感器阵列进行强度图像捕获和飞行时间捕获
利用单光子雪崩二极管(SPAD)传感器阵列来进行强度图像捕获和飞行时间捕获。
(映维网Nweon 2022年06月14日)透视视图可以帮助VR用户在导航时避免迷失方向和/或遭遇安全危险。透视视图可以可以增强低可见性环境中的用户视图。例如,配置有长波热成像摄像头的混合现实系统可促进烟雾、薄雾、雾和/或灰尘中的可见度。
但生成透视视图与存在一系列的挑战。例如,生成视差校正的透视图像通常依赖于使用与捕获环境相关联的深度信息来重新投影与捕获环境相关联的强度信息。然而,用于获取深度信息的传统技术通常导致深度信息和强度信息之间的时间或空间偏移。
例如,当用于获取深度信息的摄像头和用于获取强度信息的摄像头不位于头显时,则可能会发生空间偏移。另外,在使用相同的摄像头捕获深度信息和强度信息时,考虑到与生成深度信息相关联的计算开销和时间,同样可能会发生时间偏移。所述问题会导致运动模糊、抖动和/或其他用户可见的伪影。
为了便于生成穿透视图的环境成像,有MR系统选择采用互补金属氧化物半导体(CMOS)和/或电荷耦合器件(CCD)技术的图像传感器。但它们同样存在缺点。例如,传统图像传感器的信噪比可能受到读取噪点的高度影响,尤其是在低能见度条件下成像时。
另外,与传统图像传感器相关联的读取噪点可能影响头显执行的其他操作,例如对象跟踪、表面重建、语义标记、对象的3D重建和/或其他。
针对这个问题,微软提出利用单光子雪崩二极管(SPAD)传感器阵列来进行强度图像捕获和飞行时间捕获。
图2示出了SPAD传感器的示例实现。头显200可以以各种方式和/或出于各种目的实现一个或多个SPAD传感器。例如,图2中的头显200包括SPAD传感器202A和SPAD传感器202B,它们一起可以组成SPAD传感器的立体对。
SPAD传感器202A和202B可配置为捕获强度图像帧,例如通过以每像素为基础计算在帧捕获时间段内检测到的光子或雪崩事件。在一个实施例中,SPAD传感器202A和202B配置为以同步方式捕获强度图像。例如,SPAD传感器202A和202B可以在曝光或读出中的至少一个中同步,令捕获环境的单独强度图像基本在时间上同步。
在一个实施例中,头显200配置为使用SPAD传感器202A和202B捕获的立体强度图像对执行立体深度计算,例如立体匹配。所以,头显200可以利用SPAD传感器202A和202B来获取与捕获的环境相关联的强度信息和深度信息。在一个实施例中,头显200可以利用强度信息和深度信息来提供透视图像。
在一个实施例中,头显200可以包括任意数量的附加或替代SPAD传感器,并用于执行任何附加或替代功能。例如,图2示出了SPAD传感器202C和SPAD传感器202D,其可以被配置为捕获强度图像以促进SLAM。
图2进一步示出了头显200可以包括SPAD传感器202E,SPAD传感器202E配置用于环境的静态图像和/或视频捕获。
在一个实施例中,头显200可额外或替代地包括SPAD传感器202F,其配置为与照明器206A一起工作,以便于飞行时间捕获。在一个实施例中,头显200可以包括带阻滤波器208,以促进飞行时间捕获。图2同时示出了照明器206B,以说明头显200的任何SPAD传感器可配置为感测照明器206B发射的光,例如执行交错飞行时间操作。
头显200的SPAD传感器可配置为捕捉各种照明条件下的真实环境。例如,图2示出了照明环境220和微光环境230。照明环境220可具有约10 lux或以上的环境照明,而微光环境可具有约10 lux或以下的环境照明。
微软指出,与传统CMOS或CCD传感器相比,SPAD传感器可用于促进改进的成像捕获性能,尤其是在低光照条件下。
图3说明了示例SPAD使用300个SPAD传感器用于混合现实系统。如上所述,头显 200的一个或多个SPAD传感器202A-202F可配置为捕捉环境强度图像302,例如通过按像素计算在帧捕捉时间段内检测到的光子或雪崩事件。
头显200的一个或多个SPAD传感器202A-202F可用于获取与环境相关的深度信息304。在一个实施例中,基于对由立体对SPAD传感器(例如SPAD传感器202A和202B)捕获的立体对图像执行立体深度计算,这可以获得深度信息304。
例如,头显 200可以比较由立体SPAD传感器对捕获的图像的像素块以计算每像素视差值(例如通过最小化代价函数),并且视差值可以为深度信息304提供基础,例如基于SPAD传感器之间的已知基线距离。
在一个实施例中,基于使用从照明器发射并由SPAD传感器检测的光执行飞行时间计算,这可以获得与环境相关联的深度信息。例如,照明器可发射第一光脉冲,并且SPAD传感器的SPAD像素可配置为在光脉冲发射第一预定延迟周期之后应用第一快门。
第一预定延迟周期可对应于照明器发射的光在被SPAD像素检测之前已经经过的第一距离(或距离范围)。在这方面,当应用第一快门时检测光子的SPAD像素可以追踪为捕获根据第一距离与SPAD像素相距的真实世界环境的一部分。
然后,照明器可发射第二个光脉冲,并且SPAD传感器的SPAD像素可配置为在光脉冲发射第二个预定义延迟周期后应用第二个快门。其中,所述延迟周期可对应于第二距离。
因此,当应用第二快门时,检测光子的SPAD像素可以追踪为捕获根据第二距离与SPAD像素相距的真实世界环境的一部分。附加脉冲和光闸可以应用与单独距离相对应的单独延迟周期。系统100可以基于每像素追踪与检测到的光子相对应的光闸,从而提供每像素深度信息304。
强度图像302和/或深度信息304可用于与提供MR体验相关联的各种功能。例如,如上所述,强度图像302可以包括每像素强度信息,深度信息304可以包括每像素深度信息。
因此,头显200可以使用强度图像302和深度信息304生成重投影图像306。例如,系统可以通过基于深度信息304执行逐像素非投影到3D空间中,然后将3D点投影到与用户眼睛的透视相关联的图像平面的2D点来识别3D点。然后,可以使用2D点的坐标和来自强度图像302的相应强度信息来形成重投影图像306。
除了生成重投影图像306外,使用SPAD阵列获得的强度图像302和/或深度信息304可用于促进一个或多个计算机视觉任务。
如上所述,一个或多个SPAD传感器可用于帮助SLAM生成和/或更新环境的空间地图308。例如,头显200可以配置为对强度图像302执行特征检测,以识别捕获环境中的锚定点。与捕获期间头显200的定位相关信息可以存储为空间地图308内的关键帧,并且与锚定点相关的信息也可以存储在空间地图308内。锚定点和关键帧之间的相对距离可以基于深度信息304。
另外,系统可配置为基于使用一个或多个SPAD传感器获得的强度图像302和深度信息304生成表面重建(SR)网格310。
例如,可以在深度信息304中捕获关于环境对象的几何体和相对位置的信息,并且可以在强度图像302中捕获关于环境对象的纹理的信息。因此,深度信息304可用于构建环境的网格,并且强度图像302可提供要应用于网格的纹理。
系统可另外或可选地配置为使用使用一个或多个SPAD传感器获得的深度信息304执行对象追踪,例如手部追踪。
在另一个实施例中,SPAD阵列配置为执行交织强度图像捕获和飞行时间捕获操作,以获得强度图像302和深度信息304。
图4示出了示例SPAD阵列400,其可以包括SPAD传感器的一部分。因此,SPAD阵列400的SPAD像素402可配置为响应于检测光子而触发雪崩事件。SPAD像素402可以以选通方式操作,以促进交织强度图像(II)捕获操作404和飞行时间(ToF)捕获操作406。
如图4在概念上所示,系统可以在帧捕获时间段408上在执行II捕获操作404和ToF捕获操作406之间交替,以捕获基本在时间上对齐的强度信息和深度信息。帧捕获时间段408可以包括任意数量的交织II捕获操作404和ToF捕获操作406示。
图4示出了II捕获操作404可以包括在第一栅极时间段410应用快门。应用快门可配置SPAD像素402以触发雪崩事件以响应于检测光子。对于在II捕获操作404期间检测到的雪崩事件,其可以在帧捕获时间段408上以每像素为基础进行计数。计数的雪崩事件可用于确定强度图像的每像素强度值。
图4示出了ToF捕获操作406可以包括在第二栅极时间段412应用多个单独的快门。每个单独应用的快门可以配置SPAD像素402来触发雪崩事件,以响应于检测光子,并且每个单独应用的快门可以按照各自的延迟周期跟随各自的光脉冲。就此而言,ToF捕获操作406的单独快门可与单独的深度值相关联。
用于ToF捕获操作406期间的快门应用的第二栅极时间段412,其可以短于或小于用于II捕获操作404期间的快门应用的第一栅极时间段410。例如,对于II捕获操作404,更长的曝光时间在微光成像条件下可能有益,因为这可以允许SPAD像素402检测到最大数量的光子。另外,用于ToF捕获操作406的短曝光时间提供了根据ToF捕获操作406获得改进的粒度或深度分辨率信息。
图5示出了使用交错II捕获操作404和ToF捕获操作406的强度图像(II)帧捕获500的概念表示。图5示出了SPAD传感器502,其可以包括具有多个SPAD像素402的SPAD阵列400,每个SPAD像素402配置为执行交织II捕获操作404和ToF捕获操作406。
图5描绘了具有前表面506、顶表面508和右表面510的环境对象504。每个表面可以将环境光的光子反射到SPAD传感器502。如图5所示,从环境对象504延伸的箭头包括不同的厚度,指示环境对象504的不同表面可以向SPAD传感器502反射不同数量的光或光子。
对于前表面506,其中最厚的箭头向SPAD传感器502延伸,表明前表面506相对于其他两个表面向SPAD传感器502反射最多数量的光子。
对于顶面508,其中最薄的箭头向SPAD传感器502延伸,指示顶面508相对于其他两个表面向SPAD传感器502反射的光子数最低。右表面510,其中一个中间厚度的箭头向SPAD传感器502延伸,指示右表面相对于其他两个表面向SPAD传感器502反射中间数量的光子。
图5进一步显示了从环境对象504不同表面向SPAD传感器502不同部分延伸的不同箭头,指示SPAD传感器502的SPAD阵列的不同SPAD像素可以捕获由环境对象504不同部分反射的光子。
例如,第一组SPAD像素可以检测前表面506反射的光子,第二组SPAD像素可以检测右表面510反射的光子,第三组SPAD像素可以检测顶表面508反射的光子。
每组SPAD像素的SPAD像素可以在帧捕获时间段408上迭代执行II捕获操作404和ToF捕获操作406。在帧捕获时间段408上的每个II捕获操作404期间,快门可用于配置SPAD传感器502的不同SPAD像素组,以触发雪崩事件。每个检测到的雪崩事件可以由每个像素光子计数器512基于每个像素进行计数。
继续上述示例,第一组SPAD像素(检测由环境对象504的前表面506反射的光子)可检测到最多数量的雪崩事件,第三组SPAD像素(检测由环境对象504的顶表面508反射的光子)可检测到最少数量的雪崩事件,并且第二组SPAD像素(检测由环境对象的右表面510反射的光子)可以检测中间数量的雪崩事件。
各SPAD像素集的雪崩事件的各自数量可由每像素光子计数器512计数,并且可基于各自的每像素光子计数获得每像素强度值514。
图6示出了ToF捕获操作406的子帧的概念表示,ToF捕获操作406涉及与不同深度值相关联的多个单独快门。具体而言,图6示出了第一快门602、第二快门604、第三快门606和第四快门608的概念表示,每个快门对应于ToF捕获操作406的单独快门、子帧或子门。
如图6所示,每个单独的快门可与来自照明器的相应光脉冲之后的单独时间延迟相关联。例如,图6示出了与第一延迟610相关联的第一快门602、与第二延迟612相关联的第二快门604、与第三延迟614相关联的第三快门606以及与第四延迟616相关联的第四快门608。在一个实施例中,与每个延迟相关联的时间量可以顺序地增加。
通过在各个光脉冲之后提供与单独延迟周期相关联的单独快门,ToF捕获操作406可允许SPAD传感器502捕获与环境对象504相关联的深度信息。
如上所述,第一延迟610可指示特定的飞行时间,其可指示在应用第一快门602期间检测到的光子所经过的距离。举例来说,第一延迟610可与约6英寸的距离相关联,使得在应用第一快门602期间检测雪崩事件的SPAD传感器502的任何SPAD像素可追踪为检测定位在距离SPAD像素约6英寸的深度或距离的环境对象。
图6示出,在第一光脉冲618之后根据第一延迟610应用第一快门602之后,系统可配置为在来自照明器516的第二光脉冲622之后根据第二延迟612应用第二快门604。
如上所述,与第二快门604相关联的第二延迟612可以长于与第一快门602相关联的第一延迟610,从而使根据第二光脉冲622发射的光子有相对更多的时间向SPAD传感器502传播。
例如,第二延迟612可与约9英寸的距离相关联,而如上通过第一延迟610的示例所述为6英寸。因此,图6描绘了在根据第二延迟612应用第二快门604期间,第二光脉冲622(由箭头表示)的光子更接近SPAD传感器502。
基于每个每像素快门光子计数器获得的计数,系统可以获得每像素深度值634。例如,系统可以根据每像素第一快门光子计数器620确定SPAD传感器的哪个SPAD像素在第一快门602期间检测到光子。
在图6中提供的示例中,在第一快门602期间没有SPAD像素检测到光子,导致SPAD传感器502的SPAD像素没有与与第一延迟610相关联的深度值相关联。
图7示出了描述与使用一个或多个SPAD阵列促进强度图像感测相关联的动作的示例流程图700。
流程图700的动作702包括使用SPAD阵列捕捉环境的强度图像。在一个实施例中,可以由搭载处理器102、存储器104、传感器110、输入/输出系统114、通信系统116和/或其他组件的系统100执行动作702。
在一个实施例中,使用SPAD阵列捕获环境的强度图像包括在帧捕获时间段内计数SPAD阵列触发的雪崩事件,以响应于在每像素的基础上检测光子。可以基于计数的每像素雪崩事件来确定强度图像的强度信息。
动作704包括获取与环境相关的深度信息。与环境相关联的深度信息基于使用从照明器发射并由SPAD阵列检测的光执行的飞行时间计算。与环境相关联的深度信息基于使用由包括SPAD阵列和第二SPAD阵列的立体SPAD阵列对捕获的图像执行的立体深度计算。SPAD阵列的立体对可以在曝光或读出中的至少一个中同步。
动作706包括通过重投影环境图像的至少一部分来生成重投影图像,以对应于用户眼睛的透视图。生成重投影图像可以包括基于深度信息执行逐像素非投影到三维空间,然后将三维点投影到与用户眼睛的透视相关联的图像平面的二维点之上。接下来,可以使用2D点的坐标和来自上述参考动作702的强度图像的相应强度信息来形成重投影图像。
图8所示的流程图描绘了与使用一个或多个SPAD阵列执行交织强度图像捕获和飞行时间捕获操作。
动作802包括执行强度图像捕获操作。执行强度图像操作可以包括,对于SPAD阵列的每个SPAD像素,在第一栅极时间段应用与SPAD像素相关联的快门,以配置SPAD像素以检测光子。
动作804包括执行飞行时间捕获操作。804可涉及各种子组件或相关动作。例如,流程图800的动作804的动作804A包括激活照明器以发射光脉冲。光脉冲包括红外频率带。另外,执行飞行时间捕获操作包括激活配置有阻带频率的带阻滤波器,阻带频率包括光脉冲的红外频率频带之外的一个或多个频率。
动作804B包括,对于SPAD阵列的每个SPAD像素,应用与SPAD像素相关联的快门第二栅极时间段,以配置SPAD像素以检测光子。在一个实施例中,第二栅极时间段小于第一栅极时间段。
804C包括激活照明器以发射多个光脉冲。对于SPAD阵列的每个SPAD像素,应用与SPAD像素相关联的多个单独快门,多个单独快门中的每个单独快门在多个光脉冲中的各个单独光脉冲之后应用,并且多个单独快门中的每个单独快门与多个光脉冲中的各个单独光脉冲之后的各个延迟周期相关联。在一个实施例中,多个单独的快门中的每一个都应用于第二栅极时间段。
动作806包括在帧捕获时间段内迭代执行强度图像捕获和飞行时间捕获操作。强度捕获操作可以包括在交替执行飞行时间捕获操作之前应用任意数量的快门。类似地,飞行时间捕获操作可以包括在交替执行强度捕获操作之前应用任意数量的快门。
动作808包括,对于SPAD阵列的每个SPAD像素,计算从迭代执行强度图像捕获操作中检测到的光子数。每个SPAD像素检测到的每像素光子数(或雪崩事件)可以为确定每个SPAD像素的相应强度值提供基础。动作812包括,对于SPAD阵列的每个SPAD像素,基于从迭代执行强度图像捕获操作中检测到的光子数量来确定像素强度值。
816包括,基于像素强度值或像素深度值生成图像。在一个实施例中,每像素强度值和每像素深度值可以有利地至少部分时间同步。图像可以包括合成的三维图像和强度图像。
相关专利:Microsoft Patent | Spad array for intensity image capture and time of flight capture
相关专利:Microsoft Patent | Spad array for intensity image sensing on head-mounted displays
名为“Spad array for intensity image capture and time of flight capture”和“ Spad array for intensity image sensing on head-mounted displays”的专利申请最初在2020年11月提交,并在日前由美国专利商标局公布。