(57)【特許請求の範囲】
【請求項１】
Ｎ×Ｍ単位ブロック（Ｎ及びＭは１から８の任意の整数）の画像データの画素データに対してＤＡ法を用いた１次元のＤＣＴ演算又は逆ＤＣＴ演算を行うＤＣＴ演算装置であって、
Ｎ×Ｍ単位ブロックの画像データの画素データを、行ごとに、または列ごとに入力し、入力された行または列を構成する各画素データをビットごとにスライスして出力するビットスライス手段と、
上記入力される各行または各列を構成する画素データ数である入力画素データ数、及び、ＤＣＴ演算又は逆ＤＣＴ演算のいずれを行うかを示す値を含む制御信号を出力する制御手段と、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示し、かつＤＣＴ演算を行うことを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行い、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力する第１のバタフライ演算手段と、
上記第１のバタフライ演算手段の出力から得られるビット列と、上記制御信号に含まれる入力画素データ数、及びＤＣＴ演算または逆ＤＣＴ演算のいずれを行うかを示す値とに基づいて、アドレスを生成して出力するアドレス発生手段と、
１次元のＤＣＴ演算結果及び逆ＤＣＴ演算結果をもとめるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び該乗算結果出力手段の出力を累算して出力する累算手段、を８組有する演算手段と、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示し、かつ逆ＤＣＴ演算を行うことを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記演算手段の出力を入力画素データの順序に対応して並べ替えて出力する第２のバタフライ演算手段とを備えたことを特徴とするＤＣＴ演算装置。
【請求項２】
請求項１に記載のＤＣＴ演算装置において、
上記アドレス発生手段は、
上記第１のバタフライ演算手段の出力と、入力画素データ数と、ＤＣＴ演算または逆ＤＣＴ演算のいずれを行うかを示す値とに基づいて生成するアドレスとして、
上記制御信号が、上記入力画素データ数の値が７，６，５，３のいずれかであることを示す場合には、上記第１のバタフライ演算手段の出力に基づいて構成される７，６，５，３ビットの各々のビット列に対し、ＤＣＴ演算または逆ＤＣＴ演算のいずれを行うかを示す値を含む、上記入力画素データ数の値を示すための２，３，４，６ビットの各々のヘッダアドレスを付加したアドレスを生成し、
上記制御信号が、上記入力画素データ数が８，４，２のいずれかであることを示す場合であって、かつ、ＤＣＴ演算を行うことを示す場合には、上記第１のバタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される４，２，１ビットの各々のビット列、及び減算結果に基づいて構成される４，２，１ビットの各々のビット列それぞれに対し、ＤＣＴ演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための５，７，８ビットの各々のヘッダアドレスを付加したアドレスを生成し、
上記制御信号が、上記入力画素データ数が８，４，２のいずれかであることを示す場合であって、かつ、逆ＤＣＴ演算を行うことを示す場合には、上記第１のバタフライ演算手段の８，４，２ビットの各々の出力に基づいて構成される４，２，１ビットの各々のビット列に対し、逆ＤＣＴ演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための５，７，８ビットの各々のヘッダアドレスを付加したアドレスを生成するものであるとともに、
上記ヘッダアドレスとして、上記第１のバタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなるようなビット列を付加するものであることを特徴とするＤＣＴ演算装置。
【請求項３】
請求項１に記載のＤＣＴ演算装置において、
上記乗算結果出力手段は、入力画素データとＤＣＴ演算及び逆ＤＣＴ演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示し、かつＤＣＴ演算を行うことを示す場合には、高速フーリエ変換に基づいたＤＣＴの行列演算における、上記第１のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗以外であることを示し、かつＤＣＴ演算を行うことを示す場合には、ＤＣＴの行列演算における、上記第１のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示し、かつ逆ＤＣＴ演算を行うことを示す場合には、高速フーリエ変換に基づいた逆ＤＣＴの行列演算における、上記第１のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗以外であることを示し、かつ逆ＤＣＴ演算を行うことを示す場合には、逆ＤＣＴの行列演算における、上記第１のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力することを特徴とするＤＣＴ演算装置。
【請求項４】
請求項１に記載のＤＣＴ演算装置において、
上記ＤＣＴ演算装置は、制御信号が入力画素データ数が８以外であることを示す場合に、演算に未使用となる手段の動作を停止するものであることを特徴とするＤＣＴ演算装置。
【請求項５】
Ｎ×Ｍ単位ブロック（Ｎ及びＭは１以上の任意の整数）の画像データの画素データに対してＤＡ法を用いた１次元のＤＣＴ演算を行うＤＣＴ演算装置であって、
Ｎ×Ｍ単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、
上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、
該制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行って、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力するバタフライ演算手段と、
上記バタフライ演算手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、
１次元のＤＣＴ演算結果を求めるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、
上記演算手段の出力を、入力される画素データの順序に対応して並べ替えて、１次元のＤＣＴ演算結果として出力する出力手段とを備えたことを特徴とするＤＣＴ演算装置。
【請求項６】
請求項５に記載のＤＣＴ演算装置において、
上記アドレス発生手段は、
上記バタフライ演算手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、
上記制御信号が、上記入力画素データ数が２のべき乗以外の値であることを示す場合には、上記バタフライ演算手段の出力に基づいて構成される、入力画素データ数と同じビット数となるアドレスに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、
上記制御信号が、上記入力画素データ数が２のべき乗であることを示す場合には、上記バタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列、及び減算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、
上記ヘッダアドレスとして、上記バタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力画素データ数の最大値と同じビット数となるようなビット列を付加するものであることを特徴とするＤＣＴ演算装置。
【請求項７】
請求項５に記載のＤＣＴ演算装置において、
上記乗算結果出力手段は、入力画素データとＤＣＴ演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示す場合には、高速フーリエ変換に基づいたＤＣＴの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗以外であることを示す場合には、ＤＣＴの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力することを特徴とするＤＣＴ演算装置。
【請求項８】
Ｎ×Ｍ単位ブロック（Ｎ及びＭは１以上の任意の整数）の画像データの画素データに対してＤＡ法を用いた１次元の逆ＤＣＴ演算を行うＤＣＴ演算装置であって、
Ｎ×Ｍ単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、
上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、
上記ビットスライス手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、
上記アドレスに対応して、１次元の逆ＤＣＴ演算結果を求めるために用いる乗算結果を出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、
該制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記各演算手段の出力を入力される画素データの順序に対応して並べ替えて出力するバタフライ演算手段とを備えたことを特徴とするＤＣＴ演算装置。
【請求項９】
請求項８に記載のＤＣＴ演算装置において、
上記アドレス発生手段は、
上記ビットスライス手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、
上記制御信号が、上記入力画素データ数が２のべき乗以外の値であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数と同じビット数となるビット列に対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、
上記制御信号が、上記入力画素データ数が２のべき乗であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、
上記ヘッダアドレスとして、上記ビットスライス手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力される行または列を構成する入力画素データ数の最大値と同じビット数となるようなビット列を付加するものであることを特徴とするＤＣＴ演算装置。
【請求項１０】
請求項８に記載のＤＣＴ演算装置において、
上記乗算結果出力手段は、入力画素データと逆ＤＣＴ演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示す場合には、高速フーリエ変換に基づいた逆ＤＣＴの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力し、
上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗以外であることを示す場合には、逆ＤＣＴの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力することを特徴とするＤＣＴ演算装置。
【請求項１１】
請求項５または請求項８のいずれかに記載のＤＣＴ演算装置において、
上記ビットスライス手段に入力される画像データの単位ブロックは、Ｎ×Ｍ単位ブロック（Ｎ，及びＭは１から８までの任意の値）であり、
上記演算手段は、乗算結果出力手段と累算手段とを含む組を、上記入力画素データ数の最大値である８組備えたことを特徴とするＤＣＴ演算装置。
【請求項１２】
請求項１、請求項５、または第８項のいずれかに記載のＤＣＴ演算装置において、
上記ビットスライス手段は、入力される各画素データとして１６ビットのデータを入力するとともに、この１６ビットのデータを２ビットごとにスライスして出力し、
上記演算手段は、上記各乗算結果出力手段として、互いに並列に設けられた上記乗算結果をそれぞれ出力する２つの乗算結果出力部を備えており、この２つの乗算結果出力部の出力を加算したデータを上記累算手段で累算することを特徴とするＤＣＴ演算装置。
【請求項１３】
請求項５または第８項のいずれかに記載のＤＣＴ演算装置において、
上記ＤＣＴ演算手段は、制御信号が、入力画素データ数の値が上記入力画素データ数の最大値以外の値であることを示す場合に、未使用となる手段の動作を停止するものであることを特徴とするＤＣＴ演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
技術分野
本発明は、画像信号処理等の情報圧縮に用いられる離散余弦変換（Ｄｉｓｃｒｅｔｅ Ｃｏｓｉｎｅ Ｔｒａｎｓｆｏｒｍ、以下「ＤＣＴ」という。）を実現するＤＣＴ演算装置に関し、異なる大きさの単位ブロックの画像データに対して、ＤＣＴ演算または逆ＤＣＴ演算の少なくともいずれか一方を行うＤＣＴ演算装置に関する。
【０００２】
【従来の技術】
背景技術
画像信号等の情報圧縮には、ＤＣＴがよく用いられている。動画像における情報圧縮では、一般に、画面内（空間的）相関関係を利用した情報圧縮と、画面間（時間的）相関関係を利用した情報圧縮が行われるが、ＤＣＴは前者に該当するものである。このＤＣＴは、周波数変換法の一種であり、変換前にランダムに分布していた画素値が、変換後には低周波成分に大きな値が集中する性質を利用して、高周波成分を取り除くことにより情報圧縮を行うものである。
【０００３】
ＤＣＴでは、まず、１枚の画像を一定数の画素（例えば８×８）からなる一定形状の複数の単位ブロックに分割し、該単位ブロック毎にＤＣＴ処理を実行している。２次元ＤＣＴは、１次元ＤＣＴを２回行うことにより実行されるものであり、例えば、単位ブロックの列方向に１次元ＤＣＴを行なった後の中間結果に対し、その行方向へ１次元ＤＣＴを行なうことにより実行される。
【０００４】
また、ＤＣＴにより圧縮された画像信号は、逆ＤＣＴにより復号される。
【０００５】
【数１】
0003586427.tif 000002
及び
【０００６】
【数２】
0003586427.tif 000003
は、Ｎ×Ｎの単位ブロックにおける２次元ＤＣＴ、及び２次元逆ＤＣＴを定義したものである。また、
【０００７】
【数３】
0003586427.tif 000004
は、上記式（１）及び式（２）より導かれる１次元ＤＣＴを定義したものである。
【０００８】
ここで、ｘ（ｉ，ｊ）（但し、ｉ，ｊ＝０，１，２，・・・，Ｎ−１）は画素、Ｘ（ｕ，ｖ）（但し、Ｃ（０）＝１／√２、Ｃ（ｕ）＝Ｃ（ｖ）＝１（ｕ，ｖ＝１，２，・・・，Ｎ−１））は変換係数である。
【０００９】
Ｎ＝８の場合、上記式（３）による１次元ＤＣＴの行列演算は、
【００１０】
【数４】
0003586427.tif 000005
の行列式で表される。また、Ｎ＝７，Ｎ＝６，Ｎ＝５，Ｎ＝４，Ｎ＝３，Ｎ＝２の場合は、それぞれ、
【００１１】
【数５】
0003586427.tif 000006
【数６】
0003586427.tif 000007
【数７】
0003586427.tif 000008
【数８】
0003586427.tif 000009
【数９】
0003586427.tif 000010
【数１０】
0003586427.tif 000011
で表される。
【００１２】
一方、１次元逆ＤＣＴの行列演算は、Ｎ＝８の場合は
【００１３】
【数１１】
0003586427.tif 000012
で表され、Ｎ＝７，Ｎ＝６，Ｎ＝５，Ｎ＝４，Ｎ＝３，Ｎ＝２の場合は、それぞれ、
【００１４】
【数１２】
0003586427.tif 000013
【数１３】
0003586427.tif 000014
【数１４】
0003586427.tif 000015
【数１５】
0003586427.tif 000016
【数１６】
0003586427.tif 000017
【数１７】
0003586427.tif 000018
で表される。
【００１５】
図８は、従来のＤＣＴ演算装置の一例を説明するためのものであり、該装置の構成を示すブロック図である。図において、ＤＣＴ演算装置１は、入力画素データをラッチする８ビットの入力レジスタ２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈと、該各入力レジスタ２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈの各出力データをそれぞれラッチした後、各出力データの最下位ビット（以下「ＬＳＢ」という。）から１ビット毎にシフト出力する８ビットのホールディングレジスタ３ａ，３ｂ，３ｃ，３ｄ，３ｅ，３ｆ，３ｇ，３ｈと、上記各ホールディングレジスタ３ａ，３ｂ，３ｃ，３ｄ，３ｅ，３ｆ，３ｇ，３ｈの出力データを８ビットのアドレスとして、ＲＯＭ（リードオンリーメモリ）４１ａ〜４１ｈのデータを累算器４２ａ〜４２ｈで累算して出力するロムアキュームレータ（以下「ＲＡＣ」という。）４ａ，４ｂ，４ｃ，４ｄ，４ｅ，４ｆ，４ｇ，４ｈと、上記各ＲＡＣ４ａ，４ｂ，４ｃ，４ｄ，４ｅ，４ｆ，４ｇ，４ｈの出力データをラッチして出力する出力レジスタ５ａ，５ｂ，５ｃ，５ｄ，５ｅ，５ｆ，５ｇ，５ｈとからなる。
【００１６】
また、上記各ＲＡＣ４ａ，４ｂ，４ｃ，４ｄ，４ｅ，４ｆ，４ｇ，４ｈは、それぞれ、行列演算における列係数に対して、入力される列または行を構成する各画素データの各ビットを乗算したものの和を含む２の８乗個のデータテーブルを有するＲＯＭ４１ａ〜４１ｈと、該ＲＯＭ４１ａ〜４１ｈの出力を累算する累算器４２ａ〜４２ｈとからなる。
【００１７】
この従来の技術のＤＣＴ演算回路は、行列演算にいわゆるＤＡ（ｄｉｓｔｒｉｂｕｔｅｄ ａｒｉｔｈｍｅｔｉｃ）法を使用している。このＤＡ法は、固定係数の積和演算に対して効率的な演算方法で、各入力画素データと固定係数との積和演算を通常のワード単位ではなく、ビット列単位に処理する方法である。各入力画素データのそれぞれのビットにより構成されるビット列をアドレスとして、これに対応する部分積を、予め部分積の計算結果をテーブルとして格納しているＲＯＭから読み出し、ＬＳＢ（Ｌｅａｓｔ Ｓｉｇｎｉｆｉｃａｎｔ Ｂｉｔ：最下位ビット）からＭＳＢ（Ｍｏｓｔ Ｓｉｇｎｉｆｉｃａｎｔ Ｂｉｔ：最上位ビット）までを累算することにより固定係数の積和演算を実現するものである。この従来のＤＣＴ演算回路は、ＮまたはＭ画素の入力画素データのそれぞれの１ビットにより構成されるビット列と、ＤＣＴ係数の行係数とを乗算した部分積の計算結果が、ＤＣＴ係数の各行係数に対応して、ＲＡＣ４ａ〜４ｈのそれぞれのＲＯＭ４１ａ〜４１ｈにテーブルとして格納しており、ＮまたはＭ画素の入力画素データのそれぞれの１ビットにより構成されるＮまたはＭビットのビット列をアドレスとして各ＲＯＭ４１ａ〜４１ｈに入力してやることで、部分積がＲＯＭ４１ａ〜４１ｈから出力され、この部分積を各画素データのＬＳＢからＭＳＢまで順次出力し、累算することで、１次元のＤＣＴ演算結果を得るものである。
【００１８】
次に動作について説明する。
入力レジスタ２ａは、８ビットの入力画素データをラッチし、入力サイクル毎に入力レジスタ２ａから入力レジスタ２ｂへ、入力レジスタ２ｂから入力レジスタ２ｃへと、各入力レジスタ２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈすべてに画素データがラッチされるまでシフト動作を行なう。その後、各入力レジスタ２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈは、それぞれに対応する各ホールディングレジスタ３ａ，３ｂ，３ｃ，３ｄ，３ｅ，３ｆ，３ｇ，３ｈにラッチした画素データを出力する。次の、８個の入力画素データが、各入力レジスタ２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈへラッチされるのと並行して、各ホールディングレジスタ３ａ，３ｂ，３ｃ，３ｄ，３ｅ，３ｆ，３ｇ，３ｈは、ラッチした８ビットの画素データの最下位ビットから、１ビット毎にシフト出力する。各ＲＯＭ４１ａ，４１ｂ，４１ｃ，４１ｄ，４１ｅ，４１ｆ，４１ｇ，４１ｈは、上記ホールディングレジスタ３ａ，３ｂ，３ｃ，３ｄ，３ｅ，３ｆ，３ｇ，３ｈが出力した８ビットのデータをアドレスとして、該アドレスに対応するＲＯＭデータを出力する。各累算器４２ａ，４２ｂ，４２ｃ，４２ｄ，４２ｅ，４２ｆ，４２ｇ，４２ｈは、それぞれに対応するＲＯＭ４１ａ，４１ｂ，４１ｃ，４１ｄ，４１ｅ，４１ｆ，４１ｇ，４１ｈが出力した８ビット分のＲＯＭデータを累算して、即ち、８ビットのデータとして出力する。各ＲＡＣ４ａ，４ｂ，４ｃ，４ｄ，４ｅ，４ｆ，４ｇ，４ｈに対応する出力レジスタ５ａ，５ｂ，５ｃ，５ｄ，５ｅ，５ｆ，５ｇ，５ｈは、上記各累算器４２ａ，４２ｂ，４２ｃ，４２ｄ，４２ｅ，４２ｆ，４２ｇ，４２ｈが出力したデータを、出力レジスタ５ｈから出力レジスタ５ｇへ、出力レジスタ５ｇから出力レジスタ５ｆへと、順次シフト動作を行ない、ラッチされたデータを出力する。
【００１９】
上記ＤＣＴ演算装置１を用いて、例えば８×８を単位ブロックとする画素データの２次元ＤＣＴ演算を行う場合には、まず、列方向の８個の画素データ毎に一連の演算を８回繰り返し行うことで６４個の中間結果を出力し、その後、該６４個の中間結果に対し行方向へ１次元ＤＣＴを行なう。
【００２０】
【発明が解決しようとする課題】
しかし、従来のＤＣＴ演算装置は、例えば８×８を単位ブロックとして１次元ＤＣＴ演算又は逆ＤＣＴ演算を行なう場合には、入力画素データが８ビットであれば２５６個のＲＯＭテーブルデータを８個備え、ＤＣＴ演算及び逆ＤＣＴ演算を１つの装置で行うには５１２個のＲＯＭデータテーブルを８個備えているものであることが必要である。また、近年、画像情報の圧縮の規格によっては、単位ブロックのサイズを可変とする要請があるが、上記ＤＣＴ装置は８×８を単位ブロックとする画素データしか対応できないため、８×８以外の例えば７×７，６×６，５×５，４×４等を単位ブロックとする画素データに対応するには、それぞれ２５６個のＲＯＭテーブルを７個，１２８個のＲＯＭテーブルを６個，６４個のＲＯＭテーブルを５個，３２個のＲＯＭテーブルを４個、備えたＤＣＴ装置を必要とする。従って、Ｎ×Ｍの任意に選択された単位ブロックの画素データに対してＤＣＴ演算及び逆ＤＣＴ演算を行うためには、複数のＤＣＴ演算装置を必要とし、それらの回路面積は非常に大きなものとなるという問題があった。
【００２１】
本発明は、上記の問題を鑑みてなされたものであり、異なるサイズの単位ブロックの画像データに対してＤＣＴ演算又は逆ＤＣＴ演算を行うことができる回路面積の小さいＤＣＴ演算装置を提供することを目的とする。
【００２２】
【発明の実施の形態】
発明の開示
本発明は、Ｎ×Ｍ単位ブロック（Ｎ及びＭは１から８の任意の整数）の画像データの画素データに対してＤＡ法を用いた１次元のＤＣＴ演算又は逆ＤＣＴ演算を行うＤＣＴ演算装置であって、Ｎ×Ｍ単位ブロックの画像データの画素データを、行ごとに、または列ごとに入力し、入力された行または列を構成する各画素データをビットごとにスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数、及び、ＤＣＴ演算又は逆ＤＣＴ演算のいずれを行うかを示す値を含む制御信号を出力する制御手段と、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示し、かつＤＣＴ演算を行うことを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行い、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力する第１のバタフライ演算手段と、上記第１のバタフライ演算手段の出力から得られるビット列と、上記制御信号に含まれる入力画素データ数、及びＤＣＴ演算または逆ＤＣＴ演算のいずれを行うかを示す値とに基づいて、アドレスを生成して出力するアドレス発生手段と、１次元のＤＣＴ演算結果及び逆ＤＣＴ演算結果をもとめるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び該乗算結果出力手段の出力を累算して出力する累算手段、を８組有する演算手段と、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示し、かつ逆ＤＣＴ演算を行うことを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記演算手段の出力を入力画素データの順序に対応して並べ替えて出力する第２のバタフライ演算手段とを備えている。これにより、ＤＣＴ演算結果及び逆ＤＣＴ演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなＤＣＴ演算装置を得ることができる。
【００２３】
また、本発明は、上記アドレス発生手段は、上記第１のバタフライ演算手段の出力と、入力画素データ数と、ＤＣＴ演算または逆ＤＣＴ演算のいずれを行うかを示す値とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数の値が７，６，５，３のいずれかであることを示す場合には、上記第１のバタフライ演算手段の出力に基づいて構成される７，６，５，３ビットの各々のビット列に対し、ＤＣＴ演算または逆ＤＣＴ演算のいずれを行うかを示す値を含む、上記入力画素データ数の値を示すための２，３，４，６ビットの各々のヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が８，４，２のいずれかであることを示す場合であって、かつ、ＤＣＴ演算を行うことを示す場合には、上記第１のバタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される４，２，１ビットの各々のビット列、及び減算結果に基づいて構成される４，２，１ビットの各々のビット列それぞれに対し、ＤＣＴ演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための５，７，８ビットの各々のヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が８，４，２のいずれかであることを示す場合であって、かつ、逆ＤＣＴ演算を行うことを示す場合には、上記第１のバタフライ演算手段の８，４，２ビットの各々の出力に基づいて構成される４，２，１ビットの各々のビット列に対し、逆ＤＣＴ演算を行うことを示すための値を含む、上記入力画素データ数の値を示すための５，７，８ビットの各々のヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記第１のバタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、ＤＣＴ演算装置の回路面積をより小さくすることができる。
【００２４】
また、本発明は、上記乗算結果出力手段は、入力画素データとＤＣＴ演算及び逆ＤＣＴ演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示し、かつＤＣＴ演算を行うことを示す場合には、高速フーリエ変換に基づいたＤＣＴの行列演算における、上記第１のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗以外であることを示し、かつＤＣＴ演算を行うことを示す場合には、ＤＣＴの行列演算における、上記第１のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示し、かつ逆ＤＣＴ演算を行うことを示す場合には、高速フーリエ変換に基づいた逆ＤＣＴの行列演算における、上記第１のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗以外であることを示し、かつ逆ＤＣＴ演算を行うことを示す場合には、逆ＤＣＴの行列演算における、上記第１のバタフライ演算手段の出力から得られるビット列についての乗算結果を出力することとしている。これにより、ＤＣＴ演算装置の回路面積をより小さくすることができる。
【００２５】
また、本発明は、上記ＤＣＴ演算装置は、制御信号が入力画素データ数が８以外であることを示す場合に、演算に未使用となる手段の動作を停止するものとしている。これにより、消費電力を削減できる。
【００２６】
また、本発明は、Ｎ×Ｍ単位ブロック（Ｎ及びＭは１以上の任意の整数）の画像データの画素データに対してＤＡ法を用いた１次元のＤＣＴ演算を行うＤＣＴ演算装置であって、Ｎ×Ｍ単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、該制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示す場合には、上記ビットスライス手段がビットごとにスライスして出力する画素データを、上記入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行って、その演算結果を出力し、その他の場合には、バタフライ演算を行うことなく、上記ビットスライス手段の出力をそのまま出力するバタフライ演算手段と、上記バタフライ演算手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、１次元のＤＣＴ演算結果を求めるために用いる乗算結果を上記アドレスに対応して出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、上記演算手段の出力を、入力される画素データの順序に対応して並べ替えて、１次元のＤＣＴ演算結果として出力する出力手段とを備えている。これにより、ＤＣＴ演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなＤＣＴ演算装置を得ることができる。
【００２７】
また、本発明は、上記アドレス発生手段は、上記第１のバタフライ演算手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数が２のべき乗以外の値であることを示す場合には、上記第１のバタフライ演算手段の出力に基づいて構成される、入力画素データ数と同じビット数となるアドレスに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が２のべき乗であることを示す場合には、上記第１のバタフライ演算手段によりバタフライ演算された加算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列、及び減算結果に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記第１のバタフライ演算手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力画素データ数の最大値と同じビット数となるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、ＤＣＴ演算装置の回路面積をより小さくすることができる。
【００２９】
また、本発明は、上記乗算結果出力手段は、入力画素データとＤＣＴ演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示す場合には、高速フーリエ変換に基づいたＤＣＴの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗以外であることを示す場合には、ＤＣＴの行列演算における、上記バタフライ演算手段の出力から得られるビット列についての乗算結果を出力するものとしている。これにより、ＤＣＴ演算装置の回路面積をより小さくすることができる。
【００３０】
また、本発明は、Ｎ×Ｍ単位ブロック（Ｎ及びＭは１以上の任意の整数）の画像データの画素データに対してＤＡ法を用いた１次元の逆ＤＣＴ演算を行うＤＣＴ演算装置であって、Ｎ×Ｍ単位ブロックの画像データの画素データを行ごとに、または列ごとに入力し、入力される行または列を構成する各画素データをビット毎にスライスして出力するビットスライス手段と、上記入力される各行または各列を構成する画素データ数である入力画素データ数を示す制御信号を出力する制御手段と、上記ビットスライス手段の出力から得られるビット列と上記制御信号に含まれる入力画素データ数とを用いてアドレスを生成して出力するアドレス発生手段と、上記アドレスに対応して、１次元の逆ＤＣＴ演算結果を求めるために用いる乗算結果を出力する乗算結果出力手段、及び上記乗算結果出力手段の出力する乗算結果を累算して出力する累算回路を、上記入力画素データ数の最大値に対応した組数備えた演算手段と、該制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示す場合には、上記演算手段が出力する、上記行または列ごとに入力される画素データのうちの、奇数番目の画素データに基づいて求められた上記乗算結果を累算した値と、偶数番目の画素データに基づいて求められた上記乗算結果を累算した値とを加算した値及び減算した値を出力するバタフライ演算を行い、その演算結果を入力画素データの順序に対応して並べ替えて出力し、その他の場合には、バタフライ演算を行うことなく、上記各演算手段の出力を入力される画素データの順序に対応して並べ替えて出力するバタフライ演算手段とを備えている。これにより、逆ＤＣＴ演算結果を求めるために用いる乗算結果となるデータの量を小さくすることができ、このデータを出力する乗算結果出力手段のデータ容量を小さくすることができ、回路面積の小さなＤＣＴ演算装置を得ることができる。
【００３１】
また、本発明は、上記アドレス発生手段は、上記ビットスライス手段の出力と、上記入力画素データ数とに基づいて生成するアドレスとして、上記制御信号が、上記入力画素データ数が２のべき乗以外の値であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数と同じビット数となるビット列に対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成し、上記制御信号が、上記入力画素データ数が２のべき乗であることを示す場合には、上記ビットスライス手段の出力に基づいて構成される、上記入力画素データ数の半分と同じビット数となるビット列それぞれに対して上記入力画素データ数の値を示すためのヘッダアドレスを付加したアドレスを生成するものであるとともに、上記ヘッダアドレスとして、上記ビットスライス手段の出力に基づいて構成されるアドレスに対して、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなり、かつそのビット数が上記入力される行または列を構成する入力画素データ数の最大値と同じビット数となるようなビット列を付加するものとしている。これにより、乗算結果出力手段内に無駄な領域が発生しないよう効率よく、乗算結果出力手段をマッピングでき、乗算結果出力手段の大きさを削減することができ、ＤＣＴ演算装置の回路面積をより小さくすることができる。
【００３３】
また、本発明は、上記乗算結果出力手段は、入力画素データと逆ＤＣＴ演算の係数との積和演算をビット列単位に処理を行うため、上記アドレス発生手段が生成したアドレスに対応する部分積の乗算結果をテーブルとして格納しており、上記乗算結果として、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗であることを示す場合には、高速フーリエ変換に基づいた逆ＤＣＴの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力し、上記制御手段が出力する制御信号が、上記入力画素データ数が、２のべき乗以外であることを示す場合には、逆ＤＣＴの行列演算における、上記ビットスライス手段から得られるビット列についての乗算結果を出力するものとしている。これにより、ＤＣＴ演算装置の回路面積をより小さくすることができる。
【００３４】
また、本発明は、上記ビットスライス手段に入力される画像データの単位ブロックは、Ｎ×Ｍ単位ブロック（Ｎ，及びＭは１から８までの任意の値）であり、上記演算手段は、乗算結果出力手段と累算手段とを含む組を、上記入力画素データ数の最大値である８組備えている。これにより、ＤＣＴ演算装置の回路面積をより小さくすることができる。
【００３５】
また、本発明は、上記ビットスライス手段は、入力される各画素データとして１６ビットのデータを入力するとともに、この１６ビットのデータを２ビットごとにスライスして出力し、上記演算手段は、上記各乗算結果出力手段として、互いに並列に設けられた上記乗算結果をそれぞれ出力する２つの乗算結果出力部を備えており、この２つの乗算結果出力部の出力を加算したデータを上記累算手段で累算するものとしている。これにより、入力画素データが１６ビットのデータである場合に、ＤＣＴ演算装置の回路面積をより小さくすることができる。
【００３６】
また、本発明は、上記ＤＣＴ演算手段は、制御信号が、入力される行または列を構成する入力画素データ数の値が上記入力画素データ数の最大値以外の値であることを示す場合に、未使用となる手段の動作を停止するものとしている。これにより、消費電力を削減できる。
【００３７】
発明を実施するための最良の形態
実施の形態１．
本実施の形態１によるＤＣＴ装置は、Ｎ×Ｍ（Ｎ，Ｍは１から８の任意の整数）の画素データで構成される単位ブロックの画素データを列ごと，もしくは行ごとに入力していき、これらに対して、ＤＣＴ演算又は逆ＤＣＴ演算を行うとともに、特にＮ又はＭが２のべき乗である場合、即ち、Ｎ＝８，Ｎ＝４，Ｎ＝２である場合には、周波数間引形の高速フーリエ変換（以下、「ＦＦＴ」という。）を利用するものである。
【００３８】
上記ＦＦＴを用いると、上記ＤＣＴの行列演算は、Ｎ＝８の場合は
【００３９】
【数１８】
0003586427.tif 000019
で、Ｎ＝４の場合は
【００４０】
【数１９】
0003586427.tif 000020
で、Ｎ＝２の場合は
【００４１】
【数２０】
0003586427.tif 000021
で表される。一方、逆ＤＣＴの行列演算は、Ｎ＝８の場合は
【００４２】
【数２１】
0003586427.tif 000022
で、Ｎ＝４の場合は
【００４３】
【数２２】
0003586427.tif 000023
で、Ｎ＝２の場合は
【００４４】
【数２３】
0003586427.tif 000024
で表される。
【００４５】
これらの式に示されているように、ＦＦＴを利用することにより、行列演算の演算量を大幅に削減できることがわかる。
【００４６】
本実施の形態１においては、いわゆるバタフライ演算を利用することにより、ＦＦＴをＤＣＴ演算又は逆ＤＣＴ演算の行列式に対して適用できるようにし、ＤＣＴ演算又は逆ＤＣＴ演算を少ない演算量で実行できるようにする。
【００４７】
以下、本ＤＣＴ演算装置の構成について説明する。
図１は、本実施の形態１によるＤＣＴ演算装置を説明するための図であり、該装置の構成を示すブロック図である。図において、ＤＣＴ演算装置１００は、Ｎ×Ｍの単位ブロックを構成する画素データの個数Ｎ及びＭを表す信号を出力する制御回路１０１と、入力された８ビットの各画素データのＬＳＢから１ビット毎にシフト出力を行うビットスライス回路１０２と、該ビットスライス回路１０２の出力に対してバタフライ演算を行う第１のバタフライ演算回路１０３と、該第１のバタフライ演算回路１０３の出力に基づいて、ＲＯＭアドレスを生成するＲＯＭアドレス発生回路１０４と、該ＲＯＭアドレスに対応するＲＯＭデータを読み出して累算するＲＡＣ１０５と、該ＲＡＣ１０５の出力に対してバタフライ演算を行う第２のバタフライ演算回路１０６とからなる。
【００４８】
また、上記ＲＡＣ１０５は、ＤＣＴ演算及び逆ＤＣＴ演算をおこなうためのＲＯＭ０，ＲＯＭ１，ＲＯＭ２，ＲＯＭ３，ＲＯＭ４，ＲＯＭ５，ＲＯＭ６，ＲＯＭ７と、該各ＲＯＭの出力を累算する累算回路５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆ，５１ｇ，５１ｈとからなる。本実施の形態１においては、ＲＯＭ０〜７は１つのＲＯＭ内の複数のＲＯＭ領域である。
【００４９】
このＤＣＴ演算回路は、行列演算にＤＡ法を使用しており、ＤＣＴの行列演算、逆ＤＣＴの行列演算、高速フーリエ変換したＤＣＴの行列演算、及び高速フーリエ変換した逆ＤＣＴの行列演算のそれぞれにおける、第１のバタフライ演算回路１０３の各出力から１ビットごとにデータを取り出すことにより得られるビット列についての乗算結果を、ＲＯＭ０〜ＲＯＭ７のそれぞれにテーブルとして格納しており、第１のバタフライ演算回路１０３の各出力から得られるビット列をアドレスとして各ＲＯＭに入力してやることで、上記乗算結果がＲＯＭから出力され、この乗算結果を各画素データのＬＳＢからＭＳＢまで順次出力し、累算回路５１ａ〜５１ｈで累算して出力することで、行列演算結果を得るものとしている。
【００５０】
なお、上記ＲＯＭ０〜ＲＯＭ７には、上記画素データの数ＮまたはＭが２のべき乗である場合についての乗算結果として、高速フーリエ変換を行ったＤＣＴ及び逆ＤＣＴの行列演算における、第１のバタフライ演算回路１０３の出力から得られるビット列についての乗算結果を格納しており、上記画素データの数ＮまたはＭが２のべき乗以外である場合についての乗算結果として、高速フーリエ変換を行わない通常のＤＣＴ及び逆ＤＣＴの行列演算における、第１のバタフライ演算回路１０３の出力から得られるビット列についての乗算結果を格納している。
【００５１】
即ち、第１のバタフライ演算回路１０３のビット単位の出力から得られるビット列と上述した式（５）〜式（７）、式（９）、式（１２）〜式（１４）、式（１６）及び式（１８）〜式（２３）で示した行列演算の係数との部分積の計算結果がテーブルとしてＲＯＭ０〜ＲＯＭ７に格納されている。
【００５２】
なお、入力画素データ数となるＮまたはＭの値が可変であるため、ＲＯＭと累算回路との組はＮまたはＭの値の最大数の組、ここでは８組設けられている。また、本実施の形態１においては、ＮまたはＭの値が可変であり、ＤＣＴ演算及び逆ＤＣＴ演算に使用する係数も変化するため、各ＲＯＭ０〜ＲＯＭ７には、ＮまたはＭの値が変化した場合に応じた部分積の結果が個別に格納されている。
【００５３】
図２は、上記第１のバタフライ演算回路１０３の内部構成の一例を示すブロック図である。該第１のバタフライ演算回路１０３は、制御信号がＤＣＴ演算を行う場合であって、画素データの個数を示すＮ又はＭが２のべき乗、即ち２，４，８である場合にはバタフライ演算を行い、それ以外の場合にはバタフライ演算を行うことなくデータを出力するものであり、上記ビットスライス回路１０２が出力した各画素データのビット信号を入力とするデータ線３０ａ，３０ｂ，３０ｃ，３０ｄ，３０ｅ，３０ｆ，３０ｇ，３０ｈと、制御信号がＮ又はＭが８であることを示す場合にはデータ線３０ｈを、制御信号がＮ又はＭが４であることを示す場合にはデータ線３０ｄを、制御信号がＮ又はＭが２であることを示す場合にはデータ線３０ｄを選択する第１の選択回路３１ａと、制御信号がＮ又はＭが８であることを示す場合にはデータ線３０ｇを、制御信号がＮ又はＭが４であることを示す場合にはデータ線３０ｃを選択する第２の選択回路３１ｂと、データ線３０ａと第１の選択回路３１ａとから入力されるデータを加算する第１の加算回路３２ａと、データ線３０ｂと第２の選択回路３１ｂとから入力されるデータを加算する第２の加算回路３２ｂと、データ線３０ｃとデータ線３０ｄとから入力されるデータを加算する第３の加算回路３２ｃと、データ線３０ｄとデータ線３０ｅとから入力されるデータを加算する第４の加算回路３２ｄと、データ線３０ｄとデータ線３０ｅとから入力される信号を減算する第１の減算回路３３ａと、データ線３０ｃとデータ線３０ｆとから入力されるデータを減算する第２の減算回路３３ｂと、データ線３０ｂと第２の選択回路３１ｂとから入力されるデータを減算する第３の減算回路３３ｂと、データ線３０ａと第１の選択回路３１ａとから入力されるデータを減算する第４の減算回路３３ｄとからなる。この第１のバタフライ演算回路１０４は、ビットスライス回路１０２に、行または列ごとに入力され、ビットごとにスライスして出力される画素データを、入力される列または行の両端側から内側に向かって順次互いに加算した値、及び順次互いに減算した値を出力するバタフライ演算を行う。
【００５４】
図３は、上記第２のバタフライ演算回路１０６の内部構成の一例を示すブロック図である。該第２のバタフライ演算回路１０６は、制御信号が逆ＤＣＴ演算を行う場合であって、画素データの個数を示すＮ又はＭが２のべき乗、即ち２，４，８である場合にはバタフライ演算を行い、それ以外の場合にはバタフライ演算を行うことなくデータを出力するものであり、上記ＲＡＣ１０５の各累算回路５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆ，５１ｇ，５１ｈの出力をラッチするレジスタ６０ａ，６０ｂ，６０ｃ，６０ｄ，６０ｅ，６０ｆ，６０ｇ，６０ｈと、上記各レジスタ６０ａ，６０ｃ，６０ｅ，６０ｇの出力をラッチするレジスタ６１ａと、上記各レジスタ６０ｂ，６０ｄ，６０ｆ，６０ｈの出力をラッチするレジスタ６１ｂと、上記レジスタ６１ａとレジスタ６１ｂとから入力されるデータを加算する加算器６２と、該加算器６２の出力をラッチするレジスタ６３とからなる。この第２のバタフライ演算回路１０６は、上記ＲＡＣ１０５が出力する、上記行または列ごとに入力される画素データのうちの奇数番目の画素データとＦＦＴにより得られる行列係数との演算結果と、偶数番目の画素データとＦＦＴにより得られる行列係数との演算結果とを加算した値及び減算した値を出力するバタフライ演算を行う。
【００５５】
次に、ＲＯＭアドレス発生回路１０４により生成されるＲＯＭアドレスについて説明する。このＲＯＭアドレス発生回路１０４は、第１のバタフライ演算回路１０３の出力により構成されるビット列をそのまま利用して、これにヘッダアドレスを加えることでアドレスとするもので、さらにこのヘッダアドレスを加えた結果得られる全てのアドレスが、連続したアドレスとなるようなヘッダアドレスを付加するものである。このヘッダアドレスは、制御回路１０１が出力する制御信号が示す、ＮまたはＭの値と、ＤＣＴ演算または逆ＤＣＴ演算のいずれを行うかを示す値に基づいて決定される。
【００５６】
図４に示すように、Ｎ又はＭの値が７の場合のＤＣＴ演算では、第１のバタフライ演算回路１０３の各データ線３０ｇ，３０ｆ，３０ｅ，３０ｄ，３０ｃ，３０ｂ，３０ａから出力される信号Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０に基づいて構成される７ビットの信号に、その上位ビットであるＡ７に０を付加し、さらに、その信号Ａ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０からなる８ビットの信号に、ＤＣＴ演算を行うことを示す値である０を付加してなる９ビットの信号をＲＯＭアドレスとして生成する。
【００５７】
同様に、Ｎ又はＭの値が６の場合のＤＣＴ演算には、第１のバタフライ演算回路１０３の各データ線３０ｆ，３０ｅ，３０ｄ，３０ｃ，３０ｂ，３０ａから出力される信号Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０に基づいて構成される６ビットの信号に、その上位ビットであるＡ７，Ａ６にそれぞれ１，０を付加し、Ｎ又はＭの値が５の場合には、第１のバタフライ演算回路１０３の各データ線３０ｅ，３０ｄ，３０ｃ，３０ｂ，３０ａから出力される信号Ａ４，Ａ３，Ａ２，Ａ１，Ａ０に基づいて構成される５ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５にそれぞれ１，１，０を付加し、Ｎ又はＭの値が８の場合には、第１のバタフライ演算回路１０３のデータ線３４ａ，３４ｂ，３４ｃ，３４ｄ、又はデータ線３４ｅ，３４ｆ，３４ｇ，３４ｈから出力される信号Ａ３，Ａ２，Ａ１，Ａ０に基づいて構成される４ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５，Ａ４にそれぞれ１，１，１，０を付加し、Ｎ又はＭの値が３の場合には、第１のバタフライ演算回路１０３の各データ線３０ｃ，３０ｂ，３０ａから出力される信号Ａ２，Ａ１，Ａ０に基づいて構成される３ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５，Ａ４，Ａ３にそれぞれ１，１，１，１，０を付加し、Ｎ又はＭの値が４の場合には、第１のバタフライ演算回路１０３のデータ線３４ａ，３４ｂ、又は３４ｅ，３４ｆから出力される信号Ａ１，Ａ０に基づいて構成される２ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２にそれぞれ１，１，１，１，１，０を付加し、Ｎ又はＭの値が２の場合には、第１のバタフライ演算回路１０３のデータ線３４ａ、又はデータ線３４ｅから出力される信号Ａ０に基づく１ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１にそれぞれ１，１，１，１，１，１，０を付加し、さらに、上記各Ａ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０からなる８ビットの信号に、ＤＣＴ演算であることを示す０を付加してなる９ビットの信号をＲＯＭアドレスとして生成する。
【００５８】
逆ＤＣＴ演算を行う場合には、各Ａ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０からなる８ビットの信号に、その最上位に１を付加して、ＲＯＭアドレスを生成する。
即ち、Ｎ又はＭの値が７の場合の逆ＤＣＴ演算では、第１のバタフライ演算回路１０３の各データ線３０ｇ，３０ｆ，３０ｅ，３０ｄ，３０ｃ，３０ｂ，３０ａから出力される信号Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０に基づいて構成される７ビットの信号に、その上位ビットであるＡ７に０を付加し、さらに、その信号Ａ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０からなる８ビットの信号に、逆ＤＣＴ演算であることを示す１を付加してなる９ビットの信号をＲＯＭアドレスとして生成する。
【００５９】
同様に、Ｎ又はＭの値が６の場合の逆ＤＣＴ演算には、第１のバタフライ演算回路１０３の各データ線３０ｆ，３０ｅ，３０ｄ，３０ｃ，３０ｂ，３０ａから出力される信号Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０に基づいて構成される６ビットの信号に、その上位ビットであるＡ７，Ａ６にそれぞれ１，０を付加し、Ｎ又はＭの値が５の場合には、第１のバタフライ演算回路１０３の各データ線３０ｅ，３０ｄ，３０ｃ，３０ｂ，３０ａから出力される信号Ａ４，Ａ３，Ａ２，Ａ１，Ａ０に基づいて構成される５ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５にそれぞれ１，１，０を付加し、Ｎ又はＭの値が８の場合には、第１のバタフライ演算回路１０３のデータ線３０ｇ，３０ｅ，３０ｃ，３０ａ、又はデータ線３０ｈ，３０ｆ，３０ｄ，３０ｂから出力される信号Ａ３，Ａ２，Ａ１，Ａ０に基づいて構成される４ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５，Ａ４にそれぞれ１，１，１，０を付加し、Ｎ又はＭの値が３の場合には、第１のバタフライ演算回路１０３の各データ線３０ｃ，３０ｂ，３０ａから出力される信号Ａ２，Ａ１，Ａ０に基づいて構成される３ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５，Ａ４，Ａ３にそれぞれ１，１，１，１，０を付加し、Ｎ又はＭの値が４の場合には、第１のバタフライ演算回路１０３のデータ線３０ｃ，３０ａ、又はデータ線３０ｄ，３０ｂから出力される信号Ａ１，Ａ０に基づいて構成される２ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２にそれぞれ１，１，１，１，１，０を付加し、Ｎ又はＭの値が２の場合には、第１のバタフライ演算回路１０３のデータ線３０ａ、又は３０ｂから出力される信号Ａ０に基づく１ビットの信号に、その上位ビットであるＡ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１にそれぞれ１，１，１，１，１，１，０を付加し、さらに、上記各Ａ７，Ａ６，Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０からなる８ビットの信号に、逆ＤＣＴ演算であることを示す１を付加してなる９ビットの信号をＲＯＭアドレスとして生成する。
【００６０】
ＲＯＭアドレス発生回路１０４においては、以上のようなアドレスを生成することにより、ＲＡＣ１０５が有する各ＲＯＭに対するアドレスのデータ数を５１２個とすることができる。但し、図４に示す４個の未使用アドレスのデータ部を含む。
【００６１】
図５は、ＲＡＣ１０５の各ＲＯＭに記録されたＲＯＭデータのマップ図である。Ｎ又はＭが１から８までの場合の、ＤＣＴ演算又は逆ＤＣＴ演算を行うための乗算結果が、ＲＯＭアドレスに対応して、それぞれＲＯＭ０，ＲＯＭ１，ＲＯＭ２，ＲＯＭ３，ＲＯＭ４，ＲＯＭ５，ＲＯＭ６，ＲＯＭ７に記録されている。
【００６２】
次に、本ＤＣＴ演算装置１００の動作について説明する。
ここでは、８×７で構成される画素データを入力として、本ＤＣＴ装置１００によりＤＣＴ演算を行う場合について説明する。
まず、制御回路１０１は、入力画素データの個数Ｎ又はＭと、ＤＣＴ演算又は逆ＤＣＴ演算を行うことを示す信号を出力する。この場合は、Ｎ＝８，Ｍ＝７，ＤＣＴ演算を示す信号である。つぎに、ビットスライス回路１０２は、入力された列方向の８個の画素データを、各画素データのＬＳＢから１ビット毎に出力する。第１のバタフライ演算回路１０３、Ｎ＝８を示す信号を受け、式（１８）で表されるバタフライ演算を行う。即ち、第１の選択回路３１ａはデータ線３０ｈを、第２の選択回路３１ｂはデータ線３０ｇを選択する。第１の選択回路３１ａにより選択されたデータ線３０ｈにより入力された信号と、データ線３０ａにより入力された信号とを第１の加算回路３２ａが加算する。また、第２の選択回路３１ｂにより選択されたデータ線３０ｇにより入力された信号と、データ線３０ｂにより入力された信号とを第２の加算回路３２ｂが加算する。さらに、データ線３０ｃとデータ線３０ｄとから入力されるデータを第３の加算回路３２ｃが加算し、データ線３０ｄとデータ線３０ｅとから入力されるデータを第４の加算回路３２ｄが加算する。
【００６３】
一方、データ線３０ｄとデータ線３０ｅとから入力される信号を第１の減算回路３３ａが減算し、データ線３０ｃとデータ線３０ｆとから入力されるデータを第２の減算回路３３ｂが減算する。さらに、上記第２の選択回路３１ｂにより選択されたデータ線３０ｇと、データ線３０ｂとから入力されるデータを第３の減算回路３３ｂが減算し、上記第１の選択回路３１ａにより選択されたデータ線３０ｈと、データ線３０ａとから入力されるデータを第４の減算回路３３ｄが減算する。
【００６４】
このようにして、第１のバタフライ演算回路１０３は、バタフライ演算を行う。この演算は、式（１８）の右辺に示された、ｘ０＋ｘ７，ｘ１＋ｘ６，ｘ２＋ｘ５，ｘ３＋ｘ４．ｘ０−ｘ７，ｘ１−ｘ６，ｘ２−ｘ５，ｘ３−ｘ４の加減算を実行していることとなる。
【００６５】
ＲＯＭアドレス発生回路１０４は、上記第１のバタフライ演算回路１０３の出力に基づいて、ＲＯＭアドレス信号を生成して出力する。即ち、ＲＯＭアドレス発生回路１０４は、上記ｘ０＋ｘ７，ｘ１＋ｘ６，ｘ２＋ｘ５，ｘ３＋ｘ４を示す信号の順に構成された４ビットの信号に、該４ビットの信号の上位５ビットに０１１１０を付加して、９ビットのＲＯＭアドレスを生成する。該ＲＯＭアドレスは、ＲＡＣ１０５のＲＯＭ０，ＲＯＭ２，ＲＯＭ４，ＲＯＭ６に出力される。
【００６６】
また、ＲＯＭアドレス発生回路１０４は、上記ｘ０−ｘ７，ｘ１−ｘ６，ｘ２−ｘ５，ｘ３−ｘ４を示す信号の順に構成された４ビットの信号に、該４ビットの信号の上位５ビットに０１１１０を付加して、９ビットのＲＯＭアドレスを生成する。
【００６７】
該ＲＯＭアドレスは、ＲＡＣ１０５のＲＯＭ１，ＲＯＭ３，ＲＯＭ５，ＲＯＭ７に出力される。
【００６８】
ＲＡＣ１０５のＲＯＭ０，ＲＯＭ１，ＲＯＭ２，ＲＯＭ３，ＲＯＭ４，ＲＯＭ５，ＲＯＭ６，ＲＯＭ７は、ＲＯＭアドレス発生回路１０４によって生成されたＲＯＭアドレスに対応するデータを出力し、該各ＲＯＭの出力を累算する累算回路５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆ，５１ｇ，５１ｈは、各ＲＯＭの出力を累算して、出力する。これにより、式（１８）に示すＸ０，Ｘ２，Ｘ４，Ｘ６，Ｘ１，Ｘ３，Ｘ５，Ｘ７が算出されることとなる。
【００６９】
第２のバタフライ演算回路１０６は、ＲＡＣ１０５の各累算回路５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆ，５１ｇ，５１ｈの出力を、ＤＣＴ演算された８個の画素データとして出力する。即ち、第２のバタフライ演算回路１０６の各レジスタ６０ａ，６０ｂ，６０ｃ，６０ｄ，６０ｅ，６０ｆ，６０ｇ，６０ｈは、ＲＡＣ１０５の各累算回路５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆ，５１ｇ，５１ｈの出力信号をラッチし、入力された順に上記各レジスタから出力する。
【００７０】
このようにして、列方向に入力される８個の画素データ毎に一連の演算を７回繰り返し（図６（ａ））、これにより５６個の画素データに対する中間結果を出力して１次元ＤＣＴ演算を終了する（図６（ｂ））。
【００７１】
つぎに、上記５６個の中間結果（図６（ｂ））に対し、行方向に７個の画素データ毎に、ＤＣＴ演算装置１００に入力される。この場合は、式（５）に表される演算を実行することとなる。上記と同様の動作で、入力される７個の画素データ毎に一連の演算を８回繰り返し（図６（ｃ））、これにより５６個の画素データに対する２次元ＤＣＴ演算を終了する（図６（ｄ））。
【００７２】
なお、この場合には、８個目の画素データは存在しないため、上記ビットスライス回路１０２は、７個の入力画素データに対応してビットスライス動作を行い、また、ＲＡＣ１０５のＲＯＭ７及び累算回路５１ｈは、動作を行わない。
【００７３】
次に、６×４で構成される画素データを入力として、本ＤＣＴ装置１００により逆ＤＣＴ演算を行う場合について説明する。
まず、制御回路１０１は、入力画素データの個数Ｎ又はＭと、ＤＣＴ演算又は逆ＤＣＴ演算を行うことを示す信号を出力する。この場合は、Ｎ＝６，Ｍ＝４，逆ＤＣＴ演算を示す信号である。つぎに、ビットスライス回路１０２は、入力された列方向の６個の画素データを、各画素データのＬＳＢから１ビット毎に出力する。第１のバタフライ演算回路１０３は、Ｎ＝６及び逆ＤＣＴを示す信号を受け、バタフライ演算を行わずに、入力画素データをそのまま出力する。
【００７４】
ＲＯＭアドレス発生回路１０４は、上記第１のバタフライ演算回路１０３の出力に基づいて、ＲＯＭアドレス信号を生成して出力する。
【００７５】
Ｎ＝６の場合は、ＲＯＭアドレス発生回路１０４は、信号Ａ５，Ａ４，Ａ３，Ａ２，Ａ１，Ａ０の順に構成された６ビットの信号に、該６ビットの信号の上位３ビットに１１０を付加して、９ビットのＲＯＭアドレスを生成する。該ＲＯＭアドレスは、ＲＡＣ１０５のＲＯＭ０，ＲＯＭ１，ＲＯＭ２，ＲＯＭ３，ＲＯＭ４，ＲＯＭ５に出力される。
【００７６】
ＲＡＣ１０５のＲＯＭ０，ＲＯＭ１，ＲＯＭ２，ＲＯＭ３，ＲＯＭ４，ＲＯＭ５は、ＲＯＭアドレス発生回路１０４によって生成されたＲＯＭアドレスに対応するデータを出力し、該各ＲＯＭの出力を累算する累算回路５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆは、各ＲＯＭの出力を累算して、出力する。これにより、式（１３）に示すＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５が算出されることとなる。
【００７７】
なお、ＲＡＣ１０５のＲＯＭ６，ＲＯＭ７、及び累算回路５１ｇ，５１ｈは、対応する入力画素データが存在しないので、動作を行わない。
【００７８】
第２のバタフライ演算回路は、Ｎ＝６及び逆ＤＣＴ演算を示す制御信号を受け、ＲＡＣ１０５の各累算回路５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆの出力を、逆ＤＣＴ演算された６個の画素データとして出力する。即ち、第２のバタフライ演算回路１０６の各レジスタ６０ａ，６０ｂ，６０ｃ，６０ｄ，６０ｅ，６０ｆは、ＲＡＣ１０５の各累算回路５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆの出力信号をラッチし、入力された順に上記各レジスタから出力する。
【００７９】
このようにして、列方向に入力される６個の画素データ毎に一連の演算を４回繰り返し（図７（ａ））、これにより２４個の画素データに対する中間結果を出力して１次元ＤＣＴ演算を終了する（図７（ｂ））。
【００８０】
つぎに、上記２４個の中間結果（図７（ｂ））は、行方向に４個の画素データ毎に、ＤＣＴ演算装置１００に入力される。ここでも、上記と同様の動作で、入力される４個の画素データ毎に一連の演算を６回繰り返し（図７（ｃ））、これにより、２４個の画素データに対する２次元ＤＣＴ演算を終了する（図７（ｄ））。
【００８１】
即ち、制御回路１０１は、Ｍ＝４，逆ＤＣＴ演算を示す信号を出力する。つぎに、ビットスライス回路１０２は、入力された行方向の４個の画素データを、各画素データのＬＳＢから１ビット毎に出力する。第１のバタフライ演算回路１０３は、Ｍ＝４及び逆ＤＣＴを示す信号を受け、バタフライ演算を行わずに、１ビット毎にスライスされた入力画素データをそのまま出力する。
【００８２】
ＲＯＭアドレス発生回路１０４は、上記第１のバタフライ演算回路１０３の出力に基づいて、ＲＯＭアドレス信号を生成して出力する。即ち、ＲＡＣ１０５のデータ線３０ｃ，３０ａ、又はデータ線３０ｄ，３０ｂの出力である２ビットの信号に、該２ビットの信号の上位７ビットに０１１１１１０を付加して、９ビットのＲＯＭアドレスを生成する。該ＲＯＭアドレスは、ＲＡＣ１０５のＲＯＭ０，ＲＯＭ２、又はＲＯＭ１，ＲＯＭ３に出力される。
【００８３】
ＲＡＣ１０５のＲＯＭ０，ＲＯＭ１，ＲＯＭ２，ＲＯＭ３は、ＲＯＭアドレス発生回路１０４によって生成されたＲＯＭアドレスに対応するデータを出力し、該各ＲＯＭの出力を累算する累算回路５１ａ，５１ｂ，５１ｃ，５１ｄは、各ＲＯＭの出力を累算して、出力する。
【００８４】
第２のバタフライ演算回路は、Ｍ＝４及び逆ＤＣＴ演算を示す制御信号を受け、ＲＡＣ１０５の各累算回路５１ａ，５１ｂ，５１ｃ，５１ｄの出力をバタフライ演算して出力する。即ち、ＲＡＣ１０５の各累算回路５１ａ，５１ｂ，５１ｃ，５１ｄの出力を、各レジスタ６０ａ，６０ｂ，６０ｃ，６０ｄにラッチする。
【００８５】
レジスタ６１ａは、レジスタ６０ａの出力、レジスタ６０ｃの出力、レジスタ６０ａの出力、レジスタ６０ｃの出力の順に、データのラッチを４回行う。一方、レジスタ６１ｂは、レジスタ６０ｂの出力、レジスタ６０ｄの出力、レジスタ６０ｂの反転出力、レジスタ６０ｄの反転出力の順に、データのラッチを４回行う。加算器６２は、レジスタ６１ａの出力とレジスタ６１ｂの出力とを順次加算する。これにより、式（２２）に示すｘ０，ｘ１，ｘ２，ｘ３が算出されることとなる。レジスタ６３は、上記加算器６２の出力を順にラッチして、出力する。
【００８６】
このように、本実施の形態１によるＤＣＴ演算装置によれば、Ｎ又はＭの値、及びＤＣＴ演算又は逆ＤＣＴ演算を示す制御信号により、第１のバタフライ演算回路１０３及び第２のバタフライ演算回路１０６が行うバタフライ演算を制御し、Ｎ又はＭの単位ブロックの画素データのＤＣＴ演算又は逆ＤＣＴ演算に対応するＲＯＭアドレスを、ＲＯＭアドレス発生回路１０４が生成することにより、一のＤＣＴ演算装置で、１から８の任意の整数で構成されるＮ×Ｍ単位ブロックの画素データのＤＣＴ演算及び逆ＤＣＴ演算を行うことができる。これにより、回路面積の小さな上記ＤＣＴ演算装置を得ることができる。
【００８７】
また、第１のバタフライ演算回路１０３及び第２のバタフライ演算回路１０６を設け、Ｎ又はＭの値が２のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にＦＦＴを利用して演算量を減らすことができ、ＲＯＭに格納している，ＤＣＴ演算結果及び逆ＤＣＴ演算結果を求めるために用いる乗算結果となるデータ、即ちＮまたはＭ画素の入力画素データのそれぞれの１ビットにより構成されるＮまたはＭビットのビット列と、ＤＣＴ演算結果及び逆ＤＣＴ演算結果を求めるために用いる係数とを乗算した部分積の計算結果の量を小さくすることができ、このデータを記録するＲＯＭのデータ容量を小さくすることができ、回路面積の小さなＤＣＴ演算装置を得ることができる効果がある。
【００８８】
また、ＦＦＴを用いることによりＲＯＭ０〜７内に格納するデータの量を削減することができるが、ＲＯＭ０〜７を１つのＲＯＭ内の複数の領域として実現する場合、ＲＯＭの全体の容量を削減するためには、削減したデータ部分を詰める必要がある。しかしながら、ＦＦＴによりデータ数の削減を行ったデータを、単に削減したデータ部分をそのままの順でつめてＲＯＭに格納すると、ＤＡ法を用いた場合の特徴の１つである入力データの各ビットをアドレスとするということが不可能となり、入力画素データの各ビットから得られたビット列を並べ替えるための手段が必要となる結果、アドレス生成が複雑化してしまう。これに対して、本実施の形態１においては、ＲＯＭアドレス発生回路１０４が、第１のバタフライ演算回路１０３から得られたビット列に対してアドレスを生成するために付加するヘッダアドレスとして、このヘッダアドレスを付加することによって得られる全てのアドレスが、連続したアドレスとなるようなビット列を用いるようにしたことにより、第１のバタフライ演算回路１０３からビット列をアドレスの一部としてそのまま利用できるように、かつ、ＲＯＭ内に無駄な領域が発生しないよう効率よく、データをＲＯＭ内にマッピングでき、ＲＯＭ容量を削減することができる。これにより、ＤＣＴ演算装置の回路面積をより小さくすることができる効果が得られる。
【００８９】
実施の形態２．
図１０は、本発明の実施の形態２に係るＤＣＴ演算装置であり、図において、図１と同一符号は同一または相当する部分を示している。この実施の形態２に係るＤＣＴ演算装置２００は、上記実施の形態１に係るＤＣＴ演算装置１００において、第２のバタフライ演算回路に代えて、演算手段の出力を、入力画素データの順序に対応して出力する出力回路２０６を備えたものとして、ＤＣＴ演算のみを行うようにしたものである。このＤＣＴ演算装置２００においては、制御回路１０１が出力する制御信号にはＤＣＴ演算を行うか、逆ＤＣＴ演算を行うかを示す値が不要となり、ＲＯＭアドレス発生回路１０４が生成するＲＯＭアドレスは、ＤＣＴ演算を行うか、逆ＤＣＴ演算を行うかを示す値を含める必要がないため、入力画素データをビットスライスしたものに、Ｎ又はＭの値を示すヘッダアドレスを付加した８ビットのものとする。また、ＲＯＭ１０〜ＲＯＭ１７は、上記実施の形態１において説明したＲＯＭ０〜ＲＯＭ７から、逆ＤＣＴ演算に使用するデータを格納する領域をそれぞれ除いたものである。なお、このＤＣＴ演算装置２００の動作については、上記実施の形態１に係るＤＣＴ演算装置におけるＤＣＴ演算を行う動作と同様であるので、ここでは、その説明を省略する。
【００９０】
このような実施の形態２においても、上記実施の形態１と同様に、Ｎ又はＭの値を示す制御信号により、第１のバタフライ演算回路１０３が行うバタフライ演算を制御し、ＲＯＭアドレス発生回路１０４が第１のバタフライ演算回路１０３の出力に基づいてＮ又はＭの単位ブロックの画素データのＤＣＴ演算に対応するＲＯＭアドレスを生成することにより、一のＤＣＴ演算装置で、行数または列数が１から８の任意の整数で構成されるＮ×Ｍ単位ブロックの画素データのＤＣＴ演算を行うことができ、回路面積の小さな上記ＤＣＴ演算装置を得ることができる。
【００９１】
また、Ｎ又はＭの値が２のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にＦＦＴを利用して演算量を減らすことができ、ＤＣＴ演算結果を求めるために用いる乗算結果となるデータを記録するＲＯＭのデータ容量を小さくすることができ、回路面積の小さなＤＣＴ演算装置を得ることができる効果がある。
【００９２】
また、第１のバタフライ演算回路１０３から得られたビット列をアドレスの一部としてそのまま利用できるように、かつ、ＲＯＭ内に無駄な領域が発生しないよう、効率よくデータをＲＯＭ内にマッピングでき、ＲＯＭ容量を削減することができ、ＤＣＴ演算装置の回路面積をより小さくすることができる効果が得られる。
【００９３】
実施の形態３．
図１１は、本発明の実施の形態３に係るＤＣＴ演算装置であり、図において、図１と同一符号は同一または相当する部分を示している。この実施の形態３に係るＤＣＴ演算装置３００は、上記実施の形態１に係るＤＣＴ演算装置１００において、第１のバタフライ演算回路を設けないようにし、ビットスライス手段１０２の出力がＲＯＭアドレス発生回路１０４に直接入力されるようにし、逆ＤＣＴ演算のみを行うようにしたものである。このＤＣＴ演算装置３００においては、制御回路１０１が出力する制御信号にはＤＣＴ演算を行うか、逆ＤＣＴ演算を行うかを示す値が不要となり、ＲＯＭアドレス発生回路１０４は生成するＲＯＭアドレスは、ＤＣＴ演算を行うか、逆ＤＣＴ演算を行うかを示す値を含める必要がないため、入力画素データをビットスライスしたものに、Ｎ又はＭの値を示すヘッダアドレスを付加した８ビットのものとする。また、ＲＯＭ２０〜ＲＯＭ２７は、上記実施の形態１において説明したＲＯＭ０〜ＲＯＭ７から、ＤＣＴ演算に使用するデータをそれぞれ除いたものである。なお、このＤＣＴ演算装置３００の動作については、上記実施の形態１に係るＤＣＴ演算装置における逆ＤＣＴ演算を行う動作と同様であるので、ここでは、その説明を省略する。
【００９４】
このような実施の形態３においても、上記実施の形態１と同様に、Ｎ又はＭの値を示す制御信号により、第２のバタフライ演算回路１０６が行うバタフライ演算を制御し、ＲＯＭアドレス発生回路がビットスライス回路１０２の出力からＮ又はＭの単位ブロックの画素データの逆ＤＣＴ演算に対応するＲＯＭアドレスを生成することにより、一のＤＣＴ演算装置で、行数または列数が１から８の任意の整数で構成されるＮ×Ｍ単位ブロックの画素データの逆ＤＣＴ演算を行うことができ、回路面積の小さな上記ＤＣＴ演算装置を得ることができる。
【００９５】
また、Ｎ又はＭの値が２のべき乗である場合には、バタフライ演算を利用するようにしたので、行列演算にＦＦＴを利用して演算量を減らすことができ、逆ＤＣＴ演算結果を求めるために用いる乗算結果となるデータを記録するＲＯＭのデータ容量を小さくすることができ、回路面積の小さなＤＣＴ演算装置を得ることができる効果がある。
【００９６】
また、ビットスライス回路１０２から得られたビット列をアドレスの一部としてそのまま利用できるように、かつ、ＲＯＭ内に無駄な領域が発生しないよう、効率よくデータをＲＯＭ内にマッピングでき、ＲＯＭ容量を削減することができ、ＤＣＴ演算装置の回路面積をより小さくすることができる効果が得られる。
【００９７】
実施の形態４．
図９は本発明の実施の形態４に係るＤＣＴ演算装置の構成を示すブロック図であり、図において、ビットスライス回路１１２は、上記実施の形態１に係るビットスライス回路１０２の、入力を１６ビットの画素データとし、この画素データをスライスする単位を２ビット単位としたものである。また、第１のバラフライ演算回路１１３は、上記実施の形態１に係る第１のバタフライ演算回路１０３において、２ビットのデータについてバタフライ演算を行い、２ビット単位で出力するようにしたものである。ＲＯＭアドレス発生回路１１４は、第１のバラフライ演算回路１１３の出力である２ビットのデータの各ビットにより表わされるアドレスに対して、それぞれヘッダアドレスを付加して、９ビットのアドレスを作成するもので、このヘッダアドレスとしては、上記実施の形態１に係るＲＯＭアドレス発生回路１０４が付加するものと同様のデータ、即ち、第１のバラフライ演算回路１１３の出力に対してこのヘッダアドレスを付加することによって得られる全てのアドレスが連続したアドレスに並べ替えられるようなビット列を用いる。ＲＡＣ１１５は、上記実施の形態１に示したＲＡＣ１０５と同様に、第１のバタフライ演算回路１１３のビット単位の出力から得られるビット列と上記実施の形態１において式（５）〜式（７）、式（９）、式（１２）〜式（１４）、式（１６）及び式（１８）〜式（２３）で示した行列演算の係数との部分積の計算結果をテーブルとして保持するＲＯＭと、ＲＯＭアドレス発生回路１１４から出力されるアドレスによりこのＲＯＭから出力されるデータを累算する累算回路を備えている。ただし、ビットスライス回路１１２が２ビット単位で画素データをスライスしており、それぞれのビットから得られる２つのアドレスに対する上記部分積の計算結果を個別に保持するテーブルが必要となるため、上記実施の形態１に示したＲＡＣ１０５の、ＲＯＭ０〜ＲＯＭ７のそれぞれの代わりに、ＲＯＭ０〜ＲＯＭ７と同様の構成を有している、ＲＯＭ０ａ〜ＲＯＭ７ａとＲＯＭ０ｂ〜ＲＯＭ７ｂとを１つずつ互いに並列に設けた構成としている。なお、ここでは、ＲＯＭ０ａ〜ＲＯＭ７ａ及びＲＯＭ０ｂ〜ＲＯＭ７ｂ内のデータを１６ビットとするが、このデータのビット数は他のビット数であってもよい。累算回路５２ａ〜５２ｈはそれぞれ、ＲＯＭ０ａとＲＯＭ０ｂとの出力、ＲＯＭ１ａとＲＯＭ１ｂとの出力、ＲＯＭ２ａとＲＯＭ２ｂとの出力、ＲＯＭ３ａとＲＯＭ３ｂとの出力、ＲＯＭ４ａとＲＯＭ４ｂとの出力、ＲＯＭ５ａとＲＯＭ５ｂとの出力、ＲＯＭ６ａとＲＯＭ６ｂとの出力、ＲＯＭ７ａとＲＯＭ７ｂとの出力を、それぞれ１６ビットのデータとして入力し、累算した結果を、ＤＣＴ演算の場合にはＤＣＴ演算結果として、また、逆ＤＣＴ演算の場合には逆ＤＣＴ演算の結果を求めるために第２のバタフライ演算回路１１６に入力するデータとして出力する。第２のバタフライ演算回路１１６は、上記実施の形態１に係る第２のバタフライ演算回路１０６において、出力するデータを１６ビットとしたものである。
【００９８】
この実施の形態４に係るＤＣＴ演算回路においては、Ｎ×Ｍ単位ブロックの画像データから行単位、または列単位で入力される画素データを２ビットごとにスライスし、第１のバタフライ演算回路１１３は、ＤＣＴ演算を行う場合であって、入力される行または列の画素データ数であるＮまたはＭが２のべき乗である場合には、上記スライスした２ビットのデータに対して上記実施の形態１と同様のバタフライ演算を行う。また、それ以外の場合には，バタフライ演算を行わない。ＲＯＭアドレス発生回路１１４は第１のバタフライ演算回路１１３の２ビットごとの複数の出力のうちの各１ビットのデータからそれぞれ構成される２つのビット列にヘッダアドレスを付加して、２つのアドレスを生成し、その一方をＲＯＭ０ａ〜ＲＯＭ７ａに、他方をＲＯＭ０ｂ〜ＲＯＭ７ｂに対して出力する。ＲＯＭ０ａ〜ＲＯＭ７ｂ及びＲＯＭ０ｂ〜ＲＯＭ７ｂは入力されるアドレスに対応した、ＤＣＴ演算または逆ＤＣＴ演算に用いる部分積の計算結果をそれぞれ出力する。累算回路５２ａ〜５２ｈは並列に設けられたＲＯＭ同士の出力を累算して出力し、第２のバタフライ演算回路１１６は逆ＤＣＴ演算を行う場合であって、入力される行または列の画素データ数であるＮまたはＭが２のべき乗である場合には、累算回路５２ａ〜５２ｈから出力されるデータに対して上記実施の形態１と同様の逆ＤＣＴ演算を行って、その演算結果を入力画素データの順序に対応して並び替えて出力し、その他の場合にはバタフライ演算を行わずに、累算回路５２ａ〜５２ｈから出力されるデータを入力がソデータの順序に対応して並び替えて出力する。
【００９９】
このような実施の形態４によれば、入力される行または列の画素データ数であるＮまたはＭが２のべき乗である場合にバタフライ演算を行うようにしたので、行列演算にＦＦＴを利用でき、ＲＯＭ０ａ〜ＲＯＭ７ａ，ＲＯＭ０ａ〜ＲＯＭ７ａに格納するＤＣＴ演算及び逆ＤＣＴ演算を求めるために用いるデータ数を減らすことができ、上記実施の形態１と同様にＲＯＭ容量を削減できる効果がある。
【０１００】
また、第１のバタフライ演算回路１１３から出力される２ビットからなる複数の画素データのそれぞれのビットにより構成されるアドレスに対して、全てのアドレスが連続して配列されるようにヘッダアドレスを付加するようにしたから、ＲＯＭ内におけるデータのマッピングを効率よく行うことができ、入力される画素データが１６ビットの場合においても、上記実施の形態１と同様に、ＲＯＭ容量を削減することができる効果がある。
【０１０１】
なお、上記実施の形態４においては、上記実施の形態１に係るＤＣＴ演算装置を、その入力が１６ビットとなるように変形したものについて説明したが、本発明においては、上記実施の形態２及び３に係るＤＣＴ演算装置において、その入力が１６ビットとなるようにするようにしてもよく、このような場合においても、上記実施の形態４と同様の効果を奏する。
【０１０２】
また、上記実施の形態１〜４においては、ビットスライス回路に入力されるデータが８ビットまたは１６ビットとしたが、本発明においては、入力画素データのビット数は何ビットであってもよく、ビットスライス回路によるスライスするビットの単位や、ＲＡＣに含まれるＲＯＭの数を調整することにより、上記各実施の形態と同様の効果を奏する。
【０１０３】
なお、上記各実施の形態１〜４に係るＤＣＴ演算装置において、Ｎ又はＭの値が８以外、即ちその上限値以外の場合に、未使用となるＲＯＭ及び累算回路等の手段の動作を停止するようにしてもよい。このようにすることで、不必要なＲＯＭ及び累算回路等の手段による消費電力を削減することができる。
【０１０４】
また、上記実施の形態１〜４においては、乗算結果を出力するための手段として、ＲＯＭを用いるようにしたが、本発明においては、ＲＯＭの代わりに、アドレスが入力されると、これに対応した乗算結果を出力するような組み合わせ回路を用いるようにしてもよく、このような場合においても、上記各実施の形態と同様の効果を奏する。
【０１０５】
また、上記実施の形態１〜４においては、入力される画像データの単位ブロックが最大８×８画素まで対応できるものについて、説明したが、単位ブロックの最大の大きさは、８×８以外のどのような大きさであってもよく、このような場合においても、単位ブロックの最大の大きさに合わせて、ＲＯＭと累算回路との組の数，及び各ＲＯＭのサイズ等を増減させることにより、上記各実施の形態と同様の効果を奏する。
【０１０６】
産業上の利用可能性
以上のように、本発明に係るＤＣＴ演算装置は、動画像データの符号化装置、あるいは復号化装置内におけるＤＣＴ演算装置として有用であり、特に、ＭＰＥＧ（Ｍｏｖｉｎｇ Ｐｉｃｔｕｒｅ Ｃｏｄｉｎｇ Ｅｘｐｅｒｔｓ Ｇｒｏｕｐ）方式による符号化、または復号化を行う装置内のＤＣＴ演算装置に用いるのに適している。
【図面の簡単な説明】
【図１】本発明の実施の形態１によるＤＣＴ演算装置の構成を示すブロック図
【図２】本発明の実施の形態１による第１のバタフライ演算回路の内部構成を示す図
【図３】本発明の実施の形態１による第２のバタフライ演算回路の内部構成を示す図
【図４】本発明の実施の形態１によるＲＯＭアドレスのマップ図
【図５】本発明の実施の形態１によるＲＯＭ使用データ容量のマップ図
【図６】本発明の実施の形態１による８×７画素ブロックに対するＤＣＴ演算を説明するための概略図
【図７】本発明の実施の形態１による６×４画素ブロックに対する逆ＤＣＴ演算を説明するための概略図
【図８】従来のＤＣＴ演算装置の構成を示すブロック図
【図９】本発明の実施の形態４によるＤＣＴ演算装置の構成を示すブロック図
【図１０】本発明の実施の形態４によるＤＣＴ演算装置の構成を示すブロック図
【図１１】本発明の実施の形態４によるＤＣＴ演算装置の構成を示すブロック図
【図１】
0003586427.tif 000025
【図２】
0003586427.tif 000026
【図３】
0003586427.tif 000027
【図４】
0003586427.tif 000028
【図５】
0003586427.tif 000029
【図６】
0003586427.tif 000030
【図７】
0003586427.tif 000031
【図８】
0003586427.tif 000032
【図９】
0003586427.tif 000033
【図１０】
0003586427.tif 000034
【図１１】
0003586427.tif 000035