具体实施方式
在下面的描述中将阐述许多具体细节以便提供对于本发明的更加透彻的理解。但是本领域技术人员将认识到,可以在没有这些具体细节当中的一项或更多项的情况下实践本发明。在其他实例中,没有描述众所周知的特征以免模糊本发明。
图1示出了安装有照明系统110的结构100,其在本例中是一个房间。照明系统110包括一个或更多光源120以及用于控制光源120的一个或更多控制器(图1中未示出)。当由电信号驱动时,光源120照亮结构110的各个部分,来自各个光源120的照明贡献被显示为足迹125a-125d。光源120可以包括高/低压气体放电源、无机/有机发光二极管、激光二极管、白炽光源或卤素光源。照明系统110还可以包括遥控器130,从而允许用户控制光源120。
图2是根据本发明的一个实施例的照明系统200的示意图。照明系统200可以被用作图1所示的结构100中的照明系统110。如图所示,照明系统200至少包括系统控制器210和第一光源220-1,并且所述照明系统200被配置成根据光设定生成光输出205。在其他实施例中,所述照明系统可以包括附加的光源并且可选地还有附加的控制器以用于单独控制每一个附加光源。可替换地可以将单个控制器配置成控制多个光源。
照明系统200被配置成如下操作。如图2中所示,用于照明系统200的光设定被提供到驱动信号发生器230(其可选地可以被包括在照明系统200内)。所述光设定表明平均光输出205应当例如具有何种光功率(例如以流明定义)和颜色。所述光设定可以由用户通过遥控器130提供,或者可以被预先编程并且从控制场景设定的外部单元提供。可替换地,所述光设定可以被预先编程并且被存储在驱动信号发生器230内或照明系统200内的存储器中。驱动信号发生器230将光设定翻译成用于照明系统200内的不同光源的不同电驱动信号,并且把所述驱动信号提供到系统控制器210。在图2所示的实施例中,驱动信号发生器230把光设定翻译成用于第一光源220-1的第一驱动信号。系统控制器210又利用其对应的驱动信号来驱动不同的光源,从而产生光输出205。在图2所示的实施例中,系统控制器210被配置成利用第一驱动信号驱动光源220-1,从而产生光输出225-1。在该实施例中,照明系统200的光输出205包括光输出225-1。
如前所述,光设定表明照明系统200的光输出205应当例如具有何种颜色。可以通过对照明系统200内的不同光源(在图2中未示出附加的可选光源)进行不同地调光来实现光输出205的颜色改变,这是通过控制从驱动信号发生器230提供到系统控制器210的驱动信号而实现的。对于每个光源的恒定调光水平,从驱动信号发生器230提供到系统控制器210的驱动信号包括重复脉冲模式。这样的重复模式在这里被称作“驱动模式”。
用于对光源进行调光的各种方法是本领域技术人员所熟知的,因此这里不进行详细描述。这些方法例如包括脉冲宽度调制、脉冲密度调制或幅度调制。
系统控制器210还被配置成接收来自数据源240的信号245。信号245(至少)包括将要嵌入到光源220-1的光输出225-1中的代码。这样的代码在图3中示出。如图所示,代码310包括由N个符号(例如比特)构成的重复序列,其被显示为“序列1”。在下面的描述中,所述符号将被称作比特。但是应当认识到,每当在本申请中使用“比特”一词时,“符号”的更广泛定义适用,其还可以包括由单个符号代表的多个比特。一个例子是多级符号,其中不仅存在用以嵌入数据的0和1,而是存在多个离散级别。
代码310的每一个比特具有持续时间T bit 。因此,代码周期等于N*T bit 。所述序列例如可以代表光源220-1的局部化标识、其能力和当前光设定或者可以与光源220-1或照明系统200有关或无关的其他类型的信息。系统控制器210可以把代码310嵌入到光源220-1的光输出225-1中,这是通过响应于代码310对将被施加到光源220-1的驱动信号进行调制而实现的。用于把代码嵌入到光源的光输出中的各种技术是本领域技术人员所熟知的,并因此这里不进行详细描述。信号245还可以包括将要嵌入到其他光源的光输出中的其他类似代码。每一个代码包括由N个比特构成的不同重复序列。
图4是根据本发明的一个实施例的检测系统400的示意图。如图所示,检测系统400至少包括摄影机410、快门420和处理单元430。可选地,检测系统400还包括存储器440。摄影机410被配置成采集场景的一系列图像。快门420被配置成对摄影机410采集图像时的实例进行仔细地定时(当快门420打开时采集图像,当快门420关闭时不采集图像)。在各个实施例中,快门420可以包括处于摄影机410内部的传统快门,其只能在摄影机的帧时间期间打开及关闭一次(也就是帧内的预定持续时间的单次曝光),或者可以包括布置在摄影机前方的电子快门,其可以在单个帧期间打开及关闭多次。
例如取决于摄影机410的分辨率(即包含在每一幅图像中的像素数目)、在照明系统200内包括多少光源以及这些光源是同步还是异步操作,处理单元430可以被配置成实施用于对包含在所采集图像系列中的数据进行处理的不同方法,以便确定在场景内的特定位置处是否存在特定光源的光输出。
对于在检测系统400中实施的所有方法,处理单元430都可以使用包含在每一项所嵌入代码中的重复序列。在一个实施例中,照明系统200可以直接将该信息提供给处理单元430。在另一个实施例中,检测系统400可以包括存储该信息的存储器440。在又一个实施例中,检测系统400可以被配置成从(无线)接收到的光信号获得该信息。可替换地,处理单元430可以通过前面描述的任何措施不是获得包含在每一项所嵌入代码中的重复序列本身,而是获得其导出项(即可以从中获得该信息的参数)。举例来说,处理单元430可以获得特定已知序列的长度或者指代可能的序列集合当中的一个序列的指标编号。随后可以由处理单元430重复所述重复序列,从而潜在地减少提供到检测系统400的通信量。在另一个实施例中,可以从所接收到的光信号中提取出描述重复序列的参数。
情形1:一个光源,每帧单比特曝光
首先考虑这样一种示例性情形,其中照明系统200使得仅有一个光源(例如光源220-1)可以提供对于特定场景的光贡献。考虑所述场景是图1中所示的结构100的地板的一部分,并且光源220-1是图1中所示的在场景内(即地板上)具有足迹125a的光源120中的一个。为了简单起见,考虑被嵌入到光源220-1的光输出中的代码的重复序列只包括4个比特。这样的代码在图5中被显示为代码510。如图所示,每一个比特具有持续时间T bit 。因此代码周期等于4*T bit 。此外,考虑第一序列的各个单独比特c 1、c 2、c 3和c 4分别包括0、1、0和0,正如图5中的信号520所示。信号520可以被包括在图2中所描述的信号245中。
如前所述,通过利用响应于代码调制的驱动信号驱动光源220-1将所述代码嵌入到光源220-1的光输出中。在各个实施例中,系统控制器210可以通过例如利用脉冲宽度调制(PWM)、脉冲位置调制、脉冲密度调制或幅度调制实现的二进制或多级调制对驱动信号进行调制来生成已调驱动信号。举例来说,为了利用PWM嵌入来自信号520的二进制数值0,系统控制器210可以使得驱动信号内的驱动模式变窄一定数量a以嵌入来自信号520的二进制数值“0”,并且系统控制器210可以使得驱动信号内的另一个驱动模式变宽一定数量b以嵌入来自信号520的二进制数值“1”。通过使得数量a与数量b之间的比值等于信号520中的1和0的数目之间的比值,可以使得在照明系统的光输出中嵌入数据对于人眼不可见,这是因为已调驱动信号的时间平均值保持与原始驱动信号相同。本领域技术人员将认识到用于根据信号520调制驱动信号以便将数据嵌入到照明系统的光输出中的其他方法。
此外还假设检测系统400可以已经包含或者可以获得嵌入到光源220-1的光输出中的代码。
在这样的情形中,检测系统400可以被配置成按照下面的方式操作,以便确定在场景内的任意所选位置处是否存在光源220-1的光输出。
首先,摄影机410被配置成采集场景的一系列图像。为此,可以把摄影机的帧时间设定成比代码周期长一个比特,即5*T bit ,并且可以把摄影机的曝光设定成包括单个曝光实例,其持续时间等于代码周期的一个比特的持续时间,即T bit 。此外,摄影机410可以被配置成在每一帧的第一时间周期T bit 期间采集图像。在图5中利用线530示出了按照这种方式配置的摄影机410。
在取得图像时,摄影机采集照明系统在场景内的所有位置处的总光输出的强度。在本申请中,每当使用术语(光输出的)“强度”时,应当理解的是也包括“强度导出项”,比如光颜色、色温、光谱以及光强度的改变。图像通常被划分成多个像素,其中每一个像素代表照明系统在场景内的不同物理位置处的总光输出的强度。在当前的情形中,照明系统的总光输出可以仅仅包括来自光源220-1的光贡献。
由于摄影机的曝光时间被设定成等于代码的单个代码比特,因此图像的特定像素处的强度受到在取得图像时被编码到光源220-1的光输出中的比特值的影响。在图6a中示出了这样的第一图像(该图像对应于图5中所示的帧1)。光源220-1在场景内的足迹被显示为圆形610。如图所示,图像600-1被划分成150个像素的2D栅格,其中x方向上有10个像素,并且y方向上有15个像素。取决于所期望的分辨率。图像可以被划分成更多像素或更少像素。每一个像素代表照明系统在场景内的不同物理位置处的总光输出的强度。由于第一图像600-1是在利用第一代码比特c 1调制光源220-1的光输出时取得的(在图5中参见曝光530的帧1的摄影机曝光如何与信号520重叠),因此每一个像素处的强度是第一代码比特c 1与对应于坐标为(x,y)的像素的一个数值A x,y 的乘积,其中该数值是在没有利用特定代码比特对施加到光源220-1的驱动信号进行调制时所将具有的强度。因此,如图6a中所示,例如像素(4,5)处的强度等于A 4,5?c 1,像素(5,5)处的强度等于A 5,5?c 1,并且像素(7,6)处的强度等于A 7,6?c 1。应当提到的是,像素(8,12)和(9,2)处的强度被显示为等于零,这是因为光源220-1不对这些像素所代表的场景部分提供任何光贡献(所述像素处于足迹610之外)。
从曝光530可以看出,在摄影机410的帧2期间采集图像的图像系列当中的第二图像。第二图像在图6b中被显示为图像600-2。由于所述图像取自相同的场景,因此光源220-1在场景内的足迹610保持与第一图像中相同。由于第二图像600-2是在利用第二代码比特c 2调制光源220-1的光输出时取得的(在图5中参见曝光530的帧2的摄影机曝光如何与信号520重叠),因此每一个像素处的强度是第二代码比特c 2与对应于坐标为(x,y)的像素的一个数值A x,y 的乘积,其中该数值是在没有利用特定代码比特对施加到光源220-1的驱动信号进行调制时所将具有的强度。因此,如图6b中所示,例如像素(4,5)处的强度等于A 4,5?c 2,像素(5,5)处的强度等于A 5,5?c 2,并且像素(7,6)处的强度等于A 7,6?c 2。同样地,像素(8,12)和(9,2)处的强度被显示为等于零,这是因为光源220-1不对这些像素所代表的场景部分提供任何光贡献(所述像素处于足迹610之外)。
按照类似的方式,在帧3和4中,摄影机410分别采集图像系列当中的第三图像(600-3)和第四图像(600-4)。从图5中可以看出,由于摄影机410的曝光时间和帧时间关于代码510的配置方式,第三图像是在利用第三代码比特c 3调制光源220-1的光输出时取得的,并且第四图像是在利用第四代码比特c 4调制光源220-1的光输出时取得的。在图6c中示出了图像系列600-1、600-2、600-3和600-4,其中不同的图像被显示为在t方向(其中“t”代表“时间”)上延伸,从而标识各幅图像是在不同时间取自相同场景。
在采集了图像系列600-1到600-4之后,处理单元430可以处理所述图像系列,以便确定在场景内的所选物理位置处是否存在第一光源220-1的光贡献。
为此,在一个实施例中,处理单元430可以被配置成把所采集系列的对应于场景内的所选物理位置的像素序列与由N个符号构成的第一序列相关。为了说明这一点,考虑场景内的所选物理位置是对应于图像600-1到600-4上的像素(4,5)的位置。于是所采集系列的对应于该位置的像素序列包括来自每一幅图像的像素(4,5)。该序列被显示为图7中的序列710。序列710包括来自第一图像600-1的像素(4,5)(其被显示为像素720-1),来自第二图像600-2的像素(4,5)(其被显示为像素720-2),来自第三图像600-3的像素(4,5)(其被显示为像素720-3),以及来自第四图像600-4的像素(4,5)(其被显示为像素720-4)。如图7中所示,像素720-1到720-4处的强度分别等于A 4,5?c 1、A 4,5?c 2、A 4,5?c 3和A 4,5?c 4。因此,处理单元430把序列710与由N个符号构成的第一序列相关,其在当前情形中是图5中所示的序列1并且在图7中再次被显示为序列730。
作为所述相关的结果,生成具有至少一个峰值的第一相关输出。如前所述,相关输出通常包括若干个“峰值”,其中一些峰值小于其他峰值,并且代表相关处理中的伪信号。这样的小峰值在这里被称作“子峰值”,并且术语“峰值”在这里被用来描述相关输出当中的表明在序列710内存在序列730的峰值。该峰值在相关输出中将明显高于各个子峰值,并且本领域技术人员可以很容易识别这样的峰值。因此,基于序列710与序列730的相关,如果相关输出包括峰值,则处理单元430能够确定在场景内的所选物理位置处存在第一光源220-1的光贡献。通过把对应于场景内的所选位置的来自图像600-1到600-4的像素序列与序列730相关,可以对于场景内的任何其他所选物理位置施行类似的相关。
此外,当在场景内的所选物理位置处存在第一光源220-1的光贡献时,通过把序列710与序列730相关允许处理单元430确定第一光源220-1在该位置处的光贡献,即数值A x,y 。通过对于所述图像系列的每一个像素施行这样的相关,可以对于图像内的所有像素获得数值A x,y ,从而允许处理单元430确定光源220-1在场景内的足迹,正如图6d中所示出的那样。
如果被嵌入到照明系统的光输出中的数据包括某种标识符,比如光源的标识符,则可以按照前面描述的方式识别出的不同光源的数目取决于代码周期的长度。举例来说,对于包括由N个二进制数值构成的重复序列的同步Walsh-Hadamard代码,可以识别出N个不同的光源,这意味着处理单元430可以确定在场景内的特定位置处是否存在所述N个不同光源当中的任一个的光贡献,并且可选地确定这样的光贡献的量值。利用被配置成在每一帧处具有单比特长曝光实例的传统的50Hz摄影机(即每秒可以取得50幅图像的摄影机),可以在1秒钟内采集到对于解析50比特的嵌入代码序列所必要的图像系列。
在一个实施例中,所嵌入代码包括具有良好自相关属性的序列。当被用在其中为每一个光源指派一项独有代码的系统中时,优选地想要这些代码是正交的。这方面的一个例子将是Walsh-Hadamard代码,其中代码的长度等于将为之指派代码的光源的数目。但是这些代码通常需要同步操作,这由于会增加复杂度因此不总是合乎期望的。因此,代码的另一种合乎期望的属性是具有良好的互相关属性,即代码之间的高自相关和低互相关。这样的代码的例子包括伪随机序列,利用线性反馈移位寄存器生成的代码,或者可能被用于码分多址通信系统的其他代码。
在另一个实施例中,为所有光源指派独有的开关频率,所述开关频率充当标识代码。这样也会产生低互相关和高自相关。
本领域技术人员将认识到,对于这里所描述的所有情形,可以由处理单元430实施用于对图像系列进行处理以便确定在场景内的所选物理位置处是否存在光源的光贡献的其他方法。举例来说,处理单元430可以生成由N个像素构成的各个序列(其例如对应于不同代码),并且确定这些序列当中的哪一个与所采集图像系列的对应于所选物理位置的像素序列相匹配(在本情形中是序列710),这可以例如通过最大似然性搜索来实现。也可以设想其他方法。
在其他实施例中,摄影机的帧时间可以被设定成T bit 的任意整倍数,只要所述帧时间不是代码周期的整倍数或整分数即可(在这种情况下每一幅图像将包含相同代码比特的各个数值)。举例来说,如果代码周期等于7*T bit ,则摄影机的帧时间可以被设定成比代码周期多两个比特或少两个比特,即9*T bit 或5*T bit 。此外,摄影机410可以被配置成在每一帧的任何时间周期T bit 期间采集图像,而不一定是在每一帧的第一时间周期T bit 期间进行。但是很重要的是使得曝光实例与代码的整个比特重合(也就是说每一个曝光实例基本上在应用新代码比特以便调制施加到光源的驱动信号时开始,并且在新代码比特的应用结束时结束)。
此外,在应对由N个比特构成的重复序列的其他实施例中,可以由处理单元430采集并处理多于N幅图像。在一个实施例中,这种措施可以被用来提高检测到光源的概率。举例来说,当采集2N幅图像时,可以在所述2个N幅图像集合内求平均,以便进一步抑制噪声对检测的影响。这在低光条件下是特别有利的,因为在所提出的方法中,曝光实例与曝光周期相比通常较小。
此外,可以使用多于N幅图像来跟踪不同光源的光贡献随时间的改变。前N幅图像可以被用来做出对于光贡献的第一估计,随后可以使用所有连续图像来基于方案的动态更新所述估计。
情形2:多个光源,每帧单比特曝光
现在考虑这样一种示例性情形,其中照明系统200使得两个光源可以提供对于特定场景的光贡献。考虑所述场景是图1中所示的结构100的地板的一部分,第一光源是图1中所示的光源120当中的在场景内(即在地板上)具有足迹125b的那个,第二光源是图1中所示的光源120当中的在场景内具有足迹125c的那个。照明系统200内的两个光源可以在同步模式或异步模式下操作。在同步模式下,对于两个光源所使用的嵌入代码序列在时间上完全重叠(也就是说第一嵌入代码的序列与第二嵌入代码的序列同时开始)。在异步模式下,对于两个光源所使用的嵌入代码序列在时间上不重叠(也就是说第一嵌入代码的序列与第二嵌入代码的序列的开始时间不同)。对于同步或异步操作模式,对应的所嵌入代码包括由N个比特构成的不同重复序列。
与第一情形类似,考虑嵌入到第一光源的光输出中的代码的重复序列包括4个比特c 11、c 12、c 13、c 14,并且嵌入到第二光源的光输出中的代码的重复序列包括4个比特c 21、c 22、c 23、c 24。同样地,每一个比特具有持续时间T bit ,并且代码周期因此等于4*T bit 。
在如何可以把代码的各个比特嵌入到光源的光输出中方面对于第一情形所做的讨论在这里同样适用,因此为了简明起见不在这里重复。
此外假设检测系统400可以已经包含或者可以获得嵌入到第一和第二光源的光输出中的代码。
在这种情形中,检测系统400可以被配置成按照下面的方法操作,以便确定在场景内的任何所选位置处是否存在第一和第二光源的光输出。
首先,摄影机410被配置成按照在第一情形中描述的方式采集场景的一系列图像。同样地,在取得图像时,摄影机采集照明系统在场景内的所有位置处的总光输出的强度。在这种情形中,所述总光输出包括第一光源的光输出和第二光源的光输出。每一幅图像同样被划分成150个像素的2D栅格,其中x方向上有10个像素,并且y方向上有15个像素。由于摄影机的曝光时间被设定成等于代码的单个代码比特,因此图像的特定像素处的强度受到在取得图像时所述代码被编码到第一光源的光输出中的比特值以及所述代码被编码到第二光源的光输出中的比特值的影响。这样的第一图像在图8a中示出(该图像对应于图5中所示的帧1)。第一光源在场景内的足迹被显示为圆形810,并且第二光源的足迹被显示为圆形820。由于第一图像800-1是在利用代码比特c 11调制第一光源的光输出并且利用代码比特c 21调制第二光源的光输出时取得的,因此可以如下计算每一个像素(x,y)处的强度I x,y :
I x,y =A x,y ?c 11+B x,y ?c 21
其中A x,y 和B x,y 是在没有利用特定代码比特调制被施加到第一和第二光源的驱动信号时第一和第二光源的光输出强度所将具有的相应数值。因此,如图8a中所示,例如像素(7,6)处的强度等于(A 7,6?c 11+B 7,6?c 21)。此外,如图8a中所示,例如像素(4,5)处的强度等于A 4,5?c 11,并且像素(5,5)处的强度等于A 5,5?c 11,这是因为第二光源对于这些像素所代表的场景部分不提供任何光贡献(这些像素处于足迹820之外),即B 4,5=B 5,5=0。类似地,例如像素(7,9)处的强度等于B 7,9?c 21,并且像素(8,12)处的强度等于B 8,12?c 21,这是因为第一光源对于这些像素所代表的场景部分不提供任何光贡献(这些像素处于足迹810之外),即B 7,9=B 8,12=0。例如像素(9.2)处的强度被显示为等于零,这是因为第一和第二光源对于该像素所代表的场景部分都不提供任何光贡献(该像素处于足迹810和820之外)。
从曝光530可以看出,场景的图像系列当中的第二图像是在摄影机410的帧2期间采集的。第二图像在图8b中被显示为图像800-2。由于所述图像取自相同场景,因此足迹810和820保持与第一图像中相同。由于图像800-2是在利用代码比特c 12调制第一光源的光输出并且利用代码比特c 22调制第二光源的光输出时取得的,因此可以如下计算每一个像素(x,y)处的强度:
I x,y =A x,y ?c 12+B x,y ?c 22。
因此,如图8b中所示,例如像素(7,6)处的强度等于(A 7,6?c 12+B 7,6?c 22)。此外,如图8a中所示,例如像素(4,5)处的强度等于A 4,5?c 12,像素(5,5)处的强度等于A 5,5?c 12,像素(7,9)处的强度等于B 7,9?c 22,并且像素(8,12)处的强度等于B 8,12?c 22。同样地,例如像素(9.2)处的强度被显示为等于零,这是因为第一和第二光源对于该像素所代表的场景部分都不提供任何光贡献。
按照类似的方式,在帧3和4中,摄影机410分别采集所述图像系列的第三图像(800-3)和第四图像(800-4)。同样地,由于摄影机410的曝光时间和帧时间关于所嵌入代码的配置方式,第三图像是在分别利用代码比特c 13和c 23调制第一和第二光源的光输出时取得的,并且第四图像是在分别利用代码比特c 14和c 24调制第一和第二光源的光输出时取得的。在图8c中示出了图像系列800-1、800-2、800-3和800-4,其中不同的图像被显示为在t方向上延伸,从而表示所述图像是在不同时间取自相同场景。
在采集了图像系列800-1到800-4之后,处理单元430可以被配置成把所采集系列的对应于场景内的所选物理位置的像素序列与由N个符号构成的第一和第二序列(也就是被嵌入到第一光源的光输出中的代码的重复序列和被嵌入到第二光源的光输出中的代码的重复序列)相关。如在第一情形中所述,相关输出中的峰值的存在意味着在场景内的所选位置处存在第一和/或第二光源的光贡献。
因此,为了确定在像素(x,y)处是否存在第一光源的光贡献,处理单元430把序列(A x,y ?c 11+B x,y ?c 21)、(A x,y ?c 12+B x,y ?c 22)、(A x,y ?c 13+B x,y ?c 23)、(A x,y ?c 14+B x,y ?c 24)与序列c 11、c 12、c 13、c 14相关。类似地,为了确定在像素(x,y)处是否存在第二光源的光贡献,处理单元430把序列(A x,y ?c 11+B x,y ?c 21)、(A x,y ?c 12+B x,y ?c 22)、(A x,y ?c 13+B x,y ?c 23)、(A x,y ?c 14+B x,y ?c 24)与序列c 21、c 22、c 23、c 24相关。
此外,类似于第一情形,当在场景内的对应于像素(x,y)的位置处存在第一光源的光贡献时,通过把序列(A x,y ?c 11+B x,y ?c 21)、(A x,y ?c 12+B x,y ?c 22)、(A x,y ?c 13+B x,y ?c 23)、(A x,y ?c 14+B x,y ?c 24)与序列c 11、c 12、c 13、c 14相关允许处理单元430确定第一光源在该位置处的光贡献,即数值A x,y 。通过对于图像系列的每一个像素施行这样的相关,可以对于图像内的所有像素获得A x,y 的数值,从而允许处理单元430确定第一光源在场景内的足迹,正如图8d中所示出的那样。
类似地,当在场景内的对应于像素(x,y)的位置处存在第二光源的光贡献时,通过把序列(A x,y ?c 11+B x,y ?c 21)、(A x,y ?c 12+B x,y ?c 22)、(A x,y ?c 13+B x,y ?c 23)、(A x,y ?c 14+B x,y ?c 24)与序列c 21、c 22、c 23、c 24相关允许处理单元430确定第二光源在该位置处的光贡献,即数值B x,y 。通过对于图像系列的每一个像素施行这样的相关,可以对于图像内的所有像素获得B x,y 的数值,从而允许处理单元430确定第二光源在场景内的足迹,正如图8e中所示出的那样。
虽然当前的场景应对两个光源,但是不仅可以针对两个光源实施类似的方法,而且还可以对于多于两个的任意其他数目的光源实施类似的方法。如前所述的由处理单元430施行的步骤可能对于相对较小数目的光源和/或图像内的相对较小数目的像素是优选的。但是当在照明系统中存在较大数目的光源时,对于每一个像素施行各个光源的每一项所嵌入代码的相关的计算量对于处理单元430来说可能过于繁重。因此,下面描述的实施例允许确定在场景的特定部分内(而不是如前所述的场景内的特定位置处)是否存在特定光源的光贡献。该实施例例如允许确定第一光源是否对场景的左上象限提供光贡献,并且只有在这种情况下才确定在场景的左象限的特定所选位置处是否存在光贡献。
根据该替换实施例,在按照前面描述的方法采集了图像系列800-1到800-4之后,处理单元430可以被配置成对于每一幅所采集的图像确定包括在该图像的对应于场景的特定部分的一个部分中的各个像素的总和。出于说明的目的,考虑场景的特定感兴趣部分对应于在图8a中被显示为矩形830的区域,其包括x坐标处于6到10之间并且y坐标处于1到6之间的各个像素。随后对于第一图像,处理单元430如下确定总和S 1:
其中,I x,y,1=A x,y ?c 11+B x,y ?c 21。
类似地,对于第二图像,处理单元430如下确定总和S 2:
其中,I x,y,2=A x,y ?c 12+B x,y ?c 22。
对于第三图像,处理单元430如下确定总和S 3:
其中,I x,y,3=A x,y ?c 13+B x,y ?c 23。
最后,对于第四图像,处理单元430如下确定总和S 4:
其中,I x,y,4=A x,y ?c 14+B x,y ?c 22。
应当提到的是,在一个实施例中,可以通过总和中的样本数对总和S 1、S 2、S 3和S 4进行归一化,这对于能够设定适当的阈值水平可能是有利的。
接下来,处理单元430把所采集图像系列的总和序列与由N个符号构成的第一序列相关。因此,处理单元430把序列S 1、S 2、S 3、S 4与序列c 11、c 12、c 13、c 14相关,以便确定在区域830内是否存在第一光源的光贡献。类似地,处理单元430可以把序列S 1、S 2、S 3、S 4与序列c 21、c 22、c 23、c 24相关,以便确定在区域830内是否存在第二光源的光贡献。当相关输出包含高于特定阈值的峰值时,处理单元430可以确定在区域830内存在特定光源的光贡献。
在这种情况下,在确定什么构成有关的相关峰值时需要进行一些考虑。特定光源对所述场景部分的光贡献越大,相关峰值的量值就越大。因此,对于区域830,对应于第一光源的相关峰值将很有可能大于对应于第二光源的相关峰值。可以基于图像采集期间的噪声水平和代码互相关属性设定适当的阈值。在一个实施例中,所述阈值优选地被设定成使得由于噪声或另一项代码导致的峰值不可能产生高于阈值的峰值。
一旦处理单元430确定在区域830内存在特定光源的光贡献时,其可以继续按照前面描述的方法确定在区域830内的所选物理位置处是否存在该光源的光贡献。
当需要对于场景内的所有位置确定特定光源的光贡献的存在或者需要对于场景确定特定光源的足迹时,另一种在计算方法潜在地更加高效的方法可以是在按照前面描述的方式采集了图像系列800-1到800-4之后,在步骤1中配置处理单元430对于每一幅所采集的图像确定图像中的所有像素的总和。在步骤2中,处理单元430可以将图像分成两个部分(例如把图像分成两半),并且在其中一个所述部分内(例如左半部分内)确定每一幅图像中的所有像素的组合。随后可以简单地通过从总的总和中减去第一部分(左半部分)内的总和确定另一部分内(例如右半部分内)的每一幅图像中的所有像素的组合。在步骤3中,处理单元430可以把对应于图像的第一部分和/或第二部分的总和序列与编码到特定光源的光输出中的由N个比特构成的序列相关,以便确定在对应部分内是否存在第一光源的光贡献。
还可以将步骤2扩展到图像的不断减小的部分上(例如不断减小的一半),以便最终到达单独的像素水平(多尺度方法/分辨率金字塔)。由于在这一规程中连续地需要正方形区段内的总和,因此在一个有利实施例中,处理单元430被配置成首先把每一幅传入图像转换成集成图像,并且接下来对经过转换的图像进行前述处理。
前面关于被嵌入到照明系统的光输出中的数据类型、适用于这里描述的情形的序列类型以及配置摄影机410的特定方式对第一情形所做的讨论在这里也适用。因此,为了简明起见,不在这里重复这些讨论。
情形3:一个光源,每帧多比特(多次)曝光
接下来,与第一情形类似,考虑照明系统200使得只有一个光源(例如光源220-1)可以提供对于特定场景的光贡献。考虑所述场景是图1中所示的结构100的地板的一部分,并且光源220-1是在图1中所示的在场景内(即在地板上)具有足迹125a的其中一个光源120。为了简单起见,考虑被嵌入到光源220-1的光输出中的代码的重复序列只包括4个比特。这样的代码在图9中被显示为代码910,并且可以被包括在如图2中所述的信号245中。如图所示,每一个比特的持续时间为T bit 。因此,代码周期等于4*T bit 。
关于如何能够把代码的各个比特嵌入到光源的光输出中对第一情形的讨论在这里同样适用,因此为了简明起见不在这里进行重复。
同样地,假设检测系统400可以已经包含或者可以获得嵌入到光源220-1的光输出中的代码。
在这样的情形中,为了确定在场景内的任意所选位置处是否存在光源220-1的光输出,检测系统400可以被配置成按照不同于在第一情形中描述的方式进行操作。
同样地,摄影机410被配置成采集场景的一系列图像。为此,可以把摄影机的曝光设定成包括多个曝光实例,每一个曝光实例的持续时间等于代码周期的一个比特的持续时间,即T bit 。在这种情况下,摄影机410的总曝光时间T exp 是所有多个曝光实例的持续时间的总和。
首先考虑所述多个曝光实例是连续的,并且摄影机410被配置成在每一帧的第一时间周期T exp 期间采集图像。在图9中用线930示出了按照这种方式被配置成在每一帧中有三个曝光实例的摄影机410的曝光。
在取得图像时,摄影机采集照明系统在场景内的所有位置处的总光输出的强度。在当前的情形中,照明系统的总光输出可以仅仅包括来自光源220-1的光贡献。
由于摄影机的曝光时间被设定成等于代码的三个连续代码比特,因此图像的特定像素处的强度受到在取得图像时被编码到光源220-1的光输出中的代码的所有比特值的影响。每一个像素代表照明系统在场景内的不同物理位置处的总光输出的强度。由于第一图像是在利用代码比特c 1、c 2和c 3调制光源220-1的光输出时取得的(例如在图9中参见曝光930的帧1的摄影机曝光如何与代码910重叠),因此可以如下确定每一个像素(x,y)处的强度d x,y(1):
其中,A x,y 是在没有利用代码比特c 1、c 2和c 3调制调制施加到光源220-1的驱动信号时所将具有的强度数值,并且d x,y(1)中的下标(1)表明这是在帧1中获得的强度。
从曝光930可以看出,场景的图像系列当中的第二图像是在摄影机410的帧2期间采集的。由于第二图像是在利用代码比特c 2、c 3和c 4调制光源220-1的光输出时取得的(例如在图5中参见曝光530的帧2的摄影机曝光如何与代码910重叠),因此可以如下确定每一个像素(x,y)处的强度d x,y(2):
类似地,对于第三图像可以如下确定每一个像素(x,y)处的强度d x,y(3):
最后,对于第四图像可以如下确定每一个像素(x,y)处的强度d x,y(4):
前面对应于所采集的四幅图像的特定像素(x,y)的强度(1)-(4)可以被写作矩阵强度d x ,y :
在公式(6)中,处理单元430具有来自所采集图像系列的强度d x ,y ,按照关于图2描述的其中一种方式获得的所嵌入代码 c ,以及从摄影机410被配置成取得图像的方式得到的 H 。因此,等式(6)是具有一个未知的A x,y 的等式。再次以矩阵标记法写出,处理单元430可以如下确定未知的A x,y :
其中,根据常见矩阵标记法,c T 表示矩阵 c 的转置, H -1 表示矩阵 H 的逆,或者对应于非正方形矩阵 H 的伪逆。施行根据公式(7)的计算等效于处理单元430把所采集图像系列的对应于所选物理位置的像素(x,y)的序列与由N个符号构成的第一序列相关。与前面在第一情形中描述的类似,作为相关的结果,获得相关输出,其中峰值的存在意味着在场景内的所选物理位置处存在所述光源的光贡献,并且所述峰值的量值代表由光源220-1提供到场景内的所选位置的光贡献A x,y 。同样地,可以对于场景内的任何其他所选物理位置施行类似的相关,并且可以如前所述地确定光源220-1在场景内的足迹。
虽然到目前为止对于这一情形的讨论应对的是摄影机410的帧时间内的多个曝光实例是连续的情况,但是类似的方法也将适用于非连续的多个曝光实例。等式(6)和(7)仍将成立,而在选择不同曝光实例以用于采集图像方面的差异将被反映在不同的矩阵 H 中。由于施行根据等式(7)的计算需要确定矩阵 H 的逆,因此在选择对应于所述图像系列的多个曝光实例时应当使得矩阵 H 是可逆的。
利用摄影机410的帧时间内的多个连续比特和多个非连续比特采集图像之间的另一个差异在于如何可能实施这样的曝光。由于处在所有摄影机内部的快门420在帧内只能打开及关闭一次,因此这样的快门通常仅仅被用在利用摄影机410的帧时间内的多个连续比特采集图像。
与此相反,处于摄影机410外部的快门420可以被用来利用每一帧内的多个连续比特和多个非连续比特采集图像。这样的快门可以被实施为布置在摄影机前方的电子快门,其允许在单个帧期间多次打开及关闭快门。在一个实施例中,这样的快门可以由数字代码开关。通过使用摄影机410外部的快门所允许的打开/关闭模式的一个例子被显示为图10中的开关信号1030。图10还示出了示例性代码1010。
在一个实施例中,检测系统400于是将如下操作。组合光信号落在置于摄影机410前方的快门420上。快门420由开关信号1030操作,其决定快门的打开/关闭状态。考虑到快门420的开关频率与已编码光的相同,即二者都是用相同的T bit。摄影机410于是将在帧时间T frame内对传入光进行积分(其对于这里描述的所有其他实施例也成立)。通过开关快门420,快门打开时间期间的代码1010的比特将被接收到,其他比特将不会被接收到。因此所得到的从快门420到摄影机410的输出信号将是在其间快门打开的各个比特上的总和。
对于每一帧,应用长度为T frame的不同快门代码,其中T frame=T bit*N shut。在一个实施例中,快门420被实施为处于摄影机410外部的快门,N shut优选地是N code的整倍数或整分数。在一个实施例中,快门420被实施为处于摄影机410内部的快门,N shut优选地不等于N code的整倍数或整分数。通过选择正确的连续代码集合以包括在开关信号1030中,即使得代码矩阵 H 是可逆的,则可以在对摄影机410的信号输出进行电处理之后恢复信号d(t)。处理单元430随后可以继续按照前面描述的方式确定场景内的所选位置处是否存在所述光源的光贡献。
在一个实施例中,开关信号1030优选地包含尽可能多的1,这是因为快门420打开得越长,摄影机410的传感器所接收到的光就越多。用于这一目的的适当代码是S矩阵,其由去除了第一行和列的Hadamard矩阵构成。
当想要特别仅仅检测具有特定所嵌入代码的光时,快门420可以被用来直接对信号进行解码。快门充当与代码的乘法以作为相关的一部分,并且在帧长度上对结果进行积分。其中的问题是在相关中想要与-1和1的代码相乘,但是由于快门只能打开及关闭,从而产生与0和1的乘法。可以通过采集两幅图像来克服这一问题,对于其中一幅图像有快门(t)(1=打开/0=关闭),对于另一幅图像则有快门(t)=1-代码(t)。通过简单地从第二图像中减去所得到的第一图像,可以获得与乘以由-1和1构成的代码相同的结果。因此,处理单元430可以确定灯的足迹。
对于前面的情形的所有讨论在这里都适用,因此除了关于与代码周期的持续时间相对的帧时间的持续时间之外不再进行重复。在其中利用多个曝光实例采集每一幅图像并且快门420被实施为处于摄影机410外部的快门的情形中,摄影机的帧时间优选地被设定为代码周期的整倍数或整分数。举例来说,如果代码周期等于7*T bit ,则摄影机的帧时间可以被设定到代码周期的两倍,即14*T bit 。在其中利用多个曝光实例采集每一幅图像并且快门420被实施为处于摄影机410内部的快门的情形中,摄影机的帧时间优选地被设定成不等于代码周期的整倍数或整分数,正如在第一情形中所示出的那样。
这种情形的一个优点在于,特别在低光条件下,利用每帧多比特曝光采集每一幅图像具有更高的光效率。因此可以减轻噪声对检测处理的影响。
情形4:两个光源,每帧多比特(多次)曝光
现在类似于第二情形,考虑照明系统200使得两个光源可以提供对于特定场景的光贡献,其中所述场景是图1中所示的结构100的地板的一部分,第一光源是图1中所示的光源120当中的在场景内(即在地板上)具有足迹125b的那个,并且第二光源是图1中所示的光源120当中的在场景内具有足迹125c的那个。同样地,照明系统200内的两个光源可以在同步模式或异步模式下操作。对于同步或异步操作模式,对应的所嵌入代码包括由N个比特构成的不同重复序列。
与第二情形类似,考虑嵌入到第一光源的光输出中的代码的重复序列包括4个比特c 11、c 12、c 13、c 14,并且嵌入到第二光源的光输出中的代码的重复序列包括4个比特c 21、c 22、c 23、c 24。同样地,每一个比特具有持续时间T bit ,并且代码周期因此等于4*T bit 。此外还假设检测系统400可以已经包含或者可以获得嵌入到第一和第二光源的光输出中的代码。
在如何可以把代码的各个比特嵌入到光源的光输出中方面对于之前的情形所做的讨论在这里同样适用,因此为了简明起见不在这里重复。
检测系统400可以被配置成按照下面的方式操作,以便确定在场景内的任何所选位置处是否存在第一和第二光源的光输出。
首先,摄影机410被配置成按照在之前的情形中描述的方式采集场景的一系列图像,其不同之处在于,总光输出包括第一光源的光输出和第二光源的光输出。每一幅图像同样被划分成150个像素的2D栅格,其中x方向上有10个像素,并且y方向上有15个像素。由于摄影机的曝光时间被设定成等于代码的三个代码比特,因此图像的特定像素处的强度受到在取得图像时被编码到光源220-1的光输出中的代码的所有比特值的影响。每一个像素代表照明系统在场景内的不同物理位置处的总光输出的强度。由于与之前的情形类似,第一图像是在利用代码比特c 11、c 12和c 13调制第一光源的光输出并且利用代码比特c 21、c 22和c 23调制第二光源的光输出时取得的,因此可以如下确定每一个像素(x,y)处的强度d x,y(1):
其中A x,y 和B x,y 代表与第二情形类似的数值。
同样地,场景的图像系列的第二图像是在摄影机410的帧2期间采集的。由于第二图像是在利用代码比特c 12、c 13和c 14调制第一光源的光输出并且利用代码比特c 22、c 23和c 24调制第二光源的光输出时取得的,因此可以如下确定每一个像素(x,y)处的强度d x,y(2):
类似地,对于第三图像,可以如下确定每一个像素(x,y)处的强度d x,y(3):
最后,对于第四图像,可以如下确定每一个像素(x,y)处的强度d 4:
类似于第三情形,对应于所采集的四幅图像的特定像素(x,y)的前面的强度(8)-(11)可以被写作矩阵强度d x ,y :
类似于第三情形,在公式(12)中,处理单元430具有来自所采集图像系列的强度d x ,y ,按照关于图2描述的其中一种方式获得的所嵌入代码 c 1 和 c 2 ,以及从摄影机410被配置成取得图像的方式得到的 H 。处理单元430可以如下确定未知的A x,y 和B x,y :
施行根据公式(13)的计算等效于处理单元430把所采集图像系列的对应于所选物理位置的像素(x,y)的序列与由N个符号构成的第一序列相关。施行根据公式(14)的计算等效于处理单元430把所采集图像系列的对应于所选物理位置的像素(x,y)的序列与由N个符号构成的第二序列相关。与之前的情形中描述的类似,作为第一相关的结果,获得第一相关输出,其中峰值的存在意味着在场景内的所选物理位置处存在第一光源的光贡献,并且所述峰值的量值代表由第一光源提供到场景内的所选位置的光贡献A x,y 。作为第二相关的结果,获得第二相关输出,其中峰值的存在意味着在场景内的所选物理位置处存在第二光源的光贡献,并且所述峰值的量值代表由第二光源提供到场景内的所选位置的光贡献B x,y 。
同样地,可以对于场景内的其他所选物理位置施行类似的相关,并且可以如前所述地确定第一和第二光源在场景内的足迹。
对于第三情形的所有其他讨论在这里同样适用,因此不再重复。
情形1-4总结
现在可以总结前面所描述的所有情形。图11是根据本发明的一个实施例的用于确定在场景内的所选位置处是否存在照明系统的特定光源的光贡献的方法步骤的流程图。虽然方法步骤是结合图4描述的,但是本领域技术人员将认识到,被配置成按照任何顺序施行所述方法步骤的任何系统都落在本发明的范围内。
所述方法开始于步骤1110,其中摄影机410采集场景的一系列图像。如前所述,每一幅所采集的图像包括多个像素,其中每一个像素代表照明系统在场景内的不同物理位置处的总光输出的强度。照明系统的总光输出包括一个或更多光源的光贡献。所述图像系列包括至少N幅不同图像。这些图像当中的每一幅都是利用包括由N个符号构成的重复序列内的不同时间位置处的一个或更多曝光实例的总曝光时间采集的。按照这种方式,可以检测不同光源的重复序列的所有单独的比特。
在步骤1120中,处理单元430把所采集图像系列的对应于场景内的所选物理位置的像素序列与由N个符号构成的第一序列相关,其中将重复的第一序列嵌入到照明系统的第一光源的光输出中。
在步骤1130中,当所采集图像系列的对应于所选物理位置的像素序列与由N个符号构成的第一序列的相关产生相关峰值时,处理单元430确定在场景内的所选物理位置处存在第一光源的光贡献。
在可选步骤1140中,处理单元430还可以使用相关输出内的相关峰值的数值来估计第一光源的照明贡献。通过对于场景内的所有剩余物理位置(即对于所采集图像系列的所有像素)重复步骤1110-1140,可以确定第一光源在场景内的足迹。通过对于照明系统的所有光源对场景内的所有物理位置(即对于所采集图像系列的所有像素)重复步骤1110-1140,可以解析各个光源在场景内的足迹。
本发明的一个优点在于,基于通过选择摄影机快门的特定打开/关闭模式所采集的图像系列,可以利用传统的低速率摄影机检测到在高频下调制并且从而对人眼不可见的已编码光。举例来说,传统的50Hz摄影机可以被用来确定在1kHz或更高频率(这远远高于人类可见阈值)下调制的已编码光。此外,本发明的检测系统和方法允许识别存在于2D场景中的不同光源的所嵌入代码。
虽然这里说明的实施例是针对同步照明系统(也就是其中各个光源的所嵌入代码同时开始的系统)给出的,但是本领域技术人员将能够把本发明的教导扩展到异步照明系统(也就是其中各个光源的所嵌入代码开始于不同时间的系统)。
本发明的一个实施例可以被实施为用于计算机系统的程序产品。所述程序产品的(多个)程序定义实施例(包括这里所描述的方法)的功能,并且可以被包含在多种计算机可读存储介质上。说明性的计算机可读存储介质包括(但不限于):(i)在其上永久性地存储信息的非可写存储介质(例如计算机内的只读存储器设备,比如可由CD-ROM驱动器读取的CD-ROM盘、闪速存储器、ROM芯片或者任何类型的固态非易失性半导体存储器);以及(ii)在其上存储可改动的信息的可写存储介质(例如盘驱动器内的软盘或硬盘驱动器,或者任何类型的固态随机存取半导体存储器)。
虽然前述内容是针对本发明的一些实施例,但是在不背离本发明的基本范围的情况下可以设想本发明的其他实施例。举例来说,本发明的各个方面可以用硬件、软件或者硬件与软件的组合来实施。因此,本发明的范围由所附权利要求书限定。