低码率下的高效小波视频编解码方法

文档序号:7737996阅读:313来源:国知局
专利名称:低码率下的高效小波视频编解码方法
技术领域
本发明涉及一种视频图像的编解码方法,特别涉及一种低码率下的高效小波视频编解码方法。
背景技术
小波变换作为一种变换编码,对图像具有很好的压缩性能,已经作为JPEG2000的国际标准,广泛应用于JEPG2000、MPEG4的静态纹理信息压缩和医学图像压缩等领域。对静止图像而言,小波变换具有的多分辨率解析,可截断嵌入式码流,无马赛克等特点,具有传统离散余弦变换(DCT)无法比拟的优势。但对运动图像而言,基于DCT变换的编解码方法已经形成了一套比较完善的算法,例如H.26x系列和MPEG系列,而对小波在视频编码领域的应用还处在不断探索的阶段,很多时候不能完全脱离原有的算法框架,小波变换由于对整幅图像进行运算,而不是像DCT变换一样分块运算,因此运算的效率不高,应用于实时系统存在一定的困难。因此,怎样在原有算法框架的基础上充分利用小波变换的特性,并提高实时处理能力,是很有实用价值的。
在运动图像的压缩中,小波变换的应用主要分为三个方面(1)采用传统的视频编解码算法的框架,用小波变换取代DCT变换;(2)将传统视频算法框架中的运动估计放到小波变换之后进行,对图像小波变换后的系数,在频率域上,按照不同的频带划分,做分块的运动估计、运动补偿;(3)三维小波变换。
其中第三种方法,将小波变换的概念由空间的二维,提升到了包括时间的三维,完全脱离了传统视频编码的分块概念。但三维小波由于其大的延时性和大缓冲区的需求,不适合应用于实时系统。
前两种应用,都应用了运动估计来去除在时间域上的信息冗余度,可以说是基于运动估计的视频编码,只是运动估计的域选择不同,因此在算法的流程中,小波变换和运动估计的顺序有所不同。但基于频率域的运动估计,显然更符合小波的特性。
运动估计是指在参考帧中搜索一个与当前帧图像块最相似的图像块,即最佳匹配块,搜索结果用运动向量来表示。有两种方法进行运动估值,一种是差的平方的和(SSD),另一种是差的绝对值的和(SAD),这两种方法在特定的环境下都有自己的优点和局限性,由于SAD实现起来比较快(没有乘法运算),MPEG中使用SAD方法进行运动估值;运动补偿是指利用参考帧和已求得的运动向量重构当前帧,把重构帧和当前帧的差值作为当前帧的补偿值进行压缩编码。两者互相配合,共同实现压缩效果。
目前基于运动估计的视频编码方案,通常是首先对每一帧图像进行格式转换,转换成Y,U,V三个分量,然后默认第一帧图像为I帧,对其进行帧内编码;强制指定其后的序列中的图像指定为I帧、P帧或B帧,分别对其进行帧内或帧间编码,其中I帧和P帧都可以作为帧间编码的参考帧;帧内编码采用分块的DCT变换或小波变换,然后使用量化、熵编码,将编码数据输入码流;帧间编码分为运动估计、运动补偿、运动矢量编码和残差图像编码几个部分;帧间编码的运动估计只对Y分量进行,得到的运动矢量适用于UV分量;运动估计分为两大类,其中P帧采用单向运动估计,B帧采用双向运动估计,运动估计是将图像划分为若干个宏块进行的,包括整像素运动估计和半像素运动估计,运动估计后的宏块分为两种inter块和intra块;对于inter块,需要根据其参考帧和当前帧,进行运动补偿,并对其残差进行DCT变换或小波变换、量化和熵编码;对于intra块,则直接对其进行帧内编码;运动矢量编码采用差分的哈夫曼编码。
由此可以看出,传统的视频编解码算法框架主要包括几个步骤运动估计,运动补偿,DCT变换或小波变换,量化,熵编码等几个方面。其中运动估计是基于时间域的概念,在空间域上进行的,需要对整幅参考图像进行本地解码后,再分块的匹配。当图像尺寸较大,带宽要求较低时,这种运动估计方法耗时很长,同时将为编码码流增加大量的运动矢量,降低视频编码的压缩效率。
在改进后的基于小波变换的视频编码算法中,比较常见采取的步骤是(1)完整的L层小波变换(L一般为4或6);(2)对小波变换后的系数进行运动估计,运动补偿;(3)对残差图像进行量化,零树编码和熵编码。
其中,运动估计是基于时间域,在小波域上进行的MRMC(variable-sizemulti-resolution motion compensation)预测,小波域又被称为多分辨率频域。这种运动估计方法利用了小波变换的特性,用频率域代替空间域进行运动估计,对不同的频带采用不同尺寸的匹配块分别进行运动估计和补偿,有效的减少了块效应,并且不需要对参考图像进行完全的本地解码,提高了编码器的效率。
但这种算法中,MRMC预测是一种很复杂的运动估计方式,当小波变换层数很多时,产生的不同频率的子带数量也就更多,运动估计的耗时增加,同时也会增加匹配块的尺寸选择难度、边界效应的处理、代价函数的选取以及运动矢量的数量,对于低码率下的实时编码系统而言,有一定的局限性。
另外,三维小波由于其大的延时性和大缓冲区的需求,也不适合应用于实时系统。
对于低码率下实时的视频编解码算法,压缩比、还原质量和运算复杂度是其中重要的技术指标。以上的三种传统方法都存在着运算复杂度过高,难以实时的缺点,因此,要解决基于小波变换的视频编解码的实时实现,就必须在保证还原质量、压缩比的前提下尽量降低运算复杂度。

