CN1816144A - 一种二维离散余弦变换装置及方法 - Google Patents

一种二维离散余弦变换装置及方法 Download PDF

Info

Publication number
CN1816144A
CN1816144A CN 200510001649 CN200510001649A CN1816144A CN 1816144 A CN1816144 A CN 1816144A CN 200510001649 CN200510001649 CN 200510001649 CN 200510001649 A CN200510001649 A CN 200510001649A CN 1816144 A CN1816144 A CN 1816144A
Authority
CN
China
Prior art keywords
dct
module
matrix
row
line translation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200510001649
Other languages
English (en)
Other versions
CN100448293C (zh
Inventor
蒋晓华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CNB2005100016496A priority Critical patent/CN100448293C/zh
Publication of CN1816144A publication Critical patent/CN1816144A/zh
Application granted granted Critical
Publication of CN100448293C publication Critical patent/CN100448293C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种二维DCT装置,包括:控制模块、输入寄存模块、并行DCT列变换模块和DCT行变换模块。本发明同时公开了一种二维DCT方法,本发明提供的方法包括:对原始输入图像的单位子块的所有列同时进行并行的一维DCT,然后依次对单位子块的每一行作一维DCT。本发明方法通过在列变换的向量计算中减少乘法次数并增加相同运算,以利于对各列同时进行一维DCT,大大加快了列变换的速度;在行变换中通过提取每一行各元素的相同运算项,以利于对每一行的各元素同时进行一维DCT,从整体上提高了二维DCT的运算速度。本发明公开的装置和方法可以应用在图像压缩编码中,实现实时的视频编解码。

Description

一种二维离散余弦变换装置及方法
技术领域
本发明涉及图像压缩编码技术领域,具体涉及一种二维离散余弦变换装置及方法。
背景技术
离散余弦变换(DCT,Discrete Cosine Transform)具有很强的能量聚积特性:绝大部分信号能量被聚集在低频分量,部分高频分量在信号处理和传输过程中可以被忽略。因为这一特性,DCT在图像处理和数据压缩等领域被广泛应用。运动图像编码标准(MPEG)和静止图像编码标准(JPEG)都采用DCT来消除空间冗余,DCT也被应用在国际电信联盟(ITU)的H.261、H.263及H.26L等视频编码标准中。
二维DCT的定义如公式(1):
Y u , v = 2 N A u A v Σ i = 0 N - 1 Σ j = 0 N - 1 X i , j cos ( 2 i + 1 ) uπ 2 N cos ( 2 j + 1 ) vπ 2 N - - - ( 1 )
其中,i,j,u,v=0,1,...,N-1;i,j是采样域中的空间坐标,u,v是变换域中的坐标,Au
二维DCT一般都采用行列分离法来实现,即首先依次对采样域中每一行的图像数据作一维DCT,这称作行变换,然后再依次对每一列的图像数据作一维DCT,这称作列变换。也可以先作列变换再做行变换。其原理简述如公式(2):
Y u , v = 2 N A u A v Σ i = 0 N - 1 [ Σ i = 0 N - 1 X i , j cos ( 2 j + 1 ) vπ 2 N ] cos ( 2 i + 1 ) uπ 2 N - - - ( 2 )
这种方法的缺点是,每次只能处理一行或一列数据,运算速度较慢,对于MPEG-4、H.264等视频编解码算法,由于这些视频编码算法的复杂度很高,采用现有的DCT算法无法实现实时的视频编解码。
发明内容
有鉴于此,本发明的主要目的在于提供一种二维DCT装置,以实现实时的视频编解码。
本发明另一目的在于提供一种二维DCT方法,以提高二维DCT的速度,从而提高图像编码算法的效率,实现实时的视频编解码。
为达到上述目的,本发明的技术方案是这样实现的:
一种二维DCT装置,该装置包括:
控制模块:用于启动输入寄存模块;
输入寄存模块:用于接收单位图像子块,然后将所接收的该单位图像子块输出到并行DCT列变换模块;
并行DCT列变换模块:用于接收输入寄存模块输出的单位图像子块,对该单位图像子块的所有列同时进行并行的一维DCT后,将得到的单位图像子块输出到DCT行变换模块;
DCT行变换模块:用于接收并行DCT列变换模块输出的单位图像子块,对该单位图像子块的每一行依次作一维DCT。
所述DCT行变换模块进一步包括:
数据转换模块:用于接收并行DCT列变换模块输出的单位图像子块,分别提取并计算该图像子块每一行各元素经一维DCT展开后的相同运算项,将相同运算项的计算结果以矩阵形式输出到并行加乘模块;
系数装载模块:用于保存每一行的行变换系数,在接收到控制模块的启动指令后,将每一行的行变换系数以矩阵形式输出到并行加乘模块;
并行加乘模块:用于接收数据转换模块和系数装载模块的输出矩阵,分别对每一行的行变换系数和数据转换模块输出矩阵的对应元素,相乘后相加,再将每一行的结果以矩阵形式输出到加模块;
加模块:用于接收并行加乘模块的输出矩阵,然后将该矩阵的对应元素相加,依次得到二维DCT结果矩阵的每一行的所有元素;
同时,所述控制模块进一步用于,在启动输入寄存模块后,启动系数装载模块。
一种二维DCT方法,该方法包括:
A、将原始图像数据的单位图像子块以单位矩阵的形式读入,然后,对该单位矩阵的所有列同时进行并行的一维DCT,得到列变换结果;
B、将列变换的结果以单位矩阵形式读入,对矩阵的每一行依次作一维DCT,得到二维DCT的最终结果。
所述对单位矩阵的所有列同时进行并行的一维DCT具体为:
将单位矩阵的行向量进行一维DCT展开,利用三角关系对所有向量进行优化,提取并删除优化后的每个向量的公因数,然后,对所有向量同时进行计算;且,
在步骤B之前进一步包括,将所述删除的公因数与对应的行变换系数相乘。
所述对列变换的所有向量进行优化为,根据每个向量中的乘法运算最少和向量相互间含相同运算最多的原则进行优化。
步骤B所述对单位矩阵的每一行作一维DCT具体为:
分别将每一行的行变换系数以矩阵形读入,同时,对步骤A得到的列变换结果矩阵的每一行的各个元素进行一维DCT展开,分别提取并计算每一行各元素间的相同运算项,然后将相同运算项与对应的行变换系数同时进行加乘后得到一个矩阵,再将该矩阵各列的相邻元素同时相加,得到二维DCT结果矩阵的行向量。
与现有技术相比,本发明通过在列变换中减少乘法次数并增加相同运算,以利于对各列同时进行一维DCT,大大加快了列变换的速度;在行变换中通过提取每一行各元素的相同运算项,以利于对每一行的各元素同时进行一维DCT,从整体上提高了二维DCT的运算速度。本发明提供的方法可以应用在图像压缩编码中,实现实时的视频编解码。
附图说明
图1为本发明提供的实现二维DCT列变换的数据流程图;
图2为利用PMADDWD指令实现数据加乘的示意图;
图3为本发明提供的实现二维DCT的装置图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
通常,对图像作二维DCT是以8*8的子块为一个变换单元。图1是本发明对由8*8子块组成的图像数据实现二维DCT列变换的数据流程图,为方便起见,将8*8的子块描述成8*8的矩阵,本发明中,将8*8的子块作为单位图像子块,8*8的矩阵作为单位矩阵。如图1所示,变换前8*8矩阵X的行向量为:X0,...,X7,经列变换后得到矩阵Y,其行向量为:Y0,...,Y7。为了了解列变换的具体实现流程,将图1中各种运算结构的具体功能描述如下:
结构11:设其输入为I11和I12,输出为Y0和Y4,则其实现的功能为:Y0=I11+I12,Y4=I11-I12
结构12:设其输入为I21和I22,输出为Y1和Y2,则其实现的功能为:Y1=I22+I21*T1,Y7=I22*T1-I21
结构13:设其输入为I31和I32,输出为Y5和Y3,则其实现的功能为:Y5=I32-I31*T3,Y3=-(I32*T3+I31)。
结构14:设其输入为I4,输出为O4,则其实现的功能为:O4=I4*C4
需要指出的是,在图1中若有跟以上所述结构之一相同的运算结构,那么只需改变以上所述结构的输入或者输入和系数就可得到该运算结构的输出。
图1的设计原理如下:
根据一维DCT变换公式: Y u = 2 N A u Σ i = 0 N - 1 X i cos ( 2 i + 1 ) uπ 2 N , 可得出公式(3):
Y0=(X0+X7+X1+X6+X2+X5+X3+X4)*C4/2;
Y4=[(X0+X7+X3+X4)-(X1+X6+X2+X5)]*C4/2;
Y2={[(X0+X7)-(X3+X4)]*C2+[(X1+X6)-(X2+X5)]*C6}/2;
Y6={[(X0+X7)-(X3+X4)]*C6-[(X1+X6)-(X2+X5)]*C2}/2;
Y1={[(X0-X7)*C1+(X1-X6)*C3]+[(X2-X5)*C5+(X3-X4)]*C7}/2;
Y3={[(X0-X7)*C3-(X1-X6)*C7]-[(X2-X5)*C1-(X3-X4)]*C5}/2;
Y5={[(X0-X7)*C5-(X1-X6)*C1]+[(X2-X5)*C7+(X3-X4)]*C3}/2;
Y7={[(X0-X7)*C7-(X1-X6)*C5]+[(X2-X5)*C3-(X3-X4)]*C1}/2
                                                  (3)其中,C1,...,C7分别为: cos 1 π 16 , . . . , cos 7 π 16 .
根据三角公式:tanα=sinα/cosα,sin(α+β)=sinαcosβ+cosαsinβ,sin(α-β)=sinαcosβ-cosαsinβ,cos(α+β)=cosαcosβ-sinαsinβ,cos(α-β)=cosαcosβ+sinαsinβ, sin ( π 2 - α ) = cos α , 可将公式(3)转换为公式(4):
Y2={(X0+X7)-(X3+X4)+[(X1+X6)-(X2+X5)]*T2}*C2/2;
Y6={[(X0+X7)-(X3+X4)]*T2-[(X1+X6)-(X2+X5)]}*C2/2;
Y1={(X0-X7)+[(X1-X6)+(X2-X5)]*C4+{(X3-X4)+[(X1-X6)-(X2-X5)]*C4}*T1}*C1/2;
Y3={(X0-X7)-[(X1-X6)+(X2-X5)]*C4-{(X3-X4)-[(X1-X6)-(X2-X5)]*C4}*T3}*C3/2;
Y5={(X0-X7)-[(X1-X6)+(X2-X5)]*C4}*T3+{(X3-X4)-[(X1-X6)-(X2-X5)]*C4}}*C3/2;
Y7={{(X0-X7)+[(X1-X6)+(X2-X5)]*C4}*T1-{(X3-X4)+[(X1-X6)-(X2-X5)]*C4}}*C1/2
                                                     (4)其中,T1,...,T7分别为: tan 1 π 16 , . . . , tan 7 π 16 .
