用于处理来自全方位摄像头的数据的系统的制作方法

文档序号:12829493阅读:248来源:国知局
用于处理来自全方位摄像头的数据的系统的制作方法与工艺

本发明一般地涉及全方位摄像头,并且更具体地,涉及用于处理来自具有多个处理器和/或连接到各个处理器的多个传感器的全方位摄像头的数据的方法和/或系统。



背景技术:

常规的全方位摄像头(也称为虚拟现实摄像头、球形摄像头、全景摄像头、沉浸式视频摄像头或360摄像头)带来设计挑战。单个镜头不能捕获整个球形视野。全方位摄像头的用途是沿围绕摄像头的所有方向(即,在每个轴上360度地)捕获视频。捕获的视频表示观看该视频的人周围的场景的完整视图。用户通常使用头戴式显示器或者交互式视频播放器来观看正在重放的捕获的视频。在重放期间,可以沿任意方向改变视频取向。

以前考虑的常规解决方案包括在镜头前方放置凸面镜,以捕获更多的场景。然而,利用在镜头前方的凸面镜只提供360度水平覆盖,而失去球形视野的顶部和底部。以前考虑的常规解决方案还包括把来自多个镜头的图像捕获成多个视频信号。然而,利用多个视频信号产生多个问题,诸如利用单个处理器处理所有视频信号、利用单个处理器产生多个视频文件、为每个视频信号提供专用处理器和管理来自各个处理器的多个视频文件和视频信号的问题。

商业产品已经尝试了几种常规途径。大多数常规途径落入几种类别之一。在一种常规途径中,每个镜头安装在连接到专用处理器的传感器上。每个处理器把一个视频文件记录在存储介质上。在记录完成之后,所有文件从存储介质转出到计算机或云。拼接多个文件以创建球形视野仅作为后期制作处理完成。

在另一种常规途径中,每个镜头安装在传感器上。系统中的所有传感器连接到单个处理器。所述处理器把多个视频文件记录在存储介质上。在记录完成之后,所有文件从存储介质转出到计算机或云。拼接多个文件以创建球形视野仅作为后期制作处理完成。

理想的将是实现一种用于处理来自具有多个处理器和/或连接到各个处理器的多个传感器的全方位摄像头的数据的系统。



技术实现要素:

本发明涉及一种包括摄像头和计算设备的系统。所述摄像头可以包括(a)多个捕获设备和(b)第一接口,所述多个捕获设备被配置成捕获摄像头周围的环境的图像,以提供球形视野。所述计算设备可以包括(a)处理器和(b)第二接口。摄像头可以被配置成基于捕获的图像来编码多个视频流。第一接口可以被配置成把所述多个视频流传送给第二接口。处理器可以对所述多个视频流执行拼接操作,以生成单个视频信号。可以在传送所述多个视频流时,实时地对所述多个视频流执行拼接操作。所述单个视频信号可以被配置成表示基于摄像头周围的环境的全方位视图。

本发明还包括一种系统,所述系统包括摄像头,所述摄像头包括(a)多个捕获设备,所述多个捕获设备被配置成捕获摄像头周围的环境的图像,以提供球形视野,和(b)第一接口,以及计算设备,所述计算设备包括(a)处理器和(b)第二接口,其中(i)所述摄像头被配置成基于捕获的图像来编码多个视频流,(ii)第一接口被配置成把所述多个视频流传送给第二接口,(iii)所述处理器被配置成对所述多个视频流执行拼接操作,以生成单个视频信号,(iv)在传送所述多个视频流时,实时对所述多个视频流执行拼接操作,以及(v)所述单个视频信号被配置成表示基于摄像头周围的环境的全方位视图。

在上述系统方面的一些实施例中,全方位视图包括单视场视图和立体视图之一。

在上述系统方面的一些实施例中,计算设备(i)还包括第三接口,并且(ii)被配置成经由第三接口传送所述单个视频信号。

在上述系统方面的一些实施例中,所述设备被配置成通过第三接口实时地把所述单个视频信号传送给(a)远程服务器和(b)用户设备中的至少一个。

在上述系统方面的一些实施例中,用户设备是(a)台式计算机、(b)智能电话、(c)平板计算机和(d)头戴式显示器中的至少一个。

在上述系统方面的一些实施例中,第三接口被配置成把所述单个视频信号传送给(i)网络设备和(ii)显示器以及(iii)hdmi接口之一。

在上述系统方面的一些实施例中,网络设备被配置成把所述单个视频信号传送给最终用户。

在上述系统方面的一些实施例中,由摄像头进行的编码、所述多个视频流从第一接口到第二接口的传送以及由计算设备执行的拼接操作是实时进行的。

在上述系统方面的一些实施例中,所述摄像头和计算设备在分离的外壳中实现。

在上述系统方面的一些实施例中,第一接口和第二接口通过单个电缆连接。

在上述系统方面的一些实施例中,所述单个电缆实现(i)以太网供电(poe)标准和(ii)通用串行总线(usb)标准中的至少一个。

在上述系统方面的一些实施例中,由摄像头进行的编码、所述多个视频流从第一接口到第二接口的传送、以及由计算设备执行的拼接操作是实时进行的。

在上述系统方面的一些实施例中,计算设备被实现为小型便携式计算机。

在上述系统方面的一些实施例中,计算设备被实现为计算服务,所述计算服务被配置成提供可用处理资源以按需缩放。

在上述系统方面的一些实施例中,计算设备被配置成把所述单个视频信号传送给内容递送网络,以允许分发给多个最终用户。

在上述系统方面的一些实施例中,计算设备被配置成(i)在进行拼接操作之前,解码所述多个视频流,以及(ii)重新编码所述单个视频信号。

在上述系统方面的一些实施例中,所述单个视频信号使用投影方法来表示球形视野。

在上述系统方面的一些实施例中,(i)所述单个视频信号被传送给内容递送网络,(ii)内容递送网络被配置成把所述单个视频信号转码成多个视频流,(iii)基于至少一个因素把视频流之一表示给一个或多个最终用户,以及(iv)所述因素包括带宽、qos、订制等级和与服务器的连接的数目中的至少一个。

在上述设备方面的一些实施例中,内容递送网络(i)按需向最终用户递送转码视频流中的第一视频流,以及(ii)响应于所述因素中的变化,切换成递送转码视频流中的第二视频流。

在上述系统方面的一些实施例中,(i)转码视频流中的第一视频流和转码视频流中的第二视频流中的一个视频流具有比转码视频流中的第一视频流和转码视频流中的第二视频流中的另一个视频流高的质量,并且(ii)所述质量包括(a)分辨率、(b)帧速率、(c)压缩比、(d)压缩方法以及(e)压缩标准中的至少一个。

本发明还包含涉及一种装置的方面,该装置包括多个图像模块,每个图像模块包括(i)配置成捕获图像的传感器,和(ii)安装到所述传感器的镜头以及多个处理器,每个处理器被配置成(a)从所述多个图像模块的子集接收图像,并且(b)生成多个视频流,其中(i)视频流中的每一个视频流是由处理器之一响应于从图像模块之一接收的图像生成的,(ii)所述多个图像模块的所述子集包括所述多个图像模块中的至少两个不同的图像模块,并且(iii)所述镜头被布置成容许图像提供对于装置周围的场景的球形视野覆盖。

在上述装置方面的一些实施例中,接口被配置成(i)把装置连接到外部设备,和(ii)向该装置提供电力。

在上述装置方面的一些实施例中,所述接口遵从(i)以太网供电(poe)标准和(ii)通用串行总线(usb)标准中的至少一个。

在上述装置方面的一些实施例中,所述接口被配置成使用单个电缆来(i)传送所述多个视频流,以及(ii)为装置接收电力。

在上述装置方面的一些实施例中,通信电路被配置成(i)接收由所述多个处理器打包的所述多个视频流,(ii)把所述多个视频流转发到单个传输中,以及(iii)把所述单个传输传输给网络,其中所述单个传输按先入先出原则传输所述多个视频流。

在上述装置方面的一些实施例中,所述单个传输包括具有与所述多个视频流中的每个视频流对应的多个单独编码的子部分的单个流。

在上述装置方面的一些实施例中,所述装置使用通信电路来传输所述单个传输,而不存储所述多个视频流。

在上述装置方面的一些实施例中,还被配置成为由外部计算设备执行的视频拼接操作,使所述多个图像模块的曝光同步。

在上述装置方面的一些实施例中,所述同步由以下中的至少一个执行:(a)统一时钟发生器、(b)配置成通过i2c执行协商操作的电路、(c)配置成通过以太网执行协商操作的电路以及(d)向所述多个图像模块中的其它图像模块提供时钟信号的图像模块之一。

在上述装置方面的一些实施例中,(i)所述装置还包括连接到所述多个处理器中的至少一个处理器的惯性测量单元,以及(ii)由所述惯性测量单元记录的信息是作为(a)具有所述视频流中的至少一个视频流的元数据和(b)与视频流分离的元数据信道之一传送的。

在上述装置方面的一些实施例中,所述元数据与视频流共享(i)公共时钟和(ii)时间戳中的一个,其中公共时钟或时间戳是基于公共实时时钟生成的。

在上述装置方面的一些实施例中,(i)所述多个视频流共享公共系统时钟,以及(ii)一个或多个时间戳是基于公共实时时钟的。

本发明还包含涉及一种装置的方面,所述装置包括被配置成保护多个传感器的壳体、第一处理器和第二处理器,传感器中的每个被配置成捕获图像,所述第一处理器被配置成接收(i)来自所述多个传感器中的第一传感器的图像,以及(ii)来自所述多个传感器中的第二传感器的图像,所述第二处理器被配置成接收(i)来自所述多个传感器中的第三传感器的图像,以及(ii)来自所述多个传感器中的第四传感器的图像,其中(i)第一处理器被配置成(a)响应于来自所述多个传感器中的第一传感器的图像生成第一视频流,和响应于来自所述多个传感器中的第二传感器的图像生成第二视频流,以及(b)第二处理器被配置成响应于来自所述多个传感器中的第三传感器的图像生成第三视频流,和响应于来自所述多个传感器中的第四传感器的图像生成第四视频流,以及(ii)用于传感器的镜头被布置成容许图像提供对于装置周围场景的球形视野的覆盖。

在上述装置的一些实施例中,接口被配置成(i)把装置连接到外部设备,以及(ii)向装置提供电力。