发明内容
本发明所要解决的技术问题在于针对低码率的要求,提出一种在保证还原质量、压缩比的前提下,有效降低运算复杂度的视频编解码方法。
本发明提供一种低码率下的高效小波视频编码方法,包括将YUV格式的视频图像的I帧进行帧内编码,PB帧进行帧间编码,其特征在于所述帧内编码采用二维小波变换,设变换的层数为L,然后对小波变换系数使用量化、零树编码和算术编码,将编码数据输入码流,并通过本地解码保留三个分量经过L-1层小波反变换的还原数据作为帧间编码的参考帧数据;所述帧间编码首先对YUV三个分量进行第一层小波正变换,帧间编码的运动估计只对Y分量经过第一层小波变换后的低频(LL)子带部分进行,得到的运动矢量适用于其余的三个高频子带和UV分量,运动估计得到的预测帧,需要根据其参考帧和当前帧,进行运动补偿,并对其残差图像进行剩余的L-1层二维小波变换,然后对小波变换后的系数使用量化、零树编码和算术编码。
相应的,本发明还提供一种低码率下的高效小波视频解码方法,包括根据码流信息判断出视频帧类型后,对I帧进行帧内解码,对PB帧进行帧间解码,其特征在于所述帧内解码根据输入码流,采用算术解码、零数解码和反量化,然后使用L层二维小波反变换,得出还原图像;所述帧间解码首先进行运动矢量解码,对帧间解码的残差图象采用算术解码、零数解码和反量化,然后使用L-1层二维小波反变换,再根据其参考帧进行运动补偿,得到还原数据,并对还原数据再进行一层小波反变换,得到还原图像。
本发明结合了时空域运动估计比较成熟的块匹配方案和代价函数,以及频率域运动估计对小波特性的利用,根据一层小波变换后图像划分为四个频带之间的自相似性的特点,只对原图像大小1/4的低频部分进行运动估计,并将得到的运动矢量应用于三个高频,既节省了运动估计的耗费时间,又减少了运动矢量的数量,非常有利于低码率下的实时视频编解码系统。


