基于提升结构的dct变换结构及其方法

文档序号:7740894阅读:234来源:国知局
专利名称:基于提升结构的dct变换结构及其方法
技术领域
本发明涉及一种基于提升结构的DCT变换结构及其方法。

背景技术
随着多媒体技术的快速发展,信号的分辨率和采样率都在提高,由此带来的数据量的急剧增多加大了数据传输和存储的压力,因此对于高速实时的数据压缩具有重要的意义。
离散余弦变换(DCT)是最接近KL变换的正交变换,可有效的去除空间域的相关性并且可以使大部分的能量集中在直流及低频的部分。这些性质使得DCT被广泛应用于图像压缩,语音压缩等技术中。JPEG(Joint Photographic Experts Group,联合图像专家组)、MPEG(MovingPicture Expert Group,运动图像专家组),H.263以及我国自主研发的AVS等标准都采用了DCT技术作为压缩编码的主要方案。
对于M*N的数据块进行二维DCT变换的公式为 其中c(u),c(v)为系数 x(m,n)为像素值,Xc(u,v)为变换后的系数,m,u=0,1,2...,M-1;n,v=0,1,2...N-1。
对于DCT变换的实现,通常情况下是将图像从左上到右下分成一个个小块,块的大小视需要而定,通常取4*4,8*8及16*16几种,然后分别对每个小块进行变换。从计算的角度来看,如果直接对一个8*8的一维DCT变换的定义为[4] 其中g(k)为系数 x(n)为输入数据,Xc(k)为变换后的数据,n,k=0,1,...,N-1。
由上述公式可以看出,DCT变换过程中存在cos这样的三角函数,会涉及到浮点数的乘加运算,而这会大大影响到运算的精度和速度,虽然后来Chen.等人又提出了旋转因子方式的快速算法如图1所示,但仍然摆脱不了三角函数的乘法运算,在硬件实现方面,浮点数的乘法运算会占用大量电路资源而且会大大影线电路的运行速率。


