一种视频编码方法及装置的制造方法

文档序号:8475419阅读:540来源:国知局
一种视频编码方法及装置的制造方法
【技术领域】
[0001]本申请涉及视频技术领域,尤其涉及到一种视频编码方法及装置。
【背景技术】
[0002]在实时视频发布系统中的视频编解码算法中,I帧(I frame),即独立帧,是非常关键的帧,解码时只需要本帧数据就可以完成。而在实时视频发布系统中其它类型的帧,即B帧和P帧,都是在I帧的基础上来进行的双向或单向预测编码。由于I帧占据了很大的数据量,因此,在网络带宽受限时,就会引起延迟,造成视频画面的停滞、卡等现象,影响视频发布的实时性。
[0003]相对于I巾贞,B帧(宏块)和P帧(宏块)的压缩率都很小,能够节省空间。因此,现有的很多算法(如H.264算法)中,在一组连续图像(GOP, Group of Pictures)的视频中,除了第一帧为I帧以外,其它帧均为P帧和B帧,或者既包括B宏块又包括P宏块。对于一个G0P,除了第一帧为帧内编码,其它帧均采用帧间编码的形式进行编码,换言之,各帧图像数据都是依赖于其它帧进行编码。这会带来一个致命的缺点,如果某些P帧的宏块或者某些P宏块丢失以后,以后所有参照该帧(宏块)的视频图像,都将建立在错误的预测块上,永远不能回复,并会产生误差积累,导致图像严重的错误。
[0004]此外,一段视频通常由多个GOP构成,而每一个GOP都需要一帧I帧图像数据,在受到网络的约束时,也容易影响视频发布的实时性。

【发明内容】