在上述装置方面的一些实施例中,(a)所述接口遵从(i)以太网供电(poe)标准,和(ii)通用串行总线(usb)标准中的至少一个,(b)所述接口被配置成使用单个电缆(i)传输第一视频流、第二视频流、第三视频流和第四视频流,以及(ii)为装置接收电力。

在上述装置方面的一些实施例中,通信电路被配置成(i)接收由第一处理器和第二处理器打包的第一视频流、第二视频流、第三视频流和第四视频流,(ii)把第一视频流、第二视频流、第三视频流和第四视频流转发到单个传输中,以及(iii)把所述单个传输传输给网络,其中所述单个传输按先入先出规则传输第一视频流、第二视频流、第三视频流和第四视频流。

在上述装置方面的一些实施例中,所述装置利用通信电路传输所述单个传输,而不存储第一视频流、第二视频流、第三视频流和第四视频流。

在上述装置方面的一些实施例中,还被配置成为由外部计算设备执行的视频拼接操作,使所述多个传感器的曝光同步。

在上述装置方面的一些实施例中,所述同步由以下中的至少一个执行:(a)统一时钟发生器、(b)配置成通过i2c执行协商操作的电路、(c)配置成通过以太网执行协商操作的电路、以及(d)向所述多个传感器中的其它传感器提供时钟信号的传感器之一。

在上述装置方面的一些实施例中,(i)所述装置还包括连接到第一处理器的惯性测量单元,以及(ii)由所述惯性测量单元记录的信息是作为(a)具有第一视频流、第二视频流、第三视频流和第四视频流中的至少一个的元数据,和(b)与第一视频流、第二视频流、第三视频流和第四视频流分离的元数据通道之一传输的。

附图说明

根据下面的具体实施例和随附的权利要求,以及附图,本发明的实施例将是明显的,附图中:

图1是摄像头的示图;

图2是摄像头的顶视图;

图3是摄像头的侧视图;

图4是摄像头的另一个侧视图;

图5是例示摄像头的示例内部组件的示图;

图6是例示把视频流传输给外部计算设备的第一和第二处理器的示图;

图7是例示全方位摄像头的示例6镜头实施例的等距视图的示图;

图8是例示全方位摄像头的示例6镜头实施例的侧视图的示图;

图9是例示全方位摄像头的示例6镜头实施例的顶视图的示图;

图10是例示全方位摄像头的示例8镜头实施例的等距视图的示图;

图11是例示全方位摄像头的示例8镜头实施例的侧视图的示图;

图12是例示全方位摄像头的示例8镜头实施例的顶视图的示图;

图13是例示全方位摄像头的示例多镜头实施例的等距视图的示图;

图14是例示全方位摄像头的示例多镜头实施例的侧视图的示图;

图15是例示全方位摄像头的示例多镜头实施例的顶视图的示图;

图16是例示全方位摄像头的示例实施例的示例内部组件的示图。

图17是例示连接到外部计算设备的摄像头的示例的示图。

图18是例示连接到网络的摄像头和外部计算设备的示例的示图;

图19是例示连接到外部计算设备和内容递送网络的全方位摄像头的实施例的示图;

图20是例示启动过程的流程图;

图21是例示传感器曝光的同步的流程图;

图22是例示由全方位摄像头执行的传输同步的流程图;

图23是例示由外部计算设备执行的传输同步的流程图;

图24是例示交错视频帧的示例的流程图。

具体实施方式

本发明的实施例包括提供一种用于处理来自全方位摄像头的数据的系统,所述系统可以(i)实现多个处理器,(ii)实现连接到各个处理器的多个传感器,(iii)无本地存储地处理数据,(iv)在所有记录完成之前,实时地编码和传送多个视频流,(v)根据多个视频流,生成表示球形视野的单个视频文件,(vi)使来自各个方向的捕获视频流同步,以允许实时视频拼接,和/或(viii)被实现为一个或多个集成电路。

参见图1,按照本发明的实施例,示出了摄像头100的方框图。摄像头100被示出为具有第一镜头110a、第二镜头110b、接口114、颈部112和框架116。图1中所示的实施例示出了镜头110a和110b。可以实现更多的镜头。框架(或壳体)116可以被配置成保护镜头110a和110b(和其它另外的镜头)。例如,镜头可以被布置成提供对于摄像头100周围的场景的球形视野的覆盖。在另一个示例中,框架116可以包括配置成保护镜头110a和110b(和其它另外的镜头)的盖子和在摄像头100内的芯体(例如,实心芯体)。在一些实施例中,镜头可以沿所有方向,提供摄像头100周围的场景。颈部112可以提供安装接口。例如,颈部112的底部可以提供把摄像头100安装在三角架上的机械连接。

参见图2,图中示出了摄像头100的顶视图。摄像头100的顶视图示出轴140、轴142和块(或电路)120。镜头110b被示出为沿着轴140,指向方向144。镜头110b'被示出为沿着轴140,指向方向144'。通常,镜头110b和镜头110b'沿着轴140,指向相反的方向。

镜头110a被示出为沿着轴142,指向方向146。类似地,镜头110b'被示出为沿着轴142,指向方向146'。通常,镜头110a和镜头110a'沿着轴142,指向相反的方向。

通常,在水平平面中,以90度配置配置轴140和轴142。在一些实施例中,在水平平面中,可以以90度配置实现镜头110a和镜头110a',可以以90度配置实现镜头110b和镜头110b'。然而,镜头110a和110a'或者镜头110b和110b'之间的角度可以更大(例如,如果镜头110a和110a'或者110b和110b'相对于彼此倾斜)。轴140和轴142和/或镜头110a-110a'和镜头110b-110b'的特定定向可以变化,以满足特定实现的设计标准。

参见图3,图中示出了摄像头100的第一侧视图。镜头110b的方向144和镜头110b'的方向144'按稍微向下的角度示出。镜头110b-110b'的稍微向下的角度允许摄像头100的镜头提供对于摄像头100周围场景的球形(或全方位)视野的覆盖。在一些实施例中,镜头110b-110b'可以沿所有方向,捕获摄像头100周围的场景的一部分。

参见图4,图中示出了摄像头100的第二侧视图。按稍微向上的角度,示出了镜头110a的方向146。按稍微向上的角度,示出了镜头110a'的方向146'。镜头110a-110a'的稍微向上的角度允许摄像头100的镜头提供对于摄像头100周围场景的球形视野的覆盖。在一些实施例中,镜头110a-110a'可以沿所有方向,捕获摄像头100周围场景的一部分。例如,组合的镜头110a-110a'的向上角度和镜头110b-110b'的向下角度可以允许摄像头100捕获在摄像头100的高度之上和之下的图像。

参见图5,示出了摄像头100的示例内部组件。摄像头100的内部组件可以包括块(或电路)122a、块(或电路)122a'、块(或电路)122b、块(或电路)122b'以及电路120。电路122a、122a'、122b和/或122b'可以被实现为捕获设备(例如,图像模块)。捕获设备122a可以与镜头110a关联。捕获设备122a'可以与镜头110a'关联。类似地,捕获设备122b可以与镜头110b关联。捕获设备122b'可以与镜头110b'关联。

捕获设备122a通常包括块(或电路)124a、块(或电路)126a和块(或电路)128a。电路124a可以被实现为传感器。例如,镜头110a可以被安装到传感器124a上。电路126a可以被实现为逻辑。电路128a可以被实现为缓冲器。捕获设备122a'、122b和/或122b'可以具有和捕获设备122a类似的组件。例如,传感器124a的实现可以类似于传感器124a'、124b和/或124b'的实现。在一些实施例中,捕获设备122a、122a'、122b和/或122b'的组件的布置可以具有轻微的变化。

由摄像头100记录的场景可以信号(例如,im_a-im_a'和im_b-im_b')的形式。信号im_a-im_a'和im_b-im_b'可以表示光。镜头110a-110a'和110b-110b'可以捕获和/或操纵来自周围的环境的光im_a-im_a'和im_b-im_b'。例如,镜头110a-110a'和110b-110b'可以通过聚焦光、放大光(例如,提供光学变焦)和/或过滤光(例如,减少眩光、增加艺术失真效果、应用颜色等)来操纵光im_a-im_a'和im_b-im_b'。信号im_a-im_a'和im_b-im_b'可以表示摄像头100周围的环境的图像。镜头110a-110a'和110b-110b'可以把信号im_a-im_a'和im_b-im_b'提供给捕获设备122a、122a'、122b和/或122b'。

电路124a、电路126a和/或电路128a可以是捕获设备122a的用于响应信号im_a(例如,捕获的图像)而生成信号(例如,frames_a)的子组件。例如,镜头110a可以把信号im_a聚焦在传感器124a上。传感器124a可以生成信号frames_a。信号frame_a可以是原始图像数据。信号frames_a可以是随着时间响应信号im_a而生成的多个帧。信号frames_a可以为未压缩(例如,原始)格式。所述未压缩格式可以是拜耳(bayer)格式、红/透明/透明/透明(rccc)格式、红/绿/蓝/透明(rgbc)格式、rgb格式、yuv格式等。类似地,捕获设备122a'、122b和/或122b'的组件可以分别响应信号im_a'、im_b和im_b'生成信号frames_a'、frames_b和frames_b'。捕获设备122a、122a'、122b和/或122b'可以把信号frames_a-frames_a'和frames_b-frames_b'提供给电路120。

电路120可以包括块(或电路)150a、块(或电路)150b和/或块(或电路)152。电路150a-150b可以是处理器。电路152可以是通信块。通常,处理器150a可以是与捕获设备122-122a'关联的视频处理器,并且处理器150b可以是与捕获设备122b-122b'关联的视频处理器。例如,捕获设备122a可以把信号frames_a提供给处理器150a,捕获设备122a'可以把信号frames_a'提供给处理器150a,捕获设备122b可以把信号frames_b提供给处理器150b,并且捕获设备122b'可以把信号frames_b'提供给处理器150b。

