发明内容
本发明要解决的技术问题是,面向高清晰度数字视频编解码等应用,提
出一种用于编码处理的8输入/输出的整数变换/反变换方法及其装置,本发
明在降低复杂度的同时,还可以保证高效的编码效率。
本发明所述用于编码处理的8输入/输出的整数变换方法:包括如下的步
骤:
第一步,接收预测模块输出的图像参数X=(x1,x2,......,x8)’;
第二步,对通用的变换矩阵
W = z 4 , z 4 , z 4 , z 4 , z 4 , z 4 , z 4 , z 4 z 1 , z 3 , z 5 , z 7 , - z 7 , - z 5 , - z 3 , - z 1 z 2 , z 6 , - z 6 , - z 2 , - z 2 , - z 6 , z 6 , z 2 z 5 , z 7 , - z 1 , - z 3 , z 3 , z 1 , - z 7 , - z 5 z 4 , - z 4 , - z 4 , z 4 , z 4 , - z 4 , - z 4 , z 4 z 3 , - z 1 , - z 7 , z 5 , - z 5 , z 7 , z 1 , - z 3 z 6 , - z 2 , z 2 , - z 6 , - z 6 , z 2 , - z 2 , z 6 z 7 , - z 5 , z 3 , - z 1 , z 1 , - z 3 , z 5 , - z 7 , ]]>令W中系数满足:z1∶z3∶z5∶z7=5∶
4∶3∶1,得到:
T = a a a a a a a a 5 b 4 b 3 b b - b - 3 b - 4 b - 5 b cd ce - ce - cd - cd - ce ce cd 3 b b - 5 b - 4 b 4 b 5 b - b - 3 b a - a - a a a - a - a a 4 b - 5 b - b 3 b - 3 b b 5 b - 4 b ce - cd cd - ce - ce cd - cd ce b - 3 b 4 b - 5 b 5 b - 4 b 3 b - b , ]]>其中,a,b,c,d,e为整数;
第三步,对变换矩阵T进行分解,使每个分解后的矩阵便于将矩阵的乘
法运算转化为加法和移位运算;
第四步,利用上述矩阵分解的结果,进行快速计算矩阵Y=TX,得到了变
换的结果Y=(y1,y2,......,y8)’,即频域系数,代表了输入图像各个频段的信
号强度。
本发明所述用于编码处理的8输入/输出的整数反变换方法,包括如下的
步骤:
第一步,接收反量化后的系数Y=(y1,y2,......,y8)’;
第二步,由整数正变换的变换矩阵
T = a a a a a a a a 5 b 4 b 3 b b - b - 3 b - 4 b - 5 b cd ce - ce - cd - cd - ce ce cd 3 b b - 5 b - 4 b 4 b 5 b - b - 3 b a - a - a a a - a - a a 4 b - 5 b - b 3 b - 3 b b 5 b - 4 b ce - cd cd - ce - ce cd - cd ce b - 3 b 4 b - 5 b 5 b - 4 b 3 b - b , ]]>
得到其反变换矩阵为T’;
第三步,对反变换矩阵为T’进行分解,使每个分解后的矩阵便于将矩阵
的乘法运算转化为加法和移位运算;
第四步,利用上述矩阵分解的结果,进行快速计算矩阵X=T’Y,得到变
换的结果为:X=(x1,x2,......,x8)’,表示重构的图像或重构的残差图像。
本发明具有如下特点:
该变换/反变换方法中,由于将变换矩阵分解成若干个只含有1或2的幂
次的数的简单矩阵,因此整数变换可以通过加法和移位操作实现,易于硬件
设计,降低硬件设计成本。
该变换与反变换的运算精度高且不会溢出,不存在正变换与反变换的不
匹配的现象。
该变换/反变换符合高清晰度数字视频的统计特性,降相关效果好。
简言之,本发明在降低复杂度的同时,还可以保证高效的编码效率。
具体实施方式
下面结合附图详细说明本发明所述整数正变换方法和正变换方法。
如下式所示,W可以看作一种8×8整数变换的通式。其中z1,z2,......z7
为整数。对于输入X=(x1,x2,......,x8)’,变换的输出Y=WX。对于反变换来
说,变换矩阵为W’,即对于输入Y=(y1,y2,.......,y8)’,变换的输出X=W’Y。
W = z 4 , z 4 , z 4 , z 4 , z 4 , z 4 , z 4 , z 4 z 1 , z 3 , z 5 , z 7 , - z 7 , - z 5 , - z 3 , - z 1 z 2 , z 6 , - z 6 , - z 2 , - z 2 , - z 6 , z 6 , z 2 z 5 , z 7 , - z 1 , - z 3 , z 3 , z 1 , - z 7 , - z 5 z 4 , - z 4 , - z 4 , z 4 , z 4 , - z 4 , - z 4 , z 4 z 3 , - z 1 , - z 7 , z 5 , - z 5 , z 7 , z 1 , - z 3 z 6 , - z 2 , z 2 , - z 6 , - z 6 , z 2 , - z 2 , z 6 z 7 , - z 5 , z 3 , - z 1 , z 1 , - z 3 , z 5 , - z 7 ]]>
本发明采用符合一定规律的数字组合实现8输入/输出整数变换和反变
换,其关键是令W中系数满足:z1∶z3∶z5∶z7=5∶4∶3∶1。即变
换矩阵T可以写作如下的形式:
T = a a a a a a a a 5 b 4 b 3 b b - b - 3 b - 4 b - 5 b cd ce - ce - cd - cd - ce ce cd 3 b b - 5 b - 4 b 4 b 5 b - b - 3 b a - a - a a a - a - a a 4 b - 5 b - b 3 b - 3 b b 5 b - 4 b ce - cd cd - ce - ce cd - cd ce b - 3 b 4 b - 5 b 5 b - 4 b 3 b - b ]]>
反变换矩阵为T’。
其中a,b,c,d,e为整数。这样做的好处是,z1,z3,z5,z7满足一
定比例,即保证了变换的压缩效果,又可进一步实施有效的快速算法。另外
a,b,c相当于是可以从T中提取出来的比例因子,乘以a,b,c可以合并
到量化中进行。
为了提高变换效率,从而提高编解码的效率,主要是从应用DCT的蝶形
算法入手,因此需要对变换矩阵进行分解,以便采用快速算法。
T分解为:
T=PKB,
其中
B=B1B2B3,其中P,B1,B2,B3如下:
P = a 0 0 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 b 0 0 0 a 0 0 0 0 0 0 0 0 0 0 0 0 b 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 b ]]>
B 1 = 1 1 0 0 0 0 0 0 1 - 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 ]]> B 2 = 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 - 1 0 0 0 0 0 1 - 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 , ]]> B 3 = 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 - 1 0 1 0 0 0 0 - 1 0 0 0 1 0 0 - 1 0 0 0 0 0 1 - 1 0 0 0 ]]>
,这样可得:
K = G 1 G 1 G 2 G 4 ]]>
其中,
G1=[1],
G 2 = d e e - d ]]> G 4 = 5 4 3 1 3 1 - 5 - 4 4 - 5 - 1 3 1 - 3 4 - 5 ]]>
以上是T的分解过程,当然,还可有多种等价的矩阵分解形式。
对G4可进一步分解如下:
G4=g4+g3*g2*g1;
即计算G4X可以转化为计算:g4X+g3*g2*g1 X
其中:
g 1 = 1 0 1 0 0 1 0 0 1 0 - 1 0 0 0 0 1 0 - 1 0 - 1 0 0 1 0 0 1 0 - 1 1 0 0 0 , ]]> g 2 = 1000 0000 1100 0000 0010 0000 001 - 1 0000 0000 1000 0000 1100 0000 0010 0000 001 - 1 ]]> g 3 = 0410 0000 - 1004 0000 0000 100 - 4 0000 0410 ]]>
g 4 = 0 0 0 1 0 1 0 0 0 0 - 1 0 1 0 0 0 ]]>
图1给出的按蝶形算法分解的满足本发明规定系数关系的整数变换的正
变换快速算法的计算框图;左侧为输入X,右侧的输出为Y。结合图1,可
以看出:
1.首先经过8点的蝶形算法,计算出4个和与4个差。
2.第1步的4个差经过G4模块的处理后,再乘以b就得到了输出
Y2,Y4,Y6,Y8。
3.第1步的4个和经过4点的蝶形算法,计算出2个和与2个差。
4.第3步的2个差经过G2模块的处理后,再乘以c就得到了输出Y3,Y7。
5.第3步的2个和经过2点的蝶形算法,计算出1个和与1个差。分别
乘以a就得到了输出Y1,Y5。
6、对其中G4的计算,按照图3进行。
本发明中,对G4的快速算法如图3,其中乘4的操作实际上就是左移2
位,可以看出:输出一为:
out1=(input1+input3+input2)*4+(input1-input3+input4)。
下面说明本发明整数反变换方法的矩阵形式。
反变换的快速算法可以由正变换推得,反变换矩阵为T’,T’可分解成:
T’=B’K’P’,
B’=B3’B2’B1’,
由K的定义可得:
K ′ = G 1 ′ G 1 ′ G 2 ′ G 4 ′ , ]]>
由G1,G2的定义可知:
G1’=G1,G2’=G2,
由G4的定义可得:
G 4 ′ = 5 3 4 1 4 1 - 5 - 3 3 - 5 - 1 4 1 - 4 3 - 5 ]]>
G4’可分解为:G4’=4*h1+h2*h1,其中:
h 1 = 1 1 1 0 1 0 - 1 - 1 1 - 1 0 1 0 - 1 1 - 1 , ]]> h 2 = 0 0 1 0 0 0 0 - 1 - 1 0 0 0 0 1 0 0 ]]>
即计算G4’Y可以转化为分两步计算:
V=h1Y
G4’Y=4*V+h2*V
其中的乘4实际上就是左移两位。
本发明所述整数反变换的方法的数据流图形式描述,采用蝶形算法分解
见图2,左侧为输入Y,右侧的输出为X。
1.首先Y1与Y5分别乘以a,然后经过2点的蝶形算法,计算出和与差。
2.Y3,Y7分别乘以b,然后经过G2’模块的处理后,输出的两个值与第一
步输出的两个值经过4点的蝶形算法,计算出2个和与2个差。
3.Y2,Y4,Y6,Y8分别乘以c,然后经过G4’模块的处理后,输出的4个值
与第二步输出的4个值经过8点的蝶形算法,计算出4个和与4个差。
4.第三步的输出就是X1,X2,......,X8。
其中G4’的计算可按图4进行。图4中,
out1=(input1+input2+input3)*4+(input1-input2+input4)。
如图5所示,基于本发明的变换/反变换方法的思路,可以通过硬件模块
实现一般的视频编解码系统中的用于视频编码器中变换装置和反变换装置。
具体说明如下:
编码部分,估计当前图像与缓存中已经解码图像的运动,并根据运动信
息获得预测图像,减当前输入图像得到运动补偿的残差图像;
将得到的残差图像输入到变换模块,采用本发明方法,获得变换系数;
对变换系数进行量化;
采用信息熵编码器输出量化后的变换系数,获得压缩后的比特流。
解码部分,利用信息熵解码器将输入的比特流转换为量化后的变换系数;
利用反量化模块,获得重构的变换系数;
将变换系数输入到反变换模块,采用本发明方法,获得重建的误差图像;
根据运动信息和缓存中已经解码的图像获得预测图像,加重建的误差图
像,获得重建的解码图像。
最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方
案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员
应当理解:依然可对本发明进行修改或者等同替换,而不脱离本发明的精神
和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。