一种用于视频传输差错控制的视频编码方法及装置转让专利

申请号 : CN200710099583.8

文献号 : CN101312536B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨天武彭强陈睿诸昌钤

申请人 : 中兴通讯股份有限公司西南交通大学

摘要 :

本发明公开了一种用于视频传输差错控制的视频编码方法,包括:步骤A、在视频序列中插入若干核心帧;步骤B、在相邻两个所述核心帧之间插入若干关键帧;步骤C、对所述核心帧、关键帧以及视频序列中除核心帧和关键帧之外的普通帧分别进行编码。本发明还相应提供一种用于视频传输差错控制的视频编码装置。本发明有效结合了参考帧选择和帧内更新的编码方法,在不明显降低视频编码效率的基础上,实现视频传输差错控制,并且提高了在差错传输情况下的编码效率,有效地减小或阻止视频传输差错扩散,进而提高了视频传输的质量。

权利要求 :

1.一种用于视频传输差错控制的视频编码方法,其特征在于,包括以下步骤:A、在视频序列中插入若干核心帧,确定视频序列中插入的核心帧的位置;

B、在相邻两个所述核心帧之间插入若干关键帧,确定视频序列中插入的关键帧的位置;

C、对所述核心帧、关键帧以及视频序列中除核心帧和关键帧之外的普通帧分别进行编码;

对所述核心帧的编码是根据视频序列的编码图像大小,选择参考前一个解码端正确接收的核心帧,并进行帧间编码;或选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新;

对所述关键帧的编码是根据视频序列的编码图像大小和/或信道差错情况,选择参考前一个核心帧,并进行帧间编码;或选择参考前一个解码端正确接收的核心帧,并进行帧间编码;或选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新;

对所述普通帧的编码是对普通帧进行帧间编码,并基于率失真优化进行帧内编码模式更新。

2.根据权利要求1所述的方法,其特征在于,所述步骤A中还包括对所述视频序列的第一帧进行帧内编码,该帧内编码帧为特殊的核心帧。

3.根据权利要求1所述的方法,其特征在于,所述步骤A中确定视频序列中插入核心帧位置的步骤:根据固定间隔来确定插入核心帧的位置;

根据率失真优化方式来确定插入核心帧的位置;或者

根据解码端的反馈信息来确定插入核心帧的位置。

4.根据权利要求1所述的方法,其特征在于,所述步骤B中确定视频序 列中插入关键帧位置的步骤:根据固定间隔来确定插入关键帧的位置;或者

根据随机间隔来确定插入关键帧的位置。

5.根据权利要求1所述的方法,其特征在于,若所述视频序列的编码图像为小尺寸图像,在低误码率情况下,所述核心帧选择参考前一个解码端正确接收的核心帧进行帧间编码,而关键帧选择参考前一个核心帧进行帧间编码;在高误码率的情况下,所述核心帧和关键帧选择参考前一个解码端正确接收的核心帧,并进行帧间编码。

6.根据权利要求1所述的方法,其特征在于,若所述视频序列的编码图像为大尺寸图像,在低误码率的情况下,所述关键帧选择前一个核心帧进行帧间编码,而所述核心帧选择参考前一个解码端正确接收的核心帧进行帧间编码;或者核心帧选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新;

在高误码率的情况下,所述核心帧和关键帧选择参考前一个解码端正确接收的核心帧进行帧间编码;或者核心帧和关键帧选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新。

7.根据权利要求1或6所述的方法,其特征在于,所述核心帧或关键帧的帧内编码模式更新处理过程是:将核心帧或关键帧中出错区域采用编/解码端默认的掩盖方法掩盖,然后进行帧内/帧间模式选择,将当前待编码的核心帧或关键帧中的部分宏块更新为帧内编码模式。

8.一种实现权利要求1~6任一项所述方法的装置,其特征在于,包括:帧插入单元,用于在视频序列中插入若干核心帧,并在相邻两个所述核心帧之间插入若干关键帧;

编码单元,用于对所述核心帧、关键帧以及视频序列中除核心帧和关键帧之外的普通帧分别进行编码。

说明书 :

一种用于视频传输差错控制的视频编码方法及装置

技术领域

[0001] 本发明涉及图像信息传输和处理领域,尤其涉及一种用于视频传输差错控制的视频编码方法及装置。

