JP3586427B2 - Dct演算装置 - Google Patents
Dct演算装置 Download PDFInfo
- Publication number
- JP3586427B2 JP3586427B2 JP2000588974A JP2000588974A JP3586427B2 JP 3586427 B2 JP3586427 B2 JP 3586427B2 JP 2000588974 A JP2000588974 A JP 2000588974A JP 2000588974 A JP2000588974 A JP 2000588974A JP 3586427 B2 JP3586427 B2 JP 3586427B2
- Authority
- JP
- Japan
- Prior art keywords
- pixel data
- output
- bit
- input pixel
- dct
- 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
Links
- 239000011159 matrix material Substances 0.000 claims description 38
- 238000004364 calculation method Methods 0.000 claims description 27
- 238000009825 accumulation Methods 0.000 claims description 19
- 238000000034 method Methods 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 17
- 101001106432 Homo sapiens Rod outer segment membrane protein 1 Proteins 0.000 description 8
- 101150065817 ROM2 gene Proteins 0.000 description 8
- 102100021424 Rod outer segment membrane protein 1 Human genes 0.000 description 8
- 101100524639 Toxoplasma gondii ROM3 gene Proteins 0.000 description 8
- 230000000694 effects Effects 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 101100524644 Toxoplasma gondii ROM4 gene Proteins 0.000 description 6
- 101100524645 Toxoplasma gondii ROM5 gene Proteins 0.000 description 6
- 101100524646 Toxoplasma gondii ROM6 gene Proteins 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- CDBYLPFSWZWCQE-UHFFFAOYSA-L Sodium Carbonate Chemical compound [Na+].[Na+].[O-]C([O-])=O CDBYLPFSWZWCQE-UHFFFAOYSA-L 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000015654 memory Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Signal Processing (AREA)
- Discrete Mathematics (AREA)
- Multimedia (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Description
【0001】
【発明の属する技術分野】
技術分野
本発明は、画像信号処理等の情報圧縮に用いられる離散余弦変換(Discrete Cosine Transform、以下「DCT」という。)を実現するDCT演算装置に関し、異なる大きさの単位ブロックの画像データに対して、DCT演算または逆DCT演算の少なくともいずれか一方を行うDCT演算装置に関する。
【0002】
【従来の技術】
背景技術
画像信号等の情報圧縮には、DCTがよく用いられている。動画像における情報圧縮では、一般に、画面内(空間的)相関関係を利用した情報圧縮と、画面間(時間的)相関関係を利用した情報圧縮が行われるが、DCTは前者に該当するものである。このDCTは、周波数変換法の一種であり、変換前にランダムに分布していた画素値が、変換後には低周波成分に大きな値が集中する性質を利用して、高周波成分を取り除くことにより情報圧縮を行うものである。
【0003】
DCTでは、まず、1枚の画像を一定数の画素(例えば8×8)からなる一定形状の複数の単位ブロックに分割し、該単位ブロック毎にDCT処理を実行している。2次元DCTは、1次元DCTを2回行うことにより実行されるものであり、例えば、単位ブロックの列方向に1次元DCTを行なった後の中間結果に対し、その行方向へ1次元DCTを行なうことにより実行される。
【0004】
また、DCTにより圧縮された画像信号は、逆DCTにより復号される。
【0005】
【数1】
及び
【0006】
【数2】
は、N×Nの単位ブロックにおける2次元DCT、及び2次元逆DCTを定義したものである。また、
【0007】
【数3】
は、上記式(1)及び式(2)より導かれる1次元DCTを定義したものである。
【0008】
ここで、x(i,j)(但し、i,j=0,1,2,・・・,N−1)は画素、X(u,v)(但し、C(0)=1/√2、C(u)=C(v)=1(u,v=1,2,・・・,N−1))は変換係数である。
【0009】
N=8の場合、上記式(3)による1次元DCTの行列演算は、
【0010】
【数4】
の行列式で表される。また、N=7,N=6,N=5,N=4,N=3,N=2の場合は、それぞれ、
【0011】
【数5】
【数6】
【数7】
【数8】
【数9】
【数10】
で表される。
【0012】
一方、1次元逆DCTの行列演算は、N=8の場合は
【0013】
【数11】
で表され、N=7,N=6,N=5,N=4,N=3,N=2の場合は、それぞれ、
【0014】
【数12】
【数13】
【数14】
【数15】
【数16】
【数17】
で表される。
【0015】
図8は、従来のDCT演算装置の一例を説明するためのものであり、該装置の構成を示すブロック図である。図において、DCT演算装置1は、入力画素データをラッチする8ビットの入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hと、該各入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hの各出力データをそれぞれラッチした後、各出力データの最下位ビット(以下「LSB」という。)から1ビット毎にシフト出力する8ビットのホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hと、上記各ホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hの出力データを8ビットのアドレスとして、ROM(リードオンリーメモリ)41a〜41hのデータを累算器42a〜42hで累算して出力するロムアキュームレータ(以下「RAC」という。)4a,4b,4c,4d,4e,4f,4g,4hと、上記各RAC4a,4b,4c,4d,4e,4f,4g,4hの出力データをラッチして出力する出力レジスタ5a,5b,5c,5d,5e,5f,5g,5hとからなる。
【0016】
また、上記各RAC4a,4b,4c,4d,4e,4f,4g,4hは、それぞれ、行列演算における列係数に対して、入力される列または行を構成する各画素データの各ビットを乗算したものの和を含む2の8乗個のデータテーブルを有するROM41a〜41hと、該ROM41a〜41hの出力を累算する累算器42a〜42hとからなる。
【0017】
この従来の技術のDCT演算回路は、行列演算にいわゆるDA(distributed arithmetic)法を使用している。このDA法は、固定係数の積和演算に対して効率的な演算方法で、各入力画素データと固定係数との積和演算を通常のワード単位ではなく、ビット列単位に処理する方法である。各入力画素データのそれぞれのビットにより構成されるビット列をアドレスとして、これに対応する部分積を、予め部分積の計算結果をテーブルとして格納しているROMから読み出し、LSB(Least Significant Bit:最下位ビット)からMSB(Most Significant Bit:最上位ビット)までを累算することにより固定係数の積和演算を実現するものである。この従来のDCT演算回路は、NまたはM画素の入力画素データのそれぞれの1ビットにより構成されるビット列と、DCT係数の行係数とを乗算した部分積の計算結果が、DCT係数の各行係数に対応して、RAC4a〜4hのそれぞれのROM41a〜41hにテーブルとして格納しており、NまたはM画素の入力画素データのそれぞれの1ビットにより構成されるNまたはMビットのビット列をアドレスとして各ROM41a〜41hに入力してやることで、部分積がROM41a〜41hから出力され、この部分積を各画素データのLSBからMSBまで順次出力し、累算することで、1次元のDCT演算結果を得るものである。
【0018】
次に動作について説明する。
入力レジスタ2aは、8ビットの入力画素データをラッチし、入力サイクル毎に入力レジスタ2aから入力レジスタ2bへ、入力レジスタ2bから入力レジスタ2cへと、各入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hすべてに画素データがラッチされるまでシフト動作を行なう。その後、各入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hは、それぞれに対応する各ホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hにラッチした画素データを出力する。次の、8個の入力画素データが、各入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hへラッチされるのと並行して、各ホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hは、ラッチした8ビットの画素データの最下位ビットから、1ビット毎にシフト出力する。各ROM41a,41b,41c,41d,41e,41f,41g,41hは、上記ホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hが出力した8ビットのデータをアドレスとして、該アドレスに対応するROMデータを出力する。各累算器42a,42b,42c,42d,42e,42f,42g,42hは、それぞれに対応するROM41a,41b,41c,41d,41e,41f,41g,41hが出力した8ビット分のROMデータを累算して、即ち、8ビットのデータとして出力する。各RAC4a,4b,4c,4d,4e,4f,4g,4hに対応する出力レジスタ5a,5b,5c,5d,5e,5f,5g,5hは、上記各累算器42a,42b,42c,42d,42e,42f,42g,42hが出力したデータを、出力レジスタ5hから出力レジスタ5gへ、出力レジスタ5gから出力レジスタ5fへと、順次シフト動作を行ない、ラッチされたデータを出力する。
【0019】
上記DCT演算装置1を用いて、例えば8×8を単位ブロックとする画素データの2次元DCT演算を行う場合には、まず、列方向の8個の画素データ毎に一連の演算を8回繰り返し行うことで64個の中間結果を出力し、その後、該64個の中間結果に対し行方向へ1次元DCTを行なう。
【0020】
【発明が解決しようとする課題】
しかし、従来のDCT演算装置は、例えば8×8を単位ブロックとして1次元DCT演算又は逆DCT演算を行なう場合には、入力画素データが8ビットであれば256個のROMテーブルデータを8個備え、DCT演算及び逆DCT演算を1つの装置で行うには512個のROMデータテーブルを8個備えているものであることが必要である。また、近年、画像情報の圧縮の規格によっては、単位ブロックのサイズを可変とする要請があるが、上記DCT装置は8×8を単位ブロックとする画素データしか対応できないため、8×8以外の例えば7×7,6×6,5×5,4×4等を単位ブロックとする画素データに対応するには、それぞれ256個のROMテーブルを7個,128個のROMテーブルを6個,64個のROMテーブルを5個,32個のROMテーブルを4個、備えたDCT装置を必要とする。従って、N×Mの任意に選択された単位ブロックの画素データに対してDCT演算及び逆DCT演算を行うためには、複数のDCT演算装置を必要とし、それらの回路面積は非常に大きなものとなるという問題があった。
【0021】
本発明は、上記の問題を鑑みてなされたものであり、異なるサイズの単位ブロックの画像データに対してDCT演算又は逆DCT演算を行うことができる回路面積の小さいDCT演算装置を提供することを目的とする。
【0022】
【発明の実施の形態】
発明の開示
本発明は、N×M単位ブロック(N及びMは1から8の任意の整数)の画像データの画素データに対してDA法を用いた1次元のDCT演算又は逆DCT演算を行うDCT演算装置であって、N×M単位ブロックの画像データの画素データを、行ごとに、または列ごとに入力し、入力された行または列を構成する各画素データをビットごとにスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数、及び、DCT演算又は逆DCT演算のいずれを行うかを示す値を含む制御信号を出力する制御手段と、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつDCT演算を行うことを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行い、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力する第1のバタフライ演算手段と、上記第1のバタフライ演算手段の出力から得られるビット列と、上記制御信号に含まれる入力画素データ数、及びDCT演算または逆DCT演算のいずれを行うかを示す値とに基づいて、アドレスを生成して出力するアドレス発生手段と、1次元のDCT演算結果及び逆DCT演算結果をもとめるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び該乗算結果出力手段の出力を累算して出力する累算手段、を8組有する演算手段と、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつ逆DCT演算を行うことを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記演算手段の出力を入力画素データの順序に対応して並べ替えて出力する第2のバタフライ演算手段とを備えている。これにより、DCT演算結果及び逆DCT演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる。
【0023】
また、本発明は、上記アドレス発生手段は、上記第1のバタフライ演算手段の出力と、入力画素データ数と、DCT演算または逆DCT演算のいずれを行うかを示す値とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数の値が7,6,5,3のいずれかであることを示す場合には、上記第1のバタフライ演算手段の出力に基づいて構成される7,6,5,3ビットの各々のビット列に対し、DCT演算または逆DCT演算のいずれを行うかを示す値を含む、上記入力画素データ数の値を示すための2,3,4,6ビットの各々のヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が8,4,2のいずれかであることを示す場合であって、かつ、DCT演算を行うことを示す場合には、上記第1のバタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される4,2,1ビットの各々のビット列、及び減算結果に基づいて構成される4,2,1ビットの各々のビット列それぞれに対し、DCT演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための5,7,8ビットの各々のヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が8,4,2のいずれかであることを示す場合であって、かつ、逆DCT演算を行うことを示す場合には、上記第1のバタフライ演算手段の8,4,2ビットの各々の出力に基づいて構成される4,2,1ビットの各々のビット列に対し、逆DCT演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための5,7,8ビットの各々のヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記第1のバタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、DCT演算装置の回路面積をより小さくすることができる。
【0024】
また、本発明は、上記乗算結果出力手段は、入力画素データとDCT演算及び逆DCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつDCT演算を行うことを示す場合には、高速フーリエ変換に基づいたDCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示し、かつDCT演算を行うことを示す場合には、DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつ逆DCT演算を行うことを示す場合には、高速フーリエ変換に基づいた逆DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示し、かつ逆DCT演算を行うことを示す場合には、逆DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力することとしている。これにより、DCT演算装置の回路面積をより小さくすることができる。
【0025】
また、本発明は、上記DCT演算装置は、制御信号が入力画素データ数が8以外であることを示す場合に、演算に未使用となる手段の動作を停止するものとしている。これにより、消費電力を削減できる。
【0026】
また、本発明は、N×M単位ブロック(N及びMは1以上の任意の整数)の画像データの画素データに対してDA法を用いた1次元のDCT演算を行うDCT演算装置であって、N×M単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、該制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行って、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力するバタフライ演算手段と、上記バタフライ演算手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、1次元のDCT演算結果を求めるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、上記演算手段の出力を、入力される画素データの順序に対応して並べ替えて、1次元のDCT演算結果として出力する出力手段とを備えている。これにより、DCT演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる。
【0027】
また、本発明は、上記アドレス発生手段は、上記第1のバタフライ演算手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数が2のべき乗以外の値であることを示す場合には、上記第1のバタフライ演算手段の出力に基づいて構成される、入力画素データ数と同じビット数となるアドレスに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が2のべき乗であることを示す場合には、上記第1のバタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列、及び減算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記第1のバタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力画素データ数の最大値と同じビット数となるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、DCT演算装置の回路面積をより小さくすることができる。
【0029】
また、本発明は、上記乗算結果出力手段は、入力画素データとDCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、高速フーリエ変換に基づいたDCTの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示す場合には、DCTの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力するものとしている。これにより、DCT演算装置の回路面積をより小さくすることができる。
【0030】
また、本発明は、N×M単位ブロック(N及びMは1以上の任意の整数)の画像データの画素データに対してDA法を用いた1次元の逆DCT演算を行うDCT演算装置であって、N×M単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、上記ビットスライス手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、上記アドレスに対応して、1次元の逆DCT演算結果を求めるために用いる乗算結果を出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、該制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記各演算手段の出力を入力される画素データの順序に対応して並べ替えて出力するバタフライ演算手段とを備えている。これにより、逆DCT演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる。
【0031】
また、本発明は、上記アドレス発生手段は、上記ビットスライス手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数が2のべき乗以外の値であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数と同じビット数となるビット列に対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が2のべき乗であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記ビットスライス手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力される行または列を構成する入力画素データ数の最大値と同じビット数となるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、DCT演算装置の回路面積をより小さくすることができる。
【0033】
また、本発明は、上記乗算結果出力手段は、入力画素データと逆DCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、高速フーリエ変換に基づいた逆DCTの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示す場合には、逆DCTの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力するものとしている。これにより、DCT演算装置の回路面積をより小さくすることができる。
【0034】
また、本発明は、上記ビットスライス手段に入力される画像データの単位ブロックは、N×M単位ブロック(N,及びMは1から8までの任意の値)であり、上記演算手段は、乗算結果出力手段と累算手段とを含む組を、上記入力画素データ数の最大値である8組備えている。これにより、DCT演算装置の回路面積をより小さくすることができる。
【0035】
また、本発明は、上記ビットスライス手段は、入力される各画素データとして16ビットのデータを入力するとともに、この16ビットのデータを2ビットごとにスライスして出力し、上記演算手段は、上記各乗算結果出力手段として、互いに並列に設けられた上記乗算結果をそれぞれ出力する2つの乗算結果出力部を備えており、この2つの乗算結果出力部の出力を加算したデータを上記累算手段で累算するものとしている。これにより、入力画素データが16ビットのデータである場合に、DCT演算装置の回路面積をより小さくすることができる。
【0036】
また、本発明は、上記DCT演算手段は、制御信号が、入力される行または列を構成する入力画素データ数の値が上記入力画素データ数の最大値以外の値であることを示す場合に、未使用となる手段の動作を停止するものとしている。これにより、消費電力を削減できる。
【0037】
発明を実施するための最良の形態
実施の形態1.
本実施の形態1によるDCT装置は、N×M(N,Mは1から8の任意の整数)の画素データで構成される単位ブロックの画素データを列ごと,もしくは行ごとに入力していき、これらに対して、DCT演算又は逆DCT演算を行うとともに、特にN又はMが2のべき乗である場合、即ち、N=8,N=4,N=2である場合には、周波数間引形の高速フーリエ変換(以下、「FFT」という。)を利用するものである。
【0038】
上記FFTを用いると、上記DCTの行列演算は、N=8の場合は
【0039】
【数18】
で、N=4の場合は
【0040】
【数19】
で、N=2の場合は
【0041】
【数20】
で表される。一方、逆DCTの行列演算は、N=8の場合は
【0042】
【数21】
で、N=4の場合は
【0043】
【数22】
で、N=2の場合は
【0044】
【数23】
で表される。
【0045】
これらの式に示されているように、FFTを利用することにより、行列演算の演算量を大幅に削減できることがわかる。
【0046】
本実施の形態1においては、いわゆるバタフライ演算を利用することにより、FFTをDCT演算又は逆DCT演算の行列式に対して適用できるようにし、DCT演算又は逆DCT演算を少ない演算量で実行できるようにする。
【0047】
以下、本DCT演算装置の構成について説明する。
図1は、本実施の形態1によるDCT演算装置を説明するための図であり、該装置の構成を示すブロック図である。図において、DCT演算装置100は、N×Mの単位ブロックを構成する画素データの個数N及びMを表す信号を出力する制御回路101と、入力された8ビットの各画素データのLSBから1ビット毎にシフト出力を行うビットスライス回路102と、該ビットスライス回路102の出力に対してバタフライ演算を行う第1のバタフライ演算回路103と、該第1のバタフライ演算回路103の出力に基づいて、ROMアドレスを生成するROMアドレス発生回路104と、該ROMアドレスに対応するROMデータを読み出して累算するRAC105と、該RAC105の出力に対してバタフライ演算を行う第2のバタフライ演算回路106とからなる。
【0048】
また、上記RAC105は、DCT演算及び逆DCT演算をおこなうためのROM0,ROM1,ROM2,ROM3,ROM4,ROM5,ROM6,ROM7と、該各ROMの出力を累算する累算回路51a,51b,51c,51d,51e,51f,51g,51hとからなる。本実施の形態1においては、ROM0〜7は1つのROM内の複数のROM領域である。
【0049】
このDCT演算回路は、行列演算にDA法を使用しており、DCTの行列演算、逆DCTの行列演算、高速フーリエ変換したDCTの行列演算、及び高速フーリエ変換した逆DCTの行列演算のそれぞれにおける、第1のバタフライ演算回路103の各出力から1ビットごとにデータを取り出すことにより得られるビット列についての乗算結果を、ROM0〜ROM7のそれぞれにテーブルとして格納しており、第1のバタフライ演算回路103の各出力から得られるビット列をアドレスとして各ROMに入力してやることで、上記乗算結果がROMから出力され、この乗算結果を各画素データのLSBからMSBまで順次出力し、累算回路51a〜51hで累算して出力することで、行列演算結果を得るものとしている。
【0050】
なお、上記ROM0〜ROM7には、上記画素データの数NまたはMが2のべき乗である場合についての乗算結果として、高速フーリエ変換を行ったDCT及び逆DCTの行列演算における、第1のバタフライ演算回路103の出力から得られるビット列についての乗算結果を格納しており、上記画素データの数NまたはMが2のべき乗以外である場合についての乗算結果として、高速フーリエ変換を行わない通常のDCT及び逆DCTの行列演算における、第1のバタフライ演算回路103の出力から得られるビット列についての乗算結果を格納している。
【0051】
即ち、第1のバタフライ演算回路103のビット単位の出力から得られるビット列と上述した式(5)〜式(7)、式(9)、式(12)〜式(14)、式(16)及び式(18)〜式(23)で示した行列演算の係数との部分積の計算結果がテーブルとしてROM0〜ROM7に格納されている。
【0052】
なお、入力画素データ数となるNまたはMの値が可変であるため、ROMと累算回路との組はNまたはMの値の最大数の組、ここでは8組設けられている。また、本実施の形態1においては、NまたはMの値が可変であり、DCT演算及び逆DCT演算に使用する係数も変化するため、各ROM0〜ROM7には、NまたはMの値が変化した場合に応じた部分積の結果が個別に格納されている。
【0053】
図2は、上記第1のバタフライ演算回路103の内部構成の一例を示すブロック図である。該第1のバタフライ演算回路103は、制御信号がDCT演算を行う場合であって、画素データの個数を示すN又はMが2のべき乗、即ち2,4,8である場合にはバタフライ演算を行い、それ以外の場合にはバタフライ演算を行うことなくデータを出力するものであり、上記ビットスライス回路102が出力した各画素データのビット信号を入力とするデータ線30a,30b,30c,30d,30e,30f,30g,30hと、制御信号がN又はMが8であることを示す場合にはデータ線30hを、制御信号がN又はMが4であることを示す場合にはデータ線30dを、制御信号がN又はMが2であることを示す場合にはデータ線30dを選択する第1の選択回路31aと、制御信号がN又はMが8であることを示す場合にはデータ線30gを、制御信号がN又はMが4であることを示す場合にはデータ線30cを選択する第2の選択回路31bと、データ線30aと第1の選択回路31aとから入力されるデータを加算する第1の加算回路32aと、データ線30bと第2の選択回路31bとから入力されるデータを加算する第2の加算回路32bと、データ線30cとデータ線30dとから入力されるデータを加算する第3の加算回路32cと、データ線30dとデータ線30eとから入力されるデータを加算する第4の加算回路32dと、データ線30dとデータ線30eとから入力される信号を減算する第1の減算回路33aと、データ線30cとデータ線30fとから入力されるデータを減算する第2の減算回路33bと、データ線30bと第2の選択回路31bとから入力されるデータを減算する第3の減算回路33bと、データ線30aと第1の選択回路31aとから入力されるデータを減算する第4の減算回路33dとからなる。この第1のバタフライ演算回路104は、ビットスライス回路102に、行または列ごとに入力され、ビットごとにスライスして出力される画素データを、入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行う。
【0054】
図3は、上記第2のバタフライ演算回路106の内部構成の一例を示すブロック図である。該第2のバタフライ演算回路106は、制御信号が逆DCT演算を行う場合であって、画素データの個数を示すN又はMが2のべき乗、即ち2,4,8である場合にはバタフライ演算を行い、それ以外の場合にはバタフライ演算を行うことなくデータを出力するものであり、上記RAC105の各累算回路51a,51b,51c,51d,51e,51f,51g,51hの出力をラッチするレジスタ60a,60b,60c,60d,60e,60f,60g,60hと、上記各レジスタ60a,60c,60e,60gの出力をラッチするレジスタ61aと、上記各レジスタ60b,60d,60f,60hの出力をラッチするレジスタ61bと、上記レジスタ61aとレジスタ61bとから入力されるデータを加算する加算器62と、該加算器62の出力をラッチするレジスタ63とからなる。この第2のバタフライ演算回路106は、上記RAC105が出力する、上記行または列ごとに入力される画素データのうちの奇数番目の画素データとFFTにより得られる行列係数との演算結果と、偶数番目の画素データとFFTにより得られる行列係数との演算結果とを加算した値及び減算した値を出力するバタフライ演算を行う。
【0055】
次に、ROMアドレス発生回路104により生成されるROMアドレスについて説明する。このROMアドレス発生回路104は、第1のバタフライ演算回路103の出力により構成されるビット列をそのまま利用して、これにヘッダアドレスを加えることでアドレスとするもので、さらにこのヘッダアドレスを加えた結果得られる全てのアドレスが、連続したアドレスとなるようなヘッダアドレスを付加するものである。このヘッダアドレスは、制御回路101が出力する制御信号が示す、NまたはMの値と、DCT演算または逆DCT演算のいずれを行うかを示す値に基づいて決定される。
【0056】
図4に示すように、N又はMの値が7の場合のDCT演算では、第1のバタフライ演算回路103の各データ線30g,30f,30e,30d,30c,30b,30aから出力される信号A6,A5,A4,A3,A2,A1,A0に基づいて構成される7ビットの信号に、その上位ビットであるA7に0を付加し、さらに、その信号A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、DCT演算を行うことを示す値である0を付加してなる9ビットの信号をROMアドレスとして生成する。
【0057】
同様に、N又はMの値が6の場合のDCT演算には、第1のバタフライ演算回路103の各データ線30f,30e,30d,30c,30b,30aから出力される信号A5,A4,A3,A2,A1,A0に基づいて構成される6ビットの信号に、その上位ビットであるA7,A6にそれぞれ1,0を付加し、N又はMの値が5の場合には、第1のバタフライ演算回路103の各データ線30e,30d,30c,30b,30aから出力される信号A4,A3,A2,A1,A0に基づいて構成される5ビットの信号に、その上位ビットであるA7,A6,A5にそれぞれ1,1,0を付加し、N又はMの値が8の場合には、第1のバタフライ演算回路103のデータ線34a,34b,34c,34d、又はデータ線34e,34f,34g,34hから出力される信号A3,A2,A1,A0に基づいて構成される4ビットの信号に、その上位ビットであるA7,A6,A5,A4にそれぞれ1,1,1,0を付加し、N又はMの値が3の場合には、第1のバタフライ演算回路103の各データ線30c,30b,30aから出力される信号A2,A1,A0に基づいて構成される3ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3にそれぞれ1,1,1,1,0を付加し、N又はMの値が4の場合には、第1のバタフライ演算回路103のデータ線34a,34b、又は34e,34fから出力される信号A1,A0に基づいて構成される2ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3,A2にそれぞれ1,1,1,1,1,0を付加し、N又はMの値が2の場合には、第1のバタフライ演算回路103のデータ線34a、又はデータ線34eから出力される信号A0に基づく1ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3,A2,A1にそれぞれ1,1,1,1,1,1,0を付加し、さらに、上記各A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、DCT演算であることを示す0を付加してなる9ビットの信号をROMアドレスとして生成する。
【0058】
逆DCT演算を行う場合には、各A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、その最上位に1を付加して、ROMアドレスを生成する。
即ち、N又はMの値が7の場合の逆DCT演算では、第1のバタフライ演算回路103の各データ線30g,30f,30e,30d,30c,30b,30aから出力される信号A6,A5,A4,A3,A2,A1,A0に基づいて構成される7ビットの信号に、その上位ビットであるA7に0を付加し、さらに、その信号A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、逆DCT演算であることを示す1を付加してなる9ビットの信号をROMアドレスとして生成する。
【0059】
同様に、N又はMの値が6の場合の逆DCT演算には、第1のバタフライ演算回路103の各データ線30f,30e,30d,30c,30b,30aから出力される信号A5,A4,A3,A2,A1,A0に基づいて構成される6ビットの信号に、その上位ビットであるA7,A6にそれぞれ1,0を付加し、N又はMの値が5の場合には、第1のバタフライ演算回路103の各データ線30e,30d,30c,30b,30aから出力される信号A4,A3,A2,A1,A0に基づいて構成される5ビットの信号に、その上位ビットであるA7,A6,A5にそれぞれ1,1,0を付加し、N又はMの値が8の場合には、第1のバタフライ演算回路103のデータ線30g,30e,30c,30a、又はデータ線30h,30f,30d,30bから出力される信号A3,A2,A1,A0に基づいて構成される4ビットの信号に、その上位ビットであるA7,A6,A5,A4にそれぞれ1,1,1,0を付加し、N又はMの値が3の場合には、第1のバタフライ演算回路103の各データ線30c,30b,30aから出力される信号A2,A1,A0に基づいて構成される3ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3にそれぞれ1,1,1,1,0を付加し、N又はMの値が4の場合には、第1のバタフライ演算回路103のデータ線30c,30a、又はデータ線30d,30bから出力される信号A1,A0に基づいて構成される2ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3,A2にそれぞれ1,1,1,1,1,0を付加し、N又はMの値が2の場合には、第1のバタフライ演算回路103のデータ線30a、又は30bから出力される信号A0に基づく1ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3,A2,A1にそれぞれ1,1,1,1,1,1,0を付加し、さらに、上記各A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、逆DCT演算であることを示す1を付加してなる9ビットの信号をROMアドレスとして生成する。
【0060】
ROMアドレス発生回路104においては、以上のようなアドレスを生成することにより、RAC105が有する各ROMに対するアドレスのデータ数を512個とすることができる。但し、図4に示す4個の未使用アドレスのデータ部を含む。
【0061】
図5は、RAC105の各ROMに記録されたROMデータのマップ図である。N又はMが1から8までの場合の、DCT演算又は逆DCT演算を行うための乗算結果が、ROMアドレスに対応して、それぞれROM0,ROM1,ROM2,ROM3,ROM4,ROM5,ROM6,ROM7に記録されている。
【0062】
次に、本DCT演算装置100の動作について説明する。
ここでは、8×7で構成される画素データを入力として、本DCT装置100によりDCT演算を行う場合について説明する。
まず、制御回路101は、入力画素データの個数N又はMと、DCT演算又は逆DCT演算を行うことを示す信号を出力する。この場合は、N=8,M=7,DCT演算を示す信号である。つぎに、ビットスライス回路102は、入力された列方向の8個の画素データを、各画素データのLSBから1ビット毎に出力する。第1のバタフライ演算回路103、N=8を示す信号を受け、式(18)で表されるバタフライ演算を行う。即ち、第1の選択回路31aはデータ線30hを、第2の選択回路31bはデータ線30gを選択する。第1の選択回路31aにより選択されたデータ線30hにより入力された信号と、データ線30aにより入力された信号とを第1の加算回路32aが加算する。また、第2の選択回路31bにより選択されたデータ線30gにより入力された信号と、データ線30bにより入力された信号とを第2の加算回路32bが加算する。さらに、データ線30cとデータ線30dとから入力されるデータを第3の加算回路32cが加算し、データ線30dとデータ線30eとから入力されるデータを第4の加算回路32dが加算する。
【0063】
一方、データ線30dとデータ線30eとから入力される信号を第1の減算回路33aが減算し、データ線30cとデータ線30fとから入力されるデータを第2の減算回路33bが減算する。さらに、上記第2の選択回路31bにより選択されたデータ線30gと、データ線30bとから入力されるデータを第3の減算回路33bが減算し、上記第1の選択回路31aにより選択されたデータ線30hと、データ線30aとから入力されるデータを第4の減算回路33dが減算する。
【0064】
このようにして、第1のバタフライ演算回路103は、バタフライ演算を行う。この演算は、式(18)の右辺に示された、x0+x7,x1+x6,x2+x5,x3+x4.x0−x7,x1−x6,x2−x5,x3−x4の加減算を実行していることとなる。
【0065】
ROMアドレス発生回路104は、上記第1のバタフライ演算回路103の出力に基づいて、ROMアドレス信号を生成して出力する。即ち、ROMアドレス発生回路104は、上記x0+x7,x1+x6,x2+x5,x3+x4を示す信号の順に構成された4ビットの信号に、該4ビットの信号の上位5ビットに01110を付加して、9ビットのROMアドレスを生成する。該ROMアドレスは、RAC105のROM0,ROM2,ROM4,ROM6に出力される。
【0066】
また、ROMアドレス発生回路104は、上記x0−x7,x1−x6,x2−x5,x3−x4を示す信号の順に構成された4ビットの信号に、該4ビットの信号の上位5ビットに01110を付加して、9ビットのROMアドレスを生成する。
【0067】
該ROMアドレスは、RAC105のROM1,ROM3,ROM5,ROM7に出力される。
【0068】
RAC105のROM0,ROM1,ROM2,ROM3,ROM4,ROM5,ROM6,ROM7は、ROMアドレス発生回路104によって生成されたROMアドレスに対応するデータを出力し、該各ROMの出力を累算する累算回路51a,51b,51c,51d,51e,51f,51g,51hは、各ROMの出力を累算して、出力する。これにより、式(18)に示すX0,X2,X4,X6,X1,X3,X5,X7が算出されることとなる。
【0069】
第2のバタフライ演算回路106は、RAC105の各累算回路51a,51b,51c,51d,51e,51f,51g,51hの出力を、DCT演算された8個の画素データとして出力する。即ち、第2のバタフライ演算回路106の各レジスタ60a,60b,60c,60d,60e,60f,60g,60hは、RAC105の各累算回路51a,51b,51c,51d,51e,51f,51g,51hの出力信号をラッチし、入力された順に上記各レジスタから出力する。
【0070】
このようにして、列方向に入力される8個の画素データ毎に一連の演算を7回繰り返し(図6(a))、これにより56個の画素データに対する中間結果を出力して1次元DCT演算を終了する(図6(b))。
【0071】
つぎに、上記56個の中間結果(図6(b))に対し、行方向に7個の画素データ毎に、DCT演算装置100に入力される。この場合は、式(5)に表される演算を実行することとなる。上記と同様の動作で、入力される7個の画素データ毎に一連の演算を8回繰り返し(図6(c))、これにより56個の画素データに対する2次元DCT演算を終了する(図6(d))。
【0072】
なお、この場合には、8個目の画素データは存在しないため、上記ビットスライス回路102は、7個の入力画素データに対応してビットスライス動作を行い、また、RAC105のROM7及び累算回路51hは、動作を行わない。
【0073】
次に、6×4で構成される画素データを入力として、本DCT装置100により逆DCT演算を行う場合について説明する。
まず、制御回路101は、入力画素データの個数N又はMと、DCT演算又は逆DCT演算を行うことを示す信号を出力する。この場合は、N=6,M=4,逆DCT演算を示す信号である。つぎに、ビットスライス回路102は、入力された列方向の6個の画素データを、各画素データのLSBから1ビット毎に出力する。第1のバタフライ演算回路103は、N=6及び逆DCTを示す信号を受け、バタフライ演算を行わずに、入力画素データをそのまま出力する。
【0074】
ROMアドレス発生回路104は、上記第1のバタフライ演算回路103の出力に基づいて、ROMアドレス信号を生成して出力する。
【0075】
N=6の場合は、ROMアドレス発生回路104は、信号A5,A4,A3,A2,A1,A0の順に構成された6ビットの信号に、該6ビットの信号の上位3ビットに110を付加して、9ビットのROMアドレスを生成する。該ROMアドレスは、RAC105のROM0,ROM1,ROM2,ROM3,ROM4,ROM5に出力される。
【0076】
RAC105のROM0,ROM1,ROM2,ROM3,ROM4,ROM5は、ROMアドレス発生回路104によって生成されたROMアドレスに対応するデータを出力し、該各ROMの出力を累算する累算回路51a,51b,51c,51d,51e,51fは、各ROMの出力を累算して、出力する。これにより、式(13)に示すX0,X1,X2,X3,X4,X5が算出されることとなる。
【0077】
なお、RAC105のROM6,ROM7、及び累算回路51g,51hは、対応する入力画素データが存在しないので、動作を行わない。
【0078】
第2のバタフライ演算回路は、N=6及び逆DCT演算を示す制御信号を受け、RAC105の各累算回路51a,51b,51c,51d,51e,51fの出力を、逆DCT演算された6個の画素データとして出力する。即ち、第2のバタフライ演算回路106の各レジスタ60a,60b,60c,60d,60e,60fは、RAC105の各累算回路51a,51b,51c,51d,51e,51fの出力信号をラッチし、入力された順に上記各レジスタから出力する。
【0079】
このようにして、列方向に入力される6個の画素データ毎に一連の演算を4回繰り返し(図7(a))、これにより24個の画素データに対する中間結果を出力して1次元DCT演算を終了する(図7(b))。
【0080】
つぎに、上記24個の中間結果(図7(b))は、行方向に4個の画素データ毎に、DCT演算装置100に入力される。ここでも、上記と同様の動作で、入力される4個の画素データ毎に一連の演算を6回繰り返し(図7(c))、これにより、24個の画素データに対する2次元DCT演算を終了する(図7(d))。
【0081】
即ち、制御回路101は、M=4,逆DCT演算を示す信号を出力する。つぎに、ビットスライス回路102は、入力された行方向の4個の画素データを、各画素データのLSBから1ビット毎に出力する。第1のバタフライ演算回路103は、M=4及び逆DCTを示す信号を受け、バタフライ演算を行わずに、1ビット毎にスライスされた入力画素データをそのまま出力する。
【0082】
ROMアドレス発生回路104は、上記第1のバタフライ演算回路103の出力に基づいて、ROMアドレス信号を生成して出力する。即ち、RAC105のデータ線30c,30a、又はデータ線30d,30bの出力である2ビットの信号に、該2ビットの信号の上位7ビットに0111110を付加して、9ビットのROMアドレスを生成する。該ROMアドレスは、RAC105のROM0,ROM2、又はROM1,ROM3に出力される。
【0083】
RAC105のROM0,ROM1,ROM2,ROM3は、ROMアドレス発生回路104によって生成されたROMアドレスに対応するデータを出力し、該各ROMの出力を累算する累算回路51a,51b,51c,51dは、各ROMの出力を累算して、出力する。
【0084】
第2のバタフライ演算回路は、M=4及び逆DCT演算を示す制御信号を受け、RAC105の各累算回路51a,51b,51c,51dの出力をバタフライ演算して出力する。即ち、RAC105の各累算回路51a,51b,51c,51dの出力を、各レジスタ60a,60b,60c,60dにラッチする。
【0085】
レジスタ61aは、レジスタ60aの出力、レジスタ60cの出力、レジスタ60aの出力、レジスタ60cの出力の順に、データのラッチを4回行う。一方、レジスタ61bは、レジスタ60bの出力、レジスタ60dの出力、レジスタ60bの反転出力、レジスタ60dの反転出力の順に、データのラッチを4回行う。加算器62は、レジスタ61aの出力とレジスタ61bの出力とを順次加算する。これにより、式(22)に示すx0,x1,x2,x3が算出されることとなる。レジスタ63は、上記加算器62の出力を順にラッチして、出力する。
【0086】
このように、本実施の形態1によるDCT演算装置によれば、N又はMの値、及びDCT演算又は逆DCT演算を示す制御信号により、第1のバタフライ演算回路103及び第2のバタフライ演算回路106が行うバタフライ演算を制御し、N又はMの単位ブロックの画素データのDCT演算又は逆DCT演算に対応するROMアドレスを、ROMアドレス発生回路104が生成することにより、一のDCT演算装置で、1から8の任意の整数で構成されるN×M単位ブロックの画素データのDCT演算及び逆DCT演算を行うことができる。これにより、回路面積の小さな上記DCT演算装置を得ることができる。
【0087】
また、第1のバタフライ演算回路103及び第2のバタフライ演算回路106を設け、N又はMの値が2のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にFFTを利用して演算量を減らすことができ、ROMに格納している,DCT演算結果及び逆DCT演算結果を求めるために用いる乗算結果となるデータ、即ちNまたはM画素の入力画素データのそれぞれの1ビットにより構成されるNまたはMビットのビット列と、DCT演算結果及び逆DCT演算結果を求めるために用いる係数とを乗算した部分積の計算結果の量を小さくすることができ、このデータを記録するROMのデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる効果がある。
【0088】
また、FFTを用いることによりROM0〜7内に格納するデータの量を削減することができるが、ROM0〜7を1つのROM内の複数の領域として実現する場合、ROMの全体の容量を削減するためには、削減したデータ部分を詰める必要がある。しかしながら、FFTによりデータ数の削減を行ったデータを、単に削減したデータ部分をそのままの順でつめてROMに格納すると、DA法を用いた場合の特徴の1つである入力データの各ビットをアドレスとするということが不可能となり、入力画素データの各ビットから得られたビット列を並べ替えるための手段が必要となる結果、アドレス生成が複雑化してしまう。これに対して、本実施の形態1においては、ROMアドレス発生回路104が、第1のバタフライ演算回路103から得られたビット列に対してアドレスを生成するために付加するヘッダアドレスとして、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなるようなビット列を用いるようにしたことにより、第1のバタフライ演算回路103からビット列をアドレスの一部としてそのまま利用できるように、かつ、ROM内に無駄な領域が発生しないよう効率よく、データをROM内にマッピングでき、ROM容量を削減することができる。これにより、DCT演算装置の回路面積をより小さくすることができる効果が得られる。
【0089】
実施の形態2.
図10は、本発明の実施の形態2に係るDCT演算装置であり、図において、図1と同一符号は同一または相当する部分を示している。この実施の形態2に係るDCT演算装置200は、上記実施の形態1に係るDCT演算装置100において、第2のバタフライ演算回路に代えて、演算手段の出力を、入力画素データの順序に対応して出力する出力回路206を備えたものとして、DCT演算のみを行うようにしたものである。このDCT演算装置200においては、制御回路101が出力する制御信号にはDCT演算を行うか、逆DCT演算を行うかを示す値が不要となり、ROMアドレス発生回路104が生成するROMアドレスは、DCT演算を行うか、逆DCT演算を行うかを示す値を含める必要がないため、入力画素データをビットスライスしたものに、N又はMの値を示すヘッダアドレスを付加した8ビットのものとする。また、ROM10〜ROM17は、上記実施の形態1において説明したROM0〜ROM7から、逆DCT演算に使用するデータを格納する領域をそれぞれ除いたものである。なお、このDCT演算装置200の動作については、上記実施の形態1に係るDCT演算装置におけるDCT演算を行う動作と同様であるので、ここでは、その説明を省略する。
【0090】
このような実施の形態2においても、上記実施の形態1と同様に、N又はMの値を示す制御信号により、第1のバタフライ演算回路103が行うバタフライ演算を制御し、ROMアドレス発生回路104が第1のバタフライ演算回路103の出力に基づいてN又はMの単位ブロックの画素データのDCT演算に対応するROMアドレスを生成することにより、一のDCT演算装置で、行数または列数が1から8の任意の整数で構成されるN×M単位ブロックの画素データのDCT演算を行うことができ、回路面積の小さな上記DCT演算装置を得ることができる。
【0091】
また、N又はMの値が2のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にFFTを利用して演算量を減らすことができ、DCT演算結果を求めるために用いる乗算結果となるデータを記録するROMのデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる効果がある。
【0092】
また、第1のバタフライ演算回路103から得られたビット列をアドレスの一部としてそのまま利用できるように、かつ、ROM内に無駄な領域が発生しないよう、効率よくデータをROM内にマッピングでき、ROM容量を削減することができ、DCT演算装置の回路面積をより小さくすることができる効果が得られる。
【0093】
実施の形態3.
図11は、本発明の実施の形態3に係るDCT演算装置であり、図において、図1と同一符号は同一または相当する部分を示している。この実施の形態3に係るDCT演算装置300は、上記実施の形態1に係るDCT演算装置100において、第1のバタフライ演算回路を設けないようにし、ビットスライス手段102の出力がROMアドレス発生回路104に直接入力されるようにし、逆DCT演算のみを行うようにしたものである。このDCT演算装置300においては、制御回路101が出力する制御信号にはDCT演算を行うか、逆DCT演算を行うかを示す値が不要となり、ROMアドレス発生回路104は生成するROMアドレスは、DCT演算を行うか、逆DCT演算を行うかを示す値を含める必要がないため、入力画素データをビットスライスしたものに、N又はMの値を示すヘッダアドレスを付加した8ビットのものとする。また、ROM20〜ROM27は、上記実施の形態1において説明したROM0〜ROM7から、DCT演算に使用するデータをそれぞれ除いたものである。なお、このDCT演算装置300の動作については、上記実施の形態1に係るDCT演算装置における逆DCT演算を行う動作と同様であるので、ここでは、その説明を省略する。
【0094】
このような実施の形態3においても、上記実施の形態1と同様に、N又はMの値を示す制御信号により、第2のバタフライ演算回路106が行うバタフライ演算を制御し、ROMアドレス発生回路がビットスライス回路102の出力からN又はMの単位ブロックの画素データの逆DCT演算に対応するROMアドレスを生成することにより、一のDCT演算装置で、行数または列数が1から8の任意の整数で構成されるN×M単位ブロックの画素データの逆DCT演算を行うことができ、回路面積の小さな上記DCT演算装置を得ることができる。
【0095】
また、N又はMの値が2のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にFFTを利用して演算量を減らすことができ、逆DCT演算結果を求めるために用いる乗算結果となるデータを記録するROMのデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる効果がある。
【0096】
また、ビットスライス回路102から得られたビット列をアドレスの一部としてそのまま利用できるように、かつ、ROM内に無駄な領域が発生しないよう、効率よくデータをROM内にマッピングでき、ROM容量を削減することができ、DCT演算装置の回路面積をより小さくすることができる効果が得られる。
【0097】
実施の形態4.
図9は本発明の実施の形態4に係るDCT演算装置の構成を示すブロック図であり、図において、ビットスライス回路112は、上記実施の形態1に係るビットスライス回路102の、入力を16ビットの画素データとし、この画素データをスライスする単位を2ビット単位としたものである。また、第1のバラフライ演算回路113は、上記実施の形態1に係る第1のバタフライ演算回路103において、2ビットのデータについてバタフライ演算を行い、2ビット単位で出力するようにしたものである。ROMアドレス発生回路114は、第1のバラフライ演算回路113の出力である2ビットのデータの各ビットにより表わされるアドレスに対して、それぞれヘッダアドレスを付加して、9ビットのアドレスを作成するもので、このヘッダアドレスとしては、上記実施の形態1に係るROMアドレス発生回路104が付加するものと同様のデータ、即ち、第1のバラフライ演算回路113の出力に対してこのヘッダアドレスを付加することによって得られる全てのアドレスが連続したアドレスに並べ替えられるようなビット列を用いる。RAC115は、上記実施の形態1に示したRAC105と同様に、第1のバタフライ演算回路113のビット単位の出力から得られるビット列と上記実施の形態1において式(5)〜式(7)、式(9)、式(12)〜式(14)、式(16)及び式(18)〜式(23)で示した行列演算の係数との部分積の計算結果をテーブルとして保持するROMと、ROMアドレス発生回路114から出力されるアドレスによりこのROMから出力されるデータを累算する累算回路を備えている。ただし、ビットスライス回路112が2ビット単位で画素データをスライスしており、それぞれのビットから得られる2つのアドレスに対する上記部分積の計算結果を個別に保持するテーブルが必要となるため、上記実施の形態1に示したRAC105の、ROM0〜ROM7のそれぞれの代わりに、ROM0〜ROM7と同様の構成を有している、ROM0a〜ROM7aとROM0b〜ROM7bとを1つずつ互いに並列に設けた構成としている。なお、ここでは、ROM0a〜ROM7a及びROM0b〜ROM7b内のデータを16ビットとするが、このデータのビット数は他のビット数であってもよい。累算回路52a〜52hはそれぞれ、ROM0aとROM0bとの出力、ROM1aとROM1bとの出力、ROM2aとROM2bとの出力、ROM3aとROM3bとの出力、ROM4aとROM4bとの出力、ROM5aとROM5bとの出力、ROM6aとROM6bとの出力、ROM7aとROM7bとの出力を、それぞれ16ビットのデータとして入力し、累算した結果を、DCT演算の場合にはDCT演算結果として、また、逆DCT演算の場合には逆DCT演算の結果を求めるために第2のバタフライ演算回路116に入力するデータとして出力する。第2のバタフライ演算回路116は、上記実施の形態1に係る第2のバタフライ演算回路106において、出力するデータを16ビットとしたものである。
【0098】
この実施の形態4に係るDCT演算回路においては、N×M単位ブロックの画像データから行単位、または列単位で入力される画素データを2ビットごとにスライスし、第1のバタフライ演算回路113は、DCT演算を行う場合であって、入力される行または列の画素データ数であるNまたはMが2のべき乗である場合には、上記スライスした2ビットのデータに対して上記実施の形態1と同様のバタフライ演算を行う。また、それ以外の場合には,バタフライ演算を行わない。ROMアドレス発生回路114は第1のバタフライ演算回路113の2ビットごとの複数の出力のうちの各1ビットのデータからそれぞれ構成される2つのビット列にヘッダアドレスを付加して、2つのアドレスを生成し、その一方をROM0a〜ROM7aに、他方をROM0b〜ROM7bに対して出力する。ROM0a〜ROM7b及びROM0b〜ROM7bは入力されるアドレスに対応した、DCT演算または逆DCT演算に用いる部分積の計算結果をそれぞれ出力する。累算回路52a〜52hは並列に設けられたROM同士の出力を累算して出力し、第2のバタフライ演算回路116は逆DCT演算を行う場合であって、入力される行または列の画素データ数であるNまたはMが2のべき乗である場合には、累算回路52a〜52hから出力されるデータに対して上記実施の形態1と同様の逆DCT演算を行って、その演算結果を入力画素データの順序に対応して並び替えて出力し、その他の場合にはバタフライ演算を行わずに、累算回路52a〜52hから出力されるデータを入力がソデータの順序に対応して並び替えて出力する。
【0099】
このような実施の形態4によれば、入力される行または列の画素データ数であるNまたはMが2のべき乗である場合にバタフライ演算を行うようにしたので、行列演算にFFTを利用でき、ROM0a〜ROM7a,ROM0a〜ROM7aに格納するDCT演算及び逆DCT演算を求めるために用いるデータ数を減らすことができ、上記実施の形態1と同様にROM容量を削減できる効果がある。
【0100】
また、第1のバタフライ演算回路113から出力される2ビットからなる複数の画素データのそれぞれのビットにより構成されるアドレスに対して、全てのアドレスが連続して配列されるようにヘッダアドレスを付加するようにしたから、ROM内におけるデータのマッピングを効率よく行うことができ、入力される画素データが16ビットの場合においても、上記実施の形態1と同様に、ROM容量を削減することができる効果がある。
【0101】
なお、上記実施の形態4においては、上記実施の形態1に係るDCT演算装置を、その入力が16ビットとなるように変形したものについて説明したが、本発明においては、上記実施の形態2及び3に係るDCT演算装置において、その入力が16ビットとなるようにするようにしてもよく、このような場合においても、上記実施の形態4と同様の効果を奏する。
【0102】
また、上記実施の形態1〜4においては、ビットスライス回路に入力されるデータが8ビットまたは16ビットとしたが、本発明においては、入力画素データのビット数は何ビットであってもよく、ビットスライス回路によるスライスするビットの単位や、RACに含まれるROMの数を調整することにより、上記各実施の形態と同様の効果を奏する。
【0103】
なお、上記各実施の形態1〜4に係るDCT演算装置において、N又はMの値が8以外、即ちその上限値以外の場合に、未使用となるROM及び累算回路等の手段の動作を停止するようにしてもよい。このようにすることで、不必要なROM及び累算回路等の手段による消費電力を削減することができる。
【0104】
また、上記実施の形態1〜4においては、乗算結果を出力するための手段として、ROMを用いるようにしたが、本発明においては、ROMの代わりに、アドレスが入力されると、これに対応した乗算結果を出力するような組み合わせ回路を用いるようにしてもよく、このような場合においても、上記各実施の形態と同様の効果を奏する。
【0105】
また、上記実施の形態1〜4においては、入力される画像データの単位ブロックが最大8×8画素まで対応できるものについて、説明したが、単位ブロックの最大の大きさは、8×8以外のどのような大きさであってもよく、このような場合においても、単位ブロックの最大の大きさに合わせて、ROMと累算回路との組の数,及び各ROMのサイズ等を増減させることにより、上記各実施の形態と同様の効果を奏する。
【0106】
産業上の利用可能性
以上のように、本発明に係るDCT演算装置は、動画像データの符号化装置、あるいは復号化装置内におけるDCT演算装置として有用であり、特に、MPEG(Moving Picture Coding Experts Group)方式による符号化、または復号化を行う装置内のDCT演算装置に用いるのに適している。
【図面の簡単な説明】
【図1】本発明の実施の形態1によるDCT演算装置の構成を示すブロック図
【図2】本発明の実施の形態1による第1のバタフライ演算回路の内部構成を示す図
【図3】本発明の実施の形態1による第2のバタフライ演算回路の内部構成を示す図
【図4】本発明の実施の形態1によるROMアドレスのマップ図
【図5】本発明の実施の形態1によるROM使用データ容量のマップ図
【図6】本発明の実施の形態1による8×7画素ブロックに対するDCT演算を説明するための概略図
【図7】本発明の実施の形態1による6×4画素ブロックに対する逆DCT演算を説明するための概略図
【図8】従来のDCT演算装置の構成を示すブロック図
【図9】本発明の実施の形態4によるDCT演算装置の構成を示すブロック図
【図10】本発明の実施の形態4によるDCT演算装置の構成を示すブロック図
【図11】本発明の実施の形態4によるDCT演算装置の構成を示すブロック図
【発明の属する技術分野】
技術分野
本発明は、画像信号処理等の情報圧縮に用いられる離散余弦変換(Discrete Cosine Transform、以下「DCT」という。)を実現するDCT演算装置に関し、異なる大きさの単位ブロックの画像データに対して、DCT演算または逆DCT演算の少なくともいずれか一方を行うDCT演算装置に関する。
【0002】
【従来の技術】
背景技術
画像信号等の情報圧縮には、DCTがよく用いられている。動画像における情報圧縮では、一般に、画面内(空間的)相関関係を利用した情報圧縮と、画面間(時間的)相関関係を利用した情報圧縮が行われるが、DCTは前者に該当するものである。このDCTは、周波数変換法の一種であり、変換前にランダムに分布していた画素値が、変換後には低周波成分に大きな値が集中する性質を利用して、高周波成分を取り除くことにより情報圧縮を行うものである。
【0003】
DCTでは、まず、1枚の画像を一定数の画素(例えば8×8)からなる一定形状の複数の単位ブロックに分割し、該単位ブロック毎にDCT処理を実行している。2次元DCTは、1次元DCTを2回行うことにより実行されるものであり、例えば、単位ブロックの列方向に1次元DCTを行なった後の中間結果に対し、その行方向へ1次元DCTを行なうことにより実行される。
【0004】
また、DCTにより圧縮された画像信号は、逆DCTにより復号される。
【0005】
【数1】
及び
【0006】
【数2】
は、N×Nの単位ブロックにおける2次元DCT、及び2次元逆DCTを定義したものである。また、
【0007】
【数3】
は、上記式(1)及び式(2)より導かれる1次元DCTを定義したものである。
【0008】
ここで、x(i,j)(但し、i,j=0,1,2,・・・,N−1)は画素、X(u,v)(但し、C(0)=1/√2、C(u)=C(v)=1(u,v=1,2,・・・,N−1))は変換係数である。
【0009】
N=8の場合、上記式(3)による1次元DCTの行列演算は、
【0010】
【数4】
の行列式で表される。また、N=7,N=6,N=5,N=4,N=3,N=2の場合は、それぞれ、
【0011】
【数5】
【数6】
【数7】
【数8】
【数9】
【数10】
で表される。
【0012】
一方、1次元逆DCTの行列演算は、N=8の場合は
【0013】
【数11】
で表され、N=7,N=6,N=5,N=4,N=3,N=2の場合は、それぞれ、
【0014】
【数12】
【数13】
【数14】
【数15】
【数16】
【数17】
で表される。
【0015】
図8は、従来のDCT演算装置の一例を説明するためのものであり、該装置の構成を示すブロック図である。図において、DCT演算装置1は、入力画素データをラッチする8ビットの入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hと、該各入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hの各出力データをそれぞれラッチした後、各出力データの最下位ビット(以下「LSB」という。)から1ビット毎にシフト出力する8ビットのホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hと、上記各ホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hの出力データを8ビットのアドレスとして、ROM(リードオンリーメモリ)41a〜41hのデータを累算器42a〜42hで累算して出力するロムアキュームレータ(以下「RAC」という。)4a,4b,4c,4d,4e,4f,4g,4hと、上記各RAC4a,4b,4c,4d,4e,4f,4g,4hの出力データをラッチして出力する出力レジスタ5a,5b,5c,5d,5e,5f,5g,5hとからなる。
【0016】
また、上記各RAC4a,4b,4c,4d,4e,4f,4g,4hは、それぞれ、行列演算における列係数に対して、入力される列または行を構成する各画素データの各ビットを乗算したものの和を含む2の8乗個のデータテーブルを有するROM41a〜41hと、該ROM41a〜41hの出力を累算する累算器42a〜42hとからなる。
【0017】
この従来の技術のDCT演算回路は、行列演算にいわゆるDA(distributed arithmetic)法を使用している。このDA法は、固定係数の積和演算に対して効率的な演算方法で、各入力画素データと固定係数との積和演算を通常のワード単位ではなく、ビット列単位に処理する方法である。各入力画素データのそれぞれのビットにより構成されるビット列をアドレスとして、これに対応する部分積を、予め部分積の計算結果をテーブルとして格納しているROMから読み出し、LSB(Least Significant Bit:最下位ビット)からMSB(Most Significant Bit:最上位ビット)までを累算することにより固定係数の積和演算を実現するものである。この従来のDCT演算回路は、NまたはM画素の入力画素データのそれぞれの1ビットにより構成されるビット列と、DCT係数の行係数とを乗算した部分積の計算結果が、DCT係数の各行係数に対応して、RAC4a〜4hのそれぞれのROM41a〜41hにテーブルとして格納しており、NまたはM画素の入力画素データのそれぞれの1ビットにより構成されるNまたはMビットのビット列をアドレスとして各ROM41a〜41hに入力してやることで、部分積がROM41a〜41hから出力され、この部分積を各画素データのLSBからMSBまで順次出力し、累算することで、1次元のDCT演算結果を得るものである。
【0018】
次に動作について説明する。
入力レジスタ2aは、8ビットの入力画素データをラッチし、入力サイクル毎に入力レジスタ2aから入力レジスタ2bへ、入力レジスタ2bから入力レジスタ2cへと、各入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hすべてに画素データがラッチされるまでシフト動作を行なう。その後、各入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hは、それぞれに対応する各ホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hにラッチした画素データを出力する。次の、8個の入力画素データが、各入力レジスタ2a,2b,2c,2d,2e,2f,2g,2hへラッチされるのと並行して、各ホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hは、ラッチした8ビットの画素データの最下位ビットから、1ビット毎にシフト出力する。各ROM41a,41b,41c,41d,41e,41f,41g,41hは、上記ホールディングレジスタ3a,3b,3c,3d,3e,3f,3g,3hが出力した8ビットのデータをアドレスとして、該アドレスに対応するROMデータを出力する。各累算器42a,42b,42c,42d,42e,42f,42g,42hは、それぞれに対応するROM41a,41b,41c,41d,41e,41f,41g,41hが出力した8ビット分のROMデータを累算して、即ち、8ビットのデータとして出力する。各RAC4a,4b,4c,4d,4e,4f,4g,4hに対応する出力レジスタ5a,5b,5c,5d,5e,5f,5g,5hは、上記各累算器42a,42b,42c,42d,42e,42f,42g,42hが出力したデータを、出力レジスタ5hから出力レジスタ5gへ、出力レジスタ5gから出力レジスタ5fへと、順次シフト動作を行ない、ラッチされたデータを出力する。
【0019】
上記DCT演算装置1を用いて、例えば8×8を単位ブロックとする画素データの2次元DCT演算を行う場合には、まず、列方向の8個の画素データ毎に一連の演算を8回繰り返し行うことで64個の中間結果を出力し、その後、該64個の中間結果に対し行方向へ1次元DCTを行なう。
【0020】
【発明が解決しようとする課題】
しかし、従来のDCT演算装置は、例えば8×8を単位ブロックとして1次元DCT演算又は逆DCT演算を行なう場合には、入力画素データが8ビットであれば256個のROMテーブルデータを8個備え、DCT演算及び逆DCT演算を1つの装置で行うには512個のROMデータテーブルを8個備えているものであることが必要である。また、近年、画像情報の圧縮の規格によっては、単位ブロックのサイズを可変とする要請があるが、上記DCT装置は8×8を単位ブロックとする画素データしか対応できないため、8×8以外の例えば7×7,6×6,5×5,4×4等を単位ブロックとする画素データに対応するには、それぞれ256個のROMテーブルを7個,128個のROMテーブルを6個,64個のROMテーブルを5個,32個のROMテーブルを4個、備えたDCT装置を必要とする。従って、N×Mの任意に選択された単位ブロックの画素データに対してDCT演算及び逆DCT演算を行うためには、複数のDCT演算装置を必要とし、それらの回路面積は非常に大きなものとなるという問題があった。
【0021】
本発明は、上記の問題を鑑みてなされたものであり、異なるサイズの単位ブロックの画像データに対してDCT演算又は逆DCT演算を行うことができる回路面積の小さいDCT演算装置を提供することを目的とする。
【0022】
【発明の実施の形態】
発明の開示
本発明は、N×M単位ブロック(N及びMは1から8の任意の整数)の画像データの画素データに対してDA法を用いた1次元のDCT演算又は逆DCT演算を行うDCT演算装置であって、N×M単位ブロックの画像データの画素データを、行ごとに、または列ごとに入力し、入力された行または列を構成する各画素データをビットごとにスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数、及び、DCT演算又は逆DCT演算のいずれを行うかを示す値を含む制御信号を出力する制御手段と、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつDCT演算を行うことを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行い、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力する第1のバタフライ演算手段と、上記第1のバタフライ演算手段の出力から得られるビット列と、上記制御信号に含まれる入力画素データ数、及びDCT演算または逆DCT演算のいずれを行うかを示す値とに基づいて、アドレスを生成して出力するアドレス発生手段と、1次元のDCT演算結果及び逆DCT演算結果をもとめるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び該乗算結果出力手段の出力を累算して出力する累算手段、を8組有する演算手段と、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつ逆DCT演算を行うことを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記演算手段の出力を入力画素データの順序に対応して並べ替えて出力する第2のバタフライ演算手段とを備えている。これにより、DCT演算結果及び逆DCT演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる。
【0023】
また、本発明は、上記アドレス発生手段は、上記第1のバタフライ演算手段の出力と、入力画素データ数と、DCT演算または逆DCT演算のいずれを行うかを示す値とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数の値が7,6,5,3のいずれかであることを示す場合には、上記第1のバタフライ演算手段の出力に基づいて構成される7,6,5,3ビットの各々のビット列に対し、DCT演算または逆DCT演算のいずれを行うかを示す値を含む、上記入力画素データ数の値を示すための2,3,4,6ビットの各々のヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が8,4,2のいずれかであることを示す場合であって、かつ、DCT演算を行うことを示す場合には、上記第1のバタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される4,2,1ビットの各々のビット列、及び減算結果に基づいて構成される4,2,1ビットの各々のビット列それぞれに対し、DCT演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための5,7,8ビットの各々のヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が8,4,2のいずれかであることを示す場合であって、かつ、逆DCT演算を行うことを示す場合には、上記第1のバタフライ演算手段の8,4,2ビットの各々の出力に基づいて構成される4,2,1ビットの各々のビット列に対し、逆DCT演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための5,7,8ビットの各々のヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記第1のバタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、DCT演算装置の回路面積をより小さくすることができる。
【0024】
また、本発明は、上記乗算結果出力手段は、入力画素データとDCT演算及び逆DCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつDCT演算を行うことを示す場合には、高速フーリエ変換に基づいたDCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示し、かつDCT演算を行うことを示す場合には、DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつ逆DCT演算を行うことを示す場合には、高速フーリエ変換に基づいた逆DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示し、かつ逆DCT演算を行うことを示す場合には、逆DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力することとしている。これにより、DCT演算装置の回路面積をより小さくすることができる。
【0025】
また、本発明は、上記DCT演算装置は、制御信号が入力画素データ数が8以外であることを示す場合に、演算に未使用となる手段の動作を停止するものとしている。これにより、消費電力を削減できる。
【0026】
また、本発明は、N×M単位ブロック(N及びMは1以上の任意の整数)の画像データの画素データに対してDA法を用いた1次元のDCT演算を行うDCT演算装置であって、N×M単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、該制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行って、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力するバタフライ演算手段と、上記バタフライ演算手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、1次元のDCT演算結果を求めるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、上記演算手段の出力を、入力される画素データの順序に対応して並べ替えて、1次元のDCT演算結果として出力する出力手段とを備えている。これにより、DCT演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる。
【0027】
また、本発明は、上記アドレス発生手段は、上記第1のバタフライ演算手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数が2のべき乗以外の値であることを示す場合には、上記第1のバタフライ演算手段の出力に基づいて構成される、入力画素データ数と同じビット数となるアドレスに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が2のべき乗であることを示す場合には、上記第1のバタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列、及び減算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記第1のバタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力画素データ数の最大値と同じビット数となるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、DCT演算装置の回路面積をより小さくすることができる。
【0029】
また、本発明は、上記乗算結果出力手段は、入力画素データとDCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、高速フーリエ変換に基づいたDCTの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示す場合には、DCTの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力するものとしている。これにより、DCT演算装置の回路面積をより小さくすることができる。
【0030】
また、本発明は、N×M単位ブロック(N及びMは1以上の任意の整数)の画像データの画素データに対してDA法を用いた1次元の逆DCT演算を行うDCT演算装置であって、N×M単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、上記ビットスライス手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、上記アドレスに対応して、1次元の逆DCT演算結果を求めるために用いる乗算結果を出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、該制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記各演算手段の出力を入力される画素データの順序に対応して並べ替えて出力するバタフライ演算手段とを備えている。これにより、逆DCT演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる。
【0031】
また、本発明は、上記アドレス発生手段は、上記ビットスライス手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数が2のべき乗以外の値であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数と同じビット数となるビット列に対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が2のべき乗であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記ビットスライス手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力される行または列を構成する入力画素データ数の最大値と同じビット数となるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、DCT演算装置の回路面積をより小さくすることができる。
【0033】
また、本発明は、上記乗算結果出力手段は、入力画素データと逆DCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、高速フーリエ変換に基づいた逆DCTの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示す場合には、逆DCTの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力するものとしている。これにより、DCT演算装置の回路面積をより小さくすることができる。
【0034】
また、本発明は、上記ビットスライス手段に入力される画像データの単位ブロックは、N×M単位ブロック(N,及びMは1から8までの任意の値)であり、上記演算手段は、乗算結果出力手段と累算手段とを含む組を、上記入力画素データ数の最大値である8組備えている。これにより、DCT演算装置の回路面積をより小さくすることができる。
【0035】
また、本発明は、上記ビットスライス手段は、入力される各画素データとして16ビットのデータを入力するとともに、この16ビットのデータを2ビットごとにスライスして出力し、上記演算手段は、上記各乗算結果出力手段として、互いに並列に設けられた上記乗算結果をそれぞれ出力する2つの乗算結果出力部を備えており、この2つの乗算結果出力部の出力を加算したデータを上記累算手段で累算するものとしている。これにより、入力画素データが16ビットのデータである場合に、DCT演算装置の回路面積をより小さくすることができる。
【0036】
また、本発明は、上記DCT演算手段は、制御信号が、入力される行または列を構成する入力画素データ数の値が上記入力画素データ数の最大値以外の値であることを示す場合に、未使用となる手段の動作を停止するものとしている。これにより、消費電力を削減できる。
【0037】
発明を実施するための最良の形態
実施の形態1.
本実施の形態1によるDCT装置は、N×M(N,Mは1から8の任意の整数)の画素データで構成される単位ブロックの画素データを列ごと,もしくは行ごとに入力していき、これらに対して、DCT演算又は逆DCT演算を行うとともに、特にN又はMが2のべき乗である場合、即ち、N=8,N=4,N=2である場合には、周波数間引形の高速フーリエ変換(以下、「FFT」という。)を利用するものである。
【0038】
上記FFTを用いると、上記DCTの行列演算は、N=8の場合は
【0039】
【数18】
で、N=4の場合は
【0040】
【数19】
で、N=2の場合は
【0041】
【数20】
で表される。一方、逆DCTの行列演算は、N=8の場合は
【0042】
【数21】
で、N=4の場合は
【0043】
【数22】
で、N=2の場合は
【0044】
【数23】
で表される。
【0045】
これらの式に示されているように、FFTを利用することにより、行列演算の演算量を大幅に削減できることがわかる。
【0046】
本実施の形態1においては、いわゆるバタフライ演算を利用することにより、FFTをDCT演算又は逆DCT演算の行列式に対して適用できるようにし、DCT演算又は逆DCT演算を少ない演算量で実行できるようにする。
【0047】
以下、本DCT演算装置の構成について説明する。
図1は、本実施の形態1によるDCT演算装置を説明するための図であり、該装置の構成を示すブロック図である。図において、DCT演算装置100は、N×Mの単位ブロックを構成する画素データの個数N及びMを表す信号を出力する制御回路101と、入力された8ビットの各画素データのLSBから1ビット毎にシフト出力を行うビットスライス回路102と、該ビットスライス回路102の出力に対してバタフライ演算を行う第1のバタフライ演算回路103と、該第1のバタフライ演算回路103の出力に基づいて、ROMアドレスを生成するROMアドレス発生回路104と、該ROMアドレスに対応するROMデータを読み出して累算するRAC105と、該RAC105の出力に対してバタフライ演算を行う第2のバタフライ演算回路106とからなる。
【0048】
また、上記RAC105は、DCT演算及び逆DCT演算をおこなうためのROM0,ROM1,ROM2,ROM3,ROM4,ROM5,ROM6,ROM7と、該各ROMの出力を累算する累算回路51a,51b,51c,51d,51e,51f,51g,51hとからなる。本実施の形態1においては、ROM0〜7は1つのROM内の複数のROM領域である。
【0049】
このDCT演算回路は、行列演算にDA法を使用しており、DCTの行列演算、逆DCTの行列演算、高速フーリエ変換したDCTの行列演算、及び高速フーリエ変換した逆DCTの行列演算のそれぞれにおける、第1のバタフライ演算回路103の各出力から1ビットごとにデータを取り出すことにより得られるビット列についての乗算結果を、ROM0〜ROM7のそれぞれにテーブルとして格納しており、第1のバタフライ演算回路103の各出力から得られるビット列をアドレスとして各ROMに入力してやることで、上記乗算結果がROMから出力され、この乗算結果を各画素データのLSBからMSBまで順次出力し、累算回路51a〜51hで累算して出力することで、行列演算結果を得るものとしている。
【0050】
なお、上記ROM0〜ROM7には、上記画素データの数NまたはMが2のべき乗である場合についての乗算結果として、高速フーリエ変換を行ったDCT及び逆DCTの行列演算における、第1のバタフライ演算回路103の出力から得られるビット列についての乗算結果を格納しており、上記画素データの数NまたはMが2のべき乗以外である場合についての乗算結果として、高速フーリエ変換を行わない通常のDCT及び逆DCTの行列演算における、第1のバタフライ演算回路103の出力から得られるビット列についての乗算結果を格納している。
【0051】
即ち、第1のバタフライ演算回路103のビット単位の出力から得られるビット列と上述した式(5)〜式(7)、式(9)、式(12)〜式(14)、式(16)及び式(18)〜式(23)で示した行列演算の係数との部分積の計算結果がテーブルとしてROM0〜ROM7に格納されている。
【0052】
なお、入力画素データ数となるNまたはMの値が可変であるため、ROMと累算回路との組はNまたはMの値の最大数の組、ここでは8組設けられている。また、本実施の形態1においては、NまたはMの値が可変であり、DCT演算及び逆DCT演算に使用する係数も変化するため、各ROM0〜ROM7には、NまたはMの値が変化した場合に応じた部分積の結果が個別に格納されている。
【0053】
図2は、上記第1のバタフライ演算回路103の内部構成の一例を示すブロック図である。該第1のバタフライ演算回路103は、制御信号がDCT演算を行う場合であって、画素データの個数を示すN又はMが2のべき乗、即ち2,4,8である場合にはバタフライ演算を行い、それ以外の場合にはバタフライ演算を行うことなくデータを出力するものであり、上記ビットスライス回路102が出力した各画素データのビット信号を入力とするデータ線30a,30b,30c,30d,30e,30f,30g,30hと、制御信号がN又はMが8であることを示す場合にはデータ線30hを、制御信号がN又はMが4であることを示す場合にはデータ線30dを、制御信号がN又はMが2であることを示す場合にはデータ線30dを選択する第1の選択回路31aと、制御信号がN又はMが8であることを示す場合にはデータ線30gを、制御信号がN又はMが4であることを示す場合にはデータ線30cを選択する第2の選択回路31bと、データ線30aと第1の選択回路31aとから入力されるデータを加算する第1の加算回路32aと、データ線30bと第2の選択回路31bとから入力されるデータを加算する第2の加算回路32bと、データ線30cとデータ線30dとから入力されるデータを加算する第3の加算回路32cと、データ線30dとデータ線30eとから入力されるデータを加算する第4の加算回路32dと、データ線30dとデータ線30eとから入力される信号を減算する第1の減算回路33aと、データ線30cとデータ線30fとから入力されるデータを減算する第2の減算回路33bと、データ線30bと第2の選択回路31bとから入力されるデータを減算する第3の減算回路33bと、データ線30aと第1の選択回路31aとから入力されるデータを減算する第4の減算回路33dとからなる。この第1のバタフライ演算回路104は、ビットスライス回路102に、行または列ごとに入力され、ビットごとにスライスして出力される画素データを、入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行う。
【0054】
図3は、上記第2のバタフライ演算回路106の内部構成の一例を示すブロック図である。該第2のバタフライ演算回路106は、制御信号が逆DCT演算を行う場合であって、画素データの個数を示すN又はMが2のべき乗、即ち2,4,8である場合にはバタフライ演算を行い、それ以外の場合にはバタフライ演算を行うことなくデータを出力するものであり、上記RAC105の各累算回路51a,51b,51c,51d,51e,51f,51g,51hの出力をラッチするレジスタ60a,60b,60c,60d,60e,60f,60g,60hと、上記各レジスタ60a,60c,60e,60gの出力をラッチするレジスタ61aと、上記各レジスタ60b,60d,60f,60hの出力をラッチするレジスタ61bと、上記レジスタ61aとレジスタ61bとから入力されるデータを加算する加算器62と、該加算器62の出力をラッチするレジスタ63とからなる。この第2のバタフライ演算回路106は、上記RAC105が出力する、上記行または列ごとに入力される画素データのうちの奇数番目の画素データとFFTにより得られる行列係数との演算結果と、偶数番目の画素データとFFTにより得られる行列係数との演算結果とを加算した値及び減算した値を出力するバタフライ演算を行う。
【0055】
次に、ROMアドレス発生回路104により生成されるROMアドレスについて説明する。このROMアドレス発生回路104は、第1のバタフライ演算回路103の出力により構成されるビット列をそのまま利用して、これにヘッダアドレスを加えることでアドレスとするもので、さらにこのヘッダアドレスを加えた結果得られる全てのアドレスが、連続したアドレスとなるようなヘッダアドレスを付加するものである。このヘッダアドレスは、制御回路101が出力する制御信号が示す、NまたはMの値と、DCT演算または逆DCT演算のいずれを行うかを示す値に基づいて決定される。
【0056】
図4に示すように、N又はMの値が7の場合のDCT演算では、第1のバタフライ演算回路103の各データ線30g,30f,30e,30d,30c,30b,30aから出力される信号A6,A5,A4,A3,A2,A1,A0に基づいて構成される7ビットの信号に、その上位ビットであるA7に0を付加し、さらに、その信号A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、DCT演算を行うことを示す値である0を付加してなる9ビットの信号をROMアドレスとして生成する。
【0057】
同様に、N又はMの値が6の場合のDCT演算には、第1のバタフライ演算回路103の各データ線30f,30e,30d,30c,30b,30aから出力される信号A5,A4,A3,A2,A1,A0に基づいて構成される6ビットの信号に、その上位ビットであるA7,A6にそれぞれ1,0を付加し、N又はMの値が5の場合には、第1のバタフライ演算回路103の各データ線30e,30d,30c,30b,30aから出力される信号A4,A3,A2,A1,A0に基づいて構成される5ビットの信号に、その上位ビットであるA7,A6,A5にそれぞれ1,1,0を付加し、N又はMの値が8の場合には、第1のバタフライ演算回路103のデータ線34a,34b,34c,34d、又はデータ線34e,34f,34g,34hから出力される信号A3,A2,A1,A0に基づいて構成される4ビットの信号に、その上位ビットであるA7,A6,A5,A4にそれぞれ1,1,1,0を付加し、N又はMの値が3の場合には、第1のバタフライ演算回路103の各データ線30c,30b,30aから出力される信号A2,A1,A0に基づいて構成される3ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3にそれぞれ1,1,1,1,0を付加し、N又はMの値が4の場合には、第1のバタフライ演算回路103のデータ線34a,34b、又は34e,34fから出力される信号A1,A0に基づいて構成される2ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3,A2にそれぞれ1,1,1,1,1,0を付加し、N又はMの値が2の場合には、第1のバタフライ演算回路103のデータ線34a、又はデータ線34eから出力される信号A0に基づく1ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3,A2,A1にそれぞれ1,1,1,1,1,1,0を付加し、さらに、上記各A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、DCT演算であることを示す0を付加してなる9ビットの信号をROMアドレスとして生成する。
【0058】
逆DCT演算を行う場合には、各A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、その最上位に1を付加して、ROMアドレスを生成する。
即ち、N又はMの値が7の場合の逆DCT演算では、第1のバタフライ演算回路103の各データ線30g,30f,30e,30d,30c,30b,30aから出力される信号A6,A5,A4,A3,A2,A1,A0に基づいて構成される7ビットの信号に、その上位ビットであるA7に0を付加し、さらに、その信号A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、逆DCT演算であることを示す1を付加してなる9ビットの信号をROMアドレスとして生成する。
【0059】
同様に、N又はMの値が6の場合の逆DCT演算には、第1のバタフライ演算回路103の各データ線30f,30e,30d,30c,30b,30aから出力される信号A5,A4,A3,A2,A1,A0に基づいて構成される6ビットの信号に、その上位ビットであるA7,A6にそれぞれ1,0を付加し、N又はMの値が5の場合には、第1のバタフライ演算回路103の各データ線30e,30d,30c,30b,30aから出力される信号A4,A3,A2,A1,A0に基づいて構成される5ビットの信号に、その上位ビットであるA7,A6,A5にそれぞれ1,1,0を付加し、N又はMの値が8の場合には、第1のバタフライ演算回路103のデータ線30g,30e,30c,30a、又はデータ線30h,30f,30d,30bから出力される信号A3,A2,A1,A0に基づいて構成される4ビットの信号に、その上位ビットであるA7,A6,A5,A4にそれぞれ1,1,1,0を付加し、N又はMの値が3の場合には、第1のバタフライ演算回路103の各データ線30c,30b,30aから出力される信号A2,A1,A0に基づいて構成される3ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3にそれぞれ1,1,1,1,0を付加し、N又はMの値が4の場合には、第1のバタフライ演算回路103のデータ線30c,30a、又はデータ線30d,30bから出力される信号A1,A0に基づいて構成される2ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3,A2にそれぞれ1,1,1,1,1,0を付加し、N又はMの値が2の場合には、第1のバタフライ演算回路103のデータ線30a、又は30bから出力される信号A0に基づく1ビットの信号に、その上位ビットであるA7,A6,A5,A4,A3,A2,A1にそれぞれ1,1,1,1,1,1,0を付加し、さらに、上記各A7,A6,A5,A4,A3,A2,A1,A0からなる8ビットの信号に、逆DCT演算であることを示す1を付加してなる9ビットの信号をROMアドレスとして生成する。
【0060】
ROMアドレス発生回路104においては、以上のようなアドレスを生成することにより、RAC105が有する各ROMに対するアドレスのデータ数を512個とすることができる。但し、図4に示す4個の未使用アドレスのデータ部を含む。
【0061】
図5は、RAC105の各ROMに記録されたROMデータのマップ図である。N又はMが1から8までの場合の、DCT演算又は逆DCT演算を行うための乗算結果が、ROMアドレスに対応して、それぞれROM0,ROM1,ROM2,ROM3,ROM4,ROM5,ROM6,ROM7に記録されている。
【0062】
次に、本DCT演算装置100の動作について説明する。
ここでは、8×7で構成される画素データを入力として、本DCT装置100によりDCT演算を行う場合について説明する。
まず、制御回路101は、入力画素データの個数N又はMと、DCT演算又は逆DCT演算を行うことを示す信号を出力する。この場合は、N=8,M=7,DCT演算を示す信号である。つぎに、ビットスライス回路102は、入力された列方向の8個の画素データを、各画素データのLSBから1ビット毎に出力する。第1のバタフライ演算回路103、N=8を示す信号を受け、式(18)で表されるバタフライ演算を行う。即ち、第1の選択回路31aはデータ線30hを、第2の選択回路31bはデータ線30gを選択する。第1の選択回路31aにより選択されたデータ線30hにより入力された信号と、データ線30aにより入力された信号とを第1の加算回路32aが加算する。また、第2の選択回路31bにより選択されたデータ線30gにより入力された信号と、データ線30bにより入力された信号とを第2の加算回路32bが加算する。さらに、データ線30cとデータ線30dとから入力されるデータを第3の加算回路32cが加算し、データ線30dとデータ線30eとから入力されるデータを第4の加算回路32dが加算する。
【0063】
一方、データ線30dとデータ線30eとから入力される信号を第1の減算回路33aが減算し、データ線30cとデータ線30fとから入力されるデータを第2の減算回路33bが減算する。さらに、上記第2の選択回路31bにより選択されたデータ線30gと、データ線30bとから入力されるデータを第3の減算回路33bが減算し、上記第1の選択回路31aにより選択されたデータ線30hと、データ線30aとから入力されるデータを第4の減算回路33dが減算する。
【0064】
このようにして、第1のバタフライ演算回路103は、バタフライ演算を行う。この演算は、式(18)の右辺に示された、x0+x7,x1+x6,x2+x5,x3+x4.x0−x7,x1−x6,x2−x5,x3−x4の加減算を実行していることとなる。
【0065】
ROMアドレス発生回路104は、上記第1のバタフライ演算回路103の出力に基づいて、ROMアドレス信号を生成して出力する。即ち、ROMアドレス発生回路104は、上記x0+x7,x1+x6,x2+x5,x3+x4を示す信号の順に構成された4ビットの信号に、該4ビットの信号の上位5ビットに01110を付加して、9ビットのROMアドレスを生成する。該ROMアドレスは、RAC105のROM0,ROM2,ROM4,ROM6に出力される。
【0066】
また、ROMアドレス発生回路104は、上記x0−x7,x1−x6,x2−x5,x3−x4を示す信号の順に構成された4ビットの信号に、該4ビットの信号の上位5ビットに01110を付加して、9ビットのROMアドレスを生成する。
【0067】
該ROMアドレスは、RAC105のROM1,ROM3,ROM5,ROM7に出力される。
【0068】
RAC105のROM0,ROM1,ROM2,ROM3,ROM4,ROM5,ROM6,ROM7は、ROMアドレス発生回路104によって生成されたROMアドレスに対応するデータを出力し、該各ROMの出力を累算する累算回路51a,51b,51c,51d,51e,51f,51g,51hは、各ROMの出力を累算して、出力する。これにより、式(18)に示すX0,X2,X4,X6,X1,X3,X5,X7が算出されることとなる。
【0069】
第2のバタフライ演算回路106は、RAC105の各累算回路51a,51b,51c,51d,51e,51f,51g,51hの出力を、DCT演算された8個の画素データとして出力する。即ち、第2のバタフライ演算回路106の各レジスタ60a,60b,60c,60d,60e,60f,60g,60hは、RAC105の各累算回路51a,51b,51c,51d,51e,51f,51g,51hの出力信号をラッチし、入力された順に上記各レジスタから出力する。
【0070】
このようにして、列方向に入力される8個の画素データ毎に一連の演算を7回繰り返し(図6(a))、これにより56個の画素データに対する中間結果を出力して1次元DCT演算を終了する(図6(b))。
【0071】
つぎに、上記56個の中間結果(図6(b))に対し、行方向に7個の画素データ毎に、DCT演算装置100に入力される。この場合は、式(5)に表される演算を実行することとなる。上記と同様の動作で、入力される7個の画素データ毎に一連の演算を8回繰り返し(図6(c))、これにより56個の画素データに対する2次元DCT演算を終了する(図6(d))。
【0072】
なお、この場合には、8個目の画素データは存在しないため、上記ビットスライス回路102は、7個の入力画素データに対応してビットスライス動作を行い、また、RAC105のROM7及び累算回路51hは、動作を行わない。
【0073】
次に、6×4で構成される画素データを入力として、本DCT装置100により逆DCT演算を行う場合について説明する。
まず、制御回路101は、入力画素データの個数N又はMと、DCT演算又は逆DCT演算を行うことを示す信号を出力する。この場合は、N=6,M=4,逆DCT演算を示す信号である。つぎに、ビットスライス回路102は、入力された列方向の6個の画素データを、各画素データのLSBから1ビット毎に出力する。第1のバタフライ演算回路103は、N=6及び逆DCTを示す信号を受け、バタフライ演算を行わずに、入力画素データをそのまま出力する。
【0074】
ROMアドレス発生回路104は、上記第1のバタフライ演算回路103の出力に基づいて、ROMアドレス信号を生成して出力する。
【0075】
N=6の場合は、ROMアドレス発生回路104は、信号A5,A4,A3,A2,A1,A0の順に構成された6ビットの信号に、該6ビットの信号の上位3ビットに110を付加して、9ビットのROMアドレスを生成する。該ROMアドレスは、RAC105のROM0,ROM1,ROM2,ROM3,ROM4,ROM5に出力される。
【0076】
RAC105のROM0,ROM1,ROM2,ROM3,ROM4,ROM5は、ROMアドレス発生回路104によって生成されたROMアドレスに対応するデータを出力し、該各ROMの出力を累算する累算回路51a,51b,51c,51d,51e,51fは、各ROMの出力を累算して、出力する。これにより、式(13)に示すX0,X1,X2,X3,X4,X5が算出されることとなる。
【0077】
なお、RAC105のROM6,ROM7、及び累算回路51g,51hは、対応する入力画素データが存在しないので、動作を行わない。
【0078】
第2のバタフライ演算回路は、N=6及び逆DCT演算を示す制御信号を受け、RAC105の各累算回路51a,51b,51c,51d,51e,51fの出力を、逆DCT演算された6個の画素データとして出力する。即ち、第2のバタフライ演算回路106の各レジスタ60a,60b,60c,60d,60e,60fは、RAC105の各累算回路51a,51b,51c,51d,51e,51fの出力信号をラッチし、入力された順に上記各レジスタから出力する。
【0079】
このようにして、列方向に入力される6個の画素データ毎に一連の演算を4回繰り返し(図7(a))、これにより24個の画素データに対する中間結果を出力して1次元DCT演算を終了する(図7(b))。
【0080】
つぎに、上記24個の中間結果(図7(b))は、行方向に4個の画素データ毎に、DCT演算装置100に入力される。ここでも、上記と同様の動作で、入力される4個の画素データ毎に一連の演算を6回繰り返し(図7(c))、これにより、24個の画素データに対する2次元DCT演算を終了する(図7(d))。
【0081】
即ち、制御回路101は、M=4,逆DCT演算を示す信号を出力する。つぎに、ビットスライス回路102は、入力された行方向の4個の画素データを、各画素データのLSBから1ビット毎に出力する。第1のバタフライ演算回路103は、M=4及び逆DCTを示す信号を受け、バタフライ演算を行わずに、1ビット毎にスライスされた入力画素データをそのまま出力する。
【0082】
ROMアドレス発生回路104は、上記第1のバタフライ演算回路103の出力に基づいて、ROMアドレス信号を生成して出力する。即ち、RAC105のデータ線30c,30a、又はデータ線30d,30bの出力である2ビットの信号に、該2ビットの信号の上位7ビットに0111110を付加して、9ビットのROMアドレスを生成する。該ROMアドレスは、RAC105のROM0,ROM2、又はROM1,ROM3に出力される。
【0083】
RAC105のROM0,ROM1,ROM2,ROM3は、ROMアドレス発生回路104によって生成されたROMアドレスに対応するデータを出力し、該各ROMの出力を累算する累算回路51a,51b,51c,51dは、各ROMの出力を累算して、出力する。
【0084】
第2のバタフライ演算回路は、M=4及び逆DCT演算を示す制御信号を受け、RAC105の各累算回路51a,51b,51c,51dの出力をバタフライ演算して出力する。即ち、RAC105の各累算回路51a,51b,51c,51dの出力を、各レジスタ60a,60b,60c,60dにラッチする。
【0085】
レジスタ61aは、レジスタ60aの出力、レジスタ60cの出力、レジスタ60aの出力、レジスタ60cの出力の順に、データのラッチを4回行う。一方、レジスタ61bは、レジスタ60bの出力、レジスタ60dの出力、レジスタ60bの反転出力、レジスタ60dの反転出力の順に、データのラッチを4回行う。加算器62は、レジスタ61aの出力とレジスタ61bの出力とを順次加算する。これにより、式(22)に示すx0,x1,x2,x3が算出されることとなる。レジスタ63は、上記加算器62の出力を順にラッチして、出力する。
【0086】
このように、本実施の形態1によるDCT演算装置によれば、N又はMの値、及びDCT演算又は逆DCT演算を示す制御信号により、第1のバタフライ演算回路103及び第2のバタフライ演算回路106が行うバタフライ演算を制御し、N又はMの単位ブロックの画素データのDCT演算又は逆DCT演算に対応するROMアドレスを、ROMアドレス発生回路104が生成することにより、一のDCT演算装置で、1から8の任意の整数で構成されるN×M単位ブロックの画素データのDCT演算及び逆DCT演算を行うことができる。これにより、回路面積の小さな上記DCT演算装置を得ることができる。
【0087】
また、第1のバタフライ演算回路103及び第2のバタフライ演算回路106を設け、N又はMの値が2のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にFFTを利用して演算量を減らすことができ、ROMに格納している,DCT演算結果及び逆DCT演算結果を求めるために用いる乗算結果となるデータ、即ちNまたはM画素の入力画素データのそれぞれの1ビットにより構成されるNまたはMビットのビット列と、DCT演算結果及び逆DCT演算結果を求めるために用いる係数とを乗算した部分積の計算結果の量を小さくすることができ、このデータを記録するROMのデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる効果がある。
【0088】
また、FFTを用いることによりROM0〜7内に格納するデータの量を削減することができるが、ROM0〜7を1つのROM内の複数の領域として実現する場合、ROMの全体の容量を削減するためには、削減したデータ部分を詰める必要がある。しかしながら、FFTによりデータ数の削減を行ったデータを、単に削減したデータ部分をそのままの順でつめてROMに格納すると、DA法を用いた場合の特徴の1つである入力データの各ビットをアドレスとするということが不可能となり、入力画素データの各ビットから得られたビット列を並べ替えるための手段が必要となる結果、アドレス生成が複雑化してしまう。これに対して、本実施の形態1においては、ROMアドレス発生回路104が、第1のバタフライ演算回路103から得られたビット列に対してアドレスを生成するために付加するヘッダアドレスとして、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなるようなビット列を用いるようにしたことにより、第1のバタフライ演算回路103からビット列をアドレスの一部としてそのまま利用できるように、かつ、ROM内に無駄な領域が発生しないよう効率よく、データをROM内にマッピングでき、ROM容量を削減することができる。これにより、DCT演算装置の回路面積をより小さくすることができる効果が得られる。
【0089】
実施の形態2.
図10は、本発明の実施の形態2に係るDCT演算装置であり、図において、図1と同一符号は同一または相当する部分を示している。この実施の形態2に係るDCT演算装置200は、上記実施の形態1に係るDCT演算装置100において、第2のバタフライ演算回路に代えて、演算手段の出力を、入力画素データの順序に対応して出力する出力回路206を備えたものとして、DCT演算のみを行うようにしたものである。このDCT演算装置200においては、制御回路101が出力する制御信号にはDCT演算を行うか、逆DCT演算を行うかを示す値が不要となり、ROMアドレス発生回路104が生成するROMアドレスは、DCT演算を行うか、逆DCT演算を行うかを示す値を含める必要がないため、入力画素データをビットスライスしたものに、N又はMの値を示すヘッダアドレスを付加した8ビットのものとする。また、ROM10〜ROM17は、上記実施の形態1において説明したROM0〜ROM7から、逆DCT演算に使用するデータを格納する領域をそれぞれ除いたものである。なお、このDCT演算装置200の動作については、上記実施の形態1に係るDCT演算装置におけるDCT演算を行う動作と同様であるので、ここでは、その説明を省略する。
【0090】
このような実施の形態2においても、上記実施の形態1と同様に、N又はMの値を示す制御信号により、第1のバタフライ演算回路103が行うバタフライ演算を制御し、ROMアドレス発生回路104が第1のバタフライ演算回路103の出力に基づいてN又はMの単位ブロックの画素データのDCT演算に対応するROMアドレスを生成することにより、一のDCT演算装置で、行数または列数が1から8の任意の整数で構成されるN×M単位ブロックの画素データのDCT演算を行うことができ、回路面積の小さな上記DCT演算装置を得ることができる。
【0091】
また、N又はMの値が2のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にFFTを利用して演算量を減らすことができ、DCT演算結果を求めるために用いる乗算結果となるデータを記録するROMのデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる効果がある。
【0092】
また、第1のバタフライ演算回路103から得られたビット列をアドレスの一部としてそのまま利用できるように、かつ、ROM内に無駄な領域が発生しないよう、効率よくデータをROM内にマッピングでき、ROM容量を削減することができ、DCT演算装置の回路面積をより小さくすることができる効果が得られる。
【0093】
実施の形態3.
図11は、本発明の実施の形態3に係るDCT演算装置であり、図において、図1と同一符号は同一または相当する部分を示している。この実施の形態3に係るDCT演算装置300は、上記実施の形態1に係るDCT演算装置100において、第1のバタフライ演算回路を設けないようにし、ビットスライス手段102の出力がROMアドレス発生回路104に直接入力されるようにし、逆DCT演算のみを行うようにしたものである。このDCT演算装置300においては、制御回路101が出力する制御信号にはDCT演算を行うか、逆DCT演算を行うかを示す値が不要となり、ROMアドレス発生回路104は生成するROMアドレスは、DCT演算を行うか、逆DCT演算を行うかを示す値を含める必要がないため、入力画素データをビットスライスしたものに、N又はMの値を示すヘッダアドレスを付加した8ビットのものとする。また、ROM20〜ROM27は、上記実施の形態1において説明したROM0〜ROM7から、DCT演算に使用するデータをそれぞれ除いたものである。なお、このDCT演算装置300の動作については、上記実施の形態1に係るDCT演算装置における逆DCT演算を行う動作と同様であるので、ここでは、その説明を省略する。
【0094】
このような実施の形態3においても、上記実施の形態1と同様に、N又はMの値を示す制御信号により、第2のバタフライ演算回路106が行うバタフライ演算を制御し、ROMアドレス発生回路がビットスライス回路102の出力からN又はMの単位ブロックの画素データの逆DCT演算に対応するROMアドレスを生成することにより、一のDCT演算装置で、行数または列数が1から8の任意の整数で構成されるN×M単位ブロックの画素データの逆DCT演算を行うことができ、回路面積の小さな上記DCT演算装置を得ることができる。
【0095】
また、N又はMの値が2のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にFFTを利用して演算量を減らすことができ、逆DCT演算結果を求めるために用いる乗算結果となるデータを記録するROMのデータ容量を小さくすることができ、回路面積の小さなDCT演算装置を得ることができる効果がある。
【0096】
また、ビットスライス回路102から得られたビット列をアドレスの一部としてそのまま利用できるように、かつ、ROM内に無駄な領域が発生しないよう、効率よくデータをROM内にマッピングでき、ROM容量を削減することができ、DCT演算装置の回路面積をより小さくすることができる効果が得られる。
【0097】
実施の形態4.
図9は本発明の実施の形態4に係るDCT演算装置の構成を示すブロック図であり、図において、ビットスライス回路112は、上記実施の形態1に係るビットスライス回路102の、入力を16ビットの画素データとし、この画素データをスライスする単位を2ビット単位としたものである。また、第1のバラフライ演算回路113は、上記実施の形態1に係る第1のバタフライ演算回路103において、2ビットのデータについてバタフライ演算を行い、2ビット単位で出力するようにしたものである。ROMアドレス発生回路114は、第1のバラフライ演算回路113の出力である2ビットのデータの各ビットにより表わされるアドレスに対して、それぞれヘッダアドレスを付加して、9ビットのアドレスを作成するもので、このヘッダアドレスとしては、上記実施の形態1に係るROMアドレス発生回路104が付加するものと同様のデータ、即ち、第1のバラフライ演算回路113の出力に対してこのヘッダアドレスを付加することによって得られる全てのアドレスが連続したアドレスに並べ替えられるようなビット列を用いる。RAC115は、上記実施の形態1に示したRAC105と同様に、第1のバタフライ演算回路113のビット単位の出力から得られるビット列と上記実施の形態1において式(5)〜式(7)、式(9)、式(12)〜式(14)、式(16)及び式(18)〜式(23)で示した行列演算の係数との部分積の計算結果をテーブルとして保持するROMと、ROMアドレス発生回路114から出力されるアドレスによりこのROMから出力されるデータを累算する累算回路を備えている。ただし、ビットスライス回路112が2ビット単位で画素データをスライスしており、それぞれのビットから得られる2つのアドレスに対する上記部分積の計算結果を個別に保持するテーブルが必要となるため、上記実施の形態1に示したRAC105の、ROM0〜ROM7のそれぞれの代わりに、ROM0〜ROM7と同様の構成を有している、ROM0a〜ROM7aとROM0b〜ROM7bとを1つずつ互いに並列に設けた構成としている。なお、ここでは、ROM0a〜ROM7a及びROM0b〜ROM7b内のデータを16ビットとするが、このデータのビット数は他のビット数であってもよい。累算回路52a〜52hはそれぞれ、ROM0aとROM0bとの出力、ROM1aとROM1bとの出力、ROM2aとROM2bとの出力、ROM3aとROM3bとの出力、ROM4aとROM4bとの出力、ROM5aとROM5bとの出力、ROM6aとROM6bとの出力、ROM7aとROM7bとの出力を、それぞれ16ビットのデータとして入力し、累算した結果を、DCT演算の場合にはDCT演算結果として、また、逆DCT演算の場合には逆DCT演算の結果を求めるために第2のバタフライ演算回路116に入力するデータとして出力する。第2のバタフライ演算回路116は、上記実施の形態1に係る第2のバタフライ演算回路106において、出力するデータを16ビットとしたものである。
【0098】
この実施の形態4に係るDCT演算回路においては、N×M単位ブロックの画像データから行単位、または列単位で入力される画素データを2ビットごとにスライスし、第1のバタフライ演算回路113は、DCT演算を行う場合であって、入力される行または列の画素データ数であるNまたはMが2のべき乗である場合には、上記スライスした2ビットのデータに対して上記実施の形態1と同様のバタフライ演算を行う。また、それ以外の場合には,バタフライ演算を行わない。ROMアドレス発生回路114は第1のバタフライ演算回路113の2ビットごとの複数の出力のうちの各1ビットのデータからそれぞれ構成される2つのビット列にヘッダアドレスを付加して、2つのアドレスを生成し、その一方をROM0a〜ROM7aに、他方をROM0b〜ROM7bに対して出力する。ROM0a〜ROM7b及びROM0b〜ROM7bは入力されるアドレスに対応した、DCT演算または逆DCT演算に用いる部分積の計算結果をそれぞれ出力する。累算回路52a〜52hは並列に設けられたROM同士の出力を累算して出力し、第2のバタフライ演算回路116は逆DCT演算を行う場合であって、入力される行または列の画素データ数であるNまたはMが2のべき乗である場合には、累算回路52a〜52hから出力されるデータに対して上記実施の形態1と同様の逆DCT演算を行って、その演算結果を入力画素データの順序に対応して並び替えて出力し、その他の場合にはバタフライ演算を行わずに、累算回路52a〜52hから出力されるデータを入力がソデータの順序に対応して並び替えて出力する。
【0099】
このような実施の形態4によれば、入力される行または列の画素データ数であるNまたはMが2のべき乗である場合にバタフライ演算を行うようにしたので、行列演算にFFTを利用でき、ROM0a〜ROM7a,ROM0a〜ROM7aに格納するDCT演算及び逆DCT演算を求めるために用いるデータ数を減らすことができ、上記実施の形態1と同様にROM容量を削減できる効果がある。
【0100】
また、第1のバタフライ演算回路113から出力される2ビットからなる複数の画素データのそれぞれのビットにより構成されるアドレスに対して、全てのアドレスが連続して配列されるようにヘッダアドレスを付加するようにしたから、ROM内におけるデータのマッピングを効率よく行うことができ、入力される画素データが16ビットの場合においても、上記実施の形態1と同様に、ROM容量を削減することができる効果がある。
【0101】
なお、上記実施の形態4においては、上記実施の形態1に係るDCT演算装置を、その入力が16ビットとなるように変形したものについて説明したが、本発明においては、上記実施の形態2及び3に係るDCT演算装置において、その入力が16ビットとなるようにするようにしてもよく、このような場合においても、上記実施の形態4と同様の効果を奏する。
【0102】
また、上記実施の形態1〜4においては、ビットスライス回路に入力されるデータが8ビットまたは16ビットとしたが、本発明においては、入力画素データのビット数は何ビットであってもよく、ビットスライス回路によるスライスするビットの単位や、RACに含まれるROMの数を調整することにより、上記各実施の形態と同様の効果を奏する。
【0103】
なお、上記各実施の形態1〜4に係るDCT演算装置において、N又はMの値が8以外、即ちその上限値以外の場合に、未使用となるROM及び累算回路等の手段の動作を停止するようにしてもよい。このようにすることで、不必要なROM及び累算回路等の手段による消費電力を削減することができる。
【0104】
また、上記実施の形態1〜4においては、乗算結果を出力するための手段として、ROMを用いるようにしたが、本発明においては、ROMの代わりに、アドレスが入力されると、これに対応した乗算結果を出力するような組み合わせ回路を用いるようにしてもよく、このような場合においても、上記各実施の形態と同様の効果を奏する。
【0105】
また、上記実施の形態1〜4においては、入力される画像データの単位ブロックが最大8×8画素まで対応できるものについて、説明したが、単位ブロックの最大の大きさは、8×8以外のどのような大きさであってもよく、このような場合においても、単位ブロックの最大の大きさに合わせて、ROMと累算回路との組の数,及び各ROMのサイズ等を増減させることにより、上記各実施の形態と同様の効果を奏する。
【0106】
産業上の利用可能性
以上のように、本発明に係るDCT演算装置は、動画像データの符号化装置、あるいは復号化装置内におけるDCT演算装置として有用であり、特に、MPEG(Moving Picture Coding Experts Group)方式による符号化、または復号化を行う装置内のDCT演算装置に用いるのに適している。
【図面の簡単な説明】
【図1】本発明の実施の形態1によるDCT演算装置の構成を示すブロック図
【図2】本発明の実施の形態1による第1のバタフライ演算回路の内部構成を示す図
【図3】本発明の実施の形態1による第2のバタフライ演算回路の内部構成を示す図
【図4】本発明の実施の形態1によるROMアドレスのマップ図
【図5】本発明の実施の形態1によるROM使用データ容量のマップ図
【図6】本発明の実施の形態1による8×7画素ブロックに対するDCT演算を説明するための概略図
【図7】本発明の実施の形態1による6×4画素ブロックに対する逆DCT演算を説明するための概略図
【図8】従来のDCT演算装置の構成を示すブロック図
【図9】本発明の実施の形態4によるDCT演算装置の構成を示すブロック図
【図10】本発明の実施の形態4によるDCT演算装置の構成を示すブロック図
【図11】本発明の実施の形態4によるDCT演算装置の構成を示すブロック図
Claims (13)
- N×M単位ブロック(N及びMは1から8の任意の整数)の画像データの画素データに対してDA法を用いた1次元のDCT演算又は逆DCT演算を行うDCT演算装置であって、
N×M単位ブロックの画像データの画素データを、行ごとに、または列ごとに入力し、入力された行または列を構成する各画素データをビットごとにスライスして出力するビットスライス手段と、
上記入力される各行または各列を構成する画素データ数である入力画素データ数、及び、DCT演算又は逆DCT演算のいずれを行うかを示す値を含む制御信号を出力する制御手段と、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつDCT演算を行うことを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行い、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力する第1のバタフライ演算手段と、
上記第1のバタフライ演算手段の出力から得られるビット列と、上記制御信号に含まれる入力画素データ数、及びDCT演算または逆DCT演算のいずれを行うかを示す値とに基づいて、アドレスを生成して出力するアドレス発生手段と、
1次元のDCT演算結果及び逆DCT演算結果をもとめるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び該乗算結果出力手段の出力を累算して出力する累算手段、を8組有する演算手段と、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつ逆DCT演算を行うことを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記演算手段の出力を入力画素データの順序に対応して並べ替えて出力する第2のバタフライ演算手段とを備えたことを特徴とするDCT演算装置。 - 請求項1に記載のDCT演算装置において、
上記アドレス発生手段は、
上記第1のバタフライ演算手段の出力と、入力画素データ数と、DCT演算または逆DCT演算のいずれを行うかを示す値とに基づいて生成するアドレスとして、
上記制御信号が、上記入力画素データ数の値が7,6,5,3のいずれかであることを示す場合には、上記第1のバタフライ演算手段の出力に基づいて構成される7,6,5,3ビットの各々のビット列に対し、DCT演算または逆DCT演算のいずれを行うかを示す値を含む、上記入力画素データ数の値を示すための2,3,4,6ビットの各々のヘッダアドレスを付加したアドレスを生成し、
上記制御信号が、上記入力画素データ数が8,4,2のいずれかであることを示す場合であって、かつ、DCT演算を行うことを示す場合には、上記第1のバタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される4,2,1ビットの各々のビット列、及び減算結果に基づいて構成される4,2,1ビットの各々のビット列それぞれに対し、DCT演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための5,7,8ビットの各々のヘッダアドレスを付加したアドレスを生成し、
上記制御信号が、上記入力画素データ数が8,4,2のいずれかであることを示す場合であって、かつ、逆DCT演算を行うことを示す場合には、上記第1のバタフライ演算手段の8,4,2ビットの各々の出力に基づいて構成される4,2,1ビットの各々のビット列に対し、逆DCT演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための5,7,8ビットの各々のヘッダアドレスを付加したアドレスを生成するものであるとともに、
上記ヘッダアドレスとして、上記第1のバタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなるようなビット列を付加するものであることを特徴とするDCT演算装置。 - 請求項1に記載のDCT演算装置において、
上記乗算結果出力手段は、入力画素データとDCT演算及び逆DCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつDCT演算を行うことを示す場合には、高速フーリエ変換に基づいたDCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示し、かつDCT演算を行うことを示す場合には、DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示し、かつ逆DCT演算を行うことを示す場合には、高速フーリエ変換に基づいた逆DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示し、かつ逆DCT演算を行うことを示す場合には、逆DCTの行列演算における、上記第1のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力することを特徴とするDCT演算装置。 - 請求項1に記載のDCT演算装置において、
上記DCT演算装置は、制御信号が入力画素データ数が8以外であることを示す場合に、演算に未使用となる手段の動作を停止するものであることを特徴とするDCT演算装置。 - N×M単位ブロック(N及びMは1以上の任意の整数)の画像データの画素データに対してDA法を用いた1次元のDCT演算を行うDCT演算装置であって、
N×M単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、
上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、
該制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行って、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力するバタフライ演算手段と、
上記バタフライ演算手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、
1次元のDCT演算結果を求めるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、
上記演算手段の出力を、入力される画素データの順序に対応して並べ替えて、1次元のDCT演算結果として出力する出力手段とを備えたことを特徴とするDCT演算装置。 - 請求項5に記載のDCT演算装置において、
上記アドレス発生手段は、
上記バタフライ演算手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、
上記制御信号が、上記入力画素データ数が2のべき乗以外の値であることを示す場合には、上記バタフライ演算手段の出力に基づいて構成される、入力画素データ数と同じビット数となるアドレスに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、
上記制御信号が、上記入力画素データ数が2のべき乗であることを示す場合には、上記バタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列、及び減算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、
上記ヘッダアドレスとして、上記バタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力画素データ数の最大値と同じビット数となるようなビット列を付加するものであることを特徴とするDCT演算装置。 - 請求項5に記載のDCT演算装置において、
上記乗算結果出力手段は、入力画素データとDCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、高速フーリエ変換に基づいたDCTの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示す場合には、DCTの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力することを特徴とするDCT演算装置。 - N×M単位ブロック(N及びMは1以上の任意の整数)の画像データの画素データに対してDA法を用いた1次元の逆DCT演算を行うDCT演算装置であって、
N×M単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、
上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、
上記ビットスライス手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、
上記アドレスに対応して、1次元の逆DCT演算結果を求めるために用いる乗算結果を出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、
該制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記各演算手段の出力を入力される画素データの順序に対応して並べ替えて出力するバタフライ演算手段とを備えたことを特徴とするDCT演算装置。 - 請求項8に記載のDCT演算装置において、
上記アドレス発生手段は、
上記ビットスライス手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、
上記制御信号が、上記入力画素データ数が2のべき乗以外の値であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数と同じビット数となるビット列に対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、
上記制御信号が、上記入力画素データ数が2のべき乗であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、
上記ヘッダアドレスとして、上記ビットスライス手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力される行または列を構成する入力画素データ数の最大値と同じビット数となるようなビット列を付加するものであることを特徴とするDCT演算装置。 - 請求項8に記載のDCT演算装置において、
上記乗算結果出力手段は、入力画素データと逆DCT演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗であることを示す場合には、高速フーリエ変換に基づいた逆DCTの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、2のべき乗以外であることを示す場合には、逆DCTの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力することを特徴とするDCT演算装置。 - 請求項5または請求項8のいずれかに記載のDCT演算装置において、
上記ビットスライス手段に入力される画像データの単位ブロックは、N×M単位ブロック(N,及びMは1から8までの任意の値)であり、
上記演算手段は、乗算結果出力手段と累算手段とを含む組を、上記入力画素データ数の最大値である8組備えたことを特徴とするDCT演算装置。 - 請求項1、請求項5、または第8項のいずれかに記載のDCT演算装置において、
上記ビットスライス手段は、入力される各画素データとして16ビットのデータを入力するとともに、この16ビットのデータを2ビットごとにスライスして出力し、
上記演算手段は、上記各乗算結果出力手段として、互いに並列に設けられた上記乗算結果をそれぞれ出力する2つの乗算結果出力部を備えており、この2つの乗算結果出力部の出力を加算したデータを上記累算手段で累算することを特徴とするDCT演算装置。 - 請求項5または第8項のいずれかに記載のDCT演算装置において、
上記DCT演算手段は、制御信号が、入力画素データ数の値が上記入力画素データ数の最大値以外の値であることを示す場合に、未使用となる手段の動作を停止するものであることを特徴とするDCT演算装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35512398 | 1998-12-14 | ||
PCT/JP1999/007003 WO2000036842A1 (en) | 1998-12-14 | 1999-12-14 | Dct arithmetic device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP3586427B2 true JP3586427B2 (ja) | 2004-11-10 |
Family
ID=18442081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000588974A Expired - Fee Related JP3586427B2 (ja) | 1998-12-14 | 1999-12-14 | Dct演算装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6574648B1 (ja) |
EP (1) | EP1065884A4 (ja) |
JP (1) | JP3586427B2 (ja) |
CN (1) | CN1147155C (ja) |
WO (1) | WO2000036842A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001346213A (ja) * | 2000-06-02 | 2001-12-14 | Nec Corp | 離散コサイン変換装置及びその離散コサイン変換方法 |
US6704759B2 (en) * | 2001-01-19 | 2004-03-09 | Motorola, Inc. | Method and apparatus for compression/decompression and filtering of a signal |
JP2003223433A (ja) * | 2002-01-31 | 2003-08-08 | Matsushita Electric Ind Co Ltd | 直交変換方法、直交変換装置、符号化方法、符号化装置、逆直交変換方法、逆直交変換装置、復号化方法、及び、復号化装置 |
CN1326397C (zh) * | 2003-06-02 | 2007-07-11 | 杭州高特信息技术有限公司 | 一种dct快速变换结构 |
JP4217146B2 (ja) * | 2003-11-21 | 2009-01-28 | 株式会社リコー | スキャナ装置、ビューア装置、画像保護方法、 |
US7487193B2 (en) * | 2004-05-14 | 2009-02-03 | Microsoft Corporation | Fast video codec transform implementations |
JP4704333B2 (ja) * | 2004-06-08 | 2011-06-15 | パナソニック株式会社 | 画像符号化装置および画像復号化装置、ならびにそれらで用いられる集積回路 |
KR100754167B1 (ko) * | 2004-10-06 | 2007-09-03 | 삼성전자주식회사 | 다양한 크기의 블록에 대한 변환/역변환 방법 및 그 장치 |
US7574468B1 (en) * | 2005-03-18 | 2009-08-11 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | Digital signal processor having inverse discrete cosine transform engine for video decoding and partitioned distributed arithmetic multiply/accumulate unit therefor |
US20070009166A1 (en) * | 2005-07-05 | 2007-01-11 | Ju Chi-Cheng | Scalable system for discrete cosine transform and method thereof |
US7724975B2 (en) * | 2006-06-22 | 2010-05-25 | National Chun Cheng University | Design techniques and their circuit designs for versatile and scalable video coding |
US7974370B2 (en) * | 2006-12-27 | 2011-07-05 | Freescale Semiconductor, Inc. | Parallel processing for single antenna interference cancellation |
CN101646080B (zh) * | 2009-06-18 | 2013-09-25 | 杭州高特信息技术有限公司 | 基于avs并行流水idct快速变换的方法和装置 |
CN101989254B (zh) * | 2009-08-05 | 2012-03-14 | 鸿富锦精密工业(深圳)有限公司 | 离散余弦转换及其逆转换电路 |
CN101924937A (zh) * | 2010-07-02 | 2010-12-22 | 上海广播电视台 | MpegII基本流的DCT交流非零系数信息优化搭载方法 |
US9716852B2 (en) * | 2015-04-03 | 2017-07-25 | Semiconductor Energy Laboratory Co., Ltd. | Broadcast system |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4791598A (en) * | 1987-03-24 | 1988-12-13 | Bell Communications Research, Inc. | Two-dimensional discrete cosine transform processor |
JP2501601B2 (ja) | 1987-09-25 | 1996-05-29 | 住友電気工業株式会社 | 液圧ブ―スタ |
US5107345A (en) * | 1990-02-27 | 1992-04-21 | Qualcomm Incorporated | Adaptive block size image compression method and system |
JPH04277932A (ja) * | 1991-03-06 | 1992-10-02 | Nec Corp | 画像データ圧縮装置 |
KR950000386B1 (ko) * | 1992-12-30 | 1995-01-16 | 재단법인 한국전자통신연구소 | 이산여현 변환회로 |
US5345408A (en) * | 1993-04-19 | 1994-09-06 | Gi Corporation | Inverse discrete cosine transform processor |
JP2677969B2 (ja) * | 1993-12-27 | 1997-11-17 | 松下電器産業株式会社 | 直交変換装置 |
JPH09212484A (ja) * | 1996-01-30 | 1997-08-15 | Texas Instr Inc <Ti> | 離散コサイン変換方法 |
JP3129392B2 (ja) * | 1996-02-02 | 2001-01-29 | 日本電気株式会社 | 2次元idct回路 |
US5894430A (en) * | 1996-05-20 | 1999-04-13 | Matsushita Electric Industrial Co., Ltd. | Orthogonal transform processor |
JPH1091615A (ja) * | 1996-09-18 | 1998-04-10 | Hitachi Ltd | 離散コサイン変換/逆変換装置 |
-
1999
- 1999-12-14 JP JP2000588974A patent/JP3586427B2/ja not_active Expired - Fee Related
- 1999-12-14 US US09/601,803 patent/US6574648B1/en not_active Expired - Fee Related
- 1999-12-14 CN CNB998029475A patent/CN1147155C/zh not_active Expired - Fee Related
- 1999-12-14 EP EP99959799A patent/EP1065884A4/en not_active Withdrawn
- 1999-12-14 WO PCT/JP1999/007003 patent/WO2000036842A1/ja not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
CN1147155C (zh) | 2004-04-21 |
CN1290455A (zh) | 2001-04-04 |
EP1065884A1 (en) | 2001-01-03 |
WO2000036842A1 (en) | 2000-06-22 |
EP1065884A4 (en) | 2004-06-16 |
US6574648B1 (en) | 2003-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3586427B2 (ja) | Dct演算装置 | |
US5867601A (en) | Inverse discrete cosine transform processor using parallel processing | |
JP2009177802A (ja) | バタフライプロセッサを使用して離散コサイン変換をエンコードしそして計算するための装置及び方法 | |
JP6357345B2 (ja) | ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法 | |
JP2002358515A5 (ja) | ||
US5805482A (en) | Inverse discrete cosine transform processor having optimum input structure | |
US6938105B2 (en) | Data apparatus and method having DMA circuitry to efficiently transfer multivalued bit-plane data | |
JPH10283343A (ja) | データ処理方法 | |
JP3951036B2 (ja) | 動的小数点方式、動的小数点演算方法、並びに2次元逆離散コサイン変換方法及びその装置 | |
JP2003030174A (ja) | Dct行列分解方法及びdct装置 | |
JP3575991B2 (ja) | 直交変換回路 | |
JPH1083388A (ja) | 直交変換装置 | |
US5801979A (en) | Carry logic that produces a carry value from NLSBs for a ROM accumulator in an inverse discrete cosine transform processor | |
JP3214831B2 (ja) | データ処理装置 | |
JP4405452B2 (ja) | 逆変換回路 | |
JP3362716B2 (ja) | 画像信号の圧縮方法及び装置並びに伸長方法及び装置 | |
JP3895031B2 (ja) | 行列ベクトル乗算器 | |
JPH10322221A (ja) | ディジタル符号化装置およびディジタル復号化装置 | |
JPH05153402A (ja) | 離散コサイン変換器 | |
JP2555937B2 (ja) | 離散コサイン変換回路 | |
JP2004265346A (ja) | 離散コサイン変換装置および逆離散コサイン変換装置 | |
JP2003067360A (ja) | 積和演算方法および積和演算装置 | |
US20050063460A1 (en) | Video predictive decoding method and apparatus | |
JPH1032817A (ja) | 画像復号化装置及び画像復号化方法 | |
JP5588381B2 (ja) | 直交変換処理装置、方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040113 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040315 |
|
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: 20040727 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040806 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |