视频编码、解码方法及装置和视频编解码系统转让专利

申请号 : CN200710178359.8

文献号 : CN101453656B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赖昌材郑萧桢郑建铧

申请人 : 华为技术有限公司

摘要 :

本发明提供一种视频编码、解码方法及装置和视频编解码系统,通过将条带内属于视频帧关键区域的冗余运动矢量信息,写入其余的条带的编码信息中;在解码时将解析出来的关键区域的宏块的冗余运动矢量信息存入缓存中,当出现传输丢包情况时,应用缓存中的冗余运动矢量信息进行错误隐藏,提高图像的显示质量。

权利要求 :

1.一种视频编码方法,其特征在于包括:

确定视频帧的关键区域;

在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中;

其中,所述在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中包括:获取所述关键区域内条带的属于所述关键区域的首个宏块的冗余运动矢量信息;

根据所述条带的首个宏块的冗余运动矢量信息,获取所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息;

将所述条带的首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息的起始部分。

2.根据权利要求1所述的视频编码方法,其特征在于所述获取所述关键区域内条带的属于所述关键区域的首个宏块的冗余运动矢量信息包括:获取所述关键区域内的条带的属于所述关键区域的首个宏块的位置信息;

以与所述视频帧最近的前向参考帧为参考帧,对所述首个宏块进行运动估计,得到所述首个宏块的冗余运动矢量信息。

3.根据权利要求1所述的视频编码方法,其特征在于所述根据所述条带的首个宏块的冗余运动矢量信息,获取所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息包括:获取当前宏块的上一宏块的冗余运动矢量信息;

根据所述上一宏块的冗余运动矢量信息,对当前宏块进行运动矢量运测,得到当前宏块的预测冗余运动矢量信息;

以与所述视频帧最近的前向参考帧为参考帧,对当前宏块进行运动估计,得到当前宏块的冗余运动矢量信息;

将当前宏块的运动矢量信息与当前宏块的预测冗余运动矢量信息进行作差处理,得到当前宏块的冗余运动矢量残差信息。

4.根据权利要求1所述的视频编码方法,其特征在于所述将所述条带的首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息的起始部分包括:在所述视频帧的其余的条带的编码信息的起始码之后,写入用于标识该条带是否包括冗余运动矢量信息的标志位信息;

在所述视频帧的其余的条带的编码信息中的所述标志位之后,依次写入所述条带的所述首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余各宏块的所述冗余运动矢量残差信息。

5.根据权利要求1或4所述的视频编码方法,其特征在于所述将所述条带的首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息的起始部分之后还包括:若判断所述视频帧关键区域内的最后一个条带是所述视频帧的最后一个条带,则将所述视频帧关键区域内的最后一个条带内属于关键区域的首个宏块的冗余运动矢量和其余各宏块的冗余运动矢量残差信息,写入所述视频帧的下一视频帧的条带的编码信息中。

6.根据权利要求1所述的视频编码方法,其特征在于所述在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中之前还包括:在所述视频帧的序列码流信息中写入用于标识该码流信息中是否包括冗余信息的标志位信息。

7.一种视频解码方法,其特征在于包括:

获取编码信息中视频帧关键区域的冗余信息;

根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息;

根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理;

其中,所述根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息包括:对序列码流中视频帧的条带的编码信息进行解码处理,得到其余的属于关键区域的条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息;

根据所述首个宏块的冗余运动矢量信息,对所述条带中属于所述关键区域的其余各宏块进行冗余运动矢量的预测,得到所述其余各宏块的预测冗余运动矢量信息;

根据所述其余各宏块的预测冗余运动矢量信息和所述冗余运动矢量残差信息,得到所述其余各宏块的冗余运动矢量信息。

8.根据权利要求7所述的视频解码方法,其特征在于所述根据所述其余各宏块的预测冗余运动矢量信息和所述冗余运动矢量残差信息,得到所述其余各宏块的冗余运动矢量信息包括:将所述其余各宏块的预测冗余运动矢量信息和所述冗余运动矢量残差信息作相加处理,得到所述其余各宏块的冗余运动矢量信息。

9.根据权利要求7所述的视频解码方法,其特征在于所述获取编码信息中视频帧关键区域的冗余信息之前还包括:根据所述条带的编码信息中的标志位信息,判断所述条带的编码信息中是否包括有其余条带的冗余运动矢量信息。

10.根据权利要求9所述的视频解码方法,其特征在于所述根据所述条带的编码信息中的标志位信息,判断所述条带的编码信息中是否包括有其余条带的冗余运动矢量信息之前还包括:根据所述序列码流信息中的标志位信息,判断所述序列码流中是否包括有冗余运动矢量信息。

11.根据权利要求7所述的视频解码方法,其特征在于所述根据所述其余各宏块的预测冗余运动矢量信息和所述冗余运动矢量残差信息,得到所述其余各宏块的冗余运动矢量信息之后,还包括将所述首个宏块和其余各宏块的冗余运动矢量信息存储到对应的缓存中。

12.根据权利要求7所述的视频解码方法,其特征在于,所述根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理包括:在所述关键区域发生错误时,根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行错误隐藏。

13.根据权利要求12所述的视频解码方法,其特征在于所述根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行错误隐藏包括:将所述关键区域的丢失的宏块的运动矢量替换为相应的所述关键区域的宏块的冗余运动矢量,根据替换后的丢失宏块的运动矢量对丢失宏块进行运动补偿,得到丢失宏块的原始数据。

14.根据权利要求7所述的视频解码方法,其特征在于,所述根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理包括:将所述关键区域的各宏块的运动矢量替换为相应的所述关键区域的宏块的冗余运动矢量。

