以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の画像データ処理装置(例えば、図1の符号化装置1)は、第1に、画像データに対してウェーブレット変換処理を行うことにより得られる係数データを格納するメモリ(例えば、図1の係数並び替え用メモリ14)と、前記画像データの符号化パラメータ及び前記係数データのデータ量に基づいて、前記係数データを格納する前記メモリのメモリアドレスを求め、前記係数データを書き込むメモリ領域を予め確保するメモリ領域確保手段(例えば、図1のメモリ領域設定部22)と、前記係数データに対してウェーブレット逆変換処理を行う順番に並び替えながら、前記メモリ領域確保手段により確保されたメモリ領域に前記係数データを書き込む書き込み手段(例えば、図1のメモリ書き込み制御部23)とを備える。
本発明の一側面の画像データ処理装置は、第2に、前記書き込み手段により前記メモリに書き込まれた係数データを低域成分から高域成分の順に読み出す読みだし手段(例えば、図1のメモリ読み出し制御部24)をさらに備えることができる。
本発明の一側面の画像データ処理装置は、第3に、前記書き込み手段により前記メモリに書き込まれた係数データを先頭アドレスから順に読み出す読みだし手段(例えば、図1のメモリ読み出し制御部24)をさらに備えることができる。
本発明の一側面の画像データ処理装置は、第4に、前記画像データの符号化パラメータを取得する取得手段(例えば、図1のパラメータ取得部21)をさらに備えることができる。
本発明の一側面の画像データ処理方法は、画像データに対してウェーブレット変換処理を行うことにより得られる係数データのデータ量および前記画像データの符号化パラメータに基づいて、前記係数データを格納するメモリのメモリアドレスを求め、前記係数データを書き込むメモリ領域を予め確保し(例えば、図7のステップS2)、前記係数データに対してウェーブレット逆変換処理を行う順番に並び替えながら、前記メモリ領域確保手段により確保されたメモリ領域に前記係数データを書き込む(例えば、図7のステップS8およびS9)ステップを含む。
以下、図面を参照して本発明を適用した実施の形態について説明する。
図1は、本発明を適用した符号化装置の一実施の形態を示すブロック図である。図1の符号化装置1は、ウェーブレット変換部11、途中計算用メモリ12、メモリ制御部13、係数並び替え用メモリ14、量子化部15、および、VLC(Variable Length Coding)部16を含むように構成される。
符号化装置1に入力された画像データ(以下、入力画像データとも称する)は、ウェーブレット変換部11を介して途中計算用メモリ12に一時的に溜め込まれる。ウェーブレット変換部11は、途中計算用メモリ12に溜め込まれた画像データに対してウェーブレット変換を施す。すなわち、ウェーブレット変換部11は、途中計算用メモリ12から画像データを読み出して分析フィルタによりフィルタ処理(以下、分析フィルタ処理または分析フィルタリングとも称する)を施して低域成分および高域成分の係数のデータを生成し、生成された係数データを途中計算用メモリ12に格納する。ウェーブレット変換部11は、水平分析フィルタと垂直分析フィルタとを有し、画像データ群に対して、画面水平方向と画面垂直方向の両方について分析フィルタ処理を行う。ウェーブレット変換部11は、途中計算用メモリ12に格納された低域成分の係数データを再度読み出し、読み出した係数データに対して分析フィルタによるフィルタ処理を施して、高域成分および低域成分の係数のデータをさらに生成する。生成された係数データは、途中計算用メモリ12に格納される。
ウェーブレット変換部11は、分解レベルが所定レベル(以下、最終レベルとも称する)に達するまでこの処理を繰り返しながら、適宜途中計算用メモリ12から係数データを読み出し、読み出された係数データをメモリ制御部13のメモリ書き込み制御部23に供給する。
また、ウェーブレット変換部11は、入力画像データの解像度(水平サイズ×垂直ライン数)、ビット精度、および、ウェーブレット変換の分解レベル数を含む符号化パラメータを取得する。なお、この符号化パラメータは、例えば、外部から与えられたり、入力画像データとともに送信されてきたり、入力画像データに設定されていたりする。
メモリ制御部13は、パラメータ取得部21、メモリ領域設定部22、メモリ書き込み制御部23、および、メモリ読み出し制御部24を含むように構成され、係数並び替え用メモリ14への係数データの書き込み、および、係数並び替え用メモリ14からの係数データの読み出しを制御する。
パラメータ取得部21は、入力画像データの符号化パラメータをウェーブレット変換部11から取得し、メモリ領域設定部22に供給する。なお、パラメータ取得部21が、外部から符号化パラメータを取得するようにしてもよい。
メモリ領域設定部22は、図7などを参照して後述するように、符号化パラメータに基づいてウェーブレット変換部11により生成される係数データのデータ量を求め、符号化パラメータおよび係数データのデータ量に基づいて、各係数データを格納する係数並び替え用メモリ14のメモリアドレスを求める。メモリ領域設定部22は、係数データを格納するための領域(以下、係数データ格納領域と称する)を係数並び替え用メモリ14に確保し、メモリ格納領域において各係数データを格納する位置(例えば、メモリアドレス)を示すメモリマップを生成する。メモリ領域設定部22は、係数データ格納領域の先頭アドレスを示す情報およびメモリマップをメモリ書き込み制御部23およびメモリ読み出し制御部24に供給する。
メモリ書き込み制御部23は、図7などを参照して後述するように、係数データに対してウェーブレット逆変換が行われる順番に並び替えながら、係数並び替え用メモリ14の係数データ格納領域にウェーブレット変換部11から供給された係数データを書き込む。
メモリ読み出し制御部24は、係数データの読み出しを指示する信号がメモリ書き込み制御部23から供給された場合、係数並び替え用メモリ14の係数データ格納領域の先頭アドレスから格納されている順に係数データを読み出し、量子化部15に供給する。
量子化部15は、供給された係数データを所定の方式で量子化し、得られた量子化係数をVLC部16に供給する。
VLC部16は、供給された係数データを、例えばハフマン符号化や算術符号化といった所定のエントロピ符号化方式で符号化する。VLC部16は、生成した符号化データを符号化装置1の外部に出力する。
次に、図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ライン生成される。
図5は、分解レベル4のウェーブレット変換処理により、1プレシンクト当たりに生成される係数データのラインの生成順を示す図である。各係数データのライン内の括弧内の数字は、そのラインが、ベースバンドの画像データの何番目(ただし、プレシンクト内における順番)のラインが入力したときに生成されるかを示している。例えば、1HH(1)は、ベースバンドの画像データの1ライン目が入力されたときに生成され、1HL(8)は、ベースバンドの画像データの8ライン目が入力されたときに生成され、4LH(8)は、ベースバンドの画像データの8ライン目が入力されたときに生成され、4LL(16)は、ベースバンドの画像データの16ライン目が入力されたときに生成されることを示している。
図6は、図5の係数データの係数並び替え用メモリ14への書き込みが行われる順番を示す図である。図内左側の括弧内の数字は、図5と同様に、そのラインが、ベースバンドの画像データの何番目(ただし、プレシンクト内における順番)のラインが入力したときに生成され、書き込まれるかを示している。
なお、図6の横軸方向は、時間軸(処理サイクル数)を示している。例えば、ベースバンドの画像データの水平方向のサンプル数(画素数)が1920である場合、図6の横軸方向の最大幅は、1920サイクルに相当する。すなわち、例えば、図6の1行目の1LHは、1920サイクルかけて係数並び替え用メモリ14に書き込まれ、2行目の1HHは、1920サイクルかけて係数並び替え用メモリ14に書き込まれ、3行目の2LHおよび1LHは、それぞれ、960サイクルかけて係数並び替え用メモリ14に書き込まれ、4行目の2HHは、960サイクルかけて係数並び替え用メモリ14に書き込まれることを示している。
すなわち、符号化側では、高域成分から低域成分の順に係数データが生成され、係数並び替え用メモリ14への書き込みが行われる。
ウェーブレット逆変換処理は、このようなウェーブレット変換処理に対応する逆変換処理であり、ウェーブレット変換処理により生成された係数データを、元のベースバンドの画像データに逆変換する処理である。従って、ウェーブレット変換部11が上述したようにプレシンクト単位でウェーブレット変換処理を行う場合、このウェーブレット変換部11に対応するウェーブレット逆変換処理においてもそのプレシンクト単位で逆変換処理が行われる。
つまり、例えば、図4に示されるように、分解レベル4のウェーブレット変換処理によりベースバンドの画像データ16ラインが変換されて得られた係数データは、分解レベル4のウェーブレット逆変換処理により、元のベースバンドの画像データ16ラインに変換される(復元される)。具体的には、例えば、分解レベル4の各サブバンド(4LL、4LH、4HL、および4HH)の係数データのラインから、分解レベル3の低域サブバンド(3LL)の係数データのラインが復元され、分解レベル3の各サブバンド(3LL、3LH、3HL、および3HH)の係数データのラインから、分解レベル2の低域サブバンド(2LL)の係数データのラインが復元され、分解レベル2の各サブバンド(2LL、2LH、2HL、および2HH)の係数データのラインから、分解レベル1の低域サブバンド(1LL)の係数データのラインが復元され、分解レベル1の各サブバンド(1LL、1LH、1HL、および1HH)の係数データのラインから、ベースバンドの画像データのラインが復元される。
すなわち、復号側では、符号化側と異なり、低域成分から高域成分の順に係数データが復元され、最後に、ベースバンドの画像データが復元される。
従って、低遅延で即座に復号を行うためには、復号側のウェーブレット逆変換において処理される順に係数データを並び替えて供給する必要がある。
なお、ウェーブレット変換処理およびウェーブレット逆変換処理をプレシンクト単位で行う場合、演算方法によりプレシンクトのサイズが変化する場合を除いて、常に同じ順序で係数データが生成され、復元される。
メモリ書き込み制御部23は、図7などを参照して後述するように、ウェーブレット変換部11により生成された係数データを、復号側で処理される順に並び替えながら係数並び替え用メモリ14に書き込む。
ウェーブレット変換部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)によれば、低域成分および高域成分の係数を、直接的に算出することができる。
次に、図7のフローチャートを参照して、符号化装置1により実行される符号化処理の流れの例を説明する。
ステップS1において、パラメータ取得部21は、ウェーブレット変換部11から符号化パラメータを取得し、メモリ領域設定部22に供給する。
ステップS2において、メモリ領域設定部22は、メモリ領域を確保する。
ところで、ウェーブレット変換処理により生成される係数データは、全て同じビット精度になる性質を有している。例えば、入力画像データのビット精度は、通常8ビットから12ビットの範囲内であるが、入力画像データのビット精度が12ビットである場合、分解レベル数が4のとき、ウェーブレット変換により生成される係数データのビット精度は全て16ビットとなる。
例えば、解像度が1920×1088画素の画像データに対して分解レベル4のウェーブレット変換を施した場合、分解レベル1のサブバンドのサイズ=960×544画素、分解レベル2のサブバンドのサイズ=480×272画素、分解レベル3のサブバンドのサイズ=240×136画素、分解レベル4のサブバンドのサイズ=120×68画素となる。従って、1プレシンクトの画像データをウェーブレット変換した場合に生成される係数データのデータ量の合計は以下のとおりとなる。
合計データ量=分解レベル4のサブバンドの水平サイズ(120)×16ビット×4ライン+
分解レベル3のサブバンドの水平サイズ(240)×16ビット×6ライン+
分解レベル2のサブバンドの水平サイズ(480)×16ビット×12ライン+
分解レベル1のサブバンドの水平サイズ(960)×16ビット×24ライン
=184320ビット
また、上述したように、ウェーブレット変換処理およびウェーブレット逆変換処理をプレシンクト単位で行う場合、演算方法によりプレシンクトのサイズが変動する場合を除いて、常に同じ順序で係数データが復元されるので、復号側で処理される係数データの順序は一定となる。
従って、入力画像データの解像度(水平サイズ×垂直ライン数)、ビット精度、および、ウェーブレット変換の分解レベル数に基づいて、係数データ格納領域に必要な容量、すなわち、1プレシンクト分の係数データを並び替えて格納するのに必要な容量、および、1プレシンクト分の各係数データを係数データ格納領域内において格納するメモリアドレスを求めることができる。
メモリ領域設定部22は、符号化パラメータに含まれる入力画像データの解像度、ビット精度、および、ウェーブレット変換の分解レベル数に基づいて、1プレシンクトあたりの係数データのデータ量を求め、各係数データを格納する係数並び替え用メモリ14のメモリアドレスを求める。また、メモリ領域設定部22は、1プレシンク分の係数データを格納する容量を有する領域を係数データ格納領域として係数並び替え用メモリ14に確保する。また、メモリ領域設定部22は、係数データ格納領域内において各係数データを格納する位置を示すメモリマップを生成する。
図8は、分解レベル数4のウェーブレット変換を行う場合のメモリマップの例を示す図である。このメモリマップにおいては、1プレシンクト分の係数データが、復号側で処理される順、すなわち、ウェーブレット逆変換が実行される順に隙間なく並べられている。さらに、換言すれば、低域成分の係数データが係数データ格納領域のメモリアドレスの先頭、かつ、高域成分の係数データが係数データ格納領域のメモリアドレスの後尾になるように係数データが配置されている。なお、このメモリマップには、図示はされていないが、例えば、各係数データのデータ量、および、係数データ格納領域の先頭からの各係数データの先頭位置の相対アドレスが示される。
メモリ領域設定部22は、係数並び替え用メモリ14における係数データ格納領域の先頭アドレスを示す情報、および、生成したメモリマップを、メモリ書き込み制御部23およびメモリ読み出し制御部24に供給する。
なお、図8に示されるようなメモリマップを、メモリ書き込み制御部23が生成するようにしてもよい。また、複数の種類のメモリマップを予め準備しておき、入力画像データの解像度、ビット精度、および、ウェーブレット変換の分解レベル数に基づいて、メモリ領域設定部22またはメモリ書き込み制御部23が使用するメモリマップを選択するようにしてもよい。
ステップS3において、ウェーブレット変換部11は、処理対象プレシンクトの番号Aを初期設定にする。通常の場合、番号Aは「1」に設定される。
ステップS4において、ウェーブレット変換部11は、最低域サブバンドにおいて上からA番目の1ラインを生成するのに必要なライン数(すなわち、1プレシンクト)の画像データを取得する。
ステップS5において、ウェーブレット変換部11は、取得した画像データに対して、画面垂直方向に並ぶ画像データに対して分析フィルタリングを行う垂直分析フィルタリングを行う。
ステップS6において、ウェーブレット変換部11は、画面水平方向に並ぶ画像データに対して分析フィルタリングを行う水平分析フィルタリングを行う。
ステップS7において、ウェーブレット変換部11は、分析フィルタリングが最終レベルまで終了したかを判定する。分析フィルタリングが最終レベルまで終了していないと判定された場合、処理はステップS8に進む。
ステップS8において、メモリ書き込み制御部23は、高域サブバンドの係数データを並び替えながらメモリに書き込む。具体的には、ウェーブレット変換部121は、現在の分解レベルの高域サブバンド(HL,LH,HH)の係数データをメモリ書き込み制御部23に供給する。メモリ書き込み制御部23は、メモリマップに基づいて、供給された係数データを係数並び替え用メモリ14の係数データ格納領域の所定の位置に書き込む。これにより、係数データが復号側で処理される順に並び替えられる。
その後、処理はステップS5に戻り、ステップS7において、分析フィルタリングが最終レベルまで終了したと判定されるまで、ステップS5乃至S8の処理が繰り返し実行される。すなわち、現在の分解レベルに対して、分析フィルタリング処理が繰り返され、得られた高域サブバンドの係数データが、メモリマップにより示される係数データ格納領域の所定の位置に書き込まれる処理が繰り返される。
一方、ステップS7において、分析フィルタリングが最終レベルまで終了したと判定された場合、処理はステップS9に進む。
ステップS9において、メモリ書き込み制御部23は、最終レベルの係数データをメモリに書き込む。具体的には、ウェーブレット変換部11は、最終レベルのウェーブレット変換により生成した係数データをメモリ書き込み制御部23に供給する。メモリ書き込み制御部23は、メモリマップに基づいて、取得した係数データを係数並び替え用メモリ14の係数データ格納領域の所定の位置に書き込む。例えば、図8の例においては、4LL,4HL,4LH,4HHの係数データが、係数データ格納領域の先頭に書き込まれる。
ステップS10において、メモリ読み出し制御部24は、プレシンクトAの係数データを格納されている順にメモリから読み出す。具体的には、メモリ書き込み制御部23は、係数データの読み出しを指示する信号をメモリ読み出し制御部24に供給する。メモリ読み出し制御部24は、係数並び替え用メモリ14の係数データ格納領域に格納されている係数データを、係数データ格納領域の先頭アドレスから格納されている順に読み出し、後段の量子化部15に供給する。
例えば、図8のメモリマップに従って係数データが格納されている場合、メモリ読み出し制御部24は、図9および図10に示されるように、先頭の4LL(16)の係数データから最後尾の1HH(15)の係数データまでを格納されている順に読み出し、量子化部15に供給する。
ステップS11において、量子化部15は、取得した係数データを、ライン毎に量子化し、得られた量子化係数をVLC部16に供給する。
ステップS12において、VLC部16は、取得した量子化係数を、ライン毎にエントロピ符号化する。
ステップS13において、VLC部16は、プレシンクトAの符号化データを外部に送出する。
ステップS14において、ウェーブレット変換部11は、番号Aの値を「1」インクリメントして次のプレシンクトを処理対象とする。
ステップS15において、ウェーブレット変換部11は、処理対象のピクチャ(インタレース方式の場合フィールド)について、未処理の画像入力ラインが存在するか否かを判定し、存在すると判定した場合、処理はステップS4に戻り、新たな処理対象のプレシンクトに対してそれ以降の処理が繰り返される。
以上のように、ステップS4乃至ステップS15の処理が繰り返し実行され、各プレシンクトが符号化される。そして、ステップS15において、未処理の画像入力ラインが存在しないと判定された場合、そのピクチャに対する符号化処理が終了される。次のピクチャに対しては新たに符号化処理が開始される。
このようにして、復号側において処理される順に係数データを並び替えて、復号側に供給することができる。
また、係数データを係数データ格納領域に格納されている順に読み出せばよいので、読み出し処理を単純化することができ、係数データの先読み処理等を容易に実現することができる。
さらに、係数並び替え用メモリ14への係数データの書き込みおよび読み出しが1プレシンクト単位で行われるので、必要なメモリ容量を抑えることができる。
次に、図1の符号化装置1に対応する復号装置について説明する。図11は、本発明を適用した復号装置101の一実施の形態を示すブロック図である。復号装置101は、VLD(Variable Length Decoding)部111、逆量子化部112、係数バッファ部113、および、ウェーブレット逆変換部114を含むように構成される。
VLD部111は、供給された符号化データをVLC部16による符号化方法に対応する復号方法で復号し、得られた量子化係数を逆量子化部112に供給する。
逆量子化部112は、取得した量子化係数を量子化部15による量子化方法に対応する逆量子化方法で逆量子化し、得られた係数データを係数バッファ部113に格納する。
ウェーブレット逆変換部114は、係数バッファ部113に格納された係数データを用いて、ウェーブレット逆変換を行い、その結果を再び係数バッファ部113に格納する。ウェーブレット逆変換部114は、この処理を分解レベルに応じて繰り返して、復号された画像データ(出力画像データ)を得ると、それを外部に出力する。
次に、図12のフローチャートを参照して、復号装置101により実行される復号処理の流れの例を説明する。
復号処理が開始されると、VLD部111は、ステップS31において、復号装置101の外部より供給される符号化データを取得し、ステップS32において、ライン毎に符号化データをエントロピ復号し、得られた量子化係数を逆量子化部112に供給する。
ステップS33において、逆量子化部112は、ライン毎に取得した量子化係数を逆量子化する。
ステップS34において、係数バッファ部113は、逆量子化された係数データを保持する。
ステップS35において、ウェーブレット逆変換部114は、係数バッファ部113に1プレシンクト分の係数データが蓄積されたか否かを判定する。1プレシンクト分の係数データが蓄積されていないと判定された場合、処理は、ステップS31に戻り、それ以降の処理が実行される。つまり、ウェーブレット逆変換部114は、係数バッファ部113に1プレシンクト分の係数データが蓄積されるまで待機する。
ステップS35において、1プレシンクト分の係数データが蓄積されたと判定された場合、処理はステップS36に進む。
なお、上述したように、符号化装置1からは係数データがウェーブレット逆変換において処理される順に並び替えられて復号装置101に供給されるので、係数バッファ部113には、1プレシンクト分の係数データがウェーブレット逆変換において処理される順に並べられて格納される。
ステップS36において、ウェーブレット逆変換部114は、係数バッファ部113に保持されている係数データを1プレシンクト分読み出し、ステップS37において、その読み出した係数データに対して、画面垂直方向に並ぶ係数データに対して合成フィルタリング処理を行う垂直合成フィルタリング処理を行い、ステップS38において、画面水平方向に並ぶ係数データに対して合成フィルタリング処理を行う水平合成フィルタリング処理を行う。
なお、上述したように、係数バッファ部113には、1プレシンクト分の係数データがウェーブレット逆変換において処理される順に並べられて格納されており、ウェーブレット逆変換部114は、係数データを格納されている順に係数バッファ部113から読み出せばよく、係数データの並び替えを行う必要がないため、ウェーブレット逆変換処理による遅延時間を短縮することができる。
ステップS39において、ウェーブレット逆変換部114は、合成フィルタリング処理がレベル1(分解レベルの値が「1」のレベル)まで終了したか否か、すなわち、ウェーブレット変換前の状態まで逆変換したか否かを判定する。レベル1まで達していないと判定された場合、処理はステップS37に戻り、ステップS37およびステップS38のフィルタリング処理が繰り返される。
ステップS39において、レベル1までウェーブレット逆変換処理が終了されたと判定した場合、処理はステップS40に進む。
ステップS40において、ウェーブレット逆変換部114は、ウェーブレット逆変換処理により得られた画像データを外部に出力する。
ステップS41において、VLD部111は、復号処理を終了するか否かを判定する。復号処理を終了しないと判定された場合、処理はステップS31に戻り、それ以降の処理が繰り返される。また、ステップS41において、プレシンクトが終了するなどして復号処理が終了されると判定した場合、復号処理は終了される。
このようにして、ウェーブレット逆変換処理による遅延時間を短縮することができる。
なお、例えば、リフティング演算など、ウェーブレット変換処理の演算方法によっては、処理中にプレシンクトのサイズが変化する場合があるが、その場合、例えば、プレシンクトのサイズが変化するごとに、係数データ格納領域を再確保し、メモリマップを再作成するようにすればよい。
ここで、符号化装置1のウェーブレット変換部11の分析フィルタ処理、および、復号装置101のウェーブレット逆変換部114の合成フィルタ処理にリフティング(Lifting)技術を適用した場合の処理について説明する。
まず、図13を用いて、5×3フィルタに対してリフティング技術を適用した場合の、ウェーブレット変換を行う分析フィルタ側の処理について、概略的に説明する。
図13において、最上段部、中段部および最下段部は、それぞれ入力画像の画素列、高域成分出力および低域成分出力を示す。最上段は、入力画像の画素列に限らず、先のフィルタ処理で得られた係数でもよい。ここでは、最上段部が入力画像で画素列であるものとし、黒の四角印(■)が偶数番目(最初を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)
分析フィルタ側では、このようにして、フィルタリング処理により入力画像の画素データを低域成分と高域成分とに分解する。
図14を用いて、ウェーブレット変換により生成された係数を復元するウェーブレット逆変換を行う合成フィルタ側の処理(以下、合成フィルタ処理、合成フィルタリング、または、合成処理とも称する)について、概略的に説明する。この図14は、上述の図13と対応し、5×3フィルタを用い、リフティング技術を適用した例を示す。図14において、最上段部は、ウェーブレット変換により生成された入力係数を示し、黒丸印(●)が高域成分の係数、黒の四角印(■)が低域成分の係数をそれぞれ示す。
先ず第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)
合成フィルタ側では、このようにして、フィルタリング処理により低域成分および高域成分の係数を合成し、ウェーブレット逆変換を行う。
次に、このウェーブレット変換方法について、さらに具体的に説明する。図15は、5×3フィルタのリフティングによるフィルタ処理を、分解レベル=2まで実行した例を示している。なお、図15において、図の左側に分析フィルタとして示される部分は、図1のウェーブレット変換部11のフィルタである。また、図の右側に合成フィルタとして示される部分は、図11のウェーブレット逆変換部114のフィルタである。
なお、図15では、説明の簡略化のため、実際の画像データは二次元の情報であるが、図の奥行き方向に水平方向の画素が存在するものとして一次元により表し、さらに、水平方向の分析フィルタ処理および合成フィルタ処理についての記載は省略している。
図15において、左端列は、原画像データのライン上の対応する位置にある画素データが縦方向に並べられて示されている。すなわち、ウェーブレット変換部11におけるフィルタ処理は、垂直フィルタを用いて画面上を画素が縦に走査されて行われる。左端から1列目乃至3列目が分解レベル=1のフィルタ処理を示し、4列目乃至6列目が分解レベル=2のフィルタ処理を示す。左端から2列目は、左端の原画像データの画素に基づく高域成分出力、左端から3列目は、原画像データおよび高域成分出力に基づく低域成分出力を示す。分解レベル=2のフィルタ処理は、左端から4列目乃至6列目に示されるように、分解レベル=1のフィルタ処理の出力に対して処理がなされる。
分解レベル=1のフィルタ処理において、第1段階のフィルタ処理として、原画像データの画素に基づき高域成分の係数データが算出され、第2段階のフィルタ処理として、第1段階のフィルタ処理で算出された高域成分の係数データと、原画像データの画素とに基づき低域成分の係数データが算出される。分解レベル=1の一例のフィルタ処理を、図15における左側(分析フィルタ側)の第1列目乃至第3列目に示す。算出された高域成分の係数データは、図1の係数並び替え用メモリ14に格納される。また、算出された低域成分の係数データは、図1の途中計算用メモリ12に格納される。
図15においては、係数並び替え用メモリ14は、一点鎖線で囲まれた部分として示し、途中計算用メモリ12は、点線で囲まれた部分として示す。
途中計算用メモリ12に保持された分解レベル=1のフィルタ処理の結果に基づき、分解レベル=2のフィルタ処理が行われる。分解レベル=2のフィルタ処理では、分解レベル=1のフィルタ処理において低域成分の係数として算出された係数データを、低域成分および高域成分を含んだ係数データと見做して、分解レベル=1と同様のフィルタ処理を行う。分解レベル=2のフィルタ処理により算出された、高域成分の係数データおよび低域成分の係数データは、途中計算用メモリ12に格納される。
ウェーブレット変換部11では、上述したようなフィルタ処理を、画面の水平方向および垂直方向にそれぞれ行う。例えば、先ず、分解レベル=1のフィルタ処理を水平方向に行い、生成された高域成分および低域成分の係数データを途中計算用メモリ12に格納する。次に、途中計算用メモリ12に格納された係数データに対して、垂直方向に分解レベル=1のフィルタ処理を行う。この分解レベル=1の水平および垂直方向の処理により、高域成分をさらに高域成分および低域成分に分解した係数データのそれぞれによる領域HHおよび領域HLと、低域成分をさらに高域成分および低域成分に分解した係数データのそれぞれによる領域LHおよび領域LLとの4領域が形成される。
そして、分解レベル=2では、水平方向および垂直方向のそれぞれについて、分解レベル=1で生成された低域成分の係数データに対してフィルタ処理が行われる。すなわち、分解レベル=2では、分解レベル=1で分解されて形成された領域LLがさらに4つに分解され、領域LL内にさらに領域HH、領域HL、領域LHおよび領域LLが形成される。
ウェーブレット変換部11は、ウェーブレット変換によるフィルタ処理を、画面の縦方向について、数ライン毎の処理に分割して、複数回に分けて段階的に行うようにしている。図15の例では、画面上の第1ラインからの処理になる1回目の処理は、7ラインについてフィルタ処理を行い、8ライン目からの処理になる2回目以降の処理は、4ライン毎にフィルタ処理を行っている。このライン数は、高域成分と低域成分とに2分解した後に、1ライン分の最低域成分が生成されるために必要なライン数に基づく。
図15によれば、分解レベル=2のフィルタ処理結果で得られる係数C5は、係数C4および途中計算用メモリ12に格納された係数Caに基づき算出され、係数C4は、途中計算用メモリ12に格納された係数Ca、係数Cbおよび係数Ccに基づき算出される。さらに、係数Ccは、係数並び替え用メモリ14に格納される係数C2および係数C3、並びに、第5ラインの画素データに基づき算出される。また、係数C3は、第5ライン乃至第7ラインの画素データに基づき算出される。このように、分解レベル=2における低域成分の係数C5を得るためには、第1ライン乃至第7ラインの画素データが必要とされる。
これに対して、2回目以降のフィルタ処理においては、前回までのフィルタ処理で既に算出され途中計算用メモリ12または係数並び替え用メモリ14に格納されている係数データを用いることができるので、必要なライン数が少なくて済む。
すなわち、図15によれば、分解レベル=2のフィルタ処理結果で得られる低域成分の係数のうち、係数C5の次の係数である係数C9は、係数C4および係数C8、並びに、途中計算用メモリ12に格納された係数Ccに基づき算出される。係数C4は、上述した1回目のフィルタ処理により既に算出され、係数並び替え用メモリ14に格納されている。同様に、係数Ccは、上述の1回目のフィルタ処理により既に算出され、途中計算用メモリ12に格納されている。したがって、この2回目のフィルタ処理においては、係数C8を算出するためのフィルタ処理のみが、新たになされることになる。この新たなフィルタ処理は、第8ライン乃至第11ラインがさらに用いられてなされる。
このように、2回目以降のフィルタ処理は、前回までのフィルタ処理により算出され途中計算用メモリ12および係数並び替え用メモリ14に格納されたデータを用いることができるので、それぞれ4ライン毎の処理で済むことになる。
なお、画面上のライン数が符号化のライン数と合致しない場合は、原画像データのラインを所定の方法で複製してライン数を符号化のライン数と合わせて、フィルタ処理を行う。
このように、最低域成分1ライン分の係数データが得られるだけのフィルタ処理を段階的に、画面全体のラインに対して複数回に分けて(プレシンクト単位で)行うことで、符号化データを伝送した際に低遅延で復号画像を得ることを可能としている。
ウェーブレット変換を行うためには、ウェーブレット変換そのものを実行するために用いられる第1のバッファと、所定の分解レベルまで処理を実行する間に生成される係数を格納するための第2のバッファとが必要とされる。第1のバッファは、途中計算用メモリ12に対応し、図15においては点線で囲まれて示されている。また、第2のバッファは、係数並び替え用メモリ14に対応し、図15においては一点鎖線に囲まれて示されている。第2のバッファに格納された係数は、復号の際に用いられるため、後段の量子化処理およびエントロピ符号化処理の対象とされる。
次に、図1のメモリ制御部13の処理について説明する。メモリ制御部13は、上述したように、ウェーブレット変換部11で生成された係数データを、合成処理において処理される順に並び替えて、量子化部15に供給する。
既に説明したように、ウェーブレット変換においては、高域成分側から低域成分側へと係数が生成されていく。図15の例では、1回目において、原画像の画素データにより、分解レベル=1のフィルタ処理で、高域成分の係数C1、係数C2および係数C3が順次生成される。そして、分解レベル=1のフィルタ処理で得られた低域成分の係数データに対して分解レベル=2のフィルタ処理を行い、低域成分の係数C4および係数C5が順次生成される。すなわち、第1回目では、係数C1、係数C2、係数C3、係数C4、係数C5の順に、係数データが生成される。この係数データの生成順は、ウェーブレット変換の原理上、必ずこの順序(高域から低域の順)になる。
これに対して、復号側(合成フィルタ側)では、低遅延で即座に復号を行うためには低域成分から画像の生成および出力を行う必要がある。そのため、符号化側で生成された係数データを最低域成分側から高域成分側に向けて並び替えて復号側に供給することが望ましい。
図15の例を用いて、より具体的に説明する。図15の右側は、ウェーブレット逆変換を行う合成フィルタ側を示す。復号側の、出力画像データの第1ライン目を含む1回目の合成処理(ウェーブレット逆変換処理)は、符号化側の1回目のフィルタ処理で生成された最低域成分の係数C4および係数C5と、係数C1とを用いて行われる。
すなわち、1回目の合成処理においては、係数C5、係数C4、係数C1の順に符号化側から復号側に係数データを供給し、復号側では、分解レベル=2に対応する合成処理である合成レベル=2の処理で、係数C5および係数C4に対して合成処理を行って係数Cfを生成し、バッファに格納する。そして、分解レベル=1に対応する合成処理である合成レベル=1の処理で、この係数Cfと係数C1に対して合成処理を行って、第1ラインを出力する。
このように、1回目の合成処理においては、符号化側で係数C1、係数C2、係数C3、係数C4、係数C5の順に生成された係数データが、係数C5、係数C4、係数C1、・・・の順に並び替えられて復号側に供給される。
なお、図15の右側に示す合成フィルタ側では、符号化側から供給される係数について、括弧内に符号化側での係数の番号を記し、括弧外に合成フィルタのライン順を記す。例えば係数C1(5)は、図15の左側の分析フィルタ側では係数C5であって、合成フィルタ側では第1ライン目であることを示す。
符号化側の2回目以降のフィルタ処理で生成された係数データによる復号側の合成処理は、前回の合成処理の際に合成あるいは符号化側から供給された係数データを用いて行うことができる。図15の例では、符号化側の2回目のフィルタ処理で生成された低域成分の係数C8および係数C9を用いて行う、復号側の2回目の合成処理は、符号化側の1回目のフィルタ処理で生成された係数C2および係数C3がさらに必要とされ、第2ライン乃至第5ラインが復号される。
すなわち、2回目の合成処理においては、係数C9、係数C8、係数C2、係数C3の順に符号化側から復号側に係数データを供給する。復号側では、合成レベル=2の処理において、係数C8および係数C9と、1回目の合成処理の際に符号化側から供給された係数C4とを用いて係数Cgを生成し、バッファに格納する。この係数Cgと、上述の係数C4と、1回目の合成処理により生成されバッファに格納された係数Cfとを用いて係数Chを生成し、バッファに格納する。
そして、合成レベル=1の処理において、合成レベル=2の処理で生成されバッファに格納された係数Cgおよび係数Chと、符号化側から供給された係数C2(合成フィルタでは係数C6(2)と示されている)および係数C3(合成フィルタでは係数C7(3)と示されている)とを用いて合成処理が行われ、第2ライン乃至第5ラインが復号される。
このように、2回目の合成処理においては、符号化側で係数C2、係数C3、(係数C4、係数C5)、係数C6、係数C7、係数C8、係数C9の順に生成された係数データが、係数C9、係数C8、係数C2、係数C3、・・・の順に並び替えられて復号側に供給される。
3回目以降の合成処理においても、同様にして、係数並び替え用メモリ14に格納された係数データが所定の順序に並び替えられて復号側に供給され、4ラインずつ、ラインが復号される。
なお、符号化側において画面の下端のラインを含むフィルタ処理(以下、最後の回と呼ぶ)に対応する復号側の合成処理では、それまでの処理で生成されバッファに格納された係数データを全て出力することになるため、出力ライン数が多くなる。図15の例では、最後の回に8ラインが出力される。
なお、メモリ制御部13による係数データの並び替え処理は、上述したように、係数並び替え用メモリ14に係数データを書き込む際の書き込みアドレスを、所定の順序に設定することでなされる。
図16を用いて、上述までの処理をより具体的に説明する。図16は、5×3フィルタを用いて、分解レベル=2までウェーブレット変換によるフィルタ処理を施した例である。ウェーブレット変換部11において、図16Aに一例が示されるように、入力画像データの第1ラインから第7ラインに対して1回目のフィルタ処理が水平および垂直方向にそれぞれ行われる(図16AのIn−1)。
1回目のフィルタ処理の分解レベル=1の処理において、係数C1、係数C2、および係数C3の3ライン分の係数データが生成され、図16Bに一例が示されるように、分解レベル=1で形成される領域HH、領域HLおよび領域LHのそれぞれに配置される(図16BのWT−1)。
また、分解レベル=1で形成される領域LLは、分解レベル=2による水平および垂直方向のフィルタ処理でさらに4分解される。分解レベル=2で生成される係数C5および係数C4は、分解レベル=1による領域LL内において、領域LLに係数C5による1ラインが配置され、領域HH、領域HLおよび領域LHのそれぞれに、係数C4による1ラインが配置される。
ウェーブレット変換部11による2回目以降のフィルタ処理では、4ライン毎にフィルタ処理が行われ(図16AのIn−2・・・)、分解レベル=1で2ラインずつの係数データが生成され(図16BのWT−2)、分解レベル=2で1ラインずつの係数データが生成される。
図15の2回目の例では、分解レベル=1のフィルタ処理で係数C6および係数C7の2ライン分の係数データが生成され、図16Bに一例が示されるように、分解レベル1で形成される領域HH、領域HLおよび領域LHの、1回目のフィルタ処理で生成された係数データの次から配置される。同様に、分解レベル=1による領域LL内において、分解レベル=2のフィルタ処理で生成された1ライン分の係数C9が領域LLに配置され、1ライン分の係数C8が領域HH、領域HLおよび領域LHにそれぞれ配置される。
図16Bのようにウェーブレット変換されたデータを復号した際には、図16Cに一例が示されるように、符号化側の第1ライン乃至第7ラインによる1回目のフィルタ処理に対して、復号側の1回目の合成処理による第1ラインが出力される(図16CのOut−1)。以降、符号化側の2回目から最後の回の前までのフィルタ処理に対して、復号側で4ラインずつが出力される(図16CのOut−2・・・)。そして、符号化側の最後の回のフィルタ処理に対して、復号側で8ラインが出力される。
図17は、符号化装置1および復号装置101の各要素の一例の並列動作を概略的に示す。この図17は、上述した図16と対応するものである。なお、図17においては、量子化およびエントロピ符号化の処理を合わせてエントロピ符号化処理として示し、エントロピ復号および逆量子化の処理を合わせてエントロピ復号処理として示している。
画像データの入力In-1(図17のA)に対して、ウェーブレット変換部11で1回目のウェーブレット変換WT-1が施される(図17のB)。図15を参照し説明したように、この1回目のウェーブレット変換WT-1は、最初の3ラインが入力された時点で開始され、係数C1が生成される。すなわち、画像データIn-1の入力からウェーブレット変換WT-1が開始されるまで、3ライン分の遅延が生じる。
以降、入力された画像データに対してウェーブレット変換が施され、1回目の処理が終了すると、そのまま2回目のウェーブレット変換WT-2に処理が移行する。
2回目のウェーブレット変換WT-2のための画像データIn-2の入力と、当該2回目のウェーブレット変換WT-2の処理と並列的に、メモリ書き込み制御部23により3個の、係数C1、係数C4、および係数C5の並び替えOrd-1が実行され、係数並び替え用メモリ14に格納される(図17のC)。
なお、ウェーブレット変換WT-1の終了から並び替えOrd-1が開始されるまでの遅延は、例えば、並び替え処理をメモリ書き込み制御部23に指示する制御信号の伝達に伴う遅延や、制御信号に対するメモリ書き込み制御部23の処理開始に要する遅延、プログラム処理に要する遅延といった、装置やシステム構成に基づく遅延であって、符号化処理における本質的な遅延ではない。
係数データは、格納されている順に係数並び替え用メモリ14から読み出され、量子化部15およびVLC部16に供給され、エントロピ符号化EC-1が行われる(図17のD)。このエントロピ符号化EC-1は、3個の、係数C1、係数C4、および係数C5の、全ての並び替えの終了を待たずに開始することができる。例えば、最初に出力される係数C5による1ラインの並び替えが終了した時点で、当該係数C5に対するエントロピ符号化を開始することができる。この場合、並び替えOrd-1の処理開始からエントロピ符号化EC-1の処理開始までの遅延は、1ライン分となる。
量子化部15およびVLC部16によるエントロピ符号化EC-1が終了した符号化データは、何らかの伝送路を介して復号装置101に伝送される(図17のE)。符号化データが伝送される伝送路としては、例えばインターネットなどの通信ネットワークが考えられる。この場合、符号化データは、IP(Internet Protocol)により伝送される。これに限らず、符号化データの伝送路としては、USB(Universal Serial Bus)やIEEE1394(Institute Electrical and Electronics Engineers 1394)といった通信インタフェースや、IEEE802.11規格などに代表される無線通信も考えられる。
符号化装置1に対して、1回目の処理による7ライン分の画像データ入力に続けて、画面上の下端のラインまで画像データが順次、入力される。符号化装置1では、画像データの入力In-n(nは2以上)に伴い、上述したようにして、4ライン毎にウェーブレット変換WT-n、並び替えOrd-nおよびエントロピ符号化EC-nを行う。符号化装置1における最後の回の処理に対する並び替えOrdおよびエントロピ符号化ECは、6ラインに対して行われる。これらの処理は、符号化装置1において、図17のA乃至図17のDに例示されるように、並列的に行われる。
符号化装置1によるエントロピ符号化EC-1により符号化された符号化データが、復号装置101に伝送路を介して伝送され、VLD部111に供給される。VLD部111および逆量子化部112は、供給された、エントロピ符号化EC-1により符号化された符号化データに対して、順次、エントロピ符号の復号iEC-1を行い、係数データを復元する(図17のF)。復元された係数データは、順次、係数バッファ部113に格納される。ウェーブレット逆変換部114は、係数バッファ部113にウェーブレット逆変換が行えるだけ係数データが格納されたら、係数バッファ部113から係数データを読み出して、読み出された係数データを用いてウェーブレット逆変換iWT-1を行う(図17のG)。
図15を参照して説明したように、ウェーブレット逆変換部114によるウェーブレット逆変換iWT-1は、係数C4および係数C5が係数バッファ部113に格納された時点で開始することができる。したがって、VLD部111による復号iEC-1が開始されてからウェーブレット逆変換部114によるウェーブレット逆変換iWT-1が開始されるまでの遅延は、2ライン分となる。
ウェーブレット逆変換部114において、1回目のウェーブレット変換による3ライン分のウェーブレット逆変換iWT-1が終了すると、ウェーブレット逆変換iWT-1で生成された画像データの出力Out-1が行われる(図17のH)。出力Out-1では、図15および図16を用いて説明したように、第1ライン目の画像データが出力される。
復号装置101に対して、符号化装置1における1回目の処理による3ライン分の符号化された係数データの入力に続けて、エントロピ符号化EC-n(nは2以上)により符号化された係数データが順次、入力される。復号装置101では、入力された係数データに対して、上述したようにして、4ライン毎にエントロピ復号iEC-nおよびウェーブレット逆変換iWT-nを行い、ウェーブレット逆変換iWT-nにより復元された画像データの出力Out-nを順次、行う。符号化装置1の最後の回に対応するエントロピ復号iECおよびウェーブレット逆変換iWTは、6ラインに対して行われ、出力Outは、8ラインが出力される。これらの処理は、復号装置101において、図17のF乃至図17のHに例示されるように、並列的に行われる。
上述のようにして、画面上部から下部の方向に順番に、符号化装置1および復号装置101における各処理を並列的に行うことで、画像圧縮処理および画像復号処理をより低遅延で行うことが可能となる。
図17を参照して、5×3フィルタを用いて分解レベル=2までウェーブレット変換を行った場合の、画像入力から画像出力までの遅延時間を計算してみる。第1ライン目の画像データが符号化装置1に入力されてから、この第1ライン目の画像データが復号装置101から出力されるまでの遅延時間は、下記の各要素の総和となる。なお、ここでは、伝送路における遅延や、装置各部の実際の処理タイミングに伴う遅延などの、システムの構成により異なる遅延は、除外している。
(1)最初のライン入力から7ライン分のウェーブレット変換WT-1が終了するまでの遅延D_WT
(2)3ライン分の係数並び替えOrd-1に伴う時間D_Ord
(3)3ライン分のエントロピ符号化EC-1に伴う時間D_EC
(4)3ライン分のエントロピ復号iEC-1に伴う時間D_iEC
(5)3ライン分のウェーブレット逆変換iWT-1に伴う時間D_iWT
図17を参照して、上述の各要素による遅延の計算を試みる。(1)の遅延D_WTは、10ライン分の時間である。(2)の時間D_Ord、(3)の時間D_EC、(4)の時間D_iEC、および(5)の時間D_iWTは、それぞれ3ライン分の時間である。また、符号化装置1において、並び替えOrd-1が開始されてから1ライン後には、エントロピ符号化EC-1を開始することができる。同様に、復号装置101において、エントロピ復号iEC-1が開始されてから2ライン後には、ウェーブレット逆変換iWT-1を開始することができる。また、エントロピ復号iEC-1は、エントロピ符号化EC-1で1ライン分の符号化が終了した時点で処理を開始することができる。
したがって、この図17の例では、符号化装置1に第1ライン目の画像データが入力されてから、復号装置101から当該第1ライン目の画像データが出力されるまでの遅延時間は、10+1+1+2+3=17ライン分となる。
遅延時間について、より具体的な例を挙げて考察する。入力される画像データがHDTV(High Definition Television)のインタレースビデオ信号の場合、例えば1920画素×1080ラインの解像度で1フレームが構成され、1フィールドは、1920画素×540ラインとなる。したがって、フレーム周波数を30Hzとした場合、1フィールドの540ラインが16.67msec(=1sec/60フィールド)の時間に、符号化装置1に入力されることになる。
したがって、7ライン分の画像データの入力に伴う遅延時間は、0.216msec(=16.67msec×7/540ライン)であり、例えば1フィールドの更新時間に対して非常に短い時間となる。また、上述した(1)の遅延D_WT、(2)の時間D_Ord、(3)の時間D_EC、(4)の時間D_iEC、および(5)の時間D_iWTの総和についても、処理対象のライン数が少ないため、遅延時間が非常に短縮される。各処理を行う要素をハードウェア化すれば、処理時間をさらに短縮することも可能である。
上述した一連の処理は、ソフトウェアにより実行させることもできるが、ハードウェアにより実行させることもできる。上述したソフトウェアプログラムは、実行可能な装置であればどのような装置において実行させるようにしてもよく、例えば、図18に示されるようなパーソナルコンピュータにおいて実行させるようにしてもよい。
図18において、パーソナルコンピュータ200のCPU201は、ROM(Read Only Memory)202に記憶されているプログラム、または記憶部213からRAM(Random Access Memory)203にロードされたプログラムに従って各種の処理を実行する。RAM203にはまた、CPU201が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU201、ROM202、およびRAM203は、バス204を介して相互に接続されている。このバス204にはまた、入出力インタフェース210も接続されている。
入出力インタフェース210には、キーボード、マウスなどよりなる入力部211、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部212、ハードディスクなどより構成される記憶部213、モデムなどより構成される通信部214が接続されている。通信部214は、例えばインターネットに代表されるネットワークを介しての通信処理を行う。
入出力インタフェース210にはまた、必要に応じてドライブ215が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア521が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部213にインストールされる。
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図18に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア521により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM202や、記憶部213に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
なお、以上において、1つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて1つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。
1 符号化装置, 11 ウェーブレット変換部, 12 途中計算用メモリ, 13 メモリ制御部, 14 係数並び替え用メモリ, 15 量子化部, 16 VLC部, 21 パラメータ取得部, 22 メモリ領域設定部, 23 メモリ書き込み制御部, 24 メモリ読み出し制御部