用于将基于第一变换核的输入视频代码转换为基于第二变换核的输出视频的方法和装置的制作方法

文档序号:7633275阅读:157来源:国知局
专利名称:用于将基于第一变换核的输入视频代码转换为基于第二变换核的输出视频的方法和装置的制作方法
技术领域
本发明一般地涉及压缩视频的代码转换,更具体地说,涉及基于不同变换核的压缩视频的代码转换。
背景技术
MPEG-2是由ISO/IEC的运动图像专家组(MPEG)提出的视频编码标准。它是目前应用最广泛的视频编码标准。其应用包括数字电视广播,直接卫星广播,DVD,视频监控等等。在MPEG-2和多种其它视频编码标准中所用的变换是离散余弦变换(DCT)。因此,MPEG编码的视频使用DCT系数。
依据H.264/AVC标准的先进的视频编码力图在包括MPEG-2的早期标准之上显著提高压缩效率。这个标准预计拥有广泛的应用,包括有效的视频存储,视频会议,以及通过数字用户线路(DSL)的视频广播。AVC标准采用低复杂度的整数变换,在下文中被称为HT。因此,编码的AVC视频使用HT系数。
随着H.264/AVC的发展,例如,对于移动广播,需要将MPEG-2格式下的视频转换成H.264/AVC格式下的视频。这将使更加有效的网络传输和存储成为可能。另外,也需要从H.264/AVC的视频转化成MPEG-2的视频以使得遗留的MPEG-2设备能够处理根据后来的H.264/AVC格式编码的视频。
代码转换器简单地解码一个输入格式下编码的输入视频,用以重建原始视频的图像像素,然后在输出格式下重新编码解码后的视频。这被称为像素域的代码转换。对于像素域的代码转换,变换系数必须从源格式映射到目标格式。
图1示出了从MPEG-2格式到H.264/AVC格式的变换系数的现有技术像素域转换,即,DCT至HT的转换。输入是DCT系数的一个8×8的块(X)101。反DCT(IDCT)110被应用于块101以恢复原始图像像素的8×8的块(x)102。
像素的8×8的块102被均匀地分割成四个4×4的块(x1,x2,x3,x4)103。四块103中的每一块被传递给对应的HT120,用以产生变换系数的四个4×4的块(Y1,Y2,Y3和Y4)104。变换系数的四个块被组合形成一个8×8的块(Y)105。该操作对视频中的所有块重复。
图2示出从AVC格式到MPEG格式的变换系数的像素域转换,即,HT至DOC的转换。HT系数210的四个4×4块中的每一块YY1,YY2,YY3和YY4经过反HT210产生四个4×4的像素块xx1,xx2,xx3,和xx4,它们被组合形成一个8×8的像素块202。然后,像素块xx被定标220,并经过DCT230产生8×8的DCT系数块(XX)203。该操作对视频中的所有块重复。
完全在压缩或变换域执行代码转换从而避免重构图像像素是所期望的。由于不需要完整的解码和重新编码,变换域的代码转换比现有技术的像素域代码转换更加有效。
变换域的代码转换需要在输入和输出视频格式的输入和输出变换系数之间进行转换。当输入和输出格式因为两种格式均基于同一种变换核而相同时,该转换是普通的。
然而,到目前为止,因为不存在直接转换基于不同变换核的变换系数的方法,具有不同变换核的不同输入和输出格式之间的变换域代码转换是不可能的。
因此,需要提供在具有不同变换核的视频变换系数之间的直接转换。

发明内容
本发明将基于第一变换核的输入视频代码转换为基于第二变换核的输出视频。第一和第二变换核是不同的,并且代码转换完全在变换域执行。单个变换核矩阵的系数被确定。然后,仅通过使用单个变换核矩阵,输入视频的输入系数被转换成输出视频的输出系数。
输入视频可以是基于DCT系数的,而输出视频可以是基于HT系数的。可替换地,输入视频可以是基于HT系数的,而输出视频可以是基于DCT系数的。另外,输出视频可以具有比输入视频低的空间分辨率。