图1为一实际真实原始图像;图2为使用传统方法对数据图像进行编码处理示意图;图3为使用本发明对数据图像进行编码处理示意图;图4为本发明中高效小波视频编解码方式之实施例流程图。
具体实施例方式
如图4所示,为本发明中高效小波视频编码方法之实施例流程示意图,在对YUV格式的视频图像的I帧进行帧内编码、PB帧进行帧间编码时,对帧内编码采用二维小波变换,设变换的层数为L,然后对小波变换系数使用量化、零树编码和算术编码,将编码数据输入码流,并通过本地解码保留三个分量经过L-1层小波反变换的还原图像作为帧间编码的参考帧数据;对帧间编码首先对YUV三个分量进行第一层小波正变换,帧间编码的运动估计只对Y分量经过第一层小波变换后的低频(LL)子带部分进行,得到的运动矢量适用于其余的三个高频子带和UV分量,运动估计得到的预测帧,需要根据其参考帧和当前帧,进行运动补偿,并对其残差图像进行剩余的L-1层二维小波变换,然后对小波变换后的系数使用量化、零树编码和算术编码。
为了充分利用一帧图像在时间上与前几帧的相关性,提高了编码效率,还可以对I帧与PB帧的帧类型采用自适应的方式进行调整,包括如下步骤(1)默认第一帧图像为I帧,对其后的视频帧默认为PB帧;(2)对所述其后的视频帧进行运动估计;(3)根据运动估计的结果,自适应的重新调整所述其后的视频帧的类型。
其中对视频帧进行运动估计时,可以把当前帧划分成M×N大小的宏块,并预设SAD阈值;然后对每一宏块在参考帧范围内进行搜索,在参考帧和原始帧的SAD值大于SAD阈值时,则视为该宏块运动估计失败;同时,累计所述当前帧运动估计失败的宏块数,并预设失败数阈值;比较所述当前帧累计运动估计失败的宏块数与所述失败数阈值,如果所述当前帧累计运动估计失败的宏块数大于所述失败数阈值,则将所述当前帧调整为I帧,否则则判断该帧为P帧,并对其进行帧间编码。
例如,进行运动估计时,可以采用自适应的16×16或8×8的搜索,设SAD阈值为SAD_threshold,失败宏块数阈值为distortion_hum_threshold,当前宏块的SAD值为cur_SAD,当前失败的宏块数为big_distortion_num,当前帧的宏块总数为block_num,则,第一个代价函数是判断当前宏块是否运动估计失败,判断公式为cur_SAD>SAD_threshold,如果满足代价函数,则big_distortion_num加1;第二个代价函数是给定阈值distortion_num_threshold,判断公式为distortion_num_threshold=block_num/K。其中K的范围可以是8~16,第三个代价函数是判断当前帧是否运动估计失败,判断公式为big_distortion_num>distortion_num_threshold。
以16X16宏块为例,如果设置阈值SAD_threshold=2000~5000,判断该16X16宏块运动估计是否成功,当该宏块运动估计后,在参考帧和在原始帧的SAD值>SAD_threshold,就可认为该宏块运动估计失败。同时累计运动估计失败的宏块数,设置阈值distortion_num_threshold=图像的16X16宏块数目/8~16,如果一帧累计运动估计失败的宏块数目>distortion_num_threshold,则判断本帧为I帧,并对其进行帧内编码。否则,则判断本帧为P帧,并对其进行帧间编码。
在传统方法中,在整像素的运动估计后,编码器将决定是采用INTER宏块方式还是INTRA宏块方式进行编码,利用公式MB_mean=(Σi=1,j=1Ncoriginal)/Nc]]>A=Σi=1,j=116,16|original-MB_mean|]]>如果代价函数A<(SADinter-2*Nc),则该宏块满足INTRA宏块的要求,就采用INTRA方式编码,不必继续进行运动搜索;否则采用INTER方式,然后继续在V0附近进行半像素的运动搜索。INTRA方式即为当前宏块直接采用离散余弦变换(DCT)变换,针对DCT变换的特点,INTRA宏块中,每个像素值与该宏块的平均值之差的和很小,这就说明该宏块的像素值很平均,很平滑,适合DCT变换。但对针对整帧图像进行处理的小波变换,无法对局部进行单独的变换。
因此,为了适应小波变换的特点,本发明针对灰度图像,可以仍采用上述判断公式,而针对彩色图像,可以对Y分量采用上述的判断公式,对Y分量INTRA宏块的处理方法可以是运动矢量为零,传送该宏块的平均值MB_mean,而该宏块各点的残差值=当前帧中该宏块各点值-MB_mean。对UV分量,认为当前的宏块运动矢量为(0,0),然后按照INTER宏块方式处理。
对运动矢量的编码可以参考查表的哈夫曼编码,但为了提高编码效率,可以对所用的表格进行改动,使编码长度相对标准缩短很多。为了缩短编码的码字长度,采取了一系列措施1)将半像素的运动矢量统一写成正数。例如整像素运动矢量为(5,6),半像素运动矢量为(-1,-1),则改写整像素运动矢量为(4,5),半像素运动矢量为(+1,+1),这样可将半像素运动矢量不放入哈夫曼表内,以一个比特单独编码。
2)由于搜索窗口范围为[-32,+32],则运动矢量的范围是[-8,+8],考虑到措施1)中的做法,运动矢量的范围为[-9,+8],但我们对边界采取四舍五入的方式,仍然约束为[-8,+8],这样哈夫曼输出码表的范围为[-16,+16]。
下表就是运动矢量预测后的哈夫曼输出码表,相对于H.263的码表,由于它只包括了整像素的运动矢量,所以大大减少了编码的码字长度,而对还原图像的质量却基本没有影响。
运动矢量预测后的哈夫曼输出码表


