掌桥专利:专业的专利平台
掌桥专利
首页

用于单光子雪崩二极管影像中的暗电流补偿的系统和方法

文献发布时间:2024-04-18 20:01:55


用于单光子雪崩二极管影像中的暗电流补偿的系统和方法

背景技术

混合现实(MR)系统,包括虚拟现实和增强现实系统,因其为其用户创建真正独特的体验的能力而受到极大关注。作为参考,传统的虚拟现实(VR)系统通过将用户的视野限制在仅虚拟环境中来创建完全沉浸式的体验。在VR系统中,这通常是通过使用完全遮挡现实世界任何视图的头戴式设备(HMD)来实现的。结果,用户完全沉浸在虚拟环境中。相比之下,传统的增强现实(AR)系统通过视觉呈现放置在现实世界中或与现实世界交互的虚拟对象来创建增强现实体验。

如本文所使用的,VR和AR系统被可互换地描述和引用。除非另有说明,本文的描述同样适用于所有类型的混合现实系统,其(如上文详述)包括AR系统、VR现实系统和/或能够显示虚拟对象的任何其他类似系统。

一些MR系统包括一个或多个用于促进图像捕获、视频捕获和/或其他功能的相机。例如,MR系统的相机可以利用使用相机获得的图像和/或深度信息来向用户提供用户环境的直通视图。MR系统可以以各种方式提供直通视图。例如,MR系统可以向用户呈现由MR系统的相机捕获的原始图像。在其他情况下,MR系统可以修改和/或重新投影捕获的图像数据以对应于用户眼睛的视角,从而生成直通视图。MR系统可以修改和/或重新投影捕获的图像数据以使用由MR系统获得的捕获环境的深度信息(例如,使用MR系统的深度系统,诸如飞行时间相机、测距仪、立体深度相机等)来生成直通视图。在一些情况下,MR系统利用一个或多个预定义的深度值来生成直通视图(例如,通过执行平面重投影)。

在一些情况下,通过修改和/或重新投影捕获的图像数据生成的直通视图可以至少部分地校正由用户的眼睛和MR系统的相机之间的物理分离产生的视角差(称为“视差问题”、“视差误差”或简称“视差”)。这种直通视图/图像可以被称为“视差校正直通”视图/图像。举例来说明,视差校正直通图像对用户来说可以看起来就像是由与用户眼睛位于同一位置的相机捕获的一样。

直通视图可以帮助用户在转换到混合现实环境中和/或在混合现实环境中导航时避免迷失方向和/或安全隐患。直通视图还可以增强低能见度环境中的用户视图。例如,配置有长波长热成像相机的混合现实系统可以促进烟雾、霾、雾和/或灰尘中的可见性。同样,配置有低光成像相机的混合现实系统有助于在环境光水平低于人类视觉所需水平的黑暗环境中提高可见性。

为了促进环境成像以生成直通视图,一些MR系统包括利用互补金属氧化物半导体(CMOS)和/或电荷耦合器件(CCD)技术的图像传感器。例如,此类技术可包括图像感测像素阵列,其中每个像素被配置为响应于检测到的光子而生成电子空穴对。电子可以存储在每像素电容器中,并且可以读出存储在电容器中的电荷以提供图像数据(例如,通过将存储的电荷转换为电压)。

然而,这种图像传感器存在许多缺点。例如,传统图像传感器的信噪比可能会受到读取噪声的严重影响,尤其是在低能见度条件下成像时。例如,在低光成像条件下(例如,环境光低于约10勒克斯,例如在约1毫勒克斯或以下的范围内),CMOS或CCD成像像素可能仅检测到少量光子,这可能导致读取噪声接近或超过成像像素检测到的信号并降低信噪比。

当在低光照条件下以高帧速率成像时,CMOS或CCD图像传感器检测到的信号中读取噪声的主导地位通常会加剧。虽然较低的帧速率可用于允许CMOS或CCD传感器检测足够的光子,从而使信号避免受到读取噪声的支配,但使用低帧速率通常会导致捕获的图像中的运动模糊。当在HMD或其他在使用过程中经历常规运动的设备上执行成像时,运动模糊尤其成问题。

除了影响直通成像之外,与传统图像传感器相关的读取噪声和/或运动模糊还可能影响HMD执行的其他操作,例如后期重投影、卷帘快门校正、对象跟踪(例如手部跟踪)、表面重建、语义标记、对象的3D重建和/或其他。

为了解决与CMOS和/或CCD图像传感器相关的缺点,已经出现了利用单光子雪崩二极管(SPAD)图像传感器的设备。与传统的CMOS或CCD传感器相比,SPAD在偏置电压下运行,使SPAD能够检测单个光子。在检测到单个光子时,形成电子-空穴对,并且电子在高电场中加速,引起雪崩倍增(例如,产生额外的电子-空穴对)。因此,每个检测到的光子都可能触发雪崩事件。SPAD可以以门控方式操作(每个门对应于单独的快门操作),其中每个门控快门操作可以被配置为产生二进制输出。二进制输出可以包括“1”,其中在曝光期间检测到雪崩事件(例如,其中检测到光子),或者包括“0”,其中没有检测到雪崩事件。

单独的快门操作可以连续地执行并且在帧捕获时间段上集成。可以对帧捕获时间段上的连续快门操作的二进制输出进行计数,并且可以基于计数的二进制输出来计算强度值。

SPAD阵列可以形成图像传感器,其中每个SPAD形成SPAD阵列中的单独像素。为了捕获环境的图像,每个SPAD像素可以检测雪崩事件并且以本文描述的方式提供连续快门操作的二进制输出。可以对帧捕获时间段上的连续快门操作的每像素二进制输出进行计数,并且可以基于计数的每像素二进制输出来计算每像素强度值。每像素强度值可用于形成环境的强度图像。

尽管SPAD传感器有望克服与CMOS或CCD传感器相关联的各种缺点,但实现用于图像和/或视频捕获的SPAD传感器仍然面临许多挑战。例如,持续需要和期望改进SPAD影像的图像质量,特别是对于在低光条件下捕获的SPAD影像(包括在低光条件下使用SPAD捕获的彩色影像)。

本文要求保护的主题不限于解决任何缺点或仅在诸如上述那些环境中操作的实施例。相反,该背景仅被提供来说明可以实践本文描述的一些实施例的一个示例性技术领域。

发明内容

所公开的实施例包括用于SPAD影像中的暗电流补偿的系统、方法和设备。

一些公开的系统包括具有多个SPAD像素的SPAD阵列。该系统还包括一个或多个处理器以及存储指令的一个或多个硬件存储设备,这些指令可由一个或多个处理器执行以将系统配置成执行与在SPAD影像中执行暗电流补偿相关联的各种动作。这些动作包括:利用SPAD阵列捕获图像帧并通过使用该图像帧和由SPAD阵列在时间上先于与该图像帧相关联的时间点的时间点捕获的先前图像帧执行时间滤波操作来生成时间滤波图像。

所公开的用于在SPAD影像中执行暗电流补偿的动作还包括:获得暗电流图像帧,该暗电流图像帧包括指示多个SPAD像素中的一个或多个SPAD像素已经检测到雪崩事件而没有检测到相应光子的数据。

所公开的用于在SPAD影像中执行暗电流补偿的动作还包括:通过基于暗电流图像帧对时间滤波图像执行减法操作来生成暗电流补偿图像。

提供本发明内容是为了以简化的形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容无意于识别所要求保护的主题的关键特征或基本特征,也无意于用作确定所要求保护的主题的范围的帮助。

附加的特征和优点将在下面的描述中阐述,并且部分地从描述中将是显而易见的,或者可以通过本文的教导的实践而了解到。本发明的特征和优点可以通过所附权利要求中特别指出的手段和组合来实现和获得。本发明的特征将从下面的描述和所附权利要求中变得更加明显,或者可以通过如下文阐述的本发明的实践来了解。

附图说明

为了描述获得上述和其他优点和特征的方式,将参考附图中示出的具体实施例对上面简要描述的主题进行更具体的描述。要理解的是,这些附图仅描绘了典型的实施例并且因此不应被认为是对范围的限制,将通过使用附图以额外的特性和细节来描述和解释实施例,其中:

图1示出了示例系统的示例组件,该示例系统可以包括或用于实现一个或多个所公开的实施例;

图2示出了使用头戴式显示器(HMD)的单光子雪崩二极管(SPAD)阵列在低光环境下捕获对象的图像帧的示例;

图3示出了使用由HMD的SPAD阵列捕获的连续捕获的图像帧生成时间滤波图像的示例;

图4示出了使用SPAD传感器捕获暗电流图像帧的示例;

图5示出了使用暗电流图像帧生成暗电流补偿图像的示例;

图6示出了在不同温度条件下使用SPAD传感器捕获多个暗电流图像帧的示例;

图7示出了使用基于运行时的温度条件选择的暗电流图像来生成暗电流补偿图像的示例;

图8示出了示例暗电流图像帧,该示例暗电流图像帧包括在运行时捕获图像帧时将不被曝光的未曝光SPAD像素区域;

图9示出了使用使用暗电流因子缩放的暗电流图像帧生成暗电流补偿图像的示例,其中暗电流因子是基于未曝光SPAD像素的运行时间传感器数据确定的;

图10示出了可以对暗电流补偿图像执行的示例附加操作;

图11示出了通过从运行时捕获的图像帧的像素减去暗电流值来生成暗电流补偿图像的示例,其中暗电流值是基于未曝光SPAD像素的运行时传感器数据确定的;

图12和图13示出了描绘与补偿SPAD影像中的暗电流相关联的动作的示例流程图;

