苹果VisionPro,MetaQuest3,PICO4,视频透视功能越发成为XR头显的标配。实际上,微软同样有探索这一主题。在名为“Video pass-through computing system”的专利申请中,微软就介绍了一种视频透视计算系统。
微软指出,现有的视频传输计算系统在视频捕获和AR视频流显示之间存在高延迟,例如至少50毫秒显示视频帧。造成这种延迟的一个因素是由主机执行视频流的图像信号处理。在这种配置中,摄像头视频流由摄像头捕获。摄像头将摄像头视频流发送到主机计算机。
主机计算机通常一次缓冲整个视频帧,并用于图像信号处理以生成处理后的视频流。主机将处理后的视频流发送到头戴式显示设备进行显示。不同设备之间的视频传输可能会遇到各种系统瓶颈,并且可能增加计算开销,从而增加延迟。
在移动时,用户容易感知到这种延迟最容易,从而造成基于视频透视的AR体验不愉快,并导致不适。
微软的发明主要介绍了一种低延迟视频透视计算系统。其中,可以直接在硬件中,在子帧级执行摄像头图像像素流的图像信号处理。这种处理可由头戴式显示设备的AR控制电路执行,以便产生处理过的图像像素流。
虚拟图像像素流在渲染后送至AR控制电路。所述AR控制电路将所述处理后的图像像素流与所述虚拟图像像素流复合,从而生成合成的显示图像像素流,亦即包含透视内容和虚拟内容。
AR控制电路进一步配置为,根据摄像头图像像素流的对应像素是否与虚拟图像像素流的像素在时间上不同步,利用反馈将透视内容与虚拟内容在时间上同步,以生成合成的显示图像像素流。
通过在子帧级执行摄像头图像像素流的图像信号处理,可以避免等待在硬件中缓冲的整个图像帧以开始信号处理。相对于现有的方法,这可以减少视频透视计算系统的延迟。
在一个实施例中,摄像头图像像素流的图像信号处理可以直接在头戴式显示器的硬件中执行,这可以减少传输开销,从而进一步减少延迟。延迟可以降低到用户的认知阈值以下,例如约10毫秒,这样用户就不会在显示的AR图像像素流中感知到任何延迟。
另外,通过使用来自摄像头图像像素流和虚拟图像像素流的合成像素的反馈来控制摄像头启动图像捕获的时间,可以适当地临时注册摄像头像素图像流和虚拟图像像素流。通过这种方式,可以向用户显示没有失真和不适的AR体验。
图1A和1B显示了说明性视频透视计算系统100的各个方面。在图1A中,视频透视计算系统100由用户102佩戴。视频透视计算系统100包括以通信方式耦合到头戴式显示设备106的主机104。
头戴式显示设备106配置为将左、右摄像头图像像素流与左、右虚拟图像像素流合成,以生成左、右显示图像像素流。具体地说,用相应的左、右虚拟图像像素流的虚拟内容增强相应的左、右摄像头图像像素流,从而形成增强现实图像。
换句话说,透视内容与虚拟内容相结合,以提供显示给用户的AR体验。
除了所述合成过程之外,所述头戴式显示设备106可配置为对所述摄像头图像像素流执行各种图像信号处理操作。
图2示出示例视频透视计算系统200。头戴式显示设备204包括左摄像头206L和右摄像头206R。左摄像头206L配置为从左视角对真实世界的物理场景进行成像,以生成左摄像头图像像素流208L。可以根据基于左摄像头时钟信号210L的曝光定时来生成左摄像头图像像素流208L。
右摄像头206R配置为从不同于左视角的右视角对物理场景进行成像,以生成右摄像头图像像素流208R。可以根据基于右摄像头时钟信号210R的曝光定时来生成右摄像头图像像素流208R。
在一个实施例中,左侧摄像头时钟信号210L和右侧摄像头时钟信号210R可能是驱动两台摄像头的相同信号。在其他示例中,左侧摄像头时钟信号210L和右侧摄像头时钟信号210R可能相互独立。
所述各摄像头206L、206R的曝光时序指示启动图像捕获以根据所述各摄像头206L、206R的帧速率捕获图像的时序。左摄像头206L和右摄像头206R可以根据任何合适的帧速率捕获图像,包括但不限于每秒30、60、90或120或更多帧。
所述左摄像头206L和右摄像头206R配置为将所述左摄像头和右摄像头图像像素流208L、208R发送到AR控制电路212。到达电路212的像素流可以是原始的和未处理的,或者它们可以在摄像头上或通过中间组件以不同程度进行处理。
如所述,头戴式显示设备204可以包括姿态追踪子系统214,以追踪头戴式显示设备204在真实世界物理场景中的姿态。姿态追踪子系统214可以包括一个或多个光学传感器,例如彩色或单色摄像头。姿态追踪子系统214同时可以包括惯性测量单元。
姿态追踪子系统214可以配置为使用任何合适类型的传感器,并以任何合适的方式追踪头戴式显示设备204的姿态。头戴式显示设备204的确定姿态可以具有不同的特征。
头戴式显示设备204配置成将与所确定的姿态相对应的姿态数据216发送给主机202。主机202配置为基于头戴式显示设备204的姿态呈现左右虚拟图像像素流218。
左侧和右侧虚拟图像像素流218包括用于虚拟地增强真实世界图像以形成呈现给用户的AR体验的虚拟内容。
主机202配置为根据基于主机时钟信号220的虚拟图像帧率呈现左和右虚拟图像像素流218。主机202可以根据任何合适的帧速率呈现虚拟图像像素流,包括但不限于每秒30、60、90或120或更多帧。
所述主机104配置为将所述左右虚拟图像像素流218发送至所述头戴式显示设备204的AR控制电路212。在一个实例中,虚拟图像帧速率可能与摄像头帧速率相同。在其他示例中,虚拟图像帧速率可能不同于摄像头帧速率。
AR控制电路212通常实现为头戴式显示设备204的集成电路,并且配置为基于从左和右摄像头206L、206R接收到的左和右摄像头图像像素流208L、208R,和从主机202接收到的左和右虚拟图像像素流218生成AR图像。
图3示出图2所示的AR控制电路212的不同示例硬件模块。AR控制电路212配置为从图2所示的头戴式显示设备204的摄像头210接收摄像头图像像素流208。
AR控制电路212包括图像信号处理ISP硬件管道300,其配置为对摄像头图像像素流208执行子帧图像信号处理以生成处理后的图像像素流302。
ISP硬件管道300可以配置为FIFO管道。AR控制电路212配置为将摄像头图像像素流208的像素的子帧分组缓冲到ISP硬件管道300中,以便一次逐组处理。
通过缓冲和处理像素的子帧分组,ISP硬件管道300可以在可用像素上启动图像信号处理操作,而不必等待整个图像帧被缓冲到ISP硬件管道中。这样的子帧缓冲和处理可能有助于降低如图2所示的视频透视计算系统200的总体延迟。
缓冲到ISP硬件管道300中的子帧分组中的像素数可以包括像素的任何合适的子帧数。例如,一个子帧分组可能包含10-15行扫描行像素。在子帧分组中缓冲的像素数量可以根据不同的因素而变化。
ISP硬件管道300可以配置为对摄像头图像像素流208中的每个像素执行逐像素图像信号处理。图4示出图3所示ISP硬件管道300的不同硬件模块示例。
ISP硬件管道300可以包括映射模块400,其被配置为对来自图像传感器摄像头坐标空间的每个像素执行与显示器对应的显示坐标空间的单步几何映射。映射模块400可以包括内联像素缓冲区402,而内联像素缓冲区402通过将所有几何校正操作编码为内联像素缓冲区402的单个查找操作来促进单步映射。
例如,对于在摄像头传感器上具有给定坐标404的像素,映射模块400可以执行对内联像素缓冲区402的查找,以确定像素在显示器上的相应坐标406。映射模块400配置为对摄像头像素流208的每个像素执行逐像素映射,以生成映射的图像像素流408,其中每个像素具有显示空间坐标。
将所映射的图像像素流408提供给ISP硬件管道300的多个图像信号处理硬件模块410。所述图像信号处理硬件模块410配置为对所述映射的图像像素流408执行不同的面向像素的图像信号处理功能,以生成相对于所述摄像头图像像素流208具有改进的图像质量的所述处理过的图像像素流302。执行的像素级图像信号处理功能可包括摄像头和显示镜头畸变校正。
在一个实施例中,ISP硬件管道300可以被配置为对拜耳模式图像像素流执行子帧图像信号处理。在这样的实现中,ISP硬件管道中的缓冲区大小可以相对于将彩色图像像素流的颜色数据存储在ISP硬件管道中的配置而减小。
这种缓冲大小的减小可能有助于更快的图像信号处理和更低的视频透视计算系统的总体延迟。
在图4的实施例中,映射模块400可以配置为接收虚拟图像像素流的每个颜色分量的不同alpha通道参数值。所述映射模块400可配置为将所述颜色信息烘烤到所述映射图像像素流408中,使得所述颜色信息可用于将所述虚拟内容与所述真实内容适当地合成。
回到图3,由于摄像头图像像素流208由ISP硬件管道300处理,而虚拟图像像素流没有处理,因此可以在虚拟图像像素流218之前将摄像头图像像素流208预曝光到电路212,以便暂时同步两个图像像素流到达AR控制电路212的合成器304。
特别是,在AR控制电路212接收虚拟图像像素流218的相应像素之前,将摄像头图像像素流208的像素提供给ISP硬件管道300。在所示的示例中,在AR控制电路212接收虚拟图像像素流218的帧(N+1)像素之前,将摄像头图像像素流208的帧(N+1)像素的子分组缓冲到ISP硬件管道300中。
虚拟图像像素流218的像素缓冲到输入同步缓冲区305中。输入同步缓冲区305配置为保存虚拟图像像素流218的像素,而摄像头图像像素流208的像素则由ISP硬件管道300处理。
AR控制电路212可包括虚拟图像像素同步缓冲器306和处理图像像素同步缓冲器308,以促进到达所述合成器304的像素的时间同步。
在所示示例中,注意,虚拟图像像素流218的帧(N)的像素从输入同步缓冲区305输出并发送到虚拟图像像素同步缓冲区306,而处理后的图像像素流的帧(N)的像素从ISP硬件管道300输出并发送到处理后的图像像素同步缓冲区308。
所处理的图像像素同步缓冲器308可配置为根据指定的定时将虚拟图像像素流218的像素输出到所述排序器304,所述排序器304可基于来自所述排序器304的反馈进行调整。
同步缓冲器306、308可以配置为根据所接收的反馈通过改变存储在各自缓冲器中的若干像素来进行自调整。同步缓冲器306、308的定时通常可以在图像帧的过程中根据反馈进行调整。
所述合成器304配置为将所述处理过的图像像素流302与所述虚拟图像像素流218合成,以生成所述合成的显示图像像素流310,亦即包含来自主机的透视内容和虚拟内容。
具体地,所述合成器304配置为在逐像素的基础上,从所述处理图像像素流302中选择一个像素,从所述虚拟图像像素流218中选择一个像素,和/或从所述处理图像像素流302和所述虚拟图像像素流218中将两个相应的像素混合在一起,从而将所述处理图像像素流302与所述虚拟图像像素流218组合在一起。
在一个实施例总,像素选择/混合可能包括确定相对于现实世界内容的虚拟内容的分层。像素混合可能包括确定虚拟内容相对于真实内容的半透明性,例如通过组合两个像素的alpha通道值。
换句话说,根据所述像素在显示器的位置,所述显示像素可以包括虚拟内容、物理场景的真实世界内容,或者虚拟内容和真实世界内容的组合。
由于虚拟图像像素流218由主机计算机202渲染,然后发送到头戴式显示设备204,因此虚拟图像像素流218渲染与虚拟图像像素流218到达合成器304之间的延迟可能导致某种程度的姿态误差。
作为合成过程的一部分,可以将合成器304配置为执行后期重投影操作,以在AR控制电路212上局部修改虚拟图像像素流,以更紧密地与头戴式显示设备204的实际姿态对齐。
特别是,可以将合成器304配置为在虚拟图像像素流218由主机202呈现后,从姿态追踪子系统214接收指示头戴式显示设备204的更新姿态的更新姿态数据312。合成器304可以进一步配置为基于更新的姿态数据312重新投影虚拟图像像素流,以生成重新投影的虚拟图像像素流,并将重新投影的虚拟图像像素流与处理过的图像像素流302合成。
在其他实施例中,AR控制电路212的不同硬件模块可以在向合成器304提供虚拟图像像素流218之前执行虚拟图像像素流218的后期重投影。
基于确定是否在硬件合成器304处与虚拟图像像素流218的对应像素时间同步地接收到经处理图像像素流302的对应像素,AR控制电路212可以配置为匹配从摄像头时钟信号导出的经处理图像像素流302,和从主机时钟信号导出虚拟图像像素流218的不同时域。
特别地,如果摄像头图像像素流的像素与虚拟图像像素流中的像素在时间上不同步,则AR控制电路212向摄像头发送命令信号以调整摄像头的曝光定时。
在一个实施例中,AR控制电路212可经配置以确定当在硬件合成器304处接收到与虚拟图像像素流218的对应像素相关的经处理图像像素流302的对应像素时的到达时间,且基于或使用该到达时间来调整曝光时序。可以基于同步缓冲器的像素深度来确定到达时间。
作为一个示例,虚像像素同步缓冲器306可以具有y=400的当前像素深度,并且经处理的图像像素同步缓冲器308可以具有y=100的当前像素深度。同步缓冲器的像素深度指示处理后的图像像素流302正以比虚拟图像像素流218提前的到达时间提供给合成器304。
换言之,经处理的图像像素流302和虚像像素流218在时间上不同步。因此,可以调整曝光定时,使得两个缓冲器具有相同的像素深度。特别地,曝光开始时间可以延迟1个单位。
下一次通过反馈循环时,经处理的图像像素同步缓冲器308应当具有y>100的当前像素深度。可以基于反馈重复调整曝光定时,直到像素深度匹配为止。
可以一次调整一行图像帧,或者以任何其他适当的增量/间隔调整曝光定时,直到实现时间同步。这种曝光定时的调整通常可以允许在1-2个图像帧中实现时间同步。在一个示例中,可以逐个像素地执行时间同步的确定,使得可以针对虚拟图像像素流的每个像素进行所述确定。在其他示例中,可以针对虚像像素流中的每其他像素,或者每第3、第5或第10个像素进行所述确定。
在本实施例中,摄像头的曝光定时相对于主机202的时钟信号进行调整。在其它实施例中,指示虚拟图像像素流的呈现帧率的主机的时钟信号可以相对于摄像头的时钟信号进行调整。
在一个实施例中,映射模块400可任选地位于硬件排序器304的下游。虚拟图像像素流218可以与由ISP管道300处理以执行各种图像质量改进,但保持在摄像头像素空间坐标中的摄像头图像像素流组合。换句话说,从合成器304输出的合成图像像素流的像素具有摄像头空间坐标。
可将所述合成图像像素流输入到映射模块400,以将所述像素从摄像头空间坐标映射到显示空间坐标。例如,这样的映射可以使用上面讨论的单步映射技术来执行。应当理解的是,可以在AR控制电路212中的任何合适的处理位置执行从摄像头空间坐标到显示空间坐标的像素映射。
为清晰起见,图3中只示出一个虚拟图像像素流、一个摄像头图像像素流和一个显示图像像素流。在实践中,AR控制电路212配置为分别从与左、右虚拟图像像素流合成的左、右摄像头图像像素流生成独立的左、右显示图像像素流。
在一个实施例中,可以将AR控制电路212配置为复合多个不同的摄像头图像像素流以生成显示图像像素流。例如,可以将AR控制电路212配置为将红外摄像头图像像素流与RGB摄像头图像像素流合成。AR控制电路212可以配置为合成来自任何合适数量的不同源的任何合适数量的不同图像像素流以生成AR图像。
AR控制电路212可以仅通过摄像头/处理过的图像像素流到显示器,以提供物理场景的非增强视图。另外,AR控制电路212可以仅通过虚拟图像像素流到显示器以提供虚拟现实体验。
回到图2,所述AR控制电路212配置为向左显示器222L输出左显示图像像素流220L,向右显示器222R输出右显示图像像素流220R。左、右显示图像像素流220L、220R分别对应图3所示的显示图像像素流310。所述左侧显示器222L配置为显示左侧显示图像像素流220L,所述右侧显示器222R配置为显示右侧显示图像像素流220R,以共同向用户呈现AR体验。
图5示出了示例视频透视方法500。
在502中,从头戴式显示设备的摄像头接收摄像头图像像素流。
在504中,通过AR控制电路的图像信号处理硬件管道,对摄像头图像像素流执行子帧图像信号处理,以生成处理后的图像像素流。
在506中,接收虚拟图像像素流。
在508中,任选地包括在所述主机呈现所述虚拟图像像素流之后,从姿态追踪子系统接收所述头戴式显示设备的更新姿态。
在510中,基于更新的姿态重新投影虚拟图像像素流,以生成重新投影的虚拟图像像素流。
在512中,通过AR控制电路的硬件合成器,将处理后的图像像素流与虚拟图像像素流合成,以生成显示图像像素流。
在514中,在硬件合成器处接收的虚拟图像像素流的一个或多个像素,确定在硬件合成器处是否与虚拟图像像素流的一个或多个像素的像素在时间上同步接收处理图像像素流的相应像素。
在516中,向摄像头发送命令信号,以根据所述确定来调整摄像头的曝光时间。
在518中,将所述显示像素流输出到所述头戴式显示设备的显示器。
方法500可以对视频传递计算系统的每个相应的摄像头/显示器重复执行。因此,在一个示例中,可以对对应于左显示的左摄像头执行方法500,并且可以对对应于右显示的右摄像头重复执行方法500。
可以执行上述方法以向显示器提供低延迟视频传递图像,同时保持摄像头和虚拟图像像素流之间的时间同步。
名为“Video pass-through computing system”的微软专利申请最初在2021年4月提交,并在日前由美国专利商标局公布。