通常,处理器150a-150b中的每个不接收来自所有捕获设备122a、122a'、122b和/或122b'的全部原始图像数据信号frames_a-frames_a'和frames_b-frames_b'。处理器150a-150b中的每个可以接收来自捕获设备122a、122a'、122b和/或122b'的子集的原始图像数据。例如,捕获设备122a、122a'、122b和/或122b'的一个子集可以包括捕获设备122a和捕获设备122a',并且捕获设备122a、122a'、122b和/或122b'的另一个子集可以包括捕获设备122b和捕获设备122b'。处理器150a可以接收来自包括捕获设备122a-122a'的子集的信号frames_a和信号frames_a'中的视频帧(例如,处理器150a不接收来自捕获设备122b和122b'的视频帧)。处理器150b可以接收来自包括捕获设备122b-122b'的子集的信号frames_b和信号frames_b'中的视频帧(例如,处理器150b不接收来自捕获设备122a和122a'的视频帧)。

在图5中所示的实施例中,捕获设备122a、122a'、122b和/或122b'的各个子集包括两个捕获设备(例如,包括捕获设备122a和122a'的子集,以及包括捕获设备122b和122b'的子集)。捕获设备122a、122a'、122b和/或122b'的各个子集可以把对应的原始视频帧(frames_a-frames_a'和frames_b-frames_b')提供给处理器150a-150b中的关联的处理器。例如,包括捕获设备122a和122a'的子集可以与处理器150a关联,并且包括捕获设备122b和122b'的子集可以与处理器150b关联。在图5中所示的示例中,捕获设备122a、122a'、122b和/或122b'的子集中的每个包括至少两个不同的捕获设备。例如,由于捕获设备122a是包括捕获设备122a和122a'的子集的一部分,因此捕获设备122a不是捕获设备的任意其它子集的一部分(例如,捕获设备122a、122a'、122b和/或122b'中的每个把信号frames_a-frames_a'和frames_b-frames_b'之中的相应一个信号中的视频帧提供给处理器150a-150b中的仅一个)。捕获设备122a、122a'、122b和/或122b'的子集,和/或关联的处理器150a-150b的布置可以按照特定实现的设计标准而变化。

处理器150a-150b可以被配置成处理和/或编码信号frames_a-frames_a'和frames_b-frames_b'中的未压缩视频帧,以创建作为信号frames_a-frames_a'和frames_b-frames_b'的编码版本的视频流。处理器150a-150b可以被配置成响应视频帧frames_a-frames_a'和frames_b-frames_b'生成信号(例如,video_a-video_b)。处理器150a-150b中的每个可以被配置成把信号video_a-video_b之一提供给通信块152。

处理器150a-150b可以被配置成实现tcp/ip栈。tcp/ip栈可以对来自信号frames_a-frames_a'和frames_b-frames_b'的编码版本的数据包进行打包。tcp/ip栈可以被配置成把信号video_a-video_b传送给通信块152。

通信块152可以接收来自处理器150a-150b的信号video_a-video_b。通信块152可以被配置成生成信号(例如,stream),和接收信号(例如,power)。通信块152可以把信号video_a-video_b打包到信号传输(例如,信号stream)中。通常,可以利用信号电缆154传输信号stream和信号power。例如,通信块152可以包括与单个电缆154连接的接口114。信号stream可以被传输给外部设备和/或网络。

可以实时(或近实时)地提供信号stream。实时提供信号stream可以包括处理和/或同步由捕获设备122a、122a'、122b和/或122b'捕获的输入,而不存在摄像头100中的本地存储。例如,摄像头100可以不必具有独立的存储。与信号stream关联的数据的同步可以确保不需要摄像头100中的本地存储。可以在所有记录完成之前,生成信号stream(例如,不存储信号video_a-video_b中的数据的副本)。通过实时提供信号stream,可以按直播视频馈给的形式,生成和观看球形视野。

传感器124a的实现可以代表传感器124a、124a'、124b和/或124b'的实现。传感器124a可以接收来自镜头110a的信号im_a中的光。传感器124a可以被配置成把光转换成像素数据(例如,图像数据)。例如,传感器124a可以被实现为配置成检测信号im_a中的输入光的强度和/或颜色的阵列(例如,具有滤色器阵列的光电传感器)。来自传感器124a的像素数据可以由逻辑126a检索。

逻辑126a的实现可以代表逻辑126a、126a'、126b和/或126b'的实现。逻辑126a可以被配置成从传感器124a检索像素数据。逻辑126a可以把来自传感器124a的像素数据转换成特定协议。例如,逻辑126a可以把像素数据转换成原始数据格式(例如,bayer格式、rccc格式等)。在一些实施例中,像素数据可以为rgb或yuv格式。逻辑126a实现的协议可以按照特定实现的设计标准而变化。在一些实施例中,逻辑126a可以被实现为移位寄存器、串行器、逻辑门和/或其它组件。逻辑126a可以响应从传感器124a检索的像素数据,生成信号frames_a。

在一些实施例中,逻辑126a可以被配置成对来自传感器124a的像素数据打包。例如,来自传感器124a的像素数据可以能为20比特格式。逻辑126a可以按12比特格式,对像素数据打包。在一些实施例中,逻辑126a可以用于控制针对来自传感器124a的输出的增益值。在一些实施例中,逻辑126a可以被配置成在传输frames_a-frames_a'和/或frames_b-frames_b'之前,执行高动态范围(hdr)处理。在一些实施例中,逻辑126a可以用于传输亮度/颜色值(例如,用0-255的值表示)。可以利用i2c总线,连接捕获设备122a和处理器150a。可以实现其它类型的连接协议。逻辑126a的实现可以按照特定实现的设计标准而变化。

在一些实施例中,逻辑126a可以是传感器124a的一部分。在一个示例中,捕获设备122a可以只包括传感器122a,并且逻辑126a可以被嵌入传感器122a中(例如,传感器122a和逻辑126a被实现为一个组件)。捕获设备122a可以进一步连接到处理器150a(例如,通过串行或并行接口,诸如i2c总线)。

缓冲器128a的实现可以代表缓冲器128a、128a'、128b和/或128b'的实现。缓冲器128a可以是帧缓冲器。缓冲器128a可以提供来自传感器126a的像素数据的临时存储。通过缓冲器128a的像素数据的临时存储可以为逻辑126a提供更多的时间,以把像素数据转换成信号frames_a。例如,随着通过传感器124a捕获的图像的分辨率增大,逻辑126a需要更多的时间来生成信号frames_a。在传感器124a从信号im_a捕获更多新图像时,缓冲器128a允许逻辑126a访问先前捕获的像素数据。

图5中所示的捕获设备122a、122a'、122b和/或122b'可以表示一种示例实现。图5中所示的捕获设备122a、122a'、122b和/或122b'可以代表可以被实现的组件中的一些。在一些实施例中,捕获设备122a、122a'、122b和/或122b'可以是从制造商购买的预制装配组件(例如,插入(drop-in)组件)。通常,摄像头100可以使用各种类型的捕获设备122a、122a'、122b和/或122b'操作以生成图像。例如,电路120可以被配置成接收来自捕获设备122a、122a'、122b和/或122b'的特定信号(例如,frames_a-frames_a'和/或frames_b-frames_b'),并且用于生成信号frames_a-frames_a'和/或frames_b-frames_b'的捕获设备122a、122a'、122b和/或122b'的内部组件可能对摄像头100的操作无影响。捕获设备122a、122a'、122b和/或122b'的实现可以按照特定实现的设计标准而变化。

参见图6,示出了例示向外部计算设备250传输视频流的第一和第二处理器150a-150b的示图。处理器150a-150b可以被配置成编码信号信号frames_a-frames_a'和frames_b-frames_b'中的视频帧。在一个示例中,信号frames_a-frames_a'和frames_b-frames_b'中的原始帧中的每个可以由对应处理器150a-150b之一转换成yuv帧,并压缩成视频格式。例如,视频格式可以是信号frames_a-frames_a'和frames_b-frames_b'中的帧的编码和/或压缩版本(例如,诸如h.264、h.265、vp9之类的格式)。由处理器150a-150b执行的编码的实现可以按照特定实现的设计标准而变化。处理器150a-150b可以响应从捕获设备122a、122a'、122b和122b'接收的信号frames_a-frames_a'和frames_b-frames_b',把信号(例如,rtmp_a-rtmp_a'和rtmp_b-rtmp_b')提供给通信块152。

