(57)【要約】      （修正有）【課題】  変換対象データを格納する外部メモリへのアクセス頻度を減らし、内蔵メモリ容量を少なくした離散ウエーブレット変換装置及び逆離散ウエーブレット変換装置を提供する。【解決手段】  変換対象データを高周波成分と低周波成分とに分割する二次元フィルタ処理を所定の回数だけ行う離散ウエーブレット変換装置において、データ列を入力して高周波成分と低周波成分とに分離するフィルタ処理部703と、変換対象データ700を分割したブロックの単位で、フィルタ処理部に入力する制御部706と、フィルタ処理部により分離された二次元フィルタ処理済みのデータを一時的に格納するブロックデータメモリ704とを有する。制御部は、変換対象のデータ列をフィルタ処理部に入力して二次元フィルタ処理を行わせ、二次元フィルタ処理済みのデータをブロックデータメモリから前記フィルタ処理部に入力して更に二次元フィルタ処理を所定の回数だけ行わせる。【選択図】    図９
2005092507.tif 000002
【特許請求の範囲】
【請求項１】
変換対象の二次元データを高周波成分と低周波成分とに分割する二次元フィルタ処理を所定の回数だけ行う離散ウエーブレット変換装置において、
データ列を入力して当該データ列の高周波成分と低周波成分とに分離するフィルタ処理部と、
前記変換対象の二次元データを分割したブロックの単位で、前記データ列を、前記フィルタ処理部に入力する制御部と、
前記フィルタ処理部により分離された二次元フィルタ処理済みの二次元データを一時的に格納するブロックデータメモリとを有し、
前記制御部は、前記変換対象の二次元データのブロックのデータ列を前記フィルタ処理部に入力して前記二次元フィルタ処理を行わせ、前記二次元フィルタ処理済みの二次元データを前記ブロックデータメモリから前記フィルタ処理部に入力して更に二次元フィルタ処理を行わせ、当該二次元フィルタ処理を前記所定の回数だけ行わせることを特徴とする離散ウエーブレット変換装置。
【請求項２】
請求項１において、
前記ブロックデータメモリは、少なくとも前記所定の回数に対応する数のメモリ領域を有し、各メモリ領域に、前記フィルタ処理部により二次元フィルタ処理された二次元データのうち、垂直方向及び水平方向のデータ列に対するフィルタ処理で分離された低周波帯域の二次元データが、各処理階層毎に格納されることを特徴とする離散ウエーブレット変換装置。
【請求項３】
請求項２において、
前記制御部は、所定の処理階層において、前記ブロック群内の全ブロックに対する前記低周波帯域の二次元データが前記メモリ領域内に格納された後、当該格納されたブロック群の二次元データを、前記所定の処理階層の次の処理階層におけるブロックとして、前記入力を行うことを特徴とする離散ウエーブレット変換装置。
【請求項４】
高周波成分と低周波成分とに分割されている変換対象の二次元データを復号化する二次元フィルタ処理を所定の回数だけ行う逆離散ウエーブレット変換装置において、
高周波成分と低周波成分のデータ列を入力して復号化するフィルタ処理部と、
前記変換対象の二次元データを分割したブロックの単位で、前記データ列を、前記フィルタ処理部に入力する制御部と、
前記フィルタ処理部により復号化された二次元フィルタ処理済みの二次元データを一時的に格納するブロックデータメモリとを有し、
前記制御部は、前記変換対象の二次元データのブロックのデータ列を前記フィルタ処理部に入力して前記二次元フィルタ処理を行わせ、前記二次元フィルタ処理済みの二次元データを前記ブロックデータメモリから前記フィルタ処理部に入力して更に前記二次元フィルタ処理を行わせ、当該二次元フィルタ処理を前記所定の回数だけ行わせることを特徴とする逆離散ウエーブレット変換装置。
【請求項５】
請求項４において、
前記制御部は、変換対象の二次元データの各周波数帯域それぞれのブロックをフィルタ処理部に入力して処理させ、当該処理済みの二次元データを分割したブロックの二次元データそれぞれを、次に浅い階層の変換対象二次元データの各周波数帯域それぞれにおいて、所定の行数・列数のブロックを有するブロック群内の各ブロックと共に、前記フィルタ処理部に入力して処理させ、当該処理を繰り返すことを特徴とする逆離散ウエーブレット変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データなどのデジタルデータについて離散ウエーブレット変換を行う装置及びその逆変換装置に関し、特に、変換対象のデータを記憶するメモリへのアクセス頻度を少なくすることができる離散ウエーブレット変換装置及び逆変換装置に関する。
【背景技術】
【０００２】
画像圧縮の一つにJPEG2000があり、JPEG2000における画像圧縮のために、離散ウエーブレット変換（Discrete Wavelet Transform）を行うリフティング構成の演算回路が利用される。
【０００３】
図１は、JPEG2000における画像データの符号化圧縮と解凍復号化の概略的な工程を示す図である。画像データ１のデジタルデータ列が離散ウエーブレット変換装置２で低周波数成分と高周波数成分とに変換され、量子化手段３で量子化され、エントロピー符号化手段４で符号化され、データが圧縮される。このデータが、ビットストリーム生成手段５からビットストリームとして出力される。このビットストリームは受信側で入力装置６に入力され、逆エントロピー符号化手段７で逆エントロピー符号化され、逆量子化手段８で逆量子化され、離散ウエーブレット逆変換装置９で逆変換されることで、圧縮された画像データが解凍されて画像データ１０が生成される。ウエーブレット変換は、デジタルデータ列を高周波数成分と低周波数成分とに分割する一種のフィルタ処理である。写真のような自然な画像は、低周波成分により多くの情報が含まれているので、高周波数成分と低周波数成分に分割し、その分割された低周波数成分を更に再帰的に高周波数成分と低周波数成分とに分割することで、圧縮時の符号化効率を高くし且つ重要な画像情報を失わないようにすることができる。
【０００４】
図２は、ウエーブレット変換における高周波数成分と低周波数成分の分割を説明する図である。また、図３は、ウエーブレット変換装置の構成図である。入力画像１１に対して、まず水平方向（または垂直方向）にスキャンして得られるデジタルデータ列に対してフィルタ処理１２を行い、高周波数成分１３と低周波数成分１４に分割し、更にその演算結果１３，１４に対して垂直方向（または水平方向）にスキャンして得られるデジタルデータ列に対してフィルタ処理変換１５，１６を行い、それぞれ高周波数成分１７，１９と低周波数成分１８，２０に分割する。各分割された画像データは２分の１にダウンサンプリングされ、その結果、最初の入力画像１１は、４つの帯域（ＨＨ，ＨＬ，ＬＨ，ＬＬ）の画像１７，１８，１９，２０に分割される。ダウンサンプリングを行うことにより変換後のデータ数は変更されない。そして、ＬＬの帯域の画像２０に対して、上記と同じ二次元フィルタ処理を行うことで、同様に４つの帯域の画像２６〜２８に分割される。この二次元フィルタ処理を再帰的に繰り返すことにより、離散ウエーブレット変換が完了する。図２の例では、二次元フィルタ処理による分割が３回実行されている。
【０００５】
JPEG2000において画像データはデジタルデータ列であり、それを処理する離散ウエーブレット変換は、通常のウエーブレット変換のような積分演算を行わなくとも、積和演算のみで求めることができる。そして、離散ウエーブレット変換の効率的な演算方法としてリフティング構成が知られている。
【０００６】
図４、図５は、従来のリフティング構成のフィルタの演算装置を示す図である。離散ウエーブレット変換（DWT）には整数DWTと実数DWTの２種類が存在し、整数DWTに対しては５×３フィルタ、実数DWTに対しては９×７フィルタが使用される。図４に示される５×３フィルタは、５つのデータ列から低周波数成分のデータを、３つデータ列から高周波数成分のデータをそれぞれ生成する。それに対して、図５に示される９×７フィルタは、９つのデータ列から低周波数成分のデータを、７つのデータ列から高周波数成分のデータをそれぞれ生成する。５×３フィルタは５つのデータを演算するので演算量は少なく演算回路の規模は小さいが、符号化効率が高くない。それに対して、９×７フィルタは９つのデータを演算するので演算量は多く演算回路の規模は大きくなるが、符号化効率は高くなる。
【０００７】
図４（Ａ）は、５×３フィルタのリフティング構成のフィルタ装置を示し、図４（Ｂ）はその逆フィルタ装置を示す。図４（Ａ）の５×３フィルタの原理について説明すると、２分の１ダウンサンプリング１０２，１０３と、遅延手段１０１，１０５と、遅延したデータと加算して係数Ｐ，Ｕを乗算する積和手段１０４，１０６と、加算手段１０７，１０８とで構成される。データ列１１が仮に５つのX(0)、X(1)、X(2)、X(3)、X(4)とすると、ダウンサンプリング１０２により偶数データ列X(0)、X(2)、X(4)がサンプリングされ、遅延手段１０１とダウンサンプリング１０３とにより奇数データ列X(1)、X(3)がサンプリングされる。積和手段１０４は、現在の偶数データX(0)と１つ後の偶数データX(2)を加算して係数Ｐ（例えば−0.5）を乗算する回路であり、従って、積和手段１０４と加算手段１０７により高周波成分として、
X(1)＋P（X(0)＋X(2)）、X(3)＋P（X(2)＋X(4)）                  （１）
が求められる。一方、遅延手段１０５と積和手段１０６及び加算手段１０８により、低周波成分として、
X(2)＋U［｛X(1)＋P（X(0)＋X(2)）｝＋｛X(3)＋P（X(2)＋X(4)）｝］  （２）
が求められる。係数Ｕは例えば0.25である。上記（１）（２）のとおり、合計で２個の高周波成分のデータと１個の低周波成分のデータが得られていることが理解される。
【０００８】
図４（Ｂ）の逆変換は、（Ａ）の変換の演算を逆に行うだけであり、上記の高周波成分（１）の連続するデータに係数−Ｕを乗算し、上記の低周波成分（２）に加算することで、元の偶数データX(2)を得ることができる。また、連続する偶数データX(2)、X(4)を加算して係数Ｐを乗算して上記の高周波成分と加算演算すると、元の奇数データX(3)を得ることができる。それらをダウンサンプリングしながら合成することで、元のデータ列X(2),X(3),X(4)を得ることができる。
【０００９】
図５（Ａ）は、９×７フィルタのリフティング構成のフィルタ装置を示す。構成原理は５×３フィルタと同じであり、ダウンサンプリング手段３０２，３０３、遅延手段３０１，３０５，３０７，３０９、積和手段３０４，３０６，３０８，３１０、加算手段３１３〜３１６と、乗算手段３１１，３１２で構成され、ダウンサンプリング手段３０２からは偶数のデータ列が、３０３からは奇数のデータ列がそれぞれ出力され、同様の演算が行われる。各積和手段の係数は、例えば次の通りである。
【００１０】
α     -1.586134342059924
β     -0.052980118572961
γ     0.882911075530934
δ     0.443506852043971
K      1.230174104914001
図５（Ｂ）は、９×７フィルタのリフティング構成の逆離散ウエーブレット変換装置を示す。これも構成原理は５×３フィルタと同じである。
【００１１】
上記のウエーブレット変換については、例えば特許文献１，２に記載されている。また、上記のリフティング構成のウエーブレット変換装置については、例えば非特許文献１に記載されている。
【００１２】
図６は、従来の離散ウエーブレット変換のシステム構成図である。デジタル画像データが格納された画像メモリ５０１に一次元のフィルタ処理部５０２が接続されている。この一次元のフィルタ処理装置５０２は、図４，５に示したフィルタ回路を有し、図３に示したように画像データを再帰的に処理するために、フィルタ処理部５０２が、画像メモリ５０１内の１フレーム分の画像データを例えば垂直方向にスキャンして読み出し、デジタルデータ列を高周波成分と低周波成分とに分割して画像メモリ５０１内の変換後のデータ領域に格納する。更に、フィルタ処理部５０２は、画像メモリ５０１内の変換後のデータ領域の画像データを今度は水平方向にスキャンして読み出し、デジタルデータ列を高周波成分と低周波成分とに分割して、画像メモリ５０１内の変換後のデータ領域に格納する。上記二次元フィルタ処理の結果、図２、図３に示されるように４つの帯域（ＨＨ，ＨＬ，ＬＨ，ＬＬ）の画像１７，１８，１９，２０に分割される。そして、帯域ＬＬの画像２０に対して、上記と同様の二次元フィルタ処理が繰り返される。この二次元フィルタ処理による分割処理を数回行うことにより離散ウエーブレット（ＤＷＴ）演算が終了する。
【００１３】
従って、図６のシステム構成では、一次元フィルタ処理部５０２が外部メモリである画像メモリ５０１に対して頻繁にリード、ライトのアクセスを行う必要がある。外部メモリへのアクセス頻度が高くなると、それに伴って、処理速度が低下すると共に外部接続端子を駆動するための消費電力が大きくなるなどの課題が伴う。
【００１４】
図７は、上記のアクセス頻度の低下を目的として提案された従来の離散ウエーブレット変換のシステム構成図である。この例では、画像メモリ５０１に接続されるフィルタ部として二次元フィルタ処理部５０４が採用されている。すなわち、二次元フィルタ処理部５０４は、内部に１フレーム分の画像データを格納する大容量のメモリを有し、画像メモリ５０１から１フレーム分のデジタルデータを読み出すと、垂直フィルタ処理と水平フィルタ処理の両方を行う。そして得られた二次元フィルタ処理済みの分割された４つの帯域（ＨＨ，ＨＬ，ＬＨ，ＬＬ）の画像１７，１８，１９，２０が、画像メモリ５０１に格納される。そして、帯域ＬＬの画像２０に対して、上記と同様の処理が繰り返される。図７の変換システムは、例えば特許文献３に記載されている。
【特許文献１】特開平５−１８３３８５号公報
【特許文献２】特開平９−９３１３４号公報
【特許文献３】特開２００２−３０４６２４号公報
【非特許文献１】ITU-T Rec. T. 800 | ISO/IEC 15444-1:2000
【発明の開示】
【発明が解決しようとする課題】
【００１５】
図７に示された構成であっても、二次元フィルタ処理の回数だけ外部メモリ５０１にアクセスして読み出しと書き込み処理を行う必要がある。従って、依然としてアクセス頻度は高く、それに伴う処理速度の低下と消費電力の増大を十分に回避することはできない。
【００１６】
一方、フィルタ処理部内に１フレーム分の画像データを格納可能な大容量メモリを設けることで、外部メモリへのアクセスを各画素１回にすることができる。しかしながら、フィルタ処理部自体が大規模な回路になり、フィルタ処理部がハードウエアで構成される場合、その集積回路規模が膨大になりコストアップを招く。
【００１７】
そこで、本発明の目的は、外部メモリへのアクセス頻度を少なくしたウエーブレット変換装置及びその逆変換装置を提供することにある。
【００１８】
更に、本発明の別の目的は、外部メモリへのアクセス頻度を少なくすると共に、小規模で且つ内部制御が簡単なウエーブレット変換装置及びその逆変換装置を提供することにある。
【課題を解決するための手段】
【００１９】
上記の目的を達成するために、本発明の第１の側面は、変換対象の二次元データを高周波成分と低周波成分とに分割する二次元フィルタ処理を所定の回数だけ行う離散ウエーブレット変換装置において、
データ列を入力して当該データ列の高周波成分と低周波成分とに分離するフィルタ処理部と、
前記変換対象の二次元データを分割したブロックの単位で、前記データ列を、前記フィルタ処理部に入力する制御部と、
前記フィルタ処理部により分離された二次元フィルタ処理済みの二次元データを一時的に格納するブロックデータメモリとを有し、
前記制御部は、前記変換対象の二次元データのブロックのデータ列を前記フィルタ処理部に入力して前記二次元フィルタ処理を行わせ、前記二次元フィルタ処理済みの二次元データを前記ブロックデータメモリから前記フィルタ処理部に入力して更に二次元フィルタ処理を行わせ、当該二次元フィルタ処理を前記所定の回数だけ行わせることを特徴とする。
【００２０】
更に、上記の目的を達成するために、本発明の第２の側面は、高周波成分と低周波成分とに分割されている変換対象の二次元データを復号化する二次元フィルタ処理を所定の回数だけ行う逆離散ウエーブレット変換装置において、
高周波成分と低周波成分のデータ列を入力して復号化するフィルタ処理部と、
前記変換対象の二次元データを分割したブロックの単位で、前記データ列を、前記フィルタ処理部に入力する制御部と、
前記フィルタ処理部により復号化された二次元フィルタ処理済みの二次元データを一時的に格納するブロックデータメモリとを有し、
前記制御部は、前記変換対象の二次元データのブロックのデータ列を前記フィルタ処理部に入力して前記二次元フィルタ処理を行わせ、前記二次元フィルタ処理済みの二次元データを前記ブロックデータメモリから前記フィルタ処理部に入力して更に前記二次元フィルタ処理を行わせ、当該二次元フィルタ処理を前記所定の回数だけ行わせることを特徴とする。
【発明の効果】
【００２１】
上記発明の側面によれば、変換対象の二次元データをブロック単位で入力し、二次元フィルタ処理を分割回数だけ繰り返して実行し、処理済みの変換されたデータが出力されるので、処理対象の二次元データを格納する外部メモリへのアクセス回数を減らすことができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態を図面にしたがって説明する。しかしながら、本発明の技術的範囲は実施の形態に限定されず特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００２３】
［離散ウエーブレット変換装置（ＤＷＴ装置）］
図８は、本実施の形態におけるタイリングの原理を説明するための図である。図２で説明したように、１ページの二次元画像データ１１全てに対してフィルタ処理を再帰的に行うためには、フィルタ処理部内に１ページ分の画像データを格納する大容量のメモリを内蔵させるか、または外部の画像メモリへのメモリアクセスを頻繁に行う必要がある。そこで、タイリングを行うことが提案されている。すなわち、図８に示されるように、１ページの二次元画像データ１１を複数のブロック11a〜11pに分割し、各ブロックの画像データに対して離散ウエーブレット変換を行うようにすることで、内蔵メモリの容量を小さく抑えることができる。
【００２４】
例えば、図８のブロック１１ａの二次元データに対して、二次元フィルタ処理を３回繰り返すことで、図８（Ｄ）に示したブロック１１ａに対するコード変換されたデータが生成される。すなわち、一旦画像メモリからブロックのデータを読み出したら、フィルタ処理部がそのブロックについて所定回数だけ二次元フィルタ処理を繰り返し行い、図８（Ｂ）、（Ｃ）、（Ｄ）のように変換済みデータを順次出力する。そのために、後述するとおり、離散ウエーブレット変換装置内には、階層毎に二次元フィルタ処理済みの低周波帯域ＬＬの二次元データを格納する内蔵メモリが必要になる。この内蔵メモリに格納された低周波帯域ＬＬの二次元データが、再度二次元フィルタ処理される。
【００２５】
更に、タイリングによりブロック単位で二次元フィルタ処理を行うと、ブロックの境界上で変換精度の低下が生じる。この精度低下を回避するために、境界上で既に演算済みの中間データを格納する内蔵メモリを設ける。この内蔵メモリに、あるブロックの二次元フィルタ処理を行う時に得られる境界の入力データの演算済み中間データを格納しておき、隣接するブロックの二次元フィルタ処理を行うときに、この中間データを読み出して処理することで、境界での変換精度の低下を回避し、且つ外部の画像メモリへのアクセスの繰り返しや演算の繰り返しをなくすことができる。
【００２６】
図９は、本実施の形態における離散ウエーブレット変換（ＤＷＴ）装置を示す図である。図９（Ａ）はＤＷＴ装置と画像メモリとを示すシステム図であり、図９（Ｂ）はＤＷＴ装置内のブロックデータメモリの構成図である。ＤＷＴ装置７１０は、外部メモリの画像メモリ７００とデータバスで接続され、メモリコントローラなどの入力制御装置７１０によるアクセス制御によって、画像メモリ７００内の変換対象の二次元画像データが読み出され、入力データ７０２としてフィルタ処理部７０３に入力される。フィルタ処理部７０３は、例えば、図４（Ａ）、図５（Ａ）に示したＤＷＴ用のフィルタ回路を有する。好ましくは、後述するＤＷＴ用フィルタ回路が設けられる。ＤＷＴ装置７１０は、フィルタ処理部７０３がフィルタ処理したデータを一時的に格納するブロックデータメモリ７０４と、ブロックの境界上のデータについて、フィルタ処理中に生成される一部演算済みの中間データを一時的に格納する中間データメモリ７０５と、外部の画像メモリ７００とブロックデータメモリ７０４と中間データメモリ７０５のアクセスを制御する演算制御部７０６とを有する。
【００２７】
中間データメモリ７０５は、望ましくはＤＷＴ装置７１０に内蔵されたメモリであるが、必要に応じて、外部の高速アクセスメモリであってもよい。また、ブロックデータメモリ７０４は、アクセス頻度が高いので、ＤＷＴ装置内の内蔵メモリであることが望ましい。
【００２８】
ブロックデータメモリ７０４は、二次元フィルタ処理の階層ＮＬに対応した数のメモリ領域MLL(0)〜MLL(NL-1)を有する。このブロックデータメモリのメモリ領域MLL(1)〜MLL(NL-1)には、各分割階層の二次元フィルタ処理により変換された低周波帯域（ＬＬ）の二次元データが一時的に格納され、更に、メモリ領域MLL(0)には各分割階層の二次元フィルタ処理における最初の一次元フィルタ処理された高周波成分と低周波成分の二次元データが一時的に格納される。これらのメモリ領域のサイズは、ｎ＋４行ｎ＋４列の画像データを格納可能なサイズであり、変換対象の画像データを分割したブロックのうち最大ブロックサイズである。メモリ領域のサイズについては、後に詳述する。
【００２９】
図１０は、ＤＷＴ装置内の演算制御部７０６の一部を示す構成図である。演算制御部７０６は、少なくとも外部メモリ７００と、ブロックデータメモリ７０４と、中間データメモリ７０５とに対するアクセス制御を行う。そのために、アクセス制御手段７２０を有し、アクセス制御手段７２０は、二次元フィルタ処理による分割処理の階層の深さを格納する階層レジスタ７２４の階層数と、ブロック座標を格納するブロック座標レジスタ７２６のブロック座標とに応じて、ブロック内アドレスBAddを生成するブロック内アドレス生成手段７２２を有する。ブロック内アドレス生成手段７２２は、中間データメモリ内アドレス705Addも生成する。
【００３０】
上記のＤＷＴ装置の動作の一例について説明すると、演算制御部７０６によるアクセス制御により、図８に示したブロック１１ａの二次元画像データが垂直方向（又は水平方向）に読み出され、そのデータ列が入力データ７０２としてフィルタ処理部７０３に入力される。フィルタ処理部７０３でデータ列の高周波成分と低周波成分とに分離されそれぞれダウンサイズされた二次元データがブロックデータメモリ７０４内のメモリ領域MLL(0)に一時的に格納される。この時、垂直方向の境界部分の中間データが中間データメモリ７０５に格納される。そして、演算制御部７０６によるアクセス制御により、ブロックデータメモリ内のメモリ領域MLL(0)内の二次元画像データが、今度は水平方向（又は垂直方向）に読み出され、そのデータ列がフィルタ処理部７０３で高周波成分と低周波成分とに分離されそれぞれダウンサイズされる。この時に生成された４つの周波数帯域（ＨＨ，ＨＬ，ＬＨ，ＬＬ）のうちの、帯域ＬＬの二次元データはブロックデータメモリ内のメモリ領域MLL(1)に格納され、他の周波数帯域の二次元データは出力データ７０６として出力される。出力データ７０６は、次のエントロピー処理部のために図示しないバッファメモリに格納される。また、フィルタ処理部７０３で生成されたブロックの左右境界領域の中間データは中間データメモリ７０５に格納される。以上で、１回目の二次元フィルタ処理が終了する。従って、この状態では、図８（Ｂ）の帯域ＬＬの二次元画像データが、ブロックデータメモリ７０４内に格納され、他の帯域のデータは出力されている。
【００３１】
次に２階層目の二次元フィルタ処理が行われ、演算制御部７０６のアクセス制御により、ブロックデータメモリ内のメモリ領域MLL(1)内の二次元画像データが、垂直方向（又は水平方向）に読み出され、そのデータ列がフィルタ処理部７０３にて高周波成分と低周波成分とに分離され、メモリ領域MLL(0)に一時的に格納される。この時の中間データも中間データメモリに格納される。そして、演算制御部７０６のアクセス制御により、メモリ領域MLL(0)の二次元画像データが水平方向（又は垂直方向）に読み出され、そのデータ列がフィルタ処理部７０３にて高周波成分と低周波成分とに分離される。この時の中間データも中間データメモリに格納される。そして、帯域ＬＬの二次元画像データがブロックデータメモリ７０４内のメモリ領域MLL(2)に格納され、他の帯域の二次元データは出力される。この結果、図８（Ｃ）の帯域ＬＬのデータのみがブロックデータメモリ７０４に格納され、他の帯域のデータは出力済みである。
【００３２】
最後に３階層目の二次元フィルタ処理が行われる。２階層目と同様に、演算制御部７０６のアクセス制御により、ブロックデータメモリ内のメモリ領域MLL(2)内の二次元画像データが、垂直方向（又は水平方向）に読み出され、そのデータ列がフィルタ処理部７０３にて高周波成分と低周波成分とに分離され、メモリ領域MLL(0)に一時的に格納される。この時の中間データも中間データメモリに格納される。そして、演算制御部７０６のアクセス制御により、メモリ領域MLL(0)の二次元画像データが水平方向（又は垂直方向）に読み出され、そのデータ列がフィルタ処理部７０３にて高周波成分と低周波成分とに分離される。この時の中間データも中間データメモリに格納される。そして、帯域ＬＬの二次元画像データがブロックデータメモリ７０４内のメモリ領域MLL(3)に格納され、他の帯域の二次元データは出力される。この結果、図８（Ｄ）の帯域ＬＬのデータのみがブロックデータメモリ７０４に格納され、他の帯域のデータは出力済みである。
【００３３】
そして、最終階層であるＮＬ階層目の二次元フィルタ処理が行われる時は、処理済みの全ての帯域の二次元データが出力データ７０６として出力される。
【００３４】
次に、隣接するブロック１１ｂについて、上記と同じＮＬ階層の二次元フィルタ処理が行われる。この処理もブロック１１ａの処理と同じであり、但し、ブロック１１ａとの境界におけるフィルタ処理では、中間データメモリ７０５内に一時的に格納した中間データが利用される。そのため、ブロック１１ｂの二次元フィルタ処理を行う時に、その周囲の領域11beのデータを入力する必要がなく、また隣接ブロック１１ａのデータに対する中間データまでの演算を繰り返す必要もない。この中間データについては、後述するフィルタ回路においてより詳細に説明する。
【００３５】
以上のように、図９のＤＷＴ装置を利用してタイリング処理を行うことにより、外部メモリである画像メモリ７００からのデータ読み出しを１回に限ることができ、外部メモリへのアクセス頻度を抑えることができる。
【００３６】
［再帰的処理におけるブロックの処理順］
二次元フィルタ処理されると処理後の帯域ＬＬの二次元データサイズは、処理前の二次元データサイズの1/4にダウンサイズされる。従って、前述の如く、画像メモリから取り込んだブロック１１ａをＮＬ階層目まで連続して二次元フィルタ処理を行おうとすると、各階層毎に処理単位のブロックサイズが徐々に縮小することが理解される。このように処理単位が変化すると、階層毎にアクセス制御を変更する必要がある。ＤＷＴ装置の処理速度を向上するためにハードウエア回路によりＤＷＴ処理を行う場合、このように制御が毎回異なると、そのハードウエア構成が複雑化する。従って、処理単位をできるだけ統一することが望ましい。
【００３７】
そこで、本実施の形態では、二次元の画像データを分割したブロックの処理順を所定の順位にし、各階層での二次元フィルタ処理の処理単位をできるだけ同じにできるようにする。
【００３８】
図１１は、本実施の形態におけるブロックの処理順と再帰的処理の順番を示す図である。図１１（Ａ）はブロックの処理順を示し、図１１（Ｂ）は複数ブロックを有するブロック群と、複数ブロック群を有する拡大ブロック群の再帰的処理の順番を示す。
【００３９】
図１１（Ａ）は、二次元画像データ１１を９行９列のブロックに分割し、各ブロック内に二次元フィルタ処理を実行する順番が記入されている。すなわち、画像データ１１の左端上端を開始位置として、ブロック０，１，２，３が順番にフィルタ処理部７０３に入力され、そこで二次元フィルタ処理が行われる。そして、４つのブロックの1/4にダウンサイズされた帯域ＬＬの二次元データが、ブロックデータメモリ７０４の１階層目のメモリ領域MLL(1)に格納される。この時点で、ブロック０〜３の１階層目の二次元フィルタ処理が完了する。メモリ領域MLL(1)に格納されている二次元データは、１つのブロックと同等のデータサイズになっている。そこで、ブロックデータメモリ内のメモリ領域MLL(1)内の二次元データがフィルタ処理部７０３に入力され、２階層目の二次元フィルタ処理が行われ、更に1/4にダウンサイズした帯域ＬＬの二次元データがメモリ領域MLL(2)に格納される。この２階層目の二次元フィルタ処理の処理サイズは、１階層目の各ブロックに対する二次元フィルタ処理の処理サイズと同等であるので、その処理の制御も同等にすることができる。
【００４０】
図１１（Ｂ）に示されるとおり、２行２列のブロック０〜３からなるブロック群について２階層目の処理が終了すると、そのブロック群の右隣のブロック群４〜７について、上記と同様に１階層目と２階層目の二次元フィルタ処理が行われる。その結果、２階層目に対応するメモリ領域MLL(2)には、ブロック群０〜３とブロック群４〜７の２回の分割後の帯域ＬＬのデータが格納される。次に、ブロック群８〜１１について２回の二次元フィルタ処理が行われ、ブロック群１２〜１５について２回の二次元フィルタ処理が行われる。その結果、メモリ領域MLL(2)には、４つのブロック群に対して２回の二次元フィルタ処理を行った結果得られる帯域ＬＬのデータが格納される。しかも、そのデータサイズは、１ブロックのサイズと同等になっている。そこで、４つのブロック群からなる拡大ブロック群（ブロック０〜１５）の２回分割後の帯域ＬＬのデータに対して、３階層目の二次元フィルタ処理が行われる。この処理の制御も、データサイズが１ブロックのサイズと同等であるので、同様の制御回路により行うことができる。拡大ブロック群（ブロック０〜１５）の３階層目の二次元フィルタ処理が完了すると、その帯域ＬＬのデータがメモリ領域MLL(3)に格納される。
【００４１】
次に、図示されるように、拡大ブロック群（ブロック１６〜３１）に対して、上記と同様に、４つのブロック（例えば、ブロック１６〜１９）に対する１階層目の処理と、４つのブロック群（例えば、ブロック１６〜１９，２０〜２３、２４〜２７、２８〜３１）に対する２階層目の処理と、拡大ブロック群（ブロック１６〜３１）に対する３階層目の処理とが、再帰的に行われる。各階層での処理データサイズは、いずれも１ブロックのサイズと同様であり、再帰的に行われる処理の制御も同等である。
【００４２】
その後、左斜め隣の拡大ブロック群（ブロック３２〜４７）と、右隣の拡大ブロック群（ブロック４８〜６３）とについても、同様に３階層の二次元フィルタ処理が再帰的に行われる。そして、残りのブロックについても、同様の順番で二次元フィルタ処理が行われる。
【００４３】
上記の処理順は、一例であって、例えば、上端左端を開始位置にして時計回り又は反時計回りの順番であってもよい。また、ブロック群や拡大ブロック群は、必ずしも２行２列である必要はなく、二次元フィルタ処理によりデータサイズが1/4ダウンサイズされるので、４行４列や２行４列のように、４の倍数個のかたまりで再帰的処理が行われることが望ましい。但し、再帰的処理のデータサイズを大きくすると、ブロックデータメモリ７０４の各処理階層に対するデータ領域MLLの容量が大きくなるので、処理サイズは比較的小さいことが望まれる。
【００４４】
［フィルタ処理部］
図１２は、本実施の形態におけるフィルタ処理部７０３の一例としての９×７フィルタの構成図である。このフィルタ回路は、偶数側入力端子INevenと奇数側入力端子INoddと、係数α、β、γ、δの乗算回路６１３〜６１６と、加算回路６０１〜６０８と、遅延フリップフロップＦ０，Ｆ２，Ｆ３，Ｆ４，Ｆ６，Ｆ７，Ｆ８，Ｆａ，Ｆｂ，Ｆｃ，Ｆｅ，Ｆｆと、乗算回路６１７，６１８とを有し、乗算回路６１７の出力が低周波成分データＬＰとして、乗算回路６１８の出力が高周波成分データＨＰとして出力される。つまり、クロックサイクルに同期して、偶数と奇数のデータ列が順次入力され、フリップフロップＦ０、Ｆ２（Ｆ３）、Ｆ４、Ｆ６（Ｆ７）、Ｆ８、Ｆａ（Ｆｂ）、Ｆｃ、Ｆｅ（Ｆｆ）からなる８つのステージがパイプライン動作する。なお、各遅延フリップフロップに供給されるクロックは省略されている。
【００４５】
更に、図１２の９×７フィルタは、ブロックの境界部分での演算済み中間データＦ０，Ｆ４，Ｆ８，Ｆｃをそれぞれ格納するメモリMEM0〜MEM3と、スイッチＳ２，Ｓ５，Ｓ８，Ｓ１１を有する。このメモリMEM0〜MEM3は、中間データメモリ７０５であり、ブロックの境界部分の画像データから生成済みの中間データが格納される。
【００４６】
図１３は、９×７フィルタの動作を示すチャート図である。画像データ列X(0),X(1)〜X(6),X(7),X(8),X(9)の偶数データと奇数データからなる１対のデータが、各クロックサイクルCLK1〜CLK5に同期して入力される。そして、データ列X(0)〜X(6)から最初の高周波成分データY(3)が生成され、データ列X(2)〜X(8)から次の高周波成分データY(5)が生成され、データ列X(0)〜X(8)から最初の低周波成分データY(4)が生成される。また、中間データメモリMEM0〜MEM3には、最後の４クロックサイクルで、中間データＦ０，Ｆ４，Ｆ８，Ｆｃが順次書き込まれる。そして、次のブロックに対するフィルタ処理を行う時に、最初の４クロックサイクルで、中間データメモリMEM0〜MEM3内の中間データＦ０、Ｆ４，Ｆ８，Ｆｃが順次読み出され、スイッチを介して加算回路６０２，６０４，６０６，６０８に供給される。
【００４７】
以下、最初の高周波成分データY(3)と低周波成分データY(4)とが生成されるまでの動作について説明する。第１のクロックサイクルCLK1で、第１の偶数データX(0)に第１の係数αを乗算し第１の奇数データX(1)を加算した第１の中間データＦ０を生成する。次に、第２のクロックサイクルCLK2で、第２の偶数データX(2)に第１の係数αを乗算しそれに第１クロックサイクルでの第１の中間データＦ０を加算した第２の中間データＦ２を生成する。また、第２のクロックサイクルで、第２の奇数データX(2)がフリップフロップF3にラッチされ、同時に第２の偶数データX(2)に第１の係数αを乗算し第２の奇数データX(3)を加算した第１の中間データＦ０が生成される。
【００４８】
次に、第３のクロックサイクルCLK3で、第２クロックサイクルCLK2での第２の中間データＦ２に第２の係数βを乗算しそれに第２の偶数データX(2)を加算した第３の中間データＦ４を生成する。更に、第４のクロックサイクルCLK4で、第３のクロックサイクルCLK3で生成された第２の中間データＦ２に第２の係数βを乗算しそれに第３クロックサイクルCLK3での第３の中間データＦ４を加算した第４の中間データＦ６を生成する。この第４のクロックサイクルCLK4では、同時に、フリップフロップＦ７，Ｆ４，Ｆ２，Ｆ３，Ｆ０にもそれぞれ対応する中間データがラッチされる。また、クロックサイクルCLK4において、境界手前の偶数データX(6)と奇数データX(7)が入力されると、内部メモリMEM0に加算回路601の出力が書き込まれる（MEM0=W）。
【００４９】
次に、第５のクロックサイクルCLK5で、第４クロックサイクルCLK4での第４の中間データＦ６に第３の係数γを乗算し第３のクロックサイクルCLK3での第２の中間データＦ２、Ｆ７を加算した第５の中間データＦ８を生成する。また、クロックサイクルCLK5において、スイッチＳ２がメモリ側に制御され（Ｓ２＝４）、内部メモリMEM0内のデータと偶数データX(8)に係数αを乗算したデータとが加算回路６０２で加算されて、フリップフロップＦ２にラッチされる。従って、このクロックサイクルCLK5では内部メモリMEM0が読み出し制御される（MEM0=R）。更に、内部メモリMEM1にはデータＦ２に係数βを乗算してデータＦ３を加算したデータが書き込まれる（MEM1=W）。
【００５０】
更に、第６のクロックサイクルCLK6で、第５のクロックサイクルCLK5での第４の中間データＦ６に第３の係数γを乗算しそれに第５サイクルでの第５の中間データＦ８を加算した第６の中間データＦａを生成する（ステージST6）。この第６のクロックCLK6でも、同時の他のフリップフロップにはそれぞれ対応する中間データがラッチされる。また、クロックサイクルCLK6において、スイッチＳ５がメモリ側に制御され（Ｓ５＝４）、内部メモリMEM1から読み出された（MEM1=R）データが、データＦ２に係数βを乗算したデータに加算回路６０４で加算され、フリップフロップＦ６にラッチされる。同時に、データＦ６に係数γを乗算してデータＦ７を加算したデータが内部メモリMEM2に書き込まれる（MEM2=W）。
【００５１】
次に、第７のクロックサイクルCLK7で、第６クロックサイクルCLK6での第６の中間データＦａに第４の係数δを乗算しそれに第５のクロックCLK5での第４の中間データＦ６、Ｆｂを加算した第７の中間データＦｃを生成する。また、クロックサイクルCLK7において、スイッチＳ８がメモリ側に制御され（Ｓ８＝４）、内部メモリMEM2から読み出された（MEM2=R）データが、データＦ６に係数γを乗算したデータに加算回路６０６で加算され、フリップフロップＦａにラッチされる。同時に、データＦａに係数δを乗算してデータＦｂを加算したデータが内部メモリMEM3に書き込まれる（MEM3=W）。
【００５２】
更に、第８のクロックサイクルCLK8で、第７のクロックサイクルCLK7での第６の中間データＦａに第４の係数δを乗算しそれに第７クロックサイクルCLK7での第７の中間データＦｃを加算した第８の中間データＦｅを生成する。そして、最後に中間データＦｅに調整係数１／Ｋを乗算して低周波成分データＬＰが出力され、中間データＦｆに調整係数Ｋを乗算して高周波成分データＨＰが出力される。また、クロックサイクルCLK8において、スイッチＳ１１がメモリ側に制御され（Ｓ１１＝４）、内部メモリMEM3からデータが読み出され（MEM3=R）、データＦａに係数δを乗算したデータと加算され、フリップフロップＦｅにラッチされる。
【００５３】
つまり、クロックサイクルCLK8で最初の高周波成分データY(3)が出力され、それ以降は、クロックサイクル毎に高周波、低周波成分データの両周波成分データが生成される。従って、データ列が１個づつ入力される図５（Ａ）の例に比較すると、演算速度が２倍速くなっている。
【００５４】
更に、隣接するブロックに対してフィルタ処理が開始されると、境界より右側の最初のデータ対X(8),X(9)が入力され、内部メモリMEM0に書き込んでいたデータと偶数データX(8)に係数αを乗じたデータとが加算器６０２で加算され、フリップフロップＦ２にラッチされる。この動作は、クロックサイクルCLK4と同じである。その後は、図１３に示されたクロックサイクルCLK5〜CLK8が繰り返され、最初の変換データY(4),Y(5)が出力される。
【００５５】
内部メモリMEM0〜MEM3が設けられていなければ、隣接するブロックに対する二次元フィルタ処理を開始するに際して、既に演算済みのブロック内のデータX(0)〜X(7)をクロックサイクルCLK1〜CLK4により順次入力し演算する必要がある。しかし、図１２のフィルタ回路によれば、内部データメモリMEMに中間の演算データを順次格納しているので、隣接するブロックの二次元フィルタ処理を、クロックサイクルCLK5が開始することができ、最初の４つのクロックサイクルCLK1〜CLK3を省略し、データ列X(0)〜X(5)を再度入力する必要がなくなる。従って演算効率を高めることができる。
【００５６】
図１４は、本実施の形態におけるフィルタ処理部７０３の一例としての５×３フィルタの構成図及び動作フローチャート図である。この例でも、データ列の奇数列ＩＮevenと偶数列ＩＮoddとがクロックに同期して同時に入力され、更に、ブロックの境界でのデータ列に対する中間データが中間データメモリMEM(0)、MEM(1)にそれぞれ格納され、隣接ブロックの処理の時に読み出される。その構成は、９×７フィルタの前半部分と同じであり、その動作も前述の９×７フィルタと同様である。
【００５７】
［再帰的二次元フィルタ処理の詳細説明］
次に、図１１で説明したブロックに対する二次元フィルタ処理の詳細を説明する。図１５〜図２３は、本実施の形態における再帰的二次元フィルタ処理を説明するための図である。以下の例では、３階層の二次元フィルタ処理が行われる場合について説明する。
【００５８】
図１５、１６がブロック０〜３に対する１階層目の二次元フィルタ処理を、図１７が、ブロック０〜３からなるブロック群に対する２階層目の二次元フィルタ処理をそれぞれ示す。更に、図１８は、ブロック４〜７に対する１階層目の二次元フィルタ処理とそれらブロックからなるブロック群に対する２階層目の二次元フィルタ処理を示す。同様に、図１９，図２０は、ブロック８〜１１とブロック１２〜１５に対する１階層目と２階層目の二次元フィルタ処理を示す。そして、図２１は、拡大ブロック群（ブロック０〜１５）に対する３階層目の二次元フィルタ処理を示す。また、図２２，２３は、上記３階層の二次元フィルタ処理の全体を示す。従って、以下の説明は、図２２，２３の全体を参照しながら、図１５〜図２１について説明する。
【００５９】
図１５において、画像メモリ７００内のブロック０の二次元データが垂直方向に読み出され、フィルタ処理部７０３に入力され、データ列が高周波成分0(H)と低周波成分0(L)とに分離され、ブロックデータメモリ７０４内のデータ領域MLL(0)に格納される。更に、データ領域MLL(0)の二次元データが水平方向に読み出されてフィルタ処理部７０３に再度入力され、そのデータ列が高周波成分と低周波成分に分離される。そして、二次元フィルタ処理の結果生成された４つの周波数帯域（ＬＬ，ＬＨ，ＨＬ，ＨＨ）のうち、帯域ＬＬの二次元データがデータ領域MLL(1)に格納され、それ以外の帯域ＬＨ，ＨＬ，ＨＨのデータは出力データ７０６として出力される。上記の画像メモリ７００へのアクセス制御と、ブロックデータメモリのメモリ領域へのアクセス制御は、演算制御部７０６内のアクセス制御手段７２０（図１０参照）により行われる。メモリ領域MLL(1)に格納された帯域ＬＬのデータは、ブロックの1/4にダウンサイズされている。
【００６０】
図１５において、画像メモリ７００内のブロック１が垂直方向に読み出され、フィルタ処理部７０３で高周波成分と低周波成分とに分離され、メモリ領域MLL(0)に一時的に格納される。そして、そのメモリ領域MLL(0)の二次元データが水平方向に読み出され、フィルタ処理される。そして、帯域ＬＬのデータのみがメモリ領域MLL(1)に格納され、それ以外のデータは出力データ７０６として出力される。
【００６１】
図１６においても、図１５と同様に、画像メモリ内のブロック２とブロック３とについて、それぞれ二次元フィルタ処理され、帯域ＬＬの二次元データのみがブロックデータメモリ内のメモリ領域MLL(1)に格納され、それ以外の成分のデータは出力される。これで、ブロック０〜３の１階層目の二次元フィルタ処理が終了する。
【００６２】
次に、図１７に示されるように、ブロック０〜３の１回目の二次元フィルタ処理により生成された帯域ＬＬの二次元データを、メモリ領域MLL(1)から垂直方向に読み出し、フィルタ処理を行ってメモリ領域MLL(0)に一時的に格納する。更に、メモリ領域MLL(0)のデータを水平方向に読み出してフィルタ処理を行って、帯域ＬＬの二次元データIを２階層目のメモリ領域MLL(2)に格納する。つまり、ブロック０〜３からなるブロック群に対する２階層目の二次元フィルタ処理により生成された帯域ＬＬの二次元データがメモリ領域MLL(2)に格納される。この時の処理データサイズは、1/4ダウンサイズされた帯域ＬＬの二次元データの４倍であるので、各ブロックのデータサイズと同等である。以上が、図２２の第１行に記載された１階層目のフィルタ処理Ｆ１と２階層目のフィルタ処理Ｆ２である。フィルタ処理Ｆ１は４つのブロックそれぞれについて行われるので、合計４回行われている。
【００６３】
図１８は、ブロック４〜７それぞれについての１階層目の二次元フィルタ処理と、更に、ブロック群４〜７に対する２階層目の二次元フィルタ処理とを示し、その結果、ブロック群４〜７の帯域ＬＬの二次元データIIがメモリ領域MLL(2)に格納され、それ以外の帯域のデータが出力されている。これは、図２２の第２行に記載された１階層目のフィルタ処理Ｆ１と２階層目のフィルタ処理Ｆ２である。
【００６４】
図１９は、ブロック８〜１１それぞれについての１階層目の二次元フィルタ処理と、更に、ブロック群８〜１１に対する２階層目の二次元フィルタ処理とを示し、その結果、ブロック群８〜１１の帯域ＬＬの二次元データIIIがメモリ領域MLL(2)に格納され、それ以外の帯域のデータが出力されている。これは、図２２の第３行に記載された１階層目のフィルタ処理Ｆ１と２階層目のフィルタ処理Ｆ２である。
【００６５】
図２０は、ブロック１２〜１５それぞれについての１階層目の二次元フィルタ処理と、更に、ブロック群１２〜１５に対する２階層目の二次元フィルタ処理とを示し、その結果、ブロック群１２〜１５の帯域ＬＬの二次元データIVがメモリ領域MLL(2)に格納され、それ以外の帯域のデータが出力されている。これは、図２２の第４行に記載された１階層目のフィルタ処理Ｆ１と２階層目のフィルタ処理Ｆ２である。
【００６６】
図２１は、拡大ブロック群（ブロック０〜１５）についての３階層目の二次元フィルタ処理を示す。メモリ領域MLL(2)に格納された２回の二次元フィルタ処理済みの帯域ＬＬのデータＡに対して、３階層目の二次元フィルタ処理が行われ、出力されている。これは、図２２の第５行目の３階層目のフィルタ処理Ｆ３である。
【００６７】
図２３では、図２２に示した１６個のブロックに対する３階層の二次元フィルタ処理Ｆ１（図示せず），Ｆ２，Ｆ３が、ブロック１６〜３１、３２〜４７、４８〜６３に対してそれぞれ行われている。図２３の最終的に生成された帯域ＬＬの二次元データＡ〜Ｄは、拡大ブロック群０〜１５、１６〜３１、３２〜４７、４８〜６３に対するものである。なお、図１１のブロックの例では、更に処理すべきブロックが残っているが、図２３ではそれらのブロックについては省略している。
【００６８】
以上の通り、二次元フィルタ処理の階層が深くなるたびに、ブロック群、拡大ブロック群と帯域ＬＬのブロック数を４倍に増やすことで、各階層での二次元フィルタ処理のデータサイズを同程度に保つことができ、ＤＷＴ装置のハードウエア構成が複雑化するのを回避することができる。
【００６９】
［再帰的二次元フィルタ処理の処理サイズ］
本実施の形態の再帰的な二次元フィルタ処理を行えば、外部メモリ内の画像データへのアクセスを各画素１回にすることができ、更に、処理サイズが常に１ブロックのサイズであるので、フィルタ制御回路が簡単になる。
【００７０】
ところが、５×３フィルタの場合は、５つの入力データから１つの低周波成分のデータが、３つの入力データから１つの高周波成分のデータが生成される。また、９×７フィルタの場合は、９つの入力データから１つの低周波成分のデータが、７つの入力データから１つの高周波成分のデータが生成される。従って、ブロックの位置が上端または左端に位置する場合は、最初の入力データ列に対して出力データが得られないので、入力データ数よりも５×３フィルタでは２個、９×７フィルタでは４個少ない出力データが生成される。但し、ブロックの位置が上端及び左端でない場合は、最初の入力データ列の処理に隣接ブロックによる演算済み中間データを利用して出力データを生成するので、入力データ数と同じ数の出力データが生成される。そして、ブロックの位置が下端または右端に位置する場合は、最初の入力データ列での出力データの減少はなく、一方、最後の入力データ列では逆に４個多い出力データが得られる。つまり、上端または左端のブロックでは、出力データ数が入力データ数より４個少なく、下端または右端のブロックでは逆に４個多く、それ以外のブロックでは同じ個数になる。このように、ブロックの位置によっては出力データ数が異なるので、各ブロック、ブロック群、拡大ブロック群の処理データサイズをできるだけ同等にするためには、変換対象の画像データのブロックサイズを工夫する必要がある。
【００７１】
図２４は、変換対象の二次元データ１１のブロックサイズを全てｎ×ｎにした場合の二次元フィルタ処理サイズの変化を示す図である。図２４（１）に示されるとおり、変換対象の二次元データのブロックサイズを全てｎ×ｎ（ｎ画素列×ｎ画素行）とすると、１階層目の二次元フィルタ処理Ｆ１を行うと、図２４（２）に示されるように、上端且つ左端のブロックでは、生成される出力データが入力データ数−４個ととなり且つそれが1/2にダウンサンプリングされるので、帯域ＬＬのデータサイズは(n-4)/2×(n-4)/2になる。上端又は左端以外のブロックは、単に1/2にダウンサンプリングされるだけであり、帯域ＬＬのデータサイズはn/2×n/2になる。従って、上端且つ左端の４ブロックからなるブロック群のサイズは(n-2)×(n-2)、それ以外のブロック群のサイズはｎ×（n-2)、(n-2)×ｎ、n×nとなる。
【００７２】
次に、隣接する４ブロックからなるブロック群に対して２階層目の二次元フィルタ処理Ｆ２が行われると、同様の論理により、生成される帯域ＬＬのデータサイズは、図２４（３）のように、上端且つ左端では(n-6)/2×(n-6)/2となり、それ以外では、(n-6)/2×n/2、n/2×(n-6)/2、n/2×n/2となる。従って、隣接する４ブロックのサイズは、上端且つ左端で(n-3)×(n-3)、それ以外はｎ×（n-3)、(n-3)×ｎ、n×nとなる。
【００７３】
更に、隣接する４ブロックに対して３階層目の二次元フィルタ処理Ｆ３が行われると、生成される帯域ＬＬのデータサイズは、図２４（４）のように、上端且つ左端では(n-7)/2×(n-7)/2となり、隣接する４ブロックでは（n-7/2）×（n-7/2）となる。このように、二次元フィルタ処理の階層が深くなるにしたがって、処理サイズが微妙に異なることになり、このような異なる制御をハードウエア回路で構成すると回路規模の拡大を招いてしまう。
【００７４】
図２５は、本実施の形態におけるブロックサイズの一例を示す図である。変換対象の二次元データの分割されたブロックのサイズは、９×７フィルタを利用する場合は、上端且つ左端のサイズをｎ×ｎとすると、残りのブロックの列数と行数を図示されるようにn+4にすることで、階層毎に異なる処理サイズになることを回避することができる。
【００７５】
図２６は、図２５のブロックサイズにしたときの各階層でのブロックサイズの変遷を示す図である。図２６（１）のブロックサイズの各ブロックに対して１階層目の二次元フィルタ処理Ｆ１を行うと、出力データの数は、図２６（２）に示されるように、列の数は(n-4)/2、（n+4)/2、(n+4)/2．．．となり、行の数も(n-4)/2、（n+4)/2、(n+4)/2．．．となる。従って、隣接４ブロックのブロック群のサイズは、列の数はｎ、n+4、n+4．．．となり、行の数もｎ、n+4、n+4．．．となり、図２６（１）と同じブロックサイズになる。そして、隣接４ブロックからなるブロック群に対して２階層目の二次元フィルタ処理Ｆ２を行うと、図２６（３）に示されるように１階層目の処理と同じ結果になる。更に拡大ブロック群に対して２階層目の二次元フィルタ処理を行っても結果は、図２６（４）に示されるとおり、同じである。つまり、図２５に示したブロックサイズに分離して処理することで、各階層での二次元フィルタ処理対象のブロックサイズは常に同じになることが理解される。
【００７６】
図２５は、左端と上端の列と行のデータ数をそれ以外のデータ数より−４にしているが、前述したとおり、右端と下端では出力データの数が＋４になるので、出力されるデータ数は入力されるデータ数と一致する。
【００７７】
図２２，２３を参照して、図２５のブロックサイズにした場合の二次元フィルタ処理の制御について説明する。以下は、ブロック０〜１５に対する１階層目の処理サイズである。
ブロック０，１，２，３：ｎ×ｎ、(n+4)×ｎ、ｎ×(n+4)、(n+4)×(n+4)
ブロック４，５，６，７：(n+4)×ｎ、(n+4)×ｎ、(n+4)×(n+4)、(n+4)×(n+4)
ブロック８，９，10，11：ｎ×(n+4)、(n+4)×(n+4)、ｎ×(n+4)、(n+4)×(n+4)
ブロック12，13，14，15：(n+4)×(n+4)、(n+4)×(n+4)、(n+4)×(n+4)、(n+4)×(n+4)
となる。
【００７８】
更に、ブロック０〜５１に対する２階層目の処理サイズは、以下の通りである。
ブロック０〜１５：ｎ×ｎ、(n+4)×ｎ、ｎ×(n+4)、(n+4)×(n+4)
ブロック１６〜３１：(n+4)×ｎ、(n+4)×ｎ、(n+4)×(n+4)、(n+4)×(n+4)
ブロック３２〜４７：ｎ×(n+4)、(n+4)×(n+4)、ｎ×(n+4)、(n+4)×(n+4)
ブロック４８〜６３：(n+4)×(n+4)、(n+4)×(n+4)、(n+4)×(n+4)、(n+4)×(n+4)
となり、１階層目の処理サイズと同じである。
【００７９】
以上のように、二次元フィルタ処理の階層数とブロックの座標が分かれば、一義的に処理対象ブロックのサイズを求めることができ、それらのサイズの違いは、せいぜいｎ個かn+4個かの違いにしか過ぎない。このように、処理サイズの変化が再帰的であり且つその変化の種類も限定されているので、二次元フィルタ処理での制御回路の構成を簡単化することができる。
【００８０】
図２７は、本実施の形態におけるブロックサイズの別の例を示す図である。この例は、ＤＷＴ処理における二次元フィルタ処理の回数NLとしたときに、左端ブロックの列数をｎとし、その右側に隣接する２NL−１個のブロックの列数を全て(n+4)とし、更に右側に隣接するブロックの列数をｎとし、最後の右端のブロックの列を余った数とする。上端から下端のブロックの行数についても列数と同様に、ｎ、２NL−１個を(n+4)、ｎ，ｎ．．．とする。
【００８１】
図２８のブロックサイズにしたときの各階層でのブロックサイズの変遷を示す図である。二次元フィルタ処理による分割回数をNL＝２とすると、２NL−１＝３となるので、最初の置換対象のブロックサイズを図２８（１）のようになる。そして、１階層目の処理Ｆ１を行うと、図２８（２）のようになり、更に２階層目の処理を行うと、図２８（３）のようになる。つまり、各処理において、処理対象のサイズと生成されるサイズの種類は、ｎ個またはn+4個の２種類であるので、処理の制御回路を簡単化することが可能である。図２８（３）を更に処理すると、図２４に示した通りになるので、好ましくない。
【００８２】
図２９は、本実施の形態におけるブロックサイズの別の例を示す図である。この例は、５×３フィルタを利用した場合の例である。５×３フィルタの場合は、上端且つ左端で出力データ数が−２になり、下端且つ右端で出力データが＋２になる。従って、ブロックサイズは、列数をn、n+2、n+2．．．とし、行数もn、n+2、n+2．．．とすることで、９×７フィルタの場合と同様に階層毎にブロックサイズが同じになる再帰的制御を可能にする。
【００８３】
［逆離散ウエーブレット変換装置（ＩＤＷＴ装置）］
次に逆離散ウエーブレット変換装置について説明する。ＩＤＥＴ装置の場合は、変換された４つの成分の二次元データを逆二次元フィルタ処理して１つの二次元データに逆変換する手順を、再帰的に繰り返す処理である。従って、図２，３から明らかなように、４つのデータ２９を逆変換し、その逆変換データとデータ２６，２７，２８とを逆変換してデータ２０を生成し、データ１７〜２０から元の画像データ１１が生成される。従って、そのように処理を行うと、画像メモリへのアクセス頻度が多くなり、それを減らすためには、フィルタ処理部内に大容量のメモリを内蔵させることが必要になる。
【００８４】
そこで、本実施の形態では、ＤＷＴ装置と同様にタイリングの原理を利用すると共に、外部の画像メモリへのアクセス回数を減らし、内蔵メモリの容量も小さくするＩＤＷＴ装置を提供する。
【００８５】
図３０は、本実施の形態における逆離散ウエーブレット変換（ＩＤＷＴ）装置を示す図である。ＩＤＷＴ装置８１０では、処理対象が符号データ８００であり、フィルタ処理部８０３のフィルタ回路の構成が異なり、演算制御部のアクセス制御の順番が異なるだけであり、それ以外は図９のＤＷＴ装置と同じ構成である。ＩＤＷＴ装置の場合も、符号データを格納した外部メモリ８００からブロック毎に二次元データを入力し、フィルタ処理を行い、処理済みの復号化された二次元データをブロックデータメモリ８０４に格納し、更に、ブロックの境界近傍の入力データに対する演算済みの中間データを中間データメモリ８０５に格納する。
【００８６】
ブロックデータメモリ８０４は、水平方向のフィルタ処理した後のデータを一時的に格納するメモリ領域MLL(0)に加えて、処理階層に対応したメモリ領域MLL(1)〜MLL(NL-1)を有する。ＤＷＴ装置の場合は、１階層目の処理結果をMLL(1)に格納し、２階層目の処理結果をMLL(2)に格納し、NL-1階層目の処理結果をMLL(NL-1)に格納した。これに対して、ＩＤＷＴ装置８１０の場合は、処理階層が逆転しているので、最初のNL階層目の処理結果をMLL(NL-1)に格納し、次のNL-1階層目の処理結果をMLL(NL-2)に格納し、２階層目の処理結果をMLL(1)に格納し、１階層目の処理結果を出力する。
【００８７】
しかも、ＩＤＷＴ装置でもブロック毎に処理を行うので、図８の処理手順が逆転した処理手順となる。つまり、図８（Ｄ）の符号化データに対して、最も深い階層（３階層）処理された４つの帯域３ＬＬ〜３ＨＨの４ブロックＢＬ３をフィルタ処理して、図８（Ｃ）の帯域２ＬＬの二次元データＢＬ２１を生成する。これが３階層目の処理である。ＩＤＷＴでは、ＤＷＴ装置と逆にデータサイズは水平方向と垂直方向のフィルタ処理でそれぞれ２倍にアップサイズされるので、二次元フィルタ処理後の二次元データＢＬ２１のサイズは各ブロックＢＬ３の４倍になっている。そこで、生成された二次元データＢＬ２１を１／４分割してデータサイズを小さくし、他の帯域２ＨＬ，２ＬＨ，２ＨＨのブロックＢＬ２２，ＢＬ２３，ＢＬ２４の各１／４の二次元データと共に二次元フィルタ処理を行う。その結果、図８（Ｂ）の帯域１ＬＬ内の二次元データＢＬ１１の一部が生成される。これが２階層目の処理である。
【００８８】
更に、生成済みの一部の二次元データＢＬ１１を再度１／４分割して、他の帯域１ＨＬ，１ＬＨ，１ＨＨ内の二次元データＢＬ１２，ＢＬ１３，ＢＬ１４の対応するブロックの二次元データと共に、二次元フィルタ処理を行い、出力データ８０６として出力する。これが１階層目の処理である。この結果、図８（Ａ）のブロック１１ａの一部のデータの生成が完了する。この１階層目の処理は、二次元データＢＬＬ１１を１／４分割していたので、４回繰り返される。
【００８９】
そして、二次元データＢＬ２１〜ＢＬ２４に戻り、１／４分割した２番目のブロックについて、２階層目の処理を再度行い、二次元データＢＬＬ１１の一部が生成される。そして、上記と同様に、それを１／４分割して１階層目の処理を４回繰り返す。この二次元データＢＬ２１〜ＢＬ２４についての２階層目の処理と４回の１階層目の処理を、残りの２つの１／４分割したブロックについて行う。
【００９０】
そして、今度は、図８（Ｄ）の帯域３ＬＬ内の二次元データＢＬ３に隣接するブロックの二次元データに対して、３階層目の処理、２階層目の処理（１）、１階層目の処理×４回、２階層目の処理（２）、１階層目の処理×４回、２階層目の処理（３）、１階層目の処理×４回、２階層目の処理（４）、１階層目の処理×４回を行う。この手順は、まさに図２２のＤＷＴの手順を逆に行うものであることが理解される。この手順が図８（Ｄ）内の帯域３ＬＬの全ブロックに対して行われると、ＩＤＷＴ変換が完了する。この処理については、後に具体的に説明する。
【００９１】
図３０に示したＩＤＷＴ装置８１０内の演算制御部８０６の構成は、図１０に示した構成と同じである。つまり、ＩＤＷＴ変換の処理の階層とブロック座標から、現在のフィルタ処理対象のメモリのアドレスや処理サイズなどが一義的に決まるので、それにしたがってアクセス制御が行われる。
【００９２】
［再帰的処理におけるブロックの処理順及び処理サイズ］
図３１は、本実施の形態におけるＩＤＷＴ装置のブロックの処理順を示す図である。この例は、処理階層数がNL＝３の場合であり、従って、図８と同様に、変換対象の符号化データは、１階層目の処理による３つの帯域１ＨＬ，１ＬＨ，１ＨＨと、２階層目の処理による３つの帯域２ＨＬ、２ＬＨ、２ＨＨと、３階層目の処理による４つの帯域３ＬＬ，３ＨＬ，３ＬＨ，３ＨＨとを有する。そして、帯域３ＬＬが３つのブロック１，２２，３９，５６に分割されている。このブロックのサイズの最適化については、ＤＷＴ装置の場合と同じであるが、その点については後述する。
【００９３】
図３２は、ブロック１〜２１についてのＩＤＷＴ装置による処理手順を示す図である。この図では、階層数NLを一般化して示している。そして、NL=3の場合のメモリ領域MLLや二次元フィルタ処理が括弧書きで示されている。また、各処理ブロックには図３１のブロック処理番号が括弧書きで示されている。図３１と同様に階層数をNL=3とすると、左から右へ、且つ上から下への方向に二次元フィルタ処理Ｆ３，Ｆ２，Ｆ１が逆再帰的に繰り返される。そして、各二次元フィルタ処理において、外部メモリ８００とブロックデータメモリ８０４からデータが入力され、処理済みデータがブロックデータメモリ８０４のメモリ領域MLL(2)、MLL(1)に格納され、最後の１階層目の二次元フィルタ処理Ｆ１されたデータが出力される。
【００９４】
図３３は、本実施の形態におけるＩＤＷＴでのブロックサイズの一例を示す図である。この例は、９×７フィルタの場合の例である。本実施の形態では、ＩＤＷＴ装置において演算制御部８０６が外部メモリ８００やブロックデータメモリ８０４にアクセス制御し、ブロック単位でフィルタ処理を行うので、各処理単位をできるだけ共通にすることで、アクセス制御回路の構成を簡単化している。そのために、図３３に示されるように、変換対象の符号化データの各帯域NLＬＬ、NLＨＬ、NLＬＨ、NLＨＨを、複数のブロックに分割し、且つブロックのサイズを、列に関しては左端をn/2+4、それ以外をn/2とし、行に関しても上端をn/2+4、それ以外をn/2とする。このようにブロックサイズを設定することで、以下の説明で明らかになるとおり、各階層での二次元フィルタ処理のブロックサイズを共通にすることができる。
【００９５】
図３１と図３２を参照しながら、ブロック１〜２１についてのＩＤＷＴの処理手順を説明する。図３１に示されるように、各帯域NLＬＬ、NLＨＬ、NLＬＨ、NLＨＨがそれぞれ図３３のサイズで複数のブロックに分割され、番号の順番で処理される。最初に、帯域３ＬＬ、３ＨＬ，３ＬＨ，３ＨＨそれぞれにおける先頭ブロック１（サイズは（n/2+4)×（n/2+4)）の二次元データを外部メモリ８００から水平方向に読み出し、フィルタ処理部８０３によりフィルタ処理Ｆ３を行って、一旦ブロックデータメモリのメモリ領域MLL(0)に格納する。水平方向であるので、帯域３ＬＬと３ＨＬのブロック１の二次元データが同時にフィルタ処理され、その後、帯域３ＬＨ，３ＨＨのブロック１の二次元データが同時にフィルタ処理される。更に、メモリ領域MLL(0)内の二次元データを垂直方向に読み出し、フィルタ処理部８０３によりフィルタ処理Ｆ３を行って、ブロックデータメモリ８０４のメモリ領域MLL(NL-1）（NL＝３ではMLL(2)）に格納する。
【００９６】
この結果、メモリ領域MLL(2)には、帯域（NL-1)ＬＬ（NL＝３では２ＬＬ）の二次元データが生成され、左端、上端のフィルタ処理で出力数が−４になるので、そのサイズは、列、行共に、(n/2+1)＋(n/2+1)−４＝n+4となる。このようにデータサイズが約４倍になっているので、この二次元データを１／４に分割して、他の帯域２ＨＬ，２ＬＨ，２ＨＨの４ブロック２，７，１２，１７と２階層目の二次元フィルタ処理（Ｆ２−１〜Ｆ２−４）が行われる。そして、(n+4)×(n+4)の二次元データは、４つのブロック２，７，１２，１７と同じサイズになるように、列方向はn/2+4、n/2に、行方向もn/2+4、n/2に分割される。
【００９７】
そこで、演算制御部８０６は、帯域２ＬＬのデータ１のうち４分割した左上ブロックのデータをブロックデータメモリ８０４から読み出し、他の帯域２ＨＬ、２ＬＨ、２ＨＨのブロック２のデータを外部メモリ８００から読み出し、フィルタ処理部８０３が二次元フィルタ処理F2-1を行い、ブロックデータメモリ８０４のメモリ領域MLL（NL-2)（NL＝３ではMLL(1)）に格納する。
【００９８】
この結果、メモリ領域MLL(1)には、帯域（NL-2)ＬＬ（NL＝３では１ＬＬ）の二次元データが生成され、左端、上端のフィルタ処理で出力数が−４になるので、そのサイズは、列、行共に、(n/2+1)＋(n/2+1)−４＝n+4と、２ＬＬの二次元データと同じ(n+4)×(n+4)になる。データサイズが約４倍になっているので、この二次元データは１／４に分割され、他の帯域１ＨＬ，１ＬＨ，１ＨＨの４ブロック３，４，５，６と１階層目の二次元フィルタ処理（Ｆ１−１〜Ｆ１−４）が行われる。そして、(n+4)×(n+4)の二次元データは、４つのブロック３〜６と同じサイズになるように、列方向はn/2+4、n/2に、行方向もn/2+4、n/2に分割される。
【００９９】
すなわち、演算制御部８０６は、ブロックデータメモリ８０４のメモリ領域MLL(1)の先頭ブロックのデータを読み出し、外部メモリ８００のブロック３のデータを読み出し、フィルタ処理部が二次元フィルタ処理F1-1を行い、復号化データとして出力する。同様に、演算制御部は、メモリ領域MLL(1)の次のブロックのデータを読み出し、外部メモリのブロック４のデータを読み出し、二次元フィルタ処理F1-2が行われ、復号化データが出力される。更に、ブロック５，６についてもそれぞれ二次元フィルタ処理F1-3,F14が行われ、復号化データが出力される。
【０１００】
そこで、１階層戻って、演算制御部は、メモリ領域MLL(2)の右上のブロックのデータを読み出し、外部メモリ８００から帯域２ＨＬ，２ＬＨ，２ＨＨのブロック７のデータを読み出し、フィルタ処理部が二次元フィルタ処理F2-2を行い、メモリ領域MLL(1)に格納する。メモリ領域MLL(2)の右上ブロックのサイズは、n/2×(n/2+4)であり、ブロック７も図３３に示されるとおり同じサイズである。そして、二次元フィルタ処理F2-2により生成された二次元データは、メモり領域MLL(1)に格納される。このデータサイズは、ｎ×(n+4)となるので、それを列方向にn/2、n/2、行方向にn/2+4、n/2となるように４分割し、各ブロックについて、外部メモリ８００から読み出した帯域１ＨＬ，１ＬＨ，１ＨＨのブロック８，９，１０，１１それぞれと、１階層目の二次元フィルタ処理Ｆ１を行い、それぞれ復号化されたデータを出力する。
【０１０１】
再度、演算制御部は、メモリ領域MLL(2)の左下のブロックのデータを読み出し、外部メモリ８００から帯域２ＨＬ，２ＬＨ，２ＨＨのブロック１２のデータを読み出し、フィルタ処理部が二次元フィルタ処理F2-3を行い、メモリ領域MLL(1)に格納する。メモリ領域MLL(2)の左下ブロックのサイズは、 (n/2+4)×n/2であり、ブロック１２も図３３に示されるとおり同じサイズである。そして、二次元フィルタ処理F2-3により生成された二次元データは、メモり領域MLL(1)に格納される。このデータサイズは、(n+4)×ｎとなるので、それを列方向にn/2+4、n/2、行方向にn/2、n/2となるように４分割し、各ブロックについて、外部メモリ８００から読み出した帯域１ＨＬ，１ＬＨ，１ＨＨのブロック１３，１４，１５，１６それぞれと、１階層目の二次元フィルタ処理Ｆ１を行い、それぞれ復号化されたデータを出力する。
【０１０２】
最後に、メモり領域MLL(2)の右下ブロックのデータに対しても、IDWT装置は、ブロック１７と共に二次元フィルタ処理F2-4を行い、メモり領域MLL(1)に格納し、更に、４分割したブロックとブロック１８，１９，２０，２１それぞれとで二次元フィルタ処理Ｆ１を行い、それぞれ復号化されたデータを出力する。
【０１０３】
以上で、帯域３ＬＬのブロック１についてのＩＤＷＴ変換処理が完了する。その後は、上記のブロック１の処理手順と同様にして、帯域３ＬＬの残りのブロック２２，３９，５６それぞれについても、二次元フィルタ処理Ｆ３，Ｆ２，Ｆ１が繰り返される。しかも、各二次元フィルタ処理のサイズは、n/2+4かn/2の行列サイズになるので、アクセス制御回路の構成はシンプルである。ブロックの組合せとフィルタ処理との関係は以下の通りである。
1（Ｆ３） − 1,2(F2-1） − 2,3(F1-1), 2,4(F1-2), 2,5(F1-3), 2,6(F1-4）
− 1,7(F2-2） − 7,8(F1-1), 7,9(F1-2), 7,10(F1-3), 7,11(F1-4）
− 1,12(F2-3）−12,13(F1-1),12,14(F1-2),12,15(F1-3),12,16(F1-4）
− 1,17(F2-2）−17,18(F1-1),17,19(F1-2),17,20(F1-3),17,21(F1-4）
22（Ｆ３）−22,23(F2-1）−23,24(F1-1),23,25(F1-2),23,26(F1-3),23,27(F1-4）
−22,28(F2-2）−28,29(F1-1),28,30(F1-3)
−22,31(F2-3）−31,32(F1-1),31,33(F1-2),31,34(F1-3),31,35(F1-4）
−22,36(F2-2）−36,37(F1-1),36,38(F1-3)
39（Ｆ３）−39,40(F2-1）−40,41(F1-1),40,42(F1-2),40,43(F1-3),40,44(F1-4）
−39,45(F2-2）−45,46(F1-1),45,47(F1-2),45,48(F1-3),45,49(F1-4）
−39,50(F2-3）−50,51(F1-1),50,52(F1-2)
−39,53(F2-2）−53,54(F1-1),36,55(F1-2)
56（Ｆ３）−56,57(F2-1）−57,58(F1-1),57,59(F1-2),57,60(F1-3),57,61(F1-4）
−56,62(F2-2）−62,63(F1-1),62,64(F1-3)
−56,65(F2-3）−65,66(F1-1),65,67(F1-2)
−56,68(F2-2）−68,69(F1-1)
以上により、ＩＤＷＴ変換が完了する。上記説明から理解できるように、各二次元フィルタ処理の処理サイズがブロックサイズにほぼ画一化され、外部メモリ８００からの二次元データの読み出しは各画素で１回に抑えられている。また、ＩＤＷＴ装置内のブロックデータメモリは、処理サイズのメモり領域MLLを階層数に対応した数だけ設ければ良いので、内蔵メモリの容量を小さく抑えることができる。
【０１０４】
図３４は、本実施の形態におけるＩＤＷＴでのブロックサイズの一例を示す図である。この例は、５×３フィルタの場合の例である。５×３フィルタの場合は、上端と左端では出力データが入力データより−２個少ないので、図示されるサイズにすることで、前述と同様に、各フィルタ処理の処理単位であるブロックサイズを画一化することができ、アクセス制御回路をシンプルに構成することができる。
【０１０５】
［フィルタ処理部］
図３５は、本実施の形態におけるＩＤＷＴ装置内のフィルタ処理部の９×７フィルタ回路の一例を示す図である。また、図３６は、その動作フローチャート図である。ＩＤＷＴの場合は、フィルタ回路は、１／４にダウンサイズされた符号化データの高周波成分INHと低周波成分INLとを同時に入力し、図示される演算回路によりクロックに同期したパイプライン処理により、復号化された偶数と奇数の出力データOUTeven、OUToddとを順次出力する。動作は、図３６に示される通りであり、ＤＷＴ装置の９×７フィルタの逆変換演算であり、図１２，１３の例と類似するので、詳細な動作説明は省略する。
【０１０６】
図３５に示されるとおり、フィルタ回路は、ブロックの境界での入力データに対して、演算済みの中間データを中間データメモリMEM0〜MEM3に格納し、次に隣接するブロックのフィルタ処理を行う時に利用することで、外部メモリへのアクセスの回数を各画素１回に抑えている。
【０１０７】
図３７は、本実施の形態におけるＩＤＷＴ装置内のフィルタ処理部の５×３フィルタ回路の一例とその動作フローチャートを示す図である。この場合も、１／４にダウンサイズされた符号化データの高周波成分INHと低周波成分INLとを同時に入力し、クロックに同期したパイプライン処理により、復号化された偶数と奇数の出力データOUTeven、OUToddとを順次出力する。そして、この例でも、中間データを記憶する中間メモリMEM0,MEM1を有する。
【０１０８】
以上の実施の形態は、以下の付記の通りまとめることができる。
【０１０９】
（付記１）変換対象の二次元データを高周波成分と低周波成分とに分割する二次元フィルタ処理を所定の回数だけ行う離散ウエーブレット変換装置において、
データ列を入力して当該データ列の高周波成分と低周波成分とに分離するフィルタ処理部と、
前記変換対象の二次元データを分割したブロックの単位で、前記データ列を、前記フィルタ処理部に入力する制御部と、
前記フィルタ処理部により分離された二次元フィルタ処理済みの二次元データを一時的に格納するブロックデータメモリとを有し、
前記制御部は、前記変換対象の二次元データのブロックのデータ列を前記フィルタ処理部に入力して前記二次元フィルタ処理を行わせ、前記二次元フィルタ処理済みの二次元データを前記ブロックデータメモリから前記フィルタ処理部に入力して更に二次元フィルタ処理を行わせ、当該二次元フィルタ処理を前記所定の回数だけ行わせることを特徴とする離散ウエーブレット変換装置。
【０１１０】
（付記２）付記１において、
更に、前記フィルタ処理部によりフィルタ処理された時の前記ブロックの境界での中間データを一時的に格納する中間データメモリを有し、前記制御部は、隣接するブロックの二次元データを入力するときに、前記中間データメモリから前記中間データを入力することを特徴とする離散ウエーブレット変換装置。
【０１１１】
（付記３）付記１において、
前記フィルタ処理部は、前記二次元フィルタ処理済みの二次元データのうち、垂直方向及び水平方向のデータ列に対するフィルタ処理で分離された低周波帯域の二次元データを前記ブロックデータメモリに格納し、それ以外の帯域の二次元データを出力することを特徴とする離散ウエーブレット変換装置。
【０１１２】
（付記４）付記１において、
前記制御部は、所定の行数と列数のブロックを有するブロック群内の各ブロックを、順次前記フィルタ処理部に入力し、更に、所定の行数と列数のブロック群を有する拡大ブロック群内の各ブロック群に対して前記入力を行うことを特徴とする離散ウエーブレット変換装置。
【０１１３】
（付記５）付記４において、
前記ブロックデータメモリは、少なくとも前記所定の回数に対応する数のメモリ領域を有し、各メモリ領域に、前記フィルタ処理部により二次元フィルタ処理された二次元データのうち、垂直方向及び水平方向のデータ列に対するフィルタ処理で分離された低周波帯域の二次元データが、各処理階層毎に格納されることを特徴とする離散ウエーブレット変換装置。
【０１１４】
（付記６）付記５において、
前記制御部は、所定の処理階層において、前記ブロック群内の全ブロックに対する前記低周波帯域の二次元データが前記メモリ領域内に格納された後、当該格納されたブロック群の二次元データを、前記所定の処理階層の次の処理階層におけるブロックとして、前記入力を行うことを特徴とする離散ウエーブレット変換装置。
【０１１５】
（付記７）付記６において、
前記制御部は、前記変換対象の二次元データのブロックのサイズを、所定の角位置のブロックをｎ列ｍ行とし、前記所定の角位置のブロックの左右又は上下で隣接するブロックをn＋ｋ列ｍ行又はｎ列ｍ＋ｋ行とし、前記所定の角位置のブロックに斜め方向で隣接するブロックをｎ＋ｋ列ｍ＋ｋ行とし、
前記所定の回数がＮＬの場合に、当該ｎ＋ｋ列及びｍ＋ｋ行のブロックの行方向及び列方向の個数を少なくとも２NL−１個にすることを特徴とする離散ウエーブレット変換装置。
【０１１６】
（付記８）付記７において、
前記制御部は、前記ブロックデータメモリから入力するブロックサイズを、ｎ列ｍ行、n＋ｋ列ｍ行、ｎ列ｍ＋ｋ行、及びｎ＋ｋ列ｍ＋ｋ行のいずれかにすることを特徴とする離散ウエーブレット変換装置。
【０１１７】
（付記９）付記８において、
前記フィルター処理部が５×３フィルタの場合はｋ＝２であり、９×７フィルタの場合はｋ＝４であることを特徴とする離散ウエーブレット変換装置。
【０１１８】
（付記１０）高周波成分と低周波成分とに分割されている変換対象の二次元データを復号化する二次元フィルタ処理を所定の回数だけ行う逆離散ウエーブレット変換装置において、
高周波成分と低周波成分のデータ列を入力して復号化するフィルタ処理部と、
前記変換対象の二次元データを分割したブロックの単位で、前記データ列を、前記フィルタ処理部に入力する制御部と、
前記フィルタ処理部により復号化された二次元フィルタ処理済みの二次元データを一時的に格納するブロックデータメモリとを有し、
前記制御部は、前記変換対象の二次元データのブロックのデータ列を前記フィルタ処理部に入力して前記二次元フィルタ処理を行わせ、前記二次元フィルタ処理済みの二次元データを前記ブロックデータメモリから前記フィルタ処理部に入力して更に前記二次元フィルタ処理を行わせ、当該二次元フィルタ処理を前記所定の回数だけ行わせることを特徴とする逆離散ウエーブレット変換装置。
【０１１９】
（付記１１）付記１０において、
更に、前記フィルタ処理部によりフィルタ処理された時の前記ブロックの境界での中間データを一時的に格納する中間データメモリとを有し、隣接するブロックのフィルタ処理時に前記制御部が前記中間データメモリから中間データを読み出してフィルタ処理部に入力することを特徴とする逆離散ウエーブレット変換装置。
【０１２０】
（付記１２）付記１０において、
前記フィルタ処理部は、前記二次元フィルタ処理済みの二次元データを前記ブロックデータメモリに格納し、
当該ブロックデータメモリに格納された二次元データを分割したブロックの二次元データが、他の周波数帯域の二次元データと共に、更に二次元フィルタ処理が行われることを特徴とする逆離散ウエーブレット変換装置。
【０１２１】
（付記１３）付記１０において、
前記制御部は、変換対象の二次元データの各周波数帯域それぞれのブロックをフィルタ処理部に入力して処理させ、当該処理済みの二次元データを分割したブロックの二次元データそれぞれを、次に浅い階層の変換対象二次元データの各周波数帯域それぞれにおいて、所定の行数・列数のブロックを有するブロック群内の各ブロックと共に、前記フィルタ処理部に入力して処理させ、当該処理を繰り返すことを特徴とする逆離散ウエーブレット変換装置。
【０１２２】
（付記１４）付記１０において、
前記ブロックデータメモリは、少なくとも前記所定の回数に対応する数のメモリ領域を有し、各メモリ領域に、前記フィルタ処理部により二次元フィルタ処理された二次元データが、各処理階層毎に格納されることを特徴とする離散ウエーブレット変換装置。
【０１２３】
（付記１５）付記１３において、
前記制御部は、前記変換対象の二次元データのブロックのサイズを、各階層の各周波数帯域の二次元データそれぞれに対して、所定の角位置のブロックをn/2＋ｋ列m/2＋ｋ行とし、前記所定の角位置のブロックに左右又は上下で隣接するブロックをn/2列m/2＋ｋ行又はｎ/2＋ｋ列ｍ/2行とし、前記角位置のブロックに斜め方向で隣接するブロックをｎ/2列ｍ/2行とすることを特徴とする離散ウエーブレット変換装置。
【０１２４】
（付記１６）付記１５において、
前記制御部は、前記ブロックデータメモリから入力するブロックサイズを、n/2＋ｋ列m/2＋ｋ行、n/2列m/2＋ｋ行、ｎ/2＋ｋ列ｍ/2行、及びｎ/2列ｍ/2行のいずれかにすることを特徴とする離散ウエーブレット変換装置。
【０１２５】
（付記１７）付記１６において、
前記フィルター処理部が５×３フィルタの場合はｋ＝２であり、９×７フィルタの場合はｋ＝４であることを特徴とする離散ウエーブレット変換装置。
【図面の簡単な説明】
【０１２６】
【図１】JPEG2000における画像データの符号化圧縮と解凍復号化の概略的な工程を示す図である。
【図２】ウエーブレット変換における高周波数成分と低周波数成分の分割を説明する図である。
【図３】ウエーブレット変換装置の構成図である。
【図４】従来のリフティング構成のフィルタの演算装置を示す図である。
【図５】従来のリフティング構成のフィルタの演算装置を示す図である。
【図６】従来の離散ウエーブレット変換のシステム構成図である。
【図７】従来の離散ウエーブレット変換のシステム構成図である。
【図８】本実施の形態におけるタイリングの原理を説明するための図である。
【図９】本実施の形態における離散ウエーブレット変換（ＤＷＴ）装置を示す図である。
【図１０】ＤＷＴ装置内の演算制御部７０６の一部を示す構成図である。
【図１１】本実施の形態におけるブロックの処理順と再帰的処理の順番を示す図である。
【図１２】本実施の形態におけるフィルタ処理部７０３の一例としての９×７フィルタの構成図である。
【図１３】９×７フィルタの動作を示すチャート図である。
【図１４】本実施の形態におけるフィルタ処理部７０３の一例としての５×３フィルタの構成図及び動作フローチャート図である。
【図１５】ブロック０〜３に対する１階層目の二次元フィルタ処理を示す図である。
【図１６】ブロック０〜３に対する１階層目の二次元フィルタ処理を示す図である。
【図１７】ブロック０〜３からなるブロック群に対する２階層目の二次元フィルタ処理を示す図である。
【図１８】ブロック４〜７に対する１階層目の二次元フィルタ処理とそれらブロックからなるブロック群に対する２階層目の二次元フィルタ処理を示す図である。
【図１９】ブロック８〜１１に対する１階層目の二次元フィルタ処理とそれらブロックからなるブロック群に対する２階層目の二次元フィルタ処理を示す図である。
【図２０】ブロック１２〜１５に対する１階層目の二次元フィルタ処理とそれらブロックからなるブロック群に対する２階層目の二次元フィルタ処理を示す図である。
【図２１】拡大ブロック群（ブロック０〜１５）に対する３階層目の二次元フィルタ処理を示す。
【図２２】３階層の二次元フィルタ処理の全体を示す図である。
【図２３】３階層の二次元フィルタ処理の全体を示す図である。
【図２４】変換対象の二次元データ１１のブロックサイズを全てｎ×ｎにした場合の二次元フィルタ処理サイズの変化を示す図である。
【図２５】本実施の形態におけるブロックサイズの一例を示す図である。
【図２６】図２５のブロックサイズにしたときの各階層でのブロックサイズの変遷を示す図である。
【図２７】本実施の形態におけるブロックサイズの別の例を示す図である。
【図２８】図２７のブロックサイズにしたときの各階層でのブロックサイズの変遷を示す図である。
【図２９】本実施の形態におけるブロックサイズの別の例を示す図である。
【図３０】本実施の形態における逆離散ウエーブレット変換（ＩＤＷＴ）装置を示す図である。
【図３１】本実施の形態におけるＩＤＷＴ装置のブロックの処理順を示す図である。
【図３２】ブロック１〜２１についてのＩＤＷＴ装置による処理手順を示す図である。
【図３３】本実施の形態におけるＩＤＷＴでのブロックサイズの一例を示す図である。
【図３４】本実施の形態におけるＩＤＷＴでのブロックサイズの一例を示す図である。
【図３５】本実施の形態におけるＩＤＷＴ装置内のフィルタ処理部の９×７フィルタ回路の一例を示す図である。
【図３６】図３５の動作フローチャート図である。
【図３７】本実施の形態におけるＩＤＷＴ装置内のフィルタ処理部の５×３フィルタ回路の一例とその動作フローチャートを示す図である。
【符号の説明】
【０１２７】
７１０：ＤＷＴ装置、７０３：フィルタ処理部、７０４：ブロックデータメモリ
７０５：中間データメモリ、７０６：演算制御部、ＭＬＬ：メモり領域
８１０：ＩＤＷＴ装置、８０３：フィルタ処理部、８０４：ブロックデータメモリ
８０５：中間データメモリ、８０６：演算制御部
【図１】
2005092507.tif 000003
【図２】
2005092507.tif 000004
【図３】
2005092507.tif 000005
【図４】
2005092507.tif 000006
【図５】
2005092507.tif 000007
【図６】
2005092507.tif 000008
【図７】
2005092507.tif 000009
【図８】
2005092507.tif 000010
【図９】
2005092507.tif 000011
【図１０】
2005092507.tif 000012
【図１１】
2005092507.tif 000013
【図１２】
2005092507.tif 000014
【図１３】
2005092507.tif 000015
【図１４】
2005092507.tif 000016
【図１５】
2005092507.tif 000017
【図１６】
2005092507.tif 000018
【図１７】
2005092507.tif 000019
【図１８】
2005092507.tif 000020
【図１９】
2005092507.tif 000021
【図２０】
2005092507.tif 000022
【図２１】
2005092507.tif 000023
【図２２】
2005092507.tif 000024
【図２３】
2005092507.tif 000025
【図２４】
2005092507.tif 000026
【図２５】
2005092507.tif 000027
【図２６】
2005092507.tif 000028
【図２７】
2005092507.tif 000029
【図２８】
2005092507.tif 000030
【図２９】
2005092507.tif 000031
【図３０】
2005092507.tif 000032
【図３１】
2005092507.tif 000033
【図３２】
2005092507.tif 000034
【図３３】
2005092507.tif 000035
【図３４】
2005092507.tif 000036
【図３５】
2005092507.tif 000037
【図３６】
2005092507.tif 000038
【図３７】
2005092507.tif 000039