发明内容
本发明的目的是提供一种可以减少电路面积,同时可以提高电路运行速率的,有利于FPGA实现的基于提升结构的DCT变换结构及其方法。
为实现上述目的,本发明采用如下技术方案 一种基于提升结构的DCT变换结构,它包括 数据扩展和串并转换电路,该电路每个时钟接收一个数据,8个时钟后输出一行或一列8个并行的18位数据; 一维8点DCT变换电路,该电路根据使能信号的每8个时钟接收一组8个18位的图像数据,在向量分解电路处分解成2个4点一维向量,分别输入到2个一维4点DCT变换电路进行运算,得到的数据在数据重组电路处进行重新组合计算,得到一维8点DCT变换的结果; 转置矩阵电路利用其地址控制模块根据输入的数据的个数个地址进行判断,如果输入分数据超过2个整8*8的模块,开始向外读出转置后的8*8点的数据; 数据的截位及并串转换电路,将得到的18位数据进行截位,去掉小数部分的低4位,得到的数据为二维8*8点DCT变换的结果。
所述一维8点DCT变换电路对输入的图像数据由8位扩展到18位,扩展方法为将输入的8位数据,左移6位,并在最高位前面加4个0,其中最高位为符号位。
所述向量分解电路对一维8点的输入数据进行分解,得到2个一维4点的数据向量,对于涉及到乘除运算的部分均用移位和加法运算进行代替为3/8=1/4+1/8,57/32=1+1/2+1/4+1/32,39/32=1+1/8+1/16+1/32;其中1/2为右移1位,1/4为右移2位,1/8为右移3位,1/16为右移4位,1/32为右移5位,1/64为右移6位。
所述一维4点DCT变换电路采用的DCT正变换矩阵为运算过程中,将乘法运算改由移位和加法代替为3/8=1/4+1/8,55/64=1/2+1/4+1/16+1/32+1/64的形式,其中1/2为右移1位,1/4为右移2位,1/8为右移3位,1/16为右移4位,1/32为右移5位,1/64为右移6位。
所述对一维4点的数据进行DCT变换后进行重新组合得到一维8点DCT变换结果,变换公式为X(0)=G(0),X(2)=G(1),X(4)=G(2),X(6)=G(3),X(1)=H(0)/2,X(3)=H(1)-X(1),X(5)=H(2)-X(3),X(7)=H(3)-X(5)。
本发明的基于提升结构的DCT变换结构,它包括数据位的扩展电路、一维8点DCT变换电路、转置矩阵电路、数据的截位电路四大模块;其中一维8点DCT变换电路为整个系统的中心部分,该电路又可细分为向量分解电路、一维4点DCT变换电路和数据重组电路三部分。
数据扩展和串并转换电路每个时钟接收一个数据,8个时钟后输出一行或一列8个并行的18位数据;一维8点DCT变换电路,根据使能信号的每8个时钟接收一组(8个)18位的图像数据,在向量分解电路处分解成2个4点一维向量,分别输入到2个一维4点DCT变换电路进行运算,得到的数据在数据重组电路处进行重新组合计算,得到一维8点DCT变换的结果;转置矩阵电路,地址控制模块根据输入的数据的个数个地址进行判断,如果输入分数据超过2个整8*8的模块,开始向外读出转置后的8*8点的数据;数据的截位及并串转换电路,将得到的18位数据进行截位,去掉小数部分的低4位,得到的数据为二维8*8点DCT变换的结果。
其中在一维4点DCT变换电路,利用提升结构,消除DCT变换中关于三角函数的乘加运算,改由移位和加法运算代替。
提升方法可定义为如果变换矩阵可以分解成多个主对角线元素为1的三角形矩阵的乘积,那么,只要对每一个三角形矩阵分别找到它所对应的可逆整型变换,然后按分解顺序依次变换,就可构造出整个变换的整型变换。这种方法统称为提升,这种主对角线元素为1的三角形矩阵称为提升矩阵。
公式表示为 因此有yi=xi+ci,jxj,yk=xk且j,k≠i。其中y,x均为1维列向量。
由此可以看出,该变换是一个完全可逆的过程xk=yk,xi=yi-ci,jxj,j,k≠i。即可以首先通过重建除xi行以外的其他x向量元素,最后利用xj和yi重建xi,如图2所示。在这个过程中,可以看到ci,j即使是一个浮点数,也可以用一个近似的数来进行代替。为了硬件实现的方便,这个替代的数应该是以2的n次幂为分母的,从而可以方便得通过移位的方式来实现乘除运算。此方法可以减小电路资源的消耗,同时提高电路的运行速率。
为实现上述目的,它实现的具体步骤为 1)将二维8*8的数据矩阵进行位扩展之后,按行依次输入到一维8点DCT变换电路; 2)将一维8点DCT变换分解成2个4点的DCT变换; 3)对4点的DCT变换,使用提升结构进行改造; 4)将改造后的变换方法中的乘法部分改由移位和加法代替; 5)将得到的数据存入RAM进行缓存; 6)从RAM中的数据转置后按列输出到一维8点DCT变换电路; 7)重复2)3)4)步。
所述步骤1)中,首先要对输入的数据图像进行位扩展,即左移6位,并且高位加4个零,将最高位设为符号位。
所述步骤2)中,分解方法为 其中g0~g3,h0~h3为中间变量。
所述步骤3)对4点DCT变换,使用提升结构改造得到正变换的变换矩阵为 所述步骤3)对一维4点的数据进行DCT变换后进行重新组合得到一维8点DCT变换结果,变换公式为X(0)=G(0),X(2)=G(1),X(4)=G(2),X(6)=G(3),X(1)=H(0)/2,X(3)=H(1)-X(1),X(5)=H(2)-X(3),X(7)=H(3)-X(5)。
所述步骤4)中,将乘法运算改为移位和加法代替,如3/8=1/4+1/8,55/64=1/2+1/4+1/16+1/32+1/64。
所述步骤5)中,RAM缓存的深度不得少于4个8*8矩阵的大小。
本发明的有益效果是可以大大减少实现时对硬件电路资源的占用情况,同时可以提高电路的运行速率。



图1为一维8点DCT变换的旋转因子原理图; 图2为提升结构原理图; 图3为本发明在FPGA上进行实现的结构示意图; 图4为一维8点DCT模块部分的结构示意图; 图5为提升结构的一维4点DCT的算法原理图; 图6为矩阵转置模块的结构示意图; 图7为矩阵转置模块的算法流程图。
其中,1.数据扩展和串并转换电路,2.一维8点DCT变换电路,3.转置矩阵电路,4.数据的截位及并串转换电路,5.向量分解电路,6.一维4点DCT变换电路,7.数据重组电路,8.地址控制模块。

