发明内容
本发明解决的技术问题是提供一种进行8×8两维整数DCT变换及反变换电路,它可使经过整数DCT变换及反变换后所得到的变换数据和原有数据之间的失真度小、精度高、速度快,而且硬件实现简单易行。
为解决上述技术问题,本发明的进行8×8两维整数DCT变换电路,共分三层,每层产生八个输出端;
第一层包括八个输入端x0~x7,以及八个输出端m0~m7,其输入端与输出端之间的关系为:输出端m0的值为输入端x0和x7的值之和,输出端m1的值为输入端x1和x6的值之和,输出端m2的值为输入端x2和x5的值之和,输出端m3的值为输入端x3和x4的值之和,输出端m4的值为输入端x3和x4的值之差,输出端m5的值为输入端x2和x5的值之差,输出端m6的值为输入端x1和x6的值之差,输出端m7的值为输入端x0和x7的值之差;所述第一层输入端与输出端之间的关系采用8个加法器实现;第一层的八个输出端分别接连第二层的八个输入端;
第二层分为上下两层,上层的输入端包括m0、m1、m2、m3,下层的输入端包括m4、m5、m6、m7;所述上层又分成前层和后层,前层的输入端即为上层的输入端m0、m1、m2、m3,前层的输出端为q0、q1、q2、q3,前层的输出端连接后层的输入端;所述前层的输入端和输出端之间的关系为:输出端q0的值为输入端m0与m3的值之和,输出端q1的值为输入端m1和m2的值之和,输出端q2的值为输入端m1和m2的值之差,输出端q3的值为输入端m0和m3的值之差,所述前层的输入端与输出端之间的关系用4个加法器实现;
后层的输出端为p0~p3,后层的输入端和输出端之间的关系为:输出端p0的值为输入端q0和q1的值之和,输出端p1的值为4倍的输入端q2和9倍的输入端q3的值之和,输出端p2的值为输入端q0和q1的值之差,输出端p3的值为4倍的输入端q2和9倍的输入端q3的值之差,所述后层的输入端与输出端之间的关系用4个加法器及4个移位器实现;后层的四个输出端即为上层的四个输出端p0、p1、p2、p3;
下层的输出端为p4~p7,其输入端和输出端之间的关系为:输出端P4的值为-10倍的输入端m4的值,8倍的输入端m5的值,-6倍的输入端m6的值和2倍的输入端m7的值各项之和;输出端P5的值为8倍的输入端m4的值,2倍的输入端m5的值,-10倍的输入端m6的值和6倍的输入端m7的值各项之和;输出端p6的值为-6倍的输入端m4的值,-10倍的输入端m5的值,-2倍的输入端m6的值和8倍的输入端m7的值各项之和;输出端p7的值为2倍的输入端m4的值,6倍的输入端m5的值,8倍的输入端m6的值和10倍的输入端m7的值各项之和;所述下层的输入端与输出端之间的关系采用8个加法器及12个移位器实现,由上层的四个输出端p0~p3和下层的四个输出端p4~p7共同构成第二层的八个输出端p0~p7,并连接第三层的八个输入端;
第三层输出端为y0~y7,其中输出端y0的值等于输入端p0的值,输出端y1的值等于输入端p7的值,输出端y2的值等于输入端p1的值,输出端y3的值等于输入端p6的值,输出端y4的值等于输入端p2的值,输出端y5的值等于输入端p5的值,输出端y6的值等于输入端p3的值,输出端y7的值等于输入端p4的值。
本发明的进行8x8两维整数DCT反变换电路,同样也分为三层,每层产生八个输出端;
第一层的输入端为h0~h7,输出端为s0~s7;其输入端与输出端之间的关系为:输出端s0的值等于输入端h0的值,输出端s1的值等于输入端h7的值,输出端s2的值等于输入端h1的值,输出端s3的值等于输入端h6的值,输出端s4的值等于输入端h2的值,输出端s5的值等于输入端h5的值,输出端s6的值等于输入端h3的值,输出端s7的值等于输入端h4的值,第一层的八个输出端连接第二层的八个输入端;
第二层也分为上下两层,上层输入端为s0、s1、s2、s3,上层又分为前后两层,前层的输入端即为上层的输入端s0~s3,前层的输出端为d0~d3,前层的输出端与输入端之间的关系为:输出端d0的值是输入端s0的值和s1的值之和,输出端d1的值是4倍的输入端s2的值和9倍的输入端s3的值之和,输出端d2的值是输入端s0的值和s1的值之差,输出端d3的值是4倍的输入端s3的值和9倍的输入端s2的值之差,所述前层的输出端与输入端之间的关系采用4个加法器及4个移位器实现;前层的四个输出端连接后层的四个输入端;
后层的输出端为f0~f3,其输出端与输入端之间的关系为:输出端f0的值为输入端d0的值和d3的值之和,输出端f1的值是输入端d1的值和d2的值之和,输出端f2的值是输入端d1的值和d2的值之差,输出端f3的值是输入端d0的值和d3的值之差,后层的四个输出端也同样为上层的四个输出端f0~f3;所述后层的输出端与输入端之间的关系采用4个加法器实现;
下层的四个输出端为f4~f7,四个输入端为s4~s7,其输出端与输入端之间的关系为:输出端f4的值为-10倍的输入端s4的值,8倍的输入端s5的值,-6倍的输入端s6的值和2倍的输入端s7的值各项之和;输出端f5的值为8倍的输入端s4的值,2倍的输入端s5的值,-10倍的输入端s6的值和6倍的输入端s7的值各项之和;输出端f6的值为-6倍的输入端s4的值,-10倍的输入端s5的值,-2倍的输入端s6的值和8倍的输入端s7的值各项之和;输出端f7的值为2倍的输入端s4的值,6倍的输入端s5的值,8倍的输入端s6的值和10倍的输入端s7的值各项之和;所述下层的输出端与输入端之间的关系采用8个加法器及12个移位器实现,上层的四个输出端f0~f3与下层的四个输出端f4~f7共同构成第二层的八个输出端f0~f7,并连接第三层的八个输入端;
第三层的输出端为z0~z7,其输出端与输入端之间的关系为:输出端z0的值为输入端f0的值和f7的值之和;输出端z1的值为输入端f1的值和f6的值之和;输出端z2的值为输入端f2的值和f5的值之和;输出端z3的值为输入端f3的值和f4的值之和;输出端z4的值为输入端f3的值和f4的值之差;输出端z5的值为输入端f2的值和f5的值之差;输出端z6的值为输入端f1的值和f6的值之差;输出端z7的值为输入端f0的值和f7的值之差,所述第三层的输出与输入之间的关系采用8个加法器实现。
采用本发明8×8两维整数离散余弦变换的变换电路及反变换电路,均采用24个加法器和1 6个移位器就可以实现高精度的8x8两维整数DCT变换和反变换。变换后的数据精度高、失真度极小、速度快,而且硬件实现简单易行,具有很好的推广价值。
具体实施方式
本发明进行8×8两维整数DCT变换电路分三层,每层产生8个输出端。第一层的输出端作为第二层的输入端进行运算,第二层的运算结果再作为第三层的输入端,第三层运算所得的结果即为8×8两维整数DCT变换电路的运算结果。下面结合一个具体实施例对本发明进行详细说明。
如图1所示,本发明的进行8×8两维整数DCT变换电路,第一层包括八个输入端x0~x7,以及八个输出端m0~m7,其输入端与输出端之间的关系可用下列公式表示:
m0=x0+x7;m1=x1+x6;m2=x2+x5;m3=x3+x4
m4=x3-x4;m5=x2-x5;m6=x1-x6;m7=x0-x7
即输出端m0的值为输入端x0的值和x7的值之和,采用加法器j0实现。输出端m1的值为输入端x1的值和x6的值之和,采用加法器j1实现。输出端m2的值为输入端x2的值和x5的值之和,采用加法器j2实现。输出端m3的值为输入端x3的值和x4的值之和,采用加法器j3实现。输出端m4的值为输入端x3的值和x4的值之差,采用加法器j4实现。输出端m5的值为输入端x2的值和x5的值之差,采用加法器j5实现。输入出端m6的值为输入端x1的值和x6的值之差,采用加法器j6实现。输出端m7的值为输入端x0的值和x7的值之差,采用加法器j7实现。第一层的八个输出端分别连接第二层的八个输入端。
第二层分为上下两层。如图2所示,上层的输入端为m0、m1、m2、m3,下层的输入端为m4、m5、m6、m7。所述上层又分成前层和后层,前层的输入端即为上层的输入m0、m1、m2、m3,前层的输出端为q0、q1、q2、q3,前层的输出端连接后层的输入端。所述前层的输入端和输出端之间的关系可用下列公式表示:
q0=m0+m3;q1=m1+m2;q2=m1-m2;q3=m0-m3
即将前层的四个输入端m0~m3分成两组,m0和m3为一组,m1和m2为一组,每组分别作一次加法和一次减法,所得到的结果即为前层的四个输出。其中,输出端q0的值为输入端m0的值与m3的值之和,采用加法器j8实现。输出端q1的值为输入端m1的值和m2的值之和,采用加法器j9实现。输出端q2的值为输入端m1的值和m2的值之差,采用加法器j10实现。输出端q3的值为输入端m0的值和m3的值之差,采用加法器j11实现。
后层的输出端为p0~p3,后层的输入端和输出端之间的关系可用下列公式表示:
p0=q0+q1;p1=4q2+9q3;p2=q0-q1;p3=4q2-9q3
即输出端p0的值为输入端q0的值和q1的值之和,采用加法器j12实现。输出端p1的值为4倍的输入端q2的值和9倍的输入端q3的值之和,采用移位器y0、y1和加法器j13实现。输出端p2的值为输入端q0的值和q1的值之差,采用加法器j14实现。输出端p3的值为4倍的输入端q2的值和9倍的输入端q3的值之差,采用移位器y2、y3和加法器j15实现。后层的四个输出端即为上层的四个输出端p0、p1、p2、p3。
如图3所示,下层的输出端为p4~p7,其输入端和输出端之间的关系可用下列公式表示:
p4=-10m4+8m5-6m6+2m7;p5=8m4+2m5-10m6+6m7
p6=-6m4-10m5-2m6+8m7;p7=2m4+6m5+8m6+10m7
即输出端P4的值为-10倍的输入端m4的值,8倍的输入端m5的值,-6倍的输入端m6的值和2倍的输入端m7的值各项之和,采用移位器y4、y5、y12和加法器j16、j20实现。输出端P5的值为8倍的输入端m4的值,2倍的输入端m5的值,-10倍的输入端m6的值和6倍的输入端m7的值各项之和,采用移位器y6、y7、y13和加法器j17、j21实现。输出端p6的值为-6倍的输入端m4的值,-10倍的输入端m5的值,-2倍的输入端m6的值和8倍的输入端m7的值各项之和,采用移位器y8、y9、y14和加法器j18、j22实现。输出端p7的值为2倍的输入端m4的值,6倍的输入端m5的值,8倍的输入端m6的值和10倍的输入端m7的值各项之和,采用移位器y10、y11、y15和加法器j19、j23实现。于是得到下层的四个输出端p4~p7。由上层的四个输出端p0~p3和下层的四个输出端p4~p7共同构成第二层的八个输出端p0~p7,并与第三层的八个输入端连接。
如图4所示,第三层的输出端为y0~y7。其输出端与输入端之间的关系为:输出端y0的值等于输入端p0的值,输出端y1的值等于输入端p7的值,输出端y2的值等于输入端p1的值,输出端y3的值等于输入端p6的值,输出端y4的值等于输入端p2的值,输出端y5的值等于输入端p5的值,输出端y6的值等于输入端p3的值,输出端y7的值等于输入端p4的值。其输入端和输出端之间的关系可用下列公式表示:
y0=p0;y1=p7;y2=p1;y3=p6;y4=p2;y5=p5;y6=p3;y7=p4。
本发明的8x8两维整数DCT反变换电路,同样也分三层,每层产生八个输出端。即第一层的输出端作为第二层的输入端进行运算,第二层的运算结果再作为第三层的输入端,第三层运算所得的结果即为反变换的运算结果。下面结合一个具体实施例对本发明反变换电路进行详细说明。
如图5所示,第一层的输入端为h0~h7,输出端为s0~s7。其输入端与输出端之间的关系可用下列公式表示:
s0=h0;s1=h7;s2=h1;s3=h6;s4=h2;s5=h5;s6=h3;s7=h4
即第一层的输出端s0的值等于输入端h0的值;输出端s1的值等于输入端h7的值;输出端s2的值等于输入端h1的值;输出端s3的值等于输入端h6的值,输出端s4的值等于输入端h2的值,输出端s5的值等于输入端h5的值,输出端s6的值等于输入端h3的值,输出端s7的值等于输入端h4的值。第一层的八个输出端连接第二层的八个输入端。
第二层也分为上下两层。如图6所示,上层输入端包括s0、s1、s2、s3。上层又分为前后两层。前层的输入端即为上层的输入端s0~s3,前层的输出端为d0、d1、d2、d3。前层的输出端d0的值是输入端s0的值和s1的值之和,采用加法器j24实现。输出端d1的值是4倍的输入端s2的值和9倍的输入端s3的值之和,采用移位器y16、y17和加法器j25实现。输出端d2的值是输入端s0的值和s1的值之差,采用加法器j26实现。输出端d3的值是4倍的输入端s3的值和9倍的输入端s2的值之差,采用移位器y18、y19和加法器j27实现。前层的四个输出端连接后层的四个输入端。
后层的输出端为f0、f1、f2、f3。后层的输出端f0的值为输入端d0的值和d3的值之和;采用加法器j28实现。输出端f1的值是输入端d1的值和d2的值之和,采用加法器j29实现。输出端f2的值是输入端d1的值和d2的值之差,采用加法器j30实现。输出端f3的值是输入端d0的值和d3的值之差,采用加法器j31实现。后层的四个输出端也同样为上层的四个输出端f0~f3。
如图7所示,下层的四个输出端为f4、f5、f6、f7,下层的四个输入端为s4、s5、s6、s7。下层的输出端f4的值为-10倍的输入端s4的值,8倍的输入端s5的值,-6倍的输入端s6的值和2倍的输入端s7的值各项之和;采用移位器y20、y21、y28和加法器j32、j36实现。输出端f5的值为8倍的输入端s4的值,2倍的输入端s5的值,-10倍的输入端s6的值和6倍的输入端s7的值各项之和;采用移位器y22、y23、y29和加法器j33、j37实现。输出端f6的值为-6倍的输入端s4的值,-10倍的输入端s5的值,-2倍的输入端s6的值和8倍的输入端s7的值各项之和;采用移位器y24、y25、y30和加法器j34、j38实现。输出端f7的值为2倍的输入端s4的值,6倍的输入端s5的值,8倍的输入端s6的值和10倍的输入端s7的值之和。采用移位器y26、y27、y31和加法器j35、j39实现。上层的四个输出端f0~f3与下层的四个输出端f4~f7共同构成第二层的八个输出端f0~f7。以上所述可用下面的公式表示:
d0=s0+s1;d1=4s2+9s3;d2=s0-s1;d3=-9s2+4s3
f0=d0+d3;f1=d1+d2;f2=d1-d2;f3=d0-d3
f4=-10s4+8s5-6s6+2s7;f5=8s4+2s5-10s6+6s7
f6=-6s4-10s5-2s6+8s7;f7=2s4+6s5+8s6+10s7
第二层的八个输出端连接第三层的八个输入端。
如图8所示,第三层的输出端为:z0~z7。第三层的输出端z0的值为输入端f0的值和f7的值之和,采用加法器j40实现。输出端z1的值为输入端f1的值和f6的值之和,采用加法器j41实现。输出端z2的值为输入端f2的值和f5的值之和,采用加法器j42实现。输出端z3的值为输入端f3的值和f4的值之和,采用加法器j43实现。输出端z4的值为输入端f3的值和f4的值之差,采用加法器j44实现。输出端z5的值为输入端f2的值和f5的值之差,采用加法器j45实现。输出端z6的值为输入端f1的值和f6的值之差,采用加法器j46实现。输出端z7的值为输入端f0的值和f7的值之差。采用加法器j47实现。以上所述可用下面的公式表示:
z0=f0+f7;z1=f1+f6;z2=f2+f5;z3=f3+f4
z4=f3-f4;z5=f2-f5;z6=f1-f6;z7=f0-f7
本发明的8×8两维整数离散余弦变换的变换电路及反变换电路既可以单片集成化,也可以作为芯片中的一个独立模型进行集成化。进行集成化后,其外围不需再接任何的外围元件。图1~图8中加法器输入端具有空心圆圈的表示以加法器做减法操作。
当进行了8x8两维整数DCT变换和反变换运算结束后,可以用下面所列的表一和表二所给出的量化关系表进行量化。
表一、
表二、