JP3977003B2 - 離散コサイン変換・逆離散コサイン変換手法及びその装置 - Google Patents

離散コサイン変換・逆離散コサイン変換手法及びその装置 Download PDF

Info

Publication number
JP3977003B2
JP3977003B2 JP2000297063A JP2000297063A JP3977003B2 JP 3977003 B2 JP3977003 B2 JP 3977003B2 JP 2000297063 A JP2000297063 A JP 2000297063A JP 2000297063 A JP2000297063 A JP 2000297063A JP 3977003 B2 JP3977003 B2 JP 3977003B2
Authority
JP
Japan
Prior art keywords
discrete cosine
cosine transform
matrix
processing
data
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
JP2000297063A
Other languages
English (en)
Other versions
JP2002108843A5 (ja
JP2002108843A (ja
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.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
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 Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2000297063A priority Critical patent/JP3977003B2/ja
Publication of JP2002108843A publication Critical patent/JP2002108843A/ja
Publication of JP2002108843A5 publication Critical patent/JP2002108843A5/ja
Application granted granted Critical
Publication of JP3977003B2 publication Critical patent/JP3977003B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサやマイクロコンピュータ等のデータ変換処理装置に関わり、特に離散コサイン変換や逆離散コサイン変換などを行う画像処理及び音声処理応用データ処理装置に係わる。
【0002】
【従来の技術】
ディジタル化された画像及び音声はデータ量が巨大であり、その蓄積や伝送の際に問題となる。従って、格納前に圧縮しておき、使用する際に伸長する、または、送信前に圧縮し、受信後に伸長するなどの対策が取られる。
【0003】
以下、画像圧縮・伸長にを例に説明する。
【0004】
圧縮
1.2次元離散コサイン変換
2.量子化
3.ハフマン符号化
伸長
4.ハフマン復号化
5.逆量子化
6.2次元逆離散コサイン変換
1の2次元離散コサイン変換及び6の2次元逆離散コサイン変換は8*8画素の2次元ブロックを対象に行われ、変換結果も8*8要素の2次元ブロック値群となる。
【0005】
1の2次元離散コサイン変換変換により、8*8ブロックの高周波成分に相当する要素は通常0に近い値が多くなり、重み付けされた量子化操作によってそれらの大多数は0となる。3のハフマン符号化は、8*8のブロック要素群をビットストリームに変換する。この際、要素中に0が多いことを利用して変換するため、変換後のビットストリームの所用バイト数は1/10程度になるといわれている。
【0006】
伸長におけるハフマン複合化4は3と逆の操作を行い、ビットストリームから8*8のブロック要素群を生成する。5の逆量子化は、2の量子化の際につけた重みの逆数を乗じることで、量子化前の要素群を復元する。6の2次元逆離散コサイン変換は1の逆の操作をすることで、8*8画素を復元する。
【0007】
ここで、上記の圧縮・伸長操作に必要な手間を示す。通常の汎用プロセッサを用いた場合、8*8ブロックあたり、圧縮・伸長ともにそれぞれ2000〜3000命令必要である。640*480のフルカラー(24ビット/画素)画像を対象とする場合には14400倍となり、1静止画像あたり28.8M〜43.2M命令の実行を要する。1命令の処理を1クロック、100MHzで動作するプロセッサを用いた場合、2〜4フレーム/秒の圧縮・伸長速度しか得られず、実時間で画像取り込み・画像再生を行うことで動画的な効果を得ることが難しいといえる。
【0008】
そこで、画像及び音声圧縮・伸長を補助するための特殊な専用演算器を搭載するなどした処理装置を別途用意する方法が多く取られてきた。
【0009】
また、もう一つの解決手段として汎用のプロセッサにも搭載されるようになった、行列・ベクトル演算命令や、複数の積和演算などを同時に処理するSIMD(Single Instruction Multiple Data)方式の命令を利用して変換処理装置を構成する方法もあげられる。離散コサイン変換は線形変換であるため、N点の変換はN*Nの行列で表現でき、上記の行列・ベクトル演算命令やSIMD命令で行列の積を求めることで変換処理が完了する。
【0010】
【発明が解決しようとする課題】
上記で示した2つ目の処理装置で使われる変換行列は、N点の離散コサイン変換にではN*Nの大きさを持つことを述べた。例えば8*8の2次元離散コサイン変換処理を繰り返して処理する場合には、図7に示す64個の係数と8個の入力データを用いて8個の出力を得る行列演算を、縦方向8回、横方向8回繰り返すことになる。
【0011】
このとき、64個の係数は定数であるためプロセッサ内部に保持したまま処理することが理想的である。しかし、現実的にはレジスタ数の制約から主記憶に配置した64個の一部を逐次読み込みながら処理することが要求される。
【0012】
また、上記8点の変換処理を効率良く行なうためには、8*8の行列演算器や、並列度8のSIMD演算器を用意することが望ましいが、例えば3次元グラフィクス等の分野での利便性や回路面積を考慮すると、4*4の行列演算や並列度4のSIMD演算が合理的であるといえる。さらに、音声圧縮・伸長で利用される32点の離散コサイン変換の場合は係数、回路の規模からより実現が難しくなる。
【0013】
特開平9−212484の実施例において、図4に示すように8*8の離散コサイン変換を偶関数部分と奇関数部分数に分解してすることで、8*8行列の右上の4*4成分、左下の4*4成分が0になることが、結論に至る途中式に示されている。4*4の行列と、4次元ベクトルの積を求める演算装置を備えたプロセッサを用いたとき、若干の前処理、後処理を追加することで2回の行列演算によって変換処理が可能であることが暗に示唆されている。
【0014】
しかしながら、異なる4*4の係数行列を2種類使用するため、離散コサイン変換処理で行列演算を行なう度に4*4の係数データを入れ替える処理が必要となる。例えば、行列演算と係数入れ替えのサイクル数の比を1:1とした場合、行列演算器の利用効率は50%以下になると概算できる。
【0015】
本発明は、行列演算、SIMD演算による離散コサイン変換・逆離散コサイン変換の高速化を達成するために、上記変換係数行列の入れ替えにかかるオーバーヘッドを削減して演算器の利用効率を高めることを目的とする。
【0016】
【課題を解決するための手段】
本発明では、上記の問題を解決するために、離散コサイン変換の定義式の性質を利用する。前処理のバタフライ演算と、後処理の加算処理を追加することで、N点の離散コサイン変換が、2つのN/2点の離散コサイン変換に分割できる。このとき、係数行列としてはただ1つの(N/2)*(N/2)行列を使用するため、行列の入れ替えが不要となり、高速な変換処理が可能となる。
【0017】
8点の変換処理における係数の数は、図7と比較すると1/4、図4と比較すると1/2となり、プロセッサ内に係数を保持するレジスタの数を低減できる。
【0018】
この分割は任意の回数繰り返すことで、前後処理が若干増加するが、行列の係数、演算の規模が1/4、1/16、...と縮小できるため、使用するプロセッサに最適な分割数を選択することができる。
【0019】
逆離散コサイン変換に関しても上記の分割は成り立つため、同様に行列入れ替えを不要とした変換処理が可能となる。
【0020】
【発明の実施の形態】
(1)離散コサイン変換の定義
1次元離散コサイン変換の定義式は図5のように示される。係数Aの定義は式(3)であるが、画像圧縮のように離散コサイン変換後に量子化を行う場合、もしくは画像伸長のように逆離散コサイン変換前に逆量子化を行う場合には、その量子化時の重み係数にAを乗じたものを利用すれば、離散コサイン変換の定義を式(3’)のように単純化できる。以後、1次元離散コサイン変換の定義式として式(2)、(3’)、(4)を利用することにする。
【0021】
離散コサイン変換、逆離散コサイン変換の代表的な応用である静止画や動画の圧縮・伸長には、N=8が利用される。そこで、図5の離散コサイン変換でN=8とすれば、図7に示す行列演算で示すことができる。行列の要素は、図6に示すc(n,N)の性質のうち、式(5)を利用して正規化している。逆離散コサイン変換は、この行列を転置した計算に相当するため、ここでは離散コサイン変換のみを扱う。
【0022】
N*N点の2次元離散コサイン変換は上記N点1次元離散コサイン変換を縦方向にN回、その後に横方向にN回(もしくは横方向にN回した後に縦方向にN回)行ったものとして定義できる。つまり、N*N点の2次元離散コサイン変換は、N点の1次元離散コサイン変換2N回に分解できる。以後、1次元離散コサイン変換を中心に扱う。
【0023】
(2)8点離散コサイン変換の分割
ここで、式(2)をk=2K、k=2K+1とおき、偶数出力、奇数出力に分離する。式(6)、式(7)の性質を利用すると、偶数側は式(9)のように、奇数側は式(10)のように変形できる。また、奇数側でK=N/2−1のとき、つまり、X[N−1]は式(6)の性質を利用すると、式(11)のように導かれる。式(10)、式(9)、式(11)、にN=8を代入してまとめると式(1)の行列表現が得られる。この行列の左上と右下の4*4成分に注目すると、4点離散コサイン変換と同一の行列になっており、以上の式変形によって、8点離散コサイン変換はある前処理と後処理を追加することによって、2つの4点離散コサイン変換に分割できることを示すことができた。図2はそのバタフライ図を示したものである。
【0024】
逆離散コサイン変換を行う場合には、演算の手順を出力側から入力側へ、逆順で行なう。その際、係数行列の逆行列が必要となるが、離散コサイン変換の係数行列の性質から、転置行列を用いればよい。以下で示す実施例では、離散コサイン変換のみを扱うが、ここで述べた逆順に処理する方法を用いて、逆離散コサイン変換も実現できることを述べておく。
【0025】
(3)実施例1
本実施例の変換装置の構成を図1に示す。変換装置101はプロセッサ102と記憶部103によって構成され、外部に接続された入力装置111からデータを入力し、画像の圧縮・伸長等の変換処理を行ない、出力装置112から変換結果を出力する。プロセッサ102と記憶部103はアドレスバス104とデータバス105によって接続され、プロセッサ内部のアドレス生成器106で計算されたアドレスによって記憶装置の番地を指定し、データバスを通じてプロセッサ内のレジスタファイル107とのデータ転送を行なう。記憶部103はプログラム記憶装置109とデータ記憶装置110から構成される。演算器108はレジスタファイルの内容を読み出して演算処理を行ない、再びレジスタファイルに結果を書き戻す。レジスタファイル107の構成を図10に示す。R0〜R15で構成されるレジスタファイル1、XR0〜XR15で構成されるレジスタファイル2から構成され、レジスタファイル0のレジスタRn、Rn+1、Rn+2、Rn+3を組みにして、VRnと呼ぶことにする。
【0026】
ここで、プロセッサ102の命令とその動作を定義する。まず、4*4行列と要素数4のベクトルとの行列積を行うTRV命令を、以下のように記述するものとする。
【0027】
TRV VRs,VRd(s,d=4n)
TRV命令は、レジスタファイル1の16本のレジスタを4*4行列、レジスタファイル0内レジスタ群、VRsを4次元ベクトルとみなし、その行列とベクトルの乗算結果をVRdへ格納する。図(11)はTRV命令の動作内容を示したものである。
【0028】
次に、加算、減算、乗算を行う命令として、ADD、SUB、MUL、ADD4、SUB4、MUL4を以下のように定義する。
【0029】
ADD Rs,Rt,Rd
SUB Rs,Rt,Rd
MUL Rs,Rt,Rd
ADD4 VRs,VRt,VRd(s,t,d=4n)
SUB4 VRs,VRt,VRd(s,t,d=4n)
MUL4 VRs,VRt,VRd(s,t,d=4n)
ADD、SUB、MUL命令は、レジスタRsと、Rtについて、加算、減算、乗算をし、結果をレジスタRdへ格納する。ADD4、SUB4、MUL4命令は、レジスタ群VRsとのレジスタ群VRtの対応する要素について、加算、減算、乗算をし、結果をVRdへ格納する。図(12)、図(13)、図(14)はADD4命令、SUB4命令、MUL4命令、の動作内容を示したものである。さらに、主メモリからレジスタにデータをロード、逆にレジスタから主メモリにデータをストアする命令として、以下の4命令を定義する。
【0030】
LD b,disp,Rd
ST b,disp,Rs
LD4 b,disp,step,VRd(d=4n)
ST4 b,disp,step,VRs(s=4n)
LD命令は、主メモリのアドレス(b+disp)番地に格納されているデータをレジスタRdにロードする。ST命令は、レジスタRsの値を主メモリのアドレス(b+disp)番地にストアする。LD4命令は、主メモリのアドレス(b+disp)、(b+disp+step)、(b+disp+2*step)、(b+disp+3*step)番地、に格納されているデータをレジスタファイル1内のレジスタRd、Rd+1、Rd+2、Rd+3にロードする。ST4命令は、レジスタRs、Rs+1、Rs+2、Rs+3の値を主メモリのアドレス(b+disp)、(b+disp+step)、(b+disp+2*step)、(b+disp+3*step)番地にストアする。
【0031】
最後に、レジスタファイル0、レジスタファイル1の内容を入れ替えるEXCHG命令を定義する。
【0032】
EXCHG
以下に、上記の装置で8*8の2次元離散コサイン変換を用いた画像変換処理を行なう例を示す。
【0033】
図1の記憶装置103には、図15に示すように、変換プログラム、4*4の行列データ、4つの係数データ、8*8画素*Bブロックの画像データが主記憶上に格納されているとする。
【0034】
まず、係数行列データとバタフライ演算係数データをレジスタにロードする。このロード作業は、Bブロックの離散コサイン変換処理の最初にただ1回だけ行えばよい。この操作により、レジスタファイルには図10に示す係数がロードされ、これらの係数はBブロック変換作業中に変更されない。
【0035】
#行列、係数ロード
LD4 MATRIX,0,1,R0
LD4 MATRIX,4,1,R4
LD4 MATRIX,8,1,R8
LD4 MATRIX,12,1,R12
EXCHG
LD4 COEFF,0,1,12
次に8点1次元離散コサイン変換を行う命令列を示す。OFFはIMGからのオフセットを示し第1回目の処理では0とする。
【0036】
#8点離散コサイン変換(横)
LD4 IMG,0+OFF,1,VR8
LD4 IMG,7+OFF,−1,VR4
ADD4 VR8,VR4,VR0
SUB4 VR8,VR4,VR4
MUL4 VR4,VR12,VR4
TRV VR0,VR0
TRV VR4,VR4
ADD R4,R5,R4
ADD R5,R6,R5
ADD R6,R7,R6
ST4 IMG,0+OFF,2,VR0
ST4 IMG,1+OFF,2,VR4
OFFを8ずつ増加させながらこの12命令で構成される変換処理を8回行なうことで、8*8画素に対して横方向の1次元離散コサイン変換が完了する。その後、縦方向の変換を行うために、OFFを0、1、...、7と変化させながら以下の命令列を8回行なう。
【0037】
#8点離散コサイン変換(縦)
LD4 IMG,0+OFF,8,VR8
LD4 IMG,56+OFF,−8,VR4
ADD4 VR8,VR4,VR0
SUB4 VR8,VR4,VR4
MUL4 VR4,VR12,VR4
TRV VR0,VR0
TRV VR4,VR4
ADD R4,R5,R4
ADD R5,R6,R5
ADD R6,R7,R6
ST4 IMG,0+OFF,16,VR0
ST4 IMG,56+OFF,−16,VR4
以上の操作により、8*8の2次元離散コサイン変換を完了する。変換対象となるブロック数Bが十分大きいとすると、行列、係数ロードに必要な6命令を無視することができる。そのため、1ブロックあたり192命令で処理できるといえる。
【0038】
従来例ではTRV命令毎に6命令の係数ロードが必要であり、1ブロックの変換中に32回のTRV命令を使用することから、さらに6命令*32回=192命令の追加となる。本発明により、命令数を半分に削減できたと言える。
【0039】
(4)実施例2
本実施例は、行列演算命令ではなくベクトル内積演算命令を持つプロセッサを用いた場合の実装を示す。係数、データは実施例1で示した図15のように主記憶上に配置されているとする。
【0040】
本実施例で使用するプロセッサは、実施例1と以下の相違点を持つとする。
1.図16に示す、32本のレジスタから構成されるレジスタファイルだけを1つだけ持ち、そのためEXCHG命令は持たない
2.TRV命令の代わりに、IPR命令を持つ
IPR VRs,VRt,Rd(s,t=4n)
IPR命令は、レジスタ群VRsと、VRtをそれぞれ4要素のベクトルとみなし、そのの内積をレジスタRdに格納する。図17にその演算内容を示す。
【0041】
以上のプロセッサを利用して、8*8の離散コサイン変換、逆離散コサイン変換を行なう手順を以下に示す。
【0042】
まず、行列データと係数データをレジスタにロードする。このロード作業は、Bブロックの離散コサイン変換処理の最初にただ1回だけ行えばよい。
【0043】
#行列、係数ロード
LD4 COEFF,0,1,VR12
LD4 MATRIX,0,4,VR16
LD4 MATRIX,1,4,VR20
LD4 MATRIX,2,4,VR24
LD4 MATRIX,3,4,VR28
次に8点1次元離散コサイン変換を行う命令列を示す。OFFはIMGからのオフセットを示し第1回目の処理では0とする。
【0044】
#8点離散コサイン変換(横)
LD4 IMG,0+OFF,1,8
LD4 IMG,7+OFF,−1,4
ADD4 VR8,VR4,VR0
SUB4 VR8,VR4,VR4
MUL4 VR4,VR12,VR4
IPR VR0,VR16,R8
IPR VR0,VR20,R9
IPR VR0,VR24,R10
IPR VR0,VR28,R11
IPR VR4,VR16,R0
IPR VR4,VR20,R1
IPR VR4,VR24,R2
IPR VR4,VR28,R3
ADD R1,R9,R1
ADD R2,R10,R2
ADD R3,R11,R3
ST4 IMG,0+OFF,2,VR8
ST4 IMG,1+OFF,2,VR0
OFFを8ずつ増加させながらこの18命令で構成される変換処理を8回行なうこでで、8*8画素に対して横方向の1次元離散コサイン変換が完了する。その後、縦方向の変換を行うために、OFFを0、1、...、7と変化させながら以下の命令列を8回行なう。
【0045】
#8点離散コサイン変換(縦)
LD4 IMG,0+OFF,8,8
LD4 IMG,56+OFF,−8,4
ADD4 VR8,VR4,R0
SUB4 VR8,VR4,R4
MUL4 VR4,VR12,R4
IPR VR0,VR16,R8
IPR VR0,VR20,R9
IPR VR0,VR24,R10
IPR VR0,VR28,R11
IPR VR4,VR16,R0
IPR VR4,VR20,R1
IPR VR4,VR24,R2
IPR VR4,VR28,R3
ADD R1,R9,R1
ADD R2,R10,R2
ADD R3,R11,R3
ST4 IMG,0+OFF,16,VR8
ST4 IMG,56+OFF,−16,VR0
以上の操作により、8*8の2次元離散コサイン変換を完了する。変換対象となるブロック数Bは十分大きいとすると、行列、係数ロードに必要な5命令を無視することができるため、1ブロックあたり288命令で2次元離散コサイン変換を処理できる。
【0046】
(5)実施例3
本実施例は、行列演算命令ではなくSIMD命令を持つプロセッサを用いた場合の実装を示す。係数、データは実施例1で示した図15のように主記憶上に配置されているとする。
【0047】
本実施例で使用するプロセッサは、実施例2と以下の相違点を持つとする。
1.IPR命令の代わりに、MAC4命令を持つ
2.MUL4、MAC4命令をブロードキャスト拡張した、MUL4B、MAC4B命令を持つ
MAC4 VRs,VRt,VRd(s,t,d=4n)
MAC4命令は、レジスタRs、Rs+1、Rs+2、Rs+3と、レジスタRt、Rt+1、Rt+2、Rt+3のそれぞれの積を、レジスタRd、Rd+1、Rd+2、Rd+3に足し込む。
【0048】
MUL4B VRs,VRt,VRd,b(s,t,d=4n、b=0〜3)
MAC4B VRs,VRt,VRd,b(s,t,d=4n、b=0〜3)
MUL4B命令は、レジスタRs+b、Rs+b、Rs+b、Rs+bと、レジスタRt、Rt+1、Rt+2、Rt+3のそれぞれの積を、レジスタRd、Rd+1、Rd+2、Rd+3に格納する。MAC4B命令は、レジスタRs+Rb、Rs+b、Rs+b、Rs+bと、レジスタRt、Rt+1、Rt+2、Rt+3のそれぞれの積を、レジスタRd、Rd+1、Rd+2、Rd+3に足し込む。
【0049】
以上のプロセッサを利用して、8*8の離散コサイン変換、逆離散コサイン変換を行なう手順を以下に示す。
【0050】
まず、行列データと係数データをレジスタにロードする。このロード作業は、Bブロックの離散コサイン変換処理の最初にただ1回だけ行えばよい。
【0051】
#行列、係数ロード
LD4 COEFF,0,1,VR12
LD4 MATRIX,0,4,VR16
LD4 MATRIX,1,4,VR20
LD4 MATRIX,2,4,VR24
LD4 MATRIX,3,4,VR28
次に8点1次元離散コサイン変換を行う命令列を示す。OFFはIMGからのオフセットを示し第1回目の処理では0とする。
【0052】
#8点離散コサイン変換(横)
LD4 IMG,0+OFF,1,VR8
LD4 IMG,7+OFF,−1,VR4
ADD4 VR8,VR4,VR0
SUB4 VR8,VR4,VR4
MUL4 VR4,VR12,VR4
MUL4B VR0,VR16,VR8,0
MAC4B VR0,VR20,VR8,1
MAC4B VR0,VR24,VR8,2
MAC4B VR0,VR28,VR8,3
MUL4B VR4,VR16,VR0,0
MAC4B VR4,VR20,VR0,1
MAC4B VR4,VR24,VR0,2
MAC4B VR4,VR28,VR0,3
ADD R1,R9,R1
ADD R2,R10,R2
ADD R3,R11,R3
ST4 IMG,0+OFF,2,VR8
ST4 IMG,1+OFF,2,VR0
OFFを8ずつ増加させながらこの18命令で構成される変換処理を8回行なうことで、8*8画素に対して横方向の1次元離散コサイン変換が完了する。その後、縦方向の変換を行うために、OFFを0、1、...、7と変化させながら以下の命令列を8回行なう。
【0053】
#8点離散コサイン変換(縦)
LD4 IMG,0+OFF,8,VR8
LD4 IMG,56+OFF,−8,VR4
ADD4 VR8,VR4,VR0
SUB4 VR8,VR4,VR4
MUL4 VR4,VR12,VR4
MUL4B VR0,VR16,VR8,0
MAC4B VR0,VR20,VR8,1
MAC4B VR0,VR24,VR8,2
MAC4B VR0,VR28,VR8,3
MUL4B VR4,VR16,VR0,0
MAC4B VR4,VR20,VR0,1
MAC4B VR4,VR24,VR0,2
MAC4B VR4,VR28,VR0,3
ADD R1,R9,R1
ADD R2,R10,R2
ADD R3,R11,R3
ST4 IMG,0+OFF,16,VR8
ST4 IMG,56+OFF,−16,VR0
以上の操作により、8*8の2次元離散コサイン変換を完了する。変換対象となるブロック数Bは十分大きいとすると、行列、係数ロードに必要な5命令を無視することができるため、1ブロックあたり288命令で2次元離散コサイン変換を処理できる。
【0054】
(6)実施例4
本実施例は、本発明の処理手順をC言語で記述して利用する。係数、データは実施例1で示した図15のように主記憶上に配置されているとする。
【0055】
まず、図18、図19に示すように離散コサイン変換、逆離散コサイン変換に用いるデータタイプをDCTTYPEとして定義し、同タイプの4*4の2次元大域配列定数としてM[4][4]、C4[4]を宣言する。Mには4*4行列の値が、C4には4つの係数が設定されている。これは実施例1のレジスタXR0〜XR15、R12〜R15に相当する。次に、下位関数としてld4()、st4()、add4()、sub4()、mul4()、trv()、を定義する。ld4()はポインタadrの示すメモリアドレスから4つのDCTTYPEの値を取りだし、長さ4の1次元配列VRに代入する。逆に、st4はVRの値をポインタadrの指し示すアドレスに書き込む。add4()、sub4()、mul4()は、長さ4の1次元配列VR1、VR2の各要素について、それぞれ加算、減算、乗算を行ない、その結果をVR3に代入する。trv()は、4*4の2次元配列Mで示される行列と、長さ4の1次元配列VR1の積を計算し、VR2に結果を代入する。これらの関数は、実施例1のLD4、ST4、ADD4、SUB4、MUL4、TRVに相当する処理を行なう。
【0056】
以上の変数、下位間数をもとに、8点の離散コサイン変換、8*8の2次元離散コサイン変換行なう関数は図20のdct8()、dct8_8()ように書くことができる。このプログラムは使用するプロセッサごとに用意されたCコンパイラが最適化を行なうため、その実行性能はコンパイラ性能にも依存しているといえる。しかし、本発明のアルゴリズムは、8*8の離散コサイン変換に4*4の係数行列しか利用しないため、図7に示す8*8行列演算をそのまま実装した、64の係数を利用するプログラムと比べて、主記憶とプロセッサとのロード/ストアの回数を減らすことができ、コンパイラがより高速な機械語命令列を出力することが期待できる。実施例1、2のように、行列演算命令や、SIMD命令を搭載したプロセッサの場合には、コンパイラのビルトイン機能を用いて機械語で記述した場合により近い結果を得らる。また下位関数のみ機械語記述をすることも可能である。
【0057】
(7)実施例5
本実施例は、実施例4の8点離散コサイン変換を利用して、16点の離散コサイン変換を行う事例を示す。本発明の分割手法を用いて、16点の変換を8点に分割し、8点の離散コサイン変換を実施例4の関数で処理することで、4*4の係数行列を固定したまま16点の離散コサイン変換を行う。
【0058】
先ほど導いた式(9)、式(10)、式(11)、にN=16を代入してまとめると図21に示すように、2つの8点離散コサイン変換に分割できることが分かる。これは、16点離散コサイン変換がある前処理と後処理を追加することによって、2つの8点離散コサイン変換に分割できることを示すものである。
【0059】
この特徴を利用して、16点離散コサイン変換を図18、図19に示す関数と、図20に示すdct8()関数を利用して記述すると図22、図23、図24のようになる。
【0060】
同様にして、32点、64点、...、2^n点の離散コサイン変換も4*4係数行列を用いて求めることができる。
【0061】
(8)実施例6
本実施例の変換装置は図1の変換装置のプログラム記憶装置109をプロセッサ102と同一チップに集積する点で実施例1と異なる。実行可能な命令、処理内容は全て実施例1と同一である。
【0062】
(9)実施例7
本実施例の変換装置は図1の変換装置のデータ記憶装置110をプロセッサ102と同一チップに集積する点で実施例1と異なる。実行可能な命令、処理内容は全て実施例1と同一である。
【0063】
(10)実施例8
本実施例の変換装置の構成を図25に示す。変換装置2501はプロセッサ2502によって構成される。プロセッサ2502はアドレス生成器106、レジスタファイル107、演算器108に加えてプログラム記憶装置109およびデータ記憶装置110が内蔵されている点で実施例1と異なる。実行可能な命令、処理内容は全て実施例1と同一である。
【0064】
【発明の効果】
本発明は、N点の離散コサイン変換、逆離散コサイン変換を、ただ1つの固定された(N/2^k)*(N/2^k)の係数行列を利用して計算することを可能とする。これにより、従来は行列演算ごとに必要であった係数行列の入れ替え操作を不要とし、そのオーバーヘッドを取り除くことができるため、演算器の利用効率が向上する。
【0065】
また、演算の規模や係数の格納に必要なレジスタ数も減少し、回路面積を縮小することができる。これは、汎用のプロセッサに行列演算器やそれに類する演算装置を追加し、回路面積の増加を抑えながら高速な画像や音声の圧縮・伸長処理装置を構成することを可能とする。
【図面の簡単な説明】
【図1】本発明を適用したデータ変換装置。
【図2】本発明を適用した8点離散コサイン変換の分割(バタフライ図)。
【図3】本発明を適用した8点離散コサイン変換の分割(行列表現)。
【図4】従来技術の8点離散コサイン変換(行列表現)。
【図5】離散コサイン変換の定義式。
【図6】離散コサイン変換、逆離散コサイン変換で使用する係数c(k,N)の性質。
【図7】8点1次元離散コサイン変換の定義式に準じた行列表現。
【図8】本発明による離散コサイン変換の式変形。
【図9】本発明による8点離散コサイン変換の式変形(X[N−1])。
【図10】実施例1のレジスタの構成。
【図11】実施例1におけるTRV命令の処理内容。
【図12】実施例1におけるADD4命令の処理内容。
【図13】実施例1におけるSUB4命令の処理内容。
【図14】実施例1におけるMUL4命令の処理内容。
【図15】8*8点2次元離散コサイン変換で使用するデータの主記憶配置。
【図16】実施例2のレジスタの構成。
【図17】実施例2におけるIPR命令の処理内容。
【図18】実施例4の4*4行列を利用した8点離散コサイン変換のC言語記述(下位関数1)。
【図19】実施例4の4*4行列を利用した8点離散コサイン変換のC言語記述(下位関数2)。
【図20】実施例4の8点1次元離散コサイン変換、8*8点2次元離散コサイン変換のC言語記述(上位関数)。
【図21】本発明による16点離散コサイン変換の分割(バタフライ図)。
【図22】実施例5の4*4行列を利用した16点離散コサイン変換のC言語記述(下位関数)。
【図23】実施例5の16点1次元離散コサイン変換のC言語記述(上位関数)。
【図24】実施例5の16*16点2次元離散コサイン変換のC言語記述(上位関数)。
【図25】実施例8の装置の構成。
【符号の説明】
101:変換装置
102:プロセッサ
103:記憶部
104:アドレスバス
105:データバス
106:アドレス生成器
107:レジスタファイル
108:演算器
109:プログラム記憶装置
110:データ記憶装置
111:入力装置
112:出力装置
2501:変換装置
2502:プロセッサ。

Claims (2)

  1. プロセッサと、N(N=2 ただし、nは自然数)点離散コサイン変換処理を含むプログラムと、該離散コサイン変換処理を施すデータと、該離散コサイン変換処理のための行列データ及び係数データとを格納するための記憶装置とを含むデータ処理装置において、
    該離散コサイン変換処理を、前後処理の追加により、使用する該プロセッサに合わせて(kは自然数)回のN/2点離散コサイン変換処理に分割し、
    該前後処理は、前記2(kは自然数)回のN/2点離散コサイン変換処理のための離散コサイン変換係数行列の少なくとも2つの係数行列が同一となるように施されるものであり、
    該プロセッサは、レジスタファイルを有し、該離散コサイン変換処理を施す該データを該記憶装置から読み出し、該記憶装置に格納された該プログラムに基づいて、該前処理と、2(kは自然数)回の該N/2点離散コサイン変換処理と、該後処理とを行い、該N/2 点離散コサイン変換処理の最初に該行列データ及び該係数データを該記憶装置から該レジスタファイルに1回だけロードして、該係数行列とし、該レジスタファイルに該係数行列を保持したまま、該N/2 点離散コサイン変換処理を2 (kは自然数)回繰返すことを特徴とするデータ処理装置。
  2. プロセッサと、N(N=2(nは自然数))点逆離散コサイン変換処理を含むプログラムと、該逆離散コサイン変換処理を施すデータと、該逆離散コサイン変換処理のための行列データ及び係数データとを格納するための記憶装置とを含むデータ処理装置において、
    該逆離散コサイン変換処理を、前後処理の追加により、使用する該プロセッサに合わせて(kは自然数)回のN/2点逆離散コサイン変換処理に分割し、
    該前後処理は、前記2(kは自然数)回のN/2点逆離散コサイン変換処理のための逆離散コサイン変換係数行列の少なくとも2つの係数行列が同一となるように施されるものであり、
    該プロセッサは、レジスタファイルを有し、該逆離散コサイン変換処理を施す該データを該記憶装置から読み出し、該記憶装置に格納された該プログラムに基づいて、該前処理と、2(kは自然数)回の該N/2点逆離散コサイン変換処理と、該後処理とを行い、該N/2 点逆離散コサイン変換処理の最初に該行列データ及び該係数データを該記憶装置から該レジスタファイルに1回だけロードして、該係数行列とし、該レジスタファイルに該係数行列を保持したまま、該N/2 点逆離散コサイン変換処理を2 (kは自然数)回繰返すことを特徴とするデータ処理装置。
JP2000297063A 2000-09-26 2000-09-26 離散コサイン変換・逆離散コサイン変換手法及びその装置 Expired - Fee Related JP3977003B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000297063A JP3977003B2 (ja) 2000-09-26 2000-09-26 離散コサイン変換・逆離散コサイン変換手法及びその装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000297063A JP3977003B2 (ja) 2000-09-26 2000-09-26 離散コサイン変換・逆離散コサイン変換手法及びその装置

Publications (3)

Publication Number Publication Date
JP2002108843A JP2002108843A (ja) 2002-04-12
JP2002108843A5 JP2002108843A5 (ja) 2005-06-16
JP3977003B2 true JP3977003B2 (ja) 2007-09-19

Family

ID=18779234

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000297063A Expired - Fee Related JP3977003B2 (ja) 2000-09-26 2000-09-26 離散コサイン変換・逆離散コサイン変換手法及びその装置

Country Status (1)

Country Link
JP (1) JP3977003B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201217993A (en) * 2010-10-20 2012-05-01 Huafan University employing operation on decomposed matrices to reduce operation amount for single matrix per unit time for light-weighting matrix operation process in simpler operation circuit
TWI549090B (zh) * 2014-08-29 2016-09-11 Portable sensing operation device

Also Published As

Publication number Publication date
JP2002108843A (ja) 2002-04-12

Similar Documents

Publication Publication Date Title
US4791598A (en) Two-dimensional discrete cosine transform processor
US4945506A (en) High speed digital signal processor capable of achieving realtime operation
US20070094320A1 (en) Parallel Adder-Based DCT / IDCT Design Using Cyclic Convolution
JP3228927B2 (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
JPH11505640A (ja) ビット・スライス式テーブル・ルックアップ・デジタルたたみ込み
JPH07236143A (ja) 高速デジタル信号復号化方法
KR20010067275A (ko) 벡터화 데이터에 대한 연산 동작 방법 및 장치
JP2001331474A (ja) 単一命令複数データ指示を備えた逆離散コサイン変換の実行方法、圧縮データの伸張方法、圧縮データ信号の伸張装置、並びに、コンピュータ・プログラム製品
JP6357345B2 (ja) ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法
Hartenstein et al. Reconfigurable machine for applications in image and video compression
JPH09212484A (ja) 離散コサイン変換方法
US5434808A (en) Highly parallel discrete cosine transform engine
Shahbahrami Algorithms and architectures for 2D discrete wavelet transform
JP3977003B2 (ja) 離散コサイン変換・逆離散コサイン変換手法及びその装置
US5477469A (en) Operation device and operation method for discrete cosine transform and inverse discrete cosine transform
Ang et al. 2-D DWT system architecture for image compression
JPH07121507A (ja) 離散コサイン変換装置
JPH0844708A (ja) 二次元離散コサイン変換演算回路
KR101527103B1 (ko) 이산 코사인 변환 장치 및 방법
JP4405452B2 (ja) 逆変換回路
JP3155383B2 (ja) 2モード処理装置、2次元変換装置及び静止画像データの圧縮システム
JP2790911B2 (ja) 直交変換演算装置
KR100790846B1 (ko) 영상처리의 정수 변환 방법 및 그의 프로세서
Sakamoto et al. Software JPEG for a 32-bit MCU with dual issue
JP4700838B2 (ja) フィルタ処理装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040910

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040910

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20040910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060912

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070620

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120629

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120629

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130629

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130629

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140629

Year of fee payment: 7

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees