本公开涉及用于飞行时间(tof)深度感测中的干扰处理,并且更具体地涉及用于多相机环境中的tof深度感测中的干扰处理。
背景技术:
用于飞行时间深度估计的成像系统可以发射光(例如,红外光)以照亮场景,并且可以使用来自场景的反射光来估计深度。在使用多个摄像机的情况下,从其他成像系统发出的光也由主成像系统的图像传感器接收,从而导致干扰。干扰可能是由于相机无法区分光源和其他光源发出的光接收光。
附图说明
图1是根据本公开的实施例的示例成像系统的示意图。
图2a是用于估计深度的示例性照明方案的示意图。
图2b是获得示例深度帧的示意图。
图3a-b是根据本公开的实施例的示例多相机系统的示意图。
图4a是用于拍摄深度帧的单个主相机快门脉冲束方案的示例的示意图。
图4b是由于干扰摄像机的照明脉冲束被添加到主摄像机自身的照明脉冲束而在主摄像机处发生的示例干扰方案的示意图(未显示主摄像机自身的照明脉冲束,而是干扰摄像机的照明脉冲束覆盖到主摄像机的快门脉冲束,如图4a所示)。
图5a是根据本公开的实施例的用于确定可用脉冲方案定时位置的示例过程流程图。
图5b是如何感测脉冲束之间的“死区时间”以在无干扰或低干扰操作中交错多个摄像机的示意图的另一示例。
图5c是配备有诸如光电二极管的附加光敏器件的示例成像系统的示例示意图,该光敏二极管可以用作连续运行的环境光传感器,用于确定如图5b中的可用时隙。
图6a-d是根据本公开的实施例的示例脉冲方案的示意图。
图7是根据本公开的实施例的两个干扰成像系统的示例脉冲方案的示意图。
图8是根据本公开的实施例的成像传感器中的奇数和偶数行像素的示例脉冲和快门方案。
图9a-b是在成像传感器中记录在奇数和偶数值像素行中的信号的理论值的示例公式。
图10是根据本公开的实施例的用于执行脉冲方案的定时序列的示意图。
图11是根据本公开的实施例的使用s0和s0值确定s0^最终像素值、使用s1和s1值确定s1^像素以及使用s0^和s1^值确定深度值的示意图。
图12是根据本公开的实施例的用于通过干扰处理估计最终像素值的过程流程图。
图13是根据本公开的实施例的用于估计像素的深度的过程流程图。
图14是示出根据本公开的实施例的干扰避免方案的示意图。
图15是图示根据本公开的实施例的干扰消除方案的示意图。
图16是说明根据本发明的实施例的组合干扰消除方案的乘法效应的示意图。
图17是说明互相关的示意图。
图18a-c是示出根据本公开的实施例的将相机添加到相机系统的示意图。
图19是根据本公开的实施例的用于执行干扰避免的过程流程图。
图20是根据本公开的实施例的用于执行干扰消除的过程流程图。
具体实施方式
第一节:通过时间交织进行干扰处理
图1是根据本公开的实施例的示例成像系统100的示意图。成像系统100包括图像传感器102。图像传感器102可以是电荷耦合器件(ccd)传感器、cmos图像传感器(cis)或具有全局快门机构的任何阵列成像器。成像系统100可包括一个或多个图像传感器102。图像传感器102可包括用于颜色区分的滤光器或其他机构。图像传感器102可包括像素阵列,该阵列具有可单独控制的像素。例如,可以打开图像传感器的每个像素以收集电荷或关闭电荷,以便不收集电荷。通过扩展,可以打开或关闭图像像素阵列的每一行。同样通过扩展,形成整个阵列的每一行可以同时(或基本上同时)打开或关闭(即,可以打开或关闭像素阵列)。像素从关闭切换到关闭可以类似于机械快门的打开和关闭。图像传感器102可包括机械快门。但是这里的术语“快门”也可以指像素的电控切换以在一段时间内收集电荷然后停止收集电荷。
成像系统100还可以包括可以发射光118的光源116。在一些实施例中,光源116可以是激光器,例如红外激光器,并且发射的光118可以是红外光。
图像传感器102的快门和光源116的脉冲定时可以由定时发生器112控制。在操作期间,定时发生器112可以使光源116发射光脉冲118并且还可以发信号通知快门打开(收取费用)并关闭(停止收取费用)。脉冲方案的示例在图2a-b中示出。
从光源116发射的光118可以反射物体并且由图像传感器102在成像系统100处接收。反射光120可以由透镜106聚焦。虹膜104可以用作开-关快门以控制是否在图像传感器102处接收到光120。
所接收的光120由图像传感器102转换为电荷。更具体地,每个像素接收光,并且在每个像素处收集的光被转换为与像素位置相关联的电荷。集体电荷被传输到模拟前端(afe)110以进行处理。afe110还包括用于来自定时发生器112的定时信息的输入。afe110可以将图像数据发送到深度处理器114以进行深度估计。
图2a是由(a)光脉冲束和无照明周期以及(b)每个光脉冲相对于不同快门的定时组成的照明方案的示例的示意图。在该示例中,图像传感器捕获三束图像。在第一束s0中,基于例如22ns脉冲发射光,并且打开快门一段相应的时间。快门脉冲打开图像传感器的快门,以便图像传感器可以捕获反射光。由于往返时间延迟,在快门关闭之前,图像传感器捕获一部分发射光。在第二脉冲束206中,基于22ns脉冲发光并且快门打开相应的时间段,但是在第二束s1206中,快门脉冲被延迟相当于激光脉冲长度的时间量(例如,在图2的示例中为22ns)。在束s1中,在快门打开时捕获从场景反射的光的一部分。可以使用来自s0和s1的信息计算发出的光的往返行程时间。另外,第三束bg208可以包括没有光发射的快门脉冲以捕获背景光反射(即,来自背景或环境光的反射而不是来自成像系统的发射光的反射)。每个束可以多次执行,并且收集的电荷可以在这些多次测量期间保持累积,以便增加snr和深度测量的准确度。
图2b是获得示例深度帧的示意图。在图2b中,s0束204可以产生s0帧205;s1束可以产生帧207;bg束可以产生bg帧209。可以使用帧s0、s1和bg的组合(即,通过去除bg)来创建深度帧210。用于计算深度的示例等式包括:
(s1-bg)/[(s0-bg)+(s1-bg)]*(ct_ld/2),其中c是光速,t_ld是光源发出的光脉冲的持续时间。
图3a-b是根据本公开的实施例的多相机系统的示例的示意图。图3a示出了示例性多相机系统300。多相机系统300包括相机1302,相机2304和相机3306。每个相机对捕获包括对象308的场景的深度图像感兴趣。相机1302朝向物体308发射光312并且将使用来自物体308的反射光来执行深度估计。出于类似的目的,相机2304和相机3306也朝向物体308发光(分别为314和316)。
在图3b中,从物体反射的光可以包括从所有三个相机发射的光。例如,由相机1302接收的光可以包括光322,其包括最初从相机1-3发射的光。同样,对于摄像机2和3。因为摄像机的光和快门脉冲相对于彼此定时以估计自身光脉冲的往返时间并因此估计深度,所以从其他光源接收光会产生干扰和扭曲深度估计。
图4a是用于拍摄深度帧的快门脉冲方案400的示例示意图。在图4中,每个矩形块表示脉冲束:例如,块204表示来自图2a的一束s0快门;方框206表示来自图2a的一束s1快门;框208表示来自图2a的一组bg快门。还示出了束组401之间的死区时间402,即没有进行测量并且没有发送光脉冲的时段。在该示例中,每个束组401执行6次,其中在脉冲束,先前脉冲束或跟随脉冲束之间可存在死区时间。
图4b是由于干扰相机的照明脉冲束被添加到主相机自身的照明脉冲束而在主相机处发生的示例干扰方案的示意图450。主摄像机自身的照明脉冲束未在图4b中示出,相反,干扰摄像机的照明脉冲束覆盖到图4a中所示的主摄像机的快门脉冲束,以说明主摄像机在其快门打开时可能正在接收干涉照明的事实。如果在来自其他相机的干扰光脉冲期间快门打开,来自其他光源的光可能会使自身光脉冲的测量失真、降低信噪比或导致摄像机自身光线的往返时间不正确脉冲。
本公开描述了通过交错脉冲束的干扰处理。如果在相机之间可以实现中央同步方案,则可以控制相机以按特定顺序发射光脉冲束,从而不发生重叠。如果同步太难或不可能,则进入景观的每个附加摄像机都被编程为首先通过一系列测量确定脉冲景观以找到“安静”间隔。然后,摄像机可以使用静音间隔放置自己的脉冲束。在本公开中,术语“脉冲景观”可以暗示在相同环境中由其他相机发射的脉冲束的图案的添加或集以照亮场景。
为了增加可用的“安静”间隔的数量,每个摄像机可以有意地增加光脉冲束之间的死区时间,例如通过将其帧速率抽取一定数量n,这这使得可以适应景观的相机数量增加约n倍,而不会相互干扰。每个相机用于光脉冲束的占空比也是预定的(例如,由相机制造商),使得占空比基本相同。如果工作循环未标准化,仍可能发生重叠。减小脉冲束的占空比也会增加脉冲束之间的死区时间,从而增加可以适应景观的相机数量而不会相互干扰。由于占空比减小而导致的功率降低可以通过相机上的功率或照明源的数量的等效增加来补偿,以便保持类似的snr。
进入多摄像机环境的摄像机(或者当进入时创建多摄像机环境的摄像机)可以开始感测(例如,通过打开其快门预定的一段时间)景观以找到下一个可用的点。相机可以按如下方式执行其可用性搜索:
图5a是根据本公开的实施例的用于确定可用脉冲位置的示例过程流程图。相机首先打开其快门以检测来自其他相机的光脉冲(502)。相机可以通过测量在特定时间段内在几个实例处接收的光来确定是否存在可用时隙(504)。相机可以确定每个测量实例中具有相同(或基本相同)值的收集光信号的量(506)。相机还可以检测异常值的存在,异常值指示从一个测量实例到第二测量实例的光强度的变化(或者除了背景噪声之外没有任何光强度)(508)。例如,相机可以识别具有与相邻的测量光值组不同的值的光测量值。
然后,相机可以在与异常值一致的时间实例和在与异常值相邻的时间实例打开其快门(510)。然后,摄像机可以确定异常值是否指示可用的时隙(或者,如果不是,则摄像机可以确定异常值指示第一脉冲束和第二(不同)脉冲束之间的边界,其周围有斑点,并在离群值附近以更精细的时间分辨率进行进一步的测量,以确定没有光强度或光强度很小的时隙)(512)。相机可以使用可用的脉冲束用于其自身的深度估计(514)。
图5b是如何感测死区时间以交错多个摄像机以进行无干扰或低干扰操作的示意图的另一示例。具体地,图5b示出了描述如何可以使用由光电二极管或其他光敏器件(类似于图5c中的那个)组成的可以添加到图1的附加电路来确定确定一个时间段的示例协议,在这个时间段内没有其他摄像机正在发光,或者在此期间发射足够弱,以便新摄像机可以开始使用该时隙。光电二极管或光敏器件可以与adc结合使用,通过以预定的采样率测量环境光来连续监测环境光(552)。如果摄像机正在进入多摄像机环境(因此先前未被分配到在步骤554确定的时隙),则摄像机可以通过处理或检查从光电二极管或光敏器件获得的时间信号来确定可用时隙(556)。在来自其他干扰源的环境光量低于预定阈值或不存在的时段期间,该相机可以选择发光。对于随后的帧,相机可以继续发光并在该确定的时隙中进行测量(558)。在图5b中,如果先前已将摄像机分配给时隙,则它可以继续发光并通过直接从步骤554移动到558在其已被分配的时隙中进行测量。
在图5b中,已经分配给时隙的摄像机可以使用光电二极管或光敏设备(552)的测量值来连续监视其自己的时隙和/或其他时隙中的干扰,并且如果其自己的插槽开始接收超出预定阈值的干扰,则由于附加摄像机的到达、相对时钟漂移等,或者如果具有较低干扰的其他插槽可用,则决定切换到另一个插槽。
在图5b中,在非常不可能的情况下,几个摄像机恰好在同一时间实例启动,许多或所有摄像机可能正在感测环境而没有主动照亮它以确定它们可以发射自己的脉冲束的时隙,从任何给定摄像机的角度来看,导致对干扰量的不准确描述。为了避免这种模糊,在步骤552之前要采取的另一个初始步骤可以包括在每个相机本地生成随机或伪随机数,其可以与以例如帧或秒测量的时间量成比例,该特定相机将在开始测量背景干扰之前等待。由于通过适当地选择产生随机数的概率分布,可以使任何两个相机产生相同随机数的可能性尽可能小,因此该操作允许摄像机按照生成的随机数排序所规定的顺序开始测量干扰。因此,即使在同一时间实例启动摄像机,图5b中描述的过程仍将是合适的。
在一些示例实施例中,图5b中的可用时隙的识别可以包括将期望的发射模式与测量的接合函数互相关。相机系统可以识别用于发光的期望发射模式,以捕获来自场景的深度图像。可以将所需的发射模式预编程到相机中。期望的发射模式包括光强度值(或相应的“高”二进制值)和每个光强度值的发射定时,以及占空比和其他信息。用于发射激光脉冲的可用时间周期的位置可以基于将期望发射模式与测量的接合函数互相关来确定,例如,提供关于接合时隙的信息的测量的光强度值组。可以选择互相关最小或低于预定阈值的时滞值作为发射的可用时隙的开始。可以以流方式执行互相关以识别用于发射的可用时隙。
可以通过光电二极管接收光来产生测量的接合功能。通过首先通过adc采样然后通过将光强度与每个时间实例的阈值进行比较,可以将光值转换为数字值。如果光强度值超过阈值,则为参与功能中的相应时间实例分配高或1二进制值;如果光强度值没有超过阈值(或者如果它等于阈值),则为参与功能中的相应时间实例分配低或0二进制值。
图5c是类似于图1中的示例性成像系统150的示例性示意图,其进一步配备有光敏器件560,例如光电二极管,其可以用作连续运行的环境光传感器,用于确定如图5b所描述的可用时隙。在该示例中,光电二极管560可以感测源自干扰相机和主相机的环境光568(因此可以包括来自主相机自身的照明脉冲的光120)。光电二极管可以基于其感测的环境光产生电流,该电流可以通过运算放大器562在其反馈路径中利用电阻器转换为电压值。该电压值可以由n位模数转换器564(adc)采样,其将采样馈送到控制逻辑单元(566)。然后,控制逻辑可以确定哪些时间实例没有干扰或具有低干扰,并且更新定时发生器112以便相应地放置照明脉冲并打开快门。
图6a-d是根据本公开的实施例的示例快门脉冲方案的示意图。图6a-d示出了用于四相机环境的快门脉冲方案。照明脉冲可以与这些快门对齐地发送出去,或者延迟预定量,类似于图2a中的示例。照射脉冲和快门脉冲之间的延迟量可以比脉冲束之间的间隔小几个数量级;因此,出于所有实际目的,可以认为照明脉冲也与快门脉冲对准。此外,在快门打开的一些时段期间,可能没有照明,例如图2a中的背景测量时段208。因此,照明脉冲束甚至可以跨越比快门脉冲束更窄的时间段。
在图6a中,示出了脉冲方案600。脉冲方案600包括第一快门脉冲束602。图6a还示出了快门脉冲束602之间的死区时间604。
图6b示出了用于两个相机环境的交错脉冲方案650。用于第二相机的脉冲束608在死区时间604内定时(现在由相机2的脉冲束608占据)。
图6c示出了用于三个相机环境的交错脉冲方案660。在脉冲束610之间仍然存在死区时间612。
图6d示出了用于四相机环境的交错脉冲方案670。脉冲束614在先前死区时间612内定时。
当预期有更多数量的摄像机时,可以减少每个脉冲束的占空比,以引入更多可用于容纳新摄像机的死区时间。减小的占空比对应于降低的照明功率,这反过来可能导致snr降低。然而,这可以通过添加更多的照明源(例如更多的红外激光器)来减轻。例如,可以通过使激光器的数量加倍来补偿占空比减半。
第二节:通过互补快门序列进行干扰处理
通过使传感器阵列的一些像素捕获包括由相机自身光源发出的光以及由其他相机发出的背景光和光(干涉),以及通过几乎同时具有传感器阵列的一些其他像素捕获仅包括背景光和来自其他相机的光(干涉)的光,相机可以去除像素级的背景和干涉。没有背景光和干扰的像素值可以通过这两种类型的测量在算法上获得。捕获包括由相机自身光源发射的光以及由其他相机发射的背景光和光(干涉)的光的像素子集的示例可以包括传感器阵列的偶数行中的所有像素。几乎同时捕获仅包括背景光和来自其他相机的光(干涉)的像素子集的示例可包括传感器阵列的奇数行中的所有像素。可以使用像素子集的其他配置;然而,这个偶数子集和奇数子集的例子在下面进一步说明:
在一些实施例中,相机可以针对两个不同的像素子集使用两个互补的随机快门序列,例如,奇数和偶数的像素行,使得像素的子集之一(例如,偶数行)仅在其他子集(例如,奇数行)不收集时才收集光,反之亦然,例如,通过逐个像素地或逐行地电控制光的集。使用逐行的基础作为示例,实施例可以包括使用例如图像传感器的偶数行中的像素捕获由相机自身光源发出的光、来自其他相机的背景光和干涉光,以及使用例如奇数行中的像素捕获背景光和干涉光。
第一定时脉冲序列可以触发快门序列s0和s0:高快门脉冲可以打开与摄像机光源同步的快门,以便捕获包括由摄像机自身光源发出的光的光(s0);和
在第二操作中,低快门脉冲可以打开快门以捕获不包括来自摄像机自身光源的发射光(例如,背景和干扰)的光(s0)。
第二定时脉冲序列可以触发快门序列s1和s1:高快门脉冲可以打开与摄像机光源同步的快门,以便捕获包括由摄像机自身光源发出的光的光(s1);和
在第二操作中,低快门脉冲可以打开快门以捕获不包括来自摄像机自身光源的发射光(例如,背景和干扰)的光(s1)。
在附近像素或相邻像素处捕获的原始s0和s0值可以在数学上组合以获得每个像素的处理值s0^,其仅包含相机自身光源发出的光线,不包含背景光或其他相机的干扰光。类似地,可以在数学上组合在附近像素或相邻像素处捕获的原始s1和s1值,以获得每个像素的处理的s1^值,其仅包含相机自身光源发出的光,而不包含背景光或其他相机的干涉光。如此获得的经处理的s0^和s1^值可用于获得每个像素的深度估计。下面更详细地描述获得最终处理的像素s0^和s1^以及从它们获得深度估计的过程。
图7是根据本公开的实施例的示例脉冲方案700的示意图。脉冲方案700示出了两个相机如何在不捕获单独的背景帧的情况下执行脉冲方案执行。对于某些像素,每个相机使用s0快门/照明序列收集光,对于其他像素使用s0快门/照明序列,对于某些像素使用s1快门/照明序列,对于其他像素使用s1快门/照明序列。
更具体地,相机1可以针对图像传感器网格的一部分执行例如100s0702快门脉冲,并且针对光发射脉冲706和712分别针对传感器阵列的相同部分执行s1708快门脉冲。脉冲方案700还包括打开快门的脉冲(s0704和s1710),而没有为传感器阵列的另一部分发射光脉冲。
脉冲方案720适用于摄像机2。摄像机2可以分别对图像传感器阵列的一部分执行4000s0’722快门脉冲,并且对于4000个光发射脉冲726和732,对于传感器阵列的相同部分执行s1’728快门脉冲。脉冲方案720还包括打开快门的脉冲(s0'724和s1’730),而没有为传感器阵列的另一部分发射光脉冲。
图8是根据本公开的实施例的用于执行脉冲方案的定时序列800的示意图。定时序列800表示图7中所示的脉冲方案的详细透视图(例如,对应于s0快门序列的脉冲序列804的脉冲方案702,以及对应于ld照射序列的脉冲序列806的脉冲方案706)。
在图8的示例中,生成随机图案802以指示s0的快门脉冲和激光激活。当图案指示零或低值时,光源810不发光。然而,来自图像传感器阵列的奇数行(例如)收集背景和干涉光(即,奇数行:快门808打开;偶数行:快门804关闭)。奇数行快门808保持打开预定的时间量,然后关闭。当图案指示一个或高值时,光源806发出光,并且来自图像传感器网格的偶数行收集背景和干涉光(即,偶数行:快门804打开;奇数行:快门808关闭)以及光源810发出的光。在预定数量的脉冲迭代(例如,4000)之后,s0像素值等于图9a中提供的等式给出的值。图9b提供了图9a的等式中的量的图例。该等式表明,使用s0序列获得的像素值包含与相机自身光源发出的光相对应的期望值,加上对应于背景光加干涉光的误差项;而使用s0序列获得的像素值仅包含误差项。因此,可以从使用s0脉冲序列获得的像素值中识别并去除误差项。
应当理解,用于收集的s0和s0值的像素或像素行可以与上述不同。例如,可以从奇数行获得s0像素值,并且可以从偶数行获得s0像素值。
图10是根据本公开实施例的用于执行脉冲方案的定时序列1000的示意图。在图10的示例中,生成随机图案1002以指示s1的快门脉冲和激光激活。随机图案1002可以与随机图案802不同。当图案指示零或低值时,光源1010不发光。然而,来自图像传感器阵列的奇数行收集背景和干涉光(即,奇数行:快门1108打开;偶数行:快门1004关闭)。奇数行快门1008保持打开预定的时间量,然后关闭。当图案指示一个或高值时,光源1006发射光,并且来自图像传感器网格的偶数行收集背景和干涉光(即,偶数行:快门1004打开;奇数行:快门1008关闭)。在实施例中,快门脉冲可以相对于光脉冲延迟预定量。在预定数量的脉冲迭代(例如,4000)之后,s1像素值等于由与图9a中提供的方程类似的方程给出的值。该等式表明,使用s1序列获得的像素值包含对应于由相机自身光源发出的光的期望值,加上对应于背景光加干涉光的误差项;而使用s1序列获得的像素值仅包含误差项。
图11是根据本公开的实施例的使用s0和s0值确定s0^最终像素的示意图。还提供了用于提供使用s0^和s1^的值的深度的公式。
图12是根据本公开的实施例的用于通过干扰处理估计最终像素值的过程流程图1200。成像系统的定时发生器(例如,包括线性反馈寄存器lfsr)可以产生随机定时序列,用于激活光源并打开成像传感器的像素子集的快门。在这里提供的示例中,在接收到高定时信号(1202)时,光源激活预定时间段,并朝向场景发射光,光被反射回成像系统(1204)。在预定量的时间之后,光源停用。激活到停用的时间段可以是几十纳秒的量级。高信号还触发用于图像传感器上的第一像素子集的快门的打开;快门的打开可以与激光器的激活一致,或者快门的打开可以从激光器的激活延迟(1206)。当快门打开时,图像传感器上的第一像素子集可以收集来自相机自身光源的场景反射的光,以及来自背景光和其他有源光源的场景反射光(1208)。在预定时间段之后,快门关闭(1210)。可以针对接收到的每个高信号重复步骤1204-1210,其可以发生多达500到4000次或更多次。作为示例,像素子集可以是图像传感器的行内的所有像素,诸如所有偶数行像素。
在这里提供的示例中,在接收到低定时信号(1212)时,为成像传感器的第二像素子集打开快门预定的时间量,然后关闭(1214)。作为示例,第二像素子集可以包括图像传感器的奇数行中的所有像素。低信号不会触发来自成像系统的光发射。因此,由第二像素子集收集的所有光包括背景光和从其他成像系统的其他光源接收的光(1216)。在预定量的时间之后,关闭快门(1218)。
可以执行步骤1204-1218预定次数的迭代(1220)。例如,在4000个高信号和低信号之后,成像系统可以开始处理由每个像素捕获的电荷。
成像系统可以确定第一像素子集(1222)的每个像素的像素值(称为第一像素值)。例如,s0k[i,j]的值可以基于诸如图9a中所示的等式来确定。成像系统可以确定第二像素子集(1224)的每个像素的像素值(称为第二像素值)。例如,s0k[i,j]的值基于诸如图9a中所示的等式。成像传感器可以基于s0k[i,j]和s0k[i,j]确定最终像素值s0^。作为示例,可以基于第一行中的两个相邻像素的第一像素值和来自与第一行相邻的第二行的第二像素值来确定s0^,对于两个相邻像素,第二像素与第一像素相邻(1226)。例如,可以基于s0k[i,j]和s0k[i,j]确定s0^k[i,j],如图9a所示。可以对构成具有期望分辨率的图像的所有像素重复步骤1222-1226的像素值计算(1228)。
可以使用唯一的定时信号重复图12中的过程以获取s1^。图13是用于基于两个最终像素值s0^和s1^估计像素的深度的过程流程图1300。成像系统可以基于第一随机定时序列(基于s0和s0的s0^)确定像素的第一集中的每一个的最终像素值s0^(1302)。像素的第一集包括传感器的每个对应物理像素的s0和s0。成像系统可以基于不同于第一定时序列的第二随机定时序列(基于s1和s1的s1^)确定像素的第二集中的每一个的最终像素值s1^(1304)。像素的第二集包括用于同一传感器的每个对应物理像素的s1和s1。成像系统可以基于s0^和s1^计算每个像素的估计深度,如图11(1306)所示。
iii.结合“干扰避免”和“干扰消除”
算法
本公开描述了由于同时操作的多个tof相机引起的干扰的两种解决方案:“通过时间交织的干扰处理”和“通过互补快门序列的干扰处理”。
在通过时间交错的干扰处理中,可以实现用于相机的策略,旨在为每个相机选择时隙,使得它们的测量周期不与其他相机的照明模式重叠,以避免不正确的飞行时间估计。由于摄像机主动感测环境(例如使用光电二极管)用于来自其他摄像机的环境照明并且“避免”存在这种照明的那些时隙,所以也简称为“回避算法”。图14说明了这个想法。注意,在该图中每个摄像机的照明周期被示为单个脉冲束,但是当存在摄像机使用的多个束时可以应用相同的想法(参见上面的图6a-6d)。为了简化说明,本公开将继续使用续集中的单个脉冲束进行讨论。
在本文所述的通过互补快门序列的干扰处理技术中,相机使用其像素的第一子集来测量源自其自身和干扰相机的照明,同时使用其像素的第二子集来测量仅源自干扰源的照明。如果每个摄像机根据其第一像素子集中精心选择的随机序列测量照度,并根据其第二像素子集中该随机序列的逻辑补码测量照度,然后,后一种测量可以代表污染第一像素子集的测量的干扰,并且可以减去该干扰以获得清洁测量的代表。如果由第二子集中的像素拍摄的减去的测量值与第一子集中的像素非常接近,则结果将改善。本发明描述一个实例,其中第一子集由偶数行中的像素组成,而第二子集由奇数行中的像素组成。图15总结了干扰消除技术。由于摄像机主动测量干扰并试图减去或“消除”干扰,因此该技术可简称为“消除算法”。
在实施例中,可以在避免算法中使用m个摄像机,因为来自更多数量的摄像机的照明束并不总是适合一帧的跨度。另外,n个摄像机可以在干扰消除算法下在相同时隙中同时操作。因此,为了实现更大的摄像机组(例如m×n)以及所需的干扰处理水平,本公开描述了以这样的方式组合这两种方法:可以处理的相机的数量是各个算法可以处理的数量的乘积。例如,如果在一帧中有6个非重叠时隙,则每个时隙可以用于容纳10个利用消除算法的摄像机,这被证明对于这么多摄像机是足够的。这使得可以同时操作60多个摄像机并具有可消除的干扰。图16示出了组合两种干扰处理算法的乘法效应。注意,每个单元的高度不一定代表该相机的激光功率,它仅仅是每个相机的示例性时隙分配的表示。(图18a示出了具有分配给不同时隙的不同功率电平的相机。)
将实现建议的时间分配的示例算法的摘要:
在开始进入场景的新相机的激光之前,记录来自光电二极管(pd)或类似光敏设备的环境光测量,持续几帧。
阈值这些测量值:低于阈值“th”的值应设置为0,高于阈值“th”应保持不变。
取阈值pd波形的导数(一阶差分)并应用阈值来检测当前相机正在操作的时隙的边缘(参见图16中的时隙)。
执行阈值光电二极管(pd)波形与自操作模式的指示功能的互相关。(只要摄像机“想要发光或进行s0、s1或bg等测量”,指示功能的值为1,其他时间的值为0)。每个时间实例的互相关值表示如果特定相机决定在该时隙内稳定下来的干扰量。图17示出了根据本公开的实施例的时隙之间的示例性互相关。
选择仅在检测到的时隙边缘计算的互相关的最小值。
指定摄像机在其边缘产生互相关的最小值的时隙中操作(从用于初始pd测量的前几帧的末尾开始)。如果有多个时隙获得相同的最小值,请使用第一个时隙以更有效地放置摄像机。(如果所有以前的摄像机遵循相同的策略,这可能永远不会发生)。
继续记录pd测量,对pd波形及其导数(具有可能和可能不同的阈值)进行阈值,如前面步骤所述,并运行互相关以监视时隙边缘处的干扰景观。如果出现代表不可接受的干扰水平的预定条件(例如特定相机中的s0、s1或bg中预定数量的像素饱和),则摄像机选择互相关具有的另一个时隙(第一)最低价值。(如果饱和度仍然存在,则算法可能已达到其干扰处理能力)。
这些操作中的至少一些将实时完成并且使用最小量的存储器,例如,通过仅保持最小互相关值的值和记录的时隙并随着时间的推移更新它。注意,该算法与当前的干扰避免算法非常相似。有两个重要的区别:
首先,pd输出的阈值处理是不同的。在组合算法中,如果pd输出的值高于阈值,则不将其设置为1。相反,它保持不变以保持该时隙中干扰量的确切值。
其次,确定阈值化pd输出与自操作模式的指示符函数之间的互相关的最小值,而不是搜索将使互相关为零的时隙。这种改变的原因是,当摄像机数量超过可用时隙数量时,摄像机可以选择没有空时隙(这会使互相关0成为0),相反,进入场景的新摄像机将尝试将其自身适合于与时隙边缘之一相对应的最小干扰时隙。
图18a-c示出了当新相机进入场景时从新视角的角度看的示例性照明风景。在图18a中,每个时隙被相机占用(相机1-6)。在图18b中,新摄像机,摄像机7将选择要操作的最小干扰时隙,在这种情况下将是时隙4。一旦新相机,相机7将其自身插入风景中,与其共享相同时隙的另一个摄像机可能发现该特定时隙中的干扰已经达到了取消算法无法处理的水平,并且可能选择将其自身重新定位到新的时隙。这就是为什么每台摄像机即使在安静下来之后也会继续监控景观。为了避免不断改变其时隙位置的不稳定行为,在相机可以在该时隙中稳定之后和/或通过引入新相机检测到其时隙处的干扰电平已经增加到不可接受的水平之后,可以在这之前施加最小等待时间(以帧或秒为单位)。在图18c中,新摄像机8将时隙2识别为可用时隙,摄像机8被分配到该时隙中。
可以采用其他算法代替算法1。例如,新的摄像机可以按递增的顺序填充时隙(插槽1->插槽2->插槽3->...插槽6->插槽1->插槽2...)而不是选择最小干扰插槽,无论每个插槽的干扰电平如何。这可以减少确定插入摄像机的位置的计算并且更多地依赖于干扰消除算法本身的能力,因为干扰水平没有像算法1那样均匀地分布到可用时隙中。另一种算法是填充一个时隙,直到新的摄像机进入相同的时隙时才会饱和,有效地填满该时隙的容量,然后移动到下一个时隙。在这个方案中,例如前10个摄像机填满插槽1,然后第11个摄像机看到它饱和(如果它也进入相同的时隙),所以它移动到时隙2,第12个摄像机也加入时隙2,等等。
图19是根据本公开的实施例的用于干扰避免的过程流程图1900。该方法可以由成像系统实现,例如包括相机的设备。处理可包括通过所述成像系统的光传感器感测在一段时间内接收的光(1902)。成像系统可处理光传感器接收的光(例如通过至少部分地以硬件实现的控制逻辑)(1904)。处理接收的光可包括创建表示在该时间段内接收的光的时间序列波形。
在一些实施方案中,成像系统可处理时间序列波形。成像系统可从对应于干扰源发射的光的接收的处理的时间序列波形来识别时间实例,并基于所述时间实例来确定一组时隙。在实施方案中,处理时间序列波形包括获得表示所述时间序列波形的上升沿或下降沿的幅度和时间实例。
成像系统可基于处理的光来识别成像系统在该时间段内的可用测量周期(1906)。成像系统可通过将所述时间序列波形与时间窗口相关联以创建相关波形来识别可用测量周期。成像系统可识别所述相关波形指示最低干扰水平的时段。在实施方案中,成像系统可识别所述相关波形指示低于阈值干扰水平的干扰水平的时段。在一些实施方案中,成像系统可包括识别所述相关波形指示低于阈值干扰水平的干扰水平的第一时段,所述第一时段紧接在所述相关波形指示高于阈值水平的干扰水平的时段之后发生。
在实施方案中,成像系统可通过识别所述成像系统用于发送光脉冲的时间段内的一组时隙中的可用时隙来识别所述成像系统的可用测量周期。成像系统可通过识别占用时隙并识别未占用的占用时隙的未占用的占用时隙的后续时隙来从该组时隙中识别可用时隙。
在实施方案中,成像系统可通过从表示所述时间序列波形的上升沿的幅度和时间实例来识别时间实例对应于占用时隙的开始来确定该组时隙。成像系统可以基于时间实例对应于占用时隙的开始的确定来确定该组时隙。成像系统可通过下列方式来从获得的幅度和时间实例识别时间实例:识别在所述时间序列波形中大于或等于已知保护时段的保护时间间隔,在该时间间隔期间所述时间序列波形指示低于第一阈值水平的接收的干扰;和识别对应于代表在所述时间序列波形中的上升沿的幅度的时间实例大于第一阈值水平并且在时间上与识别的保护时间间隔相邻。
成像系统还可确定表示上升沿或下降沿的幅度包括大于第二阈值的值并且在基本上等于已知时隙长度并且在时间上与识别的保护时间间隔相邻的间隔内存在于时间序列波形中。
在实施方案中,处理时间序列波形包括获得表示所述时间序列波形的上升沿或下降沿的幅度和时间实例。成像系统可通过识别对于识别的时隙内的每个时间实例呈现低于阈值的幅度值的时隙来识别可用时隙。
在实施方案中,成像系统可通过下列方式来识别可用时隙:在每个时隙中累积时间序列波形的值;和识别在所述时隙中表现出最低累积值的时隙。
在实施方案中,成像系统可:识别与时隙相邻的保护时段;确定所述保护时段中高于第三阈值的信号干扰的存在;和确定帧内的另一个可用时隙。
成像系统可在一个或多个后续时间段中的相应测量时段期间发送和接收光(1908)。
图20是根据本公开的实施例的用于执行干扰消除的过程流程图2000。成像系统,例如包括处理器或其他控制逻辑的相机系统,可以生成序列(2002)或用其编程。序列可包括多个高值和多个低值并可包括序列长度。在一些实施方案中,产生序列可包括选择小于所述序列长度的模板序列长度,产生模板序列,包括等于所选择的模板序列长度的长度,和通过重复所述模板序列来产生具有序列长度的序列。
在一些实施方案中,产生模板序列可包括:产生长度为所述模板序列长度一半的子-序列;产生与是所述模板序列长度的一半的子-序列的互补子-序列;和通过联系所述子-序列和所述互补子-序列来产生模板序列。子-序列包括相等值的序列。
在一些实施方案中,产生序列可包括产生伪随机序列。伪随机序列可包括至少部分的金序列或其他的序列。
成像系统可产生像素值的第一集,所述像素值的第一集表示光传感器从场景接收的光,包括源自相机的光、背景光和源自其他相机光源的光(2004)。例如,产生像素值的第一集可包括基于序列的高值来激活光源和快门。
在一些实施方案中,产生像素值的第一集可包括使用图像传感器测量像素值的第一子集,所述像素值的第一子集表示从场景反射的光,包括源自相机系统的光、背景光和源自其他相机光源的光。成像系统可:通过内插所述像素值的第一子集来产生像素值的第二子集;和基于所述像素值的第一子集和所述像素值的第二子集来产生像素的第一集。
成像系统可产生像素值的第二集,所述像素值的第二集表示从场景反射的光,包括背景光和源自其他相机光源的光(2006)。例如,产生像素值的第二集可包括基于序列的低值来激活快门。
成像系统可基于所述像素值的第一集和所述像素值的第二集的函数来确定表示从场景反射的光的像素值的第三集(2008)。
在实施方案中,产生像素值的第二集可包括:使用图像传感器测量像素值的第三子集,所述像素值的第三子集表示从场景反射的光,包括背景光和源自其他相机光源的光;通过内插所述像素值的第三子集来产生像素值的第四子集;和基于所述像素值的第三子集和所述像素值的第四子集来产生像素的第二集。
在实施方案中,产生像素值的第三集可包括从像素值的第一集减去像素值的第二集。
在一些实施方案中,所述第一子集包括表示来自所述光传感器的偶数行的像素的像素值;所述第四子集包括基于来自所述光传感器的偶数行的内插像素值的像素值;所述第三子集包括表示来自所述光传感器的奇数行的像素的像素值;和所述第二子集包括基于来自所述光传感器的奇数行的内插像素值的像素值。