图14示出了包括滤色器的SPAD阵列的示例SPAD像素;

图15示出了使用HMD的滤色SPAD阵列在低光环境中捕获彩色对象的图像帧的示例;

图16示出了使用SPAD阵列获得彩色图像的示例处理管线;

图17示出了通过在去马赛克之前对图像帧执行时间滤波来生成滤波图像的示例;

图18A示出了对连续捕获的图像帧进行解复用以在多个时间点生成特定于颜色的图像帧的示例;

图18B示出了通过使用与不同时间点相关联的特定于颜色的图像帧执行时间滤波来生成滤波的特定于颜色的图像帧的示例;

图18C示出了复用滤波的特定于颜色的图像帧以生成滤波图像的示例;

图19示出了在去马赛克之前通过对图像帧执行双边滤波来生成滤波图像的示例;

图20示出了对图像帧进行解复用以生成特定于颜色的图像帧、通过对特定于颜色的图像帧执行空间滤波来生成滤波的特定于颜色的图像帧、以及对滤波的特定于颜色的图像帧进行复用以生成滤波图像的示例;以及

图21和图22示出了描绘与使用SPAD获得彩色影像相关联的动作的示例流程图。

具体实施方式

所公开的实施例总体涉及用于补偿单光子雪崩二极管(SPAD)影像中的暗电流的系统、方法和设备。

技术优势改进和实际应用示例

鉴于本公开,本领域技术人员将认识到,所公开的实施例中的至少一些可以被实现以解决与至少一些常规图像采集技术相关联的各种缺点。以下部分概述了所公开的实施例提供的一些示例改进和/或实际应用。然而,应当意识到,以下仅是示例并且本文描述的实施例决不限于本文讨论的示例改进。

本文描述的技术可以促进相对于用于SPAD图像采集(包括彩色图像采集)的传统系统、设备和/或方法的许多优点,特别是对于低光条件下的成像和/或对于在图像捕获期间经历运动的设备(例如,HMD)的成像。

首先,SPAD信号的二值化有效地消除了读取噪声,从而与传统的CMOS和/或CCD传感器相比改善了SPAD图像传感器阵列的信噪比。因此,由于SPAD信号的二值化,可以以高帧速率(例如,90Hz或更高,例如120Hz或甚至240Hz)读出SPAD信号,而不会导致信号受读取噪声支配,甚至对于在弱光环境下捕获少量光子的信号也是如此。

鉴于前述内容,可以使用SPAD阵列以高帧速率执行多次曝光(和读出)操作以生成单独的部分图像帧,并且这些图像帧可以在时间上彼此滤波。单独的部分图像帧可以使用运动数据来对准并组合(例如,通过平均或其他滤波)以形成单个合成图像。在这方面,可以使用先前时间点图像数据以时间滤波方式(例如,具有持久性)来获得SPAD图像,以提高当前时间点图像数据的质量。相反,尝试利用以高帧速率捕获的多个图像帧来使用传统的CMOS或CCD相机形成单个合成图像将导致信号受读取噪声支配,特别是在低光成像条件下。

与使用SPAD进行图像采集相关联的另一个挑战是暗电流带来的信号噪声。暗电流(有时称为反向偏置漏电流)是指即使没有光子进入光敏器件(例如SPAD)时也会流过SPAD的小电流。暗电流可以由热感应或由晶体学和/或制造不规则性和/或缺陷引起。

在SPAD中,即使在SPAD未检测到光子时,暗电流也会导致在耗尽区中生成电子空穴对并可以触发雪崩事件。暗电流引起的雪崩事件通常被计为检测到的光子,这可能导致SPAD的二进制输出包含错误计数(或“暗计数”)。在SPAD影像中,暗计数可能导致分配给至少某些SPAD像素的强度值不准确地升高,这可能会向SPAD影像添加噪声。在一些情况下,在低光条件下成像时,暗计数的影响非常突出,这导致高频噪声,从而降低用户体验。

因此,所公开的技术可以通过从运行时捕获的SPAD图像中减去暗电流SPAD图像来促进暗电流补偿。作为校准步骤的一部分,可以通过在阻挡或遮挡SPAD传感器的同时捕获一个或多个SPAD图像来获得暗电流图像。暗电流图像可以指示哪些SPAD像素生成暗计数和/或由不同SPAD像素生成的暗计数的数量。因此,暗电流图像可用于从运行时捕获的SPAD影像中减去暗计数,以补偿SPAD传感器中暗电流的影响。这种减法可以减少SPAD影像中存在的噪声量,从而改善用户体验。

在时间滤波被包括在用于生成SPAD影像的处理管线中的情况下,已经发现在执行暗电流补偿之前执行时间滤波是有利的。换句话说,已经发现对时间滤波的图像执行暗电流补偿是有利的,而不是对暗电流补偿的图像执行时间滤波。例如,由于为图像存储的强度值截断为零(例如,不存储负强度值),因此在执行时间滤波之前执行暗电流减法可能会产生朝向较大强度值的偏差。例如,在暗电流图像为SPAD像素存储比SPAD像素在运行时检测到的强度值更高的强度值时,可能会发生这种朝向更高强度值的偏差。在这种情况下,减去操作将使SPAD像素的强度值为零,但是较高暗电流强度值和较低运行时强度值之间的进一步差异将丢失。因此,如果随后执行时间滤波,则SPAD像素的强度值可能高于有效去除暗计数所需的强度值。

因此,在一些情况下,可以以特定顺序执行时间滤波和暗电流补偿(首先发生时间滤波)以促进使用SPAD的改进图像采集(例如,具有减少的噪声),特别是对于低光条件下的成像。也就是说,在一些情况下,在时间滤波之前执行暗电流补偿。

额外的挑战与使用SPAD采集彩色图像相关联,特别是在低光成像条件下。例如,为了捕获彩色图像,滤色器以图案(例如,拜耳图案或其他类型的图案)放置在SPAD像素(红色、绿色、蓝色(RGB)滤色器或其他类型的滤波器)上以收集不同波长的光来生成彩色图像的图像像素的颜色值。为了生成颜色值,传统系统获取原始图像数据(例如,雪崩事件的每像素计数,或基于雪崩事件计数的每像素强度值),然后对原始图像数据执行去马赛克操作。去马赛克涉及为图像传感器的每个图像感测像素生成(例如,通过插值)每像素颜色值(例如,RGB值)(尽管每个图像感测像素通常包括仅用于位于其上的单个颜色通道的滤波器)。在一些情况下,去马赛克可以允许彩色图像匹配图像传感器的分辨率是优选的,相对于为每个滤色图像感测像素簇(例如,拜耳图案中的每个2x2组红色像素、绿色像素、绿色像素和蓝色像素)生成单个颜色值(例如,RGB值)而言。后一种方法导致彩色图像相对于图像传感器的下采样或缩小。

在低光成像条件下,滤色SPAD传感器捕获的原始图像数据通常包含明显的噪声。此外,去马赛克操作与向处理后的图像添加噪声相关联,这进一步加剧了使用SPADS在低光条件下执行彩色成像时的噪声问题。

尽管时间和空间滤波操作通常可以减少SPAD影像中的噪声,但在许多情况下,此类技术不太适合用于减少去马赛克SPAD影像中的噪声。例如,经由去马赛克添加到图像数据中的噪声通常会降低此类滤波操作的有效性,以改善使用SPAD捕获的彩色影像。

因此,所公开的技术可以通过对使用其上放置有滤色器的SPADS捕获的原始图像数据执行滤波操作(例如,时间滤波和/或空间滤波)来促进减少使用SPADS获取的彩色图像中的噪声。根据本公开,对原始图像数据进行滤波以生成滤波图像,并且随后对滤波图像(而不是对原始图像数据)执行去马赛克。通过在一个或多个滤波操作之后执行去马赛克,本公开的实施例避免在执行滤波操作之前向原始图像数据进一步添加噪声(例如,作为去马赛克的结果),从而提高由滤波操作促进的益处并改进使用SPAD的彩色图像采集。

所公开的实施例还扩展到以应对与SPAD传感器的不同SPAD像素相关联的不同滤色器的方式执行滤波操作(例如,时间和/或空间滤波)。例如,如上所述,时间滤波可以包括对准连续获取的图像帧以及将对准的图像像素一起滤波以生成最终图像。然而,对于去马赛克图像,一起滤波的不同图像像素可能与不同的颜色通道相关联(例如,其中大量运动与连续采集的图像相关联),这可能会扭曲输出图像内的颜色和/或强度。此外,空间滤波可能导致不同颜色通道的相邻像素一起被滤波,这可能会扭曲输出图像内的颜色和/或强度。

为了解决这些问题,可以对使用滤色SPAD捕获的原始图像数据进行解复用,以将图像数据分离成与由SPAD的滤色器表示的不同颜色通道相关联的单独图像。然后可以对与不同颜色通道相关联的单独图像执行单独的滤波操作(例如,时间和/或空间滤波操作),并且在滤波之后,可以将单独的图像重新组合(例如,复用)成单个图像,并且随后进行去马赛克以提供最终的彩色图像。

刚刚描述了所公开的实施例的各种高级特征和益处中的一些,现在将注意力转向图1至图22。这些图示出了与所公开的实施例相关的各种概念表示、架构、方法和支持说明。

用于SPAD影像中暗电流补偿的示例系统和技术

现在关注图1,其示出了示例系统100,示例系统100可以包括或用于实现一个或多个所公开的实施例。图1将系统100描绘为头戴式显示器(HMD),其被配置为放置在用户的头部上方以显示供用户的眼睛观看的虚拟内容。这样的HMD可以包括增强现实(AR)系统、虚拟现实(VR)系统和/或任何其他类型的HMD。尽管本公开在至少一些方面集中于被实现为HMD的系统100,但是应当注意,本文描述的技术可以使用其他类型的系统/设备来实现,而没有限制。

