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

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

Info

Publication number
CN100448293C
CN100448293C CNB2005100016496A CN200510001649A CN100448293C CN 100448293 C CN100448293 C CN 100448293C CN B2005100016496 A CNB2005100016496 A CN B2005100016496A CN 200510001649 A CN200510001649 A CN 200510001649A CN 100448293 C CN100448293 C CN 100448293C
Authority
CN
China
Prior art keywords
dct
matrix
module
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.)
Expired - Fee Related
Application number
CNB2005100016496A
Other languages
English (en)
Other versions
CN1816144A (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是变换域中的坐标,
Figure C20051000164900042
二维DCT一般都采用行列分离法来实现,即首先依次对采样域中每一行的图像数据作一维DCT,这称作行变换,然后再依次对每一列的图像数据作一维DCT,这称作列变换。也可以先作列变换再做行变换。其原理简述如公式(2):
Y u , v = 2 N A u A v Σ i = 0 N - 1 [ Σ j = 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和Y7,则其实现的功能为: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分别为:
Figure C20051000164900082
根据三角公式: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分别为:
Figure C20051000164900091
将公式(3)转换为公式(4)的目的是,减少乘法次数,同时使得Y1,...,Y7的计算公式间含有尽可能多的同种运算,以利于并行运算。
去掉公式(4)中各个计算公式的公因数,将其变为公式(5):
Y′0=X0+X7+X1+X6+X2+X5+X3+X4
Y′4=(X0+X7+X3+X4)-(X1+X6+X2+X5);
Y′2=(X0+X7)-(X3+X4)+[(X1+X6)-(X2+X5)]*T2;
Y6=[(X0+X7)-(X3+X4)]*T2-[(X1+X6)-(X2+X5)];
Y′1=(X0-X7)+[(X1-X6)+(X2-X5)]*C4+{(X3-X4)+[(X1-X6)-(X2-X5)]*C4}*T1;
Y′3=(X0-X7)-[(X1-X6)+(X2-X5)]*C4-{(X3-X4)-[(X1-X6)-(X2-X5)]*C4}*T3;
Y′5={(X0-X7)-[(X1-X6)+(X2-X5)]*C4}*T3+{(X3-X4)-[(X1-X6)-(X2-X5)]*C4};
Y′7={(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的行向量,Y′0,...,Y′7为经列变换后得到的矩阵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+(yj3+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)
其中,yjo,...,yj7为行变换前的矩阵Y的第j行的元素,wjo,...,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-yj6,(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 C20051000164900123
以及行变换的各计算公式中的公因数
Figure C20051000164900131
可在行变换的最后再将各元素乘上即可。
步骤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 j * 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*(mjo+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个元素,sjo,...,sj7为矩阵S的第j行的元素。
该步骤可以利用SSE2提供的加法指令(PADDD)实现,PADDD指令可同时作4个32位整数的加法。
该步骤实际上是依据公式(8),将矩阵Zj各列的相邻元素同时相加,这里的相邻元素指的是:矩阵各列的第0个和第1个元素,第2个和第3个元素,第3个和第4个元素,...,即每个元素只和其相邻元素作一次加运算。
f、将sjo,...,sj7分别乘上
Figure C20051000164900141
得到二维DCT的结果矩阵W的第j行的元素wjo,...,wj7
这是因为在作列变换和行变换时都省掉了公因数
Figure C20051000164900142
依次令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 (2)

1、一种二维DCT装置,其特征在于,该装置包括:
控制模块:用于启动输入寄存模块,在启动输入寄存模块后,启动DCT行变换模块;
输入寄存模块:用于接收单位图像子块,然后将所接收的该单位图像子块输出到并行DCT列变换模块;
并行DCT列变换模块:用于接收输入寄存模块输出的单位图像子块,对该单位图像子块的行向量同时进行一维DCT展开,利用三角函数关系对所有行向量进行优化,以减少每个向量中的乘法运算并增加各向量间的相同运算项,将得到的单位图像子块输出到DCT行变换模块;
DCT行变换模块:用于接收并行DCT列变换模块输出的单位图像子块,分别提取并计算该图像子块每一行各元素经一维DCT展开后的相同运算项;保存每一行的行变换系数,在接收到控制模块的启动指令后,分别对每一行的行变换系数和以矩阵表示的相同运算项的对应元素,相乘后相加,然后将相加得到的矩阵各列的相邻元素同时相加,依次得到二维DCT结果矩阵的每一行的所有元素。
2、一种二维DCT方法,其特征在于,该方法包括:
A、将原始图像数据的单位图像子块以单位矩阵的形式读入,然后,对该单位矩阵的行向量进行一维DCT展开,根据每个向量中的乘法运算最少和向量相互间含相同运算最多的原则进行优化;提取并删除优化后的每个向量的公因数,然后,对所有向量同时进行计算,得到列变换结果;将所述删除的公因数与对应的行变换系数相乘;
B、将列变换的结果以单位矩阵形式读入,分别将所述相乘得到的每一行的行变换系数以矩阵形式读入,同时,对列变换结果矩阵的每一行的各个元素进行一维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 CN1816144A (zh) 2006-08-09
CN100448293C true 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)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019002B2 (en) * 2006-06-08 2011-09-13 Qualcomm Incorporated Parallel batch decoding of video blocks
US8493979B2 (en) * 2008-12-30 2013-07-23 Intel Corporation Single instruction processing of network packets
CN102710906B (zh) * 2012-04-16 2014-07-16 天津大学 实现二维离散余弦变换的cmos图像传感器
CN108040257A (zh) * 2017-11-20 2018-05-15 深圳市维海德技术股份有限公司 一种二维dct硬件实现方法及装置
CN112637606B (zh) * 2020-12-30 2023-07-14 乐鑫信息科技(上海)股份有限公司 二维dct/idct装置和方法以及jpeg编解码装置和方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0566184A2 (en) * 1992-04-13 1993-10-20 Koninklijke Philips Electronics N.V. Picture transformer and television system with a transmitter and a receiver comprising a picture transformer
US5590066A (en) * 1993-09-24 1996-12-31 Sony Corporation Two-dimensional discrete cosine transformation system, two-dimensional inverse discrete cosine transformation system, and digital signal processing apparatus using same
US6038580A (en) * 1998-01-02 2000-03-14 Winbond Electronics Corp. DCT/IDCT circuit
CN1553707A (zh) * 2003-06-02 2004-12-08 杭州高特信息技术有限公司 一种dct快速变换结构

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0566184A2 (en) * 1992-04-13 1993-10-20 Koninklijke Philips Electronics N.V. Picture transformer and television system with a transmitter and a receiver comprising a picture transformer
US5590066A (en) * 1993-09-24 1996-12-31 Sony Corporation Two-dimensional discrete cosine transformation system, two-dimensional inverse discrete cosine transformation system, and digital signal processing apparatus using same
US6038580A (en) * 1998-01-02 2000-03-14 Winbond Electronics Corp. DCT/IDCT circuit
CN1553707A (zh) * 2003-06-02 2004-12-08 杭州高特信息技术有限公司 一种dct快速变换结构

Also Published As

Publication number Publication date
CN1816144A (zh) 2006-08-09

Similar Documents

Publication Publication Date Title
CN111095241B (zh) 加速数学引擎
US7127482B2 (en) Performance optimized approach for efficient downsampling operations
Chen et al. Efficient architecture of variable size HEVC 2D-DCT for FPGA platforms
CN109472350A (zh) 一种基于块循环稀疏矩阵的神经网络加速系统
CN100448293C (zh) 一种二维离散余弦变换装置及方法
EP0506111A2 (en) DCT/IDCT processor and data processing method
US20070094320A1 (en) Parallel Adder-Based DCT / IDCT Design Using Cyclic Convolution
JPH0526229B2 (zh)
KR100975602B1 (ko) 이산 웨이브릿 변환 구조
CN110851779A (zh) 用于稀疏矩阵运算的脉动阵列架构
CN1268231A (zh) 数据块规模可变的2维逆向离散余弦变换机
CN101697486A (zh) 一种二维小波变换集成电路结构
CN103237219A (zh) 二维离散余弦变换/逆离散余弦变换电路及方法
Alam et al. A new time distributed DCT architecture for MPEG-4 hardware reference model
Ang et al. 2-D DWT system architecture for image compression
Ipsen Singular value decomposition with systolic arrays
CN100452880C (zh) 一种用于视频编码的整数离散余弦变换方法
Emeliyanenko A complete modular resultant algorithm targeted for realization on graphics hardware
Timarchi et al. Area-time-power efficient maximally redundant signed-digit modulo 2 n− 1 adder and multiplier
CN203279074U (zh) 二维离散余弦变换/逆离散余弦变换电路
Patil et al. Low Power High Speed VLSI Architecture for 1-D Discrete Wavelet Transform
Petrovsky et al. Embedded distributed arithmetic based quaternions multiplier of paraunitary filter bank for lossless-to-lossy image coding
Cobrnic et al. An Area Efficient and Reusable HEVC 1D-DCT Hardware Accelerator
Najoui et al. Optimized implementation of modified gram schmidt algorithm on VLIW architecture
Elias et al. Area efficient fully parallel distributed arithmetic architecture for one-dimensional discrete cosine transform

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