(57)【特許請求の範囲】
【請求項１】
画像を表す画像データを符号化する画像符号化装置において、
前記画像符号化装置は、
前記画像データを構成する複数個のマクロブロックを画像内のそれぞれの位置から収集して並び替えるシャッフル部と、
前記シャッフル部によって収集されて並び替えられた、前記複数個のマクロブロックを基本単位として、空間周波数変換及びエントロピー符号化を行う符号化部と、
前記複数個のマクロブロックを基本単位として、前記符号化部を制御して、前記複数個のマクロブロックの符号化後のレートを調整するレートコントロール部と、を含み、
前記レートコントロール部は、前記複数個のマクロブロックの各々のマクロブロックについて、各々のマクロブロックの予測元マクロブロックから予測される予測量が既知であるか否かを判別し、
前記複数個のマクロブロックを含む画像データ全体における符号化済みのマクロブロックの中で、予測量が既知でないと判別されたマクロブロックの個数に基づいてレートの修正を実行することによって、前記符号化部を制御する、画像符号化装置。
【請求項２】
対応する予測元マクロブロックから予測される予測量が既知でない符号化済みのマクロブロックをオープン・マクロブロックと定義し、
前記レートコントロール部は、前記画像データの割り当てレートに、前記複数個のマクロブロックにおけるマクロブロックの個数を前記画像データのマクロブロックの個数で除算した値を乗算して、前記複数個のマクロブロックに対する割り当てレートを算出し、
前記複数個のマクロブロックが前記符号化部によって符号化された前後の画像データ全体のオープン・マクロブロックの個数の差分に、前記オープン・マクロブロックの予測符号の最大レートと前記予測符号の平均値との差分を乗算して前記複数個のマクロブロックに対する割り当てレートの修正量を算出し、
前記複数個のマクロブロックに対する割り当てレートに前記修正量を加算して、修正割り当てレートを算出し、
前記複数個のマクロブロックの符号化後のレートが前記修正割り当てレートと同等以下となるように前記符号化部を制御する、請求項１記載の画像符号化装置。
【請求項３】
前記予測符号がＤＣ予測の符号を含む、請求項２記載の画像符号化装置。
【請求項４】
前記空間周波数変換はＤＣＴ変換によって実行され、
前記レートコントロール部は、前記符号化部が前記複数個のマクロブロックを量子化する際に用いる量子化スケールを前記修正割り当てレートに基づいて決定する、請求項２記載の画像符号化装置。
【請求項５】
前記画像データは、一列に配列された第２の複数個のマクロブロックから構成されるスライス・レイヤを含み、
前記シャッフル部は、前記第２の複数個のマクロブロックを並び替える際に、前記スライス・レイヤにおけるスキャン順を含む前記第２の複数個のマクロブロックの位置情報を生成し、
前記レートコントロール部は、前記スライス・レイヤを構成する一列に配列された第２の複数個のマクロブロックのバイト単位のレートを、前記スライス・レイヤを構成する一列に配列された第２の複数個のマクロブロックのビット単位のレートと、前記スライス・レイヤを構成する一列に配列された第２の複数個のマクロブロックの符号化済みマクロブロックと前記複数個のマクロブロックに伴うオーバーヘッドとのビット単位の合計レートとの和を８で除算して整数に切り上げて得た値から、前記スライス・レイヤを構成する一列に配列された第２の複数個のマクロブロックの符号化済みマクロブロックと前記複数個のマクロブロックに伴うオーバーヘッドとのビット単位の合計レートを８で除算して整数に切り上げて得た値を減じて算出する、請求項１記載の画像符号化装置。
【請求項６】
前記レートコントロール部は、前記スライス・レイヤの先頭に位置するマクロブロックへの割り当てレートが、前記スライス・レイヤの他のマクロブロックへの割り当てレートより大きくなるように、前記スライス・レイヤのマクロブロックの各々の割り当てレートを算出する、請求項５記載の画像符号化装置。
【請求項７】
さらに、前記符号化部によって符号化された符号化データを一時的に保存する中間バッファ部と、
前記中間バッファ部に保存された符号化データをスキャン順に読み取り、前記符号化データを出力することによって、前記符号化データを前記シャッフル部によって並び替えられる前の配列に再び並び替える再並び替え部と、を含み、
前記中間バッファ部は、固定長のオーバーヘッドにマクロブロックの総数を乗算して得た値と、画像データ全体の割り当てレートと、の合計と同等の容量を有する、請求項１記載の画像符号化装置。
【請求項８】
前記符号化部が前記複数個のマクロブロックをＪＰＥＧ及びＭＰＥＧ−２の少なくとも一つに準拠して符号化する、請求項１記載の画像符号化装置。
【請求項９】
前記符号化部が前記複数個のマクロブロックをインターフレーム符号化方式に準拠して符号化する、請求項１記載の画像符号化装置。
【請求項１０】
画像を表す画像データを符号化する画像符号化方法において、
前記画像符号化方法は、
前記画像データを構成する複数個のマクロブロックを画像内のそれぞれの位置から収集して並び替えるシャッフリングステップと、
前記シャッフリングステップにおいて収集されて並び替えられた、前記複数個のマクロブロックを基本単位として、空間周波数変換及びエントロピー符号化を行う符号化ステップと、
前記複数個のマクロブロックを基本単位として、前記符号化ステップを制御して、前記複数個のマクロブロックの符号化後のレートを調整するレートコントロールステップと、を含み、
前記レートコントロールステップは、前記複数個のマクロブロックの各々のマクロブロックについて、各々のマクロブロックの予測元マクロブロックから予測される予測量が既知であるか否かを判別するステップと、
前記複数個のマクロブロックを含む画像データ全体における符号化済みのマクロブロックの中で、予測量が既知でないと判別されたマクロブロックの個数に基づいてレートの修正を実行することによって、前記符号化ステップを制御するステップを有する、画像符号化方法。
【請求項１１】
対応する予測元マクロブロックから予測される予測量が既知でない符号化済みのマクロブロックをオープン・マクロブロックと定義し、
前記レートコントロールステップは、前記画像データの割り当てレートに、前記複数個のマクロブロックの個数を前記画像データのマクロブロックの個数で除算した値を乗算して、前記複数個のマクロブロックに対する割り当てレートを算出するステップと、
前記複数個のマクロブロックが前記符号化ステップにおいて符号化された前後の画像データ全体のオープン・マクロブロックの個数の差分に、前記オープン・マクロブロックの予測符号の最大レートと前記予測符号の平均値との差分を乗算して前記複数個のマクロブロックに対する割り当てレートの修正量を算出し、前記複数個のマクロブロックに対する割り当てレートに前記修正量を加算して修正割り当てレートを算出するステップと、
前記複数個のマクロブロックの符号化後のレートが前記修正割り当てレートと同等以下となるように前記符号化ステップを制御するステップと、を含む、請求項１０記載の画像符号化方法。
【請求項１２】
前記予測符号がＤＣ予測の符号を含む、請求項１１記載の画像符号化方法。
【請求項１３】
前記空間周波数変換はＤＣＴ変換によって実行され、
前記レートコントロールステップは、前記符号化ステップで前記複数個のマクロブロックを量子化する際に用いる量子化スケールを、前記修正割り当てレートに基づいて決定するステップを含む、請求項１１記載の画像符号化方法。
【請求項１４】
前記画像データは、一列に配列された第２の複数個のマクロブロックから構成されるスライス・レイヤを含み、
前記シャッフリングステップは、前記第２の複数個のマクロブロックを並び替える際に、前記スライス・レイヤにおけるスキャン順を含む前記第２の複数個のマクロブロックの位置情報を生成するステップを含み、
前記レートコントロールステップは、前記スライス・レイヤを構成する一列に配列された前記複数個のマクロブロックのバイト単位のレートを、前記スライス・レイヤを構成する一列に配列された前記複数個のマクロブロックのビット単位のレートと、前記スライス・レイヤを構成する一列に配列された前記複数個のマクロブロックの符号化済みマクロブロックと前記複数個のマクロブロックに伴うオーバーヘッドとのビット単位の合計レートとの和を８で除算して整数に切り上げて得た値から、前記スライス・レイヤを構成する一列に配列された前記複数個のマクロブロックの符号化済みマクロブロックと前記複数個のマクロブロックに伴うオーバーヘッドとのビット単位の合計レートを８で除算して整数に切り上げて得た値を減じて算出するステップを有する、請求項１０記載の画像符号化方法。
【請求項１５】
前記レートコントロールステップは、前記スライス・レイヤの先頭に位置するマクロブロックへの割り当てレートが、前記スライス・レイヤの他のマクロブロックへの割り当てレートより大きくなるように、前記スライス・レイヤのマクロブロックの各々の割り当てレートを算出するステップを有する、請求項１４記載の画像符号化方法。
【請求項１６】
さらに、前記符号化ステップにおいて符号化された符号化データを一時的に保存する一時保存ステップと、
前記一時保存ステップにおいて保存された符号化データをスキャン順に読み取り、前記符号化データを出力することによって、前記符号化データを前記シャッフリングステップにおいて並び替えられる前の配列に再び並び替える再並び替えステップと、を含み、
前記一時保存ステップは、固定長のオーバーヘッドにマクロブロックの総数を乗算して得た値と、画像データ全体の割り当てレートと、の合計と同等の容量を有するバッファに前記符号化データを保存するステップを有する、請求項１０記載の画像符号化方法。
【請求項１７】
画像を表す画像データを符号化するためのコンピュータによって実行される、画像符号化プログラムであって、
前記画像符号化プログラムは、
前記画像データを構成する複数個のマクロブロックを画像内のそれぞれの位置から収集して並び替えるシャッフリングステップと、
前記シャッフリングステップにおいて収集されて並び替えられた、前記複数個のマクロブロックを基本単位として、空間周波数変換及びエントロピー符号化を行う符号化ステップと、
前記複数個のマクロブロックを基本単位として、前記符号化ステップを制御して、前記複数個のマクロブロックの符号化後のレートを調整するレートコントロールステップと、を含み、
前記レートコントロールステップは、前記複数個のマクロブロックの各々のマクロブロックについて、各々のマクロブロックの予測元マクロブロックから予測される予測量が既知であるか否かを判別するステップと、
前記複数個のマクロブロックを含む画像データ全体における符号化済みのマクロブロックの中で、予測量が既知でないと判別されたマクロブロックの個数に基づいてレートの修正を実行することによって、前記符号化ステップを制御するステップを有する、画像符号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理技術に関し、より詳細には、画像符号化装置、画像符号化方法、及び画像符号化プログラムに関する。
【背景技術】
【０００２】
動画像をデジタル処理する技術において、発生する膨大な情報量を圧縮して符号化するための方式として、デジタルビデオ及び付随するオーディオに対する符号化方式の標準規格ＩＳＯ／ＩＥＣ  １３８１８（通称、「ＭＰＥＧ−２」（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ  Ｐｈａｓｅ  ２））がある。このようにして生成されたＭＰＥＧ−２の規格に準拠したビットストリームは、通信やテレビジョン放送など幅広い分野で使用されている（非特許文献１参照）。
【０００３】
ＭＰＥＧ−２準拠ビットストリームは階層構造を有し、最上位のシーケンス・レイヤから順にＧＯＰ（Ｇｒｏｕｐ  ｏｆ  Ｐｉｃｔｕｒｅｓ）レイヤ、ピクチャ・レイヤ、スライス・レイヤ、マクロブロック・レイヤ及びブロック・レイヤの各レイヤを含む。
【０００４】
ＭＰＥＧ−２においては、一連の複数の画像から構成される動画像を処理する場合、各画像フレームを一旦フレームメモリに保存し、フレーム間の動き補償差分を取ることによって時間軸方向の冗長度を削減し、さらに、各フレームを構成する複数の画素を離散コサイン変換（以後、「ＤＣＴ」と略す）することにより空間軸方向の冗長度を削減することにより、効率良い動画像圧縮符号化を実現している。
【０００５】
符号化された信号は、デコーダに送られて復号され再生される。ＭＰＥＧ−２は一般にフレーム間符号化（ｉｎｔｅｒ−ｆｒａｍｅ  ｃｏｄｉｎｇ）を利用して高い圧縮率を実現している。デコーダでは、画像フレームを再生し第１のフレームメモリに保存し、差分情報に基づいて次に続くべき画像フレームを予測し第２のフレームメモリに保存し、２つのフレームからその間に挿入される画像フレームをさらに予測して、一連の画像フレームを構成し動画像を再生する。このような手法は双方向予測と呼ばれる。
【０００６】
ＭＰＥＧ−２では、この双方向予測を実現するために、Ｉフレーム、Ｐフレーム及びＢフレームという３つのタイプを規定している。Ｉフレームは、イントラ符号化フレームを意味し、他のフレームとは独立して静止画として符号化される画像のことである。Ｐフレームは、順方向予測符号化フレームを意味し、時間的に過去に位置するＩフレームまたはＰフレームに基づいて予測符号化される画像のことである。Ｂフレームは、双方向予測符号化フレームを意味し、時間的に前後に位置するＩフレームまたはＰフレームを用いて順方向、逆方向または双方向のフレームに基づいて予測符号化される画像のことである。すなわち、Ｉフレーム及びＰフレームを先に符号化処理した後、その間に挿入されるＢフレームが符号化される（非特許文献２参照）。
【０００７】
フレーム間符号化は、連続するフレームの間の相関を用いて圧縮を行うという性質から、圧縮と伸張を繰り返すと画質が低下しやすい。このため、高画質が要求される、画像編集システムやビデオ・サーバでは、フレーム内符号化（ｉｎｔｒａ−ｆｒａｍｅ  ｃｏｄｉｎｇ）のみが利用されることがある。例えば、ＭＰＥＧ−２においてＩ（ｉｎｔｒａ）フレームのみを使う符号化方式（「以後、Ｉフレームのみの符号化」と呼ぶ。）がある。ＭＰＥＧ−２では、Ｉフレームに加えてＰフレーム，Ｂフレームなどの複数のフレームを含むＧＯＰ単位でレートコントロールすることが一般的であるが、Ｉフレームのみの符号化においても同様の方法でレートコントロールができる。
【０００８】
エンコーダで符号化されたＭＰＥＧ−２ビットストリームは、所定の転送速度で伝送路に送出され、該伝送路上のデコーダに入力されて復号され再生される。しかしながら、動画像を符号化して発生する情報量、すなわち、動画像信号のエントロピーは一定ではない。このように一定しない動画像信号を符号化して、生成した符号化信号を固定レートの伝送路に送出するためには、符号化信号が一定のエントロピーを有するように、符号化データのレートコントロールを行う必要がある。
【０００９】
従来の画像符号化のレートコントロールについて、図８を参照して説明する。図８に示す従来の画像符号化装置１００は、デジタル画像データを入力する入力部１０１と、ブロック化処理部１０２と、符号化部１０３と、ＦＩＦＯバッファ１０４と、レートコントロール部１０５と、出力部１０６とを備える。ブロック化処理部１０２は、入力部１０１から入力された画像データをブロックに分割して、符号化の基本単位であるマクロブロックを生成する。符号化部１０３は、ブロック化処理部１０２によって生成されたマクロブロックをＤＣＴ変換、量子化、可変長符号化してビットストリームを生成する。ＦＩＦＯバッファ１０４は、符号化部１０３から供給されるビットストリームを一時的に蓄え、出力部１０６を介して出力する。レートコントロール部１０５は、ＦＩＦＯバッファ１０４の占有率に基づいて、符号化部１０３が次の画像データの量子化処理に用いる量子化パラメータを制御する、フィードバック型のレートコントロールを行う。量子化パラメータは量子化の粗さまたは細かさに影響し、量子化の粗さまたは細かさは秒当たり符号化されるビットの数に直接影響する。量子化が粗くなると、より少ないデータしか維持されず、符号化された画像データの品質は劣化する。量子化が細かくなると、より多くのデータが維持され、画像符号化の品質は向上する。しかしながら、量子化があまりにも細かければ、秒毎の符号化ビットの数は割り当てられた帯域幅を超え、限られた帯域幅に収まるようにレートコントロールをやり直す必要がある。
【００１０】
Ｉフレームのみの符号化においても、高ビットレートが要求されるため、デコーダのバッファに余裕がない場合が多い。このため、Ｉフレームのみの符号化では、一層厳密なレートコントロールが要求されるため、レートコントロールに通常よりも時間がかかってしまう。また、フィードバックレートコントロールの性質から、Ｉフレームの符号長がフレーム毎に異なるので、特にシーンチェンジ時やカットやインサートなどの編集の結果、レートが一気に増大し、バッファ管理上の制約を破り、バッファが破綻してしまう恐れがある。
【００１１】
ＤＶのようなコーデックでは、Ｉフレームが同じ大きさになるようにしてレートコントロールを行うので上述のような問題はない。レートコントロールを効率的に行うため、マクロブロック・シャッフリングという手法が使われる（例えば、特許文献３参照）。マクロブロックは輝度や色差を表すＤＣＴブロックをまとめたものである。ＭＰＥＧ−２やＭＰＥＧ−１にもマクロブロックに相当するものがあることから、本書において「マクロブロック」とは、ＭＰＥＧ−２やＭＰＥＧ−１におけるマクロブロックに相当するものも含むものとする。
【００１２】
マクロブロック・シャッフリングでは、空間的にランダムに位置するマクロブロックを複数個、例えば５個収集して、符号化する。ここで、符号化されたマクロブロックの符号長を「マクロブロックのレート」と呼ぶ。このようにして収集されたマクロブロックのレートが目標レートを超えないように、レートコントロールが実行される。このようにしてまとめられたマクロブロックの集合を「セグメント」と呼ぶ。これにより、セグメントという小さな単位で上述のレートコントロールを行いながら、画像データ全体にフェアにビットを割り当てるようにしている。また、セグメントに含まれるマクロブロックの数が小さいので、レートコントロールを高速に実行でき、また必要な回路規模を小さくできる。
【非特許文献１】ＩＳＯ／ＩＥＣ  １３８１８−２：２０００，Ｉｎｆｏｒｍａｔｉｏｎ  ｔｅｃｈｎｏｌｏｇｙ−Ｇｅｎｅｒｉｃ  ｃｏｄｉｎｇ  ｏｆ  ｍｏｖｉｎｇ  ｐｉｃｔｕｒｅｓ  ａｎｄ  ａｓｓｏｃｉａｔｅｄ  ａｕｄｉｏ  ｉｎｆｏｒｍａｔｉｏｎ：  Ｖｉｄｅｏ
【非特許文献２】Ｐｅｔｅｒ  Ｓｙｍｅｓ．  Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｃｏｍｐｒｅｓｓｉｏｎ．  Ｍｃｇｒａｗ−Ｈｉｌｌ，  ２００３．
【特許文献３】特開平１１−２９８８９６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
ＭＰＥＧ−２のストリーム構造によれば、マクロブロックの行（ｒｏｗ）はスライスと呼ばれる構造にまとめられ、スライスの中ではマクロブロックにスキャン順の依存関係の生じる処理（ＤＣ成分のＤＰＣＭ符号化など）が施されるので、シャッフルしたマクロブロックを独立して符号化し、レートコントロールを実行することができない。このため、ＭＰＥＧ−２に準拠したＩフレームのみの符号化において、ＤＶのようなマクロブロック・シャッフリングを利用したレートコントロールを行うことは難しい。ＭＰＥＧ−２では１個のマクロブロックが１個のスライスを構成するようにストリームの構造を変更することが許されているため、マクロブロックを独立して符号化し、レートコントロールすることができる。しかし、このようにストリームの構造を変更すると、ＤＣ予測などの予測符号化が使えないことや補助情報によるオーバーヘッドが増えることにより、符号化効率が落ちるという課題がある。
【００１４】
したがって、本発明は、上述の課題に鑑み、スライス構造を変更することなく、最大レートを見積もり、順次修正していく符号予測を行いながら、マクロブロック・シャッフリングによってフェアなビット割り当てと高速なレートコントロールを保障し、必要な回路規模を小型化できる、画像符号化装置及び画像符号化方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１の態様によると、画像を表す画像データを符号化する画像符号化装置において、前記画像符号化装置は、前記画像データを構成する複数個のマクロブロックを画像内のそれぞれの位置から収集して並び替えるシャッフル部と、前記シャッフル部によって収集されて並び替えられた、前記複数個のマクロブロックを基本単位として、空間周波数変換及びエントロピー符号化を行う符号化部と、前記複数個のマクロブロックを基本単位として、前記符号化部を制御して、前記複数個のマクロブロックの符号化後のレートを調整するレートコントロール部と、を含み、前記レートコントロール部は、前記複数個のマクロブロックの各々のマクロブロックについて、各々のマクロブロックの予測元マクロブロックから予測される予測量が既知であるか否かを判別し、前記複数個のマクロブロックを含む画像データ全体における符号化済みのマクロブロックの中で、予測量が既知でないと判別されたマクロブロックの個数に基づいてレートの修正を実行することによって、前記符号化部を制御する、画像符号化装置が提供される。
【００１６】
この構成により、本発明の画像符号化装置は、複数個のマクロブロックの各々のマクロブロックについて、マクロブロックのシャッフリングをしながら、各々のマクロブロックの予測元マクロブロックから予測される予測量が既知であるか否かを判別し、複数個のマクロブロックを含む画像データ全体における符号化済みのマクロブロックの中で、予測量が既知でないと判別されたマクロブロックの個数に基づいてレートの修正を実行することによって符号化部を制御することができるので、レート修正を採用したレートコントロールを実現することができる。さらに、処理を実行するための基本単位を全体で構成するマクロブロックの数を少数に選択することによって、処理を高速化し、当該処理に必要な回路規模のサイズを縮小することができる。さらに、符号化部は、マクロブロック・シャッフリングによって画像データの疑似ランダムな位置から抽出した少数のマクロブロックに符号化を実行するので、画像全体の画質を均一化し、画像のクオリティを向上することができる。例えば、画像のエントロピーの変動の大きい連続した画像データをＩフレームに符号化する場合であっても、出力されるビットストリームの大きさを均一にすることができるため、バッファの制約を破るおそれがない。このため、複数枚のフレームをマルチスレッドを利用して同時に符号化し、その後に一つのストリームにまとめることが可能である。また、同じ理由から、エンコード後にカットやインサートなどの編集が可能である。
【００１７】
さらに、上述の画像符号化装置において、対応する予測元マクロブロックから予測される予測量が既知でない符号化済みのマクロブロックをオープン・マクロブロックと定義し、前記レートコントロール部は、前記画像データの割り当てレートに、前記複数個のマクロブロックの個数を前記画像データのマクロブロックの個数で除算した値を積算して、前記複数個のマクロブロックに対する割り当てレートを算出し、前記複数個のマクロブロックが前記符号化部によって符号化された前後の画像データ全体のオープン・マクロブロックの個数の差分に、前記オープン・マクロブロックの予測符号の最大レートと前記予測符号の平均値との差分を積算して前記複数個のマクロブロックに対する割り当てレートの修正量を算出し、前記複数個のマクロブロックに対する割り当てレートに前記修正量を加算して、修正割り当てレートを算出し、前記複数個のマクロブロックの符号化後のレートが前記修正割り当てレートと同等以下となるように前記符号化部を制御するようにしてもよい。
【００１８】
この構成により、本発明の画像符号化装置では、前記レートコントロール部が、前記複数個のマクロブロックに対する割り当てレートを、前記画像データの割り当てレートに、前記複数個のマクロブロックの個数を前記画像データのマクロブロックの個数で除算した値を積算して算出し、前記複数個のマクロブロックが前記符号化部によって符号化された前後の画像データ全体のオープン・マクロブロックの個数の差分に、前記オープン・マクロブロックの予測符号の最大レートと前記予測符号の平均値との差分を積算して前記複数個のマクロブロックに対する割り当てレートの修正量を算出し、前記複数個のマクロブロックに対する割り当てレートに前記修正量を加算して、修正割り当てレートを算出し、前記複数個のマクロブロックの符号化後のレートが前記修正割り当てレートと同等以下となるように前記符号化部を制御することができる。したがって、符号化を行う際に、予測量が未知のオープン・マクロブロックに対して、一旦最大のレートを割り当てた後、予測符号のレートが明らかになる毎にオープン・マクロブロックのレートを適宜修正するので、レートコントロールを保証できる。さらに、割り当てレートを適宜修正するので、フェアに安定して予測符号のレートを割り当てることができる。
【００１９】
さらに、上述の画像符号化装置において、前記符号化部が前記複数のマクロブロックをＪＰＥＧ及びＭＰＥＧ−２の少なくとも一つに準拠して符号化してもよい。具体的には、静止画画像にも応用可能である。本発明の画像符号化装置は、例えば、画像エントロピーの変動の大きい一連の画像データを、例えば、Ｉフレームのみで符号化する場合であっても、出力されるビットストリームの大きさを略均一にすることができるため、複数枚のフレームをマルチスレッドを利用して同時に符号化し、その後でストリームにまとめることも可能である。また、同じ理由から、符号化後にカットやインサートなどの編集もしやすい。また、前記符号化部は前記複数のマクロブロックをインターフレーム符号化方式に準拠して符号化してもよいので、本発明は幅広い用途に適用可能である。
【００２０】
上述の画像符号化装置において、前記予測レートは、例えば、ＤＣ予測の符号を含んでもよい。この構成によって、本発明の画像符号化装置は、符号化を行う際に、ＤＣ予測が未知のオープン・マクロブロックに対して、一旦最大のレートを割り当てた後、予測レートが明らかになる毎にレートを適宜更新することができるので、レートコントロールを保証できる。前記空間周波数変換をＤＣＴ変換によって実行し、前記レートコントロール部は、前記符号化部が前記複数個のマクロブロックをＤＣＴ変換する際に用いる量子化スケールを前記修正割り当てレートに基づいて決定するようにしてもよい。例えば、ＤＣ予測で犠牲になりがちなＡＣ成分に割り当てるレートも安定して確保することができ、２次元的な細かい変化を鮮明に表現することなども可能になる。
【００２１】
上述の画像符号化装置において、前記画像データは、一列に配列された第２の複数個のマクロブロックから構成されるスライス・レイヤを含み、前記シャッフル部は、前記第２の複数個のマクロブロックを並び替える際に、前記スライス・レイヤにおけるスキャン順を含む前記第２の複数個のマクロブロックの位置情報を生成し、前記レートコントロール部は、前記スライス・レイヤを構成する一列に配列された第２の複数個のマクロブロックのバイト単位のレートを、前記スライス・レイヤを構成する一列に配列された第２の複数個のマクロブロックのビット単位のレートと、前記スライス・レイヤを構成する一列に配列された第２の複数個のマクロブロックの符号化済みマクロブロックとそれらに伴うオーバーヘッドのビット単位の合計レートとの和を８で除算して整数に切り上げて得た値から、前記スライス・レイヤを構成する一列に配列された第２の複数個のマクロブロックの符号化済みマクロブロックとそれらに伴うオーバーヘッドのビット単位の合計レートを８で除算して整数に切り上げて得た値を減じて算出してもよい。
【００２２】
スライス中のマクロブロックの符号は通常、バイト単位で処理される。この構成によって、本発明の画像符号化装置は、レートコントロール部が、マクロブロックのバイト単位のレートを、スライス・レイヤを構成する一列に配列された複数個のマクロブロックのビット単位のレートと、スライス・レイヤを構成する一列に配列された複数個のマクロブロックの符号化済みマクロブロックとそれらに伴うオーバーヘッドのビット単位の合計レートとの和を８で除算して整数に切り上げて得た値から、スライス・レイヤを構成する一列に配列された複数個のマクロブロックの符号化済みマクロブロックとそれらに伴うオーバーヘッドのビット単位の合計レートを８で除算して整数に切り上げて得た値を減じて算出することができる。
【００２３】
上述の画像符号化装置は、さらに、前記符号化部によって符号化された符号化データを一時的に保存する中間バッファ部と、前記中間バッファ部に保存された符号化データをスキャン順に読み取って当該符号化データを出力することによって、前記符号化データを前記シャッフル部によって並び替えられる前の配列に再び並び替える並び替え部と、を含み、前記中間バッファ部は、固定長のオーバーヘッドとマクロブロックの総数を乗算して得た値と、画像データ全体に対する割り当てレートとを加算した合計と同等の容量を有するようにしてもよい。
【００２４】
マクロブロック毎に当該マクロブロックの符号を保存する従来のバッファでは、マクロブロック毎に最大のレートをバッファに割り当てているが、本発明の画像符号化装置では、必要なバッファの容量を画像データの全体の割り当てレートと、固定長オーバーヘッドをマクロブロックの数で乗算して得た値との合計に削減することができる。
【００２５】
本発明の第２の態様によると、画像を表す画像データを符号化する画像符号化方法において、前記画像符号化方法は、前記画像データを構成する複数個のマクロブロックを画像内のそれぞれの位置から収集して並び替えるシャッフリングステップと、前記シャッフリングステップにおいて収集されて並び替えられた、前記複数個のマクロブロックを基本単位として、空間周波数変換及びエントロピー符号化を行う符号化ステップと、前記複数個のマクロブロックを基本単位として、前記符号化ステップを制御して、前記複数個のマクロブロックの符号化後のレートを調整するレートコントロールステップと、を含み、前記レートコントロールステップは、前記複数個のマクロブロックの各々のマクロブロックについて、各々のマクロブロックの予測元マクロブロックから予測される予測量が既知であるか否かを判別するステップと、前記複数個のマクロブロックを含む画像データ全体における符号化済みのマクロブロックの中で、予測量が既知でないと判別されたマクロブロックの個数に基づいてレートの修正を実行することによって、前記符号化ステップを制御するステップを有する、画像符号化方法を提供する。
【００２６】
本発明の第３の態様によると、画像を表す画像データを符号化するためのコンピュータによって実行される、画像符号化プログラムであって、前記画像符号化プログラムは、
前記画像データを構成する複数個のマクロブロックを画像内のそれぞれの位置から収集して並び替えるシャッフリングステップと、前記シャッフリングステップにおいて収集されて並び替えられた、前記複数個のマクロブロックを基本単位として、空間周波数変換及びエントロピー符号化を行う符号化ステップと、前記複数個のマクロブロックを基本単位として、前記符号化ステップを制御して、前記複数個のマクロブロックの符号化後のレートを調整するレートコントロールステップと、を含み、前記レートコントロールステップは、前記複数個のマクロブロックの各々のマクロブロックについて、各々のマクロブロックの予測元マクロブロックから予測される予測量が既知であるか否かを判別するステップと、前記複数個のマクロブロックを含む画像データ全体における符号化済みのマクロブロックの中で、予測量が既知でないと判別されたマクロブロックの個数に基づいてレートの修正を実行することによって、前記符号化ステップを制御するステップを有する、画像符号化プログラム、を提供する。
【００２７】
マクロブロックのシャッフリングをしながら、各々のマクロブロックの予測元マクロブロックから予測される予測量が既知であるか否かを判別し、複数個のマクロブロックを含む画像データ全体における符号化済みのマクロブロックの中で、予測量が既知でないと判別されたマクロブロックの個数に基づいてレートの修正を実行することによって符号化ステップを制御することができるので、レート修正を採用したレートコントロールを実現することができる。さらに、処理を実行するための基本単位を全体で構成するマクロブロックの数を少数に選択することによって、処理を高速化し、当該処理に必要な回路規模のサイズを縮小することができる。さらに、符号化ステップは、複数のマクロブロックを基本単位として、マクロブロック・シャッフリングによって画像データの疑似ランダムな位置から抽出したマクロブロックに符号化を実行するので、画像全体の画質を均一化し、画像のクオリティを向上することができる。例えば、エントロピーの変動の大きい連続した画像データをＩフレームのみに符号化する場合であっても、出力されるビットストリームの大きさを均一にすることができるため、バッファの制約を破るおそれがない。このため、複数枚のフレームをマルチスレッドを利用して同時に符号化し、その後に一つのストリームにまとめることが可能である。また、同じ理由から、エンコード後にカットやインサートなどの編集が可能である。
【発明の効果】
【００２８】
本発明によれば、マクロブロック・シャッフリングを実行することによってマクロブロックを疑似ランダムに抽出し、セグメントという少ない数のマクロブロックを単位として符号化を制御するので、高速なレートコントロールを保障しながら、必要な回路規模を小さくできる。画質が均一になるので、画像のクオリティが向上する。さらに、スライス構造が変化しないので、符号予測を行うことができ、符号化効率が低下しない。レートコントロールでは、予測元マクロブロックから予測される予測量が不明なマクロブロックにおいては可能な最大レート、すなわち、修正レート、を最初に見積もり、マクロブロックの各々について予測が明らかになる毎に順次レートを更新していくことによって、レートコントロールを保証することができる。さらに予測されるレート、すなわち、平均レート、からの修正レートのずれをキャンセルするように割り当てレートを適当に修正することでマクロブロック毎のビット割り当てをフェアにできる。
【図面の簡単な説明】
【００２９】
【図１】図１は、本発明の第１の実施の形態の画像符号化装置のブロック図である。
【図２】図２は、図１の画像符号化装置のシャッフル部が実行するシャッフリングを説明する図である。
【図３】図３は、図２で説明するシャッフリングによって形成されるセグメントの一例を示す図である。
【図４】図４は、図１の画像符号化装置の符号化部が実行する符号化処理を説明する図である。
【図５】図５は、図１の画像符号化装置のレートコントロール部が実行するレートコントロール処理を説明するフロー図である。
【図６】図６は、本発明の第２の実施の形態の画像符号化装置のブロック図である。
【図７】図７は、図６の画像符号化装置の中間ストリームバッファを説明する図である。
【図８】従来の画像符号化装置のブロック図である。
【発明を実施するための形態】
【００３０】
以下、本発明の具体的な実施の形態について、図面を参照して詳細に説明する。
（第１の実施の形態）
【００３１】
本発明の第１の実施の形態の画像符号化装置について、図１を参照して説明する。図１に示すように、本実施の形態の画像符号化装置１０は、デジタルに変換された画像データを入力する入力部１と、ブロック化処理部２と、シャッフル部３と、符号化部４と、レートコントロール部５と、並べ替え部６と、出力部７とを備える。ブロック化処理部２は、入力部１から入力された画像データをブロックに分割して、符号化の基本単位であるマクロブロックを生成する。シャッフル部３は、ブロック化処理部２によって生成された複数のマクロブロックを疑似ランダムに抽出する。シャッフル部３によって疑似ランダムに抽出された複数のマクロブロックは、全体でセグメントと呼ばれる。一つのセグメントを構成するマクロブロックの個数は、例えば５個など、少数でよい。符号化部４は、シャッフル部３によってシャッフリングされて疑似ランダムに抽出されたマクロブロックをＤＣＴ変換、量子化、可変長符号化してビットストリームを生成する。レートコントロール部５は、シャッフルされたマクロブロックに対してセグメントの単位でレートコントロールを行う。シャッフル部３が実行するシャッフリング及びレートコントロール部５が実行するレートコントロールの詳細については後述する。並び替え部６は、符号化部４によって生成されたビットストリームを、シャッフリング３によってシャッフリングされる前の配列に並び替え、出力部７を介してビットストリームを出力する。本実施の形態の画像符号化装置は、シャッフリングによって画面上で疑似ランダムな位置からマクロブロックを抽出するので、全体として、画像の画質を均一にすることができるまた、セグメントに含まれるマクロブロックの数を少なくすることができるので、レートコントロールを高速に実行することができ、必要な回路規模を小さくできる。
＜１．具体的なシャッフリング方法＞
【００３２】
以下、シャッフル部３が実行する具体的なシャッフリングの方法について、図２を参照して説明する。図２に、シャッフル部３がシャッフリングを実行するマクロブロックを含むブロックに分割された画像データを示す。また、画像データから疑似ランダムに抽出したマクロブロックを含むセグメントについては図３に示す。本実施の形態では、３５列２５行のマクロブロックを有する画像データを想定して説明する。
【００３３】
まず、画像データ全体を７列５行からなるマクロブロックを有するスーパーブロックに分割する。図２においてスーパーブロックは太い線で囲まれた長方形で示されている。本実施の形態では、行または列の少なくとも何れかを同一とするマクロブロックを持たないように５個のスーパーブロックＳＢ１〜ＳＢ５を選択する。波線の矢印はスーパーブロックのスキャン順を示す。上からｋ番目に位置するｉ行ｊ列のスーパーブロックをＳＢＫ［ｉ，ｊ］とすると、図２では、ＳＢ０［０，０］，ＳＢ１［１，２］，ＳＢ２［２，４］，ＳＢ３［３，１］，ＳＢ４［４，３］が選択されている。
【００３４】
次に、選択したスーパーブロックをスキャンして、選択したスーパーブロックの各々から１個ずつマクロブロックを抽出し、セグメントを形成する。図２においてマクロブロックは細い線で囲まれた正方形で示されており、実線の矢印はマクロブロックのスキャン順を示す。ｋ番目のスーパーブロックにおいてｌ番目にスキャンされたマクロブロックをＭＢ［ｋ，ｌ］として、図３に形成されたセグメントの一例を示す。図３に示すセグメントは、ＭＢ［０，１１］，ＭＢ［１，１１］，ＭＢ［２，１１］，ＭＢ［３，１１］，ＭＢ［４，１１］と、各スーパーブロックから抽出された１１個目のマクロブロックから形成されていることがわかる。
【００３５】
図２で実線の矢印で示す順序で所与のスーパーブロック内のすべてのマクロブロックを処理し終えると、次に、波線の矢印で示すように、それぞれの処理済みのスーパーブロックの下方に位置する未処理のスーパーブロックに移行し、それぞれの未処理のスーパーブロックからマクロブロックを所定の順番に選択して、次のセグメントを形成していく。下端のスーパーブロックにある全てのマクロブロックを処理した場合は、処理済みのスーパーブロックと同じ列の上端の未処理のスーパーブロックに移行するようにする。以下、すべてのスーパーブロックで同様の処理を実行する。マクロブロックを選択する方法は、例えば、図２で実線の矢印で示すように、それぞれのスーパーブロックの内部をジグザグにスキャンしてスーパーブロックの各々から未処理のマクロブロックを選択するようにしてもよいが、これに限定されず、セグメントに属する所定の数のマクロブロックを適時もれなく、画像データの中から空間的に擬似ランダムになるように選択できるのであれば、如何なる順序で行ってもよい。また、抽出するマクロブロックの数も５個に限定されず、実装するシステムで好適であれば、任意の数でもよく、また、可変であってもよい。このようなシャッフリングのパターンをテーブルとしてメモリ（図示してない）に記憶しておいて、シャッフル部３がこのメモリに記憶したテーブルを参照しながらシャッフリングを実行するようにしてもよい。符号化部４とレートコントロール部５はそれぞれ、このようにして形成されたセグメント毎に符号化処理及びレートコントロールを実行する。
【００３６】
図２において、網掛けしたマクロブロックは符号化済みマクロブロックを表す。薄い網掛けは、ＤＣ予測の予測元マクロブロックがまだ符号化されていない符号化済みマクロブロックを表し、濃い網掛けは、ＤＣ予測の予測元マクロブロックが既に符号化された符号化済みマクロブロックを表す。以後、ＤＣ予測の予測元マクロブロックがまだ符号化されていない符号化済みマクロブロックを、「オープン・マクロブロック」と呼び、ＤＣ予測の予測元のブロックがすでに符号化された符号化済みマクロブロックを、「クローズド・マクロブロック」と呼ぶ。スライス・レイヤは図２において水平方向のマクロブロックの配列によって構成される。左端のマクロブロックはスライスの先頭に位置するマクロブロックであるため、常にクローズド・マクロブロックとして処理される。ＭＰＥＧ−２では、各行のマクロブロックの配列がそれぞれスライスを構成しているため、ＤＣ予測は、スーパーブロックを跨いでもよい。シャッフル部３はマクロブロックを並び替える（シャッフルする）際に、スライス・レイヤにおけるスキャン順を含むマクロブロックの位置情報を生成する。
【００３７】
図２のようにシャッフリングを行うと、符号化を進めるにつれ、符号化済みマクロブロックの個数が所定の数、例えば、全マクロブロックの個数の略半数に至るまでは、オープン・マクロブロックの個数は増加していく傾向にあるが、符号化済みマクロブロックの個数が当該所定の数を超えてさらに増加すると、オープン・マクロブロックの個数は減少していく傾向にある。画像データのサイズやスーパーブロックへの分割方法などに応じて、セグメントによってマクロブロックの個数が異なってもよい。このとき、セグメントの内部のマクロブロックあたりのレートが同一になるように、一つのセグメントに割り当てるレートを変更してもよい。本実施の形態では、説明を簡潔にするため、すべてのセグメントのマクロブロックの個数を同一とする。
＜２．マクロブロックの符号化方法＞
【００３８】
以下、符号化部４が実行する、ＭＰＥＧ−２に準拠したＩフレームのマクロブロックの符号化方法を説明する。一つのマクロブロックを構成するＤＣＴブロックの個数はクロマサブサンプリングによって異なるが、ここでは、説明を容易にするためクロマサブサンプリングを４：２：２であるとする。クロマサブサンプリングが４：２：２とき、マクロブロックには輝度（Ｙ）ブロック４個と、２種類の色差（Ｃｂ，Ｃｒ）ブロック、それぞれＣｂとＣｒのブロックに対して２個ずつからなる。それぞれのブロックはＤＣＴ変換される。ＤＣＴブロックのＤＣＴ成分は、１個のＤＣ成分と残りのＡＣ成分に分けられ、それぞれに異なる符号化が行われる。
【００３９】
ＡＣ成分は量子化マトリクスによって周波数毎に異なる精度で量子化される。その後、マトリクスで量子化されたＡＣ成分は、すべてのＡＣ成分に共通の量子化スケールによってさらに量子化される。量子化スケールによって量子化されたＡＣ成分は、ジグザグスキャンされ、エントロピー符号化される。符号化部４はＡＣ成分に対する量子化スケールを変化させることでレートコントロールを行う。
【００４０】
ＤＣ成分は、１１または１０，９，８ビットに量子化された後、Ｙ，Ｃｂ，Ｃｒ毎に予測符号化される。すなわち、あるブロックのＤＣ成分は次のブロックのＤＣ成分の予測値として使われ、その差分が符号化される。図４に、ＤＣ成分に含まれる輝度信号を表すＹ，色差信号を表すＣｂ，Ｃｒを示す。図４に示すように、４個のＹブロックはスキャン順にＹ０，Ｙ１，Ｙ２，Ｙ３と呼ばれ、この順にＤＣ予測される。２個のＣｂブロックもスキャン順にＣｂ０，Ｃｂ１とよばれこの順にＤＣ予測される。２個のＣｒブロックも同様にスキャン順にＣｒ０，Ｃｒ１とよばれこの順にＤＣ予測される。マクロブロック内の最初のブロックＹ０，Ｃｂ０，Ｃｒ０は、それぞれ、そのマクロブロック（以後、「被予測マクロブロック」と呼ぶ。）のすぐ左に隣接するマクロブロック（以後、「予測元マクロブロック」と呼ぶ。）のＹ３，Ｃｂ１，Ｃｒ１から予測される。以降の説明では、マクロブロック内でのイントラマクロブロックＤＣ予測を、「イントラＤＣ予測」、マクロブロック間でのインターマクロブロックＤＣ予測を、「インターＤＣ予測」と呼ぶ。
【００４１】
インターＤＣ予測は同じスライスに含まれるマクロブロック間でのみ行われる。以下、説明を容易にするため、最大のスライスを仮定する。すなわち、同じ行のマクロブロックは同一のスライスに属すると仮定する。スライスの先頭、すなわち列の左端のマクロブロックには、予測元のブロックが存在しないので、ＤＣはゼロから予測される。
＜３．具体的なバジェットの割り当て方法＞
【００４２】
以下、レートコントロール部５がレートコントロールを実行する際に考慮される、各セグメントへのレートのバジェットの割り当てとその修正方法について、簡易化したＭＰＥＧ−２準拠Ｉフレーム符号化の場合を例に説明する。本実施の形態のバジェットの割り当て方法は次の特徴を前提とする。１．レートコントロールを保証できる。具体的には、画像データの複雑さによらず必ず目的とする符号長以下のストリームを出力するので、レートコントロールが失敗することはない。２．マクロブロックに対してフェアにバジェットを割り当てられる。平均すると各マクロブロックに対する割り当てレート、すなわちバジェットを、マクロブロックがオープンであるかクローズドであるかに関わらず、セグメント間で略同一にできる。なお、「レートのバジェット」または「バジェット」とは、「割り当て可能な最大レート」または単に「割り当てレート」を意味する。
【００４３】
本実施の形態では、説明を容易にするため、ＭＰＥＧ−２準拠Ｉフレームを以下のように簡略化した圧縮方法を用いる。（１）ＭＰＥＧ−２のヘッダ（例えば、シーケンス・ヘッダ、ピクチャ・ヘッダ、スライス・ヘッダ、マクロブロック・ヘッダ）などによるオーバーヘッドはないものとして考える。最終的に符号化されたストリームはマクロブロックの符号のみからなり、マクロブロックの符号はＤＣ（イントラ、インター）とＡＣ成分の符号のみからなるものと仮定する。（２）インターＤＣ予測以外の依存関係（例えば、量子化スケール、符号のビット・アラインメント、スライスの先頭マクロブロックのオーバーヘッド）は考えない。（１）の簡略化は、画像データ全体のバジェットから固定長のオーバーヘッドをあらかじめ差し引いておくことによって実現する。（２）の簡略化については後で検討し、本方法が容易にＭＰＥＧ２準拠Ｉフレームに拡張できることを示す。
【００４４】
最終的なストリームのサイズ、すなわち、画像データ全体のレートのバジェットをＢｐｉｃｔｕｒｅとすると、セグメントのレートのバジェットＢｓｅｇｍｅｎｔは、以下の式に従って算出できる。
【数１】
0005335912.tif 000002
ただし、ＮＭＢｓ  ｉｎ  ｐｉｃｔｕｒｅとＮＭＢｓ  ｉｎ  ｓｅｇｍｅｎｔはそれぞれ、画像データ全体に含まれるマクロブロックの個数とセグメントに含まれるマクロブロックの個数を表す。上式において、
【数２】
0005335912.tif 000003
が整数でない場合は、レートコントロールを保証するため、切り捨てた値がセグメントのバジェットとなる。切り捨ての場合、余りのバジェットを無駄にしないように、余りのバジェットをいくつかのセグメントに割り当てるようにしてもよい。
【００４５】
あるセグメントをレートコントロール部５がレートコントロールするとは、符号化部４が実行する量子化処理に用いる量子化パラメータを変化させることによって、そのセグメントの実際のレートＳｓｅｇｍｅｎｔ、または以下で説明するように修正レートＳ’ｓｅｇｍｅｎｔをそのセグメントに割り当てられたバジェットＢｓｅｇｍｅｎｔ、または、以下で説明するように修正バジェットＢ’ｓｅｇｍｅｎｔ以下になるように制御することを意味する。あるセグメントを符号化した後に、余りのレート（Ｂ’ｓｅｇｍｅｎｔ−Ｓ’ｓｅｇｍｅｎｔ）を、それ以降のセグメントに割り当てるようにしてもよい。
【００４６】
セグメントの符号化を進める毎に、オープンであるマクロブロックの個数は変化する。所与の時点のオープン・マクロブロックの個数をＮｏｐｅｎＭＢｓで表すとすると、符号化を始める前はＮｏｐｅｎＭＢｓ＝０である。所与のセグメントを符号化する毎に、ＮｏｐｅｎＭＢｓは増減したり、あるいは変化しなかったりする。画像データのすべてのマクロブロックを符号化するとＮｏｐｅｎＭＢｓ＝０に戻る。
【００４７】
所与のセグメントを符号化した後のオープン・マクロブロックの個数の変化ΔＮｏｐｅｎＭＢｓを以下の式で定義する。
【数３】
0005335912.tif 000004
ただし、ＮｏｐｅｎＭＢｓとＮ’ｏｐｅｎＭＢｓは、それぞれ、そのセグメントを符号化する前と後のオープン・マクロブロックの個数を表す。セグメントに属するマクロブロックの個数はＮＭＢｓ  ｉｎ  ｓｅｇｍｅｎｔであるので、
【数４】
0005335912.tif 000005
となる。そのセグメントに割り当てられる、修正バジェットＢ’ｓｅｇｍｅｎｔは、ΔＮｏｐｅｎＭＢｓを使って、以下の式で定義される。
【数５】
0005335912.tif 000006
ここで
0005335912.tif 000007
はオープン・マクロブロックのオーバーヘッドのレートの平均値を表す。所与のマクロブロックについて、オープン・マクロブロックのオーバーヘッドのレートＯｏｐｅｎＭＢは、インターＤＣ予測の最大レート
0005335912.tif 000008
と実際のインターＤＣ予測のレートＳｉｎｔｅｒＤＣＰｒｅｄ．の差として以下の式で定義する。
【数６】
0005335912.tif 000009
0005335912.tif 000010
は、インターＤＣ予測のレートＳｉｎｔｅｒＤＣＰｒｅｄ．の平均レート
0005335912.tif 000011
を用いて、以下のように表せる。
【数７】
0005335912.tif 000012
平均レートは、代表的な画像データについて平均値を計算するなどして静的に求めてもよいし、あるいはエンコード中の画像データから動的に求めてもよい。以下では、説明を容易にするため、平均値は静的な値であると仮定する。
【００４８】
すべてのセグメントについて、ΔＮｏｐｅｎＭＢｓを足し合わせると０になることから、すべてのセグメントについて修正後のバジェットＢ’ｓｅｇｍｅｎｔを足し合わせたものは、すべてのセグメントについて修正前のバジェットＢｓｅｇｍｅｎｔを足し合わせたものに等しい。つまり、セグメントのバジェットＢｓｅｇｍｅｎｔをＢ’ｓｅｇｍｅｎｔに修正しても、画像データ全体のバジェットは変化しない。
【００４９】
画像データ全体のレートコントロールを保証するには、セグメント単位のレートコントロールが保証できさえすれればよい。セグメント単位のレートコントロールを保証するためには、最悪のケースにおいても、セグメントのレートがＢ’ｓｅｇｍｅｎｔ以下になるようにレートコントロール部５がレートコントロールできなければならない。Ｂ’ｓｅｇｍｅｎｔが最小値
0005335912.tif 000013
になるのは、ΔＮｏｐｅｎＭＢｓが最小値（−ＮＭＢｓ  ｉｎ  ｓｅｇｍｅｎｔ）になるときなので、以下のように表せる。
【数８】
0005335912.tif 000014
セグメントを符号化するのに必要な最小のレートは、例えば、セグメントに属するマクロブロックのすべてのＡＣ成分をゼロにしたときのセグメントの修正されたレート
0005335912.tif 000015
の最大値
0005335912.tif 000016
として求められる。
0005335912.tif 000017
は符号化方法が、例えば、ＭＰＥＧ−２準拠Ｉフレームの場合などと与えられれば、静的に求めることができる。以上の制約を用いると、セグメントのレートコントロールを保証する条件は、以下のように表せる。
【数９】
0005335912.tif 000018
0005335912.tif 000019
は、マクロブロック内のイントラＤＣ予測残差を０に設定する（つまりマクロブロック内で同一のＤＣを使う）などしてさらに小さくすることもできる。以下の説明では、レートコントロールを保証するために、この条件が満たされていると仮定する。
【００５０】
あるセグメントの修正されたレートＳ’ｓｅｇｍｅｎｔは、そのセグメントに属するすべてのクローズド・マクロブロックのレートＳＭＢを合計したものと、そのセグメントに属するすべてのオープン・マクロブロックの修正されたレートＳ’ＭＢを合計したものと、の合計から、そのセグメントを符号化することで新たにクローズドとなったすべてのマクロブロックのオープン・マクロブロック・オーバーヘッドＯｏｐｅｎ  ＭＢを合計したものを引いたものと定義する。したがって、以下の数式で表せる。
【数１０】
0005335912.tif 000020
ただし、オープン・マクロブロックのオーバーヘッドＯｏｐｅｎ  ＭＢは、上で定義したように、インターＤＣ予測の最大レート
0005335912.tif 000021
と実際のレートＳｉｎｔｅｒＤＣＰｒｅｄの差である（再掲）：
【数１１】
0005335912.tif 000022
【００５１】
クローズド・マクロブロックのレートＳＭＢは、インターＤＣ予測のレートＳｉｎｔｅｒＤＣＰｒｅｄと、イントラＤＣ予測のレートＳｉｎｔｒａＤＣＰｒｅｄと、ＡＣ成分のレートＳＡＣを足し合わせたものであるため、以下の式で表される。
【数１２】
0005335912.tif 000023
一方で、オープン・マクロブロックの修正されたレートＳ’ＭＢは、インターＤＣ予測の最大レート
0005335912.tif 000024
と、イントラＤＣ予測のレートＳｉｎｔｒａＤＣＰｒｅｄ．と、ＡＣ成分のレートＳＡＣを足し合わせたものであるため、以下の式で表される。
【数１３】
0005335912.tif 000025
【００５２】
オープン・マクロブロックの修正されたレートは、将来そのマクロブロックがクローズドとなったときに明らかになる、実際のインターＤＣ予測のレートＳｉｎｔｅｒＤＣＰｒｅｄ．を使うと、以下のように表される。
【数１４】
0005335912.tif 000026
よって、このセグメントには、ΔＮｏｐｅｎＭＢｓ個のオープン・マクロブロック・オーバーヘッドＯｏｐｅｎＭＢが足されていることがわかる。ところで、これらのオープン・マクロブロック・オーバーヘッドは、平均的には、
0005335912.tif 000027
によって近似できる。このため、そのセグメントのバジェットに
0005335912.tif 000028
を加えて修正することで、このオーバーヘッドを打ち消すことができ、セグメント間のバジェットの割り当てをフェアにできる。
【００５３】
オープン・マクロブロックのレートとして、修正されたレートＳ’ＭＢの代わりに、平均的な推定レートを用い、セグメントのバジェットを修正しないようにしても、セグメント間のバジェットの割り当てをフェアにできる。しかし、このようにすると、レートコントロールを保証することができない。なぜなら、インターＤＣ予測のレートが後に明らかになったときに、そのレートが平均レートよりも大きくなる可能性があり、そのとき、その差が残されたバジェットよりも大きくなってしまう可能性があるからである。
【００５４】
最大、すなわち、最も粗い量子化パラメータを使っても、セグメントの修正されたレートＳ’ｓｅｇｍｅｎｔが、そのセグメントの修正されたバジェットＢ’ｓｅｇｍｅｎｔよりも大きくなる場合には、例えば、次のようにしてさらにレートを小さくし、レートコントロールを保証する。すべてのＡＣ成分をゼロにすれば、そのときの修正されたレートは
0005335912.tif 000029
となり、
Ｂ’ｓｅｇｍｅｎｔよりも確実に小さくなる。なぜなら、以下の関係が成り立つからである。
【数１５】
0005335912.tif 000030
＜４．修正したバジェットを用いたレートコントロール＞
【００５５】
レートコントロール部５が実行する、このようにして修正したバジェットを用いたレートコントロールについて、図５にフローチャートを示し、説明する。
【００５６】
まず、ステップＳ１０１にて、マクロブロックの個数ＮｏｐｅｎＭＢｓを０に設定する。ステップＳ１０２で、次のセグメントが存在するか否か判定する。次のセグメントがないと判定された場合はステップＳ１０３に進み、処理を終了する。一方で、次のセグメントが存在すると判定された場合、処理はステップＳ１０４に進む。ステップＳ１０４では、次のセグメントに属するマクロブロックを符号化する。マクロブロッを符号化する前後のオープン・マクロブロックの個数をそれぞれ、ＮｏｐｅｎＭＢｓ、Ｎ’ｏｐｅｎＭＢｓとする。ステップＳ１０５では、このセグメントに割り当てるバジェットを以下の数式に従って修正する。
【数１６】
0005335912.tif 000031
ここで、
【数１７】
0005335912.tif 000032
【００５７】
ステップＳ１０６で、このセグメントの修正後のレートＳ’ｓｅｇｍｅｎｔが、
【数１８】
0005335912.tif 000033
となるようにレートコントロールする。ステップＳ１０７で、オープン・マクロブロックの個数ＮｏｐｅｎＭＢｓをＮ’ｏｐｅｎＭＢｓで置き換える。次にステップＳ１０２に戻り、次のセグメントが存在する限り同様の処理を繰り返す。
【００５８】
このように本実施の形態の画像符号化装置１０は、符号化を行う際に、予測符号が未知のオープン・マクロブロックに対して、一旦最大のレートを割り当てた後、予測が明らかになる毎にレートを適宜修正することができるので、レート制御が失敗することを回避でき、割り当てレートを適宜修正するので、フェアで安定して予測符号のレートを割り当てることができる。また、例えば、ＤＣ予測に適用して、ＤＣ予測のレートにフェアに安定して予測レートを割り当てることにより、例えば、ＤＣ予測で犠牲になりがちなＡＣ成分に割り当てるレートも安定して確保することができ、２次元的な細かい変化を鮮明に表現することなども可能になる。また、本発明はＤＣ予測のみならず、例えば、ＡＣ予測など、様々な予測に応用可能である。
【００５９】
空間周波数変換をＤＣＴ変換によって実行し、レートコントロール部は、符号化部が複数個のマクロブロックを量子化する際に用いる量子化スケールを修正割り当てレートに基づいて決定するようにしてもよい。あるいは、本発明の代替の態様として、画像データ全体のマクロブロックのＤＣ成分だけを先に求め、ＤＣ予測にかかるレートをあらかじめ計算しておき、その後、ＡＣ成分についてマクロブロック・シャッフリングによってレートコントロールすることも想到可能である。
【００６０】
さらに、マクロブロック・シャッフリングを実行することによってマクロブロックを疑似ランダムに抽出し、セグメントという少ない数のマクロブロックを単位として符号化を制御するので、全体の画質を均一に維持ながら、高速なレートコントロールを可能とし、必要な回路規模を小さくできる。
【００６１】
以上説明したように、本実施の形態の画像符号化装置１０は、スライス構造を変更することなく、オープン・マクロブロックのレートに最大のレートを見積もり、順次修正していくレート修正を行い、マクロブロック・シャッフリングによって全体の画質を均一に維持するので、高速なレートコントロールを保障しつつ、必要な回路規模を小型化できる。
＜５．インターＤＣ予測以外の依存関係＞
【００６２】
レートコントロール部５がレートコントロールを実行する際に考慮する、インターＤＣ予測以外の依存関係、例えば、量子化スケール、符号のビット・アラインメント、スライス先頭のマクロブロックのオーバーヘッドについて以下、検討する。
（１）量子化スケール
【００６３】
あるマクロブロックの量子化スケールは、そのマクロブロックの予測元マクロブロックの量子化スケールと同一であれば省略できる。具体的には、マクロブロックのヘッダのフラグによって量子化スケールに変化があるかどうか通知してもよい。予測元マクロブロックの量子化スケールが不明であるオープン・マクロブロックでは、修正レートを、可能な最大レートを用いて算出する必要がある。インターＤＣ予測に対する修正と同様の方法で、量子化スケールについても割り当てレート、すなわちバジェットを修正することによって、セグメント間のバジェットの割り当てをフェアにできる。
（２）符号のビット・アラインメント
【００６４】
上述の説明では、マクロブロックのＤＣ成分とＡＣ成分のレートをバイト単位と仮定して説明したが、実際はビット単位である。さらに、同一のスライスに属するマクロブロックの符号は、マクロブロック間でバイト・アラインされない。ここでバイト・アラインとは、次の符号がバイトの境界から始まるように、ビットを詰めること、すなわちビット・スタッフィングすることを意味する。あるスライスでビット・スタッフィングのために追加するレートは、そのスライスに属するすべてのマクロブロックのビット単位のレートが明らかにならなければ、求められない。マクロブロックのビット単位のレートｓＭＢをバイト単位のレートＳＭＢに擬似的に変換するには、次の式に従って処理する。
【数１９】
0005335912.tif 000034
ただし、ｓｓｌｉｃｅはスライスのビット単位のレートで、そのスライスに属するこれまでに符号化したマクロブロックのビット単位のレートを合計したものを表す。同様にして、マクロブロックのＤＣ成分やＡＣ成分のレートも擬似的にバイト単位で計算することができる。この方法では、常にレートをバイトに切り上げて評価するので、保守的にレートを見積もることができる。このためレートコントロールを保証できる。また、この方法では、マクロブロックのバイト単位の符号長が、本来のレートの単位であるビットより、小さくまたは大きく見積もられる可能性がある。しかし、セグメントには複数のマクロブロックが集められているので、平均的にはこれらの誤差は打ち消される。
【００６５】
（３）スライス先頭マクロブロックのオーバーヘッド
スライス先頭のマクロブロックでは、予測元マクロブロックがなく、予測ができないので、ＤＣ成分は常にゼロから予測される。このため、スライス先頭のマクロブロックは、スライス先頭でないマクロブロックに比べて、平均レートが大きくなる傾向にある。このオーバーヘッドを打ち消すため、スライス先頭のマクロブロックに割り当てるバジェットを同じスライスの続くマクロブロックの各々に割り当てるバジェットより大きくなるように、マクロブロック間のバジェットの割り当てを変化させてもよい。
【００６６】
以上説明したように、本実施の形態の画像符号化装置はセグメントという少ない数のマクロブロックを単位として符号化部を制御するので、レートコントロールは高速となり、必要な回路規模を小さくできる。また、マクロブロックをシャッフリングによって画面上で疑似ランダムな位置から抽出するので、画像全体の画質が均一となり、画像のクオリティを向上することができる。例えば、エントロピーの変動の大きい画像データを符号化する場合であっても、出力されるビットストリームの大きさを均一にすることができるため、バッファの制約を破るおそれがない。このため、複数枚のフレームをマルチスレッドを利用して同時にエンコードし、その後に一つのストリームにまとめることが可能である。また、同じ理由から、エンコード後にカットやインサートなどの編集が可能である。
【００６７】
＜６．符号化ストリームの並べ替えのための中間バッファ＞
最終的なストリームサイズに比例するサイズのバッファ、すなわち、中間バッファ、に中間結果を保存し、符号を並べ替えて最終的なストリームを出力する方法を説明する。この方法は、マクロブロック毎にそのマクロブロックの符号を保存するバッファを用意する方法と比較して、必要なバッファを小さくできる利点がある。この構成の例について、次の実施の形態で説明する。
（第２の実施の形態）
【００６８】
本発明の第２の実施の形態の画像符号化装置について、図６を参照して説明する。図６に示すように、本実施の形態の画像符号化装置２０は、符号化部４と並び替え部６の間に中間ストリームバッファ８を備えた点以外は、上述の第１の実施の形態の画像符号化装置と略同様である。同様の構成には同様の符号を付して説明を省略する。
【００６９】
中間ストリームバッファ８の構造例を図７に示す。符号化されたマクロブロックのデータは、スキャン順にアクセス可能な、パックされたマクロブロックとして保存される。パックされたマクロブロックには、量子化スケールや符号化されていないＤＣ成分などに加えて、可変長にパックされたＡＣ符号へのポインタが含まれる。図７において、パックされたマクロブロックを網掛けした正方形で、ポインタを曲がった矢印で示す。
【００７０】
パックされたマクロブロックは、ＤＣ予測や符号の並び替えのために、スキャン順にアクセス可能なテーブル配列に従って配置される。中間ストリームバッファ８にはシャッフルされた順序で符号が保存される。パックされたＡＣ符号は、マクロブロック毎に長さが異なるため、メモリブロックが中間ストリームバッファ８から動的に割り当てられる。ＭＰＥＧ−２のストリームではＤＣとＡＣの符号をＤＣＴブロック毎に交互に配置することが規定されており、最終的なストリームを生成する際に、ＤＣＴブロック毎に符号にアクセスする必要がある。このため、ＡＣ符号長とＡＣ符号をＤＣＴブロック毎に保存するようになっている。したがって、パックされたＡＣ符号は、そのマクロブロックに含まれるＤＣＴブロックそれぞれのＡＣ符号のビット長（ａｃ＿ｎｂｉｔｓ［０，  …，  ７］）と実際のＡＣ符号（ａｃ＿ｃｏｄｅｓ［０，  …，  ７］）を含む。
【００７１】
ＡＣ符号はビット単位であるため、パックされたＡＣ符号の最後に、バイトまたはワード単位のアラインメントのためのスタッフィングが挿入される。中間ストリームバッファのバイト単位の大きさＢｉｎｔｅｒｍｅｄｉａｔｅ．は、例えば、以下の条件を満たせば十分である。
【数２０】
0005335912.tif 000035
ただし、Ｂｐｉｃｔｕｒｅ画像データ全体のバジェットを表す。ＮＭＢｓは画像データに含まれるマクロブロックの個数を表す。Ｎｂｌｏｃｋｓ  ｉｎ  ＭＢは一つのマクロブロックに含まれるＤＣＴブロックの個数を表し、クロマサブサンプリングが４：２：２のときＮｂｌｏｃｋｓ  ｉｎ  ＭＢ＝８である。右辺第２項はａｃ＿ｎｂｉｔｓ［…］とスタッフィングによるオーバーヘッドを表す。ここでは、ａｃ＿ｎｂｉｔｓ［ｉ］は１６ビット、すなわち、２バイトであると仮定して、２を加算している。また、スタッフィングはワード境界へのスタッフィングであると仮定している。Ｂｉｎｔｅｒｍｅｄｉａｔｅは、中間バッファに保存されないその他のヘッダなどのオーバーヘッドのサイズを差し引くなどして、さらに小さくできる。
【００７２】
マクロブロック毎に当該マクロブロックの符号を保存する従来のバッファでは、マクロブロック毎のバッファにマクロブロックの最大レートが割り当てられているが、本発明の画像符号化装置では、必要なバッファの容量は、画像データの全体の割り当てレートと、固定長オーバーヘッドをマクロブロックの数で乗算して得た値との合計に削減することができる。
【００７３】
以上説明したように、本実施の形態の画像符号化装置は、第１の実施の形態の画像符号化装置の特徴に加えて、マクロブロック毎に符号を保存するバッファを用意する方法と比較して、必要なバッファの容量を小さくできる。
【００７４】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されるものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したものに過ぎず、本発明による効果は、本発明の実施例に記載されたものに限定されるものではない。
【００７５】
例えば、上述の実施の形態では、ＭＰＥＧ−２準拠の符号化方式について説明したが、本発明はこれに限定されない。本発明は、類似のマクロブロックからなる構成であれば、ＪＰＥＧなどを含む、ＭＰＥＧ−２のＤＣ予測などの予測を用いる符号化方式に幅広く応用可能であり、さらに、フレーム内（イントラ）符号化のみならず、例えば、ＭＰＥＧ−２準拠の符号化方式などのフレーム間（インターフレーム）符号化方式に準拠した符号化処理であっても、イントラスライスの処理などのフレーム内（イントラフレーム）符号化処理の部分などに応用可能である。
【符号の説明】
【００７６】
１      入力部
２      ブロック化処理部
３      シャッフル部
４      符号化部
５      レートコントロール部
６      並べ替え部
７      出力部
８      中間ストリームバッファ
１０    第１の実施の形態の画像符号化装置
２０    第２の実施の形態の画像符号化装置
１０１  入力部
１０２  ブロック化処理部
１０３  符号化部
１０５  レートコントロール部
１０６  出力部
１００  従来の画像符号化装置
【図１】
0005335912.tif 000036
【図２】
0005335912.tif 000037
【図３】
0005335912.tif 000038
【図４】
0005335912.tif 000039
【図５】
0005335912.tif 000040
【図６】
0005335912.tif 000041
【図７】
0005335912.tif 000042
【図８】
0005335912.tif 000043