图1示出了系统100的各种示例组件。例如,图1示出了一种实现方式,其中系统包括处理器102、存储装置104、传感器110、I/O系统116和通信系统118。尽管图1将系统100示出为包括特定组件,但鉴于本公开,人们将意识到,系统100可以包括任何数量的附加或替代组件。

处理器102可以包括一组或多组电子电路,其包括任何数量的逻辑单元、寄存器和/或控制单元以促进计算机可读指令(例如,形成计算机程序的指令)的执行。这样的计算机可读指令可以存储在存储装置104内。存储装置104可以包括物理系统存储器并且可以是易失性的、非易失性的或其某种组合。此外,存储装置104可以包括本地存储装置、远程存储装置(例如,可经由通信系统116或其他方式访问)或其某种组合。下文将提供与处理器(例如,处理器102)和计算机存储介质(例如,存储装置104)相关的附加细节。

在一些实施方式中,处理器102可包括或可配置为执行软件和/或硬件组件的任何组合,所述软件和/或硬件组件可操作以促进使用机器学习模型或其他基于人工智能的结构/架构的处理。例如,处理器102可以包括和/或利用可操作来执行功能块和/或处理层的硬件组件或计算机可执行指令,所述功能块和/或处理层以非限制性示例的方式配置为单层神经网络、前馈神经网络、径向基函数网络、深度前馈网络、循环神经网络、长短期记忆(LSTM)网络、门控循环单元、自动编码器神经网络、变分自动编码器、去噪自动编码器、稀疏自动编码器、马尔可夫链、HopfielD神经网络、玻尔兹曼机网络、受限玻尔兹曼机网络、深度信念网络、深度卷积网络(或卷积神经网络)、反卷积神经网络、深度卷积逆图形网络、生成对抗网络、液体状态机、极限学习机、回声状态网络、深度残差网络、Kohonen网络、支持向量机、神经图灵机和/或其他网络。

如将更详细地描述的,处理器102可以被配置为执行存储在存储装置104内的指令106以执行与使用SPAD阵列的成像相关联的某些动作。这些动作可以至少部分地依赖于以易失性或非易失性方式存储在存储装置104上的数据108(例如,雪崩事件计数或跟踪等)。

在一些情况下,动作可以至少部分地依赖于用于从远程系统120接收数据的通信系统118,远程系统120可以包括例如单独的系统或计算设备、传感器和/或其他。通信系统120可以包括可操作以促进系统内组件/设备之间和/或与系统外组件/设备之间的通信的软件或硬件组件的任意组合。例如,通信系统120可以包括端口、总线或用于与其他设备/组件通信的其他物理连接装置。附加地或替代地,通信系统120可包括可操作以通过任何合适的通信信道(例如,作为非限制性示例,蓝牙、超宽带、WLAN、红外通信和/或其他)与外部系统和/或设备进行无线通信的系统/组件。

图1示出了系统100可以包括传感器110或与传感器110通信。传感器110可以包括用于捕获或测量表示可感知现象的数据的任何设备。作为非限制性示例,传感器110可以包括一个或多个图像传感器、麦克风、温度计、气压计、磁力计、加速度计、陀螺仪和/或其他传感器。

图1还示出了传感器110包括SPAD阵列112。如图1所示,SPAD阵列112包括SPAD像素122的布置,每个SPAD像素122被配置为响应于感测到光子而促进雪崩事件,如上所述。SPAD阵列112可以在系统100(例如,MR HMD)上实现以促进用于各种目的的图像捕获(例如,促进计算机视觉任务、直通影像和/或其他)。

图1还示出了传感器110包括惯性测量单元114(IMU 114)。IMU 114可以包括任意数量的加速度计、陀螺仪和/或磁力计,以当系统100在物理空间内移动时捕获与系统100相关联的运动数据。运动数据可以包括或用于生成姿势数据,姿势数据可以描述系统100的位置和/或取向(例如,6自由度姿势)和/或位置的变化(例如,速度和/或加速度)和/或取向的变化(例如,角速度和/或角加速度)。

此外,图1示出系统100可以包括I/O系统116或与I/O系统116通信。I/O系统116可以包括任何类型的输入或输出设备,例如通过非限制性示例是触摸屏、鼠标、键盘、控制器和/或其他,但不限于此。例如,I/O系统116可以包括显示系统,该显示系统可以包括任意数量的显示面板、光学器件、激光扫描显示组件和/或其他组件。

现在关注图2,其示出了使用头戴式显示器202(HMD 202)的单光子雪崩二极管(SPAD)阵列在低光环境208中捕获对象206(例如,桌子)的图像帧210的示例。HMD 202至少在一些方面对应于上文公开的系统100。例如,HMD 202包括SPAD阵列(例如,SPAD阵列112),其包括被配置用于光子检测以捕获图像的SPAD像素。在图2所示的示例中,当在低光环境208中捕获对象206的图像帧210时,根据姿势204来定位HMD 202。可以利用HMD 202的传感器(例如,IMU114、促进同时定位和建图(SLAM)的相机,等等)来跟踪或测量姿势204。

图2示出图像帧210包括描绘对象206的噪声表示的图像数据212。在一些情况下,当在低光条件(例如,约1毫勒克斯或以下)下成像时,由于在用于捕获图像帧210的帧捕获时间段上由SPAD像素检测到的光子数量少,发生这种情况。图2还将图像帧210示出为包括暗计数214,暗计数214被描绘为散布在整个图像帧210中的高频噪声。如上所述,暗计数214可以由SPAD像素中出现的暗电流产生。以下讨论涉及可用于提供SPAD影像中的对象206的改进表示的各种技术(例如,通过减少描绘对象206的图像数据212中的噪声以及通过补偿暗计数214)。

图3示出了使用由HMD的SPAD阵列捕获的连续捕获的图像帧生成时间滤波图像的示例。具体地,图3示出了图像帧210(及其图像数据212和暗计数214),以及附加图像帧302和306(例如,由HMD 202捕获)。附加图像帧302和306中的每一个包括描绘对象206的图像数据(即,分别地,图像数据304和308)并且包括暗计数。图3还指示不同的图像帧210、302和306是在不同的时间点捕获的。具体地,图3指示图像帧302在时间点310捕获,图像帧306在时间点312捕获,并且图像帧210在时间点314捕获。在本示例中,时间点310在时间上先于时间点312和314,并且时间点312在时间上先于时间点314。

如上所述,连续捕获的图像帧的图像数据可以被组合以形成合成图像,以促进在图像帧内捕获的对象的充分曝光(例如,特别是在低光条件下)。因此,图3示出了对图像帧302、306和210执行的时间滤波316。时间滤波316包括对不同图像帧302、306和210的对应图像像素进行组合以生成输出图像(即,时间滤波图像318)的像素值。不同图像帧中的“对应图像像素”是捕获所捕获环境的相同部分的不同图像帧的图像像素。

不同图像帧302、306和210的对应图像像素可以以各种方式组合或合成,例如通过求和、求平均(例如,加权平均)、阿尔法混合和/或其他,并且组合对应的图像像素的方式/参数对于不同的像素区域可以不同和/或可以基于各种因素(例如,信号强度、运动量、在捕获的场景中检测到的运动等)动态地确定。

在一些情况下,图像帧302、306和210以彼此至少稍微不同的姿势来捕获对象206。例如,HMD 202可以从与姿势204和/或彼此至少稍微不同的姿势来捕获图像帧302和306。因此,在一些情况下,为了对准不同图像帧302、306、210的对应像素,时间滤波316可以利用运动数据324,运动数据324可以包括或用于生成姿势数据,姿势数据描述在捕获图像帧302、306和210期间的HMD 202的位置和/或取向(例如,6个自由度姿势)和/或位置变化(例如,速度和/或加速度)和/或取向变化(例如,角速度和/或角加速度)。

运动数据324可用于将图像帧302、306和210彼此对准。例如,系统可以使用运动数据324将图像帧302和306与图像帧210的姿势204对准,从而生成在空间上彼此对准的对准的图像帧(例如,看起来好像它们都是从具有相同的捕获视角的姿势204捕获的)。在这方面,时间滤波316可以包括运动补偿时间滤波。

在一些情况下,时间滤波316附加地或替代地利用光流估计来对准图像帧302、306和210,以促进图像合成从而生成合成图像(即,时间滤波图像318)。例如,在一些情况下,系统对连续捕获的图像帧进行下采样并执行光流分析以获得用于对准图像帧的像素的矢量。此外,虽然本公开在至少一些方面集中于利用时间上在与目标时间点相关联的图像帧之前的图像帧来生成与目标时间点相关联的合成图像的时间滤波操作,但是时间滤波操作可以附加地或替代地利用时间上在与目标时间点相关联的图像帧之后的至少一些图像帧来生成与目标时间点相关联的合成图像。

图3示出了时间滤波316基于图像帧302、306和210的合成图像数据304、308和212(例如,在运动补偿之后)来生成时间滤波图像318。在图3所示的示例中,时间滤波图像318图像数据320,图像数据320包括表示具有减少的噪声和改善的信号的对象206(例如,分别相对于图像帧302、306和210的图像数据304、308、212中的对象206的各个表示)。然而,图3示出了时间滤波图像318仍然包括暗计数322,暗计数322对图像质量产生负面影响。

