用于编码处理的4输入/输出的整数变换/反变换方法技术领域
本发明涉及图像编解码技术,特别是涉及在图像编解码过程中的整数变
换/反变换方法及其装置,属于图像通讯技术领域。
背景技术
包括高清晰度数字电视、高密度激光视盘、宽带网络、无线宽带多媒体
通信等这些与信息家电、通信设备、多媒体设备相关的产业,其共性技术是
以数字视音频编解码技术为主要内容的多媒体信息处理技术,高效的视频编
解码技术是实现高质量、低成本多媒体数据存储与传输关键。近年来,广播、
通信、计算机网络的发展,对于视频编码与处理技术也提出了越来越高的要
求。目前常用的编码方法有预测编码、正交变换编码、向量量化编码等等,
这些方法都是基于信号处理理论的,通常也称为第一代编码技术,现在比较
流行的图像编码国际标准都是基于这种编码理论,采用的是基于图像块匹配
的运动补偿策略、离散余弦变换和量化相结合的编码方法。
一个完整的视频编码系统通常包括:预测、变换、量化和信息熵编码等
四个主要模块。预测模块的主要功能是利用已经编码并重建的图像对当前要
编码的图像进行预测(帧间预测),或者利用图像中已经编码并重建的图像
块(或宏块)对当前要编码的图像块(或宏块)进行预测(帧内预测);变
换模块的主要功能是将输入的图像块变换到另外一个空间,使输入信号的能
量尽可能地集中在低频变换系数上,进而降低图像块内元素之间的相关性,
有利于压缩;量化模块的主要功能是将变换的系数映射到一个有利于编码的
有限元素集上;信息熵编码模块的主要功能是根据统计规律,将量化后的变
换系数用变长码表示。类似地,视频解码系统包含相似的模块,主要是将输
入的码流通过熵解码、反量化、反变换等过程重建解码图像。除了上述模块,
视频编解码系统中通常还包含一些辅助的编码工具,这些工具同样也会对整
个系统的编码性能(压缩比)做出贡献。
显而易见,变换/反变换是视频编解码系统的重要组成部分,变换/反变
换的降相关的效果将直接影响编码器的编码性能。目前,先进的视音频编解
码技术通常以标准的形式存在。目前典型的视音频压缩标准有国际标准化组
织(ISO)下设的运动图像专家组(Moving Picture Expert Group,简称
MPEG)推出的MPEG系列国际标准,国际电信联盟(ITU)提出的H.26x系列
视频压缩推荐。在这些视频编码标准中,常用的变换有离散余弦变换(DCT)、
小波变换等。DCT变换和小波变换都具有很好的编码压缩效果,但是由于需
要浮点乘法和加法的运算,所以复杂度比较高。近来的研究发现,可以使用
变换系数全部为整数的变换,只要与量化部分配合得当,在编码效率不降低
的情况下,仍可以大大降低运算复杂度。
ISO和ITU建立的联合视频工作组(Joint Video Team,简称JVT)制定
的AVC(Advanced Video Coding)视频编码标准是新一代的视频编码标准,
它采用了一系列新型的编码技术,比现存的任何一种编码标准的压缩效率都
要高的多。AVC标准在ISO中的正式名称是MPEG-4标准的第十部分,在ITU
中的正式名称是H.264标准。AVC标准采用了一种4输入/输出的整数变换,
如下面的矩阵变换所示。由于系数非常简单,只需用加法和移位就可以实现,
4×4的二维变换总共只需要16次移位,64次加法。
Y = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 x 00 x 01 x 02 x 03 x 10 x 11 x 12 x 13 x 20 x 21 x 22 x 23 x 30 x 31 x 32 x 33 1 2 1 1 1 1 - 1 - 2 1 - 1 - 1 2 1 - 2 1 - 1 ]]>
简言之,整数变换具有以下特点:
算法简单明了,易于硬件设计。
运算结果精度高且不会溢出。传统的DCT变换在具有不同运算精度的装
置中实现时,可以得到不同的变换结果,因此在进行视频编解码时会形成正
变换与反变换的不匹配。而整数变换编码可以与量化过程紧密结合,在数据
不溢出的前提下得到最大精度的计算结果。
整数运算,运算速度快。
因此,在设计视频编解码器中采用整数变换必将成为一种趋势。目前已
经有一些整数正交变换用于视频编码中,但仍然可以设计更加高效的新的整
数变换。对于现有的数字视频数据,特别是低分辨率的视频数据,如176×144,
采用4×4的运动补偿预测可以获得更高的预测精度,因此编码低分辨率的视
频时采用基于4×4块的运动补偿预测已经成为一种趋势,相应地,采用4输
入/输出的整数变换也可以在保证编码效率的前提下,降低运算复杂度。目
前已经有4输入/输出的整数变换存在,如AVC标准中的变换/反变换方法。
尽管这个变换十分简单,只用移位和加法实现,但是并不能很好地体现视频
数据的统计规律。
发明内容
本发明要解决的技术问题是面向高清晰度数字视频编解码等应用,提出
一种用于编码处理的4输入/输出的整数变换/反变换方法及其装置,本发明
可以通过加法和移位操作实现,在降低复杂度的同时,还可以保证高效的编
码效率。
本发明所述用于编码处理的4输入/输出的整数变换方法,包括如下的步
骤:
第1步,接收预测模块输出的图像参数X=(x1,x2,x 3,x4)’;
第2步,对通用的变换矩阵
W = a b b a c d - d - c b - a - a b d - c c - d ]]>
,令W中系数满足:a=b=1,c与d的比值在1.5-2之间;
由此可得到一系列整数变换矩阵:其中之一为:
T = 1 1 1 1 3 2 - 2 - 3 1 - 1 - 1 1 2 - 3 3 - 2 ; ]]>
第三步,对变换矩阵T进行分解,使每个分解后的矩阵便于将矩阵的乘
法运算转化为加法和移位运算;
第四步,利用上述矩阵分解的结果,进行快速计算矩阵Y=TX,得到了变
换的结果Y=(y1,y2,y3,y4)’,即频域系数,代表了输入图像各个频段的
信号强度。
上述用于编码处理的4输入/输出的整数变换方法,所述第三步对变换矩
阵T进行分解,包括:对其中的变换矩阵之一即T进行分解:
T = 1 1 1 1 3 2 - 2 - 3 1 - 1 - 1 1 2 - 3 3 - 2 , ]]>令T=PKB,其中,B=B1*B2
B 1 = 1 1 0 0 1 - 1 0 0 0 0 1 0 0 0 0 1 , ]]> B 2 = 1 0 0 1 0 1 1 0 1 0 0 - 1 0 1 - 1 0 ]]>
K = 1 1 G 2 , ]]> P = 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 , ]]>可得到,
G 2 = 3 2 2 - 3 ; ]]>
第1步,用矩阵
1 0 0 1 0 1 1 0 1 0 0 - 1 0 1 - 1 0 ]]>和
1 1 0 0 1 - 1 0 0 0 0 1 0 0 0 0 1 ]]>先后左乘X;设得到的结果
为V=(v1,v2,v3,v4)’;
第2步,设U=(v3,v4)’,计算G2*U;其中
G 2 = 3 2 2 - 3 ; ]]>这一步的输出结
果就是y2和y4;
计算G2*U可分成以下几步:
1.计算用矩阵
1 1 1 - 1 ]]>左乘U,即计算
1 1 1 - 1 * U . ]]>设结果为
W=(w1,w2)’,
2.第1步得到的结果W里面的两个数左移一位,得到
Z=(2w1,2w2)’,
3.设A=(v3,-v4)’,计算A+Z即得到了G2*U;
第3步,用P左乘第2步得到的结果。
其中
P = 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 ]]>
因为T=PKB,所以这样就完成了TX的计算。T可有多种等价的矩阵分解
形式。
本发明所述用于解码处理的4输入/输出的整数反变换方法,包括如下的
步骤:
第一步,接收反量化后的系数Y=(y1,y2,y3,y4)’;
第二步,由整数正变换的变换矩阵,
T = 1 1 1 1 3 2 - 2 - 3 1 - 1 - 1 1 2 - 3 3 - 2 , ]]>
得到其反变换矩阵为T’;
第三步,对反变换矩阵为T’进行分解,使每个分解后的矩阵便于将矩阵
的乘法运算转化为加法和移位运算;
第四步,利用上述矩阵分解的结果,进行快速计算矩阵X=T’Y,得到变
换的结果为:X=(x1,x2,x3,x4)’,表示重构的图像或重构的残差图像。
上述用于编码处理的4输入/输出的整数反变换方法,所述第三步对变换
矩阵T’进行分解,包括:
第一步,用P’左乘Y。结果为R=(y1,y3,y2,y4)’
其中
P = 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 ]]>
第二步,用K’左乘第一步得到的结果,
K = 1 1 G 2 , ]]>
(因为G2=G2’,所以K’=K)
设U=(y2,y4)’,则K’*R包括G2*U的计算,其中
G 2 = 3 2 2 - 3 ; ]]>
计算G2*U可分成以下几步:
1.计算用矩阵
1 1 1 - 1 ]]>左乘U,即计算
1 1 1 - 1 * U . ]]>设结果为
W=(w1,w2)’,
2.第1步得到的结果W里面的两个数左移一位,得到
Z=(2w1,2w2)’,
3.设A=(v3,-v4)’,计算A+Z即得到了G2*U;
第三步,用矩阵B1’,B2’依次左乘Y,即依次计算B1’Y,B2’(B1’Y)。
其中
B 1 = 1 1 0 0 1 - 1 0 0 0 0 1 0 0 0 0 1 , ]]> B 2 = 1 0 0 1 0 1 1 0 1 0 0 - 1 0 1 - 1 0 ]]>
因为T’=B’K’P’,所以这样就完成了T’Y的计算,T’可有多种等价
的矩阵分解形式。
从本发明的技术方案可以看出,本发明具有如下优点:
该变换/反变换方法可以通过加法和移位操作实现,易于硬件设计,降低
硬件设计成本。
该变换与反变换的运算精度高且不会溢出,不存在正变换与反变换的不
匹配的现象。
对于8比特视频数据,输入的残差块可以用9比特表示,4×4的9比特的
输入块用本发明的方法作二维变换,输出数据可以用16比特表示,因此本
发明的方法用于视频编码时,可以用16位运算器实现。
本发明所述的4输入/输出的整数变换/反变换方法符合数字视频的统计
特性,具有更好的降相关效果。
附图说明
图1是按蝶形算法分解的满足本发明规定的系数关系的整数变换的正变
换的快速算法的计算框图。
图2是按蝶形算法分解的满足本发明规定的系数关系的整数变换的反变
换的快速算法的计算框图。
图3是G2和G2’的快速算法的实现框图。
图4是本发明所述方法应用于视频编解码系统的示意图。
具体实施方式
本发明所述用于编码处理的4输入/输出的整数变换方法,可以归纳下面
的基本步骤:
第一步,建立变换矩阵;
第二步,对变换矩阵T进行分解,使每个分解后的矩阵便于将矩阵的乘
法运算转化为加法和移位运算;
第三步,利用上述矩阵分解的结果,进行快速计算矩阵Y=TX,得到了变
换的结果Y=(y1,y2,……,y4)’,即频域系数,代表了输入图像各个频段的
信号强度。
所述将变换矩阵进行分解,其过程如下:
如下式所示,W是一个4×4整数变换的通式。其中a,b,c,d为整数。
对于输入X=(x1,x2,x3,x4)’,变换的输出Y=WX。对于反变换来说,变换矩
阵为W’,即对于输入Y=(y1,y2,y3,y4)’,变换的输出X=W’Y。
W = a b b a c d - d - c b - a - a b d - c c - d ]]>
JVT标准中根据DCT变换原理,取a=b=d=1,c=2。以往的整数变换由于
都是基于DCT变换原理,所以c∶d都大于或等于2。
本发明中,令a=b=1,c与d的比值在1.5-2之间,这样可以获得更高的
编码效率。
由此可得到一系列整数变换矩阵,比如:
T 1 = 1 1 1 1 3 2 - 2 - 3 1 - 1 - 1 1 2 - 3 3 - 2 ]]>
T 2 = 1 1 1 1 7 4 - 4 - 7 1 - 1 - 1 1 4 - 7 7 - 4 ]]>
还可以为:
T = 1 1 1 1 3 2 1 - 1 - 3 2 1 - 1 - 1 1 1 - 3 2 3 2 - 1 ; ]]>
即c,d不一定是整数,只要符合比值在1.5-2之间,且可以用整数运算
实现即认为符合本发明的要求。比如
1 1 1 1 3 2 1 - 1 - 3 2 1 - 1 - 1 1 1 - 3 2 3 2 - 1 ]]>中的除以2的操作,就
可以用一次右移实现。
对其中的变换矩阵之一即T进行分解:
T = 1 1 1 1 3 2 - 2 - 3 1 - 1 - 1 1 2 - 3 3 - 2 ]]>
令T=PKB,其中,B=B1*B2
B 1 = 1 1 0 0 1 - 1 0 0 0 0 1 0 0 0 0 1 , ]]> B 2 = 1 0 0 1 0 1 1 0 1 0 0 - 1 0 1 - 1 0 ]]>
K = 1 1 G 2 , ]]> P = 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 , ]]>可得到,
G 2 = 3 2 2 - 3 ; ]]>
第1步,用矩阵
1 0 0 1 0 1 1 0 1 0 0 - 1 0 1 - 1 0 ]]>和
1 1 0 0 1 - 1 0 0 0 0 1 0 0 0 0 1 ]]>先后左乘X;设得到的结果为
V=(v1,v2,v3,v4)’;
第2步,设U=(v3,v4)’,计算G2*U;其中
G 2 = 3 2 2 - 3 ; ]]>这一部的输出结
果就是y2和y4;
计算G2*U可分成以下几步:
第1步,计算用矩阵
1 1 1 - 1 ]]>左乘U,即计算
1 1 1 - 1 * U . ]]>设结果为W=(w1,w2)’,
第2步,第1步得到的结果W里面的两个数左移一位,得到Z=(2w1,2w2)’,
设A=(v3,-v4)’,计算A+Z即得到了G2*U,
第3步,计算v1+v2和v1-v2,输出结果就是y1和y3。
图1给出了是按蝶形算法分解的满足本发明规定的系数关系的整数变换
的正变换的快速算法的计算框图。以变换矩阵T1为例,假定输入为X=(1,2,
3,4)’,则输出Y为:Y=T1X=(10,-11,0,-3)’。Y1=(x1+x4)+(x2+x3)
图2中给出了反变换方法,
对变换矩阵T’进行分解,包括:
第1步,设W=(y2,y4)’,计算G2*W;其中
G 2 = 3 2 2 - 3 ; ]]>设这一步的输
出结果为u3和u4;
第2步,设V=(y1,y3)’,计算
1 1 1 - 1 * V , ]]>设这一步的输出结果为u1和
u2;
第3步,设U=(u1,u2,u3,u4)’计算
1 0 0 1 0 1 1 0 0 1 - 1 0 1 0 0 - 1 * U , ]]>得到的结果就是
X。
从图2中,可以看出其中的变换关系,例如:
x1=y1+y3+out1,(out1,out2)’=G2*(y2,y4)’。
图3中,计算G2*U可分成以下几步:
计算w1=u1+u2,w2=u1-u2;
w1和w2两个数左移一位,得到2w1和2w2;
计算2w1+u1和2w2-u2。结果就是G2*U的输出。
如图4所示,本发明所述方法可以作为一个模块用于一般的视频编解码
系统,具体编解码包括以下几个步骤:
编码过程中,估计当前图像与缓存中已经解码图像的运动,并根据运动
信息获得预测图像,减去当前输入图像,得到运动补偿的残差图像;
将得到的残差图像输入到变换模块,获得变换系数;
对变换系数进行量化;
采用信息熵编码器输出量化后的变换系数,获得压缩后的比特流;
解码过程中,利用信息熵解码器将输入的比特流转换为量化后的变换系
数;利用反量化模块,获得重构的变换系数;
将变换系数输入到反变换模块,采用本发明方法,获得重建的误差图像;
根据运动信息和缓存申已经解码的图像获得预测图像,加重建的误差图
像,获得重建的解码图像。
最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方
案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员
应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精
神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当
中。