将公式(3)转换为公式(4)的目的是,减少乘法次数,同时使得Y1,...,Y7的计算公式间含有尽可能多的同种运算,以利于并行运算。
去掉公式(4)中各个计算公式的的公因数,将其变为公式(5):
Y0′=X0+X7+X1+X6+X2+X5+X3+X4
Y4′=(X0+X7+X3+X4)-(X1+X6+X2+X5);
Y2′=(X0+X7)-(X3+X4)+[(X1+X6)-(X2+X5)]*T2;
Y6′=[(X0+X7)-(X3+X4)]*T2-[(X1+X6)-(X2+X5)];
Y1′=(X0-X7)+[(X1-X6)+(X2-X5)]*C4+{(X3-X4)+[(X1-X6)-(X2-X5)]*C4}*T1;
Y3′=(X0-X7)-[(X1-X6)+(X2-X5)]*C4-{(X3-X4)-[(X1-X6)-(X2-X5)]*C4}*T3;
Y5′={(X0-X7)-[(X1-X6)+(X2-X5)]*C4}*T3+{(X3-X4)-[(X1-X6)-(X2-X5)]*C4};
Y7′={(X0-X7)+[(X1-X6)+(X2-X5)]*C4}*T1-{(X3-X4)+[(X1-X6)-(X2-X5)]*C4}
                                                  (5)