相应的,本发明还提供一种低码率下的高效小波视频解码方法,包括根据码流信息判断出视频帧类型后,对I帧进行帧内解码,对PB帧进行帧间解码,其中,所述帧内解码根据输入码流,采用算术解码、零数解码和反量化,然后使用L层二维小波反变换,得出还原图像,并保留三个分量经过L-1层小波反变换的还原系数作为帧间解码的参考帧数据;所述帧间解码首先进行运动矢量解码,对帧间解码的残差图象采用算术解码、零数解码和反量化,然后使用L-1层二维小波反变换,再根据其参考帧和运动矢量进行运动补偿,得到还原数据,并对还原数据再进行一层小波反变换,得到还原图像。
对于还原后的图像数据,根据需要可以从YUV格式转换为要求的格式,一般为RGB格式。
在判断帧类型时,默认第一帧图像为I帧,然后与编码端相对应,如果在编码端使用了自适应的调整帧类型方式,则在解码端根据编码端的自适应调整,从编码码流中的信息得到该帧的编码类型。
对帧内解码进行的运动矢量解码,是将半像素的运动矢量统一写成正数,并对边界采取四舍五入的方式进行约束。
如图1所示,为一实际真实原始图像,设原始图像尺寸为M*N,运动估计的宏块大小为8*8,则此图像中包含的宏块的数量为M*N/(8*8),设为MBR*MBC。
如果使用第一种传统方法,即基于空间域的运动估计方法,需要进行匹配的宏块数量=MBR*MBC。
如果使用第二种传统方法,如图2所示,对原始图像先进行完全的多层小波变换后,图像由空间域转换到了频率域,从图上可以看出,每个频率的子带都可以看成是原始图像的缩略图。这种算法的主要特征是利用了小波变换的特性,用频率域代替空间域进行运动估计,对不同的频带采用不同尺寸的匹配块分别进行运动估计和补偿,在频率域上进行MRMC(variable-size multi-resolution motion compensation)预测,有效的减少了块效应,并且不需要对参考图像进行完全的本地解码,提高了编码器的效率。
但从图2也可以看出,这种算法对于每一级小波变换的频带采用不同尺寸的匹配块和运动估计代价函数,使得运动估计的运算复杂度非常高,以四层小波变换,每层只对一个频带进行运动估计,搜索宏块依次为8*8,4*4,2*2,1*1为例,共需要运动估计的宏块次数为(MBR*MBC/4)*4,还是MBR*MBC次。如果每层对每个频带都进行运动估计,共13个频带,则运动估计的次数增加到13*MBR*MBC/4。和我们的算法比起来,运算复杂度太高。
另外,运动估计存在着边界效应,这种算法将运动估计在各个频带内进行,会出现很多边界效应,要想尽量消除这些边界效应,就必须增加算法处理环节,这又会增加运算的复杂度。
而本发明由于只对经过一层小波变换的低频子带LL进行运动估计,如图3所示,宏块数量只为原始图像宏块数量的1/4,即MBR*MBC/4。根据小波变换的特性,在一级小波变换的四个频带上的相同位置,表征原始图像相同位置的信息细节,因此,可以将低频子带的运动矢量应用到其余的三个高频子带HL,LH,HH,而不需再进行运动估计。这种做法大大减少了运动估计的计算时间,同样,由于运动矢量的数量也只为原图像的1/4,同时也提高了图像的压缩比,而图像的还原质量却不会下降,因此,本发明比传统方法相比具有明显的优越性。
权利要求
1.一种低码率下的高效小波视频编码方法,包括将YUV格式的视频图像的I帧进行帧内编码,PB帧进行帧间编码,其特征在于所述帧内编码采用二维小波变换,设变换的层数为L,然后对小波变换系数使用量化、零树编码和算术编码,将编码数据输入码流,并保留三个分量经过L-1层小波反变换的还原数据作为帧间编码的参考帧数据;所述帧间编码首先对YUV三个分量进行第一层小波正变换,帧间编码的运动估计只对Y分量经过第一层小波变换后的低频(LL)子带部分进行,得到的运动矢量适用于其余的三个高频子带和UV分量,运动估计得到的预测帧,根据其参考帧和当前帧,进行运动补偿,并对其残差图像进行剩余的L-1层二维小波变换,然后对小波变换后的系数使用量化、零树编码和算术编码。
2.如权利要求1所述的方法,其特征在于所述I帧与PB帧的帧类型采用自适应的方式进行调整,包括如下步骤(1)默认第一帧图像为I帧,对其后的视频帧默认为PB帧;(2)对所述其后的视频帧进行运动估计;(3)根据运动估计的结果,自适应的重新调整所述其后的视频帧的类型。
3.如权利要求2所述的方法,其特征在于所述步骤(2)包括把当前帧划分成M×N大小的宏块,并预设SAD阈值;对每一宏块在参考帧范围内进行搜索,在参考帧和原始帧的SAD值大于SAD阈值时,则视为该宏块运动估计失败;累计所述当前帧运动估计失败的宏块数,并预设失败数阈值;比较所述当前帧累计运动估计失败的宏块数与所述失败数阈值。
4.如权利要求2所述的方法,其特征在于所述步骤(3)包括如果所述当前帧累计运动估计失败的宏块数大于所述失败数阈值,则将所述当前帧调整为I帧。
5.如权利要求1所述的方法,其特征在于所述运动估计后的宏块,对于灰度图像以及彩色图像的Y分量,通过公式MB_mean=(Σi=1,j=1Ncoriginal)/Nc]]>A=Σi=1,j=116,16|original-MB_mean|]]>来判断采用帧内还是帧间宏块编码方式,当代价函数A<(SADinter-2*Nc)成立时,该宏块满足帧内宏块要求,对彩色图像的UV分量,认为当前的宏块运动矢量为(0,0),按照帧间宏块方式处理;对Y分量帧内宏块的处理方法是运动矢量为零,传送该宏块的平均值MB_mean,而该宏块各点的残差值=当前帧中该宏块各点值-MB_mean。
6.如权利要求1所述的方法,其特征在于所述的帧内编码进行的运动矢量编码,是将半像素的运动矢量统一写成正数。
7.如权利要求1所述的方法,其特征在于所述的帧内编码进行的运动矢量编码,是对边界采取四舍五入的方式进行约束。
8.一种低码率下的高效小波视频解码方法,包括根据码流信息判断出视频帧类型后,对I帧进行帧内解码,对PB帧进行帧间解码,其特征在于所述帧内解码根据输入码流,采用算术解码、零数解码和反量化,然后使用L层二维小波反变换,得出还原图像,并保留三个分量经过L-1层小波反变换的还原系数作为帧间解码的参考帧数据;所述帧间解码首先进行运动矢量解码,对帧间解码的残差图象采用算术解码、零数解码和反量化,然后使用L-1层二维小波反变换,再根据其运动矢量和参考帧进行运动补偿,得到还原数据,并对还原数据再进行一层小波反变换,得到还原图像。
9.如权利要求8所述的方法,其特征在于还包括将所述还原图像数据从YUV格式转换为需要的格式。
10.如权利要求8所述的方法,其特征在于所述判断帧类型时,默认第一帧图像为I帧,然后根据编码端自适应的调整,从编码码流中的信息得到该帧的编码类型。
11.如权利要求8所述的方法,其特征在于所述帧内解码进行的运动矢量解码,是将半像素的运动矢量统一写成正数。
12.如权利要求8所述的方法,其特征在于所述帧内解码进行的运动矢量解码,是对边界采取四舍五入的方式进行约束。
全文摘要
一种低码率下的高效小波视频编解码方法,小波变换采用L层,帧间编码先对YUV三个分量进行第一层小波正变换,运动估计只对Y分量经过第一层小波变换后的低频子带部分进行,得到的运动矢量适用于其余的三个高频子带和UV分量,对运动矢量编码及残差图像进行余下的L-1层小波正变换并编码;相应的帧间解码首先进行运动矢量和残差图像解码,对残差图象使用L-1层小波反变换,根据参考帧进行运动补偿,得到还原数据,并对还原数据再进行一层小波反变换,得到还原图像,本发明节省了运动估计的耗费时间,又减少了运动矢量的数量,有利于低码率下的实时视频编解码系统。
文档编号H04N7/30GK1514651SQ0315030
公开日2004年7月21日 申请日期2003年7月24日 优先权日2003年7月24日
发明者耿静, 陈小敬, 庞潼川, 周闰, 耿 静 申请人:大唐微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1