微软专利介绍用于AR/VR设备摄像头校正滚动快门伪影的方法
校正快门伪影
(映维网 2021年12月23日)混合现实系统可以包括深度检测系统,例如飞行时间摄像头、测距仪、立体深度摄像头等等。深度检测系统提供关于混合现实系统周围真实世界环境的深度信息,以使系统能够准确呈现基于真实世界对象的混合现实内容。深度检测可以作用于其他目的。例如,混合现实系统可以利用立体摄像头获得的图像向用户提供用户环境的透视视图。
尽管现有的混合现实系统可以配置不同类型的摄像头,但通过混合现实设备呈现摄像头捕获的图像依然存在众多挑战,比如说滚动快门伪影。
由于摄像头的物理定位与用户眼睛的物理定位属于物理分离,所以不能简单地直接向用户渲染捕获的图像。具体地说,用户眼睛定位和立体摄像头定位之间的垂直偏移将导致视图误差,所以用户将会感知到具有不正确深度的真实世界对象。
提供视差校正功能的系统可以利用滚动快门摄像头来获得用于生成视差校正图像的立体图像。滚动快门摄像头包括滚动快门传感器,后者包括传感器行(或列)阵列,传感器行(或列)阵列按顺序而不是同时集成和/或读取传感器数据。例如,滚动快门传感器可在初始行或列开始积分,读取初始行或列,然后继续积分并读取后续行或列。所以,当使用滚动快门传感器拍摄图像时,滚动快门摄像头的每个传感器行(或列)可以具有不同的积分和/或读出时间戳。
但在特定情况下,特别是在用户移动头部的情况下,系统可能在与滚动快门传感器的不同传感器行(或列)相关联的不同积分和/或读出时间戳处具有不同姿势。这种情况尤其麻烦,因为与不同时间戳相关联的每个不同姿势将导致滚动快门伪影出现在由滚动快门传感器捕获的渲染图像中。
在名为“Systems and methods for correcting rolling shutter artifacts”的专利申请中,微软就介绍了一种用于校正滚动快门伪影的方法和系统。
图1示出了视差问题的概念表示,其中立体摄像头105A和105B对与用户眼睛110A和1108物理分离。传感器区域115A概念上描绘了摄像头105A(和用户眼睛110A的图像感测区域。类似地,传感器区域115B概念上描绘了摄像头105B和用户眼睛1108的图像感测区域。
图3示出了摄像头305-325中没有一个与瞳孔330和335直接对准。偏移量340-345在摄像头305-325和瞳孔330-335之间引入透视差异,亦即“视差”。
由于偏移量340-345产生的视差,摄像头305-325产生的原始图像不能立即用作透视图像350。相反,系统需要对原始图像执行视差校正355。视差校正355包括执行深度计算以确定环境的深度,然后将图像重新投影到确定的位置或具有确定的透视图。
重投影基于头显300相对于其周围环境的当前姿势375(例,通过视觉惯性SLAM确定)。基于生成的姿势375和深度映射,头显300和/或其他系统能够通过重新投影由原始图像体现的透视图以与用户的瞳孔330和335的透视图一致来校正视差误差。
但正如前面所述,对于利用滚动快门摄像头来获得用于生成视差校正图像的立体图像的系统,其需要解决滚动快门摄像头产生的滚动快门伪影。
现在注意图8A,其示出了滚动快门摄像头805的示例。滚动快门摄像头805包括滚动快门传感器810,其包括一组传感器行815。在一个实例中,滚动快门传感器810的不同传感器行815配置成按顺序而不是同时集成和/或读出由不同传感器行815捕获的传感器数据。例如,滚动快门传感器810可以在初始行(例如,传感器行815的顶行或底行)处开始积分,读取初始行,然后继续积分并读取传感器行815的后续行。因此,当使用滚动快门传感器810拍摄图像时,每个传感器行815具有不同的积分和/或读出时间戳,并且从不同的传感器行815输出的传感器数据之间将存在时间偏移。
图8B示出了包括第一滚动快门摄像头805A和第二滚动快门摄像头805B的立体对滚动快门摄像头820的示例。在一个实例中,第一和第二滚动快门摄像头805A和805B在曝光时间上同步,使得第一和第二滚动快门摄像头805A和805B的对应传感器行具有公共读出/积分时间戳。
在一个实现中,系统利用一对立体滚动快门摄像头820来捕获环境的图像。例如,图9A示出了头显900,其使用滚动快门摄像头820的立体对捕获包括物理对象905的环境的立体对。头显900对使用滚动快门摄像头820的立体对捕获的立体对图像执行深度计算,以生成深度映射910,深度映射910包括代表环境中的物理对象905的深度数据915。
但图9A示出深度映射910包括滚动快门伪影。如图9A所示,滚动快门摄像头820在包括时间点1到N的时间间隔上捕获立体图像对。在某些情况下,在包括时间点1到N的整个时间间隔内,操作头显900的用户改变其头部位置,对于不同的时间点1到N中的每一个,其产生头显900的单独姿势(即姿势1到N)。当每行在稍微不同的时间开始和结束曝光时间时,不同的拍摄姿势1到N可在由立体对滚动快门摄像头820拍摄的图像中产生滚动快门伪影。因此,基于捕获的图像生成的深度映射910可以包括滚动快门伪影(如图9A所示)。
图10A-12C说明了用于补偿可能存在的滚动快门伪影的示例技术。
如上所述,滚动快门传感器810的传感器行815具有不同的积分和读出时间点(例如时间点1到N),并且与滚动快门传感器810相关联的头显可以在不同的时间点(例如姿势1到N)具有单独的姿势。图10A-10C示出了在不同积分/读出时间点识别与头显1000相关联的姿势的示例,同时使用包括30个传感器行的滚动快门传感器拍摄图像1010。
例如,图10A示出了在滚动快门传感器的行1积分/读出以生成图像1010的时间点1期间处于姿势1的头显1000。如所述,头显1000可以使用惯性追踪和/或视觉追踪系统来识别姿势1。在一个实现中,头显1000将所识别的姿势1与时间点1相关联,时间点1是拍摄图像1010时的行1的读出/积分时间点。
类似地,图10B示出了在滚动快门传感器的行15积分/读出以生成图像1010的时间点15期间姿势15处的头显1000。图10B示出了姿势15与姿势1分离,并且姿势15不同于姿势1。在一个实现中,头显1000将所识别的姿势15与时间点15相关联,时间点15是拍摄图像1010时第15行的读出/积分时间点。
另外,图10C示出了在滚动快门传感器的行30积分/读出以生成图像1010的时间点30期间姿势30处的头显1000。图10C示出了姿势30与姿势1和15分开,并且姿势30不同于姿势1和15。在一个实现中,头显1000将所识别的姿势30与时间点30相关联,时间点30是拍摄图像1010时第30行的读出/积分时间点。
当滚动快门传感器捕获环境的图像时,头显1000可以将姿势与滚动快门传感器的任意数量的行和/或读出/积分时间点相关联。比如在一个情况下,,当滚动快门传感器捕获环境的图像时,头显1000将单独的姿势与滚动快门传感器的每一行和/或读出/积分时间点相关联。图10C进一步示出,在一个实现中,使用滚动快门传感器捕获的图像1010包括图像1010中表示的对象的纹理信息1020。另外,图10C示出了由滚动快门传感器捕获的图像1010可以描述为具有多行图像数据1015,其中每行图像数据1015对应于滚动快门传感器的传感器行。
图11示出了至少使用由滚动快门传感器捕获的图像1110生成深度映射1130的示例。图11的图像1110和图像数据1115的行对应于图10C的图像1010和图像数据1015的行。在一个实例中,头显对图像1110执行深度处理1120(例如立体匹配),从而生成深度映射1130。另外,图11示出深度映射1130可以描述为具有与图像数据1115的行相对应的深度数据1135的行。因此,每行深度数据1135可对应于滚动快门传感器的传感器行。
图12A-12C示出了头显1200的示例,所述头显1200使用基于包括滚动快门伪影的图像生成的深度映射1230来执行非投影操作1240,从而生成包括3D对象905的环境的3D表示1245。但与上面描述的图9B相反,头显1200执行取消投影操作1240来生成3D表示1245。
在一个实例中,头显1200按顺序(例如,而不是并行地)对深度映射1230的每一行深度数据执行非投影操作1240。例如,图12A描绘头显1200对位于深度映射1230的深度数据的行6上的点执行非投影操作1240-6。在某些情况下,头显在对第6行之前的深度数据行执行非投影操作之后,对深度数据的第6行执行非投影操作1240-6。
在一个实现中,头显1200使用与头显1200相关联的姿势执行非投影操作1240-6,同时集成/读出头显1200的滚动快门传感器的传感器行6,以形成用于生成深度映射1230的图像(例如,图11中的图像1110)。例如,在一个实施例中,头显1200使用在时间点6处针对行6存在的姿势6执行非投影操作1240-6。
图12B描绘了头显1200对位于深度映射1230的深度数据的第15行上的点执行非投影操作1240-15。在一个实现中,头显1200使用与头显1200相关联的姿势执行非投影操作1240-15,同时集成/读出头显1200的滚动快门传感器的传感器行15,以形成用于生成深度映射1230的图像。
图12C示出,通过每行执行非投影操作1240,每行深度数据使用在滚动快门传感器捕获对应行图像数据的时间点存在的姿势进行非投影,头显1200可以补偿可能已经存在于深度映射1230和/或用于生成深度图1230的图像中的滚动快门伪影,并生成3D表示1245。例如,3D表示1245包括模拟物理对象905的真实世界形状的物理对象905的表示。
系统可将环境的3D表示用于各种目的。例如,图13示出了头显1300生成包括物理对象905的环境的校正图像1330的示例。在一个实现中,头显1300通过使用单个姿势对3D表示1345的各个3D点执行投影操作1350来生成校正图像1330。
由于三维表示1345补偿用于生成三维表示1345的深度映射中可能存在的滚动快门伪影(例如来自图12A-12C的深度映射1230),因此基于三维表示1345生成的校正图像1330同时将补偿此类滚动快门伪影。
图13同时示出,在一些情况下,校正图像1330包括纹理信息1310,纹理信息1310可以基于包括物理对象905的环境的一个或多个图像。例如,在一个实现中,纹理信息1310基于用于形成三维表示1345的深度映射的环境的一个或多个图像的纹理信息。例如,用于生成用于形成三维表示1345的深度映射的环境的一个或多个图像同时可用于对三维表示进行纹理化。例如,对于每个像素,头显1300可以从对应像素识别纹理信息。
在取消投影深度数据的像素以获得三维表示1345的三维点之后,头显1300可以基于对三维表示1345的三维点的投影操作1350将识别出的纹理信息应用于校正图像1330的像素。值得注意的是,校正图像1330的纹理信息1310可以补偿用于生成深度映射的图像中可能存在的任何滚动快门伪影。
相关专利:Microsoft Patent | Systems and methods for correcting rolling shutter artifacts
名为“ Systems and methods for correcting rolling shutter artifacts”的微软专利申请最初在2021年5月提交,并在日期由美国专利商标局公布。