将公式(5)与公式(4)相比可以看出,公式(5)将公式(4)各个计算公式的公因数省掉了,这些省掉的公因数将在行变换时乘上,这样既可以提高运算速度,也可以提高运算精度。
以下是本发明提供的对由8*8子块组成的图像数据实现二维DCT的具体步骤,为方便起见,同样将8*8的子块描述成8*8的矩阵。
步骤1:利用公式(5)对原始8*8矩阵X的每一列同时作一维DCT,即作并行列变换。
设X0,...,X7为矩阵X的行向量,Y0′,...,Y7′为经列变换后得到的矩阵Y′的行向量。
在进行列变换时,当从寄存器读取或处理向量X0时,实际上是同时读取或处理X0的8个元素,例如:当计算X0+X7时,实际上是同时将X0中的8个元素和X7中的8个元素对应相加。同时,X0+X7等各向量的相同运算项只需计算一次,之后可供各向量共享。因此,8个列变换可以同时进行,大大加快了DCT运算的速度。
以上列变换可利用Intel处理器集成的第二代流单条指令处理多个数据扩展(SSE2,Stream SIMD Extension 2)技术提供的指令实现,SSE2提供的指令可以同时处理8个16位整数。
步骤2:利用一维DCT公式对列变换结果矩阵的每一行依次作行变换,得到二维DCT的最终结果。
在利用一维DCT公式对列变换结果矩阵的每一行依次作行变换,具体可采用如下步骤:
步骤201:根据一维DCT的展开公式(6),对矩阵Y′中的元素作如公式(7)所示的变换。
公式(6)如下:
wj0=[(yj0+yj7)*C4+(yj1+yj6)*C4+(yj2+yj5)*C4+(yj5+yj4)*C4]/2;
wj1={[(yj0-yj7)*C1+(yj1-yj6)*C3]+[(yj2-yj5)*C5+(yj3-yj4)]*C7}/2;
wj2={[(yj0+yj7)*C2+(yj1+yj6)*C6]-[(yj2+yj5)*C6+(yj3+yj4)*C2]}/2;
wj3={[(yj0-yj7)*C3-(yj1-yj6)*C7]-[(yj2-yj5)*C1+(yj3-yj4)]*C5}/2;
wj4={[(yj0+yj7)*C4-(yj1+yj6)*C4]-[(yj2+yj5)*C4-(yj3+yj4)*C4]}/2;
wj5={[(yj0-yj7)*C5-(yj1-yj6)*C1]+[(yj2-yj5)*C7+(yj3-yj4)]*C3}/2;
wj6={[(yj0+yj7)*C6-(yj1+yj6)*C2]+[(yj2+yj5)*C2-(yj3+yj4)*C6]}/2;
wj7={[(yj0-yj7)*C7-(yj1-yj6)*C5]+[(yj2-yj5)*C3-(yj3-yj4)]*C1}/2,(j=0,...,7)
                                                            (6)其中,yj0,...,yj7为行变换前的矩阵Y的第j行的元素,wj0,...,wj7为行变换后的结果矩阵W的第j行的元素。