15.一种视频编码装置,其特征在于包括:

第一单元,用于确定视频帧的关键区域;

第二单元,用于在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中;

其中,所述第二单元包括:

第六单元,用于获取所述关键区域内条带的属于所述关键区域的首个宏块的冗余运动矢量信息;

第七单元,用于根据所述条带的首个宏块的冗余运动矢量信息,获取所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息;

第八单元,用于将所述条带的首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息的起始部分。

16.一种视频解码装置,其特征在于包括:

第三单元,用于获取编码信息中视频帧关键区域的冗余信息;

第四单元,用于根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息;

第五单元,根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理;

其中,所述第四单元包括:

第九单元,用于对序列码流中视频帧的条带的编码信息进行解码处理,得到其余的属于关键区域的条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息;

第十单元,用于根据所述首个宏块的冗余运动矢量信息,对所述条带中属于所述关键区域的其余各宏块进行冗余运动矢量的预测,得到所述其余各宏块的预测冗余运动矢量信息;

第十一单元,用于根据所述其余各宏块的预测冗余运动矢量信息和所述冗余运动矢量残差信息,得到所述其余各宏块的冗余运动矢量信息。

17.一种视频编解码系统,其特征在于,包括如权利要求15所述的视频编码装置和如权利要求16所述的视频解码装置。

说明书 :

视频编码、解码方法及装置和视频编解码系统

技术领域

[0001] 本发明属于视频技术领域,尤其涉及一种视频编码、解码方法及装置和视频编解码系统

背景技术

[0002] 视频数据在有线或无线网络中较易出现误码或丢包等现象,而经过编码工具高效压缩后的视频数据具有较大的相关性,一旦出现误码或丢包情况,不仅影响当前数据的恢复,还将造成误码扩散,视频数据的预测编码也将使得某一帧的差错对后续帧产生差错累积。现有技术主要从编码端与传输层的差错控制及解码端的错误隐藏两方面进行视频传输差错处理。
[0003] 其中,编码端与传输层的差错控制方面,是使用编码端的基于前向纠错(FEC技术)和自动重传(ARQ技术)等技术进行差错控制。信道编码器利用前向纠错技术将冗余信息加入到压缩码流中进行传输误码的纠正。自动重传技术是根据检测对丢失的或过度延迟的包请求重传。而解码端的错误隐藏方面是当丢失一个或若干个图像像素时,解码器利用时域和空域相邻像素点之间的内在相关性,根据相邻的已正确接收的像素点进行估计。错误隐藏主要采用帧内预测的空间错误隐藏和帧间预测的时间错误隐藏两种方式,两者都是通过已正确解码的相邻宏块信息近似得到当前丢失宏块的信息。
[0004] 发明人在实现本发明的过程中,发现上述现有技术存在以下缺陷,现有视频传输差错处理技术包括数据分割技术、交叉灵活宏块排序技术和冗余分片允许编码技术,其中数据分割技术可以根据语法单元的重要程度对视频信息提供保护。该技术的缺陷在于将数据分割成若干部分后,要求对包括有宏块类型、量化参数、运动矢量等重要信息的第一个数据分割进行特别保护,才可降低该部分的丢包率;一旦该部分丢失,则无法有效恢复原数据。交叉灵活宏块排序技术,由于图像在块边界具有光滑性,丢失块可以使用相邻块的像素信息或运动矢量信息进行错误隐藏。其缺陷在于,帧内或帧间错误隐藏都是通过已正确解码的相邻宏块信息近似得到当前丢失宏块的信息。该技术对丢包所含宏块而言仅是一种像素近似或运动矢量近似,从而使得采用帧内插值方法将丢失宏块的细节而产生模糊现象,采用帧间错误隐藏方法则在当前丢失宏块与相邻宏块运动不一致时会产生很明显的块效应。冗余分片允许编码技术,应用该技术对同一个宏块采用不同编码参数进行多次编码,产生一个主片和多个冗余片;主片和冗余片在网络提取层被封装到不同的包内进行传输;解码器在重构时首先使用主片,若可用则抛弃冗余片;若主片包丢失,则可应用冗余片进行重构。该技术缺陷在于,由于各宏块都要进行多次编码并将编码的码流均进行传输,将影响编码器的编码效率并产生较大的编码时延。

发明内容

[0005] 本发明实施例提供一种视频编码、解码方法及装置和视频编解码系统,用以解决现有技术中无针对视频帧中的关键区域的抗丢包保护的缺陷,实现视频帧关键区域的抗丢包保护。
[0006] 本发明实施例提供一种视频编码方法,包括:
[0007] 确定视频帧的关键区域;
[0008] 在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中。
[0009] 本发明实施例提供一种视频解码方法,包括:
[0010] 获取编码信息中视频帧关键区域的冗余信息;
[0011] 根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息;
[0012] 在所述关键区域发生错误时,根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行错误隐藏。
[0013] 本发明实施例还提供一种视频编码装置,包括:
[0014] 第一单元,用于确定视频帧的关键区域;
[0015] 第二单元,用于在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中。
[0016] 本发明实施例提供一种视频解码装置,包括:
[0017] 第三单元,用于获取编码信息中视频帧关键区域的冗余信息;
[0018] 第四单元,用于根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息。
[0019] 第五单元,根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理。
[0020] 本发明实施例提供一种视频编解码系统,包括编码装置和解码装置,所述编码装置包括:
[0021] 第一单元,用于确定视频帧的关键区域;
[0022] 第二单元,用于在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中;
[0023] 所述解码装置包括:
[0024] 第三单元,用于获取编码信息中视频帧关键区域的冗余信息;
[0025] 第四单元,用于根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息。
[0026] 第五单元,根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理。
[0027] 本发明实施例提供的视频编码、解码方法及装置和视频编解码系统,通过将包括视频帧关键区域的条带的首个宏块的冗余运动矢量和其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息中;在解码时将解析出来的宏块的冗余运动矢量信息存入缓存中,当出现传输丢包情况时,应用缓存中的冗余运动矢量信息进行错误隐藏,提高图像的显示质量。

