专利名称:二维反变换装置的制作方法
技术领域:
本发明涉及图像、视频编码和处理领域,特别涉及反变换模块的大规模 集成电路设计。
背景技术:
多媒体应用领域,视频压缩标准层出不穷,形成多标准共存的局面,目
前广泛应用的视频压缩标准有H.264、 AVS(数字音视频编解码标准)、VC-1 、 RealVideo, MPEG-4 (运动图像专家小组-4) 、 H.263等,图像压缩标准有 JPEG (联合图像专家组)等。
对于一个普适的多媒体应用终端,比如手机,有必要支持多种标准,以 实现对不同格式媒体的播放。在符合这些标准的解码器中,反变换模块是必 不可少的组成部分。例如申请号为9/798, 346的美国专利就涉及一种视频 图像的解码技术,其中就使用了反离散余弦变换(Inverse Discrete Cosine Transform,简称"IDCT")。
目前,解码器多标准的实现采用的方式分别对单个标准进行实现,然后 叠加;也有双标准的硬件实现,主要是针对MPEG-2和H.264的实现。前者 的变换模块的设计实际只需要考虑单一变换情况,比如整数余弦变换 (Integer Cosine Transform,简称"ICT")、离散余弦变换(Discrete Cosine Transform,简称"DCT"),这样需要比较大的硬件面积,增加芯片成本; 后者考虑是8x8DCT和4x4ICT兼容的情况。而对于其他标准来说,反变换 模块不仅有8x8 DCT、 4x4 ICT,还有8x8 ICT、 8x4 ICT、 4x8 ICT等等, 而且各个变换中的移位饱和操作、位宽等不同,极大地阻碍了这些变换的统一性。比如8x8 ICT的实现跟8x8 DCT的实现就有非常迥异的差别。
可见,视频解码的硬件实现往往需要对多个标准进行支持,各个标准的 反变换算法存在差异,如果针对每个标准设计相应反变换模块,对硬件资源 消耗较大。
发明内容
本发明的目的在于提供一种二维反变换装置,可以用统一的硬件架构兼 容多种视频、图像标准的反变换。
为解决上述技术问题,本发明的实施方式提供了一种二维反变换装置, 包括
变换系数生成单元,用于存储不同标准的反变换矩阵系数;
一维变换模块,用于根据变换系数生成单元提供的系数对输入的二维矩 阵数据的每一行或列分别进行一维变换操作;
转置寄存器,用于緩存输入的数据,并输出经转置的数据;
控制单元,用于对处理过程进行控制;
在控制单元的控制下, 一维变换模块对输入的二维矩阵数据在一个维度 上进行变换操作后输出到转置寄存器完成转置,再次输入到一维变换模块进 行另 一个维度上的变换操作后输出。
本发明实施方式与现有技术相比,主要区别及其效果在于
先对二维矩阵在一个维度上进行处理,转置后再在相同的处理模块中对 该二维矩阵在另一个维度上进行处理,将处理中用到的不同标准的反变换矩 阵系数集中存贮,根据处理的需要使用相应的系数。可以用统一的硬件架构 兼容多种视频、图像标准的反变换,达到减小硬件开销,降低设计成本的目 的。进一步地,将所有的反变换统一成最多四个步骤,即一维行变换、移位 饱和、 一维列变换、移位饱和,这样只需要根据具体的标准对重排单元、矩 阵乘法单元、矩阵加减单元、移位饱和单元和转置寄存器的处理顺序以及反 变换的系数进行配置就可以实现所有的反变换。
进一步地,通过将不同大小的矩阵转化为4x4的矩阵进行处理,可以 使用统一的硬件兼容不同大小的反变换。
图1是本发明实施方式中二维反变换装置结构示意图; 图2是本发明实施方式中重排单元功能示意图; 图3是本发明实施方式中矩阵加减单元功能示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发 明的实施方式作进一步地详细描述。
不同标准的反变换技术差别很大,集中体现在反变换类型不同、反变换 大小不同、反变换位宽不同以及反变换步骤不同。在反变换类型上存在IDCT、 反整数余弦变换(Inverse Integer Cosine Transform,简称"IICT")等; 反变换大小上存在8x8、 8x4、 4x8、 4x4;反变换位宽更是不同标准有 不同的要求;反变换步骤方面,IICT有严格的要求,有的需要中间移位饱和, 有的不需要,而IDCT没有严格的步骤要求。本申请从这些差异方面入手, 设计统一的硬件实现算法结构。针对不同类型的反变换,抓住变换矩阵的双 尺度对称性,而忽略矩阵具体元素以及元素间的差异;针对不同大小的反变 换,采用递归的方法,将其统一称为一个4x4矩阵乘法模块;针对不同位宽,按最大位宽要求实现;针对步骤的不同,将反变换的步骤统一称为四步, 对于每步设计其相应的模块。在具体采用某个标准的解码功能时,从这些模 块中选择需要的单元,配置组合实现其功能。这种技术方案可以提高硬件的 复用效率,在集成电路上实现时降低了硬件的面积。
不同标准对反变换的规定差别很大,但是其实现步骤可以统一归结为如 下四步
S1: —维行变换,对反变换输入数据块的每行进行一维变换,表示为<formula>formula see original document page 7</formula>
S2:移位饱和,对S1的输出结果r进行移位饱和操作,表示为 <formula>formula see original document page 7</formula>S3: —维列变换,对S2的输出结果y进行一维列变换,表示为 S4:移位饱和,对反变换的输出结果Zw^进行移位饱和操作,得到残差
数据i wxM,表示为<formula>formula see original document page 7</formula>在上述S1 S4的步骤中,WxM矩阵X;vxw是反变换输入数据;iVxM矩 阵Z^M是反变换结果;Qv是iVxiV的列变换矩阵;CM是MxM的行变换矩阵, 上标T表示转置矩阵的含义;^xw—般代表残差数据块;^xM、 !^M是指中 间结果。移位饱和对数据进行右移截尾,截尾前需要舍入处理。S2中w,代表 右移截尾的位数;A,是舍入数, 一般等于2w-i。 S4中W2代表右移截尾的位数; A2是舍入数, 一般等于2"-1。
当然,不是每个标准都必须完整包含这四步,比如H.264、 RealVideo 就没有S2步骤,即不需要进行中间的移位饱和操作。
反变换的大小有8x8、 8x4、 4x8、 4x4。从一维角度来看,有8点 的变换、4点的变换。在本申请中,可以统一转化为4点的反变换来处理。对于8点的一维反变换,它的矩阵Q都满足形式:
<formula>formula see original document page 8</formula>
而对于4点的反变换矩阵C4,可以统一表示为
<formula>formula see original document page 8</formula>变换矩阵均满足对称性C4,2/) = C4A^1-,2/) Cw (_/, 2/ +1) = -Cw (w - W, 2/ +1) 。 cw (y, /)表示cw第(,/)各元素。
进一步,利用反变换矩阵的对称性,G可以表示为
<formula>formula see original document page 8</formula>其中
<formula>formula see original document page 8</formula><formula>formula see original document page 9</formula>
尸、e为排列矩阵,左乘排列矩阵实现矩阵行交换功能,右乘排列矩阵 实现矩阵列交换功能。
<formula>formula see original document page 9</formula>
8x8 二维反变换的实现方法如下: S1: —维行变换为
<formula>formula see original document page 9</formula>
,》u/、》肌、义w、 J^o分别表示f左上4x4子 矩阵、右上4x4子矩阵、左下4x4子矩阵、右下4x4子矩阵。 得到
<formula>formula see original document page 9</formula>
可见r由4个4x4矩阵乘法和4个矩阵加减法得到。4个矩阵乘法为 iij/C〖、》肌Cf 、》^CJ 、 ^dCJ ; 4个矩阵加减法为》^C〖+》肌d 、 (f^C〖-义肌CJ)尸、》^c〖+》如cj、(》^c〖-i朋cj)p。其中,矩阵乘法分成两
类 一类是右乘Cf,称为e类; 一类是右乘C称为。类。 S2:移位饱和<formula>formula see original document page 10</formula>可见Z由4个4x4矩阵乘法和4个矩阵加减法得到。4个矩阵乘法为 C/^、 C0fiD、 C/肌、C。f^; 4个头巨P车力口;咸'法为C;fa;+CogD、尸《CVPuy—C0&D Cj^+C。&、 ,(C/肌-C。f肪)。其中,矩阵乘法分成两类 一类是左乘C" 称为£类; 一类是左乘C。,称为0类。
S4:移4立々包和为
i = (Z + A2) w2,每个系数需要1个加法和1次移位。 因此,总结起来,完成8x8二维反变换的步骤如下
(a) 对反变换输入数据义进行列重排,得到^;
(b) 对4个4x4矩阵乘法进行运算,即计算》u/CJ、》肌CJ、 iiDCJ,
(C )进行矩阵加减运算,4个矩阵加减法为fwCj +》^CJ 、
(》u;CT-》肌(^)尸、J^dCJ+》朋CJ"、 (J^。c〖-i^Co"尸,得到r; (d)如有规定,对r进行移位饱和,得到y;
10
,&"、 ?肌、&D、 f肌分别表示f左上4x4子矩阵
右上4x4子矩阵、左下4x4子矩阵、右下4x4子矩阵,(e) 对y进行行重排,得到f;
(f) 对4个4x4矩阵乘法进行运算,即计算Cju;、 C。fiD、 Cefw、 C。ffl
(g )进行矩阵加减运算,4个矩阵加减法为Cef^ r(cei^-c。fiD)、 cefw+c。f^、严(c/肌-c。f朋),得到反变换结果z矩阵。
(h)对z进行移位饱和,得到残差矩阵i 。
4x8 二维反变换的实现方法如下: S1: —维行变换为
r = zc〖=,
记义=%^ =「& A、 A分别表示f左4x4子矩阵、右4x4子
矩阵,
得到
义i ^o
CJ" c〖尸 CJ —CJ尸
可见r由2个4x4矩阵乘法和2个矩阵加减法得到。2个矩阵乘法为 Ad、 前者为e类,后者为。类;2个矩阵加减法为ACJ+^CT、
S2:移位々包和为
r-(r+A,)》w,每个数需要1个加法和1次移位,
S3: —维列变换为
z = c4y,
定义7 = [^ &], &、 ^分别表示y左4x4子矩阵、右4x4子矩阵。所以2 = [<:4& C4&],可见z由2个4x4矩阵乘法得到,属于£类。 S4:移^f立々包和为
/ = (Z + A2) w2,每个需要1个加法和1次移位。 因此,总结起来,完成8x4二维反变换的步骤如下
(a) 对反变换输入数据X进行列重排,得到i;
(b) 对2个4x4矩阵乘法进行运算,即计算ACT、
(c )进行矩阵加减运算,2个矩阵加减法为Acj+Act 、 (Ac〖-Act )尸,
得到r;
(d) 如有规定,对r进行移位饱和,得到r;
(e) 对2个4x4矩阵乘法进行运算,即计算2 = (^4}^ =
,得 到反变换结果z矩阵。
(f) 对z进行移位饱和,得到残差矩阵/ 。
4x4 二维反变换的实现方法如下 S1: —维行变换为 r = xc〖。
即进行1个4x4矩阵乘法运算,属于e类。 S2:移^f立々包和为
y"r+A,)》w,每个数需要1个加法和1次移位。
S3: —维列变换为
即进行1个4x4矩阵乘法运算,属于£类。S4:移^f立饱和为
/ = (Z + A2) w2,每个数需要1个加法和1次移位。 因此,总结起来,完成4x4二维反变换的步骤如下
(a) 对1个4x4矩阵乘法进行运算,即计算得到r-xCT;
(b) 如有规定,对r进行移位饱和,得到r;
(c) 对1个4x4矩阵乘法进行运算,即计算z-cj,得到反变换结果 Z矩阵。
(d) 对Z进行移位饱和,得到残差矩阵及。
如果有比8x8、 8x4更大的二维反变换,如16x8、 16x16等,也可 以用类似8x8、 8x4转换成4x4的方法,先将16x8、 16x16转换成8 x8,再转换成4x4。因为方法类似,这里不再详细展开了。
综合这些不同大小大反变换实现方法和步骤来看,它们有很多共同使用 的模块。其中包含4个步骤的8x8反变换所用的模块最多,相当一个全集; 其它变换可以看成它的子集,从其中的模块选取几个组成自己的实现方案。 作为这个全集的二维反变换装置的结构如图1所示。
该二维反变换装置包括
重排单元,用于对输入的二维矩阵数据进行或列的重排后输出到矩阵乘
法单元。具体地说,重排单元完成(')f和e(')的操作,(')f表示右乘^,
表示左乘2。图2是重排单元功能示意图,旨在调整输入数据U0 U7的顺序, 使其按照Vi的顺序。
变换系数生成单元,用于存储不同标准的反变换矩阵系数。
矩阵乘法单元,用于根据变换系数生成单元提供的系数对输入的数据进行矩阵乘法操作。矩阵乘法单元包括e类乘法和。类乘法,分别完成与Ce和C。 或者它们的转置相乘(包括左乘和右乘)。图3是矩阵减加单元功能示意图, 对e类乘法和o类乘法两组输出结果进行加减操作。0 3是一组数据,4~7属 于另一组数据,通过加减组合后得到新的输出数据,其中,
e类乘法实现如下矩阵乘法关系
<formula>formula see original document page 14</formula>
o类乘法实现如下矩阵乘法关系
<formula>formula see original document page 14</formula>
矩阵加减单元,用于对矩阵乘法单元输出的数据进行矩阵加减法操作。
移位饱和单元,用于对从矩阵加减单元输入的数据进行移位饱和操作后 输出。
转置寄存器,用于緩存输入的数据,并输出经转置的数据。 一种实现的 方法是以行的方式存入数据,以列的方式读出数据。
控制单元,用于对处理过程进行控制,协调整个框架进行工作。
地址生成单元,用于根据控制单元的指令,为需要变换系数生成单元输 出的反变换矩阵系数生成地址,为需要转置寄存器输出的数据生成地址。换 句话说,地址生成单元就是用于寻找变换系数、转置寄存器等的值。
其中矩阵乘法单元和矩阵加减单元都是用于对输入的二维矩阵数据的 每一行或列分别进行一维变换操作的,所以可以合称为 一维变换模块。
图1所示的二维反变换装置可以在集成电路中实现,也可以用分立元件
实现。其典型的动态工作过程如下从外部存储器(不在二维反变换装置中)中读入数据,由重排单元进行 重排,重排后的数据送到矩阵乘法单元和矩阵加减单元进行一维行变换,变 换中所要用到的反变换系数由变换系数生成单元提供,此后由移位饱和单元 进行移位饱和处理,再送到转置寄存器进行緩存,转置寄存器输出经转置的 数据,重新送到重排单元进行重排,再送到矩阵乘法单元和矩阵加减单元进 行一维列变换(因为数据已被转置,所以这次是对列进行处理),由移位饱 和单元进行移位饱和处理后输出到外部存储器。
控制单元对上述过程进行总体的控制,控制单元通过地址生成单元生成 地址,指令变换系数生成单元向矩阵乘法单元输出合适的反变换系数,通常 在一维行变换和一维列变换时地址是不同的,在以不同的标准进行反变换时 地址也是不同的。控制单元还通过地址生成单元生成地址以控制转置寄存器 输出合适的数据。
上述动态工作过程是先对行进行处理再对列进行处理,在某些应用环境 中也可以先对列进行处理再对行进行处理。
采用图1所示的统一的硬件架构,可以兼容多种视频、图像标准的反变 换,达到减小硬件开销,降低设计成本的目的。
在图1的结构中,具体采用一个标准时,可以灵活配置成相应的结构。
比如对于H.264的变换,不需要重排单元、o类乘法部分、矩阵加减单元; 对于AVS变换,则每个单元都需要;对于RealVideo的反变换,不需要重 排单元、o类乘法部分、矩阵加减单元;这些配置通过控制器来实现。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和 描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各 种改变,而不偏离本发明的精神和范围。
权利要求
1.一种二维反变换装置,其特征在于,包括变换系数生成单元,用于存储不同标准的反变换矩阵系数;一维变换模块,用于根据所述变换系数生成单元提供的系数对输入的二维矩阵数据的每一行或列分别进行一维变换操作;转置寄存器,用于缓存输入的数据,并输出经转置的数据;控制单元,用于对处理过程进行控制;在所述控制单元的控制下,所述一维变换模块对输入的二维矩阵数据在一个维度上进行变换操作后输出到所述转置寄存器完成转置,再次输入到所述一维变换模块进行另一个维度上的变换操作后输出。
2. 根据权利要求1所述的二维反变换装置,其特征在于,还包括地址生成单元,用于根据所述控制单元的指令,为需要所述变换系数生 成单元输出的反变换矩阵系数生成地址,为需要所述转置寄存器输出的数据 生成地址。
3. 根据权利要求2所述的二维反变换装置,其特征在于,所述一维变 换模块包括矩阵乘法单元,用于根据所述变换系数生成单元提供的系数对输入的数 据进行矩阵乘法操作;矩阵加减单元,用于对所述矩阵乘法单元输出的数据进行矩阵加减法操作。
4. 根据权利要求3所述的二维反变换装置,其特征在于,还包括,移位饱和单元,用于对从所述矩阵加减单元输入的数据进行移位饱和操 作后输出;所述移位饱和单元设置在所述矩阵加减单元之后,对所述矩阵加减单元 输出的数据进行移位饱和处理后再输出。
5. 根据权利要求4所述的二维反变换装置,其特征在于,还包括重排单元,用于对输入的二维矩阵数据进行或列的重排后输出到所述矩 阵乘法单元;所述重排单元设置在所述矩阵乘法单元之前,对需要输入到所述矩阵乘 法单元的数据预先进行重排。
6. 根据权利要求5所述的二维反变换装置,其特征在于,所述二维反 变换的算法包括8x8反余弦变换,8x8反整数余弦变换,8x4反整数余弦变换,4x8 反整数余弦变换,4x4反整数余弦变换。
7. 根据权利要求6所述的二维反变换装置,其特征在于,所述矩阵乘 法单元、矩阵加减单元和移位饱和单元所处理的矩阵大小为4x4,如果需 要处理的矩阵大于4x4,则预先转化为多个4 x 4的矩阵进行处理。
8. 根据权利要求3所述的二维反变换装置,其特征在于,矩阵乘法单 元包含两部分e类乘法单元和o类乘法单元;其中,e类乘法单元完成以下类型的矩阵乘法<formula>formula see original document page 3</formula>o类乘法单元完成以下类型的矩阵乘法:<formula>formula see original document page 3</formula>
全文摘要
本发明涉及图像、视频编码和处理领域,公开了一种二维反变换装置,可以用统一的硬件架构兼容多种视频、图像标准的反变换。本发明中,先对二维矩阵在一个维度上进行处理,转置后以相同的处理模块对该二维矩阵在另一个维度上进行处理,将处理中用到的不同标准的反变换矩阵系数集中存贮,根据处理的需要使用相应的系数。
文档编号H04N7/30GK101562744SQ20081004327
公开日2009年10月21日 申请日期2008年4月18日 优先权日2008年4月18日
发明者林福辉, 武晓阳 申请人:展讯通信(上海)有限公司