作者简介:刘媛媛(1980-),女,讲师,博士研究生.研究方向:图像处理与视频编码和立体视频处理.
为了匹配离散余弦变换(DCT)算法不同大小分块,实现不同维度DCT结构的兼容性,提出了一种多维DCT立体类蝶形算法,并对其单元式通道结构进行研究。首先,根据DCT理论,以“张量积”运算为基础,介绍了DCT及其反变换IDCT立体类蝶形算法理论原理,给出了多维算法推导。然后,以DCT/IDCT立体类蝶形算法数学运算为理论基础,从一维引申至多维立体类蝶形图形式,并根据多维与一维的关系,以一维单元式通道结构为基础,提出多维单元式通道结构。实验结果表明:本文算法仅需要传统算法中50%的加法器和约30%的乘法器;算法耗时与分块大小和维度有关,在从三维到五维的实验耗时检测中,本文算法耗时不超过普通DCT算法耗时的10%,具有速度快、复杂度低、多维兼容性的特点。
In order to match different size block of Discrete Cosine Transform (DCT) algorithm, the architecture compatibility of different dimensional DCTs is implemented. A multidimensional DCT similar butterfly algorithm is proposed and its unit channel architectures are studied. First, based on the theory of DCT and tensor product operation, the theoretical principles of the DCT similar butterfly algorithm and its inverse transform IDCT are introduced, and the derivation of the multidimensional algorithm is given. Second, taking the arithmetical operation of DCT/IDCT stereo similar butterfly algorithm as the theoretical foundation, the one-dimensional stereo similar butterfly diagram is extended to multidimensional one. Finally, according to the relationship of one-dimension and multi-dimension, based on the one-dimensional channel unit architectures, the multidimensional unit channel architectures are put forward. Experimental results indicate that the proposeds algorithm only needs 50% adders and 30% multipliers of the traditional algorithm. The consuming time of this algorithm is related to the block size and dimension, for three-dimension and five-dimension, the consuming time of this algorithm is less than 10% of that of the common DCT algorithm. This algorithm is characterized by fast, low complexity and multidimensional compatibility.
离散余弦变换(DCT)广泛应用于信息处理领域中, 以其简单的变换算法、高效的变换效果得到人们越来越广泛的关注。当前DCT变换最为有效的应用是高效视频编码(HEVC)[1, 2, 3, 4]和多维矩阵算法[5, 6, 7, 8]。近年来, 对于原理简单的DCT算法, 人们一直追求实现结构简单化、兼容化效果, 其有效途径主要有3个方面:①超大规模集成电路(VLSI)的设计[2, 4, 9]; ②变换核的设计[10, 11, 12]; ③离散余弦正反变换和离散正弦正反变换的兼容结构设计[13]。而这些结构设计的适用性往往非常局限, 而且当分块、维度等参数变化时, 整体结构的设计也随之变化很大, 甚至不能适用, 这样很难满足当前广泛应用的可变分块、复合编码标准、多维变换等要求。因此, 通道式结构又称管道式结构近年来被人们提及[14, 15, 16], 通道式结构类似于“ 拼积木” , 只需要设计算法单元结构, 然后根据要求直接给出整体结构。这种方法依托于单元结构, 因此具有极高的兼容性和可延展性。
本文算法充分考虑到算法结构便捷、兼容的特点, 以Nikara和Takala提出的因式分解的DCT算法理论方法[15, 16]为依据, 在此基础上推导出多维DCT算法, 并从快速傅里叶变换(FFT)的蝶形流图中得到灵感, 给出一种立体类蝶形流图形式, 使其复杂定义直观化。同时根据其定义, 提出一种高效、低复杂度、兼容性强的通道式结构, 此种结构可根据需要选择大小, 可塑性强, 思路简单, 实用性、通用性及扩展性极强。
本文仅考虑DCT-II型算法, 为了方便, 暂时省略系数
式中:⊗表示张量积; I为单位矩阵; 2k=N为进行变换的点数; Q为已知矩阵:
本文均采用基-2的算法, 为了与多维统一, 令
式中:⊗表示矩阵直和; R为一已知矩阵:
hN(i)为Hadamard排列函数, 初始值为h1(0)=0, 分奇偶数定义[15]为:
式(1)表示DCT变换中对第s列进行处理, 其中s=0, 1, …, k-1,
函数gk(i, s)表示为:
式中 :
Fk(i, s)=(I mod 2)+(i-τ 0 (i))(1-τ k-1(s)) (16)
二进制参数μ s(· )、τ i(s)分别定义为:
系数d(i)按奇偶数可以表示为:
1-D DCT变换整体写为:
用xnD、XnD分别表示n维原信号与其正变换的结果, 因此n-D DCT变换定义为:
根据1-D DCT变换的结果, 得到:
式中:
对照1-D DCT, n-D DCT与之类似, 只是将变换中一维的M(指变换中的参数)用相应位置的张量积结果
因而变换核可以写为:
n-D DCT变换整体写为:
XnD={
(
式中:xnD及其相应的结果XnD为Nn矩阵系数组成的列向量。
根据式(1), 忽略排列因子, 只需考虑[
n-D DCT变换如式(29)所示, 其中
(
(
(
(
类似于一维DCT中参数
n-D DCT变换整体如式(29)所示, 则n-D IDCT变换核为:
亦为级联关系, 现仅需考虑这4个参数与
(
(
(
(
参数的差异, 得到n-D IDCT与n-D DCT运算形式上的相关性。由上部分参数可知均为1-D DCT相应参数n-1“ 张量积” 后取逆运算而成, 因此n-D IDCT结构结合了n-D DCT与1-D IDCT的特点, 是n维正变换倒置结构情况。
由类蝶形结构形式可知DCT/IDCT包括蝶形单元、乘法单元和交换单元3种基本结构, 如图3所示。统一蝶形单元(UBU)由三个控制量控制输出, 分别得到蝶形操作(BU)、局部减法蝶形操作(LSU)和局部加法蝶形操作(LAU); 交换单元, 又称为移位寄存器(SEU), 作用是进行级内和级间交换。算法过程中分为本级交换单元(LEU)和级间交换单元(PSN)。
n维BU、LSU、LAU需进行n级蝶形运算, 级间以级联方式连接。第1级为线型蝶形运算, 即为基本蝶形运算; 第2级为面型蝶形运算; 第3级为体型蝶形运算, 以此类推, 将除基本级以外的其他级统称为延时级, 以N=2k为例, 第2级蝶形运算在基本蝶形运算硬件基础上将原延时器D替换为
n维级间排列如式(26)所示, 在结构中, 仍沿袭基本级与其他延时级级联运算的形式, 若基本级中为两级运算的, 则延时级为对两级运算分别对应进行延时, 延时大小不变。P
以图4和图5所示结构为基础将其模块化, n-D DCT/IDCT通道式结构如图6(a)(b)所示, 以N=8、k=3为例, 将LSUn、BUn均用UBUn表示, 比较n-D DCT和IDCT两图结构, 将两图合二为一得到n-D DCT/IDCT兼容性通道式结构如图6(c)所示(控制量已省略), 结构器件示意图如图7所示。
由图4可知, n维DCT结构主要由延时器、选择器和乘法器3部分组成。从硬件功能方面上看, n维DCT结构主要由蝶形运算BU(单蝶运算LSU和LEU均归属于蝶形运算范畴)、乘法运算和交换运算PS, 其中乘法运算由乘法器完成, 交换运算由延时器和选择器完成, 每级BU延时器和选择器以外还需要3个加法器(含减法)完成蝶形操作。一个Nn=
(1)蝶形运算总共需要BUn3(log2N-1)级, 每级需要延时器个数为:
(2)级间交换P
而Nn点n维DCT需要P
类似地, 二选一选择器的个数也由两部分组成:①蝶形运算总共需要BUn3
n维DCT是一维运算多维化的结果, 其中运算仅为乘法器和加法器, 乘法器是由式(11)产生的, 其中gk(i, s)是每级的乘数, 值不为1的个数即为乘法器的个数, 一维DCT乘法器的个数为:
n维DCT的乘法运算为:
由式(36)可以看出, 该运算仅仅改变了每级乘数的不同, 但并没有改变乘法器的级数, 根据张量积的运算规则, 其值为“ 1” 的乘数呈指数增长, 因而n维DCT乘法器的个数为:
加法器来自于蝶形和半蝶形运算, 每个蝶形运算中含有两个加法运算, 每级含有N/2个基本蝶形, 共有k级, 而减法半蝶形运算是每级中每个群少1个, 一个DCT变换共含有减法半蝶形运算个数为:
因此一维DCT加法器的个数为:
则n维DCT将每个一维加法(包括减法)运算扩展至n维, 所以n维DCT加法器总个数为:
根据本文采用的多维DCT/IDCT立体类蝶形算法, 表1针对视频不同分块N× N× N以常见的三维DCT方法为例对完成一个蝶形运算单元所使用加法器和乘法器数量进行比较, 其中算法一为传统快速算法, 算法二为行排列的方法[17]。表1说明, 对于加法器, 算法二与本文算法相等, 约为算法一的一半, 而对于乘法器仅约为算法一的30%, 约为算法二的60%。可明显看出本文提出的算法节约了大量的影响计算速度的乘法器的数量。
![]() | 表1 蝶形运算单元所用乘法器和加法器个数对比 Table 1 Comparison of number of multiplication and addition operations in butterfly unit |
将视频信号中首帧以行、列像素m× m大小进行分块, 结合这个分块所对应的m帧, 即大小为m× m× m的三维视频块, 同理, 将这样m个大小为m× m× m的三维视频块首尾相连, 得到大小为m× m× m× m的四维视频块, 以此类推, 建立多维信号模型。实验仿真环境为:计算机处理器CPU Intel(R) Core(TM)i3-2120@3.30 GHz, Windows7 32 bit操作系统; 3.17 GB可用内存; Visual C++ 2010软件开发环境。表2为以176× 144 150帧视频信号为例, 不同m、不同维度时本文算法与普通DCT处理视频信号耗时[18]的实验比较。实验结果表明:①m越大, 本文算法耗时越少; ②m相同情况下, 维度越高, 本文算法耗时越少, 这也正好说明本文算法中“ 张量积” 运算的优势; ③m=4时, 相邻维度耗时降低幅度近似; ④m=8时, 三维和四维算法耗时百分比接近, 这是由于在四维时对应视频信号不能恰好为8的倍数, 而出现了计算冗余, m越大冗余越明显; ⑤m=8时, 五维算法耗时所占百分比最小, 说明该视频信号在对应维度中最为优化。
![]() | 表2 不同分块及维度本文算法与普通DCT处理视频信号的耗时对比 Table 2 Time needed between ordinary DCT and DCT alogorithm with different block sizes and dimensions |
在一维DCT的基础上提出了n维DCT及其反变换IDCT算法及类蝶形运算的算法流程, 同时, 根据流程提出了一种仅由延时器、选择器和乘法器组成的多维DCT/IDCT算法单元通道式结构。提出的类蝶形算法流程将n维运算直观化、立体化。以三维DCT算法为例, 对比实验数据表明, 本文算法仅需要传统算法中一半的加法器和约30%的乘法器, 大大提高了运算速度、降低了运算的复杂度。从不同分块和维度本文算法与普通DCT处理视频信号耗时对比结果可以看出, 算法耗时与分块大小、维度有关, 但在m=4和m=8时, 从三维到五维的实验耗时检测中可以看出, 本文算法耗时不到普通DCT算法耗时的10%; 当m=8时, 五维信号处理176× 144 150帧视频信号仅耗时253 s, 仅为普通DCT算法耗时的1.22%。
The authors have declared that no competing interests exist.
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|
[13] |
|
[14] |
|
[15] |
|
[16] |
|
[17] |
|
[18] |
|