附图说明

[0028] 图1为本发明视频编码方法流程图;
[0029] 图2为本发明视频编码方法实施例一中为关键区域增加冗余信息的流程图;
[0030] 图3为本发明视频编码方法实施例二中为关键区域增加冗余信息的流程图;
[0031] 图4为本发明视频解码方法流程图;
[0032] 图5为本发明视频解码方法实施例获取关键区域的宏块的冗余运动矢量信息的流程图;
[0033] 图6为本发明视频帧中条带及关键区域实施例示意图;
[0034] 图7为本发明视频编码装置实施例结构示意图;
[0035] 图8为本发明视频解码装置实施例结构示意图;
[0036] 图9为本发明视频编解码系统结构示意图。

具体实施方式

[0037] 下面结合附图和具体实施例进一步说明本发明实施例的技术方案。
[0038] 视频编码方法实施例
[0039] 图1为本发明视频编码方法流程图,如图1所示该方法包括如下步骤:
[0040] 步骤A1、确定视频帧的关键区域;
[0041] 步骤A2、在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中。
[0042] 本方法实施例中,视频帧被划分成关键区域和非关键区域,其中关键区域为呈现该视频帧图像的重要区域,关键区域中的宏块对图像的清晰程度起重要作用;在确定好视频帧的关键区域后,在对视频帧进行编码时为关键区域增加冗余信息,并将冗余信息写入到编码信息中去。所述冗余信息具体是指关键区域条带内首个宏块的冗余运动矢量信息和条带内其余各宏块的冗余运动矢量残差信息,其中一条带的冗余信息是被写入其余条带的编码信息中去的。
[0043] 图2为本发明视频编码方法实施例一中为关键区域增加冗余信息的流程图,如图2所示,步骤A2包括如下步骤:
[0044] 步骤100,获取所述关键区域内条带的属于所述关键区域的首个宏块的冗余运动矢量信息;
[0045] 将关键区域再划分为多个条带,且每个条带内包括多个宏块。为了避免因传输过程中丢包可造成接收端无法清晰地显示该图像信息,应对视频帧关键区域的数据包进行防传输差错控制处理,在编码端首先应对视频帧的关键区域内的各宏块进行防传输差错编码处理。在对视频帧关键区域的条带进行编码处理时,应首先获取该条带中的且属于关键区域的首个宏块的冗余运动矢量信息。
[0046] 步骤101,根据所述条带的首个宏块的冗余运动矢量信息,获取所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息;
[0047] 在获取到条带内的且属于关键区域的首个宏块的冗余运动矢量信息后,根据所获得的首个宏块的冗余运动矢量信息获取该条带内的且属于关键区域的其余各宏块的冗余运动矢量残差信息,所述冗余运动矢量残差信息即为宏块的冗余运动矢量信息与该宏块的预测冗余运动矢量信息的差值信息,包括水平和垂直两方向的分量。具体地,根据首个宏块的冗余运动矢量信息,可以得到第二宏块的预测冗余运动矢量信息,再根据第二宏块的预测冗余运动矢量信息和第二宏块的冗余运动矢量信息,得到第二宏块的冗余运动矢量残差信息;根据第二宏块的冗余运动矢量信息得到第三宏块的预测冗余运动矢量信息,在根据第三宏块的预测冗余运动矢量信息和第三宏块的冗余运动矢量信息得到第三宏块的冗余运动矢量残差信息;条带中其余各宏块的运动冗余矢量残差信息可按照上述方式获取,具体地,获取当前宏块的上一宏块的冗余运动矢量信息;根据所述上一宏块的冗余运动矢量信息,对当前宏块进行运动矢量运测,得到当前宏块的预测冗余运动矢量信息;以与所述视频帧最近的前向参考帧为参考帧,对当前宏块进行运动估计,得到当前宏块的冗余运动矢量信息;将当前宏块的运动矢量信息与当前宏块的预测冗余运动矢量信息进行作差处理,得到当前宏块的冗余运动矢量残差信息,依此类推,最终得到该条带的所有属于关键区域的除该条带的首个宏块以外的其余宏块的冗余运动矢量残差信息。得到该条带的首个宏块的冗余运动矢量信息和该条带其余属于关键区域的宏块的冗余运动矢量残差信息的冗余运动矢量信息的集合信息。
[0048] 步骤102,将所述条带的首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息的起始部分。
[0049] 在得到关键区域内一个条带的冗余运动矢量信息的集合信息后,将该集合信息写入到除该条带以外的其余条带编码信息中,即可以将该条带的冗余运动矢量信息的集合信息写入该视频帧关键区域或非关键区域的其余条带的编码信息中,也可以为该视频帧建立一个独立的条带,并将集合信息写入到该条带的编码信息中,此时在该条带的编码信息中写入一个或多个标志位信息,用于标识该条带编码信息中包括的冗余运动矢量信息具体是属于其余哪个条带的冗余运动矢量信息。还可以为该视频帧建立一个独立的条带,并将集合信息写入到该条带的编码信息中,此时在该条带的编码信息中写入一或多个标志位信息,用于标识该条带编码信息中包括的冗余运动矢量信息具体是属于所述视频帧中的哪个关键区域中的宏块的冗余运动矢量信息。
[0050] 基于以上过程可完成视频帧关键区域的一条带的编码过程,并最终得到条带的编码信息。将视频帧所有条带的编码信息组合在一起形成该视频帧的序列码流,在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中之前,即在进行首个宏块的处理之前,要在序列码流信息的起始部分写入一标志位,用于标识该序列码流信息是否含有视频帧关键区域的冗余信息。
[0051] 进一步地,视频编码方法实施例一中的步骤100获取所述关键区域内条带的属于所述关键区域的首个宏块的冗余运动矢量信息,具体包括如下步骤:首先获取视频帧关键区域内的条带的属于所述关键区域的首个宏块的位置信息;获取首个宏块的位置信息后,可进一步得到该首个宏块的存储地址信息,并根据存储地址信息得到首个宏块数据信息;再获取到首个宏块的位置信息后,再以与所述首个宏块所在视频帧的最近的前向参考帧为参考帧,对所述首个宏块进行运动估计,得到所述首个宏块的冗余运动矢量信息,其中所述首个宏块所在视频帧的最近的前向参考帧是指,在码流中位于所述首个宏块所在视频帧的前面,而且能够作为参考的视频帧。具体地,将该首个宏块所在视频帧的前一个参考帧作为该视频帧的参考帧,对该首个宏块进行运动估计,得到首个宏块的冗余运动矢量信息,并保存该冗余运动矢量信息。
[0052] 视频帧的关键区域可以在帧头按照以下方式定义:
[0053] egion_num;
[0054] for(i=0;i<region_num;i++){
[0055] region_pos_x;
[0056] region_pos_y;
[0057] region_size_x;
[0058] region_size_y;
[0059] }
[0060] 其中“region_num”表示图像中关键区域的个数,“region_pos_x”与“region_pos_y”分别表示关键区域的起始坐标,“region_size_x”与“region_size_y”表示关键区域的大小。对当前关键区域,先根据起始坐标,获得该关键区域的首个宏块位置,在编码端对该关键区域进行某种块划分形式的运动估计及运动矢量预测,得到冗余估计运动矢量及其与冗余预测运动矢量的差值,将该关键区域条带的冗余运动矢量和差值写入其余条带的起始部分。
[0061] 本实施例提供的方法是在确定视频帧的关键区域后,在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中。有关视频帧的关键区域的确定有两种方式,一种是应用条带确定关键区域,该方式中关键区域内的条带所包括的所有宏块均应处于关键区域内;确定关键区域的另一种方式是上述的应用坐标划分关键区域,该确定方式中可能存在属于关键区域的条带内的部分宏块处于关键区域内,而另一部分处于关键区域外;但是无论采用何种方式确定关键区域,本实施提供的方法都是对位于关键区域内的宏块进行处理,对于不位于关键区域的宏块应用现有技术进行处理。
[0062] 图3为本发明视频编码方法实施例二中为关键区域增加冗余信息的流程图,基于视频编码方法实施例一,如图3所示,步骤A2包括如下步骤:
[0063] 步骤200,获取所述关键区域内条带的属于所述关键区域的首个宏块的冗余运动矢量信息;
[0064] 步骤201,根据所述首个宏块的冗余运动矢量信息,对所述视频帧关键区域内条带的首个宏块的属于所述关键区域的下一个宏块进行运动矢量的预测,得到所述下一个宏块的预测冗余运动矢量信息;
[0065] 在得到所述首个宏块的冗余运动矢量信息后,对该首个宏块的下一宏块进行运动矢量预测,所述下一宏块也属于视频帧关键区域,进行运动矢量预测后可得到所述下一宏块的预测冗余运动矢量信息。
[0066] 步骤202,以与所述视频帧最近的前向参考帧为参考帧,对所述下一个宏块进行运动估计,得到所述下一个宏块的冗余运动矢量信息;
[0067] 在得到所述下一宏块的预测冗余运动矢量信息后,以与该视频帧最近的前向参考帧为参考帧,再对所述下一宏块进行运动估计,得到所述下一宏块的冗余运动矢量信息,对宏块进行运动预测和运动估计时宏块大小相同。
[0068] 步骤203,将所述下一个宏块的运动矢量信息与所述下一个宏块的预测冗余运动矢量信息进行作差处理,得到所述下一宏块的冗余运动矢量残差信息。
[0069] 将得到的下一宏块的冗余运动矢量和预测冗余运动矢量作差,得到差值信息,并保存该差值在水平和差值两方向上的分量。
[0070] 步骤204,将所述条带的首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息的起始部分。
[0071] 上述实施例中,根据所述条带的首个宏块的冗余运动矢量信息,获取所述条带内属于所述关键区域的其余各宏块的冗余运动矢量残差信息可归纳为:获取当前宏块的上一宏块的冗余运动矢量信息;根据所述上一宏块的冗余运动矢量信息,对当前宏块进行运动矢量运测,得到当前宏块的预测冗余运动矢量信息;以与所述视频帧最近的前向参考帧为参考帧,对当前宏块进行运动估计,得到当前宏块的冗余运动矢量信息;将当前宏块的运动矢量信息与当前宏块的预测冗余运动矢量信息进行作差处理,得到当前宏块的冗余运动矢量残差信息。
[0072] 上述视频编码方法的实施例一与实施例二中,在得到条带的各宏块的冗余运动矢量信息的集合信息后,将其写入其余的条带的编码信息的起始部分具体为:在所述视频帧关键区域内的其余的条带的编码信息的起始码之后,写入用于标识该条带是否包括其余条带的冗余运动矢量信息的标志位信息;在对视频帧的条带进行编码时,将其编码信息的起始部分空出若干空间,并在编码信息的标识码的后面,写入一标志位,应用该标志位存储的信息标识该条带的编码信息中是否包括有其余条带的冗余运动矢量信息。也可以单独创建一条带,用于存储冗余运动矢量信息,标志位的设置与其余条带的设置相同。写入标志位信息后,在所述视频帧关键区域内的其余的条带的编码信息中的所述标志位之后,依次写入所述条带的首个宏块的运动矢量信息和其余宏块的冗余运动矢量残差信息,即在条带的编码信息起始部分空出若干空间内除写入标志位信息,还将写入其余条带的首个宏块的运动矢量信息和该条带除首个宏块的其余宏块的冗余运动矢量残差信息。
[0073] 上述视频编码方法实施例中,若判断所述视频帧关键区域内的最后一个条带是所述视频帧的最后一个条带,则将所述视频帧关键区域内的最后一个条带内属于关键区域的首个宏块的冗余运动矢量和其余各宏块的冗余运动矢量残差信息写入所述视频帧的下一视频帧的条带的编码信息中。具体为,在对视频帧进行编码的过程中,当编码到该视频帧的关键区域的最后一个条带同时也是该视频帧的最后一个条带时,则将该条带内属于关键区域的各宏块的冗余运动矢量信息的集合信息写入到该视频帧对应的下一视频帧中的一个条带的编码信息中去,所述下一视频帧的条带可以是该视频帧的首个条带也可以是其余条带。
[0074] 本实施例提供的视频编码方法,通过对视频帧关键区域的特殊编码,实现视频序列的监控,关键区域的抗丢包保护;对视频帧关键区域的宏块应用本实施例方法进行编码,而对其余非关键区域的宏块应用现有一般技术人员常用的编码技术进行编码,最终得到视频帧的序列码流。在传输过程中,若因某种原因发生丢包现象,则可应用包括所丢包的冗余运动矢量信息在解码时进行隐藏,提高图像质量。
[0075] 视频解码方法实施例
[0076] 图4为本发明视频解码方法流程图,如图4所示该方法包括如下步骤:
[0077] 步骤B1、获取编码信息中视频帧关键区域的冗余信息;
[0078] 步骤B2、根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息;
[0079] 步骤B3、根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理。
[0080] 本实施提供的视频解码方法中,在获取编码信息后,首先从视频帧的编码信息中取出关键区域的冗余信息,即关键区域的各条带的首个宏块的冗余运动矢量和条带内位于关键区域内的其余各宏块冗余运动矢量残差信息,并应用上述冗余运动矢量和残差信息对关键区域进行抗差错处理。所述抗差错处理可以为,在所述关键区域发生错误时,根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行错误隐藏。其中进行错误隐藏的步骤包括将所述关键区域的丢失的宏块的运动矢量替换为相应的所述关键区域的宏块的冗余运动矢量。这样根据替换后的丢失宏块的运动矢量对丢失宏块进行运动补偿,得到丢失宏快的原始数据,从而实现对于发生丢包或传输错误的关键区域实现错误隐藏,得到正确的视频信息。实际运用中,也可以在解码的时候,不管关键区域是否发生丢包或者传输错误,均对关键区域进行抗差错的错误隐藏处理,即将所述关键区域的各宏块的运动矢量替换为相应的所述关键区域的宏块的冗余运动矢量。这样也可以达到本发明的目的。
[0081] 图5为本发明视频解码方法实施例获取关键区域的宏块的冗余运动矢量信息的流程图,如图5所示,步骤B2包括如下步骤:
[0082] 步骤300,对序列码流中视频帧的条带的编码信息进行解码处理,得到其余的属于关键区域的条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息;
[0083] 在接收到视频帧的序列码流后,对其中一关键区域的条带进行解码,可以得到一个条带的冗余运动矢量信息的集合信息,即该集合信息包括有条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息;而且从关键区域的条带中解析出来的上述集合信息并不是本条带的冗余运动矢量信息,而是其余的属于关键区域的条带的冗余运动矢量信息。
[0084] 因在编码时可以将条带的冗余运动矢量信息写入其下一条带的编码信息中,也可以将冗余运动矢量信息写入其余一独立条带的编码信息中,因此在解码处理时,若编码时是将条带的冗余运动矢量信息写入其下一条带的编码信息中,则对该条带进行解码处理得到的冗余运动矢量信息便是其上一条带的冗余运动矢量信息;若编码时是将条带的冗余运动矢量信息写入到其余一独立条带的编码信息中,并在编码信息中再写入一标志位,用于标识所存储的是哪个条带或哪个关键区域的冗余运动矢量信息,则对该条带进行解码处理得到的冗余运动矢量信息便是该标志位所标识的条带或关键区域的冗余运动矢量信息。
[0085] 步骤301,根据所述首个宏块的冗余运动矢量信息,对所述条带中属于所述关键区域的其余各宏块进行冗余运动矢量的预测,得到所述其余各宏块的预测冗余运动矢量信息;
[0086] 在解析出来首个宏块的冗余运动矢量信息后,再根据该冗余运动矢量信息对所述首个宏块的同样属于所述关键区域的下一个宏块进行运动矢量的预测,预测出该下一宏块的预测冗余运动矢量信息,依此类推,可得到除首个宏块以外的所有其余各宏块的预测冗余运动矢量信息。
[0087] 步骤302,根据所述其余各宏块的预测冗余运动矢量信息和所述冗余运动矢量残差信息,得到所述其余各宏块的冗余运动矢量信息。
[0088] 在得到宏块的预测冗余运动矢量信息和冗余运动矢量残差信息后,可应用冗余运动矢量残差信息对预测冗余运动矢量信息进行修正,并最终得到宏块的冗余运动矢量信息。修正的具体方法为将所述其余宏块的预测冗余运动矢量信息和冗余运动矢量残差信息相加得到所述其余的宏块的冗余运动矢量信息。
[0089] 基于上述流程可以得到一条带的冗余运动矢量信息,再重复上述流程得到所述视频帧的关键区域所有条带的冗余运动矢量信息,对于非关键区域的条带可采用本领域技术人员常用的解码方法进行处理,最终完成所述视频帧的解码。在解码过程中,得到各个宏块的冗余运动矢量信息后要将其存储到对应的缓存中以备用。完成对视频帧的解码处理后,判断是否出现丢包现象,若有数据包在传输过程中丢失,则可应用缓存中存储的对应的关键区域的条带的冗余运动矢量信息进行错误隐藏,降低因丢包对图像的清晰度的影响。
[0090] 因为在对条带进行编码时,在条带的编码信息的起始部分中要写入一标志位信息,用以标识该条带的编码信息中是否包括其余条带的冗余运动矢量信息。因此在对条带的编码信息进行解码之前,还包括对编码信息的标志位信息进行判断的过程,即根据所述条带的编码信息中的标志位信息,判断所述条带的编码信息中是否包括有其余条带的冗余运动矢量信息。若通过该标志位信息判断得知该条带包括有其余条带的冗余运动矢量信息,则对所述冗余运动矢量信息进行解码。若过该标志位信息判断得知该条带不包括其余条带的冗余运动矢量信息,则对该条带的编码信息按照本领域技术人员常用的解码方法进行处理。
[0091] 视频帧各条带的编码信息组成视频帧的序列码流时,会在序列码流信息的起始部分写入一标志位信息,用以标识该序列码流信息中是否包括冗余运动矢量信息,即在对条带编码信息标志位信息进行判断之前,还要根据所述序列码流信息中的标志位信息,判断所述序列码流中是否包括有冗余运动矢量信息。在接收到序列码流时,要首先对码流信息中标志位信息进行判断,若通过判断得知该码流信息中包括冗余运动矢量信息,则采用上述流程对条带的编码信息进行处理;若通过判断得知该码流信息中无冗余运动矢量信息,则按照本领域技术人员常用的解码方法进行处理。
[0092] 图6为本发明视频帧中条带及关键区域实施例示意图,如图4所示,视频帧的关键区域由B0、B1和B2条带组成,该视频帧的编码及解码的处理过程如下:在序列头或帧头写入1bit标志位“redundant_mv_enable”,标志是否使用本编码方法进行处理;从关键区域的初始条带B0的首个宏块16×16运动估计开始,存储该条带首个宏块的16×16冗余运动矢量信息和其余宏块的冗余运动矢量残差信息,直到该条带编码完毕,每个16×16冗余运动矢量所对应的参考帧均为距离当前编码帧最近的参考帧。在进行下一个条带B1的编码之前,在条带B1的起始码“slice_start_code”之后写入1bit标志位“redundant_mv_exist”,标志该条带是否含有上一条带的冗余运动矢量;将初始条带B0的每个宏块的16×16的冗余运动矢量或其冗余运动矢量残差信息依次写入“redundant_mv_exist”之后,写完条带B0的冗余运动矢量信息后,再开始条带B1的编码。对条带B1的编码过程与对条带B0的编码过程相同,此处不再赘述。关键区域的最后一个条带的冗余运动矢量信息写入下一个条带中,如果此条带是该视频帧的最后一个条带,则将其冗余运动矢量信息写入下一视频帧的首个条带的“Slice_start_code”后面。至此完成编码处理过程。在解码时,若序列码流的标志位“redundant_mv_enable”为0,则正常解码,否则执行以下步骤,在开始对一个条带进行解码时,如果该条带的编码信息中的标志位“redundant_mv_exist”为
0,则正常解码;否则依次解码条带中每个宏块的冗余运动矢量信息,并存储到相应的缓存中;正常解码该条带的其余不属于关键区域的宏块数据,得到该条带的解码信息;重复执行上述过程,直到完成视频帧的解码。判断关键区域数据是否丢包,无丢包则不对冗余运动矢量信息进行处理,否则解码器可以选择是否需要使用已解码的冗余运动矢量按照16×16帧间运动补偿进行错误隐藏。以上实施例中宏块的大小并不局限于16×16,也可以是其余例如8×8、8×16或16×8的宏块;而且所述宏块既可以是帧内编码(I帧)也可以是帧间编码(B或P帧)的关键区域的宏块。
[0093] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0094] 视频编码装置实施例
[0095] 图7为本发明视频编码装置实施例结构示意图,如图7所示,该装置包括第一单元11和第二单元12,其中第一单元11用于确定视频帧的关键区域;第二单元12用于在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中。视频帧被划分成关键区域和非关键区域,第一单元11在确定好视频帧的关键区域后,由第二单元12生成该关键区域的冗余信息,所述冗余信息包括所述冗余信息具体是指关键区域条带内首个宏块的冗余运动矢量信息和条带内其余各宏块的冗余运动矢量残差信息,并将生成的冗余信息写入到视频帧的编码信息中去。其中写入原则是将关键区域内一条带的冗余信息写入到其余条带的编码信息中。
[0096] 具体地,第二单元12包括第六单元121、第七单元122和第八单元123,其中第六单元121用于获取视频帧关键区域内条带的属于所述关键区域的首个宏块的冗余运动矢量信息;第七单元122用于根据所述条带的首个宏块的冗余运动矢量信息,获取所述条带内属于所述关键区域的其余宏块的冗余运动矢量残差信息;第八单元123用于将所述条带的首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余宏块的冗余运动矢量残差信息,写入其余的条带的编码信息的起始部分。
[0097] 具体地,第六单元121得到视频帧关键区域内的条带的属于所述关键区域的首个宏块的位置信息,以与首个宏块所在视频帧最近的前向参考帧为参考帧,对首个宏块进行运动估计,得到首个宏块的冗余运动矢量信息。第七单元122接收第六单元121得到的首个宏块的冗余运动矢量信息,并根据首个宏块的冗余运动矢量信息,对视频帧关键区域内条带的首个宏块的属于关键区域的下一个宏块进行运动矢量的预测,得到下一个宏块的预测冗余运动矢量信息;以与所述视频帧最近的前向参考帧为参考帧,对下一个宏块进行运动估计,得到下一个宏块的冗余运动矢量信息;将下一个宏块的运动矢量信息与下一个宏块的预测冗余运动矢量信息进行作差处理,得到下一宏块的冗余运动矢量残差信息,依此类推,最终得到条带首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息。第八单元123首先在其余的条带的编码信息的起始部分写入用于标识该条带是否包括冗余运动矢量信息的标志位信息,然后在所述标志位信息之后依次写入得到的条带首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息。
[0098] 本实施例提供的装置将包括视频帧关键区域的条带的编码信息存入序列码流,并在码流信息的起始部分写入一标志位信息,用于标志该码流信息中是否包括冗余运动矢量信息。该装置通过将条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息中标志位信息之后,实现关键区域的抗丢包保护,在传输过程中,若因某种原因发生丢包现象,则可应用包括所丢包的冗余运动矢量信息在解码时进行隐藏,提高图像质量。
[0099] 视频解码装置实施例
[0100] 图8为本发明视频解码装置实施例结构示意图,如图8所示,该装置包括第三单元21、第四单元22和第五单元23,其中第三单元21用于获取编码信息中视频帧关键区域的冗余信息;第四单元22用于根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息。该装置在获取到一视频信息的编码信息后,第三单元21首先从该视频的编码信息中取出存储的关键区域的冗余信息,并由第四单元22逐个解析出关键区域条带内的宏块的冗余运动矢量信息;在第四单元22获取到关键区域条带内的宏块的冗余运动矢量信息后,第五单元23根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理,具体为在所述关键区域发生错误时,根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行错误隐藏;在实际运用中,也可以在解码的时候,不管关键区域是否发生丢包或者传输错误,均对关键区域进行抗差错的错误隐藏处理,即将所述关键区域的各宏块的运动矢量替换为相应的所述关键区域的宏块的冗余运动矢量。
[0101] 具体地,第四单元22包括第九单元221、第十单元222和第十一单元223,其中第九单元221用于对序列码流中视频帧的条带的编码信息进行解码处理,得到其余属于关键区域的条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息;第十单元222用于根据所述首个宏块的冗余运动矢量信息对所述条带中的属于所述关键区域的其余各宏块进行冗余运动矢量的预测,得到所述其余各宏块的预测冗余运动矢量信息;第十一单元223用于根据所述其余各宏块的预测冗余运动矢量信息和所述冗余运动矢量残差信息,得到所述其余各宏块的冗余运动矢量信息。
[0102] 具体地,第九单元221在接收到视频帧的序列码流后,对其中一关键区域的条带进行解码,可以得到一个条带的冗余运动矢量信息的集合信息,即该集合信息包括有条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息;而且从关键区域的条带中解析出来的上述集合信息并不是本条带的冗余运动矢量信息,而是其余的属于关键区域的条带的冗余运动矢量信息。在第九单元221解析得到条带的首个宏块的冗余运动矢量信息后,第十单元222再根据该冗余运动矢量信息对所述首个宏块的同样属于所述关键区域的下一个宏块进行运动矢量的预测,预测出该下一宏块的预测冗余运动矢量信息,依此类推,可得到除首个宏块以外的所有其余各宏块的预测冗余运动矢量信息。在第九单元221与第十单元222得到宏块的预测冗余运动矢量信息和冗余运动矢量残差信息后,第十一单元223可应用冗余运动矢量残差信息对预测冗余运动矢量信息进行相加处理,并最终得到宏块的冗余运动矢量信息。在得到条带各宏块的冗余运动矢量信息后,要将其存储到装置的对应的缓存中。
[0103] 本实施例提供的装置在对条带进行解码之前要先对条带的编码信息起始部分的标志位信息进行判断的过程,即根据所述条带的编码信息中的标志位信息,判断所述条带的编码信息中是否包括有其余条带的冗余运动矢量信息。进一步地,在对条带编码信息标志位信息进行判断之前,还要根据所述序列码流信息中的标志位信息,判断所述序列码流中是否包括有冗余运动矢量信息。
[0104] 本实施例提供的装置通过对条带编码信息中包括的其余条带的冗余运动矢量信息的解析,并将其存入缓存中;当出现传输丢包情况时,应用缓存中的冗余运动矢量信息进行错误隐藏,提高图像的显示质量。
[0105] 视频编解码系统实施例
[0106] 图9为本发明视频编解码系统结构示意图,如图9所示,该系统包括编码装置1和解码装置2,其中,编码装置1包括第一单元11和第二单元12,其中第一单元11用于确定视频帧的关键区域;第二单元12用于在编码时为所述关键区域增加冗余信息,并将所述冗余信息写入编码信息中。视频帧被划分成关键区域和非关键区域,第一单元11在确定好视频帧的关键区域后,由第二单元12生成该关键区域的冗余信息,所述冗余信息包括所述冗余信息具体是指关键区域条带内首个宏块的冗余运动矢量信息和条带内其余各宏块的冗余运动矢量残差信息,并将生成的冗余信息写入到视频帧的编码信息中去。其中写入原则是将关键区域内一条带的冗余信息写入到其余条带的编码信息中。
[0107] 具体地,第二单元12包括第六单元121、第七单元122和第八单元123,其中第六单元121用于获取视频帧关键区域内条带的属于所述关键区域的首个宏块的冗余运动矢量信息;第七单元122用于根据所述条带的首个宏块的冗余运动矢量信息,获取所述条带内属于所述关键区域的其余宏块的冗余运动矢量残差信息;第八单元123用于将所述条带的首个宏块的冗余运动矢量信息和所述条带内属于所述关键区域的其余宏块的冗余运动矢量残差信息,写入其余的条带的编码信息的起始部分。
[0108] 具体地,第六单元121得到视频帧关键区域内的条带的属于所述关键区域的首个宏块的位置信息,以与首个宏块所在视频帧最近的前向参考帧为参考帧,对首个宏块进行运动估计,得到首个宏块的冗余运动矢量信息。第七单元122接收第六单元121得到的首个宏块的冗余运动矢量信息,并根据首个宏块的冗余运动矢量信息,对视频帧关键区域内条带的首个宏块的属于关键区域的下一个宏块进行运动矢量的预测,得到下一个宏块的预测冗余运动矢量信息;以与所述视频帧最近的前向参考帧为参考帧,对下一个宏块进行运动估计,得到下一个宏块的冗余运动矢量信息;将下一个宏块的运动矢量信息与下一个宏块的预测冗余运动矢量信息进行作差处理,得到下一宏块的冗余运动矢量残差信息,依此类推,最终得到条带首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息。第八单元123首先在其余的条带的编码信息的起始部分写入用于标识该条带是否包括冗余运动矢量信息的标志位信息,然后在所述标志位信息之后依次写入得到的条带首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息。编码装置将包括视频帧关键区域的条带的编码信息存入序列码流,并在码流信息的起始部分写入一标志位信息,用于标志该码流信息中是否包括冗余运动矢量信息。
[0109] 解码装置2包括第三单元21、第四单元22和第五单元23,其中第三单元21用于获取编码信息中视频帧关键区域的冗余信息;第四单元22用于根据所述冗余信息获取所述关键区域的宏块的冗余运动矢量信息。该装置在获取到一视频信息的编码信息后,第三单元21首先从该视频的编码信息中取出存储的关键区域的冗余信息,并由第四单元22逐个解析出关键区域条带内的宏块的冗余运动矢量信息;在第四单元22获取到关键区域条带内的宏块的冗余运动矢量信息后,第五单元23根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行抗差错处理,具体为在所述关键区域发生错误时,根据所述关键区域的宏块的冗余运动矢量信息对所述关键区域进行错误隐藏;在实际运用中,也可以在解码的时候,不管关键区域是否发生丢包或者传输错误,均对关键区域进行抗差错的错误隐藏处理,即将所述关键区域的各宏块的运动矢量替换为相应的所述关键区域的宏块的冗余运动矢量。
[0110] 具体地,第四单元22包括第九单元221、第十单元222和第十一单元223,其中第九单元221用于对序列码流中视频帧的条带的编码信息进行解码处理,得到其余属于关键区域的条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息;第十单元222用于根据所述首个宏块的冗余运动矢量信息对所述条带中的属于所述关键区域的其余各宏块进行冗余运动矢量的预测,得到所述其余各宏块的预测冗余运动矢量信息;第十一单元223用于根据所述其余各宏块的预测冗余运动矢量信息和所述冗余运动矢量残差信息,得到所述其余各宏块的冗余运动矢量信息。
[0111] 具体地,第九单元221在接收到视频帧的序列码流后,对其中一关键区域的条带进行解码,可以得到一个条带的冗余运动矢量信息的集合信息,即该集合信息包括有条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息;而且从关键区域的条带中解析出来的上述集合信息并不是本条带的冗余运动矢量信息,而是其余的属于关键区域的条带的冗余运动矢量信息。在第九单元221解析得到条带的首个宏块的冗余运动矢量信息后,第十单元222再根据该冗余运动矢量信息对所述首个宏块的同样属于所述关键区域的下一个宏块进行运动矢量的预测,预测出该下一宏块的预测冗余运动矢量信息,依此类推,可得到除首个宏块以外的所有其余各宏块的预测冗余运动矢量信息。在第九单元221与第十单元222得到宏块的预测冗余运动矢量信息和冗余运动矢量残差信息后,第十一单元223可应用冗余运动矢量残差信息对预测冗余运动矢量信息进行相加处理,并最终得到宏块的冗余运动矢量信息。在得到条带各宏块的冗余运动矢量信息后,要将其存储到装置的对应的缓存中。
[0112] 本实施例提供的装置在对条带进行解码之前要先对条带的编码信息起始部分的标志位信息进行判断的过程,即根据所述条带的编码信息中的标志位信息,判断所述条带的编码信息中是否包括有其余条带的冗余运动矢量信息。进一步地,在对条带编码信息标志位信息进行判断之前,还要根据所述序列码流信息中的标志位信息,判断所述序列码流中是否包括有冗余运动矢量信息。
[0113] 本实施例提供的系统通过将条带的首个宏块的冗余运动矢量信息和其余各宏块的冗余运动矢量残差信息,写入其余的条带的编码信息中标志位信息之后,实现关键区域的抗丢包保护;通过对条带编码信息中包括的其余条带的冗余运动矢量信息的解析,并将其存入缓存中;当出现传输丢包情况时,应用缓存中的冗余运动矢量信息进行错误隐藏,提高图像的显示质量。
[0114] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。