微软AR/VR专利为图像拖影提出补偿摄像头全局运动和对象局部运动解决方案

HoloLens QQ群493967447

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

补偿摄像头的全局运动和补偿对象的局部运动

映维网Nweon 2023年10月09日)为了提高显示给用户的图像质量,MR系统可以选择执行所谓的“时间过滤”。时间滤波指的是系统将多个时间点捕获的数据组合在一起以生成特定输出的过程。换句话说,系统本质上是将多个图像堆叠在一起,并以特定方式组合它们,以产生具有改进质量的聚合图像。

但在执行时间过滤时会遇到各种挑战。例如当系统捕捉多个连续图像时,场景或环境中的对象正在移动会产生所谓的拖影。

在名为“Advanced temporal low light filtering with global and local motion compensation”的专利申请中,微软就提出了一种相关的解决方案。

在一个实施例中,专利描述了用于生成时间滤波图像的技术,而所述图像设计为补偿摄像头的全局运动和补偿对象的局部运动。

所述方法包括,获取历史帧和当前帧;对历史帧执行全局运动补偿操作,以重新投影历史帧的姿态以匹配当前帧的姿态;将历史帧与当前帧进行比较,以识别表示移动对象的像素;对于像素中的每一个,计算光流矢量。

然后将光流矢量应用于像素以将像素移位到新的位置。在历史帧中的新位置对应于在当前帧中识别的位置;接下来,用历史帧对当前帧进行时间滤波。

图4A, 4B, 4C, 4D, 4E, 5A, 5B说明了执行全局和局部运动补偿操作的各种场景。

图4A示出历史帧400的示例。所述历史帧400可以是先前生成的图像,或者,所述历史帧400可以是通过以前面描述的方式将多个先前图像叠加在一起而生成的现有的经时间过滤的图像帧。历史帧400描述了一个场景400A或一个环境,例如一个女人在做引体向上的场景。

历史帧400描述对象405,并具有与之关联的特定姿势410。历史帧400是在特定时间点生成,比如时间T0。在稍后的时间点T1,摄像头生成当前帧415。在时间T0和T1之间的中间时间,全局和局部运动都出现发生。

姿势425和姿势410是不同的。这种差异的产生是因为摄像头在时间T0和时间T1之间移动了位置。换句话说,全局运动出现发生,即摄像头本身移动了位置。

尽管全局运动补偿操作可以有效地解释和补偿摄像头姿态的变化,但IMU数据430不能用于解释运动物体的局部变化。因此,需要一种技术补偿在生成历史帧400和生成当前帧415之间的时间内由于场景中对象移动而发生的变化。

图4B更完整地说明了全局运动补偿操作。

所述实施例配置为使用IMU数据430对所述历史帧400执行全局运动补偿MC。作为执行全局MC操作的结果,生成运动补偿帧435。具体地说,实施例使用IMU数据430对历史帧400中的像素进行重新投影440,使姿态410反映新姿态。在这种情况下,新姿态为当前帧415的姿态425。换句话说,实施例重新投射历史帧以具有与当前帧匹配的新姿态。

注意在图4B中,运动补偿的帧435的姿态显示了现在处于与当前帧415中所述引体条的位置相匹配的位置的引体条。换句话说,看起来好像运动补偿的帧435是由与生成当前帧415的摄像头处于相同位置的摄像头生成。

尽管姿势现在彼此对齐,但可以观察到对象405依然处于与对象420不同的位置。产生这种差异是因为对象在时间T0和时间T1之间移动。为了完全对齐图像,应该执行一个额外的操作。

如图4C所示,所述实施例配置为分割识别为对应于移动对象的像素的比较过程。例如,实施例可以计算图4B中当前帧415和运动补偿帧435之间的绝对差。这两个图像之间不同的像素对应于场景中移动的内容。

图4C显示了分割或比较过程的结果。具体地,为了响应计算两个图像之间的绝对差,实施例在运动补偿帧435中识别第一组像素450,并在当前帧415中识别第二组像素455。剩余的像素可以选择性地过滤掉。

所述实施例识别用于像素集450的位置460或坐标以及用于像素集455的位置465或坐标。所述实施例同时为所述集合中包括的每个像素计算光流矢量,如所述光流矢量470所示。向量的组合表示对象移动的程度或数量。然后,实施例基于像素在当前帧415和运动补偿帧435中的位置确定特定像素的光流矢量。

有时,不同像素的光流矢量可能不同。例如,第一光流矢量可以不同于第二光流矢量。当对象以相对于摄像头的角度移动时,可能会出现这种情况。