从公式(6)可以看出,各个计算公式间含有很多相同运算,例如:y′j0+y′j7,y′j0-y′j7,y′j1+y′j6,y′j1-y′j6,y′j2+y′j5,y′j2-y′j5,y′j3+y′j4,y′j3-y′j4,因此,可首先计算出这些相同运算项,然后将它们代入各计算公式中。也就是说,相同运算项只需计算一次,之后可供同一行的各元素共享。
将公式(6)中的各个计算公式间的相同运算项用公式(7)表示为:
mj0=y′j0+y′j7,mj7=y′j0-y′j7,mj1=y′j1+y′j6,mj6=y′j1-y′j6
                                                                         (7)
mj2=y′j2+y′j5,mj5=y′j2-y′j5,mj3=y′j3+y′j4,mj4=y′j3-y′j4其中,y′j0,...,y′j7表示向量Y′j(j=0,...,7)的8个元素。
将公式(7)代入公式(6)可得到:
wj0=(C4*mj0+C4*mj1+C4*mj2+C4*mj3)/2;
wj1=(C1*mj7+C3*mj6+C5*mj5+C7*mj4)/2;
wj2=(C2*mj0+C6*mj1-C6*mj2-C2*mj3)/2;
wj3=(C3*mj7-C7*mj6-C1*mj5-C5*mj4)/2;
wj4=(C4*mj0-C4*mj1-C4*mj2+C4*mj3)/2;
wj5=(C5*mj7-C1*mj6+C7*mj5+C3*mj4)/2;
wj6=(C6*mj0-C2*mj1+C2*mj2-C6*mj3)/2;
wj7=(C7*mj7-C5*mj6+C3*mj5-C1*mj4)/2,(j=0,...,7)       (8)
步骤202:给出矩阵Mj和系数矩阵Pj(j=0,...,7)。
矩阵Mj如公式(9):
M j = m j 0 m j 1 m j 7 m j 6 m j 0 m j 1 m j 7 m j 6 m j 2 m j 3 m j 5 m j 4 m j 2 m j 3 m j 5 m j 4 - - - ( 9 )
由公式(8)可以看出,公式(8)中的各个计算公式实际上都是由公式(7)中的部分相同运算项和一些系数相乘后再相加得到的,为了实现相同运算项和对应系数的加乘,将公式(8)中各个计算公式的系数写成如公式(10)的矩阵形式:
P j = p 4 j p 4 j p 1 j p 3 j p 2 j p 6 j p 3 j - p 7 j p 4 j p 4 j p 5 j p 7 j - p 6 j - p 2 j - p 1 j - p 5 j p 4 j - p 4 j p 5 j - p 1 j p 6 j - p 2 j p 7 j - p 5 j - p 4 j p 4 j p 7 j p 3 j p 2 j - p 6 j p 3 j - p 1 j ,
j=0,4时,p1j,p2j,...,p7j分别为:
C1*C4,C2*C4,...,C7*C4;
j=1,7时,p1j,p2j,...,p7j分别为:
C1*C1,C2*C1,...,C7*C1;
j=2,6时,p1j,p2j,...,p7j分别为:
C1*C2,C2*C2,...,C7*C2;
j=3,5时,p1j,p2j,...,p7j分别为:
C1*C3,C2*C3,...,C7*C3                              (10)
将公式(10)中的系数与公式(8)中的相比可以看出,j=0,4时,公式(10)中的p1j,p2j,...,p7j比公式(8)多乘了C4,这是为了将列变换时省掉的公因数乘上。同样,j=1,7,j=2,6,j=3,5时,各个对应的系数都要作此处理。
在这里,可暂不考虑列变换时省掉的公因数 以及行变换的各计算公式中的公因数 可在行变换的最后再将各元素乘上
Figure A20051000164900132
即可。
步骤203:将Pj和M0j的对应向量进行加乘。
具体步骤如下:
设矩阵Pj的行向量为:P0j,P1j,P2j,P3j,矩阵Mj的行向量为:M0j,M1j
a、对P0j和M0j进行加乘运算,即将P0j和M0j的对应元素相乘,得到8个元素,然后将第0和第1个、第2和第3个、第4和第5个、第6和第7个元素分别相加,得到矩阵Zj的行向量Z0j
b、对P1j和M1j进行加乘运算,可得到矩阵Zj的行向量Z1j
c、对P2j和M0j进行加乘运算,可得到矩阵Zj的行向量Z2j
d、对P3j和M1j进行加乘运算,可得到矩阵Zj的行向量Z3j
最后得到矩阵Zj
Z j = p 4 j * m j 0 + p 4 j * m j 1 p 1 j * m j 7 + p 3 j * m j 6 p 2 j * m j 0 + p 6 j * m j 1 p 3 j * m j 7 - p 7 j * m j 6 p 4 j * m j 2 + p 4 j * m j 3 p 5 j * m j 5 + p 7 j * m j 4 - p 6 j * m j 2 - p 2 j * m j 3 - p 1 j * m j 5 - p 5 j * m j 4 p 4 j * m j 0 - p 4 j * m j 1 p 5 j * m j 7 - p 1 j * m j 6 p 6 j * m j 0 - p 2 j * m j 1 p 7 1 * m j 7 - p 5 j * m j 6 - p 4 j * m j 2 + p 4 j * m j 3 p 7 j * m j 5 + p 3 j * m j 4 p 2 j * m j 2 - p 6 j * m j 3 p 3 j * m j 5 - p 1 j * m j 4 - - - ( 11 )
SSE2提供的加乘指令(PMADDWD)可以实现8个16位整数和另外8个16位整数的加乘。其具体功能如图2所示,设目标寄存器XMM0中存放了8个16位整数:X0,...,X7,源寄存器XMM1中存放了8个16位整数:Y0,...,Y7,则对XMM0和XMM1中的数据利用PMADDWD指令后可以得到结果:X7*Y7+X6*Y6,X5*Y5+X4*Y4,X3*Y3+X2*Y2,X1*Y1+X0*Y0,这4个32位整数存放在XMM0中。
e、将矩阵Zj的元素z00和z10、z01和z11、z02和z12、z03和z13、z20和z30、z21和z31、z22和z32、z23和z33分别相加,可以得到:
sj0=p4j*(mj0+mj1+mj2+mj3);
sj1=p1j*mj7+p3j*mj6+p5j*mj5+p7j*mj4
sj2=p2j*(mj0-mj3)+p6j*(mj1-mj2);
sj3=p3j*mj7-p7j*mj6-p1j*mj5-p5j*mj6
sj4=p4j*(mj0-mj1-mj2+mj3);
sj5=p4j*(mj0-mj1)+p4j*(mj3-mj2);
sj6=p5*mj7-p1j*mj6+p7j*mj5+p3j*mj4
sj7=p7j*mj7-p5j*mj6+p3j*mj5-p1j*mj6,                              (12)其中,zuv,u,v=0,1,2,3为矩阵Zj第u行的第v个元素,sj0,...,sj7为矩阵S的第j行的元素。
该步骤可以利用SSE2提供的加法指令(PADDD)实现,PADDD指令可同时作4个32位整数的加法。
该步骤实际上是依据公式(8),将矩阵Zj各列的相邻元素同时相加,这里的相邻元素指的是:矩阵各列的第0个和第1个元素,第2个和第3个元素,第3个和第4个元素,...,即每个元素只和其相邻元素作一次加运算。
f、将sj0,...,sj7分别乘上
Figure A20051000164900141
得到二维DCT的结果矩阵W的第j行的元素wj0,...,wj7
这是因为在作列变换和行变换时都省掉了公因数
依次令j=0,...,7,执行步骤a~f,即可得到矩阵X经二维DCT变换后的结果矩阵W。
需要指出的是,矩阵Mj和Pj中各个元素的排列次序并不局限于公式(9)和公式(10)所示的情况,只要它们的排列次序满足条件:将Mj和Pj的对应向量加乘并将加乘后得到的矩阵的各列的相邻元素相加后可得到公式(8)中的各元素即可。
另外,由于从寄存器读取数据的规律是:每次读一行,因此,如果行变换采用与列变换相同的并行算法,在进行行变换前必须对列变换的结果矩阵进行转置,即将行列互换,而转置过程比较耗时,因此从总体运算速度考虑,在本发明中行变换采用了依次对各行作一维DCT的算法,避免了行列转置过程,从总体上提高了运算速度。
图3是本发明提供的实现二维DCT的装置图,以8*8的图像子块为例,如图3所示,该装置主要包括:
控制模块30:用于启动输入寄存模块31,并在启动输入寄存模块时启动系数装载模块302。
输入寄存模块31:用于接入8*8的图像子块,并在接收到控制模块的启动指令后将其输出到并行DCT列变换模块32。接入或输出可以矩阵形式,即以每次并行接入或输出1列数据的形式进行,每8次接入或输出为一个矩阵。
并行DCT列变换模块32:用于接收8*8的矩阵,并对8*8的矩阵作并行DCT列变换,将列变换结果以矩阵形式输出到DCT行变换模块33。
DCT行变换模块33:用于依次对并行DCT列变换模块输出矩阵的每一行作一维DCT变换,得到二维DCT的最终结果。
DCT行变换模块主要包括以下子模块:
数据转换模块301:用于接收并行DCT列变换模块32的输出矩阵,并根据公式(6)对该矩阵每一行的各元素进行一维DCT展开,提取并计算各计算公式间的相同运算项,并将计算得到的结果以矩阵形式输出到并行加乘模块303。
系数装载模块302:用于保存行变换的系数,并在接收到控制模块的启动指令后将系数以矩阵形式输出到并行加乘模块303。系数矩阵中元素的排列依据是公式(8)以及数据转换模块301的输出矩阵。
并行加乘模块303:用于根据公式(8)实现系数装载模块302输出的系数矩阵和数据转换模块301输出矩阵的对应行的加乘,并将加乘结果以矩阵形式输出到加模块304。
加模块304:用于根据公式(8)将并行加乘模块303的输出对应相加,得到二维DCT结果矩阵的行向量。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1、一种二维DCT装置,其特征在于,该装置包括:
控制模块:用于启动输入寄存模块;
输入寄存模块:用于接收单位图像子块,然后将所接收的该单位图像子块输出到并行DCT列变换模块;
并行DCT列变换模块:用于接收输入寄存模块输出的单位图像子块,对该单位图像子块的所有列同时进行并行的一维DCT后,将得到的单位图像子块输出到DCT行变换模块;
DCT行变换模块:用于接收并行DCT列变换模块输出的单位图像子块,对该单位图像子块的每一行依次作一维DCT。
2、如权利要求1所述的装置,其特征在于,所述DCT行变换模块进一步包括:
数据转换模块:用于接收并行DCT列变换模块输出的单位图像子块,分别提取并计算该图像子块每一行各元素经一维DCT展开后的相同运算项,将相同运算项的计算结果以矩阵形式输出到并行加乘模块;
系数装载模块:用于保存每一行的行变换系数,在接收到控制模块的启动指令后,将每一行的行变换系数以矩阵形式输出到并行加乘模块;
并行加乘模块:用于接收数据转换模块和系数装载模块的输出矩阵,分别对每一行的行变换系数和数据转换模块输出矩阵的对应元素,相乘后相加,再将每一行的结果以矩阵形式输出到加模块;
加模块:用于接收并行加乘模块的输出矩阵,然后将该矩阵的对应元素相加,依次得到二维DCT结果矩阵的每一行的所有元素;
同时,所述控制模块进一步用于,在启动输入寄存模块后,启动系数装载模块。
3、一种二维DCT方法,其特征在于,该方法包括:
A、将原始图像数据的单位图像子块以单位矩阵的形式读入,然后,对该单位矩阵的所有列同时进行并行的一维DCT,得到列变换结果;
B、将列变换的结果以单位矩阵形式读入,对矩阵的每一行依次作一维DCT,得到二维DCT的最终结果。
4、如权利要求3所述的方法,其特征在于,所述对单位矩阵的所有列同时进行并行的一维DCT具体为:
将单位矩阵的行向量进行一维DCT展开,利用三角关系对所有向量进行优化,提取并删除优化后的每个向量的公因数,然后,对所有向量同时进行计算;且,
在步骤B之前进一步包括,将所述删除的公因数与对应的行变换系数相乘。
5、如权利要求4所述的方法,其特征在于,所述对列变换的所有向量进行优化为,根据每个向量中的乘法运算最少和向量相互间含相同运算最多的原则进行优化。
6、如权利要求3所述的方法,其特征在于,步骤B所述对单位矩阵的每一行作一维DCT具体为:
分别将每一行的行变换系数以矩阵形读入,同时,对步骤A得到的列变换结果矩阵的每一行的各个元素进行一维DCT展开,分别提取并计算每一行各元素间的相同运算项,然后将相同运算项与对应的行变换系数同时进行加乘后得到一个矩阵,再将该矩阵各列的相邻元素同时相加,得到二维DCT结果矩阵的行向量。
CNB2005100016496A 2005-02-03 2005-02-03 一种二维离散余弦变换装置及方法 Expired - Fee Related CN100448293C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100016496A CN100448293C (zh) 2005-02-03 2005-02-03 一种二维离散余弦变换装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100016496A CN100448293C (zh) 2005-02-03 2005-02-03 一种二维离散余弦变换装置及方法

