具体实施方式
在此公开的实施例的应用可包括全景或环绕视图成像、3D成像、手势识别。在此描述的摄像机可以菊花链而不是光纤的形式,经由电缆长度耦合到一起。
数个摄像机(或图像传感器)用于实现全景视图。在某些实施例中,数个摄像机的每个不必在任何一个轴上对齐,因为摄像机对齐通过预校准实现。虽然存在多个摄像机之间的重叠,但是一次性可编程(OTP)存储器可编程为读出,以使得在由摄像机产生的全景图像中不存在重叠。
在一个实施例中,不存在帧存储器,仅存在行缓冲器(line buffer)存储器。在另一个实施例中,可存在额外的帧存储器以使得下面讨论的概念为每个单独帧处理,并且然后组合到一起。
在一些实施例中,行缓冲器与画中画(picture-in-picture)(PIP)主缓冲器共享数据。
水平消隐时间(H消隐时间)可由传输通过每个传感器收集的图像行数据到主机所需的时间来定义。例如,H消隐时间可能与在系统中的图像传感器数量成比例。数据速率(即传输和接收速率)可由MIPI传送(Tx)和(Rx)接收通道限制。
在一个实施例中,全局内部集成电路识别符(I2C ID)识别摄像机(或图像传感器)链,并且单独的I2C ID识别每个特定摄像机(或图像传感器)。用于每个摄像机的单独I2C ID可在初始设定期间从OTP存储器加载。下面进一步详细讨论与I2C协议相关的额外示例。在一个实施例中,一些“中间”传感器可仅旁通数据,如下描述。示例性摄像机对齐在图3中示出。例如,布置302示出包括定位在用于产生全景图像的电话上的四个摄像机。布置304示出示例性手势识别实施例。布置306从顶视图示出示例性汽车监视系统。
图1示出在一个实施例中用于产生全景图像的多个成像阵列的示例性菊花链100的框图。菊花链100例如是包括输入接口和输出接口的MIPI菊花链。来自主机处理器的控制信号通过I2C线输入到每个摄像机中。此外,每个摄像机包括同步信号(FSIN)输入,以使得所有的摄像机可同时获取图片。同步的优点是不存在帧之间的运动模糊。
MIPI菊花链100包括三个成像摄像机102、104和106,每个串联耦合到一起,并且使用I2C数据线110耦合到主机108。主机108可以是处理器,或可替代地主机108可以是最下游摄像机,其包括经由I2C数据线110用于控制上游摄像机定时的处理器。本应用不旨在限于仅I2C总线协议的范围。即,其它连接协议可用于耦合摄像机102、104和106以及主机108的每个。此外,在不背离其范围的情况下,菊花链100可包括比所示出的更多或更少的摄像机。
每个摄像机102、104和106包括相关联的摄像机子组件,其包括例如成像阵列(即在摄像机内的阵列112、114、116)、相关联的缓冲器(即缓冲器118、120和122)、相关联的MIPI接收器(即MIPI接收器124、126和128)以及相关联的MIPI传送器(即MIPI传送器130、132和134)。成像阵列112、114、116例如是CMOS、CCD、NMOS、Live MOS,或能够生成全景场景的图像数据的感光像素的其它阵列。缓冲器118、120和122是存储器缓冲器,其能够存储来自它们相应成像阵列的图像数据以及从在菊花链100内的上游摄像机接收的图像数据。例如,第二摄像机104的缓冲器120存储来自阵列114的图像数据,以及通过MIPI Rx126从摄像机102的MIPI Tx130接收的图像数据。MIPI接收器从上游摄像机接收图像数据(即摄像机104的MIPI Rx126从摄像机102的MIPI Tx130接收图像数据)。MIPI收发器传送图像数据到下游摄像机(即MIPI Tx132传送数据到MIPI Rx128)。
在图1内,上游摄像机朝向左侧且下游摄像机朝向右侧,其中摄像机102是在MIPI菊花链100中的第一摄像机。所有的摄像机102、104和106(以及潜在的主机108,如果主机是摄像机)同时获得图像场景的图像数据。例如,摄像机102、104和106可获取图像数据的一个或多个排,并且将它们存储在每个相应缓冲器118、120和122中。在图1内的箭头(1)、(4)和(9)指示从每个阵列传输到相应缓冲器的图像数据。以第一摄像机102开始,在缓冲器118内存储的图像数据从第一摄像机102传输到第二摄像机104,其中该图像数据组合存储在缓冲器120内的图像数据。例如,MIPI Tx130传送存储在缓冲器118内的图像数据到摄像机104的MIPI Rx126,如由箭头(3)指示。然后如由箭头(5)指示,中间摄像机104的MIPI Rx126从临近上游的第一摄像机102发送图像数据,并且将它保存到行缓冲器120,其中由阵列112生成的图像数据与由阵列114生成的图像数据串联组合。由箭头(2)、(3)和(5)指示的数据传输可在图像数据的第一排传输到缓冲器118之后,但是在来自阵列112的图像数据的整个阵列收集之前开始。即,当摄像机102经由阵列112捕捉图像数据时,摄像机102可同时传输图像数据到摄像机104。
一旦在缓冲器120内组合,则组合的图像数据传输到MIPI Tx132,如由箭头(6)指示,其进而传送图像数据到下一个临近下游摄像机的MIPI Rx(即摄像机106的MIPI Rx128)。虽然上面描述为同时捕捉图像数据,但是应该理解每个摄像机不需要同时捕捉图像数据。在这种实施例中,摄像机104可在从摄像机102的MIPI Tx130接收图像数据之后或仅在之前将场景成像。因此,由箭头(4)和(5)指示的数据传输的顺序可互换。
通过线(3)至(6)指示的数据传输对于在MIPI菊花链100中的每个额外下游摄像机(即摄像机106)反复。例如,在数据传输(7)中,中间摄像机104的MIPI Tx132传送数据的组合排到下游右侧摄像机106的MIPI Rx128。相同的过程在最右侧的摄像机106中继续,如由箭头(8)-(10)表示。在菊花链100中的最后摄像机传送(11)总的数据组合排到主机108。
对于图像数据的特定排,从最上游摄像机(即摄像机102)到主机108传输所耗费的时间定义了总体菊花链100的H消隐时间。H消隐时间显著小于从每个摄像机传输所有的图像数据并且通过处理器将图像数据融合到一起所需的处理时间。例如,通过“扫描”像素的第一排,以及然后扫描像素的第二排等,某些摄像机捕捉图像数据,直到所有的排被扫描。有利地,在菊花链100配置中,来自最上游摄像机的图像数据的第一排可在第一摄像机的整个成像阵列的扫描完成之前传输到下一个下游摄像机。因此,生成全景图像的处理时间显著减少。此外,因为OTP定义在菊花链中每个相邻摄像机之间的融合特性,所以处理时间减少,因为不要求需要大量处理时间的复杂图像融合技术。
在一个实施例中,在图1的每个摄像机内的架构特征可概括如下。第一,每个摄像机读出相同的定时行排,并且将它保存到其本身的行缓冲器。第二,MIPI Tx从行缓冲器接收MIPI行数据并且按顺序将它递运到下一个摄像机,并且每个摄像机开始同时读出下一个定时行排。第三,MIPI Rx从上游摄像机接收MIPI行数据并且将它递运到行缓冲器,并且最后的摄像机MIPI行数据递运到主机。
在上面的描述中,图像由多个排组成。描述了图像数据的每个排如何产生、组合并且传送的示例。图2示出在一个实施例中说明通过多个摄像机,例如图1的菊花链100接收的数据的多排的示例性处理的框图。摄像机1、2和3(未示出)与图1的摄像机112、114、116类似,并且每个产生数据的相应排1,其中排1数据的每个通过行缓冲器传送、组合并且最后发送到处理器(或主机摄像机)从而形成如图所示的最后排1。相同的过程应用到排2、3等。
因此,在菊花链中的每个当前摄像机从每个上游摄像机接收组合的图像数据,从当前的摄像机添加图像数据排到组合图像数据,并且然后向下游发送更新的组合图像数据到在链中的下一个摄像机。这在图1中经由表示来自每个摄像机数据的圆圈来示出。例如,摄像机102的数据113初始存储在缓冲器118内,并且然后穿过每个下游缓冲器120和122,其中数据113与来自每个下游摄像机的额外数据组合。类似地,数据115初始存储在缓冲器120内,与在缓冲器120中的数据113组合,并且组合数据113和115然后穿过缓冲器122,在缓冲器122中组合数据113和115与数据117组合。该过程反复直到所有的组合数据到达主机108。如上所公开,摄像机对齐通过OTP的预校准实现。虽然存在多个摄像机之间的重叠,但是OTP存储器可编程成正确读出,以使得在全景视图中不存在重叠。
图3示出在菊花链内的多个摄像机的示例性配置。摄像机的每个可位于对象的相应侧上。例如,配置300示出具有四个摄像机302a-302d(由虚线圆圈指示)的智能电话配置,其中每个摄像机位于智能电话的相应侧302A-302D上。如图所示,摄像机302a位于前侧302A上,摄像机302b示出在后侧302B上,摄像机302c位于左侧302C上,并且摄像机302d位于右侧302D上。摄像机配置为菊花链,从而由智能电话产生的全景图像结合相对于图1-2如上讨论的概念和结构。
配置304示出手势识别配置,其中每个摄像机位于诸如智能电话的装置的单个表面上。重要的是,利用菊花链配置对于手势识别提供显著优点。如上讨论,采用菊花链处理时间显著减少,因此快速的手势可更准确识别。
配置306示出在顶视图中的汽车监视系统。每个摄像机位于汽车的不同侧上。应该理解,更多或更少的摄像机可在汽车的每侧上。在配置306内的摄像机的菊花链配置的减少处理时间是有利的,因为汽车以最高速度行驶。因此,更快的处理时间允许在其中汽车行驶的周围环境的更频繁和更准确的成像。在配置306内,每个摄像机307a-307d可配置为菊花链,如上讨论。此外,CPU308可以与主机108类似的方式操作,如上讨论。CPU308可以是主车辆计算机,或用于提供视觉识别辅助的分离CPU,诸如视觉车道辅助计算机、自动前灯控制、雨刷辅助控制、停车辅助控制、制动辅助控制或利用视觉图像数据的其它车辆操作辅助。CPU可接收并且分析从摄像机307a-307d的每个接收的图像数据,并且利用这种信息从而在车辆操作中辅助。
图4示出在一个实施例中利用摄像机的菊花链用于生成图像的示例性方法400。方法400例如使用图1的菊花链100执行。
在可选步骤402中,方法400校准每个摄像机并且在OTP存储器中存储校准设定,从而协调多个摄像机之间的图像融合。例如,步骤402由处理器或主机108执行,并且校准摄像机102、104、106的每个,以使得重叠模糊不存在于由来自摄像机的每个的图像数据组合产生的图像中。
在步骤404中,多个摄像机捕捉图像数据。在步骤404的一个示例中,每个摄像机102、104、106开始外部场景的图像数据113、115、117的捕捉,并且在其相应行缓冲器118、120、122内存储图像数据。例如,为捕捉图像数据,定时信号经由I2C总线线路110从主机108发送,以使得每个阵列112、114、116的像素排同时读出并且存储在相应缓冲器内。
在步骤406中,在步骤404中存储在第一摄像机缓冲器内的第一摄像机的图像数据与第二摄像机的图像数据组合。例如,第一摄像机的图像数据从第一摄像机传输到第一摄像机下游的第二摄像机,并且来自第一摄像机的图像数据在第二摄像机处与第二摄像机的图像数据组合。在步骤406的一个示例中,在缓冲器118内存储的图像数据的第一排传输到MIPI Tx130。图像数据经由MIPI Tx130传输到摄像机104的MIPI Rx126。图像数据113然后存储并且与由在缓冲器120中的第二摄像机104捕捉的图像数据115的第一排组合。步骤406可在图像数据113的第一排由摄像机102捕捉之后,但是在捕捉整个阵列112的图像数据之前执行。
在步骤408中,在步骤406中的第二摄像机缓冲器内存储的第一和第二摄像机的组合图像数据与额外摄像机的图像数据组合。例如,图像数据的第一排的组合图像数据(包括与来自阵列114的图像数据的第一排组合的来自阵列112的图像数据的第一排)传输,并且与来自第三摄像机的阵列116的图像数据117的第一排组合。在步骤408操作的一个示例中,来自第二摄像机104的组合图像数据113+115经由MIPI Tx132传输到第三摄像机106的MIPI Rx128。组合图像113+115数据然后与在额外摄像机缓冲器(即缓冲器122)内的额外摄像机(即摄像机106)的图像数据117的第一排组合。步骤408对于每个额外下游的摄像机反复,直到组合图像数据传输到主机108。
步骤406-408对于由菊花链摄像机捕捉的图像数据的每排反复。在步骤410中,方法400将组合图像数据的当前排与组合图像数据的先前排组合。在操作的一个示例中,主机108接收来自摄像机106的图像数据的组合第二排(即经由MIPI Tx134),并且将图像数据的第二排与图像数据的第一排组合。
在步骤412中,方法400输出包括来自每个摄像机的组合图像数据的所有组合排的全景图像。例如,主机108输出包括由摄像机102、104和106的每个接收的组合图像数据的组合排的全景图像。
以上实施例包括使用I2C协议从而控制图像捕捉排序的定时。I2C允许通过两条电线在两个I2C装置之间的数据通信,从而减少用于图像系统菊花链所需的物理占用空间。例如,每个装置连接到分别用于控制定时和数据信息的时钟和数据串行线。在I2C协议内,每个装置是主装置或从属装置。主装置负责当前时间的总线,控制时钟,生成开始和停止信号,并且可发送数据或接收数据到从属装置,以及从从属装置发送数据或接收数据。从属装置收听总线并且对其接收的控制和数据作用。通常从属装置不在它们之间传输数据。
图5示出在图1的菊花链内用于每个装置的示例性地址识别符500。例如阵列、MIPI Tx、MIPI Rx的每个可具有与其相关联的识别符。此外,每个识别符对于特定装置是唯一的。因此,当主装置发送信号给一个或多个从属装置时,信号对于所有的从属装置同时广播。每个装置比较在START位之后的第一个7位与其本身地址,从而确定主装置是否与该特定从属装置“交谈”。如果第一个7位与其本身地址识别符匹配,则从属装置考虑由主装置寻址的自身。紧随地址识别符的位是读取/写入位。应该理解,地址识别符可包括固定部分和可编程部分。此外,在不背离其范围的情况下,地址识别符可具有比在图5中示出与其相关联的更多或更少位。
图6示出在一个实施例中显示写入从属装置的主装置的示例性数据传输图600。在图6内,从主装置发送到从属装置的数据没有填充,并且从从属装置发送到主装置的数据具有虚线填充。在数据传输600中,传输开始包括识别符500和写入位601。主装置然后等待来自从属装置的承认602。在接收承认602之后,主装置开始数据传输。从属装置可贯穿整个传输过程周期性承认数据传输,直到主装置发送停止命令。
图7示出在一个实施例中显示从从属装置读取的主装置的示例性数据传输图700。在图7内,从主装置发送到从属装置的数据没有填充,并且从从属装置发送到主装置的数据具有虚线填充。在数据传输700中,传输开始包括识别符500和写入位701。主装置然后等待来自从属装置的承认702。在接收承认702之后,从属装置开始数据传输到主装置。主装置周期性发送指示来自从属装置数据接收的承认704,直到主装置发送停止命令。
图8示出在一个实施例中在I2C总线线路上的通用呼叫。通用呼叫800包括指示呼叫寻址哪些从属装置的第一字节802,以及指示要采取的动作的第二字节804。例如,第一字节802可指示所有的阵列被寻址,并且第二字节804可指示开始捕捉图像数据。在操作的一个示例中,图1的主机108经由I2C总线线路110传送通用呼叫800到摄像机102、104、106的每个。如上所讨论,主装置每次可寻址超过一个的从属装置。
在某些实施例中,第二字节可指示哪些装置将利用它们识别符(即识别符500)的可编程部分。在这种实施例中,第二字节的最后位可以是0或1。当是0时,所有的从属装置可复位并且在它们地址的可编程部分中获得,或在没有复位的它们地址的可编程部分中获得。当第二字节的最后位是1时,呼叫由不具有连接从属地址的任何先验信息的主装置做出。在此,主装置采用其本身地址进行呼叫,以使得从属装置可识别消息源。
使用在成像系统菊花链内的I2C协议提供显著优点。例如,I2C协议在摄像机初始化和同步中辅助,从而显著减少在产生全景图像的融合部分之间的模糊。例如,在图1的菊花链100内,由每个阵列112、114、116收集的图像数据可基于通用呼叫而同步,如相对于图8在上面讨论。
可在不背离本发明范围的情况下,对上方法和系统中做出变化。因此应该注意,在以上描述中包含或在附图中示出的主题应该解释为说明性的,并且不具有限制意义。随附权利要求旨在涵盖在此描述的所有一般化和具体的特征,以及本方法和系统范围的所有陈述,在语言上,该范围可描述成落入一般化和具体的特征之间。