信号rtmp_a-rtmp_a'和rtmp_b-rtmp_b'可以是信号frames_a-frames_a'和frames_b-frames_b'的编码版本。信号rtmp_a-rtmp_a'和rtmp_b-rtmp_b'通常可以包括编码视频数据。在一些实施例中,信号rtmp_a-rtmp_a'和rtmp_b-rtmp_b'中的一个或多个还可以包括另外的数据。例如,信号rtmp_a可以携带编码视频数据(例如,以h.264格式),连同音频数据(例如,以aac格式)和元数据(例如,位置和/或移动信息),信号rtmp_a'可以携带编码视频数据(例如,以h.264格式),信号rtmp_b可以携带编码视频数据(例如,以h.264格式),连同音频数据(例如,以aac格式),并且信号rtmp_b'可以携带编码视频数据(例如,以h.264格式)。由视频流之一携带的音频数据(例如,信号rtmp_a中的aac数据)可以是与相同视频流子集(例如,由信号video_a携带的视频流的子集)中的另一个视频流(例如,rtmp_a')中的视频数据关联的数据。携带在视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'中的每个中的数据可以按照特定实现的设计标准而变化。

信号video_a-video_b中的每个可以包括多个视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'。在所示的示例中,信号video_a包括由处理器150a生成的两个视频流(例如,编码视频流rtmp_a-rtmp_a')。信号video_a中的编码视频流之一(例如,rtmp_a)可以是响应处理器150a处理视频帧frames_a(例如,接收自捕获设备122a)生成的,并且信号video_a中的编码视频流中的另一个(例如,rtmp_a')可以是响应处理器150a处理视频帧frames_a'(例如,接收自捕获设备122a')生成的。在所示的示例中,信号video_b可以包括由处理器150b生成的两个视频流(例如,编码视频流rtmp_b-rtmp_b')。信号video_b中的视频流之一(例如,rtmp_b)可以是响应处理器150b处理视频帧frames_b(例如,接收自捕获设备122b)生成的,并且信号video_b中的视频流中的另一个(例如,rtmp_b')可以是响应处理器150b处理视频帧frames_b'(例如,接收自捕获设备122b')生成的。

处理器150a-150b可以把信号video_a-video_b提供给通信块152。信号video_a-video_b可以包括视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的数据包。通信块152可以被配置成发送/接收数据,和/或接收电力(例如,以给摄像头100的所有组件提供电力)。通信块152可以接收来自处理器150a-150b的信号video_a-video_b中的编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b',并把编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'作为信号(例如,stream)传送(例如,转发)给外部设备250。例如,信号stream可以是编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的单个传输。在所示的示例中,处理器150a-150b可以生成视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的数据包(例如,由处理器150a-150b实现的tcp/ip栈)。通信块152可以接收来自信号video_a的两个视频流(例如,rtmp_a-rtmp_a'),和来自信号video_b的两个视频流(例如,rtmp_b-rtmp_b'),并作为信号stream(例如,按先入先出原则)转发四个编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'。在一种示例实施中,通信块152可以不分析信号video_a-video_b中的数据包的内容(例如,通信块152可以实现常规的集线器)。信号stream可以按先入先出原则传输视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'。通信块152可以被进一步配置成接收来自诸如外部计算设备250的外部电源的信号power。信号power可以向摄像头100提供电力。例如,摄像头100可以不必具有独立的电源。

可以使与信号stream中的编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'关联的数据同步,以允许摄像头100周围场景的球形视野的实时(或近实时)流式传输。与信号stream中的编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'关联的数据可以允许外部计算设备250执行视频拼接操作,以把编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'变换成球形视野。例如,由外部计算设备250执行的视频拼接操作可以用于把四个视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'变换成表示球形视野的单个视频文件(例如,spherefov)。

可以实现投影方法,以把球形(或全景)图像表示成平面图像。投影方法的示例包括圆柱投影(例如,墨卡托(mercator)投影、弥勒(miller)投影、矩形球面展开(equirectangular)投影、兰伯特(lambert)圆柱等面积投影等)、方位投影(例如,直线性(rectilinear)投影、立体(stereographic)投影、鱼眼(fisheye)投影、等固体(equisolid)投影、正交(orthographic)投影等)或其它投影(例如,立方体(cubic)投影、正弦曲线(sinusoidal)投影、横轴墨卡托(transversemercator)投影、帕尼尼(pannini)投影、建筑学(architectural)投影等)。实现的特定投影方法(例如,矩形球面展开投影)可以变化。当实现视频编码时,某些投影方法(例如,立方体投影)可以带来好处。四个编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'到单个文件spherefov的变换可以包括编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的处理(例如,展开(dewarping)、剪切、移位等)。球形视野可以允许单个视频文件spherefov表示全方位2d图像。在一些实施例中,响应视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'而生成的球形视野可以与提供另一个球形视野的另一个视频文件组合,以允许观看者体验三维现实(例如,视频文件spherefov和另一个视频文件可以提供周围的环境的左右视图,以创建景深知觉)。在一些实施例中,信号文件spherefov可以是单视场视图。在一些实施例中,信号文件spherefov可以是立体视图(例如,每只眼睛一个视图)。立体视图可以被存储为通常表示单个场景的单个视频文件spherefov。

镜头110a-110a'和110b-110b'可以被布置成使得周围的环境的重叠区域由捕获设备122a、122a'、122b和/或122b'捕获。可以实现通过摄像头100的编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的同步,以确保捕获的重叠区域同时表示相同的场景,从而容许外部计算设备250执行成功的视频拼接操作。由于多个处理器150a-150b执行处理,并且数据信号stream是通过通信块152发送的,因此在数据包的传输中,可能存在随机性和/或延迟。通过同步,可以使随机性和/或延迟的影响最小化。

在一些实施例中,与视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'关联的数据包可以由摄像头100同步(例如,排序)。在一个示例中,可以使捕获设备122a、122a'、122b和/或122b'的曝光定时同步。在另一个示例中,可以配置多个编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的传输,以确保使来自信号stream中的各个编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的信号frames_a-frames_a'和frames_b-frames_b'中的视频帧交错。

在一些实施例中,数据包可以由外部计算设备250同步(例如,排序)。在一些实施例中,数据包可以由摄像头100和外部计算设备250两者同步(例如,排序)。编码视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的数据包的同步的实现可以按照特定实现的设计标准而变化。

外部计算设备250可以被配置成执行视频拼接操作,和表示球形视野spherefov。外部计算设备250可以实现给摄像头100生成信号power的电源。在一些实施例中,外部计算设备250可以被实现为小型便携式计算机。在一些实施例中,外部计算设备250可以是微型计算机(例如,微型pc(micropc)).在一些实施例中,外部计算设备250可以是台式计算机(或膝上型计算机或笔记本计算机)。在一些实施例中,外部计算设备250可以是平板计算设备。在一些实施例中,外部计算设备250可以是智能电话机。在一些实施例中,外部计算设备250可以被实现为头戴式显示器(例如,智能眼镜、虚拟现实头盔等)。在一些实施例中,外部计算设备250可以是全息计算机。在一些实施例中,外部计算设备250可以是计算机云。外部计算设备250的实现可以按照特定实现的设计标准而变化。

外部计算设备250可以被配置成解码在信号stream中到达的多个视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b',随后执行拼接操作,以生成由视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'构成的单个视频流。外部计算设备250可以被配置成对所述单个视频流重新编码,以生成信号spherefov。

在一些实施例中,视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'可以都是4k流。然而,实现的特定分辨率可以按照特定实现的设计标准而变化。组合的信号stream可以包括约8k的视频数据(例如,来自四个视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'中每一个的4k)。外部计算设备250执行的拼接操作可以把信号stream变换成具有约6k-8k的表示球形视野的视频数据的流。在示例实现中,拼接可以将总共8k的视频数据的重叠部分减少至6k和8k之间的分辨率。在另一个示例中,摄像头100可以捕获约3兆像素(例如2k)的视频数据的4个视频流,并且拼接的球形视频可以为约8兆像素(例如,4k)的视频数据。

信号stream可以实时(或近实时)传输视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'。通常,摄像头100不存储视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'。例如,在把视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'打包为信号stream,以便传输之前,摄像头100不编码和存储视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的完整副本。可以按先入先出原则(例如,实时)传输视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'的数据包。

参见图7,示出了例示全方位摄像头100'的示例6镜头实施例的等距视图的示图。6镜头全方位摄像头100'可以包括框架/壳体116'、颈部112'和/或镜头110a-110c和110a'-110c'的三个子集。镜头110a-110c和110a'-110c'的3个子集中的每个可以包括镜头110a-110c和110a'-110c'中的两个镜头。例如,镜头110a-110c和110a'-110c'的子集之一可以是包括镜头110a和110a'的子集。在另一个示例中,镜头110a-110c和110a'-110c'的子集之一可以是包括镜头110b和110b'的子集。在又一个示例中,镜头110a-110c和110a'-110c'的子集之一可以是包括镜头110c和110c'的子集。

镜头110a-110c和110a'-110c'的三个子集中的每个都包括两个不同的镜头(例如,镜头110a-110c和110a'-110c'中的每个只属于镜头110a-110c和110a'-110c'的子集之一)。镜头110a-110c和110a'-110c'中的哪个镜头属于镜头110a-110c和110a'-110c'的哪个子集可以按照特定实现的设计标准而变化。例如,位置、目标方向和/或与其它镜头110a-110c和110a'-110c'的接近度与镜头110a-110c和110a'-110c'中的哪些镜头在镜头110a-110c和110a'-110c'的哪个子集中无关。镜头110a-110c和110a'-110c'中的每个可以与捕获设备(例如,捕获设备122a-122c和/122a'-122c')关联。

参见图8,示出了例示全方位摄像头100'的示例6镜头实施例的侧视图的示图。该侧视图示出镜头110a-110c和110a'-110c'被布置成容许由关联捕获设备122a-122c和122a'-122c'捕获的图像提供对于全方位摄像头100'周围场景的球形视野的覆盖。

参见图9,示出了例示全方位摄像头100'的示例6镜头实施例的顶视图的示图。该顶视图示出镜头110a-110c和110a'-110c'被布置成容许由关联捕获设备122a-122c和122a'-122c'捕获的图像提供对于全方位摄像头100'周围场景的球形视野的覆盖。

参见图10,示出了例示全方位摄像头100″的示例8镜头实施例的等距视图的示图。8镜头全方位摄像头100″可以包括框架/壳体116″、颈部112″和/或镜头110a-110d和110a'-110d'的四个子集。镜头110a-110d和110a'-110d'的四个子集中的每个可以包括镜头110a-110d和110a'-110d'中的两个镜头。例如,镜头110a-110d和110a'-110d'的子集之一可以是包括镜头110a和110a'的子集。在另一个示例中,镜头110a-110d和110a'-110d'的子集之一可以是包括镜头110b和110b'的子集。在又一个示例中,镜头110a-110d和110a'-110d'的子集之一可以是包括镜头110c和110c'的子集。在又一个示例中,镜头110a-110d和110a'-110d'的子集之一可以是包括镜头110d和110d'的子集。

镜头110a-110d和110a'-110d'的四个子集中的每个可以包括两个不同的镜头(例如,镜头110a-110d和110a'-110d'中的每个只属于镜头110a-110d和110a'-110d'的子集之一)。镜头110a-110d和110a'-110d'中的哪个镜头属于镜头110a-110d和110a'-110d'的哪个子集可以按照特定实现的设计标准而变化。例如,位置、目标方向和/或与其它镜头110a-110d和110a'-110d'的接近度与镜头110a-110d和110a'-110d'中的哪个镜头在镜头110a-110d和110a'-110d'的哪个子集中无关。镜头110a-110d和110a'-110d'中的每个可以与捕获设备(例如,捕获设备122a-122d和122a'-122d')关联。

参见图11,示出了例示全方位摄像头100″的示例8镜头实施例的侧视图的示图。该侧视图示出镜头110a-110d和110a'-110d'被布置成容许由关联捕获设备122a-122d和122a'-122d'捕获的图像提供对于全方位摄像头100″周围场景的球形视野的覆盖。

参见图12,示出了例示全方位摄像头100″的示例8镜头实施例的顶视图的示图。该顶视图示出镜头110a-110d和110a'-110d'被布置成容许由关联捕获设备122a-122d和122a'-122d'捕获的图像提供对于全方位摄像头100″周围场景的球形视野的覆盖。

全方位摄像头100″的8镜头实施例具有比全方位摄像头100'的6镜头实施例更多的镜头。例如,增大镜头110a-110d和110a'-110d'的数目可以允许信号spherefov中的更高分辨率和/或更高像素密度。在另一个示例中,增大镜头110a-110d和110a'-110d'的数目可以减小镜头110a-110d和110a'-110d'之间的视差。在又一个示例中,增大镜头110a-110d和110a'-110d'的数目可以允许3d视频信号spherefov的创建(例如,如果全方位摄像头100″周围的各个点被镜头110a-110d和110a'-110d'中的不止一个镜头捕获,那么存在足以生成景深图的信息)。在又一个示例中,增大镜头110a-110d和110a'-110d'的数目会增大所需的处理量,和/或增大生成的数据量。

参见图13,示出了例示全方位摄像头100″'的示例多镜头实施例的等距视图的示图。多镜头全方位摄像头100″'可以包括框架/壳体116″'、颈部112″'和/或镜头110a-110n和110a'-110n'的多个子集。镜头110a-110n和110a'-110n'的多个子集中的每个子集可以包括镜头110a-110n和110a'-110n'中的至少两个镜头。例如,镜头110a-110n和110a'-110n'的子集之一可以是包括镜头110a和110a'的子集。在另一个示例中,镜头110a-110n和110a'-110n'的子集之一可以是包括镜头110n和110n'的子集。

镜头110a-110n和110a'-110n'的多个子集中的每个可以包括至少两个不同的镜头(例如,镜头110a-110n和110a'-110n'中的每个镜头只属于镜头110a-110n和110a'-110n'的子集之一)。镜头110a-110n和110a'-110n'中的哪个镜头属于镜头110a-110n和110a'-110n'的哪个子集可以按照特定实现的设计标准而变化。例如,位置、目标方向和/或与其它镜头110a-110n和110a'-110n'的接近度可以与镜头110a-110n和110a'-110n'中的哪个镜头在镜头110a-110n和110a'-110n'的哪个子集中无关。镜头110a-110n和110a'-110n'中的每个可以与捕获设备(例如,捕获设备122a-122n和122a'-122n')关联。

参见图14,示出了例示全方位摄像头100″'的示例多镜头实施例的侧视图的示图。该侧视图示出镜头110a-110n和110a'-110n'被布置成容许由关联捕获设备122a-122n和122a'-122n'捕获的图像提供对于全方位摄像头100″'周围场景的球形视野的覆盖。

参见图15,示出了例示全方位摄像头100″'的示例多镜头实施例的顶视图的示图。该顶视图示出镜头110a-110n和110a'-110n'被布置成容许由关联捕获设备122a-122n和122a'-122n'捕获的图像提供对于全方位摄像头100″'周围场景的球形视野的覆盖。

对于每个处理器(例如,处理器150a),关联至少两个捕获设备(例如,122a-122a')可以允许按比例增加或减少镜头110a-110n和110a'-110n'的数目,同时仍然容许全方位摄像头100″'能够提供实时的球形视野。

在全方位摄像头100″'的一些实施例中,在镜头的子集中,可以存在不止两个镜头。例如,镜头的一个子集可以包括镜头110a、110a'、110a″、110a″'、110a(4)'、…、110a(n)'。在另一个示例中,镜头的一个子集可以包括镜头110n、110n'、110n″、110n″'、110n(4)'、…、110n(n)'。对于与处理器150a关联的组件的示例,镜头110a、110a'、110a″、110a″'、110a(4)'、…、110a(n)'中的每个可以与捕获设备122a、122a'、122a″、122a″'、122a(4)'、…、122a(n)'关联。捕获设备122a、122a'、122a″、122a″'、122a(4)'、…、122a(n)'中的每个可以与处理器150a关联。基于通过捕获设备122a、122a'、122a″、122a″'、122a(4)'、…、122a(n)'捕获的数据,处理器150a可以生成视频流rtmp_a、rtmp_a'、rtmp_a″、rtmp_a″'、rtmp_a(4)'、…、rtmp_a(n)'。类似地,处理器150b可以生成视频流rtmp_b、rtmp_b'、rtmp_b″、rtmp_b″'、rtmp_b(4)'、…、rtmp_b(n)',并且处理器150n可以生成视频流rtmp_n、rtmp_n'、rtmp_n″、rtmp_n″'、rtmp_n(4)'、…、rtmp_n(n)'。为了简单起见,符号rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'可以指的是视频流rtmp_a、rtmp_a'、rtmp_a″、rtmp_a″'、rtmp_a(4)'、...、rtmp_a(n)'、rtmp_b、rtmp_b'、rtmp_b″、rtmp_b″'、rtmp_b(4)'、...、rtmp_b(n)'等(例如,生成许多视频流的处理器150a-150n中的许多处理器)。当提及其它组件时,可以使用类似的符号(例如,传感器124a-124a'、...、124n-124n'可以指的是与处理器150a-150n中的每个关联的许多传感器124a、124a'、124a″、...、124a(n)'、124b、124b'、124b″、...、125a(n)'等)。

参见图16,示出了例示全方位摄像头100″'的示例实施例的示例内部组件的示图。框架/壳体116″'的一部分被示出为包括镜头110a-110a'和镜头110n-110n'。示出了全方位摄像头100″'的内部组件。内部组件包括捕获设备122a(例如,与镜头110a关联)、捕获设备122a'(例如,与镜头110a'关联)、捕获设备122n(例如,与镜头110n关联)、捕获设备122n'(例如,与镜头110n'关联)以及电路120。

电路120可以包括处理器150a-150n、块(或电路)202a-202n和/或块(或电路)206a-206n。电路202a-202n可以实现音频编解码块。电路206a-206n可以包括存储器。通常,音频编解码块202a-202n和存储器块206a-206n中的每个可以与处理器150a-150n之一关联。例如,捕获设备120a、捕获设备122a'、音频编解码块202a和/或存储器206a可以与处理器150a关联。

类似地,电路120可以包括通信块152、块(或电路)212和/或块(或电路)214。电路212可以实现时钟发生器。电路214可以实现惯性测量单元。可以实现其它组件。全方位摄像头100″'中的组件的数目、类型和/或布置可以按照特定实现的设计标准而变化。

音频编解码块202a的实现可以代表音频编解码块202a、202a'、…、202n和/或202n'(例如,在全方位摄像头100″'中实现的所有音频编解码块202)的实现。可以实现音频编解码块202a,以捕获来自全方位摄像头100″'周围的环境的音频数据。全方位摄像头100″'可以包括麦克风(例如,示出了麦克风204a-204a'和204n-204n')。麦克风204a-204a'可以代表麦克风204a、204a'、…、204n、204n'(例如,全方位摄像头100″'的所有麦克风204)。麦克风204a-204a'可以被配置成接收来自全方位摄像头100″'周围的环境的音频信号。音频编解码块202a可以从麦克风204a-204a'接收音频输入。例如,麦克风204a可以被设置在从与镜头110a关联的方向捕获音频的位置,并且麦克风204a'可以被设置在从与镜头110a'关联的方向捕获音频的位置。由于捕获设备122a和122a',及音频编解码块202a与处理器150a关联,因此通过麦克风204a和204a'捕获的音频数据可以对应于通过捕获设备122a和122a'捕获的图像。麦克风204a和204a'的布置可以按照特定实现的设计标准而变化。

音频编解码块202a可以压缩和/或处理通过麦克风204a和204a'从环境捕获的音频数据。音频编解码块204a的实现可以按照特定实现的设计标准而变化。在一些实施例中,音频编解码块202a可以包括模-数转换器(adc)(例如,当麦克风204a和/或204a'被实现为模拟设备时)。在一些实施例中,音频编解码块202a可以不执行模-数操作(例如,当麦克风204a和/或204a'被实现为数字设备时)。通常,音频编解码块202a可以实现一些基本逻辑(例如,高通和/或低通滤波、数字信号处理等)。在一些实施例中,音频编解码块202a可以把接收的音频编码成特定格式(例如,mp3、aac、flac等)。例如,音频编解码块202a可以把编码的音频提供给处理器150a。在一些实施例中,来自音频编解码块202a的输出可以是脉冲码调制(pcm)和/或其它未压缩的数字音频格式。所述输出可以通过i2s总线,被提供给关联的处理器150a。例如,关联的处理器150a可以执行音频数据的编码和/或压缩。

存储器206a的实现可以代表存储器块206a、206a'、206n和/或206n'(例如,在全方位摄像头100″'中实现的所有存储器块206)的实现。存储器206a可以为处理器150a提供数据的非易失性存储。在一些实施例中,存储器206a可以高速缓冲存储器。在一些实施例中,存储器206a可以是用于捕获设备122a和122a'捕获的图像的缓冲器。例如,处理器150a可以被配置成即时地(onthefly)基于从捕获设备122a和122a'接收的信号frames_a-frames_a',编码视频流rtmp_a-rtmp_a'。存储器206a可以允许信号frames_a-frames_a'的临时存储,以在通过捕获设备122a和122a'捕获新图像时,给处理器150a提供更多的时间来执行用于生成视频流rtmp_a-rtmp_a'的编码操作。通常,存储器206a不存储编码视频流rtmp_a-rtmp_a'(例如,当数据包被编码时,全方位摄像头100″'传输视频流rtmp_a-rtmp_a')。

时钟发生器212可以被配置成为处理器150a-150n生成时钟信号。例如,时钟发生器212可以实现统一时钟发生器。在一些实施例中,通过时钟发生器212生成的时钟信号可以被用于启动/停用传感器124a-124a'、...、124n-124n'的曝光。例如,时钟发生器212可以被配置成通过控制传感器124a-124a'、...、124n-124n'的曝光的定时(例如,何时和持续多长时间),使处理器150a-150n生成的数据包同步。可以控制传感器124a-124a'、...、124n-124n'的曝光的定时,以确保按照特定次序(例如,与外部计算设备250执行的拼接操作相容的次序),生成与视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'关联的数据包。

惯性测量单元(imu)214可以被配置成捕获与全方位摄像头100″'关联的运动数据。例如,imu可以被实现为加速度计、陀螺仪和/或磁力计中的一个或多个。通过imu捕获的运动数据可以被发送给处理器150a-150n中的一个或多个。来自imu214的信息可以由处理器150a-150n中的至少一个处理,并作为待在执行拼接操作时使用的元数据传输给外部计算设备250。元数据可以连同视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'之一一起传输。例如,元数据可以提供在特定时间处通过全方位摄像头100″'捕获的图像的运动数据。例如,视频流rtmp_a携带的元数据中的运动数据可以适用于所有视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'的视频帧。元数据中的来自惯性测量单元214的信息的格式可以按照特定实现的设计标准而变化。元数据可以和视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'中的一个或多个一起传输。在一种实现中,元数据可以作为与视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'分离的元数据信道来传输。在示例实现中,元数据可以与视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'共享(i)公共时钟和(ii)时间戳中的一个或多个。公共时钟可以基于公共实时时钟生成。在示例实现中,时间戳可以基于公共实时时钟。

通信块152可以包括接口114'和/或块(或电路)210。电路210可以是配置成接收来自多个源的输入,并把所述输入串行化成一个输出的网络设备(例如,多路复用器)。例如,多路复用器210可以是交换机、集线器、路由器、usb集线器等。接口114'可以与由多路复用器210实现的协议兼容。多路复用器210可以接收来自处理器150a-150n的信号video_a-video_n,并经接口114'输出信号stream。

接口114'可以被配置成传送数据信号和/或接收电力输入。例如,接口114'可以实现以太网供电(poe)标准。在另一个示例中,接口114'可以实现usb标准。通过接口114'接收的电力可以用作全方位摄像头100″'的组件的电源。由接口114'实现的标准可以按照特定实现的设计标准而变化。接口114'可以被配置成连接到电缆154。

全方位摄像头100″'可以包括指示灯216。指示灯216可以被实现为led。例如,led216可以通过发出红光,指示全方位摄像头100″'正在记录。在另一个示例中,led216可以通过发出蓝光色,指示全方位摄像头100″'被通电。led216的实现可以按照特定实现的设计标准而变化。

全方位摄像头100″'可以包括电源按钮218。电源按钮218可以用于使全方位摄像头100″'通电和/或断电。电源按钮218被示出为连接到接口114'。通常,全方位摄像头100″'经由接口114'(例如,以太网供电(poe)、usb等)接收电力。电源按钮218可以是配置成控制接口114'的开关。

处理器150a-150n可以被配置成接收来自相关捕获设备122a-122a'、...、122n-122n'、相关音频编解码块202a-202n、和/或任何其它相关组件(例如,imu214)的数据。处理器150a-150n可以被配置成对接收的视频帧(例如,frames_a-frames_n和frames_a'-frames_n')执行编码操作。在一些实施例中,处理器150a-150n可以被配置成接收来自相关音频编解码块202a-202n的音频数据。在一些实施例中,处理器150a-150n可以被配置成实现tcp/ip栈,以传输视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'的数据包。

处理器150a-150n可以被配置成生成多个视频流(例如,视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n')。处理器150a-150n生成的视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'可以包括来自关联信号frames_a-frames_a'、...、frames_n-frames_n'的编码视频帧、来自关联音频编解码块202a-202n的关联音频数据、以及元数据(例如,来自imu214的元数据)。对于各个流来说,视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'中的数据的类型可以不同。例如,视频流rtmp_a可以携带编码视频数据、元数据和立体声音频数据,而视频流rtmp_a'可以只携带编码视频数据。

在一些实施例中,处理器150a-150n执行的编码可以包括压缩。处理器150a-150n可以被配置成执行各种类型的压缩技术(例如,按照h.264格式、h.265格式、vp9等)。h.264和h.265指的是itu-t发布的推荐标准。等同的国际标准分别是iso发布的iso/iec14496-10-mpeg-4part10、高级视频编码、以及iso/iec23008-2、高效视频编码。处理器150a-150n执行的编码可以实时(或近实时)地执行。例如,一旦接收到数据(以及在接收和/或记录所有数据之前),处理器150a-150n就可以对信号frames_a-frames_a'、…、frames_n-frames_n'中的数据执行编码。当处理器150a-150n接收到信号frames_a-frames_a'、…、frames_n-frames_n'中的新视频帧时,信号frames_a-frames_a'、...、frames_n-frames_n'中的初始帧可以作为视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的初始部分被编码和传输。例如,在处理器150a-150n编码视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'之前,不需要接收(或存储)信号frames_a-frames_a'、…、frames_n-frames_n'中的所有数据。处理器150a-150n执行的编码的类型可以按照特定实现的设计标准而变化。

处理器150a-150n可以被配置成把元数据应用于视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'。在一个示例中,元数据可以包括来自imu214的运动数据。在另一个示例中,元数据可以包括时间戳(例如,图片编号)。时间戳可以被实现为表示某条数据相对于某个已知事件被捕获的时间的数字。在示例实现中,mp4视频文件实现表示从记录开始以来的时间的时间戳(例如,单位为1/90000秒)。可以实现其它单位。可以实现相对于另一个事件的时间。通常实现时间戳,以确定事情(或事件)相对于彼此的定时。在另一个示例中,元数据可以包括可交换图像文件格式(exif)数据。通常,元数据包括与视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'有关的可以向另一个系统或最终用户提供附加信息的信息(例如,位置、摄像头规格、日期、摄像头记录配置等)。元数据的类型可以按照特定实现的设计标准而变化。

处理器150a-150n可以被配置成使视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'中的数据包同步。视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'中的数据包的同步可以允许视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'被实时(或近实时)地传输给其它设备(例如,外部计算设备250)。例如,可以实现同步,以确保按照适当的次序接收数据,从而确定哪个视频帧匹配在特定时间的摄像头100″'周围的环境的捕获图像。处理器150a-150n可以被配置成执行曝光同步和/或传输同步。处理器150a-150n实现的同步的类型可以按照特定实现的设计标准而变化。

在一些实施例中,处理器150a-150n可以控制曝光同步。可以实现曝光同步,以确保捕获的图像在相同时间,在所有传感器124a-124a'、…、124n-124n'上曝光,使得视频帧可以被无缝拼接在一起(例如,捕获图像中的任何对象在曝光时间之间未移动)。可以使不同传感器124a-124a'、…、124n-124n'的曝光时间同步,以确保在镜头110a-110a'、…、110n-110n'之间的重叠区域中捕获的场景是相同场景,并且可以被成功的拼接。实现的曝光同步的类型可以按照特定实现的设计标准而变化。

在一个示例中,可以通过单个时钟信号(例如,来自时钟发生器212的统一时钟信号)控制曝光同步。时钟发生器212可以向处理器150a-150n传输统一时钟信号,并且处理器150a-150n可以把统一时钟信号传递给关联传感器124a-124a'、…、124n-124n'。在另一个示例中,曝光同步可以是主/从时钟配置。在主/从时钟配置中,处理器150a-150n可以与捕获设备124a-124a'、…、124n-124n'的各个子集中的捕获设备124a-124a'、…、124n-124n'之一(例如,主捕获设备)协商公共定时信号。捕获设备124a-124a'、…、124n-124n'的各个子集中的主捕获设备124a-124a'、…、124n-124n'可以向捕获设备124a-124a'、…、124n-124n'的公共子集中的捕获设备124a-124a'、…、124n-124n'中的每个(例如,从捕获设备)发送公共定时信号。在又一个示例中,时钟发生器212可以向捕获设备124a-124a'、…、124n-124n'的子集中的每个中的主捕获设备发送时钟信号,并且捕获设备124a-124a'、…、124n-124n'的各个子集中的主捕获设备可以把所述时钟信号发送给捕获设备124a-124a'、…、124n-124n'的关联子集中的从捕获设备中的每个。

可以实现传输同步,以降低处理复杂性。视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'中的数据由处理器150a-150n生成,并且可以配置处理器150a-150n执行的传输同步,以按照特定次序传输数据包,从而确保可以有效地把视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'中的编码视频帧拼接在一起。例如,处理器150a-150n可以被配置成通过i2c执行协商操作,以实现传输同步。在另一个示例中,处理器150a-150n可以被配置成通过以太网执行协商操作,以实现传输同步。

在视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'开始由处理器150a-150n处理和编码之后,可以对可以由外部计算设备250拼接在一起的视频流rtmp_a-rtmp_a'、...、rtmp_n-rtmp_n'的数据包执行传输同步。由于存在涉及的多个处理器150a-150n,并且数据是通过联网的接口114'发送的,因此在各个数据包的延迟方面,存在一定的随机性。数据包可以由发射器(例如,摄像头100)和/或接收器(例如,外部计算设备250)排序。例如,处理器150a-150n可以被配置成确保来自视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'中的每个的具有时间戳k的帧被按顺序传输,使得视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'中的每个中的具有时间戳k的帧大致同时(或者一个接一个)地到达(例如,到达外部计算设备250)。在一些实施例中,处理器150a-150n可以传输视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n',并且外部计算设备250可以执行传输同步。传输同步的实现可以按照特定实现的设计标准而变化。

参见图17,示出了例示连接到外部计算设备250的摄像头100的示例的示图。摄像头100被示出为利用电缆154,连接到外部计算设备250。外部计算设备250被示出为微型计算机。微型计算机被示出为具有接口260。接口260可以被配置成传送信号spherefov。

微型计算机250可以包括各种输入/输出端口262。例如,输入/输出端口262可以实现音频输入/输出、视频输入/输出接口、通信端口、电源连接器等(例如,以太网、usb、s/pdif、hdmi、displayport、thunderbolt等)。微型计算机250的输入/输出端口262可以按照特定实现的设计标准而变化。在示例实现中,视频显示器可以连接到hdmi接口(例如,端口262之一的示例)。

微型计算机250可以包括接口264。接口264可以与摄像头100的接口114兼容。在所示的示例中,接口114、电缆154和接口256可以支持以太网标准。在另一个示例中,接口114、电缆154和接口256可以支持usb标准。通常,接口114、电缆154和接口256支持能够通过相同电缆传送数据和提供电力的通信标准。

在一些实施例中,电缆154可以横越远距离提供摄像头100和微型计算机250之间的直接连接(例如,摄像头100和微型计算机250可以能是分离的外壳)。例如,摄像头100和微型计算机250可以被配置成在相同的房间中工作。在另一个示例中,摄像头100可以在室外工作,并且电缆154可以连接到在附近的室内位置处的微型计算机250。在又一个示例中,摄像头100可以在室外工作,并且电缆154可以连接到位于附近的基站(例如,用于新闻报道的车辆)的微型计算机250。摄像头100和微型计算机250的布置和/或位置可以按照特定实现的设计标准而变化。

参见图18,示出了例示连接到网络280的摄像头100和外部计算设备250的示例的示图。电缆154可以用于连接到能够连接到网络280(例如,诸如因特网的广域网)的通信设备(例如,交换机、路由器、集线器等)。在图18中所示的配置中,通信设备可以向摄像头100提供电力。网络280可以经由电缆154',与微型计算机250通信。在图18中所示的实施例中,接口114和接口264不需要直接兼容,并且接口264不需要提供电力。

在一些实施例中,网络280可以被配置成在摄像头100和微型计算机250之间传送信息(例如,信号stream)。微型计算机250可以被配置成执行对于信号stream的拼接操作,从而生成信号spherefov。微型计算机250可以把信号spherefov传输给网络280,以提供球形视野的实时流式传输。

在一些实施例中,网络280可以包括配置成提供可用处理资源以按需缩放的计算设备。例如,网络280可以提供基于云的处理。摄像头100可以把信号stream传送给网络280,网络280可以执行对于信号stream的拼接操作,以生成信号spherefov。网络280可以把信号spherefov传输给请求设备,诸如微型计算机250。

参见图19,示出了例示连接到外部计算设备250和内容递送网络280的全方位摄像头100″'的实施例的示图。外部计算设备250的内部组件可以包括块(或电路)252、块(或电路)254和/或块(或电路)256。电路252可以是中央处理器(cpu)。电路254可以是图形处理器(gpu)。电路256可以是存储器。cpu252可以实现对于外部计算设备250的一般处理。gpu254可以被配置成执行特殊的图形密集计算。存储器256可以提供易失性和/或非易失性数据存储。

cpu252和/或gpu254可以被配置成对信号stream转码,以为输出信号spherefov提供不同的分辨率和/或压缩率(例如,比特率)。cpu252和/或gpu254可以被配置成即时从一种分辨率/比特率切换到另一种分辨率/比特率。cpu252和/或gpu254执行的操作可以按照特定实现的设计标准而变化。

通常,cpu252可以被实现为高性能处理器。gpu254可以被实现为高性能(例如,游戏级)图形处理单元。例如,常规的移动级处理单元可能未强大到足以执行拼接和/或转码操作。

存储器256可以被配置成接收信号stream。例如,存储器256可以缓冲信号stream中的输入数据包。在一些实施例中,存储器256可以用于使信号stream中的数据包同步。在一些实施例中,存储器256可以用于存储信号spherefov。例如,在对信号rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'执行拼接操作之后,外部计算设备250可以被配置成编码信号rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n',以创建文件spherefov,以便存储在存储器256中。在一些实施例中,文件spherefov可以被转码成多个比特流(例如,高分辨率比特流、低分辨率比特流等),并被存储在存储器256中。

存储器256可以包括块(或电路)258a-258n,和/或块(或电路)259。电路258a-258n可以实现队列。电路259可以实现多路复用器。在一些实施例中,视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'在被传输给外部计算设备250之前,可以不在摄像头100″'中被同步。当视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'在到达外部计算设备250之前未被同步时,信号stream的数据包可以被缓冲在队列258a-258n中。数据包可以被交错,以使视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'同步。多路复用器259可以被配置成从队列258a-258n接收交错的数据包。当视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'被同步时,cpu252和/或gpu254可以有效地执行视频拼接操作(例如,在减小失真的同时,生成球形视野)。

在一些实施例中,外部计算设备250可以被配置成把信号spherefov传送给网络280。在一个示例中,网络280可以是内容递送网络。在另一个示例中,网络280可以是远程服务器。内容递送网络280可以被配置成把信号spherefov分发给一个或多个最终用户282a-282n。例如,内容递送网络280可以实时(或近实时)地把从外部计算设备250接收的视频文件spherefov流式传输给最终用户282a-282n。

摄像头100″'可以捕获图像,对视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'编码,并作为信号stream,把视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'传送给外部计算设备250。外部计算设备250可以接收信号stream,解码视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n',执行视频拼接操作,生成信号spherefov,并把信号spherefov传送给网络280。网络280可以把信号spherefov分发给最终用户282a-282n。摄像头100″'执行的捕获、编码和传送操作,外部计算设备250执行的解码、视频拼接和传送操作,以及网络280执行的分发操作中的每个都可以实时(或近实时)地执行。例如,视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'中的初始编码视频帧可以被传送给外部计算设备250,以便在摄像头100″'接收新图像和为视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'生成接下来的编码视频帧的同时,进行视频拼接操作。类似地,网络280可以在外部计算设备250对视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的接下来的解码视频帧执行视频拼接操作时分发信号spherefov的初始视频帧,以生成信号spherefov的接下来的视频帧。

外部计算设备250可以接收单个视频信号(例如,stream),字形拼接操作,以及随后重新编码拼接的视频,以创建信号spherefov。外部计算设备250可以把全方位视频spherefov传送给内容分发网络280。在一些实施例中,内容分发网络280可以实现云处理(例如,配置成按需缩放的分布式处理)。云处理可以接收信号spherefov,把信号spherefov转码成多个全方位视频流(例如,不同的分辨率、不同的压缩率、不同的比特率等),随后按需求把转码的全方位视频分发给最终用户282a-282n。

把哪个版本的转码全方位视频传输给最终用户282a-282n可以基于各种因素。所述因素包括传输可用性因素。可用带宽是一个因素。另一个因素可以是最终用户设备解码能力(例如,支持的编解码器、屏幕分辨率、cpu能力、专用解码硬件的有无等)。用户订制等级(例如,用户支付了hd质量或者升级到4k质量的费用?)。实现的内容递送基础结构可以支持几种视频编解码器和/或多路复用器,以针对各种目标平台。

在一些实施例中,当更多的资源(例如,可用性因素)可用时,可以向最终用户282a-282n之一传输更高分辨率版本的转码的全方位视频spherefov。当较少的资源(例如,可用性因素)可用时,可以向最终用户282a-282n传输较低分辨率版本的转码的全方位视频spherefov。例如,最终用户282a可以具有很多的可用资源,并且内容递送网络282可以开始向最终用户282a递送高分辨率版本的转码的全方位视频spherefov。在稍后的某个时间,较少的资源可以供最终用户282a使用。对于最终用户282a而言,流可以切换到较低分辨率版本的转码的全方位视频spherefov(例如,最终用户282接收的流可以无缝切换,或者响应可用资源的变化,稍微破坏观看体验)。视频流的切换一般导致质量的变化。质量参数可以包括分辨率(一般用兆像素测量)、帧速率(一般以帧/秒测量)、比特率(一般以比特/秒测量,或者可选择地利用压缩率数字指定)、像素景深(一般以比特/像素测量)等。

参见图20,示出了方法(或处理)300。方法300可以执行启动过程。方法300通常包括步骤(或状态)302、步骤(或状态)304、步骤(或状态)306、步骤(或状态)308、判定步骤(或状态)310、步骤(或状态)312、步骤(或状态)314、步骤(或状态)316和步骤(或状态)318。

状态302可以开始方法300。之后,在状态304,全方位摄像头100″'的电路120和/或其它组件可以引导(例如,初始化所有组件)。在步骤306中,通信块152可以获得ip地址(例如,获得摄像头100″'在外部网络上的ip地址)。在步骤308,通信块152可以使得能够发现。之后,方法300可以转到判定状态310。

在判定状态310,通信块152可以确定是否存在发现请求和/或连接请求。如果判定状态310确定不存在发现请求和连接请求,那么方法300可以转到状态312。在状态312,通信块152可以等待发现请求和连接请求。之后,方法300可以返回判定状态310。如果判定状态310确定存在发现请求和连接请求,那么方法300可以转到状态314。

在状态314,通信块152可以与主机(例如,外部计算设备250)建立连接,并配置流式传输。在状态316,处理器150a-150n可以开始/停止流式传输。之后,方法300可以转到状态318。状态318可以终止方法300。

参见图21,示出了方法(或处理)350。方法350可以使传感器曝光同步。方法350通常包括步骤(或状态)352、步骤(或状态)354、判定步骤(或状态)356、步骤(或状态)358、步骤(或状态)360、步骤(或状态)362、步骤(或状态)364、步骤(或状态)366和步骤(或状态)368。

状态352可以开始方法350。在状态354,传感器124a-124a'、…、124n-124n'可以等待统一时钟信号(例如,来自时钟发生器212)。之后,方法350可以转到判定状态356。在判定状态356,传感器124a-124a'、…、124n-124n'可以确定是否接收到统一时钟信号。

如果判定状态356确定未接收到统一时钟信号,那么方法350可以返回状态354。如果判定状态356确定接收到了统一时钟信号,那么方法350可以转到状态358。在状态358,可以对于所有捕获设备,启动传感器124a-124a'、…、124n-124n'的传感器曝光。之后,在状态360,捕获设备122a-122a'、…、122n-122n'可以捕获图像。在状态362,捕获设备122a-122a'、…、122n-122n'可以把原始视频帧(例如,信号frames_a-frames_a'、…、frames_n-frames_n')发送给关联的处理器150a-150n。

在状态364,处理器150a-150n可以对视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'编码。在状态366,通信块152可以传输包括同步的视频数据的单个信号stream(例如,可以使视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'中的数据包同步,以便进行高效的视频拼接)。之后,方法350可以转到状态368。状态368可以终止方法350。

参见图22,示出了方法(或处理)400。方法400可以通过全方位摄像头100,实现传输同步。方法400通常包括步骤(或状态)402、步骤(或状态)404、步骤(或状态)406、步骤(或状态)408、步骤(或状态)410、判定步骤(或状态)412、步骤(或状态)414和步骤(或状态)416。

状态402可以开始方法400。在状态404,捕获设备122a-122a'、…、122n-122n'可以捕获图像。之后,在状态406,捕获设备122a-122a'、…、122n-122n'可以把原始视频帧(例如,frames_a-frames_a'、…、frames_n-frames_n')发送给关联的处理器150a-150n。在状态408,处理器150a-150n可以对视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'进行编码。之后,在状态410,处理器150a-150n可以交错来自编码视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的视频帧(例如,进行传输同步)。之后,方法400可以转到判定状态412。

在判定状态412,处理器150a-150n可以确定来自捕获设备122a-122a'、…、122n-122n'中的每个的编码视频帧是否已同步。如果判定状态412确定来自捕获设备122a-122a'、…、122n-122n'中的每个的编码视频帧未同步,那么方法400可以返回状态410。如果判定状态412确定来自捕获设备122a-122a'、…、122n-122n'中的每个的编码视频帧已同步,那么方法400可以转到状态414。在状态414,通信块152可以传输同步视频数据的单个信号(例如,信号stream)。之后,方法416可以转到状态416。状态416可以终止方法400。

参见图23,示出了方法(或处理)450。方法450可以通过外部计算设备250,实现传输同步。方法450一般包括步骤(或状态452)、步骤(或状态)454、步骤(或状态)456、步骤(或状态)458、步骤(或状态)460、步骤(或状态)462、判定步骤(或状态)464、步骤(或状态)466、步骤(或状态)468、步骤(或状态)470、步骤(或状态)472和步骤(或状态)474。

状态452可以开始方法450。在状态454,捕获设备122a-122a'、…、122n-122n'可以捕获图像。在状态456,捕获设备122a-122a'、…、122n-122n'可以把原始视频帧(例如,frames_a-frames_a'、…、frames_n-frames_n')发送给关联的处理器150a-150n。之后,在状态458,处理器150a-150n可以对视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'进行编码。在状态460,通信块152可以把来自编码视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的数据包传输给计算设备250(例如,全方位摄像头100″'不执行任何传输同步)。在状态462,可以在外部计算设备250的队列258a-258n中,接收视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的数据包。之后,方法450可以转到判定状态464。

在判定状态464,外部计算设备250(例如,利用cpu252、gpu254和存储器256的组合)可以确定数据包是否同步。如果判定状态464确定数据包不同步,那么方法450可以转到状态466。在状态466,外部计算设备(例如,利用cpu252、gpu254和存储器256的组合)可以交错编码视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的帧。之后,方法450可以转到状态468。如果判定状态464确定数据包同步,那么方法450可以转到状态468。

在状态468,多路复用器259可以多路复用交错的视频帧。之后,在状态470,外部计算设备250(例如,利用cpu252、gpu254和存储器256的组合)可以执行视频拼接操作。在状态472,外部计算设备250可以生成球形视野spherefov。之后,方法450可以转到状态472。状态472可以终止方法450。

参见图24,示出了方法(或处理)500。方法500可以实现交错视频帧的示例。方法500通常包括步骤(或状态)502、步骤(或状态)504、判定步骤(或状态)506、步骤(或状态)508、步骤(或状态)510、判定步骤(或状态)512、步骤(或状态)514和步骤(或状态)516。

状态502可以开始方法500。在状态504,处理器150a-150n(或者外部计算设备250中的队列258a-258n)可以接收来自视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的编码视频帧。之后,方法500可以转到判定状态506。在判定状态506,处理器150a-150n(或外部计算设备250)可以确定帧编号(例如,具有相同时间戳的帧)是否匹配已接收的其它视频帧。例如,视频流rtmp_a的帧k应匹配来自视频流rtmp_n'的帧k。

如果判定状态506确定视频帧编号不匹配已接收的其它视频帧,那么方法500可以转到状态508。在状态508,处理器150a-150n可以(例如在存储器块206a-206n中)缓冲视频帧(或者外部计算设备250可以利用队列258a-258n缓冲视频帧)。如果判定状态506确定视频帧编号不匹配已接收的其它视频帧,那么方法500可以转到状态510。在状态510,处理器150a-150n(或者队列258a-258n)可以基于捕获设备122a-122a'、…、122n-122n',对具有匹配编号的视频帧排序。之后,方法500可以转到判定状态512。

在判定状态512,处理器150a-150n(或者外部计算设备250)可以确定该帧编号的所有视频帧是否都已接收到。如果未接收到该帧编号的所有视频帧,那么方法500返回状态508。如果已接收到该帧编号的所有视频帧,那么方法500可以转到状态514。在状态514,处理器150a-150n(或者外部计算设备250)可以确定该帧编号的视频数据已同步。之后,方法500可以转到状态516。状态516可以终止方法500。

摄像头100可以实现灵活的体系结构,以允许球形视频的实时视频拼接和/或流式传输。在一些实施例中,摄像头100可以把视频流rtmp_a-rtmp_a'和rtmp_b-rtmp_b'(以及其它的捕获视频信号,诸如rtmp_n-rtmp_n')同步到信号stream中。信号stream可以在外部计算设备250执行的拼接操作中使用。拼接的视频信号spherefov可以是提供球形视野的视频(例如,可以在虚拟现实应用和/或360度视频应用中使用的视频)。

摄像头100可以被配置成具有连接到各个处理器的多个传感器(例如,连接到处理器150a的传感器122a-122a')。摄像头100可以由多个处理器(例如,150a-150n)组成。在图5中所示的一个实施例中,每个处理器可以存在两个传感器(例如,传感器122a-122a'和122b-122b'),并且每个摄像头可以存在两个处理器(例如,处理器150a-150b)。在一些实施例中,每个处理器可以存在四个传感器(例如,处理器150a的传感器122a、122a'、122a″和122a″',处理器150b的传感器122b、122b'、122b″和122b″',等等),并且每个摄像头可以存在三个处理器(例如,处理器150a-150c)。在一些实施例中,每个处理器可以存在许多传感器(例如,处理器150a的传感器122a、122a'、122a″、…、122a(n)',等等),并且每个摄像头可以存在许多处理器(例如,处理器150a-150n)。

代替等待记录完成,或者把由处理器150a-150n中的每个产生的视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'作为文件存储在存储介质上,可以利用通信块152,流式传输来自处理器150a-150n的输出视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'(例如,经由网络接口114的输出)。在一些实施例中,摄像头100可以经由网络接口114(例如,以太网或usb),把视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'输出给外部交换机(或集线器),所述外部交换机(或集线器)被配置成把视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'组合成单个传输流(例如,转发数据包)。在一些实施例中,视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'可以由通信块152组合成信号传输stream,并且信号stream可以经由接口114输出。信号stream可以通过单个电缆(例如,电缆154)被传输给专用外部计算设备250(例如,微型pc)。外部计算设备250可以对视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'执行拼接操作,从而创建表示摄像头100捕获的球形视野的单个视频流spherefov。

外部计算设备250可以被配置成通过另一个网络接口260(例如,以太网、wifi、lte等),传输作为结果的球形视频spherefov(例如,实时或近实时的流直播)。例如,外部计算设备250可以被配置成把单个视频流spherefov传输给云服务器(例如,内容递送网络280),所述云服务器可以随后把单个视频流spherefov分发给多个最终用户。在再一个示例中,外部计算设备250可以被配置成把单个视频流spherefov传输给用户设备(例如,与台式计算机、智能电话机、平板计算机、头戴式显示器等的直接连接)。在又一个示例中,外部计算设备250可以被配置成连接到网络设备(例如,交换机、集线器、路由器等),并经由网络设备,连接到最终用户设备。拼接的视频流spherefov的分发的实现可以按照特定实现的设计标准而变化。

在一些实施例中,摄像头100可以不实现视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的独立存储。例如,不实现视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的独立存储可以降低成本,和/或允许实时(或近实时)地传输视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'。在一些实施例中,摄像头100可以实现用于视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的存储器。例如,所述存储器可以提供对于高分辨率流的缓冲(例如,如果网络无能力把信号video_a-video_n传输给外部计算设备250)。

在一些实施例中,可以无独立电源地实现摄像头100。通常,给摄像头100的所有电力由外部计算设备250提供。例如,摄像头100、电缆154和外部计算设备可以实现以太网供电(poe)或通用串行总线(usb)标准。可以实现电缆154,以把由摄像头100生成的所有视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'传输给外部计算设备250,以及把由外部计算设备250生成的电力(例如,信号power)传输给摄像头100。

可以按照一种或多种方式,使通过单个电缆154传输的多个视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'同步。在一些实施例中,可以利用定时机构,使摄像头100中的多个传感器122a-122a'、…、122n-122n'的曝光的定时同步。例如,时钟发生器212可以实现单个统一时钟。在另一个示例中,可以实现通过i2c和/或通过以太网的协商方法。

在一些实施例中,可以实现多个流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的传输,以确保来自各个流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的帧被交错。例如,如果来自视频流rtmp_a的视频帧k被示出为ak(并且来自视频流rtmp_a'的视频帧k被示出为a'k,来自视频流rtmp_b的视频帧k被示出为bk,以及来自视频流rtmp_b'的视频帧k被示出为b'k,等等),那么通过网络电缆154传输的数据stream可以被布置为:a1、a'1、b1、b'1、a2、a'2、b2、b'2、…、n'n。

在一些实施例中,外部计算设备250可以实现多个队列258a-258n(例如,在存储器256中)和多路复用器模块259。所述多个队列258a-258n可以用于使来自视频流rtmp_a-rtmp_a'、…、rtmp_n-rtmp_n'的视频帧同步(例如,如果它们还未处于适合于执行视频拼接操作的顺序)。

如对于本领域技术人员明显的,在图1-24的示图中例示的功能和结构可以利用按照本说明书的教导编程的常规通用处理器、数字计算机、微处理器、微控制器、分布式计算机资源和/或类似的计算机器中的一个或多个来设计、建模、仿真和/或模拟。如对于本领域技术人员也明显的,适当的软件、固件、编码、例程、指令、操作码、微代码和/或程序模块可以由本领域程序人员根据本公开的教导容易地准备。软件通常包括在一个介质或多个介质中(例如,非临时性存储介质),并且可以由处理器中的一个或多个处理器顺序或并行地执行。

本发明的实施例也可以在asic(专用集成电路)、fpga(现场可以编程门阵列)、pld(可编程逻辑器件)、cpld(复杂可编程逻辑器件)、门海、assp(专用标准产品)和集成电路中的一个或多个中实现。可以根据一种或多种硬件描述语言,实现电路系统。可以结合闪存、非易失性存储器、随机存取存储器、只读存储器、磁盘、软盘、诸如dvd和dvdram的光盘、磁光盘和/或分布式存储系统,利用本发明的实施例。

术语“可以”和“通常”当在本文中结合“是”和动词使用时意为传达描述是示例性的,并且被认为宽到足以包括在本公开中介绍的具体示例,以及基于本公开可以得出的备选示例的意图。如本文中使用的术语“可以”和“通常”不应被解释成必然意味省略对应元件的合意性或可能性。

尽管参考实施例,特别示出和描述了本发明,但是本领域的技术人员将明白,可以在不脱离本发明的范围的情况下作出形式和细节方面的各种改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1