首页> 中国专利> 基于前向纠错编码窗口扩张的实时视频传输方法

基于前向纠错编码窗口扩张的实时视频传输方法

摘要

本发明公开了 一种基于前向纠错编码窗口扩张的实时视频传输方法,所述方法中视频信号采用前向纠错码编码器(FEC)进行编码,具有以下特点:(1)前向纠编码器(FEC)在编码当前图像帧数据的时候,编码器将使用当前画面群(GOP)中当前帧之前的所有视频数据(包括当前帧视频数据)作为编码数据,来生成校验数据包。(2)为了最大可能的增加该系统纠错的性能,每次进行前向纠错编码之前,所使用的视频数据包将与某个变换矩阵相乘。这样可以最大可能的使得解码线性方程组线性无关,从而可以最大限度地正确解码。(3)变换矩阵的一种实现就是重新排列视频数据包,关于重新排列视频数据包的方法,本发明提出了一种通过随机函数获得的方法,这样可以保证不同帧使用了不同的随机顺序,同时,这些额外信息也必须通知视频接收端(视频解码端)。

著录项

  • 公开/公告号CN102710943A

    专利类型发明专利

  • 公开/公告日2012-10-03

    原文格式PDF

  • 申请/专利权人 罗天明;肖继民;

    申请/专利号CN201210169952.7

  • 发明设计人 罗天明;肖继民;

    申请日2012-05-29

  • 分类号H04N7/66(20060101);

  • 代理机构32103 苏州创元专利商标事务所有限公司;

  • 代理人范晴

  • 地址 江苏省苏州市工业园区仁爱路111号

  • 入库时间 2023-12-18 06:47:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-19

    未缴年费专利权终止 IPC(主分类):H04N7/66 授权公告日:20141029 终止日期:20170529 申请日:20120529

    专利权的终止

  • 2014-10-29

    授权

    授权

  • 2012-11-28

    实质审查的生效 IPC(主分类):H04N7/66 申请日:20120529

    实质审查的生效

  • 2012-10-03

    公开

    公开

说明书

技术领域

本发明属于视频编码和传输技术领域,具体涉及一种基于前向纠错编码 (FEC)窗口扩张的实时视频传输方法。

背景技术

无论是H.263、MPEG2视频编码标准,还是H.264/AVC视频编码标准, 都是建立在混合编码方法基础上的融合运动补偿预测算法的变换编码。因此, 经过编码后的视频数据在INTERNET等不可靠网络中传输时会受到误差扩 散的影响,即一个很小的视频丢包将导致非常严重的接收端视频质量下降。

目前,各种视频容错编码技术(error-resilient techniques)已经被广泛 应用,使得在不可靠网络传送视频信号变得可行。这些视频容错编码技术包 括帧内宏块刷新(Intra Macroblock Refreshment)、自动重传请求(ARQ)、 基于反馈的参考帧选择(RPS)、冗余图像编码(使用相同或低于原图像质量 的冗余)和多描述编码(MDC)以及前向纠错(FEC)编码技术。在这些容 错视频编码技术中,帧内宏块刷新、冗余图像编码和多描述编码不会产生额 外延时,因此能够适合实时视频通信的要求。但是,就帧内宏块刷新技术而 言,由于帧内(Intra)编码效率远低于帧间(Inter)的编码效率,导致整 体编码效率显著降低。在冗余图像编码和多描述编码中,当冗余图像版本替 代了原始版本或者当一些描述在传输过程中被丢失时,就会造成失配误差 (Mismatch Error)。而失配误差将会传播至整个画面群(GOP)。

由于网络往返时延(RTT),自动重传请求(ARQ)和参考帧选择(RPS) 技术都会产生较长延时。因此,这两种技术都无法实践于实时视频通信系统 中。而在前向纠错技术(FEC)中,时延的长短取决于FEC编码数据块的 大小。在“E.Baccaglini,T.Tillo,and G.Olmo,Slice sorting for unequal  loss protection of video streams,IEEE Signal Processing Letters,2008” 中,Reed-Solomon编码块包含了整个画面群,因此,该方案将产生了一个 画面群的延时。在“X.Yang,C.Zhu,Z.Li,X.Lin,and N.Ling,An  unequal packet loss resilience scheme for video over the internet,IEEE Transactions on Multimedia,2005”中,Reed-Solomon编码块包含了1个 子画面群的帧,因此延迟取决于子画面群的长度。在“N.Thomos,S. Argyropoulos,N.V.Boulgouris,and M.G.Strintzis,Robust transmission  of h.264/AVC video using adaptive slice grouping and unequal error  protection,in IEEE International Conference on  Multimedia and Expo, 2006”中,Reed-Solomon编码应用在每一帧中,因此没有产生前向纠错编 码延时。然而,当Reed-Solomon编码块只包含一帧的数据包时,由于数据 包数量太少,RS保护的效率并不高。