背景技术

[0002] 当视频信息通过互联网(Internet)和无线移动网络等低速不可靠网络进行实时传输时,需要采用基于运动补偿的混合编码提高压缩率以克服带宽限制,但该视频编码方法对传输差错特别敏感,视频差错会由于运动预测而扩散,从而导致视频质量迅速下降,甚至导致视频传输失败。为了防止视频差错在时域和空域上扩散,需要对该视频差错进行差错冗余编码,其虽然在一定程度上降低了编码效率,但同时提高了视频差错恢复性能。 [0003] 目前,差错冗余编码方法主要包括参考帧选择和帧内编码模式更新(简称帧内更新)。参考帧选择方法包括:编码器是根据反馈信号来确定当前编码帧的参考帧,可选择已被解码器正确接收的较早的帧作为参考帧,以便阻止差错扩散。帧内更新,则是对无差错算法中采用帧间编码的宏块强制进行帧内编码模式,以阻止差错扩散。现有宏块选取方法主要有轮流更新方法、随机更新方法和率失真估计更新方法等,所述方法在一定程度上阻止了视频差错的严重扩散,但由于每帧更新的宏块有限,视频差错在整个视频序列中依然存在,无法完全阻止该视频差错。
[0004] 图1是现有技术的视频编码方式对传输差错的处理示意图,其是将参考帧选择方法与率失真估计帧内更新方法相结合。该参考帧可通过参考t时刻的I帧来进行选择和/或预测的。所述视频编码方法差错控制效果比单一采用参考帧选择或帧内更新方法的差错控制效果好,但在往返时延之内的差错控制即图1中的t+i时刻和t+n时刻之间的解码错误间隔内的差错控制,完全依靠率失真估计,一旦该期望的估计不准确,就会导致视频差错的扩散,尤其是当往返时延增加时,视频差错的扩散也会随之增大,并且在高误码率、长时延的情况下,该参考帧选择方法会产生大量无效的参考帧从而使得编码效率大大降低,视频差错的扩散非常严重。
[0005] 综上可知,现有用于视频传输差错控制的视频编码技术上显然存在不便与缺陷,所以有必要加以改进。
[0006] 发明内容
[0007] 针对上述的缺陷,本发明所要解决的技术问题是提供一种用于视频传输差错控制的视频编码方法与装置,在差错传输情况下其具有更高的编码效率,并且能够有效地减小或阻止视频传输差错扩散,进而提高视频传输的质量。
[0008] 为了实现上述目的,本发明提供一种用于视频传输差错控制的视频编码方法,包括以下步骤:
[0009] A、在视频序列中插入若干核心帧;
[0010] B、在相邻两个所述核心帧之间插入若干关键帧;
[0011] C、对所述核心帧、关键帧以及视频序列中除核心帧和关键帧之外的普通帧分别进行编码。
[0012] 根据本发明的方法,所述步骤A中还包括对所述视频序列的第一帧进行帧内编码,该帧内编码帧为特殊的核心帧。
[0013] 根据本发明的方法,所述步骤A中还包括确定视频序列中插入核心帧位置的步骤:
[0014] 根据固定间隔来确定插入核心帧的位置;
[0015] 根据率失真优化方式来确定插入核心帧的位置;或者
[0016] 根据解码端的反馈信息来确定插入核心帧的位置。
[0017] 根据本发明的方法,所述步骤B中还包括确定视频序列中插入关键帧位置的步骤:
[0018] 根据固定间隔来确定插入关键帧的位置;或者
[0019] 根据随机间隔来确定插入关键帧的位置。
[0020] 根据本发明的方法,所述步骤C中核心帧根据视频序列的编码图像大小,选择参考前一个解码端正确接收的核心帧,并进行帧间编码;或
[0021] 选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新。
[0022] 根据本发明的方法,所述步骤C中关键帧根据视频序列的编码图像大小和/或信道差错情况,选择参考前一个核心帧,并进行帧间编码;或
[0023] 选择参考前一个解码端正确接收的核心帧,并进行帧间编码;或 [0024] 选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新。
[0025] 根据本发明的方法,所述步骤C中对普通帧进行帧间编码,并基于率失真优化进行帧内编码模式更新。
[0026] 根据本发明的方法,若所述视频序列的编码图像为小尺寸图像,在低误码率情况下,所述核心帧选择参考前一个解码端正确接收的核心帧进行帧间编码,而关键帧选择参考前一个核心帧进行帧间编码;在高误码率的情况下,所述核心帧和关键帧选择参考前一个解码端正确接收的核心帧,并进行帧间编码。
[0027] 根据本发明的方法,若所述视频序列的编码图像为大尺寸图像,在低误码率的情况下,所述关键帧选择前一个核心帧进行帧间编码,而所述核心帧选择参考前一个解码端正确接收的核心帧进行帧间编码;或者核心帧选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新;在高误码率的情况下,所述核心帧和关键帧选择参考前一个解码端正确接收的核心帧进行帧间编码;或者核心帧和关键帧选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新。 [0028] 根据本发明的方法,所述核心帧或关键帧的帧内编码模式更新处理过程是:将核心帧或关键帧中出错区域采用编/解码端默认的掩盖方法掩盖,然后进行帧内/帧间模式选择,将当前待编码的核心帧或关键帧中的部分宏块更新为帧内编码模式。 [0029] 为了更好地实现上述目的,本发明还提供一种用于视频传输差错控制的视频编码装置,包括:
[0030] 帧插入单元,用于在视频序列中插入若干核心帧,并在相邻两个所述核心帧之间插入若干关键帧;
[0031] 编码单元,用于对所述核心帧、关键帧以及视频序列中除核心帧和关键帧之外的普通帧分别进行编码。
[0032] 本发明通过在视频序列中插入若干核心帧和关键帧,并对核心帧、关键帧 以及普通帧分别进行编码,其有效结合了参考帧选择和帧内更新的编码方法,在不明显降低视频编码效率的基础上,实现视频传输差错控制,并且提高了在差错传输情况下的编码效率,有效地减小或阻止视频传输差错扩散,进而提高了视频传输的质量。

