以下、この発明の実施の第1の形態を、図面を参照しながら説明する。図1は、この発明の実施の第1の形態に適用可能な画像符号化装置の一例の構成を示す。画像符号化装置1は、ウェーブレット変換部10、途中計算用バッファ部11、係数並び替え用バッファ部12、係数並び替え部13、レート制御部14、およびエントロピ符号化部15からなる。
入力された画像データは、途中計算用バッファ部11に一時的に溜め込まれる。ウェーブレット変換部10は、途中計算用バッファ部11に溜め込まれた画像データに対してウェーブレット変換を施す。すなわち、ウェーブレット変換部10は、途中計算用バッファ部11から画像データを読み出して分析フィルタによりフィルタ処理を施して低域成分および高域成分の係数のデータを生成し、生成された係数データを途中計算用バッファ部11に格納する。ウェーブレット変換部10は、水平分析フィルタと垂直分析フィルタとを有し、画像データ群に対して、画面水平方向と画面垂直方向の両方について分析フィルタ処理を行う。ウェーブレット変換部10は、途中計算用バッファ部11に格納された低域成分の係数データを再度読み出し、読み出した係数データに対して分析フィルタによるフィルタ処理を施して、高域成分および低域成分の係数のデータをさらに生成する。生成された係数データは、途中計算用バッファ部11に格納される。
ウェーブレット変換部10は、この処理を繰り返して分解レベルが所定レベルに達したら、途中計算用バッファ部11から係数データを読み出し、読み出された係数データを係数並び替え用バッファ部12に書き込む。
係数並び替え部13は、係数並び替え用バッファ部12に書き込まれた係数データを所定の順序で読み出し、エントロピ符号化部15に供給する。エントロピ符号化部15は、供給された係数データを、例えばハフマン符号化や算術符号化といった所定のエントロピ符号化方式で符号化する。
エントロピ符号化部15は、レート制御部14と連動的に動作し、出力される圧縮符号化データのビットレートが略一定値となるように制御される。すなわち、レート制御部14は、エントロピ符号化部15からの符号化データ情報に基づき、エントロピ符号化部15により圧縮符号化されたデータのビットレートが目標値に達した時点あるいは目標値に達する直前でエントロピ符号化部15による符号化処理を終了するように制御する制御信号を、エントロピ符号化部15に対して供給する。エントロピ符号化部15は、レート制御部14から供給される制御信号に応じて符号化処理が終了した時点で、符号化データを出力する。
ウェーブレット変換部10で行われる処理について、より詳細に説明する。先ず、ウェーブレット変換について、概略的に説明する。画像データに対するウェーブレット変換では、図2に概略的に示されるように、画像データを空間周波数の高い帯域と低い帯域とに分割する処理を、分割の結果得られる空間周波数の低い帯域のデータに対して再帰的に繰り返す。こうして、空間周波数の低い帯域のデータをより小さな領域に追い込んでいくことで、効率的な圧縮符号化を可能とする。
なお、図2は、画像データの最低域成分領域に対する低域成分の領域Lおよび高域成分の領域Hへの分割処理を3回、繰り返し、分割レベル=3とした場合の例である。図2において、"L"および"H"は、それぞれ低域成分および高域成分を表し、"L"および"H"の順序は、前側が横方向に分割した結果の帯域を示し、後側が縦方向に分割した結果の帯域を示す。また、"L"および"H"の前の数字は、その領域の分割レベルを示す。
また、図2の例から分かるように、画面の右下の領域から左上の領域にかけて段階的に処理がなされ、低域成分が追い込まれていく。すなわち、図2の例では、画面の右下の領域が最も低域成分の少ない(高域成分が最も多く含まれる)領域3HHとされる、画面が4分割された左上の領域は、さらに4分割され、この4分割された領域のうち左上の領域がさらに4分割される。最も左上隅の領域は、最も低域成分を多く含む領域0LLとされる。
低域成分に対して繰り返し変換および分割を行うのは、画像のエネルギが低域成分に集中しているためである。このことは、図3のAに一例が示される分割レベル=1の状態から、図3のBに一例が示される分割レベル=3の状態のように分割レベルを進めていくに従って、図3のBに示されるようにしてサブバンドが形成されていくことからも、理解される。例えば、図2におけるウェーブレット変換の分割レベルは3であり、この結果、10個のサブバンドが形成されている。
ウェーブレット変換部10は、通常、低域フィルタと高域フィルタとから構成されるフィルタバンクを用いて、上述のような処理を行う。なお、ディジタルフィルタは、通常、複数タップ長のインパルス応答すなわちフィルタ係数を持っているため、フィルタ処理を行えるだけの入力画像データまたは係数データを予めバッファリングしておく必要がある。また、ウェーブレット変換を多段にわたって行う場合も同様に、前段で生成したウェーブレット変換係数を、フィルタ処理が行える数だけバッファリングしておく必要がある。
次に、この発明の実施の第1の形態に適用可能なウェーブレット変換の具体的な例として、5×3フィルタを用いた方法について説明する。この5×3フィルタを用いた方法は、従来技術で既に説明したJPEG2000規格でも採用されており、少ないフィルタタップ数でウェーブレット変換を行うことができる点で、優れた方法である。
5×3フィルタのインパルス応答(Z変換表現)は、次の式(1)および式(2)に示すように、低域フィルタH0(z)と、高域フィルタH1(z)とから構成される。式(1)および式(2)から、低域フィルタ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)技術を用いることで、フィルタ処理の計算を減らすことができる。図4を用いて、5×3フィルタに対してリフティング技術を適用した場合の、ウェーブレット変換を行う分析フィルタ側の処理について、概略的に説明する。
図4において、最上段部、中段部および最下段部は、それぞれ入力画像の画素列、高域成分出力および低域成分出力を示す。最上段は、入力画像の画素列に限らず、先のフィルタ処理で得られた係数でもよい。ここでは、最上段部が入力画像で画素列であるものとし、四角印(■)が偶数番目(最初を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)
分析フィルタ側では、このようにして、フィルタリング処理により入力画像の画素データを低域成分と高域成分とに分解する。
図5を用いて、ウェーブレット変換により生成された係数を復元するウェーブレット逆変換を行う合成フィルタ側の処理について、概略的に説明する。この図5は、上述の図4と対応し、5×3フィルタを用い、リフティング技術を適用した例を示す。図5において、最上段部は、ウェーブレット変換により生成された入力係数を示し、丸印(●)が高域成分の係数、四角印(■)が低域成分の係数をそれぞれ示す。
先ず第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)
合成フィルタ側では、このようにして、フィルタリング処理により低域成分および高域成分の係数を合成し、ウェーブレット逆変換を行う。
次に、この発明の実施の第1の形態によるウェーブレット変換方法について説明する。図6は、図4を用いて説明した5×3フィルタのリフティングによるフィルタ処理を、分解レベル=2まで実行した例を示す。なお、図6において、図の左側に分析フィルタとして示される部分は、画像符号化装置1側におけるウェーブレット変換部10のフィルタである。また、図の右側に合成フィルタとして示される部分は、後述する画像復号装置側におけるウェーブレット逆変換部のフィルタである。
なお、以下の説明では、例えば表示デバイスなどにおいて画面の左上隅の画素を先頭として、画素が画面の左端から右端に向けて走査されて1ラインが構成され、ライン毎の走査が画面の上端から下端に向けて行われて1画面が構成されるものとする。
図6において、左端列は、原画像データのライン上の対応する位置にある画素データが縦方向に並べられて示されている。すなわち、ウェーブレット変換部10におけるフィルタ処理は、垂直フィルタを用いて画面上を画素が縦に走査されて行われる。左端から1列目乃至3列目が分割レベル=1のフィルタ処理を示し、4列目乃至6列目が分割レベル=2のフィルタ処理を示す。左端から2列目は、左端の原画像データの画素に基づく高域成分出力、左端から3列目は、原画像データおよび高域成分出力に基づく低域成分出力を示す。分割レベル=2のフィルタ処理は、左端から4列目乃至6列目に示されるように、分割レベル=1のフィルタ処理の出力に対して処理がなされる。
分解レベル=1のフィルタ処理において、第1段階のフィルタ処理として、原画像データの画素に基づき高域成分の係数データが算出され、第2段階のフィルタ処理として、第1段階のフィルタ処理で算出された高域成分の係数データと、原画像データの画素とに基づき低域成分の係数データが算出される。分解レベル=1の一例のフィルタ処理を、図6における左側(分析フィルタ側)の第1列目乃至第3列目に示す。算出された高域成分の係数データは、図1で説明した係数並び替え用バッファ部12に格納される。また、算出された低域成分の係数データのは、途中計算用バッファ部11に格納される。
図6においては、係数並び替え用バッファ部12は、一点鎖線で囲まれた部分として示し、途中計算用バッファ部11は、点線で囲まれた部分として示す。
途中計算用バッファ部11に保持された分解レベル=1のフィルタ処理の結果に基づき、分解レベル=2のフィルタ処理が行われる。分解レベル=2のフィルタ処理では、分解レベル=1のフィルタ処理において低域成分の係数として算出された係数データを、低域成分および高域成分を含んだ係数データと見做して、分解レベル=1と同様のフィルタ処理を行う。分解レベル=2のフィルタ処理により算出された、高域成分の係数データおよび低域成分の係数データは、図1で説明した係数並び替え用バッファ部12に格納される。
ウェーブレット変換部10では、上述したようなフィルタ処理を、画面の水平方向および垂直方向にそれぞれ行う。例えば、先ず、分解レベル=1のフィルタ処理を水平方向に行い、生成された高域成分および低域成分の係数データを途中計算用バッファ部11に格納する。次に、途中計算用バッファ部11に格納された係数データに対して、垂直方向に分解レベル=1のフィルタ処理を行う。この分解レベル=1の水平および垂直方向の処理により、高域成分をさらに高域成分および低域成分に分解した係数データのそれぞれによる領域HHおよび領域HLと、低域成分をさらに高域成分および低域成分に分解した係数データのそれぞれによる領域LHおよび領域LLとの4領域が形成される。
そして、分解レベル=2では、水平方向および垂直方向のそれぞれについて、分解レベル=1で生成された低域成分の係数データに対してフィルタ処理が行われる。すなわち、分解レベル=2では、分解レベル=1で分割されて形成された領域LLがさらに4分割され、領域LL内にさらに領域HH、領域HL、領域LHおよび領域LLが形成される。
この実施の第1の形態では、ウェーブレット変換によるフィルタ処理を、画面の縦方向について、数ライン毎の処理に分割して、複数回に分けて段階的に行うようにしている。図6の例では、画面上の第1ラインからの処理になる1回目の処理は、7ラインについてフィルタ処理を行い、8ライン目からの処理になる2回目以降の処理は、4ライン毎にフィルタ処理を行っている。このライン数は、高域成分と低域成分とに2分解した後に、1ライン分の最低域成分が生成されるために必要なライン数に基づく。
なお、以下において、この最低域成分の1ライン分(最低域成分のサブバンドの1ライン分の係数データ)を生成するために必要な、他のサブバンドも含めたラインの集まりを、ラインブロック(またはプレシンクト)と称する。ここでラインとは、ウェーブレット変換前の画像データに対応するピクチャ若しくはフィールド内、または各サブバンド内において形成される1行分の画素データ若しくは係数データのことを示す。すなわち、ラインブロック(プレシンクト)とは、ウェーブレット変換前の元の画像データにおける、ウェーブレット変換後の最低域成分のサブバンド1ライン分の係数データを生成するために必要なライン数分の画素データ群、または、その画素データ群をウェーブレット変換して得られる各サブバンドの係数データ群のことを示す。
図6によれば、分解レベル=2のフィルタ処理結果で得られる係数C5は、係数C4および途中計算用バッファ部11に格納された係数Caに基づき算出され、係数C4は、途中計算用バッファ部11に格納された係数Ca、係数Cbおよび係数Ccに基づき算出される。さらに、係数Ccは、係数並び替え用バッファ部12に格納される係数C2および係数C3、並びに、第5ラインの画素データに基づき算出される。また、係数C3は、第5ライン乃至第7ラインの画素データに基づき算出される。このように、分割レベル=2における低域成分の係数C5を得るためには、第1ライン乃至第7ラインの画素データが必要とされる。
これに対して、2回目以降のフィルタ処理においては、前回までのフィルタ処理で既に算出され係数並び替え用バッファ部12に格納されている係数データを用いることができるので、必要なライン数が少なくて済む。
すなわち、図6によれば、分解レベル=2のフィルタ処理結果で得られる低域成分の係数のうち、係数C5の次の係数である係数C9は、係数C4および係数C8、並びに、途中計算用バッファ部11に格納された係数Ccに基づき算出される。係数C4は、上述した1回目のフィルタ処理により既に算出され、係数並び替え用バッファ部12に格納されている。同様に、係数Ccは、上述の1回目のフィルタ処理により既に算出され、途中計算用バッファ部11に格納されている。したがって、この2回目のフィルタ処理においては、係数C8を算出するためのフィルタ処理のみが、新たになされることになる。この新たなフィルタ処理は、第8ライン乃至第11ラインがさらに用いられてなされる。
このように、2回目以降のフィルタ処理は、前回までのフィルタ処理により算出され途中計算用バッファ部11および係数並び替え用バッファ部12に格納されたデータを用いることができるので、それぞれ4ライン毎の処理で済むことになる。
なお、画面上のライン数が符号化のライン数と合致しない場合は、原画像データのラインを所定に複製してライン数を符号化のライン数と合わせて、フィルタ処理を行う。
詳細は後述するが、この発明では、このように、最低域成分1ライン分の係数データが得られるだけのフィルタ処理を段階的に、画面全体のラインに対して複数回に分けて(ラインブロック単位で)行うことで、符号化データを伝送した際に低遅延で復号画像を得ることを可能としている。
ウェーブレット変換を行うためには、ウェーブレット変換そのものを実行するために用いられる第1のバッファと、所定の分割レベルまで処理を実行する間に生成される係数を格納するための第2のバッファとが必要とされる。第1のバッファは、途中計算用バッファ部11に対応し、図6においては点線で囲まれて示されている。また、第2のバッファは、係数並び替え用バッファ部12に対応し、図6においては一点鎖線に囲まれて示されている。第2のバッファに格納された係数は、復号の際に用いられるため、後段のエントロピ符号化処理の対象とされる。
係数並び替え部13の処理について説明する。上述したように、ウェーブレット変換部10で算出された係数データは、係数並び替え用バッファ部12に格納され、係数並び替え部13により順序を並び替えられて読み出され、エントロピ符号化部15に送出される。
既に説明したように、ウェーブレット変換においては、高域成分側から低域成分側へと係数が生成されていく。図6の例では、1回目において、原画像の画素データにより、分解レベル=1のフィルタ処理で、高域成分の係数C1、係数C2および係数C3が順次生成される。そして、分解レベル=1のフィルタ処理で得られた低域成分の係数データに対して分解レベル=2のフィルタ処理を行い、低域成分の係数C4および係数C5が順次生成される。すなわち、第1回目では、係数C1、係数C2、係数C3、係数C4、係数C5の順に、係数データが生成される。この係数データの生成順は、ウェーブレット変換の原理上、必ずこの順序(高域から低域の順)になる。
これに対して、復号側では、低遅延で即座に復号を行うためには低域成分から画像の生成および出力を行う必要がある。そのため、符号化側で生成された係数データを最低域成分側から高域成分側に向けて並び替えて復号側に供給することが望ましい。
図6の例を用いて、より具体的に説明する。図6の右側は、逆ウェーブレット変換を行う合成フィルタ側を示す。復号側の、出力画像データの第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の順に生成され係数並び替え用バッファ部12に格納された係数データが、係数C5、係数C4、係数C1、・・・の順に並び替えられて復号側に供給される。
なお、図6の右側に示す合成フィルタ側では、符号化側から供給される係数について、括弧内に符号化側での係数の番号を記し、括弧外に合成フィルタのライン順を記す。例えば係数C1(5)は、図6の左側の分析フィルタ側では係数C5であって、合成フィルタ側では第1ライン目であることを示す。
符号化側の2回目以降のフィルタ処理で生成された係数データによる復号側の合成処理は、前回の合成処理の際に合成あるいは符号化側から供給された係数データを用いて行うことができる。図6の例では、符号化側の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回目以降の合成処理においても、同様にして、並び替えバッファ部12に格納された係数データが所定に並び替えられて復号部に供給され、4ラインずつ、ラインが復号される。
なお、符号化側において画面の下端のラインを含むフィルタ処理(以下、最後の回と呼ぶ)に対応する復号側の合成処理では、それまでの処理で生成されバッファに格納された係数データを全て出力することになるため、出力ライン数が多くなる。図6の例では、最後の回に8ラインが出力される。
なお、係数並び替え部13による係数データの並び替え処理は、例えば、係数並び替え用バッファ部12に格納された係数データを読み出す際の読み出しアドレスを、所定の順序に設定することでなされる。
図7を用いて、上述までの処理をより具体的に説明する。図7は、5×3フィルタを用いて、分解レベル=2までウェーブレット変換によるフィルタ処理を施した例である。ウェーブレット変換部10において、図7のAに一例が示されるように、入力画像データの第1ラインから第7ラインに対して1回目のフィルタ処理が水平および垂直方向にそれぞれ行われる(図7のAのIn-1)。
1回目のフィルタ処理の分解レベル=1の処理において、係数C1、係数C2、および係数C3の3ライン分の係数データが生成され、図7のBに一例が示されるように、分解レベル=1で形成される領域HH、領域HLおよび領域LHのそれぞれに配置される(図7のBのWT-1)。
また、分解レベル=1で形成される領域LLは、分解レベル=2による水平および垂直方向のフィルタ処理でさらに4分割される。分解レベル=2で生成される係数C5および係数C4は、分解レベル=1による領域LL内において、領域LLに係数C5による1ラインが配置され、領域HH、領域HLおよび領域LHのそれぞれに、係数C4による1ラインが配置される。
ウェーブレット変換部10による2回目以降のフィルタ処理では、4ライン毎にフィルタ処理が行われ(図7のAのIn-2・・・)、分解レベル=1で2ラインずつの係数データが生成され(図7のBのWT-2)、分解レベル=2で1ラインずつの係数データが生成される。
図6の2回目の例では、分解レベル=1のフィルタ処理で係数C6および係数C7の2ライン分の係数データが生成され、図7のBに一例が示されるように、分解レベル1で形成される領域HH、領域HLおよび領域LHの、1回目のフィルタ処理で生成された係数データの次から配置される。同様に、分解レベル=1による領域LL内において、分解レベル=2のフィルタ処理で生成された1ライン分の係数C9が領域LLに配置され、1ライン分の係数C8が領域HH、領域HLおよび領域LHにそれぞれ配置される。
図7のBのようにウェーブレット変換されたデータを復号した際には、図7のCに一例が示されるように、符号化側の第1ライン乃至第7ラインによる1回目のフィルタ処理に対して、復号側の1回目の合成処理による第1ラインが出力される(図7のCのOut-1)。以降、符号化側の2回目から最後の回の前までのフィルタ処理に対して、復号側で4ラインずつが出力される(図7のCのOut-2・・・)。そして、符号化側の最後の回のフィルタ処理に対して、復号側で8ラインが出力される。
ウェーブレット変換部10で高域成分側から低域成分側へと生成された係数データは、係数並び替え用バッファ部12に順次格納される。係数並び替え部13は、上述した係数データの並び替えが可能となるまで係数並び替え用バッファ部12に係数データが蓄積されると、係数並び替え用バッファ部12から合成処理に必要な順に並び替えて係数データを読み出す。読み出された係数データは、エントロピ符号化部15に順次、供給される。
エントロピ符号化部15は、供給された係数データに対して、レート制御部14から供給される制御信号に基づき出力データのビットレートが目標ビットレートになるように符号化動作を制御して、エントロピ符号化を施す。エントロピ符号化された符号化データは、復号側に供給される。符号化方式としては、既知の技術であるハフマン符号化や算術符号化などが考えられる。勿論、これらに限らず、可逆的な符号化処理が可能であれば、他の符号化方式を用いてもよい。
なお、エントロピ符号化部15が、係数並び替え部13から読み出された係数データに対して、最初に量子化を行い、得られた量子化係数に対してハフマン符号化や算術符号化等の情報源符号化処理を施すようにすれば、さらに圧縮効果の向上を期待することができる。この量子化の方法としてはどのようなものを用いても良く、例えば、一般的な手段、つまり、以下の式(7)に示されるような、係数データWを量子化ステップサイズΔで除算する手法を用いれば良い。
量子化係数=W/Δ ・・・(7)
図6および図7を用いて説明したように、この発明の実施の第1の形態では、ウェーブレット変換部10は、画像データの複数ライン毎(ラインブロック毎)にウェーブレット変換処理を行う。エントロピ符号化部15では符号化された符号化データは、このラインブロック毎に出力される。すなわち、上述の、5×3フィルタを用い、分解レベル=2まで処理を行った場合には、1画面のデータの出力において、最初が1ライン、2回目以降最後の回の前までが4ラインずつ、最後の回が8ラインの出力が得られる。
なお、係数並び替え部13で並び替えられた後の係数データをエントロピ符号化する場合、例えば図6で示した1回目のフィルタ処理では、最初の係数C5のラインをエントロピ符号化する際には、未だ過去のラインすなわち既に係数データが生成されたラインが存在していない。したがって、この場合には、この1ラインだけをエントロピ符号化する。これに対して、係数C1のラインを符号化する際には、係数C5および係数C4のラインが過去のラインとなっている。これら近接する複数ラインは、似たデータで構成されていることが考えられるので、これら複数ラインを纏めてエントロピ符号化することは、有効である。
また、上述では、ウェーブレット変換部10において、5×3フィルタを用いてウェーブレット変換によるフィルタ処理を行う例について説明したが、これはこの例に限られない。例えば、ウェーブレット変換部10では、例えば9×7フィルタといった、さらにタップ数の長いフィルタを用いることができる。この場合、フィルタのタップ数が長ければ、フィルタに蓄積されるライン数も多くなるので、画像データの入力から符号化データの出力までの遅延時間が長くなることになる。
また、上述では、説明のためウェーブレット変換の分解レベルを分解レベル=2としたが、これはこの例に限られず、さらに分解レベルを上げることができる。分解レベルを上げるほど、より高圧縮率を実現することができる。例えば、一般的には、ウェーブレット変換においては、分解レベル=4までフィルタ処理が繰り返される。なお、分解レベルが上がれば、遅延時間も増大することになる。
したがって、実際のシステムにこの発明の実施の第1の形態を適用する際には、当該システムに要求される遅延時間や復号画像の画質などに応じて、フィルタのタップ数や、分解レベルを決めることが好ましい。このフィルタのタップ数や、分解レベルは、固定値とせずに、適応的に選択するようにもできる。
次に、以上のような画像符号化装置1による符号化処理全体の具体的な流れの例を図8のフローチャートを参照して説明する。
符号化処理が開始されると、ウェーブレット変換部10は、ステップS1において、処理対象ラインブロックの番号Aを初期設定にする。通常の場合、番号Aは「1」に設定される。設定が終了すると、ウェーブレット変換部10は、ステップS2において、最低域サブバンドにおいて上からA番目の1ラインを生成するのに必要なライン数(すなわち、1ラインブロック)の画像データを取得し、その画像データに対して、ステップS3において画面垂直方向に並ぶ画像データに対して分析フィルタリングを行う垂直分析フィルタリング処理を行い、ステップS4において画面水平方向に並ぶ画像データに対して分析フィルタリング処理を行う水平分析フィルタリング処理を行う。
ステップS5においてウェーブレット変換部10は、分析フィルタリング処理を最終レベルまで行ったか否かを判定し、分解レベルが最終レベルに達していないと判定した場合、処理をステップS3に戻し、現在の分解レベルに対して、ステップS3およびステップS4の分析フィルタリング処理を繰り返す。
ステップS5において、分析フィルタリング処理が最終レベルまで行われたと判定した場合、ウェーブレット変換部10は、処理をステップS6に進める。
ステップS6において、係数並び替え部13は、ラインブロックA(ピクチャ(インタレース方式の場合フィールド)の上からA番目のラインブロック)の係数を低域から高域の順番に並び替える。エントロピ符号化部15は、ステップS7において、その係数に対してライン毎にエントロピ符号化する。エントロピ符号化が終了すると、エントロピ符号化部15は、ステップS8においてラインブロックAの符号化データを外部に送出する。
ウェーブレット変換部10は、ステップS9において番号Aの値を「1」インクリメントして次のラインブロックを処理対象とし、ステップS10において、処理対象のピクチャ(インタレース方式の場合フィールド)について、未処理の画像入力ラインが存在するか否かを判定し、存在すると判定した場合、処理をステップS2に戻し、新たな処理対象のラインブロックに対してそれ以降の処理を繰り返す。
以上のようにステップS2乃至ステップS10の処理が繰り返し実行され、各ラインブロックが符号化される。そして、ステップS10において、未処理の画像入力ラインが存在しないと判定した場合、ウェーブレット変換部10は、そのピクチャに対する符号化処理を終了する。次のピクチャに対しては新たに符号化処理が開始される。
従来のウェーブレット変換の方法の場合、まず、水平分析フィルタリング処理をピクチャ(インタレース方式の場合フィールド)全体に対して行い、次に垂直分析フィルタリング処理をそのピクチャ全体に対して行う。そして得られた低域成分全体に対して同様の水平分析フィルタリング処理と垂直分析フィルタリング処理を順に行う。以上のように、分解レベルが最終レベルに達するまで、分析フィルタリング処理が再帰的に繰り返される。従って、各分析フィルタリング処理の結果をバッファに保持させる必要があるが、その際、バッファは、ピクチャ(インタレース方式の場合フィールド)全体、若しくは、その時点の分解レベルの低域成分全体のフィルタリング結果を保持する必要があり、多大なメモリ容量を必要とすることになる(保持するデータ量が多い)。
また、この場合、ピクチャ(インタレース方式の場合フィールド)内において全てのウェーブレット変換が終了しないと、後段の係数並び替えやエントロピ符号化を行うことができず、遅延時間が増大する。
これに対して、画像符号化装置1のウェーブレット変換部10の場合、上述したようにラインブロック単位で垂直分析フィルタリング処理および水平分析フィルタリング処理を最終レベルまで連続して行うので、従来の方法と比較して、一度に(同時期に)保持する(バッファリングする)必要のあるデータの量が少なく、用意すべきバッファのメモリ量を大幅に低減させることができる。また、最終レベルまで分析フィルタリング処理が行われることにより、後段の係数並び替えやエントロピ符号化等の処理も行うことができる(つまり、係数並び替えやエントロピ符号化をラインブロック単位で行うことができる)。従って、従来の方法と比較して遅延時間を大幅に低減させることができる。
図9は、図1の画像符号化装置1に対応する画像復号装置の一例の構成を示す。図1の画像符号化装置1のエントロピ符号化部15から出力された符号化データ(図1の符号化データ出力)は、図9の画像復号装置20のエントロピ復号部21に供給され(図9の符号化データ入力)、エントロピ符号を復号され、係数データとされる。係数データは、係数バッファ部22に格納される。ウェーブレット逆変換部23は、係数バッファ部22に格納された係数データを用いて、例えば図5および図6を用いて説明したようにして合成フィルタによる合成フィルタ処理を行い、合成フィルタ処理の結果を再び係数バッファ部22に格納する。ウェーブレット逆変換部23は、この処理を分解レベルに応じて繰り返して、復号された画像データ(出力画像データ)を得る。
次に、以上のような画像復号装置20による復号処理全体の具体的な流れの例を図10のフローチャートを参照して説明する。
復号処理が開始されると、エントロピ復号部21は、ステップS31において、符号化データを取得し、ステップS32において、ライン毎に符号化データをエントロピ復号する。ステップS33において、係数バッファ部22は、その復号されて得られた係数を保持する。ステップS34においてウェーブレット逆変換部23は、係数バッファ部22に1ラインブロック分の係数が蓄積されたか否かを判定し、蓄積されていないと判定した場合、処理をステップS31に戻し、それ以降の処理を実行させ、係数バッファ部22に1ラインブロック分の係数が蓄積されるまで待機する。
ステップS34において係数バッファ部22に1ラインブロック分の係数が蓄積されたと判定した場合、ウェーブレット逆変換部23は、処理をステップS35に進め、係数バッファ部22に保持されている係数を1ラインブロック分読み出す。
そしてその読み出した係数に対して、ウェーブレット逆変換部23は、ステップS36において、画面垂直方向に並ぶ係数に対して合成フィルタリング処理を行う垂直合成フィルタリング処理を行い、ステップS37において、画面水平方向に並ぶ係数に対して合成フィルタリング処理を行う水平合成フィルタリング処理を行い、ステップS38において、合成フィルタリング処理がレベル1(分解レベルの値が「1」のレベル)まで終了したか否か、すなわち、ウェーブレット変換前の状態まで逆変換したか否かを判定し、レベル1まで達していないと判定した場合、処理をステップS36に戻し、ステップS36およびステップS37のフィルタリング処理を繰り返す。
ステップS38において、レベル1まで逆変換処理が終了したと判定した場合、ウェーブレット逆変換部23は、処理をステップS39に進め、逆変換処理により得られた画像データを外部に出力する。
ステップS40において、エントロピ復号部21は、復号処理を終了するか否かを判定し、符号化データの入力が継続しており、復号処理を終了しないと判定した場合、処理をステップS31に戻し、それ以降の処理を繰り返す。また、ステップS40において、符号化データの入力が終了するなどして復号処理を終了すると判定した場合、エントロピ復号部21は、復号処理を終了する。
従来のウェーブレット逆変換の方法の場合、処理対象の分解レベルの全係数に対して、まず、画面水平方向に水平合成フィルタリング処理を行い、次に画面垂直方向に垂直合成フィルタリング処理を行っていた。つまり、各合成フィルタリング処理の度に、その合成フィルタリング処理の結果をバッファに保持させる必要があるが、その際、バッファは、その時点の分解レベルの合成フィルタリング結果と、次の分解レベルの全係数を保持する必要があり、多大なメモリ容量を必要とすることになる(保持するデータ量が多い)。
また、この場合、ピクチャ(インタレース方式の場合フィールド)内において全てのウェーブレット逆変換が終了するまで画像データ出力が行われないので、入力から出力までの遅延時間が増大する。
これに対して、画像復号装置20のウェーブレット逆変換部23の場合、上述したようにラインブロック単位で垂直合成フィルタリング処理および水平合成フィルタリング処理をレベル1まで連続して行うので、従来の方法と比較して、一度に(同時期に)バッファリングする必要のあるデータの量が少なく、用意すべきバッファのメモリ量を大幅に低減させることができる。また、レベル1まで合成フィルタリング処理(ウェーブレット逆変換処理)が行われることにより、ピクチャ内の全画像データが得られる前に(ラインブロック単位で)画像データを順次出力させることができ、従来の方法と比較して遅延時間を大幅に低減させることができる。
なお、図1に示される画像符号化装置1や、図9に示される画像復号装置20の各要素の動作(図8の符号化処理や図10の復号処理)は、例えば図示されないCPU(Central Processing Unit)により、所定のプログラムに従い制御される。プログラムは、例えば図示されないROM(Read Only Memory)に予め記憶される。これに限らず、画像符号化装置や画像復号装置を構成する各要素間でタイミング信号や制御信号を互いにやりとりして、全体として動作させることも可能である。また、画像符号化装置や画像復号装置は、コンピュータ装置上で動作するソフトウェアで実現することも可能である。
次に、この発明の実施の第2の形態について説明する。この実施の第2の形態では、上述の実施の第1の形態で説明したシステムにおいて、画像符号化装置1および画像復号装置20の各要素を並列的に動作させ、画像の圧縮符号化および復号処理をより低遅延で行うようにしたものである。
なお、実施の第2の形態では、上述の実施の第1の形態で図1乃至図10を用いて説明した画像符号化装置1および画像復号装置20、ならびに、符号化方法および復号方法をそのまま適用可能なので、これらの説明は、繁雑さを避けるために省略する。
図11は、この発明の実施の第2の形態による、画像符号化装置1および画像復号装置20の各要素の一例の並列動作を概略的に示す。この図11は、上述した図7と対応するものである。画像データの入力In-1(図11のA)に対して、エントロピ符号化部15で1回目のウェーブレット変換WT-1が施される(図11のB)。図6を参照し説明したように、この1回目のウェーブレット変換WT-1は、最初の3ラインが入力された時点で開始され、係数C1が生成される。すなわち、画像データIn-1の入力からウェーブレット変換WT-1が開始されるまで、3ライン分の遅延が生じる。
生成された係数データは、係数並び替え用バッファ部12に格納される。以降、入力された画像データに対してウェーブレット変換が施され、1回目の処理が終了すると、そのまま2回目のウェーブレット変換WT-2に処理が移行する。
2回目のウェーブレット変換WT-2のための画像データIn-2の入力と、当該2回目のウェーブレット変換WT-2の処理と並列的に、係数並び替え部13により3個の、係数C1、係数C4、および係数C5の並び替えOrd-1が実行される(図11のC)。
なお、ウェーブレット変換WT-1の終了から並び替えOrd-1が開始されるまでの遅延は、例えば、並び替え処理を係数並び替え部13に指示する制御信号の伝達に伴う遅延や、制御信号に対する係数並び替え部13の処理開始に要する遅延、プログラム処理に要する遅延といった、装置やシステム構成に基づく遅延であって、符号化処理における本質的な遅延ではない。
係数データは、並び替えが終了した順に係数並び替え用バッファ部12から読み出され、エントロピ符号化部15に供給され、エントロピ符号化EC-1が行われる(図11のD)。このエントロピ符号化EC-1は、3個の、係数C1、係数C4、および係数C5の、全ての並び替えの終了を待たずに開始することができる。例えば、最初に出力される係数C5による1ラインの並び替えが終了した時点で、当該係数C5に対するエントロピ符号化を開始することができる。この場合、並び替えOrd-1の処理開始からエントロピ符号化EC-1の処理開始までの遅延は、1ライン分となる。
エントロピ符号化部15によるエントロピ符号化EC-1が終了した符号化データは、何らかの伝送路を介して画像復号装置20に伝送される(図11の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において、図11のA乃至図11のDに例示されるように、並列的に行われる。
画像符号化装置1によるエントロピ符号化EC-1により符号化された符号化データが、画像復号装置20に伝送路を介して伝送され、エントロピ復号部21に供給される。エントロピ復号部21は、供給された、エントロピ符号化EC-1により符号化された符号化データに対して、順次、エントロピ符号の復号iEC-1を行い、係数データを復元する(図11のF)。復元された係数データは、順次、係数バッファ部22に格納される。ウェーブレット逆変換部23は、係数バッファ部22にウェーブレット逆変換が行えるだけ係数データが格納されたら、係数バッファ部22から係数データを読み出して、読み出された係数データを用いてウェーブレット逆変換iWT-1を行う(図11のG)。
図6を参照して説明したように、ウェーブレット逆変換部23によるウェーブレット逆変換iWT-1は、係数C4および係数C5が係数バッファ部22に格納された時点で開始することができる。したがって、エントロピ復号部21による復号iEC-1が開始されてからウェーブレット逆変換部23によるウェーブレット逆変換iWT-1が開始されるまでの遅延は、2ライン分となる。
ウェーブレット逆変換部23において、1回目のウェーブレット変換による3ライン分のウェーブレット逆変換iWT-1が終了すると、ウェーブレット逆変換iWT-1で生成された画像データの出力Out-1が行われる(図11のH)。出力Out-1では、図6および図7を用いて説明したように、第1ライン目の画像データが出力される。
画像復号装置20に対して、画像符号化装置1における1回目の処理による3ライン分の符号化された係数データの入力に続けて、エントロピ符号化EC-n(nは2以上)により符号化された係数データが順次、入力される。画像復号装置20では、入力された係数データに対して、上述したようにして、4ライン毎にエントロピ復号iEC-nおよびウェーブレット逆変換iWT-nを行い、ウェーブレット逆変換iWT-nにより復元された画像データの出力Out-nを順次、行う。画像符号化装置の最後の回に対応するエントロピ復号iECおよびウェーブレット逆変換iWTは、6ラインに対して行われ、出力Outは、8ラインが出力される。これらの処理は、画像復号装置において、図11のF乃至図11のHに例示されるように、並列的に行われる。
上述のようにして、画面上部から下部の方向に順番に、画像符号化装置1および画像復号装置20における各処理を並列的に行うことで、画像圧縮処理および画像復号処理をより低遅延で行うことが可能となる。
図11を参照して、5×3フィルタを用いて分解レベル=2までウェーブレット変換を行った場合の、画像入力から画像出力までの遅延時間を計算してみる。第1ライン目の画像データが画像符号化装置1に入力されてから、この第1ライン目の画像データが画像復号装置20から出力されるまでの遅延時間は、下記の各要素の総和となる。なお、ここでは、伝送路における遅延や、装置各部の実際の処理タイミングに伴う遅延などの、システムの構成により異なる遅延は、除外している。
(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
図11を参照して、上述の各要素による遅延の計算を試みる。(1)の遅延D_WTは、10ライン分の時間である。(2)の時間D_Ord、(3)の時間D_EC、(4)の時間D_iEC、および(5)の時間D_iWTは、それぞれ3ライン分の時間である。また、画像符号化装置1において、並び替えOrd-1が開始されてから1ライン後には、エントロピ符号化EC-1を開始することができる。同様に、画像復号装置20において、エントロピ復号iEC-1が開始されてから2ライン後には、ウェーブレット逆変換iWT-1を開始することができる。また、エントロピ復号iEC-1は、エントロピ符号化EC-1で1ライン分の符号化が終了した時点で処理を開始することができる。
したがって、この図11の例では、画像符号化装置に第1ライン目の画像データが入力されてから、画像復号装置から当該第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の総和についても、処理対象のライン数が少ないため、遅延時間が非常に短縮される。各処理を行う要素をハードウェア化すれば、処理時間をさらに短縮することも可能である。
次に、この発明の実施の第3の形態について説明する。上述した実施の第1および第2の形態では、画像符号化装置1において、ウェーブレット変換を行った後に係数データの並び替えを行っていた。これに対して、この発明の実施の第3の形態では、係数データの並び替えを、エントロピ符号化の後に行うようにしている。すなわち、この場合の画像符号化装置では、入力された画像データに対してウェーブレット変換を行い生成された係数に対してエントロピ符号化を施し、エントロピ符号化されたデータに対して並び替え処理を行う。このように、係数データの並び替えをエントロピ符号化の後で行うことで、係数並び替えバッファにおいて必要とされる記憶容量を抑えることができる。
例えば、入力画像データのビット精度が8ビットの場合、ウェーブレット変換を複数レベル分解まで行うと、生成される係数データのビット精度が例えば12ビット程度となる。エントロピ符号化処理の前に係数並び替え処理を行う場合、係数並び替え用バッファ部は、このビット精度12ビットの係数データを、所定ライン数分、格納する必要がある。ウェーブレット変換で生成された係数データをエントロピ符号化した後に並び替え処理するようにすれば、係数並び替え用バッファは、エントロピ符号化により圧縮されたデータを格納すればよいので、より小さい記憶容量で済むことになる。
図12は、この発明の実施の第3の形態による画像符号化装置の一例の構成を示す。なお、図12において、上述した図1と共通する部分には同一の符号を付し、詳細な説明を省略する。
入力画像データは、画像符号化装置30の途中計算用バッファ部11に一旦格納される。ウェーブレット変換部10は、途中計算用バッファ部11に格納された画像データに対して、実施の第1の形態で既に説明したようにして、ウェーブレット変換を所定に施す。ウェーブレット変換で生成された係数データは、エントロピ符号化部15に供給される。エントロピ符号化部15は、レート制御部14と連動的に動作し、出力される圧縮符号化データのビットレートが略一定値となるように制御され、供給された係数データに対してエントロピ符号化処理を行う。つまり、エントロピ符号化部15は、係数の順序に関わらず、取得した係数を、その取得した順序で同様に符号化する。
ウェーブレット変換により生成された係数データがエントロピ符号化部15でエントロピ符号化された符号化データは、符号並び替え用バッファ部31に一旦格納される。符号並び替え部32は、符号並び替え用バッファ部31に並び替える符号化データが格納され次第、符号並び替え用バッファ部31から符号化データを並び替えて読み出す。実施の第1の形態で既に説明したように、ウェーブレット変換部10で生成された係数データは、高域成分から低域成分の順に、画面の上端側から下端側に向けて生成される。復号側において低遅延で画像データの出力を行うためには、符号並び替え用バッファ部31に格納された符号化データを、ウェーブレット変換による係数データの低域成分から高域成分の順に並び替えて読み出す。
符号並び替え用バッファ部31から読み出された符号化データが出力の符号化データとして、例えば伝送路に送出される。
なお、この実施の第3の形態による画像符号化装置30で符号化され出力されたデータは、図9を用いて既に説明した、実施の第1の形態による画像復号装置20により、実施の第1の形態の場合と同様に復号することができる。すなわち、例えば伝送路を介して画像復号装置20に入力された符号化データは、エントロピ復号部21でエントロピ符号の復号がなされ、係数データが復元される。復元された係数データは、係数バッファ部22に順次、格納される。ウェーブレット逆変換部23は、係数バッファ部22に格納された係数データに対してウェーブレット逆変換を施し、画像データを出力する。
次に、この発明の実施の第4の形態について説明する。上述までの、実施の第1の形態乃至第3の形態では、ウェーブレット変換で生成された係数データの並び替え処理を、図13に一例が示されるように、画像符号化装置側で行っていた。これに対して、この発明の実施の第4の形態では、ウェーブレット変換により生成された係数データの並び替え処理を、図14で一例が示されるように、画像復号装置側で行うようにしている。
ウェーブレット変換で生成された係数データを並び替える処理では、上述の実施の第3の形態でも説明したように、係数並び替え用バッファの記憶容量として比較的大容量が必要となると共に、係数並び替えの処理自体にも、高い処理能力が要求される。この場合でも、画像符号化装置側の処理能力がある程度以上高い場合には、上述の実施の第1の形態乃至第3の形態で説明したように、画像符号化装置側で係数並び替え処理を行っても、何ら問題は生じない。
ここで、携帯電話端末やPDA(Personal Digital Assistant)といった所謂モバイル端末などの、比較的処理能力の低い機器に画像符号化装置が搭載される場合について考える。例えば、近年では、携帯電話端末に対して撮像機能を付加した製品が広く普及している(カメラ機能付き携帯電話端末と呼ぶ)。このようなカメラ機能付き携帯電話端末で撮像された画像データをウェーブレット変換およびエントロピ符号化により圧縮符号化し、無線あるいは有線通信を介して伝送することが考えられる。
このような例えばモバイル端末は、CPUの処理能力も限られ、また、メモリ容量にもある程度の上限がある。そのため、上述したような係数並び替えに伴う処理の負荷などは、無視できない問題となる。
そこで、図14に一例が示されるように、並び替え処理を画像復号装置側に組み入れることで、画像符号化装置側の負荷が軽くなり、画像符号化装置をモバイル端末などの比較的処理能力が低い機器に搭載することが可能となる。
図15は、この実施の第4の形態に適用可能な画像符号化装置の一例の構成を示す。なお、この図15において、上述の図1と共通する部分には同一の符号を付して、詳細な説明を省略する。
この図15に示される画像符号化装置41の構成は、上述の図1で示した画像符号化装置1の構成に対して係数並び替え部13および係数並び替え用バッファ部12を除去した構成となっている。すなわち、この実施の第4の形態では、画像符号化装置41としては、従来から用いられる、ウェーブレット変換部10、途中計算用バッファ部11、エントロピ符号化部15およびレート制御部14を組み合わせた構成を適用することが可能である。
入力された画像データは、途中計算用バッファ部11に一時的に溜め込まれる。ウェーブレット変換部10は、途中計算用バッファ部11に溜め込まれた画像データに対してウェーブレット変換を施し、生成された係数データを、係数データの生成順に順次、エントロピ符号化部15に供給する。すなわち、エントロピ符号化部15に対して、ウェーブレット変換の順序に従い高域成分から低域成分の順に、生成された係数データが供給される。エントロピ符号化部15は、供給された係数に対して、レート制御部14により出力データのビットレートを制御されながらエントロピ符号化を施す。エントロピ符号化部15から、ウェーブレット変換により生成された係数データがエントロピ符号化された符号化データが出力される。
図16は、この実施の第4の形態による画像復号装置の一例の構成を示す。なお、この図16において、上述の図9と共通する部分には同一の符号を付し、詳細な説明を省略する。
図15で説明した画像符号化装置41のエントロピ符号化部15から出力された符号化データは、図16の画像復号装置42のエントロピ復号部21に供給され、エントロピ符号を復号され係数データとされる。係数データは、係数バッファ部22を介して係数並び替え用バッファ部43に格納される。ウェーブレット逆変換部23は、係数並び替え用バッファ部43に係数データの並び替えが可能となるまで係数データが蓄積されると、係数並び替え用バッファ部43に格納された係数データを、低域成分から高域成分の順に並び替えて読み出し、読み出された順に係数データを用いてウェーブレット逆変換処理を行う。5×3フィルタを用いる場合は、上述の図14で示したようになる。
すなわち、ウェーブレット逆変換部23は、例えば1フレームの先頭からの処理であれば、係数並び替え用バッファ部43にエントロピ符号の復号がなされた係数C1、係数C4、および係数C5が格納された時点で、係数並び替え用バッファ部43から係数データを読み出し、ウェーブレット逆変換処理を行う。ウェーブレット逆変換部23でウェーブレット逆変換を施されたデータは、順次、出力画像データとして出力される。
なお、この実施の第4の形態の場合でも、上述の実施の第2の形態で図11を用いて既に説明したように、画像符号化装置41における各要素の処理と、伝送路に対する符号化データの伝送と、画像復号装置42における各要素の処理とが並列的に実行される。
次に、この発明の実施の第5の形態について説明する。この実施の第5の形態では、上述した実施の第1の形態乃至第4の形態による画像符号化装置と画像復号装置の間で授受される符号化データがパケット化される。
図17は、その符号化データの授受の様子の例を説明する模式図である。図17に示される例の場合においても、上述した他の実施の形態と同様に、画像データは、ラインブロック毎に、所定のライン数分だけ入力されながらウェーブレット変換される(サブバンド51)。そして、所定のウェーブレット変換分解レベルまで達した際に、最低域サブバンドから最高域サブバンドまでの係数ラインが、生成された順序とは逆に、つまり低域から高域の順番に並び替えられる。
図17のサブバンド51において、斜め線、縦線、および波線の模様分けされた部分は、それぞれ異なるラインブロックである(矢印で示されるように、サブバンド51の白ヌキ部分も同様にラインブロック毎に分割して処理される)。並び替えられた後のラインブロックの係数が上述した様にエントロピ符号化され、符号化データが生成される。
ここで、例えば画像符号化装置が符号化データをそのまま送出すると、画像復号装置が各ラインブロックの境界を識別することが困難な(若しくは煩雑な処理が必要になる)場合がある。そこで、本実施の形態においては、画像符号化装置が、符号化データに例えばラインブロック単位でヘッダを付加し、ヘッダと符号化データとから成るパケットとして送出するようにする。
つまり、画像符号化装置は、図17に示されるように、1番目のラインブロック(Lineblock-1)の符号化データ(エンコードデータ)を生成すると、それをパケット化し、送信パケット61として画像復号装置に送出する。画像復号装置は、そのパケットを受信すると(受信パケット71)、その符号化データを復号(デコード)する。
同様に、画像符号化装置は、2番目のラインブロック(Lineblock-2)の符号化データを生成すると、それをパケット化し、送信パケット62として画像復号装置に送出する。画像復号装置は、そのパケットを受信すると(受信パケット72)、その符号化データを復号(デコード)する。さらに同様に、画像符号化装置は、3番目のラインブロック(Lineblock-3)の符号化データを生成すると、それをパケット化し、送信パケット63として画像復号装置に送出する。画像復号装置は、そのパケットを受信すると(受信パケット73)、その符号化データを復号(デコード)する。
画像符号化装置および画像復号装置は、以上のような処理を、X番目の最終ラインブロック(Lineblock-X)まで繰り返す(送信パケット64、受信パケット74)。以上のようにして画像復号装置において復号画像81が生成される。
図18にヘッダの構成例を示す。上述したようにパケットはヘッダ(Header)91と符号化データにより構成されるが、そのヘッダ91には、ラインブロックの番号(NUM)93と符号化データ長(LEN)94の記述が含まれている。
画像復号装置は、受信した符号化データに付加されたヘッダに含まれるこれらの情報を読み取ることにより、各ラインブロックの境界を容易に識別することができ、復号処理の負荷や処理時間を低減させることができる。
なお、図18に示されるように、さらに、ラインブロックを構成するサブバンド毎の量子化ステップサイズ(Δ1乃至ΔN)92の記述を付加するようにしてもよい。これにより、画像復号装置は、サブバンド毎の逆量子化を行うことができ、よりきめ細かな画質制御を行うことが出来る。
また、画像符号化装置および画像復号装置は、上述したような符号化、パケット化、パケットの送受信、および復号等の各処理を、第4の実施の形態において説明したように、ラインブロック毎に、同時並行的に(パイプライン化して)実行するようにしてもよい。
このようにすることにより、画像復号装置において画像出力が得られるまでの遅延時間を大幅に低減させることができる。図17においては一例として、インタレース動画(60フィールド/秒)での動作例を示している。この例において、1フィールドの時間は、1秒÷60=約16.7msecであるが、同時並行的に各処理を行うようにすることにより、約5msecの遅延時間で画像出力が得られるようにすることが出来る。
次に、この発明の実施の第6の形態について説明する。この実施の第6の形態では、上述した各実施の形態における画像符号化装置におけるエントロピ符号化と、画像復号装置におけるエントロピ復号の具体的な例を示す。上述した各実施の形態において、エントロピ符号化はどのような方法を用いるようにしてもよいが、本実施の形態に示される方式を用いることにより、画像符号化装置は、より容易な演算により符号化を行うことができるので、遅延時間、消費電力、およびバッファメモリ量等を低減させることができる。
なお、上述したように、各実施の形態において、エントロピ符号化の際に係数データを量子化してから符号化を行うことができるが、本実施の形態においても同様であり、係数データの量子化を行ってからエントロピ符号化を行うようにしてもよいし、量子化を行わずに係数データをエントロピ符号化するようにしてもよい。ただし、後述するように、量子化を行う場合の方が画質をより向上させることができるので、以下においては、量子化を行う場合のエントロピ符号化についてのみ説明する。換言すれば、量子化を行わない場合のエントロピ符号化についての説明は省略するが、量子化を行う場合のエントロピ符号化の説明を適用することができる。
また、以下においては、係数並び替えについての説明を省略する。上述した各実施の形態においては、並び替えられた係数データをエントロピ符号化する場合、エントロピ符号化を行った符号化データを並び替える場合、および、エントロピ復号の後に係数データを並び替える場合について説明したが、この並び替えは基本的にウェーブレット逆変換処理を高速に行うための処理であり、基本的にエントロピ符号化処理(およびエントロピ復号処理)とは関係が無い。また、係数並び替えを行う場合であっても、その並び替えはラインブロック内において行われるため、具体的な内容については後述するが、基本的に本実施の形態において説明するエントロピ符号化には影響しない。つまり、順番を並び替えられた係数データを符号化する場合、並び替える前の係数データを符号化する場合のいずれの場合も本実施の形態のエントロピ符号化方法を同様に適用することができる。従って、以下においては説明の簡略化のため係数並び替えについての説明を省略する。
換言すれば、以下においては、本実施の形態のエントロピ符号化を、図15に示される実施の第4の形態の画像符号化装置41のエントロピ符号化部15において量子化処理を行う場合について説明する。なお、画像復号装置についても同様の理由から、その場合の画像符号化装置に対応するものについてのみ説明し、係数並び替えを行う場合や、逆量子化を行わない場合の画像復号装置についての説明は省略する。
図19は、本発明を適用した画像符号化装置の構成例を示すブロック図である。
画像符号化装置111は、ウェーブレット変換部121、量子化部122、およびエントロピ符号化部123を有する。
ウェーブレット変換部121は、例えば、図15のウェーブレット変換部10に対応し、同様の処理を行う。つまり、ウェーブレット変換部121には、例えば、必要に応じてDCレベルシフトが施されたコンポーネント信号である画像(データ)が入力される。ウェーブレット変換部121は、その入力された画像をウェーブレット変換して複数のサブバンドに分解する。ウェーブレット変換部121は、ウェーブレット変換により得られたサブバンドのウェーブレット係数を量子化部122に供給する。
量子化部122は、ウェーブレット変換部121から供給されたウェーブレット係数を量子化し、その結果として得られた量子化係数をエントロピ符号化部123に供給する。
エントロピ符号化部123は、量子化部122から供給された量子化係数をエントロピ符号化し、これにより得られた符号を符号化された画像(データ)として出力する。エントロピ符号化部123から出力された画像は、例えば、レート制御処理された後、パケット化されて記録されたり、画像符号化装置111に接続された他の装置(図示せず)に供給されたりする。
すなわち、量子化部122およびエントロピ符号化部123は、例えば図15のエントロピ符号化部15およびレート制御部14に対応する。
次に、図20および図21を参照して、図19のエントロピ符号化部123が行うエントロピ符号化について説明する。
例えば、図20に示すように、1つのサブバンドがラインL1乃至ラインL6の6本のラインから構成されているとし、xy座標系におけるライン上の画素に対応する位置を(x,y)とする。ここで、各ラインの図中、左端の位置のx座標は0とされ、ラインL1のy座標は0とされる。
量子化部122からエントロピ符号化部123には、ビットプレーン表現された、サブバンドの各位置(x,y)における量子化係数がラインL1からラインL6までラスタスキャン順に入力される。
換言すれば、エントロピ符号化部123には、まず、ラインL1の左端の位置(0,0)に対応する量子化係数が入力される。次にその位置(0,0)の右隣の位置(1,0)に対応する量子化係数がエントロピ符号化部123に入力され、ラインL1の右端の位置まで、量子化係数が入力された位置の右隣の位置に対応する量子化係数がエントロピ符号化部123に順次入力される。そして、ラインL1上の位置の量子化係数が全て入力されると、ラインL2の左端の位置(0,1)から順番に右端の位置まで、ラインL2上の各位置に対応する量子化係数がエントロピ符号化部123に入力され、同様にラインL3からラインL6まで、各ライン上の位置に対応する量子化係数がエントロピ符号化部123に入力される。
例えば、図21の図中、左上に示すように、図20のラインL1の左端の位置の量子化係数から順番に、12個の量子化係数がエントロピ符号化部123に入力されると、エントロピ符号化部123は、予め定められた所定の数w(図21ではw=4)ずつ量子化係数を符号化する。
ここで、図21の左上に示された各量子化係数は、その符号の絶対値が2進数の桁に分けられて表現されて(ビットプレーン表現されて)おり、図21の例では、エントロピ符号化部123には、1つのライン(図20のラインL1)の量子化係数“-0101”、“+0011”、“-0110”、“+0010”、“+0011”、“+0110”、“0000”、“-0011”、“+1101”、“-0100”、“+0111”、および“-1010”が順番に入力される。
1つの量子化係数は、“+”(正)または“−”(負)で表わされる量子化係数の符号(以下、量子化係数のサイン(Sign)と称する。)と、2進数で表わされた量子化係数の絶対値とからなる。図21では、量子化係数の絶対値の各桁の値を示す各ビットのうち、図中、最も上側のビットが最上位ビット(最上位の桁のビット)を表わしている。したがって、例えば、量子化係数“-0101”は、そのサインが“−”であり、2進数で表わされた絶対値が“0101”であるので、この量子化係数は10進数で表わすと“-5”となる。
まず、エントロピ符号化部123は、入力された1つのラインの量子化係数(の絶対値)が全て0であるか否かを判定し、その判定結果に応じて、これから符号化するラインの量子化係数が全て0であるか否かを示す符号を出力する。量子化係数が全て0であると判定した場合、エントロピ符号化部123は、ラインの量子化係数が全て0であるか否かを示す符号として0を出力して、現在行っているラインの量子化係数の符号化を終了する。また、全ての量子化係数の値が0ではない(0の量子化係数のみではない)と判定した場合、エントロピ符号化部123は、ラインの量子化係数が全て0であるか否かを示す符号として1を出力する。
図中、左上に示した12個の量子化係数が入力された場合、入力されたラインの量子化係数は0のみではないので、図中、右上に示すように、エントロピ符号化部123は符号として1を出力する。
ラインの量子化係数が全て0であるか否かを示す符号として、量子化係数が全て0でないことを示す符号1が出力されると、次に、エントロピ符号化部123は、入力された最初の4つ(w個)の量子化係数“-0101”、“+0011”、“-0110”、および“+0010”の符号化を行う。
エントロピ符号化部123は、今回入力された連続する4つの量子化係数の最大有効桁数(図21における変数Bの値)と、前回符号化した(入力された)4つ(w個)の量子化係数の最大有効桁数とを比較し、最大有効桁数が変化したか否かを判定して、量子化係数の最大有効桁数を示す符号を出力する。
ここで、最大有効桁数とは、まとめて符号化する4つ(w個)の量子化係数のうち、絶対値が最も大きい量子化係数の有効桁数をいう。換言すれば、最大有効桁数は、4つの量子化係数のうち、絶対値が最も大きい量子化係数の最上位にある1が何桁目にあるかを示す。したがって、例えば、まとめて符号化する4つの量子化係数“-0101”、“+0011”、“-0110”、および“+0010”の最大有効桁数は、絶対値が最も大きい量子化係数“-0110”の最上位にある1の桁である“3”とされる。
また、量子化係数の最大有効桁数を示す符号は、最大有効桁数が変化したか否かを示す符号、最大有効桁数が増加したか、または減少したかを示す符号、および最大有効桁数の変化量を示す符号からなり、最大有効桁数が変化していない場合、最大有効桁数が増加したか、または減少したかを示す符号、および最大有効桁数の変化量を示す符号は出力されない。
エントロピ符号化部123は、最大有効桁数の比較の結果、最大有効桁数が変化した場合、最大有効桁数が変化したことを示す符号1を出力し、最大有効桁数が変化していない場合、最大有効桁数が変化していないことを示す符号0を出力する。
なお、最大有効桁数が変化したか否かを判定する場合に、今回初めて4つの量子化係数が入力されるとき、すなわち、符号化するサブバンドの量子化係数が初めて入力されるとき(例えば、図20のラインL1の左端から順番に4つの量子化係数が入力されるとき)、前回、そのサブバンドの量子化係数は符号化されていないので、前回符号化した4つ(w個)の量子化係数の最大有効桁数は0とされる。
したがって、エントロピ符号化部123は、今回入力された4つの量子化係数“-0101”、“+0011”、“-0110”、および“+0010”の最大有効桁数3と、前回符号化した量子化係数の最大有効桁数0とを比較し、最大有効桁数が変化したので符号1を出力する。
また、エントロピ符号化部123は、最大有効桁数が変化したことを示す符号1に続いて、最大有効桁数が増加したか、または減少したかを示す符号を出力する。ここで、エントロピ符号化部123は、最大有効桁数が増加した場合には0を出力し、最大有効桁数が減少した場合には1を出力する。
前回の最大有効桁数は0であり、今回の最大有効桁数は3であるので、図中、右上に示すように、エントロピ符号化部123は、最大有効桁数が増加したことを示す符号0を出力する。
さらに、エントロピ符号化部123は、最大有効桁数が増加したか、または減少したかを示す符号を出力すると、最大有効桁数がどれだけ増加または減少したかを示す符号、すなわち、最大有効桁数の変化量を示す符号を出力する。具体的には、エントロピ符号化部123は、最大有効桁数の変化量(すなわち、増加量または減少量)をnとすると、(n-1)個の符号0を出力し、それらの0に続いて符号1を出力する。
図3の最初の4つの量子化係数を符号化する場合、最大有効桁数の変化量は3(=3-0)であるので、エントロピ符号化部123は符号として、2(=3-1)個の0を出力し、さらに1を出力する。
次に、エントロピ符号化部123は、今回符号化する4つ(w個)の量子化係数のそれぞれの絶対値を示す最大有効桁数分の符号を出力する。すなわち、エントロピ符号化部123は、それぞれの量子化係数について、最大有効桁数により示される有効桁の最大の桁から順番に最小の桁まで、量子化係数の絶対値の各桁の値を示す符号を出力する。
今回符号化する量子化係数は、“-0101”、“+0011”、“-0110”、および“+0010”であるので、エントロピ符号化部123は、まず、最初に入力された量子化係数“-0101”の絶対値を示す最大有効桁数分の符号を出力する。ここで、今回の最大有効桁数は3であるので、エントロピ符号化部123は、量子化係数“-0101”の最大有効桁数により示される有効桁の最大の桁(すなわち、3桁目)の値“1”、最大の桁より1つ下の桁(2桁目)の値“0”、および最下位の桁の値“1”を出力する。これにより、量子化係数“-0101”の絶対値を示す有効桁数分の符号“101”が出力される。
同様に、エントロピ符号化部123は、量子化係数“+0011”、“-0110”、および“+0010”の絶対値を示す有効桁数分の符号“011”、“110”、および“010”を順番に出力する。したがって、量子化係数は、“-0101”、“+0011”、“-0110”、および“+0010”のそれぞれの絶対値を示す最大有効桁数分の符号として、“101011110010”が出力される。このように、エントロピ符号化部123からは、量子化係数の絶対値を示す符号として、符号化する4つの量子化係数の最大有効桁数に応じた長さの符号が出力される。
そして最後に、エントロピ符号化部123は、4つ(w個)の量子化係数のうち、絶対値が0でない量子化係数のそれぞれのサインを示す符号を出力する。ここで、エントロピ符号化部123は、量子化係数のサインが“+”(正)である場合、符号0を出力し、サインが“−”(負)である場合、符号1を出力する。
今回符号化する量子化係数は、“-0101”、“+0011”、“-0110”、および“+0010”であり、これらの量子化係数のサインは、順に負、正、負、正であるので、図中、右上に示すように、エントロピ符号化部123は、量子化係数のそれぞれのサインを示す符号として、“1010”を出力する。
最初に入力された4つの量子化係数が符号化されると、エントロピ符号化部123は、続いて、次の連続する4つの量子化係数“+0011”、“+0110”、“0000”、および“-0011”の符号化を行う。
最初に(前回)入力された量子化係数の符号化における場合と同様に、まず、エントロピ符号化部123は、今回、新たに入力された4つ(w個)の量子化係数の最大有効桁数と、前回符号化した4つの量子化係数の最大有効桁数とを比較する。
今回入力された4つ(w個)の量子化係数“+0011”、“+0110”、“0000”、および“-0011”の最大有効桁数は、絶対値が最も大きい量子化係数“+0110”の最上位にある1の桁である“3”であり、前回符号化した量子化係数の最大有効桁数“3”と同じであるので、エントロピ符号化部123は、最大有効桁数が変化していないことを示す符号0を出力する。
続いて、エントロピ符号化部123は、今回符号化する4つ(w個)の量子化係数“+0011”、“+0110”、“0000”、および“-0011”のそれぞれの絶対値を示す最大有効桁数分の符号“011”、“110”、“000”、および“011”が順番に並べられた符号“011110000011”を出力する。
そして、量子化係数の絶対値を示す符号が出力されると、エントロピ符号化部123は、4つの量子化係数のうち、絶対値が0でない量子化係数のそれぞれのサインを示す符号を出力する。
今回符号化する量子化係数は、“+0011”、“+0110”、“0000”、および“-0011”であり、3つ目の量子化係数“0000”はその絶対値が0であるので、エントロピ符号化部123は、0でない量子化係数“+0011”、“+0110”、および“-0011”のそれぞれのサイン(正、正、負)を示す符号“001”を出力する。
4つの量子化係数“+0011”、“+0110”、“0000”、および“-0011”が符号化されると、さらに、エントロピ符号化部123は、次の4つの量子化係数“+1101”、“-0100”、“+0111”、および“-1010”の符号化を行う。
まず、エントロピ符号化部123は、今回、新たに入力された4つ(w個)の量子化係数の最大有効桁数と、前回符号化した4つの量子化係数の最大有効桁数とを比較する。
今回入力された4つ(w個)の量子化係数“+1101”、“-0100”、“+0111”、および“-1010”の最大有効桁数は、絶対値が最も大きい量子化係数“+1101”の最上位にある1の桁である“4”であり、前回符号化した量子化係数の最大有効桁数“3”とは異なるので、エントロピ符号化部123は、最大有効桁数が変化したことを示す符号1を出力する。
また、前回の最大有効桁数は3であり、今回の最大有効桁数は4であるので、エントロピ符号化部123は、図中、右側に示すように、最大有効桁数が増加したことを示す符号0を出力する。
さらに、エントロピ符号化部123は、最大有効桁数がどれだけ増加または減少したかを示す符号を出力する。この場合、最大有効桁数の変化量は1(=4-3)であるので、エントロピ符号化部123は符号として、0(=1-1)個の0を出力し、さらに1を出力する(すなわち、符号1を出力する)。
次に、エントロピ符号化部123は、今回符号化する4つ(w個)の量子化係数“+1101”、“-0100”、“+0111”、および“-1010”のそれぞれの絶対値を示す最大有効桁数分の符号“1101”、“0100”、“0111”、および“1010”が順番に並べられた符号“1101010001111010”を出力する。
そして、量子化係数の絶対値を示す符号が出力されると、エントロピ符号化部123は、4つの量子化係数のうち、0でない量子化係数のそれぞれのサインを示す符号を出力する。
今回符号化する量子化係数は、“+1101”、“-0100”、“+0111”、および“-1010”であり、これらの量子化係数のサインは、順番に正、負、正、負であるので、図中、右下に示すように、エントロピ符号化部123は、量子化係数のそれぞれのサインを示す符号として、“0101”を出力する。
このようにして、エントロピ符号化部123は、入力された量子化係数を、連続する予め定められた数(w個)ずつ符号化する。これにより、エントロピ符号化部123からは、符号化するラインの量子化係数が全て0であるか否かを示す符号が出力され、ラインの量子化係数が全て0でないことを示す符号が出力されると、次に、w個の量子化係数の最大有効桁数を示す符号、w個の量子化係数の絶対値(ビットプレーン表現)を示す符号、およびそれらの量子化係数のサインを示す符号が出力される。
そして、これらのw個の量子化係数の最大有効桁数を示す符号、w個の量子化係数の絶対値を示す符号、および量子化係数のサインを示す符号のそれぞれは、そのラインの量子化係数が全て符号化されるまで、次のw個の量子化係数の最大有効桁数を示す符号、量子化係数の絶対値を示す符号、および量子化係数のサインを示す符号が繰り返し出力される。
なお、量子化係数がラスタスキャン順に符号化されると説明したが、量子化係数が符号化される順番は必ずしもラスタスキャン順である必要はない。例えば、図20に示したサブバンドの量子化係数が符号化される場合、最初に位置(0,0)、(0,1)、(0,2)、および(0,3)(すなわち、ラインL1乃至ラインL4のそれぞれの図中、左端の位置)の量子化係数が符号化され、次に、位置(1,0)、(1,1)、(1,2)、および(1,3)の量子化係数が符号化されるといったように、図中、縦方向に並ぶ4つの位置の量子化係数をw個の量子化係数として、w個ずつ順番に符号化するようにしてもよい。
以上において説明した処理を行う図1のエントロピ符号化部123は、より詳細には、図22に示すように構成される。
エントロピ符号化部123は、ライン判定部161、VLC(Variable Length Coding)符号化部162、最大有効桁数計算部163、VLC符号化部164、有効桁抽出部165、VLC符号化部166、サイン抽出部167、VLC符号化部168、および符号連結部169を有する。
量子化部122(図19)から出力された量子化係数は、ライン判定部161、最大有効桁数計算部163、有効桁抽出部165、およびサイン抽出部167に供給(入力)される。
ライン判定部161は、量子化部122から入力された、これから符号化する1つのラインの量子化係数が全て0であるか否かを判定し、その判定の結果を示す情報をVLC符号化部162に供給する。
VLC符号化部162は、ライン判定部161からの判定の結果を示す情報に基づいて、符号化するラインの量子化係数が全て0であるか否かを示す符号を符号連結部169に出力する。
最大有効桁数計算部163は、量子化部122から入力された、連続するw個の量子化係数の最大有効桁数を計算し、その計算の結果を示す情報をVLC符号化部164および有効桁抽出部165に供給する。
VLC符号化部164は、最大有効桁数計算部163からの計算の結果を示す情報に基づいて、w個の量子化係数の最大有効桁数を示す符号を符号連結部169に供給する。
有効桁抽出部165は、最大有効桁数計算部163からの計算の結果を示す情報に基づいて、量子化部122から供給されたw個の量子化係数の有効桁を抽出し、抽出した量子化係数の有効桁(のデータ)をVLC符号化部166およびサイン抽出部167に供給する。
VLC符号化部166は、有効桁抽出部165からの量子化係数の有効桁に基づいて、これらの量子化係数の絶対値を符号化し、これにより得られた量子化係数の絶対値を示す符号を符号連結部169に供給する。
サイン抽出部167は、有効桁抽出部165からの量子化係数の有効桁に基づいて、量子化部122から供給された量子化係数のサインを抽出して、抽出したサイン(のデータ)をVLC符号化部168に供給する。
VLC符号化部168は、サイン抽出部167からのサイン(のデータ)を符号化し、これにより得られる量子化係数のサインを示す符号を符号連結部169に供給する。
符号連結部169は、VLC符号化部162、VLC符号化部164、VLC符号化部166、およびVLC符号化部168のそれぞれから供給された、ラインの量子化係数が全て0であるか否かを示す符号、最大有効桁数を示す符号、量子化係数の絶対値を示す符号、および量子化係数のサインを示す符号のそれぞれを連結し、符号化された画像(データ)として出力する。
次に、図23のフローチャートを参照して、画像符号化装置111(図19)による、符号化処理について説明する。この符号化処理は、ウェーブレット変換部121に、符号化する画像(データ)が入力されると開始される。
ステップS111において、ウェーブレット変換部121は、入力された画像にウェーブレット変換を施して、入力された画像を複数のサブバンドに分解し、各サブバンドのウェーブレット係数を量子化部122に供給する。
ステップS112において、量子化部122は、ウェーブレット変換部121から供給されたウェーブレット係数を量子化し、その結果得られた量子化係数をエントロピ符号化部123に供給する。これにより、エントロピ符号化部123には、例えば、図21を参照して説明したビットプレーン表現された、サブバンドの各位置の量子化係数が入力される。
ステップS113において、エントロピ符号化部123は、エントロピ符号化処理を行い、符号化処理を終了する。なお、エントロピ符号化処理の詳細は後述するが、エントロピ符号化部123は、エントロピ符号化処理において、図21を参照して説明したように、量子化部122から供給された量子化係数を所定の数(w個)ずつ符号化し、符号化するラインの量子化係数が全て0であるか否かを示す符号、量子化係数の最大有効桁数を示す符号、量子化係数の絶対値を示す符号、および量子化係数のサインを示す符号を、符号化された画像(データ)として出力する。
このようにして、画像符号化装置111は、入力された画像を符号化して出力する。
次に、図24のフローチャートを参照して、図23のステップS113の処理に対応するエントロピ符号化処理について説明する。
図23のステップS112において、量子化部122から出力された量子化係数は、エントロピ符号化部123(図22)のライン判定部161、最大有効桁数計算部163、有効桁抽出部165、およびサイン抽出部167に供給(入力)される。
ステップS141において、ライン判定部161は、これから符号化するサブバンドのラインを示す変数yをy=0として、これを記憶する。
例えば、図20に示したサブバンドの量子化係数を符号化する場合、ライン判定部161は、そのサブバンドのライン(ラインL1乃至ラインL6)を示す変数yを、y=0とする。なお、ここで、変数yにより示されるラインyは、サブバンドのライン上の各位置(x,y)のy座標がyであるラインを示している。したがって、例えば、ライン判定部161が記憶している変数yがy=0である場合、その変数により示されるラインは、ライン上の各位置のy座標が0であるラインL1となる。
ステップS142において、最大有効桁数計算部163は、ライン判定部161が記憶している変数yにより示されるラインyよりも1つ前のライン(y-1)上の最初に入力されるw個の量子化係数の最大有効桁数を示す変数BinitをBinit=0として、これを記憶する。
例えば、ライン(y−1)が、図20に示したラインL1である場合、ライン(y−1)上の最初に入力されるw個の量子化係数の最大有効桁数を示す変数Binitの値は、ラインL1の図中、左端の位置からw個の量子化係数、すなわち、位置(0,0)、(1,0)、・・・、(w-1,0)のw個の量子化係数の最大有効桁数となる。また、ライン判定部161が記憶している変数yがy=0である場合、ライン(y−1)は存在しないので、変数Binitの値は、Binit=0とされる。
ステップS143において、ライン判定部161は、記憶している変数yにより示されるラインyの量子化係数(の絶対値)が全て0であるか否かを判定する。例えば、ラインyが、図20に示したラインL1である場合、ライン判定部161は、ラインL1上の位置(x,y)の量子化係数が全て0であるとき、量子化係数が全て0であると判定する。
ステップS143において、量子化係数が全て0であると判定した場合、ライン判定部161は、量子化係数が全て0である旨の情報を生成してそれをVLC符号化部162および最大有効桁数計算部163に供給し、処理をステップS144に進める。
ステップS144において、VLC符号化部162は、ライン判定部161からの量子化係数が全て0である旨の情報に基づいて、符号化するラインの量子化係数が全て0であることを示す符号0を符号連結部169に出力(供給)する。符号連結部169は、VLC符号化部162から供給された符号0を、ラインyの量子化係数の符号化の結果得られた符号として、そのまま出力する。
ステップS145において、最大有効桁数計算部163は、ライン判定部161からの量子化係数が全て0である旨の情報に基づいて、記憶している変数Binitの値をBinit=0とし、変数Binitを更新する。
ステップS146において、ライン判定部161は、符号化しているサブバンドのラインのうち、未処理のラインがあるか否かを判定する。すなわち、ライン判定部161は、符号化しているサブバンドの全てのラインの量子化係数を符号化したか否かを判定する。例えば、図20に示したサブバンドの量子化係数を符号化している場合、ラインL1乃至ラインL6上の全ての位置の量子化係数が符号化されたとき、ライン判定部161は、未処理のラインが存在しないと判定する。
そのステップS146において、未処理のラインがあると判定した場合、ライン判定部161は、次のライン、すなわち、ライン(y+1)上の各位置の量子化係数を符号化するので、処理をステップS147に進める。
ステップS147において、ライン判定部161は、記憶しているラインを示す変数yをインクリメントしてy=y+1とし、処理をステップS143に戻し、上述したそれ以降の処理を再び実行させる。
これに対して、ステップS146において、未処理のラインが無いと判定した場合、ライン判定部161は、サブバンドを構成する全てのラインについて量子化係数を符号化したので、エントロピ符号化処理を終了し、処理を図23のステップS113に戻し、符号化処理を終了させる。
また、図24のステップS143において、ラインyの量子化係数が全て0でない(0でない量子化係数が存在する)と判定した場合、ライン判定部161は、量子化係数が全て0でない(0でない量子化係数が存在する)旨の情報を生成してそれをVLC符号化部162および最大有効桁数計算部163に供給し、ステップS148に処理を進める。
ステップS148において、VLC符号化部162は、ライン判定部161からの量子化係数が全て0でない旨の情報に基づいて、符号化するラインの量子化係数が全て0でないことを示す符号1を符号連結部169に出力(供給)する。
ステップS149において、最大有効桁数計算部163は、ライン判定部161からの量子化係数が全て0でない旨の情報に基づいて、これから符号化するw個の量子化係数のうち、最初に入力される量子化係数に対応するラインy上の位置のx座標を示す変数xの値をx=0として、この変数xを記憶する。
例えば、ラインyが、図20に示したラインL1である場合、最大有効桁数計算部163が記憶している変数xの値は、これから符号化しようとするラインL1上の連続するw個の位置(x,0)、(x+1,0)、・・・、(x+w−1,0)のうちの図中、一番左側の位置(x,0)のx座標を示している。
また、ステップS149において、最大有効桁数計算部163は、前回符号化されたw個の量子化係数の最大有効桁数を示す変数Bの値をB=Binitとして、この変数Bを記憶する。すなわち、最大有効桁数計算部163は、変数Bの値を記憶している変数Binitの値として変数Bを更新し、更新された変数Bの値を記憶する。
最大有効桁数計算部163は変数Bの値を更新すると、更新された変数B(最大有効桁数)の値を示す情報をVLC符号化部164および有効桁抽出部165に供給する。また、VLC符号化部164および有効桁抽出部165は、それぞれ最大有効桁数計算部163から供給された変数Bの値を記憶する。
ステップS150において、エントロピ符号化部123はw個組符号化処理を行う。なお、w個組符号化処理の詳細は後述するが、w個組符号化処理において、エントロピ符号化部123は、ライン判定部161が記憶している変数yにより示されるラインy上の連続するw個の量子化係数を符号化する。
ここで、ライン判定部161が記憶している変数yおよび、最大有効桁数計算部163が記憶している変数xにより特定されるラインy上の位置を(x,y)とすると、ラインy上のw個の連続する位置は、ラインy上の連続する位置(x,y)、(x+1,y)、・・・、(x+w−1,y)とされる。すなわち、w個組符号化処理において、エントロピ符号化部123は、位置(x,y)、(x+1,y)、・・・、(x+w−1,y)のそれぞれの量子化係数を符号化する。
ステップS151において、最大有効桁数計算部163は、ラインyに未処理の量子化係数があるか否かを判定する。すなわち、最大有効桁数計算部163は、ライン判定部161が記憶している変数yにより示されるラインy上の位置の全ての量子化係数を符号化したか否かを判定する。
ステップS151において、ラインyに未処理の量子化係数があると判定した場合、最大有効桁数計算部163は、次のw個の量子化係数を符号化するので、処理をステップS152に進める。
ステップS152において、最大有効桁数計算部163は、記憶している変数xを、x=x+wとし、処理をステップS150に戻す。これにより、その後のステップS150の処理において、ラインy上の位置(x+w,y)、(x+w+1,y)、・・・、(x+2w−1,y)のそれぞれの量子化係数が符号化される。
また、ステップS151において、ラインyに未処理の量子化係数がないと判定した場合、最大有効桁数計算部163は、ラインy上の一の全ての位置の量子化係数が符号化されたので、処理をステップS146に戻し、それ以降の処理を実行させる。
このようにして、エントロピ符号化部123は、サブバンドの各位置の量子化係数を所定の数ずつラスタスキャン順に符号化する。
このように、サブバンドの各位置の量子化係数を所定の数ずつラスタスキャン順に符号化することによって、入力された量子化係数を入力された順番に処理することができ、量子化係数の符号化により生じる遅延をより少なくすることができる。
次に、図25のフローチャートを参照して、図24のステップS50の処理に対応するw個組符号化処理について説明する。
ステップS181において、最大有効桁数計算部163は、記憶している変数xにより特定されるラインy上の位置を(x,y)として、連続するw個の位置(x,y)、(x+1,y)、・・・、(x+w−1,y)の量子化係数のうち、絶対値が最も大きい量子化係数の有効桁数を、これから符号化するw個の量子化係数の最大有効桁数を示す変数Bnewの値として、この変数Bnewを記憶する。
また、最大有効桁数計算部163は、求められたw個の量子化係数の最大有効桁数、すなわち、変数Bnewの値をVLC符号化部164および有効桁抽出部165に供給する。
例えば、w個の連続する位置の量子化係数のそれぞれが、図21に示した量子化係数“-0101”、“+0011”、“-0110”、および“+0010”である場合、これらの量子化係数のうち、絶対値が最大の量子化係数は“-0110”であり、その有効桁数は“-0110”の最上位にある1の桁である“3”であるので、変数Bnewの値は3とされる。
ステップS182において、VLC符号化部164は、B=Bnewであるか否かを判定する。すなわち、VLC符号化部164は、記憶している、前回符号化されたw個の量子化係数の最大有効桁数を示す変数Bの値が、最大有効桁数計算部163から供給された、これから符号化するw個の量子化係数の最大有効桁数を示す変数Bnewの値と同じであるか否かを判定する。
ステップS182において、B=Bnewであると判定した場合、VLC符号化部164は、処理をステップS183に進め、これから符号化するw個の量子化係数の最大有効桁数を示す符号として、最大有効桁数が変化していないことを示す符号0を符号連結部169に出力する。そして、最大有効桁数を示す符号0が出力すると、VLC符号化部164は、ステップS184の処理乃至ステップS188の処理をスキップし、ステップS189に処理を進める。
これに対して、ステップS182において、B=Bnewでないと判定した場合、VLC符号化部164は、処理をステップS184に進め、(最大有効桁数が変化したので、)最大有効桁数が変化したことを示す符号1を符号連結部169に出力する。
ステップS185において、VLC符号化部164は、次式(8)を満たす整数nおよびmを求める。
Bnew=B+(n+1)×(−1)^m ・・・(8)
ここで、式(8)における記号“^”は、冪乗を表わしている。したがって、(−1)^mは、(−1)のm乗を表わしている。
例えば、Bnew=3であり、B=0である場合、式(8)を満たすnおよびmとして、それぞれn=2、およびm=0が求まる。変数Bnewおよび変数Bを比較した場合、変数Bnewの値の絶対値と変数Bの値の絶対値の差が大きいほど、式(8)におけるnの値は大きくなる。したがってnの値は、最大有効桁数の変化量を示しているということができる。また、変数Bnewの値が変数Bの値よりも大きい場合、mの値は0となり、逆に変数Bnewの値が変数Bの値よりも小さい場合、mの値は1となる。したがって、式(8)におけるmの値は、最大有効桁数が増加したか、または減少したかを示しているということができる。
ステップS186において、VLC符号化部164は、最大有効桁数が増加したか、または減少したかを示す符号として、式(8)を満たすmの値を1ビットの符号で符号連結部169に出力する。例えば、式(8)を満たすmの値が0である場合、VLC符号化部164は、最大有効桁数が増加したことを示す符号0を出力する。
ステップS187において、VLC符号化部164は、最大有効桁数の変化量を示す符号として、式(8)を満たすnの値だけ連続する0に続けて1個の1を符号連結部169に出力する。すなわち、VLC符号化部164は、n個の0および1個の1を最大有効桁数の変化量を示す符号として出力する。
例えば、式(8)を満たすnの値が2である場合、VLC符号化部164は、最大有効桁数の変化量を示す符号として“001”を符号連結部169に出力する。
これにより、VLC符号化部164から符号連結部169には、これから符号化するw個の量子化係数の最大有効桁数を示す符号として、最大有効桁数が変化したことを示す符号、最大有効桁数が増加したか、または減少したかを示す符号、および最大有効桁数の変化量を示す符号が出力される。
ステップS188において、最大有効桁数計算部163は、記憶している変数Bの値をB=Bnewとし、処理をステップS189に進める。すなわち、最大有効桁数計算部163は、記憶している変数Bの値を、記憶している変数Bnewの値として変数Bを更新する。また、VLC符号化部164および有効桁抽出部165も記憶している変数Bの値をB=Bnewとする。
ステップS188において、変数Bの値がB=Bnewとされるか、またはステップS183において、量子化係数の最大有効桁数を示す符号が出力されると、ステップS189において、最大有効桁数計算部163は、記憶している変数xの値が0である場合、記憶している変数Binitの値をBinit=Bとする。
すなわち、最大有効桁数計算部163は、記憶している変数xの値が0である場合、記憶している、ライン(y−1)上の最初に入力されるw個の量子化係数の最大有効桁数を示す変数Binitの値を、前回符号化されたw個の量子化係数の最大有効桁数を示す変数Bの値として、変数Binitを更新する。
このように、変数x=0である場合に、変数Binitの値をBinit=Bとすることで、次のライン(例えば、ライン(y+1))のx=0から始まるw個の量子化係数について、前のライン(例えば、ラインy)のx=0から始まるw個の量子化係数の最大有効桁数との相関関係を利用して量子化係数の符号化を行うことができる。
ステップS190において、有効桁抽出部165は、所定の変数をiとして、変数iを0から(w−1)まで変化させて、量子化部122から供給された、ラインy上の位置(x+i,y)の量子化係数から、量子化係数の有効桁を抽出する。有効桁抽出部165は、抽出した量子化係数の有効桁(のデータ)をVLC符号化部166およびサイン抽出部167に供給する。また、VLC符号化部166は、有効桁抽出部165から供給された有効桁に基づいて(有効桁を符号化して)、w個の量子化係数の絶対値を示す符号を符号連結部169に出力する。
ここで、位置(x+i,y)におけるxの値は、最大有効桁数計算部163が記憶している変数xの値とされる。例えば、最大有効桁数計算部163が記憶している変数xの値が0であり、有効桁抽出部165が記憶している変数Bの値が3であり、さらに、量子化部122から有効桁抽出部165に、位置(x+i,y)(0≦i≦3)のそれぞれ、すなわち位置(0,y)、(1,y)、(2,y)、および(3,y)の量子化係数に対応する図21に示したw個(4個)の量子化係数“-0101”、“+0011”、“-0110”、および“+0010”が供給されたとすると、有効桁抽出部165は、これらの量子化係数から有効桁を抽出する。
この場合、有効桁抽出部165が記憶している変数Bの値は3であり、有効桁は3桁であるから、有効桁抽出部165は、位置(x,y)に対応する量子化係数“-0101”から、最下位から3桁の値“101”を抽出する。
同様に、有効桁抽出部165は、位置(x+1,y)、位置(x+2,y)、および位置(x+3,y)のそれぞれの量子化係数“+0011”、“-0110”、および“+0010”から、順次、これらの最下位から3桁の値“011”、“110”、および“010”を抽出する。これにより、有効桁抽出部165からVLC符号化部166およびサイン抽出部167には、量子化係数“-0101”、“+0011”、“-0110”、および“+0010”の有効桁(の符号)“101”、“011”、“110”、および“010”が出力される。VLC符号化部166は、有効桁抽出部165から供給された符号“101”、“011”、“110”、および“010”を符号化して、w個(4個)の量子化係数の絶対値を示す符号“101011110010”を、符号連結部169に出力する。
ステップS191において、サイン抽出部167は、所定の変数をiとして、変数iを0から(w−1)まで変化させて、量子化部122から供給された、量子化係数の絶対値が0でないラインy上の位置(x+i,y)の量子化係数から、量子化係数のサインを抽出し、抽出したサイン(のデータ)をVLC符号化部168に供給する。VLC符号化部168は、サイン抽出部167からのサインを符号化し、これにより得られる量子化係数のサインを示す符号を符号連結部169に出力する。
符号連結部169は、VLC符号化部168から量子化係数のサインを示す符号が供給されると、VLC符号化部162、VLC符号化部164、VLC符号化部166、およびVLC符号化部168のそれぞれから供給された、量子化係数が全て0であるか否かを示す符号、量子化係数の最大有効桁数を示す符号、量子化係数の絶対値を示す符号、および量子化係数のサインを示す符号のそれぞれを連結して、連結された符号を符号化された画像として出力し、w個組符号化処理を終了し、図24のステップS150に処理を戻し、ステップS151以降の処理を実行する。
ここで、位置(x+i,y)におけるxの値は、最大有効桁数計算部163が記憶している変数xの値とされる。例えば、最大有効桁数計算部163が記憶している変数xの値が0であり、量子化部122からサイン抽出部167に、位置(x+i,y)(0≦i≦3)のそれぞれ、すなわち位置(0,y)、(1,y)、(2,y)、および(3,y)の量子化係数に対応する図21に示したw個(4個)の量子化係数“-0101”、“+0011”、“-0110”、および“+0010”が供給されたとすると、量子化係数“-0101”、“+0011”、“-0110”、および“+0010”のそれぞれは0ではないので、サイン抽出部167は、これらの量子化係数からサインを抽出する。
この場合、サイン抽出部167は、位置(x,y)に対応する量子化係数“-0101”から量子化係数のサイン“−”を抽出する。
同様に、サイン抽出部167は、位置(x+1,y)、位置(x+2,y)、および位置(x+3,y)のそれぞれの量子化係数“+0011”、“-0110”、および“+0010”から、順次、これらの量子化係数のサイン“+”、“−”、および“+”を抽出する。これにより、サイン抽出部167からVLC符号化部168には、量子化係数“-0101”、“+0011”、“-0110”、および“+0010”のサイン“−”、“+”、“−”、および“+”が出力される。VLC符号化部168は、サイン抽出部167から供給された量子化係数のサイン“−”、“+”、“−”、および“+”を符号化する。
例えば、VLC符号化部168は、サイン“−”が入力されると符号1を出力し、サイン“+”が入力されると符号0を出力することにより、入力されたサインを符号化する。この場合、VLC符号化部168には、量子化係数のサイン“−”、“+”、“−”、および“+”が入力されるので、VLC符号化部168は、符号“1”、“0”、“1”、“0”からなる符号“1010”を量子化係数のサインを示す符号として符号連結部169に出力する。
このようにして、エントロピ符号化部123は、サブバンドの量子化係数を、予め定められた所定の数ずつまとめて符号化し、量子化係数の最大有効桁数を示す符号、量子化係数の絶対値を示す符号、および量子化係数のサインを示す符号を出力する。
このように、サブバンドの量子化係数を、予め定められた所定の数ずつまとめて符号化することで、例えば、JPEG2000方式により画像を符号化する場合とは異なり、複数のコーディングパスに基づいて、ビットプレーンごとに複数の処理を行う必要がなく、また、可変長符号化を行うので、符号化の処理量を大幅に低減することができる。これにより、より高速に画像の符号化を行うことができ、高解像度の画像をリアルタイムで符号化するための符号化装置を安価で実現することができる。
さらに、画像符号化装置111においては、画像を符号化する場合に、符号の長さを明示的に符号化する必要がないため、符号量を少なくすることができ、符号の長さの情報を管理する必要もない。
なお、以上においては、w個の量子化係数のうち、絶対値の最も大きい量子化係数の有効桁数を、最大有効桁数を示す変数Bnewの値とすると説明したが、変数Bnewの値は、w個の量子化係数のうち、絶対値の最も大きい量子化係数の有効桁数以上の値であればよい。変数Bnewの値が大きくなると、量子化係数の絶対値を示す符号の符号量が多くなるが、変数Bnewの値を、絶対値の最も大きい量子化係数の有効桁数以上の値とすることで、量子化係数の最大有効桁数を示す符号の符号量を少なくすることができる。
次に、画像符号化装置111により符号化された画像を復号する画像復号装置について説明する。
図26は、画像復号装置の構成例を示すブロック図である。
画像復号装置211は、エントロピ復号部221、逆量子化部222、およびウェーブレット逆変換部223から構成され、エントロピ復号部221には、符号化された画像(データ)が入力される。
エントロピ復号部221は、入力された符号化された画像としての符号をエントロピ復号し、これにより得られた量子化係数を逆量子化部222に供給する。
逆量子化部222は、エントロピ復号部221から供給された量子化係数を逆量子化し、逆量子化により得られた各サブバンドのウェーブレット係数をウェーブレット逆変換部223に供給する。
ウェーブレット逆変換部223は、逆量子化部222から供給された、各サブバンドのウェーブレット係数にウェーブレット逆変換を施し、その結果得られた画像を、復号された画像として出力する。
また、このような処理を行う画像復号装置211のエントロピ復号部221は、より詳細には、例えば、図27に示すように構成される。
エントロピ復号部221は、より詳細には、符号分割部251、ライン判定部252、発生部253、VLC復号部254、VLC復号部255、VLC復号部256、量子化係数合成部257、および切替部258を有する。
符号分割部251は、ライン判定部252、VLC復号部254、VLC復号部255、およびVLC復号部256のそれぞれから供給される情報に基づいて、入力された、符号化された画像としての符号を分割し、分割された所定の長さの符号をライン判定部252、VLC復号部254、VLC復号部255、またはVLC復号部256に供給する。
すなわち、符号分割部251は、入力された符号を、符号化された1つのラインの量子化係数が全て0であるか否かを示す符号、符号化されたw個の量子化係数の最大有効桁数を示す符号、符号化されたw個の量子化係数の絶対値を示す符号、および符号化された量子化係数のサインを示す符号のそれぞれに分割し、ライン判定部252、VLC復号部254、VLC復号部255、およびVLC復号部256のそれぞれに供給する。
ライン判定部252は、符号分割部251から供給された符号に基づいて、符号化されたサブバンドの1つのラインの量子化係数が全て0であるか否かを判定し、その判定の結果を示す情報を、符号分割部251、発生部253、およびVLC復号部254に供給する。
発生部253は、ライン判定部252からの判定の結果を示す情報に基づいて、1ライン分の0である量子化係数を示す符号を発生して切替部258に供給する。
VLC復号部254は、符号分割部251から供給された、符号化されたw個の量子化係数の最大有効桁数を示す符号を復号して、符号化されたw個の量子化係数の最大有効桁数を求め、求めた最大有効桁数を示す情報を符号分割部251、VLC復号部255、および量子化係数合成部257に供給する。
VLC復号部255は、VLC復号部254からの最大有効桁数を示す情報に基づいて、符号分割部251から供給された量子化係数の絶対値を示す符号を復号し、これにより得られたw個の量子化係数の有効桁(のデータ)を、VLC復号部256および量子化係数合成部257に供給する。また、VLC復号部255は、量子化係数の絶対値を示す符号の復号の結果を示す情報を符号分割部251に供給する。
VLC復号部256は、VLC復号部255から供給された量子化係数の有効桁に基づいて、符号分割部251から供給された量子化係数のサインを示す符号を復号し、これにより得られる量子化係数のサイン(のデータ)を量子化係数合成部257に供給する。また、VLC復号部256は、量子化係数のサインを示す符号の復号の結果を示す情報を符号分割部251に供給する。
量子化係数合成部257は、VLC復号部254からの最大有効桁数を示す情報に基づいて、VLC復号部255から供給された量子化係数の有効桁およびVLC復号部256から供給された量子化係数のサインを合成し、これにより得られたw個の量子化係数を切替部258に供給する。
切替部258は、発生部253または量子化係数合成部257からの量子化係数を出力する。
図28は、符号分割部251のより詳細な構成例を示すブロック図である。
符号分割部251は、制御部271およびメモリ272を有している。制御部271は、符号化された画像としての符号が入力されると、入力された符号をメモリ272に供給して一時的に記憶させる。
そして、制御部271は、図27に示したライン判定部252、VLC復号部254、VLC復号部255、およびVLC復号部256のそれぞれから供給される情報に基づいて、メモリ272に一時的に記憶されている符号のうち、所定の長さの符号を読み出して、ライン判定部252、VLC復号部254、VLC復号部255、またはVLC復号部256に供給する。
また、符号分割部251は、図28に示した構成例の他、例えば、図29に示すように構成されてもよい。
図29に示す符号分割部251は、制御部291、スイッチ292、並びに、ノード293-1乃至ノード293-4を有する。
制御部291は、符号化された画像としての符号が符号分割部251に入力されると、図27に示したライン判定部252、VLC復号部254、VLC復号部255、およびVLC復号部256のそれぞれから供給される情報に基づいて、スイッチ292を制御し、入力された符号のうち、所定の長さの符号をライン判定部252、VLC復号部254、VLC復号部255、またはVLC復号部256に供給させる。
すなわち、ノード293-1乃至ノード293-4のそれぞれは、ライン判定部252、VLC復号部254、VLC復号部255、およびVLC復号部256のそれぞれに接続されており、制御部291は、符号の供給先として、ノード293-1乃至ノード293-4のいずれかを選択し、スイッチ292と、選択されたノードとの接続を制御する。
スイッチ292が制御部291の制御に基づいて選択されたノードを入力と接続するので、符号分割部251に入力された符号は、スイッチ292、およびスイッチ292と接続されたノードを介して、符号の供給先として選択されたライン判定部252、VLC復号部254、VLC復号部255、またはVLC復号部256に供給される。
次に、図30のフローチャートを参照して、画像復号装置211による復号処理について説明する。この復号処理は、エントロピ復号部221に符号化された画像としての符号が入力されると開始される。
ステップS231において、エントロピ復号部221は、エントロピ復号処理を行い、入力された画像としての符号をエントロピ復号し、これにより得られた量子化係数を逆量子化部222に供給する。なお、エントロピ復号処理の詳細は後述するが、このエントロピ復号処理において、エントロピ復号部221は、符号化されたサブバンドのライン上の連続する位置の量子化係数をw個ずつ復号し、復号された量子化係数を逆量子化部222に供給する。
ステップS232において、逆量子化部222は、エントロピ復号部221から供給された量子化係数を逆量子化し、逆量子化により得られた各サブバンドのウェーブレット係数をウェーブレット逆変換部223に供給する。
ステップS233において、ウェーブレット逆変換部223は、逆量子化部222から供給された、各サブバンドのウェーブレット係数にウェーブレット逆変換を施し、その結果得られた画像を出力して復号処理は終了する。
このようにして、画像復号装置211は、符号化された画像を復号して出力する。
次に、図31のフローチャートを参照して、図30のステップS231の処理に対応するエントロピ復号処理について説明する。
ステップS261において、ライン判定部252は、これから復号するサブバンドのラインを示す変数yをy=0として、これを記憶する。
ステップS262において、VLC復号部254は、ライン判定部252が記憶している変数yにより示されるラインyよりも1つ前のライン(y−1)上の最初に入力されるw個の量子化係数の最大有効桁数を示す変数BinitをBinit=0として、これを記憶する。
例えば、ライン(y−1)が、図20に示したラインL1である場合、ライン(y−1)上の最初に入力されるw個の量子化係数の最大有効桁数を示す変数Binitの値は、ラインL1の図中、左端の位置からw個の量子化係数の最大有効桁数となる。また、ライン判定部152が記憶している変数yがy=0である場合、ライン(y−1)は存在しないので、変数Binitの値は、Binit=0とされる。
また、ステップS262において、符号分割部251は、入力された符号のうち、最初の1ビットの符号を、これから復号するラインの量子化係数が全て0であるか否かを示す符号として、ライン判定部252に供給する。
ステップS263において、ライン判定部252は、符号分割部251から読み込んだ(供給された)1ビットの符号が0であるか否かを判定し、その判定の結果を示す情報を生成して発生部253、VLC復号部254、および符号分割部251に供給する。
ステップS263において、符号が0であると判定した場合、ラインyの量子化係数が全て0であるので、ライン判定部252は、処理をステップS264に進める。ステップS264において発生部253は、ライン判定部252からの判定の結果を示す情報に基づいて、ラインyの量子化係数を全て0とする。そして、発生部253は、ラインyの量子化係数を示す符号を発生して切替部258に供給する。
例えば、図21に示したように、1つの量子化係数が4桁で表わされ、1つのラインの量子化係数が5個である場合、発生部253は、ラインyの量子化係数を示す符号として、20(=4×5)個の0を発生して切替部258に供給する。切替部258は、発生部253から供給された連続する20個の0を、1つのラインの量子化係数を示す符号として、逆量子化部222に出力する。
ステップS265において、VLC復号部254は、ライン判定部252からの判定の結果を示す情報に基づいて、記憶している変数Binitの値をBinit=0とし、変数Binitを更新する。
ステップS266において、ライン判定部252は、復号しているサブバンドのラインのうち、未処理のラインがあるか否かを判定する。すなわち、ライン判定部252は、復号しているサブバンドの全てのライン上の位置の量子化係数を復号したか否かを判定する。
ステップS266において、未処理のラインがあると判定した場合、ライン判定部252は、自分自身が記憶している変数yにより示されるラインyの次のライン(y+1)上の各位置の量子化係数を復号するので、処理をステップS267に進める。
ステップS267において、ライン判定部252は、記憶しているラインを示す変数yをインクリメントしてy=y+1とし、処理をステップS263に戻し、それ以降の処理を実行させる。
これに対して、ステップS266において、未処理のラインが無いと判定した場合、サブバンドを構成する全てのラインについて量子化係数が復号されたので、ライン判定部252は、エントロピ復号処理を終了し、処理を図30のステップS231に戻し、ステップS232以降の処理を実行させる。
また、図31のステップS263において、符号が0でないと判定した場合、ライン判定部252は、処理をステップS268に進める。ステップS268において、VLC復号部254は、ライン判定部252からの判定の結果を示す情報に基づいて、これから復号するw個の量子化係数のうち、最初に入力される量子化係数に対応するラインy上の位置のx座標を示す変数xの値をx=0として、この変数xを記憶する。
また、ステップS268において、VLC復号部254は、前回復号されたw個の量子化係数の最大有効桁数を示す変数Bの値をB=Binitとして、この変数Bを記憶する。すなわち、VLC復号部254は、変数Bの値を記憶している変数Binitの値として変数Bを更新し、更新された変数Bの値を記憶する。
さらに、ステップS268において、符号分割部251は、ライン判定部252からの判定の結果を示す情報に基づいて、入力された符号の次の1ビットの符号を、これから復号するw個の量子化係数の最大有効桁数が変化したか否かを示す符号として、VLC復号部254に供給する。
ステップS269において、エントロピ復号部221は、w個組復号処理を行う。なお、w個組復号処理の詳細は後述するが、このw個組復号処理において、エントロピ復号部221は、ライン判定部252が記憶している変数yにより示されるラインy上の連続するw個の位置の量子化係数を復号する。
ステップS270において、VLC復号部254は、ラインyに未処理の量子化係数があるか否かを判定する。すなわち、VLC復号部254は、ライン判定部252が記憶している変数yにより示されるラインy上の位置の全ての量子化係数を復号したか否かを判定する。
ステップS270において、ラインyに未処理の量子化係数があると判定した場合、次のw個の量子化係数を復号するので、VLC復号部254は、処理をステップS271に進める。
ステップS271において、VLC復号部254は、記憶している変数xを、x=x+wとして、処理をステップS269に戻す。これにより、その後のステップS269の処理において、ラインy上の位置(x+w,y)、(x+w+1,y)、・・・、(x+2w−1,y)のそれぞれの量子化係数が復号される。
また、ステップS270において、ラインyに未処理の量子化係数がないと判定した場合、VLC復号部254は、ラインy上の全ての位置の量子化係数が復号されたので、処理をステップS266に戻し、それ以降の処理を実行させる。
このようにして、エントロピ復号部221は、サブバンドの各位置の量子化係数を所定の数ずつラスタスキャン順に復号する。
このように、サブバンドの各位置の量子化係数を所定の数ずつラスタスキャン順に復号することによって、符号化された量子化係数を、入力された順番に処理することができ、量子化係数の復号により生じる遅延をより少なくすることができる。
次に、図32のフローチャートを参照して、図31のステップS269の処理に対応するw個組復号処理について説明する。
上述したように、図31のステップS268において、符号分割部251からVLC復号部254には、これから復号するw個の量子化係数の最大有効桁数が変化したか否かを示す1ビットの符号が供給される。
図32のステップS311において、VLC復号部254は、読み込んだ(供給された)1ビットの符号が0であるか否かを判定する。
ステップS311において、読み込んだ符号が0であると判定した場合、最大有効桁数は変化していないので、VLC復号部254は、最大有効桁数が変化していない旨の情報を生成し、それを符号分割部251、VLC復号部255、および量子化係数合成部257に供給し、ステップS312乃至ステップS314の各処理をスキップして、ステップS315に処理を進める。
すなわち、最大有効桁数が変化したか否かを示す符号が0である場合、図21を参照して説明したように、最大有効桁数が変化したか否かを示す1ビットの符号0の後には、最大有効桁数が増加したか、または減少したかを示す符号、および最大有効桁数の変化量を示す符号ではなく、量子化係数の絶対値を示す符号が入力されるので、最大有効桁数が増加したか、または減少したかを示す符号、および最大有効桁数の変化量を示す符号を復号する処理であるステップS312乃至ステップS314の各処理はスキップされる。
これに対して、ステップS311において、読み込んだ1ビットの符号が0でないと判定した場合、最大有効桁数が変化したので、VLC復号部254は、処理をステップS312に進め、符号分割部251から符号を1ビット読み込み、その値を所定の変数mとして記憶する。
ステップS313において、VLC復号部254は、符号が1となるまで(符号1を読み込むまで)符号分割部251から符号を読み込み、それまでに読み込んだ符号0の数を所定の変数nとして記憶する。例えば、VLC復号部254が符号分割部251から読み込んだ3つ目の符号が1であった場合、すなわち、VLC復号部254が符号“001”を読み込んだ場合、VLC復号部254が符号1を読み込むまでに、読み込んだ符号0の数は2であるので、VLC復号部254は、読み込んだ符号0の数である2を変数nの値として記憶する。
ステップS314において、VLC復号部254は、最大有効桁数を示す変数Bの値を以下の式(9)により求め、求められた変数Bの値を記憶する。
B=B+(n+1)×(−1)^m ・・・(9)
ここで、式(9)における左辺は、新たに求められる変数Bの値を表わしており、右辺のBは記憶している変数Bの値を表わしている。また、式(9)における記号“^”は、冪乗を表わしている。したがって、(−1)^mは、(−1)のm乗を表わしている。
VLC復号部254は、記憶している変数B、変数m、および変数nに基づいて、式(9)を計算して記憶している変数Bを更新する。VLC復号部254は、最大有効桁数を示す変数Bを更新すると、更新された最大有効桁数を示す情報を生成して、符号分割部251、VLC復号部255、および量子化係数合成部257に供給する。
ステップS314において新たな最大有効桁数を求めるか、ステップS311において、読み込んだ1ビットの符号が0であると判定すると、VLC復号部254は、ステップS315に処理を進め、記憶している変数xの値が0である場合、記憶している変数Binitの値をBinit=Bとする。
すなわち、VLC復号部254は、記憶している変数xの値が0である場合、記憶している、ライン(y−1)上の最初に入力されるw個の量子化係数の最大有効桁数を示す変数Binitの値を、これから復号するw個の量子化係数の最大有効桁数を示す変数Bの値として、変数Binitを更新する。
このように、変数x=0である場合に、変数Binitの値をBinit=Bとすることで、次のライン(例えば、ライン(y+1))のx=0から始まるw個の量子化係数について、前のライン(例えば、ラインy)のx=0から始まるw個の量子化係数の最大有効桁数との相関関係を利用して量子化係数の復号を行うことができる。
ステップS316において、VLC復号部255は、所定の変数をiとして、変数iを0から(w−1)まで変化させて、符号分割部251から符号をBビットずつ読み込み、読み込んだBビットの符号を、ラインy上の位置(x+i,y)の量子化係数の有効桁を示す符号として、VLC復号部256および量子化係数合成部257に供給(出力)する。また、VLC復号部255は、量子化係数の有効桁を示す情報を生成して、符号分割部251に供給する。
ここで、位置(x+i,y)におけるxの値は、VLC復号部254が記憶している変数xの値とされる。例えば、VLC復号部254が記憶している変数xの値が0であり、VLC復号部255が記憶している変数Bの値が3である場合、VLC復号部255は、変数i=0として符号分割部251から3ビットの符号を読み込み、読み込んだ3ビットの符号を位置(0,y)における量子化係数の有効桁として出力する。
同様に、VLC復号部255は、変数i=1として符号分割部251からさらに3ビットの符号を読み込み、その符号を位置(1,y)における量子化係数の有効桁として出力し、変数i=2として符号分割部251から次の3ビットの符号を読み込み、その符号を位置(2,y)における量子化係数の有効桁として出力し、変数i=3として符号分割部151から、さらに次の3ビットの符号を読み込み、その符号を位置(3,y)における量子化係数の有効桁として出力する。
ステップS317において、VLC復号部256は、所定の変数をiとして、変数iを0から(w−1)まで変化させて、ラインy上の位置(x+i,y)の量子化係数の有効桁(絶対値)が0でなければ、符号分割部251から符号を1ビット読み込む。そして、VLC復号部256は、読み込んだ符号を復号し、これにより得られた符号を量子化係数のサインとして量子化係数合成部257に供給(出力)する。また、VLC復号部256は、量子化係数のサインを示す情報を生成して、符号分割部251に供給する。
ここで、位置(x+i,y)におけるxの値は、VLC復号部254が記憶している変数xの値とされる。例えば、VLC復号部254が記憶している変数xの値が0であり、VLC復号部255から0でない有効桁(を示す符号)が供給された場合、VLC復号部256は、変数i=0として符号分割部251から1ビットの符号を読み込み、その符号が0であれば、位置(0,y)における量子化係数のサイン“−”を示す符号を量子化係数合成部257に供給し、読み込んだ符号が1であれば、位置(0,y)における量子化係数のサイン“+”を示す符号を量子化係数合成部257に供給する。
また、VLC復号部256は、VLC復号部255から供給された有効桁(を示す符号)の絶対値が0である場合、位置(0,y)における量子化係数のサインはないので、符号分割部251から符号を読み込まない。
同様にして、VLC復号部255から次に供給された有効桁(の絶対値)が0でない場合、VLC復号部256は、変数i=1として符号分割部251から1ビットの符号を読み込み、その符号が0であれば、サイン“−”を示す符号を、読み込んだ符号が1であれば、サイン“+”を示す符号を量子化係数合成部257に供給する。
さらに、VLC復号部255から次に供給された有効桁が0でない場合、VLC復号部256は、変数i=2として符号分割部251から1ビットの符号を読み込み、その符号が0であれば、サイン“−”を示す符号を、読み込んだ符号が1であれば、サイン“+”を示す符号を量子化係数合成部257に供給する。また、VLC復号部255から次に供給された有効桁が0でない場合、VLC復号部256は、変数i=3として符号分割部251から1ビットの符号を読み込み、その符号が0であれば、サイン“−”を示す符号を、読み込んだ符号が1であれば、サイン“+”を示す符号を量子化係数合成部257に供給する。
ステップS318において、量子化係数合成部257は、VLC復号部255から供給された有効桁、およびVLC復号部255から供給されたサインを合成し、これにより得られた量子化係数を、切替部258を介して逆量子化部222に出力し、w個組復号処理を終了して処理を図31のステップS269に戻し、ステップS270以降の処理を実行させる。
例えば、出力する量子化係数の絶対値の桁数は予め定められている。予め定められた出力する量子化係数の絶対値の桁数が4桁であり、VLC復号部254からの最大有効桁数を示す情報により示される最大有効桁数が3である場合、VLC復号部255から有効桁“101”が供給され、VLC復号部255からサイン“−”を示す符号が供給されたとき、量子化係数合成部257は、量子化係数“-0101”を出力する。
すなわち、量子化係数合成部257は、量子化係数の絶対値の桁数は4桁であり、有効桁は“101”(3桁)であるので、有効桁“101”の最上位のビットのさらに1つ上位のビットを0として、量子化係数の絶対値を4桁である“0101”とする。そして、さらに、量子化係数のサイン“−”と、量子化係数の絶対値“0101”とを合成して得られる“-0101”を量子化係数として出力する。
なお、量子化係数合成部257は、VLC復号部255から供給された有効桁が0である場合には、サインのない量子化係数を出力する。例えば、予め定められた出力する量子化係数の絶対値の桁数が4桁であり、VLC復号部254からの最大有効桁数を示す情報により示される最大有効桁数が3である場合、VLC復号部255から有効桁“000”が供給されたとき、量子化係数合成部257は、量子化係数“0000”を出力する。
このようにして、エントロピ復号部221は、符号化されたサブバンドの量子化係数を、予め定められた所定の数ずつまとめて復号する。
このように、符号化されたサブバンドの量子化係数を、予め定められた所定の数ずつまとめて復号することで、例えば、JPEG2000方式により画像を復号する場合とは異なり、複数のコーディングパスに基づいて、ビットプレーンごとに複数の処理を行う必要がなく、より高速に画像の復号を行うことができる。これにより、高解像度の画像をリアルタイムで復号するための復号装置を安価で実現することができる。
ところで、以上において説明した画像符号化装置111にいては、量子化係数の絶対値を符号化(または復号)する場合に、予め定められたw個の量子化係数の絶対値を順番に符号化すると説明したが、汎用DSP(Digital Signal Processor)や、汎用CPUにおいて用いられているSIMD(Single Instruction Multiple Data)演算命令を利用して、w個の量子化係数を同時に(並列に)符号化(または復号)することにより、より高速に画像を符号化(または復号)することができる。
ここで、SIMD演算命令の一例としては、例えば、インテル株式会社のCPUにおいて用いられているMMX(MultiMedia eXtension)、SSE(Streaming SIMD Extensions)、SSE2、SSE3などがある。
このようなSIMD演算命令を利用して量子化係数の絶対値を符号化する場合、画像符号化装置111のエントロピ符号化部123は、例えば、図33に示すように構成される。
図33に示すエントロピ符号化部123は、ライン判定部161、VLC符号化部162、最大有効桁数計算部163、VLC符号化部164、有効桁抽出部165、VLC符号化部166、サイン抽出部167、およびVLC符号化部168が設けられている点において、図22に示したエントロピ符号化部123と同様であり、符号連結部169に新たにバッファ401が設けられている点において異なる。なお、図33において、図22における場合と対応する部分については同一の符号を付してあり、その説明は適宜省略する。
符号連結部169のバッファ401には、VLC符号化部162、VLC符号化部164、VLC符号化部166、およびVLC符号化部168のそれぞれから供給された、ラインの量子化係数が全て0であるか否かを示す符号、最大有効桁数を示す符号、量子化係数の絶対値を示す符号、および量子化係数のサインを示す符号のそれぞれが一時的に記憶される。
バッファ401の記憶領域は、32ビットごとに管理され、バッファ401に入力される符号(データ)は、スカラ演算処理に用いられる符号と、ベクトル演算処理に用いられる符号とに分けられて記憶される。すなわち、1つの32ビットの記憶領域には、一時的に記憶する符号(データ)として、スカラ演算処理に用いられる符号、またはベクトル演算処理に用いられる符号が記憶される。
図33のエントロピ符号化部123においては、量子化係数の絶対値がSIMD演算命令を利用して並列に符号化されるので、量子化係数の絶対値を示す符号がベクトル演算処理に用いられる符号とされ、その他の符号は、スカラ演算処理に用いられる符号とされる。
なお、以下の説明においては、バッファ401に設けられる32ビットの記憶領域のうち、スカラ演算処理に用いられる符号が記憶される記憶領域をスカラ領域とも称し、ベクトル演算処理に用いられる符号が記憶される記憶領域をベクトル領域とも称する。
次に、図34を参照して、図33のエントロピ符号化部123が行うエントロピ符号化について説明する。
例えば、図34の左上に示すように、図21に示した12個の量子化係数“-0101”、“+0011”、“-0110”、“+0010”、“+0011”、“+0110”、“0000”、“-0011”、“+1101”、“-0100”、“+0111”、および“-1010”がエントロピ符号化部123に順番に入力されたとする。
すると、図21を参照して説明した場合と同様に、エントロピ符号化部123の符号連結部169には、これから符号化するラインの量子化係数が全て0であるか否かを示す符号“1”、および最初に入力された4つの量子化係数“-0101”、“+0011”、“-0110”、および“+0010”の最大有効桁数を示す符号“10001”が供給される。
そして、これらの量子化係数が全て0であるか否かを示す符号“1”、および量子化係数の最大有効桁数を示す符号“10001”からなる符号“110001”は、矢印A11に示すように、符号連結部169のバッファ401に設けられた32ビットのスカラ領域に記憶される。
図34の例においては、スカラ領域は、さらに4つの8ビットの領域に分けられており、スカラ領域には、その領域に記憶される符号が図中、左から右方向に、上位のビットから順番に格納されて記憶される。そして、1つのスカラ領域の全体に符号が格納されると、すなわち、1つのスカラ領域に32ビットの符号が格納されると、バッファ401には、新たな1つのスカラ領域が設けられ、新たに設けられたスカラ領域に、順次スカラ演算処理に用いられる符号が格納されていく。
量子化係数が全て0であるか否かを示す符号“1”、および量子化係数の最大有効桁数を示す符号“10001”からなる符号“110001”がスカラ領域に記憶されると、次に、エントロピ符号化部123は、最初に入力されたw個(4個)の量子化係数“-0101”、“+0011”、“-0110”、および“+0010”のそれぞれの絶対値を示す最大有効桁数分の符号を、同時に(並列に並べて)ベクトル領域に記憶する。
量子化係数“-0101”、“+0011”、“-0110”、および“+0010”の最大有効桁数は、図21を参照して説明したように、“3”であるから、これらの4個の量子化係数の絶対値を示す符号は、それぞれ“101”、“011”、“110”、および“010”となり、矢印A12に示すように、量子化係数の絶対値を示す符号“101”、“011”、“110”、および“010”は、バッファ401に設けられた1つのベクトル領域に並列に並べられて格納され、記憶される。
ここで、ベクトル領域は、さらに4つの8ビットの領域に分けられており、ベクトル領域の4つの領域のそれぞれには、同じ長さの(ビット長の)4つの量子化係数の絶対値を示す符号のそれぞれが、図中、左から右方向に、上位のビットから順番に格納されて記憶される。
矢印A12により示されるベクトル領域においては、図中、左側の8ビットの領域に量子化係数の絶対値を示す符号“101”が左側から格納され、左から2番目の8ビットの領域に符号“011”が左側から格納され、右から2番目の領域に符号“110”が左側から格納され、さらに、一番右側の領域には符号“010”が左側から格納されて記憶されている。
また、ベクトル領域もスカラ領域における場合と同様に、1つのベクトル領域の全体に符号が格納されると、すなわち、1つのベクトル領域に32ビットの符号が格納されると、バッファ401には、新たな1つのベクトル領域が設けられ、新たに設けられたベクトル領域に、順次ベクトル演算処理に用いられる符号が格納されていく。
そして、4つの量子化係数“-0101”、“+0011”、“-0110”、および“+0010”の絶対値を示す符号がベクトル領域に記憶されると、エントロピ符号化部123は、矢印A13に示すように、これらの4つの量子化係数のサインを示す符号をスカラ領域に格納して記憶する。
矢印A11に示したようにスカラ領域には、量子化係数が全て0であるか否かを示す符号“1”、および量子化係数の最大有効桁数を示す符号“10001”からなる符号“110001”が既に記憶されているので、エントロピ符号化部123は、矢印A13に示すように、量子化係数“-0101”、“+0011”、“-0110”、および“+0010”のサインを示す符号“1010”を、スカラ領域の既に記憶されている符号“110001”の右側に(符号“110001”に続けて)格納して記憶する。
さらに、最初の4つの量子化係数が符号化されると、エントロピ符号化部123は、次の4つの量子化係数“+0011”、“+0110”、“0000”、および“-0011”を符号化する。
まず、エントロピ符号化部123は、前回符号化した4つの量子化係数の最大有効桁数“3”と、今回符号化する量子化係数“+0011”、“+0110”、“0000”、および“-0011”の最大有効桁数“3”とを比較し、最大有効桁数が変化していないので、矢印A14に示すように、最大有効桁数を示す符号として、最大有効桁数が変化していないことを示す符号“0”を、既に記憶されている符号“1100011010”に続けてスカラ領域に格納して記憶する。
次に、エントロピ符号化部123は、今回入力されたw個(4個)の量子化係数“+0011”、“+0110”、“0000”、および“-0011”のそれぞれの絶対値を示す最大有効桁数分の符号“011”、“110”、“000”、および“011”のそれぞれを、矢印A15に示すようにベクトル領域に同時に格納して記憶する。
矢印A12に示したように、ベクトル領域の図中、左側の8ビットの領域、左から2番目の8ビットの領域、右から2番目の8ビットの領域、および一番右側の8ビットの領域のそれぞれには、既に符号“101”、“011”、“110”、および“010”のそれぞれが記憶されているので、エントロピ符号化部123は、矢印A15に示すように、今回入力された量子化係数の絶対値を示す符号“011”、“110”、“000”、および“011”のそれぞれを、ベクトル領域に既に記憶されている符号“101”、“011”、“110”、および“010”のそれぞれの右側に続けて格納して記憶する。
さらに、エントロピ符号化部123は、矢印A16に示すように、今回入力された4つの量子化係数“+0011”、“+0110”、“0000”、および“-0011”のうち、絶対値が0でない量子化係数のサインを示す符号“001”を、スカラ領域内の既に記憶されている符号“11000110100”の右側に続けて格納して記憶する。
そして、4つの量子化係数“+0011”、“+0110”、“0000”、および“-0011”が符号化されると、エントロピ符号化部123は、次の4つの量子化係数“+1101”、“-0100”、“+0111”、および“-1010”の符号化を行う。
まず、エントロピ符号化部123は、今回入力された4つの量子化係数“+1101”、“-0100”、“+0111”、および“-1010”の最大有効桁数“4”と、前回符号化した4つの量子化係数“3”とを比較して、矢印A17に示すように、最大有効桁数が変化したことを示す符号“1”、最大有効桁数が増加したことを示す符号“0”、および最大有効桁数の変化量を示す符号“1”からなる、最大有効桁数を示す符号“101”をスカラ領域に格納して記憶する。
この場合、スカラ領域には、矢印A16に示したように、既に符号“11000110100001”が記憶されているので、エントロピ符号化部123は、矢印A17に示すように、この符号“11000110100001”の図中、右側に最大有効桁数を示す符号“101”を格納する。
さらに、4つの量子化係数“+1101”、“-0100”、“+0111”、および“-1010”の最大有効桁数を示す符号が記憶されると、エントロピ符号化部123は、これらの量子化係数の絶対値を示す符号“1101”、“0100”、“0111”、および“1010”のそれぞれを、矢印A18に示すようにベクトル領域に同時に格納して記憶する。
矢印A15に示したように、ベクトル領域の図中、左側の8ビットの領域、左から2番目の8ビットの領域、右から2番目の8ビットの領域、および一番右側の8ビットの領域のそれぞれには、既に符号“101011”、“011110”、“110000”、および“010011”のそれぞれが記憶されており、左側の8ビットの領域、左から2番目の8ビットの領域、右から2番目の8ビットの領域、および一番右側の8ビットの領域のそれぞれには、それぞれ2ビットの符号しか記憶することができない。
そこで、エントロピ符号化部123は、矢印A18に示すように、バッファ401に新たなベクトル領域を確保し(設け)、今回入力された量子化係数の絶対値を示す符号“1101”、“0100”、“0111”、および“1010”のそれぞれのうちの上位の2ビットの符号“11”、“01”、“01”、および“10”のそれぞれを、ベクトル領域に既に記憶されている符号“101011”、“011110”、“110000”、および“010011”のそれぞれの右側に続けて格納して記憶し、今回入力された量子化係数の絶対値を示す符号“1101”、“0100”、“0111”、および“1010”のそれぞれのうちの下位の2ビットの符号“01”、“00”、“11”、および“10”のそれぞれを、新たに設けられたベクトル領域(矢印A18により示される2つのベクトル領域のうち、図中、下側のベクトル領域)の図中、左側の8ビットの領域、左から2番目の8ビットの領域、右から2番目の8ビットの領域、および一番右側の8ビットの領域のそれぞれの左側に格納して記憶する。
そして、4つの量子化係数“+1101”、“-0100”、“+0111”、および“-1010”の絶対値を示す符号が記憶されると、矢印A19に示すように、エントロピ符号化部123は、これらの4つの量子化係数のうち、絶対値が0でない量子化係数のサインを示す符号“0101”を、スカラ領域内の既に記憶されている符号“11000110100001101”の右側に続けて格納して記憶する。
このようにして、入力された量子化係数が符号化されると、エントロピ符号化部123は、矢印A19により示されるスカラ領域に記憶されている符号、矢印A19により示される2つのベクトル領域のうちの図中、上側のベクトル領域に記憶されている符号、および下側のベクトル領域に記憶されている符号を、符号化された画像として順番に出力する。
この場合、矢印A19により示されるスカラ領域の図中、右側の11ビットには、符号が格納されていない。また、矢印A19により示される2つのベクトル領域のうちの下側のベクトル領域の左側の8ビットの領域、左から2番目の8ビットの領域、右から2番目の8ビットの領域、および一番右側の8ビットの領域のそれぞれの右側の6ビットの領域にも、符号が格納されていない。
このように、スカラ領域およびベクトル領域に格納されて記憶されている符号を、符号化された画像として出力する場合に、入力された量子化係数の符号化が終了した時点において、スカラ領域およびベクトル領域に符号が格納されていない領域があるときには、その符号が格納されていない領域に、例えば符号“0”などの任意の符号が格納されて記憶されてから、スカラ領域およびベクトル領域に記憶された符号が符号化された画像として出力される。
したがって、例えば、矢印A19に示す例においては、符号化された画像として、スカラ領域に格納された符号“11000110100001101010100000000000”、図中、上側のベクトル領域に記憶された符号“10101111011110011100000101001110”、および下側のベクトル領域に記憶された符号“01000000000000001100000010000000”が順番に出力される。ここで、スカラ領域およびベクトル領域のうち、量子化係数の符号化が終了した時点で符号が格納されていなかった領域に格納される任意の符号は、復号時に読み込まれることはないので、どのような符号が格納されてもよい。
画像符号化装置111は、SIMD演算命令を利用して量子化係数の絶対値を符号化する場合においても、画像が入力されると、図23のフローチャートを参照して説明した符号化処理を行う。また、図23のステップS113の処理に対応する図24のエントロピ符号化処理においては、図24のステップS141乃至ステップS149の各処理、ステップS151の処理、およびステップS152の処理については、画像符号化装置111は、SIMD演算命令を利用しない場合と同様の処理(図24を参照して説明した処理)を行い、ステップS150に対応するw個組符号化処理において、SIMD演算命令を利用しない場合とは異なる処理を行う。
以下、図35のフローチャートを参照して、画像符号化装置111がSIMD演算命令を利用して量子化係数の絶対値を符号化する場合における、w個組符号化処理について説明する。なお、ステップS411乃至ステップS419の各処理は、図25のステップS181乃至ステップS189の各処理にそれぞれ対応し、それぞれ同様に実行される。従って、それらの説明は繰り返しになるので省略する。
また、SIMD演算命令を利用して量子化係数の絶対値を符号化する場合、図24または図35を参照して説明した処理において、VLC符号化部162から符号連結部169に供給される、これから符号化するラインの量子化係数の絶対値が全て0であるか否かを示す符号、VLC符号化部164から符号連結部169に供給される量子化係数の最大有効桁数を示す符号、およびVLC符号化部168から符号連結部169に供給される量子化係数のサインを示す符号のそれぞれは、図34を参照して説明したように、符号連結部169のバッファ401に設けられたスカラ領域に格納されて記憶される。
ステップS420において、有効桁抽出部165は、量子化部122から供給された、w個の連続するラインy上の位置(x,y)、(x+1,y)、・・・、(x+w−1,y)の量子化係数から、量子化係数の有効桁を同時に抽出する。有効桁抽出部165は、抽出した量子化係数の有効桁をVLC符号化部166およびサイン抽出部167に供給する。また、VLC符号化部166は、有効桁抽出部165から供給された有効桁に基づいて(有効桁を符号化して)、w個の量子化係数の絶対値を示す符号を同時に符号連結部169に出力する。
ここで、位置(x,y)におけるxの値は、最大有効桁数計算部163が記憶している変数xの値とされ、yの値は、ライン判定部161が記憶している変数yの値とされる。例えば、有効桁抽出部165が量子化係数の有効桁として、有効桁“101”、“011”、“110”、および“010”を抽出した場合、VLC符号化部166から符号連結部169には4つの量子化係数の絶対値を示す符号“101”、“011”、“110”、および“010”が供給されるので、符号連結部169は、供給されたこれらの量子化係数の絶対値を示す符号を符号化して、図34の矢印A12に示したように、ベクトル領域に格納して記憶させる。
ステップS421において、サイン抽出部167は、所定の変数をiとして、変数iを0から(w−1)まで変化させて、量子化部122から供給された、量子化係数が0でないラインy上の位置(x+i,y)の量子化係数から、量子化係数のサインを抽出し、抽出したサイン(のデータ)をVLC符号化部168に供給する。ここで、位置(x,y)におけるxの値は、最大有効桁数計算部163が記憶している変数xの値とされ、yの値は、ライン判定部161が記憶している変数yの値とされる。
VLC符号化部168は、サイン抽出部167からのサインを符号化し、これにより得られる量子化係数のサインを示す符号を符号連結部169に出力する。また、符号連結部169は、図34を参照して説明したように、VLC符号化部168から供給された量子化係数のサインを示す符号を、バッファ401のスカラ領域に格納して記憶させる。
符号連結部169は、量子化係数のサインを示す符号をバッファ401のスカラ領域に格納して記憶させると、図34を参照して説明したように、バッファ401のスカラ領域に記憶されている符号、およびベクトル領域に記憶されている符号を連結して、連結された符号を符号化された画像として出力し、w個組符号化処理を終了し、処理を図24のステップS150に戻し、ステップS151以降の処理を実行させる。
このようにして、エントロピ符号化部123は、予め定められた数の量子化係数の絶対値を同時に符号化する。
従来のJPEG2000方式によるエントロピ符号化においては、複数のコーディングパスに基づいて、量子化係数をビットプレーンごとに算術符号化するため、エントロピ符号化における所定の処理を並列して同時に行うことは困難であったが、エントロピ符号化部123においては、ビットプレーン単位で複雑な処理を行う必要はないので、複数の量子化係数の絶対値を同時に符号化することができる。
このように、予め定められた数の量子化係数の絶対値を同時に符号化することによって、複数の処理を同時(並列)に行うことができ、より高速に画像を符号化することができる。
なお、ステップS421の処理において、w個の量子化係数のサインの符号化を順番に行うと説明したが、量子化係数の絶対値の符号化における場合と同様に、SIMD演算命令を利用することで、w個の量子化係数のサインの符号化を同時に行うようにしてもよい。この場合、符号化により得られたw個の量子化係数のサインを示す符号のそれぞれは、バッファ401のベクトル領域にw個に分けられて格納される。
また、バッファ401においては、1つのスカラ領域またはベクトル領域を32ビットの領域とし、その32ビットの領域をさらに4つの8ビットの領域に分けて使用すると説明したが、1つのスカラ領域またはベクトル領域の大きさなどは任意の大きさとすることができる。例えば、1つのスカラ領域またはベクトル領域を128ビットの領域とし、その128ビットの領域を8つの16ビットの領域に分けて使用するようにしてもよい。
さらに、SIMD演算命令を利用して符号化された画像を復号する場合、画像を復号する画像復号装置211の符号分割部251(図27)は、例えば、図28に示した構成とされ、メモリ272には、符号化された画像としての符号が、図34を参照して説明したように、32ビットずつ格納されて記憶される。
制御部271は、メモリ272から符号を読み出して出力する場合、まず、最初の32ビットの符号が格納されている記憶領域をスカラ領域として、スカラ領域の先頭から順番に、これから復号するラインの量子化係数の絶対値が全て0であるか否かを示す符号、量子化係数の最大有効桁数を示す符号、または量子化係数のサインを示す符号を読み出して出力する。
また、制御部271は、メモリ272から量子化係数の絶対値を示す符号を読み出す場合、メモリ272のスカラ領域とされた記憶領域の次の32ビットの記憶領域(したがって、この記憶領域からはまだ符号が読み出されていない)をベクトル領域として、このベクトル領域から量子化係数の絶対値を示す符号を読み出して出力する。
なお、画像が符号化される場合、復号時において最初に量子化係数の絶対値を示す符号を読み出すときに、スカラ領域とされた記憶領域の次の32ビットの記憶領域に、必ず量子化係数の絶対値を示す符号(ベクトル演算に用いられる符号)が格納されているように画像の符号化が行われる。
さらに、符号化された画像としての符号が何ビットの記憶領域に分けられてメモリ272に格納されるかは、画像符号化装置111において画像が符号化される場合に、1つのスカラ領域およびベクトル領域が何ビットとされるかに応じて変化する。すなわち、画像としての符号が分けられて格納されるメモリ272内の複数の記憶領域のそれぞれの大きさは、画像が符号化される場合における1つのスカラ領域およびベクトル領域の大きさと同じ大きさとされる。
画像復号装置211は、SIMD演算命令を利用して量子化係数の絶対値を復号する場合においても、符号化された画像が入力されると、図30のフローチャートを参照して説明した復号処理を行う。また、図30のステップS231の処理に対応する図31のエントロピ復号処理においては、図31のステップS261乃至ステップS268の各処理、ステップS270の処理、並びにステップS271の処理については、画像復号装置211は、SIMD演算命令を利用しない場合と同様の処理(図31を参照して説明した処理)を行い、ステップS269に対応するw個組復号処理において、SIMD演算命令を利用しない場合とは異なる処理を行う。
以下、図36のフローチャートを参照して、画像復号装置211がSIMD演算命令を利用して量子化係数の絶対値を復号する場合における、w個組復号処理について説明する。
なお、ステップS451乃至ステップS455の各処理は、図32のステップS311乃至ステップS315の各処理とそれぞれ対応し、それぞれ同様に実行される。従って、それらについての説明は繰り返しになるので省略する。
また、SIMD演算命令を利用して量子化係数の絶対値を復号する場合、符号分割部251のメモリ272には、例えば、図34の矢印A19に示したように、画像としての符号が3つの32ビットの領域に分けられて記憶される。そして、ライン判定部252、VLC復号部254、およびVLC復号部256のそれぞれは、3つの32ビットの領域のうち、図34中、一番上の領域をスカラ領域として、スカラ領域の先頭(図中、左側)からラインの量子化係数が全て0であるか否かを示す符号、量子化係数の最大有効桁数を示す符号、および量子化係数のサインを示す符号のそれぞれを順番に読み出して復号する。
ステップS456において、VLC復号部255は、符号分割部251から、連続するBビットの符号をw個同時に読み込み、読み込んだw個のBビットの符号のそれぞれを、ラインy上の位置(x,y)、(x+1,y)、・・・、(x+w−1,y)の量子化係数の有効桁を示す符号として、VLC復号部256および量子化係数合成部257に供給(出力)する。また、VLC復号部255は、量子化係数の有効桁を示す情報を生成して、符号分割部251に供給する。ここで、位置(x,y)におけるxの値は、VLC復号部254が記憶している変数xの値とされ、yの値は、ライン判定部252が記憶している変数yの値とされる。
例えば、予め定められた数wが4であり、変数Bの値が3であり、符号分割部251のメモリ272に、図34の矢印A19に示したように、画像としての符号が3つの32ビットの記憶領域に分けられて記憶されているとすると、図34中、一番上側の32ビットの記憶領域は、既にスカラ領域とされて、ラインの量子化係数が全て0であるか否かを示す符号、および量子化係数の最大有効桁数を示す符号が読み出されており、次の32ビットの記憶領域(上から2番目の記憶領域)からは、まだ符号が読み出されていないので、VLC復号部155は、上から2番目の記憶領域をベクトル領域として、このベクトル領域の左側の8ビットの領域、左から2番目の8ビットの領域、右から2番目の8ビットの領域、および一番右側の8ビットの領域のそれぞれの図中左側から、位置(x,y)、(x+1,y)、(x+2,y)、および(x+3,y)の量子化係数の有効桁を示す符号“101”、“011”、“110”、および“010”のそれぞれを同時に読み出して出力する。
w個の量子化係数の有効桁を示す符号が、VLC復号部256および量子化係数合成部257に供給されると、その後、ステップS457の処理およびステップS458の処理が行われるが、これらの処理は、図32のステップS317の処理およびステップS318の処理と同様なので、その説明は省略する。
このようにして、エントロピ復号部221は、予め定められた数の量子化係数の絶対値を同時に復号する。
このように、予め定められた数の量子化係数の絶対値を同時に復号することによって、複数の処理を同時(並列)に行うことができ、より高速に画像を復号することができる。
なお、ステップS457の処理において、w個の量子化係数のサインを示す符号のそれぞれの復号を順番に行うと説明したが、w個の量子化係数のサインを示す符号のそれぞれの復号を、SIMD演算命令を利用して同時に(並列に)行うようにしてもよい。
以上のように、従来のJPEG2000方式による画像の符号化(または復号)とは異なり、複数のコーディングパスに基づいて、量子化係数をビットプレーンごとに算術符号化する必要がないため、より簡単な処理でより高速に画像を符号化(または復号)することができる。
従来のJPEG2000方式においては、複数のコーディングパスに基づいて、ビットプレーン毎に処理を行うので、それらの処理を行う場合に、おおよそ量子化係数にビットプレーンの数を掛け合わせた回数程度、量子化係数にアクセスしなければならず、処理量が多かった。
また、符号化された画像をパケット化する場合に、1つの画像の符号化が完全に終了しなければパケット化の処理を開始することができないため、その分だけ遅延が生じる。さらに、JPEG2000方式においては、例えば、図2に示したサブバンド上のx方向およびy方向に平行な辺からなる矩形領域内の位置に対応する(符号化された)量子化係数が1つのパケットに格納されるため、その矩形領域のy方向の長さに応じた遅延も生じる。従来のJPEG2000方式においては、このような符号化による遅延が生じるため、リアルタイムでの処理は困難であった。なお、サブバンド上の矩形領域のy方向の長さを短くすることにより、遅延を低減することは可能であったが、この場合、符号化効率が悪くなってしまう。
これに対して、画像符号化装置111においては、上述したように、複数のコーディングパスに基づいて、量子化係数をビットプレーンごとに算術符号化する必要はなく、画像の符号化を行う場合に、量子化係数の絶対値を示す符号を出力するとき、最大有効桁数を示す符号を出力するとき、および量子化係数のサインを示す符号を出力するときに量子化係数にアクセスするだけなので、より簡単に画像を符号化することができる。
なお、最大有効桁数を示す符号および量子化係数のサインを示す符号は1ビットや0ビットであることもあるので、実質的には、画像の符号化を行う場合に、おおよそ2回程度量子化係数にアクセスするだけで画像を符号化することができる。また、画像を復号する場合、量子化係数には1度だけアクセスすればよいので、より簡単により高速に画像を復号することができる。
画像符号化装置111または画像復号装置211においては、サブバンドの量子化係数をラスタスキャン順に符号化または復号するので、量子化係数をバッファリングする必要がなく、符号化または復号による遅延を低減することができる。
さらに、実際に横1920画素×縦1080画素のYUV4:2:2形式の画像を、SIMD演算命令を利用して(但し、w=4)実際に符号化および復号したところ、次のような結果が得られた。なお、符号化を行う場合、画像をウェーブレット変換して5段階のサブバンド分解を行い、さらに、各サブバンドのウェーブレット係数を量子化して得られた量子化係数を符号化した。また、符号化および復号に必要な機能ブロック(例えば、図33のエントロピ符号化部123および図27のエントロピ復号部221)、並びにJPEG2000方式により画像を符号化および復号する機能ブロックは、Pentium(登録商標)4(インテル株式会社の商標)と称されるCPU(クロック周波数3.0GHz)に所定のプログラムを実行させることにより実現させた。
従来のJPEG2000方式により1フレーム分の画像を符号化した場合、その符号量は291571バイトであり、符号化に必要とされた時間は、0.26157秒であった。また、符号化された画像を復号するために必要な時間は0.24718秒であった。
これに対して、図33のエントロピ符号化部123により、1フレーム分の画像を符号化した場合、その符号量は343840バイトであり、符号化に必要とされた時間は、0.03453秒であった。また、符号化された画像を、図27のエントロピ復号部221により復号するために必要な時間は0.02750秒であった。
動画像においては、多くの場合、1秒間に30フレーム表示されるので、1フレーム当たり0.033(=1/30)秒で符号化または復号することができれば、画像をリアルタイムに処理することができる。JPEG2000方式では、符号化に必要な時間は0.26157秒であり、復号に必要な時間は0.24718秒であるので、画像をリアルタイムに処理することは困難であるが、図33のエントロピ符号化部123により画像を符号化させる場合には、符号化に必要な時間は0.03453秒であり、ほぼリアルタイムに画像を処理することができる。また、図27のエントロピ復号部221により画像を復号する場合、復号に必要な時間は0.02750秒であるので、十分にリアルタイムで処理を行うことができる。
以上においては、画像データを符号化する例、または、画像データが符号化された符号化データを復号する例について説明したが、画像データに限らず、例えば、音声データなどを符号化する場合や、音声データ等が符号化された符号化データを復号する場合にも適用することが可能である。例えば、音声データを符号化する場合、音声データとして入力された符号により表わされるw個の所定の数値の最大有効桁数を示す符号、それらの数値の絶対値を示す符号、およびそれらの数値のサインを示す符号が符号化された音声データとして出力される。
また本実施の形態の特徴についてさらに付言すると、本実施の形態において説明した符号化方式では、量子化係数が可逆符号化される。そのため、例えば、人間の視覚特性に合わせて高域の係数ほど大きな量子化ステップサイズで量子化されるようにすることにより、発生符号量あたりの画質を大きく向上させることが出来る。また、例えば、特定の空間範囲で用いる量子化ステップサイズを小さくするようにすることにより、その空間範囲の画質を向上させることもできる。
さらに、本実施の形態において説明した符号化方式では、絶対値の有効桁部分を並べたものが符号される。仮に、絶対値の有効桁部分がVLC符号化されて送出されるようにすると、絶対値の有効桁数がNの場合には、2^(N*W)個のエントリを持つ非常に大きなVLCテーブルが必要になる(演算処理の負荷や処理時間だけでなく、VLCテーブルを保持するのに必要なメモリの容量も増大する)。これに対して、本実施の形態において説明した符号化方式においてはこのような大きなテーブルを使う必要がない(演算処理の負荷や処理時間だけでなく、メモリの容量を低減させることができる)。
また、VLCよりも圧縮率が高い算術符号を使うことも考えられるが、例えばJPEG2000のような算術符号化を用いた圧縮方式を用いた場合でも、本実施の形態において説明した符号化方式の場合と比べて、圧縮率が大きく向上することはない。つまり、本実施の形態において説明した符号化方式は、符号化処理が容易でありながら圧縮率が高い。
本実施の形態において説明した符号化方式は、w個組の係数における絶対値の最大有効桁数を符号化するので、隣同士の係数の有効桁数が似ていることを利用して発生符号量を低減させることができる。
また、本実施の形態において説明した符号化方式は、w個組の係数における絶対値の最大有効桁数を符号化するときに差分符号化を行うので、この点でも隣同士の係数の有効桁数が似ていることを利用して発生符号量を低減させることができる。
以上に説明した実施の第6の形態のエントロピ符号化部123によるエントロピ符号化処理、およびエントロピ復号部221によるエントロピ復号処理は、上述した実施の第1の形態乃至第5の形態のそれぞれに適用することができ、画像符号化処理や画像復号処理全体の遅延時間、消費電力、および処理に必要なバッファメモリ量等をさらに低減させることができる。例えば、エントロピ符号化部123を図1の画像符号化装置1のエントロピ符号化部15として適用してもよい(つまり、エントロピ符号化部15が、エントロピ符号化部123と同様にエントロピ符号化処理を実行するようにすることができる)。また、例えば、エントロピ復号部221を図9の画像復号装置20のエントロピ復号部21として適用してもよい(つまり、エントロピ復号部21が、エントロピ復号部221と同様にエントロピ復号処理を実行するようにすることができる)。
つまり、実施の第6の形態のエントロピ符号化処理は、上述した実施の第1の形態乃至第5の形態のそれぞれに適用することにより、各実施の形態のウェーブレット変換部からの係数の出力順の特徴(つまり連続する係数の有効桁数が似ていること)を生かして発生符合量を低減させることができる。また、係数の並び替えを行う場合であっても、ウェーブレット変換部がラインブロック単位でウェーブレット変換を行うので、連続する係数の有効桁数が似ているという特徴には大きな影響を与えることがなく、エントロピ符号化処理の発生符号量は大きく変化しない。
以上のように、実施の第6の形態のエントロピ符号化処理は、上述した実施の第1の形態乃至第5の形態において説明したウェーブレット変換処理と、処理される係数データの特徴や期待される効果が似ており、互いに親和性が高い。従って、上述した実施の第1の形態乃至第5の形態において説明したウェーブレット変換処理に対して、他の符号化方式を適用する場合よりも、本実施の形態のエントロピ符号化処理を適用する場合の方が、画像符号化処理全体においてより大きな効果を得ることを期待することができる。
次に、発明の実施の第7の形態について説明する。この実施の第7の形態は、上述した各実施の形態による画像符号化装置および画像復号装置を、ディジタルトライアックスシステムに適用した例である。
トライアックスシステムは、テレビジョン放送局や制作スタジオなどにおいて、スタジオ収録や中継などの際に、ビデオカメラと、カメラコントロールユニットやスイッチャとを接続する1本の同軸ケーブルで、映像信号、音声信号、送り返し(リターン)の映像信号、同期信号など複数の信号を重畳させて送信すると共に、電源の供給も行うようにしたシステムである。
従来のトライアックスシステムは、アナログ信号を用いて上述の各信号の伝送を行うようにした例が大部分であった。しかしながら、近年では、システム全体のディジタル化に伴い、放送局内などで用いるトライアックスシステムのディジタル化が進んでいる。
既存のディジタルトライアックスシステムでは、トライアックスケーブルを介して伝送されるディジタルビデオ信号は、非圧縮のビデオ信号であった。これは、特に放送局などにおいては信号の遅延時間に対する要求スペックが厳しく、基本的に、撮像から例えばモニタ出力までの遅延時間が1フィールド(16.67msec)以内であることが要求されるためである。高圧縮率および高画質を実現したMPEG2(Moving Pictures Experts Group 2)やMPEG4といった圧縮符号化方式は、ビデオ信号の圧縮符号化や圧縮ビデオ信号の復号に際して数フレーム分の時間を要し、遅延時間が大きいため、トライアックスシステムに採用されることはなかった。
この発明による画像符号化および画像復号方法は、上述したように、画像データの入力から出力画像が得られるまでの遅延時間が1フィールド時間以内、例えば数ライン乃至数十ラインと極めて短く、ディジタルトライアックスシステムに対して用いて好適なものである。
図37は、この発明による画像符号化および画像復号方法を適用可能な、ディジタルトライアックスシステムの一例の構成を示す。送信ユニット500とカメラ制御部502とがトライアックスケーブル(同軸ケーブル)501を介して接続される。送信ユニット500からカメラ制御部502に対する、実際に放映されたり素材として用いられたりするディジタルビデオ信号およびディジタルオーディオ信号(以下、本線信号と呼ぶ)の送出、カメラ制御部502からビデオカメラ部503に対する、インカム用のオーディオ信号およびリターン用のディジタルビデオ信号の送出が、トライアックスケーブル501を介して行われる。
送信ユニット500は、例えば図示されないビデオカメラ装置に内蔵される。これに限らず、送信ユニット500がビデオカメラ装置に対する外部装置として、ビデオカメラ装置と所定に接続されて用いられるものとしてもよい。また、カメラ制御部502は、例えば一般的にCCU(Camera Control Unit)と呼ばれる装置である。
なお、ディジタルオーディオ信号については、この発明の主旨と関わりが少ないので、繁雑さを避けるための説明を省略する。
ビデオカメラ部503は、例えば図示されないビデオカメラ装置内に構成され、レンズ、フォーカス機構、ズーム機構、アイリス調整機構などを有する光学系550を介して入射された被写体からの光を、CCD(Charge Coupled Device)などからなる図示されない撮像素子で受光する。撮像素子は、受光された光を光電変換で電気信号に変換し、さらに所定の信号処理を施してベースバンドのディジタルビデオ信号を出力する。このディジタルビデオ信号は、例えばHD-SDI(High Definition-Serial Data Interface)のフォーマットにマッピングして出力される。
また、ビデオカメラ部503は、モニタ用に用いられる表示部551と、外部と音声によるやりとりを行うためのインカム552が接続される。
送信ユニット500は、ビデオ信号符号化部510およびビデオ信号復号部511、ディジタル変調部512およびディジタル復調部513、アンプ514およびアンプ515、並びに、ビデオ分離/合成部516を有する。
送信ユニット500において、ビデオカメラ部503から、例えばHD-SDIのフォーマットにマッピングされたベースバンドのディジタルビデオ信号が供給される。このディジタルビデオ信号は、ビデオ信号符号化部510で圧縮符号化され、符号化ストリームとされてディジタル変調部512に供給される。ディジタル変調部512は、供給された符号化ストリームを、トライアックスケーブル501を介した伝送に適した形式の信号に変調して出力する。ディジタル変調部512から出力された信号は、アンプ514を介してビデオ分離/合成部516に供給される。ビデオ分離/合成部516は、供給された信号をトライアックスケーブル501に送出する。この信号は、トライアックスケーブル501を介してカメラ制御部502に受信される。
カメラ制御部502から出力された信号が、トライアックスケーブル501を介して送信ユニット500に受信される。受信された信号は、ビデオ分離/合成部516に供給され、ディジタルビデオ信号の部分とその他の信号の部分とが分離される。受信信号のうちディジタルビデオ信号の部分は、アンプ515を介してディジタル復調部513に供給され、カメラ制御部502側でトライアックスケーブル501を介した伝送に適した形式の信号に変調された信号を復調し、符号化ストリームを復元する。
符号化ストリームは、ビデオ信号復号部511に供給され、圧縮符号を復号され、ベースバンドのディジタルビデオ信号とされる。この復号されたディジタルビデオ信号は、HD-SDIのフォーマットにマッピングされて出力され、リターン用のディジタルビデオ信号としてビデオカメラ部503に供給される。このリターン用のディジタルビデオ信号は、ビデオカメラ部503に接続される表示部551に供給され、撮影者のためのモニタなどに利用される。
カメラ制御部502は、ビデオ分離/合成部520、アンプ521およびアンプ522、フロントエンド部523、ディジタル復調部524およびディジタル変調部525、並びに、ビデオ信号復号部526およびビデオ信号符号化部527を有する。
送信ユニット500から出力された信号が、トライアックスケーブル501を介してカメラ制御部502に受信される。受信された信号は、ビデオ分離/合成部520に供給される。ビデオ分離/合成部520は、供給された信号を、アンプ521およびフロントエンド部523を介してディジタル復調部524に供給する。なお、フロントエンド部523は、入力信号のゲインを調整するゲイン制御部や、入力信号に対して所定のフィルタ処理を施すフィルタ部などを有する。
ディジタル復調部524は、送信ユニット500側でトライアックスケーブル501を介した伝送に適した形式の信号に変調された信号を復調し、符号化ストリームを復元する。この符号化ストリームは、ビデオ信号復号部526に供給され、圧縮符号を復号され、ベースバンドのディジタルビデオ信号にとされる。この復号されたディジタルビデオ信号は、HD-SDIのフォーマットにマッピングされて出力され、本線信号として外部に出力される。
外部からカメラ制御部502に対して、リターン用のディジタルビデオ信号と、ディジタルオーディオ信号とが供給される。ディジタルオーディオ信号は、例えば、撮影者のインカム552に供給され、外部から撮影者に対する音声による指示を伝達するのに用いられる。
リターン用のディジタルビデオ信号は、ビデオ信号符号化部527に供給されて圧縮符号化され、ディジタル変調部525に供給される。ディジタル変調部525は、供給された符号化ストリームを、トライアックスケーブル501を介した伝送に適した形式の信号に変調して出力する。ディジタル変調部525から出力された信号は、フロントエンド部523およびアンプ522を介してビデオ分離/合成部520に供給される、ビデオ分離/合成部520は、この信号を他の信号と多重化し、トライアックスケーブル501に送出する。この信号は、トライアックスケーブル501を介してビデオカメラ部503に受信される。
この発明の実施の第7の形態では、上述したビデオ信号符号化部510およびビデオ信号符号化部527、並びに、ビデオ信号復号部511およびビデオ信号復号部526に対して、上述した各実施の形態で説明した画像符号化装置および画像復号装置をそれぞれ適用する。
特に、画像符号化装置および画像復号装置における各要素の処理を並列的に行うようにした、発明の実施の第2の形態は、ビデオカメラ部503で撮影された映像がカメラ制御部502から出力される際の遅延や、外部から供給されカメラ制御部502からビデオカメラ部503に送信されるリターン用のディジタルビデオ信号の遅延を低く抑えることができ、この発明の実施の第7の形態に用いて好適である。
また、図37に例示したシステムの場合、送信ユニット500およびカメラ制御部502のそれぞれにおいて、信号処理能力やメモリ容量を、適宜、設定することができると考えられるので、係数データの並び替え処理を行う位置は、送信ユニット500側およびカメラ制御部502側の何れであってもよいし、エントロピ符号化を行う位置も同様に、並び替え処理の前後の何れであってもよい。
すなわち、送信ユニット500側において、ビデオ信号符号化部510は、供給されたディジタルビデオ信号に対して、この発明による方法に従いウェーブレット変換およびエントロピ符号化を施し、符号化ストリームを出力する。上述したように、ビデオ信号符号化部510は、ウェーブレット変換に用いるフィルタのタップ数およびウェーブレット変換の分解レベル数に応じたライン数が入力されると、ウェーブレット変換を開始する。そして、図5、図6および図11などを用いて説明したように、画像符号化装置および画像復号装置において、各要素に必要な係数データが蓄積されると、順次、各要素による処理が行われる。1フレームまたは1フィールドの下端のラインまで処理が終了したら、次の1フレームまたは1フィールドの処理が開始される。
カメラ制御部502側から送信ユニット500側に、リターン用のディジタルビデオ信号を送信する場合も、同様である。すなわち、カメラ制御部502側において、ビデオ信号符号化部527は、外部から供給されたリターン用のディジタルビデオ信号に対して、この発明による方法に従いウェーブレット変換およびエントロピ符号化を施し、符号化ストリームを出力する。
ここで、リターン用のディジタルビデオ信号は、本線信号のディジタルビデオ信号よりも画質が低くても構わないとされている場合が多い。そこで、ビデオ信号符号化部527において、符号化時のビットレートを下げるようにするとよい。例えば、ビデオ信号符号化部527において、レート制御部14により、エントロピ符号化部15でのエントロピ符号化処理をより低ビットレートになるまで行うように制御する。また例えば、カメラ制御部502側では、ビデオ信号符号化部527においてウェーブレット変換部10でより高い分解レベルまで変換処理を行い、送信ユニット500側では、ビデオ信号復号部511のウェーブレット逆変換部23におけるウェーブレット逆変換を、より低い分解レベルまでに止める方法も考えられる。カメラ制御部502側のビデオ信号符号化部527における処理は、この例に限らず、ウェーブレット変換における分解レベルをより低く抑えて変換処理による負担を軽減することも考えられる。
次に、この発明の実施の第8の形態について説明する。この発明の実施の第8の形態では、この発明による画像符号化装置で符号化された符号化データの画像復号装置側への伝送を、無線通信を用いて行うようにしている。図38は、この発明の実施の第8の形態による無線伝送システムの一例の構成を示す。なお、この図38の例では、ビデオ信号はビデオカメラまたは送信ユニット600(以下、送信ユニット600と略称する)側から受信装置601側に、一方向的に送信される。オーディオ信号およびその他の信号は、送信ユニット600と受信装置601との間で双方向の通信が可能である。
送信ユニット600は、例えばビデオカメラ部602を有する図示されないビデオカメラ装置に内蔵される。これに限らず、送信ユニット600がビデオカメラ部602を有するビデオカメラ装置に対する外部装置として、ビデオカメラ装置と所定に接続されて用いられるものとしてもよい。
ビデオカメラ部602は、例えば所定の光学系と、例えばCCDからなる撮像素子と、撮像素子から出力された信号をディジタルビデオ信号として出力する信号処理部とを有する。ビデオカメラ部602から、例えばHD-SDIのフォーマットにマッピングされてディジタルビデオ信号が出力される。これはこの例に限らず、ビデオカメラ部602から出力されるディジタルビデオ信号は、他のフォーマットでもよい。
送信ユニット600は、ビデオ信号符号化部610、ディジタル変調部611および無線モジュール部612を有する。送信ユニット600において、ビデオカメラ部602から、ベースバンドのディジタルビデオ信号が例えばHD-SDIのフォーマットにマッピングされて出力される。このディジタルビデオ信号は、ビデオ信号符号化部610でこの発明に係る圧縮符号化方法により、ウェーブレット変換およびエントロピ符号化により圧縮符号化され、符号化ストリームとされてディジタル変調部611に供給される。ディジタル変調部611は、供給された符号化ストリームを、無線通信を行うために適した形式の信号にディジタル変調して出力する。
また、ディジタル変調部611には、ディジタルオーディオ信号やその他の信号、例えば所定のコマンドやデータも供給される。例えば、ビデオカメラ部602は、マイクロホンを有し、集音された音声を音声信号に変換し、さらに当該音声信号をA/D変換してディジタルオーディオ信号として出力する。また、ビデオカメラ部602は、所定のコマンドやデータを出力できるようになっている。コマンドやデータは、ビデオカメラ部602の内部で発生するようにしても良いし、ビデオカメラ部602に操作部を設け、当該操作部に対するユーザの操作に応じてコマンドやデータを生成するようにしてもよい。ビデオカメラ部602に対してコマンドやデータを入力する入力装置を接続するようにしてもよい。
ディジタル変調部611は、これらディジタルオーディオ信号やその他の信号をディジタル変調し、出力する。ディジタル変調部611から出力されたディジタル変調信号は、無線モジュール部612に供給されアンテナ613から電波として無線送信される。
なお、無線モジュール部612は、受信装置601側からの自動再送要求(ARQ:Auto Repeat Request)を受信すると、ディジタル変調部611に対してこのARQを通知し、データの再送を要求する。
アンテナ613から送信された電波は、受信装置601側のアンテナ620で受信され、無線モジュール部621に供給される。無線モジュール部621は、受信された電波に基づくディジタル変調信号をフロントエンド部622に供給する。フロントエンド部622は、供給されたディジタル変調信号に対して例えばゲイン制御といった所定の信号処理を施して、ディジタル復調部623に供給する。ディジタル復調部623は、供給されたディジタル変調信号を復調し、符号化ストリームを復元する。
ディジタル復調部623で復元された符号化ストリームは、ビデオ信号復号部624に供給され、この発明に係る復号方法により圧縮符号を復号され、ベースバンドのディジタルビデオ信号とされる。この復号されたディジタルビデオ信号は、例えばHD-SDIのフォーマットにマッピングされて出力される。
ディジタル復調部623には、送信ユニット600側でディジタル変調され送信された、ディジタルオーディオ信号やその他の信号も供給される。ディジタル復調部623は、これらディジタルオーディオ信号やその他の信号がディジタル変調された信号を復調し、ディジタルオーディオ信号やその他の信号を復元して出力する。
また、フロントエンド部622は、無線モジュール部621から供給された受信信号に対して所定の方法でエラー検出を行い、例えば誤ったフレームが受信されたといったエラーが検出されると、ARQを出力する。ARQは、無線モジュール部621に供給され、アンテナ620から送信される。
このような構成において、送信ユニット600を例えばビデオカメラ部602を有する比較的小型のビデオカメラ装置に内蔵させ、受信装置601にはモニタ装置を接続し、ビデオ信号復号部624から出力されたディジタルビデオ信号をモニタ装置に供給する。受信装置601に対して、送信ユニット600の内蔵されたビデオカメラ装置が無線モジュール部612から送信される電波の到達範囲内にあれば、ビデオカメラ装置で撮影された映像を、低遅延、例えば1フィールドまたは1フレーム時間以内の遅延でモニタ装置により見ることができる。
なお、図38では、送信ユニット600と受信装置601との間の通信を、無線通信を用いて行い、ビデオ信号を、無線通信を介して伝送するようにしているが、これはこの例に限定されない。例えば、送信ユニット600と受信装置601は、インターネットなどのネットワークを介して接続するようにしてもよい。この場合、送信ユニット600側の無線モジュール部612および受信装置601側の無線モジュール部621は、それぞれIP(Internet Protocol)を用いた通信が可能な通信インタフェースとされる。
この実施の第8の形態によるシステムは、様々な応用が考えられる。例えば、この実施の第8の形態によるシステムは、テレビジョン会議システムに応用することができる。例えば、USB(Universal Serial Bus)接続が可能な簡易的なビデオカメラ装置をパーソナルコンピュータといったコンピュータ装置に接続すると共に、コンピュータ装置側にビデオ信号符号化部610およびビデオ信号復号部624を搭載する。コンピュータ装置に搭載されるビデオ信号符号化部610およびビデオ信号復号部624は、ハードウェアで構成してもよいし、コンピュータ装置上で動作するソフトウェアとして実現することも可能である。
例えば、会議に参加するメンバそれぞれに、コンピュータ装置と当該コンピュータ装置に接続されるビデオカメラ装置が用意され、コンピュータ装置が例えばテレビジョン会議システムのサービスを提供するサーバ装置に、有線および/または無線によるネットワークを介して接続される。ビデオカメラ装置から出力されたビデオ信号は、USBケーブルを介してコンピュータ装置に供給され、コンピュータ装置内のビデオ信号符号化部610で、この発明に係る符号化処理を施される。コンピュータ装置は、ビデオ信号が符号化された符号化ストリームを、ネットワークを介してサーバ装置などに送信する。
サーバ装置は、受信した符号化ストリームを、参加メンバそれぞれのコンピュータ装置にネットワークを介して送信する。この符号化ストリームは、参加メンバそれぞれのコンピュータ装置に受信され、コンピュータ装置内のビデオ信号復号部624でこの発明に係る復号処理がなされる。ビデオ信号復号部624から出力された画像データが、コンピュータ装置の表示部に映像として表示される。
すなわち、各参加メンバのコンピュータ装置の表示部には、他の参加メンバのビデオカメラ装置で撮影されたそれぞれの映像が表示されることになる。この発明の実施の第8の形態によれば、ビデオカメラ装置での撮影によるビデオ信号の符号化から、他の参加メンバのコンピュータ装置で復号されるまでの遅延時間が短く、参加メンバのコンピュータ装置の表示部に表示される他の参加メンバそれぞれの映像の違和感を少なくできる。
さらに、ビデオ信号符号化部610をビデオカメラ装置側に搭載することも考えられる。例えば、ビデオカメラ装置に送信ユニット600を内蔵させる。このように構成することで、ビデオカメラ装置にコンピュータ装置などの他の装置を接続する必要が無くなる。
このような、送信ユニット600が内蔵されたビデオカメラ装置と受信装置601とからなるシステムは、上述したテレビジョン会議システムの他にも、様々な応用が考えられる。例えば、図39に概略的に示されるように、このシステムを家庭用ゲーム機器に適用することができる。図39において、ビデオカメラ装置700は、この発明の実施の第8の形態による送信ユニット600が内蔵される。
家庭用ゲーム機器の本体701は、例えばCPU、RAMおよびROMや、CD-ROM(Compact Disc-Read Only Memory)やDVD-ROM(Digital Versatile Disc-ROM)に対応したディスクドライブ装置、CPUにより生成された表示制御信号をビデオ信号に変換して出力するグラフィック制御部、オーディオ信号を再生するオーディオ再生部などが例えばバスで接続され、コンピュータ装置と略同様の構成とされる。家庭用ゲーム機器の本体701は、ROMに予め記憶されたプログラムや、ディスクドライブ装置に装填されたCD-ROMやDVD-ROMに記録されたプログラムに従い、CPUにより全体が制御される。RAMは、CPUのワークメモリとして用いられる。この家庭用ゲーム機器の本体701に対して、受信装置601を内蔵する。受信装置601から出力されるディジタルビデオ信号やその他の信号は、例えばバスを介してCPUに供給される。
このようなシステムにおいて、例えば、家庭用ゲーム機器の本体において、外部から供給されたディジタルビデオ信号による画像を、ゲーム内の画像として用いることができるようにされたゲームソフトウェアが起動されているものとする。例えば、このゲームソフトウェアは、外部から供給されたディジタルビデオ信号による画像をゲーム内の画像として用いることができると共に、当該画像内での人物(プレーヤ)などの動きを識別し、識別された動きに応じた動作を行うことが可能とされている。
ビデオカメラ装置700は、撮影されたディジタルビデオ信号を、内蔵される送信ユニット600において、ビデオ信号符号化部610でこの発明に係る符号化方法で符号化し、符号化ストリームをディジタル変調部611で変調して無線モジュール部612に供給し、アンテナ613から送信する。送信された電波は、家庭用ゲーム機器の本体701に内蔵される受信装置601においてアンテナ620で受信され、受信信号が無線モジュール部621およびフロントエンド部622を介してディジタル復調部623に供給される。受信信号は、ディジタル復調部623で復調された符号化ストリームとされ、ビデオ信号復号部624に供給される。ビデオ信号復号部624では、供給された符号化ストリームを、この発明に係る復号方法で復号し、ベースバンドのディジタルビデオ信号を出力する。
ビデオ信号復号部624から出力されたベースバンドのディジタルビデオ信号は、家庭用ゲーム機器の本体701において、バスに送出され、例えばRAMに一時的に記憶される。CPUは、所定のプログラムに従い、RAMに記憶されたディジタルビデオ信号を読み出すことで、このディジタルビデオ信号による画像内の人物の動きを検出したり、当該画像をゲーム内で用いたりすることができるようにされる。
ビデオカメラ装置700で撮影され、得られたディジタルビデオ信号が符号化されてから、家庭用ゲーム機器の本体701で符号化ストリームが復号され画像が得られるまでの遅延時間が短いので、家庭用ゲーム機器の本体701上で動作するゲームソフトウェアにおける、プレーヤの動きに対する応答性が良くなり、ゲームの操作性を向上させることができる。
なお、このような、家庭用ゲーム機器と共に用いられるビデオカメラ装置700は、価格や大きさなどの面からみても簡易な構成とされることが多く、コンピュータ装置などのように、処理能力の高いCPUや、記憶容量の大きなメモリを搭載できないことが想定される。
つまり、一般的に、ビデオカメラ装置700は、ビデオカメラ装置700を利用するゲームをプレイする場合にのみ必要になる、家庭用ゲーム機器の本体701の周辺機器であり、家庭用ゲーム機器の本体701を用いてゲームをプレイするのに必要な装置ではない。そのような場合、ビデオカメラ装置700が家庭用ゲーム機器の本体701と別商品として販売される(所謂、別売り)ことが多い。その場合に、ビデオカメラ装置700に、処理能力の高いCPUや記憶容量の大きなメモリを搭載し、高額な価格で販売するようにすると、一般的に販売数が低減する恐れがある。その場合、このビデオカメラ装置700を利用するゲームの販売数も低減する恐れがあり、収益の低下につながる恐れがある。また、特に、家庭用ゲームにおいては普及率が販売数に対して強い影響を与えることも多く、ビデオカメラ装置700の普及率が低いと、さらに販売数が低減する恐れがある。
逆に、ビデオカメラ装置700を安価で多数販売して普及率を向上させることにより、このビデオカメラ装置700を利用する家庭用ゲームの販売数や人気度を向上させることができ、さらに、そのことが家庭用ゲーム機器の本体701のさらなる購買動機に繋がることを期待することができる。そのためにも、ビデオカメラ装置700は、簡易な構成とすることが望ましい場合が多い。
この場合、例えば、ビデオカメラ装置700に内蔵される送信ユニット600のビデオ信号符号化部610において、ウェーブレット変換を低い分解レベルで抑えて行うことが考えられる。こうすることで、係数並び替え用バッファ部に用いるメモリ容量が少なくて済む。
また、ビデオ信号符号化部610に、実施の第3の形態で説明した、図12に例示される画像符号化装置の構成を適用することが考えられる。さらに、ビデオ信号符号化部610に、実施の第4の形態で説明した、図15に例示される画像符号化装置の構成を適用すると、ビデオ信号符号化部610側でウェーブレット変換係数データの並び替え処理を行う必要が無くなるため、ビデオカメラ装置700側の負担をより減らすことが可能となり、好ましい。この場合、家庭用ゲーム機器の本体701側に内蔵される受信装置601において、ビデオ信号復号部624として、実施の第4の形態で説明した、図16に例示される画像復号装置を用いる必要がある。
なお、上述では、ビデオカメラ装置700と家庭用ゲーム機器の本体701とは、無線通信で接続されるように説明したが、これはこの例に限られない。すなわち、ビデオカメラ装置700と家庭用ゲーム機器の本体701とは、USBやIEEE1394といったインタフェースにより、有線で接続されていてもよい。
以上のように、本発明は、多様な形態に適用することができ、容易に多様な用途に応用することができる(すなわち汎用性が高い)ことも大きな効果である。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ、または、複数の装置よりなる情報処理システムの情報処理装置などに、プログラム記録媒体からインストールされる。
図40は、上述した一連の処理をプログラムにより実行する情報処理システムの構成の例を示すブロック図である。
図40に示されるように、情報処理システム800は、情報処理装置801、その情報処理装置801とPCIバス802によって接続された、記憶装置803、複数台のビデオテープレコーダ(VTR)であるVTR804-1乃至VTR804-S、ユーザがこれらに対する操作入力を行うためのマウス805、キーボード806、並びに操作コントローラ807により構成されるシステムであり、インストールされたプログラムによって、上述したような画像符号化処理や画像復号処理等を行うシステムである。
例えば情報処理システム800の情報処理装置801は、RAID(Redundant Arrays of Independent Disks)でなる大容量の記憶装置803に記憶されている動画コンテンツを符号化して得られた符号化データを記憶装置803に記憶させたり、記憶装置803に記憶されている符号化データを復号して得られた復号画像データ(動画コンテンツ)を記憶装置803に記憶させたり、符号化データや復号画像データをVTR804-1乃至VTR804-Sを介してビデオテープに記録したりすることができる。また、情報処理装置801は、VTR804-1乃至VTR804-Sに装着されたビデオテープに記録された動画コンテンツを記憶装置803に取り込み得るようにもなされている。その際、情報処理装置801が、動画コンテンツを符号化するようにしてもよい。
情報処理装置801は、マイクロプロセッサ901、GPU(Graphics Processing Unit)902、XDR(Extreme Data Rate)-RAM903、サウスブリッジ904、HDD905、USBインタフェース(USB I/F)906、およびサウンド入出力コーデック907を有している。
GPU902は専用のバス911を介してマイクロプロセッサ901に接続される。XDR-RAM903は専用のバス912を介してマイクロプロセッサ901に接続される。サウスブリッジ904は、専用のバスを介してマイクロプロセッサ901のI/Oコントローラ944に接続される。このサウスブリッジ904には、HDD905、USBインタフェース906、および、サウンド入出力コーデック907も接続されている。このサウンド入出力コーデック907にはスピーカ921が接続されている。また、GPU902にはディスプレイ922が接続されている。
またサウスブリッジ904には、さらに、PCIバス802を介して、マウス805キーボード806、VTR804-1乃至VTR804-S、記憶装置803、並びに、操作コントローラ807が接続されている。
マウス805およびキーボード806は、ユーザの操作入力を受け、PCIバス802およびサウスブリッジ904を介して、ユーザの操作入力の内容を示す信号を、マイクロプロセッサ901に供給する。記憶装置803およびVTR804-1乃至VTR804-Sは、所定のデータを記録または再生できるようになされている。
PCIバス802にはさらに、必要に応じてドライブ808が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア811が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じてHDD905にインストールされる。
マイクロプロセッサ901は、OS(Operating System)等の基本プログラムを実行する汎用のメインCPUコア941と、メインCPUコア941に内部バス945を介して接続された複数(この場合8個)のRISC(Reduced Instruction Set Computer)タイプの信号処理プロセッサである、サブCPUコア942-1乃至サブCPUコア942-8と、例えば256[MByte]の容量を持つXDR-RAM903に対するメモリコントロールを行うメモリコントローラ943と、サウスブリッジ904との間でデータの入出力を管理するI/O(In/Out)コントローラ944とが1チップに集積されたマルチコア構成でなり、例えば動作周波数4[GHz]を実現している。
このマイクロプロセッサ901は、起動時、HDD905に格納された制御プログラムに基づき、HDD905に格納されている必要なアプリケーションプログラムを読み出してXDR-RAM903に展開し、この後このアプリケーションプログラム及びオペレータ操作に基づいて必要な制御処理を実行する。
また、マイクロプロセッサ901は、ソフトウェアを実行することにより、例えば、上述した各実施の形態の画像符号化処理や画像復号処理を実現し、エンコードの結果得られた符号化ストリームを、サウスブリッジ904を介して、HDD905に供給して記憶させたり、デコードした結果得られる動画像コンテンツの再生映像を、GPU902へデータ転送して、ディスプレイ922に表示させたりすることができる。
マイクロプロセッサ901内の各CPUコアの使用方法は任意であるが、例えば、メインCPUコア941が、画像符号化処理や画像復号処理の制御に関する処理を行い、8個のサブCPUコア942-1乃至サブCPUコア942-8に、ウェーブレット変換、係数並び替え、エントロピ符号化、エントロピ復号、ウェーブレット逆変換、量子化、および逆量子化等の各処理を、例えば図11を参照して説明したように同時並列的に実行させるようにしてもよい。その際、メインCPUコア941が、8個のサブCPUコア942-1乃至サブCPUコア942-8のそれぞれに対してラインブロック(プレシンクト)単位で処理を割り振るようにすれば、画像符号化処理や画像復号処理が、図11を参照して説明した場合と同様にラインブロック単位で同時並列的に実行される。つまり、画像符号化処理や画像復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。もちろん、これ以外の方法で各処理を行うようにしてもよい。
例えば、マイクロプロセッサ901の8個のサブCPUコア942乃至サブCPUコア942-8のうちの一部がエンコード処理を、他の部分がデコード処理を、同時並列的に実行するようにすることも可能である。
また、例えば、PCIバス802に、独立したエンコーダまたはデコーダ、もしくは、コーデック処理装置が接続されている場合、マイクロプロセッサ901の8個のサブCPUコア942乃至サブCPUコア942-8が、サウスブリッジ904およびPCIバス802を介して、これらの装置が実行する処理を制御するようにしてもよい。さらに、これらの装置が複数接続されている場合、または、これらの装置が複数のデコーダまたはエンコーダを含んでいる場合、マイクロプロセッサ901の8個のサブCPUコア942乃至サブCPUコア942-8は、複数のデコーダまたはエンコーダが実行する処理を、分担して制御するようにしてもよい。
このときメインCPUコア941は、8個のサブCPUコア942乃至サブCPUコア942-8の動作を管理し、各サブCPUコアに対して処理を割り当てたり、処理結果を引き取ったりする。さらに、メインCPUコア941は、これらのサブCPUコアが行う以外の処理も行う。例えば、メインCPUコア941は、サウスブリッジ904を介してマウス805、キーボード806、または、操作コントローラ807から供給された命令を受け付け、命令に応じた種々の処理を実行する。
GPU902は、ディスプレイ922に表示する動画コンテンツの再生映像を動かすときのテクスチャの張り込みなどに関する最終的なレンダリング処理に加えて、動画コンテンツの再生映像及び静止画コンテンツの静止画像をディスプレイ922に一度に複数表示するときの座標変換計算処理や、動画コンテンツの再生映像及び静止画コンテンツの静止画像に対する拡大・縮小処理等を行う機能を司り、マイクロプロセッサ901の処理負担を軽減させるようになされている。
GPU902は、マイクロプロセッサ901の制御のもとに、供給された動画コンテンツの映像データや静止画コンテンツの画像データに対して所定の信号処理を施し、その結果得られた映像データや画像データをディスプレイ922へ送出して、画像信号をディスプレイ922へ表示させる。
ところで、マイクロプロセッサ901における8個のサブCPUコア942乃至サブCPUコア942-8で同時並列的にデコードされた複数の動画コンテンツにおける再生映像は、バス911を介してGPU902へデータ転送されるが、このときの転送速度は、例えば、最大30[Gbyte/sec]であり、特殊効果の施された複雑な再生映像であっても高速かつ滑らかに表示し得るようになされている。
また、マイクロプロセッサ901は、動画コンテンツの映像データ及び音声データのうち音声データに対して音声ミキシング処理を施し、その結果得られた編集音声データを、サウスブリッジ904およびサウンド入出力コーデック907を介して、スピーカ921へ送出することにより、音声信号に基づく音声をスピーカ921から出力させることもできる。
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図40に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM,DVDを含む)、光磁気ディスク(MDを含む)、もしくは半導体メモリなどよりなるリムーバブルメディア811により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているHDD905や記憶装置803等で構成される。もちろん、記録媒体は、ROMやフラッシュメモリ等の半導体メモリであってもよい。
以上においては、マイクロプロセッサ901内に8個のサブCPUコアが構成されるように説明したが、これに限らず、サブCPUコアの数は任意である。また、マイクロプロセッサ901が、メインCPUコアとサブCPUコアのような複数のコアにより構成されていなくてもよく、シングルコア(1つのコア)により構成されるCPUを用いるようにしてもよい。また、マイクロプロセッサ901の代わりに複数のCPUを用いるようにしてもよいし、複数の情報処理装置を用いる(すなわち、本発明の処理を実行するプログラムを、互いに連携して動作する複数の装置において実行する)ようにしてもよい。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表わすものである。
なお、以上において、一つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて一つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。