Reed-Solomon(RS)编码已被广泛应用在前向纠错编码(Forward Error  Correction Code)中,以此来减少数据包在丢包网络中丢失所带来的影响, 可以说Reed-Solomon(RS)编码是多种FEC实现技术中最普遍使用的一种 技术。在RS(N,K)编码中,在K个源数据包中引入N-K个校验包来保护源 数据包。只要接收端接收到N个数据包中的K个,所有的源数据包就可以 被还原。就RS编码而言,对于相同的编码率K/N,增加K的值会提高RS 编码的性能。但是,高K值会造成大的RS编码块,并因此导致长时延。对 于视频会议这样的实时视频应用,这样的时延是不可接受的。

发明内容

本发明目的在于提供一种基于前向纠错编码窗口扩张的实时视频传输 方法,解决了现有技术中实时视频传输方法中由于前向纠错编码导致比较长 的时延等问题。

为了解决现有技术中的这些问题,本发明提供的技术方案是:

一种基于前向纠错编码窗口扩张的实时视频传输方法,所述前向纠错编 码窗口包括当前画面群(GOP)中当前帧数据包和当前帧之前帧的所有数据 包,其特征在于所述方法包括以下步骤:

(1)视频发送端作为视频编码端,采集并视频编码当前画面群(GOP) 中的当前帧,以形成当前帧的视频数据包;并将生成的视频数据包和之前帧 的视频数据包进行RS编码,生成相应的校验数据包后,立即向视频接收端 发送该帧视频数据包和校验数据包,如此循环直到当前画面群(GOP)中所 有的帧都已经编码并发送完成;

(2)视频接收端作为视频解码端接收到当前画面群(GOP)中当前帧的 视频数据包和与当前帧相应的校验数据包时,通过RS校验矩阵生成关于当 前帧的RS解码方程组,与该GOP所有之前帧的RS解码方程组形成联合方程 组,并通过解该联合方程组,尝试恢复丢失的数据包;如果通过解该方程组 能恢复出之前帧中的某个丢失数据包,利用该新恢复的之前帧视频数据包, 在解码和播放当前帧之前,重新视频解码之前帧的视频数据并更新参考帧; 如果通过解该方程组能恢复出当前帧中的丢失的数据包,新恢复的数据包将 和接收到的数据包一起视频解码并显示出来;如此重复以上解码过程,直到 当前画面群(GOP)中所有的帧都已经解码并显示完成。

优选的,所述方法步骤(1)中如果当前画面群(GOP)中的当前帧为当 前画面群(GOP)中的第一帧,则第一帧采集完成并完成视频编码时,直接 将该帧生成的视频数据包进行RS编码,生成相应的校验数据包后,立即发 送该帧视频数据包和校验数据包。

优选的,所述方法步骤(1)中当前画面群(GOP)中当前帧和之前帧的 视频数据包生成RS校验数据包时,当前帧和之前帧的视频数据包需要乘上 一个变换矩阵;同时,编码端将变换矩阵信息告知视频解码端。

该变换矩阵的一个简单例子就是根据特定的随机顺序重新排列数据包, 这样可以保证不同的RS编码使用了不同的随机顺序,以保证RS解码时校验 方程组最大程度的线性无关。

优选的,所述方法步骤(2)中当接收到视频数据包和校验包为当前画 面群(GOP)中第一帧的视频数据包和校验包时,通过RS校验矩阵生成关于 第一帧的RS解码方程组,并通过解该方程组,尝试恢复丢失的视频数据包。

优选的,所述方法步骤(2)中当接收到视频数据包和校验包不是当前 画面群(GOP)中第一帧的视频数据包和校验包时,通过RS校验矩阵生成关 于当前帧的RS解码方程组,然后加入该GOP所有之前帧的RS解码方程组形 成联合方程组,并通过解该联合方程组,进行尝试恢复丢失的视频数据包。

