JP2004265346A - 離散コサイン変換装置および逆離散コサイン変換装置 - Google Patents
離散コサイン変換装置および逆離散コサイン変換装置 Download PDFInfo
- Publication number
- JP2004265346A JP2004265346A JP2003057570A JP2003057570A JP2004265346A JP 2004265346 A JP2004265346 A JP 2004265346A JP 2003057570 A JP2003057570 A JP 2003057570A JP 2003057570 A JP2003057570 A JP 2003057570A JP 2004265346 A JP2004265346 A JP 2004265346A
- Authority
- JP
- Japan
- Prior art keywords
- discrete cosine
- data
- multiplication
- input data
- cosine transform
- 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.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】演算速度をより高速化することができる離散コサイン変換装置および逆離散コサイン変換装置を提供する。
【解決手段】離散コサイン変換対象の8点のデータは所定の順番を有しており、ラッチFF1およびFF2には、この順番における先頭からの順番と末尾からの順番とが等しい一対のデータが順次入力される。入力された一対のデータは、加算部10において互いに加算され、減算部20において一方から他方が減算される。加算部10の加算結果および減算部20の減算結果には、乗算部M0〜M7においてそれぞれ所定のコサイン係数が乗算され、この乗算結果が第1の選択部31および第2の選択部32における選択処理、および積算部40における積算処理により、離散コサイン変換係数へ変換される。1対のデータを単位として処理が行われるため、1データ単位の処理に比べて演算を高速できる。
【選択図】 図1
【解決手段】離散コサイン変換対象の8点のデータは所定の順番を有しており、ラッチFF1およびFF2には、この順番における先頭からの順番と末尾からの順番とが等しい一対のデータが順次入力される。入力された一対のデータは、加算部10において互いに加算され、減算部20において一方から他方が減算される。加算部10の加算結果および減算部20の減算結果には、乗算部M0〜M7においてそれぞれ所定のコサイン係数が乗算され、この乗算結果が第1の選択部31および第2の選択部32における選択処理、および積算部40における積算処理により、離散コサイン変換係数へ変換される。1対のデータを単位として処理が行われるため、1データ単位の処理に比べて演算を高速できる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、離散コサイン変換装置および逆離散コサイン変換装置に係り、たとえば、画像データの圧縮・伸張装置に用いられる離散コサイン変換装置および逆離散コサイン変換装置に関するものである。
【0002】
【従来の技術】
一般に自然画像は、隣接する画素間の相関性が高いため、ある微小な領域内で見た場合、画素値の空間的な変動(空間周波数)が比較的小さい。すなわち、周波数領域におけるスペクトル分布が低周波域に偏る傾向がある。このため、周波数領域の画像データを低周波側ほど短い符号長で符号化することにより、データの欠落を抑えながら全体の平均符号長を圧縮することができる。
【0003】
画像圧縮符号化の国際標準化方式であるJPEG(Joint Photographic Experts Group)やMPEG(Moving Picture Experts Group)では、画像データを周波数領域へ変換する方法として、離散コサイン変換(discrete cosine transform)が採用されている。また、周波数領域に変換されたデータを元の空間領域へ戻す方法としては、逆離散コサイン変換(inverse discrete cosine transform)が用いられる。
【0004】
これらの圧縮・伸長方式では、符号化対象の画像データが8×8画素ごとにブロック化され、このブロックを単位として2次元の離散コサイン変換/逆離散コサイン変換が実行される。また、2次元の離散コサイン変換/逆離散コサイン変換は、1次元の離散コサイン変換/逆離散コサイン変換を2回に分けて実行することにより演算可能である。そのため、一般にこれらの方式の圧縮・伸長装置では、8点の1次元離散コサイン変換/逆離散コサイン変換を列方向の8本のデータに対して実行し、得られた実行結果に対して、さらに8点の1次元離散コサイン変換/逆離散コサイン変換を行方向の8本のデータに対して実行することにより、2次元の離散コサイン変換/逆離散コサイン変換を行っている。
【0005】
JPEGおよびMPEGにおいて通常用いられる8点の離散コサイン変換演算は、次式で表される。
【0006】
【数1】
【0007】
また、式(1)に対応する逆離散コサイン変換演算は、次式で表される。
【0008】
【数2】
【0009】
式(1)〜(4)において、記号Auは変換前または後の画像データを、記号axは離散コサイン変換係数を示す。また、記号u、xは0から7までの整数を示す。
【0010】
式(1)および式(3)の右辺におけるコサイン係数
cos{(2x+1)uπ/16}
の絶対値は、余弦関数の性質から、8種類の値を持つ。すなわち、
cos(0π/16)、cos(1π/16)、cos(2π/16)、
cos(3π/16)、cos(4π/16)、cos(5π/16)、
cos(6π/16)、cos(7π/16)、
の何れかの値を持つ。離散コサイン変換/逆離散コサイン変換の演算においては、この8つのコサイン係数と入力データとの積を合成することにより、変換結果(Au、ax)が得られる。
【0011】
たとえば、8つのデータを1つずつ入力し、入力したデータと8つの係数とをそれぞれ乗算し、得られた8つの乗算結果から1つを選択し、これに所定の符号を与えて積算することにより、1つの変換結果(Au、ax)が得られる。
【0012】
図9は、一般的な1次元の離散コサイン変換/逆離散コサイン変換装置の構成の一例を示すブロック図である。
図9に示す離散コサイン変換/逆離散コサイン変換装置は、ラッチFF10と、乗算部M10〜M17と、選択部101と、積算部102とを有する。
【0013】
シリアルに入力される変換元のデータDin(画像データまたは離散コサイン変換係数)は、ラッチFF10において一旦保持される。ラッチFF10に保持されたデータは、乗算部M10〜M17においてそれぞれ係数K0〜K7を乗ぜられる。係数K0〜K7は、上述したコサイン係数を示し、次式で表される。
【0014】
【数3】
【0015】
乗算部M10〜M17において各係数を乗ぜられたデータは、選択部101に入力される。選択部101では、変換結果として出力すべき8つのデータDout0〜Dout7のそれぞれに対して、乗算部M10〜M17の乗算結果が選択される。選択されたデータには、正または負の符号が与えられて、積算部102に出力される。
【0016】
積算部102では、選択部102から出力されるデータがそれぞれ積算される。8つの入力データに対応する選択部101の出力データが全て積算された場合に、その積算結果として、変換結果を示す8つのデータDout0〜Dout7が得られる。
【0017】
図10は、図9に示す離散コサイン変換/逆離散コサイン変換装置の動作を示すタイミング図である。
図10(A)は図示しないクロック信号CLKを示す。ラッチFF10における入力データの保持や、積算部102におけるデータの積算は、このクロック信号CLKに同期して実行される。
また、図10(A)および(B)は、ラッチFF10に入力されるデータとラッチFF10に保持されるデータを示し、図10(C)は、積算部102における積算結果を示す。
【0018】
順次入力されるデータD00,D01,…,D07(図10(B))は、クロック信号CLK(図10(A))に同期して、ラッチFF10に順次保持される(図10(C))。1つのデータがラッチFF10に保持される1クロックサイクルにおいて、乗算部M10〜M17における係数の乗算、選択部101におけるデータの選択と符号の設定、積算部102における累積値との加算が完了し、次のクロックサイクルの始まりにおいて、積算部102の積算結果が更新される(図10(D))。最後の入力データD07に応じて積算部102の積算結果が更新される時点で、離散コサイン変換/逆離散コサイン変換の変換結果が確定する。
【0019】
離散コサイン変換/逆離散コサイン変換装置に関しては、上述した方式の他に、たとえば特許文献1や特許文献2に記載された方式が存在する。
【0020】
【特許文献1】
特許2555937号公報
【特許文献2】
特開2002−91942号公報
【0021】
【発明が解決しようとする課題】
ところで、図9に示す離散コサイン変換/逆離散コサイン変換装置は、特許文献1や特許文献2に記載される方式に比べて構成を簡易化できる利点があるものの、8つの入力データの逐次的な処理によって演算が実行されるため、複数の入力データが並列処理される上記文献の方式に比べて変換速度が低速になる不利益を有する。クロック信号の周波数を上げて動作速度を高速化することも可能であるが、その場合、消費電力が増大してしまう不利益を生じる。
また、選択部101においては8入力1出力のセレクタが8つも必要となるため、さらに構成を簡易化することが望まれる。
【0022】
本発明はかかる事情に鑑みてなされたものであり、その目的は、消費電力の増大を抑えながら、演算速度をより高速化することができる離散コサイン変換装置および逆離散コサイン変換装置を提供することにある。
【0023】
【課題を解決するための手段】
上記の目的を達成するため、本発明の第1の観点の離散コサイン変換装置は、所定の順番を有した複数の入力データと複数のコサイン係数とを乗算して得られるコサイン係数積を合成して、複数の離散コサイン変換データを生成する離散コサイン変換装置であって、上記複数の入力データのうち、先頭からの順番と末尾からの順番とが等しい一対の入力データを互いに加算する加算手段と、この一対の入力データの一方から他方を減算する減算手段と、加算手段の加算結果および減算手段の減算結果にそれぞれコサイン係数を乗算し、コサイン係数積の和として出力する乗算手段とを有する。
【0024】
本発明の第1の観点によれば、加算手段において、先頭からの順番と末尾からの順番とが等しい一対の入力データが互いに加算され、減算手段において、この一対の入力データの一方から他方が減算される。加算手段の加算結果および減算手段の減算結果には、乗算手段においてコサイン係数がそれぞれ乗算され、この乗算結果がコサイン係数積の和として出力される。離散コサイン変換データは、コサイン係数積が合成されることによって生成される。
1対の入力データを単位とした処理によって離散コサイン変換データが生成されるため、個々の入力データを逐次処理することによって離散コサイン変換データが生成される場合に比べて、変換速度を高速化することが可能になる。
【0025】
また、乗算手段は、上記複数のコサイン係数のうち所定の係数グループに含まれるコサイン係数と、加算手段の加算結果とを乗算する第1の乗算手段と、上記複数のコサイン係数のうち所定の係数グループに含まれない残りのコサイン係数と、減算手段の減算結果とを乗算する第2の乗算手段とを含んでも良い。
これにより、加算手段の加算結果および減算手段の減算結果に対して、上記複数のコサイン係数の乗算手段がそれぞれ設けられる場合に比べて、乗算手段の数が削減される。
【0026】
また、第1の観点の離散コサイン変換装置は、第1の選択手段と、第2の選択手段と、積算手段とを有しても良い。
第1の選択手段では、生成すべき上記複数の離散コサイン変換データのうち、所定の変換データ・グループに含まれる離散コサイン変換データのそれぞれに対して、第1の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果が選択される。
第2の選択手段では、生成すべき上記複数の離散コサイン変換データのうち、所定の変換データ・グループに含まれない残りの離散コサイン変換データのそれぞれに対して、第2の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果が選択される。
積算手段では、第1の選択手段および第2の選択手段において選択された乗算結果がそれぞれ積算されて、上記複数の離散コサイン変換データが生成される。
このように、第1の選択手段では第1の乗算手段の乗算結果が、第2の選択手段では第2の乗算手段の乗算結果が、それぞれ選択対象となる。このため、乗算手段の全ての乗算結果が選択対象となる場合に比べて、選択手段における選択対象のデータ数を削減できる。
【0027】
本発明の第2の観点の逆離散コサイン変換装置は、所定の順番を有した複数の入力データと複数のコサイン係数とを乗算して得られるコサイン係数積を合成して、複数の逆離散コサイン変換データを生成する逆離散コサイン変換装置であって、上記複数の入力データのうち、上記順番が1つおきに離れた所定の入力データ・グループに含まれる入力データと上記複数のコサイン係数とをそれぞれ乗算し、コサイン係数積として出力する第1の乗算手段と、上記複数の入力データのうち、所定の入力データ・グループに含まれない残りの入力データと上記複数のコサイン係数とをそれぞれ乗算し、コサイン係数積として出力する第2の乗算手段とを有する。
【0028】
本発明の第2の観点によれば、第1の乗算手段において、上記複数の入力データのうち、上記順番が1つおきに離れた所定の入力データ・グループに含まれる入力データと上記複数のコサイン係数とがそれぞれ乗算され、コサイン係数積として出力される。また、上記複数の入力データのうち、所定の入力データ・グループに含まれない残りの入力データと上記複数のコサイン係数とがそれぞれ乗算され、コサイン係数積として出力される。
所定の入力データ・グループに含まれる入力データと、残りの入力データとに対して、それぞれ並列にコサイン係数積を演算することができるため、個々の入力データを逐次処理することによって逆離散コサイン変換データが生成される場合に比べて、変換速度を高速化することが可能になる。
【0029】
また、第1の乗算手段は、上記複数のコサイン係数のうち所定の係数グループに含まれるコサイン係数と、所定の入力データ・グループに含まれる入力データとを乗算し、第2の乗算手段は、上記複数のコサイン係数のうち所定の係数グループに含まれない残りのコサイン係数と、上記残りの入力データとを乗算しても良い。
これにより、第1の乗算手段および第2の乗算手段において、上記複数のコサイン係数の全てが乗算される場合に比べて、乗算手段の数が削減される。
【0030】
また、本発明の第2の観点の逆離散コサイン変換装置は、第1の選択手段と、第2の選択手段と、積算手段とを有しても良い。
第1の選択手段では、生成すべき上記複数の逆離散コサイン変換のそれぞれに対して、第1の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果が選択される。
第2の選択手段では、生成すべき上記複数の逆離散コサイン変換のそれぞれに対して、第2の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果が選択される。
積算手段では、第1の選択手段において選択された乗算結果と、第2の選択手段において選択された乗算結果との和がそれぞれ積算されて、上記複数の逆離散コサイン変換データが生成される。
【0031】
【発明の実施の形態】
<第1の実施形態>
図1は、本発明の第1の実施形態に係る離散コサイン変換装置の構成の一例を示すブロック図である。
図1に示す離散コサイン変換装置は、ラッチFF1、FF2と、加算部10と、減算部20と、乗算部M0〜M7と、第1の選択部31および第2の選択部32と、積算部40とを有する。
加算部10は、本発明の加算手段の一実施形態である。
減算部20は、本発明の減算手段の一実施形態である。
乗算部M0〜M3を含むユニットは、本発明の第1の乗算手段の一実施形態である。
乗算部M4〜M7を含むユニットは、本発明の第2の乗算手段の一実施形態である。
第1の選択部31は、本発明の第1の選択手段の一実施形態である。
第2の選択部32は、本発明の第2の選択手段の一実施形態である。
積算部40は、本発明の積算手段の一実施形態である。
ラッチFF1、FF2は、本発明のデータ保持手段の一実施形態である。
【0032】
(ラッチFF1、FF2)
ラッチFF1およびFF2は、図示しないクロック信号CLKに同期して、1対のデータを順次入力して保持し、保持したデータを加算部10および減算部20に出力する。
すなわち、式(1)に示すデータaxを、
(a0,a7)、
(a1,a6)、
(a2,a5)、
(a3,a4)、
の組み合わせで順次入力し、加算部10および減算部20に出力する。
【0033】
このデータの組み合わせは、データa0,a1,…,a7の順にデータを並べた場合における先頭からの順番と末尾からの順番とが等しくなる組み合わせである。たとえば、データa2は先頭のデータ(a0)から数えて3番目、データa5は末尾のデータ(a7)から数えて3番目のデータであり、両者の順番は等しい。
【0034】
(加算部10、減算部20)
加算部10は、ラッチFF1およびFF2に保持された一対のデータを互いに加算する。
減算部20は、ラッチFF1およびFF2に保持された一対のデータの一方から他方を減算する。たとえば、ラッチFF1に保持されたデータからラッチFF2に保持されたデータを減算する。
【0035】
(乗算部M0〜M7)
乗算部M0〜M3は、加算部10の加算結果S10と、式(5)に示すコサイン係数K0、K2、K4、K6とを乗算し、その乗算結果S_K0、S_K2、S_K4、S_K6を第1の選択部31に出力する。
乗算部M4〜M7は、減算部20の減算結果S20と、式(5)に示すコサイン係数K1、K3、K5、K7とを乗算し、その乗算結果S_K1、S_K3、s_K5、S_K7を第2の選択部32に出力する。
【0036】
(第1の選択部31、第2の選択部32)
第1の選択部31は、離散コサイン変換の結果として生成すべき離散コサイン変換データA0、A2、A4、A6のそれぞれに対して、乗算部M0〜M3から出力される乗算結果S_K0、S_K2、S_K4、S_K6の中から、乗算元の入力データの順番に応じた乗算結果を選択し、その選択結果S_u0、S_u2、S_u4、S_u6を積算部40に出力する。
【0037】
ここでいう入力データの順番とは、離散コサイン変換の対象となる1次元データの配列順序を示し、式(1)における変数xの値に対応する。第1の選択部31は、入力データの変数xの値に応じて、すなわち、乗算元の入力データの組が(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて、乗算結果の選択を行う。
【0038】
また第1の選択部31は、選択する乗算結果に対して、乗算元の入力データの順番に応じた符号(正または負)を与える。すなわち、乗算元の入力データの組が(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて、選択する乗算結果に正または負の符号を与える。
【0039】
図2は、第1の選択部31の構成の一例を示すブロック図である。
図2の例において、第1の選択部31は、選択部311〜314と、符号設定部315〜318とを有する。
【0040】
選択部311〜314は、乗算結果S_K0、S_K2、S_K4、S_K6の中から、それぞれ1つの乗算結果を選択する。何れの乗算結果を選択するかは、乗算元の入力データの組が(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて決定する。
【0041】
符号設定部315〜318は、選択部311〜314において選択された乗算結果に対して、正または負の符号を与える。たとえば、正の符号を与える場合には、入力されるデータをそのまま出力し、負の符号を与える場合には、入力されるデータを2の補数形式の負数に変換して出力する。
なお、正または負の何れに設定するかは、乗算元の入力データの組が(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて決定する。
【0042】
以上は、第1の選択部31の説明であるが、第2の選択部32においても同様な選択動作が行われる。
すなわち、選択部32は、離散コサイン変換の結果として生成すべき離散コサイン変換データA1、A3、A5、A7のそれぞれに対して、乗算部M4〜M7から出力される乗算結果S_K1、S_K3、S_K5、S_K7の中から、乗算元の入力データの順番に応じた乗算結果を選択し、当該順番に応じた正または負の符号を与えて、選択結果S_u1、S_u3、S_u5、S_u7として積算部40に出力する。
第2の選択部32についても、図2と同様な構成で実現可能である。
【0043】
(積算部40)
積算部40は、第1の選択部31および第2の選択部32において選択された乗算結果をそれぞれ積算して、式(1)に示す離散コサイン変換データA0〜A7を生成する。
【0044】
図3は、積算部40の構成の一例を示すブロック図である。
図3の例において、積算部40は、加算部401〜408と、ラッチ409、4010〜4016とを有する。
加算部401,…,408は、ラッチ409,4010…,4016の保持データと、選択部の選択結果S_u0,…S_u7とを入力する。そして、入力したデータを互いに加算し、その加算結果をラッチ409,4010,…,4016へ出力する。
ラッチ409,4010,…,4016は、加算部401,…,408における加算結果を図示しないクロック信号CLKに同期して保持する。
【0045】
積算が開始される前に、初期化信号CLRによってラッチ(409、4010〜4016)の保持データはゼロに初期化される。この状態で、選択部の選択結果(S_u0〜S_u7)が順次入力されると、加算部(401〜408)において、ラッチ(409、4010〜4016)に保持された累積値に選択結果(S_u0〜S_u7)が加算され、この加算結果が新たな累積値としてラッチ(409、4010〜4016)に保持される。結果として、ラッチ(409、4010〜4016)には、それぞれの選択結果(S_u0〜S_u7)を積算した値が保持される。この積算値が、離散コサイン変換データ(A0〜A7)として、ラッチ(409、4010〜4016)から出力される。
【0046】
ここで、上述した構成を有する図1に示す離散コサイン変換装置の動作について、入力データの組み合わせと係数Knとの関係を示す表1および表2を参照しながら説明する。
以下に示す表1は、式(1)におけるコサイン係数
cos{(2x+1)uπ/16}
の値と、変数xおよびuとの関係を示す表である。この表において、コサイン係数の値は、式(5)で計算される係数Knに符号を付して示している。
【0047】
【表1】
【0048】
また、以下に示す表2は、表1において、変数xの並びを上から順に、
0,7,1,6,2,5,3,4;
という順番に並べ替えたものである。
【0049】
【表2】
【0050】
表2を見ると、
x=0,7の場合、
x=1,6の場合、
x=2,5の場合、
x=3,4の場合、
のそれぞれにおいて、変数uが同一値のとき、コサイン係数の絶対値が等しくなっている。
また、この場合、変数uが偶数のコサイン係数は、符号が互いに等しくなっており、変数uが奇数のコサイン係数は、符号が互いに異なっている。
さらに、変数uが偶数のコサイン係数の値は、絶対値が係数K0、K2、K4またはK6と等しく、変数uが奇数のコサイン係数の値は、絶対値が係数K1、K3、K5またはK7と等しい。
【0051】
コサイン係数を乗ぜられた後のデータは、式(1)に示すように、最終的には積算されるため、上述した組み合わせのデータについては、コサイン係数の乗算前に加算または減算を行ってから積算しても、個々の乗算結果を合算する場合と同一の積算値を得ることができる。
【0052】
そこで、図1に示す離散コサイン変換装置では、変数uが偶数の離散コサイン変換データA0、A2、A4、A6を生成するために、まず加算部10において、上述した組み合わせで入力されるデータの加算が行われる。
その加算結果S10には、乗算部M0〜M3において、4種類の係数K0、K2、K4、K6が乗ぜられる。
第1の選択部31では、入力データの組が、(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて、これら4つの乗算結果のうちの1つが、生成すべき離散コサイン変換データA0、A2、A4、A6のそれぞれに対して選択され、正または負の符号を与えられて出力される。
第1の選択部31の選択結果S_u0、S_u2、S_u4、S_u6は、それぞれ積算部40に入力され、離散コサイン変換データA0、A2、A4、A6を生成するために積算される。
【0053】
また、変数uが奇数の離散コサイン変換データA1、A3、A5、A7を生成するために、まず減算部20において、上述した組み合わせで入力されるデータの減算が行われる。
その減算結果S20には、乗算部M4〜M7において、4種類の係数K1、K3、K5、K7が乗ぜられる。
第2の選択部32では、入力データの組が、(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて、これら4つの乗算結果のうちの1つが、生成すべき離散コサイン変換データA1、A3、A5、A7のそれぞれに対して選択され、正または負の符号を与えられて出力される。
第2の選択部32の選択結果S_u1、S_u3、S_u5、S_u7は、それぞれ積算部40に入力され、離散コサイン変換データA1、A3、A5、A7を生成するために積算される。
【0054】
図4は、図1に示す離散コサイン変換装置の動作を示すタイミング図である。図4(A)はクロック信号CLKを、図4(B)および図4(D)はラッチFF1の入力データおよび保持データを、図4(C)および図4(E)はラッチFF2の入力データおよび保持データを、図4(F)は積算部40における積算結果を示す。
【0055】
図4におけるデータD00,D01,…,D07は、式(1)におけるデータa0,a1,…a7にそれぞれ対応する。離散コサイン変換装置には、これらのデータが上述した組み合わせ、すなわち(D00,D07)、(D01,D06)、(D02,D05)、(D03,D04)の組み合わせで入力される。
入力されるデータ(図4(B)および図4(C))は、クロック信号CLK(図4(A))に同期して、ラッチFF1およびFF2に順次保持される(図4(D)および図4(E))。1組のデータがラッチFF1およびFF2に保持される1クロックサイクルにおいて、乗算部M0〜M7における係数の乗算、第1の選択部31および第2の選択部32におけるデータの選択と符号の設定、積算部40における累積値との加算が完了し、次のクロックサイクルの始まりにおいて、積算部40の積算結果が更新される(図4(F))。最後の入力データ(D03,D04)に応じて積算部40の積算結果が更新される時点で、離散コサイン変換の変換結果が確定する。
【0056】
以上説明したように、図1に示す離散コサイン変換装置によれば、離散コサイン変換対象となる8のデータが2つずつ処理されて離散コサイン変換データの生成が行われるため、1つずつデータが処理される図9に示す離散コサイン変換装置に比べて、変換速度を高速化することができる。
図4および図10のタイミング図を比較して分かるように、図9に示す離散コサイン変換装置では、ラッチFF10に入力データが保持されてから変換結果Doutが確定するまでに9クロックサイクルを要するのに対して、図1に示す離散コサイン変換装置では5クロックサイクルで変換結果が確定する。すなわち、変換速度を約2倍に高速化することができる。
【0057】
また、変換速度を同等にして両者を比較すると、図1に示す離散コサイン変換装置ではクロック周波数を下げたり電源電圧を低くしたりすることが可能なため、消費電力を大幅に削減することができる。
【0058】
また、図1に示す離散コサイン変換装置では、図9に示す離散コサイン変換装置に対して、入力データのラッチや、加算部10、減算部20の回路が追加されるのみである。
さらに、図9における選択部101と図1における選択部31、32とを比較すると、前者では8つの出力においてそれぞれ8対1の選択が行われるのに対し、後者では8つの出力においてそれぞれ4対1の選択が行われる。すなわち、図1に示す離散コサイン変換装置では、選択部における選択対象のデータ数が少なくなり、回路を削減できる。
以上のことから、図1に示す離散コサイン変換装置によれば、回路面積の増大を抑えながら、変換速度を高速化することができる。
【0059】
<第2の実施形態>
図5は、本発明の第2の実施形態に係る逆離散コサイン変換装置の構成の一例を示すブロック図である。
図5に示す逆離散コサイン変換装置は、ラッチFF3、FF4と、乗算部M8〜M15と、第1の選択部33と、第2の選択部34と、積算部41とを有する。
乗算部M8〜M11を含むユニットは、本発明の第1の乗算手段の一実施形態である。
乗算部M12〜M15を含むユニットは、本発明の第2の乗算手段の一実施形態である。
第1の選択部33は、本発明の第1の選択手段の一実施形態である。
第2の選択部34は、本発明の第2の選択手段の一実施形態である。
積算部41は、本発明の積算手段の一実施形態である。
ラッチFF3は、本発明の第1のデータ保持手段の一実施形態である。
ラッチFF4は、本発明の第2のデータ保持手段の一実施形態である。
【0060】
(ラッチFF3、FF4)
ラッチFF3は、クロック信号CLKに同期して、離散コサイン変換データA0,A2,A4,A6を順次入力して保持し、保持したデータを乗算部M8〜M11に出力する。
ラッチFF4は、クロック信号CLKに同期して、離散コサイン変換データA1,A3,A5,A7を順次入力して保持し、保持したデータを乗算部M12〜M15に出力する。
すなわち、ラッチFF3は、式(3)における変数uが偶数のデータを入力し、ラッチFF4は変数uが奇数のデータを入力する。
【0061】
(乗算部M8〜M15)
乗算部M8〜M11は、ラッチFF3に保持された離散コサイン変換データとコサイン係数K0、K2、K4、K6とを乗算し、その乗算結果S_K0、S_K2、S_K4、S_K6を第1の選択部33に出力する。
乗算部M12〜M15は、ラッチFF4に保持された離散コサイン変換データとコサイン係数K1、K3、K5、K7とを乗算し、その乗算結果S_K1、S_K3、s_K5、S_K7を第2の選択部34に出力する。
【0062】
(第1の選択部33、第2の選択部34)
第1の選択部33は、逆離散コサイン変換の結果として生成すべきデータa0〜a7のそれぞれに対して、乗算部M8〜M11から出力される乗算結果S_K0、S_K2、S_K4、S_K6の中から、乗算元の入力データの順番に応じた乗算結果を選択し、その選択結果Se_x0〜Se_x7を積算部41に出力する。すなわち、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて、乗算結果の選択を行う。
また、選択する乗算結果に対して、乗算元の入力データの順番に応じた符号(正または負)を与える。すなわち、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて、選択する乗算結果に正または負の符号を与える。
【0063】
図6は、第1の選択部33の構成の一例を示すブロック図である。
図6の例において、第1の選択部33は、選択部331〜338と、符号設定部339,3310〜3316とを有する。
【0064】
選択部331〜338は、乗算結果S_K0、S_K2、S_K4、S_K6の中から、それぞれ1つの乗算結果を選択する。何れの乗算結果を選択するかは、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて決定する。
【0065】
符号設定部339,3310〜3316は、選択部331〜338において選択された乗算結果に対して、正または負の符号を与える。たとえば、正の符号を与える場合には、入力されるデータをそのまま出力し、負の符号を与える場合には、入力されるデータを2の補数形式の負数に変換して出力する。
なお、正または負の何れに設定するかは、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて決定する。
【0066】
以上は、第1の選択部33の説明であるが、第2の選択部34においても同様な選択動作が行われる。
すなわち、第2の選択部34は、逆離散コサイン変換の結果として生成すべきデータa0〜a7のそれぞれに対して、乗算部M12〜M15から出力される乗算結果S_K1、S_K3、S_K5、S_K7の中から、乗算元の入力データの順番に応じた乗算結果を選択し、その選択結果So_x0〜So_x7を積算部41に出力する。また、選択する乗算結果に対して、乗算元の入力データの順番に応じた符号(正または負)を与える。
第2の選択部34についても、図6と同様な構成で実現可能である。
【0067】
(積算部41)
積算部41は、第1の選択部33において選択された乗算結果Se_x0〜Se_x7と、第2の選択部34において選択された乗算結果So_x0〜So_x7との和をそれぞれ積算して、式(3)に示す逆離散コサイン変換データa0〜a7を生成する。
【0068】
図7は、積算部41の構成の一例を示すブロック図である。
図7の例において、積算部41は、加算部411〜419,4110〜4116と、ラッチ4117〜4124とを有する。
加算部411,…,418は、第1の選択部33において選択されたSe_x0,…,Se_x7と、第2の選択部34において選択された乗算結果So_x0,…,So_x7とを入力し、入力した2つのデータを加算する。
加算部419,4110,…,4116は、加算部411,…,418の加算結果と、ラッチ4117,…,4124の保持データとを入力する。そして、入力したデータを互いに加算し、その加算結果をラッチ4117,…,4124へ出力する。
ラッチ4117,…,4124は、加算部419,4110,…,4116における加算結果を図示しないクロック信号CLKに同期して保持する。
【0069】
積算が開始される前に、初期化信号CLRによってラッチ(4117〜4124)の保持データはゼロに初期化される。この状態で、選択結果(Se_x0〜Se_x7、So_x0〜So_x7)が順次入力されると、前段の加算部(411〜418)において、選択結果Se_xnとSo_xn(n=0,…,7)とが加算され、この加算結果が次段の加算部(419、4110〜4116)に出力される。次段の加算部(419、4110〜4116)において、前段の加算部(411〜418)の加算結果とラッチ(4117〜4124)の保持データとが加算され、この加算結果が新たな累積値としてラッチ(4117〜4124)に保持される。結果として、ラッチ(4117〜4124)には、第1の選択部33の選択結果Se_xnと第2の選択部34の選択結果So_xnとの和を積算した値が保持される。この積算値が、逆離散コサイン変換データ(a0〜a7)として、ラッチ(4117〜4124)から出力される。
【0070】
ここで、上述した構成を有する図5に示す逆離散コサイン変換装置の動作について、入力データと係数Knとの関係を示す表3〜表5を参照しながら説明する。
表3は、式(3)におけるコサイン係数
cos{(2x+1)uπ/16}
の値と、変数uおよびxとの関係を示す表である。この表において、コサイン係数の値は、式(5)で計算される係数Knに符号を付して示している。
【0071】
【表3】
【0072】
この表3を基にして、図9に示す逆離散コサイン変換装置の乗算部(M10〜M17)の使用状況を示した表が、表4である。表中の丸印は、離散コサイン変換データAuと係数Knとの乗算結果が、選択部101において選択され、積算部102において積算されることを示している。
【0073】
【表4】
【0074】
表4を見ると、ある1つの離散コサイン変換データAuが図9に示す逆離散コサイン変換装置において処理される場合、未使用の乗算部が多く存在することが分かる。たとえば変数u=2の離散コサイン変換データA2が入力された場合、係数K0、K1、K3〜K5、K7の乗算部が未使用になる。このように、図9に示す逆離散コサイン変換装置においては、乗算部が効率良く使用されていない。
【0075】
表3において、離散コサイン変換データAuと、これに乗ぜられる係数Knとの関係をまとめると、次のようになる。
【0076】
A0 … K0;
A4 … K4;
A2,A6 … K2,K6;
A1,A3,A5,A7 … K1,K3,K5,K7;
【0077】
このように、変数uが偶数の場合、変数nが偶数である係数Knの乗算部が使用され、変数uが奇数の場合は、変数nが奇数である係数Knの乗算部が使用される。
【0078】
そこで、図5に示す逆離散コサイン変換装置では、変数uが偶数の離散コサイン変換データA0、A2、A4、A6と、変数uが奇数の離散コサイン変換A1,A3,A5,A7とが、それぞれ並列に入力されて処理される。
【0079】
すなわち、ラッチFF3には、離散コサイン変換データA0、A2、A4、A6が順次入力されて保持される。
ラッチFF3に保持されたデータには、乗算部M8〜M11において係数K0、K2、K4、K6が乗ぜられる。
第1の選択部33では、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて、これら4つの乗算結果のうちの1つが、生成すべき逆離散コサイン変換データa0〜a7のそれぞれに対して選択され、正または負の符号を与えられて出力される。
【0080】
ラッチFF4には、離散コサイン変換A1,A3,A5,A7が順次入力されて保持される。
ラッチFF4に保持されたデータには、乗算部M12〜M15において係数K1、K3、K5、K7が乗ぜられる。
第2の選択部34では、乗算元の入力データが離散コサイン変換データA1、A3、A5、A7の何れであるかに応じて、これら4つの乗算結果のうちの1つが、生成すべき逆離散コサイン変換データa0〜a7のそれぞれに対して選択され、正または負の符号を与えられて出力される。
【0081】
第1の選択部33から出力される選択結果Se_x0〜Se_x7と、第2の選択部34から出力される選択結果So_x0〜So_x7は、積算部41において互いに加算される。すなわち、共通の逆離散コサイン変換データに対して選択された選択結果どうし(Se_xnおよびSo_xn)が互いに加算される。そして、この加算結果が、逆離散コサイン変換データa0〜a7を生成するためにそれぞれ積算される。
【0082】
表5は、図5に示す逆離散コサイン変換装置における乗算部(M8〜M15)の使用状況の一例を示す。表5に示す例では、ラッチFF3およびFF4に対し、(A0,A1)、(A2,A3)、(A4,A5)、(A6,A7)の組み合わせで離散コサイン変換データが入力される。なお、表中の数値は、離散コサイン変換データAuの変数uの値を示す。
表4と表5を比較して分かるように、図5に示す逆離散コサイン変換装置では、未使用の乗算部が少なくなり、乗算部の使用効率が向上する。
【0083】
【表5】
【0084】
図8は、図5に示す逆離散コサイン変換装置の動作を示すタイミング図である。
図8(A)はクロック信号CLKを、図8(B)および図8(D)はラッチFF3の入力データおよび保持データを、図8(C)および図4(E)はラッチFF4の入力データおよび保持データを、図8(F)は積算部41における積算結果を示す。
【0085】
図8におけるデータD00,D01,…,D07は、式(3)における離散コサイン変換データA0,A1,…A7にそれぞれ対応する。逆離散コサイン変換装置には、変数uが偶数の離散コサイン変換データA0、A2、A4、A6と、変数uが奇数の離散コサイン変換データA1、A3、A5、A7とが、並列に入力される。図8の例では、(D00,D01)、(D02,D03)、(D04,D05)、(D06,D07)の組み合わせで並列に入力される。
入力されるデータ(図8(B)および図8(C))は、クロック信号CLK(図8(A))に同期して、ラッチFF3およびFF4に順次保持される(図8(D)および図8(E))。1組のデータがラッチFF3およびFF4に保持される1クロックサイクルにおいて、乗算部M8〜M15における係数の乗算、第1の選択部33および第2の選択部34におけるデータの選択と符号の設定、積算部41における累積値との加算が完了し、次のクロックサイクルの始まりにおいて、積算部41の積算結果が更新される(図8(F))。最後の入力データ(D06,D07)に応じて積算部41の積算結果が更新される時点で、逆離散コサイン変換の変換結果が確定する。
【0086】
以上説明したように、図5に示す逆離散コサイン変換装置によれば、逆離散コサイン変換対象となる8のデータのうち、変数uが偶数の離散コサイン変換データA0、A2、A4、A6と、変数uが奇数の離散コサイン変換データA1、A3、A5、A7とが並列に処理されて逆離散コサイン変換データの生成が行われるため、1づつデータが処理される図9に示す逆離散コサイン変換装置に比べて、変換速度を高速化することができる。
図8および図10のタイミング図を比較して分かるように、図9に示す逆離散コサイン変換装置では、ラッチFF10に入力データが保持されてから変換結果Doutが確定するまでに9クロックサイクルを要するのに対して、図5に示す逆離散コサイン変換装置では5クロックサイクルで変換結果が確定する。すなわち、変換速度を約2倍に高速化することができる。
【0087】
また、変換速度を同等にして両者を比較すると、図5に示す逆離散コサイン変換装置ではクロック周波数を下げたり電源電圧を低くしたりすることが可能なため、消費電力を大幅に削減することができる。
【0088】
また、図5に示す逆離散コサイン変換装置では、図9に示す逆離散コサイン変換装置に対して、入力データのラッチが追加されるのみである。
さらに、図9における選択部101と図1における選択部33、34とを比較すると、前者では8つの出力においてそれぞれ8対1の選択が行われるのに対し、後者では16つの出力においてそれぞれ4対1の選択が行われる。すなわち、図5に示す逆離散コサイン変換装置では、選択部の出力数が2倍に増えるものの、各出力に対する選択対象のデータ数は半分になる。
以上のことから、図5に示す逆離散コサイン変換装置によれば、回路面積の増大を抑えながら、変換速度を高速化することができる。
【0089】
なお、上述した実施形態は、本発明を説明するために与えた一例に過ぎず、本発明はこれに限定されるものではない。
【0090】
たとえば、図1に示す離散コサイン変換装置では、8点の1次元離散コサイン変換を行う装置の例が示されているが、変換対象のデータ数は任意の偶数に設定可能である。本方式を使って奇数点の入力データを処理する場合、たとえば、最終データに0を加えて偶数点に拡張する処理を設けることにより、正しい結果を得ることができる。
【0091】
一般に、データ数Nの離散コサイン変換は次式で表される。
【0092】
【数4】
【0093】
式(6)において、先頭データa0から(j+1)番目のデータajに対し乗ぜられるコサイン係数CK(j)は、次式のように表される。
【0094】
【数5】
【0095】
式(6)において、末尾データa(N−1)から(j+1)番目のデータa(N−1−j)に対し乗ぜられるコサイン係数CK(N−1−j)は、次式のように表される。
【0096】
【数6】
【0097】
式(9)から分かるように、所定の順番を有した、離散コサイン変換の対象となるN個のデータa0,…,a(N−1)のうち、先頭からの順番と末尾からの順番とが等しい一対のデータに対しては、離散コサイン変換の過程において、絶対値の等しいコサイン係数が乗ぜられる。
したがって、N点の離散コサイン変換装置においても、図1に示す離散コサイン変換と同様に、先頭からの順番と末尾からの順番とが等しい一対の入力データを互いに加算する加算部と、この一対の入力データの一方から他方を減算する減算部と、加算部の加算結果および減算部の減算結果にそれぞれ所定のコサイン係数を乗算する乗算部とを設けて、入力データを2つずつ処理することができるため、変換処理の高速化を図ることが可能である。
【0098】
また、図5に示す逆離散コサイン変換装置では、8点の1次元逆離散コサイン変換を行う装置の例が示されているが、この場合においても、変換対象のデータ数は任意の偶数に設定可能である。本方式を使って奇数点の入力データを処理する場合、たとえば、最終データに0を加えて偶数点に拡張する処理を設けることにより、正しい結果を得ることができる。
【0099】
一般に、データ数Nの逆離散コサイン変換は次式で表される。
【0100】
【数7】
【0101】
式(10)においてコサイン係数
cos{(2x+1)uπ/16}
の絶対値は、余弦関数の性質から、N種類の値を持つ。すなわち、0からN−1までの整数kを
cos{k×(π/2N)}
に代入して得られるN種類の値を持つ。
【0102】
変数uが奇数とすると、積(2x+1)uの値は、奇数と奇数との積になるため、奇数となる。したがって、コサイン係数
cos{(2x+1)uπ/16}
の位相は、定数(π/16)の奇数倍となる。
【0103】
一方、変数uが偶数とすると、積(2x+1)uの値は、奇数と偶数との積になるため、偶数となる。したがって、コサイン係数
cos{(2x+1)uπ/16}
の位相は、定数(π/16)の偶数倍となる。
【0104】
このことから、変数uが奇数の場合、コサイン係数の絶対値は、
cos{k×(π/2N)}
において整数kに奇数を代入して得られる値を有する。
また、変数uが偶数の場合、コサイン係数の絶対値は、
cos{k×(π/2N)}
において整数kに偶数を代入して得られる値を有する。
【0105】
したがって、N点の逆離散コサイン変換装置においても、図5に示す逆離散コサイン変換と同様に、入力データAu(u=0,…,N−1)のうち変数uが偶数のグループに含まれる入力データに所定のコサイン係数を乗じる乗算部と、変数uが奇数のグループに含まれる入力データに所定のコサイン係数を乗じる乗算部とを設けて、これら2つのグループの入力データを並列に処理することができるため、変換処理の高速化を図ることが可能である。
【0106】
また、図7に示す積算部では、第1の選択部33および第2の選択部34の出力を加算した結果に対して積算が行われているが、たとえば、第1の選択部33および第2の選択部34の出力をそれぞれ積算した後で、その積算結果を加算することにより、逆離散コサイン変換データを生成しても良い。
【0107】
【発明の効果】
本発明の離散コサイン変換装置および逆離散コサイン変換装置によれば、消費電力の増大を抑えながら、演算速度を高速化することができる。また、演算速度の低下を抑えながら、消費電力の削減を図ることができる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る離散コサイン変換装置の構成の一例を示すブロック図である。
【図2】図1に示す離散コサイン変換装置における、第1の選択部の構成の一例を示すブロック図である。
【図3】図1に示す離散コサイン変換装置における、積算部の構成の一例を示すブロック図である。
【図4】図1に示す離散コサイン変換装置の動作を示すタイミング図である。
【図5】本発明の第2の実施形態に係る逆離散コサイン変換装置の構成の一例を示すブロック図である。
【図6】図5に示す逆離散コサイン変換装置における、第1の選択部の構成の一例を示すブロック図である。
【図7】図5に示す逆離散コサイン変換装置における、積算部の構成の一例を示すブロック図である。
【図8】図5に示す逆離散コサイン変換装置の動作を示すタイミング図である。
【図9】一般的な1次元の離散コサイン変換/逆離散コサイン変換装置の構成の一例を示すブロック図である。
【図10】図9に示す離散コサイン変換/逆離散コサイン変換装置の動作を示すタイミング図である。
【符号の説明】
FF1〜FF4…ラッチ、M0〜M15…乗算部、10…加算部、20…減算部、31,33…第1の選択部、32,34…第2の選択部、40,41…積算部
【発明の属する技術分野】
本発明は、離散コサイン変換装置および逆離散コサイン変換装置に係り、たとえば、画像データの圧縮・伸張装置に用いられる離散コサイン変換装置および逆離散コサイン変換装置に関するものである。
【0002】
【従来の技術】
一般に自然画像は、隣接する画素間の相関性が高いため、ある微小な領域内で見た場合、画素値の空間的な変動(空間周波数)が比較的小さい。すなわち、周波数領域におけるスペクトル分布が低周波域に偏る傾向がある。このため、周波数領域の画像データを低周波側ほど短い符号長で符号化することにより、データの欠落を抑えながら全体の平均符号長を圧縮することができる。
【0003】
画像圧縮符号化の国際標準化方式であるJPEG(Joint Photographic Experts Group)やMPEG(Moving Picture Experts Group)では、画像データを周波数領域へ変換する方法として、離散コサイン変換(discrete cosine transform)が採用されている。また、周波数領域に変換されたデータを元の空間領域へ戻す方法としては、逆離散コサイン変換(inverse discrete cosine transform)が用いられる。
【0004】
これらの圧縮・伸長方式では、符号化対象の画像データが8×8画素ごとにブロック化され、このブロックを単位として2次元の離散コサイン変換/逆離散コサイン変換が実行される。また、2次元の離散コサイン変換/逆離散コサイン変換は、1次元の離散コサイン変換/逆離散コサイン変換を2回に分けて実行することにより演算可能である。そのため、一般にこれらの方式の圧縮・伸長装置では、8点の1次元離散コサイン変換/逆離散コサイン変換を列方向の8本のデータに対して実行し、得られた実行結果に対して、さらに8点の1次元離散コサイン変換/逆離散コサイン変換を行方向の8本のデータに対して実行することにより、2次元の離散コサイン変換/逆離散コサイン変換を行っている。
【0005】
JPEGおよびMPEGにおいて通常用いられる8点の離散コサイン変換演算は、次式で表される。
【0006】
【数1】
【0007】
また、式(1)に対応する逆離散コサイン変換演算は、次式で表される。
【0008】
【数2】
【0009】
式(1)〜(4)において、記号Auは変換前または後の画像データを、記号axは離散コサイン変換係数を示す。また、記号u、xは0から7までの整数を示す。
【0010】
式(1)および式(3)の右辺におけるコサイン係数
cos{(2x+1)uπ/16}
の絶対値は、余弦関数の性質から、8種類の値を持つ。すなわち、
cos(0π/16)、cos(1π/16)、cos(2π/16)、
cos(3π/16)、cos(4π/16)、cos(5π/16)、
cos(6π/16)、cos(7π/16)、
の何れかの値を持つ。離散コサイン変換/逆離散コサイン変換の演算においては、この8つのコサイン係数と入力データとの積を合成することにより、変換結果(Au、ax)が得られる。
【0011】
たとえば、8つのデータを1つずつ入力し、入力したデータと8つの係数とをそれぞれ乗算し、得られた8つの乗算結果から1つを選択し、これに所定の符号を与えて積算することにより、1つの変換結果(Au、ax)が得られる。
【0012】
図9は、一般的な1次元の離散コサイン変換/逆離散コサイン変換装置の構成の一例を示すブロック図である。
図9に示す離散コサイン変換/逆離散コサイン変換装置は、ラッチFF10と、乗算部M10〜M17と、選択部101と、積算部102とを有する。
【0013】
シリアルに入力される変換元のデータDin(画像データまたは離散コサイン変換係数)は、ラッチFF10において一旦保持される。ラッチFF10に保持されたデータは、乗算部M10〜M17においてそれぞれ係数K0〜K7を乗ぜられる。係数K0〜K7は、上述したコサイン係数を示し、次式で表される。
【0014】
【数3】
【0015】
乗算部M10〜M17において各係数を乗ぜられたデータは、選択部101に入力される。選択部101では、変換結果として出力すべき8つのデータDout0〜Dout7のそれぞれに対して、乗算部M10〜M17の乗算結果が選択される。選択されたデータには、正または負の符号が与えられて、積算部102に出力される。
【0016】
積算部102では、選択部102から出力されるデータがそれぞれ積算される。8つの入力データに対応する選択部101の出力データが全て積算された場合に、その積算結果として、変換結果を示す8つのデータDout0〜Dout7が得られる。
【0017】
図10は、図9に示す離散コサイン変換/逆離散コサイン変換装置の動作を示すタイミング図である。
図10(A)は図示しないクロック信号CLKを示す。ラッチFF10における入力データの保持や、積算部102におけるデータの積算は、このクロック信号CLKに同期して実行される。
また、図10(A)および(B)は、ラッチFF10に入力されるデータとラッチFF10に保持されるデータを示し、図10(C)は、積算部102における積算結果を示す。
【0018】
順次入力されるデータD00,D01,…,D07(図10(B))は、クロック信号CLK(図10(A))に同期して、ラッチFF10に順次保持される(図10(C))。1つのデータがラッチFF10に保持される1クロックサイクルにおいて、乗算部M10〜M17における係数の乗算、選択部101におけるデータの選択と符号の設定、積算部102における累積値との加算が完了し、次のクロックサイクルの始まりにおいて、積算部102の積算結果が更新される(図10(D))。最後の入力データD07に応じて積算部102の積算結果が更新される時点で、離散コサイン変換/逆離散コサイン変換の変換結果が確定する。
【0019】
離散コサイン変換/逆離散コサイン変換装置に関しては、上述した方式の他に、たとえば特許文献1や特許文献2に記載された方式が存在する。
【0020】
【特許文献1】
特許2555937号公報
【特許文献2】
特開2002−91942号公報
【0021】
【発明が解決しようとする課題】
ところで、図9に示す離散コサイン変換/逆離散コサイン変換装置は、特許文献1や特許文献2に記載される方式に比べて構成を簡易化できる利点があるものの、8つの入力データの逐次的な処理によって演算が実行されるため、複数の入力データが並列処理される上記文献の方式に比べて変換速度が低速になる不利益を有する。クロック信号の周波数を上げて動作速度を高速化することも可能であるが、その場合、消費電力が増大してしまう不利益を生じる。
また、選択部101においては8入力1出力のセレクタが8つも必要となるため、さらに構成を簡易化することが望まれる。
【0022】
本発明はかかる事情に鑑みてなされたものであり、その目的は、消費電力の増大を抑えながら、演算速度をより高速化することができる離散コサイン変換装置および逆離散コサイン変換装置を提供することにある。
【0023】
【課題を解決するための手段】
上記の目的を達成するため、本発明の第1の観点の離散コサイン変換装置は、所定の順番を有した複数の入力データと複数のコサイン係数とを乗算して得られるコサイン係数積を合成して、複数の離散コサイン変換データを生成する離散コサイン変換装置であって、上記複数の入力データのうち、先頭からの順番と末尾からの順番とが等しい一対の入力データを互いに加算する加算手段と、この一対の入力データの一方から他方を減算する減算手段と、加算手段の加算結果および減算手段の減算結果にそれぞれコサイン係数を乗算し、コサイン係数積の和として出力する乗算手段とを有する。
【0024】
本発明の第1の観点によれば、加算手段において、先頭からの順番と末尾からの順番とが等しい一対の入力データが互いに加算され、減算手段において、この一対の入力データの一方から他方が減算される。加算手段の加算結果および減算手段の減算結果には、乗算手段においてコサイン係数がそれぞれ乗算され、この乗算結果がコサイン係数積の和として出力される。離散コサイン変換データは、コサイン係数積が合成されることによって生成される。
1対の入力データを単位とした処理によって離散コサイン変換データが生成されるため、個々の入力データを逐次処理することによって離散コサイン変換データが生成される場合に比べて、変換速度を高速化することが可能になる。
【0025】
また、乗算手段は、上記複数のコサイン係数のうち所定の係数グループに含まれるコサイン係数と、加算手段の加算結果とを乗算する第1の乗算手段と、上記複数のコサイン係数のうち所定の係数グループに含まれない残りのコサイン係数と、減算手段の減算結果とを乗算する第2の乗算手段とを含んでも良い。
これにより、加算手段の加算結果および減算手段の減算結果に対して、上記複数のコサイン係数の乗算手段がそれぞれ設けられる場合に比べて、乗算手段の数が削減される。
【0026】
また、第1の観点の離散コサイン変換装置は、第1の選択手段と、第2の選択手段と、積算手段とを有しても良い。
第1の選択手段では、生成すべき上記複数の離散コサイン変換データのうち、所定の変換データ・グループに含まれる離散コサイン変換データのそれぞれに対して、第1の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果が選択される。
第2の選択手段では、生成すべき上記複数の離散コサイン変換データのうち、所定の変換データ・グループに含まれない残りの離散コサイン変換データのそれぞれに対して、第2の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果が選択される。
積算手段では、第1の選択手段および第2の選択手段において選択された乗算結果がそれぞれ積算されて、上記複数の離散コサイン変換データが生成される。
このように、第1の選択手段では第1の乗算手段の乗算結果が、第2の選択手段では第2の乗算手段の乗算結果が、それぞれ選択対象となる。このため、乗算手段の全ての乗算結果が選択対象となる場合に比べて、選択手段における選択対象のデータ数を削減できる。
【0027】
本発明の第2の観点の逆離散コサイン変換装置は、所定の順番を有した複数の入力データと複数のコサイン係数とを乗算して得られるコサイン係数積を合成して、複数の逆離散コサイン変換データを生成する逆離散コサイン変換装置であって、上記複数の入力データのうち、上記順番が1つおきに離れた所定の入力データ・グループに含まれる入力データと上記複数のコサイン係数とをそれぞれ乗算し、コサイン係数積として出力する第1の乗算手段と、上記複数の入力データのうち、所定の入力データ・グループに含まれない残りの入力データと上記複数のコサイン係数とをそれぞれ乗算し、コサイン係数積として出力する第2の乗算手段とを有する。
【0028】
本発明の第2の観点によれば、第1の乗算手段において、上記複数の入力データのうち、上記順番が1つおきに離れた所定の入力データ・グループに含まれる入力データと上記複数のコサイン係数とがそれぞれ乗算され、コサイン係数積として出力される。また、上記複数の入力データのうち、所定の入力データ・グループに含まれない残りの入力データと上記複数のコサイン係数とがそれぞれ乗算され、コサイン係数積として出力される。
所定の入力データ・グループに含まれる入力データと、残りの入力データとに対して、それぞれ並列にコサイン係数積を演算することができるため、個々の入力データを逐次処理することによって逆離散コサイン変換データが生成される場合に比べて、変換速度を高速化することが可能になる。
【0029】
また、第1の乗算手段は、上記複数のコサイン係数のうち所定の係数グループに含まれるコサイン係数と、所定の入力データ・グループに含まれる入力データとを乗算し、第2の乗算手段は、上記複数のコサイン係数のうち所定の係数グループに含まれない残りのコサイン係数と、上記残りの入力データとを乗算しても良い。
これにより、第1の乗算手段および第2の乗算手段において、上記複数のコサイン係数の全てが乗算される場合に比べて、乗算手段の数が削減される。
【0030】
また、本発明の第2の観点の逆離散コサイン変換装置は、第1の選択手段と、第2の選択手段と、積算手段とを有しても良い。
第1の選択手段では、生成すべき上記複数の逆離散コサイン変換のそれぞれに対して、第1の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果が選択される。
第2の選択手段では、生成すべき上記複数の逆離散コサイン変換のそれぞれに対して、第2の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果が選択される。
積算手段では、第1の選択手段において選択された乗算結果と、第2の選択手段において選択された乗算結果との和がそれぞれ積算されて、上記複数の逆離散コサイン変換データが生成される。
【0031】
【発明の実施の形態】
<第1の実施形態>
図1は、本発明の第1の実施形態に係る離散コサイン変換装置の構成の一例を示すブロック図である。
図1に示す離散コサイン変換装置は、ラッチFF1、FF2と、加算部10と、減算部20と、乗算部M0〜M7と、第1の選択部31および第2の選択部32と、積算部40とを有する。
加算部10は、本発明の加算手段の一実施形態である。
減算部20は、本発明の減算手段の一実施形態である。
乗算部M0〜M3を含むユニットは、本発明の第1の乗算手段の一実施形態である。
乗算部M4〜M7を含むユニットは、本発明の第2の乗算手段の一実施形態である。
第1の選択部31は、本発明の第1の選択手段の一実施形態である。
第2の選択部32は、本発明の第2の選択手段の一実施形態である。
積算部40は、本発明の積算手段の一実施形態である。
ラッチFF1、FF2は、本発明のデータ保持手段の一実施形態である。
【0032】
(ラッチFF1、FF2)
ラッチFF1およびFF2は、図示しないクロック信号CLKに同期して、1対のデータを順次入力して保持し、保持したデータを加算部10および減算部20に出力する。
すなわち、式(1)に示すデータaxを、
(a0,a7)、
(a1,a6)、
(a2,a5)、
(a3,a4)、
の組み合わせで順次入力し、加算部10および減算部20に出力する。
【0033】
このデータの組み合わせは、データa0,a1,…,a7の順にデータを並べた場合における先頭からの順番と末尾からの順番とが等しくなる組み合わせである。たとえば、データa2は先頭のデータ(a0)から数えて3番目、データa5は末尾のデータ(a7)から数えて3番目のデータであり、両者の順番は等しい。
【0034】
(加算部10、減算部20)
加算部10は、ラッチFF1およびFF2に保持された一対のデータを互いに加算する。
減算部20は、ラッチFF1およびFF2に保持された一対のデータの一方から他方を減算する。たとえば、ラッチFF1に保持されたデータからラッチFF2に保持されたデータを減算する。
【0035】
(乗算部M0〜M7)
乗算部M0〜M3は、加算部10の加算結果S10と、式(5)に示すコサイン係数K0、K2、K4、K6とを乗算し、その乗算結果S_K0、S_K2、S_K4、S_K6を第1の選択部31に出力する。
乗算部M4〜M7は、減算部20の減算結果S20と、式(5)に示すコサイン係数K1、K3、K5、K7とを乗算し、その乗算結果S_K1、S_K3、s_K5、S_K7を第2の選択部32に出力する。
【0036】
(第1の選択部31、第2の選択部32)
第1の選択部31は、離散コサイン変換の結果として生成すべき離散コサイン変換データA0、A2、A4、A6のそれぞれに対して、乗算部M0〜M3から出力される乗算結果S_K0、S_K2、S_K4、S_K6の中から、乗算元の入力データの順番に応じた乗算結果を選択し、その選択結果S_u0、S_u2、S_u4、S_u6を積算部40に出力する。
【0037】
ここでいう入力データの順番とは、離散コサイン変換の対象となる1次元データの配列順序を示し、式(1)における変数xの値に対応する。第1の選択部31は、入力データの変数xの値に応じて、すなわち、乗算元の入力データの組が(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて、乗算結果の選択を行う。
【0038】
また第1の選択部31は、選択する乗算結果に対して、乗算元の入力データの順番に応じた符号(正または負)を与える。すなわち、乗算元の入力データの組が(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて、選択する乗算結果に正または負の符号を与える。
【0039】
図2は、第1の選択部31の構成の一例を示すブロック図である。
図2の例において、第1の選択部31は、選択部311〜314と、符号設定部315〜318とを有する。
【0040】
選択部311〜314は、乗算結果S_K0、S_K2、S_K4、S_K6の中から、それぞれ1つの乗算結果を選択する。何れの乗算結果を選択するかは、乗算元の入力データの組が(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて決定する。
【0041】
符号設定部315〜318は、選択部311〜314において選択された乗算結果に対して、正または負の符号を与える。たとえば、正の符号を与える場合には、入力されるデータをそのまま出力し、負の符号を与える場合には、入力されるデータを2の補数形式の負数に変換して出力する。
なお、正または負の何れに設定するかは、乗算元の入力データの組が(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて決定する。
【0042】
以上は、第1の選択部31の説明であるが、第2の選択部32においても同様な選択動作が行われる。
すなわち、選択部32は、離散コサイン変換の結果として生成すべき離散コサイン変換データA1、A3、A5、A7のそれぞれに対して、乗算部M4〜M7から出力される乗算結果S_K1、S_K3、S_K5、S_K7の中から、乗算元の入力データの順番に応じた乗算結果を選択し、当該順番に応じた正または負の符号を与えて、選択結果S_u1、S_u3、S_u5、S_u7として積算部40に出力する。
第2の選択部32についても、図2と同様な構成で実現可能である。
【0043】
(積算部40)
積算部40は、第1の選択部31および第2の選択部32において選択された乗算結果をそれぞれ積算して、式(1)に示す離散コサイン変換データA0〜A7を生成する。
【0044】
図3は、積算部40の構成の一例を示すブロック図である。
図3の例において、積算部40は、加算部401〜408と、ラッチ409、4010〜4016とを有する。
加算部401,…,408は、ラッチ409,4010…,4016の保持データと、選択部の選択結果S_u0,…S_u7とを入力する。そして、入力したデータを互いに加算し、その加算結果をラッチ409,4010,…,4016へ出力する。
ラッチ409,4010,…,4016は、加算部401,…,408における加算結果を図示しないクロック信号CLKに同期して保持する。
【0045】
積算が開始される前に、初期化信号CLRによってラッチ(409、4010〜4016)の保持データはゼロに初期化される。この状態で、選択部の選択結果(S_u0〜S_u7)が順次入力されると、加算部(401〜408)において、ラッチ(409、4010〜4016)に保持された累積値に選択結果(S_u0〜S_u7)が加算され、この加算結果が新たな累積値としてラッチ(409、4010〜4016)に保持される。結果として、ラッチ(409、4010〜4016)には、それぞれの選択結果(S_u0〜S_u7)を積算した値が保持される。この積算値が、離散コサイン変換データ(A0〜A7)として、ラッチ(409、4010〜4016)から出力される。
【0046】
ここで、上述した構成を有する図1に示す離散コサイン変換装置の動作について、入力データの組み合わせと係数Knとの関係を示す表1および表2を参照しながら説明する。
以下に示す表1は、式(1)におけるコサイン係数
cos{(2x+1)uπ/16}
の値と、変数xおよびuとの関係を示す表である。この表において、コサイン係数の値は、式(5)で計算される係数Knに符号を付して示している。
【0047】
【表1】
【0048】
また、以下に示す表2は、表1において、変数xの並びを上から順に、
0,7,1,6,2,5,3,4;
という順番に並べ替えたものである。
【0049】
【表2】
【0050】
表2を見ると、
x=0,7の場合、
x=1,6の場合、
x=2,5の場合、
x=3,4の場合、
のそれぞれにおいて、変数uが同一値のとき、コサイン係数の絶対値が等しくなっている。
また、この場合、変数uが偶数のコサイン係数は、符号が互いに等しくなっており、変数uが奇数のコサイン係数は、符号が互いに異なっている。
さらに、変数uが偶数のコサイン係数の値は、絶対値が係数K0、K2、K4またはK6と等しく、変数uが奇数のコサイン係数の値は、絶対値が係数K1、K3、K5またはK7と等しい。
【0051】
コサイン係数を乗ぜられた後のデータは、式(1)に示すように、最終的には積算されるため、上述した組み合わせのデータについては、コサイン係数の乗算前に加算または減算を行ってから積算しても、個々の乗算結果を合算する場合と同一の積算値を得ることができる。
【0052】
そこで、図1に示す離散コサイン変換装置では、変数uが偶数の離散コサイン変換データA0、A2、A4、A6を生成するために、まず加算部10において、上述した組み合わせで入力されるデータの加算が行われる。
その加算結果S10には、乗算部M0〜M3において、4種類の係数K0、K2、K4、K6が乗ぜられる。
第1の選択部31では、入力データの組が、(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて、これら4つの乗算結果のうちの1つが、生成すべき離散コサイン変換データA0、A2、A4、A6のそれぞれに対して選択され、正または負の符号を与えられて出力される。
第1の選択部31の選択結果S_u0、S_u2、S_u4、S_u6は、それぞれ積算部40に入力され、離散コサイン変換データA0、A2、A4、A6を生成するために積算される。
【0053】
また、変数uが奇数の離散コサイン変換データA1、A3、A5、A7を生成するために、まず減算部20において、上述した組み合わせで入力されるデータの減算が行われる。
その減算結果S20には、乗算部M4〜M7において、4種類の係数K1、K3、K5、K7が乗ぜられる。
第2の選択部32では、入力データの組が、(a0,a7)、(a1,a6)、(a2,a5)、または(a3,a4)の何れであるかに応じて、これら4つの乗算結果のうちの1つが、生成すべき離散コサイン変換データA1、A3、A5、A7のそれぞれに対して選択され、正または負の符号を与えられて出力される。
第2の選択部32の選択結果S_u1、S_u3、S_u5、S_u7は、それぞれ積算部40に入力され、離散コサイン変換データA1、A3、A5、A7を生成するために積算される。
【0054】
図4は、図1に示す離散コサイン変換装置の動作を示すタイミング図である。図4(A)はクロック信号CLKを、図4(B)および図4(D)はラッチFF1の入力データおよび保持データを、図4(C)および図4(E)はラッチFF2の入力データおよび保持データを、図4(F)は積算部40における積算結果を示す。
【0055】
図4におけるデータD00,D01,…,D07は、式(1)におけるデータa0,a1,…a7にそれぞれ対応する。離散コサイン変換装置には、これらのデータが上述した組み合わせ、すなわち(D00,D07)、(D01,D06)、(D02,D05)、(D03,D04)の組み合わせで入力される。
入力されるデータ(図4(B)および図4(C))は、クロック信号CLK(図4(A))に同期して、ラッチFF1およびFF2に順次保持される(図4(D)および図4(E))。1組のデータがラッチFF1およびFF2に保持される1クロックサイクルにおいて、乗算部M0〜M7における係数の乗算、第1の選択部31および第2の選択部32におけるデータの選択と符号の設定、積算部40における累積値との加算が完了し、次のクロックサイクルの始まりにおいて、積算部40の積算結果が更新される(図4(F))。最後の入力データ(D03,D04)に応じて積算部40の積算結果が更新される時点で、離散コサイン変換の変換結果が確定する。
【0056】
以上説明したように、図1に示す離散コサイン変換装置によれば、離散コサイン変換対象となる8のデータが2つずつ処理されて離散コサイン変換データの生成が行われるため、1つずつデータが処理される図9に示す離散コサイン変換装置に比べて、変換速度を高速化することができる。
図4および図10のタイミング図を比較して分かるように、図9に示す離散コサイン変換装置では、ラッチFF10に入力データが保持されてから変換結果Doutが確定するまでに9クロックサイクルを要するのに対して、図1に示す離散コサイン変換装置では5クロックサイクルで変換結果が確定する。すなわち、変換速度を約2倍に高速化することができる。
【0057】
また、変換速度を同等にして両者を比較すると、図1に示す離散コサイン変換装置ではクロック周波数を下げたり電源電圧を低くしたりすることが可能なため、消費電力を大幅に削減することができる。
【0058】
また、図1に示す離散コサイン変換装置では、図9に示す離散コサイン変換装置に対して、入力データのラッチや、加算部10、減算部20の回路が追加されるのみである。
さらに、図9における選択部101と図1における選択部31、32とを比較すると、前者では8つの出力においてそれぞれ8対1の選択が行われるのに対し、後者では8つの出力においてそれぞれ4対1の選択が行われる。すなわち、図1に示す離散コサイン変換装置では、選択部における選択対象のデータ数が少なくなり、回路を削減できる。
以上のことから、図1に示す離散コサイン変換装置によれば、回路面積の増大を抑えながら、変換速度を高速化することができる。
【0059】
<第2の実施形態>
図5は、本発明の第2の実施形態に係る逆離散コサイン変換装置の構成の一例を示すブロック図である。
図5に示す逆離散コサイン変換装置は、ラッチFF3、FF4と、乗算部M8〜M15と、第1の選択部33と、第2の選択部34と、積算部41とを有する。
乗算部M8〜M11を含むユニットは、本発明の第1の乗算手段の一実施形態である。
乗算部M12〜M15を含むユニットは、本発明の第2の乗算手段の一実施形態である。
第1の選択部33は、本発明の第1の選択手段の一実施形態である。
第2の選択部34は、本発明の第2の選択手段の一実施形態である。
積算部41は、本発明の積算手段の一実施形態である。
ラッチFF3は、本発明の第1のデータ保持手段の一実施形態である。
ラッチFF4は、本発明の第2のデータ保持手段の一実施形態である。
【0060】
(ラッチFF3、FF4)
ラッチFF3は、クロック信号CLKに同期して、離散コサイン変換データA0,A2,A4,A6を順次入力して保持し、保持したデータを乗算部M8〜M11に出力する。
ラッチFF4は、クロック信号CLKに同期して、離散コサイン変換データA1,A3,A5,A7を順次入力して保持し、保持したデータを乗算部M12〜M15に出力する。
すなわち、ラッチFF3は、式(3)における変数uが偶数のデータを入力し、ラッチFF4は変数uが奇数のデータを入力する。
【0061】
(乗算部M8〜M15)
乗算部M8〜M11は、ラッチFF3に保持された離散コサイン変換データとコサイン係数K0、K2、K4、K6とを乗算し、その乗算結果S_K0、S_K2、S_K4、S_K6を第1の選択部33に出力する。
乗算部M12〜M15は、ラッチFF4に保持された離散コサイン変換データとコサイン係数K1、K3、K5、K7とを乗算し、その乗算結果S_K1、S_K3、s_K5、S_K7を第2の選択部34に出力する。
【0062】
(第1の選択部33、第2の選択部34)
第1の選択部33は、逆離散コサイン変換の結果として生成すべきデータa0〜a7のそれぞれに対して、乗算部M8〜M11から出力される乗算結果S_K0、S_K2、S_K4、S_K6の中から、乗算元の入力データの順番に応じた乗算結果を選択し、その選択結果Se_x0〜Se_x7を積算部41に出力する。すなわち、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて、乗算結果の選択を行う。
また、選択する乗算結果に対して、乗算元の入力データの順番に応じた符号(正または負)を与える。すなわち、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて、選択する乗算結果に正または負の符号を与える。
【0063】
図6は、第1の選択部33の構成の一例を示すブロック図である。
図6の例において、第1の選択部33は、選択部331〜338と、符号設定部339,3310〜3316とを有する。
【0064】
選択部331〜338は、乗算結果S_K0、S_K2、S_K4、S_K6の中から、それぞれ1つの乗算結果を選択する。何れの乗算結果を選択するかは、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて決定する。
【0065】
符号設定部339,3310〜3316は、選択部331〜338において選択された乗算結果に対して、正または負の符号を与える。たとえば、正の符号を与える場合には、入力されるデータをそのまま出力し、負の符号を与える場合には、入力されるデータを2の補数形式の負数に変換して出力する。
なお、正または負の何れに設定するかは、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて決定する。
【0066】
以上は、第1の選択部33の説明であるが、第2の選択部34においても同様な選択動作が行われる。
すなわち、第2の選択部34は、逆離散コサイン変換の結果として生成すべきデータa0〜a7のそれぞれに対して、乗算部M12〜M15から出力される乗算結果S_K1、S_K3、S_K5、S_K7の中から、乗算元の入力データの順番に応じた乗算結果を選択し、その選択結果So_x0〜So_x7を積算部41に出力する。また、選択する乗算結果に対して、乗算元の入力データの順番に応じた符号(正または負)を与える。
第2の選択部34についても、図6と同様な構成で実現可能である。
【0067】
(積算部41)
積算部41は、第1の選択部33において選択された乗算結果Se_x0〜Se_x7と、第2の選択部34において選択された乗算結果So_x0〜So_x7との和をそれぞれ積算して、式(3)に示す逆離散コサイン変換データa0〜a7を生成する。
【0068】
図7は、積算部41の構成の一例を示すブロック図である。
図7の例において、積算部41は、加算部411〜419,4110〜4116と、ラッチ4117〜4124とを有する。
加算部411,…,418は、第1の選択部33において選択されたSe_x0,…,Se_x7と、第2の選択部34において選択された乗算結果So_x0,…,So_x7とを入力し、入力した2つのデータを加算する。
加算部419,4110,…,4116は、加算部411,…,418の加算結果と、ラッチ4117,…,4124の保持データとを入力する。そして、入力したデータを互いに加算し、その加算結果をラッチ4117,…,4124へ出力する。
ラッチ4117,…,4124は、加算部419,4110,…,4116における加算結果を図示しないクロック信号CLKに同期して保持する。
【0069】
積算が開始される前に、初期化信号CLRによってラッチ(4117〜4124)の保持データはゼロに初期化される。この状態で、選択結果(Se_x0〜Se_x7、So_x0〜So_x7)が順次入力されると、前段の加算部(411〜418)において、選択結果Se_xnとSo_xn(n=0,…,7)とが加算され、この加算結果が次段の加算部(419、4110〜4116)に出力される。次段の加算部(419、4110〜4116)において、前段の加算部(411〜418)の加算結果とラッチ(4117〜4124)の保持データとが加算され、この加算結果が新たな累積値としてラッチ(4117〜4124)に保持される。結果として、ラッチ(4117〜4124)には、第1の選択部33の選択結果Se_xnと第2の選択部34の選択結果So_xnとの和を積算した値が保持される。この積算値が、逆離散コサイン変換データ(a0〜a7)として、ラッチ(4117〜4124)から出力される。
【0070】
ここで、上述した構成を有する図5に示す逆離散コサイン変換装置の動作について、入力データと係数Knとの関係を示す表3〜表5を参照しながら説明する。
表3は、式(3)におけるコサイン係数
cos{(2x+1)uπ/16}
の値と、変数uおよびxとの関係を示す表である。この表において、コサイン係数の値は、式(5)で計算される係数Knに符号を付して示している。
【0071】
【表3】
【0072】
この表3を基にして、図9に示す逆離散コサイン変換装置の乗算部(M10〜M17)の使用状況を示した表が、表4である。表中の丸印は、離散コサイン変換データAuと係数Knとの乗算結果が、選択部101において選択され、積算部102において積算されることを示している。
【0073】
【表4】
【0074】
表4を見ると、ある1つの離散コサイン変換データAuが図9に示す逆離散コサイン変換装置において処理される場合、未使用の乗算部が多く存在することが分かる。たとえば変数u=2の離散コサイン変換データA2が入力された場合、係数K0、K1、K3〜K5、K7の乗算部が未使用になる。このように、図9に示す逆離散コサイン変換装置においては、乗算部が効率良く使用されていない。
【0075】
表3において、離散コサイン変換データAuと、これに乗ぜられる係数Knとの関係をまとめると、次のようになる。
【0076】
A0 … K0;
A4 … K4;
A2,A6 … K2,K6;
A1,A3,A5,A7 … K1,K3,K5,K7;
【0077】
このように、変数uが偶数の場合、変数nが偶数である係数Knの乗算部が使用され、変数uが奇数の場合は、変数nが奇数である係数Knの乗算部が使用される。
【0078】
そこで、図5に示す逆離散コサイン変換装置では、変数uが偶数の離散コサイン変換データA0、A2、A4、A6と、変数uが奇数の離散コサイン変換A1,A3,A5,A7とが、それぞれ並列に入力されて処理される。
【0079】
すなわち、ラッチFF3には、離散コサイン変換データA0、A2、A4、A6が順次入力されて保持される。
ラッチFF3に保持されたデータには、乗算部M8〜M11において係数K0、K2、K4、K6が乗ぜられる。
第1の選択部33では、乗算元の入力データが離散コサイン変換データA0、A2、A4、A6の何れであるかに応じて、これら4つの乗算結果のうちの1つが、生成すべき逆離散コサイン変換データa0〜a7のそれぞれに対して選択され、正または負の符号を与えられて出力される。
【0080】
ラッチFF4には、離散コサイン変換A1,A3,A5,A7が順次入力されて保持される。
ラッチFF4に保持されたデータには、乗算部M12〜M15において係数K1、K3、K5、K7が乗ぜられる。
第2の選択部34では、乗算元の入力データが離散コサイン変換データA1、A3、A5、A7の何れであるかに応じて、これら4つの乗算結果のうちの1つが、生成すべき逆離散コサイン変換データa0〜a7のそれぞれに対して選択され、正または負の符号を与えられて出力される。
【0081】
第1の選択部33から出力される選択結果Se_x0〜Se_x7と、第2の選択部34から出力される選択結果So_x0〜So_x7は、積算部41において互いに加算される。すなわち、共通の逆離散コサイン変換データに対して選択された選択結果どうし(Se_xnおよびSo_xn)が互いに加算される。そして、この加算結果が、逆離散コサイン変換データa0〜a7を生成するためにそれぞれ積算される。
【0082】
表5は、図5に示す逆離散コサイン変換装置における乗算部(M8〜M15)の使用状況の一例を示す。表5に示す例では、ラッチFF3およびFF4に対し、(A0,A1)、(A2,A3)、(A4,A5)、(A6,A7)の組み合わせで離散コサイン変換データが入力される。なお、表中の数値は、離散コサイン変換データAuの変数uの値を示す。
表4と表5を比較して分かるように、図5に示す逆離散コサイン変換装置では、未使用の乗算部が少なくなり、乗算部の使用効率が向上する。
【0083】
【表5】
【0084】
図8は、図5に示す逆離散コサイン変換装置の動作を示すタイミング図である。
図8(A)はクロック信号CLKを、図8(B)および図8(D)はラッチFF3の入力データおよび保持データを、図8(C)および図4(E)はラッチFF4の入力データおよび保持データを、図8(F)は積算部41における積算結果を示す。
【0085】
図8におけるデータD00,D01,…,D07は、式(3)における離散コサイン変換データA0,A1,…A7にそれぞれ対応する。逆離散コサイン変換装置には、変数uが偶数の離散コサイン変換データA0、A2、A4、A6と、変数uが奇数の離散コサイン変換データA1、A3、A5、A7とが、並列に入力される。図8の例では、(D00,D01)、(D02,D03)、(D04,D05)、(D06,D07)の組み合わせで並列に入力される。
入力されるデータ(図8(B)および図8(C))は、クロック信号CLK(図8(A))に同期して、ラッチFF3およびFF4に順次保持される(図8(D)および図8(E))。1組のデータがラッチFF3およびFF4に保持される1クロックサイクルにおいて、乗算部M8〜M15における係数の乗算、第1の選択部33および第2の選択部34におけるデータの選択と符号の設定、積算部41における累積値との加算が完了し、次のクロックサイクルの始まりにおいて、積算部41の積算結果が更新される(図8(F))。最後の入力データ(D06,D07)に応じて積算部41の積算結果が更新される時点で、逆離散コサイン変換の変換結果が確定する。
【0086】
以上説明したように、図5に示す逆離散コサイン変換装置によれば、逆離散コサイン変換対象となる8のデータのうち、変数uが偶数の離散コサイン変換データA0、A2、A4、A6と、変数uが奇数の離散コサイン変換データA1、A3、A5、A7とが並列に処理されて逆離散コサイン変換データの生成が行われるため、1づつデータが処理される図9に示す逆離散コサイン変換装置に比べて、変換速度を高速化することができる。
図8および図10のタイミング図を比較して分かるように、図9に示す逆離散コサイン変換装置では、ラッチFF10に入力データが保持されてから変換結果Doutが確定するまでに9クロックサイクルを要するのに対して、図5に示す逆離散コサイン変換装置では5クロックサイクルで変換結果が確定する。すなわち、変換速度を約2倍に高速化することができる。
【0087】
また、変換速度を同等にして両者を比較すると、図5に示す逆離散コサイン変換装置ではクロック周波数を下げたり電源電圧を低くしたりすることが可能なため、消費電力を大幅に削減することができる。
【0088】
また、図5に示す逆離散コサイン変換装置では、図9に示す逆離散コサイン変換装置に対して、入力データのラッチが追加されるのみである。
さらに、図9における選択部101と図1における選択部33、34とを比較すると、前者では8つの出力においてそれぞれ8対1の選択が行われるのに対し、後者では16つの出力においてそれぞれ4対1の選択が行われる。すなわち、図5に示す逆離散コサイン変換装置では、選択部の出力数が2倍に増えるものの、各出力に対する選択対象のデータ数は半分になる。
以上のことから、図5に示す逆離散コサイン変換装置によれば、回路面積の増大を抑えながら、変換速度を高速化することができる。
【0089】
なお、上述した実施形態は、本発明を説明するために与えた一例に過ぎず、本発明はこれに限定されるものではない。
【0090】
たとえば、図1に示す離散コサイン変換装置では、8点の1次元離散コサイン変換を行う装置の例が示されているが、変換対象のデータ数は任意の偶数に設定可能である。本方式を使って奇数点の入力データを処理する場合、たとえば、最終データに0を加えて偶数点に拡張する処理を設けることにより、正しい結果を得ることができる。
【0091】
一般に、データ数Nの離散コサイン変換は次式で表される。
【0092】
【数4】
【0093】
式(6)において、先頭データa0から(j+1)番目のデータajに対し乗ぜられるコサイン係数CK(j)は、次式のように表される。
【0094】
【数5】
【0095】
式(6)において、末尾データa(N−1)から(j+1)番目のデータa(N−1−j)に対し乗ぜられるコサイン係数CK(N−1−j)は、次式のように表される。
【0096】
【数6】
【0097】
式(9)から分かるように、所定の順番を有した、離散コサイン変換の対象となるN個のデータa0,…,a(N−1)のうち、先頭からの順番と末尾からの順番とが等しい一対のデータに対しては、離散コサイン変換の過程において、絶対値の等しいコサイン係数が乗ぜられる。
したがって、N点の離散コサイン変換装置においても、図1に示す離散コサイン変換と同様に、先頭からの順番と末尾からの順番とが等しい一対の入力データを互いに加算する加算部と、この一対の入力データの一方から他方を減算する減算部と、加算部の加算結果および減算部の減算結果にそれぞれ所定のコサイン係数を乗算する乗算部とを設けて、入力データを2つずつ処理することができるため、変換処理の高速化を図ることが可能である。
【0098】
また、図5に示す逆離散コサイン変換装置では、8点の1次元逆離散コサイン変換を行う装置の例が示されているが、この場合においても、変換対象のデータ数は任意の偶数に設定可能である。本方式を使って奇数点の入力データを処理する場合、たとえば、最終データに0を加えて偶数点に拡張する処理を設けることにより、正しい結果を得ることができる。
【0099】
一般に、データ数Nの逆離散コサイン変換は次式で表される。
【0100】
【数7】
【0101】
式(10)においてコサイン係数
cos{(2x+1)uπ/16}
の絶対値は、余弦関数の性質から、N種類の値を持つ。すなわち、0からN−1までの整数kを
cos{k×(π/2N)}
に代入して得られるN種類の値を持つ。
【0102】
変数uが奇数とすると、積(2x+1)uの値は、奇数と奇数との積になるため、奇数となる。したがって、コサイン係数
cos{(2x+1)uπ/16}
の位相は、定数(π/16)の奇数倍となる。
【0103】
一方、変数uが偶数とすると、積(2x+1)uの値は、奇数と偶数との積になるため、偶数となる。したがって、コサイン係数
cos{(2x+1)uπ/16}
の位相は、定数(π/16)の偶数倍となる。
【0104】
このことから、変数uが奇数の場合、コサイン係数の絶対値は、
cos{k×(π/2N)}
において整数kに奇数を代入して得られる値を有する。
また、変数uが偶数の場合、コサイン係数の絶対値は、
cos{k×(π/2N)}
において整数kに偶数を代入して得られる値を有する。
【0105】
したがって、N点の逆離散コサイン変換装置においても、図5に示す逆離散コサイン変換と同様に、入力データAu(u=0,…,N−1)のうち変数uが偶数のグループに含まれる入力データに所定のコサイン係数を乗じる乗算部と、変数uが奇数のグループに含まれる入力データに所定のコサイン係数を乗じる乗算部とを設けて、これら2つのグループの入力データを並列に処理することができるため、変換処理の高速化を図ることが可能である。
【0106】
また、図7に示す積算部では、第1の選択部33および第2の選択部34の出力を加算した結果に対して積算が行われているが、たとえば、第1の選択部33および第2の選択部34の出力をそれぞれ積算した後で、その積算結果を加算することにより、逆離散コサイン変換データを生成しても良い。
【0107】
【発明の効果】
本発明の離散コサイン変換装置および逆離散コサイン変換装置によれば、消費電力の増大を抑えながら、演算速度を高速化することができる。また、演算速度の低下を抑えながら、消費電力の削減を図ることができる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る離散コサイン変換装置の構成の一例を示すブロック図である。
【図2】図1に示す離散コサイン変換装置における、第1の選択部の構成の一例を示すブロック図である。
【図3】図1に示す離散コサイン変換装置における、積算部の構成の一例を示すブロック図である。
【図4】図1に示す離散コサイン変換装置の動作を示すタイミング図である。
【図5】本発明の第2の実施形態に係る逆離散コサイン変換装置の構成の一例を示すブロック図である。
【図6】図5に示す逆離散コサイン変換装置における、第1の選択部の構成の一例を示すブロック図である。
【図7】図5に示す逆離散コサイン変換装置における、積算部の構成の一例を示すブロック図である。
【図8】図5に示す逆離散コサイン変換装置の動作を示すタイミング図である。
【図9】一般的な1次元の離散コサイン変換/逆離散コサイン変換装置の構成の一例を示すブロック図である。
【図10】図9に示す離散コサイン変換/逆離散コサイン変換装置の動作を示すタイミング図である。
【符号の説明】
FF1〜FF4…ラッチ、M0〜M15…乗算部、10…加算部、20…減算部、31,33…第1の選択部、32,34…第2の選択部、40,41…積算部
Claims (10)
- 所定の順番を有した複数の入力データと複数のコサイン係数とを乗算して得られるコサイン係数積を合成して、複数の離散コサイン変換データを生成する離散コサイン変換装置であって、
上記複数の入力データのうち、先頭からの順番と末尾からの順番とが等しい一対の入力データを互いに加算する加算手段と、
上記一対の入力データの一方から他方を減算する減算手段と、
上記加算手段の加算結果および上記減算手段の減算結果にそれぞれ上記コサイン係数を乗算し、上記コサイン係数積の和として出力する乗算手段と
を有する離散コサイン変換装置。 - 上記乗算手段は、
上記複数のコサイン係数のうち所定の係数グループに含まれるコサイン係数と、上記加算手段の加算結果とを乗算する第1の乗算手段と、
上記複数のコサイン係数のうち上記所定の係数グループに含まれない残りのコサイン係数と、上記減算手段の減算結果とを乗算する第2の乗算手段とを含む、
請求項1に記載の離散コサイン変換装置。 - 生成すべき上記複数の離散コサイン変換データのうち、所定の変換データ・グループに含まれる離散コサイン変換データのそれぞれに対して、上記第1の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果を選択する第1の選択手段と、
生成すべき上記複数の離散コサイン変換データのうち、上記所定の変換データ・グループに含まれない残りの離散コサイン変換データのそれぞれに対して、上記第2の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果を選択する第2の選択手段と、
上記第1の選択手段および上記第2の選択手段において選択された乗算結果をそれぞれ積算して、上記複数の離散コサイン変換データを生成する積算手段とを有する、
請求項2に記載の離散コサイン変換装置。 - 上記第1の選択手段および上記第2の選択手段は、選択する乗算結果に対して、乗算元の入力データの上記順番に応じた符号を与える、
請求項3に記載の離散コサイン変換装置。 - 上記一対の入力データを順次入力して保持し、当該保持したデータを上記加算手段および上記減算手段に供給するデータ保持手段を有する、
請求項1に記載の離散コサイン変換装置。 - 所定の順番を有した複数の入力データと複数のコサイン係数とを乗算して得られるコサイン係数積を合成して、複数の逆離散コサイン変換データを生成する逆離散コサイン変換装置であって、
上記複数の入力データのうち、上記順番が1つおきに離れた所定の入力データ・グループに含まれる入力データと上記複数のコサイン係数とをそれぞれ乗算し、上記コサイン係数積として出力する第1の乗算手段と、
上記複数の入力データのうち、上記所定の入力データ・グループに含まれない残りの入力データと上記複数のコサイン係数とをそれぞれ乗算し、上記コサイン係数積として出力する第2の乗算手段と
を有する逆離散コサイン変換装置。 - 上記第1の乗算手段は、上記複数のコサイン係数のうち所定の係数グループに含まれるコサイン係数と、上記所定の入力データ・グループに含まれる入力データとを乗算し、
上記第2の乗算手段は、上記複数のコサイン係数のうち上記所定の係数グループに含まれない残りのコサイン係数と、上記残りの入力データとを乗算する、
請求項6に記載の逆離散コサイン変換装置。 - 生成すべき上記複数の逆離散コサイン変換のそれぞれに対して、上記第1の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果を選択する第1の選択手段と、
生成すべき上記複数の逆離散コサイン変換のそれぞれに対して、上記第2の乗算手段から出力される複数の乗算結果の中から、乗算元の入力データの上記順番に応じた乗算結果を選択する第2の選択手段と、
上記第1の選択手段において選択された乗算結果と、上記第2の選択手段において選択された乗算結果との和をそれぞれ積算して、上記複数の逆離散コサイン変換データを生成する積算手段とを有する、
請求項7に記載の逆離散コサイン変換装置。 - 上記第1の選択手段および上記第2の選択手段は、選択する乗算結果に対して、乗算元の入力データの上記順番に応じた符号を与える、
請求項8に記載の逆離散コサイン変換装置。 - 上記所定の入力データ・グループに含まれる入力データを順次入力して保持し、当該保持したデータを上記第1の乗算手段に供給する第1のデータ保持手段と、
上記所定の入力データ・グループに含まれない残りの入力データを順次入力して保持し、当該保持したデータを上記第2の乗算手段に供給する第2のデータ保持手段とを有する、
請求項6に記載の逆離散コサイン変換装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003057570A JP2004265346A (ja) | 2003-03-04 | 2003-03-04 | 離散コサイン変換装置および逆離散コサイン変換装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003057570A JP2004265346A (ja) | 2003-03-04 | 2003-03-04 | 離散コサイン変換装置および逆離散コサイン変換装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004265346A true JP2004265346A (ja) | 2004-09-24 |
Family
ID=33120957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003057570A Pending JP2004265346A (ja) | 2003-03-04 | 2003-03-04 | 離散コサイン変換装置および逆離散コサイン変換装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004265346A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019135354A1 (ja) * | 2018-01-05 | 2019-07-11 | Nttエレクトロニクス株式会社 | 演算回路 |
-
2003
- 2003-03-04 JP JP2003057570A patent/JP2004265346A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019135354A1 (ja) * | 2018-01-05 | 2019-07-11 | Nttエレクトロニクス株式会社 | 演算回路 |
JP2019121171A (ja) * | 2018-01-05 | 2019-07-22 | 日本電信電話株式会社 | 演算回路 |
CN111615700A (zh) * | 2018-01-05 | 2020-09-01 | Ntt电子股份有限公司 | 运算电路 |
JP6995629B2 (ja) | 2018-01-05 | 2022-01-14 | 日本電信電話株式会社 | 演算回路 |
US11360741B2 (en) | 2018-01-05 | 2022-06-14 | Ntt Electronics Corporation | Arithmetic circuit |
CN111615700B (zh) * | 2018-01-05 | 2023-12-08 | Ntt创新器件有限公司 | 运算电路 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2633897C (en) | Transforms with common factors | |
KR960003648B1 (ko) | 화상데이타 처리방법 및 장치 | |
EP0506111A2 (en) | DCT/IDCT processor and data processing method | |
JPH05158966A (ja) | 行列乗算器 | |
JPH08235159A (ja) | 逆コサイン変換装置 | |
JP2004199222A (ja) | 対称型画像フィルタ処理装置、プログラム、及びその方法 | |
JP3586427B2 (ja) | Dct演算装置 | |
US6185595B1 (en) | Discrete cosine transformation operation circuit | |
JP3902990B2 (ja) | アダマール変換処理方法及びその装置 | |
JP6357345B2 (ja) | ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法 | |
WO1999059080A1 (en) | Method and apparatus for determining discrete cosine transforms | |
JP4035789B2 (ja) | 逆離散コサイン変換装置 | |
JP2004265346A (ja) | 離散コサイン変換装置および逆離散コサイン変換装置 | |
KR101412964B1 (ko) | Hevc를 위한 저면적 고성능 다중모드 1d 변환블록 및 이를 이용한 데이터 처리방법 | |
TWI468015B (zh) | 視訊解碼的平行處理裝置及方法 | |
JP3971135B2 (ja) | Dct行列分解方法及びdct装置 | |
KR101395143B1 (ko) | 영상처리의 정수변환 방법 및 정수변환 장치 | |
JP2003256405A5 (ja) | ||
Rosen et al. | A continued fraction algorithm for approximating all real polynomial roots | |
JP2003256405A (ja) | 画像処理装置、画像処理方法、プログラム、及び記憶媒体 | |
JP3575991B2 (ja) | 直交変換回路 | |
KR100392969B1 (ko) | 영상 신호 압축 및 압축해제 장치 및 방법 | |
JP3875183B2 (ja) | 演算装置 | |
JP3669052B2 (ja) | 離散コサイン変換装置 | |
JP2002504250A (ja) | データ要素の系列を変換する装置 |