对I帧进行同步的方法及设备转让专利

申请号 : CN201110302958.2

文献号 : CN102510494B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈尚武

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明提供了一种对I帧进行同步的方法和设备,在执行视频全景拼接时,各个编码设备向基准编码设备获取同步数据,并根据所获取的同步数据与基准编码设备进行I帧同步。应用本发明能够提高视频全景拼接的画质和性能。

权利要求 :

1.一种对I帧进行同步的方法,应用于视频全景拼接,其特征在于,包括:编码设备从所述视频全景拼接中的基准编码设备获取同步数据,并根据所获取的同步数据计算其自身与基准编码设备之间的帧序号差以及I帧相对偏移值;

编码设备根据计算得到的I帧相对偏移值确定其自身产生I帧的时刻,并采用与基准编码设备相同的画面组GOP长度产生I帧。

2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:参与视频全景拼接的编码设备将自身所产生的视频流发送给进行视频全景拼接的设备和/或存储设备,除所述基准编码设备之外的编码设备将其自身与基准编码设备之间的帧序号差发送给所述进行视频全景拼接的设备和/或存储设备。

3.根据权利要求1或2所述的方法,其特征在于:

所述获取同步数据包括:

编码设备记录自身当前产生的I帧的时间戳t1和帧序号f1,向基准编码设备发送同步请求消息,消息中携带:该消息离开所述编码设备的时间戳t2,以及t1和f1;

从基准编码设备接收同步响应消息,记录时间戳t6,所述同步响应消息中携带:该同步响应消息离开基准编码设备的时间戳t5、基准编码设备收到所述同步请求消息的时间戳t3、基准编码设备收到所述同步请求消息之后产生I帧的时间戳t4和帧序号f2,以及t1、t2、f1、基准编码设备的GOP长度、视频编码格式和视频分辨率;

所述计算其自身与基准编码设备之间的帧序号差以及I帧相对偏移值包括:计算所述编码设备相对于基准编码设备的时间差:toff=((t3-t2)+(t5-t6))/2;

计算基准编码设备的I帧产生时刻在所述编码设备上对应的时间戳:t4’=t4-toff;

计算所述编码设备的I帧与基准编码设备的I帧的时间差:offset=t4’–t1;

计算基准编码设备的I帧产生时刻在所述编码设备上对应的帧序号:f3=(f1+offset/帧间隔)取整;

计算所述编码设备的I帧相对偏移值:f4=f3mod(基准编码设备的GOP长度);

计算所述编码设备相对基准编码设备的帧序号差:f5=f3-f2。

4.一种编码设备,应用于视频全景拼接,其特征在于,包括:同步模块和视频产生模块;

同步模块,用于从所述视频全景拼接中的基准编码设备获取同步数据,并根据所获取的同步数据计算其自身与基准编码设备之间的帧序号差以及I帧相对偏移值;

视频产生模块,用于根据计算得到的I帧相对偏移值确定其自身产生I帧的时刻,并采用与基准编码设备相同的画面组GOP长度产生I帧。

5.根据权利要求4所述的编码设备,其特征在于,所述同步模块用于执行以下操作:记录视频产生模块当前产生的I帧的时间戳t1和帧序号f1,向基准编码设备发送同步请求消息,消息中携带:该消息离开所述编码设备的时间戳t2,以及t1和f1;

从基准编码设备接收同步响应消息,记录时间戳t6,所述同步响应消息中携带:该同步响应消息离开基准编码设备的时间戳t5、基准编码设备收到所述同步请求消息的时间戳t3、基准编码设备收到所述同步请求消息之后产生I帧的时间戳t4和帧序号f2,以及t1、t2、f1、基准编码设备的GOP长度、视频编码格式和视频分辨率;

计算所述编码设备相对于基准编码设备的时间差:toff=((t3-t2)+(t5-t6))/2;

计算基准编码设备的I帧产生时刻在所述编码设备上对应的时间戳:t4’=t4-toff;