本发明提供一种基于前向纠错编码(FEC)窗口扩张的实时视频传输方 法,解决了现有技术中当视频编码基于每帧进行校验纠错导致纠错性能差, 同时当以整个画面组进行校验纠错时,导致纠错编码时延的问题。

本发明具体的基于前向纠错编码(FEC)窗口扩张的实时视频传输方法, 包括以下步骤:

(1)在视频发送端:

1)首先在视频编码端,当前画面群(GOP)中的第一个帧已经采集完成 并进行完视频编码时,将生成的视频数据包进行RS编码,生成相应的校验 数据包后,立即发送该帧视频数据包和校验数据包。

2)当前画面群(GOP)中的第二个帧已经采集完成并完成视频编码时, 将根据第一帧和第二帧的视频数据包来进行RS编码,并生成相应的校验数 据包,发送第二帧的数据包和校验数据包。

3)在上述步骤2)中,在生成第一帧和第二帧的视频数据包的RS校 验数据包时,第一帧和第二帧的数据包需要乘上一个变换矩阵,该变换矩阵 的一个简单例子就是根据特定的随机顺序重新排列数据包,这样可以保证不 同的RS编码使用了不同的随机顺序,以保证RS解码时校验方程组最大程度 的线性无关。同时,编码端将对应每帧的随机次序告知视频解码端。

4)当前画面群(GOP)中的第三个帧已经采集完成并完成视频编码时, 将根据第一、二、三帧的视频数据包来进行RS编码,并生成相应的校验数 据包,发送第三帧的数据包和校验数据包。

5)在上述步骤(4)中,在生成1-3帧的视频数据包的RS校验数据包 时,1-3帧的数据包需要乘上一个变换矩阵,该变换矩阵的一个简单例子就 是根据特定的随机顺序重新排列数据包,这样可以保证不同的RS编码使用 了不同的随机顺序,以保证RS解码时校验方程组最大程度的线性无关。同时, 编码端将对应每帧的随机次序告知视频解码端。

6)重复以上过程,只到当前画面群(GOP)中所有的帧都已经编码并发 送完成。

所述方法中视频发送端作为视频编码端,以当前画面群(GOP)为单位 进行编码的,其中前向纠错编码窗口将包括当前画面群(GOP)中当前帧数 据包和当前帧之前的所有数据包。

(2)在视频接收端:

1)当接收到当前画面群(GOP)中第一帧的数据包和第一帧的校验包时, 通过RS校验矩阵生成关于第一帧的RS解码方程组。通过解该方程组,尝试 恢复丢失的数据包。

2)当接收到当前画面群(GOP)中第二帧的数据包和第二帧的校验包时, 通过RS校验矩阵生成关于第二帧的RS解码方程组。将该方程组合并第一帧 的RS解码方程组,生成新的解码方程组,通过解该联合方程组,尝试恢复 丢失的数据包。如果通过解该方程组可以恢复出第一帧中的某个丢失数据包, 利用该新恢复的第一帧数据包,在解码和播放第二帧之前,需要重新视频解 码第一帧视频数据,以用来更新参考帧。

3)当接收到当前画面群(GOP)中第三帧的数据包和第三帧的校验包时, 通过RS校验矩阵生成关于第三帧的RS解码方程组。将该方程组合并1-2帧 的RS解码方程组,生成新的解码方程组,通过解该方程组,尝试恢复丢失 的数据包。如果通过解该方程组可以恢复出第1-2帧中的某个丢失数据包, 利用这些新恢复的数据包,在解码和播放第三帧之前,重新视频解码1-2帧 视频数据,以用来更新参考帧。

4)重复以上过程,只到当前画面群(GOP)中所有的帧都已经解码并显 示完成。

在上述编码和解码过程中,并没有造成任何的编码时延,可以适用于实 时的多媒体传输系统。

相对于现有技术中的方案,本发明的优点是:

本发明提供了一种基于前向纠错编码窗口扩张的实时视频传输方法,所 述方法中视频信号采用前向纠错码编码器(FEC)进行编码,具有以下特点: (1)前向纠编码器(FEC)在编码当前图像帧数据的时候,编码器将使用当前 画面群(GOP)中当前帧之前的所有视频数据(包括当前帧视频数据)作为 编码数据,来生成校验数据包。(2)为了最大可能的增加该系统纠错的性能, 每次进行前向纠错编码时候,所使用的视频数据包需要乘上一个变换矩阵, 该变换矩阵的一个简单例子就是根据特定的随机顺序重新排列数据包,这样 可以保证不同的RS编码使用了不同的随机顺序,以保证RS解码时校验方程 组最大程度的线性无关,从而可以最大限度地正确解码。同时,编码端将对 应每帧的随机次序告知视频解码端。(3)关于重新排列视频数据包的方法, 本文提出了一种通过随机函数获得的方法,这样可以保证不同帧使用了不同 的随机顺序,同时,这些额外信息也必须通知视频接收端(视频解码端)。

