由于算力问题,当前的人造现实系统在处理能力方面存在限制。所以,各家厂商都在积极地探索提高计算效率的方法。例如对于图像处理,可以对捕获的图像进行采样,并同时尽可能少地采样。在名为“Blue noise mask for video sampling”和“Efficient motion-compensated spatiotemporal sampling”的专利申请中,Meta就介绍了与图像采样相关的优化方法,希望用blue noise mask蓝噪点掩模来进行图像/视频采样。
图像的采样可以包括采样图像内的拾取点(例如像素)或位置。由于图像可以从采样中重建,所以可以传输、存储和处理采样以代替完整图像,从而提高性能并降低功耗。为了保持图像重建所需的像素信息分布,可以使用蓝噪点掩模来拾取要采样的点。蓝噪点掩模可以指定要在图像中采样的点的分布。选择或生成用于图像/视频采样的蓝噪点掩模可以具有点之间最小间距的采样图案。蓝噪点掩膜的特性包括各向同性:在高频域内降级噪点,并在低频域减少噪点。Meta指出,蓝噪点掩模的特性有助于提升图像重建的质量。
不过,尽管蓝噪点掩模可为图像重建提供改进的采样分布,但在时域分解时,其可能会丢失蓝噪点特性,亦即对视频图像应用蓝噪点掩模可能会导致较低质量的采样,并可能导致在低频域引入伪影。
针对这个问题,可以生成考虑时域的蓝噪点掩码。考虑时域的蓝噪点掩模可以通过改进时间一致性来优化视频采样。
为了考虑时域,采样可以通过在时间上提供改进的采样分布。在特定实施例中,时空域的空域可以赋予比时域更多的权重。可以优先考虑在时域应用于单个图像的蓝噪点掩模的二维空间域。因此,为了考虑时域,用于计算蓝噪点掩模的新采样点的距离可以包含时域。作为一个示例,曼哈顿距离可用于生成曼哈顿蓝噪点掩模。更具体地说,可以在时域中使用曼哈顿距离,从而令空间域优先于时间域。因此,曼哈顿蓝噪点掩模可能比应用于一系列连续图像的2D蓝噪点掩模具有改进的时间采样。另一方面,在视频重建期间,曼哈顿蓝噪点掩模在时间上可能比3D蓝噪点掩模差,但在视频重建期间,曼哈顿蓝噪点掩模在空间上可能更好。
在特定实施例中,时空采样可用于采样视频。其中,可以在补偿运动的同时使用时空采样。对包含图像的视频帧进行采样时,点的分布可能随机。在视频中,许多帧可能包含相同的元素。作为一个例子,一个赛车视频很可能会在一系列帧中出现相同的赛车。为了减少对当前帧进行采样的需要,可以在当前帧中使用先前的采样。减少当前帧所需的采样可以提高性能并降低功耗。
然而,并非每一个对象在一帧内都是静止,而用于捕捉帧的摄像头同样可能在移动。为了减少采样负载,可以使用运动补偿时空采样来识别对象的先前采样,确定当前帧中那些对象可能出现的区域,并对当前帧中缺少信息的其他区域进行采样。
在特定实施例中,为了确定在当前帧中采样的位置,可以从前一帧中检索采样。光流可用于确定先前采样的像素中的哪些继续出现在当前帧中,以及它们在当前帧中的各自位置。作为一个示例,如果前一个样本位于前一帧中的flagpole,则系统可以使用光流来确定采样像素已移动到当前帧中flagpole出现的新位置。
根据光流确定之前采样的新位置后,系统可能会拒收无效采样。例如,若对象已移动到前一个采样的当前位置,则会导致前一个采样无效。
在一个实施例中,剩余有效采样指示由有效采样覆盖的当前帧中的像素信息可以被前一帧中的对应采样捕获。这意味着可能不需要对有效采样附近的区域进行采样。拒收区域可由有效采样每个位置周围的区域定义。拒收区域可以识别当前帧中不采样的区域。诸如蓝噪点这样的采样图案可用于对当前帧的其余部分(拒绝区域之外的区域)进行采样。
在特定实施例中,Poisson-disk点填充可用于搜索半径内的最小值。搜索半径内的最小值可用于保持所用采样的蓝噪点特性。可以接受最小值的像素进行采样。在从第一轮采样中接受所述像素之后,可以执行另一次采样迭代,以便使用当前接受的像素和先前的采样来定义拒绝区域。然后可以再次对图像的其余部分进行采样。这个过程可以重复,直到帧中的整个图像被充分采样。
在特定实施例中,计算系统可以接收包括帧序列的视频;例如可以从耦合到计算系统的摄像头接收视频。作为一个示例,人造现实系统可以从耦合的摄像头接收视频和/或视频流。计算系统可以访问指定像素采样位置的三维掩模,存储三维掩码,并从存储器访问三维掩码。
三维掩模可以具有对应于空间域的第一维和第二维,以及对应于时间域的第三维。在与空间域中的三维掩模的多个二维空间slice中的每一个相关联的像素采样位置中,以及在与时间域中的三维掩模的多个一维时间slice中的每一个相关联的像素采样位置中,其可能存在蓝噪点特性。在特定实施例中,可以通过使用距离函数选择像素采样位置来生成三维掩模。距离函数测量三维掩模中任意两个像素采样位置之间的距离,而且距离函数可以基于空域中的欧几里德距离和时域中的曼哈顿距离来测量三维掩模中两个像素采样位置之间的距离。
在一个实施例中,按顺序选择由三维掩模指定的像素采样位置。可以基于使用距离函数测量的像素采样位置和先前选择的像素采样位置之间的距离来选择像素采样位置。在特定实施例中,三维掩模可以是给定尺寸。
在一个实施例中,计算系统可以确定与用于视频采样的像素采样位置的期望百分比相对应的阈值。三维掩模中的像素采样位置可以与对应于选择像素采样位置的序列的序列值相关联。作为一个示例,第一像素采样位置可与序列值1相关联,第二像素采样位置可与序列值2相关联,依此类推。
计算系统可以确定指示用于生成视频采样的像素采样位置的百分比的阈值数。作为一个示例,计算系统可以将要使用的像素采样位置的百分比设置为像素采样位置的10%。
为了降低功耗,可以降低用于采样的像素采样位置的百分比。在一个实施例中,计算系统可以基于计算系统的剩余电量来确定与用于视频采样的像素采样位置的期望百分比相对应的阈值。作为一个示例,如果电量低于阈值水平,计算系统可以将用于视频采样的像素采样位置设置为10%。
在一个实施例中,要使用的像素采样位置的百分比可对应于比例因子。可以使用密度估计来适当地确定比例因子和要使用的像素采样位置的相应百分比。作为一个示例,对于给定区域,如果一个区域对应于图像的遮光部分,则不需要为该部分图像使用高百分比的像素采样位置。因此,可就该部分减小比例因子。
在一个实施例中,不同的比例因子可应用于三维掩模的不同部分。例如,如果图像的一部分是纯黑衬衫,则该部分图像的三维掩膜的比例因子将减小,但如果图像的另一部分包含复杂图案,则三维掩膜的比例因子可能增大。为了确定像素采样位置的适当百分比,计算系统可以使用与像素采样位置相关联的序列值。
因此,如果要使用10%的像素采样位置,则可以使用前10%的像素采样位置。在一个示例中,如果有1000个像素采样位置且阈值设置为10%,则可以使用基于其顺序值的前100个像素采样位置。如果阈值为30%,则像素采样位置对应于从0.00到0.30的顺序值。计算系统可以基于阈值和与像素采样位置相关联的序列值来选择像素采样位置的子集。像素采样位置的子集可对应于用于视频采样的像素采样位置。当对视频进行采样时,计算系统可以使用要应用于视频的像素采样位置子集来对帧序列进行采样。
在一个实施例中,计算系统可以通过使用三维掩模对帧序列进行采样来生成视频的采样。计算系统可将三维掩模应用于视频以对视频进行采样,采样可以存储在计算系统中,并且计算系统可将视频采样发送到另一计算系统。
在一个实施例中,计算系统可以访问包括第一帧和第二帧的视频。如上所述,计算系统可以从多个源接收视频。计算系统可以存储接收到的视频以供以后访问。计算系统可确定视频的第一帧中的采样位置。如前所述,计算系统可以使用二维掩模来应用于第一帧以对第一帧进行采样。二维掩模可以是蓝噪点掩模。
计算系统可通过将蓝噪点掩模应用于第一帧来确定第一帧的采样位置。如果在第一帧之前存在其他帧,则计算系统可将三维掩模应用于其他先前帧和第一帧以对帧进行采样。计算系统可以使用二维掩模的采样点的阈值百分比,使用二维掩模(蓝噪点掩模)生成第一帧的采样。计算系统可以如前所述地确定阈值百分比。
在特定实施例中,计算系统可以通过将第一帧的采样位置变换为第二帧来确定第二帧的采样位置。计算系统可以基于第一帧和第二帧之间的光流将第一帧的采样位置转换为第二帧。光流可以将第一帧的采样位置映射到第二帧的采样位置,其中采样位置对应于第一帧和第二帧中的像素。作为一个示例,计算系统可基于光流确定与属于flaghole的像素相对应的第一帧中的采样位置与第一帧相比已移动到第二帧中的新采样位置。计算系统将在第二帧中识别与属于flaghole的像素对应的采样位置。因此,计算系统可以保留已经采样的信息,并通过重用来自第一帧中的采样信息来减少对当前帧进行采样的需要。在特定实施例中,计算系统可以通过使用第一帧和第二帧之间的颜色时间梯度,将第一采样位置转换为第二帧。
在一个实施例中,计算系统可以在第二帧中选择采样位置的子集。计算系统可以比较与第一帧中的采样位置对应的第一帧中的像素和与第二帧中的采样位置对应的第二帧中的像素。作为一个示例,如果与第一帧中的采样位置相对应的像素属于第一帧中的汽车,则计算系统可以将该像素与第二帧中属于同一汽车的像素进行比较。计算系统可检测第二帧中的一个或多个无效采样位置。计算系统可基于与第一帧中的采样位置对应的第一帧中的像素与与与第二帧中的采样位置对应的第二帧中的像素不匹配的确定来检测无效采样位置。作为一个示例,如果第一采样位置的第一帧中的像素是汽车的像素(例如像素可以是红色),但第二帧的第二采样位置中的像素是树的像素(例如像素可以是棕色),则计算系统可以检测第二帧中的无效采样位置。
在将第一帧的采样位置转换为第二帧的采样位置之后,如果在第二帧的采样位置中预期存在错误,则计算系统可以确定第二帧中的采样位置无效。所以,计算系统可以拒绝第二帧中的无效采样位置。因此,计算系统可以通过排除第二帧中的无效采样位置来选择第二帧中的采样位置的子集。
在特定实施例中,计算系统可以使用一个或多个启发式来确定是否拒绝无效采样位置。作为一个示例,如果相邻像素具有不同于阈值差的流,则计算系统可确定第二帧中的采样位置无效。在特定实施例中,计算系统可估计光流的误差。计算系统可以计算一个或多个像素的流向量,其中流向量指示像素从一帧到下一帧的位置变化。计算系统可以确定相邻像素的一个或多个流向量之间的差是否超过阈值差。如果流向量之间的差超过阈值差,则计算系统可确定和与流向量相关联的像素对应的采样位置无效。
在特定实施例中,计算系统可以在第二帧中定义一个或多个拒绝区域。在特定实施例中,计算系统可以基于计算系统选择的第二帧中的采样位置的子集来定义第二帧中的拒绝区域。拒绝区域可以是已被识别为由计算系统在第二帧中充分采样的区域,因此不需要进一步采样。拒收区域定义了不需要进一步取样的区域。拒绝区域可以是从第二帧中的采样位置的子集延伸的固定半径的区域。作为一个示例,计算系统可在每个采样位置周围设置10个像素的半径,以从所选采样位置子集生成拒绝区域。
在一个实施例中,计算系统可以确定拒绝区域之外的第二帧中的采样位置。计算系统可识别第二帧中的采样位置以进一步采样。计算系统可以在第二帧中进一步采样当前采样不足的区域。计算系统可以使用包含蓝噪点特性的二维掩模,并在拒绝区域之外的区域中生成第二帧的采样。
在特定实施例中,计算系统可以基于第二帧中的采样位置生成视频的采样。在特定实施例中,计算系统可以基于与第一帧中的采样位置相对应的第一帧中的像素,和与在拒绝区域之外识别的采样位置相对应的第二帧中的像素来生成视频的采样。计算系统可通过重用来自第一帧的采样,以仅识别计算系统需要在第二帧中进一步采样的区域,从而减少生成视频采样所需的采样。在特定实施例中,计算系统可存储视频采样,并将采样发送到其他计算系统。
图1示出了重建图像的示例过程100。过程100可以从接收图像102的计算系统开始。采样掩模104可应用于图像102以生成采样图像106。计算系统可以使用图像重建过程108通过使用采样图像106来重建图像。在一个示例中,计算系统可以使用机器学习模型来执行图像重建过程108。计算系统可以生成采样图像106,并将采样图像106发送到另一计算系统。
图2示出了重建视频的示例过程200。过程200可以从接收包括多个图像的视频202的计算系统开始。计算系统可将采样掩码204应用于视频202以生成视频202的样本206。在使用视频202的采样206执行视频重建208之后,计算系统可以生成重建视频210。
图3示出了生成采样掩模的示例过程300。过程300可以是生成蓝噪点掩模的过程300。在特定实施例中,过程300可以从选择点302(例如采样位置)开始。可以随机选择点302作为初始采样位置。可以为点302分配顺序值。作为示例而非限制,点302可以分配顺序值1。过程300可以使用距离函数来确定如本文所述的第二点304。第二点304可以分配顺序值,例如分配顺序值2。过程300可以继续,直到在二维空间内确定所有采样位置,以生成采样掩模306。在特定实施例中,可以为每个采样位置分配顺序值。在特定实施例中,采样掩模306可以是给定尺寸,例如是1000像素×1000像素。在特定实施例中,采样掩模306可以包括蓝噪点特性。
图4示出了三维空间400的示例三维采样掩模402。在特定实施例中,三维采样掩模402可以包括由x轴404和y轴406组成的空间域。三维采样掩模402可包括由t轴408组成的时域。三维采样掩模402可以包括蓝噪点特性。作为一个示例,三维采样掩模402可以包括空间域中三维采样掩模402的二维空间slice中的蓝噪点特性,以及时间域中三维采样掩模402的一维时间slice中的蓝噪点特性。
在特定实施例中,三维采样掩模402可以通过使用距离函数的过程来生成,以按前文所述顺序选择采样位置。三维采样掩模402可应用于视频以对视频进行采样。
图5示出了曼哈顿掩模中的二维噪声采样与504-500掩模之间的比较。二维采样掩模502可以是蓝噪点掩模。可以基于使用关于时域的曼哈顿距离的距离函数来生成曼哈顿蓝噪点采样掩模504。
与二维采样掩模502对应的顶行可以对应于二维采样掩模502的各种样本百分比,采样数量从左向右增加。右侧显示的初始采样掩模可使用二维采样掩模502的1%样本阈值,左侧显示的最终采样掩模可使用二维采样掩模502的80%样本阈值。与二维采样掩模502相对应的底行可以表示顶行上各个采样掩模的傅里叶变换的绝对值。
图6示出了在时域中二维采样掩模602与曼哈顿蓝噪声采样掩模604之间的比较600。二维采样掩模602可以与二维采样掩模502相同,曼哈顿蓝噪点采样掩模604可以与曼哈顿蓝噪点采样掩模504相同。
对应于二维采样掩模602的顶行可对应于二维采样掩模602的各种百分比的样本,其中采样数量从左向右增加。右侧显示的初始采样掩模可以使用二维采样掩模602的1%采样阈值,右侧显示的最终采样掩模可以使用二维采样掩模602的80%采样阈值。与二维采样掩模602相对应的底行可以表示顶行上各个采样掩模的傅里叶变换的绝对值。
图7示出了采样时补偿运动的示例过程700。过程700可以从确定多个采样位置的初始步骤702开始。可以通过在初始帧内对图像应用蓝噪点掩模来获得采样位置。继续过程700,摄像头可在第二步骤704中向左平移。当摄像头向左平移时,最初从步骤702确定的采样位置可以保留在第二步骤704中。
在步骤704中,与摄像头向左平移之后出现在图像中的像素相对应的相同采样位置被保留。可以在步骤704中将来自步骤702中的初始图像的采样位置变换为图像的新位置。作为一个示例,过程700可以使用光流将采样位置从步骤702中的初始图像变换到步骤704中的图像的新位置。
在步骤706中,可以拒绝或移除对应于无效像素的无效采样位置。如步骤706中的图像所示,从步骤704中的图像中移除多个采样位置。所述采样位置可能会被删除,因为当前帧中可能存在不正确的像素。
过程700可以选择从第一步骤702确定的初始采样位置的采样位置子集。在选择采样位置子集之后,在步骤708中,过程700可以在采样位置子集周围定义拒绝区域。可以使用来自采样位置子集的每个采样位置的预定义半径来生成拒绝区域。在步骤708中定义了拒绝区域之后,过程700继续到步骤710,基于前文技术在帧中识别额外的采样位置。在识别附加采样位置之后,过程700可以通过检索保留的采样位置,并添加附加采样位置来确定与图像相对应的采样位置。然后,可以将与所识别的采样位置相对应的采样掩模应用于帧中的图像,从而生成帧中的图像采样。
名为“Blue noise mask for video sampling”和“Efficient motion-compensated spatiotemporal sampling”的Meta专利申请都是在2020年9月提交,并在日前由美国专利商标局公布。