因此,本公开的实施例提供了用于促进改进的SPAD影像的暗计数补偿技术。图4示出了使用SPAD传感器402捕获暗电流图像帧406的示例。在本示例中,SPAD传感器402是HMD202的一部分并且包括具有多个SPAD像素的SPAD阵列。图4示出了遮挡或遮蔽SPAD传感器402的SPAD像素的盖404。盖404可以包括阻挡任何期望波长范围(例如,可见光谱、近IR光谱、IR光谱和/或其他)中的光的任何材料或设备。

图4示出了其中暗电流图像帧406被捕获的示例,其中盖404被定位为防止光子到达SPAD传感器402的SPAD阵列的SPAD像素。暗电流图像帧406可以作为(例如,在捕获图像帧302、306和/或210之前)为在用户应用中使用HMD 202做准备而执行的校准步骤的一部分获得。暗电流图像帧406可包括在被盖404遮蔽时由SPAD传感器402捕获的单个图像帧,或者暗电流图像帧406可基于在被盖404遮蔽时由SPAD传感器402捕获的任何数量的图像帧来生成。例如,暗电流图像帧406可以通过在被盖404阻挡时对由SPAD传感器402捕获的任意数量的图像帧的每像素强度值进行时间平均来生成。

从图4明显看出,暗电流图像帧406包括暗计数,并且因此包括指示SPAD传感器402的哪些SPAD像素与检测雪崩事件相关联而未暴露于光子的数据。该信息可用于补偿运行时捕获的图像帧中的暗电流。

图5示出了使用暗电流图像帧来生成暗电流补偿图像的示例。具体地,图5示出了时间滤波图像318(上面参考图3讨论的)以及被提供作为减法502的输入的暗电流图像帧406。减法502可以包括从在每像素基础上的时间滤波图像318的强度值中减去暗电流图像帧406的强度值。图5示出了作为减法502的输出而提供的暗电流补偿图像504。从图5明显看出,鉴于基于暗电流图像帧406的减法502,暗电流补偿图像504实质上省略了时间滤波图像318中存在的暗计数。因此,可以改善SPAD影像中的暗电流的效果,特别是在低光条件下捕获的SPAD影像。

图2至图5已经关注于暗电流补偿的简单示例,该示例利用在受控条件下捕获的暗电流图像帧(例如,使用截止滤波器模糊SPAD传感器的SPAD像素)。然而,在一些情况下,在捕获暗电流图像帧时存在的环境条件不同于在运行时捕获SPAD影像时存在的环境条件。由于暗电流带来的图像噪声的严重程度可能随环境条件(例如温度)而变化,因此暗电流图像帧捕获条件与运行时图像帧捕获条件之间的差异可能会导致系统对SPAD影像中的暗计数补偿不足或过度补偿。

因此,本公开的至少一些实现方式考虑了暗电流图像帧捕获条件与运行时图像帧捕获条件之间的差异。图6示出了SPAD传感器602,其对应于图4的SPAD传感器402。SPAD传感器602类似地被盖604遮蔽,盖604防止光子到达SPAD传感器602的SPAD像素。图6示出了在被盖604阻挡时(例如,在校准期间)使用SPAD传感器602捕获的多个不同暗电流图像帧606、608和610。图6示出了不同的暗电流图像帧606、608、610中的每一个与不同的温度值(或温度值的范围)相关联。例如,可以在不同的温度条件下捕获不同的暗电流图像帧,使得可以在不同的运行温度条件下不同的暗电流图像可用于促进暗电流补偿。在图6所示的示例中,暗电流图像帧606与温度612相关联,暗电流图像帧608与温度614相关联,并且暗电流图像帧610与温度616相关联。

图7示出了使用基于运行时的温度条件选择的暗电流图像来生成暗电流补偿图像的示例。具体地,图7示出了时间滤波图像702,根据本示例,该时间滤波图像702在上文讨论的低光环境208中捕获对象206并且由HMD 202根据上文参考图2至图3讨论的原理来捕获(例如,利用基于连续捕获的图像帧的时间滤波)。时间滤波图像702是在运行时获取的(例如,在捕获图6的暗电流图像帧之后)。

在图7的示例中,时间滤波图像702与温度704相关联,温度704可以对应于捕获用于生成时间滤波图像702的一个或多个图像帧而存在的环境温度和/或设备温度。在一些情况下,使用HMD202的传感器(例如,传感器110)捕获温度704。

图7还示出了上面参考图6讨论的暗电流图像帧606、608和610,以及它们各自的温度612、614和616。图7概念性地描绘了系统可以选择暗电流图像帧以用于基于与在运行时获得的时间滤波图像702相关联的温度704的暗电流补偿。例如,图7示出了在时间滤波图像702的温度704和暗电流图像帧610的温度616之间延伸的虚线,其指示系统可以确定时间滤波图像702的温度704与暗电流图像帧610的温度616是最相似的(分别相对于其他可用暗电流图像帧606和608的温度612和614)。

基于该选择,图7示出了被提供作为减法706(其在功能上对应于上面参考图5讨论的减法502)的输入的时间滤波图像702和暗电流图像帧610。如图7所示,减法706提供暗电流补偿图像708,其实质上省略了时间滤波图像中存在的暗计数(例如,使用暗电流图像帧610将它们减去)。因此,系统可以基于测量的运行时温度从可用的暗电流图像帧(每个与相应的温度或温度范围相关联)中智能地选择。

尽管前述示例关注于使用温度作为选择暗电流图像帧以用于从时间滤波图像中减去暗计数的基础,但是在一些情况下,温度可以用于生成缩放或内插的暗电流图像以促进暗电流补偿。例如,在一些情况下,运行时温度不完全匹配与先前捕获的暗电流图像帧相关联的温度值的特定范围或不在与先前捕获的暗电流图像帧相关联的温度值的特定范围内。为了适应这种情况,运行时温度和与暗电流图像帧相关联的一个或多个温度可以用于生成暗电流因子,该暗电流因子可以包括运行时温度和暗电流图像帧温度的比率(例如,其中运行时温度为30℃并且与暗电流图像帧相关联的最接近温度为25℃,暗电流因子可以为1.2)。然后,系统可以使用暗电流因子来生成缩放的暗电流图像(例如,通过将暗电流因子应用到最接近温度暗电流图像帧的每像素强度值)并且使用缩放的暗电流图像帧以促进暗电流补偿(例如,通过如上所述的减法)。同样地,与运行时图像和一个或多个暗电流图像帧相关联的温度值可用于生成内插或外推暗电流图像帧以用于暗电流补偿(例如,其中运行时温度位于与不同暗电流图像相关联的两个温度值之间)。

因此,温度可以用作选择或生成暗电流图像帧以用于促进暗电流补偿的因子(例如,“暗电流因子”)。用于选择或生成暗电流图像帧以促进暗电流补偿的附加或替代暗电流因子在本公开的范围内。在一些实现方式中,可以以对于显式温度测量不可知的方式选择或生成暗电流图像帧,这可以有利地消除对运行时温度测量/传感器的需要。

图8示出了示例性SPAD传感器802,其可以是HMD 202的一部分并且可以在至少一些方面对应于上文所讨论的SPAD传感器602、402。例如,SPAD传感器802类似地被盖804遮蔽以防止光子在捕获暗电流图像帧806时(例如,在校准步骤期间)到达SPAD传感器802的SPAD像素。暗电流图像帧806包括暗计数,类似于上面讨论的暗电流图像帧。

图8所示的示例概念性地描绘了捕获暗电流图像帧806的一部分的SPAD传感器802的SPAD像素的未曝光区域808(由定义暗电流图像帧806的外边界部分的虚线指示)。尽管在暗电流图像帧806的捕获期间SPAD传感器802的所有SPAD像素都被盖804遮盖,但是在运行时捕获图像帧时SPAD像素的未曝光区域808也被遮蔽。例如,图8示出了盖812的示例表示,盖812可以在运行时使用以防止光子到达SPAD传感器802的SPAD像素的未曝光区域808。提供了盖812的特定结构和/或配置仅作为示例,并且盖可以采用任何形式并定位在SPAD传感器802的任何期望部分处以防止光子到达SPAD像素的未曝光区域808。

从图8可以明显看出,未曝光区域808内的至少一些SPAD像素检测暗电流图像帧806的暗计数,而不检测来自任何捕获环境的光子计数。在一些情况下,在运行时使用盖812的情况下,未曝光区域808内的SPAD像素继续检测运行时图像的暗计数,而不检测来自任何捕获的环境的光子计数。如下文将更详细描述的,可以利用在校准期间(例如,在捕获暗电流图像帧806时)和在运行时间期间在SPAD像素的未曝光区域808内检测到的暗计数来促进暗电流补偿(不依赖于显式的温度测量)。

图9示出了运行时的SPAD传感器802,其中盖812定位在SPAD传感器802上以防止光子到达未曝光区域808的SPAD像素。图9示出了从由SPAD传感器802在运行时捕获的图像帧生成的示例时间滤波图像902。如图9所示,时间滤波图像902包括使用未曝光区域808内的SPAD像素获取的图像数据(也经由与时间滤波图像902相关联的虚线框来标记)。在图9所示的示例中,由未曝光区域808内的SPAD像素在运行时检测到的雪崩事件(例如,暗计数)的数量被用来确定暗电流值904。暗电流值904可以包括在运行时由未曝光区域808内的SPAD像素检测到的暗计数的任何量化。例如,暗电流值904可以包括未曝光区域808内的SPAD像素在运行时检测到的暗计数的总和、平均值或其他度量。