附图说明

下面结合附图及实施例对本发明作进一步描述:

图1为基于前向纠错编码(FEC)窗口扩张的实时视频传输方法的原理 示意图;

图2为基于前向纠错编码(FEC)窗口扩张的实时视频传输方法与传统 未进行前向纠错编码(FEC)窗口扩张的实时视频传输方法的每帧PSNR对 照图。

具体实施方式

以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是 用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以 根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的 条件。

实施例

本实施例基于前向纠错编码(FEC)窗口扩张的实时视频传输方法按照 如下步骤进行:

(1)在视频发送端:

1)首先在视频编码端,当前画面群(GOP)中的第一个帧已经采集完成 并进行完视频编码时,将生成的视频数据包进行RS编码,生成相应的校验 数据包后,立即发送该帧视频数据包和校验数据包。

2)当前画面群(GOP)中的第二个帧已经采集完成并完成视频编码时, 将根据第一帧和第二帧的视频数据包来进行RS编码,并生成相应的校验数 据包,发送第二帧的数据包和校验数据包。

3)在上述步骤2)中,在生成第一帧和第二帧的视频数据包的RS校 验数据包时,第一帧和第二帧的数据包顺序将通过随机函数生成,同时随机 顺序也将告知视频解码端。

4)当前画面群(GOP)中的第三个帧已经采集完成并完成视频编码时, 将根据第一、二、三帧的视频数据包来进行RS编码,并生成相应的校验数 据包,发送第三帧的数据包和校验数据包。

5)在上述步骤(4)中,在生成1-3帧的视频数据包的RS校验数据包 时,1-3帧的数据包顺序将通过随机函数生成,同时随机顺序也将告知视频 解码端。

6)重复以上过程,只到当前画面群(GOP)中所有的帧都已经编码并发 送完成。

所述方法视频发送端作为视频编码端,以当前画面群(GOP)为单位进 行编码的,其中前向纠错编码窗口将包括当前画面群(GOP)中当前帧数据 包和当前帧之前的所有数据包。

(2)在视频接收端:

1)当接收到当前画面群(GOP)中第一帧的数据包和第一帧的校验包时, 通过RS校验矩阵生成关于第一帧的RS解码方程组。通过解该方程组,尝试 恢复丢失的数据包。

2)当接收到当前画面群(GOP)中第二帧的数据包和第二帧的校验包时, 通过RS校验矩阵生成关于第二帧的RS解码方程组。将该方程组合并第一帧 的RS解码方程组,生成新的解码方程组,通过解该方程组,尝试恢复丢失 的数据包。如果通过解该方程组可以恢复出第一帧中的某个丢失数据包,利 用该新恢复的第一帧数据包,在解码和播放第二帧之前,需要重新视频解码 第一帧视频数据,以用来更新参考帧。

3)当接收到当前画面群(GOP)中第三帧的数据包和第三帧的校验包时, 通过RS校验矩阵生成关于第三帧的RS解码方程组。将该方程组合并1-2帧 的RS解码方程组,生成新的解码方程组,通过解该方程组,尝试恢复丢失 的数据包。如果通过解该方程组可以恢复出第1-2帧中的某个丢失数据包, 利用这些新恢复的数据包,在解码和播放第三帧之前,重新视频解码1-2帧 视频数据,以用来更新参考帧。

4)重复以上过程,只到当前画面群(GOP)中所有的帧都已经解码并显 示完成。

本实施例以图1中前三个帧为例说明本方案的具体实施方式。在该示例 中,为了简化过程,本发明假设每个视频帧生成四个数据包。Reed-Solomon 编码在Galois Field(2^4)中进行。同时本发明假设在每个帧后面都生成一 个RS校验数据包,这种情况下RS编码的冗余率就是25%。