具体实施例方式 下面结合附图与实施例对本发明做进一步说明。
图2中,本发明的结构包括 数据扩展和串并转换电路1,该电路每个时钟接收一个数据,8个时钟后输出一行或一列8个并行的18位数据; 一维8点DCT变换电路2,如图3所示,该电路根据使能信号的每8个时钟接收一组8个18位的图像数据,在向量分解电路5处分解成2个4点一维向量,分别输入到2个一维4点DCT变换电路6进行运算,得到的数据在数据重组电路7处进行重新组合计算,得到一维8点DCT变换的结果; 转置矩阵电路3如图5所示,地址控制模块8根据输入的数据的个数个地址进行判断,如果输入分数据超过2个整8*8的模块,开始向外读出转置后的8*8点的数据; 数据的截位及并串转换电路4,将得到的18位数据进行截位,去掉小数部分的低4位,得到的数据为二维8*8点DCT变换的结果。
所述一维8点DCT变换电路2对输入的图像数据由8位扩展到18位,扩展方法为将输入的8位数据,左移6位,并在最高位前面加4个0,其中最高位为符号位。
所述向量分解电路5对一维8点的输入数据进行分解,得到2个一维4点的数据向量,对于涉及到乘除运算的部分均用移位和加法运算进行代替为3/8=1/4+1/8,57/32=1+1/2+1/4+1/32,39/32=1+1/8+1/16+1/32;其中1/2为右移1位,1/4为右移2位,1/8为右移3位,1/16为右移4位,1/32为右移5位,1/64为右移6位。
所述一维4点DCT变换电路7采用的DCT正变换矩阵为运算过程中,将乘法运算改由移位和加法代替为3/8=1/4+1/8,55/64=1/2+1/4+1/16+1/32+1/64的形式,其中1/2为右移1位,1/4为右移2位,1/8为右移3位,1/16为右移4位,1/32为右移5位,1/64为右移6位。
所述对一维4点的数据进行DCT变换后进行重新组合得到一维8点DCT变换结果,变换公式为X(0)=G(0),X(2)=G(1),X(4)=G(2),X(6)=G(3),X(1)=H(0)/2,X(3)=H(1)-X(1),X(5)=H(2)-X(3),X(7)=H(3)-X(5)。
本方明的方法的DCT变换方法如图2所示,它的步骤为 1)将二维8*8点DCT变换按行进行8次一维8点DCT变换,如图1所示; 2)将一维8点DCT变换分解成2个4点的DCT变换; 3)对4点的DCT变换,使用提升结构进行改造;如图4所示; 4)将改造后的变换方法中的乘法部分改由移位和加法代替; 5)将得到的数据存入RAM进行缓存; 6)从RAM中的数据转置后输出,按列进行8次一维8点DCT变换; 7)重复2)3)4)步。
所述步骤2)中,分解方法为 其中g0~g3,h0~h3为中间变量。
所述步骤3)对4点DCT变换,使用提升结构改造得到正变换的变换矩阵为 所述步骤3)对一维4点的数据进行DCT变换后进行重新组合得到一维8点DCT变换结果,变换公式为X(0)=G(0),X(2)=G(1),X(4)=G(2),X(6)=G(3),X(1)=H(0)/2,X(3)=H(1)-X(1),X(5)=H(2)-X(3),X(7)=H(3)-X(5),其中,G(0)~G(3),H(0)~H(3)分别是两组一维4点DCT变换得到的结果。
所述步骤4)中,将乘法运算改为移位和加法代替,如3/8=1/4+1/8,55/64=1/2+1/4+1/16+1/32+1/64。
所述步骤5)中,RAM缓存的深度不得少于4个8*8矩阵的大小。
权利要求
1.一种基于提升结构的DCT变换结构,其特征在于,它包括
数据扩展和串并转换电路(1),该电路每个时钟接收一个数据,8个时钟后输出一行或一列8个并行的18位数据;
一维8点DCT变换电路(2),该电路根据使能信号的每8个时钟接收一组8个18位的图像数据,在向量分解电路(5)处分解成2个4点一维向量,分别输入到2个一维4点DCT变换电路(6)进行运算,得到的数据在数据重组电路(7)处进行重新组合计算,得到一维8点DCT变换的结果;
转置矩阵电路(3)利用其地址控制模块(8)根据输入的数据的个数个地址进行判断,如果输入分数据超过2个整8*8的模块,开始向外读出转置后的8*8点的数据;
数据的截位及并串转换电路(4),将得到的18位数据进行截位,去掉小数部分的低4位,得到的数据为二维8*8点DCT变换的结果。
2.如权利要求1所述的基于提升结构的DCT变换结构,其特征在于,所述一维8点DCT变换电路(2)对输入的图像数据由8位扩展到18位,扩展方法为将输入的8位数据,左移6位,并在最高位前面加4个0,其中最高位为符号位。
3.如权利要求1所述的基于提升结构的DCT变换结构,其特征在于,所述向量分解电路(5)对一维8点的输入数据进行分解,得到2个一维4点的数据向量,对于涉及到乘除运算的部分均用移位和加法运算进行代替为3/8=1/4+1/8,57/32=1+1/2+1/4+1/32,39/32=1+1/8+1/16+1/32;其中1/2为右移1位,1/4为右移2位,1/8为右移3位,1/16为右移4位,1/32为右移5位,1/64为右移6位。
4.如权利要求1所述的基于提升结构的DCT变换结构,其特征在于,所述一维4点DCT变换电路(7)采用的DCT正变换矩阵为运算过程中,将乘法运算改由移位和加法代替为3/8=1/4+1/8,55/64=1/2+1/4+1/16+1/32+1/64的形式,其中1/2为右移1位,1/4为右移2位,1/8为右移3位,1/16为右移4位,1/32为右移5位,1/64为右移6位。
5.如权利要求1所述的基于提升结构的DCT变换结构,其特征在于,所述对一维4点的数据进行DCT变换后进行重新组合得到一维8点DCT变换结果,变换公式为X(0)=G(0),X(2)=G(1),X(4)=G(2),X(6)=G(3),X(1)=H(0)/2,X(3)=H(1)-X(1),X(5)=H(2)-X(3),X(7)=H(3)-X(5)。
6.一种采用权利要求1所述的基于提升结构的DCT变换结构的变换方法,其特征在于,它实现的具体步骤为
1)将二维8*8的数据矩阵进行位扩展之后,按行依次输入到一维8点DCT变换电路;
2)将一维8点DCT变换分解成2个4点的DCT变换;
3)对4点的DCT变换,使用提升结构进行改造;
4)将改造后的变换方法中的乘法部分改由移位和加法代替;
5)将得到的数据存入RAM进行缓存;RAM缓存的深度不得少于4个8*8矩阵的大小;
6)从RAM中的数据转置后按列输出到一维8点DCT变换电路;
7)重复2)3)4)步。
7.如权利要求6所述的基于提升结构的DCT变换结构的变换方法,其特征在于,所述步骤1)中,首先要对输入的数据图像进行位扩展,即左移6位,并且高位加4个零,将最高位设为符号位。
8.如权利要求6所述的基于提升结构的DCT变换结构的变换方法,其特征在于,所述步骤2)中,分解方法为
其中g0~g3,h0~h3为中间变量。
9.如权利要求6所述的基于提升结构的DCT变换结构的变换方法,其特征在于,所述步骤3)对4点DCT变换,使用提升结构改造得到正变换的变换矩阵为
10.如权利要求6所述的基于提升结构的DCT变换结构的变换方法,其特征在于,所述步骤3)对一维4点的数据进行DCT变换后进行重新组合得到一维8点DCT变换结果,变换公式为X(0)=G(0),X(2)=G(1),X(4)=G(2),X(6)=G(3),X(1)=H(0)2,X(3)=H(1)-X(1),X(5)=H(2)-X(3),X(7)=H(3)-X(5)。
全文摘要
本发明公开了一种基于提升结构的DCT变换结构及其方法。本发明从FPGA硬件实现的角度出发,消除了传统DCT变换中的乘法运算,改由移位和加法运算来进行代替,从而可以避免硬件实现中占用大量资源且严重影响电路运行速率的乘法器电路。具体模块包括数据扩展和串并转换电路1、一维8点DCT变换电路2、转置矩阵电路3、数据的截位及并串转换电路4;其中一维8点DCT变换电路为整个系统的中心部分,该电路又可细分为向量分解电路5、一维4点DCT变换电路6和数据重组电路7、地址控制模块8几个部分。电路实现可利用流水线思想进一步提高运算速率。本发明可以应用于各种图像压缩技术中。
文档编号H04N7/30GK101778291SQ20101010157
公开日2010年7月14日 申请日期2010年1月27日 优先权日2010年1月27日
发明者刘志军, 王小群, 韩庆喜, 张淑慧 申请人:山东大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1