(57)【特許請求の範囲】
【請求項１】
二次元デジタルデータを二次元フィルタ処理するフィルタ処理装置であって、
フィルタ演算処理用の乗算器及び加算器と、水平及び垂直方向それぞれに対して異なる遅延量の水平遅延手段及び垂直遅延手段とを有する演算ユニットと、
前記水平及び垂直遅延手段の出力と前記演算ユニットの演算内容を、所定サイクル毎に切り替え、各々の演算ユニットの出力データを同じ演算ユニットに少なくとも１度は再入力して処理することを特徴とするフィルタ処理装置。
【請求項２】
前記フィルタ処理がウェーブレット変換であることを特徴とする請求項第１項記載のフィルタ処理装置。
【請求項３】
複数の演算ユニットを従属に接続し、最終段の演算ユニットの出力をフィルタ処理後のデータとして出力すると共に、出力されたデータを２×２単位で回転し、先頭の演算ユニットに再入力することを特徴とする請求項第２項に記載のフィルタ処理装置。
【請求項４】
前記演算ユニット内の乗算器は複数の乗算係数の切り替えが可能で、処理データを巡回するごとに該乗算係数を切り替えることを特徴とする請求項第１項又は第２項に記載のフィルタ処理装置。
【請求項５】
前記水平及び垂直遅延手段の出力と前記演算器の演算内容の切り替えは、垂直遅延手段で保持する内容が、すべて新しい内容に置き換わる周期よりも短いことを特徴とする請求項第１項記載のフィルタ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像データに代表される二次元情報を、ウェーブレット変換等の二次元フィルタ処理を行うフィルタ処理装置に関する。
【０００２】
【従来の技術】
画像、特に多値画像は非常に多くの情報を含んでおり、その画像を蓄積・伝送する際にはデータ量が膨大になってしまうという問題がある。このため画像の蓄積・伝送に際しては、画像の持つ冗長性を除く、或いは画質の劣化が視覚的に認識し難い程度で画像データの変化を許容することによってデータ量を大幅に削減する高能率符号化が用いられる。
【０００３】
例えば、静止画像の国際標準符号化方式としてＩＳＯとＩＴＵ−Ｔにより勧告されたＪＰＥＧでは、画像データをブロック（８画素×８画素）ごとに離散コサイン変換（ＤＣＴ）した後に、各変換係数を各々量子化し、さらにエントロピー符号化することにより画像データを圧縮している。しかし、ブロックごとにＤＣＴ、量子化を行なっているので、復号画像の各ブロックの境界で、所謂ブロック歪みが現れやすい。
【０００４】
一方、新しい静止画像の国際標準符号化方式として検討されているＪＰＥＧ２０００では、量子化・エントロピー符号化の前に行なう変換処理として、ウェーブレット変換が用いられている。ウェーブレット変換は、ＤＣＴ変換のように小さなブロック単位で処理を行うのではなく、該ブロックより十分大きなサイズのタイル単位で変換処理をするので、前記ブロック歪がないといった特徴がある。
【０００５】
以下では、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いたウェーブレット変換フィルタ処理について説明する。
【０００６】
ＪＰＥＧ２０００で使われているウェーブレット変換は、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅという方法で処理をすると、少ない演算量で効率良く変換処理を行なうことができる。
【０００７】
図１に順方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅ、図２に逆方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅのシグナルフローを示す。図１、図２は、低域変換係数の演算に９タップのデータ、高域変換係数の演算に７タップのデータを用いる場合のシグナルフローである。図中のα、β、γ、δはＬｉｆｔｉｎｇ係数と呼ばれるものである。先ず、図１の動作について説明する。
【０００８】
入力画素をその順にＸ0, Ｘ1, Ｘ2, Ｘ3, Ｘ4, Ｘ5, ... のように表わす。該入力画素は、分類ユニットにて、偶数画素系列と奇数画素系列とに分類され、該ユニットの上側には添字が偶数の画素Ｘ0, Ｘ2, Ｘ4, ...が、下側には添字が奇数の画素 Ｘ1, Ｘ3, Ｘ5, ...が出力される。
【０００９】
初段のＬｉｆｔｉｎｇ処理では、偶数画素系列に対しＬｉｆｔｉｎｇ係数：αを乗算し、連続する２個の乗算結果を、該２画素の中央に位置する奇数画素系列中の画素に加算する。これを一般化した式で表現すると、以下のようになる。
Ｄ2n+1 ＝ Ｘ2n+1 ＋ α・Ｘ2n ＋ α・Ｘ2n+2            （１）
２段目のＬｉｆｔｉｎｇ処理では、新たに得られた奇数画素系列 Ｄ1, Ｄ3, Ｄ5, ...に対しＬｉｆｔｉｎｇ係数：βを乗算し、連続する２個の乗算結果を、該２画素の中央に位置する偶数画素系列中の画素に加算する。これを一般化した式で表現すると、以下のようになる。
Ｅ2n+2 ＝ Ｘ2n+2 ＋ β・Ｄ2n+1 ＋ β・Ｄ2n+3          （２）
３段目のＬｉｆｔｉｎｇ処理では、Ｌｉｆｔｉｎｇ係数：γを用いて、初段と同じように、４段目のＬｉｆｔｉｎｇ処理では、Ｌｉｆｔｉｎｇ係数：δを用いて、２段目と同じように処理する。３段、４段目のＬｉｆｔｉｎｇ処理内容を表わす式は、下記のようになる。
Ｈ2n+1 ＝ Ｄ2n+1 ＋ γ・Ｅ2n   ＋ γ・Ｅ2n+2          （３）
Ｌ2n+2 ＝ Ｅ2n+2 ＋ δ・Ｈ2n+1 ＋ δ・Ｈ2n+3          （４）
図中、Ｋは、ウェーブレット係数を正規化するものであるが、本発明の本質を説明するにあたって、特に関係ないことであるので、以下、説明を省略する。
【００１０】
正規化処理を無視すれば、３段、４段目のＬｉｆｔｉｎｇ処理によってえられる、Ｈn, Ｌn は各々高域変換係数と低域変換係数に対応する。
【００１１】
次に、図２に示す逆方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅのシグナルフローについて簡単に説明する。まず始めに、順方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅにおける正規化処理に対応して、逆の係数を掛けた後、４段のＬｉｆｔｉｎｇ処理を行なう。各段の処理内容を以下にまとめて式で表わすと次のようになる。
（１段目）  Ｅ2n+2 ＝ Ｌ2n+2 − δ・Ｈ2n+1 − δ・Ｈ2n+3      （５）
（２段目）  Ｄ2n+1 ＝ Ｈ2n+1 − γ・Ｅ2n   − γ・Ｅ2n+2      （６）
（３段目）  Ｘ2n+2 ＝ Ｅ2n+2 − β・Ｄ2n+1 − β・Ｄ2n+3      （７）
（４段目）  Ｘ2n+1 ＝ Ｄ2n+1 − α・Ｘ2n   − α・Ｘ2n+2      （８）
上記（５）（６）（７）（８）式は、各々（４）（３）（２）（１）式を移項して得られるものである。
【００１２】
以上が、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いたウェーブレット変換フィルタ処理についての説明である。
【００１３】
図１及び図２のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅを別の視点から表現したものが、図３及び図４に示すＬｉｆｔｉｎｇ格子構造である。同図において、□は入力データを、〇は格子点（あるいは格子点データ演算器）を表わし、〇から出ている矢印は格子点データの流れを示す。これらの図はＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅにおける基本処理（前記（１）〜（８）式の処理）並びに該処理によって得られる新たなデータを１つの格子点に対応させたものである。
【００１４】
図３に示す順方向変換のＬｉｆｔｉｎｇ格子構造では、１つの格子点データは前記（１）〜（４）式のいずれかを用いて計算される。
【００１５】
図４に示す逆方向変換のＬｉｆｔｉｎｇ格子構造では、１つの格子点データは前記（５）〜（８）式のいずれかにより計算される。
【００１６】
【発明が解決しようとする課題】
さて、水平・垂直方向の２次元のウェーブレット変換を行なうには、上記演算を水平方向と垂直方向の２方向に対して行なう必要がある。それ故、その処理するハードウェアも水平方向用と垂直方向用の２つが必要となる。つまり、まったく同じ演算を行なうのに水平方向用と垂直方向用に２つ用意していることになり、ハードウェア規模が大きくなるという問題がある。
【００１７】
本発明はかかる問題点に鑑みなされたものであり、二次元情報の水平及び垂直方向にフィルタ処理するためのハードウェア構成を簡単なものとするフィルタ処理装置を提供しようとするものである。
【００１８】
【課題を解決するための手段】
この課題を解決するため、本発明のフィルタ処理装置は以下の構成を備える。すなわち、
二次元デジタルデータを二次元フィルタ処理するフィルタ処理装置であって、
フィルタ演算処理用の乗算器及び加算器と、水平及び垂直方向それぞれに対して異なる遅延量の水平遅延手段及び垂直遅延手段とを有する演算ユニットと、
前記水平及び垂直遅延手段の出力と前記演算ユニットの演算内容を、所定サイクル毎に切り替え、各々の演算ユニットの出力データを同じ演算ユニットに少なくとも１度は再入力して処理することを特徴とする。
【００１９】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００２０】
先ず、実施形態における前提について説明する。
【００２１】
図５は、先に説明したＬｉｆｔｉｎｇ格子構造で表現されるウェーブレット変換を複数の演算ユニットを従属接続した構成で処理する場合の構成を示している。この構成のウェーブレット変換処理部を、図６に示すように２組使用して、その間に２×２データ回転部を設けることにより、垂直方向と水平方向の２次元ウェーブレット変換処理を行なう。
【００２２】
演算ユニット内部の構成としては、図７と図１２に示す２つの構成とする。以下では図７の構成の元になるウェーブレット変換処理の演算内容について簡単に説明する。なお、図７における符号７０３は乗算係数を入力したデータに乗算する乗算器であり、７０７及び７０９は２入力を加算する加算器である。
【００２３】
前記図３において、演算途中のデータを保持することにより、毎サイクル２画素ずつ入力するだけで、低域変換係数と高域変換係数各々１つずつを出力することが可能である。
【００２４】
今、演算途中のデータとして“Ｄ７ｔ、Ｅ６ｔ、Ｈ５ｔ、Ｌ４ｔ”があるものとする。該データは以下に示す式で演算されたものである。
Ｄ７ｔ  ＝  Ｘ７  ＋  α・Ｘ６              （９）
Ｅ６ｔ  ＝  Ｘ６  ＋  β・Ｄ５              （１０）
Ｈ５ｔ  ＝  Ｄ５  ＋  γ・Ｅ４              （１１）
Ｌ４ｔ  ＝  Ｅ４  ＋  δ・Ｈ３              （１２）
ここに、“Ｘ８、Ｘ９”の２つのデータが入力されると、“Ｌ４、Ｈ５”を出力するために、以下の演算が行なわれる。
Ｄ７  ＝  Ｄ７ｔ  ＋  α・Ｘ８              （１３）
Ｅ６  ＝  Ｅ６ｔ  ＋  β・Ｄ７              （１４）
Ｈ５  ＝  Ｈ５ｔ  ＋  γ・Ｅ６              （１５）
Ｌ４  ＝  Ｌ４ｔ  ＋  δ・Ｈ５              （１６）
次のサイクルの演算に備えて保持するデータ“Ｄ９ｔ、Ｅ８ｔ、Ｈ７ｔ、Ｌ６ｔ”を以下の式から求める。
Ｄ９ｔ  ＝  Ｘ９  ＋  α・Ｘ８              （１７）
Ｅ８ｔ  ＝  Ｘ８  ＋  β・Ｄ７              （１８）
Ｈ７ｔ  ＝  Ｄ７  ＋  γ・Ｅ６              （１９）
Ｌ６ｔ  ＝  Ｅ６  ＋  δ・Ｈ５              （２０）
上記入力データ“Ｘ８、Ｘ９”は、初段の演算ユニットの端子７０１と７０２から入力し、演算した結果を端子７１１と７１２から出力する。この出力は次段の演算ユニットの端子７０１と７０２に入力し順次演算処理をおこなっていく。
【００２５】
該処理内容をＬｉｆｔｉｎｇ格子構造の図にならって表現したのが図８である。同図における４つのレジスタで上記演算途中のデータを保持する。図７に示す演算ユニットを図５のように従属接続したハードウェアを構成することによって、上記一連の演算を実現することができる。
【００２６】
水平方向のウェーブレット変換処理を行なう場合、図７における遅延バッファは、図８のようにレジスタ１段か、あるいはレジスタ数段で構成され、垂直方向のウェーブレット変換を行なう場合には、前記遅延バッファはラインメモリで構成される。
【００２７】
よって、２次元のウェーブレット変換処理を行なう図６の構成においては、２×２データ回転部の前後で演算ユニット内の遅延バッファ構成は異なるものとなる。
【００２８】
＜第１の実施形態＞
さて、上記原理を元に、本発明の第１の実施形態を以下に説明する。
【００２９】
本第１の実施形態では、図７に示す演算ユニットに、遅延量の異なる２種類のバッファと該バッファを選択するセレクタを設けた図９の構成の演算ユニットを用いる。
【００３０】
図９における９０１と９０３は、イネーブル制御端子付きのレジスタで、水平方向のウェーブレット変換処理に利用する。９０５は水平１ラインのデータを格納する容量を持つラインメモリで垂直方向のウェーブレット変換処理に利用する。
【００３１】
９０７は前記レジスタ９０１の出力とラインメモリ９０５の出力の一方を選択するセレクタである。該セレクタで前記２つの出力を２サイクルおきに交互に選択することにより、水平方向と垂直方向の変換処理を交互に行なう。
【００３２】
セレクタがＶ端子側を選択している時には垂直方向のウェーブレット変換処理となり、該セレクタがＨ端子側を選択している時には水平方向のウェーブレット変換処理となる。
【００３３】
図９の演算ユニットを用いた２次元ウェーブレット変換処理部全体の構成を図１０に示す。同図において、
１００１と１００２は、垂直２画素のデータを入力する端子、
１００５〜１００８は、前記図９に示す演算ユニット（但し、乗算係数は異なる）、
１０１１は、上記演算ユニット１００１への入力データを選択するセレクタ、
１０１３は、１次元方向のウェーブレット変換処理をしたデータを２×２単位で並び替える２×２データ回転部、
１０１５は、前記４つの演算ユニットのセレクタ並びに、上記セレクタ１０１１を切り換える制御信号を入力する端子である。
【００３４】
本第１の実施形態の構成は、低域９タップ・高域７タップの２次元ウェーブレット変換処理を行なうウェーブレット変換処理装置を示している。
【００３５】
端子１００１と１００２に垂直２画素のデータを水平方向にスキャンしながら、２サイクルおきに入力する。セレクタ１０１１は、該垂直２画素のデータの入力サイクル時に該データを選択して演算ユニット１００５へ送る。他のサイクルでは、２×２データ回転部１０１３の出力データを選択して同様に演算ユニット１００５へ送る。
【００３６】
前記４つの演算ユニットは、該ユニット内のセレクタが、端子１０１５から入力される制御信号によって切り換えられることにより、垂直方向ウェーブレット変換モードあるいは水平方向ウェーブレット変換モードになったりする。
【００３７】
セレクタ１０１１が垂直２サンプルの入力データを選択するサイクルでは、垂直方向ウェーブレット変換モードになり、該セレクタが２×２データ回転部１０１３からのデータを選択するサイクルでは、水平方向ウェーブレット変換モードとなる。以上で概略説明を終え、動作説明を以下に行なう。
【００３８】
既に、数ラインと数画素の処理が済んでおり、演算ユニット内の各ラインメモリとレジスタ内には演算途中のデータが既に格納されているものとし、垂直２サンプルのデータを２サイクル続けて入力するところから説明を開始する。
【００３９】
４つの演算ユニット内の各セレクタはＶ端子側を選択しており、全体として垂直方向ウェーブレット変換モードになっており、このモードで２サイクル動作する。２サイクル動作した結果、垂直方向の低域変換係数と高域変換係数がそれぞれ２つずつ、２×２データ回転部１０１３に送られる。
【００４０】
該２×２データ回転部１０１３は図１６に示すような構成になっており、低域と高域変換係数のペアで入力された２組のデータを、４つのレジスタに取り込み、低域変換係数と高域変換係数に分けてそれぞれ２つずつのデータを２サイクルで出力する。前記４つのレジスタは取り込んだデータを出力し終わるまで、次のデータを取り込むことが無いように不図示のイネーブル端子に制御信号を与えることで制御する。
【００４１】
上記４つのレジスタに取り込んだデータの出力タイミングは、前記垂直２サンプルのデータを続けて２サイクル入力した直後の次の２サイクルである。このサイクルでは、４つの演算ユニット内の各セレクタはＨ端子側に切り替わり、全体として水平方向ウェーブレット変換モードとして動作する。
【００４２】
水平方向ウェーブレット変換モード時に活用される各演算ユニット内の２つのレジスタは、不図示のイネーブル信号で制御されて、該変換モード時における演算途中データを取り込み保持する。
【００４３】
垂直方向に低域変換された係数を水平方向に処理するサイクルでは、該変換係数の処理途中のデータをレジスタ９０１から出力し、セレクタ９０７を経由して加算器７０９に送る。このサイクルで演算された水平方向の低域変換係数ＬＬと高域変換係数ＬＨは端子１０２１、１０２２から出力され、演算途中の結果はレジスタ９０３に入力され、次のサイクルで該レジスタに取り込まれる。それまでレジスタ９０３は、垂直方向に高域変換した係数を処理したデータを保持していたが、該データは前記データの取り込み時にレジスタ９０１にシフトされ該レジスタから新たに出力される。
【００４４】
次のサイクルでは、該データを用いて、垂直方向に高域変換された係数を水平方向に処理する。上述した処理と同じように、水平方向の低域変換係数ＨＬと高域変換係数ＨＨは端子１０２１、１０２２から出力され、演算途中の結果はレジスタ９０３に入力され、次のサイクルで該レジスタに取り込まれる。前のサイクルでレジスタ９０３に取り込んだデータはレジスタ９０１にシフトされる。この時点で２つのレジスタに保持したデータは次の２サイクル（垂直方向ウェーブレット変換モード）の間、同じレジスタで保持し続ける。
【００４５】
以上の処理で水平方向ウェーブレット変換モードを終了し、また垂直方向ウェーブレット変換モードに戻る。上述した４サイクルの処理を繰り返すことで画像全体を２次元ウェーブレット変換処理することができるようになる。
【００４６】
上記４サイクルの間に、入力端子１００１、１００２から垂直２サンプルのデータを２組、すなわち４サンプルの画素データを受け取り処理するわけであるから、処理レートは１サイクル当たり１サンプルとなる。
【００４７】
なお、９／７フィルタの２次元ウェーブレット変換の処理レートが１サイクル当たり１サンプルでよい場合、本実施形態は固定係数を乗算する定数乗算器を４個しか使用しないという点で、最適な構成であると言える。
【００４８】
上記動作説明は、本発明の最も基本的な構成について理解してもらうためのもので、高速化のためのパイプライン処理については触れていない。実際のハードウェアでは、各演算ユニット間にレジスタを挿入することによってパイプライン化を図り、レジスタ間の演算遅延時間を小さくし、動作周波数を高くするといった高速化が行なわれる。
【００４９】
その場合、端子１００１と１００２から入力したデータを演算処理した結果が演算ユニット１００８から出力されるまで３又は４サイクルかかってしまう。そうなると、上記動作説明のように、垂直方向にウェーブレット変換した結果をすぐにセレクタ１０１１へ入力し、直後に水平方向のウェーブレット変換処理をするといったことができなくなる。
【００５０】
すなわち、垂直方向にウェーブレット変換した結果を直ちに水平方向のウェーブレット変換処理しようとしても、変換結果出力直後の前記演算ユニットの変換モードが水平方向ウェーブレット変換モードになっていないといったことが、動作タイミング上でてくる。前記変換モードは２サイクルおきに変わるため、最大２サイクル待てば、水平方向ウェーブレット変換モードに変わり、前記変換出力を水平方向にウェーブレット変換することが出来るようになる。
【００５１】
よって、２×２データ回転部におけるレジスタの数が増えることになる。パイプライン処理しない場合、垂直方向の変換処理結果を格納するためのレジスタと、水平方向の変換処理の際に入力データを供給するためのレジスタを共用できたが、上述のパイプライン処理化によりタイミングが合わなくなってくると、該２種類のレジスタを別々に持つ必要がでてくる。
【００５２】
しかし、パイプライン処理する／しないに関わらず、次の点は同じである。各演算ユニット単位で見た時、垂直方向の変換処理を２サイクル行なった後は、水平方向の変換処理を２サイクル行なう。セレクタ１０１１も２サイクル毎に切り替え動作を行なう。
【００５３】
以下では、各種変形と応用例について説明する。
【００５４】
前記レジスタ９０１，９０３にイネーブル端子を設けない場合、すなわち、該レジスタにクロックが入力されると単純に入力データを取り込むだけの動作をする場合には、該レジスタを４つ並べれば上記機能を実現できる。この４つのレジスタの内、変換処理に有効なデータを保持しているのは２つのみで、他の２つは無効なデータである。この無効なデータはセレクタ９０７で選択されることが無いように該セレクタの切り換えタイミングが制御されるので該無効データは無視することができる。
【００５５】
上記実施形態の説明では、２サイクルおきに垂直２サンプルのデータを入力していたが、１サイクルおきに入力しても２次元ウェーブレット変換処理することは可能である。この場合、前記演算ユニット群の垂直方向ウェーブレット変換モードと水平方向ウェーブレット変換モードの切り換えも１サイクル毎に行なう。具体的な制御としては、セレクタ９０７の切り換えを１サイクル毎に行ない、レジスタ９０３への演算途中データの取り込みも１サイクルおきに行なう。このように制御の方法が若干異なるだけで、演算処理系の構成は上記実施形態で説明した構成とまったく同じである。
【００５６】
これまでの説明では、垂直方向のウェーブレット変換後に水平方向のウェーブレット変換を行なうという処理の順序であったが、水平方向のウェーブレット変換後に垂直方向のウェーブレット変換を行なうこともできる。この場合、端子１００１，１００２から入力するデータは水平２サンプルのデータを入力し、該入力データを水平方向ウェーブレット変換モードで処理する。水平２サンプルのデータ入力は２サイクルおきでもよいし１サイクルおきでもよいが、同一ラインのデータを単純にスキャンして入力するのではなく、２ラインのデータを交互に入力しながらスキャンしていく。
【００５７】
該２ラインは、前述した垂直２サンプルを入力する場合の２サンプルが属する２ラインに対応する。
【００５８】
２ラインのデータを交互に入力することで、２×２データ回転部に、該２ラインの水平方向の低域変換係数と高域変換係数が蓄えられる。これを９０度回転して垂直２サンプルずつの低域変換係数と高域変換係数に並び替え、前記水平２サンプルのデータを入力しない空きサイクル期間に、セレクタ１０１１を経由して演算ユニット１００５へ入力する。この時、４つの演算ユニット１００５〜１００８は垂直方向ウェーブレット変換モードとして動作する。
【００５９】
以上の動作により、水平方向のウェーブレット変換処理を先に行なった後に垂直方向のウェーブレット変換処理を行なうことができる。このような処理も図１０と同じ構成で制御方法を変えるだけで対応できる。
【００６０】
ウェーブレット変換した変換係数は逆ウェーブレット変換しなければ元の画像に戻すことが出来ないので、逆ウェーブレット変換を行なう機能も当然必要となる。
【００６１】
逆ウェーブレット変換は、図１１に示すＬｉｆｔｉｎｇ格子構造に基づき、以下に示す演算で処理する。まず“Ｘ３、Ｘ４”を出力するために以下の演算を行なう。
Ｅ６  ＝  Ｌ６ｔ  −  δ・Ｈ７              （２１）
Ｄ５  ＝  Ｈ５ｔ  −  γ・Ｅ６              （２２）
Ｘ４  ＝  Ｅ４ｔ  −  β・Ｄ５              （２３）
Ｘ３  ＝  Ｄ３ｔ  −  α・Ｘ４              （２４）
次の演算に残すデータを以下のように演算する。
Ｌ８ｔ  ＝  Ｌ８  −  δ・Ｈ７              （２５）
Ｈ７ｔ  ＝  Ｈ７  −  γ・Ｅ６              （２６）
Ｅ６ｔ  ＝  Ｅ６  −  β・Ｄ５              （２７）
Ｄ５ｔ  ＝  Ｄ５  −  α・Ｘ４              （２８）
上記演算のために受け取る中間データが“Ｌ６ｔ、Ｈ５ｔ、Ｅ４ｔ、Ｄ３ｔ”であり、次の演算のために残すデータが“Ｌ８ｔ、Ｈ７ｔ、Ｅ６ｔ、Ｄ５ｔ”であるため、２サンプルずつ位置をずらせば繰り返し演算することが可能である。
【００６２】
順方向ウェーブレット変換の演算を表わすＬｉｆｔｉｎｇ格子構造である図８と比較すると、乗算係数の順序が逆になっているのと該乗算係数に−の符号がついていることを除けば、図１１は図８と同じ構造になっていると言える。
【００６３】
よって、本実施形態の構成を一部修正するだけで、逆方向のウェーブレット変換処理も行なうことが出来るようになる。具体的には以下の２つの方法がある。
（１）１つの演算ユニット内に２つの乗算器を用意してそれを切り換える。
（２）演算ユニット内の加算器を加減算器に変更し、順方向変換時には加算器として使用し逆方向変換時には減算器として使用すると共に、逆方向変換時には演算ユニット１００８→１００７→１００６→１００５の順に処理データを流すようにデータの流れを変える。これは、セレクタ等を用いて制御することができる。
【００６４】
以上が、逆方向ウェーブレット変換処理も可能な構成についての説明である。
【００６５】
また、本発明は、図１２の構成の演算ユニットに、遅延量の異なる２種類のバッファと該バッファを選択するセレクタを設けた図１３の構成の演算ユニットを従属接続してウェーブレット変換処理する場合にも適用可能である。
【００６６】
＜第２の実施形態＞
第２の実施形態では、垂直方向のウェーブレット変換・水平方向のウェーブレット変換処理をそれぞれ１つの演算ユニットで処理し、２×２データ回転部を挟んで該演算ユニットを従属接続することで、２次元のウェーブレット変換処理を行なう構成について示す。
【００６７】
第２の実施形態の構成を図１４に示す。同図において、１４０１は垂直方向ウェーブレット変換用の演算ユニット、１４０３は水平方向ウェーブレット変換用の演算ユニット、１４１１と１４１３は、それぞれ上記演算ユニットに入力するデータを選択するセレクタ、１４２１〜１４２４は、同じ演算ユニットに処理したデータを再入力するために、該データを保持するレジスタであり、その他の構成要素は、前記第１の実施形態で示した構成：図１０における同一番号要素と同じである。
【００６８】
これまでに説明した構成では、９／７フィルタの１次元ウェーブレット変換処理をするには、図５に示すように、演算ユニットが４つ必要であった。
【００６９】
これを１つの演算ユニットで処理するには、該演算ユニットの出力データを繰り返し入力して処理する必要がある。そのようにデータの流れを制御するのがセレクタ１４１１と１４１３である。
【００７０】
端子１００１、１００２から入力された垂直２サンプルのデータはセレクタ１４１１で選択されて演算ユニット１４０１に入力される。該演算ユニットでは第１のステップの演算として、乗算係数αを用いてＬｉｆｔｉｎｇ演算を行ない、演算結果を出力する。
【００７１】
出力された演算結果はレジスタ１４２１、１４２２に保持されて、セレクタ１４１１に入力され、該セレクタにて選択されて前記演算ユニットに再入力される。該演算ユニットでは第２のステップの演算が行なわれる。
【００７２】
該演算ユニットから出力される演算結果は、レジスタ１４２１，１４２２で保持して、同様にセレクタ１４１１経由で該演算ユニットに再入力し、第３のステップ、第４のステップの演算を行なう。弟２、第３、第４のステップでは、それぞれ乗算係数としてβ、γ、δが用いられ、Ｌｉｆｔｉｎｇ演算が行なわれる。
【００７３】
第４ステップの演算が終了した演算結果は、垂直方向のウェーブレット変換処理をした低域と高域の変換係数である。
【００７４】
該変換係数は２×２データ回転部１０１３に送られる。２組の低域・高域変換係数が該２×２データ回転部に入力されると、低域変換係数２つと高域変換係数２つ、すなわち、水平方向２サンプルのデータ２組に並び替えられてから出力される。
【００７５】
該係数データは、セレクタ１４１３で選択されて、演算ユニット１４０３に入力される。前記演算ユニット１４０１と同様、該演算ユニット１４０３も第１〜４のステップの演算処理を行なう。該演算ユニットから出力するデータをレジスタ１４２３、１４２４で保持し、セレクタ１４１３を経由して、前記演算ユニットに再入力する。セレクタ１４１１、１４１３はいずれも、新たなデータを入力したサイクルの次の３サイクルは次段の演算ユニットで処理して出力したデータを再入力する。
【００７６】
前記２×２データ回転部から先行して出力する低域変換係数を上記第１〜４のステップで演算し終えた後に、続いて２×２データ回転部より出力する高域変換係数をセレクタ１４１３経由で演算ユニット１４０３に入力し、該高域変換係数の処理を行なう。
【００７７】
各変換係数を、演算ユニット１４０３において、第１〜４ステップの演算処理をした結果は、上記垂直方向の低域と高域の変換係数をさらに水平方向の低域と高域の変換係数に分けたもの、すなわち、２次元ウェーブレット変換処理した４種類の変換係数である。該変換係数は端子１０２１、１０２２から２回に分けて外部へ出力される。
【００７８】
演算ユニット１４０１には遅延バッファとして、図９に示した演算ユニット内のラインメモリ４つ分の容量が必要になる。このラインメモリは該容量の１つの大きなラインメモリであってもよいし、図９におけるラインメモリと同じ容量のラインメモリを４つ持ち、それを演算ステップに対応して切り換えてもよい。
【００７９】
演算ユニット１４０３は、２種類のデータに対し第１〜４ステップの演算を行なうため、８種類の演算途中データが必要である。よって、該演算ユニットにおける遅延バッファには該演算途中データを格納できる８段のレジスタがあればよい。
【００８０】
前記第１の実施形態と同様、図１２の構成の演算ユニットに、上記遅延バッファを持たせることで、該構成の演算ユニットを用いて本実施形態と同じ処理をすることが可能である。
【００８１】
＜第３の実施形態＞
第３の実施形態は、前記第１の実施形態と第２の実施形態を組み合わせて、さらに演算ユニットの数を減らした構成について示す。
【００８２】
前記第１の実施形態は、垂直方向のウェーブレット変換処理と水平方向のウェーブレット変換処理を共通の演算ユニット群で交互に処理するものであった。第２の実施形態は、１次元方向のウェーブレット変換処理における複数の演算ステップを単一の演算ユニットで処理するものであった。
【００８３】
本実施形態では、水平と垂直の両方向のウェーブレット変換処理における複数の演算ステップを全て１つの演算ユニットで行なうものである。本実施形態の構成を図１５に示す。
【００８４】
同図において、１５０１は２次元ウェーブレット変換のすべての演算を行なう演算ユニット、１５０３は２入力が３系統ありその内の１系統を選択するセレクタであり、その他は前記図１４における同一番号の構成要素と同じである。
【００８５】
前記第２の実施形態と同様、１組の入力データまたは１組の変換係数を４つの連続サイクルで前記第１〜４ステップの演算処理を行なう。２組の入力データと該データをウェーブレット変換した２組の変換係数、すなわち、４組のデータが処理の最小単位となるので、１６サイクル周期で変換処理を行なう。
【００８６】
１６サイクルの前半８サイクルで２組の入力データを垂直ウェーブレット変換処理する。この時、演算ユニット１５０１は図１４における演算ユニット１４０１と同等の処理を行なう。垂直ウェーブレット変換された２組の変換係数は、２×２データ回転部１０１３に取り込まれ、垂直方向の低域変換係数２つと高域変換係数２つ、すなわち、水平方向２サンプルのデータ２組に並び替えられて出力される。
【００８７】
１６サイクルの後半の８サイクルでは、前記２×２データ回転部から出力される２組の変換係数をレジスタ１４２１、１４２２で保持し、セレクタ１５０３経由で演算ユニットに再入力して水平ウェーブレット変換処理する。この時、演算ユニット１５０１は図１４における演算ユニット１４０３と同等の処理を行なう。
【００８８】
２次元ウェーブレット変換処理して求められた変換係数は、端子１０２１、１０２２から外部に出力される。
【００８９】
本実施形態における演算ユニット１５０１は、水平と垂直の両方のウェーブレット変換処理を行なうため、前記第２の実施形態における２つの演算ユニット１４０１と１４０３がそれぞれ有する遅延バッファの両方を合わせ持つ。
【００９０】
また、本実施形態においても、前記図１２の構成の演算ユニットを拡張して使用することができる。
【００９１】
以上説明したように本第１乃至第３の実施形態によれば、ウェーブレット変換等の水平及び垂直方向に対するフィルタ処理が、ごく単純な構成により実現出来るようになり、ハードウェア規模もより小さなものとすることができる。
【００９２】
なお、上記実施形態では、ウェーブレット変換（及び逆ウェーブレット変換）についてのみ説明したが、本発明は、画像に代表される二次元的な情報について水平及び垂直方向にフィルタ処理する場合に適用できるものであるので、その用途によって限定されるものではない。
【００９３】
また、上記実施形態で説明した回路構成は、例えばパーソナルコンピュータが有するバススロット（例えばＰＣＩバススロット）に装着するエンコーダ及びデコーダカードとしても適用できる。
【００９４】
【発明の効果】
以上説明したように本発明によれば、二次元情報の水平及び垂直方向にフィルタ処理するためのハードウェア構成を簡単なものとすることができる。従って、ＪＰＥＧ２０００等におけるウェーブレット変換にこれを適用した場合には、その変換にかかる装置を小型化でき、十分な処理速度を得ることができる。
【図面の簡単な説明】
【図１】順変換のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅを示す図である。
【図２】逆変換のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅを示す図である。
【図３】ＤＷＴ（順方向ウェーブレット変換）のＬｉｆｔｉｎｇ格子構造を示す図である。
【図４】ＩＤＷＴ（逆方向ウェーブレット変換）のＬｉｆｔｉｎｇ格子構造を示す図である。
【図５】１次元ウェーブレット変換処理部の構成を示す図である。
【図６】２次元ウェーブレット変換処理部の構成を示す図である。
【図７】演算ユニットの内部構成を示す図である。
【図８】演算結果を再利用するＤＷＴ演算のＬｉｆｔｉｎｇ格子構造を示す図である。
【図９】第１の実施形態で用いる演算ユニットの内部構成を示す図である。
【図１０】第１の実施形態の構成を示す図である。
【図１１】演算結果を再利用するＩＤＷＴ演算のＬｉｆｔｉｎｇ格子構造を示す図である。
【図１２】格子点データ演算ユニットの構成を示す図である。
【図１３】図１２の演算ユニットを第１の実施形態で用いるために修正した構成を示す図である。
【図１４】第２の実施形態の構成を示す図である。
【図１５】第３の実施形態の構成を示す図である。
【図１６】２×２データ回転部の構成を示す図である。
【図１】
0004700838.tif 000002
【図２】
0004700838.tif 000003
【図３】
0004700838.tif 000004
【図４】
0004700838.tif 000005
【図５】
0004700838.tif 000006
【図６】
0004700838.tif 000007
【図７】
0004700838.tif 000008
【図８】
0004700838.tif 000009
【図９】
0004700838.tif 000010
【図１０】
0004700838.tif 000011
【図１１】
0004700838.tif 000012
【図１２】
0004700838.tif 000013
【図１３】
0004700838.tif 000014
【図１４】
0004700838.tif 000015
【図１５】
0004700838.tif 000016
【図１６】
0004700838.tif 000017