(1)对于第一个视频帧,由于只有4个数据包,并且RS编码只生成一个 校验数据包,因此,本实施例将采用RS(5,4)进行编码。在Galois Field(2^4) 有限域中,RS(5,4)编码器可以通过RS(15,14)来实现,这只需要在RS编 码过程中,在4个数据包后面再添加10个0数据包即可。

由于RS(15,14)的校验矩阵为:

H=[1,α,…,α^13,α^14];

在Galois Field(2^4)有限域中:

α=2;

α^2=4;

α^3=8;

α^4=3;

α^5=6;

α^6=12;

α^7=11;

α^8=5;

α^9=10;

α^10=7;

α^11=14;

α^12=15;

α^13=13;

α^14=9;

因此:

H=[1 2 4 8 3 6 12 11 5 10 7 14 15 13 9],

本发明用X1,X2,X3,X4和Y1来表示四个数据包和一个校验包, 可以得到第一个帧的校验方程(组):

X1+α*X2+α^2*X3+α^3*X4+α^14*Y1=0(1);

即:

X1+2*X2+4*X3+8*X4+9*Y1=0(1);

(2)对于第二个视频帧,本发明将使用第一帧和第二帧的数据包1-8 来生成校验包。由于此时已经有了8个数据包,只需要添加6个0数据包即 可。对于这个14个数据包,本发明使用随机函数来重新排序。关于随机顺 序的获得,可以通过matlab的randperm()函数获得,并将获得的随机顺序 植入到相应的软硬件环境中。

为了方便例子,假设本发明使用的randperm()函数生成的随机顺序是[6 3 11 7 14 8 5 1 2 4 13 9 10 12],这相当于使用原始数据乘上如下变化矩阵矩 阵H:

H=0000010000000000100000000000000000000010000000001000000000000000000001000000010000000000100000000010000000000000010000000000000001000000000000000000000010000000001000000000000001000000000000000100

此时,原始数据[X1 X2 X3 X4 X5 X6 X7 X8 0 0 0 0 0 0]经过随机顺序 调换后变为:[X6 X3 0 X7 0 X8 X5 X1 X2 X4 0 0 0 0].因此,本发明将为第 二个帧生成校验方程(组)如下:

X6+α*X3+α^3*X7+α^5*X8+α^6*X5+α^7*X1+α^8*X2 +α^9*X4+α^14*Y2=0(2);

即:

X6+2*X3+8*X7+6*X8+12*X5+11*X1+5*X2+10*X4+9*Y2= 0(2);

此时,在第二帧的视频解码过程中,恢复1-2帧中的丢失数据包可以通 过解(1)(2)联合方程组来实现。

为了显示算法的优越性,本发明假设在第一和第二视频帧中,视频数据 包1和3丢失了。那么在第一帧的解码过程中,由于方程组(1)只包含 了一个方程,该方程将不能恢复这两个数据包。但在第二个帧的解码时间, 由于X1,X3的系数矩阵[14;112]的秩(determinant)为2,通过解方程 组(1)(2)可以恢复出视频数据包1和3。此时,本发明可以重新视频解 码第一帧数据,更新参考帧(reference buffer),这样在第二帧中,将没有 任何由于错误掩盖(error concealment)造成的误差,也不会有任何错误掩 盖误差往后传播。

(3)同样的,对于第三个视频帧,本发明将生成新的随机顺序来重新排 列原始数据包[X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 0 0];并为该帧生 成校验方程组(3),错误恢复过程将通过解联合方程组(1)(2)(3)来实 现。

值得一提的是,在整个过程中,任何算术运算都是在Galois Field(2^4) 中进行的。同时,如果本发明在第n帧才能恢复出第m帧的数据包,并且 n>m,那么视频解码器将需要使用新恢复的第m帧数据包重新解码帧m到 帧n中所以视频帧,并更新编码参考帧(reference buffer),以达到降低误 差传播(error propagation)的目的。

实验结果

该实验采用Foreman测试序列,使用QP=24编码生成视频序列,每个 视频slice大小(视频数据包大小)为400Byte,目标冗余率为40%,网络丢包 为10%的随机丢包。GOP的结构为IPPP,长度为30帧,Reed-Solomon编 码在Galois Field(2^10)中进行。本发明比较了所提出的方案(expanding  FEC)和没有使用扩展窗口的FEC方案(Evenly FEC),该两个方案都是 实时的系统,不会造成任何编码时延。从图2中的每帧PSNR可以看出该方 案的优越性。

上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技 术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护 范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的 保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号