图1是现有技术的像素域的DCT至HT转换的框图;图2是现有技术的像素域的HT至DCT转换的框图;图3是根据本发明的变换域的DCT至HT转换的框图;图4是根据本发明的变换域的HT至DCT转换的框图;图5是根据本发明的1D变换域的DCT至HT转换的实施例的流向图;图6是根据本发明的1D变换域的HT至DCT转换的实施例的流向图;图7是具有降采样的现有技术像素域DCT至HT转换的框图;图8是根据本发明的具有降采样的变换域DCT至HT转换的框图;图9是根据本发明的具有降采样的1D转换域DCT至HT变换的
具体实施例方式
我们的发明提供用于将基于第一变换核的输入视频格式代码转换为基于第二变换核的输出视频格式的方法和系统,其中第一和第二变换核是不同的,并且代码转换完全在变换域执行。这种代码转换可被用于MPEG-2和H.264/AVC格式之间的代码转换。
我们描述直接DCT至HT转换的方法,直接HT至DCT转换的方法,以及具有降采样到较低分辨率的直接DCT至HT转换的方法。另外,用于计算各种转换的快速算法和整数近似被描述。
我们描述几个使用每种转换的代码转换系统。
DCT至HT的转换图3示出了在变换域中从DCT到HT的变换系数的转换。S-变换310被应用于MPEG格式下的输入视频的输入DCT系数(X)301,用以产生AVC格式下的输出视频的输出HT系数(Y)302。
S-变换可以用变换核矩阵S表示,它是一个8×8的矩阵Y=S×X×ST,(1)其中,ST是S的转置。该变换被称为S-变换,将在下面进一步详细描述。
推导过程中所用的符号表示如下X -具有8×8矩阵形式的输入DCT系数Y -具有8×8矩阵形式的输出HT系数Y1,Y2,Y3,Y4-Y的四个4×4的子块x -X的IDCTx1,x2,x3,x4-x的四个4×4的子块× -乘法(·)T-矩阵转置H -H.264/AVC变换核矩阵H=111121-1-21-1-111-22-1---(2)]]>
T8-8×8的DCT变换核矩阵T8(k,n)=12Ckcos((2n+1)kπ16),k,n=0,1,2,...,7]]>其中,Ck=1/2k=01,k≠0]]>S-变换的推导过程在下面描述。
x1,x2,x3和x4的HT变换是Y1,Y2,Y3和Y4,即,Y1=H×x1×HT(3.1)Y2=H×x2×HT(3.2)Y3=H×x3×HT(3.3)Y4=H×x4×HT. (3.4)如果HH=H00H,]]>那么我们可以将公式(3.1)~(3.4)重写为单个公式Y=HH×x×HHT, (4)其中,x是X的IDCT,即,x=T8T×X×T8. (5)由此可以得到Y=HH×T8T×X×T8×HHT. (6)将公式(6)与公式(1)比较,我们可以得到S=HH×T8T(7)直接DCT至HT的变换由公式(1)给出,而它的变换核矩阵S当舍入成四位小数时是
S={1.4142 1.2815 0-0.4500 0 0.3007 0-0.25490 0.9236 2.2304 1.77990 -0.8638-0.1585 0.48240 -0.1056 00.72591.41421.0864 0-0.53080 0.1169 0.1585 -0.0922 0 1.0379 2.2304 1.97501.4142 -1.2815 00.45000 -0.300700.25490 0.9236 -2.2304 1.77990 -0.86380.1585 0.48240 0.1056 0-0.7259 1.4142-1.086400.53080 0.1169 -0.1585 -0.0922 0 1.0379 -2.2304 1.9750}HT至DCT的转换图4示出了通过直接将HT系数(YY)302映射到DCT系数(XX)301,在变换域中从HT到DCT的系数映射。这个映射被表示为从YY到XX的变换410XX=R×YY×RT(8)在本发明中,该变换被称为R-变换。
R-变换不是S-变换的逆变换,即,矩阵R不等于S的逆矩阵S-1。原因是为了便于整数实现,反HT的变换核矩阵不是HT变换核矩阵H的逆矩阵,而是H-1的一个被定标的型式。因此我们使用R-变换代替反S-变换来保持这种区别。
下面是一些附加的符号表示YY -具有8×8矩阵形式的输入HT系数XX -具有8×8矩阵形式的输出DCT系数YY1,YY2,YY3,YY4-YY的四个4×4的子块xx1,xx2,xx3,xx4-YY1,YY2,YY3,YY4的反HT,4×4的矩阵xx -xx1,xx2,xx3,xx4的组合R-变换的推导过程在下面描述。
设 是反HT的变换核矩阵,即,
H~inv=1111/211/2-1-11-1/2-111-11-1/2---(9)]]>,并且HHinv=H~inv00H~inv.---(10)]]>那么可以得到xx=HHinv×YY×HHinvT. (11)在反HT和DCT之间的“定标”运算可用除法运算近似。因此,我们得到XX=T8×(xx/64)×T8T=(T8×HHinv×YY×HHinvT×T8T)/64. (12)将公式(12)与公式(8)比较,我们可以得到R=(T8×HHinv)/8.(13)直接HT至DCT的变换由公式(8)给出,而它的变换核矩阵R当舍入成四位小数时是R={0.176800 0 0.17680000.16020.0577 -0.0132 0.0073 -0.1602 0.0577 0.0132 0.00730 0.1394 0 0.0099 0 -0.1394 0-0.0099-0.0562 0.1112 0.0907-0.0058 0.05620.1112 -0.0907 -0.00580 00.17680 0 00.1768 00.0376-0.0540 0.13580.0649 -0.0376 -0.0540 -0.1358 0.06490 -0.0099 0 0.1394 0 0.0099 0-0.1394-0.0319 0.0301 -0.0663 0.1234 0.03190.0301 0.0663 0.1234}快速DCT至HT的转换S中的稀疏性和对称性可被用来执行S-变换的快速计算。令值a,...,s为
a=1.4142,b=1.2815,c=0.45, d=0.3007,e=0.2549,f=0.9236,g=2.2304,h=1.7799,i=0.8638,j=0.1585,k=0.4824,l=0.1056,m=0.7259,n=1.0864,o=0.5308,p=0.1169,q=0.0922,r=1.0379,s=1.975.
我们有S={a b 0 -c 0 d 0 -e0 f g h 0 -i -jk0 -l0 m a n 0 -o0 p j -q 0 r g sa -b0 c 0 -d 0 e0 f -gh 0 -i j k0 l 0 -m a -n 0 o0 p -j-q 0 r -gs}就像公式(1)所提示的一样,2D S-变换是可分的变换。因此,它可以通过1D变换即列变换然后行变换而实现。所以,我们只描述1D变换的计算。
令z为一个8点的列向量,矩阵Z是z的1D S-变换。下面的步骤提供了从z有效地确定Z的方法。
m1=a×z[1]m2=b×z[2]-c×z[4]+d×z[6]-e×z[8]m3=g×z[3]-j×z[7]m4=f×z[2]+h×z[4]-i×z[6]+k×z[8]m5=a×z[5]m6=-l×z[2]+m×z[4]+n×z[6]-o×z[8]m7=j×z[3]+g×z[7]m8=p×z[2]-q×z[4]+r×z[6]+s×z[8]Z[1]=m1+m2Z[2]=m3+m4Z[3]=m5+m6Z[4]=m7+m8Z[5]=m1-m2Z[6]=m4-m3Z[7]=m5-m6Z[8]=m8-m7图5示出了如上所述的使用了值a,...,s的该方法的步骤。
该方法需要22次乘法和22次加法。由此可得2D S-变换需要352(16×22)次乘法和352(16×22)次加法,总共704次运算。
如图1所示的像素域的实现包括一个IDCT和四个HT变换,参见W.H.Chen、C.H.Smith和S.C.Fralick,“A Fast ComputationalAlgorithm for the Discrete Cosine Transform”,IEEE Trans.onCommunications,Vol.COM-25,pp.1004-1009,1977.通常被称为参考IDCT的该实现需要256(16×16)次乘法和416(16×26)次加法。每个HT变换需要16(2×8)次移位和64(4×4)次加法。四个HT变换需要64次移位和256次加法。由此可得像素域处理的所有计算需求是256次乘法,64次移位和672次加法,总共992次运算。
这样,与现有技术像素域实现相比,根据本发明的快速S-变换节省了约30%的运算。另外,S-变换只需用两个阶段实现,而使用参考IDCT的现有技术像素域处理需要六个阶段。
快速HT至DCT的转换类似S-变换的情况,令aa=0.1768, bb=0.1602, cc=0.0562, dd=0.0376, ee=0.0319ff=0.0577, gg=0.1394, hh=0.1112, ii=0.0540, jj=-0.0099,kk=0.0301, ll=0.0132, mm=0.0907, nn=0.1358, oo=0.0663,pp=0.0073, qq=0.0058, rr=0.0649, ss=0.1234.
我们有R={aa00 0 aa 0 0 0bbff -ll pp -bbffll pp0 gg 0 jj 0 -gg 0 -jj-cc hh mm-qqcc hh-mm-qq0 0aa0 0 0 aa 0dd-ii nnrr -dd-ii -nnrr0 -jj 0 gg 0 jj0 -gg-ee kk -oo ss ee kkoo ss}从公式(8)可知,2D R-变换也是可分的。它可以通过1D变换即列变换然后行变换来计算。因此,我们只示出了1D变换的计算。令ZZ为一个8点的列向量,zz是ZZ的1DR-变换。下面的步骤是用于从ZZ确定zz的方法。
m1=ZZ[1]+ZZ[5]m2=ZZ[1]-ZZ[5]m3=ZZ[2]-ZZ[6]m4=ZZ[2]+ZZ[6]m5=ZZ[3]+ZZ[7]m6=ZZ[3]-ZZ[7]m7=ZZ[4]-ZZ[8]m8=ZZ[4]+ZZ[8]zz[1]=aa×m1zz[2]=bb×m2+ff×m4-ll×m6+pp×m8zz[3]=gg×m3+jj×m7zz[4]=-cc×m2+hh×m4+mm×m6-qq×m8zz[5]=aa×m5zz[6]=dd×m2-ii×m4+nn×m6+rr×m8zz[7]=jj×m3+gg×m7zz[8]=-ee×m2+kk×m4-oo×m6+ss×m8图6示出了该方法的流向图表示。它实际上具有和图5同样的节点和连接,但具有相反的流向和不同的增益。因此,R-变换的复杂度和S-变换相同。
快速DCT至HT转换的整数近似通常浮点运算实现起来比整数运算代价高。因此,我们也提供了针对S-变换的整数近似。
我们用一个为2的幂的整数乘S,并利用整数变换核矩阵来采用整数运算执行运算。然后,作为结果的系数被通过移位按比例减小。在视频代码转换的应用中,移位运算可在量化过程中并入。因此,使用整数运算不需要额外的计算。
选择越大的整数,我们可以得到越高的准确度。在许多应用中,该数字被在其上执行代码转换的微处理器所限制。我们描述如何选择该数字以使得可使用在大多数微处理器的能力之内的32比特运算来执行计算。
对于DCT至HT转换的情况,DCT系数位于[-2048~2047]的范围内。这是一个4096的动态范围,需要12比特来表示。2D S-变换的增益最多是42,需要log2(42)=5.4比特。因此,需要17.4比特来表示最终的S-变换的结果。为了能够使用32比特运算,比例因子要小于(2(32-17.4))的平方根。满足该条件且为2的幂的最大整数是128。
因此,整数变换核矩阵是SI=round(S×128)={1811640 -580 38 0 -330 1182852280 -111-20620 -140 93 181139 0 -680 15 20 -120 133 285253181-164 0 58 0 -38 0 330 118-285 2280 -11120 620 14 0 -93181-1390 680 15 -20-120 133 -285 253}比较SI和S,我们注意到零元素的个数和对称性保持不变。因此,只要用矩阵SI而不是S的对应元素代替值a~s,针对S-变换推导出的方法和流向图同样适用于整数近似。
快速HT至DCT转换的整数近似我们也为R-变换方法提供整数近似。我们周一个为2的幂的整数乘R,并利用整数变换核矩阵来采用整数运算执行运算。然后,作为结果的系数被通过移位按比例减小。
对于HT至DCT转换的情况,HT系数具有12比特的动态范围。2D R-变换的增益最多是0.3416,它实际上将动态范围减小到11比特。为了能够使用32比特运算,比例因子必须小于(2(32-11))的平方根。满足该条件且为2的幂的最大整数是1024。
因此,整数变换核矩阵是RI=round(R×1024)={1810 0 0 1810 0 016459 -147 -164 59 14 70 1430 10 0 -143 0 -10-5811493 -6 58 114-93-60 0 1810 0 0 181038 -5513966 -38-55-139 660 -100 1430 10 0 -143-3331 -6812633 31 68 126}比较RI和R,我们注意到零元素的个数和对称性保持不变。因此,只要用矩阵RI而不是R的对应元素代替值aa~ss,针对R-变换推导出的方法和流向图同样适用于整数近似。
DCT至HT的降采样转换对于具有空间分辨率降低的MPEG-2到H.264/AVC的代码转换,具有降采样的DCT至HT系数转换是有效的。
图7示出了从DCT到HT的具有降采样的现有技术像素域系数转换的框图。左上方的4×4的块701,即输入DCT系数702的低频系数X1,经过反DCT变换710产生一个4×4的像素块(x1)703,然后经过HT变换720产生HT系数块(Yd)704。
图8示出了具有降采样的变换域中的DCT至HT的转换,以及8×8块的DCT系数X到4×4块的HT系数Yd的转换。与在像素域中一样,只有X802的左上方的4×4的块(X1)801被使用,其余三块均被丢弃。DCT至HT的降采样转换可被表示为使用4×4的变换核矩阵Sd从X1到Yd803的变换810Yd=Sd×X1×SdT(14)该变换被称为Sd-变换,将在下面进一步详细描述。
推导过程中所用的一些符号表示如下X -输入DCT系数,一个8×8的矩阵Yd-目标HT系数,一个4×4的矩阵X1,X2,X3,X4-X的四个4×4的子块x1-X1的IDCTT4-4×4的DCT变换核矩阵T4(k,n)=12Ckcos((2n+1)kπ8),k,n=0,1,2,3]]>其中,Ck=1/2,k=01,k≠0]]>Sd-变换的推导过程在下面提供。
X1的反DCT是x1,即,x1=T4T×X1×T4. (15)x1的HT变换是Yd,即,Yd=H×x1×HT=H×T4T×X1×X4×HT.
将公式(15)与公式(14)比较,我们得到Sd=H×T4T.(16)降采样的DCT至HT转换由公式(14)给出,而它的变换核矩阵Sd当舍入成四位小数时是Sd={20 0003.1543 0-0.224200 2000.2242 03.1543},其中α=2,β=3.1543,以及γ=0.2242。
遵循S-变换同样的原理,我们根据变换核矩阵Sd的稀疏性和对称性来推导方法。
图9示出了针对1D Sd变换的方法的流向图。2D变换也是可分的,并且可用1D变换实现。
DCT系数具有12比特的动态范围。2D Sd-变换的增益最多是11.42,它将动态范围增加到15.52比特。为了能够使用32比特运算,比例因子必须小于(2(32-15.52))的平方根。满足该条件并且为2的幂的最大整数是256。
因此,考虑了32比特运算的整数变换核矩阵给出如下SId=round(Sd×256)={5120 0 00 808 0 -570 0 512 00 570 808}只要用矩阵SId而不是Sd的对应元素代替值α~γ,针对Sd-变换的方法也适用于整数近似。
代码转换图10A-C示出了在本发明中描述的变换如何被用于代码转换内帧。
图10A示出了从输入的MPEG-2格式1001到输出的H.264/AVC格式1002的内帧代码转换的框图。输入被熵解码1003,并被反量化1004,以重构DCT系数,该系数通过使用S-变换310被转换为HT系数。HT系数随后经过量化1005和熵编码1006,产生输出的H.264/AVC比特流1002。
图10B示出了从输入的H.264/AVC格式1011到输出的MPEG-2格式1012的内帧代码转换的框图。输入被熵解码1013,并被反量化1014,以重构HT系数,该系数通过使用R-变换410被转换为DCT系数。DCT系数随后经过量化1015和熵编码1016,产生输出的MPEG-2比特流1012。
图10C示出了从输入的MPEG-2格式1021到输出的具有较低空间分辨率的H.264/AVC格式1022的内帧代码转换的框图。输入被熵解码1023,并被反量化1024,以重构DCT系数,该系数随后通过使用Sd-变换810被转换为较低空间分辨率的HT系数。HT系数经过量化1025和熵编码1026,产生输出的H.264/AVC比特流1022。
尽管本发明通过优选实施例的例子被描述,可以理解许多其它适配和修改可在本发明的精神和范围内进行。因此,覆盖所有这种在本发明的真实精神和范围内的变化和修改是所附的权利要求的目标。
权利要求
1.一种用于将基于第一变换核的输入视频代码转换为基于第二变换核的输出视频的方法,其中,第一和第二变换核是不同的,该方法包括确定单个变换核矩阵的系数;以及仅使用该单个变换核矩阵,完全在变换域将所述输入视频的输入系数转换为所述输出视频的输出系数。
2.权利要求1的方法,在其中输入视频基于DCT系数,而输出视频基于HT系数。
3.权利要求1的方法,在其中输入视频基于HT系数,而输出视频基于DCT系数。
4.权利要求1的方法,在其中输入视频具有MPEG-2编码格式,而输出视频具有AVC编码格式。
5.权利要求1的方法,在其中输入视频具有AVC编码格式,而输出视频具有MPEG-2编码格式。
6.权利要求1的方法,进一步包括在转换时降低空间分辨率。
7.权利要求1的方法,进一步包括用整数值近似所述单个变换核矩阵的系数。
8.权利要求7的方法,进一步包括定标所述单个变换核矩阵的系数;以及舍入所述被定标的系数。
9.权利要求1的方法,在其中输入视频包括内帧,该方法进一步包括熵解码所述输入视频的内帧;反量化解码后的内帧以重构所述输入系数;量化所述输出系数;以及熵编码量化后的输出系数以产生所述输出视频的内帧。
10.一种用于将具有输入格式的输入视频转换为具有输出格式的输出视频的代码转换器,所述输入和输出格式不同,该代码转换器包括单个变换核矩阵;以及用于完全在变换域仅使用该单个变换核矩阵来将所述输入视频的输入系数映射到所述输出视频的输出系数的装置。
全文摘要
一种方法和系统将基于第一变换核的输入视频代码转换为基于第二变换核的输出视频。第一和第二变换核是不同的,并且代码转换完全在变换域中执行。单个变换核矩阵的系数被确定,然后仅通过使用单个变换核矩阵,输入视频的输入系数被转换为输出视频的输出系数。输入视频可以是基于DCT系数的,而输出视频可以是基于HT系数的。可替换地,输入视频可以是基于HT系数的,而输出视频可以是基于DCT系数的。另外,输出视频可以具有比输入视频低的空间分辨率。
文档编号H04N7/50GK1860795SQ200580001040
公开日2006年11月8日 申请日期2005年5月30日 优先权日2004年6月1日
发明者辛军, 安东尼·维特罗, 孙惠方 申请人:三菱电机株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1