图9类似地示出了在捕获暗电流图像帧806时基于由未曝光区域808内的SPAD像素检测到的暗计数而检测的暗电流值906(例如,在校准期间在未曝光区域808内检测到的暗计数的总和、平均值或其他度量)。系统可以利用基于运行时影像(例如,时间滤波图像)获得的暗电流值904和基于校准影像(例如,暗电流图像帧806)获得的暗电流值906来生成暗电流因子908。暗电流因子908可以包括暗电流值904与暗电流值906之间的差异或相似性的任何表示,例如暗电流值904和暗电流值906的比率。作为简化示例,其中运行时暗电流值904包括平均强度2并且暗电流值906包括平均强度1,暗电流因子908可以是2。

如上所述,运行时捕获的图像中存在的暗电流(以及由暗计数产生的噪声)的量可以取决于运行时的环境条件(例如,温度)。因此,暗电流值904和暗电流因子908可以取决于运行时的环境条件。因此,暗电流因子908可用于缩放先前捕获的暗电流图像帧以应对运行时的环境条件(例如,捕获时间滤波的图像902而存在的环境条件)。图9描绘了缩放的暗电流图像帧910,其可以通过将暗电流因子908应用到先前捕获的暗电流图像帧(例如,暗电流图像帧806)来生成。例如,暗电流因子908可以乘以与暗电流图像帧相关联的每像素强度值,以生成缩放的暗电流图像帧910的像素强度值。

如图9所示,缩放的暗电流图像帧910和时间滤波图像902可以用作减法912的输入以生成暗电流补偿图像914。减法912总体上对应于上文讨论的减法操作502和706,并且,在图9所示的示例中,暗电流补偿图像914实质上省略了与时间滤波图像902相关联的暗计数噪声。

可以针对整个未曝光区域(例如,未曝光区域808)确定暗电流值和/或暗电流因子,或者可以针对未曝光区域(例如,未曝光区域的SPAD像素的行、列和/或块)的不同像素子集确定多个暗电流值和/或暗电流因子。因此,可以使用不同的暗电流因子来缩放暗电流图像帧的不同区域,以生成缩放的暗电流图像帧。在这方面,暗电流值、暗电流因子和/或暗电流图像帧可以包括多个组成成分或区域或与多个组成成分或区域相关联。

尽管前述示例在至少一些方面集中于形成SPAD传感器的SPAD像素的外边界部分的SPAD像素的未曝光区域808,但是其他配置也在本公开的范围内。未曝光区域可以包括任何合适的尺寸和/或形状。此外,鉴于本公开,人们将意识到,可以从输出影像(例如,显示给一个或多个用户的影像)中省略或排除未曝光区域。

尽管如本文所述,暗电流补偿可以有效地从SPAD影像中去除暗计数噪声,但是由暗计数产生的至少一些噪声可能保留在暗电流补偿影像中。图10示出了可以对暗电流补偿图像执行以进一步改善暗计数噪声的示例附加操作。具体地,图10示出了可以对暗电流补偿图像914执行的像素合并1002和中值滤波1004。

像素合并1002可以包括将原始图像(例如,暗电流补偿图像914)中的像素部分减少为输出图像中的单个像素。例如,在一些情况下,输出图像中的每个像素都由原始图像的像素定义:

p

其中p

在一些实现方式中,像素合并1002利用平均滤波器以基于原始图像中的像素的一部分的平均值来定义输出图像的像素。在沿每个轴按因子2进行像素合并的一个示例中,输出图像中的每个像素由原始图像中2x2像素部分的平均值定义:

其中p

中值滤波1004可以包括用相邻像素的中值像素值来修改每个像素值(例如,在以每个被修改的像素为中心的3×3像素窗口内)。因为暗计数通常导致高频噪声,所以中值滤波1004可以平滑或去除在本文讨论的暗电流补偿操作之后剩余的暗计数。

在一些实现方式中,在不使用暗电流图像帧的情况下执行暗电流补偿。例如,图11示出了上面参考图9讨论的时间滤波图像902,其包括由SPAD像素的未曝光区域808捕获的图像数据。图11还示出了基于由未曝光区域808中的SPAD像素在运行时检测到的雪崩事件而获得的暗电流值904。图11示出了作为减法1102的输入提供的暗电流值904和时间滤波图像902以生成暗电流补偿图像1108,指示可以直接从时间滤波图像902的强度值中减去暗电流值904,而无需首先用于修改暗电流图像帧以促进减法。

可以从时间滤波图像902的所有强度值中减去暗电流值904,或者在一些情况下,该减法可以针对由已知产生暗电流的SPAD像素获得的强度值(例如,基于先前的校准操作)。例如,图11示出了暗电流图像帧1104,其可以用于确定被确定用于生成暗电流的SPAD像素的暗电流像素坐标1106。这些暗电流像素坐标1106可用于仅从由已知产生暗电流的SPAD像素获得的强度值中减去暗电流值904,同时避免从其他强度值中减去暗电流值904。

暗电流补偿图像可以用于各种目的。例如,在一些实现方式中,HMD 202(或另一系统)利用暗电流补偿图像1108来促进立体深度计算、同时定位和映射、对象跟踪和/或其他。例如,HMD可以生成视差校正暗电流补偿图像(例如,通过使用深度信息执行视差重投影,其本身可以使用暗电流补偿图像来生成)并且显示视差校正暗电流补偿图像以促进直通成像。

SPAD影像中暗电流补偿的示例方法

下面的讨论现在涉及可以由所公开的系统执行的多种方法和方法动作。尽管方法动作是按一定顺序讨论的,并且在流程图中说明为按特定顺序发生的,但除非特别说明,否则不需要特定的顺序,或者因为一个动作依赖于在执行该动作之前完成的另一个动作而需要特定的顺序。人们将意识到,本公开的某些实施例可以省略本文描述的一项或多项动作。

图12和图13分别示出了示例流程图1200和1300,其描绘了与补偿SPAD影像中的暗电流相关联的动作。对流程图中表示的各种动作的讨论包括对参照图1更详细描述的各种硬件组件的引用。

图12的流程图1200的动作1202包括利用SPAD阵列捕获图像帧。在一些情况下,动作1202由利用处理器102、存储装置104、传感器110(例如,SPAD阵列112)、输入/输出系统116、通信系统118、和/或其他组件的系统来执行。在一些实现方式中,SPAD阵列的多个SPAD像素包括在捕获暗电流图像帧期间和在捕获图像帧期间被遮盖的多个未曝光SPAD像素。

流程图1200的动作1204包括通过使用图像帧和先前图像帧执行时间滤波操作来生成时间滤波图像。在一些情况下,动作1204由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。在一些实现方式中,在时间上先于与动作1202的图像帧相关联的时间点的时间点由SPAD阵列捕获先前图像帧。此外,在一些实例中,时间滤波操作包括(i)通过使用与SPAD阵列相关联的运动数据来生成对准的先前图像,从而将先前图像帧与该图像帧在空间上对准,以及(ii)将该图像帧与对准的先前图像帧合成。在一些实现方式中,时间滤波操作基于光流估计,该光流估计基于先前图像帧和图像帧生成。

流程图1200的动作1206包括获得指示与图像帧相关联的暗电流量的暗电流因子。在一些情况下,动作1206由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。在一些实现方式中,暗电流因子基于与图像帧的捕获相关联地检测到的运行时温度,使得基于运行时温度从多个暗电流图像帧中选择暗电流图像帧。在一些实现方式中,暗电流因子基于(i)在捕获暗电流图像帧期间由多个未曝光SPAD像素检测到的雪崩事件的数量,以及(ii)在捕获图像帧期间由多个未曝光SPAD像素检测到的雪崩事件的数量。例如,可以通过比较(i)在捕获暗电流图像帧期间由多个未曝光SPAD像素检测到的平均强度和(ii)在捕获图像帧期间由多个未曝光SPAD像素检测到的平均强度来确定暗电流因子。在一些情况下,暗电流因子包括多个暗电流因子分量。例如,在一些情况下,每个暗电流因子分量与多个未曝光SPAD像素中的未曝光SPAD像素的相应子集相关联。

流程图1200的动作1208包括获得暗电流图像帧。在一些情况下,动作1208由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。在一些情况下,暗电流图像帧包括指示多个SPAD像素中检测到雪崩事件而没有检测到对应光子的一个或多个SPAD像素的数据。在一些实现方式中,暗电流图像帧是在SPAD阵列被遮盖以防止光子到达SPAD阵列时捕获的多个暗电流图像帧之一。在一些实现方式中,暗电流图像帧是基于动作1206的暗电流因子而从多个暗电流图像帧中选择。在一些实现方式中,多个暗电流图像帧中的每一个与不同的温度或温度范围相关联。在一些情况下,通过基于运行时温度和多个暗电流图像帧中的至少两个暗电流图像帧生成内插暗电流图像帧来获得暗电流图像帧。

流程图1200的动作1210包括通过基于暗电流图像帧对时间滤波图像执行减法操作来生成暗电流补偿图像。在一些情况下,动作1210由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。在一些实现方式中,减法操作包括(i)通过使用暗电流因子修改暗电流图像帧来生成缩放的暗电流图像帧,(ii)生成缩放的暗电流图像帧包括使用多个暗电流因子分量中的每一个来修改暗电流图像帧的对应区域,以及(iii)从图像帧中减去缩放的暗电流图像帧。

流程图1200的动作1212包括对暗电流补偿图像执行像素合并操作。在一些情况下,动作1212由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

流程图1200的动作1214包括将中值滤波器应用于暗电流补偿图像。在一些情况下,动作1214由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

流程图1200的动作1216包括生成视差校正暗电流补偿图像。在一些情况下,动作1216由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

流程图1200的动作1218包括在显示器上显示视差校正的彩色图像。在一些情况下,动作1218由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

图13的流程图1300的动作1302包括:在从多个SPAD像素中遮挡多个未曝光SPAD像素的同时,利用SPAD阵列捕获图像帧。在一些情况下,动作1302由利用处理器102、存储装置104、传感器110(例如,SPAD阵列112)、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