Publications (2)

Publication Number Publication Date
CN1816144A true CN1816144A (zh) 2006-08-09
CN100448293C CN100448293C (zh) 2008-12-31

Family

ID=36908062

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100016496A Expired - Fee Related CN100448293C (zh) 2005-02-03 2005-02-03 一种二维离散余弦变换装置及方法

Country Status (1)

Country Link
CN (1) CN100448293C (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101461247B (zh) * 2006-06-08 2011-07-27 高通股份有限公司 视频块的并行批量解码
CN102710906A (zh) * 2012-04-16 2012-10-03 天津大学 实现二维离散余弦变换的cmos图像传感器
CN103368853A (zh) * 2008-12-30 2013-10-23 英特尔公司 网络分组的simd处理
CN108040257A (zh) * 2017-11-20 2018-05-15 深圳市维海德技术股份有限公司 一种二维dct硬件实现方法及装置
CN112637606A (zh) * 2020-12-30 2021-04-09 乐鑫信息科技(上海)股份有限公司 二维dct/idct装置和方法以及jpeg编解码装置和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0566184A3 (en) * 1992-04-13 1994-11-17 Philips Electronics Nv Image transformer as well as television system comprising a transmitter and a receiver provided with a transformer.
JP3697717B2 (ja) * 1993-09-24 2005-09-21 ソニー株式会社 2次元離散コサイン変換装置および2次元逆離散コサイン変換装置
TW364269B (en) * 1998-01-02 1999-07-11 Winbond Electronic Corp Discreet cosine transform/inverse discreet cosine transform circuit
CN1326397C (zh) * 2003-06-02 2007-07-11 杭州高特信息技术有限公司 一种dct快速变换结构

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101461247B (zh) * 2006-06-08 2011-07-27 高通股份有限公司 视频块的并行批量解码
CN103368853A (zh) * 2008-12-30 2013-10-23 英特尔公司 网络分组的simd处理
CN102710906A (zh) * 2012-04-16 2012-10-03 天津大学 实现二维离散余弦变换的cmos图像传感器
CN102710906B (zh) * 2012-04-16 2014-07-16 天津大学 实现二维离散余弦变换的cmos图像传感器
CN108040257A (zh) * 2017-11-20 2018-05-15 深圳市维海德技术股份有限公司 一种二维dct硬件实现方法及装置
CN112637606A (zh) * 2020-12-30 2021-04-09 乐鑫信息科技(上海)股份有限公司 二维dct/idct装置和方法以及jpeg编解码装置和方法
CN112637606B (zh) * 2020-12-30 2023-07-14 乐鑫信息科技(上海)股份有限公司 二维dct/idct装置和方法以及jpeg编解码装置和方法

Also Published As

Publication number Publication date
CN100448293C (zh) 2008-12-31

Similar Documents

Publication Publication Date Title
CN1791222A (zh) 对有损及无损的2-d数据压缩的可逆转换
CN1231068C (zh) 图像和视频编码用的改进的块变换和量化
CN1816144A (zh) 一种二维离散余弦变换装置及方法
Lai et al. A high-performance and memory-efficient VLSI architecture with parallel scanning method for 2-D lifting-based discrete wavelet transform
CN101047849A (zh) 离散余弦逆变换方法及其装置
CN1809839A (zh) 自适应的多维信号序列编码/解码方法和装置
CN1722130A (zh) 可重配置运算装置
CN1816154A (zh) 用于运动估计的方法和装置
CN1455599A (zh) 图像和视频编码的2-d变换
CN1547854A (zh) 图像编码方法、图像译码方法、图像编码装置、图像译码装置、程序、计算机数据信号,以及图像传送系统
CN101064848A (zh) 图像数据处理装置与方法
CN1622137A (zh) 一种对图像进行快速压缩和解压缩的方法
CN1738238A (zh) 高速可配置rsa加密算法及协处理器
CN1627325A (zh) 色彩变换方法及装置
CN1845213A (zh) 一种实现sms4密码算法中加解密处理的方法
CN1147155C (zh) Dct运算装置
CN1571281A (zh) 数据高速压缩伸展方法及其装置
Park et al. Flexible integer DCT architectures for HEVC
CN1278565C (zh) 图像解码单元和图像编码、解码装置和编码、解码方法
CN1107597A (zh) 管线式与心跳式及单指令多数据流的阵列处理架构及方法
CN1801940A (zh) 整型变换电路和整型变换方法
CN1216495C (zh) 视频图像亚像素插值的方法和装置
CN1142683C (zh) 无转置行列分离二维离散余弦正反变换电路及其方法
CN1290335C (zh) 对被编码的视频信号同时进行格式压缩和解码的方法
CN1209926C (zh) 运用于图像编码和视频编码的整数变换方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081231

Termination date: 20210203

CF01 Termination of patent right due to non-payment of annual fee