发明内容
本发明实施例的目的在于提出一种视频编码8x8整数变换方法,旨在解决现有技术DCT变换矩阵采用浮点乘法和加法,占用硬件资源多,计算复杂的大,计算精度不高,DCT正反变换不能完全匹配,变换不可逆的问题。
本发明实施例的方法是这样实现的,一种视频编码8x8整数变换方法,包括:
接收编码器中预测模块输出的8x8的图像残差数据X;
选取整数变换基,构建变换矩阵,
8x8的通用整数变换矩阵为:
矩阵C中,k0、k5、k6分别取值1、2、1,[k1 k2 k3 k4]为整数变换基;
正变换,对8x8的图像残差数据X进行整数变换,变换公式为Y=PXPT;其中P为所述的变换矩阵;X为所述的图像残差数据;
所述整数变换基为以下数值中的一个:
[15,15,10,3]、[6,7,5,1]。
进一步地,所述步骤“选取整数变换基,构建变换矩阵P”之后还可以包括步骤:
根据变换矩阵P,构建缩放矩阵PF,
PF=ZT*Z
其中,
ZT=[1/||m1|| 1/||m2|| 1/||m3|| 1/||m4|| 1/||m5|| 1/||m6|| 1/||m7|| 1/||m8||];
mi为变换矩阵P的行向量,i取值为1-8;||mi||为行向量mi的向量范数;
进一步地,所述步骤“正变换,对4x4的图像残差数据X进行整数变换,变换公式为Y=PXPT”之后还可以包括步骤:
对经过8x8正变换后的数据Y进行缩放处理,
是矩阵的点乘运算,Y是经过8x8正变换后的数据,PF是缩放矩阵,Y′是本缩放处理后的输出值,代表视频数据变换到频域上的信息;
其中,所述正变换中的变换的基本单元是形如y=Px的8点一维变换,其中x=[x1 x2 x3 x4 x5 x6 x7 x8]T,输出的
y=[y1 y2 y3 y4 y5 y6 y7 y8]T,x1 x2 x3 x4 x5 x6 x7 x8为正变换的输入八点数值;y1 y2 y3 y4 y5 y6 y7 y8为正变换的八点输出数值。
当整数变换基取值为[15,15,10,3]时:
所述变换矩阵
ZT=[0.35355 0.029907 0.22361 0.029907 0.35355 0.029907 0.22361 0.029907]
“对8x8的图像残差数据X进行整数变换,变换公式为Y=PXPT”计算过程如下:
b1=x1-x8;b2=x2-x7;b3=x3-x6;b4=x4-x5;
b5=x1+x8;b6=x2+x7;b7=x3+x6;b8=x4+x5;
a1=b5+b8;a2=b6+b7;a3=b5-b8;a4=b6-b7;
y1=a1+a2;y5=a1-a2;y3=a3<<1+a4;y7=a3-a4<<1;
再完成以下计算步骤:
c1=b1<<4-b1;c2=b2<<4-b2;c3=b3<<4-b3;c4=b4<<4-b4;
d1=b1<<3+b1<<1;d2=b2<<3+b2<<1;d3=b3<<3+b3<<1;d4=b4<<3+b4<<1
e1=b1<<1+b1;e2=b2<<1+b2;e3=b3<<1+b3;e4=b4<<1+b4
y2=c1+c2+d3+e4;y4=c1-e2-c3-d4;y6=d1-c2+e3+c4;
y8=e1-d2+c3-c4;
其中“<<”表示向左移位运算,优先级高于加减法,基本单元y=Px共需要40个加法和14个移位。
当整数变换基取值为[6,7,5,1]时:
所述变换矩阵
ZT=[0.35355 0.067116 0.22361 0.067116 0.35355 0.067116 0.22361 0.067116]
缩放矩阵为:
“对8x8的图像残差数据X进行整数变换,变换公式为Y=PXPT”计算过程如下:
b1=x1-x8;b2=x2-x7;b3=x3-x6;b4=x4-x5;
b5=x1+x8;b6=x2+x7;b7=x3+x6;b8=x4+x5;
a1=b5+b8;a2=b6+b7;a3=b5-b8;a4=b6-b7;
y1=a1+a2;y5=a1-a2;y3=a3<<1+a4;y7=a3-a4<<1;
再完成以下计算步骤:
c1=b1<<2+b1<<1+b4;c2=b2<<2+b2<<1-a3;c3=b2+b3<<2+b3<<1;
c4=-a1+b4<<2+b4<<1;
y2=c1+c2+c3;y4=c1-c3-c4;y6=c1-c2+c4;y8=-c2+c3-c4;
其中“<<”表示向左移位运算,优先级高于加减法,基本单元y=Px共需要32个加法和10个移位。
本发明的有益效果:
本发明实施例提出的二组的8x8的整数变换矩阵,并且给出了变换的快速算法,本发明实施例的变换方法能量集中性能优秀,能量集中度接近8x8DCT,可以极大地消除视频数据在变换空间上的相关性。计算复杂度低,可通过加法和移位来实现,易于硬件实现,并且运算精度高,不存在正反变换不匹配的问题。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
本发明通过接收编码器中预测模块输出的8x8的图像残差数据X,选取不同整数变换基([15,15,10,3]或[6,7,5,1]);对图像残差数据X进行正变换(Y=PXPT),并根据不同的整数变化基,采用相应的整数变换计算方法;构建变换矩阵P,根据变换矩阵P,构建缩放矩阵PF(PF=ZT*Z);对经过8x8正变换后的数据Y进行缩放处理。
实施例一
如图1所示为本发明实施例1一种视频编码8x8整数变换方法,所述方法包括以下步骤:
S101,接收编码器中预测模块输出的8x8的图像残差数据X;
S102,选取整数变换基,构建变换矩阵P;
8x8的通用整数变换矩阵为:
矩阵C中,k0、k5、k6分别取值1、2、1。定义[k1 k2 k3 k4]为整数变换基构建成变换矩阵P。
本发明实施例中,整数变换基可选取以下数值中的一个:
[15,15,10,3]、[6,7,5,1]。
S103,根据变换矩阵P,构建缩放矩阵PF;
PF=ZT*Z
其中,
ZT=[1/||m1|| 1/||m2|| 1/||m3|| 1/||m4|| 1/||m5|| 1/||m6|| 1/||m7|| 1/||m8||];
mi为变换矩阵P的行向量,i取值为1-8;||mi||为行向量mi的向量范数;
S104,正变换,对8x8的图像残差数据X进行整数变换,变换公式为Y=PXPT;其中P为所述的变换矩阵;X为所述的图像残差数据;
变换的基本单元是形如y=Px的8点一维变换,其中
x=[x1 x2 x3 x4 x5 x6 x7 x8]T,输出的
y=[y1 y2 y3 y4 y5 y6 y7 y8]T,x1 x2 x3 x4 x5 x6 x7 x8表示整数变换的一维正变换的输入八点数值;y1 y2 y3 y4 y5 y6 y7 y8为正变换的八点输出数值;
根据不同的整数变化基,采用相应的整数变换计算方法。
S105,对经过8x8正变换后的数据Y进行缩放处理;
是矩阵的点乘运算,Y是经过8x8正变换后的数据,PF是缩放矩阵,Y′是本缩放处理后的输出值,代表视频数据变换到频域上的信息。
本发明实施例的变换方法能量集中性能优秀,能量集中度接近8x8DCT,可以极大地消除视频数据在变换空间上的相关性;计算复杂度低,可通过加法和移位来实现,易于硬件实现,并且运算精度高,不存在正反变换不匹配的问题。
实施例二
以下为本发明实施例2的一种视频编码8x8整数变换方法,本发明实施例2选取[15,15,10,3]为8x8通用整数变换矩阵的整数变换基,所述方法包括以下步骤:
S201,接收编码器中预测模块输出的8x8的图像残差数据X;
S202,选取整数变换基,构建变换矩阵P;
8x8的通用整数变换矩阵为:
矩阵C中,k0、k5、k6分别取值1、2、1。定义[k1 k2 k3 k4]为整数变换基构建成变换矩阵P。
本发明实施例选取[15,15,10,3]为整数变换基,构建成变换矩阵P。
当变换基为[15,15,10,3]时,变换矩阵P为:
S203,根据变换矩阵P,构建缩放矩阵PF;
PF=ZT*Z
其中,
ZT=[1/||m1|| 1/||m2|| 1/||m3|| 1/||m4|| 1/||m5|| 1/||m6|| 1/||m7|| 1/||m8||];
mi为变换矩阵P的行向量,i取值为1-8;||mi||为行向量mi的向量范数;
当变换矩阵P的变换基为[15,15,10,3]时,
ZT=[0.35355 0.029907 0.22361 0.029907 0.35355 0.029907 0.22361 0.029907]
缩放矩阵为:
S204,正变换,对8x8的图像残差数据X进行整数变换,变换公式为Y=PXPT;其中P为所述的变换矩阵;X为所述的图像残差数据;
变换的基本单元是形如y=Px的8点一维变换,其中
x=[x1 x2 x3 x4 x5 x6 x7 x8]T,输出的
y=[y1 y2 y3 y4 y5 y6 y7 y8]T,x1 x2 x3 x4 x5 x6 x7 x8表示整数变换的一维正变换的输入八点数值;y1 y2 y3 y4 y5 y6 y7 y8为正变换的八点输出数值;
所述整数变换的计算过程如下:
b1=x1-x8;b2=x2-x7;b3=x3-x6;b4=x4-x5;
b5=x1+x8;b6=x2+x7;b7=x3+x6;b8=x4+x5;
a1=b5+b8;a2=b6+b7;a3=b5-b8;a4=b6-b7;
y1=a1+a2;y5=a1-a2;y3=a3<<1+a4;y7=a3-a4<<1;
其中,b1、b2、b3、b4、b5、b6、b7、b8,a1、a2、a3、a4为整数变换的中间变量;
再完成以下计算步骤:
c1=b1<<4-b1;c2=b2<<4-b2;c3=b3<<4-b3;c4=b4<<4-b4;
d1=b1<<3+b1<<1;d2=b2<<3+b2<<1;d3=b3<<3+b3<<1;
d4=b4<<3+b4<<1;
e1=b1<<1+b1;e2=b2<<1+b2;e3=b3<<1+b3;e4=b4<<1+b4;
y2=c1+c2+d3+e4;y4=c1-e2-c3-d4;y6=d1-c2+e3+c4;
y8=e1-d2+c3-c4;
其中,c1、c2、c3、c4,d1、d2、d3、d4,e1、e2、e3、e4为整数变换的中间变量;
其中“<<”表示向左移位运算,优先级高于加减法,基本单元y=Px共需要40个加法和14个移位。
此变换基的正变换快速计算方法如图2所示,其中计算模块M1如图3所示。其中x1 x2 x3 x4 x5 x6 x7 x8表示整数变换的一维正变换的输入八点数值;y1 y2 y3 y4 y5 y6 y7 y8为正变换的八点输出数值;数据处理方向是从左向右,相交于一圆点的中间变量值等于圆点左侧线表示的数据相加;方形表示数据乘一个系数;“-”表示取负值;“2”表示乘2,即左移一位;“4”表示乘4,即左移两位;“8”表示乘8,即左移3位,“16”表示乘16,即左移4位。
“in1”“in2”“in3”“in4”表示M1模块的输入数据,分别与b4、b3、b2、b1相连;“out1”“out2”“out3”“out4”表示M1模块的输出数据,分别与y2、y4、y6、y8相连。
S205,对经过8x8正变换后的数据Y进行缩放处理;
是矩阵的点乘运算,Y是经过8x8正变换后的数据,PF是缩放矩阵,
Y′是本缩放处理后的输出值,代表视频数据变换到频域上的信息。
本发明实施例的变换方法能量集中性能优秀,能量集中度接近8x8DCT,可以极大地消除视频数据在变换空间上的相关性;计算复杂度低,可通过加法和移位来实现,易于硬件实现,并且运算精度高,不存在正反变换不匹配的问题。
实施例三
以下为本发明实施例3的一种视频编码8x8整数变换方法,本发明实施例3选取[6,7,5,1]为8x8通用整数变换矩阵的整数变换基,所述方法包括以下步骤:
S301,接收编码器中预测模块输出的8x8的图像残差数据X。
S302,选取整数变换基,构建变换矩阵P;
8x8的通用整数变换矩阵为:
矩阵C中,k0、k5、k6分别取值1、2、1。定义[k1 k2 k3 k4]为整数变换基构建成变换矩阵P。
本发明实施例选取[6,7,5,1]为整数变换基,构建成变换矩阵P。
当变换基为[6,7,5,1]时,变换矩阵P为:
S303,根据变换矩阵P,构建缩放矩阵PF;
PF=ZT*Z
其中,
ZT=[1/||m1|| 1/||m2|| 1/||m3|| 1/||m4|| 1/||m5|| 1/||m6|| 1/||m7|| 1/||m8||];
mi为变换矩阵P的行向量,i取值为1-8;||mi||为行向量mi的向量范数;
当变换矩阵P的变换基为[6,7,5,1]时,
ZT=[0.35355 0.067116 0.22361 0.067116 0.35355 0.067116 0.22361 0.067116]
缩放矩阵为:
S304,正变换,对8x8的图像残差数据X进行整数变换,变换公式为Y=PXPT;其中P为所述的变换矩阵;X为所述的图像残差数据;
变换的基本单元是形如y=Px的8点一维变换,其中
x=[x1 x2 x3 x4 x5 x6 x7 x8]T,输出的
y=[y1 y2 y3 y4 y5 y6 y7 y8]T,x1 x2 x3 x4 x5 x6 x7 x8表示整数变换的一维正变换的输入八点数值;y1 y2 y3 y4 y5 y6 y7 y8为正变换的八点输出数值;
所述整数变换的计算过程如下:
b1=x1-x8;b2=x2-x7;b3=x3-x6;b4=x4-x5;
b5=x1+x8;b6=x2+x7;b7=x3+x6;b8=x4+x5;
a1=b5+b8;a2=b6+b7;a3=b5-b8;a4=b6-b7;
y1=a1+a2;y5=a1-a2;y3=a3<<1+a4;y7=a3-a4<<1;
其中,b1、b2、b3、b4、b5、b6、b7、b8,a1、a2、a3、a4为整数变换的中间变量;
再完成以下计算步骤:
c1=b1<<2+b1<<1+b4;c2=b2<<2+b2<<1-a3;c3=b2+b3<<2+b3<<1;
c4=-a1+b4<<2+b4<<1;
y2=c1+c2+c3;y4=c1-c3-c4;y6=c1-c2+c4;y8=-c2+c3-c4;
其中,c1、c2、c3、c4为整数变换的中间变量;
其中“<<”表示向左移位运算,优先级高于加减法,基本单元y=Px共需要32个加法和10个移位。
此变换基的正变换快速计算方法如图4所示,其中计算模块M2如图5所示。其中x1 x2 x3 x4 x5 x6 x7 x8表示整数变换的一维正变换的输入四点数值;y1 y2 y3 y4 y5 y6 y7 y8为正变换的四点输出数值;数据处理方向是从左向右,相交于一圆点的中间变量值等于圆点左侧线表示的数据相加;方形表示数据乘一个系数;“-”表示取负值;“2”表示乘2,即左移一位;“4”表示乘4,即左移两位。
“in1”“in2”“in3”“in4”表示M2模块的输入数据,分别与b4、b3、b2、b1相连;“out1”“out2”“out3”“out4”表示M2模块的输出数据,分别与y2、y4、y6、y8相连。
S305,对经过8x8正变换后数据Y进行缩放处理;
是矩阵的点乘运算,Y是经过8x8正变换后的数据,PF是缩放矩阵,Y′是本缩放处理后的输出值,代表视频数据变换到频域上的信息。
本发明实施例的变换方法能量集中性能优秀,能量集中度接近8x8DCT,可以极大地消除视频数据在变换空间上的相关性;计算复杂度低,可通过加法和移位来实现,易于硬件实现,并且运算精度高,不存正反变换不匹配的问题。
本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质可以为R0M、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。