[0005]本申请提供一种视频编码方法及其装置。
[0006]根据本申请的第一方面,本申请提供一种视频编码方法,包括:
[0007]获取表征一段视频图像的若干帧图像数据;
[0008]将每帧图像数据划分为连续且不重叠的若干宏块;
[0009]至少将该段视频图像数据中第一帧确定为I帧图像数据;
[0010]对I帧图像数据中的各宏块的图像数据进行独立编码;
[0011]在每一帧非I帧图像数据中确定出该帧的独立宏块,且每帧非I帧图像数据中的独立宏块的数量小于该帧图像数据划分的宏块总数量,所有非I帧图像数据中的独立宏块的集合至少包括由一帧图像数据划分出的所有宏块;
[0012]对非I帧图像数据中的独立宏块的图像数据进行独立编码,对非I帧图像数据中的其它宏块的图像数据采用非独立编码方式进行编码。
[0013]根据本申请的第二方面,本申请提供一种视频编码装置,包括:
[0014]获取模块,获取模块用于获取表征一段视频图像的若干帧图像数据;
[0015]划分模块,划分模块用于将每帧图像数据划分为连续且不重叠的若干宏块;
[0016]区分模块,区分模块用于区分I帧图像数据和非I帧图像数据,至少将该段视频图像数据中第一帧确定为I帧图像数据;
[0017]确定模块,确定模块用于在每一帧非I帧图像数据中确定出该帧的独立宏块,且每帧非I帧图像数据中的独立宏块的数量小于该帧图像数据划分的宏块总数量,所有非I帧图像数据中的独立宏块的集合至少包括由一帧图像数据划分出的所有宏块;
[0018]第一编码模块,第一编码模块用于对I帧图像数据中的各宏块的图像数据进行独立编码,还用于对非I帧图像数据中的独立宏块的图像数据进行独立编码;
[0019]第二编码模块,第二编码模块用于对非I帧图像数据中的其它宏块的图像数据采用非独立编码方式进行编码。
[0020]本申请的有益效果是:本申请提供的视频编码方法及装置,可以减小视频图像中的误差累计,降低避免图像出现错误的概率。
【附图说明】
[0021]图1为本申请实施例提供的一种视频编码装置结构图;
[0022]图2为本申请实施例确定模块的结构图;
[0023]图3为本申请实施例公开的一种视频编码方法流程图;
[0024]图4为本申请实施例公开的各帧图像数据划分成宏块的示意图;
[0025]图5为本申请实施例公开的一种从非I帧图像数据中确定独立宏块的方法流程图;
[0026]图6为本申请实施例公开的对独立宏块位置遍历的策略示意图,其中,(a)示意了按行遍历的示例;(b)示意了按列遍历的示例。
【具体实施方式】
[0027]首先对本申请用到的术语进行解释。
[0028]I帧:内部画面(intra picture),为全帧压缩编码帧,将全帧图像信息进行JPEG压缩编码及传输。I帧通常是每个GOP的第一个帧,经过适度地压缩,可以当成图象。那么,对应的非I帧则表示除了 I帧以外的其它帧,包括由B宏块、P宏块及其组合或者其它形式编码的宏块构成的图像数据帧。
[0029]独立编码:采用I帧帧内压缩编码的形式,对选定的区域数据进行JPEG压缩编码
/传输。
[0030]下面通过【具体实施方式】结合附图对本申请作进一步详细说明。
[0031]在本申请实施例中,在对一段视频图像数据编码时,将非I帧的图像数据帧中的某些宏块设置为独立编码的宏块,并对独立编码的宏块的图像数据进行独立编码。
[0032]请参考图1,为本实施例提供的视频编码装置的结构图,具体结构包括:
[0033]获取模块1,获取模块I用于表征一段视频图像的若干帧图像数据;
[0034]划分模块2,划分模块2用于将每帧图像数据划分为连续且不重叠的若干宏块;
[0035]区分模块3,区分模块3用于区分I帧图像数据和非I帧图像数据,至少将该段视频图像数据中第一帧确定为I帧图像数据;进一步地,在一种具体实施例中,区分模块3将获取的一段视频图像数据中,第一帧确定为I帧,其余帧均为非I帧;
[0036]确定模块4,确定模块4用于在每一巾贞非I巾贞图像数据中确定出该巾贞的独立宏块,且每帧非I帧图像数据中的独立宏块的数量小于该帧图像数据划分的宏块总数量,所有非I帧图像数据中的独立宏块的集合至少包括由一帧图像数据划分出的所有宏块;
[0037]第一编码模块5,第一编码模块5用于对I帧图像数据中的各宏块的图像数据进行独立编码,还用于对非I帧图像数据中的独立宏块的图像数据进行独立编码;
[0038]第二编码模块6,第二编码模块6用于对非I帧图像数据中的其它宏块的图像数据采用非独立编码方式进行编码。
[0039]在一种具体实施例中,请参考图2,确定模块4包括:
[0040]分组单元41,分组单元41用于将非I帧图像数据分成至少一组;
[0041]确定单元42,确定单元42用于基于一组中的非I帧图像数据帧数和一帧图像数据划分出的宏块数分别确定各帧图像数据的独立宏块,使得该组所有的独立宏块的集合至少包括由一帧图像数据划分出的所有宏块。
[0042]在一种具体实施例中,确定单元42在每一帧非I帧图像数据中确定出的n/N个宏块为独立宏块,其中η为由一帧图像数据划分出的宏块数,N为第一组至倒数第二组各组图像数据的帧数,其中,η和N均为大于I的整数,η为N的倍数。
[0043]请参考图3,为本实施例公开的视频编码方法流程图,适用于上述装置,具体方法步骤包括:
[0044]步骤100、获取图像数据。
[0045]获取表征一段视频图像的若干帧图像数据。本领域技术人员应该理解,通常而言,一段视频图像包括若干组连续图像(GOP, Group of pictures)数据,而每个GOP的第一中贞为I帧,其余帧为非I帧,由包括B宏块、P宏块及其组合或者其它形式编码的宏块构成。因此,一般而言,一段视频图像的图像数据中会包括多帧I帧。
[0046]步骤200、划分宏块。
[0047]将每帧图像数据划分为连续且不重叠的若干宏块。请参考图4,每帧图像数据被划分成连续且不重叠的U*v个宏块,构成了 U行V列的宏块矩阵,其中,U和V为正整数。在一帧图像中,宏块可以通过坐标来定位,譬如(i,j)表示第i行第j列位置上的宏块,其中I彡i彡u,l彡j彡V,均为整数。
[0048]步骤300、确定I帧。
[0049]至少将该段视频图像数据中第一帧确定为I帧图像数据。根据步骤100的讨论可知,通常而言,一段视频图像会包括多个I帧。而在本实施例中,获取表征一段视频图像的若干帧图像数据后,只需将这些图像数据帧中的第一帧设为I帧,其余帧均作为非I帧并不再单独设置I帧。换言之,本实施例中,一段包括多个连续图像组的图像数据中,可以只有第一巾贞为I中贞。
[0050]步骤400、对I帧独立编码。
[0051]对I帧图像数据中的各宏块的图像数据进行独立编码。在步骤300确定了 I帧图像数据后,便可对I帧图像数据中的各宏块的图像数据进行独立编码。
[0052]步骤500、确定非I帧独立宏块。
[0053]本申请的设计思路是从非I帧图像数据中确定若干宏块作为独立宏块,并对其进行独立编码,从而减小误差累积,降低错误图像发生的概率。
[0054]在每一帧非I帧图像数据中确定出该帧的独立宏块,且每帧非I帧图像数据中的独立宏块的数量小于该帧图像数据划分的宏块总数量,所有非I帧图像数据中的独立宏块的集合至少包括由一帧图像数据划分出的所有宏块。在一种具体实施例中,可以根据系统预设的规则来从非I帧图像数据中选取若干独立宏块。譬如可以确定某些固定位置上的宏块、也可以随机确定若干宏块、还可以按照一定规律来确定若干宏块等。本领域技术人员应该理解,宏块可以是4x4像素,也可以是16x16、16x8、8x8、8x4等模式。通常而言,一个宏块即为一帧图像编码的基本单位,在其它实施例中,也可以将宏块划分成更多的子宏块,而后以子宏块为基本单位。
[0055]需要说明的是,所有非I帧图像数据中的独立宏块的集合至少包括由一帧图像数据划分出的所有宏块是指:所有非I帧图像数据中的独立宏块在各自非I帧中的位置(i,j)的集合应该至少能够遍历(1,I)至(U, V)。
[0056]步骤600、对非I帧编码。
[0057]对非I帧图像数据中的独立宏块的图像数据进行独立编码;对非I帧图像数据中的其它宏块的图像数据采用非独立编码方式进行编码。其中,非独立编码方式可以采用譬如帧间单向预测、帧间双向预测或运动补偿等现有的非独立编码的方式来实现。
[0058]本领域技术人员应该清楚,在对各宏块进行编码时,还可以根据各类型的宏块语法规则,采用现有技术对各宏块进行标识,以便解码。
[0059]进一步,本实施例还公开了一种优选的从每一帧非I帧图像数据中确定独立宏块的方法,请参考图5,具体方法步骤包括:
[0060]步骤501、将非I
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1