以下、本発明の実施の形態について説明する。まず、符号化側の構成および動作について説明する。
図1は、ソフトウェアプログラムにより構成され、画像データを符号化するソフトウェアエンコーダが有する機能を模式的に示した機能ブロック図である。図1に示される符号化部10は、ソフトウェアエンコーダであり、プログラムがCPU(Central Processing Unit)により実行されることにより、ウェーブレット変換部11、途中計算用バッファ部12、係数並び替え用バッファ部13、係数並び替え部14、およびエントロピ符号化部15の機能を有する。
符号化部10に入力された画像データは、ウェーブレット変換部11を介して途中計算用バッファ部12に一時的に溜め込まれる。ウェーブレット変換部11は、途中計算用バッファ部12に溜め込まれた画像データに対してウェーブレット変換を施す。すなわち、ウェーブレット変換部11は、途中計算用バッファ部12から画像データを読み出して分析フィルタによりフィルタ処理を施して低域成分および高域成分の係数のデータを生成し、生成された係数データを途中計算用バッファ部12に格納する。ウェーブレット変換部11は、水平分析フィルタと垂直分析フィルタとを有し、画像データ群に対して、画面水平方向と画面垂直方向の両方について分析フィルタ処理を行う。ウェーブレット変換部11は、途中計算用バッファ部12に格納された低域成分の係数データを再度読み出し、読み出した係数データに対して分析フィルタによるフィルタ処理を施して、高域成分および低域成分の係数のデータをさらに生成する。生成された係数データは、途中計算用バッファ部12に格納される。
ウェーブレット変換部11は、この処理を繰り返して分解レベルが所定レベルに達したら、途中計算用バッファ部12から係数データを読み出し、読み出された係数データを係数並び替え用バッファ部13に書き込む。
係数並び替え部14は、係数並び替え用バッファ部13に書き込まれた係数データを所定の順序で読み出し、エントロピ符号化部15に供給する。エントロピ符号化部15は、供給された係数データを、所定の方法で量子化し、例えばハフマン符号化や算術符号化といった所定のエントロピ符号化方式で符号化する。エントロピ符号化部15は、生成した符号化データを符号化部10の外部に出力する。
次に、図1のウェーブレット変換部11で行われる処理について、より詳細に説明する。先ず、ウェーブレット変換について、概略的に説明する。画像データに対するウェーブレット変換では、図2に概略的に示されるように、画像データを空間周波数の高い帯域と低い帯域とに分割する処理を、分割の結果得られる空間周波数の低い帯域のデータに対して再帰的に繰り返す。
分析フィルタには、画像データに対して画面水平方向に分析フィルタ処理を行う水平分析フィルタと、画面垂直方向に分析フィルタ処理を行う垂直分析フィルタとがあり、各方向に対して1回ずつ分析フィルタ処理が行われることにより、画像データは4つの帯域(サブバンド)に分割される。ウェーブレット変換部11は、分析フィルタ処理結果の、水平方向および垂直方向のいずれにおいても空間周波数の低い帯域に対して、上述した水平方向および垂直方向の分析フィルタ処理が再帰的に繰り返す(つまり階層的に繰り返す)。
図2は、分析フィルタ処理が4回繰り返された場合の例を概略的に示す図である。図2の例では、水平方向および垂直方向の分析フィルタ処理が再帰的に4回繰り替えされることにより、1ピクチャの画像データの周波数成分が、13個の階層的なサブバンドに分割されている。このときの各サブバンドのデータ、つまり、ベースバンドの画像データの各周波数成分を係数データと称する。
図2において、実線の四角および点線の角丸四角のそれぞれは、分析フィルタ処理により生成されるサブバンドを示しており、各サブバンドに表記される数字は、そのサブバンドの階層のレベルを示す。つまり、ベースバンドの画像データに対して何回分析フィルタ処理することにより得られるサブバンドであるかを示している。また、各サブバンドに表記される「L」および「H」は、それぞれ低域成分および高域成分を表しており、左側が水平方向の分析フィルタ処理結果、右側が垂直方向の分析フィルタ処理結果を示している。
図2の例では、ベースバンドの画像データに対して1回目の分析フィルタ処理が行われて、分割レベル1の4つのサブバンド(1LL、1LH、1HL、および1HH)が生成され、そのサブバンドのうち、水平方向および垂直方向の両方に対して低域成分であるサブバンド「1LL」に対して2回目の分析フィルタ処理が行われ、分割レベル2の4つのサブバンド(2LL、2LH、2HL、および2HH)が生成され、その水平方向および垂直方向の両方に対して低域成分であるサブバンド「2LL」に対して3回目の分析フィルタ処理が行われ、分割レベル3の4つのサブバンド(3LL、3LH、3HL、および3HH)が生成され、その水平方向および垂直方向の両方に対して低域成分であるサブバンド「3LL」に対して、4回目の分析フィルタ処理が行われ、分割レベル4の4つのサブバンド(4LL、4LH、4HL、および4HH)が生成されている。
このように、低域成分に対して繰り返し変換および分割を行うのは、図3に示されるように、より上位(低域成分)のサブバンドほど、画像のエネルギが低域成分に集中しているためである。このように分析フィルタ処理を再帰的に処理を行い、階層的なサブバンドを生成し、空間周波数の低い帯域のデータをより小さな領域に追い込んでいくことで、エントロピ符号化を行う際に効率的な圧縮符号化を可能とする。
なお、以下において、分析フィルタ処理により生成される4つのサブバンドのうち、再度分析フィルタ処理が行われる、水平方向および垂直方向の両方に対して低域成分であるサブバンド「LL」を低域サブバンドと称し、それ以上分析フィルタ処理が行われないその他のサブバンド「LH」、「HL」、および「HH」を高域サブバンドと称する。
このようなウェーブレット変換処理をピクチャ全体に対してまとめて行う方法もあるが、1ピクチャの画像データを数ライン毎に分割し、それぞれについてウェーブレット変換処理を互いに独立して行う方法もある。前者の場合よりも後者の場合の方が、1回のウェーブレット変換処理で処理される画像データのデータ量が少ないので、ウェーブレット変換処理の処理結果の出力開始タイミングをより早くすることができる。つまり、ウェーブレット変換処理による遅延時間を短縮することができる。
なお、この場合のウェーブレット変換処理の処理単位となるライン数は、ウェーブレット変換処理の、予め定められた分割レベルにおいて、最上位レベルのサブバンドの係数データ1ラインを得るために必要なライン数に基づく。
分析フィルタ処理により、データは4分割されるので、図3に示されるようにライン数は半減する。つまり、図3の例のように、分割レベル3のウェーブレット変換処理の場合、最上位レベルのサブバンド(3LL、3LH、3HL、および3HH)の係数データを1ライン得るためには、8ラインのベースバンドの画像データが必要になる。従ってこの場合、ウェーブレット変換処理は、ベースバンドの画像データ8ライン以上を処理単位としてウェーブレット変換処理が行われる。図2の例のように分割レベルが4である場合、ベースバンドの画像データは、16ライン必要になる。
このように、最上位レベルの低域サブバンド「LL」の係数データを1ライン生成するために必要なベースバンドの画素データの集合をプレシンクト(Precinct)(またはラインブロック)と称する。なお、プレシンクトは、この最上位レベルの低域サブバンド「LL」の係数データを1ライン生成するために必要なベースバンドの画素データの集合と実質的に同一な、1プレシンクト分の画素データをウェーブレット変換して得られる、全サブバンドの係数データの集合のことを示す場合もある。
例えば、図4に示されるように、ベースバンドの画像データ16ラインを1プレシンクトとすると分割レベル4のウェーブレット変換処理により、分割レベル1の係数データが8ライン、分割レベル2の係数データが4ライン、分割レベル3の係数データが2ライン、および分割レベル4の係数データが1ライン生成される。
ウェーブレット逆変換処理は、このようなウェーブレット変換処理に対応する逆変換処理であり、ウェーブレット変換処理により生成された係数データを、元のベースバンドの画像データに変換する処理である。従って、ウェーブレット変換部11が上述したようにプレシンクト単位でウェーブレット変換処理を行う場合、このウェーブレット変換部11に対応するウェーブレット逆変換処理においてもそのプレシンクト単位で逆変換処理が行われる。
つまり、例えば、図4に示されるように、分割レベル4のウェーブレット変換処理によりベースバンドの画像データ16ラインが変換されて得られた係数データは、分割レベル4のウェーブレット逆変換処理により、元のベースバンドの画像データ16ラインに変換される。
なお、1プレシンクトのライン数はピクチャ内において、各プレシンクトで互いに同一でなくてもよい。
例えば、図5は、分割レベル2のウェーブレット変換処理およびウェーブレット逆変換処理の様子を模式的に示す図である。図5Aは、ウェーブレット変換処理を行う前の、1ピクチャ分のベースバンドの画像データを示しており、図5Bは、そのベースバンドの画像データを分割レベル2でウェーブレット変換して得られる係数データの構成例を示しており、図5Cは、その係数データを分割レベル3でウェーブレット逆変換して復元されるベースバンドの画像データを示している。
図5Aに示されるように、ピクチャの一番上のプレシンクト(In−1)のみ7ラインとなり、2番目(In−2)以降のプレシンクトは4ラインとなる。これは後述するようにウェーブレット変換処理における分析フィルタ処理の演算方法によるものであり、最初に処理が行われるピクチャの一番上のプレシンクトのみ最上位レベルの係数データ1ラインを生成するために必要なベースバンドの画像データのライン数が多くなる。
この図5AのプレシンクトIn−1(7ライン)をウェーブレット変換すると、図5Bに示されるように、分割レベル1の4つのサブバンド(LL、HL、LH、およびHH)の係数データがそれぞれ3ラインずつ生成される(WT−1)。この低域サブバンドLLについてさらにウェーブレット変換すると、分割レベル2の4つのサブバンド(LLL、LHL、LLH、およびLHH)の係数データがそれぞれ1ラインずつ生成される(WT−1)。
これに対して、図5Aのピクチャの上から2番目のプレシンクトIn−2(4ライン)をウェーブレット変換すると、図5Bに示されるように、分割レベル1の4つのサブバンド(LL、HL、LH、およびHH)の係数データがそれぞれ2ラインずつ生成される(WT−2)。この低域サブバンドLLについてさらにウェーブレット変換すると、分割レベル2の4つのサブバンド(LLL、LHL、LLH、およびLHH)の係数データがそれぞれ1ラインずつ生成される(WT−2)。図5Aのピクチャの上から3番目以降のプレシンクトも同様である。
また、図5Bに示される、係数データよりなる、ピクチャの一番上のプレシンクト(WT−1)をウェーブレット逆変換すると、図5Cに示されるように、ベースバンドの画像データ1ライン(OUT−1)が生成される。これに対して、ピクチャの上から2番目のプレシンクト(WT−2)をウェーブレット逆変換すると、ベースバンドの画像データ4ライン(OUT−2)が生成される。ピクチャの上から3番目以降のプレシンクトも同様である。ただし、ピクチャの一番下のプレシンクトの場合、ベースバンドの画像データが8ライン生成される。これは後述するようにウェーブレット逆変換における合成フィルタ処理の演算方法によるものである。
このように、ピクチャの一番上のプレシンクトや一番下のプレシンクトにおいては、演算方法によってはライン数が異なる場合がある。
ウェーブレット変換部11は、通常、低域フィルタと高域フィルタとから構成されるフィルタバンクを用いて、上述のような処理を行う。なお、デジタルフィルタは、通常、複数タップ長のインパルス応答すなわちフィルタ係数を持っているため、フィルタ処理を行えるだけの入力画像データまたは係数データを予めバッファリングしておく必要がある。また、ウェーブレット変換を多段にわたって行う場合も同様に、前段で生成したウェーブレット変換係数を、フィルタ処理が行える数だけバッファリングしておく必要がある。
このウェーブレット変換の具体的な例として、5×3フィルタを用いた方法について説明する。この5×3フィルタを用いた方法は、JPEG2000規格でも採用されており、少ないフィルタタップ数でウェーブレット変換を行うことができる点で、優れた方法である。
5×3フィルタのインパルス応答(Z変換表現)は、下記の式(1)および式(2)に示す様に、低域フィルタH0(z)と、高域フィルタH1(z)とから構成される。H0(z)は5タップで、H1(z)は3タップであることがわかる。
H0(z)=(−1+2z-1+6z-2+2z-3−z-4)/8 ・・・(1)
H1(z)=(−1+2z-1−z-2)/2 ・・・(2)
これら式(1)および式(2)によれば、低域成分および高域成分の係数を、直接的に算出することができる。ここで、リフティング(Lifting)技術を用いることで、フィルタ処理の計算を減らすことができる。
図6は、5×3フィルタのリフティングを用いた例を示したものである。以下、このフィルタリング方法について説明する。
図6において、最上段部、中段部および最下段部は、それぞれ入力画像の画素列、高域成分出力および低域成分出力を示す。最上段は、入力画像の画素列に限らず、先のフィルタ処理で得られた係数でもよい。ここでは、最上段部が入力画像で画素列であるものとし、四角印(■)が偶数番目(最初を0番目とする)の画素またはライン、丸印(●)が奇数番目の画素またはラインとする。
先ず第1段階として、次式(3)により入力画素列から高域成分の係数di 1を生成する。
di 1=di 0−1/2(si 0+si+1 0) ・・・(3)
次に第2段階として、この生成された高域成分の係数と、入力画像の奇数番目の画素とを用いて、次式(4)により低域成分の係数si 1を生成する。
si 1=si 0+1/4(di-1 1+di 1) ・・・(4)
分析フィルタ側では、このようにして、フィルタリング処理により入力画像の画素データを低域成分と高域成分とに分解する。
次に、このようなウェーブレット変換により生成された係数を復元するウェーブレット逆変換を行う合成フィルタ側の処理について、図7を参照して概略的に説明する。この図7は、上述の図6と対応し、5×3フィルタを用い、リフティング技術を適用した例を示す。図7において、最上段部は、ウェーブレット変換により生成された入力係数を示し、丸印(●)が高域成分の係数、四角印(■)が低域成分の係数をそれぞれ示す。
先ず第1段階として、次式(5)に従い、入力された低域成分および高域成分の係数から、偶数番目(最初を0番目とする)の係数si 0が生成される。
si 0=si 1−1/4(di-1 1+di 1) ・・・(5)
次に第2段階として、次式(6)に従い、上述の第1段階で生成された偶数番目の係数si 0と、入力された高域成分の係数di 1から、奇数番目の係数di 0が生成される。
di 0=di 1+1/2(si 0+si+1 0) ・・・(6)
合成フィルタ側では、このようにして、フィルタリング処理により低域成分および高域成分の係数を合成し、ウェーブレット逆変換を行う。
図8は、5×3フィルタのリフティングによるフィルタリングを分解レベル2まで実行したときの分析フィルタ処理および合成フィルタ処理の様子の例を示す模式図である。図8の左側は分析フィルタ処理におけるリフティング演算の様子の例を示しており、図8の右側は合成フィルタ処理におけるリフティング演算の様子の例を示している。
図8において、左上右下の斜め線模様で示される丸と四角は、それぞれ、ベースバンドの画像データの、ライン番号が奇数のライン(奇数ライン)の周波数成分、ライン番号が偶数のライン(偶数ライン)の周波数成分を示している。なお、ライン番号は、画像の一番上のラインを「0」とし、上から順にインクリメントされる。
また図8において、左下右上の斜め線模様で示される丸と四角は、それぞれ、分析フィルタ処理または合成フィルタ処理のリフティング演算の途中の計算に利用される途中計算用の奇数番目の係数と偶数番目の係数を示している。さらに、図8において黒丸(●)と黒四角(■)は、それぞれ、分析フィルタ処理のリフティング演算結果として得られる高域成分と低域成分(周波数成分)を示している。つまり、図8の左側において、点線の角丸四角は、途中計算用バッファ部12を示しており、実線の角丸四角は、係数並び替え用バッファ部13を示している。
図8の左から1列目乃至3列目は、分割レベル1の分析フィルタ処理のリフティング演算の様子を示しており、4列目乃至6列目は、分割レベル2の分析フィルタ処理のリフティング演算の様子を示しており、7列目乃至9列目は、分割レベル2の合成フィルタ処理のリフティング演算の様子を示しており、10列目乃至12列目は、分割レベル1の合成フィルタ処理のリフティング演算の様子を示している。
なお、図8では、説明の簡略化のため、水平方向の分析フィルタ処理および合成フィルタ処理については省略している。
図8においては、各係数をプレシンクト毎に曲線で区切って示している。つまり、1番目のプレシンクト(1回目)においては、画像データ7ラインが分析フィルタ処理され、5ライン分の周波数成分(分割レベル1の高域成分3ライン、分割レベル2の高域成分1ライン、および分割レベル2の低域成分1ライン)が生成される。そして、合成フィルタ処理においては、そのうち、3ライン分の周波数成分(分割レベル2の高域成分1ライン、分割レベル2の低域成分1ライン、および分割レベル1の高域成分1ライン)が使用され、画像データ1ラインが生成される。
なお、分割レベル1の高域成分の残りの2ラインは、次のプレシンクトに対する合成フィルタ処理において利用される。
2番目のプレシンクト(2回目)においては、画像データ4ラインが分析フィルタ処理され、4ライン分の周波数成分(分割レベル1の高域成分2ライン、分割レベル2の高域成分1ライン、および分割レベル1の低域成分1ライン)が生成される。そして、合成フィルタ処理においては、そのうち、2ライン分の周波数成分(分割レベル2の高域成分1ライン、および分割レベル1の低域成分1ライン)と、1番目のプレシンクトの分割レベル1の高域成分2ラインが使用され、画像データ4ラインが生成される。
3番目以降のプレシンクトについては、2番目のプレシンクトと同様である。なお、最後のプレシンクトにおいては合成フィルタ処理により画像データが8ライン生成される。
以上のように、図8においては、左から右に進むことにより、分析フィルタ処理および合成フィルタ処理が図5A乃至図5Cに示される例のように進められることが示されている。
なお、図8の左側において黒丸や黒四角に付した番号は、分析フィルタ処理結果である周波数成分の生成順を示している。また、図8の右側において黒丸や黒四角に付した番号は、それらの周波数成分が合成フィルタ処理において処理される順序を示している。なお、括弧()付きの数字は、その周波数成分の分析フィルタ処理における生成順を示している。つまり、図8の右側で示される括弧()付きの数字は、図8の左側で示される数字に対応する。
この番号から分かるように、合成フィルタ処理において処理される周波数成分の順序は、分析フィルタ処理における周波数成分の生成順と異なる。より具体的に説明すると、2番目のプレシンクトに対する分析フィルタ処理においては、周波数成分は6→7→8→9の順で生成されるが、合成フィルタ処理においては、9→8→2→3の順で周波数成分が使用される。つまり、分析フィルタ処理は、高域から低域に向かう順に周波数成分を生成するが、合成フィルタ処理は、低域から広域に向かう順に周波数成分を合成する。従って、合成フィルタ処理を行う前に、分析フィルタ処理により生成された周波数成分の順序を並び替える必要がある。
図1の係数並び替え部14は、係数並び替え用バッファ部に蓄積された係数データを所定の順で読み出すことにより、この並び替えを行う。
図9は5×3フィルタを用いて分割レベル3の分析フィルタ処理を行う場合の処理の様子を示す図である。基本的な動作は、図8の分割レベル2の分析フィルタ処理の場合と同じであるが、図9の場合、ウェーブレット変換により分割レベル2の低域サブバンドの周波数成分1ラインを得るために必要なライン数は、最初のプレシンクトでは15ラインであり、2つ目以降のプレシンクトでは8ラインになる。また合成側の出力は、最初のプレシンクトが1ライン、以降が8ラインとなる。
図9の場合も図8の場合と同様に、分析フィルタ処理の後に、周波数成分の並び替えを行う必要がある。図9の2番目のプレシンクトについて説明すると、分析フィルタ処理により、2、3、5、6、7、10、19、および20番目に生成された周波数成分は、合成フィルタ処理では、20→19→7→2→3→10→5→6の順に処理される。
図1の符号化部10に対応する復号部の構成例については後述するが、このような符号化部や復号部をハードウェアにより実現する方法もあるが、ソフトウェアプログラムにより実現する方法もある。
ソフトウェアプログラムにより符号化部や復号部を実現する場合、そのソフトウェアプログラムは、コンピュータシステムにおいて実行される。
図10は、一般的なコンピュータの部分的な構成例を示すブロック図である。図10に示されるコンピュータ100は、演算処理や制御処理を行うCPU111、CPU111からのメインメモリ113へのアクセスを制御するメモリコントローラ112、およびCPU111において使用されるデータやプログラム、または、CPU111において行われた演算の結果等、各種のデータやプログラムを記憶するメインメモリ113を有する。
CPU111は、拡張インタフェース(拡張I/F)121、フェッチ122、デコード123、実行124、書き戻し125、およびレジスタ141等の処理部の他に、最も頻繁に使用されるデータが保持される内蔵メモリであるL1キャッシュ(1次キャッシュ)131およびL2キャッシュ(2次キャッシュ)132を有する。
L1キャッシュ131およびL2キャッシュ132は、CPU111の内蔵メモリであり、外部メモリであるメインメモリ113と比べて、動作周波数が高く、また、共有バスを解さずにアクセス可能であるので、高速なデータ入出力が可能である。ただし、L1キャッシュ131およびL2キャッシュ132の単位容量当たりの製造コストは、メインメモリ113と比べて高い。また、L1キャッシュ131およびL2キャッシュ132の容量の増大は、CPU111の回路規模の増大、すなわちコンピュータ100の製造コストや消費電力の増大に繋がる恐れがある。従って、L1キャッシュ131およびL2キャッシュ132の記憶容量は、メインメモリ113と比べて小容量である。
換言すれば、メインメモリ113は、L1キャッシュ131およびL2キャッシュ132と比べて、データの入出力が低速であるものの、記憶容量が大きく、製造コストや消費電力が少ない。
後述する復号部や符号化部10を実現するソフトウェアプログラムは、メインメモリ113に格納されており、ここからメモリコントローラ112を経由して、CPU111の内部の拡張I/F121に入力される。そして、ソフトウェアプログラムは、その拡張I/F121を経由して、フェッチ122に供給される(入手される)。フェッチ122に入手されたソフトウェアプログラムは、デコード123において復号され、CPU111が実行可能な形式に変換される。
また、プログラムの実行に必要なデータは、L1キャッシュ131またはL2キャッシュ132に記憶されていて、プログラムを実行する際にレジスタ141を介して所定のアドレスののデータが読み出される(Read)。実行124は、そのデータを用いてプログラムの実行を行う。
実行結果は、書き戻し125により、直ちに拡張I/F121を経由してL1キャッシュ131またはL2キャッシュ132に書き戻される(Write)。このような実行124によるプログラムの実行が、例えば、エントロピ復号処理や合成フィルタ処理を実行することになる。
更に、L1キャッシュ131またはL2キャッシュ132内に記憶されたデータが、初期状態では符号データで、エントロピ復号処理やウェーブレット逆変換処理の過程でL1キャッシュ131またはL2キャッシュ132に書き戻されるデータが、係数データまたは最終レベルでのベースバンド画像データである。
以上の様に、実際のデータの読み出しや書き込み(Read/Write)はCPU111内部の、高速メモリであるL1キャッシュ131およびL2キャッシュ132を用いて行われるので、高速に復号処理やウェーブレット逆変換処理を実行することが出来る。
ただし、上述したように、L1キャッシュ131およびL2キャッシュ132の容量は小容量であるので、エントロピ復号処理やウェーブレット逆変換処理の過程で書き戻されるデータ量が多すぎると、L1キャッシュ131およびL2キャッシュ132では容量が不足する恐れがある。その場合、メインメモリ113へのデータの退避やL1キャッシュ131およびL2キャッシュ132において発生するミスヒット等により、遅延時間が増大する恐れがある。
このようなウェーブレット変換・ウェーブレット逆変換を利用する例えばTV会議システムやビデオゲームシステム等のような画像伝送システムにおいては、画像データの伝送を低遅延で行うことが望ましい場合が多い。
従って、より低遅延で復号処理やウェーブレット逆変換処理を実行させるためには、L1キャッシュ131およびL2キャッシュ132が保持するデータ量をより低減させることが求められる。
また、L1キャッシュ131およびL2キャッシュ132の利用だけでなく、復号処理とウェーブレット逆変換処理自身の効率化も求められる。
以下に、そのような復号処理とウェーブレット逆変換処理とを実現する方法について説明する。
図11は、本発明を適用したソフトウェアプログラムにより構成され、画像データが符号化された符号化データを復号するソフトウェアデコーダが有する機能を模式的に示した機能ブロック図である。なお以下においては、ソフトウェアプログラムが、図10に示される一般的なコンピュータ100において実行される場合について説明する。
図11に示される復号部200は、ソフトウェアデコーダであり、プログラムがCPU111により実行されることにより、制御部211、符号化データ入力部221、エントロピ復号部222、途中計算用バッファ部223、ウェーブレット逆変換部224、および画像データ出力部225の機能を有する。
制御部211は、後述するように、符号化データ入力部221乃至画像データ出力部225の各部の動作を制御する。符号化データ入力部221は、例えば符号化部10等の、復号部200の外部より供給される符号化データの取得に関する処理を行う。エントロピ復号部222は、符号化データ入力部221を介して供給された符号化データに対してエントロピ復号を行い、係数データを復元する。途中計算用バッファ部223は、エントロピ復号部222において符号化データが復号されて得られた係数データをL1キャッシュ131またはL2キャッシュ132に保持させたり、ウェーブレット逆変換部224の要求に応じてL1キャッシュ131またはL2キャッシュ132に保持している係数データを読み出してウェーブレット逆変換部224に供給したり、ウェーブレット逆変換部224による合成フィルタ処理により得られた途中計算用の係数データをL1キャッシュ131またはL2キャッシュ132に保持させたりする。
ウェーブレット逆変換部224は、途中計算用バッファ部223より必要な係数データを取得してその係数データに対してウェーブレット逆変換処理(合成フィルタ処理)を行う。ウェーブレット逆変換部224は、再帰的に合成フィルタ処理を繰り返し、ベースバンドの画像データを生成する。画像データ出力部225は、ウェーブレット逆変換部224において得られたベースバンドの画像データを復号部200の外部に出力する。
次に、この復号部200の制御部211により実行されるエントロピ復号処理とウェーブレット逆変換処理の制御処理の流れの例について、図12のフローチャートを参照して説明する。この制御処理はピクチャ単位で実行される。
制御処理が開始されると、制御部211は、ステップS101において、未処理のラインのうち、最も上に位置するベースバンドの画像データ2ラインを特定し、処理対象とする。ステップS102において、制御部211は、処理対象の画像データを生成するために必要な係数のうち、最も上位の分割レベルの係数を特定する。
ステップS103において、制御部211は、途中計算用バッファ部223を制御し、L1キャッシュ131またはL2キャッシュ132に、ステップS102において特定した係数が保持されているか否かを判定し、保持されていないと判定した場合、処理をステップS104に進める。制御部211は、ステップS104において、ステップS102において特定した係数に対応する符号化データを特定し、ステップS105において、符号化データ入力部221を制御し、その符号化データを1ライン取得させ、ステップS106において、エントロピ復号部222を制御して、取得させた符号化データに対してエントロピ復号処理を実行させ、ステップS107において、途中計算用バッファ部223を制御し、エントロピ復号処理により得られた係数をL1キャッシュ131またはL2キャッシュ132に保持させる。ステップS107の処理が終了すると、制御部211は、処理をステップS103に戻す。
ステップS103において、L1キャッシュ131またはL2キャッシュ132に、ステップS102において特定した係数が保持されていると判定した場合、制御部211は、処理をステップS108に進める。
制御部211は、ステップS108において、途中計算用バッファ部223を制御し、ウェーブレット逆変換部224に、L1キャッシュ131またはL2キャッシュ132に保持されている、ステップS102において特定した係数を取得させ、ステップS109において、ウェーブレット逆変換部224を制御し、1つ下位の分割レベルの係数を2ライン生成する合成フィルタ処理、すなわち、リフティング演算1回分を実行させる。
ステップS102において特定した係数に対する合成フィルタ処理が終了すると、制御部211は、ステップS110において、途中計算用バッファ部223を制御し、L1キャッシュ131またはL2キャッシュ132に保持されている係数のうち、今後の合成フィルタ処理に使用されない不要な係数を削除させる。
制御部211は、ステップS111において、ステップS109の処理により得られた合成フィルタ処理結果の係数が最下位レベルの係数、すなわち、ベースバンドの画像データであるか否かを判定する。得られた合成フィルタ処理結果がベースバンドの画像データではないと判定した場合、制御部211は、処理をステップS102に戻し、それ以降の処理を繰り返す。つまり、ベースバンドの画像データに達するまで、ステップS102乃至ステップS111の処理が繰り返し実行され、合成フィルタ処理のリフティング演算が再帰的に繰り返し実行される。
そして、ステップS111において、得られた合成フィルタ処理結果がベースバンドの画像データであると判定した場合、制御部211は、処理をステップS112に進める。ステップS112において、制御部211は、画像データ出力部225を制御し、合成フィルタ処理により得られた画像データ2ラインを出力させる。
ステップS113において、制御部211は、ピクチャ内の全ラインの画像データを出力したか否かを判定し、全ライン出力していないと判定した場合、処理をステップS101に戻し、それ以降の処理を繰り返す。つまり、制御部211は、ステップS101の処理について説明したように、ベースバンドの画像データをピクチャの上から順に2ラインずつ出力するように、エントロピ復号処理およびウェーブレット逆変換処理を実行させる。
そして、ステップS113において全ライン出力したと判定した場合、制御部211は、制御処理を終了する。
このような制御処理により合成フィルタ処理は、図13に示されるような手順で行われる。図13は、分割レベル3の合成フィルタ処理の流れを示す模式図であり、基本的に図8や図9と同様である。点線301および点線302は、係数データが属するプレシンクトの境界を示している。また、黒丸や黒四角に付した番号はエントロピ復号部222による復号順(つまり、符号化部10からの供給順)を示している。
上述した制御処理により、合成フィルタ処理の各リフティング演算は、図13において太線実線で囲まれる領域毎に行われる。つまり、点線301と点線302との間に示される第2プレシンクトについて具体的に説明すると、最初に領域311内のリフティング演算が行われ、次に、領域312内のリフティング演算が行われ、次に、領域313内のリフティング演算が行われ、最後に領域314内のリフティング演算が行われる。各領域内においては、上位の分割レベルから下位の分割レベルに向かう順序で各リフティング演算が行われる。
より具体的に説明すると、ウェーブレット逆変換部224は、最初に、領域311について、5番目と6番目に復号された係数と、2番目に復号された係数(第1プレシンクトの処理において既に復号済みの係数)を用いて、分割レベル3のリフティング演算(1回目のリフティング演算)を行う。次に、ウェーブレット逆変換部224は、7番目に復号された係数と、1回目のリフティング演算結果と、3番目に復号された係数(第1プレシンクトの処理において既に復号済みの係数)を用いて、分割レベル2のリフティング演算(2回目のリフティング演算)を行う。次に、ウェーブレット逆変換部224は、8番目に復号された係数と、2回目のリフティング演算結果と、4番目に復号された係数(第1プレシンクトの処理において既に復号済みの係数)を用いて、分割レベル1のリフティング演算(3回目のリフティング演算)を行う。これにより、ライン番号0および1のベースバンドの画像データ2ラインが得られる。
以上の処理により領域311内のリフティング演算が全て終了したので、ウェーブレット逆変換部224は、次に領域312内のリフティング演算を行う。
ウェーブレット逆変換部224は、領域312について、最初に、8番目と9番目に復号された係数と、2回目のリフティング演算結果とを用いて、分割レベル1のリフティング演算(4回目のリフティング演算)を行う。これにより、ライン番号2および3のベースバンドの画像データ2ラインが得られる。
以上の処理により領域312内のリフティング演算が全て終了したので、ウェーブレット逆変換部224は、次に領域313内のリフティング演算を行う。
ウェーブレット逆変換部224は、領域313について、最初に、7番目と10番目に復号された係数と、1回目のリフティング演算結果とを用いて、分割レベル2のリフティング演算(5回目のリフティング演算)を行う。次に、ウェーブレット逆変換部224は、9番目と11番目に復号された係数と、5回目のリフティング演算結果とを用いて、分割レベル1のリフティング演算(6回目のリフティング演算)を行う。これにより、ライン番号4および5のベースバンドの画像データ2ラインが得られる。
以上の処理により領域313内のリフティング演算が全て終了したので、ウェーブレット逆変換部224は、次に領域314内のリフティング演算を行う。
ウェーブレット逆変換部224は、領域314について、最初に、11番目と12番目に復号された係数と、5回目のリフティング演算結果とを用いて、分割レベル1のリフティング演算(7回目のリフティング演算)を行う。これにより、ライン番号6および7のベースバンドの画像データ2ラインが得られる。
このようにベースバンドの画像データを2ラインずつ生成して出力するようにリフティング演算を進めることにより、ウェーブレット逆変換部224は、ベースバンドの画像データをより早く生成して出力することができる。
例えば、プレシンクト内においてリフティング演算を、分割レベル毎に上位から下位に向かう順序で行うようにする場合、プレシンクト内の全てのリフティング演算が終了するまで、ベースバンドの画像データを出力することができない。
これに対して、制御部211が上述したように制御を行うことにより、ウェーブレット逆変換部224は、3回目のリフティング演算において、ライン番号0と1のベースバンドの画像データを出力することができる。つまり、復号部200は、最初にベースバンドの画像データが出力されるタイミングをより早くすることができる。すなわち、復号部200は、ウェーブレット逆変換処理による遅延時間を低減させることができる。
図14は、以上のような制御による、第2プレシンクトについてのエントロピ復号処理とウェーブレット逆変換処理の流れを模式的に示す図である。
図14に示されるように、最初に、エントロピ復号部222が、5番目に復号される係数データと6番目に復号される係数データを復号し(VLD5およびVLD6)、ウェーブレット逆変換部224が、1回目のリフティング演算(IDWT(Lev3))を行う。次に、エントロピ復号部222が、7番目に復号される係数データを復号し(VLD7)、ウェーブレット逆変換部224が、2回目のリフティング演算(IDWT(Lev2))を行う。次に、エントロピ復号部222が、8番目に復号される係数データを復号し(VLD8)、ウェーブレット逆変換部224が、3回目のリフティング演算(IDWT(Lev1))を行う。
この時点でウェーブレット逆変換部224は、ライン番号0と1のベースバンドの画像データを出力することができる。つまり、復号部200は、プレシンクト内の全ての符号化データを復号してからウェーブレット変換処理を実行する場合よりも、最初にベースバンドの画像データが出力されるタイミングをより早くすることができる。すなわち、復号部200は、ウェーブレット逆変換処理による遅延時間を低減させることができる。
次に、エントロピ復号部222が、9番目に復号される係数データを復号し(VLD9)、ウェーブレット逆変換部224が、4回目のリフティング演算(IDWT(Lev1))を行う。次に、エントロピ復号部222が、10番目に復号される係数データを復号し(VLD10)、ウェーブレット逆変換部224が、5回目のリフティング演算(IDWT(Lev2))を行う。次に、エントロピ復号部222が、11番目に復号される係数データを復号し(VLD11)、ウェーブレット逆変換部224が、6回目のリフティング演算(IDWT(Lev1))を行う。次に、エントロピ復号部222が、12番目に復号される係数データを復号し(VLD12)、ウェーブレット逆変換部224が、7回目のリフティング演算(IDWT(Lev1))を行う。
これらのリフティング演算が行われる度に、制御部211は、途中計算用バッファ部223を制御し、この後のリフティング演算処理に不要な係数をL1キャッシュ131およびL2キャッシュ132より削除(廃棄)する。これにより、復号部200は、L1キャッシュ131およびL2キャッシュ132に保持されるデータのデータ量を低減させることができる。
なお、ここで削除(廃棄)とは、L1キャッシュ131およびL2キャッシュ132に保持されているデータを実際に消去してもよいし、上書き許可を付与するだけでもよいし、また、別途管理するようにすることであってもよい。例えば、6番目に復号される係数データは、1回目のリフティング演算の後、第2プレシンクトについてのリフティング演算には不要であるが、その次のプレシンクト(第3プレシンクト)についてのリフティング演算では使用される。このような場合、途中計算用バッファ部223は、その6番目に復号される係数データを、他の係数データと異なる領域または方法で管理することにより、第2プレシンクトの処理に対する管理から外す(削除する)ようにしてもよい。
以上のような制御処理により行われる各部のデータの流れについて図15のフローチャートを参照して説明する。
最初に、ステップS251において、画像データ出力部225は、ウェーブレット逆変換部224に対して、制御部211により特定された、外部に出力する画像データを要求する。ウェーブレット逆変換部224は、ステップS241においてその要求を取得すると、ステップS242において、エントロピ復号部222に対して、制御部211により特定された、その画像データに対応するウェーブレット係数データを要求する。
エントロピ復号部222は、ステップS211においてその要求を取得すると、ステップS212において、符号化データ入力部221に対して符号化データを要求する。符号化データ入力部221は、ステップS201においてその要求を取得すると、要求された符号化データを外部より取得し、ステップS202において、取得した符号化データをエントロピ復号部222に供給する。エントロピ復号部222は、ステップS213において、その符号化データを取得すると、復号処理を行い、ステップS214において、得られた係数データを途中計算用バッファ部223に供給する。途中計算用バッファ部223は、ステップS231において、エントロピ復号部222より係数データを取得すると、その係数データをL1キャッシュ131およびL2キャッシュ132に保持させる。
ウェーブレット逆変換部224は、ステップS243において、途中計算用バッファ部223と係数データの授受を行いながらウェーブレット逆変換処理を行う。これに対応して、途中計算用バッファ部223は、ステップS232において、ウェーブレット逆変換部224と係数データの授受を行う。
そして、途中計算用バッファ部223に保持されている係数を全て処理すると、ウェーブレット逆変換部224は、ステップS244において、再び、エントロピ復号部222に対してウェーブレット係数を要求する。エントロピ復号部222は、ステップS215においてその要求を取得すると、ステップS216において、符号化データ入力部221に対して符号化データを要求する。符号化データ入力部221は、ステップS203においてその要求を取得する。
以上のような処理を繰り返すことにより、ベースバンドの画像データが生成されると、ウェーブレット逆変換部224は、ステップS245において画像データを画像データ出力部225に供給する。画像データ出力部225は、ステップS252においてその画像データを取得する。
以上のように、制御部211の制御により、各種データが処理部と処理部の間で授受される。
なお、以上においては、ベースバンドの画像データを2ラインずつ生成して出力するように説明したが、ベースバンドの画像データを、図16に示されるように、例えばビデオ信号の水平同期タイミングに同期させて1ラインずつ出力させるようにしてもよい。
この場合、図16に示されるようにベースバンドの画像データ(ベースバンド画像データ−1およびベースバンド画像データ−2)は、水平同期タイミング(H-Sync)毎に1ラインずつ出力される。ただし、図16に示されるように、このベースバンドの画像データは2ラインずつ生成される(ベースバンド画像データ−1およびベースバンド画像データ−2)。つまり、生成された2ラインのうち、一方の1ラインが(A)のように、生成されたときの水平同期タイミングにおいて直接出力され、他方の1ラインは、(B)のように一時的に保持され、次の水平同期タイミングにおいて、(C)のように読み出されて出力される。
従って、図16に示されるように、エントロピ復号処理(VLD)やウェーブレット逆変換処理(IDWT)を水平同期タイミング間に行う必要がある。ウェーブレット逆変換部224(復号部200)は、上述したような順序で合成フィルタ処理を進めることにより、ベースバンドの画像データの生成間隔をより短くすることができるので、図16のようなタイミングでのリアルタイム(即時的な)な復号処理を容易に実現することができる。
つまり、この場合、ウェーブレット逆変換部224は、例えばバッファリング無しに出力画像データをモニタに表示させることができるように、入力された係数データをリアルタイムにウェーブレット逆変換することができる。なお、ここでリアルタイムとは、例えばテレビジョン信号等の水平同期タイミングに合わせてベースバンドの画像データを1ラインずつ出力させることができることを示しており、ウェーブレット変換処理による遅延時間がゼロであることを示すものではない。
次に、図17のフローチャートを参照して、上述した制御処理の他の流れの例を説明する。なおこの場合も、制御処理はピクチャ毎に実行される。この場合、ウェーブレット逆変換処理を行う前に、プレシンクト内の全ての符号化データに対してエントロピ復号処理が行われる。
従って制御部211は、制御処理が開始されると、図12のステップS105乃至ステップS107の場合と同様に、ステップS301において、符号化データ入力部221を制御し、その符号化データを1ライン取得させ、ステップS302において、エントロピ復号部222を制御して、取得させた符号化データに対してエントロピ復号処理を実行させ、ステップS303において、途中計算用バッファ部223を制御し、エントロピ復号処理により得られた係数をL1キャッシュ131またはL2キャッシュ132に保持させる。ステップS304において、制御部211は、プレシンクト内の全ての符号化データを復号したか否かを判定し、復号していない符号化データが存在すると判定した場合、処理をステップS301に戻し、それ以降の処理を繰り返す。つまり、制御部211は、ステップS301乃至ステップS304の処理を繰り返すことにより、プレシンクト内の全ての符号化データを復号させる。
ステップS304において、全ての符号化データを復号したと判定された場合、処理はステップS305に進む。
制御部211は、図12のステップS101およびステップS102の場合と同様に、ステップS305において、未処理のラインのうち、最も上に位置するベースバンドの画像データ2ラインを特定し、処理対象とし、ステップS306において、処理対象の画像データを生成するために必要な係数のうち、最も上位の分割レベルの係数を特定する。
制御部211は、図12のステップS109乃至ステップS111の場合と同様に、ステップS307において、ウェーブレット逆変換部224を制御し、1つ下位の分割レベルの係数を2ライン生成する合成フィルタ処理、すなわち、リフティング演算1回分を実行させ、ステップS308において、途中計算用バッファ部223を制御し、L1キャッシュ131またはL2キャッシュ132に保持されている係数のうち、今後の合成フィルタ処理に使用されない不要な係数を削除させ、ステップS309において、ステップS307の処理により得られた合成フィルタ処理結果の係数が最下位レベルの係数、すなわち、ベースバンドの画像データであるか否かを判定する。得られた合成フィルタ処理結果がベースバンドの画像データではないと判定した場合、制御部211は、処理をステップS305に戻し、それ以降の処理を繰り返す。つまり、ベースバンドの画像データに達するまで、ステップS305乃至ステップS309の処理が繰り返し実行され、合成フィルタ処理のリフティング演算が再帰的に繰り返し実行される。
そして、ステップS309において、得られた合成フィルタ処理結果がベースバンドの画像データであると判定した場合、制御部211は、処理をステップS310に進める。制御部211は、図12のステップS112およびステップS113の場合と同様に、ステップS310において、画像データ出力部225を制御し、合成フィルタ処理により得られた画像データ2ラインを出力させ、ステップS311において、ピクチャ内の全ラインの画像データを出力したか否かを判定し、全ライン出力していないと判定した場合、処理をステップS305に戻し、それ以降の処理を繰り返す。つまり、制御部211は、ベースバンドの画像データをピクチャの上から順に2ラインずつ出力するように、ウェーブレット逆変換処理を実行させる。
そして、ステップS311において全ライン出力したと判定した場合、制御部211は、制御処理を終了する。
このような制御処理により合成フィルタ処理は図18に示されるような手順で行われるが、この場合の合成フィルタ処理は、図13を参照して説明した例と基本的に同様の手順で行われる。ただし、図19に示されるように、プレシンクト内の全ての符号化データの復号処理(VLD5乃至VLD12)が、合成フィルタ処理(IDWT)の前に行われるので、制御部211は、ライン番号0と1のベースバンドの画像データを生成させる前に、そのライン番号0と1のベースバンドの画像データの生成に不要な、9番目乃至12番目に復号されて得られる係数データを、L1キャッシュ131またはL2キャッシュ132に保持させることになる。
このように、図12乃至図14を参照して説明した場合と比較して、L1キャッシュ131またはL2キャッシュ132に保持させるデータのデータ量が増大してしまう。換言すれば、図12乃至図14を参照して説明した場合の制御方法の方が、図17乃至図19を参照して説明した場合よりもL1キャッシュ131またはL2キャッシュ132に保持させるデータのデータ量を低減させることができる。
また、上述したように、合成フィルタ処理のリフティング演算を行う前に、プレシンクト内の全ての符号化データを復号させるので、図19に示されるように、最初にベースバンドの画像データが出力されるタイミングが、図12乃至図14を参照して説明した場合よりも遅くなってしまう。換言すれば、復号部200は、図12乃至図14を参照して説明した場合の制御方法の方が、図17乃至図19を参照して説明した場合よりも、より早いタイミングで最初のベースバンドの画像データを出力させることができる。すなわち、復号部200は、図12乃至図14を参照して説明した場合の制御方法の方が、図17乃至図19を参照して説明した場合よりも、ウェーブレット逆変換処理による遅延時間を低減させることができる。
ただし、この場合も、図12乃至図14を参照して説明した場合と同様に、ベースバンドの画像データを2ラインずつ生成して出力するようにリフティング演算を進めるので、ウェーブレット逆変換部224は、プレシンクト内においてリフティング演算を、分割レベル毎に上位から下位に向かう順序で行うようにする場合よりも、ベースバンドの画像データをより早く生成して出力することができる。
また、図12乃至図14を参照して説明した場合と同様に、制御部211は、リフティング演算が行われる度に、途中計算用バッファ部223を制御し、この後のリフティング演算処理に不要な係数をL1キャッシュ131およびL2キャッシュ132より削除(廃棄)する。これにより、復号部200は、L1キャッシュ131およびL2キャッシュ132に保持されるデータのデータ量を低減させることができる。
なお、付言するに、この場合の制御部211による制御処理は、図19に示されるように、図14を参照して説明した場合よりも、処理の切り替えが少なく容易である。
次に、図20のフローチャートを参照して、上述した制御処理の、さらに他の流れの例を説明する。なおこの場合も、制御処理はピクチャ毎に実行される。
この場合、ウェーブレット逆変換処理を行う前に、プレシンクト内の全ての符号化データに対してエントロピ復号処理が行われ、さらに、プレシンクト内においてリフティング演算を、分割レベル毎に上位から下位に向かう順序で行う。
従って制御部211は、制御処理が開始されると、図17のステップS301乃至ステップS303の場合と同様に、ステップS401において、符号化データ入力部221を制御し、その符号化データを1ライン取得させ、ステップS402において、エントロピ復号部222を制御して、取得させた符号化データに対してエントロピ復号処理を実行させ、ステップS403において、途中計算用バッファ部223を制御し、エントロピ復号処理により得られた係数をL1キャッシュ131またはL2キャッシュ132に保持させる。ステップS404において、制御部211は、プレシンクト内の全ての符号化データを復号したか否かを判定し、復号していない符号化データが存在すると判定した場合、処理をステップS401に戻し、それ以降の処理を繰り返す。つまり、制御部211は、ステップS401乃至ステップS404の処理を繰り返すことにより、プレシンクト内の全ての符号化データを復号させる。
ステップS404において、全ての符号化データを復号したと判定された場合、処理はステップS405に進む。
制御部211は、ステップS405において、合成フィルタ処理の処理対象レベルを最上位レベルに設定し、ステップS406において、ウェーブレット逆変換部224を制御して、下位レベルの係数を2ライン生成する合成フィルタ処理、すなわち、リフティング演算1回分を実行させる。
ステップS407において、制御部211は、レベル内の全係数を処理したか否かを判定し、処理対象レベル内に未処理の係数が存在すると判定した場合、処理をステップS406に戻し、それ以降の処理を繰り返す。ステップS407において、レベル内の全係数を処理したと判定した場合、処理をステップS408に進める。ステップS408において、制御部211は、途中計算用バッファ部223を制御し、L1キャッシュ131またはL2キャッシュ132に保持されている係数のうち、今後の合成フィルタ処理に使用されない不要な係数を削除させる。
ステップS409において、制御部211は、ステップS406の処理により得られた合成フィルタ処理結果の係数が最下位レベルの係数、すなわち、ベースバンドの画像データであるか否かを判定する。得られた合成フィルタ処理結果がベースバンドの画像データではないと判定した場合、制御部211は、処理をステップS410に進め、処理対象レベルを1つ下位の分割レベルに設定し、処理をステップS406に戻し、それ以降の処理を繰り返す。つまり、全ての分割レベルを処理するまで、ステップS406乃至ステップS410の処理が繰り返し実行され、合成フィルタ処理のリフティング演算が再帰的に繰り返し実行される。
そして、ステップS409において、得られた合成フィルタ処理結果がベースバンドの画像データであると判定した場合、制御部211は、処理をステップS411に進め、全ラインの画像データを出力させる。ステップS411の処理が終了すると、制御処理は終了される。
このような制御処理により合成フィルタ処理は図21に示されるような手順で行われるが、この場合の合成フィルタ処理は、上述した場合と異なり、プレシンクト全体を1つの領域411として捉え、分割レベル毎にリフト演算が行われる。従って、復号部200は、図22に示されるように、エントロピ復号処理およびウェーブレット変換処理が全て終了するまで、ベースバンドの画像データを出力することができない。従って、上述した場合に比べて、最初に出力されるベースバンドの画像データの出力タイミングが遅くなってしまう。また、上述した場合と比較して、L1キャッシュ131またはL2キャッシュ132に保持させるデータのデータ量が増大してしまう。
しかしながら、この場合も、上述した場合と同様に、制御部211は、リフティング演算が行われる度に、途中計算用バッファ部223を制御し、この後のリフティング演算処理に不要な係数をL1キャッシュ131およびL2キャッシュ132より削除(廃棄)する。これにより、復号部200は、L1キャッシュ131およびL2キャッシュ132に保持されるデータのデータ量を低減させることができる。
なお、付言するに、この場合の制御部211による制御処理は、図22に示されるように、図14や図19を参照して上述した場合よりも、処理の切り替えが少なく容易である。
以上のように、本発明を適用した復号部200は、エントロピ復号処理を各符号化データに対する処理毎に制御し、また、ウェーブレット逆変換処理をリフティング演算処理毎に制御し、それらを適切にスケジューリングすることにより、復号処理およびウェーブレット逆変換処理による遅延時間をより低減させることができる。また、復号部200は、このようなスケジューリングを行ったり、不要な係数を適宜削除したりすることにより、復号処理およびウェーブレット逆変換処理の過程において保持するデータのデータ量も低減させることができ、それにより、高速にデータの読み出しや書き込みが可能なL1キャッシュ131およびL2キャッシュ132にそれらのデータを保持させることが出来る。これによっても、復号部200は、復号処理およびウェーブレット逆変換処理による遅延時間をより低減させることができる。
以上においては、エントロピ復号処理を各符号化データに対する処理毎に制御し、また、ウェーブレット逆変換処理をリフティング演算処理毎に制御するように説明したが、復号処理およびウェーブレット逆変換処理のそれぞれを複数の工程に分割する処理単位であれば、どの様な処理単位であってもよい。例えば、エントロピ復号処理を符号化データ毎の処理よりさらに細かい処理単位で制御するようにし、より細かな制御を可能とするようにしてもよいし、複数の符号化データに対する処理を処理単位とし、制御処理をより簡易化するようにしてもよい。同様に、ウェーブレット逆変換処理をリフティング演算処理よりさらに細かい処理単位で制御するようにし、より細かな制御を可能とするようにしてもよいし、複数のリフティング演算処理を処理単位とし、制御処理をより簡易化するようにしてもよい。
また、以上においては5×3フィルタのリフティングについて説明したが、フィルタ処理に使用されるフィルタはどの様なフィルタを用いてもよく、例えば、9×7フィルタを用いるようにしてもよい。
さらに、エントロピ復号処理とウェーブレット逆変換処理を互いに異なる処理部において実行するようにしてもよい。
上述した一連の処理は、ソフトウエアにより実行させることもできるが、ハードウェアにより実行させることもできる。上述したソフトウェアプログラムは、実行可能な装置であればどのような装置において実行させるようにしてもよく、例えば、図23に示されるようなパーソナルコンピュータにおいて実行させるようにしてもよい。
図23において、パーソナルコンピュータ500のCPU501は、ROM(Read Only Memory)502に記憶されているプログラム、または記憶部513からRAM(Random Access Memory)503にロードされたプログラムに従って各種の処理を実行する。RAM503にはまた、CPU501が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU501、ROM502、およびRAM503は、バス504を介して相互に接続されている。このバス504にはまた、入出力インタフェース510も接続されている。
入出力インタフェース510には、キーボード、マウスなどよりなる入力部511、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部512、ハードディスクなどより構成される記憶部513、モデムなどより構成される通信部514が接続されている。通信部514は、例えばインターネットに代表されるネットワークを介しての通信処理を行う。
入出力インタフェース510にはまた、必要に応じてドライブ515が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア521が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部513にインストールされる。
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図23に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア521により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM502や、記憶部513に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
なお、以上において、1つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて1つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。
100 コンピュータ, 111 CPU, 113 メインメモリ, 131 L1キャッシュ, 132 L2キャッシュ, 200 復号部, 211 制御部, 221 符号化データ入力部, 222 エントロピ復号部, 223 途中計算用バッファ部, 224 ウェーブレット逆変換部, 225 画像データ出力部