流程图1300的动作1304包括识别与多个未曝光SPAD像素相对应的图像帧的区域,该多个未曝光SPAD像素在图像帧的捕获期间被遮挡以防止光子到达多个未曝光SPAD像素。在一些情况下,动作1304由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

流程图1300的动作1306包括基于在暗电流图像帧的捕获期间由多个未曝光SPAD像素检测到的光子的量来确定暗电流值。在一些情况下,动作1306由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。在一些情况下,暗电流值被确定为基于在捕获图像帧期间由多个未曝光SPAD像素检测到的光子的数量的平均强度。

流程图1300的动作1308包括通过基于暗电流值对图像帧执行减法操作来生成暗电流补偿图像。在一些情况下,动作1308由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。在一些实现方式中,减法操作包括从被确定为基于先前执行的校准操作生成暗电流的多个SPAD像素中的一个或多个SPAD像素减去暗电流值,同时避免从多个SPAD像素中的与一个或多个SPAD像素分离的其他SPAD像素减去暗电流值。

使用SPAD获取彩色影像的示例系统和技术

现在关注图14,其示出了SPAD阵列(例如,SPAD阵列112)的SPAD 1402的示例实现方式。SPAD阵列可以包括任何数量的SPAD 1402,如图14中的椭圆所示。在图14所示的示例中,SPAD各自包括位于其上方(例如,位于SPAD 1402的光子感测部分上方)的相应滤色器。图14示出了以拜耳(Bayer)图案定位在SPAD 1402上方的滤色器,特别是具有对角布置的绿色滤光器1406和1408以及具有对角布置的红色滤光器1404和蓝色滤光器1410。该图案可以在SPAD阵列上重复以形成滤色SPAD像素的马赛克。尽管本文公开的示例在至少一些方面集中于以拜耳图案布置的SPAD阵列的滤色SPAD 1402,但是其他图案也在本公开的范围内,例如作为非限制性示例,CYGM(青色、黄色、绿色、品红色)、RGBE(红色、绿色、蓝色、翡翠色)、Foveon X3(例如,垂直排列的红色、绿色、蓝色图案)、全色单元图案(例如,RGBW(红色、绿色、蓝色、白色)、CMYW(青色、品红色、黄色、白色)、Fujifilm EXR、Fujifilm X-Trans、QuadBayer))和/或其他。

图15示出了使用HMD的滤色SPAD阵列在低光环境中捕获彩色对象的图像帧的示例。具体地,图15示出了HMD 1502,其在至少一些方面对应于上文描述的系统100。例如,HMD可以包括SPAD阵列(例如,SPAD阵列112),其包括具有以Bayer图案布置的滤色器的SPAD(例如,SPAD1402)(例如,如图14所示)。在图15所示的示例中,HMD 1502根据姿势1504定位,同时在低光环境1512中捕获红色对象1506(例如,桌子)、绿色对象1508(例如,盒子)和蓝色对象1510(例如,罐头)的图像帧1514。姿势1504可以利用HMD 1502的传感器(例如,IMU 114、促进SLAM的相机等)来跟踪或测量。

图15示出了图像帧1514包括由HMD 1502的滤色SPAD捕获的图像数据1516。在传统系统下,图像帧1514的图像数据1516可以被去马赛克(例如,基于SPAD上的滤波器的图案)以对每个SPAD像素(或由SPAD像素捕获的图像帧1514的图像像素)内插RGB颜色值以生成彩色图像。然而,从图15可以明显看出,图像帧1514的图像数据1516提供了所捕获的对象的噪声表示,在一些情况下,这可以发生在低光条件下(例如,约1毫勒克斯或以下)成像时,该低光条件是由于在用于捕获图像帧1514的帧捕获时间段内由SPAD像素检测到的光子量少。如上所述,对包括显著噪声的图像数据执行去马赛克可能导致质量差的彩色图像。以下讨论涉及可用于减少使用滤色SPAD捕获的SPAD影像中的噪声以准备执行去马赛克来获得彩色影像的各种技术。

图16示出了用于使用SPAD阵列获取彩色图像的示例处理流程。具体地,图16示出了示例管线,其中执行图像捕获1602以生成原始图像1604(例如,类似于图像帧1514)。图16还示出了执行滤波1606以生成滤波图像1608。滤波1606可以包括执行时间滤波和/或空间滤波。下文将提供关于用于生成滤波图像以准备执行去马赛克的滤波的附加细节。在一些情况下,用于获得彩色影像的管线包括暗电流补偿1610以生成暗电流补偿图像1612(例如,如上文参考图2-13所讨论的)。

管线还可以包括伽马校正1614以生成伽马校正图像1616。伽马校正1614可以包括将输入值(例如,强度值)提高到伽马值的幂(并将输入值乘以常数)以提供输出值。伽马校正1614可以针对人类感知光和颜色的非线性方式来优化影像。伽马校正1614可以具有使暗像素显得更暗并且使亮像素显得更亮的效果。因此,如果过早执行伽马校正,则可能会降低由其他操作(例如时间滤波)提供的益处。因此,伽马校正1614可以在滤波1606之后但在去马赛克之前执行。

图16还示出了在用于生成彩色图像1620的管线的其他操作之后执行的去马赛克1618。如上所述,去马赛克可以包括对图像帧(或捕获图像帧的SPAD阵列)的每个图像像素(或SPAD像素)内插或外推颜色值(例如,RGB值)。与为每个拜耳像素块(例如,每个2x2组RGB像素)生成单个颜色值以生成彩色图像(从而导致图像分辨率损失)相比,去马赛克可以提供RGB彩色影像而不会丢失图像分辨率。然而,如上所述,去马赛克可能会增加或增强图像噪声,特别是当对已经包含噪声的图像数据执行时。因此,图16的管线示出了在滤波1606和其他图像帧准备操作之后执行去马赛克1618。

应当注意,在一些实施例中,执行少于图16所示的管线的所有操作来生成彩色影像。例如,在一些情况下,不执行暗电流补偿1610和/或伽马校正1614来生成彩色图像1620。

图17-20的讨论涉及可以对原始影像执行的滤波1606,以为去马赛克1618做准备,从而生成彩色图像1620。如上所述,滤波1606可以包括时间滤波和/或空间滤波。图17-18C的讨论涉及时间滤波,而图19和图20的讨论涉及空间滤波。

图17示出了通过对使用滤色SPAD阵列(例如,HMD 1502的滤色SPAD阵列)连续捕获的图像帧执行时间滤波来生成滤波图像的示例。具体地,图17示出了图像帧1514(及其使用滤色SPADS捕获的图像数据1516),以及附加图像帧1702(例如,由HMD 1502捕获)。附加图像帧1702包括描绘红色对象1506、绿色对象1508和蓝色对象1510的图像数据1704。与图像帧1514类似,图像帧1702可以包括由滤色SPAD捕获的原始图像,其中还没有对该原始图像进行去马赛克处理。

图17还指示不同的图像帧1514和1702是在不同的时间点捕获的。具体地,图17指示图像帧1702是在时间点1706捕获的并且图像帧1514是在时间点1708捕获的。在本示例中,时间点1706在时间上先于时间点1708。

如上所述,连续捕获的图像帧的图像数据可以被组合以形成合成图像,以促进对在图像帧内捕获的对象的充分曝光(例如,特别是在低光条件下)。因此,图17示出了对图像帧1702和1514执行时间滤波1710以生成滤波图像1714。时间滤波1710包括组合不同图像帧1702和1514的相应图像像素以生成输出图像的像素值(即,滤波图像1714)。

如上所述,不同图像帧1702、1514的相对应图像像素可以以各种方式组合或合成,例如通过求和、求平均(例如,加权平均)、阿尔法混合和/或其他,并且组合相应图像像素的方式/参数对于不同的像素区域可能不同和/或可以基于各种因素(例如,信号强度、运动量、在捕获的场景中检测到的运动等)动态地确定。

在一些情况下,图像帧1702和1514从彼此至少稍微不同的姿势捕获环境对象。例如,HMD1502可以从与姿势1504至少稍微不同的姿势捕获图像帧1702。因此,在一些情况下,为了对准不同图像帧1702和1514的对应像素,时间滤波1710可以利用运动数据1712,其可以包括或用于生成姿势数据,姿势数据描述在捕获图像帧1702和1514期间的HMD 1502的位置和/或取向(例如,6自由度姿势)和/或位置变化(例如,速度和/或加速度)和/或取向变化(例如,角速度和/或角加速度)。

运动数据1712可用于将图像帧1702和1514彼此对准。例如,系统可以使用运动数据1712将图像帧1702与图像帧1514的姿势1504对准,从而生成在空间上彼此对准的对准的图像帧(例如,看起来好像它们都是以相同的捕获视角从姿势1504捕获的)。在这方面,时间滤波1710可以包括运动补偿时间滤波。在一些情况下,时间滤波1710附加地或替代地利用光流估计来对准图像帧1702和1514。