计算所述编码设备的I帧与基准编码设备的I帧的时间差:offset=t4’–t1;

计算基准编码设备的I帧产生时刻在所述编码设备上对应的帧序号:f3=(f1+offset/帧间隔)取整;

计算所述编码设备的I帧相对偏移值:f4=f3mod(基准编码设备的GOP长度);

计算所述编码设备相对基准编码设备的帧序号差:f5=f3-f2。

说明书 :

对I帧进行同步的方法及设备

技术领域

[0001] 本发明涉及图像拼接技术,特别涉及对I帧进行同步的方法及设备。

背景技术

[0002] 下面首先对本发明涉及的一些概念进行简要说明:
[0003] 一个GOP(画面组,Group of Pictures)就是一组连续的画面。MPEG编码技术将画面(即帧)分为I帧、P帧、B帧三种。其中:I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是一个完整的画面,是每个GOP的第一个帧,而P帧和B帧记录的是相对于I帧的变化,P帧由在它前面的P帧或I帧进行预测。没有I帧,P帧和B帧就无法解码。
[0004] GOP的长度(或者称为GOP周期)是一个I帧到下一个I帧的间隔,即多少帧里面出现一次I帧。
[0005] 在监控系统中,视频全景拼接业务是将来自几个IP网络摄像机(IPC)或编码器(EC,Encoder)的摄像机的图像拼接成大画幅图像。
[0006] 视频全景拼接业务与普通的监控业务相同,有实况图像播放与历史回放。历史录像存储一般采用监控前端直存模式,对各个IPC或EC所产生的视频流进行独立存储。
[0007] 实施视频全景拼接技术的挑战之一就是:由于各个IPC或EC有各自独立的编码时钟,使得I帧在各个IPC或EC的GOP周期内的分布位置各不相同。对于实况图像播放而言,拼接图像后,如果I帧不同步,在拼接边缘将导致画质下降。此外,对于历时回放而言,在回放快进与快退时一般只对所存储的历史图像中的I帧进行解码,由于拼接图像中各个历史图像的I帧不同步,使得只能对I帧与P帧全部进行解码才能达到同步快进与快退,这将大大降低性能。

发明内容

[0008] 本发明提供了一种对I帧进行同步的方法及设备,以解决对监控图像进行视频全景拼接时,由于I帧不同步所导致的画质下降、性能下降等问题。
[0009] 本发明提供的一种对I帧进行同步的方法,应用于视频全景拼接,包括:
[0010] 编码设备向所述视频全景拼接中的基准编码设备获取同步数据,并根据所获取的同步数据计算其自身与基准编码设备之间的帧序号差以及内部编码帧(I帧)相对偏移值;
[0011] 编码设备根据计算得到的I帧相对偏移值确定其自身产生I帧的时刻,并采用与基准编码设备相同的画面组(GOP)长度产生I帧。
[0012] 本发明提供的一种进行视频全景拼接的方法,包括:
[0013] 接收除基准编码设备之外的各个编码设备与基准编码设备之间的帧序号差,并接收参与视频全景拼接的各个编码设备的视频流;
[0014] 根据接收到的视频流和帧序号差进行视频全景拼接实况图像播放和/或历史回放。
[0015] 本发明提供的一种编码设备,应用于视频全景拼接,包括:同步模块和视频产生模块;
[0016] 同步模块,用于向所述视频全景拼接中的基准编码设备获取同步数据,并根据所获取的同步数据计算其自身与基准编码设备之间的帧序号差以及I帧相对偏移值;
[0017] 视频产生模块,用于根据计算得到的I帧相对偏移值确定其自身产生I帧的时刻,并采用与基准编码设备相同的画面组(GOP)长度产生I帧。
[0018] 一种进行视频全景拼接的设备,其特征在于,包括:接收模块和拼接模块;
[0019] 接收模块,用于接收参与视频全景拼接的各个编码设备的视频流,并用于接收除基准编码设备之外的各个编码设备与基准编码设备之间的帧序号差;
[0020] 拼接模块,用于根据接收到的视频流和帧序号差进行视频全景拼接实况图像播放和/或历史回放。
[0021] 由上述技术方案可见,本发明提供的对I帧进行同步的方法及设备,在执行视频全景拼接时,在参与视频全景拼接的编码设备中确定一个基准编码设备,其他编码设备向该基准编码设备获取同步数据,并根据所获取的同步数据与基准编码设备进行I帧同步,从而使参与视频全景拼接的各编码设备之间的I帧同步,提高了视频全景拼接的实况图像播放和历史回放的画质和性能。