附图说明

[0033] 图1是现有技术的视频编码方式对传输差错的处理示意图;
[0034] 图2是本发明提供的用于视频传输差错控制的视频编码装置模块图; [0035] 图3是本发明提供的用于视频传输差错控制的视频编码方法流程图; [0036] 图4是本发明第一实施例提供的视频编码方法的流程图;
[0037] 图5是本发明第二实施例的参考帧选择示意图;
[0038] 图6是本发明第三实施例的参考帧选择示意图;
[0039] 图7是本发明第四实施例的参考帧选择示意图;
[0040] 图8是本发明第五实施例的参考帧选择示意图;
[0041] 图9a~9f是图1以及图5~8的图例。

具体实施方式

[0042] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0043] 本发明提供的用于视频传输差错控制的视频编码装置20,如图2所示,包括: [0044] 帧插入单元21,用于在视频序列中插入若干核心帧,并在相邻两个所述核心帧之间插入若干关键帧;
[0045] 编码单元22,用于对所述核心帧、关键帧以及视频序列中除核心帧和关键帧之外的普通帧分别进行编码。
[0046] 图3示出了本发明提供的用于视频传输差错控制的视频编码方法,至少包括如下步骤:
[0047] 步骤S301,在视频序列中插入若干核心帧。
[0048] 步骤S302,在相邻两个所述核心帧之间插入若干关键帧。
[0049] 步骤S303,对所述核心帧、关键帧以及视频序列中除核心帧和关键帧之外的普通帧分别进行编码。
[0050] 对核心帧的编码处理包括:根据视频序列的编码图像大小,选择参考前一个解码端正确接收的核心帧,并进行帧间编码;或选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内编码模式更新(简称帧内更新)。
[0051] 对关键帧的编码处理包括:根据视频序列的编码图像大小或信道差错情况,选择参考前一个核心帧,并进行帧间编码;选择参考前一个解码端正确接收的核心帧,并进行帧间编码;或选择参考前一个出错但已得到掩盖处理的核心帧,并进行帧间编码和帧内更新。 [0052] 对普通帧进行帧间编码,并基于率失真优化进行帧内更新。
[0053] 本发明提供的用于视频传输差错控制的视频编码方法的第一实施例,如图4所示,具体包括如下步骤:
[0054] 步骤S401,对视频序列的第1帧进行帧内编码。该帧内编码帧可以独立解码,并且其视为特殊的核心帧。
[0055] 步骤S402,确定视频序列中插入核心帧的位置。
[0056] 核心帧的插入位置有多种方式:
[0057] 可以根据固定间隔来确定插入核心帧的位置。例如,通信系统往返延时为600ms,且视频编码的帧速率为10帧/秒,则确定核心帧的固定间隔为6个帧间隔,6=0.6秒×10帧/秒。
[0058] 可以根据率失真优化方式来确定插入核心帧的位置。
[0059] 可以根据解码端的反馈信息来确定插入核心帧的位置。所述解码端一般是指解码器,该解码器在接收到核心帧时刻向编码端发回反馈信息,该编码端一般是指编码器,并通知编码器当前收到的核心帧中每个宏块数据的接收情况:正确收到、出错或丢失。 [0060] 本步骤确定核心帧插入位置后,则将所述核心帧插入视频序列中。 [0061] 步骤S403,在相邻两个核心帧之间确定插入关键帧的位置。
[0062] 可以在两个核心帧之间插入多个关键帧,若差错扩散距离要求越短,则插入的关键帧就越多。该核心帧的插入位置有多种选择方法:
[0063] 可以根据固定间隔来确定插入关键帧的位置。本发明的一个实施方式,关 键帧的固定间隔为3个帧间隔以适应差错扩散要求。
[0064] 可以根据随机间隔来确定插入关键帧的位置。
[0065] 本步骤确定关键帧插入位置后,则将所述关键帧插入视频序列中。 [0066] 步骤S404,对视频序列中的普通帧进行编码。
[0067] 所述普通帧为视频序列中,除核心帧和关键帧外的视频帧,其采用帧间编码方式,其常见的方法是参考前向一帧,并进行帧内更新。所述普通帧的帧内更新,是指编码器根据误码率和差错掩盖策略,估计视频帧各个宏块从编码器到解码器的传输失真度,然后根据率失真优化方法进行宏块帧内更新。
[0068] 步骤S405,对视频序列中的关键帧进行编码。
[0069] 关键帧采用的是帧间编码方式进行编码,其参考的帧只能是当前编码帧之前的I帧和/或当前编码帧之前的核心帧,具体而言,包括:
[0070] 根据编码图像大小和/或信道差错情况,选择参考前一个核心帧,并进行帧间编码;或选择前一个解码端正确接收的核心帧进行帧间编码;或选择前一个出错但已得到掩盖处理的核心帧进行编码,同时进行帧内更新。
[0071] 所述帧内更新处理包括:若参考的核心帧出错,将该帧中出错区域进行编/解码器默认的掩盖方法进行掩盖,例如用一个固定数值进行掩盖,由此在进行运动补偿时所参考的帧出错的内容是已知的约定值,然后利用编码器进行帧内/帧间编码模式选择,将当前待编码的关键帧中的运动补偿区域出错的宏块更新为帧内编码模式,从而阻止传输差错从关键帧外扩散。
[0072] 步骤S406,对视频序列中的核心帧进行编码。
[0073] 核心帧采用的是帧间编码方式进行编码,其参考的帧只能是当前编码帧之前的I帧和/或当前编码帧之前的核心帧,具体而言,包括:根据编码图像大小,选择参考前一个解码端正确接收的核心帧,并进行帧间编码;或选择参考前一个出错但已得到掩盖处理的核心帧进行帧间编码并进行帧内更新。
[0074] 所述帧内更新处理包括:若参考的核心帧出错,将该帧中出错区域进行编/解码器默认的掩盖方法进行掩盖,例如用一个固定数值进行掩盖,由此在进行运动补偿时所参考的帧出错的内容是已知的约定值,然后利用编码器进行帧内/帧间编码模式选择,将当前待编码的核心帧中的运动补偿区域出错的部分宏块更新为帧内编码模式,从而阻止传输差错从核心帧外扩散。
[0075] 另外,本发明根据不同的误码环境和不同的图像大小提出了四种不同的编 码预测结构,并结合这些编码预测结构给出了编码模式优化选择方法,具体描述如下。 [0076] 图5示出了对于小尺寸图像在低误码率情况下,本发明所提供的参考帧选择方案,核心帧选择参考前一个解码端正确接收的核心帧并进行帧间编码,而关键帧选择参考前一个核心帧并进行帧间编码。
[0077] 另外,图9是本发明的各图例,其图例解释如下:图9a代表I帧,图9b代表核心帧,图9c代表关键帧,图9d代表普通帧,图9e代表出现传输错误,图9f代表图像错误恢复。 [0078] 小尺寸图像的数据量相对较小,例如次1/4常用的标准化图像格式(Sub-quarter Common Intermediate Format,SQCIF)、1/4常用的标准化图像格式(Quarter common intermediate format,QCIF)等,在数据打包的时候可以用较少数目的包(如1~3个)完成数据封装,在低误码率(如丢包率小于5%)网络环境下,视频序列一帧出错的概率较小。
[0079] 编码器对视频序列进行实时编码,得到编码视频码流,如图5中上半部分所示;然后将编码视频码流传送到解码器进行解码,如图5中下半部分所示。
[0080] 由于编码器或者信道传输过程中存在一定的时间延时,解码器接收到编码视频码流的时刻与真实的视频序列存在一定的时间差。同理,由于解码器和/或反馈信道传输过程存在一定的时间延时,解码器将当前图像解码信息反馈至编码器也存在一定的时间延时。在图5中假设编码器对视频序列进行编码后,经过信道传输,被解码器接收并解码,然后将解码状况反馈至编码器所需的时间在6个单位时间以内。即t时刻编码的图像帧被解码器接收后,在t+6时刻之前编码器可以得到解码器的反馈信息。
[0081] 用I(t)表示t时刻用帧内编码方式编码的帧,用P(t)表示t时刻用普通帧方式进行帧间编码的帧,用C(t)表示t时刻用核心帧方式进行帧间编码的帧,用K(t)表示t时刻用关键帧方式进行帧间编码的帧。解码器端将核心帧的解码状态通过反馈信道传送给编码器,ACK表示该图像帧能够正确解码,NACK表示该图像帧不能正确解码,并将错误的宏块位置反馈给编码器。如图5中I(t)、P(t+6)、P(t+18)、P(t+24)等能够正确解码的图像帧通过ACK反馈至编码器,而不能正确解码的P(t+12)图像帧通过NACK反馈至编码器。
[0082] 在t时刻,编码器对视频序列的当前帧(即该视频序列的第1帧)进行帧内编码,记为I(t),其视为特殊的核心帧。
[0083] 根据通信系统往返延时为6的假定,确定核心帧间隔为6;根据差错扩散要求,假定关键帧间隔为3。
[0084] 在t+1、t+2、t+4、t+5时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+1)、P(t+2)、P(t+4)、P(t+5)。通过计算图像帧中每个宏块在丢包率、差错扩散距离以及量化失真等条件下采用帧内/帧间编码的代价值,确定其编码模式是采用帧间编码,还是帧内更新。后续普通P帧的帧内更新方式与此相同。 [0085] 在t+3时刻,对当前图像按照关键帧方式进行编码,即编码器对当前图像采取以最近核心帧作为参考帧的帧间编码方式编码,即以I(t)作为参考帧进行编码,记为K(t+3)。
[0086] 在t+6时刻,编码器已经接收到解码器反馈的I(t)正确解码ACK信息,对当前图像采取核心帧方式进行编码,即以I(t)作为参考帧进行编码,记为C(t+6)。 [0087] 在t+7、t+8、t+10、t+11时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+7)、P(t+8)、P(t+10)、P(t+11)。 [0088] 在t+9时刻,按照关键帧方式进行编码,编码器对当前图像采取以最近核心帧C(t+6)作为参考帧的帧间编码方式编码,记为K(t+9)。
[0089] 在t+12时刻,编码器已经接收到解码器反馈的C(t+6)正确解码ACK信息,对当前图像采取核心帧方式进行编码,即以C(t+6)作为参考帧进行编码,记为C(t+12)。 [0090] 在t+13、t+14、t+16、t+17时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+13)、P(t+14)、P(t+16)、P(t+17)。 [0091] 在t+15时刻,编码器对当前图像采取以最近核心帧C(t+12)作为参考帧的关键帧帧间编码方式编码,记为K(t+15)。
[0092] 在t+18时刻,编码器没有接收到解码器反馈的C(t+12)正确解码ACK信息,但是按照对当前核心帧图像采取正确核心帧作为参考的方式进行编码。 所以即以前面正确接收的核心帧C(t+6)作为参考帧进行编码,记为C(t+18)。此时,解码图像出错的为C(t+12)、P(t+13)、P(t+14)、K(t+15)、P(t+16)、P(t+17)。
[0093] 后面时刻的编码方法与前面类似,在此不再重复。
[0094] 图6示出了对于小尺寸图像在高误码率情况下,本发明所提供的参考帧选择方案。本方案中核心帧和关键帧选择参考前一个解码端正确接收的核心帧并进行帧间编码,其具体过程如下:
[0095] 根据通信系统往返延时为6的假定,确定核心帧间隔为6;根据差错扩散要求,假定关键帧间隔为3。
[0096] 用I(t)表示t时刻用帧内编码方式编码的帧,用P(t)表示t时刻用普通帧方式进行帧间编码的帧,用C(t)表示t时刻用核心帧方式进行帧间编码的帧,用K(t)表示t时刻用关键帧方式进行帧间编码的帧。解码器端将核心帧的解码状态通过反馈信道传送给编码器,ACK表示该图像帧能够正确解码,NACK表示该图像帧不能正确解码,并将错误的宏块位置反馈给编码器。如图6中I(t)、P(t+6)、P(t+18)、P(t+24)等能够正确解码的图像帧通过ACK反馈至编码器,而不能正确解码的P(t+12)图像帧通过NACK反馈至编码器。 [0097] 在t时刻,编码器对视频序列的当前帧用帧内编码方式编码,记为I(t)。 [0098] 在t+1、t+2、t+4、t+5时刻,编码器对当前图像采取以前一帧作为参考帧,采用普通帧的方式进行帧间编码,记为P(t+1)、P(t+2)、P(t+4)、P(t+5)。通过计算图像帧中每个宏块在丢包率、差错扩散距离以及量化失真等条件下采用帧内/帧间编码的代价值,确定其编码模式是采用帧间编码,还是帧内更新。后续普通P帧的帧内更新方式与此相同。 [0099] 在t+3时刻,对当前图像按照关键帧方式进行编码,即编码器对当前图像采取以最近核心帧作为参考帧的帧间编码方式编码,即以I(t)作为参考帧进行编码,记为K(t+3)。
[0100] 在t+6时刻,编码器已经接收到解码器反馈的I(t)正确解码ACK信息,对当前图像采取核心帧方式进行编码,即以I(t)作为参考帧进行编码,记为C(t+6)。 [0101] 在t+7、t+8、t+10、t+11时刻,编码器对当前图像采取以前一帧作为参 考帧,并按照普通帧方式进行帧间编码,记为P(t+7)、P(t+8)、P(t+10)、P(t+11)。 [0102] 在t+9时刻,按照关键帧方式进行编码,编码器对当前图像采取以前一个解码端正确接收的核心帧I(t)作为参考帧进行帧间编码,记为K(t+9)。
[0103] 在t+12时刻,编码器已经接收到解码器反馈的C(t+6)正确解码ACK信息,对当前图像采取核心帧方式进行编码,即以C(t+6)作为参考帧进行编码,记为C(t+12)。 [0104] 在t+13、t+14、t+16、t+17时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+13)、P(t+14)、P(t+16)、P(t+17)。 [0105] 在t+15时刻,按照关键帧方式进行编码,编码器对当前图像采取以采取以前一个解码端正确接收的核心帧C(t+6)作为参考帧进行帧间编码,记为K(t+15)。 [0106] 在t+18时刻,编码器没有接收到解码器反馈的C(t+12)正确解码ACK信息,但是按照对当前核心帧图像采取正确核心帧作为参考的方式进行编码。所以即以前面正确接收的核心帧C(t+6)作为参考帧进行编码,记为C(t+18)。此时,解码图像出错的为C(t+12)、P(t+13)、P(t+14)。
[0107] 在t+21时刻,编码器对当前图像采取以采取以前一个解码端正确接收的核心帧C(t+6)作为参考帧的关键帧帧间编码方式编码,记为K(t+21)。
[0108] 后面时刻的编码方法与前面类似,在此不再重复。
[0109] 图7示出了对于大尺寸图像在低误码率情况下,本发明所提供的参考帧选择方案。所述关键帧选择前一个核心帧进行帧间编码,而所述核心帧选择参考前一个得到反馈信息的核心帧进行编码,该得到反馈信息的核心帧可以是前一个解码端正确接收的核心帧;或者是前一个出错但已得到掩盖处理的核心帧,此时需要进行帧内更新。 [0110] 对于大尺寸图像,如CIF、4CIF等的数据量相对较大,在数据打包的时候需要用较多数目的包(如6~8个)完成数据封装,其在高误码率(如丢包率大于10%)网络环境下,视频序列每一帧出错的概率都很大,很难保证一个不出错的完整核心帧。 [0111] 根据通信系统往返延时为6的假定,确定核心帧间隔为6;根据差错扩散 要求,假定关键帧间隔为3。
[0112] 用I(t)表示t时刻用帧内编码方式编码的帧,用P(t)表示t时刻用普通帧方式进行帧间编码的帧,用C(t)表示t时刻用核心帧方式进行帧间编码的帧,用K(t)表示t时刻用关键帧方式进行帧间编码的帧。解码器端将核心帧的解码状态通过反馈信道传送给编码器,ACK表示该图像帧能够正确解码,NACK表示该图像帧不能正确解码,并将错误的宏块位置反馈给编码器。如图7中I(t)、P(t+6)、P(t+18)、P(t+24)等能够正确解码的图像帧通过ACK反馈至编码器,而不能正确解码的P(t+12)图像帧通过NACK反馈至编码器。 [0113] 在t时刻,编码器对视频序列的当前帧用帧内编码方式编码,记为I(t)。 [0114] 在t+1、t+2、t+4、t+5时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+1)、P(t+2)、P(t+4)、P(t+5)。通过计算图像帧中每个宏块在丢包率、差错扩散距离以及量化失真等条件下采用帧内/帧间编码的代价值,确定其编码模式是采用帧间模式,还是帧内更新。后续普通P帧方式与此相同,不再赘述。 [0115] 在t+3时刻,编码器对当前图像采取以前一核心帧I(t)作为参考帧的关键帧帧间编码方式编码,记为K(t+3)。
[0116] 在t+6时刻,编码器已经接收到解码器反馈的I(t)正确解码ACK信息,对当前图像采取核心帧方式进行编码,即以I(t)作为参考帧进行编码,记为C(t+6)。 [0117] 在t+7、t+8、t+10、t+11时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+7)、P(t+8)、P(t+10)、P(t+11)。 [0118] 在t+9时刻,编码器对当前图像采取前一个得到反馈信息的核心帧I(t)作为参考帧的关键帧帧间编码方式编码,记为K(t+9)。
[0119] 在t+12时刻,编码器已经接收到解码器反馈的C(t+6)正确解码ACK信息,对当前图像采取核心帧方式进行编码,即以C(t+6)作为参考帧进行编码,记为C(t+12)。 [0120] 在t+13、t+14、t+16、t+17、t+19、t+20时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+13)、P(t+14)、 P(t+16)、P(t+17)、P(t+19)、P(t+20)。
[0121] 在t+15时刻,编码器对当前图像采取以最近核心帧C(t+12)作为参考帧的关键帧帧间编码方式编码,记为K(t+15)。
[0122] 在t+18时刻,编码器接收到解码器反馈的C(t+12)接收出错NACK信息,将C(t+12)中出错的宏块区域用固定数值(本例用128)来掩盖,掩盖后仍然以这个核心帧C(t+12)为参考对当前图像采取核心帧方式进行编码。由于参考帧C(t+12)内容被改变,当前图像以它作为参考帧进行编码模式选择时,部分原来帧间编码模式的宏块会因预测残差过大而变为帧内模式,从而产生帧内更新。当前核心帧记为C(t+18)。此时,解码图像出错的为C(t+12)、P(t+13)、P(t+14)、K(t+15)、P(t+16)、P(t+17)。
[0123] 后面时刻的编码方法与前面类似,在此不再重复。
[0124] 图8示出了对于大尺寸图像在高误码率情况下,本发明所提供的参考帧选择方案。所述核心帧和关键帧选择参考前一个得到反馈信息的核心帧进行编码,该得到反馈信息的核心帧可以是前一个解码端正确接收的核心帧;或者是前一个出错但已得到掩盖处理的核心帧,此时需要进行帧内更新。
[0125] 根据通信系统往返延时为6的假定,确定核心帧间隔为6;根据差错扩散要求,假定关键帧间隔为3。
[0126] 用I(t)表示t时刻用帧内编码方式编码的帧,用P(t)表示t时刻用普通帧方式进行帧间编码的帧,用C(t)表示t时刻用核心帧方式进行帧间编码的帧,用K(t)表示t时刻用关键帧方式进行帧间编码的帧。解码器端将核心帧的解码状态通过反馈信道传送给编码器,ACK表示该图像帧能够正确解码,NACK表示该图像帧不能正确解码,并将错误的宏块位置反馈给编码器。如图8中I(t)、P(t+6)、P(t+18)、P(t+24)等能够正确解码的图像帧通过ACK反馈至编码器,而不能正确解码的P(t+12)图像帧通过NACK反馈至编码器。 [0127] 在t时刻,编码器对视频序列的当前帧用帧内编码方式编码,记为I(t)。 [0128] 在t+1、t+2、t+4、t+5时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+1)、P(t+2)、P(t+4)、P(t+5)。计算图像帧中每个宏块在丢包率、差错扩散距离以及量化失真等条件下采用帧内/帧间编码的代价值,确定其编码模式是采用帧间模式,还是帧 内更新。后续普通P帧方式与此相同,不再赘述。 [0129] 在t+3时刻,编码器对当前图像采取前一核心帧I(t)作为参考帧的关键帧帧间编码方式编码,记为K(t+3)。
[0130] 在t+6时刻,编码器已经接收到解码器反馈的I(t)正确解码ACK信息,对当前图像采取核心帧方式进行编码,即以I(t)作为参考帧进行编码,记为C(t+6)。 [0131] 在t+7、t+8、t+10、t+11时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+7)、P(t+8)、P(t+10)、P(t+11)。 [0132] 在t+9时刻,编码器对当前图像采取前一个得到反馈信息的核心帧I(t)作为参考帧的关键帧帧间编码方式编码,记为K(t+9)。
[0133] 在t+12时刻,编码器已经接收到解码器反馈的C(t+6)正确解码ACK信息,对当前图像采取核心帧方式进行编码,即以C(t+6)作为参考帧进行编码,记为C(t+12)。 [0134] 在t+13、t+14、t+16、t+17、t+19、t+20时刻,编码器对当前图像采取以前一帧作为参考帧,并按照普通帧方式进行帧间编码,记为P(t+13)、P(t+14)、P(t+16)、P(t+17)、P(t+19)、P(t+20)。
[0135] 在t+15时刻,编码器对当前图像采取前一个得到反馈信息的核心帧C(t+6)作为参考帧的关键帧帧间编码方式编码,记为K(t+15)。
[0136] 在t+18时刻,编码器接收到解码器反馈的C(t+12)接收出错NACK信息,将C(t+12)中出错的宏块区域用固定数值(本例用128)来掩盖,掩盖后仍然以这个核心帧C(t+12)为参考对当前图像采取核心帧方式进行编码。由于参考帧C(t+12)内容被改变,当前图像以它作为参考帧进行编码模式选择时,部分原来帧间编码模式的宏块会因预测残差过大而变为帧内模式,从而产生帧内更新;没有进行帧内更新的宏块,也由于传输差错被纠正为已知固定值,而不会出现差错的扩散。当前核心帧记为C(t+18)。此时,解码图像出错的为C(t+12)、P(t+13)、P(t+14)。
[0137] 在t+21时刻,编码器对当前关键帧按照接收到反馈信息的C(t+12)作为参考帧进行关键帧编码,此刻C(t+12)中出错的宏块区域已经用固定数值(本例用128)来掩盖。当前图像以它作为参考帧进行编码模式选择时,部分 原来帧间编码模式的宏块会产生帧内更新,没有进行帧内更新的宏块,也由于传输差错被纠正为已知固定值,而不会出现差错的扩散。当前关键帧记为K(t+21)。后面时刻的编码方法与前面类似,在此不再重复。 [0138] 综上可知,本发明通过在视频序列中插入若干核心帧和关键帧,并对核心帧、关键帧以及普通帧分别进行编码,其有效结合了参考帧选择和帧内更新的编码方法,在不明显降低视频编码效率的基础上,实现视频传输差错控制,并且提高了在差错传输情况下的编码效率,有效地减小或阻止视频传输差错扩散,进而提高了视频传输的质量。 [0139] 当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。