计算光流矢量后,实施例随后可以执行移位480操作,如图4D所示。具体地说,实施例将包含在运动补偿帧435中的像素集450移动到与包含在当前帧415中的像素集455中识别的位置相对应的位置。这种移位是基于光流矢量470。

图4D通过一组叠加图像显示了这种移位,如移动位置485所反映的一样,其中像素集450移动到像素集455所示的位置。移位的结果显示在新的位置490。新位置490是指现在包含在所谓的“调整的历史帧”中的像素集450的新位置。

作为执行这种移位480的结果,图4E显示了调整后的结果历史帧495,它反映了像素的新位置,并且现在与当前帧415基本相似。在执行全局和局部补偿之后,实施例随后可以暂时过滤图像以生成组合图像。

图5A显示的流程500,概述了在图4A到4E执行的过程。最初,获取历史帧505。所述帧取自或包括所述摄像头的特定姿势510,并包括代表图4A中的所述对象405的对象515。

所述实施例获得当前帧520,所述当前帧520从所述摄像头的特定姿势525拍摄,并且所述当前帧520包括对象530。

使用IMU数据追踪摄像头从生成历史帧505的时间到生成当前帧520的时间的运动,实施例能够执行全局MC 535操作以将姿势510转换或重新投影到姿势540,其与姿势525匹配或对齐。

尽管执行了全局MC 535操作,但对象545不在正确的位置。例如,可以观察对象545和对象530之间的定位差异。

所以,实施例分割确定为对应于移动对象的像素来执行光流计算550,例如在执行全局MC 535操作后,通过获取当前帧520与历史帧505之间的绝对差值。

然后,实施例将光流矢量应用于历史帧505中的特定像素。作为施加所述光流矢量的结果,产生调整后的历史帧560。调整的历史帧560是所述历史帧505的修改版本,其中所述修改包括用于考虑所述摄像头的全局运动和所述对象515的局部运动的更改。

当执行光流计算550时,实施例配置为对历史帧505和当前帧520中的一个或两个进行下采样565。通常,这是当前帧520被下采样,而得到的帧具有较低的图像分辨率。当图像中存在大量噪点时,下采样到较低的分辨率实际上可以改善图像分析,例如在尝试识别多个图像之间对应的像素时。

当所述图像处于下采样状态时,所述实施例可以识别所述两个图像之间的相应像素。识别像素后,实施例随后可以计算像素以及表示移动对象的任何其他分割像素的光流矢量。

在为各种像素计算光流矢量之后,所述实施例随后可以对所述图像上采样570。作为另一个例子,一个像素上采样,这样它可以分成四个像。最初分配给单个像素的光流矢量现在可以分配给四个新生成的像素。然后可以将光流矢量应用于历史帧505中的四个相应像素,以生成调整后的历史帧560。

在图5B中,由于调整后的历史帧560的姿态和内容现在对应于当前帧520的姿态和内容,实施例可以暂时地将这两个图像一起滤波。通过对调整后的历史帧560和当前帧520进行时间滤波处理,生成时间滤波后的帧575。然后,这个临时滤波的帧575可以显示给用户,或者,它可以作为流程500的新迭代的历史帧进行操作。

由于移动了一定像素,可能会出现先前被这些像素遮挡的内容现在不再遮挡的情况。但可能的情况是,历史帧没有包含足够的数据来完全表示现在揭示的内容。

为了考虑这样的场景,实施例可以在时间过滤过程中从当前帧中提取不再遮挡的内容,以便填充所述区域。换句话说,实施例可以修改或调整在时间滤波过程中使用的加权技术,从而有利于当前帧520。

由于当前帧偏置的这种增加的权重,实施例将从当前帧520中提取比从调整后的历史帧560中提取更多的数据。然后,来自当前帧520的数据可以用来填充现在显示的区域。

实施例同时可以对当前帧520进行下采样,提取上述特定区域的数据,然后再次对数据进行上采样,类似于前面提到的过程。

因此,对于先前在历史帧中被像素集遮挡但现在未被像素集遮挡的内容,实施例可以从当前帧中获取该内容的图像数据。然后可以将内容包含在临时滤波的帧/图像中。可选地,在从当前帧获取内容之前,实施例可以将当前帧向下采样到较低的分辨率,然后再对所提取的内容向上采样。

相关专利Microsoft Patent | Advanced temporal low light filtering with global and local motion compensation

名为“Advanced temporal low light filtering with global and local motion compensation”的微软专利申请最初在2022年2月提交,并在日前由美国专利商标局公布。

HoloLens QQ交流群493967447

您可能还喜欢...

专栏