(57)【特許請求の範囲】
【請求項１】
複数の演算ユニットによりフィルタ処理を行うフィルタ処理装置であって、
各演算ユニットは、
フィルタ処理の対象となる２つの入力データの一方を第１入力データ、他方を第２入力データとして入力するデータ入力手段と、
前記データ入力手段から前記第１入力データを取得し、該取得した第１入力データを所定時間だけ遅延させてから出力するデータ遅延手段と、
前記第１入力データよりも前記所定時間だけ過去に前記データ遅延手段が前記データ入力手段から取得した第１過去入力データを前記データ遅延手段から取得し、該取得した第１過去入力データに係数を乗算したデータと、前記第１入力データに係数を乗算したデータと、前記第２入力データと、が加算されたデータを生成する演算手段と、
前記演算手段が前記加算により生成したデータを第１出力データ、前記データ遅延手段が出力した前記第１過去入力データを第２出力データ、として出力する出力手段と
を有し、
前記複数の演算ユニットは直列に接続され、ｉ番目の演算ユニットの第１出力データを（ｉ＋１）番目の演算ユニットの第１入力データとし、ｉ番目の演算ユニットの第２出力データを（ｉ＋１）番目の演算ユニットの第２入力データとすることを特徴とするフィルタ処理装置。
【請求項２】
入力したデータを所定時間だけ遅延させてから出力するデータ遅延手段と、複数の演算ユニットと、を用いてフィルタ処理を行うフィルタ処理装置であって、
各演算ユニットは、
フィルタ処理の対象となる２つの入力データの一方を第１入力データ、他方を第２入力データとして入力するデータ入力手段と、
前記第１入力データを前記データ遅延手段に出力する出力手段と、
前記データ遅延手段から出力された、前記第１入力データよりも前記所定時間だけ過去に前記出力手段が前記データ遅延手段に出力した第１過去入力データを取得する取得手段と、
前記第１入力データに係数を乗算したデータと、前記第２入力データと、前記取得手段が取得した前記第１過去入力データに係数を乗算したデータと、が加算されたデータを生成する演算手段と、
前記演算手段が前記加算により生成したデータを第１出力データ、前記データ遅延手段が出力した前記第１過去入力データを第２出力データとして出力する手段と
を有し、
前記複数の演算ユニットは直列に接続され、ｉ番目の演算ユニットの第１出力データを（ｉ＋１）番目の演算ユニットの第１入力データとし、ｉ番目の演算ユニットの第２出力データを（ｉ＋１）番目の演算ユニットの第２入力データとすることを特徴とするフィルタ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部入力データに対してフィルタ処理を行うフィルタ処理装置に関するものである。
【０００２】
【従来の技術】
画像、特に多値画像は非常に多くの情報を含んでおり、その画像を蓄積・伝送する際にはデータ量が膨大になってしまうという問題がある。このため画像の蓄積・伝送に際しては、画像の持つ冗長性を除く、或いは画質の劣化が視覚的に認識し難い程度で画像の内容を変更することによってデータ量を削減する高能率符号化が用いられる。
【０００３】
例えば、静止画像の国際標準符号化方式としてＩＳＯとＩＴＵ−Ｔにより勧告されたＪＰＥＧでは、画像データをブロックごと（８画素×８画素）に離散コサイン変換（ＤＣＴ）でＤＣＴ係数に変換した後に、各係数を各々量子化し、さらにエントロピー符号化することにより画像データを圧縮している。ブロックごとにＤＣＴ、量子化を行なっているので、復号画像の各ブロックの境界で、所謂ブロック歪みが見える場合がある。
【０００４】
一方、新しい静止画像の国際標準符号化方式としてＪＰＥＧ２０００が検討されているが、ＪＰＥＧ２０００では、量子化の前に行う前処理の一つとして、ウェーブレット変換が提案されている。ウェーブレット変換は、現行ＪＰＥＧのようにブロック単位で処理を行うのではなく、入力データを連続的に処理するので、復号画像の劣化が視覚的に見えにくいという特徴がある。
【０００５】
図１は、変換用メモリ１０１と離散ウェーブレット変換部１０２の動作を説明する図である。
【０００６】
図２（ａ）は、離散ウェーブレット変換部１０２の基本構成を示すブロックである。同図左は、順方向の離散ウェーブレット変換（以下、ＤＷＴ）を行う装置（離散ウェーブレット変換部１０２）の基本構成であり、Ｈ０は低域通過特性を持つフィルタ、Ｈ１は高域通過特性を持つフィルタである。同図右は逆方向の離散ウェーブレット変換（逆離散ウェーブレット変換）を行う装置の基本構成を示す図である。フィルタの係数の一例を図５に示す。以下、説明を簡略化するため、同図に示す、５×３構成（低域５タップ・高域３タップ）の順方向のフィルタ係数を元に説明を行う。
【０００７】
図２（ｂ）に示す入力画像が、左上から主走査方向に離散ウェーブレット変換部１０２に順次入力されてくる場合を例にとり説明する。画像の大きさはＮ×Ｍとする。
【０００８】
図２（ａ）の左側より入力された画像データは、低域通過特性を持つフィルタＨ０及び、高域通過特性を持つフィルタＨ１によりフィルタリングされた後、その各々の結果が２：１にダウンサンプリングされ、最終的に入力と同数(Ｎ×Ｍ)のウェーブレット係数として出力される。
【０００９】
垂直方向に上述のフィルタリング処理をするために、画像データを変換用メモリ１０１に格納し、垂直方向Ｍ画素に対して垂直フィルタリング処理を施しながら、水平方向にスキャンする。その結果、図２（ｃ）に示すとおり、低域側のウェーブレット係数Ｌと高域側のウェーブレット係数Ｈとの２つのサブバンドを生成する。
【００１０】
さらにサブバンドに分割し、水平方向のウェーブレット係数を得るために、ウェーブレット係数Ｌ、Ｈは変換用メモリ１０１にいったん全て格納される。
【００１１】
変換用メモリ１０１に格納されたウェーブレット係数は水平方向に読み出され、離散ウェーブレット変換部１０２により、水平方向Ｎ個の係数に対してＨ０及びＨ１によりフィルタリングを施し、結果は２：１にダウンサンプリングされる。図２（ｄ）に示すように、係数ＬにＨ０を施したものがＬＬ、Ｈ１を施したものがＬＨであり、ＨにＨ０を施したものがＨＬ、Ｈ１を施したものがＨＨである。ＬＬ、ＬＨ、ＨＬ、ＨＨのそれぞれの大きさは（（Ｎ／２）×（Ｍ／２））である。
【００１２】
以上説明した離散ウェーブレット変換方法とは異なる構成方法である、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅと呼ばれる方法が知られている。図３に順方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅ，図４に逆方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅの基本構成を示す。図中のｐ，ｕはＬｉｆｔｉｎｇ係数と呼ばれるもので、図６に５×３フィルターと同一の出力を生成するためのＬｉｆｔｉｎｇ係数の例を示す。
【００１３】
図６に示すＬｉｆｔｉｎｇ係数
ｐ＝（−１，−１）／２
ｕ＝（  １，  １）／４
を元に、以下、図３に示した順方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅの動作について説明する。
【００１４】
Ｘは入力画像であり、同図に示すように（Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５．．．）である。入力画像は各々、偶数番目の画素、奇数番目の画素に分類される。入力画像のうち、偶数番目の画素をＸｅ、奇数番目の画素をＸｏとする。分類された画素は、Ｌｉｆｔｉｎｇ係数を乗ぜられた後に加算処理をなされ、低域側の係数と、高域側の係数に変換される。具体的に式で示すと、
（高域側の係数）  Ｘ'ｏ＝Ｘｏ＋ｐ・Ｘｅ
（低域側の係数）  Ｘ'ｅ＝Ｘｅ＋ｕ・Ｘ'ｏ
となる。なお、Ｘ'ｏ、Ｘ'ｅは、夫々低域側、高域側の係数である。また図中のｋは、ウェーブレット係数を正規化するものであるが、ここで説明する内容の趣旨から外れるので、説明を省く。
【００１５】
図４の逆方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅの出力である画素の生成を具体的に式で示すと、
（偶数番目の画素）  Ｘｅ＝Ｘ'ｅ−ｕ・Ｘ'ｏ
（奇数番目の画素）  Ｘｏ＝Ｘ'ｏ−ｐ・Ｘｅ
となる。
【００１６】
図３，４より、フィルタの構成が変われば、Ｌｉｆｔｉｎｇ係数、ならびに対象となる処理画素が異なることになるが、同様にして、順方向、逆方向の係数への変換を行うことができる。
【００１７】
このＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いると、量子化しない（あるいは量子化ステップ１で量子化する）場合、量子化後の情報のロスが無ければ圧縮符号化・復号化して復元されるデータが元のデータとまったく同じになる可逆的な変換を行なうことが出来る。ＪＰＥＧ２０００では、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを採用して可逆的変換を実現している。
【００１８】
Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅには、その他にフィルタ処理に要する演算量を少なくすることが出来るという特徴もあり、ＪＰＥＧ２０００の９×７構成（低域９タップ・高域７タップ）のフィルタにも用いられている。
【００１９】
しかしながら、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いてフィルタ処理の演算量を少なくすることが出来るのは、フィルタの方向と処理のスキャン方向が同じ場合、すなわち、画像データを水平方向にスキャンしながら水平方向のフィルタ処理を行なうといった場合である。これは、前のサンプル点で高域と低域側の変換係数を出力するために演算した途中の結果を、次のサンプル点で再利用できるためである。
【００２０】
図７に示したＬｉｆｔｉｎｇ  Ｌａｔｔｉｃｅを用いて、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅにおける処理について説明する。
【００２１】
水平方向の画素の系列Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４．．．があり、これらの画素の系列に対して水平方向のＤＷＴ変換を行うと共に、右方向にスキャンする場合について考える。既に、黒丸で示した位置に対応する変換係数ｓ４とｄ５が求められているものとする。
【００２２】
ｓ４は９×７構成ＤＷＴフィルタの低域側の変換係数で、ｄ５は高域側の変換係数である。このｓ４とｄ５を求めるために、図７における灰色の丸で示した８つの変換データも既に計算されている。例えば、変換データの１つであるｄ’１は以下のように計算される。
【００２３】
ｄ’１＝Ｘ１＋α・（Ｘ０＋Ｘ２）
他の変換データも入力と乗算係数等が変わるだけで、演算式は同じである。ちなみに、ＪＰＥＧ２０００では以下のように係数が定義されている。
【００２４】
α  ＝  −１．５８６１３４３４２
β  ＝  −０．０５２９８０１１８
γ  ＝    ０．８８２９１１０７５
δ  ＝    ０．４４３５０６８５２
同図において、灰色の丸が全部計算されている場合、次に求めるべき変換係数はｓ６とｄ７であり、先に計算した変換データや変換係数を再利用すれば、新たに計算しなければならないのは、変換データとしてｄ’９とｓ’８の２つ、変換係数としてｓ６とｄ７の２つの計４つだけで済む。１変換係数当たりではわずか２つの計算で済むことになる。
【００２５】
１つの計算の内訳は、３つの入力の両端を足し合わせる加算１回、該加算結果にα或いはβ、γ、δ等の係数を掛ける乗算１回、該乗算結果を真中の入力に加算する加算１回（２回目の加算演算）である。以下ではこの計算を格子点演算と呼ぶことにする。
【００２６】
再利用する変換係数・データは、ｄ５，ｓ’６，ｄ’７の３つで、計算した値をレジスタに保持するだけで特別な制御も必要なく、簡単に再利用できることが図７のＬｉｆｔｉｎｇ  Ｌａｔｔｉｃｅから容易に理解できる。
【００２７】
【発明が解決しようとする課題】
従来は、コーデックの一部の処理として、ウェーブレット変換等のフィルタ処理が必要な場合、順方向変換用のフィルタ処理部と逆方向変換用のフィルタ処理部といった２種類のフィルタ処理部を用意する必要があり、その結果回路規模が増大することとなった。また、フィルタが階層設計に適した構成になっておらず、回路の構造が複雑となり、開発やデバッグに要する時間もかかり、該機能を搭載した製品のコストアップの要因にもなっていた。
【００２８】
本発明は以上の問題点に対して鑑みてなされたものであり、乗算と加算を行う演算ユニットを複数用いて、フィルタ処理を行うことにより、フィルタ処理回路の構造を簡素化することを目的とする。
【００２９】
【課題を解決するための手段】
本発明の目的を達成するために、例えば、本発明のフィルタ処理装置は以下の構成を備える。
即ち、複数の演算ユニットによりフィルタ処理を行うフィルタ処理装置であって、
各演算ユニットは、
フィルタ処理の対象となる２つの入力データの一方を第１入力データ、他方を第２入力データとして入力するデータ入力手段と、
前記データ入力手段から前記第１入力データを取得し、該取得した第１入力データを所定時間だけ遅延させてから出力するデータ遅延手段と、
前記第１入力データよりも前記所定時間だけ過去に前記データ遅延手段が前記データ入力手段から取得した第１過去入力データを前記データ遅延手段から取得し、該取得した第１過去入力データに係数を乗算したデータと、前記第１入力データに係数を乗算したデータと、前記第２入力データと、が加算されたデータを生成する演算手段と、
前記演算手段が前記加算により生成したデータを第１出力データ、前記データ遅延手段が出力した前記第１過去入力データを第２出力データ、として出力する出力手段と
を有し、
前記複数の演算ユニットは直列に接続され、ｉ番目の演算ユニットの第１出力データを（ｉ＋１）番目の演算ユニットの第１入力データとし、ｉ番目の演算ユニットの第２出力データを（ｉ＋１）番目の演算ユニットの第２入力データとすることを特徴とする。
【００３０】
本発明の目的を達成するために、例えば、本発明のフィルタ処理装置は以下の構成を備える。
即ち、入力したデータを所定時間だけ遅延させてから出力するデータ遅延手段と、複数の演算ユニットと、を用いてフィルタ処理を行うフィルタ処理装置であって、
各演算ユニットは、
フィルタ処理の対象となる２つの入力データの一方を第１入力データ、他方を第２入力データとして入力するデータ入力手段と、
前記第１入力データを前記データ遅延手段に出力する出力手段と、
前記データ遅延手段から出力された、前記第１入力データよりも前記所定時間だけ過去に前記出力手段が前記データ遅延手段に出力した第１過去入力データを取得する取得手段と、
前記第１入力データに係数を乗算したデータと、前記第２入力データと、前記取得手段が取得した前記第１過去入力データに係数を乗算したデータと、が加算されたデータを生成する演算手段と、
前記演算手段が前記加算により生成したデータを第１出力データ、前記データ遅延手段が出力した前記第１過去入力データを第２出力データとして出力する手段と
を有し、
前記複数の演算ユニットは直列に接続され、ｉ番目の演算ユニットの第１出力データを（ｉ＋１）番目の演算ユニットの第１入力データとし、ｉ番目の演算ユニットの第２出力データを（ｉ＋１）番目の演算ユニットの第２入力データとすることを特徴とする。
【００３１】
【発明の実施の形態】
以下添付図面に従って、本発明を好適な実施形態に従って詳細に説明する。
【００３２】
［第１の実施形態］
前記従来例の説明では、水平方向の画素系列：Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，．．．を図７のフィルタ処理への入力画素として説明したが、以下の実施形態では、図８に示すとおり、９ライン分のデータのうち、縦一列の９画素のデータ（Ｙ０，Ｙ１，Ｙ２，Ｙ３，Ｙ４，．．．，Ｙ８）を入力するものとする。
【００３３】
以下では、垂直方向のフィルタ処理をしながら水平方向にスキャンをするといった処理についてまず考える。
【００３４】
垂直方向のフィルタ処理をしながら水平方向にスキャンをすると、９つの入力画素が次に処理する列の９画素に全面的に切り替わるため、１列前の変換係数を演算する時に計算した途中の演算結果を用いることができない。そのため、水平方向にスキャンして列が切り替わるごとに、図８における灰色の丸に対応する変換データをすべて計算する必要がある。黒丸に対応するのは変換係数（低域側の変換係数と高域側の変換係数）であるため、これは元々計算する必要がある。
【００３５】
よって、列が切り替わる度に１０回の計算、１つの係数当たり５回の計算が必要になる。これは途中の計算結果を再利用できる場合の２．５倍の演算量になる。
【００３６】
この問題を解決するために、図９に示す構成を備えるフィルタ処理装置としての本実施形態における離散ウェーブレット変換を行う演算処理部について説明する。
【００３７】
図９において、
９０１、９０３、９０５は、ラインデータＹ８、Ｙ９、Ｙ１０を入力する端子、
９１１、９１３、９１５は、夫々のラインにおける変換係数もしくは変換データを格納し、与えられた変換係数もしくは変換データを遅延時間（遅延ライン分）遅延し、遅延時間分前のラインで、同じ列の変換係数もしくは変換データを出力するラインバッファ、
９２１、９２３、９２５、９２７は、演算された格子点データが得られる端子（格子点とも言う）を表わす。例えば、格子点９２１には以下の計算で求められる格子点データｄ’９が得られる。
【００３８】
ｄ’９＝Ｙ９＋α・（Ｙ８＋Ｙ１０）
図９において、上記の式に基づいて計算されたｄ’９をラインバッファ９１１に格納し、格納したｄ’９をラインバッファ９１１により２ライン分遅延し、２ライン前の同じ列の変換データｄ’７を得る。このｄ’７とｄ’９を用いてｓ’８を計算する。又、計算した変換データｓ’８をラインバッファ９１３に格納する。以下、ｄ７，ｓ６も同様にしてラインバッファ９１３、９１５を用いて求める。そして、同様に、求めたｄ７をラインバッファ９１５に格納する。
【００３９】
各ラインバッファ９１１，９１３，９１５は、水平方向にスキャンする長さに相当する容量を持ち、遅延時間は２ラインとなる。これは、同じ列のデータを用いた垂直方向フィルタ処理が、タイミング上２ライン毎に行なわれるからである。
【００４０】
もう少し詳しく説明すると、夫々のラインバッファから出力される変換係数ｄ５や変換データｓ’６、ｄ’７を求めるには、Ｙ０からＹ８までの入力画素で計算できたが、変換係数ｓ６，ｄ７を得るには、Ｙ１０の入力を待たねばならないからである。
【００４１】
そして、次の垂直フィルタ処理のサイクルでは、水平方向に１列シフトして同様の計算が行なわれ計算結果が夫々のラインに応じたラインバッファに送られる。
【００４２】
このように、水平方向にスキャンしながら垂直方向フィルタ処理をして変換係数や変換データを次々とラインバッファに入力して蓄える。この時用いたラインデータ（入力画素）Ｙ８と新たなラインデータＹ９、Ｙ１０を用いて次の水平スキャンを行なう。
【００４３】
この時、上記ラインデータに加え、３つのラインバッファ９１５，９１３，９１１から出力されるｄ５，ｓ’６，ｄ’７を用いることで、４回の格子点演算を行なうことで、２つの変換係数ｓ６，ｄ７を求めることができる。もちろん、次の水平スキャンに備え、上述の通り変換係数ｄ７と変換データｓ’８、ｄ’９を夫々のラインバッファ９１５，９１３，９１１に再入力する。
【００４４】
さらに次の水平スキャンでは、ラインデータＹ１０，Ｙ１１，Ｙ１２と、ラインバッファの出力ｄ７，ｓ’８、ｄ’９を用いることで２つの変換係数ｓ８，ｄ９を求めることができる。
【００４５】
このようにして、垂直方向フィルタ処理をしながら水平方向へスキャンする場合にも、格子点演算２回につき１変換係数を求めることができる。
【００４６】
以上説明した図９の構成はフィルタ処理後の変換係数を元の値に戻すための逆変換処理にも用いることができて、その場合の構成は図１０に示すものとなる。これは、Ｌｉｆｔｉｎｇ  Ｌａｔｔｉｃｅを用いたフィルタ処理の類似性から明らかなことなので、ここでの説明を省略する。
【００４７】
上記図９の構成と同じ機能のものは、図１１の構成でも実現できる。ラインデータＹ８を、新たに設けたラインバッファ１１０１に蓄えて、次の水平スキャンでは、新たなラインデータＹ９とＹ１０のみを外部から入力し、既に入力済みのラインデータＹ８はラインバッファ１１０１から、Ｙ１０を２ライン分遅延させることで供給するようにしたものである。
【００４８】
＜変形例１＞
本変形例１では、図１２に示す格子点データ演算ユニットを図１３のように複数接続することによって、フィルタ演算処理部を形成し、前記垂直方向のフィルタ処理を行なうものである。
【００４９】
図１２に示す格子点データ演算ユニットは、図１１において４つの格子点各々に対応するデータを演算する演算部の内、１つの格子点のデータを演算する部分と該演算に要するデータの入力元となるラインバッファ１つを取り出したものである。よって、演算機能等はすでに説明した内容と同様である。
【００５０】
一方、図１３における、１３０１、１３０３、１３０５、１３０７は、それぞれ図１２に示した格子点データ演算ユニットであり、各ユニット毎に乗算係数が異なるが、基本的な構成は同じである。図１３に示したフィルタ演算処理部の構成は、前記図１１に示した演算処理部の構成を上記ユニット４つに置き換えただけであるため、機能的には図１１とまったく同じである。
【００５１】
逆変換用（逆方向のフィルタ処理）のフィルタ演算処理部も同一ユニットを用いて、図１４のように構成できる。図１３との違いは、各ユニット内の乗算係数が上下で入れ替わって正負の符号が反転していることである。
【００５２】
本変形例で示した格子点データ演算ユニットを用いた上述のフィルタ演算処理部、及び逆変換のフィルタ演算処理部は、夫々のパラメータ（α、β、γ、δ）を調節した図１２に示した格子点データ演算ユニットを用いて実現可能である。つまり、共通のハードウェア（ソフトウェアでも良いが）である格子点データ演算ユニットを用いることで、その両方のフィルタ処理（順方向、逆方向のフィルタ処理）が実現できる。
【００５３】
また、上述の格子点データ演算ユニットは、遅延部がラインバッファに限定されるものではなく、ｎ個のレジスタからなる遅延部であってもよい。
【００５４】
一例として、図１５にｎ＝２の場合を示す。
【００５５】
一方、前記遅延部を格子点データ演算ユニット内に持たず、外部に共通にアクセスできるメモリを持ち、該メモリで遅延を実現することも可能である。その場合の格子点データ演算ユニットの構成を図１６、図１６に示した格子点データ演算ユニットを用いたフィルタ演算処理部の構成を図１７に示す。
【００５６】
これ以降の説明に用いる格子点データ演算ユニットは、図の簡略化のため、該格子点データ演算ユニット内に遅延部を持っているものとして話を進めるが、遅延部を外部に持つ場合にも適用できることは、これまでの説明により明らかである。
【００５７】
また、各格子点データ演算ユニット内の乗算演算の係数は定数であるため、汎用の乗算器を用いる必要は無く、被乗数の足し合わせ方が決まっている定数乗算器を用いることができる。
【００５８】
また、本変形例で示した上述のフィルタ演算処理部の構成は、ウェーブレット変換などの特定のフィルタ処理に限定されるものではなく、一般のフィルタ処理にも適用可能であると同時に、以下の変形例においても同様であることは後述の説明により明らかである。
【００５９】
＜変形例２＞
第１の実施形態における変形例２は、前述の各格子点データ演算ユニットの入力側に該ユニットへの入力を選択するセレクタを配し、該セレクタで選択するデータを順方向変換か逆方向変換かで切り替えることにより、共通のユニットを使用して、順方向と逆方向の両方の変換を実現するものである。
【００６０】
本変形例におけるフィルタ演算処理部の構成を図１８に示す。図１８において、
１８００は、変換の種類（順方向／逆方向）を指定する制御信号を入力する端子である。
【００６１】
１８０１〜１８０４は、それぞれパラメータα、β、γ、δを有し、定数乗算器と該乗算結果を加減算する機能を持つ格子点データ演算ユニットである。
【００６２】
１８１１〜１８１４は、端子１８００を介して入力される前記変換の種類を指定する制御信号に基づいて、出力を入力画素データか変換係数（もしくは係数データ）かを切り替える４入力２出力のセレクタである。
【００６３】
１８２１、１８２３は、変換前の画像データを入力する端子、
１８２５、１８２７は、変換後の係数データを入力する端子
１８３１、１８３３は、順方向変換処理によって求められたデータ（変換係数）を出力する端子、
１８４１、１８４３は、逆方向変換処理によって求められたデータ（入力画素データ）を出力する端子、
である。
【００６４】
端子１８００から入力される変換の種類を指定する制御信号に基づいて、各セレクタ１８１１〜１８１４は選択出力するデータを切り替えると共に、各格子点データ演算ユニット１８０１〜１８０４では順方向変換時には加算、逆方向変換時には減算を行なう。
【００６５】
そのため各格子点データ演算ユニット１８０１〜１８０４は、定数を乗算した結果を加減算できるように図１９に示す構成に変更した。回路構成上の実質的な違いは、加算器を加減算器１９０１に置き換えたことである。
【００６６】
端子１８００に順方向変換を指定する制御信号が入力されると、各セレクタ１８１１〜１８１４は左側の２入力（同図のセレクタ１８１１ではＹ９，Ｙ１０）を選択して出力すると共に、各格子点データ演算ユニット１８０１〜１８０４は、前記定数乗算結果を加算するモード（各格子点データ演算ユニットの反転回路１９０１が加算モード）となり、図１３と等価な構成となる。
【００６７】
一方、端子１８００に逆方向変換を指定する制御信号が入力されると、各セレクタ１８１１〜１８１４は右側の２入力（同図では一段下の格子点データ演算ユニットの２出力。ただし、セレクタ１８１４に関しては、ｓ１０，ｄ１１の２入力）を選択して出力すると共に、各格子点データ演算ユニット１８１１〜１８１４は前記定数乗算結果を減算するモード（各格子点データ演算ユニットの加減算器１９０１は減算モード）となり、図１４と等価な構成となる。
【００６８】
図１０からも分かるとおり、Ｙ７はＣ＝−αとなるときのユニット（１８０１）から、Ｙ８はＣ＝−βとなるときのユニット（１８０２）から出力されるので、端子１８４１の方からＹ７が、端子１８４３の方からＹ８が出力されることになる。
【００６９】
上記４入力２出力のセレクタ１８１１〜１８１４では、順方向変換時と逆方向変換時では変換出力が別々の端子になってしまうが、セレクタ１８１２、１８１３を図２０（ａ），（ｂ）に示すクロススイッチ２００１，２００３に置き換えると、図２１に示すとおり、順方向変換時も逆方向変換時も同じ端子２１０１，２１０３から変換出力を取り出せる。
【００７０】
＜変形例３＞
本変形例のフィルタ演算処理部は、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅによるフィルタ処理の最後に行なうスケーリングのための乗算処理を、順方向変換と逆方向変換とで同一の乗算器を用いて処理する構成に関する。
【００７１】
スケーリングパラメータをＫとすると、ＪＰＥＧ２０００では、最終的な高域変換係数を得るために、前記Ｌｉｆｔｉｎｇ演算後の高域変換係数にＫを乗算し、最終的な低域変換係数を得るために、前記Ｌｉｆｔｉｎｇ演算後の低域変換係数に１／Ｋを乗算する。
【００７２】
図１３に示したフィルタ演算処理部としての本変形例の垂直９／７−ＤＷＴ演算処理部に、スケーリングのための乗算器（２２０１，２２０３）を付加すると、図２２に示す構成となる。同図において２２０１が高域変換データにＫを乗算する乗算器、２２０３が低域変換データに１／Ｋを乗算する乗算器である。
【００７３】
また、図１８に示した垂直９／７−ＤＷＴ／ＩＤＷＴ演算処理部にスケーリングのための乗算器（２３０１，２３０３、２３１１、２３１３）を付加すると、図２３に示す構成となる。図２３から分かるように、ＤＷＴ演算スケーリング用に２個の乗算器２３０１、２３０３、ＩＤＷＴ演算スケーリング用に２個の乗算器２３１１、２３１３が必要である。
【００７４】
同時に４つの乗算器を使うことは無く、ある時点で使用するのはどちらか一方の２個の乗算器だけである。
【００７５】
本変形例は、前記変形例２の規則性をなるべく踏襲して、両変換モードで同じ２つの乗算器を使うようにした。
【００７６】
図２４に本変形例の垂直９／７−ＤＷＴ／ＩＤＷＴ演算処理部の構成を示す。セレクタ２４０１を格子点データ演算ユニット１８０４の出力段に設け、該セレクタ２４０１の出力段に、共通に用いる２つの乗算器２４１１、２４１３を設けた。その他の構成並びに構成要素は前記変形例２で示した図１８と同じである。
【００７７】
＜変形例４＞
本変形例では、図９に示した演算処理部の変形例として、図２５に示す演算処理部を示す。図９に示した演算処理部では、ラインバッファ９１５にはｄ７を入力していたが、変変形例では、ｄ７に予めパラメータδが乗算されているδ・ｄ７を入力する。そしてδ・ｄ７を入力したラインバッファ９１５は同様にパラメータδが乗算されている出力値δ・ｄ５を出力する。それ以外の構成及び動作は、図９に示した演算処理部と同じである。
【００７８】
この構成で、図９に示した演算処理部が行う演算の量に比べて演算量の増減はない。なお本変形例ではｄ７を例として説明したが、これに限定されずに他のｄ’９やｓ’８のうちのいくつか、もしくは全部であっても良い。その場合、ｄ’９を例に取り説明すると、ラインバッファ９１１にはβ・ｄ’９が入力され、その出力はβ・ｄ’７で、ｓ’８の演算の際には、このβ・ｄ’７にβの乗算は行わない。
【００７９】
＜変形例５＞
本変形例では、図９に示した演算処理部の変形例として、図２６に示す演算処理部を示す。図９に示した演算処理部では、ラインバッファ９１５にはｄ７を入力していたが、本変形例では（δ・ｄ７＋ｓ’８）を入力し、更に、このラインバッファ９１５に入力する（δ・ｄ７＋ｓ’８）を生成するために、δ・ｄ７に、ｓ’８を加算する加算器２６０１が備わっている。
【００８０】
図２６では、加算器の数が増えてはいるが、変換係数ｓ６の演算に必要な加算処理が、例えば変形例４では３つの項の加算であったが、本変形例では２つの項の加算になっており、全体としての演算量は、例えば変形例４と同じである。
【００８１】
＜変形例６＞
上述の変形例では、１ライン前の同一列データをから計算した３つの変換データをそれぞれ３つの遅延部で遅延させたが、本変形例では、１ライン前の同一列データをから計算した１つの変換係数と格子上の変換データを計算する途中の演算結果をそれぞれ第１、第２の遅延部で遅延させ、新たな変換係数の計算に用いる。
【００８２】
本変形例の演算処理部の概略構成を図２７に示す。図９に示した演算処理部において、遅延部９１３，９１５の２つを用いている。ラインバッファ９１５には、第１の実施形態と同様に、変換係数ｄ７を格納するが、ラインバッファ９１３には、β・（ｄ’７＋ｄ’９）を格納し、このβ・（ｄ’７＋ｄ’９）を計算するために必要となるラインデータＹ６，Ｙ７，Ｙ８，Ｙ９，Ｙ１０は、図２７の上部にある５つの端子から入力し、変換係数ｄ７を計算するのに必要なその他のデータβ・（ｄ’５＋ｄ’７）はラインバッファ９１３から与えられる。水平方向にスキャンしながら垂直フィルタ処理をするタイミング等は前記第１の実施形態とまったく同じであるため、これ以上の細かい説明は省略する。
【００８３】
本変形例では演算量が増えるが、遅延部の数は前記第１の実施形態より少なくて済む。具体的には、１係数当たり３回の格子点演算が必要になり（前記第１の実施形態では２回）、遅延部は第１、第２の２つで済む。Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いた変換では、逆方向の変換は格子点演算で用いる係数の順序と負号を逆に変換するだけで、まったく同様の構成で処理できる。すなわち、上述した各種実施形態を、図２８に示すＬｉｆｔｉｎｇ  Ｌａｔｔｉｃｅに適用した構成で、逆変換処理が行なえる。
【００８４】
［第２の実施形態］
第１の実施形態及びその変形例における離散ウェーブレット変換は、すべてハードウェアに関するもののみであったが、演算処理をそのまま数式化し、ラインバッファとして配列を確保することで、ほとんどそのままソフトウェア処理に応用できる。よって、ウェーブレット係数変換装置のみならずウェーブレット係数変換方式としてもよい。
【００８５】
以下、図２９のフローチャートを用いて説明する。処理すべき画像データは不図示の入力デバイスから入力され、このフローチャートに従ったプログラムコードは不図示のＣＰＵがアクセス可能なメモリ上に格納されているものとする。なお、以下で用いるインデックスｎはｎ＞１とする。
【００８６】
ステップＳ２９０１では、処理する画像データ３つ（Ｙn+2，Ｙn+3，Ｙn+4）を不図示のメモリから読み出す。
【００８７】
ステップＳ２９０３では、３つの格子点データｄ’n+1，Ｓ’n、ｄn-1の夫々を格納している、ラインバッファに相当する配列Ｈ１，Ｈ２，Ｈ３から読み出す。
【００８８】
ステップＳ２９０５では、ｄ’n+3＝Ｙn+3＋α・（Ｙn+2＋Ｙn+4）を演算する。
【００８９】
ステップＳ２９０７では、上記格子点データｄ’n+3を配列Ｈ１に格納する。
【００９０】
ステップＳ２９０９は、Ｓ'n+2＋β・（ｄ'n+1＋ｄ'n+3）を演算するステップ、
ステップＳ２９１１では、上記格子点データＳ'n+2を配列Ｈ２に格納する。
【００９１】
ステップＳ２９１３では、ｄ'n+1＝ｄ'n+1＋γ・（Ｓ'n+2＋Ｓ'n）を演算する。
【００９２】
ステップＳ２９１５では、上記変換係数ｄn+1を配列Ｈ３に格納するステップ、
ステップＳ２９１７では、Ｓn＝Ｓ'n＋δ・（ｄn-1＋ｄn+1）を演算する。
【００９３】
ステップＳ２９１９では、上記変換係数Ｓnとｄn+1を次の処理ステージへ出力する。
【００９４】
各ステップの処理内容や全体の処理については、既に説明した実施形態から明白であるのでその説明は省略する。また、演算した格子点データや変換係数の格納先として、上記配列では無く、単なる変換あるいはレジスタ等も考えられる。
［他の実施形態］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００９５】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９７】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した（図２９に示す）フローチャートに対応するプログラムコードが格納されることになる。
【００９８】
【発明の効果】
以上の説明により、本発明によれば、乗算と加算を行う演算ユニットを複数用いて、フィルタ処理を行うことにより、フィルタ処理回路の構造を簡素化することができた。
【図面の簡単な説明】
【図１】従来例における変換用メモリ１０１と離散ウェーブレット変換部１０２の動作を説明する図である。
【図２】（ａ）は、離散ウェーブレット変換部１０２の基本構成を示すブロック図、（ｂ）は入力画像を示す図、（ｃ）は生成されたＬサブバンド、Ｈサブバンドを示す図、（ｄ）はＨＨ、ＨＬ、ＬＨ、ＬＬサブバンドを示す図である。
【図３】順方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅの基本構成を示す図である。
【図４】逆方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅの基本構成を示す図である。
【図５】フィルタ係数を示す図である。
【図６】Ｌｉｆｔｉｎｇ係数を示す図である。
【図７】Ｌｉｆｔｉｎｇ  Ｌａｔｔｉｃｅの構成を示す図である。
【図８】Ｌｉｆｔｉｎｇ  Ｌａｔｔｉｃｅの構成を示す図である。
【図９】本発明の第１の実施形態における順方向の演算ユニットの構成を示す図である。
【図１０】本発明の第１の実施形態における逆方向の演算ユニットの構成を示す図である。
【図１１】図９に示された演算ユニットと同じ機能を有し、他の構成をとる演算ユニットの構成を示す図である。
【図１２】本発明の第１の実施形態における変形例１で用いる格子点データ演算ユニットの構成を示す図である。
【図１３】図１２に示したユニットを複数接続することで形成されるフィルタ演算処理部の構成を示す図である。
【図１４】本発明の第１の実施形態における変形例１で用いる逆変換用のフィルタ演算処理部の構成を示す図である。
【図１５】格子点データ演算ユニットをｎ個のレジスタからなる遅延部で構成した場合、一例として、ｎ＝２とした場合の構成を示す。
【図１６】外部に共通にアクセスできるメモリを持ち、該メモリで遅延を実現する場合の格子点データ演算ユニットの構成を示す図である。
【図１７】図１６に示した格子点データ演算ユニットを用いたフィルタ演算処理部の全体の構成を示す図である。
【図１８】本発明の第１の実施形態における変形例２におけるフィルタ演算処理部の構成を示す図である。
【図１９】図１８に示した格子点データ演算ユニットを変更した場合の構成を示す図である。
【図２０】クロススイッチを示す図である。
【図２１】本発明の第１の実施形態における変形例２のフィルタ演算処理部の構成を示す図である。
【図２２】図１３に示した垂直９／７−ＤＷＴ演算処理部にスケーリングのための乗算器を付加した構成を示す図である。
【図２３】図１８に示した垂直９／７−ＤＷＴ／ＩＤＷＴ演算処理部にスケーリングのための乗算器を付加した構成を示す図である。
【図２４】本発明の第１の実施形態における変形例３の垂直９／７−ＤＷＴ／ＩＤＷＴ演算処理部の構成を示す図である。
【図２５】本発明の第１の実施形態における変形例４の演算ユニットの構成を示す図である。
【図２６】本発明の第１の実施形態における変形例５の演算ユニットの構成を示す図である。
【図２７】本発明の第１の実施形態における変形例６の演算ユニットの構成を示す図である。
【図２８】逆変換のＬｉｆｔｉｎｇ  Ｌａｔｔｉｃｅを示す図である。
【図２９】本発明の第２の実施形態である離散ウェーブレット変換処理方式のフローチャートである。
【図１】
0004444480.tif 000002
【図２】
0004444480.tif 000003
【図３】
0004444480.tif 000004
【図４】
0004444480.tif 000005
【図５】
0004444480.tif 000006
【図６】
0004444480.tif 000007
【図７】
0004444480.tif 000008
【図８】
0004444480.tif 000009
【図９】
0004444480.tif 000010
【図１０】
0004444480.tif 000011
【図１１】
0004444480.tif 000012
【図１２】
0004444480.tif 000013
【図１３】
0004444480.tif 000014
【図１４】
0004444480.tif 000015
【図１５】
0004444480.tif 000016
【図１６】
0004444480.tif 000017
【図１７】
0004444480.tif 000018
【図１８】
0004444480.tif 000019
【図１９】
0004444480.tif 000020
【図２０】
0004444480.tif 000021
【図２１】
0004444480.tif 000022
【図２２】
0004444480.tif 000023
【図２３】
0004444480.tif 000024
【図２４】
0004444480.tif 000025
【図２５】
0004444480.tif 000026
【図２６】
0004444480.tif 000027
【図２７】
0004444480.tif 000028
【図２８】
0004444480.tif 000029
【図２９】
0004444480.tif 000030