微软专利分享更多HoloLens 2摄像头图像校准的技术细节
对准摄像头图像
(映维网Nweon 2022年02月16日)为了支持不同的功能,AR/VR系统一般可以搭载以特定方式排列的多个前置摄像头。由于多种原因,系统需要对准前置摄像头的图像内容。通常,为了执行对准过程,系统需要详细的时间戳信息和姿势信息。然而,因为不同的摄像头可能在不同的时域中工作,所以它们具有时间偏移。另外,时间戳数据有时根本不可用,因为摄像头之间可以彼此远程操作,并且时间戳数据不被传输。尽管对准图像内容提供了巨大的好处(特别是在全息图的放置和生成方面),但前面所述的问题构成了一定的障碍。
微软早前已经公布过多份用于校准不同摄像头图像的专利申请,而日前美国专利商标局又公布了四份与之相关的发明。
1. 连续摄像头图像对准
相关专利:Systems and methods for continuous image alignment of separate cameras
图2描绘了带有两个匹配摄像头215的头显200。在一个实施例中,两个匹配摄像头215基本垂直对准操作头显200的用户的眼睛。图2进一步包括搭载参考摄像头260的用户仪器250。在一个实施例中,头显200和用户仪器250配置为通过无线链路290共享数据。在一个实施例中,用户仪器250可以通过无线信道将参考摄像头260捕获的图像帧的图像数据发送到H头显200。
图3示出了使用参考摄像头260和匹配摄像头215捕捉包括物理对象305的环境的示例。具体而言,用户仪器250的基准参考摄像头260以基准摄像头姿势320和基准摄像头时间点325捕获基准参考帧310,基准参考帧310包括物理对象305的表示。类似地,图3示出了在基准匹配摄像头姿势330和基准匹配摄像头时间点335处捕获基本匹配帧315,基准匹配帧315包括物理对象305的表示。
基准参考帧310和基准匹配帧315可以为生成运动模型提供基础,以便于将参考摄像头捕捉的图像映射到匹配摄像头捕捉的图像(反之亦然)。
图25示出了一个描绘了与生成运动模型相关联的示例流程图2500。所述运动模型配置为有助于将参考摄像头捕获的参考帧的一组像素映射到匹配摄像头捕获的匹配帧的对应像素组。
流程图2500的动作2502包括获取可更新的基本矩阵。对于特定情况,使用计算机系统3900(例如头显 200和/或用户仪器250)的一个或多个处理器3905,并使用参考摄像头260和匹配摄像头215捕获的图像来执行动作2502。例如,在一个实施例中,可更新的基本矩阵是三维旋转矩阵,三维旋转矩阵是基于基准参考摄像头姿势下的基准参考帧与基准匹配摄像头姿势下的基准匹配摄像头捕捉的基准匹配帧之间的视觉对应关系而获得。
在一个实施例中,计算机系统通过在基本参考帧和基本匹配帧之间执行特征匹配来识别一组基本特征匹配,从而获得可更新的基本矩阵。然后,计算机系统通过将基本特征匹配取消投影到三维空间来生成一组未投影的基本特征匹配。然后,计算机系统通过最小化成本函数,并基于未投影的基本特征匹配集计算可更新的基本矩阵。
流程图2500的动作2504包括计算更新的矩阵。对于特定情况,使用计算机系统3900(例如头显 200和/或用户仪器250)的一个或多个处理器3905,并使用参考摄像头260和匹配摄像头215捕获的图像执行动作2504。在一个实施例中,计算机系统使用参考摄像头以更新的参考摄像头姿势捕获的更新的参考帧与匹配摄像头以更新的匹配摄像头姿势捕获的更新的匹配帧之间的视觉对应来计算更新的矩阵,从而生成更新的矩阵。
在一个实施例中,计算机系统通过在更新的参考帧和更新的匹配帧之间执行特征匹配来识别一组更新的特征匹配来计算更新的矩阵。计算机系统同时通过将更新的特征匹配取消投影到3D空间来生成一组未投影的更新特征匹配,并且计算机系统通过最小化代价函数来基于未投影的更新特征匹配计算更新的矩阵。
为了响应根据动作2504成功计算更新的矩阵,流程图2500的动作2506包括生成对准的矩阵,而流程图2500的动作2508包括更新可更新的基本矩阵。对于特定情况,使用计算机系统3900(例如头显200和/或用户仪器250)的一个或多个处理器3905执行动作2506和2508。在一个实施例中,计算机系统使用基本参考摄像头姿势、基本匹配摄像头姿势、更新的参考摄像头姿势和更新的匹配摄像头姿势生成对准的更新矩阵。另外,在一个实施例中,计算机系统通过使用对准的更新矩阵和可更新基本矩阵作为更新可更新基本矩阵的输入来更新可更新基本矩阵。然后,计算机系统可继续执行动作2510,其包括使用可更新的基本矩阵生成运动模型。
对于特定情况,计算机系统无法计算更新后的矩阵。例如,匹配摄像头和参考摄像头不朝向捕获环境的公共部分,这可能导致系统无法识别参考帧和匹配帧之间的特征对应关系。计算机系统同时可能由于其他原因无法识别特征点,例如遮挡、摄像头模式的差异等等。未能识别匹配帧和/或参考帧内的特征点可能会导致系统无法计算更新的矩阵。
在一个实施例中,为了响应未能根据动作2504计算更新的矩阵,计算机系统禁止更新根据动作2502获得的可更新的基本矩阵。相反,计算机系统使用根据动作2502获得的可更新基本矩阵继续执行动作2510。
流程图2500的Act 2510包括使用可更新的基本矩阵生成运动模型。对于特定情况,使用计算机系统3900(例如头显 200和/或用户仪器250)的一个或多个处理器3905执行动作2510。在一个实施例中,运动模型的计算机系统包括可更新的基本矩阵、基于与参考摄像头相关联的惯性追踪数据生成的参考摄像头变换矩阵,以及基于与匹配摄像头相关联的惯性追踪数据生成的匹配摄像头变换矩阵。
图26中的示例流程图2600描绘了促进两个摄像头的连续图像对准相关行为。
流程图2600的动作2602包括识别参考摄像头变换矩阵。对于特定情况,使用计算机系统3900(例如头显 200和/或用户仪器250)的一个或多个处理器3905执行流程图2600的动作2602。在一个实施例中,参考摄像头变换矩阵是基本参考摄像头姿势和更新的参考摄像头姿势之间的三维旋转矩阵,与更新的参考摄像头时间点之前发生的基础参考摄像头时间点关联的基础参考摄像头姿势。
流程图2600的动作2604包括识别匹配摄像头变换矩阵。对于特定情况,使用计算机系统3900(例如头显 200和/或用户仪器250)的一个或多个处理器3905执行流程图2600的动作2604。在一个实施例中,匹配摄像头变换矩阵是基本匹配摄像头姿势和更新的匹配摄像头姿势之间的三维旋转矩阵(例如,基于匹配摄像头IMU 235获得的惯性追踪数据240识别),基本匹配摄像头姿势与更新的匹配摄像头时间点之前发生的基本匹配摄像头时间点相关联。
流程图2600的动作2606包括识别校准矩阵。对于特定情况,使用计算机系统3900(例如头显 200和/或用户仪器250)的一个或多个处理器3905执行流程图2600的动作2606。对于特定情况,对准矩阵是基于参考摄像头捕获的一个或多个参考帧与匹配摄像头捕获的一个或多个匹配帧之间的视觉对应关系。
根据动作2606识别校准矩阵可能包括各种动作。例如,流程图2600说明了动作2606A包括识别基本矩阵。在一个实施例中,计算机系统通过在基准参考摄像头姿势下由基准参考摄像头捕获的基准参考帧和在基准匹配摄像头姿势下由匹配摄像头捕获的基准匹配帧之间执行特征匹配来识别基准矩阵。计算机系统同时通过将基本特征匹配取消投影到三维空间来生成一组未投影的基本特征匹配。然后,计算机系统可以通过最小化代价函数,并基于未投影的基本特征匹配集来计算基本矩阵。对于特定情况,基础矩阵是3D旋转矩阵。
动作2606B包括识别更新的矩阵。在一个实施例中,计算机系统通过在更新的参考摄像头姿势下由参考摄像头捕获的更新的参考帧和在更新的匹配摄像头姿势下由匹配摄像头捕获的更新的匹配帧之间执行特征匹配来识别更新的矩阵。
动作2606B包括识别更新的矩阵。在一个实施例中,计算机系统通过在更新的参考摄像头姿势下由参考摄像头捕获的更新的参考帧和在更新的匹配摄像头姿势下由匹配摄像头捕获的更新的匹配帧之间执行特征匹配来识别更新的矩阵。计算机系统同时通过将更新的特征匹配取消投影到三维空间,并生成一组未投影的更新特征匹配。然后,计算机系统可以通过最小化代价函数,并基于未投影的更新特征匹配集来计算更新的矩阵。
动作2606C包括生成对准的更新矩阵。对于特定情况,计算机系统通过使用基准参考摄像头姿势、基准匹配摄像头姿势、更新的基准摄像头姿势和更新的匹配摄像头姿势,将更新后的矩阵与基准矩阵对准,从而生成对准的更新矩阵。
动作2606D包括将对准的更新矩阵与基本矩阵融合。对于特定情况,计算机系统通过将对准的更新矩阵和基本矩阵作为输入应用于生成对准矩阵的函数,将对准的更新矩阵与基本矩阵融合。在一个实施例中,用于生成对准矩阵的函数是插值函数,并且插值函数可以包括平滑项。
流程图2600的动作2608包括通过取消投影参考帧的一组像素来识别一组3D点。对于特定情况,使用计算机系统3900的一个或多个处理器3905执行流程图2600的动作2608。对于特定情况,计算机系统通过使用参考摄像头的固有矩阵和均匀深度取消投影参考帧的像素集来识别3D点。
流程图2600的动作2610包括生成一组修改后的3D点。对于特定情况,使用计算机系统3900的一个或多个处理器3905执行流程图2600的动作2610。在一个实施例中,计算机系统通过将运动模型应用于根据动作2608识别的三维点集来生成修改后的三维点集。
流程图2600的行动2612包括投影修改后的3D点集。对于特定情况,使用计算机系统3900的一个或多个处理器3905执行流程图2600的动作2612。对于特定情况,计算机系统使用匹配摄像头的固有矩阵投影修改后的3D点集。投影的修改后的3D点集可使计算机系统能够生成用于向用户显示的合成图像。
2. 更新连续图像对准
相关专利:Systems and methods for updating continuous image alignment of separate cameras
图27描绘了用户设备250的参考摄像头260和头显200的匹配摄像头215的示例,它们在不同的时间点捕捉包括物理对象305的环境。具体地,图27示出了在先前参考摄像头姿势2705和先前参考摄像头时间点2710捕获物理对象305的图像的参考摄像头260。类似地,图27示出了在先前匹配摄像头姿势2715和先前匹配摄像头时间点2720处捕获物理对象305的图像的匹配摄像头215。
参考图28,参考摄像头260和匹配摄像头215在各自的先前时间点捕获的图像形成先前帧对2820。在一个实施例中,系统识别前一帧对2820的图像之间的视觉对应2815。然后,系统可以使用视觉对应2815来确定前一对准矩阵2810。在一个实施例中,先前对准矩阵2810作为运动模型的一部分操作,以将先前参考帧的像素映射到先前匹配帧的对应像素。
回到图27所示的示例,在使用参考摄像头260在前一参考摄像头时间点2710处和使用匹配摄像头215在前一匹配摄像头时间点2720处捕获物理对象305的图像之后,参考摄像头260的姿势改变以对应于中间参考摄像头时间点2740处的中间参考摄像头姿势2735。类似地,匹配摄像头215的姿势改变以对应于中间匹配摄像头时间点2750处的中间匹配摄像头姿势2745。参考摄像头260和匹配摄像头215都在根据各自的中间姿势定向的同时捕获图像,以形成中间帧对。
如图27所示,当根据中间参考摄像头姿势2735定向时,参考摄像头260和根据中间匹配摄像头姿势2745定向时,匹配摄像头215被指向远离物理对象305的方向,使得两个摄像头都不捕捉物理对象305。因此,计算机系统可能无法识别中间帧对的图像之间的视觉对应关系。
在图28中,用于将中间参考帧的像素映射到中间匹配帧的对应像素的中间对准矩阵2830可以包括先前的对准矩阵2810,而不基于中间帧对生成更新的对准矩阵。
再次回到图27,在中间参考摄像头时间点2740处使用参考摄像头260和中间匹配摄像头时间点2750处使用匹配摄像头215捕获中间帧对之后,参考摄像头260的姿势改变以对应于当前参考摄像头时间点2770处的当前参考摄像头姿势2765。类似地,匹配摄像头215的姿势改变以对应于当前匹配摄像头时间点2780处的当前匹配摄像头姿势2775。参考摄像头260和匹配摄像头215两者都在定向时捕获图像。
在中间参考摄像头时间点2740处使用参考摄像头260和中间匹配摄像头时间点2750处使用匹配摄像头215捕获中间帧对之后,参考摄像头260的姿势改变以对应于当前参考摄像头时间点2770处的当前参考摄像头姿势2765。类似地,匹配摄像头215的姿势改变以对应于当前匹配摄像头时间点2780处的当前匹配摄像头姿势2775。参考摄像头260和匹配摄像头215都在根据各自的当前姿势定向的同时捕获图像,以形成当前帧对2850。
在一个实施例中,系统识别当前帧对2850的图像之间的视觉对应2845。然后,系统可以使用视觉对应2845确定当前矩阵2840。计算机系统可以将对准的当前矩阵2865与先前的对准矩阵2810混合或组合,以生成更新的对准矩阵2860。
在一个实施例中,更新的对准矩阵2860作为运动模型的一部分进行操作,以将当前参考帧的像素映射到当前匹配帧的对应像素。
在一个实施例中,插值函数使用平滑项。在一个实施例中,平滑度项确定如何加权先前的对准矩阵2810和对准的当前矩阵2865以生成更新的对准矩阵2860。举例来说,在一个实施例中,当平滑度项具有接近最大值的值时,插值函数逐渐忽略对准的当前矩阵2865,为先前的对准矩阵2810赋予更多权重以生成更新的对准矩阵2860。另外,在一个实施例中,当平滑度项具有接近最小值的值时,插值函数逐渐忽略先前的对准矩阵2810,为对准的当前矩阵2865赋予更多权重以生成更新的对准矩阵2860。
不同的平滑度值可能适用于不同的情况。例如,选择给予先前对准矩阵2810更多权重的平滑度值可以改善对准当前矩阵2865中可能存在的噪点的影响。然而,选择给予对准的当前矩阵2865更多权重的平滑度值可改善先前对准矩阵2810相对于当前帧的潜在不准确度。
当先前的对准矩阵2810不准确时,选择使先前的对准矩阵2810具有更多权重的平滑度值可能会导致合成帧中的不准确。尽管这种不准确可能会随着时间的推移而纠正,但提供准确合成帧的延迟可能会导致运动模型不适合特定应用,例如,精确操作和/或摄像头方向快速变化的操作。因此,在一个实施例中,基于先前对准矩阵2810的预期精度智能地确定/更新平滑度值可能是有益的。
先前校准矩阵2810的预期精度可能取决于具体情况。例如在一个实施例中,参考摄像头260和/或匹配摄像头215从捕捉前一帧对2820以生成前一对准矩阵2810的时间开始经历大量运动,这可能会降低先前对准矩阵2810相对于在当前时间点捕获的帧对的精度/适用性。
因此,计算机系统会根据一个或多个先前对准矩阵的预期精度智能地确定/更新平滑度项。
图29示出了上述参考图所述的相同帧捕获和姿势改变序列。对于特定情况,系统识别当前参考摄像头时间点2770和前一参考摄像头时间点2710之间与参考摄像头260相关联的差值2910。另外,系统可以识别当前匹配摄像头时间点2780和前一匹配摄像头时间点2720之间与匹配摄像头215相关联的差值2920。高差值2910和/或2920可指示应将先前对准矩阵2810的预期精度视为低,而低差值2910和/或2920可指示应将先前对准矩阵2810的预期精度视为高。
图30示出了使用对准的当前矩阵2865、先前的对准矩阵2810以及差值2910和/或2920生成更新的对准矩阵3015。例如在一个实施例中,系统使用对准的当前矩阵2865、先前的对准矩阵2810以及差值2910和/或2920作为对定影器3000的输入,以生成更新的对准矩阵3015。
对于特定情况,平滑度项3010是基于差值2910和/或2920智能确定。如上文所述,平滑度项3010可确定用于将先前对准矩阵2810与对准的当前矩阵2865混合以生成更新的对准矩阵3015的权重。
图31示出了系统可在不同时间点与参考摄像头260和/或匹配摄像头215相关联地识别的差值2910和/或2920的示例实施例。图31示出,差值2910和/或2920识别为运动值3105。例如,运动值3105可以指示参考摄像头260和/或匹配摄像头215在前一时间点和当前时间点之间经历的运动量3110。大量运动可能表明IMU漂移误差能够随着时间累积,表明先前对准矩阵2810的预期精度低,这可能导致系统选择低平滑度项3010。
图31同时示出,运动值3105可以指示参考摄像头260和/或匹配摄像头215在先前时间点和当前时间点之间经历的一个或多个加速度值3115。高加速度值可能导致IMU漂移误差高于低加速度值,这可能表明先前对准矩阵2810的预期精度较低,并可能导致系统选择低平滑度项3010。
如图31所示,差值2910和/或2920识别为时间值3120,例如自成功识别视觉对应的最近上一个时间点以来已经/已经经过的帧数或时间量。成功的视觉对应之间的大量帧或时间量可指示先前的对准矩阵2810可能已变得不准确,这可导致系统选择较低的平滑度项3010。
3. 促进识别出现运动模糊的图像的对应关系
如上所述,系统可以生成运动模型。运动模型可包括基于各种矩阵生成的对准矩。所述的各种矩阵至少部分地通过识别由参考摄像头260和匹配摄像头215捕获的图像之间的对应关系来计算,例如通过执行特征匹配。
在一个实施例中,执行特征匹配涉及识别参考摄像头260捕获的图像和匹配摄像头215捕获的图像中的特征点和特征描述符。系统可采用各种技术来识别特征点和/或特征描述符,。
特征点识别和/或特征匹配依赖于识别图像中包含丰富纹理信息的一个或多个像素,例如边缘、角落和/或其他易于识别的结构。所以,当所分析的图像中存在模糊伪影时,执行特征点识别和/或特征匹配操作可能会受到阻碍。图像中存在的模糊伪影可能会模糊图像中的边缘、角落和/或其他易于识别的结构,因此可能导致系统无法识别图像中的特征。
图39描绘了在基本匹配摄像头姿势330和基本匹配摄像头时间点335处由匹配摄像头215捕获的基本匹配帧315。图39同时示出了基准摄像头260在基准参考摄像头姿势320和基准参考摄像头时间点325下捕获的基准参考帧310。如图39所示,在匹配摄像头215的摄像头曝光时间期间,匹配摄像头215和物理对象305之间的相对运动不足以在基本匹配帧315中引起模糊伪影。类似地,在参考摄像头260的摄像头曝光时间期间,参考摄像头260和物理对象305之间的相对运动不足以在基准参考帧310中引起模糊伪影。
在一个实施例中,系统智能地生成修改的(例如下采样)帧对,并对修改的帧对执行特征匹配,以便于识别经历运动模糊的图像之间的对应关系。运动模糊可能会导致摄像头传感器中的像素采样的空间区域比每个像素通常采样的空间区域更大。由此产生的图像模糊可降低具有高空间频率或指示空间变化的对象(例如诸如边缘、角和/或其他易于识别的结构的对象)的保真度。修改图像可能导致生成的图像由中低频内容组成,并且可能使系统能够使用包括图像中的中低频特征的图像执行图像匹配。使用中低频信息执行特征匹配可有助于在特征点识别和/或特征匹配期间识别此类结构。
图40示出了使用一个或多个图像核生成修改的参考帧和修改的匹配帧的概念表示。具体地,图40示出了在更新的匹配帧3915上执行修改4005A。类似地,图40示出了在更新的参考帧3910执行修改4005B。修改4005A和4005B可以包括利用图像内核4020来生成修改后的图像的各种操作。例如,修改4005A和/或4005B可能涉及在图像和图像内核4020之间执行卷积。
根据专利描述的实施例,图像内核4020可以呈现各种形式。例如,在一个实施例中,图像内核4020指示下采样分辨率4035,从而使得修改4005A和4005B用作下采样操作。图40示出了其中图像内核4020指示下采样分辨率4035的示例实施例。根据图40所示的实施例,在更新的匹配帧3915执行修改4005A生成作为下采样更新的匹配帧的修改的更新的匹配帧4015。因此,修改后的更新匹配帧4015具有比更新匹配帧3915更低的图像大小和像素分辨率,从而令高频内容模糊,并且如上所述在中低频内容引起视觉对应匹配。类似地,图40示出在更新的参考帧3910执行修改4005B生成作为下采样更新参考帧的修改更新参考帧4010。因此,修改后的更新参考帧4010具有比更新参考帧3910更低的图像大小和像素分辨率。
在一个实施例中,系统使用下采样分辨率4035执行修改4005A和/或4005B。对于特定情况,下采样分辨率4035定义了系统如何执行修改4005A和/或4005B。例如,下采样分辨率4035可以表示下采样因子,例如用于组合像素以生成下采样图像的分块操作的像素分块大小。在一个实施例中,下采样分辨率4035可确定系统是否沿每个轴将图像大小减小2、3、4和/或其他因子以生成下采样图像。另外或者可选地,下采样分辨率4035可以指示下采样图像的目标分辨率。
因此,系统可以使用相同的下采样分辨率4035来执行修改4005A和修改4005B,或者系统可以使用一个下采样分辨率4035来执行修改4005A。
在一个实施例中,图像内核4020是以静态方式预先确定,而在其他实施例中,图像内核4020是基于一个或多个元素/输入动态确定。图41示出了基于运动属性4105和/或摄像头属性4140确定图像内核4020的示例。
在特定情况中,运动属性4105包括参考摄像头运动属性4110和/或匹配摄像头运动属性4115。在一个实施例中,参考摄像头运动属性4110基于由参考摄像头IMU 265获得的惯性追踪数据270,而匹配摄像头运动属性4115基于由匹配摄像头IMU 235获得的惯性追踪数据240。参考摄像头运动属性4110可以指示在参考摄像头260的摄像头曝光时间期间与参考摄像头260相关联的运动的度量。
类似地,匹配摄像头运动属性4115可以指示在匹配摄像头215的摄像头曝光时间期间(与匹配摄像头215相关联的运动的度量。
在特定情况中,系统基于参考帧的图像分析4120确定运动属性4105。图像分析4120可以包括各种处理。
应该注意的是,摄像头图像中存在的运动模糊量可能取决于一个或多个摄像头属性4140。例如,当在相同的运动条件下捕捉相同的环境时,具有较长摄像头曝光时间4145的摄像头可以捕捉比具有较短摄像头曝光时间4145的摄像头更大程度的运动模糊。另外,当在相同运动条件下捕捉相同环境时,具有较高摄像头角度分辨率4155和/或较小摄像头视场4150的摄像头可以捕捉比具有较低摄像头角度分辨率4155和/或较大摄像头视场4150的摄像头更大程度的运动模糊。所以,对于特定情况,除了一个或多个运动属性4105之外,系统同时可以利用一个或多个摄像头属性4140作为用于确定下采样分辨率4035的输入。
如上文参考图40所示,系统可利用图像内核4020来生成下采样(或以其他方式修改)帧对。随后,系统识别下采样帧对的图像之间的对应关系。
图42示出了在修改后的更新匹配帧4015和修改后的更新参考帧4010执行特征匹配的概念表示。例如,图42中的系统识别修改后的更新匹配帧4015内的各种特征点(例如特征点4210A、4210B和4210C),并识别各种特征点的特征描述符(例如特征描述符4215A、4215B和4215C)。类似地,图42中的系统识别修改后的更新参考帧4010内的对应特征点)。
图42同时示出了利用修改后的更新匹配帧4015和修改后的更新参考帧4010内识别的特征点来生成对准矩阵4230。系统可利用对准矩阵4230来促进参考帧的像素到匹配帧的对应像素的映射,以生成用于显示用户的复合帧。
4. 减少用于识别图像之间的对应关系的搜索区域的系统和方法
相关专利:Systems and methods for reducing a search area for identifying correspondences between images
如上文所述,系统可以利用在基本匹配帧315和基本参考帧310内识别的特征匹配来生成基本矩阵610)。基本矩阵610可以为生成用于生成复合帧的运动模型提供基础。
图34示出了基本匹配帧315内的搜索区域3405,所述搜索区域包括基本匹配帧315的所有像素。类似地,图34示出了包括基本参考帧310的所有像素的基本参考帧内的搜索区域3410。搜索区域3405和3410分别指示系统可在其中搜索基本匹配帧315和基本参考帧310内的特征点/特征匹配的区域。
如上所述,系统可以对参考摄像头260和匹配摄像头215捕获的后续帧执行特征匹配,以更新用于生成合成帧的运动模型。特征提取和特征匹配通常是计算代价高昂的过程,尤其是在图像中搜索较大搜索区域的特征点/匹配时。因此,通过减少用于识别由参考摄像头260和匹配摄像头215捕获的后续帧之间的特征匹配的搜索区域,我们可以帮助系统节省计算资源。
例如,图35示出了在更新匹配摄像头姿势1130和更新匹配摄像头时间点1135由匹配摄像头215捕获的更新匹配帧1115。类似地,图35示出了在更新参考摄像头姿势1120和更新参考摄像头时间点1125由参考摄像头260捕获的更新参考帧1110。如上所述,更新匹配摄像头时间点1135和更新参考摄像头时间点1125分别位于基本匹配摄像头时间点335和基本参考摄像头时间点325之后。
图35示出了用于搜索更新匹配帧1115内的特征点的搜索区域3505,以及用于搜索更新参考帧1110内的特征点以促进特征匹配的搜索区域3510。如图35所示,与更新参考帧1110相关联的搜索区域3510在大小上对应(或可以稍大)与基本参考帧310相关联的搜索区域3410。与更新匹配帧1115相关联的搜索区域3505的大小小于与基本匹配帧315相关联的搜索区域3405,这可以减少与识别更新的匹配帧1115内的特征点相关联的计算负担。
系统可以基于各种元素/输入在更新的匹配帧1115内定义搜索区域3505。在一个实施例中,系统基于与先前生成的复合帧相关联的重叠区域来定义搜索区域3505。作为说明,图35示出了覆盖在更新的匹配帧1115的重叠区域1020。
在特定情况中,系统基于惯性追踪数据定义搜索区域3505。例如在一个实施例中,系统基于与参考摄像头260相关联的惯性追踪数据270来识别参考摄像头变换矩阵1170。系统同时可以或者可选地基于与匹配摄像头215相关联的惯性追踪数据240识别匹配摄像头变换矩阵1140。
在一个实施例中,系统使用参考摄像头变换矩阵1170和/或匹配摄像头变换矩阵1140指示的参考摄像头260和匹配摄像头215的相对位置的变化来变换重叠区域1020,并识别更新匹配帧1115内的预测重叠区域。预测的重叠区域可指示更新的匹配帧1115内的像素的预期区域。因此,预测的重叠区域在更新匹配帧1115内的定位可以提供定义搜索区域3505在更新的匹配帧1115内的定位的基础。
图35示出了系统可以基于其他元素/输入定义搜索区域3505。在一个实施例中,系统利用置信度3515来定义搜索区域3505。置信度量3515可以指示搜索区域3505的定位的预期精度。在置信度3515指示搜索区域3505的定位的高预期精度的情况下,系统可以将搜索区域3505定义为具有与重叠区域1020的大小相似或相同的大小。相反,在置信度3515指示搜索区域3505的定位的预期精度较低的情况下,系统可以将搜索区域3505定义为具有大于重叠区域1020的大小。
置信度3515可以包括各种元素。例如,在一些实施例中,置信度度量3515包括时间段3530,例如基本匹配摄像头时间点335和更新的匹配摄像头时间点1135之间的时间段和/或基本参考摄像头时间点325和更新的参考摄像头时间点1125之间的时间段。以不同的方式说明,在一些实施例中,时间段3530指示自系统成功识别匹配摄像头215和参考摄像头260捕获的图像之间的特征匹配以更新对准矩阵(如上所述)以来经过的时间量。在一些实施例中,较大的时间段3530指示更新的匹配帧1115内搜索区域3505的定位的预期精度的较低程度(例如,由于IMU漂移误差累积的较大时间段)。因此,更大的时间段3530可导致置信度3515,其导致系统增加搜索区域3505的大小(可能填充更新的匹配帧1115的全部),以说明搜索区域3505在更新的匹配帧1115内的定位的低预期精度。
对于特定情况,置信度度量包括运动度量3535,例如相对于匹配摄像头215和/或参考摄像头260的运动测量。在特定情况中,系统基于IMU数据确定运动测量3535。
应当注意,在特定情况中,运动度量3535指示参考摄像头260和匹配摄像头215的相对运动和/或与单独摄像相关联的单独运动度量的组合/合成。
在图35中,系统至少部分基于重叠区域1020在更新的匹配帧1115内定义搜索区域3505。图36示出了一个替代实施例。
图36中的更新匹配帧1115描绘了各种特征点,包括特征点3610A、3610B和3610C。更新匹配帧1115描绘的各种特征点表示通过在前一帧对执行特征匹配而识别的特征点。换言之,图36中更新匹配帧1115描绘的各种特征点表示在匹配摄像头215捕获的先前图像中识别的特征点。
将图36的更新匹配帧1115(例如3610A、3610B和3610C)中描绘的特征点类比为重叠区域,系统可以至少部分地基于所述特征点,并定义用于在更新匹配帧1115内搜索特征点的搜索区域。作为说明,系统可通过变换特征点3610A、3610B、3610B和3610C来识别更新特征点在更新匹配帧1115中的预期位置。系统同时可以将围绕更新特征点的预期位置的像素区域定义为搜索区域3605A、3605B和3605C或复合搜索区域的组件。
图37示出了使用搜索区域3505,并通过执行特征匹配来确定更新匹配帧1115的像素与更新参考帧1110的像素之间的对应关系的示例。在一个示例中,系统识别更新匹配框1115的搜索区域3505内的特征点1810A、1810B和1810C,以及更新参考框1110的搜索区域3510内的特征点1820A、1820B和1820C,并且系统使用特征描述符1815A、1815B和1815C和特征描述符1825A、1825B和1825C确定更新匹配帧1115的特征点对应于更新参考帧1110的特征点。
在上述示例中,系统避免在搜索区域3505之外的更新匹配帧1115内搜索特征点,从而保留计算资源。
对于特定情况,系统无法识别匹配帧和参考帧之间的对应关系。未能识别匹配帧和参考帧之间的对应关系可指示匹配摄像头215和参考摄像头260捕捉环境的不同部分。
在特定情况中,为了响应未能确定匹配帧和参考帧之间的对应关系,系统修改(例如扩展)用于识别后续帧对中的对应关系的搜索区域。参考摄像头260和匹配摄像头215可以在捕获环境的不同部分的一段时间后重定向以捕获环境的公共部分。在一个实施例中,修改的(例如扩展的)搜索区域允许系统能够在参考摄像头260的视场和匹配摄像头215的视场开始重叠后不久更容易地识别特征匹配。
以上四份专利都是在2020年7月提交,并在日前由美国专利商标局公布。