附加地或替代地,时间滤波1710可以利用使用图像帧1514和图像帧1702(即,先前图像帧)的联合双边滤波器1718(JBLF 1718)。例如,JBLF 1718可以利用图像帧1514作为引导图像以使输出的滤波图像1714处于图像帧1514的几何形状中。举例来说,JBLF 1718可以利用三维内核(例如,3×3×2内核)以基于图像帧1514和1702两者中的相邻像素值来定义输出图像(例如,滤波图像1714)的每个像素值。在计算输出图像(例如,滤波图像1714)的中心像素的像素值时,可以将附加权重给予中心像素(例如,正在分析的用于根据内核生成输出像素的当前像素)的像素值附近的像素窗口内的相邻像素。例如,当中心像素是由红色滤波SPAD像素捕获的像素时,在计算中心像素的输出值时,JBLF 1718可以对相邻的红色滤波SPAD像素(在图像帧1702和1514两者中)的强度值给予较大的权重,并且对相邻绿色或蓝色滤波SPAD像素的强度值给予较小的权重。以此方式,JBLF 1718可以用于以应对SPAD的不同颜色通道的方式来合成图像帧1702和1514。尽管图17中未示出,但是JBLF 1718还可以利用后续时间点图像帧来生成滤波图像1714(例如,利用3×3×3内核)。

图17概念性地描绘了滤波图像1714的图像数据1716包括减少的噪声(例如,相对于图像帧1702和1514)。因此,滤波图像1714可以为经由去马赛克生成彩色图像提供优越的基础(例如,相对于图像帧1702和/或1514)。图17因此示出了对滤波图像1714执行的去马赛克1720以生成彩色图像(如上所述,可以在去马赛克1720之前对滤波图像1714执行附加操作,诸如暗电流补偿、伽马校正等)。去马赛克1720可以利用系统(例如,HMD 1502)的SPAD的滤色器图案和使用滤色SPAD像素获得的图像数据1716(即,强度值)来确定彩色图像1722的RGB数据1724。如图17所示,彩色图像1722用它们各自的颜色描绘了环境的各种对象(并且相对于用作去马赛克1720的输入的滤波图像1714没有分辨率损失)。

在一些实现运动补偿时间滤波的实现方式中,可能出现混合像素。也就是说,当运动数据(例如,运动数据1712)用于对准图像帧时,可能导致由与不同颜色通道(例如,红色像素和蓝色像素)相关联的SPAD捕获的一些图像像素彼此重叠。像素混合可导致与不同颜色通道相关联的图像数据被合成以形成滤波图像,这可使时间滤波1710的输出降级。

因此,在一些实现方式中,对由与不同滤色器相关联的SPAD捕获的图像数据执行单独的时间滤波操作。为了说明,图18A示出了对连续捕获的图像帧进行解复用以在多个时间点生成特定于颜色的图像帧的示例。具体地,图18A示出了在上面讨论的连续时间点1706和1708处捕获的图像帧1702和1514。图18A还示出了分别对图像帧1702和1514执行的解复用1810和1802。解复用1810和1802可以包括根据图像帧1702和1514中存在的单独通道来分离图像帧1702和1514。例如,根据本示例,用于捕获图像帧1702和1514的HMD 1502的SPAD1402包括SPAD,SPAD包括红色滤光器1404、绿色滤光器1406和蓝色滤光器1410(例如,以拜耳图案布置)。因此,解复用1810和1802可以包括将图像帧1702和1514分离成相应的红色图像帧、绿色图像帧和蓝色图像帧。

图18A示出了由于对图像帧1702执行解复用1810而产生的红色图像帧1812、绿色图像帧1814和蓝色图像帧1816(例如,“解复用的图像帧”)。类似地,图18A示出了由于对图像帧1514执行解复用1802而产生的红色图像帧1804、绿色图像帧1806和蓝色图像帧1808。由解复用1810和1802产生的单独的、特定于颜色的图像帧包括表示通过单独的滤色器检测到的强度值的图像数据。例如,红色图像帧1812和1804包括描绘红色对象1506并且省略绿色对象1508和蓝色对象1510的图像数据,绿色图像帧1814和1806包括描绘绿色对象1508并且省略红色对象1506和蓝色对象1510的图像数据,并且蓝色图像帧1816和1808包括描绘蓝色对象1510并省略红色对象1506和绿色对象1508的图像数据。通过为单独的颜色通道生成单独的解复用的图像帧,时间滤波可以以基本上避免像素混合的方式执行。

图18B示出了通过使用与不同时间点相关联的特定于颜色的图像帧执行时间滤波来生成滤波的特定于颜色的图像帧的示例。具体地,图18B示出了执行时间滤波1818以合成红色图像帧1812(例如,从图像帧1702导出并与时间点1706相关联)和红色图像帧1804(例如,从图像帧1514导出并与时间点1708相关联)以生成滤波的红色图像帧1820。图18B还示出了执行时间滤波1822以合成绿色图像帧1814(例如,从图像帧1702导出并与时间点1706相关联)和绿色图像帧1806(例如,从图像帧1514导出并与时间点1708相关联)以生成滤波的绿色图像帧1824。类似地,图18B示出了执行时间滤波1826来合成蓝色图像帧1816(例如,从图像帧1702导出并与时间点1706相关联)和蓝色图像帧1808(例如,从图像帧1514导出并与时间点1708相关联)以生成滤波的蓝色图像帧1828。

从图18B可以明显看出,滤波的图像帧(例如,滤波的红色图像帧1820、滤波的绿色图像帧1824、和滤波的蓝色图像帧1828)包括具有减少的噪声(例如,相对于红色图像帧1812、1804、绿色图像帧1814、1806或蓝色图像帧1816、1808中的捕获到的对象的单独表示)的所捕获的对象的表示。噪声的减少可以通过减轻时间滤波期间像素混合风险的方式来实现(例如,通过对捕获的图像帧进行解复用并执行每颜色通道时间滤波)。滤波的图像帧可被组合以形成组合的或合成的滤波图像,其然后可用于去马赛克以形成彩色图像。

图18C示出了复用滤波的特定于颜色的图像帧以生成滤波图像的示例。具体地,图18C示出了用于组合滤波的红色图像帧1820、滤波的绿色图像帧1824和滤波的蓝色图像帧1828的复用1830。图18C示出了作为复用1830的输出的滤波图像1832。复用可包括将滤波的红色图像帧1820、滤波的绿色图像帧1824和滤波的蓝色图像帧1828的图像数据(例如,像素值)布置在单个图像中(例如,根据拜耳图案或检测用于形成滤波的特定于颜色的图像帧的图像帧的SPAD的其他模式)。

因为滤波图像1832是使用滤波的特定于颜色的图像帧(例如,滤波的红色图像帧1820、滤波的绿色图像帧1824和滤波的蓝色图像帧1828)生成的,所以滤波图像1832还描绘了具有减少的噪声(例如,相对于红色图像帧1812、1804、绿色图像帧1814、1806或蓝色图像帧1816、1808中的捕获的对象的单独表示)的捕获的对象。因此,滤波图像1832可以提供用于执行去马赛克以形成彩色图像(例如,相对于由SPAD捕获的原始图像)的改进的基础。

图18C示出了使用滤波的图像1832执行的去马赛克1834以形成彩色图像1836。如上所述,去马赛克包括对输入图像(例如,滤波的图像1832)的图像像素内插或外插RGB值。因此,图18C示出了彩色图像的RGB数据1838,其使用RGB值来描绘彩色对象(例如,红色对象1506、绿色对象1508和蓝色对象1510)以允许用户在观看彩色图像1836时感知捕获的对象的颜色。因此,本公开的实现方式可以以减少噪声的方式促进使用SPAD的彩色图像采集,从而允许在低光环境中捕获彩色图像。

如上面参考图16所指出的,在去马赛克1618之前执行以形成滤波图像1608的滤波1606可以附加地或替代地包括空间滤波。然而,许多传统的空间滤波器可能导致具有不同滤色器的SPAD捕获的相邻图像数据被混合在一起或一起滤波(例如,简单的平均滤波器因此不太适合这种实现方式)。因此,本公开的技术包括考虑与不同颜色相关联的复用像素的空间滤波过程。

图19示出了通过在去马赛克之前对图像帧执行双边滤波来生成滤波图像的示例。具体地,图19示出了图像帧1514及其图像数据1516(例如,使用HMD 1502的滤色SPAD 1402捕获的)。图19示出了对图像帧1514执行以生成具有对应图像数据1906的滤波图像1904的双边滤波1902。双边滤波1902可以包括利用二维内核(例如,3×3内核)来基于图像帧1514中的相邻像素值定义输出图像(例如,滤波图像1904)的每个像素值。与上面讨论的JBLF类似,双边滤波1902可以向当前正在确定输出值的像素(例如,内核的中心像素)的值附近的相邻像素值给予额外的权重。因此,当确定由红色滤波SPAD捕获的特定图像像素的输出值时,双边滤波1902可以向特定图像像素周围的像素窗口内与特定图像像素(例如,也由红色滤波SPAD捕获的像素)具有类似的强度的像素给予用于确定输出值的附加权重。

双边滤波1902可以保留边缘同时减少噪声。因此,双边滤波1902可以提供各种益处,同时减轻滤波图像中的图像像素受到与不同颜色相关联的图像像素的影响的影响。因此,在去马赛克之前执行双边滤波1902可以提高用于生成彩色图像的滤波图像1904的质量。

以适应与相邻SPAD像素相关联的不同滤色器的方式促进空间滤波的附加技术也在本公开的范围内。例如,图20示出了对图像帧1514进行解复用以生成特定于颜色的图像帧(即,红色图像帧2004、绿色图像帧2006和蓝色图像帧2008)的示例。解复用2002总体上对应于上文参考图18A讨论的解复用1810和1802。通过对图像帧1514进行解复用以生成与不同颜色通道相关联的特定于颜色的图像帧(例如,“解复用的图像帧”),空间滤波操作可以对于不同的颜色通道单独执行,以防止空间滤波操作导致与不同颜色关联的相邻像素混合在一起。

