著录项信息
专利名称 | 基于KINECT的实时3D视频通信系统及其实现方法 |
申请号 | CN201310146580.0 | 申请日期 | 2013-04-25 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2013-07-24 | 公开/公告号 | CN103220543A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04N13/00 | IPC分类号 | H;0;4;N;1;3;/;0;0查看分类表>
|
申请人 | 同济大学 | 申请人地址 | 上海市杨浦区四平路1239号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 同济大学 | 当前权利人 | 同济大学 |
发明人 | 张冬冬;刘典;叶晨;王昕;薛敏峰;臧笛 |
代理机构 | 上海天协和诚知识产权代理事务所 | 代理人 | 叶凤 |
摘要
本发明基于KINECT的实时3D视频通信系统及其实现方法。利用KINECT摄像头同步采集彩色视频信息、深度视频信息和音频信息,并对深度信息进行滤波优化处理。利用x264对两路视频信息进行压缩处理,利用MP3编码器进行音频压缩,并利用多线程技术实现三路信息的同步采集。利用实时传输协议RTP进行网络传输。系统在接收到三路信息后,对两路视频信息进行解码,获得彩色视频信息和深度视频信息,并进行虚拟视点场景的重构,得到符合人眼视差的左眼场景视频和右眼场景视频。根据双目3D成像原理,将两路视频合成得到3D视频场景,与音频信息同步后利用DirectX播放,构成3D视频会议系统。
1.一种基于KINECT的实时3D视频通信系统,其特征在于,系统属于普通C/S构架,各终端之间通过网络连接,每个终端属于对等节点,既可以作为音视频发送方,也可以作为音视频的接收方;所述每个终端按照功能实现模块,包括KINECT数据采集及预处理模块、音视频编码模块、网络传输模块、音视频解码模块、深度信息优化模块、三维重构模块和音视频播放模块,其中:
所述KINECT数据采集及预处理模块,包括彩色视频信息采集及预处理模块、深度视频信息采集及预处理模块和音频信息采集模块,利用多线程技术实现三路信息的同步采集,实时地同步获取彩色视频信息、深度视频信息和音频信息;
所述彩色视频信息采集及预处理模块采集的彩色视频信息为UYVY格式,并将之转换成YUV420格式;所述深度视频信息采集及预处理模块采集的深度视频信息为16位灰度图像,经过移位操作得到原始深度信息;对原始深度信息进行预处理:首先通过阈值滤波对背景进行处理,对超出KINECT最远感知距离的物体,统一设为背景;其次对深度值进行归一化处理,得到8位的灰度图像;KINECT获取深度信息和彩色视频信息的摄像头之间存在水平位移,为了准确地进行深度视频信息和彩色视频信息的校正,彩色视频和深度视频采集需要满足下列关系:T(C(i+1))>T(D(i))>T(C(i)),其中C(i)表示采集的第i帧彩色图,D(i)表示采集的第i帧深度图,T表示采集时刻;所述音频信息采集模块,为KINECT麦克风阵列,采集音频格式为单通道16位PCM格式;
所述音视频编码模块,使用X.264协议对彩色视频信息和深度视频信息分别进行压缩,使用MP3音频编码器对音频编码,从而减少传输音视频数据冗余,以解决音视频数据量过大,网络带宽无法满足的问题;
所述网络传输模块,包括音视频流发送模块和音视频流接收模块,用于端与端之间的音视频数据传输,采用RTP实时流媒体传输协议,在获取音视频编码数据之后,随即在发送端进行同步实时传输,在接收端获取数据,具体为:
所述音视频流发送模块作为发送端需发送三路数据,分别为深度图数据、彩色图数据和音频流数据,为区分不同的数据流,在发送之前,为各路数据添加前缀标识符,彩色图数据为‘0’和‘1’;深度图数据为‘1’和‘0’;音频流数据为‘a’和‘b’;同时当某个数据包的大小超过63kb时,对其进行分帧处理,并且在发送结束时发送结束数据包;
以16KHz的频率采样,在线程开启之后,将采集到的音频流的编码与发送穿插于每一帧视频流的采集、编码与发送之间,每次音频编码的数据流均为前一环节过程中采集到的音频数据,并对编码后的音频流数据进行分包处理再发送;
所述音视频流接收模块作为接收端依据指定的端口接收数据包,根据数据包的标识符识别数据包类别,并对数据包进行拆包;
所述音视频解码模块,接收到网络音视频码流后对接收到的两路视频码流分别使用H.264进行解码,而音频流则转至音视频播放模块直接进行解码播放;
所述深度信息优化模块对接收端解码后的深度视频信息进行空洞填充及平滑等优化处理:首先采用对解码得到的低分辨率深度图像进行空洞填充及平滑处理;其次采用线性插值方法由低分辨率深度图像生成与彩色图像分辨率相同的高分辨率深度图像;最后对高分辨率深度图像进行滤波处理,得到用于重构的深度图;
所述三维重构模块用于对虚拟视点场景的重构,利用接收到的彩色视频和优化后的深度视频重构得到符合人眼视差的左眼场景视频或右眼场景视频,再将左眼或右眼场景视频同接收到的彩色视频进行合成得到3D视频场景,具体实施过程:初始化求出偏移矩阵,并依次进行偏移处理、遮掩判断、空洞填补、平滑处理、合成3D,最后生成3D图像;
所述音视频播放模块用于将合成得到的3D视频场景与音频信息同步播放,使与会者看到3D效果,具体实现方式:采用DirectX作为播放工具,视频显示部分使用DirectDraw实现视频的播放,声音部分则使用DirectSound实现音频的播放。
2.一种基于KINECT的实时3D视频通信方法,其特征在于,具体为如下步骤:
(1)采用KINECT摄像头并利用多线程技术实现实时地同步获取彩色视频信息、深度视频信息和音频信息;
(2)对彩色视频信息和深度视频信息预处理,通过格式转换获得YUV420格式的彩色视频信息,通过背景处理、归一化处理、阈值滤波预处理获得比彩色视频分辨率低的8位灰度图像深度信息,并校正由于采集深度信息及彩色视频信息的两摄像头之间存在水平位移而产生的偏差;
(3)利用x264对两路视频信息进行压缩处理,利用MP3编码器进行音频压缩;
(4)采用RTP实时流媒体传输协议,对彩色视频流与深度视频流的处理采用了多线程方案,在线程开启之后,将采集到的音频流的编码与发送穿插于每一帧视频流的采集、编码与发送之间,每次音频编码的数据流均为前一环节过程中采集到的音频数据,并对编码后的音频流进行打包发送,从而实现音视频流的同步发送;
(5)系统在接收端对数据包拆包,得到三路信息后,对两路视频信息进行解码,获得彩色视频信息和深度视频信息;
(6)对解码得到的低分辨率深度图像进行空洞填充及平滑处理,再利用线性插值方法获得和彩色视频相同分辨率的深度信息;
(7)利用接收到的彩色视频和优化后的深度视频重构得到符合人眼视差的左眼场景视频或右眼场景视频;
(8)再将左眼或右眼场景视频同接收到的彩色视频进行合成得到3D视频场景,与音频信息同步后利用DirectX播放,构成一个3D视频会议系统。
3.如权利要求2所述的方法,其特征在于,利用低分辨率的深度图像更易于进行空洞填充及平滑处理,采取在发送端采集视频时设置深度视频分辨率低于彩色视频分辨率的方式;在接收端进行深度优化时,采取首先在低分辨率深度视频上进行空洞填充及平滑,再利用线性插值方法得到和彩色视频相同分辨率的深度视频。
基于KINECT的实时3D视频通信系统及其实现方法\n技术领域\n[0001] 本发明涉及3D视频通信领域,具体地说是基于KINECT摄像头的实时3D视频通信系统及其方法。\n背景技术\n[0002] 目前视频通信系统主要以传输二维视频为主,如QQ、MSN、Gtalk、Skype等视频聊天或视频会议系统。尽管二维视频通信能够提供高清晰度的视频质量,但因其缺少立体深度信息而不能够提供使用者身临其境沟通的效果。\n[0003] 随着3D电影和3D电视节目的普及,人们已经不再满足于传统的二维平面视频,而把目光转到了更让人惊叹的立体视频上。立体视频引入了视差信息,使观看者能够感受到三维距离空间,产生身临其境的感觉。3D视频成像需要左眼视角和右眼视角的两路视频信息,如果在3D视频通信过程对左右眼的原始视频进行压缩传输将会大大增加视频传输的数据量;而采用普通摄像头则需要利用两个视角的视频进行立体视差匹配才能够得到深度信息,如此耗时的匹配过程无法满足实时3D视频通信的要求。因此,现有技术进行3D视频通信对带宽要求较高,较难达到实时通信。\n发明内容\n[0004] 为了克服现有的采用普通摄像头的视频通信系统无法实时呈现立体视频场景的不足,本发明提供一种基于KINECT的实时3D视频通信系统及方法,实时性好,三维效果好。\n[0005] 本发明系统技术方案表征为:\n[0006] 一种基于KINECT的实时3D视频通信系统,其特征在于,系统属于普通C/S构架,各终端之间通过网络连接,每个终端属于对等节点,既可以作为音视频发送方,也可以作为音视频的接收方。所述每个终端按照功能实现模块,包括KINECT数据采集及预处理模块、音视频编码模块、网络传输模块、音视频解码模块、深度信息优化模块、三维重构模块和音视频播放模块,其中:\n[0007] 所述KINECT数据采集及预处理模块,包括彩色视频信息采集及预处理模块、深度视频信息采集及预处理模块和音频信息采集模块,利用多线程技术实现三路信息的同步采集,实时地同步获取彩色视频信息、深度视频信息和音频信息;\n[0008] 所述彩色视频信息采集及预处理模块采集的彩色视频信息为UYVY格式,并将之转换成YUV420格式;所述深度视频信息采集及预处理模块采集的深度视频信息为16位灰度图像,经过移位操作得到原始深度信息;对原始深度信息进行预处理:首先通过阈值滤波对背景进行处理,对超出KINECT最远感知距离的物体,统一设为背景;其次对深度值进行归一化处理,得到8位的灰度图像;KINECT获取深度信息和彩色视频信息的摄像头之间存在水平位移,为了准确地进行深度视频信息和彩色视频信息的校正,彩色视频和深度视频采集需要满足下列关系:T(C(i+1))>T(D(i))>T(C(i)),其中C(i)表示采集的第i帧彩色图,D(i)表示采集的第i帧深度图,T表示采集时刻;所述音频信息采集模块,为KINECT麦克风阵列,采集音频格式为单通道16位PCM格式。\n[0009] 所述音视频编码模块,使用X.264协议对彩色视频信息和深度视频信息分别进行压缩,使用MP3音频编码器对音频编码,从而减少传输音视频数据冗余,以解决音视频数据量过大,网络带宽无法满足的问题。\n[0010] 所述网络传输模块,包括音视频流发送模块和音视频流接收模块,用于端与端之间的音视频数据传输,采用RTP实时流媒体传输协议,在获取音视频编码数据之后,随即在发送端进行同步实时传输,在接收端获取数据,具体为:\n[0011] 所述音视频流发送模块作为发送端需发送三路数据,分别为深度图数据、彩色图数据和音频流数据,为区分不同的数据流,在发送之前,为各路数据添加前缀标识符,彩色图数据为‘0’和‘1’;深度图数据为‘1’和‘0’;音频流数据为‘a’和‘b’;同时当某个数据包的大小超过63kb时,对其进行分帧处理,并且在发送结束时发送结束数据包;\n[0012] 以16KHz的频率采样,在线程开启之后,将采集到的音频流的编码与发送穿插于每一帧视频流的采集、编码与发送之间,每次音频编码的数据流均为前一环节过程中采集到的音频数据,并对编码后的音频流数据进行分包处理再发送;\n[0013] 所述音视频流接收模块作为接收端依据指定的端口接收数据包,根据数据包的标识符识别数据包类别,并对数据包进行拆包;\n[0014] 所述音视频解码模块,接收到网络音视频码流后对接收到的两路视频码流分别使用H.264进行解码,而音频流则转至音视频播放模块直接进行解码播放。\n[0015] 所述深度信息优化模块对接收端解码后的深度视频信息进行空洞填充及平滑等优化处理。首先采用对解码得到的低分辨率深度图像进行空洞填充及平滑处理:其次采用线性插值方法由低分辨率深度图像生成与彩色图像分辨率相同的高分辨率深度图像;最后对高分辨率深度图像进行滤波处理,得到用于重构的深度图。\n[0016] 所述三维重构模块用于对虚拟视点场景的重构,利用接收到的彩色视频和优化后的深度视频重构得到符合人眼视差的左眼场景视频(接收到的彩色视频作为右眼场景视频)或右眼场景视频(接收到的彩色视频作为左眼场景视频),再将左眼或右眼场景视频同接收到的彩色视频进行合成得到3D视频场景,具体实施过程:初始化求出偏移矩阵,并依次进行偏移处理、遮掩判断、空洞填补、平滑处理、合成3D,最后生成3D图像。\n[0017] 所述音视频播放模块用于将合成得到的3D视频场景与音频信息同步播放,使与会者看到3D效果,具体实现方式:采用DirectX作为播放工具,视频显示部分使用DirectDraw实现视频的播放,声音部分则使用DirectSound实现音频的播放。\n[0018] 本发明方法技术方案表征为:\n[0019] 一种基于KINECT的实时3D视频通信方法,其特征在于,具体为如下步骤:\n[0020] (1)采用KINECT摄像头并利用多线程技术实现实时地同步获取彩色视频信息、深度视频信息和音频信息;\n[0021] (2)对彩色视频信息和深度视频信息预处理,通过格式转化获得YUV420格式的彩色视频信息,通过背景处理、归一化处理、阈值滤波等预处理获得比彩色视频分辨率低的8位灰度图像深度信息,并校正由于采集深度信息及彩色视频信息的两摄像头之间存在水平位移而产生的偏差;(3)利用x264对两路视频信息进行压缩处理,利用MP3编码器进行音频压缩;\n[0022] (4)采用RTP实时流媒体传输协议,对彩色视频流与深度视频流的处理采用了多线程方案,在线程开启之后,将采集到的音频流的编码与发送穿插于每一帧视频流的采集、编码与发送之间,每次音频编码的数据流均为前一环节过程中采集到的音频数据,并对编码后的音频流进行打包发送,从而实现音视频流的同步发送;\n[0023] (5)系统在接收端对数据包拆包,得到三路信息后,对两路视频信息进行解码,获得彩色视频信息和深度视频信息;\n[0024] (6)对解码得到的低分辨率深度图像进行空洞填充及平滑处理,再利用线性插值方法获得和彩色视频相同分辨率的深度信息;\n[0025] (7)利用接收到的彩色视频和优化后的深度视频重构得到符合人眼视差的左眼场景视频或右眼场景视频。\n[0026] (8)再将左眼或右眼场景视频同接收到的彩色视频进行合成得到3D视频场景,与音频信息同步后利用DirectX播放,构成一个3D视频会议系统,与会者戴上3D眼镜即可看到3D效果,产生“面对面”的即时交流感觉。为了克服KINECT获取的深度图像由于光照及遮挡等问题存在空洞、毛边等现象,本发明方法技术方案利用低分辨率的深度图像更易于进行空洞填充及平滑等处理,采取在发送端采集视频时设置深度视频分辨率低于彩色视频分辨率的方式;在接收端进行深度优化时,采取首先在低分辨率深度视频上进行空洞填充及平滑,再利用线性插值方法得到和彩色视频相同分辨率的深度视频。该方法能够很好地提高深度图像预处理及优化的速度和效果,同时还能够提升整个系统多路视频编码效率和传输速度,具体的说:\n[0027] a)降低发送端深度图像预处理的复杂度。\n[0028] b)发送端采用比彩色视频相对低分辨率的深度图像,有利于提高多路视频编解码效率和速度。\n[0029] c)减少深度图像压缩数据大小,有利于多路视频实时传输。\n[0030] d)关键的是,在接收端对解码后在所进行的填洞等优化处理是在低分辨率深度图像上进行的,更利于空洞的填充,再对填洞后的优化图像进行上插值恢复得到与彩色视频一样的高分辨率深度图像,如此本发明必然能获得很好的深度图优化效果。本发明视频系统可广泛应用在企业会议、商务谈判、远程医疗、远程教学和培训等各个领域。\n附图说明\n[0031] 图1为实施例系统实物组成图。\n[0032] 图2为每个终端的系统框架图。\n[0033] 图3为本发明系统流程图。\n[0034] 图4每个终端的系统硬件架构图。\n[0035] 图5KINECT数据采集流程图。\n[0036] 图6采集音频流程图。\n[0037] 图7为视频编码流程图。\n[0038] 图8为音频编码流程图。\n[0039] 图9为视频解码流程图。\n[0040] 图10为RTP与各种网络协议的关系图。\n[0041] 图11发送端发送流程图。\n[0042] 图12为音视频流发送模块的音视频同步发送流程图。\n[0043] 图13为音频流打包流程图。\n[0044] 图14为视频流打包流程图。\n[0045] 图15为三路数据流的采集、编码与发送流程图。\n[0046] 图16为音视频流接收模块的接收流程图。\n[0047] 图17为深度信息优化流程图。\n[0048] 图18为重构流程图。\n具体实施方式\n[0049] 以下结合实施例和附图对本发明技术方案作进一步介绍。\n[0050] 本实施例系统组成:笔记本电脑+KINECT+TP-LINK+EPCM505C开发板+3D眼镜,系统实物组成如图1所示。\n[0051] 整个系统的原理为:如图2、图3所示本系统以EPCM-505C开发板为基础,利用微软KINECT摄像头设计了一个3D视频会议系统,对KINECT采集的彩色信息、深度信息和音频信息进行编码和传输,解码后对彩色信息和深度信息进行三维重构,与音频同步播放,还原出3D视频会议场景。\n[0052] 系统硬件架构如图4所示:系统在设计时,充分考虑EPCM-505C高性能特性,实现与各个外围设备的连接和音视频数据的处理。KINECT负责采集音视频数据,CF卡用于装载操作系统,外接显示屏用来播放3D视频会议场景,扬声器负责播放视频会议声音,路由器进行网络传输。KINECT摄像头是微软推出的一款体感摄像头。它由基座和感应器组成,基座和感应器之间有一个电动的马达,能够调整感应器俯仰角度。在上面的感应器中有1个彩色视频摄像头、1个红外投影机、1个红外摄像头以及1个麦克风阵列。彩色摄像头,用来收集RGB数据,红外摄像头用来采集景深数据。彩色摄像头最大支持1280*960分辨率成像,红外摄像头最大支持640*480成像。KINECT不仅能够获取彩色视频信息,并利用其红外线摄像头能够实时获取深度视频信息,这为实时三维重构提够了非常好的条件。再加上其KINECT摄像头内部的麦克风阵列能够采集到音频信息。所以KINECT可以作为本实施例视频会议系统的非常好的采集装置。\n[0053] 1、KINECT数据采集与预处理模块\n[0054] 在系统中,KINECT作为一个采集设备用来采集彩色视频信息、深度视频信息和音频信息。采集流程如图5。\n[0055] (1)视频信息采集与预处理模块,又包括彩色视频信息采集及格式转换模块和深度视频信息采集及预处理模块:\n[0056] KINECT摄像头采集彩色视频信息为UYVY格式,帧速率为15帧/秒,分辨率为\n640x480。由于X.264压缩需要YUV420格式,所以需要将KINECT采集的UYVY格式的彩色转换成YUV420格式。深度视频信息为16位灰度图像,帧速率为每秒30帧,分辨率为320x240。\n其16位数据中低三位用于标识用户ID,高13位才是深度数据。经过移位操作即可得到原始深度信息。\n[0057] 由于KINECT红外摄像头易受光照及识别范围影响,获取的原始深度视频流会出现空洞和断层。因此需要对深度图像进行处理,以获得连续的深度图像。本发明为满足实时传输的要求,仅在发送端对采集到的深度信息进行简单的阈值滤波等预处理,而将计算量较大的空洞填充工作放在接收端的深度信息优化模块进行。该处理方式充分利用了接收端解码帧率远大于发送端编码帧率这一特点,将计算量较大的深度信息优化工作放在解码端进行,以提高系统的实时通信能力。\n[0058] 所做的深度图像预处理工作包括:通过阈值滤波对深度图进行处理,因为KINECT识别精度在1.2~3.5米之间,所以对超出3.5米范围的物体,统一设为背景;对深度值进行归一化处理,得到8位的灰度图像;依据KINECT获取深度信息和彩色视频信息的两个摄像头之间的水平位移对深度信息进行校正以获得和彩色视频视角相对应的深度信息图像,为此,彩色视频和深度视频采集需要满足下列关系:\n[0059] T(C(i+1))>T(D(i))>T(C(i))其中C(i)表示采集的第i帧彩色图,D(i)表示采集的第i帧深度图,T表示采集时刻。\n[0060] (2)音频信息采集模块\n[0061] KINECT摄像头拥有麦克风阵列,能够对音频进行采集。采集音频格式为单通道16位PCM格式。采样频率为16KHz。采集使用DMO(DirectX媒体对象)。DMO(DirectX媒体对象),是微软提供的一种数据处理COM组件,本发明采用应用程序直接使用DMO的使用方式。采集音频流程如图6所示。\n[0062] 2、音视频编码模块\n[0063] (1)视频编码\n[0064] 本系统采用x264进行视频压缩,x264是一个采用GPL授权的视频编码自由软件,作为H.264的一种开源编码格式,x264的主要功能在于进行H.264/MPEG-4AVC的视频编码。\n[0065] x264的功能分为两层,即视频编码层(VCL)和网络提取层(NAL)。在VCL和NAL之间定义一个基于分组方式的接口,打包和相应的信令属于NAL的一部分。这样,高效率编码和网络适应性的任务分别由VCL和NAL来完成。VCL数据即编码处理后的输出,它表示被压缩编码后的视频数据序列。在VCL数据传输和存储之前,这些编码的VCL数据,先被映射或封装进NAL单元中。视频编码流程如图7所示。\n[0066] (2)音频编码\n[0067] 采集到音频数据之后,使用MP3编码器进行编码。\n[0068] MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。MP3技术利用人耳对高频声音信号不敏感的特性,将时域波形信号转换成频域信号,并划分成多个频段,对不同的频段使用不同的压缩率,对高频加大压缩比(甚至忽略信号),对低频信号使用小压缩比,即丢弃掉脉冲编码调制(PCM)音频数据中对人类听觉不重要的数据,从而将声音以1:10甚至1:12的压缩率压缩。而对于大多数用户来说,重放的音质与最初的不压缩音频相比没有明显的下降。音频编码过程如图8所示。\n[0069] 3、网络传输模块\n[0070] 包括音视频流发送模块和音视频流接收模块,本系统采用RTP实时流媒体传输协议,在获取音视频编码数据之后,随即在发送端进行同步实时传输,在接收端获取数据。\n[0071] RTP一种在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现流媒体数据的实时传输。RTP通常使用UDP来进行多媒体数据的传输,但如果需要的话可以使用TCP或者ATM等其他协议。RTP与各种网络协议的关系如图10所示。\n[0072] 应用程序通常在UDP上运行RTP以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是RTP可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么RTP可以使用该组播表传输数据到多个目的地。\n[0073] 发送端发送流程如图11所示。发送RTP数据包,负载类型、标识和时间戳增量均已默认,data为发送数据,len是发送数据长度。共需发送三路数据,分别为深度图数据、彩色图数据和音频流数据,为区分不同的数据流,在发送之前,为各路数据添加前缀标识符,彩色图数据为‘0’和‘1’;深度图数据为‘1’和‘0’;音频流数据为‘a’和‘b’。同时当某个数据包的大小超过63kb时,对其进行分帧处理,并且在发送结束时发送结束数据包。\n[0074] 所述音视频流发送模块实现了音视频同步发送。为达到同步效果,本系统充分使用了CPU资源,对彩色视频流与深度视频流的处理采用了多线程方案,然而相对于视频流而言,音频流的数据量偏小,为了减少CPU处理各线程请求时在线程间的切换时间,本系统在各视频流线程开启之前,初始化音频采集设备DMO,并打开音频采集接口,从此以16KHz的频率采样,在线程开启之后,将采集到的音频流的编码与发送穿插于每一帧视频流的采集、编码与发送之间,从而达到模拟多线程效果,具体实现方案如流程图12所示,每次音频编码的数据流均为前一环节过程中采集到的音频数据,并对编码后的音频流进行打包发送。\n[0075] 所述音视频流发送模块采用音视频流打包发送:\n[0076] (1)音频流:每次音频编码的数据流均为前一环节过程中采集到的音频数据,即设音频采集速率为v bytes/s,前一环节耗时为t s,则每次音频MP3编码的数据流大小为vt bytes,故此,每次编码后的音频流数据的大小应视各个环节的耗时而定。同时本系统通过调研发现经MP3编码后的每帧音频流数据大小为144字节,当每个数据包的大小为5帧音频流时保真效果最佳。因此,对编码后的音频流数据需要进行分包处理再发送。具体实施方案如图13的音频流打包流程。\n[0077] (2)视频流:由于RTP每次发送数据包的大小最大为64Kb,故此,在本系统中对大于64kb的数据流进行分包发送处理,若一帧图像编码后的数据大小为size,则将其分成int(size/(64X1024))+1个包,除最后一个包大小为size%(64X1024)字节外,其余每个包的大小均为64Kb,另外再给每个包添加两字节的标识符,若编码后的数据小于64kb,则添加标识符后直接发送。具体实施如图14所示的视频流打包流程。\n[0078] 综合整个三路数据流的采集、编码与发送参见流程图15所示。\n[0079] 所述音视频流接收模块\n[0080] 接收流程如图16所示,接收端依据指定的端口接收数据包,根据数据包的标识符识别数据包类别,由此进行后续音视频解码。音视频流接收模块用于获取得到的数据包长度,在本实施例中,实际有用的数据应去掉前缀标识符的两个字节,故实际有用的数据长度为返回值减去2之后的值。\n[0081] 4、音视频解码模块\n[0082] (1)视频解码\n[0083] 由于编码过程是使用x264进行编码,在解码过程中则使用H.264进行解码。\nFFmpeg包含libavformat库和libavcodec库,其中libavcodec处理视频流的解码。在视频解码过程中使用FFmpeg库进行解码,使用结构体AVCodec作为整个解码过程的控制。视频解码流程如图9所示。\n[0084] (2)音频解码\n[0085] 在接收端音频解码在音视频播放模块进行,直接调用DirectSound实现音频的解码及播放。\n[0086] 5、深度信息优化模块\n[0087] 深度信息优化流程如图17所示,首先采用形态学滤波方法对解码得到的320*240大小的深度图像进行空洞填充及平滑处理:采用3*3像素的矩形结构进行两次腐蚀滤波,再采用半径为4个像素的圆形结构进行两次膨胀滤波;其次采用线性插值方法得到\n640*480大小的深度图像;最后对高分辨率深度图像进行一次形态学腐蚀滤波及两次膨胀滤波,得到重构所需的深度图。所用滤波器结构和低分辨率时相同。\n[0088] 6、三维重构模块\n[0089] 本系统使用基于深度图像的虚拟绘制技术(DIBR)进行三维重构,根据一个或多个场景的彩色信息和相对应的深度信息重构出虚拟视点的场景。重构过程如下:\n[0090] (1)初始化过程:\n[0091] 初始化时求出偏移矩阵。矩阵名称为shiftx,共256项,对应256个深度值返回不同的偏移量,使用函数find_shiftx求偏移量。\n[0092] 然后进行重构处理,如图18所示。\n[0093] (2)偏移处理过程:\n[0094] 使用彩色图和深度图。将彩色图中Y分量的像素点根据相应深度图中深度值通过矩阵shiftx得到的偏移量进行偏移,生成左图Y分量。又根据彩色图中uv分量像素点以及相应深度图中深度值通过矩阵shiftx得到的偏移量进行偏移,生成左图uv分量。\n[0095] (3)遮掩判断:\n[0096] 在偏移处理过程中,若像素点进行了处理则在mask矩阵的相应的位置记录为1。\n在遮掩判断中对mask矩阵进行判断,若该点在矩阵的位置有记录则该点已进行了偏移处理,否则视为被遮掩进行空洞填补处理。\n[0097] (4)空洞填补过程:\n[0098] 对生成的左图Y分量以及右图Y分量的每个像素点进行判断,若在求左图过程中没有得到这个点,既在mask矩阵的位置没有记录,则对其进行空洞填补。具体过程为求周围4个点的平均值,设置当前值。\n[0099] (5)平滑处理过程:\n[0100] 对生成的Y分量以及uv分量进行平滑处理。具体平滑处理过程为求周围共25个像素点的平均值作为该点的值使用。\n[0101] (6)合成3D过程:根据左图和右图生成3D图。首先将左图和右图从YUV格式变为RGB格式。取左图的R分量作为3D图的R分量,右图的GB分量作为3D图的GB分量。最后生成3D图像。\n[0102] 7、音视频播放模块\n[0103] 本实施例采用DirectX作为播放工具。DirectX在保持设备无关性的同时,可以让应用程序直接控制多媒体设备,从而能充分利用硬件的功能,因此可以获得很高的性能。\nDirectX是一种基于COM的系统,主要由硬件抽象层HAL和硬件模拟层HEL所构成。DirectX划分成若干个组件模块,涵盖了多媒体应用的方方面面。使用DirectX SDK实现视频和音频的播放。Microsoft DirectX SDK是DirectX编程的软件。DirectX可以直接访问计算机中的硬件。DirectX在硬件和应用之间提供了一致的接口以减少安装和配置的复杂性,并且使硬件的利用达到最优。视频显示部分分为DirectDraw(DDraw)和Direct3D(D3D),程序中使用DirectDraw实现视频的播放。声音部分则使用DirectSound实现音频的播放。\nDirectDraw通过支持访问屏外显示内存中位图的软硬件加速技术,快速直接存取,利用硬件的位块传输和缓冲区翻转功能。DirectSound提供软硬件声音混合和录音再生功能。
法律信息
- 2019-04-12
未缴年费专利权终止
IPC(主分类): H04N 13/00
专利号: ZL 201310146580.0
申请日: 2013.04.25
授权公告日: 2015.03.04
- 2015-03-04
- 2013-08-21
实质审查的生效
IPC(主分类): H04N 13/00
专利申请号: 201310146580.0
申请日: 2013.04.25
- 2013-07-24
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-03-10
|
2008-09-02
| | |
2
| |
2010-03-03
|
2008-08-29
| | |
3
| | 暂无 |
2011-08-19
| | |
4
| |
2008-07-30
|
2007-01-22
| | |
5
| |
2012-01-04
|
2011-07-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |