发明内容
本发明的目的之一,就是要克服上述摄像机在结构上的缺陷,指出一种多镜头光心重合式全方位摄像机,同样是利用仿生学的原理,模拟昆虫的球形多截面复眼结构,同时对摄像机周围的360度区域进行图像采集,但经过结构的改造消除了光路交叉造成的缺陷。
本发明的另一个目的是:为降低传输信息量和对网络带宽的要求,即采用按需分配的方式;不再采用申请人于2000年7月28日申请的复眼式全方位摄像装置专利中采用的方式:“把180度或360度全方位视频图像全部发送到客户端的视频缓存区中,客户端用户在视频缓存区中从全方位图像里选择感兴趣的画面进行显示的方式”,而是采用如下方式,即:视频服务器根据客户端在选择视野时上行数据申请的需求,把相应的视频图像部分发出去。该客户端用户在移动鼠标、摇杆或遥控器选择需要的视野时,即改变发往视频服务器上行数据的需求,视频服务器则根据该客户端上行数据的需求发送相应的视频图像。不再把全部全方位视频发给客户端,因而,大幅度减少了传输的信息量,大大降低了对传输速率和网络带宽的要求。
为了达到上述目的,本发明在摄像装置的结构上采用了特殊的光路设计:让不同方位的摄像机光心重合(包括实际光心与虚拟光心的重合)。通过在摄像装置内部为摄像机镜头引入反射镜(或具有相同反射作用的棱镜等反射装置),以改变镜头的光路,使得各个镜头的光心虽然在物理上不重合,但其在反射镜中所成的像重合,从而达到使各个镜头具有虚拟的光心重合的实际效果。因而,克服了光路交叉存在的视频盲区,实现了让全方位摄像装置各个镜头采集的视频图像在各点不同景深处均能很好衔接的目的,经过视频处理后,将不同层次的视频图像均能很好的进行融合。当需要采集球形或半球形的视频图像时,同样可使各个镜头在空间横轴方向(水平方向)及纵轴方向(垂直方向)具有的虚拟光心重合,以便使球形或半球形的视频图像克服光路交叉,形成完美的全方位视频图像。当然,也可以采用摄像机镜头实际光心与虚拟光心在空间纵轴方向(垂直方向)重合的方式,采集球形或半球形的视频图像,以达到同样的效果。
上述设计分散了原来向中心集中的光线,使得原本需要在一点做全方位接收的摄像机群改变为分布在多点接收的摄像机群,克服了摄像机不能重叠放置的难题,消除了盲区和重影区。由于构成虚拟光心重合时,每台摄像机的前方都有一面反射镜,并且反射镜之间的结合部无缝衔接,使各个不同角度摄像机采集的视频图像拼接成浑然一体的全方位视频图像。
同时,本发明对视频传输的方法进行重大改进,采用的方法是:在中央视频服务器中增加了视频分发功能,即:中央视频服务器在通过多个摄像头同时对现场多角度的进行视频采集并生成全景视频的同时,将生成的全景视频根据客户需要裁剪成不同的内容分发给不同的客户端,从而让不同用户自由的观看他们所感兴趣的区域而互不影响。
其工作过程如下:
改进的全景实况转播方法设计方案,是在申请人2000年7月28日申请的复眼式全方位摄像装置专利中视频转播方法的基础上发展而来的。如同传统的转播方法一样,改进的全景实况转播方法仍采用服务器-客户端的结构,即C/S结构。C/S结构的优点在于服务器控制能力强,与客户端的交互能力强,对实时性要求高的全景实况转播方法来讲,C/S结构是理想的选择。从本质上讲,改进的全景实况转播方法是一种视频点播模式,但它与视频点播模式有所不同(与申请人2000年申请的复眼式全方位摄像装置专利也有所不同)。传统的视频点播模式仅将被点播视频如实地传送给请求播放的客户端,无须进行任何处理;而改进的全景实况转播方法,则必须实时地生成全景视频,又实时地将全景视频按照客户端操作者的意愿进行剪裁,将众多操作者期望看到的部分分别发送出去,这其中涉及:全方位视频采集、全景视频拼接、个性化剪裁、视频压缩及解压等步骤,比传统视频点播模式要复杂的多。因此,改进的全景实况转播的方案设计上要充分考虑到实时性、并行性、稳定性以及性能优化上的问题。整个装置由全景摄像机群,中央视频服务器和多个客户端组成。全景摄像机群放置在被拍摄场景的前端,负责拍摄现场的各个位置和区域,并将拍摄好的多路视频信息传送给中央视频服务器。中央视频服务器是一个图形工作站级别的服务器,它负责将多路视频合成为一个全景视频,并将全景视频经过剪裁、编码等进一步处理,通过网络发送给客户端。客户端可以是个人电脑,也可以是配置了机顶盒的家庭电视机或者其它具有交互功能并接入互联网的显示设备。客户端负责接收中央视频服务器端发来的现场实况视频,并将它进行解码,放映到显示设备上。如果客户端观众想要改变观察区域,可利用客户端安装的相应的软件,通过鼠标、摇杆或遥控器向服务器发回一条位置消息,告之中央视频服务器客户端观众要观看的区域。中央视频服务器根据位置消息,对全景视频进行剪裁,将用户感兴趣的区域剪裁下来,再进行编码,发送给客户端,完成客户端观众个性化选择观察区域的功能。
如前所述:全景实况转播装置的中央视频服务器端(简称服务器端)主要承担全景视频的采集、生成,剪裁,编码与传输5部分工作。另外服务器端还要接收和处理客户端传来的位置信息,以便根据客户端观众的要求剪裁其所感兴趣的全景视频区域中的相应部分。服务器端的工作流程分如下部分:
1.采集全景视频:全景视频的采集是使用摄像机群从多个角度将场景中的所有区域以多路视频的形式拍摄下来。
2.生成全景视频:将采集好的多路视频传入中央视频服务器并合成为一幅180度或360度全景视频。
3.剪裁全景视频:服务器端生成的全景视频是由几路视频合成而来的,信息量过大不易于传输,同时观众在同一时刻只需观看全景视频的一部分。因此,在将全景视频传输给远程客户端观众之前,服务器首先要对其进行剪裁,仅将客户端观众感兴趣的区域剪裁传输。由于每个客户端观众感兴趣的区域有所不同,因此,服务器端分别为每个观众剪裁他们所期望的视频区域。剪裁区域的大小可根据系统的设计需求而定,一般网络上视频的分辨率320*240或者640*480的,在本装置中设为640*480。
4.采用视频编码:视频编码是在视频传输前所要做的必要的一个环节。视频编码可以大大降低视频的体积,使之适合在互联网上传输。本装置选用Divx(Divx编码器是MPEG编码器基础上发展而来的,是MPEG4压缩算法的一个子集。)作为视频编码器,Divx不仅是一款功能齐全的编码器,更重要的是,它为采用多核处理器的中央视频服务器作了特殊的优化,编码效率有了明显的提升。
5.视频传输:适合视频的传输协议主要有UDP/RTP/SIP(UDP:用户数据报传输层协议;RTP:用于Internet上针对多媒体数据流的一种实时传输协议;SIP是在IP网上进行多媒体通信的应用层控制协议),其中RTP和SIP最适合多媒体数据如视频在互联网上传输。在本装置中,可使用UDP协议(局域网中),或采用RTP、SIP协议(互联网中)传输。
6.接收及处理位置消息:中央视频服务器接收到客户端发来的位置消息后,会对位置消息进行处理,分析发送此位置消息的客户端ID(标示、身份证),并按照新的位置剪裁全景视频,把相应的视频部分发送给对应的客户端。
客户端如前所述,一般为个人电脑,也可以是配置了机顶盒的家庭电视机或者其它具有交互功能并接入互联网的显示设备。其运作流程包括:接收、解码和显示视频,以及发送位置信息四个任务。其中,接收、解码和显示视频三个任务与传统的视频点播系统客户端没有什么不同,而发送位置消息是全景实况转播系统的客户端的最重要的功能。客户端的运作流程如下:
1.视频接收:客户端接收由中央视频服务器发来的视频,检查视频的完整性。在视频接收的过程中,通常会设置一个视频帧缓存区,来保障客户端播放视频的完整性。如是在局域网中,由于网速较快,客户端接收视频流一般都是连贯的、畅通的,因此这个帧缓存区可以不用设置。
2.视频解码:解码环节与编码环节相对应,是将服务器端编码后的视频帧重新恢复回来。服务器端使用的是Divx的编码器,解码器可以选择Divx解码器,也可以选择整合了Divx解码器的FFDShow(使各类视频播放更加流畅的通用编码器)解码器。
3.视频显示:视频显示是将被播放的视频经过显示卡放映到屏幕中的过程。在Windows中,视频显示模式一般是Overlay(一种数字视频的显示技术,用于优化视频播放。)模式。
4.发送位置消息:这个环节是全景实况转播系统中最重要的一个环节,它赋予了客户端观众改变视角的能力。当观众要求改变视角,想观看场景中的其他区域的时候,通过操纵鼠标、摇杆或遥控器,客户端就会发送相应位置消息给服务器端。
位置消息记录着客户端观众向中央视频服务器请求新的观察区域的位置,是远程客户端观众与中央视频服务器进行交互,改变其观察区域的关键,是全景实况转播系统与传统转播系统最主要的区别之一。在这里,“位置”是指中央视频服务器中生成的全景视频的某部分像素的位置。全景视频是一个超宽视频,以本发明样机6台(8台摄像机构成360度全方位,仅用其中6台)摄像机为例:所生成的全景视频的角度为45度×6=270度,所生成的“水平环状”全景视频的宽度为640×6=3840像素,这里每一个像素都代表一个位置,就像水平坐标一样。
一个宽度与高度分别为3840和480像素的全景视频,被放置在坐标系中与X轴和Y轴对齐,X轴的长度和Y轴的长度与全景视频的宽度和高度一致,即3840和480像素。这样,全景视频中的每个象素,坐标系中都有一个坐标点与之对应。在本装置中,以客户端观众改变水平方向的视角为例,因此只定义水平坐标,是为剪裁窗口横向运动的位置作准备的。剪裁窗口是一个抽象的窗口,它负责将全景视频中特定部分剪裁下来传送给相应远程客户端观众,远程客户端观众屏幕中看到的现场区域,就是根据该观众通过鼠标、摇杆或遥控器选择的视频图像,通过上传位置消息给中央视频服务器,经剪裁窗口剪裁下的全景视频中的部分区域。服务器每生成一帧全景视频,剪裁窗口就将它剪裁下来,并发送给客户端,所以对于客户端来讲,每时每刻收到的视频大小,总是剪裁窗口大小,均为全景视频中的一部分区域。剪裁窗口所在的位置,即剪裁全景视频的位置,是由客户端决定的。每当观众通过鼠标、摇杆或遥控器要求改变所视区域的时候,客户端就发送一条记录着观众要求观看的新区域的位置消息给中央视频服务器,服务器收到这条位置消息,将剪裁窗口移动至新的位置,并将新位置上的全景视频相应区域剪裁下来,传送给客户端。这样,远程客户端的观众一要求改变观察区域,客户端就发送相应的位置消息,服务器立即按照位置消息改变剪裁窗口的位置,把新位置的视频区域剪裁下来,再通过网络传送给客户端,客户端将新位置区域的视频播放出来。这样,远程的客户端观众就控制了他的视域,就像在现场一样,自由地观看现场的任何一个区域,左顾右盼,如同身临其境。
因此,本发明所述的一组多镜头光心重合式全方位摄像装置及转播方法,应用于网络视频转播及视频监控领域时具有很突出的优点。首先,本装置采用多镜头光心重合式全方位摄像装置用于图像信息的采集时,经过结构的改造消除了光路交叉造成的视频盲区,以及在不同景深处由于交叉程度不同软件处理也不同,因而造成很大的软件处理的工作量。改进后的全方位摄像装置,由于光心重合、光路不再交叉,无须大量计算机处理时间,且效果更完美。
其次,视频传输的方法采用按需分配的方式,根据客户端观众的需要,不再把180度或360度或其它全方位视频图像全部发给客户端,而是根据客户端在选择视角时上行数据申请的需求,把其中客户端观众感兴趣的部分发送给客户端,因而,大幅度降低了传输信息量和对网络带宽的要求,更有利于实现网络化实时转播。
综上所述,本发明在应用于视频监控、视频会议及视频转播时,将生成的光心重合、光路不再交叉、无盲区的全景视频,通过剪裁、压缩编码、传输等步骤,发送给众多的远程客户端观众。因为可以选择全景视频的任意部分,远程客户端的众多观众在观看现场节目时,可以自由地观看他们感兴趣的区域,摆脱了以往摄像机云台或摄像师控制视野的束缚,让众多的客户端观众通过鼠标、摇杆或遥控器自行控制视野如同身临其境、左顾右盼。这是目前监控装置以及网络化实时转播无法实现的。
具体实施方式
参照附图将详细描述具体实施方案。
图1为视频图像光路交叉式摄像机群构成的视场(申请人2000年申请的复眼式全方位摄像装置专利的视频图像光路示意图);
图中以3台摄像机为例:1a、1b、1c构成了摄像机群的一部分,并以一个点为圆心部署,均匀地放置在与圆心等半径的圆上,每个摄像机负责拍摄360度或180度视域中的一个角度(角度取决于摄像机镜头的拍摄角度)。摄像机群采集的视频图像可拼成一幅完整的360度或180度现场全方位视频图像。图中2a为摄像机1b、1c构成视频图像光路中存在的盲区A1,该区域两台摄像机1b、1c的视场均无法覆盖到,即无法拍摄到这个区域中的景物。3a为摄像机1c生成的视场B1;4a为摄像机1b、1c生成视场的交叉点,即1b、1c两台摄像机的视场交于一点,5a为摄像机1b、1c生成的视场的重影区C1,即该区域1b、1c两台摄像机的视场均能覆盖;3b为摄像机1b生成的视场B2;4b为1a、1b两台摄像机生成视场的交叉点;5b为摄像机1a、1b生成视场的重影区C2,3c为摄像机1a生成的视场B3,图1中6为3台摄像机1a、1b、1c构成的视场在进行视频拼接时最佳拼接位置,即:“良好拼接圈”,是一条穿过各个交点的圆圈,在这个位置上的所有景物均不会受到盲区和重影区的影响。图中2b为摄像机1a、1b构成的视场存在的“盲区”A2。可见:根据上述摄像机群部署的全方位摄像装置,在它的全景视域中含有较大的盲区和重影区。图中7a、7b、7c为3台摄像机1a、1b、1c的光心:即摄像机镜头的拍摄角度(视角)的出发点或(视角)顶点,不难看出当3台摄像机1a、1b、1c的光心7a、7b、7c在空间重合时,所拍摄的全方位视频图像不存在盲区和重影区,3台摄像机1a、1b、1c拍摄角度(视角)所生成的光路衔接良好,通过视频处理可生成完好的全方位视频图像。但是,摄像机存在一定体积,其光心不可能在空间重合,因而需要改变摄像机视频图像的接收方式。
图2为视频图像光路反射示意图;
图2引入了平面反射镜以改变镜头的光路,使得各个镜头在反射镜中所成像的光心重合,从而达到使各个镜头具有虚拟的公共光心的实际效果。
图中A部分:21为直接进入摄像机镜头22的视频图像光路,图中B部分增加一面45度斜放的反射镜:23为进入反射镜24的视频图像光路,未能直接进入摄像机镜头25(虚线所示),26为反射镜将投影到它上面的视频图像光路进行折射,由水平方向传播改变为竖直向下方向传播,进入摄像机镜头27。原来摄像机需要摆放在水平方向上来接受水平方向的光线,如图中A部分摄像机镜头22所示;现在摄像机可以在镜子下方竖直向上,接收反射镜向下反射的视频图像,如图中B部分摄像机镜头27所示。根据光路等效的原则,这相当于反射镜中的虚像摄像机25在水平方向上接收水平方向的视频图像。
图3为装有反射镜的全景摄像机视频图像光路模型;
图3为每一部摄像机均配上一面反射镜,图中共8部摄像机及8面反射镜,这里仅以31a、31b、31c三部摄像机为例:31a、31b、31c放置在反射镜下方竖直向上,来自左侧视频图像投影33a、来自正前方视频图像投影33b、来自右侧视频图像投影33c,经过反射镜34a、34b、34c,生成向下反射的视频图像投影32a、32b、32c,在摄像机31a、31b、31c中成像。于是所有的摄像机均可在反射镜的底部接收从各个方向射入的水平传播的视频图像投影,根据光路等效的原则,这相当于各个摄像机在镜子中的虚像光心重合到了一点,来接收从各个方向射入的视频图像投影。图中35a、35b、35c为反射镜34a、34b、34c支撑模块。
图4为摄像机在反射镜中的虚拟影像光心重合示意图;
图中41为图3中三部摄像机在反射镜中重合的虚拟光心,42a为图3中摄像机31a接受来自右侧视频图像投影33c,经反射镜34c反射的视频图像投影32c所生成的视场;同样,42b为图3中摄像机31b接受来自正前方视频图像投影33b,经反射镜34b反射的视频图像投影32b所生成的视场;42c为图3中摄像机31c接受来自左侧视频图像投影33a,经反射镜34a反射的视频图像投影32a所生成的视场;三部摄像机每部45度视角,共生成3×45=135度视角,即全方位360度视角中的135度。
图5双排摄像机全景反射镜视频图像光路模型;
图5双排摄像机全景反射镜视频图像光路模型本质与图3装有反射镜的全景摄像机视频图像投影模型没有区别,只是由于本装置样机的摄像机印制电路部分的排列占了较大的位置,导致全景摄像机直径较大,为了缩小直径,将摄像机分别固定在上下两层,反射镜片分别往上下两层摄像机投影,因而形成上下两层摄像机生成的图像方向不一致,对此,只需在采集视频图像的服务器缓存区中用软件将反方向图像校正即可。图5中51a、51c为固定在上层的摄像机;51b为固定在下层的摄像机;52b为向下反射的镜片、52a、52c为向上反射的镜片,53a为来自左侧视频图像的投影,通过反射镜52a向上反射视频图像54a进入摄像机51c;53b为来自正前方投影,经过反射镜52b向下反射影像54b进入摄像机51b。53c为来自右侧视频图像的投影,通过反射镜52c向上反射视频图像投影54c进入摄像机51a;三部摄像机经反射镜同样构成视频图像虚拟光心重合,生成全方位360度视角中135度视角。
图6为全方位反射镜式摄像装置结构图;
图中61为全方位反射镜式摄像装置底盘,螺栓62安装在底盘上,使支撑板63固定在螺栓62上;64a为安装在支撑板上的摄像机,螺栓65支撑装有反射镜的模块66a,同样装有反射镜的模块66b由螺栓67固定并与支撑板68联接,摄像机64b安装在支撑板68上,螺栓69把支撑板68与上端盖610固定在一起,611a为摄像机64b的印制电路板:装有CCD(电荷藕合器件图像传感器)芯片、DSP(数字信号处理)芯片及USB(通用串行总线)接口,与计算机相应的USB接口连接。由于摄像机构造及原理是公知的技术,在此不再赘述。螺栓612把支撑板63、装有反射镜的8个模块及支撑板68紧固在一起。611b为摄像机64c的印制电路板;同样装有反射镜的模块66c、66d、66e经螺栓安装在支撑板68上;摄像机64d、64e安装在支撑板63上;613为装有反射镜的全景摄像装置样机外壳。611c为摄像机64e的印制电路板,安装在支撑板63上。
图7为全景实况转播系统的运作模式;
图7中71为一高校体育场的现场实况:270度环形视角的平面描述。72为6台独立的摄像机(用于描述全方位反射镜式摄像装置)构成360度全景摄像机群中270度示意图,放置在被拍摄体育场的前端,负责拍摄现场的相关位置和区域,覆盖体育场的270度现场实况。全景摄像机群(全方位反射式摄像装置)72将拍摄好的多路视频传送给中央视频服务器73;中央视频服务器是一个图形工作站级别的服务器,它负责将多路视频合成为一个全景视频,并对全景视频实施剪裁、编码等步骤,通过网络发送给客户端。74a为中央视频服务器根据客户端要求的视角发送的全景视频的片段;75a为客户端向服务器发回的一条位置消息,告之中央视频服务器客户端观众想要观看的区域。76a为中央视频服务器根据位置消息,对全景视频进行剪裁,将用户感兴趣的区域如74a剪裁下来,再进行编码,发送给客户端;77a为客户端78a选择的视角1的视频图像;客户端78a可以是家用电脑,也可以是配置了机顶盒的家庭电视机或者其它具有交互功能并接入互联网的显示设备,如一些视频监视装置。客户端负责接收中央视频服务器端发来的现场实况视频,并将它进行解码,放映到显示设备上。78b为选择视角2的客户端,77b为其选择的视频图像;78c为选择视角n的客户端,77c为其选择的视频图像;78d为变换视角浏览的客户端,77d为其选择的新的视频图像,其过程为:75b为客户端78d向中央视频服务器73发送的位置消息,选中中央视频服务器端73中拼接的全景实况视频79中的710部分,中央视频服务器73根据位置消息75b,对全景实况视频79进行剪裁,将客户端78d观众感兴趣的区域710剪裁下来,再进行编码、发送给客户端78d,如箭头76b所示。这个环节是全景实况转播系统中最重要的一个环节,它赋予了客户端观众改变视角的能力。使客户端观众如同身历体育场其境,左顾右盼、想看哪看哪。
图8全景视频位置坐标及剪裁窗口示意图;
图8中81为一个宽度与高度分别为3840和480像素的全景视频案例,被放置在坐标系中与X轴和Y轴对齐,X轴的长度和Y轴的长度与本例中全景视频的宽度和高度一致,即3840和480。这样,全景视频中的每个象素,坐标系中都有一个坐标点与之对应。在此,仅以客户端观众做水平方向的视角改变为例,因此只定义水平坐标,为剪裁窗口的横向运动作准备。剪裁窗口82是一个抽象的窗口,它负责将全景视频的一部分剪裁下来传送给远程客户端观众,远程客户端观众看到的现场区域,就是剪裁窗口剪裁下的全景视频中的部分区域。中央视频服务器每生成一帧全景视频,剪裁窗口82就将它剪裁下来,并发送给相应客户端,所以对于客户端来讲,每时每刻收到的视频大小,总是剪裁窗口的大小,总是全景视频中的一块区域。剪裁窗口82所在的位置,即全景视频81所需剪裁、发送的位置,是由客户端决定的。每当客户端观众要求改变显示区域的时候,客户端就发送一条记录着观众要求观看的新区域的位置消息给中央视频服务器,中央视频服务器收到这条位置消息,将剪裁窗口82移动至新的位置,并将全景视频中新位置上的区域剪裁下来,传送给客户端。这样,远程的客户端观众一要求改变观察区域,客户端就发送位置消息,中央视频服务器立即按照位置消息改变剪裁窗口的位置,把新位置的视频区域剪裁下来,再通过网络传送给客户端,客户端将新位置区域的视频播放出来。这样,远程的客户端观众就控制了他的视域,就像坐在现场一样,自由地观看现场的任何一个区域,左顾右盼,如同身临其境。
图9视域控制流程图;
图9中91为中央视频服务器接收位置消息部分模块,通过网络中央视频服务器接收到客户端上行发送位置消息后,分析发送此位置消息的客户端ID(标示、身份证),并按照新的位置,将改变剪裁窗口的位置模块92移动至全景视频中剪裁新的位置上的视频图像模块93,将新位置上的区域剪裁下来,编码后送至发送视频模块94发送给对应的客户端。客户端接收由中央视频服务器发来的视频后,接收视频模块95检查视频的完整性,经视频解码后送至视频帧缓存区。播放视频模块96将被播放的视频从视频帧缓存区取出经过显示卡放映到屏幕中。当客户端观众要求改变视角,想观看场景中的其他区域的时候,通过操纵鼠标、摇杆或遥控器客户端发送位置消息模块97就会发送相应位置消息给服务器端。发送位置消息模块97是全景实况转播系统中最重要的一个环节,它赋予了客户端观众改变视角的能力。当观众要求改变视角,想观看场景中的其他区域的时候,通过操纵鼠标、摇杆或遥控器客户端就会发送相应位置消息给服务器端。
位置消息记录着客户端观众向中央视频服务器请求新的观察区域的位置,是远程客户端观众与中央视频服务器进行交互,改变其观察区域的关键,是全景实况转播系统与传统转播系统最主要的区别之一。在这里,“位置”是指中央视频服务器中生成的全景视频的某个水平像素的位置。全景视频是一个超宽视频,以本发明样机中6台摄像机为例:所生成的全景视频的角度为45度×6=270度,所生成的“水平环状”全景视频的宽度为640×6=3840像素,这里每一个像素都代表一个位置,就像坐标一样。
图10全景实况视频服务器的过滤器图表;
图10中视频服务器的过滤器图表包括:101为视频采集器,是一种“源过滤器(SourceFiler)”,它与摄像机的驱动软件衔接,将外部摄像机捕获到的视频数据,通过驱动软件导入到过滤器图表中来。360度、180度或本例中270度全景视频的生成,需要多个摄像头同时采集,因此在本例过滤器图表中,有6个视频采集器,分别与6台摄像机相对应。视频采集器往往是摄像机厂商随摄像机提供的配套软件,不需要再进行编制或改动。视频采集器的数据传递,一般属于DirectShow(微软公司提供的一套在Windows平台上进行流媒体处理的开发包)的“推模式”,即由源过滤器“推动”视频数据向下游的过滤器流动。
本例中6路摄像机形成270度视域与一个全景视频合成器102相连接,这是生成全景视频的最主要的过滤器,它将实现时间同步,色彩融合和透视变换以及最终全景视频的生成中提出的算法和架构。本例中是有6个输入端和1个输出端的过滤器,6个输入端分别与6个视频采集器的输出端相连,使得6个视频采集器输出的视频数据都进入全景视频合成器102中。全景视频合成器102内部有多个显示缓存区,与它每个输入端相对应,本例中有6个缓存区。采用多视频流同步方案式:即每台摄像机的视频帧(Sample)将进入相应的缓存区等待,直到6个缓存区内都有至少一个视频帧的时候,释放出来用以合成全景视频。全景视频的合成采用GPU:(Graphic Processing Unit)显示卡中图形处理芯片,协同运算,因此在这个过滤器中需要对OpenGL(“Open Graphics Library”,开放的图形程序接口,是一套三维图形处理库,也是该领域的工业标准。)进行初始化。采用GPU协同运算,需要将视频帧以纹理的形式上传上去,这个过程需要用到OpenGL的glTexSubImage2D(图形处理算法)指令生成全景视频。全景视频在显示缓存区中生成后,需要调用OpenGL中的ReadBack指令,系统将显示缓存区中的视频数据读回到内存中来,并将这些数据看作为一个新的视频帧,储存在一片新的内存区域里。它的大小就是全景视频的一个帧的大小:即本例中6台摄像机的6个缓存区的大小。最后,全景视频合成器将新生成的视频帧打上时间戳(保持特定时间同步),再通过输出端,将全景视频递推给视频分配器103。视频分配器103是一个一进多出的过滤器,它将全景视频合成器输出的全景视频复制成多路视频,并分别从它的各个输出端中传送出去,以便后边处理。每当一个视频分配器的输出端被一个下游的过滤器连接上时,便会自动生成一个未被连接的输出端,等待其他下游过滤器的连接。因此,视频分配器理论上可以有无限多个输出端,将全景视频无限复制并推送给各个输出分支。但是一般地,往往会考虑到系统性能的问题,会有一个分支的上限,上限要依据系统的带载能力而定。本样机采用4核CPU的普通PC机及GPU协处理器作为中央视频服务器,带载能力上限为24台客户端,仍能保持25帧实时播放。如果本发明与相关网络技术结合如:P2P(peer-to-peer的缩写)技术,通过互联网直接交互与共享,可节省大量资源,承载更多的客户端。
视频剪裁器104:视频剪裁器是将视频分配器发来的全景视频进行剪裁,并将它剪裁的结果送入视频编码器105的一个变换过滤器。中央视频服务器生成的全景视频是由几路视频合成而来的,分辨率过大不易于传输,同时观众在同一时刻只能观看全景视频的一部分。因此,在将选好的视频部分传输给远程客户端观众之前,中央视频服务器首先要对其进行剪裁,仅将客户端观众感兴趣的区域剪裁下来传送给他。每个客户端观众感兴趣的区域都有所不同,因此,服务器分别为每个观众剪裁他们所期望的全景视频区域。剪裁区域的大小可根据系统的设计需求而定,一般网络上视频的分辨率为320*240或者640*480,在本装置中设为640*480,因为网络视频分辨率越高,越能带给观众如临现场的感觉。
由于全景实况转播系统,是一个个性化单播系统,每个用户需要有一个单独的视频编码器105,它的主要功能是将剪裁下来的视频进行压缩编码,这一功能可以由软件完成,也可以由硬件完成,每个独立的硬件视频编码器支持一个用户,这样全景视频便被分配给每一个远程客户端观众了。采用硬件编码系统的好处是可以进行大规模的扩展,使全景视频系统可以支持众多的远程客户端观众。
视频发送器106负责将编码完成的视频发送给远程客户端。视频数据的收发主要靠使用Windows Socket来完成(简称Winsock网络编程),是一套开放的、支持多种协议的Wndows下的网络编程接口,是Wndows网络编程事实上的标准。应用程序通过调用Winsock的API(应用程序编程接口)实现相互之间的通信,而Winsock利用下层的网络通讯协议功能和操作系统调用实现实际的通信工作。套接字是通信端点的一种抽象,它提供一种发送和接收数据的机制。Windows环境下的套接字有两种标准的协议:TCP(传输控制协议),它提供了双向、有序、无重复并且无报文边界的数据流服务;UDP(用户数据报协议),它建立在IP(网际协议)协议之上,提供数据报传输,支持双向的数据流。本装置采用UDP协议,这是因为标准的TCP协议虽然可以保证数据传输的可靠性,但是由于视频传输所需要的网络频带很宽,在一般网络带宽的条件下,使用TCP协议的网络开销是不可接受的。UDP协议虽然由于取消了校验、重发机制在可靠性上稍有不足,但是,能够达到较高的通信速率。因此,对数据可靠性要求不高而对数据实时性要求较高的网络数据通信,如本装置进行实时的视频传送,当采用校验、重发机制后,获得的视频图像已经″时过境迁″了,反而不利。此时,采用UDP协议更加理想。
上述6种过滤器各司其职,共同完成全景视频的采集、生成和发送。
图11全景实况视频客户端的过滤器图表;
图11中111客户端的视频接收器与服务器端的视频发送器相对应,接收来自视频发送器的视频数据,并将它通过输出端推送给下游的视频解码器。视频数据采用以UDP为协议的分包发送方式,位置消息的发送,采用TCP协议,这是因为一方面位置消息相对视频数据更加重要,另一方面位置消息的数据量比较小,可以选择网络开销比较大的TCP协议发送。图11中112FFDShow视频解码器。FFDShow视频解码器融合了多个解码器为一体,它可以解包括Xvix、Divx、X264等多种压缩格式的视频。在此过滤器图表中,由于上游的过滤器输出的是以Divx压缩的格式,因此在媒体协商的时候就已经确认,这个视频解码器的内核转为Divx解码器。图11中113为VMR视频渲染器。VMR全称Video Mixing Renderer,它是集视频混合与播放为一体的视频渲染器。它内部包括混合器(Mixer)、图像合成器(Compositor)、分配演示器(Allocator Presenter)、核心同步控制器(Core Synchronization Unit)和窗口管理器(Window Manager)。虽然VMR的功能很强大,但是在这里,本装置仅将它用作单纯的视频播放。
图12视频发送器的Socket(套结字)运作流程图;
图12中121:socket()建立流式套接字,在开始视频传输之前,服务器首先启动,通过调用socket函数建立一个套接字,设置好通讯协议(UDP协议);图12中122:设置套接字的地址与协议,调用bind函数将该套接字和本地服务器网络IP地址联系在一起。图12中123:等待服务器告知客户端IP,当客户端同样调用socket函数建立一个套接字,服务器与客户端建立通讯联系:互相获得对方的IP地址,此时,服务器即可告知视频发送器客户端IP地址,由于采用UDP协议,因此不需要进行listen(监听)和accpet(接收),客户端和服务器之间就可以直接通过调用函数sendto(发送到)和recvfrom(接收自)来发送和接收数据。视频数据量一般都比较大,往往需要重复调用多次recvfrom函数来接收视频数据。因此为了保证客户端能够正确接收视频数据,图12中124:发送视频数据的大小给指定IP客户端,服务器端Socket在发送正式的视频数据之前,首先发送一个视频大小的数据给指定IP客户端,告诉客户端被接受视频的数据量。然后,图12中125:发送视频数据给指定IP的客户端,由视频发送器发送。图12中126:客户端关闭判断,客户端是否退出,如果没有退出,视频发送器程序转至127模块,准备发送下一帧视频,重复124、125、126模块步骤。如果客户端关闭,视频发送器程序转至128模块:等待下一个客户端IP地址到来。视频发送器接收到从上游传来的视频数据后,就将它分两步进行发送,直到客户端退出为止,双方才调用closesocket(关闭套接字)函数将套接字关闭。客户端退出后,服务器会让连接此客户端的视频发送器进行复位,清空它的IP地址,准备为下一个客户端发送数据。
图13客户端的Socket(套结字)工作流程图;
图13客户端在视频接收时,与服务器端视频发送器的Socket运作流程相对应。客户端首先建立Socket套接字131模块;132模块:设定协议即运行;当与服务器端连接成功后,客户端Socket便开始运行模块133:接收视频数据量。在接收视频数据之前,Socket会先接收由视频发送器传来的视频大小的数据量,再按照此数据量调用recvfrom()接收视频数据模块134:接收视频发送器发来的视频数据,直到此帧视频数据全部接收完毕,并经模块135判断是否接受完毕。如果接受完毕,将运行模块136:MediaSample形式封装,将接收的视频数据以MediaSample的形式进行封装;模块137:打上时间戳推送视频解码器,即推送给下游过滤器进行解码;模块138:判断是否退出?如果客户端退出,则转至模块139:关闭Socket套结字,即结束客户端视频采集;如不退出,程序转至1310模块:准备接收下一帧视频数据;重复模块133、134、135、136、137、138模块步骤,继续客户端视频采集的过程。
图14为反射镜45度、摄像机60度视角视频光路反射示意图;
图中141为进入45度反射镜142视频光路的上部光路示意,143为141视频光路穿过45度反射镜的虚拟光路。144为反射镜后方虚拟摄像机镜头(虚线所示),为水平方向放置。145为视频光路的下部光路149穿过45度反射镜142进入虚拟摄像机镜头144的虚拟光路。146表示水平基准与反射镜142构成45度角。147为视频光路的下部光路149经过45度反射镜142折射进入摄像机镜头148的光路。1410为视频光路的上部光路141经过45度反射镜142折射进入摄像机镜头148的光路。1411表示摄像机60度视角。
图15反射镜15度、摄像机60度视角视频光路反射示意图;
图中反射镜151与水平面155构成15度反射镜,主要为采集全景摄像机下部图像而设计。
图中152为视频光路左部份1510穿过15度反射镜151进入反射镜后方虚拟摄像机镜头153(虚线所示)的虚拟光路。虚拟摄像机镜头153为倾角方式放置。图中154为视频光路右部份156穿过15度反射镜151进入反射镜后方虚拟摄像机镜头153(虚线所示)的虚拟光路。155表示水平基准,与反射镜151构成15度角。156为视频光路的右部份,与水平基准155垂直。因此,全景摄像机下部图像均可通过反射镜151采集。
157为经过15度反射镜151将156视频光路折射进入摄像机镜头158的光路。159为经过15度反射镜151将1510视频光路折射进入摄像机镜头158的光路。
图16视频光路逆向、反射镜45度、镜头视角60度示意图;
图16视频光路逆向是指根据光路可逆原则:人们在反射镜中可以互相观察到对方。因此,当把摄像机放置在反射镜前不同位置时,就可以观察到反射镜前不同的事物。图16中摄像机为接收全景摄像机下部图像不再竖直向上放置,而是放置在反射镜斜前方。因此,摄像机及反射镜摆放的位置、角度可以根据需要设计。
图16与图14装有反射镜的全景摄像机视频光路模型基本相同,只是摄像机为接收下部视频图像不再竖直向上放置而是放置在反射镜斜前方。图中161为反射镜与水平基准165构成45度角。162为1610视频光路的左侧光路穿过45度反射镜的虚拟光路,进入反射镜后方虚拟摄像机镜头163(虚线所示)。164为166视频光路的右侧光路穿过45度反射镜的虚拟光路,进入虚拟摄像机镜头163(虚线所示)。167为摄像机镜头的60度视频光路角度。168为166视频光路的右侧光路经45度反射镜161折射进入摄像机镜头169的光路。1611为视频光路的上部光路1610经过45度反射镜161折射进入摄像机镜头169视频光路。169为60度视角摄像机。
图17视频光路逆向、锥状反射镜30度、镜头视角45度示意图;
图17摄像机为采集下部视频图像设计的,图中共有8台摄像机,仅以171a、171b、171c三台为例:171a、171b、171c分别放置在反射镜174a、174b、174c斜上方,来自右下方投影172a、来自正前方投影172b、来自左下方投影172c,经过反射镜174a、174b、174c,生成向上反射的视频光路173a、173b、173c,并在摄像机171a、171b、171c中成像。因此,所有的摄像机均可接收反射镜的底部视频图像,8台摄像机由于光心重合,生成的图像没有死区,但是有重叠。经过图像处理后可以形成无缝衔接的底部图像。175a、175b、175c为支撑模块。
图18锥状反射镜30度、8台摄像机视频图像叠加示意图,为图17摄像机采集的下部视频图像叠加示意图;
图中181为8台摄像机中第一台摄像机采集的视频图像,由于视频传感器为矩形,故图像信息呈矩形状。图中182a虚线为图中181矩形视频图像的分割线,182a与图中182h虚线分割线共同将181矩形视频图像分割成3部分,除181矩形视频图像中标有①部分外,其余两部分均与其它摄像机视频图像183及189重叠。由于8台摄像机向下俯视,其矩形视频图像必然重叠,因此,在拼接成一幅完整的俯视图像时需要去掉重叠部分。同理,图中183为8台摄像机中第二台摄像机采集的视频图像,182a与图中182b虚线分割线共同将183矩形视频图像分割成3部分,除183矩形视频图像中标有②部分外,其余两部分均与其它摄像机视频图像181及184重叠,拼接时需要去掉这些重叠部分。图中184为第三台摄像机采集的视频图像,182b与图中182c虚线分割线共同将184矩形视频图像分割成3部分,除184矩形视频图像中标有③部分外,其余两部分均与其它摄像机视频图像183及185重叠,拼接时需要去掉这些重叠部分。依此类推,分别保留图18中185的④部分、186的⑤部分、187的⑥部分、188的⑦部分及189的⑧部分。形成8台摄像机视频叠加的模式。
图19为锥状反射镜30度、8台摄像机视频裁剪、拼接示意图;
图中191①为矩形视频图像181去掉重叠部分保留下来的视频图像;图中192②为矩形视频图像183去掉重叠部分保留下来的视频图像;图中193③为矩形视频图像184去掉重叠部分保留下来的视频图像;图中194④、195⑤、196⑥、197⑦、198⑧分别为矩形视频图像185、186、187、188、189去掉重叠部分保留下来的视频图像。因此,图19中①②③④⑤⑥⑦⑧可拼接成一幅完整的同光心、无重叠、无交叉、拼接良好的俯视图像。同理,锥状反射镜也适合采集仰视图像,只是把采集下部视频图像的图17摄像机及反射镜垂直旋转180度即可。
图20为球型全方位摄像机群构成示意图;
图20球型全方位摄像机群主要为需要仰视天穹和俯视脚下的地方时用,如北京奥运场馆:“鸟巢”,人们在观看体育表演时渴望观察鸟巢建筑的奇特的顶部;而转播“水立方”时,人们又一定要看到下部碧绿的游泳池。因而,球型全方位摄像机群在一些转播现场也很需要。
图20为球型全方位摄像机群,由图17、图3及图17摄像机及反射镜垂直旋转180度构成的,分别为下、中、上三部份。为简化起见,各部份仅以三部摄像机为例说明。图20中上部份:201a、201b、201c三部摄像机为用于接收上部视频图像203a、203b、203c经过反射镜204a、204b、204c反射,进入三部摄像机的视频图像202a、202b、202c。图20的中间部份:205a、205b、205c为中间部份反射镜,中间部分视频图像206a、206b、206c反射的视频图像2012a、2012b、2012c进入中间部份三部摄像机207a、207b、207c。图20中的下部份:208a、208b、208c为下部份反射镜,2011a、2011b、2011c为进入反射镜的下部视频图像。209a、209b、209c为经过反射镜反射进入摄像机2010a、2010b、2010c的视频图像。下、中、上三部份摄像机群的虚拟光心重合,合成的球型全方位图像经过视频处理后,可形成即无死区又无重叠、浑然一体的球型图像。
图21球型全方位摄像机群构成半球视野示意图A;
图21为球型全方位摄像机群将下、中、上三部份摄像机群拍摄的视频图像拼接,然后投影到一个球型空间以供客户端观众选择自己喜欢观看的视角。图21为球型空间一分为二的的其中一部分。
图22球型全方位摄像机群构成半球视野示意图B;
图22为球型空间一分为二的的另外一部分。
图23球型全方位摄像机群三部份构成的示意图A;
图23将图21球型空间分为三部分,图中231表示由上部摄像机群合成的视频图像;图中232表示由中部摄像机群合成的视频图像;图中233表示由下部摄像机群合成的视频图像。图23三部分合成的图像可根据需要进行组合,如中部、上部组合,或中部、下部组合,或中部单独合成视频图像。
图24是球型全方位摄像机群三部份构成示意图B;
图24将图22球型空间分为三部分,图中241表示由上部摄像机群合成的视频图像;图中242表示由中部摄像机群合成的视频图像;图中243表示由下部摄像机群合成的视频图像。图24三部分与图23三部分合成的图像可构成完整的球型空间,由三部分组成:图23中231与图24中241为完整的上部分;图23中232与图24中242合成为完整的中间部分;图23中233与图24中243合成为完整的下部分。同样可以根据需要进行组合,如中部、上部组合,或中部、下部组合,或中部单独合成视频图像。
图25半球型简易全方位摄像机群构成示意图;
图25为一些视频监控场合研制的,如交通路口、广场或楼宇中。这些场合无需体育或文艺转播那样高的分辨率,也无需观察上部,为降低成本,提高性价比,只需简易半球型全方位摄像机群:图25中采用90度广角摄像机5部,其中4部拍摄中部视频图像,为简洁起见只描述其中正面的两部摄像机及反射镜,背面两部摄像机及反射镜的形态及功能与正面的两部摄像机及反射镜完全相同,不再赘述。图25中251及2510为正面的两面反射镜,252及259分别接受左右两侧视频图像投影,加之背面另外两侧视频图像投影共同构成环状连续视频图像:即图23中232与图24中242拼接成的完整的中间部分;253及258为经过反射镜折射进入摄像机254及257的视频图像;256为下部视频图像投影,直接进入摄像机255。图25中摄像机群与以往有所不同,5部摄像机中放在反射镜前面的254等4部摄像机仍然经过反射镜形成横轴方向(水平方向)虚拟光心重合,拍摄中部视频图像;采集下部图像的摄像机255的实际光心在纵轴方向(垂直方向)与254等4部摄像机的光心重合。这样,图25简易半球型全方位摄像机群采集的图像由于光心重合,合成的半球型全方位图像经过视频处理后,可形成即无死区又无重叠、浑然一体的半球型图像。图25的显示区域:与图23中232、图24中242合成为完整的中间部分,加上图23中233、图24中243合成的完整的下部分所显示的区域相同,只是摄像机较少,合成后的像素较少而已。
从上述说明可以看到:本发明所述的多镜头光心重合式全方位摄像装置及全景摄像、转播的方法,由于采用新型全景摄像装置及转播的方法,当其应用于视频监视时不但无机械传动部分,而且消除了盲点和死区,并且可供多人远程同时登录观看,并可从服务器端全方位视频监控图像中各取所需;应用于视频转播等领域时:远程客户端观众在观看现场节目时,可以自由地通过遥控器、操纵杆从视频服务器中360度球形、半球形,360度环形全方位视频转播图像中选取自己感兴趣的区域,摆脱了以往摄像师控制视野的束缚,让客户端观众如同身临其境,左顾右盼。并且对网络带宽、客户端设备性能要求不高,在三网合一的形势下,为视频转播技术掀开了新的一页。可见,本发明比目前网络化视频监控及视频转播有着显著进步。