因此,图20示出了对红色图像帧2004执行空间滤波2010以生成滤波的红色图像帧2012、对绿色图像帧2006执行空间滤波2014以生成滤波的绿色图像帧2016、以及对蓝色图像帧2008执行空间滤波2018以生成滤波的蓝色图像帧2020。空间滤波2010、2014和/或2018可以包括用于平滑噪声、保留边缘和/或以其他方式改进输入图像帧(例如,红色图像帧2004、绿色图像帧2006和蓝色图像帧2008的各种操作)。例如,空间滤波2010、2014和/或2018中的一个或多个可以包括均值滤波器、高斯滤波器、阶次统计滤波器、中值滤波器、拉普拉斯滤波器、梯度滤波器和/或其他滤波器。此外,应用于不同特定于颜色的输入图像的空间滤波操作可以至少部分地彼此不同。

图20还示出了使用滤波的红色图像帧2012、滤波的绿色图像帧2016和滤波的蓝色图像帧2020执行复用2022以生成滤波图像2024。复用2022总体上可对应于上文参考图18C讨论的复用1830。滤波图像2024可以用作执行去马赛克或去马赛克之前的其他操作(例如,时间滤波、暗电流补偿、伽马校正等)的基础。此外,在一些实现方式中,对已经过时间滤波的图像执行与本文讨论的空间滤波相关的原理。

可以对经由去马赛克生成的彩色图像执行附加操作,例如重投影以生成视差校正的彩色图像和/或在HMD的显示器上呈现。

使用SPAD获取彩色影像的示例方法

图21和图22分别示出了示例流程图2100和2200,其描绘了与使用SPAD获得彩色影像相关联的动作。

图21的流程图2100的动作2102包括使用SPAD阵列捕获图像帧。在一些情况下,动作2102由利用处理器102、存储装置104、传感器110(例如,包括滤色SPAD像素1402的SPAD阵列112)、输入/输出系统116、通信系统118和/或其他组件的系统执行。在一些实现方式中,遮盖多个SPAD像素的各个滤色器以拜耳图案布置。

流程图2100的动作2104包括通过使用图像帧和先前图像帧执行时间滤波操作来生成滤波图像。在一些情况下,动作2104由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。先前图像帧可以由SPAD阵列在时间上先于与图像帧相关联的时间点的时间点捕获。在一些情况下,先前图像帧包括未对其执行去马赛克的原始图像帧。此外,在一些情况下,执行时间滤波操作包括(i)通过使用与SPAD阵列相关联的运动数据以在空间上对准先前图像帧与图像帧来生成对准的先前图像帧,以及(ii)将图像帧与对准的先前图像帧合成。

在一些实现方式中,执行时间滤波操作包括将联合双边滤波器应用到图像帧和先前图像帧。在一些实现方式中,执行时间滤波操作包括将联合双边滤波器应用到图像帧和后续图像帧。后续图像帧是在时间上在与图像帧相关联的时间点之后的时间点捕获的。

在一些情况下,执行时间滤波操作包括(i)通过对图像帧进行解复用来生成多个解复用的图像帧,其中多个解复用的图像帧中的每一个与相应的颜色通道相关联,(ii)访问多个解复用的图像帧,以及(iii)对于多个解复用的图像帧中的每个特定解复用的图像帧,通过以下方式生成多个时间滤波的解复用的图像帧:(a)通过使用与SPAD阵列相关联的运动数据来将对应的解复用的先前图像帧与特定的解复用的图像帧对准,以生成对应的对准的解复用的先前图像帧,以及(b)将特定的解复用的图像帧与对应的对准的解复用的先前图像帧合成。可以通过对先前图像帧进行解复用来生成多个解复用的先前图像帧,并且对于多个解复用的图像帧中的每个特定的解复用的图像帧,多个解复用的先前图像帧可以包括关联于与特定的解复用的图像帧相同的颜色通道的对应的解复用的先前图像帧。

在一些实施方式中,生成滤波图像包括对多个经时间滤波的解复用的图像帧进行复用。

流程图2100的动作2106包括在对滤波图像进行去马赛克之前对滤波图像执行伽马校正操作。在一些情况下,动作2106由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

流程图2100的动作2108包括:在执行时间滤波操作之后,通过对滤波图像进行去马赛克来生成彩色图像。在一些情况下,动作2108由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

流程图2100的动作2110包括生成视差校正彩色图像。在一些情况下,动作2110由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

流程图2100的动作2112包括:在显示器上显示视差校正的彩色图像。在一些情况下,动作2112由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

图22的流程图2100的动作2202包括:使用SPAD阵列捕获图像帧。在一些情况下,动作2202由利用处理器102、存储装置104、传感器110(例如,包括滤色SPAD像素1402的SPAD阵列112)、输入/输出系统116、通信系统118和/或其他组件的系统执行。在一些情况下,遮盖多个SPAD像素的各个滤色器以拜耳图案布置。

流程图2100的动作2204包括:通过对图像帧执行空间滤波操作来生成滤波图像。在一些情况下,动作2204由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。在一些情况下,执行空间滤波操作包括将双边滤波器应用到图像帧。在一些情况下,执行空间滤波操作包括(i)通过对图像帧进行解复用来生成多个解复用的图像帧,其中多个解复用的图像帧中的每一个与相应的颜色通道相关联;(ii)通过对多个解复用的图像帧中的每一个应用相应的空间滤波操作来生成多个空间滤波的图像帧。相应的空间滤波操作可以包括均值滤波器、高斯滤波器、阶次统计滤波器、中值滤波器、拉普拉斯滤波器或梯度滤波器中的一个或多个。在一些情况下,生成滤波图像包括对多个空间滤波解复用的图像帧进行复用。

流程图2100的动作2206包括:在执行空间滤波操作之后,通过对滤波图像进行去马赛克来生成彩色图像。在一些情况下,动作2206由利用处理器102、存储装置104、传感器110、输入/输出系统116、通信系统118和/或其他组件的系统来执行。

所公开的实施例可以包括或利用包括计算机硬件的专用或通用计算机,如下文更详细讨论的。所公开的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。以数据形式存储计算机可执行指令的计算机可读介质是一个或多个“物理计算机存储介质”或“硬件存储设备”。仅承载计算机可执行指令而不存储计算机可执行指令的计算机可读介质是“传输介质”。因此,作为示例而非限制,当前实施例可以包括至少两种截然不同的计算机可读介质:计算机存储介质和传输介质。

计算机存储介质(又名“硬件存储设备”)是计算机可读的硬件存储设备,例如RAM、ROM、EEPROM、CD-ROM、基于RAM的固态驱动器(“SSD”)、闪存、相变存储器(“PCM”),或其他类型的存储器,或其他光盘存储、磁盘存储或其他磁存储设备,或任何其他可用于以可由通用或专用计算机访问的计算机可执行指令、数据或数据结构形式在硬件中存储所需程序代码的介质。

“网络”被定义为能够在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或其他通信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,计算机正确地将连接视为传输介质。传输介质可以包括网络和/或数据链路,其可以用于携带计算机可执行指令或数据结构形式的程序代码并且可以由通用或专用计算机访问。上述的组合也包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码装置可以自动地从传输计算机可读介质传送到物理计算机可读存储介质(或反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以缓冲在网络接口模块(例如,“NIC”)内的RAM中,然后最终传输到计算机系统RAM和/或计算机系统中的不易失性计算机可读物理存储介质。因此,计算机可读物理存储介质可以被包括在也(或者甚至主要)利用传输介质的计算机系统组件中。

计算机可执行指令包括例如使得通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令可以是例如二进制、诸如汇编语言的中间格式指令、或者甚至是源代码。尽管已经以特定于结构特征和/或方法动作的语言描述了本主题,但是应当理解,所附权利要求中定义的主题不一定限于上述特征或动作。相反,所描述的特征和动作被公开为实现权利要求的示例形式。

所公开的实施例可以包括或利用云计算。云模型可以由各种特征(例如,按需自助服务、广泛的网络访问、资源池、快速弹性、可测量服务等)、服务模型(例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)、基础设施即服务(“IaaS”))和部署模型(例如私有云、社区云、公共云、混合云等)构成。

本领域技术人员将意识到,可以在具有许多类型的计算机系统配置的网络计算环境中实践本发明,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、可穿戴设备等。本发明还可以在分布式系统环境中实践,其中多个计算机系统(例如,本地和远程系统)执行任务,多个计算机系统通过网络(或者通过硬连线数据链路、无线数据链路或者通过硬连线和无线数据链路的组合)链接。在分布式系统环境中,程序模块可以位于本地和/或远程存储器存储设备中。

替代地或附加地,本文描述的功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用程序集成电路(ASIC)、专用标准产品(ASSP)、片上系统式系统(SOC)、复杂可编程逻辑器件(CPLD)、中央处理单元(CPU)、图形处理单元(GPU)和/或其他。

如本文所使用的,术语“可执行模块”、“可执行组件”、“组件”、“模块”或“引擎”可以指硬件处理单元或可以在一个或多个计算机系统上执行的软件对象、例程或方法。本文描述的不同组件、模块、引擎和服务可以被实现为在一个或多个计算机系统上执行的对象或处理器(例如,作为单独的线程)。

人们还将意识到本文公开的任何特征或操作可以如何与本文公开的其他特征和操作中的任何一个或组合来组合。另外,任一附图中的内容或特征可以与任何其他附图中使用的任何内容或特征组合或结合使用。就这一点而言,任何一幅附图中公开的内容不是相互排斥的,而是可以与来自任何其他附图的内容组合。

在不脱离本发明的精神或特征的情况下,本发明可以以其他具体形式来实施。所描述的实施例在所有方面都应被视为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是前述描述来指示。落入权利要求的等同物的含义和范围内的所有改变均被包含在其范围内。

技术分类

06120116566888