附图说明

[0022] 图1为本发明一较佳实施例中编码设备之间的位置关系示意图;
[0023] 图2为本发明一较佳实施例中各参数及时序关系示意图;
[0024] 图3为本发明一较佳编码设备的组成结构示意图;
[0025] 图4为本发明一较佳进行视频全景拼接的设备的组成结构示意图。

具体实施方式

[0026] 为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
[0027] 本发明的主要思想是:在执行视频全景拼接时,在参与视频全景拼接的编码设备中确定一个基准编码设备,其他编码设备向该基准编码设备获取同步数据,并根据所获取的同步数据与基准编码设备进行I帧同步,从而使参与视频全景拼接的各编码设备之间的I帧同步,提高视频全景拼接的实况图像播放和历史回放的画质和性能。
[0028] 较佳地,可以由视频管理服务器将视频全景拼接中处于居中靠左位置的视频源设备的编码设备确定为基准编码设备,选择处于居中靠左位置的编码设备作为基准编码设备的原因是:居中靠左位置的编码设备与两边的编码设备之间的时间偏差均较小,并且,与两边的编码设备的距离比较均衡。当然,在实际应用中也可以选择处于其他位置的编码设备作为基准编码设备。
[0029] 假设为3个IPC进行视频全景拼接,如图1所示,3个IPC分别为:IPC1、IPC2、IPC3。按照本发明主要思想,视频全景拼接业务在执行时(包括实况图像播放或历史图像存储),视频管理服务器可以选定IPC1的编码设备为基准编码设备(以下称为基准IPC),并要求IPC2和IPC3的编码设备分别向IPC1的编码设备获取同步数据。为简化描述,在下面的实施例中,将IPC1、IPC2和IPC3的编码设备分别简称为IPC1、IPC2和IPC3。除了图1所示的IPC的应用场景外,不同的摄像头连接不同的编码器进行视频全景拼接的场景也能应用本发明技术。
[0030] 以图1所示应用场景为例,下面参见图2对本发明所提供的同步方法的实现流程进行详细说明。
[0031] 第1步:IPC2等待视频I帧产生,记录当前I帧的时间戳为t1、帧序号f1,向IPC1发送同步请求消息,该消息中携带有:该消息离开IPC2时的时间戳t2、t1及f1。
[0032] 第2步:当同步请求消息到达IPC1时,IPC1记录时间戳t3。
[0033] 第3步:IPC1等待视频I帧产生,记录当前I帧的时间戳为t4以及帧序号f2,IPC1向IPC2反馈同步响应消息,该消息中携带有:该消息离开IPC1时的时间戳t5、t1、t2、t3、t4、f1、f2、IPC1的I帧间隔GOP参数、视频编码格式(如H264)、视频分辨率。
[0034] 第4步:IPC2接收到来自IPC1的同步响应消息时,记录时间戳t6。
[0035] 第5步:IPC2进行下列计算:
[0036] 1)计算IPC2相对于IPC1的时间差:toff=((t3-t2)+(t5-t6))/2。
[0037] 2)计算IPC1的I帧产生时刻在IPC2上对应的时间戳:t4’=t4-toff。
[0038] 3)计算IPC2的I帧与IPC1的I帧的时间差:offset=t4’-t1。
[0039] 4)计算IPC1的I帧产生时刻在IPC2上对应的帧序号:f3=(f1+offset/帧间隔)取整。
[0040] 也就是说,IPC2的I帧对齐IPC1的I帧时,帧序号f3在IPC2上应当是一个I帧。
[0041] 帧间隔为两帧之间的时间差,在中国,视频信号一般为PAL(25帧/秒),帧间隔为40ms,本发明要求IPC1、IPC2和IPC3具有相同的帧率(即:帧间隔)。这里,由于帧序号是整数,需要对计算结果进行取整,具体的取整策略可以是四舍五入。
[0042] 5)计算I帧相对偏移值:f4=f3mod(IPC1的GOP值);
[0043] 这里,I帧相对偏移值是指:IPC2的I帧对齐IPC1的I帧时,在一个GOP长度内,IPC2的I帧帧数的偏移值。由于I帧是周期性产生的,将IPC2的I帧向IPC1的I帧对齐时,需要对IPC2产生I帧的时刻进行调整,使之与IPC1产生I帧的时刻相同,本步骤计算得到的I帧相对偏移值就是在IPC2处产生I帧时需要进行调整的帧数。
[0044] 6)计算同一时刻IPC2相对IPC1的帧序号差:f5=f3-f2。
[0045] 第6步:IPC2处理:记录IPC2与IPC1同一时刻的帧序号差f5,用于客户端的实况图像播放与历史回放的帧同步;将IPC2的GOP长度设置为与IPC1的GOP长度相同,并设置与IPC1相同的视频编码格式与视频分辨率,并设置I帧相对偏移值f4。
[0046] 进行上述设置后,IPC2按照所设置的f4和GOP长度确定产生I帧的时刻,并采用所设置的GOP长度、视频编码格式和视频分辨率产生I帧,即可与IPC1实现I帧对齐。例如:
[0047] 假设帧号f1为2004,帧号f2为1002,IPC2与IPC1的时间差为4秒,帧间隔为0.04秒(25帧率),IPC1的GOP值为30;
[0048] 那么,f3=2004+4/0.04=2104,f4=2104对30取模=4。
[0049] 如果IPC2的当前帧序号值为2300,则下一个I帧计算:2300+4+30-(2300对30取模)为=2314,将帧号2314所对应的时刻确定为产生最近的下一个帧预期最近产生的I帧的序号时刻,最近的下一个I帧的序号就是2314。
[0050] 至此,完成IPC2与IPC1之间的同步。IPC3与IPC1之间的同步可以按照上述方法进行,并且两种同步可同时进行。
[0051] 本发明中,对IPC1、IPC2、IPC3所产生的视频流还是独立存储,IPC2和IPC3记录其各自相对IPC1的帧序号差f5。
[0052] 在客户端进行实况播放或回放时,客户端接收来自IPC1、IPC2、IPC3的实况流,并从IPC2和IPC3接收其各自相对IPC1的帧序号差,并在进行视频全景拼接时,根据帧序号差进行拼接,从而保证帧同步。例如:
[0053] 假设IPC2与IPC1的帧序号差f5为100帧,客户端收到IPC2数据包的帧序号为10106,IPC1数据包的帧序号为10001,则缓存IPC2的数据包,等收到IPC1的帧序号为10006数据包时,才将IPC1的帧序号为10006数据包与IPC2的帧序号为10106的数据包一起解码、拼接。
[0054] 对应于上述方法,本发明提供了一种如图3所示的编码设备,该编码设备应用于视频全景拼接,包括:同步模块310和视频产生模块320。其中:
[0055] 同步模块310,用于向所述视频全景拼接中的基准编码设备获取同步数据,并根据所获取的同步数据计算其自身与基准编码设备之间的帧序号差以及I帧相对偏移值;
[0056] 视频产生模块320,用于根据计算得到的I帧相对偏移值确定其自身产生I帧的时刻,并采用与基准编码设备相同的画面组(GOP)长度产生I帧。
[0057] 图3所示编码设备中的同步模块310可以用于执行以下操作:
[0058] 记录视频产生模块当前产生的I帧的时间戳t1和帧序号f1,向基准编码设备发送同步请求消息,消息中携带:该消息离开所述编码设备的时间戳t2,以及t1和f1;
[0059] 从基准编码设备接收同步响应消息,记录时间戳t6,所述同步响应消息中携带:该同步响应消息离开基准编码设备的时间戳t5、基准编码设备收到所述同步请求消息的时间戳t3、基准编码设备收到所述同步请求消息之后产生I帧的时间戳t4和帧序号f2,以及t1、t2、f1、基准编码设备的GOP长度、视频编码格式和视频分辨率;
[0060] 计 算 所 述 编 码 设 备 相 对 于 基 准 编 码 设 备 的 时 间 差:toff =((t3-t2)+(t5-t6))/2;
[0061] 计算基准编码设备的I帧产生时刻在所述编码设备上对应的时间戳:t4’=t4-toff;
[0062] 计算所述编码设备的I帧与基准编码设备的I帧的时间差:offset=t4’-t1;
[0063] 计算基准编码设备的I帧产生时刻在所述编码设备上对应的帧序号:f3=(f1+offset/帧间隔)取整;
[0064] 计算所述编码设备的I帧相对偏移值:f4=f3mod(基准编码设备的GOP长度);
[0065] 计算所述编码设备相对基准编码设备的帧序号差:f5=f3-f2。
[0066] 本发明还提供了一种如图4所示的进行视频全景拼接的设备,该设备包括:接收模块410和拼接模块420。其中:
[0067] 接收模块410,用于接收参与视频全景拼接的各个编码设备的视频流,并用于接收除基准编码设备之外的各个编码设备与基准编码设备之间的帧序号差;
[0068] 拼接模块420,用于根据接收到的视频流和帧序号差进行视频全景拼接实况图像播放和/或历史回放。
[0069] 图4所示设备中的拼接模块420,以所接收到的基准编码设备的视频流中的数据包作为基准,在当前接收到的编码设备的数据包的帧序号与基准编码设备的数据包的帧序号之差大于所述编码设备的帧序号差时,用于将所述编码设备的数据包缓存,在当前接收到的编码设备的数据包的帧序号与基准编码设备的数据包的帧序号之差小于所述编码设备的帧序号差时,用于丢弃所述基准编码设备的数据包;并用于将各个编码设备的减去其对应的帧序号差之后与基准编码设备的帧序号相等的数据包与基准编码设备的相应数据包一起解码,并对解码后的图像进行拼接。
[0070] 本发明还提供了一种进行视频全景拼接的方法,包括:
[0071] 接收除基准编码设备之外的各个编码设备与基准编码设备之间的帧序号差,并接收参与视频全景拼接的各个编码设备的视频流;
[0072] 根据接收到的视频流和帧序号差进行视频全景拼接实况图像播放和/或历史回放。
[0073] 上述方法中,所述根据接收到的视频流和帧序号差进行视频全景拼接包括:以所接收到的基准编码设备的视频流中的数据包作为基准,如果当前接收到的编码设备的数据包的帧序号与基准编码设备的数据包的帧序号之差大于所述编码设备的帧序号差,则缓存所述编码设备的数据包,如果当前接收到的编码设备的数据包的帧序号与基准编码设备的数据包的帧序号之差小于所述编码设备的帧序号差,则丢弃所述编码设备的数据包;将各个编码设备的减去其对应的帧序号差之后与基准编码设备的帧序号相等的数据包与基准编码设备的相应数据包一起解码,并对解码后的图像进行拼接。
[0074] 由上述实施例可见,本发明提供的对I帧进行同步的方法及设备,在执行视频全景拼接时,在参与视频全景拼接的编码设备中确定一个基准编码设备,其他编码设备向该基准编码设备获取同步数据,并根据所获取的同步数据与基准编码设备进行I帧同步,从而使参与视频全景拼接的各编码设备之间的I帧同步,提高了视频全景拼接的实况图像播放和历史回放的画质和性能。
[0075] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。