以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面は、画像データの符号化において発生する符号量を制御する情報処理装置(例えば、図1の符号化装置1)であって、前記符号化の際に行われる前記画像データの量子化に利用される量子化ステップサイズを算出する量子化ステップサイズ算出手段(例えば、図11のステップS57およびステップS59の処理を行う図7のQ計算部107)と、前記画像データの1つのピクチャ内での前記符号量の均一さを示し、前記符号量の偏りが少ないほど大きい値を取る変数を用いて、前記量子化ステップサイズ算出手段により算出された量子化ステップサイズの値を補正する補正手段(例えば、図11のステップS58およびステップS61の処理を行う図7のQ計算部107)とを備える情報処理装置である。
前記補正手段は、前記量子化ステップサイズ算出手段により算出された前記量子化ステップサイズを、前記変数で除算する(図11のステップS58およびステップS61)ことにより補正することができる。
前記画像データのピクチャ間の相関の高さを判定する判定手段(例えば、図7のStatus計算部106)と、前記判定手段による判定結果に応じた方法で、前記変数の値を、ピクチャ毎に算出する変数算出手段(例えば、図8のUniformity計算部151)とをさらに備えることができ、前記補正手段は、前記変数算出手段により算出された前記変数を用いて、前記量子化ステップサイズ算出手段により算出された量子化ステップサイズの値を補正することができる。
前記変数算出手段は、前記判定手段により前記相関が高いと判定された場合、前記画像データの符号化により発生した符号化データを一時的に蓄積するバッファの使用率が高いほど前記変数の値が小さくなるように前記変数を算出する(例えば、図15のステップS82およびステップS83)ことができる。
前記変数算出手段は、前記判定手段により前記相関が低いと判定された場合、前記変数の値を「1」にする(例えば、図15のステップS84)ことができる。
前記量子化ステップサイズ算出手段により算出され、前記補正手段により補正された前記量子化ステップサイズを用いて前記画像データの量子化を行う量子化手段(例えば、図1の量子化部14)と、前記量子化手段により量子化された画像データを符号化する符号化手段(例えば、図1のエントロピ符号化部15)とをさらに備えることができる。
前記画像データの階層的なフィルタ処理によって生成された係数データを、生成順とは異なる順序に並び替える並び替え手段(例えば、図1の係数並び替え部13)をさらに備えることができ、前記量子化手段は、前記並び替え手段により順序が並び替えられた前記係数データを、前記補正手段により補正された前記量子化ステップサイズを用いて量子化することができる。
前記フィルタ処理(例えば、図1のウェーブレット変換部10)は、前記画像データに対し、少なくとも最低域成分のサブバンドの1ライン分の係数データを生成するのに必要なライン数分の画像データであるラインブロック毎に行われるようにすることができ、前記並び替え手段は、前記係数データを前記ラインブロック毎に並び替えることができ、前記符号化手段は、前記ラインブロックを前記符号化の単位であるコーディングユニットとし、前記並び替え手段により並び替えられ、前記量子化手段により量子化された前記係数データを、前記ラインブロック毎に符号化することができる。
前記符号化手段により符号化されて得られた符号化データの伝送レートを平滑化させる平滑化手段(例えば、図1の平滑化部17)をさらに備えることができる。
本発明の一側面はまた、画像データの符号化において発生する符号量を制御する情報処理装置(例えば、図1の符号化装置1)の情報処理方法であって、前記符号化の際に行われる前記画像データの量子化に利用される量子化ステップサイズを算出する量子化ステップサイズ算出ステップ(例えば、図11のステップS57またはステップS59)と、前記画像データの1つのピクチャ内での前記符号量の均一さを示し、前記符号量の偏りが少ないほど大きい値を取る変数を用いて、前記量子化ステップサイズ算出ステップの処理により算出された量子化ステップサイズの値を補正する補正ステップ(例えば、図11のステップS58またはステップS61)とを含む情報処理方法である。
本発明の一側面はさらに、画像データの符号化において発生する符号量を制御する処理を行うプログラムにおいて、前記符号化の際に行われる前記画像データの量子化に利用される量子化ステップサイズを算出する量子化ステップサイズ算出ステップ(例えば、図11のステップS57またはステップS59)と、前記画像データの1つのピクチャ内での前記符号量の均一さを示し、前記符号量の偏りが少ないほど大きい値を取る変数を用いて、前記量子化ステップサイズ算出ステップの処理により算出された量子化ステップサイズの値を補正する補正ステップ(例えば、図11のステップS58またはステップS61)とを含む処理をコンピュータに実行させるプログラムである。
以下、本発明の実施の形態について説明する。
図1は、本発明を適用した符号化装置の構成例を示すブロック図である。
図1において、符号化装置1は、画像データを任意のビットレートで符号化する装置であり、ウェーブレット変換部10、途中計算用バッファ部11、係数並び替え用バッファ部12、係数並び替え部13、量子化部14、エントロピ符号化部15、レート制御部16、および平滑化部17を有する。
符号化装置1に入力された画像データは、途中計算用バッファ部11に一時的に溜め込まれる。ウェーブレット変換部10は、途中計算用バッファ部11に溜め込まれた画像データに対してウェーブレット変換を施す。すなわち、ウェーブレット変換部10は、途中計算用バッファ部11から画像データを読み出して分析フィルタによりフィルタ処理を施して低域成分および高域成分の係数のデータを生成し、生成された係数データを途中計算用バッファ部11に格納する。ウェーブレット変換部10は、水平分析フィルタと垂直分析フィルタとを有し、画像データ群に対して、画面水平方向と画面垂直方向の両方について分析フィルタ処理を行う。ウェーブレット変換部10は、途中計算用バッファ部11に格納された低域成分の係数データを再度読み出し、読み出した係数データに対して分析フィルタによるフィルタ処理を施して、高域成分および低域成分の係数のデータをさらに生成する。生成された係数データは、途中計算用バッファ部11に格納される。
ウェーブレット変換部10は、この処理を繰り返して分解レベルが所定レベルに達したら、途中計算用バッファ部11から係数データを読み出し、読み出された係数データを係数並び替え用バッファ部12に書き込む。
係数並び替え部13は、係数並び替え用バッファ部12に書き込まれた係数データを所定の順序で読み出し、量子化部14に供給する。量子化部14は、係数並び替え部13から供給された係数データに対して、量子化を行う。この量子化の方法としてはどのようなものを用いても良く、例えば、一般的な手段、つまり、以下の式(1)に示されるような、係数データWを量子化ステップサイズQで除算する手法を用いれば良い。
量子化係数=W/Q ・・・(1)
なお、この量子化ステップサイズQは、レート制御部16より供給される。量子化部14は、量子化した係数データをエントロピ符号化部15に供給する。エントロピ符号化部15は、供給された係数データを、所定の単位で、例えばハフマン符号化や算術符号化といった所定のエントロピ符号化方式で符号化する。なお、以下において、この係数データの符号化の単位をコーディングユニットと称する。このコーディングユニットとする係数データの区切り方は予め定められているようにしてもよいし、可変であってもよい。また、この区切り方は任意であるが、通常の場合、符号化処理による遅延時間を低減させるために、コーディングユニットは、ピクチャ単位よりも小さい単位とされる。つまり、この場合、コーディングユニットは、1つのピクチャを所定の方法で複数に分割するように設定される。換言すれば、コーディングユニットは、エントロピ符号化部15が、1ピクチャの係数データを、複数回に分けて符号化するように、1つのピクチャ内に複数形成される。
エントロピ符号化部15は、符号化により得られた符号化データを平滑化部17に供給する。また、エントロピ符号化部15は、その符号化において発生した符号量(符号化データのデータ量)Sizeを、コーディングユニット毎にレート制御部16に供給する。
平滑化部17は、バッファを内蔵しており、エントロピ符号化部15より供給された符号化データを一度そのバッファに溜め、一定の伝送レートで出力されるように、バッファに蓄積した符号化データを読み出して符号化装置1の外部に出力する(符号化データ出力)。1ピクチャを通しての平均符号量が目標符号量に合っていれば伝送レートが上下に変動しても構わないシステムの場合は、この平滑化部17を省略することもできる。
次に、ウェーブレット変換部10で行われる処理について、より詳細に説明する。先ず、ウェーブレット変換について、概略的に説明する。画像データに対するウェーブレット変換では、図2に概略的に示されるように、画像データを空間周波数の高い帯域と低い帯域とに分割する処理を、分割の結果得られる空間周波数の低い帯域のデータに対して再帰的に繰り返す。こうして、空間周波数の低い帯域のデータをより小さな領域に追い込んでいくことで、効率的な圧縮符号化を可能とする。
なお、図2は、画像データの最低域成分領域に対する低域成分の領域Lおよび高域成分の領域Hへの分割処理を3回、繰り返し、分割レベル=3とした場合の例である。図2において、"L"および"H"は、それぞれ低域成分および高域成分を表し、"L"および"H"の順序は、前側が横方向に分割した結果の帯域を示し、後側が縦方向に分割した結果の帯域を示す。また、"L"および"H"の前の数字は、その領域の分割レベルを示す。
また、図2の例から分かるように、画面の右下の領域から左上の領域にかけて段階的に処理がなされ、低域成分が追い込まれていく。すなわち、図2の例では、画面の右下の領域が最も低域成分の少ない(高域成分が最も多く含まれる)領域3HHとされる、画面が4分割された左上の領域は、さらに4分割され、この4分割された領域のうち左上の領域がさらに4分割される。最も左上隅の領域は、最も低域成分を多く含む領域0LLとされる。
低域成分に対して繰り返し変換および分割を行うのは、画像のエネルギが低域成分に集中しているためである。このことは、図3Aに一例が示される分割レベル=1の状態から、図3Bに一例が示される分割レベル=3の状態のように分割レベルを進めていくに従って、図3Bに示されるようにしてサブバンドが形成されていくことからも、理解される。例えば、図2におけるウェーブレット変換の分割レベルは3であり、この結果、10個のサブバンドが形成されている。
ウェーブレット変換部10は、通常、低域フィルタと高域フィルタとから構成されるフィルタバンクを用いて、上述のような処理を行う。なお、デジタルフィルタは、通常、複数タップ長のインパルス応答すなわちフィルタ係数を持っているため、フィルタ処理を行えるだけの入力画像データまたは係数データを予めバッファリングしておく必要がある。また、ウェーブレット変換を多段にわたって行う場合も同様に、前段で生成したウェーブレット変換係数を、フィルタ処理が行える数だけバッファリングしておく必要がある。
このウェーブレット変換の具体的な例として、5×3フィルタを用いた方法について説明する。この5×3フィルタを用いた方法は、従来技術で既に説明したJPEG(Joint Photographic Experts Group)2000規格でも採用されており、少ないフィルタタップ数でウェーブレット変換を行うことができる点で、優れた方法である。
5×3フィルタのインパルス応答(Z変換表現)は、次の式(2)および式(3)に示すように、低域フィルタH0(z)と、高域フィルタH1(z)とから構成される。式(2)および式(3)から、低域フィルタH0(z)は、5タップで、高域フィルタH1(z)は、3タップであることが分かる。
H0(z)=(-1+2z-1+6z-2+2z-3-z-4)/8 ・・・(2)
H1(z)=(-1+2z-1-z-2)/2 ・・・(3)
これら式(2)および式(3)によれば、低域成分および高域成分の係数を、直接的に算出することができる。ここで、リフティング(Lifting)技術を用いることで、フィルタ処理の計算を減らすことができる。
次に、このウェーブレット変換方法について、さらに具体的に説明する。図4は、5×3フィルタのリフティングによるフィルタ処理を、分解レベル=2まで実行した例を示している。なお、図4において、図の左側に分析フィルタとして示される部分は、ウェーブレット変換部10のフィルタである。また、図の右側に合成フィルタとして示される部分は、後述する復号装置におけるウェーブレット逆変換部のフィルタである。
なお、以下の説明では、例えば表示デバイスなどにおいて画面の左上隅の画素を先頭として、画素が画面の左端から右端に向けて走査されて1ラインが構成され、ライン毎の走査が画面の上端から下端に向けて行われて1画面が構成されるものとする。
図4において、左端列は、原画像データのライン上の対応する位置にある画素データが縦方向に並べられて示されている。すなわち、ウェーブレット変換部10におけるフィルタ処理は、垂直フィルタを用いて画面上を画素が縦に走査されて行われる。左端から1列目乃至3列目が分割レベル=1のフィルタ処理を示し、4列目乃至6列目が分割レベル=2のフィルタ処理を示す。左端から2列目は、左端の原画像データの画素に基づく高域成分出力、左端から3列目は、原画像データおよび高域成分出力に基づく低域成分出力を示す。分割レベル=2のフィルタ処理は、左端から4列目乃至6列目に示されるように、分割レベル=1のフィルタ処理の出力に対して処理がなされる。
分解レベル=1のフィルタ処理において、第1段階のフィルタ処理として、原画像データの画素に基づき高域成分の係数データが算出され、第2段階のフィルタ処理として、第1段階のフィルタ処理で算出された高域成分の係数データと、原画像データの画素とに基づき低域成分の係数データが算出される。分解レベル=1の一例のフィルタ処理を、図4における左側(分析フィルタ側)の第1列目乃至第3列目に示す。算出された高域成分の係数データは、図1の係数並び替え用バッファ部12に格納される。また、算出された低域成分の係数データは、図1の途中計算用バッファ部11に格納される。
図4においては、一点鎖線で囲まれているデータが係数並び替え用バッファ部12に一時的に保存され、点線で囲まれているデータが途中計算用バッファ部11に一時的に保存される。
途中計算用バッファ部11に保持された分解レベル=1のフィルタ処理の結果に基づき、分解レベル=2のフィルタ処理が行われる。分解レベル=2のフィルタ処理では、分解レベル=1のフィルタ処理において低域成分の係数として算出された係数データを、低域成分および高域成分を含んだ係数データと見做して、分解レベル=1と同様のフィルタ処理を行う。分解レベル=2のフィルタ処理により算出された、高域成分の係数データおよび低域成分の係数データは、係数並び替え用バッファ部12に格納される。
ウェーブレット変換部10では、上述したようなフィルタ処理を、画面の水平方向および垂直方向にそれぞれ行う。例えば、先ず、分解レベル=1のフィルタ処理を水平方向に行い、生成された高域成分および低域成分の係数データを途中計算用バッファ部11に格納する。次に、途中計算用バッファ部11に格納された係数データに対して、垂直方向に分解レベル=1のフィルタ処理を行う。この分解レベル=1の水平および垂直方向の処理により、高域成分をさらに高域成分および低域成分に分解した係数データのそれぞれによる領域HHおよび領域HLと、低域成分をさらに高域成分および低域成分に分解した係数データのそれぞれによる領域LHおよび領域LLとの4領域が形成される。
そして、分解レベル=2では、水平方向および垂直方向のそれぞれについて、分解レベル=1で生成された低域成分の係数データに対してフィルタ処理が行われる。すなわち、分解レベル=2では、分解レベル=1で分割されて形成された領域LLがさらに4分割され、領域LL内にさらに領域HH、領域HL、領域LHおよび領域LLが形成される。
ウェーブレット変換部10は、ウェーブレット変換によるフィルタ処理を、画面の縦方向について、数ライン毎の処理に分割して、複数回に分けて段階的に行うようにしている。図4の例では、画面上の第1ラインからの処理になる1回目の処理は、7ラインについてフィルタ処理を行い、8ライン目からの処理になる2回目以降の処理は、4ライン毎にフィルタ処理を行っている。このライン数は、高域成分と低域成分とに2分解した後に、1ライン分の最低域成分が生成されるために必要なライン数に基づく。
なお、以下において、この最低域成分の1ライン分(最低域成分のサブバンドの1ライン分の係数データ)を生成するために必要な、他のサブバンドも含めたラインの集まりを、ラインブロック(またはプレシンクト)と称する。ここでラインとは、ウェーブレット変換前の画像データに対応するピクチャ若しくはフィールド内、または各サブバンド内において形成される1行分の画素データ若しくは係数データのことを示す。すなわち、ラインブロック(プレシンクト)とは、ウェーブレット変換前の元の画像データにおける、ウェーブレット変換後の最低域成分のサブバンド1ライン分の係数データを生成するために必要なライン数分の画素データ群、または、その画素データ群をウェーブレット変換して得られる各サブバンドの係数データ群のことを示す。
図4によれば、分解レベル=2のフィルタ処理結果で得られる係数C5は、係数C4および途中計算用バッファ部11に格納された係数Caに基づき算出され、係数C4は、途中計算用バッファ部11に格納された係数Ca、係数Cbおよび係数Ccに基づき算出される。さらに、係数Ccは、係数並び替え用バッファ部12に格納される係数C2および係数C3、並びに、第5ラインの画素データに基づき算出される。また、係数C3は、第5ライン乃至第7ラインの画素データに基づき算出される。このように、分割レベル=2における低域成分の係数C5を得るためには、第1ライン乃至第7ラインの画素データが必要とされる。
これに対して、2回目以降のフィルタ処理においては、前回までのフィルタ処理で既に算出され係数並び替え用バッファ部12に格納されている係数データを用いることができるので、必要なライン数が少なくて済む。
すなわち、図4によれば、分解レベル=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に対応し、図4においては点線で囲まれているデータが一時的に保存される。また、第2のバッファは、係数並び替え用バッファ部12に対応し、図4においては一点鎖線に囲まれているデータが一時的に保存される。第2のバッファに格納された係数は、復号の際に用いられるため、後段のエントロピ符号化処理の対象とされる。
次に、図1の係数並び替え部13の処理について説明する。上述したように、ウェーブレット変換部10で算出された係数データは、係数並び替え用バッファ部12に格納され、係数並び替え部13により順序を並び替えられて読み出され、コーディングユニット単位で量子化部14に送出される。
既に説明したように、ウェーブレット変換においては、高域成分側から低域成分側へと係数が生成されていく。図4の例では、1回目において、原画像の画素データにより、分解レベル=1のフィルタ処理で、高域成分の係数C1、係数C2および係数C3が順次生成される。そして、分解レベル=1のフィルタ処理で得られた低域成分の係数データに対して分解レベル=2のフィルタ処理を行い、低域成分の係数C4および係数C5が順次生成される。すなわち、第1回目では、係数C1、係数C2、係数C3、係数C4、係数C5の順に、係数データが生成される。この係数データの生成順は、ウェーブレット変換の原理上、必ずこの順序(高域から低域の順)になる。
これに対して、復号側では、低遅延で即座に復号を行うためには低域成分から画像の生成および出力を行う必要がある。そのため、符号化側で生成された係数データを最低域成分側から高域成分側に向けて並び替えて復号側に供給することが望ましい。
図4の例を用いて、より具体的に説明する。図4の右側は、ウェーブレット逆変換を行う合成フィルタ側を示す。復号側の、出力画像データの第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、・・・の順に並び替えられて復号側に供給される。
なお、図4の右側に示す合成フィルタ側では、符号化側から供給される係数について、括弧内に符号化側での係数の番号を記し、括弧外に合成フィルタのライン順を記す。例えば係数C1(5)は、図4の左側の分析フィルタ側では係数C5であって、合成フィルタ側では第1ライン目であることを示す。
符号化側の2回目以降のフィルタ処理で生成された係数データによる復号側の合成処理は、前回の合成処理の際に合成あるいは符号化側から供給された係数データを用いて行うことができる。図4の例では、符号化側の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ラインずつ、ラインが復号される。
なお、符号化側において画面の下端のラインを含むフィルタ処理(以下、最後の回と呼ぶ)に対応する復号側の合成処理では、それまでの処理で生成されバッファに格納された係数データを全て出力することになるため、出力ライン数が多くなる。図4の例では、最後の回に8ラインが出力される。
なお、係数並び替え部13による係数データの並び替え処理は、例えば、係数並び替え用バッファ部12に格納された係数データを読み出す際の読み出しアドレスを、所定の順序に設定することでなされる。
図5を用いて、上述までの処理をより具体的に説明する。図5は、5×3フィルタを用いて、分解レベル=2までウェーブレット変換によるフィルタ処理を施した例である。ウェーブレット変換部10において、図5Aに一例が示されるように、入力画像データの第1ラインから第7ラインに対して1回目のフィルタ処理が水平および垂直方向にそれぞれ行われる(図5AのIn-1)。
1回目のフィルタ処理の分解レベル=1の処理において、係数C1、係数C2、および係数C3の3ライン分の係数データが生成され、図5Bに一例が示されるように、分解レベル=1で形成される領域HH、領域HLおよび領域LHのそれぞれに配置される(図5BのWT-1)。
また、分解レベル=1で形成される領域LLは、分解レベル=2による水平および垂直方向のフィルタ処理でさらに4分割される。分解レベル=2で生成される係数C5および係数C4は、分解レベル=1による領域LL内において、領域LLに係数C5による1ラインが配置され、領域HH、領域HLおよび領域LHのそれぞれに、係数C4による1ラインが配置される。
ウェーブレット変換部10による2回目以降のフィルタ処理では、4ライン毎にフィルタ処理が行われ(図5AのIn-2・・・)、分解レベル=1で2ラインずつの係数データが生成され(図5BのWT-2)、分解レベル=2で1ラインずつの係数データが生成される。
図4の2回目の例では、分解レベル=1のフィルタ処理で係数C6および係数C7の2ライン分の係数データが生成され、図5Bに一例が示されるように、分解レベル1で形成される領域HH、領域HLおよび領域LHの、1回目のフィルタ処理で生成された係数データの次から配置される。同様に、分解レベル=1による領域LL内において、分解レベル=2のフィルタ処理で生成された1ライン分の係数C9が領域LLに配置され、1ライン分の係数C8が領域HH、領域HLおよび領域LHにそれぞれ配置される。
図5Bのようにウェーブレット変換されたデータを復号した際には、図5Cに一例が示されるように、符号化側の第1ライン乃至第7ラインによる1回目のフィルタ処理に対して、復号側の1回目の合成処理による第1ラインが出力される(図5CのOut-1)。以降、符号化側の2回目から最後の回の前までのフィルタ処理に対して、復号側で4ラインずつが出力される(図5CのOut-2・・・)。そして、符号化側の最後の回のフィルタ処理に対して、復号側で8ラインが出力される。
ウェーブレット変換部10で高域成分側から低域成分側へと生成された係数データは、係数並び替え用バッファ部12に順次格納される。係数並び替え部13は、上述した係数データの並び替えが可能となるまで係数並び替え用バッファ部12に係数データが蓄積されると、係数並び替え用バッファ部12から合成処理に必要な順に並び替えて係数データを読み出す。読み出された係数データは、量子化部14に順次、供給される。
なお、エントロピ符号化部15におけるコーディングユニットがラインブロックと一致しない場合もあるが、係数並び替え部13は、コーディングユニット毎に係数データを読み出す。つまり、係数並び替え部13は、係数並び替え用バッファ部12に、少なくとも1コーディングユニットの係数データを上述した並び替えを行いながら読み出すことができるだけの係数データが蓄積されてから読み出しを開始する。以下においては、エントロピ符号化部15におけるコーディングユニットがラインブロックと一致するものとして説明する。
次に、レート制御部16について説明する。図6は、レート制御部16の内部の構成例を説明する図である。図6において、レート制御部16は、スイッチ部51乃至スイッチ部54、Q計算部55、スイッチ部56、コーディングユニット単位レート制御部57、スイッチ部58、およびピクチャ単位レート制御部59を有する。
スイッチ部51は、コーディングユニット単位レート制御部57において利用される、画像の1ピクチャ内での均一さを学習する変数であるUniformityの値を設定する。スイッチ部51は、所定の値である「1」、または、ピクチャ単位レート制御部59において算出された値のいずれかより、Uniformityの値を選択的に設定する。スイッチ部51は、システム全体の初期化時と、符号化する画像データの画像の状態を示すフラグであるStatusが非定常状態のときには値「1」を選択し、他のときにはピクチャ単位レート制御部59において算出された値を選択する。スイッチ部51は、その選択した値をコーディングユニット単位レート制御部57に供給する。また、スイッチ部51は、設定したUniformityの値をQ計算部55およびピクチャ単位レート制御部59にも供給する。
スイッチ部52は、コーディングユニット単位レート制御部57において利用される、量子化ステップサイズのピクチャ毎の基準値(初期値)である基本量子化ステップサイズを表すBaseQの値を設定する。なお、基本量子化ステップサイズとは、ピクチャ全体を通して目標符号量になるような量子化ステップサイズのことである。スイッチ部52は、所定の値であるBaseQの初期値、または、ピクチャ単位レート制御部59において算出された値のいずれかより、BaseQの値を選択的に設定する。スイッチ部52は、システム全体の初期化時にはBaseQの初期値を選択し、その他のときにはピクチャ単位レート制御部59において算出された値を選択する。スイッチ部52は、その選択した値をコーディングユニット単位レート制御部57およびQ計算部55に供給する。
スイッチ部53は、コーディングユニット単位レート制御部57において利用される、符号化する画像データの画像の状態を示すフラグであるStatusの値を設定する。コーディングユニット単位レート制御部57は、動きの少ない画像、つまり、ピクチャ間において相関が高い画像の画像データを符号化する場合と、動きの多い画像やシーンチェンジ時の画像等、つまり、ピクチャ間において相関が低い画像の画像データを符号化する場合とで、そのレート制御の方法を切り替える。スイッチ部53は、その切り替えに利用するフラグであるStatusを提供する。スイッチ部53は、Statusの値として、初期値としての非定常状態を示す値、初期値としての定常状態を示す値、または、コーディングユニット単位レート制御部57において設定された値のいずれかを選択し、その値をコーディングユニット単位レート制御部57に供給する。
なお、コーディングユニット単位レート制御部57において設定されるStatusの値も、非定常状態を示す値か定常状態を示す値のいずれかである。つまり、Statusは、非定常状態と定常状態の2種類しかない。
このStatusは、ピクチャ毎に「定常状態を示す値」に初期化され、コーディングユニット単位の更新処理において、必要に応じて「非定常状態を示す値」に更新される。すなわち、スイッチ部53は、処理対象のピクチャが切り替わるときに、「初期値としての定常状態を示す値」を選択し、その他のときには「コーディングユニット単位レート制御部57において設定された値」を選択する。
ただし、画像データの先頭のピクチャを処理対象とする場合、それ以前のピクチャが存在しないので、Statusは「非定常状態を示す値」に設定される。つまり、スイッチ部53は、システム全体の初期化時から先頭のピクチャに対する処理が終了するまでの間は、「初期値としての非定常状態を示す値」を選択する。なお、スイッチ部53は、システム全体の初期化時において「初期値としての非定常状態を示す値」を選択し、先頭のピクチャに対して、コーディングユニット単位の更新処理を行うときは、「コーディングユニット単位レート制御部57において設定された値」を選択するようにしてもよい。
このような制御により、コーディングユニット単位レート制御部57は、1つ前のピクチャとの相関をピクチャ毎に判別することができ、例えばシーンチェンジのような突発的に出現する「非定常状態」を正しく検出し、適切にレート制御を行うことができる。また、コーディングユニット単位レート制御部57は、1つ前のピクチャとの相関をコーディングユニット単位で判別することができるので、画像の一部において相関が低くなるような場合であっても、適切にレート制御を行うことができる。
スイッチ部54は、コーディングユニット単位レート制御部57において利用される、平滑化部17のバッファに蓄積されている符号化データのデータ量(符号量)を表す変数であるLeftの値を設定する。スイッチ部54は、所定の値である「0」、または、コーディングユニット単位レート制御部57において算出された値のいずれかより、Leftの値を選択的に設定する。詳細については後述するが、スイッチ部54は、システム全体の初期化時には値「0」を選択し、その他のときにはコーディングユニット単位レート制御部57から出力される値を選択する。スイッチ部54は、その選択したLeftの値をコーディングユニット単位レート制御部57に供給する。また、スイッチ部54は、選択したLeftの値をスイッチ部58にも供給する。
Q計算部55は、スイッチ部52より供給されるBaseQと、スイッチ部51より供給されるUniformityから量子化ステップサイズQを算出し、その値をスイッチ部56に供給する。スイッチ部56は、コーディングユニット単位レート制御部57において利用される量子化ステップサイズQの値を設定する。スイッチ部56は、量子化ステップサイズQの値として、Q計算部55において算出された値、若しくは、コーディングユニット単位レート制御部57において算出された値のいずれかより選択する。スイッチ部56は、処理対象のピクチャが切り替わるときにはQ計算部55において算出された値を選択し、その他のときにはコーディングユニット単位レート制御部57において算出された値を選択する。スイッチ部56は、その選択した量子化ステップサイズQをコーディングユニット単位レート制御部57に供給する。
コーディングユニット単位レート制御部57は、エントロピ符号化部15より供給される、コーディングユニット毎の発生符号量を示す変数であるSize、スイッチ部51より供給されるUniformity、スイッチ部52より供給されるBaseQ、スイッチ部53より供給されるStatus、スイッチ部54より供給されるLeft、スイッチ部58より供給される、Leftのピクチャ単位での最大値を示すMaxLeft、コーディングユニット当たりの目標符号量であるtSize、並びに、コーディングユニット単位レート制御部57自身が1つ前のコーディングユニットに対して算出した、そのコーディングユニットにおいて発生した符号量を正規化した正規化符号量を示す変数であるnSize、その正規化符号量のピクチャ単位の合計を表す変数であるnSum、および、コーディングユニットあたりの目標符号量のピクチャ単位の合計を表すtSum等の各変数を用いて、コーディングユニット単位で行うレート制御に関する処理を行う。
コーディングユニット単位レート制御部57が実行する処理の詳細については後述するが、コーディングユニット単位レート制御部57は、コーディングユニット毎に、量子化ステップサイズQを算出し、量子化部14に供給する。また、コーディングユニット単位レート制御部57は、その量子化ステップサイズQを、スイッチ部56およびピクチャ単位レート制御部59にも供給する。さらに、コーディングユニット単位レート制御部57は、算出したStatus,MaxLeft,nSum、およびtSum等の各値をピクチャ単位レート制御部59に供給する。また、コーディングユニット単位レート制御部57は、その算出したStatusをスイッチ部53に、Leftをスイッチ部54に、MaxLeftをスイッチ部58に、それぞれ供給する。
スイッチ部58は、コーディングユニット単位レート制御部57において利用される、MaxLeftの値を設定する。スイッチ部58は、MaxLeftとして、スイッチ部54より供給されるLeftの値、または、コーディングユニット単位レート制御部57において算出されたMaxLeftの値のいずれかを選択する。スイッチ部58は、ピクチャ単位の初期化時にはスイッチ部54より供給される値を選択し、他のときにはコーディングユニット単位レート制御部57から出力される値を選択する。スイッチ部58は、その選択したMaxLeftの値をコーディングユニット単位レート制御部57に供給する。
ピクチャ単位レート制御部59は、コーディングユニット単位レート制御部57より供給される量子化ステップサイズQ,Status,MaxLeft,nSum,tSum等の各変数、コーディングユニット当たりの目標符号量であるtSize、並びに、スイッチ部51より供給されるUniformity等に基づいて、ピクチャ単位で行うレート制御に関する処理を行う。
ピクチャ単位レート制御部59が実行する処理の詳細については後述するが、ピクチャ単位レート制御部59は、ピクチャ毎に、スイッチ部51より供給されるUniformityの更新と、BaseQの算出を行う。ピクチャ単位レート制御部59は、その更新したUniformityをスイッチ部51に供給し、算出したBaseQをスイッチ部52に供給する。
なお、繁雑になるため図示していないが、実際には、nSumおよびtSumについてもスイッチ部51乃至スイッチ部54等と同様なスイッチ部が設けられる。それらのスイッチ部はピクチャの符号化の始めにそれぞれの変数の値を「0」に初期化し、他のときにはコーディングユニット単位レート制御部57において算出された値を選択し、コーディングユニット単位レート制御部57に返す。
図7は、コーディングユニット単位レート制御部57の詳細な構成例を示すブロック図である。
図7に示されるように、コーディングユニット単位レート制御部57は、Left計算部101、最大値計算部102、符号量正規化部103、加算部104、加算部105、Status計算部106、およびQ計算部107を有する。
Left計算部101は、エントロピ符号化部15より供給される、コーディングユニット毎の発生符号量を示す変数であるSize、並びに、スイッチ部54より供給される、平滑化部17のバッファに蓄積されている符号化データのデータ量(符号量)を表す変数であるLeftに基づいて、新たなLeftを算出する(Leftの値を更新する)。Left計算部101は、算出したLeftを、スイッチ部54、最大値計算部102、およびQ計算部107に供給する。
最大値計算部102は、Left計算部101より供給されるLeft、並びに、スイッチ部58より供給される、Leftのピクチャ単位での最大値を示すMaxLeftに基づいて、新たなMaxLeftを算出する(MaxLeftの値を更新する)。最大値計算部102は、算出したMaxLeftをスイッチ部58およびピクチャ単位レート制御部59に供給する。
符号量正規化部103は、スイッチ部56より供給される量子化ステップサイズQに基づいて、エントロピ符号化部15より供給されるSizeを正規化し、コーディングユニットにおいて発生した符号量を正規化した正規化符号量を示す変数であるnSizeを求める。正規化の詳細については後述する。
なお、図中nSize[p,c]は、p番目のピクチャのc番目のコーディングユニットの正規化符号量を示す。符号量正規化部103は、その求めたnSizeを、加算部104およびStatus計算部106に供給する。
また、符号量正規化部103は、さらに、1つ前のピクチャの同じ位置のコーディングユニットの正規化符号量nSize[p-1,c]を、Status計算部106およびQ計算部107に供給する。つまり、符号量正規化部103より出力されたnSize[p,c]は、コーディングユニット単位レート制御部57内に戻され、次のピクチャの同じ位置のコーディングユニット(c番目のコーディングユニット)に対する処理において、nSize[p-1,c]として、Status計算部106およびQ計算部107に供給される。
さらに、符号量正規化部103は、同じピクチャの1つ前のコーディングユニットの正規化符号量nSize[p,c-1]をQ計算部107に供給する。つまり、符号量正規化部103より出力されたnSize[p,c]は、コーディングユニット単位レート制御部57内に戻され、次のコーディングユニットに対する処理において、nSize[p,c-1]としてQ計算部107に供給される。
加算部104は、1つ前のコーディングユニットまでの、正規化符号量nSizeのピクチャ単位の合計を表す変数であるnSumに、符号量正規化部103より供給される正規化符号量nSizeを加算し、新たなnSumを算出する(nSumの値を更新する)。加算部104は、算出したnSumをピクチャ単位レート制御部59に供給する。また、加算部104は、その算出したnSumを自分自身に戻して次のコーディングユニットに対する処理に利用する。なお、nSumはnSizeのピクチャ単位の合計を表す変数であるので、その値はピクチャ毎に初期化される。
加算部105は、1つ前のコーディングユニットまでの、コーディングユニット当たりの目標符号量のピクチャ単位の合計を表すtSumに、コーディングユニット当たりの目標符号量であるtSizeを加算し、新たなtSumを算出する(tSumの値を更新する)。加算部105は、算出したtSumをピクチャ単位レート制御部59に供給する。また、加算部105は、その算出したtSumを自分自身に戻して次のコーディングユニットに対する処理に利用する。なお、tSumはtSizeのピクチャ単位の合計を表す変数であるので、その値はピクチャ毎に初期化される。
Status計算部106は、tSize、符号量正規化部103より供給される、1つ前のピクチャの同じ位置のコーディングユニットの正規化符号量nSize[p-1,c]および最新の正規化符号量nSize[p,c]、並びに、スイッチ部56より供給される量子化ステップサイズQに基づいて、符号化する画像データの画像の状態を示すフラグであるStatusの新たな値(定常状態であるか、非定常状態であるか)を計算し、スイッチ部53より供給されるStatusの値を更新する。Status計算部106は、更新したStatusの値を、スイッチ部53およびピクチャ単位レート制御部59に供給するとともに、Q計算部107にも供給する。
Q計算部107は、Status計算部106より供給されるStatus、tSize、符号量正規化部103より供給される1つ前のピクチャの同じ位置のコーディングユニットの正規化符号量nSize[p-1,c]、Left計算部101より供給される最新のLeft、スイッチ部52より供給される、量子化ステップサイズのピクチャ毎の基準値(初期値)である基本量子化ステップサイズを表すBaseQ、画像の1ピクチャ内での均一さを学習する変数であるUniformity、並びに、符号量正規化部103より供給される同じピクチャの1つ前のコーディングユニットの正規化符号量nSize[p,c-1]に基づいて、量子化ステップサイズQを算出する。Q計算部107は、算出した量子化ステップサイズQを、量子化部14およびピクチャ単位レート制御部59に供給する。
図8は、ピクチャ単位レート制御部59の詳細な構成例を示すブロック図である。
図8に示されるように、ピクチャ単位レート制御部59は、Uniformity計算部151およびBaseQ計算部152を有する。
Uniformity計算部151は、コーディングユニット単位レート制御部57より供給される、符号化する画像データの画像の状態を示すフラグであるStatus、および、平滑化部17のバッファに蓄積されている符号化データのデータ量(符号量)を表す変数であるLeftのピクチャ単位での最大値を示すMaxLeft、並びにコーディングユニット当たりの目標符号量であるtSizeに基づいて、画像の1ピクチャ内での均一さを学習する変数であるUniformityの新たな値を算出する(スイッチ部51より供給される、Uniformityの値を更新する)。Uniformity計算部151は、算出したUniformityの新たな値をスイッチ部51に供給する。
BaseQ計算部152は、コーディングユニット単位レート制御部57より供給される、正規化符号量のピクチャ単位の合計を表す変数であるnSum、および、コーディングユニットあたりの目標符号量のピクチャ単位の合計を表すtSumに基づいて、量子化ステップサイズのピクチャ毎の基準値(初期値)である基本量子化ステップサイズを表すBaseQを算出する。BaseQ計算部152は、その算出したBaseQをスイッチ部52に供給する。
次に、図1の符号化装置1による符号化処理の流れ、およびその詳細について説明する。
最初に、図9のフローチャートを参照して、図1の符号化装置1による符号化処理の流れの例を説明する。
符号化処理が開始されると、ウェーブレット変換部10は、ステップS1において、処理対象ラインブロックの番号Aを初期設定にする。通常の場合、番号Aは「1」に設定される。設定が終了すると、ウェーブレット変換部10は、ステップS2において、最低域サブバンドにおいて上からA番目の1ラインを生成するのに必要なライン数(すなわち、1ラインブロック)の画像データを取得し、その画像データに対して、ステップS3において画面垂直方向に並ぶ画像データに対して分析フィルタリングを行う垂直分析フィルタリング処理を行い、ステップS4において画面水平方向に並ぶ画像データに対して分析フィルタリング処理を行う水平分析フィルタリング処理を行う。
ステップS5においてウェーブレット変換部10は、分析フィルタリング処理を最終レベルまで行ったか否かを判定する。分解レベルが最終レベルに達していないと判定された場合、処理はステップS3に戻され、現在の分解レベルに対して、ステップS3およびステップS4の分析フィルタリング処理が繰り返される。
ステップS5において、分析フィルタリング処理が最終レベルまで行われたと判定された場合、処理はステップS6に進む。
ステップS6において、係数並び替え部13は、現在のコーディングユニットであるラインブロックA(ピクチャ(インタレース方式の場合フィールド)の上からA番目のラインブロック)の係数を低域から高域の順番に並び替える。
ステップS7において、量子化部14は、ステップS6において順番が並び替えられた、ラインブロックAの係数に対して量子化を行う。エントロピ符号化部15は、ステップS8において、その係数に対してエントロピ符号化を行う。
なお、後述するようにレート制御部16は、この符号化処理のためのレート制御処理を実行する。量子化部14は、ステップS7において、このレート制御処理により設定される量子化ステップサイズQを用いて量子化を行う。また、レート制御部16は、ステップS8においてエントロピ符号化部15により行われるエントロピ符号化処理によって発生した符号量(符号化データのデータ量)を用いてレート制御処理を行う。このレート制御処理の詳細については、図10のフローチャートを参照して後述する。
ステップS9において、平滑化部17は、ステップS9のエントロピ符号化により得られたラインブロックAの符号化データを一時的に蓄積し、その蓄積した符号化データを所定のレートで読み出すことにより伝送レートの平滑化を行い、ステップS10において、その読み出した符号化データを外部に送出する。
ウェーブレット変換部10は、ステップS11において番号Aの値を「1」インクリメントして次のラインブロックを処理対象とし、ステップS12において、処理対象のピクチャ(インタレース方式の場合フィールド)について、未処理の画像入力ラインが存在するか否かを判定する。未処理の画像入力ラインが存在すると判定された場合、処理はステップS2に戻され、新たな処理対象のラインブロックに対してそれ以降の処理が繰り返される。
以上のようにステップS2乃至ステップS12の処理が繰り返し実行され、各ラインブロックが符号化される。そして、ステップS12において、未処理の画像入力ラインが存在しないと判定された場合、そのピクチャに対する符号化処理が終了される。次のピクチャに対しては新たに符号化処理が開始される。
このように、ウェーブレット変換部10は、ラインブロック単位で垂直分析フィルタリング処理および水平分析フィルタリング処理を最終レベルまで連続して行うので、従来の方法と比較して、一度に(同時期に)保持する(バッファリングする)必要のあるデータの量が少なく、用意すべきバッファのメモリ量を大幅に低減させることができる。また、最終レベルまで分析フィルタリング処理が行われることにより、後段の各処理も行うことができる(つまり、係数並び替え、レート制御、量子化、エントロピ符号化、および平滑化等の処理をラインブロック単位で行うことができる)。従って、画面全体に対してウェーブレット変換を行う方法と比較して遅延時間を大幅に低減させることができる。
また、以上のようにステップS6において係数の並び替えが行われることにより、この符号化データを復号する復号装置は、復号処理を容易かつ低遅延に行うことができる。
次に、図10のフローチャートを参照して、レート制御部16により実行されるレート制御処理の詳細な流れの例を説明する。
図10に示されるように、このレート制御処理の流れは2重のループを形成している。外側のループの流れに入る前に、全体の初期化が行われる。ステップS31において、レート制御部16のスイッチ部51は、画像の1ピクチャ内での均一さを学習する変数であるUniformityの値を初期値「1」に設定し、スイッチ部54は、平滑化部17のバッファに蓄積されている符号化データのデータ量(符号量)を表す変数であるLeftの値を初期値「0」に設定し、スイッチ部53は、符号化する画像データの画像の状態を示すフラグであるStatusの値を初期化して「非定常状態を示す値」に設定し、スイッチ部52は、量子化ステップサイズのピクチャ毎の基準値(初期値)である基本量子化ステップサイズを表すBaseQに予め定められた所定の初期値をセットする。さらに、コーディングユニット単位レート制御部57およびピクチャ単位レート制御部59は、コーディングユニット当たりの目標符号量をtSizeにセットする。
なお、BaseQの初期値の最適な値は、目標符号量や、入力される画像によって異なる。しかしながら、使用される量子化ステップサイズQはコーディングユニット毎に更新されるので、BaseQの初期値がどのような値であっても大きな問題は生じない。
レート制御処理の外側のループにおいてはピクチャ単位の処理が行われ、内側のループにおいてはピクチャ内のコーディングユニット単位の処理が行われる。
ステップS31においてレート制御処理全体に対する初期化処理が行われると、ステップS32およびステップS33において、外側のループにおける初期化、すなわち、ピクチャ単位の初期化が行われる。ステップS32において、現時点で未処理のピクチャの内、最初のもののピクチャ番号が変数pに設定される。
ステップS33において、Q計算部55は、BaseQの値をUniformityの値で除算し、量子化ステップサイズQを設定する。Q計算部55は、スイッチ部52より供給されるBaseQの値を、スイッチ部51より供給されるUniformityの値で除算し、その除算結果を量子化ステップサイズQとしてスイッチ部56に供給する。
また、ステップS33において、コーディングユニットにおいて発生した符号量を正規化した正規化符号量nSizeのピクチャ単位の合計を表す変数であるnSumと、コーディングユニットあたりの目標符号量tSizeのピクチャ単位の合計を表すtSumとが、初期化され、それぞれに値「0」が設定される。
さらに、ステップS33において、スイッチ部58は、Leftのピクチャ単位での最大値を示すMaxLeftの値をLeftに設定する。スイッチ部58は、MaxLeftの値を、スイッチ部54より供給されるLeftに設定し、そのMaxLeftをコーディングユニット単位レート制御部57に供給する。
ステップS33の処理が終了すると、処理は、内側のループ(ステップS34乃至ステップS37)に進む。
ステップS34において、ピクチャ番号pのピクチャ内における、現時点で未処理のコーディングユニット(例えばラインブロック)の内、最初のもののコーディングユニット番号が変数cに設定される。
量子化部14は、図9のステップS7において、画像データ(係数データ)の、ピクチャ番号pのピクチャ内の、コーディングユニット番号cのコーディングユニットに対して量子化ステップサイズQにより量子化を行う。また、エントロピ符号化部15は、その量子化された係数データに対してエントロピ符号化を行う。
コーディングユニット単位レート制御部57は、ステップS35において、そのエントロピ符号化により得られた符号化データのデータ量である発生符号量Sizeをエントロピ符号化部15より取得し、ステップS36において、コーディングユニット単位のレート制御処理(レートの更新処理)を行う。このコーディングユニット単位更新処理の詳細については、図11のフローチャートを参照して後述する。
ステップS36の処理が終了すると、処理はステップS37に進む。ステップS37において、コーディングユニット単位レート制御部57は、現在のピクチャ内、すなわち、ピクチャ番号pのピクチャ内に、未処理のコーディングユニットが存在するか否かを判定する。現在のピクチャ内に未処理のコーディングユニットが存在すると判定された場合、処理はステップS34に戻され、次の未処理のコーディングユニットに対して、ステップS34乃至ステップS37の処理が繰り返される。また、ステップS37において、現在のピクチャ内に未処理のコーディングユニットが存在しないと判定された場合、内側のループの処理が終了し、処理は、ステップS38に進められて外側のループに戻る。
ステップS38において、ピクチャ単位レート制御部59は、ピクチャ単位のレート制御処理(レートの更新処理)を行う。このピクチャ単位更新処理の詳細については、図15のフローチャートを参照して後述する。
ステップS38の処理が終了すると、処理はステップS39に進む。ステップS39において、ピクチャ単位レート制御部59は、処理対象の画像データに未処理のピクチャが存在するか否かを判定する。未処理のピクチャが存在すると判定された場合、処理はステップS32に戻され、次の未処理のピクチャに対して、ステップS32乃至ステップS39の処理が繰り返される。また、ステップS39において、未処理のピクチャが存在しないと判定された場合、外側のループの処理も終了され、レート制御処理が終了される。
次に、図11のフローチャートを参照して、図10のステップS36において実行されるコーディングユニット単位更新処理の詳細な流れの例を説明する。
コーディングユニット単位更新処理が開始されると、ステップS51において、まず、平滑化部17のバッファに蓄積されている符号化データのデータ量(符号量)を表す変数であるLeftと、Leftのピクチャ単位での最大値を示すMaxLeftの更新が行われる。
すなわち、ステップS51において、Left計算部101は、Leftに、現在のコーディングユニットにおいて発生した符号量であるSizeを加算し、1つ前のコーディングユニットを符号化し終えたときから現在のコーディングユニットを符号化し終えたときまでに平滑化部17のバッファから送出された符号量(送出符号量)を減算することにより、新たなLeftを算出する。つまり、Left計算部101は、スイッチ部54を介して供給される、Left計算部101自身が1つ前のコーディングユニットに対して算出したLeftの値に、エントロピ符号化部15より供給されたSizeの値を加算し、さらに、送出符号量を減算する。以上の演算によりLeftの値が更新される。
また、ステップS51において、最大値計算部102は、MaxLeftと新たなLeftの、値の大きい方を新たなMaxLeftに設定する。つまり、最大値計算部102は、スイッチ部58より供給されたMaxLeft(最大値計算部102自身が1つ前のコーディングユニットに対して更新したMaxLeft)の値と、Left計算部101において算出され、供給された最新のLeftの値とを比較し、値の大きい方を新たなMaxLeftとして選択する。以上の演算によりMaxLeftの値が更新され、平滑化部17のバッファに溜った符号量のピクチャ内での最大値が作られることになる。
ステップS51の処理が終了すると、ステップS52において、符号量正規化部103は、ピクチャ番号pのピクチャの、コーディングユニット番号cのコーディングユニットで発生した符号量を正規化したnSize[p,c]を算出する。符号量正規化部103は、エントロピ符号化部15より供給されたSizeの値に、スイッチ部56より供給される量子化ステップサイズQを乗算することによりnSize[p,c]を算出する。
ここで、量子化ステップサイズQと発生符号量の関係について説明する。量子化ステップサイズQの値を変化させたときの発生符号量の変化の様子を調べる実験を行った。図12は、その実験結果を示すグラフである。図12のグラフにおいて、横軸は、量子化ステップサイズQの逆数を示しており、縦軸は、発生した符号量(相対値)を示している。黒丸(●)と、黒四角(■)が、実験結果であり、互いに内容が異なる画像を符号化したときの、量子化ステップサイズQの逆数と発生符号量の関係を示している。
つまり、図12のグラフに示されるように、量子化ステップサイズの逆数(1/Q)によって、発生符号量は(1/Q)^kと表すことができる。図12のグラフにおいて、黒三角(▲)は、kの値が「0.7」としたときの発生符号量と量子化ステップサイズQの逆数との関係を示しており、バツ(×)は、kの値が「0.6」としたときの発生符号量と量子化ステップサイズQの逆数との関係を示している。図12のグラフに示されるように、上述した実験結果は、これらの2曲線の間に挟まれている。すなわち、指数kの値は、0.6乃至0.7程度の値とされる。
以上の実験結果から、量子化ステップサイズQの変動の範囲を狭くすれば、量子化ステップサイズQの逆数と発生符号量との関係は、直線で近似することができる。つまり、量子化ステップサイズQと発生符号量の積が略一定の値であるとみなすことができる。
従って、ある画像を量子化ステップサイズQ0で符号化したときの発生符号量をS0とし、同じ画像を量子化ステップサイズQ1で符号化したときの発生符号量をS1とするとき、以下の式(4)が成り立つ。
Q0×S0 ≒ Q1×S1 ・・・(4)
この式(4)は、ピクチャ全体の符号化だけでなく、ピクチャの一部、すなわちコードユニット単位での符号化においても成り立つ。
そして、量子化ステップサイズQの値が「1」のときの発生符号量をSとすると、以下の式(5)が成り立つ。
Q0×S0 ≒ Q1×S1 ≒ 1×S = S ・・・(5)
すなわち、ステップS52において算出される正規化符号量nSizeは、量子化ステップサイズQの値が「1」のときの発生符号量であると考えることもできる。
発生する符号量の値は、使用された量子化ステップサイズQの値が大きければ、小さくなり、使用された量子化ステップサイズQの値が小さければ、大きくなる傾向がある。発生符号量の正規化は、使用された量子化ステップサイズQの値を乗算することにより、発生符号量の値を補正し、その傾向を低減させることであるとも考えることができる。
また、ステップS51において、加算部104は、1つ前のコーディングユニットに対して算出した、正規化符号量のピクチャ単位の合計を表すnSumに、符号量正規化部103において算出された正規化符号量nSize[p,c]を加算し、新たなnSumを算出する(nSumを更新する)。
さらに、ステップS51において、加算部105は、1つ前のコーディングユニットに対して算出した、コーディングユニットあたりの目標符号量のピクチャ単位の合計を表すtSumに、コーディングユニット当たりの目標符号量であるtSizeを加算し、新たなtSumを算出する(tSumを更新する)。
ステップS53において、Status計算部106は、ステップS52において符号量正規化部103において算出された最新の正規化符号量nSize[p,c]の値が、1つ前のピクチャの同じ位置のコーディングユニットに対する正規化符号量であるnSize[p-1,c]と、tSize×Q/2との加算結果の値よりも大きいか否かを判定する。nSize[p,c]が、nSize[p-1,c]+tSize×Q/2の演算結果よりも大きいと判定された場合、処理はステップS54に進められる。ステップS54において、Status計算部106は、Statusを「非定常状態」に設定する。ステップS54の処理が終了すると、処理はステップS55に進む。また、ステップS53において、nSize[p,c]が、nSize[p-1,c]+tSize×Q/2の演算結果よりも大きくないと判定された場合、ステップS54の処理が省略され、処理はステップS55に進む。
つまり、Status計算部106は、最新のnSizeが1つ前のピクチャの同じ位置のコーディングユニットのnSizeよりもtSize×Q/2以上大きい場合のみ、Statusを非定常状態にしている。このステップS53の判定条件である「最新のnSizeが1つ前のピクチャの同じ位置のコーディングユニットのnSizeよりもtSize×Q/2以上大きい場合」とは、最新の正規化符号量の値が、1つ前のピクチャの同じ位置のコーディングユニットの正規化符号量の値よりも明らかに大きいということを示している。この判定条件は一例であり、tSize×Q/2を他の値に変えても構わないし、他の形の式で判定を行うようにしてもよい。
Statusが非定常状態であるというのは、1つ前のピクチャと発生符号量のパターンに大きな違いを検出し、現在のピクチャの画像(係数データ)と1つ前のピクチャの画像(係数データ)との相関が低いことを意味し、Statusが定常状態であるというのは1つ前のピクチャと発生符号量のパターンに大きな違いを検出しておらず、現在のピクチャの画像(係数データ)と1つ前のピクチャの画像(係数データ)との相関が高いことを意味している。
ステップS55以降の処理において、Q計算部107は、量子化ステップサイズQの算出を行う。Q計算部107は、3つに場合分けを行い、各場合によって、量子化ステップサイズQの算出方法を変える。
ステップS55において、Q計算部107は、Statusが定常状態であるか否かを判定する。Statusが定常状態であると判定された場合、処理はステップS56に進む。ステップS56において、Q計算部107は、Left/tSizeの値が5.6より小さいか否かを判定する。Left/tSizeの値が5.6より小さいと判定された場合、処理はステップS57に進む。つまり、場合分けの1つ目(第1の場合)は、Statusが定常状態であり、かつ、Left/tSizeが5.6未満の場合である。
この第1の場合のとき、Q計算部107は、ステップS57において、量子化ステップサイズQを、基本量子化ステップサイズであるBaseQに設定し、その後、ステップS58において、その量子化ステップサイズQを、画像の1ピクチャ内での均一さを学習する変数であるUniformityで除算することにより、新たな量子化ステップサイズQを算出する(量子化ステップサイズQの値を更新する)。つまり、Q計算部107は、ピクチャ内において発生符号量が均一でない場合に量子化ステップサイズQを大きくするように補正し、符号量が減るようにする。以上の処理を換言すれば、この場合、Q計算部107は、新たな量子化ステップサイズQの値を、BaseQ/Uniformityに設定している。
ステップS58の処理が終了すると、コーディングユニット単位更新処理が終了され、処理は図10のステップS36に戻り、ステップS37に進む。
図11のステップS56において、Left/tSizeの値が5.6以上であると判定された場合、処理はステップS59に進む。つまり、場合分けの2つ目(第2の場合)は、Statusが定常状態であり、かつ、Left/tSizeが5.6以上の場合である。
この第2の場合のとき、Q計算部107は、ステップS59において、量子化ステップサイズQを、nSize[p-1,c]/tSizeに設定する。これは、量子化ステップサイズQを、上述した式(5)に対応する以下の式(6)の関係式より求めるものである。
nSize[p-1,c]×1 = tSize×Q ・・・(6)
nSize[p-1,c]は、1つ前のピクチャの同じ位置のコーディングユニットの正規化符号量(量子化ステップサイズ「1」で符号化したときの発生符号量)である。つまり、この場合、求められる量子化ステップサイズQは、1つ前のピクチャの同じ位置のコーディングユニットを符号量tSizeで符号化するような量子化ステップサイズであると考えることができる。
この第2の場合においては、Statusが定常状態であるので、Q計算部107は、現在のピクチャと1つ前のピクチャとの相関が高いと判断し、その相関を利用して、直前のピクチャの同じ位置のコーディングユニットの情報を用いて量子化ステップサイズQを容易に設定する。
ステップS60において、Q計算部107は、値「1」と(4−0.5Left/tSize)の小さい方で、ステップS59において設定した量子化ステップサイズQを除算することにより、新たな量子化ステップサイズQを算出する。つまり、Q計算部107は、Leftが大きい場合、すなわち、符号化データが平滑化部17のバッファに多く蓄積されている場合、量子化ステップサイズQを大きくするように補正し、符号量が減るようにする。なお、ここで(4−0.5Left/tSize)の値が「0」や負の数になることもあり得るが、その場合、Q計算部107は、量子化ステップサイズQの値を、量子化ステップサイズQが取り得る最大値に設定する。
ステップS61において、Q計算部107は、量子化ステップサイズQの値をUniformityで除算する。つまり、Q計算部107は、ピクチャ内において発生符号量が均一でない場合に量子化ステップサイズQを大きくするように補正し、符号量が減るようにする。
Q計算部107は、第1の場合において、量子化ステップサイズQを、直前のピクチャと同じ難しさであるという仮定の上で、各コーディングユニットをtSizeで符号化するためのものとして設定するのに対して、第2の場合、符号化データが平滑化部17のバッファに多く蓄積されていることから、量子化ステップサイズQを大きくして符号量が減るように補正する。図13は、ステップS60におけるMin(1, 4-0.5Left/tSize)と発生符号量の変化の関係を示すグラフである。なお、第2の場合は、Left/tSizeが「5.6」以上のときであるので、図13のグラフにおいてはLeft/tSizeが「5.6」以上の部分が示されている。
図13に示されるように、Left/tSizeが「5.6」から「6」までのときは(4-0.5Left/tSize)の値が「1」以上になるため、Min(1, 4-0.5Left/tSize)の値は「1」で一定である。Left/tSizeが「6」を過ぎると、Left/tSizeが「1」大きくなるたびにMin(1, 4-0.5Left/tSize)の値は0.5小さくなっている。
ステップS60においては、Min(1, 4-0.5Left/tSize)によって量子化ステップサイズQが除算される。発生符号量と量子化ステップサイズの関係により、量子化ステップサイズQに対するこの除算により発生符号量はおよそMin(1, 4-0.5Left/tSize)倍になる。つまり、図13のグラフの縦軸はステップS60における発生符号量の変化でもある。すなわち、Q計算部107は、Left/tSizeが「5.6」以上になると、各コーディングユニットで目標符号量と同じだけの符号量が出るように制御し、さらにLeft/tSizeが「6」以上になると、各コーディングユニットで目標符号量を下回る符号量が出るようにして平滑化部17のバッファに蓄積された符号量が徐々に減るように制御する。
なお、第1の場合において求められる量子化ステップサイズQより、第2の場合において求められる量子化ステップサイズQのほうが小さいこともあり得る。基本的に、第2の場合、つまり、Left/tSizeの値が5.6以上である場合、平滑化部17のバッファに多くの符号化データが蓄積されており、量子化ステップサイズQは、発生符号量を減らすように設定されることが望ましい。そこで、Q計算部107は、ステップS61において求める量子化ステップサイズQよりも、ステップS57およびステップS58の処理において求める量子化ステップサイズQの方が大きい場合、そのステップS57およびステップS58の処理において求められる量子化ステップサイズQを用いるようにしてもよい。
ステップS61の処理が終了すると、コーディングユニット単位更新処理が終了され、処理は図10のステップS36に戻り、ステップS37に進む。
図11のステップS55において、Statusが非定常状態であると判定された場合、処理はステップS62に進む。つまり、場合分けの3つ目(第3の場合)は、Statusが非定常状態である場合である。
この第3の場合のとき、Q計算部107は、ステップS62において、量子化ステップサイズQを、同じピクチャで1つ前のコーディングユニットにおける正規化符号量であるnSize[p,c-1]を用いて、nSize[p,c-1]/tSizeに設定する。つまり、Q計算部107は、同じピクチャで1つ前のコーディングユニットを符号量tSizeで符号化するような量子化ステップサイズQを求める。Statusが非定常状態であるということは、直前のピクチャとの相関が低いということである。そこで、Q計算部107は、同じピクチャで1つ前のコーディングユニットの情報を使うことによりピクチャ内での空間的相関を利用して、量子化ステップサイズを算出する。
ステップS63において、Q計算部107は、第2の場合のステップS60のときと同様に、量子化ステップサイズQを値「1」と(4−0.5Left/tSize)の小さい方で除算する。Q計算部107は、Leftが大きい場合、つまり、符号化データが平滑化部17のバッファに多く蓄積されている場合、量子化ステップサイズQを大きくし、符号量が減るように補正する。
ステップS63の処理が終了すると、コーディングユニット単位更新処理が終了され、処理は図10のステップS36に戻り、ステップS37に進む。
なお、以上においては、同じピクチャ内で1つ前のコーディングユニットの情報を用いるためにnSize[p,c-1]の値を参照したが、1つ前のコーディングユニットの情報が確定してからでは処理時間が間に合わないこともある。そのような場合には、2つ以上前のコーディングユニットの情報を用いるようにしてもよい。例えば、2つ前のコーディングユニットのnSize[p,c-2]を用いて量子化ステップサイズQを算出するようにしてもよい。また、いくつかのラインの情報を2つ以上前のコーディングユニットから、残りのラインの情報を直前のコーディングユニットのラインから参照して用いるようにしてもよい。
以上の量子化ステップサイズQの計算方法をまとめると図14に示される表のようになる。
図14の表において、量子化ステップサイズQの計算方法1は、図11のステップS57およびステップS58に対応する。また、計算方法2はステップS59乃至ステップS61に対応し、計算方法3は、ステップS62およびステップS63に対応する。計算方法3はStatusが非定常状態のときに使用され、計算方法1は、Statusが定常状態であり、かつ、平滑化部17のバッファに蓄積されている符号化データの符号量が小のときに使用され、平滑化部17のバッファに蓄積されている符号化データの符号量が小でなければ計算方法2が使用される。ここで平滑化部17のバッファに蓄積されている符号化データの符号量が小とは、Left/tSizeが「5.6」未満であることである。
計算方法1が用いられるのは、Statusが定常状態であり、現在のピクチャと1つ前のピクチャとの間で相関がある場合であり、平滑化部17のバッファに蓄積されている符号化データの符号量が少ない場合である。そこでこの場合、Q計算部107は、量子化ステップサイズQを一定にし、コーディングユニット毎に発生符号量が変動するが画質の劣化が見えにくいという特徴のある符号化を実行させる。
これに対して、計算方法2の場合、平滑化部17のバッファに蓄積されている符号化データの符号量が小ではないため、Q計算部107は、平滑化部17のバッファに蓄積されている符号化データの符号量が増えないようにコーディングユニット毎の発生符号量を一定にしようとする。ただし、この場合、平滑化部17のバッファが溢れないようにするのと引き換えに、符号化が難しいところでも発生符号量が同等になる。そのため、符号化の難しいところでは劣化が見えやすい。ただし、Statusが定常状態であるので、1つ前のピクチャとの相関が高い。そこで、Q計算部107は、このことを利用して量子化ステップサイズQを設定するようにし、画質を向上させるように符号化を実行させる。
これらに対して、計算方法3の場合、Statusが非定常状態であるため、1つ前のピクチャとの相関が低い。つまり、Q計算部107は、画面の上側を符号化しているときに画面の下側の符号化が難しいかどうかを判断することができないので、どの場所も同等の難しさだと仮定して、量子化ステップサイズQの設定を行うようにするのが妥当である。そこでQ計算部107は、ステップS62において、同じピクチャで1つ前のコーディングユニットとの相関を使って量子化ステップサイズQを決定する。
計算方法2および計算方法3の場合、平滑化部17のバッファに蓄積されている符号化データの符号量が大のとき(Left/tSizeが「6」以上である場合)、Q計算部107は、ステップS60またはステップS63において、発生符号量が全コーディングユニットで同等よりも少なくなるように量子化ステップサイズQを設定し、平滑化部17のバッファに蓄積されている符号化データの符号量を減らすようにしている。このようにして、Q計算部107は、平滑化部17のバッファが溢れることを低減させることができる。
次に、図15のフローチャートを参照して、図10のステップS38において実行されるピクチャ単位更新処理の詳細な流れの例を説明する。
ピクチャ単位更新処理が開始されると、ステップS81において、Uniformity計算部151は、符号化する画像データの画像の状態を示すフラグであるStatusが定常状態であるか否かを判定する。Statusが定常状態であると判定された場合、処理は、ステップS82に進む。
ステップS82において、Uniformity計算部151は、画像の1ピクチャ内での均一さを学習する変数であるUniformityに、(1.7 - 0.125MaxLeft / tSize)を乗算し、新たなUniformityを算出する(Uniformityを更新する)。つまりUniformity計算部151は、コーディングユニット当たりの目標符号量であるtSizeで正規化した、平滑化部17のバッファに蓄積されている符号量Leftのピクチャ単位での最大値MaxLeftが大きければUniformityを減らし、小さければUniformityを増やすように、Uniformityを更新する。
さらに、Uniformity計算部151は、ステップS83において、Uniformityが「1」を越えないように、Uniformityと値「1」を比較し、小さい方を新たなUniformityとして設定する(クリッピングを行う)。ステップS83の処理が終了すると、処理はステップS85に進む。
また、ステップS81において、Statusが非定常状態であると判定された場合、処理はステップS84に進む。ステップS84において、Uniformity計算部151は、Uniformityの値を「1」に設定する。ステップS84の処理が終了すると、処理はステップS85に進む。
ステップS85において、BaseQ計算部152は、Statusの値に関わらず、正規化符号量のピクチャ単位の合計nSumを、コーディングユニットあたりの目標符号量のピクチャ単位の合計tSumで除算し、基本量子化ステップサイズBaseQを算出する。BaseQが算出されると、ステップS86においてスイッチ部53によりStatusが定常状態に設定された後、ピクチャ単位更新処理が終了され、処理は図10のステップS38に戻り、ステップS39に進む。
ここで、図11のステップS58の処理において使用されるUniformityについて考える。まず、Uniformityが「1」の場合、ステップS58においてQ = Qとなり、ステップS57の処理において設定されたBaseQがそのまま量子化ステップサイズQとして使用されることになる。BaseQは、図15のステップS85での求め方の通り、1ピクチャ全体を通して目標符号量になるような量子化ステップサイズ(基本量子化ステップサイズ)である。
次に、Uniformityが「0.8」であった場合、図11のステップS58においてQ = Q/0.8となる。この量子化ステップサイズQを用いた場合に発生する符号量は、上述した発生符号量と量子化ステップサイズの関係により、BaseQを用いた場合のおよそ0.8倍になる。
このUniformityの値は、図10のステップS31において初期値として値「1」が設定され、図15のステップS82およびステップS83、または、ステップS84において、1ピクチャの処理の終了時に更新される。この更新のとき、Statusが定常状態であれば、まずステップS82の処理が行われ、Uniformityが以下の式(7)のように更新される。
Uniformity = Uniformity × (1.7 0.125MaxLeft / tSize) ・・・(7)
図16に示されるグラフは、この式(7)の関係をグラフ化したものであり、Uniformityの変化と発生符号量の変化を示している。図16の横軸はLeft/tSizeで、縦軸はUniformityの変化を倍率で示している。図16のグラフに示されるように、Left/tSizeが「5.6」のときにUniformityは変化しない。Left/tSizeが「5.6」未満のとき、Uniformityは大きくなり、Left/tSizeが「5.6」超のとき、Uniformityは小さくなっている。
例えばピクチャの上側で符号があまり発生せず下側で多くの符号が発生する場合、1ピクチャ全体を通しての符号量は目標符号量に収まっていても、ピクチャの下側のコーディングユニットにおいて発生した符号化データが平滑化部17のバッファに多く蓄積されLeft/tSizeが大きくなることがある。このような場合、平滑化部17のバッファが溢れる恐れがあるので、Uniformity計算部151は、発生符号量を減らす方向に調整するためにUniformityの値を小さくしている。上述したように、Uniformityの値が小さくなると量子化ステップサイズが大きくなり、発生符号量が小さくなる。
なお、Statusが非定常状態の場合、Uniformity計算部151は、ピクチャ間の相関が低いと判断し、Uniformityの値を初期値の「1」に戻す。
次に、BaseQの値について考える。BaseQは、基本量子化ステップサイズであり、BaseQ計算部152においてnSum/tSumに設定される。tSumはコーディングユニットあたりの目標符号量tSizeの1ピクチャ分の総和であり、つまり、1ピクチャ全体での目標符号量である。nSumは、コーディングユニットにおいて発生した符号量を正規化した正規化符号量nSizeの1ピクチャ分の総和であり、つまり1ピクチャ分の正規化符号量である。この正規化符号量nSizeは、図11のステップS52において、Size×Qで求まる。
単純な場合を考えると、Statusが定常状態で、Uniformityが「1」で、Left/tSizeが「5.6」未満であることが満たされるとき、図11のステップS57およびステップS58の処理により量子化ステップサイズQが設定されるので、その量子化ステップサイズQの値は、常にBaseQと同じである。つまり、nSizeは、Size×BaseQとなり、nSumは1ピクチャ全体で発生した符号量にBaseQを掛けたものになる。1ピクチャ全体で発生した符号量をΣSizeとし、目標符号量tSumになるような量子化ステップサイズをtQと表すと、式(4)に示される発生符号量と量子化ステップサイズの関係により次の式(8)が成り立つ。
nSum = BaseQ×ΣSize ≒ tQ×tSum ・・・(8)
この式(8)からtQを求めると、tQ ≒ nSum/tSumとなり、BaseQ計算部152におけるBaseQの算出方法と一致する。このBaseQは次のピクチャの基本量子化ステップサイズとして使われる。通常の動画像では時間的に隣接するピクチャ同士の相関は高く、量子化ステップサイズと発生符号量の関係はほぼ同じであるので、Q計算部107は、この手順によって次のピクチャの発生符号量を、容易に、精度よく求めることができる。
レート制御部16は、以上のようにレート制御を行う。以下に、このレート制御の特徴をまとめる。
まず、符号化処理において、シーンチェンジなどのため画像の難しさが大きく変化した場合、その変化直後のピクチャでは目標符号量を外れる可能性が高い。伝送符号量に最大値があるシステムを使って伝送する場合などでは、目標符号量を超過することは問題である。
そこで、特徴の1つとして、レート制御部16は、1つ前のピクチャより発生符号量nSizeが大きく増えているか否かを判定し(図11のステップS53)、大きく増えていると判定すれば、直前のピクチャとの相関が低いと判断して非定常状態と判断する(図11のステップS54)。
あるコーディングユニットにおいて発生した符号量が、1つ前のピクチャの同じ位置のコーディングユニットより明らかに多い場合、シーンチェンジで画像が難しくなった(非定常状態である)と判断し、以降の各コーディングユニットの量子化ステップサイズを、ピクチャ内の相関を利用して求めるようにする(図11のステップS62)。
このようにすることにより、レート制御部16は、次のコーディングユニットが入力される前に、そのコーディングユニットの量子化ステップサイズQを求めることができる。シーンチェンジがあった場合、連続する画像間の相関よりも画像内での相関の方が高いと考えられるので、このような特徴により、レート制御部16は、精度の高いレート制御を行うことができる。
なお、Statusは、図15のステップS86の処理において、予め定常状態と設定されており、1つ前のピクチャとの相関が高いと判断された場合、その定常状態のままとされる。
定常状態の場合、1つ前のピクチャとの相関が高いと判断されているということなので、平滑化部17のバッファに符号化データが多く溜っていなければ、図11のステップS57の処理により、量子化ステップサイズQとして基本量子化ステップサイズBaseQが設定される。レート制御部16は、このように制御することにより、ピクチャ内の画質を均一にし、画質の劣化を低減させることができる。
また、平滑化部17のバッファに符号化データが多く溜っている場合、レート制御部16は、図11のステップS59の処理により、次のコーディングユニットの目標符号量tSizeと、1つ前のピクチャの同じ位置のコーディングユニットの正規化符号量nSize[p-1,c]を用いて次のコーディングユニットの量子化ステップサイズQを求める。レート制御部16は、このように制御することにより、次のコーディングユニットが入力される前に、そのコーディングユニットの量子化ステップサイズQを求めることができる。
上述したように、同じピクチャ内の他のコーディングユニットの情報を用いて量子化ステップサイズの設定を行う場合、1つ前のピクチャ全体の基本量子化ステップサイズBaseQを用いて量子化ステップサイズの設定を行う場合と比べて、画質が低下する恐れが高く不利である。従って、他の特徴として、レート制御部16は、発生符号量が、1つ前のピクチャで同じ位置のコーディングユニットの符号量より明らかに(例えば1.5倍以上)多くなったときのみ、同じピクチャ内の他のコーディングユニットの情報を用いて量子化ステップサイズQの設定を行うようにする。この特徴により、レート制御部16は、画質の低下を抑制しながら、目標符号量の超過も抑制し、平滑化部17のバッファの溢れを低減させることができる。
なお、画質について「不利」とは、全コーディングユニットで同じ量子化ステップサイズを使う場合に比べて不利という意味である。シーンチェンジなどのため入力される画像が分からないので、実際には、全コーディングユニットで同じ量子化ステップサイズを使うことはそもそも無理がある。また、実際には、シーンチェンジ後の一瞬の画質劣化は人間の目には見えにくく目立たない。従って、上述したように、BaseQを用いて量子化ステップサイズの設定を行う方法と、同じピクチャ内の他のコーディングユニットの情報を用いて量子化ステップサイズの設定を行う方法とを併用しても、実際の視覚上、画質の劣化は少ない。
ところで、同じシーンであっても画像の一部が変わって符号量が発生しすぎることもある。伝送符号量に最大値があるシステムを使って伝送する場合などでは、目標符号量を超過することは問題である。このとき、上述した、同じピクチャ内の他のコーディングユニットの情報を用いて量子化ステップサイズの設定を行う方法を適用することも考えられるが、画質的に不利になるので、この方法の多用は望ましくない。
そこで、他の特徴として、レート制御部16は、平滑化部17のバッファに符号化データが多く(例えば70%以上)蓄積された場合、前の画像と符号量がまったく変わってしまったわけではなく、Statusは定常状態であるので、1つ前のピクチャの同じ位置のコーディングユニットとの相関が高いと考え、ピクチャp(p番目のピクチャ)の、コーディングユニットc(c番目のコーディングユニット)で使用される量子化ステップサイズQ[p,c]を、ピクチャpのコーディングユニットcの目標符号量S[p,c]と、1つ前のピクチャp-1のコーディングユニットcを符号化したときの量子化ステップサイズQ[p-1,c]と、その発生符号量S[p-1,c]を用いて次の式(9)のように求める(図11のステップS59)。
Q[p,c] = Q[p-1,c] ×(S[p-1,c] / S[p,c]) ・・・(9)
この方法も、コーディングユニット毎に量子化ステップサイズを選択する点では、上述した、同じピクチャ内の他のコーディングユニットの情報を用いて量子化ステップサイズの設定を行う方法と同様である。
しかしながら、この方法の場合、相関が高いと考えられる1つ前のピクチャの同じ位置のコーディングユニットの情報を参照するので、レート制御部16は、より精度の高いレート制御を行うことができる(より確実にバッファの溢れを抑制することができる)。
ところで、上述した方法を用いても、1コーディングユニットで発生する符号量を完全に制御することができず、平滑化部17のバッファに蓄積される符号化データの符号量が増え続けることも考えられる。
そこで、平滑化部17のバッファにさらに多くの(例えば75%以上)符号化データが蓄積された場合、レート制御部16は、上述した方法で求める量子化ステップサイズQ[p,c]よりも荒い量子化ステップサイズQを設定する。
例えば、レート制御部16は、バッファ使用率が75%の場合、目標符号量が1.0ラインブロック(プレシンクト)分の符号量となるように量子化ステップサイズQを設定し、バッファ使用率が80%の場合、目標符号量が0.8ラインブロック(プレシンクト)分の符号量となるように量子化ステップサイズQを設定し、バッファ使用率が85%の場合、目標符号量が0.6ラインブロック(プレシンクト)分の符号量となるように量子化ステップサイズQを設定し、バッファ使用率が90%の場合、目標符号量が0.4ラインブロック(プレシンクト)分の符号量となるように量子化ステップサイズQを設定し、バッファ使用率が95%の場合、目標符号量が0.2ラインブロック(プレシンクト)分の符号量となるように量子化ステップサイズQを設定する。
つまり、特徴の1つとして、レート制御部16は、平滑化部17のバッファの使用率に応じて、量子化ステップサイズQの値を補正する(ステップS60およびステップS63)。
このようにすることにより、レート制御部16は、平滑化部17のバッファに符号化データが多く溜った場合には発生符号量を低減させ、バッファ溢れの発生を抑制することができる。
ところで、例えば映画をテレビジョン受像機のモニタに表示させた場合のように、アスペクト比の違いにより、画面の上下や左右の一部分が恒常的に黒画像となる所謂レターボックス画像のような画像の場合、1ピクチャ内において、通常通り符号が発生する部分と、符号がほとんど発生しない部分とがある。
このような画像に対して、上述した方式を用いてレート制御を行うと、1ピクチャを通して目標符号量になるように、発生符号量を制御するため一部のコーディングユニットに集中して多くの符号が発生することになる。そのため、1ピクチャ全体の発生符号量を、目標符号量以下に制御できていても、符号の発生の偏りにより、ピクチャの途中で平滑化部17のバッファで溢れが発生する恐れが高くなる。
これに対して、上述したようにコーディングユニット毎に量子化ステップサイズQを制御する方法も考えられるが、上述したように画質的に不利となる恐れがある。また、平滑化部17のバッファのメモリ容量を増加させることも考えられるが、その場合、回路規模やコストが増大するだけでなく、符号化処理の遅延時間が増大する恐れもある。
そこで、レート制御部16は、ピクチャ内の符号発生均一性を表すUniformityという変数を用いる。各コーディングユニットで発生する符号量の偏りが少ないほどUniformityは大きい値を取る。Uniformityの最大値は「1」であり、最小値は「0」である。
特徴の1つとして、レート制御部16は、このUniformityを、符号化開始前に初期値「1」に初期化し(図10のステップS31)、1ピクチャの符号化が終った時点で次のように更新する。Statusが非定常状態の場合、レート制御部16は、Uniformityの値を「1」とする(図15のステップS84)。また、Statusが定常状態の場合、レート制御部16は、そのピクチャの符号化中に、平滑化部17のバッファに蓄積された符号量(バッファ使用率)の最大値MaxLeftを調べ、その値に応じてUniformityを補正する(図15のステップS83)。
例えば、MaxLeft(バッファ使用率の最大値)が50%であればUniformityの値を10%増加させ、65%であればUniformityの値を5%増加させ、70%であればUniformityの値を変更せず、75%であればUniformityの値を5%低減させ、80%であればUniformityの値を10%低減させる。もちろん、これは一例であり、平滑化部17のバッファにおいて溢れが発生する恐れがあるほどMaxLeftの値が大きいときに、Uniformityを低下させるように補正するのであれば、MaxLeftがどのような値をとるときに、Uniformityの値をどのように補正するようにしてもよい。
なお、このように算出されるUniformityは、量子化ステップサイズQの補正に用いられる(図11のステップS58およびステップS61)。
この方式では、レート制御部16は、符号発生が不均一なためバッファが溢れそうな画像の場合に、目標符号量(量子化ステップサイズQ)を予め低減させる。この特徴により、レート制御部16は、バッファが溢れそうになってから、上述したような、同じピクチャ内の他のコードユニットの情報を用いて量子化ステップサイズQを算出する方式を使うような場合の発生を低減させることができる。それと同時に、さらに、1ピクチャの全コードユニットを同じ量子化ステップサイズQで符号化させることができるため、レート制御部16は、符号化対象の画像の画質を向上させることができる。
この方式により、1ピクチャを通しての発生符号量は目標符号量よりも少なくなるが、1ピクチャ中で最も荒いコードユニットの量子化ステップサイズQを比べると、この方式のほうが、上述した他の方式よりも細かいため画質としては安定する。
所謂レターボックス画像の場合、この方式を使わないと画質が極端に劣化する。実際においては、動きが少ない画像では画質劣化が目立つので、レターボックス画像のように、ほとんど動きのない黒画像の部分を有するような画像を符号化する場合、この方式により画質の低下を抑制させることがより大きな効果となる。
以上のように未伝送の符号量を少なく抑えることは、換言すれば、未伝送の符号を置くためのメモリを節約することができる。つまり、伝送された符号を受け取る側のメモリも節約することができる。これにより、符号化、伝送、復号を順次行って最終的に表示するまでの遅延を短くするなどの効果も得られる。
付言するに、レート制御部16は、これらの効果を得るために動画像全体やピクチャ全体の情報を使用せずに、コーディングユニット毎に符号量制御と符号化処理を進めていくため、メモリ使用量や遅延時間を低減させ、さらに、処理を容易化し、コストを低減させることができる。
ところで、JPEG2000等のようなビットプレーンを用いた符号化と違い、JPEG等の場合には、発生符号量を目標符号量に合わせるためには、量子化ステップサイズを変えながら符号化することを何回も繰り返す必要があり、処理が複雑になり、遅延時間が増大したり、回路規模やコストが増大したりする恐れがあった。
そこで、特徴の1つとして、レート制御部16は、ある量子化ステップサイズQ0で符号化したときの符号量S0を求め、それらの値を用いて、以下の式(10)のように、目標符号量Sになる量子化ステップサイズQを次の比例計算で求める(図15のステップS85)。
Q = Q0 ×(S0 / S) ・・・(10)
このような特徴により、レート制御部16は、静止画を符号化する場合、符号化を1回行えば適切な量子化ステップサイズQが求まり、量子化以降の処理を再度行うだけで目標符号量での符号化が完了する。すなわち、レート制御部16は、適切な符号化を行うための、適切な量子化ステップサイズを、より容易に求めることができる。
ところで、例えば動画像を符号化するような場合において、レート制御部16は、次に入力されるピクチャがどのような難しさか分からない。JPEG2000などのようにビットプレーンを用いた符号化を行い、データをMSBからLSBの順に送るようにすれば、符号量を制御することが可能であるが、この方法の場合、低遅延で符号化を行うことができない。
そこで、特徴の1つとして、レート制御部16は、次のピクチャの量子化に使用する量子化ステップサイズQを、その1つ前のピクチャの符号化結果から求める(図11のステップS57)。なお、この量子化ステップサイズQの求め方は、上述の式(10)を用いる方式と同様である。
通常の動画像では、隣り合うピクチャ間の相関が高く、同等の難しさのピクチャが連続する場合が多く、このような方法で量子化ステップサイズを求めても符号化が破綻しない。すなわち、レート制御部16は、より容易に適切なレート制御を行うことができる。
例えば、シーンチェンジが発生するピクチャにおいては、シーンチェンジ前後で難しさが大きく変化する(ピクチャ間の相関が低くなる)恐れがあるが、そのような場合であっても、シーンチェンジ後に着目すれば同等の難しさのピクチャが連続しており、発生符号量が目標符号量とずれてしまうのは、シーンチェンジ直後のピクチャのみに限定される。従って、視覚的には画質の大きな劣化は発生しない(目立たない)。
また、例えば、連続的に難しさが大きく変化し続ける(相関が低いピクチャが連続する)動画像は、人間にとって見づらい画像であり、扱うことはあまりなく、また、画質の劣化も視覚的に判別しにくい(目立たない)。
以上のように、この方式の場合、処理が単純であるので、JPEG2000のようにビットプレーンを用いる符号化でも、JPEGのようにビットプレーンを用いない符号化でも適用可能である。JPEG2000のようにビットプレーンを用いる符号化を生かしたレート制御では、コードブロック毎のtruncationで符号量を調整するため、画面内の画質が均一ではない。動画で見ると画面内の不均一なノイズは目立つという問題があるが、今回の方法では画面内の画質が均一なのでノイズが目立たない。
ところで、上述したように、量子化ステップサイズQをコーディングユニット単位で制御する方式の場合、コーディングユニット毎に量子化ステップサイズが変化する可能性があるので、ピクチャ単位で基本量子化ステップサイズBaseQの制御をするときに誤差が生じる恐れがある。
そこで、特徴の1つとしてレート制御部16は、標準量子化ステップサイズQnを任意に選ぶ(図10のステップS31)。p番目のピクチャ(ピクチャp)のc番目のコーディングユニット(コーディングユニットc)を量子化ステップサイズQ[p,c]で符号化し、そのときの発生符号量がS[p,c]であったとする。
Qnで符号化した場合の符号量は、S[p,c]×(Q[p,c] / Qn)である。全コーディングユニットについて同様に考えると、目標符号量Sになる量子化ステップサイズQは次式(11)に示されるような比例計算で求まる。
Q = Qn ×((Σ S[p,c]×(Q[p,c] / Qn)) / S) ・・・(11)
ここで、Qnは符号化中に変えなければなんでもよく、Qn=1でもよい。システムの都合に合わせて、計算結果の桁の都合がよくなるQnを用いるとよい。
このような特徴により、レート制御部16は、動画像全体の統計を取らずに、量子化ステップサイズQをコーディングユニット単位で制御する場合であっても、量子化ステップサイズの適切な制御を、容易かつ高速に行うことができる。
なお、レート制御部16は、以上に説明した各種の特徴をそれぞれ単独で実現することもできる。その場合、各特徴に対応する効果のみが得られる。また、複数の特徴を組み合わせて同時に実現することも可能である。つまり、レート制御部16は、上述した各特徴の内、一部の特徴を適宜省略することができる。また、レート制御部16は、上述した以外の他の特徴をさらに有するようにしてもよい。
なお、以上においては、レート制御部16を符号化装置1に含まれる構成として説明したが、レート制御部16は、上述した特徴の一部または全部を有するのであれば、どのように構成されるようにしてもよく、例えば、1つまたは複数の装置として構成されるようにしてもよい。つまり、レート制御部16は、他の装置において行われる符号化処理の発生符号量を制御することもできる。
次に、以上のような符号化装置1に対応する復号装置について説明する。
図17は、復号装置の構成例を示すブロック図である。復号装置200は、符号化装置1に対応する復号装置であり、図17に示されるように、エントロピ復号部201、逆量子化部202、係数バッファ部203、およびウェーブレット逆変換部204を有している。
符号化装置1から出力された符号化データのパケットは、復号装置200のエントロピ復号部201に供給される。エントロピ復号部201は、符号化データを取得すると、ライン毎にその符号化データをエントロピ復号し、得られた係数データを逆量子化部202に供給する。逆量子化部202は、供給された係数データに対して逆量子化を行い、得られた係数データを係数バッファ部203に供給し、格納させる。ウェーブレット逆変換部204は、係数バッファ部203に格納された係数データを用いて、合成フィルタによる合成フィルタ処理を行い、合成フィルタ処理の結果を再び係数バッファ部203に格納する。ウェーブレット逆変換部204は、この処理を分解レベルに応じて繰り返して、復号された画像データ(出力画像データ)を得る。ウェーブレット逆変換部204は、この出力画像データを、復号装置200の外部に出力する。
一般的なウェーブレット逆変換の方法の場合、処理対象の分解レベルの全係数に対して、まず、画面水平方向に水平合成フィルタリング処理を行い、次に画面垂直方向に垂直合成フィルタリング処理を行っていた。つまり、各合成フィルタリング処理の度に、その合成フィルタリング処理の結果をバッファに保持させる必要があるが、その際、バッファは、その時点の分解レベルの合成フィルタリング結果と、次の分解レベルの全係数を保持する必要があり、多大なメモリ容量を必要とすることになる(保持するデータ量が多い)。
また、この場合、ピクチャ(インタレース方式の場合フィールド)内において全てのウェーブレット逆変換が終了するまで画像データ出力が行われないので、入力から出力までの遅延時間が増大する。
これに対して、ウェーブレット逆変換部204の場合、ラインブロック単位で垂直合成フィルタリング処理および水平合成フィルタリング処理をレベル1まで連続して行うので、従来の方法と比較して、一度に(同時期に)バッファリングする必要のあるデータの量が少なく、用意すべきバッファのメモリ量を大幅に低減させることができる。また、レベル1まで合成フィルタリング処理(ウェーブレット逆変換処理)が行われることにより、ピクチャ内の全画像データが得られる前に(ラインブロック単位で)画像データを順次出力させることができ、従来の方法と比較して遅延時間を大幅に低減させることができる。
次に、図18のフローチャートを参照して、復号装置200により実行される復号処理の流れの例を説明する。この復号処理は、図9のフローチャートに示される符号化処理に対応する。
復号処理が開始されると、エントロピ復号部201は、ステップS101において、符号化データを取得し、ステップS102において、ライン毎に符号化データをエントロピ復号する。ステップS103において、逆量子化部202は、エントロピ復号されて得られた係数データに対して逆量子化を行う。ステップS104において、係数バッファ部203は、その逆量子化された係数データを保持する。ステップS105においてウェーブレット逆変換部204は、係数バッファ部203に1ラインブロック分の係数が蓄積されたか否かを判定する。
係数バッファ部203に1ラインブロック分の係数が蓄積されていないと判定された場合、処理はステップS101に戻り、それ以降のステップを実行させる。つまり、係数バッファ部203に1ラインブロック分の係数が蓄積されるまで待機される。そして、ステップS105において、係数バッファ部203に1ラインブロック分の係数が蓄積されたと判定された場合、処理はステップS106に進む。ステップS106において、ウェーブレット逆変換部204は、係数バッファ部203に保持されている係数を1ラインブロック分読み出す。
そしてその読み出した係数に対して、ウェーブレット逆変換部204は、ステップS107において、画面垂直方向に並ぶ係数に対して合成フィルタリング処理を行う垂直合成フィルタリング処理を行い、ステップS108において、画面水平方向に並ぶ係数に対して合成フィルタリング処理を行う水平合成フィルタリング処理を行い、ステップS109において、合成フィルタリング処理がレベル1(分解レベルの値が「1」のレベル)まで終了したか否か、すなわち、ウェーブレット変換前の状態まで逆変換したか否かを判定する。
合成フィルタリング処理がレベル1まで達していないと判定された場合、処理はステップS107に戻り、ステップS107およびステップS108のフィルタリング処理が繰り返される。また、ステップS109において、合成フィルタリング処理がレベル1まで逆変換処理が終了したと判定された場合、処理は、ステップS110に進む。ステップS110において、ウェーブレット逆変換部204は、逆変換処理により得られた画像データを復号装置200の外部に出力する。
ステップS111において、復号処理を終了するか否かが判定され、符号化データの入力が継続しており、復号処理を終了しないと判定された場合、処理は、ステップS101に戻り、それ以降の処理が繰り返される。また、ステップS111において、符号化データの入力が終了するなどして復号処理を終了すると判定された場合、復号処理は終了される。
以上のように、ウェーブレット逆変換部204は、ラインブロック単位で垂直合成フィルタリング処理および水平合成フィルタリング処理をレベル1まで連続して行うので、画面全体に対してウェーブレット逆変換を行う方法と比較して、一度に(同時期に)バッファリングする必要のあるデータの量が少なく、用意すべきバッファのメモリ量を大幅に低減させることができる。また、レベル1まで合成フィルタリング処理(ウェーブレット逆変換処理)が行われることにより、ピクチャ内の全画像データが得られる前に(ラインブロック単位で)画像データを順次出力させることができ、画面全体に対してウェーブレット逆変換を行う方法と比較して遅延時間を大幅に低減させることができる。
なお、以上においてはコーディングユニットがラインブロックであるように説明したが、コーディングユニットはどのような単位であってもよい。ここで、コーディングユニットの例について説明する。図19は、コーディングユニットの一例を示す模式図であり、2次元ウェーブレット変換された係数をコーディングユニット毎に分割した様子を示している。図19において、同じパターンで塗られている部分を集めたものが1つのコーディングユニットを形成している。
図19は、対応する画素が空間的に同じ位置にある係数を集めて1つのコーディングユニットにしたものである。画面の横幅の1/8の大きさである低域側の4つのサブバンドから1ラインずつ、横幅の1/4の大きさである中域の3つのサブバンドから2ラインずつ、および、横幅の1/2の大きさである高域の3つのサブバンドから4ラインずつによって1つのコーディングユニットが構成されている。つまり、図19の例の場合、コーディングユニットはラインブロックにより形成される。図19において、コーディングユニット1は、画面の最上部の情報を持っている(画面一番上のラインブロックに対応する)。コーディングユニット2は、コーディングユニット1の下に隣接した部分の情報を持っている(画面の上から2番目のラインブロックに対応する)。以降のコーディングユニットも、番号が増えるほど画面で下の位置の情報を持っている(より下の位置のラインブロックに対応する)。
ウェーブレット逆変換の処理においては、低域側のウェーブレット係数から先に必要になる。そこで低域側のウェーブレット係数を先に送るようにしてコーディングユニットを構成する例を図20に示す。図20の例においては、画面の横幅の1/8の大きさである低域側の4つのサブバンドからの1ラインずつによってコーディングユニット1が出来ている。これらのラインは画面の最上部の低域側の情報を持っている。コーディングユニット2は、画面の横幅の1/8の大きさである低域側の4つのサブバンドから1ラインずつ、横幅の1/4の大きさである中域の3つのサブバンドから2ラインずつで構成されている。中域のデータについてはコーディングユニット1には存在しないため、コーディングユニット2が最上部の情報を持っているが、コーディングユニット2はコーディングユニット1の下に隣接した部分の情報を持つといえる。
コーディングユニット3は画面の横幅の1/8の大きさである低域側の4つのサブバンドから1ラインずつ、横幅の1/4の大きさである中域の3つのサブバンドから2ラインずつ、横幅の1/2の大きさである高域の3つのサブバンドから4ラインずつで構成されている。高域のデータはコーディングユニット1にもコーディングユニット2にも存在しないため、コーディングユニット3が最上部の情報を持っているが、コーディングユニット3はコーディングユニット2の下に隣接した部分の情報を持つといえる。以降のコーディングユニットも、番号が増えるほど画面で下の位置の情報を持っている。
つまり、図20の例の場合、コーディングユニットは、ラインブロックに一致しない。
図19のコーディングユニットの作り方の場合、空間的に同じ位置にある係数を集めたものであったが、図20のコーディングユニットの作り方の場合、低域側ほど空間的に下の位置にある係数を集めたものとなっている。
コーディングユニットには他にもいろいろな場合がある。極端な場合、コーディングユニットは1ピクチャに1つだけで、領域変換の単位とコーディングユニットが一致することもある。領域変換の単位とコーディングユニットが一致する場合には、図1には図示していない入力画像分割器が領域変換器の前に置かれ、領域変換の単位を小さくしておくことがよくある。
なお、上述した各処理は、例えば、図21に示されるように、適宜、並列的に実行されるようにすることもできる。
図21は、図1の符号化装置1や図17の復号装置200により実行される処理の各要素の並列動作の例を概略的に示す図である。この図21は、上述した図5と対応するものである。画像データの入力In-1(図21A)に対して、ウェーブレット変換部10(図1)で1回目のウェーブレット変換WT-1が施される(図21B)。図4を参照し説明したように、この1回目のウェーブレット変換WT-1は、最初の3ラインが入力された時点で開始され、係数C1が生成される。すなわち、画像データIn-1の入力からウェーブレット変換WT-1が開始されるまで、3ライン分の遅延が生じる。
生成された係数データは、係数並び替え用バッファ部12(図1)に格納される。以降、入力された画像データに対してウェーブレット変換が施され、1回目の処理が終了すると、そのまま2回目のウェーブレット変換WT-2に処理が移行する。
2回目のウェーブレット変換WT-2のための画像データIn-2の入力と、当該2回目のウェーブレット変換WT-2の処理と並列的に、係数並び替え部13(図1)により3個の、係数C1、係数C4、および係数C5の並び替えOrd-1が実行される(図21C)。
なお、ウェーブレット変換WT-1の終了から並び替えOrd-1が開始されるまでの遅延は、例えば、並び替え処理を係数並び替え部13に指示する制御信号の伝達に伴う遅延や、制御信号に対する係数並び替え部13の処理開始に要する遅延、プログラム処理に要する遅延といった、装置やシステム構成に基づく遅延であって、符号化処理における本質的な遅延ではない。
係数データは、並び替えが終了した順に係数並び替え用バッファ部12から読み出され、エントロピ符号化部15(図1)に供給され、エントロピ符号化EC-1が行われる(図21D)。このエントロピ符号化EC-1は、3個の、係数C1、係数C4、および係数C5の、全ての並び替えの終了を待たずに開始することができる。例えば、最初に出力される係数C5による1ラインの並び替えが終了した時点で、当該係数C5に対するエントロピ符号化を開始することができる。この場合、並び替えOrd-1の処理開始からエントロピ符号化EC-1の処理開始までの遅延は、1ライン分となる。
エントロピ符号化部15によるエントロピ符号化EC-1が終了した符号化データは、所定の信号処理が施された後、伝送路を介して復号装置200に伝送される(図21E)。このとき、符号化データは、パケット化されて伝送される。
符号化装置1に対して、1回目の処理による7ライン分の画像データ入力に続けて、画面上の下端のラインまで画像データが順次、入力される。符号化装置1では、画像データの入力In-n(nは2以上)に伴い、上述したようにして、4ライン毎にウェーブレット変換WT-n、並び替えOrd-nおよびエントロピ符号化EC-nを行う。符号化装置1における最後の回の処理に対する並び替えOrdおよびエントロピ符号化ECは、6ラインに対して行われる。これらの処理は、符号化装置1において、図21A乃至図21Dに例示されるように、並列的に行われる。
符号化装置1によるエントロピ符号化EC-1により符号化された符号化データのパケットは、復号装置200に伝送される。エントロピ復号部201は、供給された、エントロピ符号化EC-1により符号化された符号化データに対して、順次、エントロピ符号の復号iEC-1を行い、係数データを復元する(図21F)。復元された係数データは、逆量子化部202において逆量子化された後、順次、係数バッファ部203に格納される。ウェーブレット逆変換部204は、係数バッファ部203にウェーブレット逆変換が行えるだけ係数データが格納されたら、係数バッファ部203から係数データを読み出して、読み出された係数データを用いてウェーブレット逆変換iWT-1を行う(図21G)。
図4を参照して説明したように、ウェーブレット逆変換部204によるウェーブレット逆変換iWT-1は、係数C4および係数C5が係数バッファ部203に格納された時点で開始することができる。したがって、エントロピ復号部201による復号iEC-1が開始されてからウェーブレット逆変換部204によるウェーブレット逆変換iWT-1が開始されるまでの遅延は、2ライン分となる。
ウェーブレット逆変換部204において、1回目のウェーブレット変換による3ライン分のウェーブレット逆変換iWT-1が終了すると、ウェーブレット逆変換iWT-1で生成された画像データの出力Out-1が行われる(図21H)。出力Out-1では、図4および図5を用いて説明したように、第1ライン目の画像データが出力される。
復号装置200に対して、符号化装置1における1回目の処理による3ライン分の符号化された係数データの入力に続けて、エントロピ符号化EC-n(nは2以上)により符号化された係数データが順次、入力される。復号装置200では、入力された係数データに対して、上述したようにして、4ライン毎にエントロピ復号iEC-nおよびウェーブレット逆変換iWT-nを行い、ウェーブレット逆変換iWT-nにより復元された画像データの出力Out-nを順次、行う。符号化装置1の最後の回に対応するエントロピ復号iECおよびウェーブレット逆変換iWTは、6ラインに対して行われ、出力Outは、8ラインが出力される。これらの処理は、復号装置200において、図21F乃至図21Hに例示されるように、並列的に行われる。
上述のようにして、画面上部から下部の方向に順番に、符号化装置1および復号装置200における各処理を並列的に行うことで、画像圧縮処理および画像復号処理をより低遅延で行うことが可能となる。
図21を参照して、5×3フィルタを用いて分解レベル=2までウェーブレット変換を行った場合の、画像入力から画像出力までの遅延時間を計算してみる。第1ライン目の画像データが符号化装置1に入力されてから、この第1ライン目の画像データが復号装置200から出力されるまでの遅延時間は、下記の各要素の総和となる。なお、ここでは、伝送路における遅延や、装置各部の実際の処理タイミングに伴う遅延などの、システムの構成により異なる遅延は、除外している。
(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
図21を参照して、上述の各要素による遅延の計算を試みる。(1)の遅延D_WTは、10ライン分の時間である。(2)の時間D_Ord、(3)の時間D_EC、(4)の時間D_iEC、および(5)の時間D_iWTは、それぞれ3ライン分の時間である。また、符号化装置1において、並び替えOrd-1が開始されてから1ライン後には、エントロピ符号化EC-1を開始することができる。同様に、復号装置200において、エントロピ復号iEC-1が開始されてから2ライン後には、ウェーブレット逆変換iWT-1を開始することができる。また、エントロピ復号iEC-1は、エントロピ符号化EC-1で1ライン分の符号化が終了した時点で処理を開始することができる。
したがって、この図21の例では、符号化装置1に第1ライン目の画像データが入力されてから、復号装置200から当該第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の総和についても、処理対象のライン数が少ないため、遅延時間が非常に短縮される。各処理を行う要素をハードウェア化すれば、処理時間をさらに短縮することも可能である。
図1においては、係数の並び替えをウェーブレット変換の直後(量子化の前)に行うように説明したが、符号化データが低域から高域の順に復号装置200のウェーブレット逆変換部204に供給されればよく(つまり、低域のサブバンドに属する係数データを符号化して得られる符号化データから、高域のサブバンドに属する係数データを符号化して得られる符号化データの順に供給されればよく)、並び替えのタイミングは、ウェーブレット変換の直後以外であってもよい。
例えば、エントロピ符号化によって得られる符号化データの順序を並び替えるようにしてもよい。図22は、その場合の符号化装置の構成例を示すブロック図である。
図22の場合、符号化装置300は、図1の符号化装置1の場合と同様に、ウェーブレット変換部10、途中計算用バッファ部11、量子化部14、エントロピ符号化部15、レート制御部16、および平滑化部17を有するが、図1の係数並び替え用バッファ部12および係数並び替え部13の代わりに、符号並び替え用バッファ部301および符号並び替え部302を有する。
符号並び替え用バッファ部301は、エントロピ符号化部15において符号化された符号化データの出力順を並び替えるためのバッファであり、符号並び替え部302は、その符号並び替え用バッファ部301に蓄積される符号化データを所定の順に読み出すことにより、符号化データの出力順の並び替えを行う。
つまり、図22の場合、ウェーブレット変換部10より出力されるウェーブレット係数は、量子化部14に供給されて量子化される。量子化部14の出力はエントロピ符号化部15に供給されて符号化される。その符号化により得られた各符号化データが、順次、符号並び替え用バッファ部301に供給され、並び替えのために一時的に蓄積される。
符号並び替え部302は、符号並び替え用バッファ部301に書き込まれた符号化データを、所望の順序で読み出し、平滑化部17に供給する。
図22の例の場合、エントロピ符号化部15は、ウェーブレット変換部10による出力順に、各係数データの符号化を行い、得られた符号化データを符号並び替え用バッファ部301に書き込む。つまり、符号並び替え用バッファ部301には、符号化データが、ウェーブレット変換部10によるウェーブレット係数の出力順に対応する順序で格納される。通常の場合、1つのラインブロックに属する係数データ同士を比較すると、ウェーブレット変換部10は、より高域のサブバンドに属する係数データほど先に出力し、より低域のサブバンドに属する係数データほど後に出力する。つまり、符号並び替え用バッファ部301には、各符号化データが、高域のサブバンドに属する係数データをエントロピ符号化して得られた符号化データから、低域のサブバンドに属する係数データをエントロピ符号化して得られた符号化データに向かう順に記憶される。
これに対して、符号並び替え部302は、この順序とは独立して、任意の順序でその符号並び替え用バッファ部301に蓄積された各符号化データを読み出すことにより、符号化データの並び替えを行う。
例えば、符号並び替え部302は、低域のサブバンドに属する係数データを符号化して得られた符号化データほど優先的に読み出し、最後に、最も高域のサブバンドに属する係数データを符号化して得られた符号化データを読み出す。このように、符号化データを低域から高域に向かって読み出すことにより、符号並び替え部302は、復号装置200が、取得した順で各符号化データを復号することができるようにし、復号装置200による復号処理おいて生じる遅延時間を低減させるようにすることができる。
符号並び替え部302は、符号並び替え用バッファ部301に蓄積されている符号化データを読み出し、それを平滑化部17に供給する。
なお、図22に示される符号化装置300で符号化され出力されたデータは、図17を用いて既に説明した復号装置200により、図1の符号化装置1より出力される符号化データの場合と同様に復号することができる。
また、並び替えの処理を行うタイミングは、上述した以外であってもよい。例えば、図23において一例が示されるように、符号化装置1において行うようにしてもよいし、図24において一例が示されるように、復号装置200において行うようにしてもよい。
ウェーブレット変換で生成された係数データを並び替える処理では、係数並び替え用バッファの記憶容量として比較的大容量が必要となると共に、係数並び替えの処理自体にも、高い処理能力が要求される。この場合でも、符号化装置の処理能力がある程度以上高い場合には何ら問題は生じない。
ここで、携帯電話端末やPDA(Personal Digital Assistant)といった所謂モバイル端末などの、比較的処理能力の低い機器に符号化装置が搭載される場合について考える。例えば、近年では、携帯電話端末に対して撮像機能を付加した製品が広く普及している(カメラ機能付き携帯電話端末と呼ぶ)。このようなカメラ機能付き携帯電話端末で撮像された画像データをウェーブレット変換およびエントロピ符号化により圧縮符号化し、無線あるいは有線通信を介して伝送することが考えられる。
このような例えばモバイル端末は、CPU(Central Processing Unit)の処理能力も限られ、また、メモリ容量にもある程度の上限がある。そのため、上述したような係数並び替えに伴う処理の負荷などは、無視できない問題となる。
そこで、図24に一例が示されるように、並び替え処理を復号装置に組み入れることで、符号化装置の負荷が軽くなり、符号化装置をモバイル端末などの比較的処理能力が低い機器に搭載することが可能となる。
図25は、その場合の符号化装置の一例の構成を示すブロック図である。なお、この図25において、上述の図1と共通する部分には同一の符号を付して、詳細な説明を省略する。
この図25に示される符号化装置330の構成は、上述の図1で示した符号化装置1の構成に対して係数並び替え部13および係数並び替え用バッファ部12を除去した構成となっている。すなわち、符号化装置330は、符号化装置1と同様の、ウェーブレット変換部10、途中計算用バッファ部11、量子化部14、エントロピ符号化部15、レート制御部16、および平滑化部17を有している。
入力された画像データは、途中計算用バッファ部11に一時的に溜め込まれる。ウェーブレット変換部10は、途中計算用バッファ部11に溜め込まれた画像データに対してウェーブレット変換を施し、生成された係数データを、係数データの生成順に順次、量子化部14に供給する。量子化部14は、レート制御部16より供給される量子化ステップサイズQを用いて、供給された係数データに対して量子化を行い、エントロピ符号化部15に供給する。すなわち、エントロピ符号化部15に対して、ウェーブレット変換の順序に従い高域成分から低域成分の順に、生成された係数データが供給される。エントロピ符号化部15は、供給された係数に対してエントロピ符号化を施す。エントロピ符号化部15は、エントロピ符号化により得られた符号化データを、平滑化部17に供給する。平滑化部17は供給された符号化データを内蔵するバッファに一時的に保持し、一定のビットレートとなるように、その符号化データを読み出して出力する。このとき、平滑化部17より出力される符号化データは、その符号化データが対応する係数データの、ウェーブレット変換部10からの出力順と同じ順序で出力される。
図26は、この符号化装置330に対応する復号装置の一例の構成を示すブロック図である。なお、この図26において、上述の図17と共通する部分には同一の符号を付し、詳細な説明を省略する。
図26に示されるように、この場合の復号装置340は、図17の復号装置200と同様に、エントロピ復号部201、逆量子化部202、係数バッファ部203、およびウェーブレット逆変換部204を有するとともに、さらに、係数並び替え用バッファ部341を有する。
図25で説明した符号化装置330のエントロピ符号化部15から出力された符号化データは、図26の復号装置340のエントロピ復号部201に供給され、エントロピ符号を復号され係数データとされる。係数データは、逆量子化部202において逆量子化された後、係数バッファ部203を介して係数並び替え用バッファ部341に格納される。ウェーブレット逆変換部204は、係数並び替え用バッファ部341に係数データの並び替えが可能となるまで係数データが蓄積されると、係数並び替え用バッファ部341に格納された係数データを、低域成分から高域成分の順に並び替えて読み出し、読み出された順に係数データを用いてウェーブレット逆変換処理を行う。5×3フィルタを用いる場合は、上述の図24で示したようになる。
すなわち、ウェーブレット逆変換部204は、例えば1フレームの先頭からの処理であれば、係数並び替え用バッファ部341にエントロピ符号の復号がなされた係数C1、係数C4、および係数C5が格納された時点で、係数並び替え用バッファ部341から係数データを読み出し、ウェーブレット逆変換処理を行う。ウェーブレット逆変換部204でウェーブレット逆変換を施されたデータは、順次、出力画像データとして出力される。
なお、この場合でも、図21を用いて既に説明したように、符号化装置330における各要素の処理と、伝送路に対する符号化データの伝送と、復号装置340における各要素の処理とが並列的に実行される。
なお、符号化装置と復号装置との間の符号化データの伝送において、符号化データがパケット化されて伝送されるようにしてもよい。
図27は、その符号化データの授受の様子の例を説明する模式図である。図27に示される例の場合においても、上述した他の実施の形態と同様に、画像データは、ラインブロック毎に、所定のライン数分だけ入力されながらウェーブレット変換される(サブバンド351)。そして、所定のウェーブレット変換分解レベルまで達した際に、最低域サブバンドから最高域サブバンドまでの係数ラインが、生成された順序とは逆に、つまり低域から高域の順番に並び替えられる。
図27のサブバンド351において、斜め線、縦線、および波線の模様分けされた部分は、それぞれ異なるラインブロックである(矢印で示されるように、サブバンド351の白ヌキ部分も同様にラインブロック毎に分割して処理される)。並び替えられた後のラインブロックの係数が上述した様にエントロピ符号化され、符号化データが生成される。
ここで、例えば符号化装置が符号化データをそのまま送出すると、復号装置が各ラインブロックの境界を識別することが困難な(若しくは煩雑な処理が必要になる)場合がある。そこで、本実施の形態においては、符号化装置が、符号化データに例えばラインブロック単位でヘッダを付加し、ヘッダと符号化データとから成るパケットとして送出するようにする。
つまり、符号化装置は、図27に示されるように、1番目のラインブロック(Lineblock-1)の符号化データ(エンコードデータ)を生成すると、それをパケット化し、送信パケット361として復号装置に送出する。復号装置は、そのパケットを受信すると(受信パケット371)、その符号化データを復号(デコード)する。
同様に、符号化装置は、2番目のラインブロック(Lineblock-2)の符号化データを生成すると、それをパケット化し、送信パケット362として復号装置に送出する。復号装置は、そのパケットを受信すると(受信パケット372)、その符号化データを復号(デコード)する。さらに同様に、符号化装置は、3番目のラインブロック(Lineblock-3)の符号化データを生成すると、それをパケット化し、送信パケット363として復号装置に送出する。復号装置は、そのパケットを受信すると(受信パケット373)、その符号化データを復号(デコード)する。
符号化装置および復号装置は、以上のような処理を、X番目の最終ラインブロック(Lineblock-X)まで繰り返す(送信パケット364、受信パケット374)。以上のようにして復号装置において復号画像381が生成される。
図28にヘッダの構成例を示す。上述したようにパケットはヘッダ(Header)391と符号化データにより構成されるが、そのヘッダ391には、ラインブロックの番号(NUM)393と符号化データ長(LEN)394の記述が含まれている。
復号装置は、受信した符号化データに付加されたヘッダに含まれるこれらの情報を読み取ることにより、各ラインブロックの境界を容易に識別することができ、復号処理の負荷や処理時間を低減させることができる。
なお、図28に示されるように、さらに、ラインブロックを構成するサブバンド毎の量子化ステップサイズ(Δ1乃至ΔN)392の記述を付加するようにしてもよい。これにより、復号装置は、サブバンド毎の逆量子化を行うことができ、よりきめ細かな画質制御を行うことが出来る。
また、符号化装置および復号装置は、上述したような符号化、パケット化、パケットの送受信、および復号等の各処理を、図21を参照して説明したように、ラインブロック毎に、同時並行的に(パイプライン化して)実行するようにしてもよい。
このようにすることにより、復号装置において画像出力が得られるまでの遅延時間を大幅に低減させることができる。図27においては一例として、インタレース動画(60フィールド/秒)での動作例を示している。この例において、1フィールドの時間は、1秒÷60=約16.7msecであるが、同時並行的に各処理を行うようにすることにより、約5msecの遅延時間で画像出力が得られるようにすることが出来る。
次に、上述した符号化装置および復号装置を、デジタルトライアックスシステムに適用する場合について説明する。
トライアックスシステムは、テレビジョン放送局や制作スタジオなどにおいて、スタジオ収録や中継などの際に、ビデオカメラと、カメラコントロールユニットやスイッチャとを接続する1本の同軸ケーブルで、映像信号、音声信号、送り返し(リターン)の映像信号、同期信号など複数の信号を重畳させて送信すると共に、電源の供給も行うようにしたシステムである。
従来のトライアックスシステムは、アナログ信号を用いて上述の各信号の伝送を行うようにした例が大部分であった。しかしながら、近年では、システム全体のデジタル化に伴い、放送局内などで用いるトライアックスシステムのデジタル化が進んでいる。
既存のデジタルトライアックスシステムでは、トライアックスケーブルを介して伝送されるデジタルビデオ信号は、非圧縮のビデオ信号であった。これは、特に放送局などにおいては信号の遅延時間に対する要求スペックが厳しく、基本的に、撮像から例えばモニタ出力までの遅延時間が1フィールド(16.67msec)以内であることが要求されるためである。高圧縮率および高画質を実現したMPEG2(Moving Pictures Experts Group 2)やMPEG4といった圧縮符号化方式は、ビデオ信号の圧縮符号化や圧縮ビデオ信号の復号に際して数フレーム分の時間を要し、遅延時間が大きいため、トライアックスシステムに採用されることはなかった。
上述した画像符号化方法および画像復号方法は、上述したように、画像データの入力から出力画像が得られるまでの遅延時間が1フィールド時間以内、例えば数ライン乃至数十ラインと極めて短く、デジタルトライアックスシステムに対して用いて好適なものである。
図29は、上述した画像符号化方法および画像復号方法を適用可能な、デジタルトライアックスシステムの一例の構成を示す。図29に示されるデジタルトライアックスシステムにおいては、送信ユニット400とカメラ制御部402とがトライアックスケーブル(同軸ケーブル)401を介して接続される。送信ユニット400からカメラ制御部402に対する、実際に放映されたり素材として用いられたりするデジタルビデオ信号およびデジタルオーディオ信号(以下、本線信号と呼ぶ)の送出、カメラ制御部402からビデオカメラ部403に対する、インカム用のオーディオ信号およびリターン用のデジタルビデオ信号の送出が、トライアックスケーブル401を介して行われる。
送信ユニット400は、例えば図示されないビデオカメラ装置に内蔵される。これに限らず、送信ユニット400がビデオカメラ装置に対する外部装置として、ビデオカメラ装置と所定の方法で接続されて用いられるものとしてもよい。また、カメラ制御部402は、例えば一般的にCCU(Camera Control Unit)と呼ばれる装置である。
なお、デジタルオーディオ信号については、この発明の主旨と関わりが少ないので、繁雑さを避けるための説明を省略する。
ビデオカメラ部403は、例えば図示されないビデオカメラ装置内に構成され、レンズ、フォーカス機構、ズーム機構、アイリス調整機構などを有する光学系450を介して入射された被写体からの光を、CCD(Charge Coupled Device)などからなる図示されない撮像素子で受光する。撮像素子は、受光された光を光電変換で電気信号に変換し、さらに所定の信号処理を施してベースバンドのデジタルビデオ信号を出力する。このデジタルビデオ信号は、例えばHD-SDI(High Definition-Serial Data Interface)のフォーマットにマッピングして出力される。
また、ビデオカメラ部403は、モニタ用に用いられる表示部451と、外部と音声によるやりとりを行うためのインカム452が接続される。
送信ユニット400は、ビデオ信号符号化部410およびビデオ信号復号部411、デジタル変調部412およびデジタル復調部413、アンプ414およびアンプ415、並びに、ビデオ分離/合成部416を有する。
送信ユニット400において、ビデオカメラ部403から、例えばHD-SDIのフォーマットにマッピングされたベースバンドのデジタルビデオ信号が供給される。このデジタルビデオ信号は、ビデオ信号符号化部410で圧縮符号化され、符号化ストリームとされてデジタル変調部412に供給される。デジタル変調部412は、供給された符号化ストリームを、トライアックスケーブル401を介した伝送に適した形式の信号に変調して出力する。デジタル変調部412から出力された信号は、アンプ414を介してビデオ分離/合成部416に供給される。ビデオ分離/合成部416は、供給された信号をトライアックスケーブル401に送出する。この信号は、トライアックスケーブル401を介してカメラ制御部402に受信される。
カメラ制御部402から出力された信号が、トライアックスケーブル401を介して送信ユニット400に受信される。受信された信号は、ビデオ分離/合成部416に供給され、デジタルビデオ信号の部分とその他の信号の部分とが分離される。受信信号のうちデジタルビデオ信号の部分は、アンプ415を介してデジタル復調部413に供給され、カメラ制御部402側でトライアックスケーブル401を介した伝送に適した形式の信号に変調された信号を復調し、符号化ストリームを復元する。
符号化ストリームは、ビデオ信号復号部411に供給され、圧縮符号を復号され、ベースバンドのデジタルビデオ信号とされる。この復号されたデジタルビデオ信号は、HD-SDIのフォーマットにマッピングされて出力され、リターン用のデジタルビデオ信号としてビデオカメラ部403に供給される。このリターン用のデジタルビデオ信号は、ビデオカメラ部403に接続される表示部451に供給され、撮影者のためのモニタなどに利用される。
カメラ制御部402は、ビデオ分離/合成部420、アンプ421およびアンプ422、フロントエンド部423、デジタル復調部424およびデジタル変調部425、並びに、ビデオ信号復号部426およびビデオ信号符号化部427を有する。
送信ユニット400から出力された信号が、トライアックスケーブル401を介してカメラ制御部402に受信される。受信された信号は、ビデオ分離/合成部420に供給される。ビデオ分離/合成部420は、供給された信号を、アンプ421およびフロントエンド部423を介してデジタル復調部424に供給する。なお、フロントエンド部423は、入力信号のゲインを調整するゲイン制御部や、入力信号に対して所定のフィルタ処理を施すフィルタ部などを有する。
デジタル復調部424は、送信ユニット400側でトライアックスケーブル401を介した伝送に適した形式の信号に変調された信号を復調し、符号化ストリームを復元する。この符号化ストリームは、ビデオ信号復号部426に供給され、圧縮符号を復号され、ベースバンドのデジタルビデオ信号とされる。この復号されたデジタルビデオ信号は、HD-SDIのフォーマットにマッピングされて出力され、本線信号として外部に出力される。
外部からカメラ制御部402に対して、リターン用のデジタルビデオ信号と、デジタルオーディオ信号とが供給される。デジタルオーディオ信号は、例えば、撮影者のインカム452に供給され、外部から撮影者に対する音声による指示を伝達するのに用いられる。
リターン用のデジタルビデオ信号は、ビデオ信号符号化部427に供給されて圧縮符号化され、デジタル変調部425に供給される。デジタル変調部425は、供給された符号化ストリームを、トライアックスケーブル401を介した伝送に適した形式の信号に変調して出力する。デジタル変調部425から出力された信号は、フロントエンド部423およびアンプ422を介してビデオ分離/合成部420に供給される、ビデオ分離/合成部420は、この信号を他の信号と多重化し、トライアックスケーブル401に送出する。この信号は、トライアックスケーブル401を介して送信ユニット400に受信され、その後、ビデオカメラ部403に供給される。
このようなデジタルトライアックスシステムのビデオ信号符号化部410およびビデオ信号符号化部427に対して上述した符号化装置を適用することができ、さらに、ビデオ信号復号部411およびビデオ信号復号部426に対して上述した復号装置を適用することができる。
また、図21を参照して説明したように、符号化装置および復号装置における各要素の処理を並列的に行うようにすることにより、ビデオカメラ部403で撮影された映像がカメラ制御部402から出力される際の遅延や、外部から供給されカメラ制御部402からビデオカメラ部403に送信されるリターン用のデジタルビデオ信号の遅延を低く抑えることができる。
また、図29に例示したシステムの場合、送信ユニット400およびカメラ制御部402のそれぞれにおいて、信号処理能力やメモリ容量を、適宜、設定することができると考えられるので、係数データの並び替え処理を行う位置は、送信ユニット400側およびカメラ制御部402側の何れであってもよいし、エントロピ符号化を行う位置も同様に、並び替え処理の前後の何れであってもよい。
ここで、リターン用のデジタルビデオ信号は、本線信号のデジタルビデオ信号よりも画質が低くても構わないとされている場合が多い。そこで、ビデオ信号符号化部427において、符号化時のビットレートを下げるようにするとよい。例えば、ビデオ信号符号化部427において、レート制御部16により、エントロピ符号化部15でのエントロピ符号化処理をより低ビットレートになるまで行うように制御する。また例えば、カメラ制御部402側では、ビデオ信号符号化部427においてウェーブレット変換部10でより高い分解レベルまで変換処理を行い、送信ユニット400側では、ビデオ信号復号部411のウェーブレット逆変換部204におけるウェーブレット逆変換を、より低い分解レベルまでに止める方法も考えられる。カメラ制御部402側のビデオ信号符号化部427における処理は、この例に限らず、ウェーブレット変換における分解レベルをより低く抑えて変換処理による負担を軽減することも考えられる。
このようなデジタルトライアックスシステムに適用する場合も、レート制御部16は、上述したように符号化処理における発生符号量の制御を容易かつ適切に行うことができる。
また、本発明を適用した符号化装置は、デジタルトライアックスシステム以外のシステムにも適用することができる。例えば、符号化装置と復号装置の間の情報の伝送を、優先通信により行うようにしてもよいし、無線通信により行うようにしてもよい。
図30は、符号化装置と復号装置の間で行われる情報の伝送を無線通信により行う無線伝送システムの一例の構成を示すブロック図である。なお、この図30の例では、ビデオ信号はビデオカメラ部502または送信ユニット500(以下、送信ユニット500と略称する)側から受信装置501側に、一方向的に送信される。オーディオ信号およびその他の信号は、送信ユニット500と受信装置501との間で双方向の通信が可能である。
送信ユニット500は、例えばビデオカメラ部502を有する図示されないビデオカメラ装置に内蔵される。これに限らず、送信ユニット500がビデオカメラ部502を有するビデオカメラ装置に対する外部装置として、ビデオカメラ装置と所定に接続されて用いられるものとしてもよい。
ビデオカメラ部502は、例えば所定の光学系と、例えばCCDからなる撮像素子と、撮像素子から出力された信号をデジタルビデオ信号として出力する信号処理部とを有する。ビデオカメラ部502から、例えばHD-SDIのフォーマットにマッピングされてデジタルビデオ信号が出力される。これはこの例に限らず、ビデオカメラ部502から出力されるデジタルビデオ信号は、他のフォーマットでもよい。
送信ユニット500は、ビデオ信号符号化部510、デジタル変調部511、および無線モジュール部512を有する。送信ユニット500において、ビデオカメラ部502から、ベースバンドのデジタルビデオ信号が例えばHD-SDIのフォーマットにマッピングされて出力される。このデジタルビデオ信号は、ビデオ信号符号化部510において上述した圧縮符号化方法により、ウェーブレット変換およびエントロピ符号化により圧縮符号化され、符号化ストリームとされてデジタル変調部511に供給される。デジタル変調部511は、供給された符号化ストリームを、無線通信を行うために適した形式の信号にデジタル変調して出力する。
また、デジタル変調部511には、デジタルオーディオ信号やその他の信号、例えば所定のコマンドやデータも供給される。例えば、ビデオカメラ部502は、マイクロホンを有し、集音された音声を音声信号に変換し、さらに当該音声信号をA/D変換してデジタルオーディオ信号として出力する。また、ビデオカメラ部502は、所定のコマンドやデータを出力できるようになっている。コマンドやデータは、ビデオカメラ部502の内部で発生するようにしても良いし、ビデオカメラ部502に操作部を設け、当該操作部に対するユーザの操作に応じてコマンドやデータを生成するようにしてもよい。ビデオカメラ部502に対してコマンドやデータを入力する入力装置を接続するようにしてもよい。
デジタル変調部511は、これらデジタルオーディオ信号やその他の信号をデジタル変調し、出力する。デジタル変調部511から出力されたデジタル変調信号は、無線モジュール部512に供給されアンテナ513から電波として無線送信される。
なお、無線モジュール部512は、受信装置501側からの自動再送要求(ARQ:Auto Repeat Request)を受信すると、デジタル変調部511に対してこのARQを通知し、データの再送を要求する。
アンテナ513から送信された電波は、受信装置501側のアンテナ520で受信され、無線モジュール部521に供給される。無線モジュール部521は、受信された電波に基づくデジタル変調信号をフロントエンド部522に供給する。フロントエンド部522は、供給されたデジタル変調信号に対して例えばゲイン制御といった所定の信号処理を施して、デジタル復調部523に供給する。デジタル復調部523は、供給されたデジタル変調信号を復調し、符号化ストリームを復元する。
デジタル復調部523で復元された符号化ストリームは、ビデオ信号復号部524に供給され、この発明に係る復号方法により圧縮符号を復号され、ベースバンドのデジタルビデオ信号とされる。この復号されたデジタルビデオ信号は、例えばHD-SDIのフォーマットにマッピングされて出力される。
デジタル復調部523には、送信ユニット500側でデジタル変調され送信された、デジタルオーディオ信号やその他の信号も供給される。デジタル復調部523は、これらデジタルオーディオ信号やその他の信号がデジタル変調された信号を復調し、デジタルオーディオ信号やその他の信号を復元して出力する。
また、フロントエンド部522は、無線モジュール部521から供給された受信信号に対して所定の方法でエラー検出を行い、例えば誤ったフレームが受信されたといったエラーが検出されると、ARQを出力する。ARQは、無線モジュール部521に供給され、アンテナ520から送信される。
このような構成において、送信ユニット500を例えばビデオカメラ部502を有する比較的小型のビデオカメラ装置に内蔵させ、受信装置501にはモニタ装置を接続し、ビデオ信号復号部524から出力されたデジタルビデオ信号をモニタ装置に供給する。受信装置501に対して、送信ユニット500の内蔵されたビデオカメラ装置が無線モジュール部512から送信される電波の到達範囲内にあれば、ビデオカメラ装置で撮影された映像を、低遅延、例えば1フィールドまたは1フレーム時間以内の遅延でモニタ装置により見ることができる。
なお、図30では、送信ユニット500と受信装置501との間の通信を、無線通信を用いて行い、ビデオ信号を、無線通信を介して伝送するようにしているが、これはこの例に限定されない。例えば、送信ユニット500と受信装置501は、インターネットなどのネットワークを介して接続するようにしてもよい。この場合、送信ユニット500側の無線モジュール部512および受信装置501側の無線モジュール部521は、それぞれIP(Internet Protocol)を用いた通信が可能な通信インタフェースとされる。
このようなシステムは、様々な応用が考えられる。例えば、テレビジョン会議システムに応用することができる。例えば、USB(Universal Serial Bus)接続が可能な簡易的なビデオカメラ装置をパーソナルコンピュータといったコンピュータ装置に接続すると共に、コンピュータ装置側にビデオ信号符号化部510およびビデオ信号復号部524を搭載する。コンピュータ装置に搭載されるビデオ信号符号化部510およびビデオ信号復号部524は、ハードウェアで構成してもよいし、コンピュータ装置上で動作するソフトウェアとして実現することも可能である。
例えば、会議に参加するメンバそれぞれに、コンピュータ装置と当該コンピュータ装置に接続されるビデオカメラ装置が用意され、コンピュータ装置が例えばテレビジョン会議システムのサービスを提供するサーバ装置に、有線および/または無線によるネットワークを介して接続される。ビデオカメラ装置から出力されたビデオ信号は、USBケーブルを介してコンピュータ装置に供給され、コンピュータ装置内のビデオ信号符号化部510で、この発明に係る符号化処理を施される。コンピュータ装置は、ビデオ信号が符号化された符号化ストリームを、ネットワークを介してサーバ装置などに送信する。
サーバ装置は、受信した符号化ストリームを、参加メンバそれぞれのコンピュータ装置にネットワークを介して送信する。この符号化ストリームは、参加メンバそれぞれのコンピュータ装置に受信され、コンピュータ装置内のビデオ信号復号部524でこの発明に係る復号処理がなされる。ビデオ信号復号部524から出力された画像データが、コンピュータ装置の表示部に映像として表示される。
すなわち、各参加メンバのコンピュータ装置の表示部には、他の参加メンバのビデオカメラ装置で撮影されたそれぞれの映像が表示されることになる。このようなシステムを用いることにより、ビデオカメラ装置での撮影によるビデオ信号の符号化から、他の参加メンバのコンピュータ装置で復号されるまでの遅延時間が短く、参加メンバのコンピュータ装置の表示部に表示される他の参加メンバそれぞれの映像の違和感を少なくできる。
さらに、ビデオ信号符号化部510をビデオカメラ装置側に搭載することも考えられる。例えば、ビデオカメラ装置に送信ユニット500を内蔵させる。このように構成することで、ビデオカメラ装置にコンピュータ装置などの他の装置を接続する必要が無くなる。
このようなテレビジョン会議システムに適用する場合も、レート制御部16は、上述したように符号化処理における発生符号量の制御を容易かつ適切に行うことができる。
このような、送信ユニット500が内蔵されたビデオカメラ装置と受信装置501とからなるシステムは、上述したテレビジョン会議システムの他にも、様々な応用が考えられる。例えば、図31に概略的に示されるように、このシステムを家庭用ゲーム機器に適用することができる。図31において、ビデオカメラ装置600は、図30の送信ユニット500が内蔵される。
家庭用ゲーム機器の本体601は、例えばCPU、RAM(Random Access Memory)およびROM(Read Only Memory)や、CD-ROM(Compact Disc-ROM)やDVD-ROM(Digital Versatile Disc-ROM)に対応したディスクドライブ装置、CPUにより生成された表示制御信号をビデオ信号に変換して出力するグラフィック制御部、オーディオ信号を再生するオーディオ再生部などが例えばバスで接続され、コンピュータ装置と略同様の構成とされる。家庭用ゲーム機器の本体601は、ROMに予め記憶されたプログラムや、ディスクドライブ装置に装填されたCD-ROMやDVD-ROMに記録されたプログラムに従い、CPUにより全体が制御される。RAMは、CPUのワークメモリとして用いられる。この家庭用ゲーム機器の本体601に対して、図30の受信装置501を内蔵する。受信装置501から出力されるデジタルビデオ信号やその他の信号は、例えばバスを介してCPUに供給される。
このようなシステムにおいて、例えば、家庭用ゲーム機器の本体において、外部から供給されたデジタルビデオ信号による画像を、ゲーム内の画像として用いることができるようにされたゲームソフトウェアが起動されているものとする。例えば、このゲームソフトウェアは、外部から供給されたデジタルビデオ信号による画像をゲーム内の画像として用いることができると共に、当該画像内での人物(プレーヤ)などの動きを識別し、識別された動きに応じた動作を行うことが可能とされている。
ビデオカメラ装置600は、撮影されたデジタルビデオ信号を、内蔵される送信ユニット500のビデオ信号符号化部510において、上述した符号化方法で符号化し、符号化ストリームをデジタル変調部511で変調して無線モジュール部512に供給し、アンテナ513から送信する。送信された電波は、家庭用ゲーム機器の本体601に内蔵される受信装置501においてアンテナ520で受信され、受信信号が無線モジュール部521およびフロントエンド部522を介してデジタル復調部523に供給される。受信信号は、デジタル復調部523で復調された符号化ストリームとされ、ビデオ信号復号部524に供給される。ビデオ信号復号部524では、供給された符号化ストリームを、上述した復号方法で復号し、ベースバンドのデジタルビデオ信号を出力する。
ビデオ信号復号部524から出力されたベースバンドのデジタルビデオ信号は、家庭用ゲーム機器の本体601において、バスに送出され、例えばRAMに一時的に記憶される。CPUは、所定のプログラムに従い、RAMに記憶されたデジタルビデオ信号を読み出すことで、このデジタルビデオ信号による画像内の人物の動きを検出したり、当該画像をゲーム内で用いたりすることができるようにされる。
ビデオカメラ装置600で撮影され、得られたデジタルビデオ信号が符号化されてから、家庭用ゲーム機器の本体601で符号化ストリームが復号され画像が得られるまでの遅延時間が短いので、家庭用ゲーム機器の本体601上で動作するゲームソフトウェアにおける、プレーヤの動きに対する応答性が良くなり、ゲームの操作性を向上させることができる。
なお、このような、家庭用ゲーム機器と共に用いられるビデオカメラ装置600は、価格や大きさなどの面からみても簡易な構成とされることが多く、コンピュータ装置などのように、処理能力の高いCPUや、記憶容量の大きなメモリを搭載できないことが想定される。
つまり、一般的に、ビデオカメラ装置600は、ビデオカメラ装置600を利用するゲームをプレイする場合にのみ必要になる、家庭用ゲーム機器の本体601の周辺機器であり、家庭用ゲーム機器の本体601を用いてゲームをプレイするのに必要な装置ではない。そのような場合、ビデオカメラ装置600が家庭用ゲーム機器の本体601と別商品として販売される(所謂、別売り)ことが多い。その場合に、ビデオカメラ装置600に、処理能力の高いCPUや記憶容量の大きなメモリを搭載し、高額な価格で販売するようにすると、一般的に販売数が低減する恐れがある。その場合、このビデオカメラ装置600を利用するゲームの販売数も低減する恐れがあり、収益の低下につながる恐れがある。また、特に、家庭用ゲームにおいては普及率が販売数に対して強い影響を与えることも多く、ビデオカメラ装置600の普及率が低いと、さらに販売数が低減する恐れがある。
逆に、ビデオカメラ装置600を安価で多数販売して普及率を向上させることにより、このビデオカメラ装置600を利用する家庭用ゲームの販売数や人気度を向上させることができ、さらに、そのことが家庭用ゲーム機器の本体601のさらなる購買動機に繋がることを期待することができる。そのためにも、ビデオカメラ装置600は、簡易な構成とすることが望ましい場合が多い。
この場合、例えば、ビデオカメラ装置600に内蔵される送信ユニット500のビデオ信号符号化部510において、ウェーブレット変換を低い分解レベルで抑えて行うことが考えられる。こうすることで、係数並び替え用バッファ部に用いるメモリ容量が少なくて済む。
さらに、上述したように係数の並び替えを復号装置側において行うようにすると、ビデオ信号符号化部510側でウェーブレット変換係数データの並び替え処理を行う必要が無くなるため、ビデオカメラ装置600側の負担をより減らすことが可能となり、好ましい。
なお、上述では、ビデオカメラ装置600と家庭用ゲーム機器の本体601とは、無線通信で接続されるように説明したが、これはこの例に限られない。すなわち、ビデオカメラ装置600と家庭用ゲーム機器の本体601とは、USBやIEEE1394といったインタフェースにより、有線で接続されていてもよい。
このような家庭用ゲーム機器のシステムに適用する場合も、レート制御部16は、上述したように符号化処理における発生符号量の制御を容易かつ適切に行うことができる。
以上のように、本発明は、多様な形態に適用することができ、容易に多様な用途に応用することができる(すなわち汎用性が高い)ことも大きな効果である。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ、または、複数の装置よりなる情報処理システムの情報処理装置などに、プログラム記録媒体からインストールされる。
図32は、上述した一連の処理をプログラムにより実行する情報処理システムの構成の例を示すブロック図である。
図32に示されるように、情報処理システム700は、情報処理装置701、その情報処理装置701とPCIバス702によって接続された、記憶装置703、複数台のビデオテープレコーダ(VTR)であるVTR704-1乃至VTR704-S、ユーザがこれらに対する操作入力を行うためのマウス705、キーボード706、並びに操作コントローラ707により構成されるシステムであり、インストールされたプログラムによって、上述したような画像符号化処理や画像復号処理等を行うシステムである。
例えば情報処理システム700の情報処理装置701は、RAID(Redundant Arrays of Independent Disks)でなる大容量の記憶装置703に記憶されている動画コンテンツを符号化して得られた符号化データを記憶装置703に記憶させたり、記憶装置703に記憶されている符号化データを復号して得られた復号画像データ(動画コンテンツ)を記憶装置703に記憶させたり、符号化データや復号画像データをVTR704-1乃至VTR704-Sを介してビデオテープに記録したりすることができる。また、情報処理装置701は、VTR704-1乃至VTR704-Sに装着されたビデオテープに記録された動画コンテンツを記憶装置703に取り込み得るようにもなされている。その際、情報処理装置701が、動画コンテンツを符号化するようにしてもよい。
情報処理装置701は、マイクロプロセッサ801、GPU(Graphics Processing Unit)802、XDR(Extreme Data Rate)-RAM803、サウスブリッジ804、HDD(Hard Disk Drive)805、USBインタフェース(USB I/F)806、およびサウンド入出力コーデック807を有している。
GPU802は専用のバス811を介してマイクロプロセッサ801に接続される。XDR-RAM803は専用のバス812を介してマイクロプロセッサ801に接続される。サウスブリッジ804は、専用のバスを介してマイクロプロセッサ801のI/Oコントローラ844に接続される。このサウスブリッジ804には、HDD805、USBインタフェース806、および、サウンド入出力コーデック807も接続されている。このサウンド入出力コーデック807にはスピーカ821が接続されている。また、GPU802にはディスプレイ822が接続されている。
またサウスブリッジ804には、さらに、PCIバス702を介して、マウス705、キーボード706、VTR704-1乃至VTR704-S、記憶装置703、並びに、操作コントローラ707が接続されている。
マウス705およびキーボード706は、ユーザの操作入力を受け、PCIバス702およびサウスブリッジ804を介して、ユーザの操作入力の内容を示す信号を、マイクロプロセッサ801に供給する。記憶装置703およびVTR704-1乃至VTR704-Sは、所定のデータを記録または再生できるようになされている。
PCIバス702にはさらに、必要に応じてドライブ708が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア711が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じてHDD805にインストールされる。
マイクロプロセッサ801は、OS(Operating System)等の基本プログラムを実行する汎用のメインCPUコア841と、メインCPUコア841に内部バス845を介して接続された複数(この場合8個)のRISC(Reduced Instruction Set Computer)タイプの信号処理プロセッサである、サブCPUコア842-1乃至サブCPUコア842-8と、例えば256[MByte]の容量を持つXDR-RAM803に対するメモリコントロールを行うメモリコントローラ843と、サウスブリッジ804との間でデータの入出力を管理するI/O(In/Out)コントローラ844とが1チップに集積されたマルチコア構成でなり、例えば動作周波数4[GHz]を実現している。
このマイクロプロセッサ801は、起動時、HDD805に格納された制御プログラムに基づき、HDD805に格納されている必要なアプリケーションプログラムを読み出してXDR-RAM803に展開し、この後このアプリケーションプログラム及びオペレータ操作に基づいて必要な制御処理を実行する。
また、マイクロプロセッサ801は、ソフトウェアを実行することにより、例えば、上述した符号化処理や復号処理を実現し、エンコードの結果得られた符号化ストリームを、サウスブリッジ804を介して、HDD805に供給して記憶させたり、デコードした結果得られる動画像コンテンツの再生映像を、GPU802へデータ転送して、ディスプレイ822に表示させたりすることができる。
マイクロプロセッサ801内の各CPUコアの使用方法は任意であるが、例えば、メインCPUコア841が、画像符号化処理や画像復号処理の制御に関する処理を行い、8個のサブCPUコア842-1乃至サブCPUコア842-8に、ウェーブレット変換、係数並び替え、エントロピ符号化、エントロピ復号、ウェーブレット逆変換、量子化、および逆量子化等の各処理を、例えば図21を参照して説明したように同時並列的に実行させるようにしてもよい。その際、メインCPUコア841が、8個のサブCPUコア842-1乃至サブCPUコア842-8のそれぞれに対してラインブロック(プレシンクト)単位で処理を割り振るようにすれば、符号化処理や復号処理が、図21を参照して説明した場合と同様にラインブロック単位で同時並列的に実行される。つまり、符号化処理や復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。もちろん、これ以外の方法で各処理を行うようにしてもよい。
例えば、マイクロプロセッサ801の8個のサブCPUコア842-1乃至サブCPUコア842-8のうちの一部がエンコード処理を、他の部分がデコード処理を、同時並列的に実行するようにすることも可能である。
また、例えば、PCIバス702に、独立したエンコーダまたはデコーダ、もしくは、コーデック処理装置が接続されている場合、マイクロプロセッサ801の8個のサブCPUコア842-1乃至サブCPUコア842-8が、サウスブリッジ804およびPCIバス702を介して、これらの装置が実行する処理を制御するようにしてもよい。さらに、これらの装置が複数接続されている場合、または、これらの装置が複数のデコーダまたはエンコーダを含んでいる場合、マイクロプロセッサ801の8個のサブCPUコア842-1乃至サブCPUコア842-8は、複数のデコーダまたはエンコーダが実行する処理を、分担して制御するようにしてもよい。
このときメインCPUコア841は、8個のサブCPUコア842-1乃至サブCPUコア842-8の動作を管理し、各サブCPUコアに対して処理を割り当てたり、処理結果を引き取ったりする。さらに、メインCPUコア841は、これらのサブCPUコアが行う以外の処理も行う。例えば、メインCPUコア841は、サウスブリッジ804を介してマウス705、キーボード706、または、操作コントローラ707から供給された命令を受け付け、命令に応じた種々の処理を実行する。
GPU802は、ディスプレイ822に表示する動画コンテンツの再生映像を動かすときのテクスチャの張り込みなどに関する最終的なレンダリング処理に加えて、動画コンテンツの再生映像及び静止画コンテンツの静止画像をディスプレイ822に一度に複数表示するときの座標変換計算処理や、動画コンテンツの再生映像及び静止画コンテンツの静止画像に対する拡大・縮小処理等を行う機能を司り、マイクロプロセッサ801の処理負担を軽減させるようになされている。
GPU802は、マイクロプロセッサ801の制御のもとに、供給された動画コンテンツの映像データや静止画コンテンツの画像データに対して所定の信号処理を施し、その結果得られた映像データや画像データをディスプレイ822へ送出して、画像信号をディスプレイ822へ表示させる。
ところで、マイクロプロセッサ801における8個のサブCPUコア842-1乃至サブCPUコア842-8で同時並列的にデコードされた複数の動画コンテンツにおける再生映像は、バス811を介してGPU802へデータ転送されるが、このときの転送速度は、例えば、最大30[Gbyte/sec]であり、特殊効果の施された複雑な再生映像であっても高速かつ滑らかに表示し得るようになされている。
また、マイクロプロセッサ801は、動画コンテンツの映像データ及び音声データのうち音声データに対して音声ミキシング処理を施し、その結果得られた編集音声データを、サウスブリッジ804およびサウンド入出力コーデック807を介して、スピーカ821へ送出することにより、音声信号に基づく音声をスピーカ821から出力させることもできる。
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図32に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM,DVDを含む)、光磁気ディスク(MDを含む)、もしくは半導体メモリなどよりなるリムーバブルメディア711により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているHDD805や記憶装置703等で構成される。もちろん、記録媒体は、ROMやフラッシュメモリ等の半導体メモリであってもよい。
以上においては、マイクロプロセッサ801内に8個のサブCPUコアが構成されるように説明したが、これに限らず、サブCPUコアの数は任意である。また、マイクロプロセッサ801が、メインCPUコアとサブCPUコアのような複数のコアにより構成されていなくてもよく、シングルコア(1つのコア)により構成されるCPUを用いるようにしてもよい。また、マイクロプロセッサ801の代わりに複数のCPUを用いるようにしてもよいし、複数の情報処理装置を用いる(すなわち、本発明の処理を実行するプログラムを、互いに連携して動作する複数の装置において実行する)ようにしてもよい。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
なお、以上において、1つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて1つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。
1 符号化装置, 10 ウェーブレット変換部, 11 途中計算用バッファ部, 12 係数並び替え用バッファ部, 13 係数並び替え部, 14 量子化部, 15 エントロピ符号化部, 16 レート制御部, 17 平滑化部, 51 スイッチ部, 52 スイッチ部, 53 スイッチ部, 54 スイッチ部, 55 Q計算部, 56 スイッチ部, 57 コーディングユニット単位レート制御部, 58 スイッチ部, 59 ピクチャ単位レート制御部, 101 Left計算部, 102 最大値計算部, 103 符号量正規化部, 104 加算部, 105 加算部, 106 Status計算部, 107 Q計算部, 151 Uniformity計算部, 152 BaseQ計算部