(57)【要約】【課題】インターレース映像において予測イメージをエンコードし復号する技術およびツールを提供すること。【解決手段】たとえば、映像エンコーダまたはデコーダが、インターレースＰフィールドの一部分（たとえば、ブロックまたはマクロブロック）に対する動きベクトル用の動きベクトル予測子を演算し、この演算は、その部分に対する、同極性または反極性動きベクトル予測子の使用を選択することを含む。エンコーダ／デコーダは、動きベクトル用に演算された動きベクトル予測子に少なくとも部分的に基づいて、動きベクトルを処理する。この処理は、エンコード中に動きベクトルと動きベクトル予測子との間の動きベクトルの差分を演算すること、および復号中に動きベクトルの差分および動きベクトル予測子から動きベクトルを再構成することを含むことができる。選択することは、その部分の周囲の隣接部分に対する反極性動きベクトルのカウント、および／または隣接部分に対する同極性動きベクトルのカウントに少なくとも部分的に基づくことができる。【選択図】図９
2008278547.tif 000002
【特許請求の範囲】
【請求項１】
映像を符号化する方法において、
現在のインターレースＰフィールドの現在の部分の動きベクトル用の動きベクトル予測子を計算するステップであって、
前記現在の部分の第１の隣接部分の第１の候補動きベクトルを識別するステップであって、前記第１の候補動きベクトルは、第１の極性を有する第１の参照フィールドを参照するステップと、
前記現在の部分の第２の隣接部分の第２の候補動きベクトルを識別するステップであって、前記第２の候補動きベクトルは、第１の極性とは異なる第２の極性を有する第２の参照フィールドを参照するステップと、
前記第２の候補動きベクトルをスケーリングするステップと、
少なくとも前記第１の候補動きベクトルと前記スケーリングされた第２の候補動きベクトルを使用して前記動きベクトル予測子を決定するステップとを含むステップと、
前記動きベクトルと前記動きベクトル予測子との間の動きベクトルの差分を計算するステップと、
ビットストリームにおいて前記動きベクトルの差分を示す情報を信号送信するステップとを備えることを特徴とする方法。
【請求項２】
映像を復号する方法において、
ビットストリームから、現在のインターレースＰフィールドの現在の部分の動きベクトル用の動きベクトルの差分を示す情報を受信するステップと、
前記動きベクトル用の動きベクトル予測子を計算するステップであって、
前記現在の部分の第１の隣接部分の第１の候補動きベクトルを識別するステップであって、前記第１の候補動きベクトルは、第１の極性を有する第１の参照フィールドを参照するステップと、
前記現在の部分の第２の隣接部分の第２の候補動きベクトルを識別するステップであって、前記第２の候補動きベクトルは、第１の極性とは異なる第２の極性を有する第２の参照フィールドを参照するステップと、
前記第２の候補動きベクトルをスケーリングするステップと、
少なくとも前記第１の候補動きベクトルと前記スケーリングされた第２の候補動きベクトルを使用して前記動きベクトル予測子を決定するステップとを含むステップと、
動きベクトルの差分および前記動きベクトル予測子から、前記動きベクトルを再構成するステップとを備えることを特徴とする方法。
【請求項３】
前記第１の極性は、前記現在のインターレースＰフィールドと同じ極性であり、前記第２の極性は、前記現在のインターレースＰフィールドとは反対の極性であり、前記スケーリングは、反極性から同極性にスケーリングするように適合されることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記第１の極性は、前記現在のインターレースＰフィールドとは反対の極性であり、前記第２の極性は、前記現在のインターレースＰフィールドと同じ極性であり、前記スケーリングは、同極性から反極性にスケーリングするように適合されることを特徴とする請求項１または２に記載の方法。
【請求項５】
前記スケーリングは、参照フレーム距離に少なくとも部分的に基づくことを特徴とする請求項１または２に記載の方法。
【請求項６】
前記参照フレーム距離は、前記現在のインターレースＰフィールドを含む現在のインターレースフレームと、前記第１の参照フィールドおよび前記第２の参照フィールドのうち、前記現在のインターレースＰフィールドから時間的に先行する方を含む先行するインターレースフレームとの間の距離を示すことを特徴とする請求項５に記載の方法。
【請求項７】
前記スケーリングは、スケーリングする複数の値のテーブルにおいて、スケーリングする値を調べることを含むことを特徴とする請求項１または２に記載の方法。
【請求項８】
前記スケーリングは、２つのテーブルのうちの１つにおいてスケーリングする値を調べるステップであって、前記現在のインターレースＰフィールドが現在のインターレースフレームにおける第１のフィールドである場合は前記２つのテーブルのうちの第１のテーブルを使用して、前記現在のインターレースＰフィールドが前記現在のインターレースフレームにおける第２のフィールドである場合には、前記２つのテーブルのうちの第２のテーブルを使用するステップを含むことを特徴とする請求項１または２に記載の方法。
【請求項９】
前記部分は、マクロブロックであることを特徴とする請求項１または２に記載の方法。
【請求項１０】
前記部分は、マクロブロックのブロックであることを特徴とする請求項１または２に記載の方法。
【請求項１１】
前記動きベクトル予測子は、前記第１の参照フィールドを参照する第１の極性動きベクトル予測子であり、前記方法は、
前記第２の参照フィールドを参照する第２の極性動きベクトル予測子を計算するステップと、
前記第１の極性動きベクトル予測子を使用するか、または前記第２の極性動きベクトル予測子を使用するかを選択するステップとをさらに含むことを特徴とする請求項１または２に記載の方法。
【請求項１２】
プロセッサと、前記プロセッサに請求項１に記載の方法を実行させるコンピュータ実行可能命令を格納した記憶媒体とを含むことを特徴とするエンコーダ。
【請求項１３】
プロセッサと、前記プロセッサに請求項２に記載の方法を実行させるコンピュータ実行可能命令を格納した記憶媒体とを含むことを特徴とするデコーダ。
【請求項１４】
プロセッサに請求項１または２に記載の方法を実行させるコンピュータ実行可能命令を格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
インターレース映像の符号化および復号化のための技術およびツールを開示する。たとえば、映像エンコーダ／デコーダが、インターレース映像フレーム中のフィールド用の動きベクトル予測子を計算する。
【背景技術】
【０００２】
本出願は、２００３年９月７日に出願した米国特許仮出願第６０／５０１，０８１号「Video Encoding and Decoding Tools and Techniques」の利益を主張する。
【０００３】
デジタル映像は、大量の記憶容量および伝送容量を消費する。一般的な未加工デジタル映像シーケンスは、１秒あたり１５個または３０個のピクチャを含む。各ピクチャは、数万または数十万ピクセル（ペルとも呼ばれる）を含むことができる。各ピクセルは、ピクチャの小さい要素を表す。未加工の形では、コンピュータは通常、１ピクセルを２４ビット以上で表す。したがって、一般的な未加工のデジタル映像シーケンスの１秒あたりのビット数、すなわちビットレートは、５００万ビット／秒以上になり得る。
【０００４】
多くのコンピュータおよびコンピュータネットワークでは、未加工のデジタル映像を処理するための資源が不足している。こうした理由により、技術者は、圧縮（符号化（コーディング）またはエンコーディングとも呼ばれる）を用いてデジタル映像のビットレートを削減する。圧縮において損失をなくすことができる場合は、映像の品質は低下しないが、ビットレートの減少は、映像の複雑さによって制限を受ける。または、圧縮において損失があり得る場合は、映像の品質は低下するが、ビットレートの減少はより目ざましい。圧縮解除は、圧縮を逆にしたものである。
【０００５】
概して、映像圧縮技術は、「イントラ（ｉｎｔｒａ）」圧縮、および「インター（ｉｎｔｅｒ）」すなわち予測圧縮を含む。イントラ圧縮技術は、一般にＩピクチャまたはキーピクチャと呼ばれる個々のピクチャを圧縮する。インター圧縮技術は、一般に予測ピクチャ、Ｐピクチャ、またはＢピクチャと呼ばれる、参照ピクチャおよび／または後続ピクチャを参照してピクチャを圧縮する。
【０００６】
Ｉ．Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８およびバージョン９におけるインター圧縮
マイクロソフトコーポレーションのＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８［「ＷＭＶ８」］は、映像エンコーダおよび映像デコーダを含む。ＷＭＶ８エンコーダは、イントラ圧縮およびインター圧縮を使用し、ＷＭＶ８デコーダは、イントラ圧縮解除およびインター圧縮解除を使用する。Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン９［「ＷＭＶ９」］の初期バージョンでは、多くの動作に対して同様のアーキテクチャを使用する。
【０００７】
ＷＭＶ８エンコーダにおけるインター圧縮は、ブロックベースでの動き補償予測符号化を使用し、この予測符号化の後には、見逃しエラーの変換符号化が続く。図１および２は、ＷＭＶ８エンコーダにおける、予測フレームに対するブロックベースのインター圧縮を示す。具体的には、図１は、予測フレーム１１０に対する動き推定を示し、図２は、予測フレームの、動きを補償したブロックに対する予測残余（ｒｅｓｉｄｕａｌ）の圧縮を示す。
【０００８】
たとえば、図１では、ＷＭＶ８エンコーダは、予測フレーム１１０中のマクロブロック１１５用の動きベクトルを演算する。動きベクトルを演算するために、エンコーダは、参照フレーム１３０のサーチエリア１３５内をサーチする。サーチエリア１３５内部で、エンコーダは、完全に一致する候補マクロブロックを見つけるために、予測フレーム１１０にあるマクロブロック１１５を、様々な候補マクロブロックと比較する。エンコーダは、一致するマクロブロック用の（エントロピー符号化された）動きベクトルを指定する情報を出力する。
【０００９】
動きベクトルの値はしばしば、周囲の空間にある動きベクトルの値と相互に関連するので、動きベクトル情報を伝達するのに用いられるデータの圧縮は、隣接マクロブロックから動きベクトル予測子を選択すること、および予測子を用いて、現在のマクロブロック用の動きベクトルを予測することによって達成することができる。エンコーダは、動きベクトルと予測子との間の差分をエンコードすることができる。予測子に差分を加えることによって動きベクトルを再構成した後、デコーダは、参照フレーム１３０からの情報を使ってマクロブロック１１５に対する予測マクロブロックを演算するために動きベクトルを使う。参照フレーム１３０は、エンコーダおよびデコーダで利用可能な、先行して再構成されたフレームである。予測が完全であることはまれなので、エンコーダは通常、予測マクロブロックとマクロブロック１１５自体との間の、ピクセルの差分からなるブロック（エラーブロックまたは残留（ｒｅｓｉｄｕａｌ）ブロックとも呼ばれる）をエンコードする。
【００１０】
図２は、ＷＭＶ８エンコーダにおける、エラーブロック２３５の演算およびエンコードの例を示す。エラーブロック２３５は、予測ブロック２１５と元の現在のブロック２２５との間の差分である。エンコーダは、エラーブロック２３５にＤＣＴ２４０を適用し、その結果、係数からなる８×８のブロック２４５を生じさせる。エンコーダは次いで、ＤＣＴ係数を量子化（２５０）し、その結果、量子化されたＤＣＴ係数２５５からなる８×８のブロックを生じさせる。エンコーダは、８×８のブロック２５５を走査（２６０）して１次元配列２６５にし、そうすることによって、係数が、概して最も低い周波数から最も高い周波数の順に並べられるようにする。エンコーダは、ランレングス符号化２７０の変形を用いて、走査された係数をエントロピーエンコードする。エンコーダは、１つまたは複数のラン／レベル／ラストテーブル２７５からエントロピーコードを選択し、エントロピーコードを出力する。
【００１１】
図３は、インター符号化ブロック用の対応する復号化処理３００の例を示す。図３を要約すると、デコーダが、１つまたは複数のラン／レベル／ラストテーブル３１５を用いた可変長復号化３１０、およびランレングス復号化３２０を用いて、予測残余を表すエントロピー符号化情報を復号する（３１０、３２０）。デコーダは、エントロピー復号された情報を格納する１次元配列３２５を逆走査（３３０）して、２次元ブロック３３５にする。デコーダは、データを逆量子化および逆離散コサイン変換し（ともに３４０）、その結果、再構成されたエラーブロック３４５を生じさせる。別個の動き補償パスにおいて、デコーダは、参照フレームからの変位に関する動きベクトル情報３５５を用いて、予測ブロック３６５を演算する。デコーダは、予測ブロック３６５を、再構成されたエラーブロック３４５と組み合わせて（３７０）、再構成されたブロック３７５を形成する。
【００１２】
元のフレームと再構成されたフレームとの間の変化量は、ひずみであり、フレームを符号化するのに必要なビット数は、フレーム用のレートを示す。ひずみの量は、レートに大体反比例する。
【００１３】
ＩＩ．インターレース映像およびプログレッシブ映像
一般的なインターレース映像フレームは、別々の時間に走査開始される２つのフィールドからなる。たとえば、図４を参照すると、インターレース映像フレーム４００は、トップフィールド４１０およびボトムフィールド４２０を含む。通常、偶数番号のライン（トップフィールド）が、ある時間（たとえば、時間ｔ）に走査開始され、奇数番号のライン（ボトムフィールド）が、別の（通常は後の）時間（たとえば、時間ｔ＋１）に走査開始される。このタイミングが、インターレース映像フレームの領域内に、ギザギザした歯形のような外形を作成する場合がある。こうした領域では、２つのフィールドが別々の時間に走査開始されるので、動きが存在する。こうした理由により、インターレース映像フレームは、フィールド構造に従って配列し直すことができる。このフィールド構造では、奇数ラインが１つのフィールドにグループ化され、偶数ラインが別のフィールドにグループ化される。この再配列は、フィールド符号化として知られ、動きの多いピクチャでは、このようなギザギザのエッジを有する作成物（ａｒｔｉｆａｃｔ）の低減に有用である。反対に、静止領域では、インターレース映像フレーム中のイメージの細部は、このような再配列なしで、より効率的に保存することができる。したがって、フレーム符号化は、静止した、または動きの少ないインターレース映像フレームにおいてしばしば使用され、元の交互フィールドライン配列が保存される。
【００１４】
一般的なプログレッシブ映像フレームは、非交互ラインを有する内容を含む１つのフレームからなる。インターレース映像とは対照的に、プログレッシブ映像は、映像フレームを別個のフィールドに分割せず、フレーム全体が、左から右、上から下に一斉に走査開始される。
【００１５】
ＩＩＩ．ＷＭＶ９の初期バージョンにおけるインターレースＰフレームの符号化および復号化
Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン９［「ＷＭＶ９」］の初期バージョンでは、インターレースＰフレームの符号化および復号化を用いる。ＷＭＶ９のこうした初期バージョンでは、インターレースＰフレームは、フィールドモードもしくはフレームモードでエンコードされたマクロブロック、またはスキップされたマクロブロックを含むことができ、この判断は、概してマクロブロック単位で行われる。２つの動きベクトルは、フィールド符号化された各マクロブロックに関連づけられ、１つの動きベクトルは、フレーム符号化された各マクロブロックに関連づけられる。エンコーダは、可能であれば他の信号情報とともに水平および垂直動きベクトル差分成分を含む、ブロック用の動き情報を、マクロブロックにともにエンコードする。
【００１６】
エンコーダにおいて、動きベクトルは、隣接する動きベクトルに基づいて演算される、動きベクトルと動きベクトル予測子との間の差分を演算することによって、エンコードされる。また、デコーダにおいて、動きベクトルは、隣接する動きベクトルに基づいて再度（今回はデコーダにおいて）演算される動きベクトルの差分を、動きベクトル予測子に加えることによって再構成される。
【００１７】
図５は、ＷＭＶ９の初期バージョンにおける、インターレースＰフレーム中のフレーム符号化されたマクロブロックに対する動きベクトル予測用の候補予測子の例を示し、図６および７は、フィールド符号化されたマクロブロックに対する動きベクトル予測用の候補予測子の例を示す。図５は、インターレースＰフレーム中の中程の位置にある（マクロブロック行中の最初および最後のマクロブロックでもなく、最上位行中にもない）、フレーム符号化された現在のマクロブロック用の候補予測子Ａ、ＢおよびＣを示す。予測子は、Ａ、Ｂ、およびＣで示した以外の、異なる候補方向から取得することもできる（たとえば、現在のマクロブロックが、ある行中の最初のマクロブロックまたは最後のマクロブロックであるか、あるいは最上位行中にあるような特殊な場合である。というのは、このような場合は特定の予測子が利用不可能だからである）。フレーム符号化された現在のマクロブロックに対して、予測子候補は、隣接マクロブロックがフィールド符号化されているか、またはフレーム符号化されているかに応じて、異なる計算が行われる。フレーム符号化された隣接マクロブロックに対して、動きベクトルは、単に予測子候補とみなされる。フィールド符号化された隣接マクロブロックに対して、候補動きベクトルは、上部およびボトムフィールドの動きベクトルの平均をとることによって決定される。
【００１８】
図６および７は、マクロブロック行中の最初または最後のマクロブロックでもなく、最上位行にもない、フィールド符号化されたマクロブロック中の現在のフィールド用の候補予測子Ａ、ＢおよびＣを示す。図６において、現在のフィールドはボトムフィールドであり、隣接マクロブロック中のボトムフィールドの動きベクトルが、候補予測子として用いられる。図７において、現在のフィールドはトップフィールドであり、トップフィールドの動きベクトルが、候補予測子として用いられる。したがって、フィールド符号化された現在のマクロブロック中の各フィールドごとに、各フィールド用の動きベクトル予測子候補の数は多くても３であり、各候補は、現在のフィールドと同じフィールドタイプ（たとえば、上部または下部）からのものである。
【００１９】
現在のマクロブロック、または現在のマクロブロックのフィールド用の予測子は、候補予測子に基づいて選択され、動きベクトルの差分は、予測子に基づいて計算される。動きベクトルは、エンコーダ側またはデコーダ側のいずれかで、選択された動きベクトル予測子に動きベクトルの差分を加えることによって再構成することができる。通常、輝度（ｌｕｍｉｎａｎｃｅ）の動きベクトルは、エンコードされた動き情報から再構成され、彩度（ｃｈｒｏｍｉｎａｎｃｅ）の動きベクトルは、再構成された輝度の動きベクトルから導出される。
【００２０】
ＩＶ．映像圧縮および圧縮解除のための標準
ＷＭＶ８、およびＷＭＶ９の初期バージョンの他にも、いくつかの国際標準が、映像圧縮および圧縮解除に関する。こうした標準は、非特許文献１、非特許文献２、非特許文献３、および国際電気通信連合［「ＩＴＵ」］から出ている非特許文献４、非特許文献５、非特許文献６、非特許文献７を含む。こうした国際標準において、デジタル映像シーケンスのデータ圧縮を実現するのに用いられる主要な方法の１つは、ピクチャ間の一時的な冗長性を低減することである。こうした一般的な圧縮方式（非特許文献１、非特許文献２、非特許文献３、非特許文献４、非特許文献６など）では、動き推定および補償を用いる。たとえば、現在のフレームが、均一の方形領域（たとえば、ブロックおよび／またはマクロブロック）に分割される。現在の各領域に一致する領域は、領域の動きベクトル情報を送ることによって指定される。こうした動きベクトルは、現在の領域用の予測子として用いられるべき、符号化済みの（かつ再構成済みの）フレーム中の領域の位置を示す。現在の領域と参照フレーム中の領域との間の、エラー信号と呼ばれる、ピクセルごとの差が導出される。このエラー信号は通常、元の信号より低いエントロピーを有する。したがって、情報は、より低いレートでエンコードすることができる。ＷＭＶ８、およびＷＭＶ９の初期バージョンでのように、動きベクトルの値はしばしば、周囲の空間にある動きベクトルと相互に関連するので、動きベクトル情報を表すのに用いられるデータの圧縮は、符号化済みの、隣接する動きベクトルに基づいて、現在の動きベクトルと予測子との間の差分を符号化することによって実現することができる。
【００２１】
【非特許文献１】Motion Picture Experts Group ["MPEG"] 1 standard
【非特許文献２】Motion Picture Experts Group ["MPEG"] 2 standard
【非特許文献３】Motion Picture Experts Group ["MPEG"] 4 standard
【非特許文献４】H. 261 standard
【非特許文献５】H. 262 standard
【非特許文献６】H. 263 standard
【非特許文献７】H. 264 standard
【発明の開示】
【発明が解決しようとする課題】
【００２２】
さらに、いくつかの国際標準は、インターレース映像フレームにおける動き推定および補償を記述している。非特許文献５では、フレームのエンコードおよびフィールドのエンコードをフレーム単位で適合的に選択することができる場合、インターレース映像フレームが単一のフレームとして、または２つのフィールドとしてエンコードされることを可能にしている。非特許文献５は、参照フレームの１つのフィールドのみを用いる予測モードである、フィールドベースの予測を記述している。非特許文献５はまた、インターレースＰピクチャ中の１６×１６のブロックに対して、２つの順方向のフィールドベースの予測の平均がとられる予測モードである、デュアルプライム（ｄｕａｌ−ｐｒｉｍｅ）予測を説明している。非特許文献５のセクション７．６では、インターレース映像フレームの現在のフィールドのマクロブロックに対する動き補償に用いるための、２つの参照フィールドの間で選択を行うことを含む「フィールド予測」を説明している。セクション７．６．３では、所与のマクロブロック用の再構成された動きベクトルが、続いてエンコード／復号されるマクロブロック用の動きベクトル予測子となる、動きベクトルの予測および再構成を説明している。このような動きベクトル予測は、多くの場合、インターレース映像フレームのフィールドのマクロブロックに対する動きベクトルを適合的に予測することができない。
【００２３】
デジタル映像に対する映像圧縮および圧縮解除の決定的な重要性が明らかになっているので、映像圧縮および圧縮解除が十分に発展した分野であることは意外ではない。しかし、従来の映像圧縮および圧縮解除技術の利益がどのようなものであっても、以下に述べる技術およびツールの利点は有していない。
【課題を解決するための手段】
【００２４】
要約すると、詳細な説明は、インターレース映像において、予測映像イメージをエンコードし復号する様々な技術およびツールを対象とする。説明する技術は、インターレース映像フレームのフィールドのブロックまたはマクロブロックに対する動きベクトル予測子を演算する技術およびツールを含む。こうした技術により、多くの場合、動きベクトル予測の正確さが向上し、そうすることによって、インターレース映像フレームのフィールドに関する動きベクトル情報のエンコードに関連づけられたビットレートが低下する。こうした様々な技術およびツールは、組み合わせて用いることも、それぞれ独立に用いることもできる。
【００２５】
第１の態様では、エンコーダ／デコーダが、インターレースＰフィールドの一部分（たとえば、ブロックまたはマクロブロック）に対する動きベクトル用の動きベクトル予測子を演算し、この演算は、その部分に対する、同極性動きベクトル予測子の使用、または反極性動きベクトル予測子の使用を選択することを含む。エンコーダ／デコーダは、動きベクトル用に演算された動きベクトル予測子に少なくとも部分的に基づいて、動きベクトルを処理する。この処理は、エンコード中に動きベクトルと動きベクトル予測子との間の動きベクトルの差分を演算すること、並びに復号中に動きベクトルの差分および動きベクトル予測子から動きベクトルを再構成することを含むことができる。選択することは、その部分の周囲の隣接部分に対する反極性動きベクトルのカウント、および／または隣接部分に対する同極性動きベクトルのカウントに少なくとも部分的に基づくことができる。選択することは、ビットストリーム中の単一のビット信号に少なくとも部分的に基づくこともできる。選択することは、その部分の周囲の隣接部分の反極性動きベクトルのカウント、および／または隣接部分に対する同極性動きベクトルのカウントに少なくとも部分的に基づいて主要（ｄｏｍｉｎａｎｔ）予測子を決定すること、および主要予測子およびビットストリーム中の単一のビット信号に基づいて、同極性動きベクトル予測子または反極性動きベクトル予測子を選択することを含むことができる。
【００２６】
選択することは、その部分に対する動きベクトルが同極性フィールドを参照する場合は、同極性動きベクトル予測子を選択することを、またはその部分に対する動きベクトルが反極性フィールドを参照する場合は、反極性動きベクトル予測子を選択することを含むこともできる。
【００２７】
同極性動きベクトル予測子は、その部分の周囲の隣接部分用の、複数の同極性動きベクトル予測子候補の中央値として演算することができ、反極性動きベクトル予測子は、その部分の周囲の隣接部分用の、複数の反極性動きベクトル予測子候補の中央値として演算することができる。同極性動きベクトル予測子候補は、反極性動きベクトル予測子候補をスケーリングすることによって導出することができ、反極性動きベクトル予測子候補は、同極性動きベクトル予測子候補をスケーリングすることによって導出することができる。
【００２８】
別の態様では、エンコーダ／デコーダが、複数の隣接する動きベクトルに少なくとも部分的に基づいて、インターレースＰフィールドの一部分に対する動きベクトル用の動きベクトル予測子を演算し、複数の隣接する動きベクトルは、１つまたは複数の反極性動きベクトルおよび１つまたは複数の同極性動きベクトルを含む。エンコーダ／デコーダは、動きベクトル用に演算された動きベクトル予測子に少なくとも部分的に基づいて、動きベクトルを処理する。同極性動きベクトル予測子は、複数の同極性動きベクトル予測子候補の中央値として演算することができ、複数の候補の少なくとも１つは、１つまたは複数の反極性動きベクトルの１つからの値のスケーリングに少なくとも部分的に基づいて導出され、反極性動きベクトル予測子は、複数の反極性動きベクトル予測子候補の中央値として演算することができ、複数の候補の少なくとも１つは、１つまたは複数の同極性動きベクトルの１つからの値のスケーリングに少なくとも部分的に基づいて導出される。
【００２９】
別の態様では、エンコーダ／デコーダが、映像フレーム中の現在のフィールド中のマクロブロック用の動きベクトル予測子候補の第１の組を決定することによって、インターレース予測映像フレームを処理し、動きベクトル予測子候補の第１の組は、現在のフィールドと比較して同極性を有する第１の参照フィールドを参照する。第１の動きベクトル予測子が、動きベクトル予測子候補の第１の組の１つまたは複数に少なくとも部分的に基づいて、マクロブロック用に演算される。動きベクトル予測子候補の第２の組が、マクロブロック用に決定され、動きベクトル予測子候補の第２の組は、現在のフィールドと比較して反極性を有する第２の参照フィールドを参照する。マクロブロック用の第２の動きベクトル予測子が、動きベクトル予測子候補の第２の組の１つまたは複数に少なくとも部分的に基づいて演算される。
【００３０】
第１および第２の動きベクトル予測子は、たとえば、第１および第２の動きベクトル予測子の１つを選択し、選択された動きベクトル予測子に基づいてマクロブロックに対する動きベクトルの差分を計算することによって、および／または第１および第２の動きベクトル予測子の１つを選択し、選択された予測子を動きベクトルの差分と組み合わせてマクロブロックに対する動きベクトルを再構成することによって、処理において使用される。動きベクトルの差分は、エントロピー符号化することができる。
【００３１】
別の態様では、第１の極性動きベクトル予測子候補が、第１の極性とは異なる第２の極性を有する実際の動きベクトルの値をスケーリングすることによって演算される。第１の極性動きベクトル予測子候補は、インターレースＰフィールドの一部分に対する動きベクトル用の動きベクトル予測子を演算するときに使用される。動きベクトルの差分は、エンコード中に、動きベクトルと動きベクトル予測子との間で演算することができる。動きベクトルは、復号化中に、動きベクトルの差分および動きベクトル予測子から再構成することができる。第１の極性動きベクトル予測子候補は、その部分とは反対のフィールド極性を有することができ、実際の動きベクトルの値は、その部分と同じフィールド極性を有し、スケーリングは、同極性から反極性にスケーリングするように適合される。または、第１の極性動きベクトル予測子候補は、その部分と同じフィールド極性を有することができ、実際の動きベクトルの値は、その部分とは反対のフィールド極性を有し、スケーリングは、反極性から同極性にスケーリングする用に適合される。スケーリングは、参照フレーム距離に少なくとも部分的に基づくことができる。
【００３２】
別の態様では、エンコーダ／デコーダが、映像フレーム中の現在のフィールド中のマクロブロック用の、第１の動きベクトル予測子候補を決定し、第１の動きベクトル予測子候補は第１の極性を有する。エンコーダ／デコーダは、マクロブロック用の第２の動きベクトル予測子候補を決定し、第２の動きベクトル予測子候補は、スケーリング操作を用いて第１の動きベクトル予測子候補から導出される。第２の動きベクトル予測子候補は、第１の極性とは異なる極性を有する。
【００３３】
別の態様では、エンコーダ／デコーダが、映像フレーム中の現在のフィールド中のマクロブロック用の、第１の動きベクトル予測子候補を決定し、第１の動きベクトル予測子候補は、第１の極性および参照距離を有するフィールドを参照する。エンコーダ／デコーダは、マクロブロック用の第２の動きベクトル予測子候補を決定し、第２の動きベクトル予測子候補は、参照距離に少なくとも部分的に基づいて変化するスケーリング操作を用いて、第１の動きベクトル予測子候補から導出される。第２の動きベクトル予測子候補は、第１の極性とは異なる極性を有することができる。
【００３４】
別の態様では、デコーダが、ビットストリーム中のフィールドレベルで第１の要素を復号し、ビットストリーム中のマクロブロックレベルで第２の要素および第３の要素を復号する。第１の要素は、映像フレーム中の現在のフィールドに関する参照フィールド数情報を含み、この情報は、現在のフィールドに対する２つの参照フィールドを示す。第２の要素は、現在のフィールド中の現在のマクロブロックに関するマクロブロックモード情報を含む。第３の要素は、現在のマクロブロックに関する動きベクトルデータを含み、動きベクトルデータは、差分動きベクトルデータを含む。デコーダは、マクロブロックに関する動きベクトルデータを処理する。この処理は、現在のマクロブロック用の第１および第２の動きベクトル予測子を決定すること、ならびに第１および第２の動きベクトル予測子に少なくとも部分的に基づいて、かつ差分動きベクトルデータに少なくとも部分的に基づいて、現在のマクロブロックに対する動きベクトルを再構成することを含む。第１の動きベクトル予測子は奇数フィールド予測子であり、第２の動きベクトル予測子は偶数フィールド予測子である。
【００３５】
別の態様では、デコーダが、水平差分動きベクトル成分、垂直差分動きベクトル成分、および主要動きベクトル予測子または非主要動きベクトル予測子のどちらを使うかを示すフラグを集合的に信号通知する動きベクトルデータを復号する。デコーダは、復号された動きベクトルデータに少なくとも部分的に基づいて、動きベクトルを再構成する。再構成は、フラグに基づいて、主要動きベクトル予測子または非主要動きベクトル予測子の使用を選択すること、水平差分動きベクトル成分を、選択された予測子の水平成分と組み合わせること、および垂直差分動きベクトル成分を、選択された予測子の水平成分と組み合わせることを含むことができる。
【００３６】
追加の特徴および利点が、添付の図面を参照して行われる、様々な実施形態の以下の詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【００３７】
本出願は、インターレース映像の効率的な圧縮および圧縮解除のための技術およびツールに関する。説明する様々な実施形態では、たとえば、映像エンコーダおよびデコーダは、インターレース映像フレーム中の予測されるフィールドのエンコードおよび復号において動きベクトルを予測する技術、ならびに異なる層またはレベル（たとえば、シーケンスレベル、ピクチャ／イメージレベル、フィールドレベル、マクロブロックレベル、および／またはブロックレベル）を含むビットストリーム形式またはシンタクスとともに使うための信号通知技術を組み込む。こうした技術およびツールは、たとえばデジタル映像放送システム（たとえば、ケーブル、衛星、ＤＳＬなど）において使うことができる。
【００３８】
具体的には、説明する技術およびツールは、インターレース映像フレームの順方向予測フィールドのブロックおよび／またはマクロブロック用の動きベクトル予測子の品質を向上し、その結果、動きベクトルがより効率的にエンコードされるようになる。たとえば、周囲のブロックおよび／またはマクロブロックに対する隣接部分動きベクトルを用いて、現在のフィールドのブロックおよび／またはマクロブロックに対する予測子動きベクトルを生成する技術を説明するが、この技術では、隣接部分動きベクトルは集合的に、２つのフィールドの一方または両方を参照として参照する。説明する技術およびツールにおいて実現される革新は、以下のものを含むが、それに限定されない。
【００３９】
１）インターレースＰフィールド中のブロックまたはマクロブロック用に、２つの動きベクトル予測子を生成する。すなわち、「偶数」参照フィールド用に１つの動きベクトル予測子を、「奇数」参照フィールド用に１つの動きベクトル予測子を生成する。エンコーダ／デコーダは、最大６つの動きベクトル予測子候補（偶数動きベクトル予測子用に３つ、奇数動きベクトル予測子用に３つ）を、現在のブロックまたはマクロブロック用に検討する。最大６つの動きベクトル予測子候補を使用することにより、従来の方法より優れた動きベクトル予測が可能になる。
【００４０】
２）現在の動きベクトルによって参照される参照フィールドの動きベクトル予測子を使用する。すなわち、現在の動きベクトルが、参照フレームの、対応するフィールド中の領域を参照する（現在のフィールドおよび参照フィールドが同極性であることを意味する）場合は、その参照フィールドの動きベクトル予測子が使用される。同様に、反極性フィールドが参照として使用される場合は、その参照フィールドの動きベクトル予測子が使用される。こうすることにより、従来の方法より優れた動きベクトル予測が可能になる。
【００４１】
３）スケーリング操作を用いて、既存の動きベクトル候補の反極性に対する動きベクトル予測子候補を生成する。エンコーダ／デコーダは、候補ブロック／マクロブロックの位置から動きベクトルを取り出し、この動きベクトルは、奇数フィールドまたは偶数フィールドを参照する。エンコーダ／デコーダは次いで、動きベクトルをスケーリングして、他の極性の動きベクトル予測子候補を導出する。たとえば、近接するマクロブロックに対する実際の動きベクトルが奇数フィールドを参照する場合、その値が、近接マクロブロックの奇数動きベクトル予測子候補として使用され、スケーリングされた動きベクトルの値（実際の値から導出された）が、近接マクロブロックの偶数動きベクトル予測子候補として使用される。動きベクトル予測子候補は、（３つの動きベクトルの値を有する）３つのブロック／マクロブロック位置のみから取得されるが、エンコーダ／デコーダによる、異なる極性動きベクトル予測子候補の導出は、選択が行われる６つの候補からなる集団をもたらす。
【００４２】
４）動きベクトル予測子候補を導出する場合に、参照フレーム距離に依存するスケーリング操作を用いる。エンコーダ／デコーダは、現在のフィールドと２つの参照フィールドの間の相対時間距離を用いて、他のフィールドの既存の動きベクトル候補から、欠けている極性フィールドに対する予測子候補を導出するスケーリング操作を実施する。相対時間距離を考慮してスケーリングを実施するエンコーダ／デコーダは、固定参照距離を想定するエンコーダ／デコーダより正確な予測を生じることができる。
【００４３】
本明細書で説明する実装形態に対する様々な代替形態が可能である。たとえば、フロー図を参照して説明する技術は、フロー図に示す段階の順序を変えること、特定の段階を繰り返しまたは省略することなどによって、改変することができる。別の例として、いくつかの実装形態を、具体的なマクロブロックおよび／またはブロック形式を参照して説明するが、他の形式を使うこともできる。さらに、インターレースＰフィールドタイプ予測を参照して説明する技術およびツールは、他のタイプの予測にも適用可能であり得る。
【００４４】
こうした様々な技術およびツールは、組み合わせて使うことも、それぞれ独立に使うこともできる。異なる実施形態では、説明する技術およびツールの１つまたは複数を実装している。本明細書で説明する技術およびツールは、映像エンコーダまたはデコーダでも、映像エンコードまたは復号化に特に限定されない他の何らかのシステムでも使うことができる。
【００４５】
Ｉ．計算機環境
図８は、説明する実施形態のいくつかを実装することができる適切な計算機環境８００を一般化した例を示す。計算機環境８００は、使用または機能の範囲に対するどのような限定を示すことも意図していない。というのは、こうした技術およびツールは、多様な汎用または専用計算機環境において実装することができるからである。
【００４６】
図８を参照すると、計算機環境８００は、少なくとも１つの処理装置８１０およびメモリ８２０を含む。図８において、この最も基本的な構成８３０は、破線内に含まれる。処理装置８１０は、コンピュータ実行可能命令を実行し、実プロセッサでも仮想プロセッサでもよい。マルチ・プロセッシング・システムでは、処理能力を向上するために、複数の処理装置がコンピュータ実行可能命令を実行する。メモリ８２０は、揮発性メモリ（たとえば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（たとえば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、またはこの２つの何らかの組合せとすることができる。メモリ８２０は、インターレースＰフィールドに対する二参照フィールド動きベクトル予測（ｔｗｏ−ｒｅｆｅｒｅｎｃｅ  ｆｉｅｌｄ  ｍｏｔｉｏｎ  ｖｅｃｔｏｒ  ｐｒｅｄｉｃｔｉｏｎ）を有する映像エンコーダまたはデコーダを実装するソフトウェア８８０を格納する。
【００４７】
計算機環境は、追加の特徴を有することもできる。たとえば、計算機環境８００は、記憶装置８４０、１つまたは複数の入力装置８５０、１つまたは複数の出力装置８６０、および１つまたは複数の通信接続８７０を含む。バス、コントローラ、またはネットワークなどの相互接続機構（図示せず）が、計算機環境８００の構成要素を相互接続する。一般に、オペレーティングシステムソフトウェア（図示せず）が、計算機環境８００において実行される他のソフトウェアのための動作環境を提供し、計算機環境８００の構成要素の活動を調整する。
【００４８】
記憶装置８４０は、取外し可能でも固定型でもよく、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、あるいは情報を格納するのに使うことができるとともに計算機環境８００においてアクセスすることができる他のどの媒体も含む。記憶装置８４０は、映像エンコーダまたはデコーダを実装するソフトウェア８８０用の命令を格納する。
【００４９】
入力装置（群）８５０は、キーボード、マウス、ペン、またはトラックボールなどのタッチ式入力装置、音声入力装置、走査装置、あるいは計算機環境８００への入力を実現する別の装置とすることができる。音声または映像エンコードのためには、入力装置（群）８５０は、サウンドカード、映像カード、ＴＶチューナカードでも、アナログまたはデジタルの形で、あるいは計算機環境８００に音声または映像サンプルを読み込むＣＤ−ＲＯＭまたはＣＤ−ＲＷで音声または映像入力を受け入れる類似の装置でもよい。出力装置（群）８６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、または計算機環境８００からの出力を実現する別の装置とすることができる。
【００５０】
通信接続（群）８７０は、別の計算エンティティへの、通信媒体を介した通信を可能にする。こうした通信媒体は、コンピュータ実行可能命令、音声または映像入出力、あるいは他のデータなどの情報を、被変調データ信号の形で搬送する。被変調データ信号とは、情報を信号にエンコードするような方式で設定または変更される信号特性の１つまたは複数を有する信号である。限定ではなく例として、通信媒体は、電気、光学、ＲＦ、赤外線、音響、または他のキャリアを有して実現される有線または無線技術を含む。
【００５１】
こうした技術およびツールは、コンピュータ可読媒体という一般的な状況において説明することができる。コンピュータ可読媒体は、計算機環境においてアクセスすることができる、利用可能などの媒体でもよい。限定ではなく例として、計算機環境８００の場合、コンピュータ可読媒体は、メモリ８２０、記憶装置８４０、通信媒体、および上記のどの組合せも含む。
【００５２】
こうした技術およびツールは、コンピュータ実行可能命令、たとえば計算機環境において、ターゲットである実プロセッサまたは仮想プロセッサ上で実行される、プログラムモジュールに含まれるコンピュータ実行可能命令という一般的な状況で説明することができる。概して、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データタイプを実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、様々な実施形態での要望に応じて、組み合わせることも、プログラムモジュールの間で分割することもできる。プログラムモジュール用のコンピュータ実行可能命令は、ローカルまたは分散計算機環境において実行することができる。
【００５３】
提示のため、詳細な説明では、計算機環境におけるコンピュータ動作を記述するのに、「推定する」、「補償する」、「予測する」、および「適用する」のような用語を用いる。こうした用語は、コンピュータによって実施される動作を高度に抽象化したものであり、人間によって実施される行為と混同すべきではない。こうした用語に対応する実際のコンピュータ動作は、実装形態に応じて変わる。
【００５４】
ＩＩ．一般化した映像エンコーダおよびデコーダ
図９は、説明する実施形態を実装することができる、一般化した映像エンコーダ９００のブロック図である。図１０は、説明する実施形態を実装することができる、一般化した映像デコーダ１０００のブロック図である。
【００５５】
エンコーダ９００およびデコーダ１０００内部のモジュールの間に示される関係は、エンコーダおよびデコーダにおける情報の一般的な流れを示し、他の関係は、簡潔にするために図示していない。具体的には、図９および１０では概して、映像シーケンス、ピクチャ、マクロブロック、ブロックなどのために使われるエンコーダの設定、モード、テーブルなどを示すサイド情報は図示していない。このようなサイド情報は、通常、サイド情報のエントロピーエンコードの後、出力ビットストリームで送られる。出力ビットストリームの形式は、Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン９形式でも、他の形式でもよい。
【００５６】
エンコーダ９００およびデコーダ１０００は、映像フレーム、映像フィールド、またはフレームおよびフィールドの組合せとすることができる映像ピクチャを処理する。ピクチャレベルおよびマクロブロックレベルでのビットストリームのシンタクスおよびセマンティクスは、フレームまたはフィールドのどちらが用いられるかに依存し得る。マクロブロックの編成および全体のタイミングにも同様に変更があり得る。エンコーダ９００およびデコーダ１０００は、ブロックベースであり、フレーム用に４：２：０のマクロブロック形式を使用し、各マクロブロックは４つの８×８輝度ブロック（１つの１６×１６マクロブロックとして処理されるときもある）、および２つの８×８彩度ブロックを含む。フィールド用には、同じまたは異なるマクロブロック組織および形式を使うことができる。８×８のブロックは、異なる段階、たとえば、周波数変換段階およびエントロピーエンコード段階でさらに下位分割することができる。一例である映像フレーム組織を、後でより詳細に説明する。代替的には、エンコーダ９００およびデコーダ１０００はオブジェクトベースであり、異なるマクロブロックまたはブロック形式を使用し、あるいは８×８のブロックおよび１６×１６のマクロブロックとは異なるサイズまたは構成であるピクセルの組に対して動作を実施する。
【００５７】
必要な圧縮の実装形態およびタイプに応じて、エンコーダまたはデコーダのモジュールを追加し、省略し、複数のモジュールに分割し、他のモジュールと組合せ、かつ／または同様のモジュールと置き換えることができる。代替実施形態では、異なるモジュールおよび／または他の構成のモジュールを有するエンコーダまたはデコーダが、説明する技術の１つまたは複数を実施する。
【００５８】
Ａ．映像フレームの編成
いくつかの実装形態では、エンコーダ９００およびデコーダ１０００は、以下のように編成された映像フレームを処理する。フレームは、映像信号の空間情報のラインを含む。プログレッシブ映像の場合、こうしたラインは、ある時刻に開始されるとともにフレームの下部までの後続ライン全体に対して続けて抽出されたサンプルを含む。プログレッシブ映像フレームは、マクロブロック、たとえば図１１に示すマクロブロック１１００に分割される。マクロブロック１１００は、４つの８×８輝度ブロック（Ｙ１からＹ４）および２つの８×８彩度ブロックを含み、こうした彩度ブロックは、４つの輝度ブロックと同じ位置に配置されるが、従来の４：２：０マクロブロック形式に従って水平および垂直方向の解像度が半分である。こうした８×８のブロックは、異なる段階、たとえば、周波数変換段階およびエントロピーエンコード段階でさらに下位分割することができる。プログレッシブＩフレームとは、イントラ符号化されたプログレッシブ映像フレームである。プログレッシブＰフレームとは、順方向予測を用いて符号化されたプログレッシブ映像フレームであり、プログレッシブＢフレームとは、双方向予測を用いて符号化されたプログレッシブ映像フレームである。プログレッシブＰフレームおよびＢフレームは、イントラ符号化マクロブロック、ならびに異なるタイプの予測マクロブロックを含むことができる。
【００５９】
インターレース映像の場合、フレームは、２つのフィールド、すなわちトップフィールドおよびボトムフィールドからなる。こうしたフィールドの一方が、他方より遅れて１つのフィールド周期を開始する。図１２Ａは、インターレース映像フレーム１２００の一部分を示し、インターレース映像フレーム１２００の左上部分におけるトップフィールドおよびボトムフィールドからなる交互ラインを含む。
【００６０】
図１２Ｂは、フレーム１２３０としてエンコード／復号するように編成された図１２Ａのインターレース映像フレーム１２００を示す。インターレース映像フレーム１２００は、マクロブロック、たとえばマクロブロック１２３１および１２３２に区切られており、こうしたマクロブロックは、図１１に示す４：２：０形式を使う。輝度面（ｌｕｍｉｎａｎｃｅ  ｐｌａｎｅ）において、各マクロブロック１２３１、１２３２は、トップフィールドの８本のラインと交互に現われるボトムフィールドの８本のライン、合計で１６本のラインを含み、各ラインは１６ピクセル長である。（マクロブロック１２３１、１２３２中の輝度ブロックおよび彩度ブロックの実際の編成および配置は図示していないが、実際には、異なるエンコード判断によって変わり得る。）所与のマクロブロック内部では、トップフィールド情報およびボトムフィールド情報は、様々なフェーズのいずれにおいても、一緒にまたは別々に符号化することができる。インターレースＩフレームとは、インターレース映像フレームからなる２つのイントラ符号化フィールドであり、マクロブロックが、２つのフィールドに対する情報を含む。インターレースＰフレームとは、順方向予測を用いて符号化されたインターレース映像フレームからなる２つのフィールドであり、インターレースＢフレームとは、双方向予測を用いて符号化されたインターレース映像フレームからなる２つのフィールドであり、マクロブロックが、２つのフィールドに対する情報を含む。インターレースＰフレームおよびＢフレームは、イントラ符号化マクロブロック、ならびに異なるタイプの予測マクロブロックを含むことができる。
【００６１】
図１２Ｃは、フィールド１２６０としてエンコード／復号するように編成された、図１２Ａのインターレース映像フレーム１２００を示す。インターレース映像フレーム１２００の２つのフィールドはそれぞれ、マクロブロックに区切られる。トップフィールドは、マクロブロック、たとえばマクロブロック１２６１に区切られ、ボトムフィールドは、マクロブロック、たとえばマクロブロック１２６２に区切られる。（やはり、マクロブロックは、図１１に示す４：２：０形式を使い、マクロブロックにおける輝度ブロックおよび彩度ブロックの編成および配置は図示していない。）輝度面において、マクロブロック１２６１は、トップフィールドの１６本のラインを含み、マクロブロック１２６２は、ボトムフィールドの１６本のラインを含み、各ラインは１６ピクセル長である。インターレースＩフィールドとは、インターレース映像フレームからなる単一の、別個に表されるフィールドである。インターレースＰフィールドとは、順方向予測を用いて符号化されたインターレース映像フレームからなる単一の、別個に表されるフィールドであり、インターレースＢフィールドとは、双方向予測を用いて符号化されたインターレース映像フレームからなる単一の、別個に表されるフィールドである。インターレースＰフィールドおよびＢフィールドは、イントラ符号化マクロブロック、ならびに異なるタイプの予測マクロブロックを含むことができる。
【００６２】
ピクチャという用語は概して、ソースデータ、符号化されたまたは再構成されたイメージデータを指す。プログレッシブ映像の場合、ピクチャは、プログレッシブ映像フレームである。インターレース映像の場合、ピクチャは、状況に応じて、インターレース映像フレーム、フレームのトップフィールド、またはフレームのボトムフィールドを指すことができる。
【００６３】
Ｂ．映像エンコーダ
図９は、一般化した映像エンコーダシステム９００のブロック図である。エンコーダシステム９００は、現在のピクチャ９０５を含む一連の映像ピクチャを受け取り、圧縮された映像情報９９５を出力として生じる。映像エンコーダの特定の実施形態では通常、一般化したエンコーダ９００の変形または補足バージョンを使用する。
【００６４】
エンコーダシステム９００は、予測ピクチャおよびキーピクチャを圧縮する。提示のため、図９は、エンコーダシステム９００を通過するキーピクチャの経路、および予測ピクチャ用の経路を示す。エンコーダシステム９００の構成要素の多くは、キーピクチャおよび予測ピクチャ両方の圧縮に使われる。そうした構成要素によって実施される正確な動作は、圧縮される情報のタイプに応じて変わり得る。
【００６５】
予測ピクチャ（ｐピクチャ、双方向予測の場合はｂピクチャ、またはインター符号化ピクチャとも呼ばれる）は、１つまたは複数の他のピクチャ（一般に、参照ピクチャまたはアンカと呼ばれる）からの予測（または差）によって表される。予測残余とは、予測されたものと元のピクチャとの間の差である。対照的に、キーピクチャ（Ｉピクチャ、イントラ符号化ピクチャとも呼ばれる）は、他のピクチャを参照せずに圧縮される。
【００６６】
現在のピクチャ９０５が順方向予測ピクチャである場合、動き推定器９１０は、参照ピクチャまたはピクチャ群を参照して、マクロブロックまたは現在のピクチャ９０５の他のピクセルの組の動きを推定する。参照ピクチャは、ピクチャストア（群）９２０、９２２にバッファリングされている、再構成された先行ピクチャ（群）９２５である。現在のピクチャ９０５が双方向予測ピクチャ（Ｂピクチャ）である場合、動き推定器９１０は、現在のピクチャ９０５における動きを、２つ以上の、再構成された参照ピクチャを参照して推定する。一般に、動き推定器は、時間的に先行する少なくとも１つの参照ピクチャ、および少なくとも１つの将来の参照ピクチャを参照して、Ｂピクチャにおける動きを推定する。したがって、エンコーダシステム９００は、逆方向および順方向参照ピクチャ用に別々のストア９２０および９２２を使うことができる。双方向予測ピクチャに関するさらなる情報については、２００３年７月１８日出願の米国特許出願第１０／６２２，３７８号明細書、「Advanced Bi-Directional Predictive Coding of Video Frames」を参照されたい。
【００６７】
動き推定器９１０は、１ピクセル、１／２ピクセル、１／４ピクセル、または他のインクリメントによって動きを推定することができ、動き推定の解像度を、ピクチャ単位または他の単位で切り換えることができる。動き推定の解像度は、水平方向および垂直方向において同じでも異なってもよい。動き推定器９１０は、差分動きベクトル情報などの動き情報９１５をサイド情報として出力する。エンコーダ９００は、たとえば、動きベクトル用に１つまたは複数の予測子を演算すること、動きベクトルと予測子との間の差分を演算すること、および差分をエントロピー符号化することによって、動き情報９１５をエンコードする。動きベクトルを再構成するために、動き補償器９３０は、予測子を差分動きベクトル情報と組み合わせる。インターレースＰフィールド用に動きベクトル予測子を演算し、差分動きベクトルを演算し、動きベクトルを再構成する様々な技術を、後で説明する。
【００６８】
動き補償器９３０は、再構成されたピクチャ（群）９２５に再構成された動きベクトルを適用して、動きが補償された現在のピクチャ９３５を形成する。ただし、予測が完璧であることはまれであり、動きが補償された現在のピクチャ９３５と元の現在のピクチャ９０５との間の差が予測残余９４５である。あるいは、動き推定器および動き補償器は、別のタイプの動き推定／補償を適用する。
【００６９】
周波数変換器９６０は、空間ドメイン映像情報を周波数ドメイン（すなわち、スペクトル）データに変換する。ブロックベースの映像ピクチャに対して、周波数変換器９６０は、ピクセルデータまたは予測残余データのブロックに離散コサイン変換［「ＤＣＴ」］、ＤＣＴの変形、または他のブロック変換を適用し、周波数変換係数のブロックを生じる。代替的には、周波数変換器９６０は、フーリエ変換など別の従来の周波数変換を適用し、あるいはウェーブレットまたはサブバンド分析を用いる。周波数変換器９６０は、８×８、８×４、４×８、４×４または他のサイズの周波数変換を適用することもできる。
【００７０】
量子化器９７０が次いで、スペクトルデータ係数のブロックを量子化する。量子化器は、ピクチャ単位または他の単位によって変わるステップサイズで、スペクトルデータに均一なスカラー量子化を適用する。あるいは、量子化器は、スペクトルデータ係数に別のタイプの量子化、たとえば、均一でない量子化、ベクトル量子化、または非適応量子化を適用し、または周波数変換を使わないエンコーダシステムにおいて、空間ドメインデータを直接量子化する。適応量子化に加え、エンコーダ９００は、フレームドロップ、適応フィルタリング、またはレート制御のための他の技術を使うことができる。
【００７１】
予測ピクチャ中の所与のマクロブロックが、特定のタイプの情報をもたない（たとえば、マクロブロックに関する動き情報も残余情報ももたない）場合、エンコーダ９００は、そのマクロブロックを、スキップされたマクロブロックとしてエンコードすることができる。その場合、エンコーダは、スキップされたマクロブロックに、圧縮された映像情報９９５からなる出力ビットストリームで信号を送る。
【００７２】
再構成された現在のピクチャが、後続の動き推定／補償用に必要とされる場合、逆量子化器９７６が、量子化されたスペクトルデータ係数に対して逆量子化を実施する。逆周波数変換器９６６が次いで、周波数変換器９６０の動作の逆を実施し、（予測ピクチャに対する）再構成された予測残余、または再構成されたキーピクチャを生じる。現在のピクチャ９０５がキーピクチャだった場合、再構成されたキーピクチャは、再構成された現在のピクチャ（図示せず）とみなされる。現在のピクチャ９０５が予測ピクチャだった場合、再構成された予測残余が、動き補償された現在のピクチャ９３５に追加されて、再構成された現在のピクチャを形成する。ピクチャストア９２０、９２２の１つが、次のピクチャの予測に使うために、再構成された現在のピクチャをバッファリングする。一部の実施形態では、エンコーダは、再構成されたピクチャに非ブロック化フィルタを適用して、ピクチャにおける不連続を適合的に平滑化する。
【００７３】
エントロピーコーダ９８０が、量子化器９７０の出力、ならびに特定のサイド情報（たとえば、動き情報９１５、量子化ステップサイズ）を圧縮する。一般的なエントロピー符号化技術は、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、ＬＺ符号化、ディクショナリ符号化、および上記の組合せを含む。エントロピーコーダ９８０は一般に、異なる種類の情報（たとえば、ＤＣ係数、ＡＣ係数、異なる種類のサイド情報）に対して異なる符号化技術を使用し、ある特定の符号化技術において、複数のコードテーブルの中から選択を行うことができる。
【００７４】
エントロピーコーダ９８０は、多重化装置［「ＭＵＸ」］９９０に、圧縮された映像情報９９５を提供する。ＭＵＸ９９０は、バッファを含むことができ、バッファレベル指示子は、レート制御のためにビットレート適応モジュールにフィードバックすることができる。ＭＵＸ９９０の前または後で、圧縮された映像情報９９５は、ネットワークを介した伝送用にチャネル符号化することができる。チャネル符号化は、圧縮された映像情報９９５に、誤差検出および修正データを加えることができる。
【００７５】
Ｃ．映像デコーダ
図１０は、一般的な映像デコーダシステム１０００のブロック図である。デコーダシステム１０００は、映像ピクチャの圧縮シーケンスに関する情報１０９５を受け取り、再構成されたピクチャ１００５を含む出力を生じる。映像デコーダの特定の実施形態では通常、一般化したデコーダ１０００の変形または補足バージョンを使用する。
【００７６】
デコーダシステム１０００は、予測ピクチャおよびキーピクチャを圧縮解除する。提示のため、図１０は、デコーダシステム１０００を通過するキーピクチャ用の経路、および順方向予測ピクチャ用の経路を示す。デコーダシステム１０００の構成要素の多くは、キーピクチャおよび予測ピクチャ両方の圧縮解除に使われる。そうした構成要素によって実施される正確な動作は、圧縮解除される情報のタイプに応じて変わり得る。
【００７７】
ＤＥＭＵＸ１０９０は、圧縮された映像シーケンスに関する情報１０９５を受け取り、受け取った情報をエントロピーデコーダ１０８０が利用できるようにする。ＤＥＭＵＸ１０９０は、ジッタバッファおよび他のバッファも含むことができる。ＤＥＭＵＸ１０９０の前または後で、圧縮された映像情報は、チャネル復号することができ、誤差検出および修正のために処理することができる。
【００７８】
エントロピーデコーダ１０８０は、エントロピー符号化されている、量子化されたデータ、ならびにエントロピー符号化されたサイド情報（たとえば、動き情報１０１５、量子化ステップサイズ）をエントロピー復号するが、通常、エンコーダにおいて実施されたエントロピーエンコードの逆を適用する。エントロピー復号化技術は、算術復号化、差分復号化、ハフマン復号化、ランレングス復号化、ＬＺ復号化、ディクショナリ復号化、および上記の組合せを含む。エントロピーデコーダ１０８０は一般に、異なる種類の情報（たとえば、ＤＣ係数、ＡＣ係数、異なる種類のサイド情報）に対して異なる復号化技術を使用し、ある特定の復号化技術において、複数のコードテーブルの中から選択を行うことができる。
【００７９】
デコーダ１０００は、たとえば、動きベクトル用の１つまたは複数の予測子を演算すること、差分動きベクトルをエントロピー復号すること、復号された差分動きベクトルを予測子と組み合わせて動きベクトルを再構成することによって、動き情報１０１５を復号する。インターレースＰフィールド用に動きベクトル予測子を演算し、差分動きベクトルを演算し、動きベクトルを再構成する様々な技術を、後で説明する。
【００８０】
動き補償器１０３０は、１つまたは複数の参照ピクチャ１０２５に動き情報１０１５を適用して、再構成されているピクチャ１００５の予測１０３５を形成する。たとえば、動き補償器１０３０は、１つまたは複数のマクロブロック動きベクトルを使って、参照ピクチャ（群）１０２５中のマクロブロック（群）を見つける。１つまたは複数のピクチャストア（たとえば、ピクチャストア１０２０、１０２２）が、参照ピクチャとして使うために、先行する再構成されたピクチャを格納する。通常、Ｂピクチャは、複数の参照ピクチャ（たとえば、時間的に先行する少なくとも１つの参照ピクチャおよび少なくとも１つの将来の参照ピクチャ）を有する。したがって、デコーダシステム１０００は、逆方向および順方向参照ピクチャに対して別々のピクチャストア１０２０および１０２２を使うことができる。動き補償器１０３０は、１ピクセル、１／２ピクセル、１／４ピクセル、または他のインクリメントで動きを補償することができ、動き補償の解像度を、ピクチャ単位または他の単位で切り換えることができる。動き補償の解像度は、水平方向および垂直方向において、同じでも異なってもよい。あるいは、動き補償器は、別のタイプの動き補償を適用する。動き補償器による予測が完璧であることはまれなので、デコーダ１０００は、予測残余も再構成する。
【００８１】
逆量子化器１０７０は、エントロピー復号されたデータを逆量子化する。概して、逆量子化器は、ピクチャ単位または他の単位で変化するステップサイズで、エントロピー復号されたデータに均一なスカラー逆量子化を適用する。代替的には、逆量子化器は、別のタイプの逆量子化、たとえば、均一でない量子化、ベクトル量子化、または非適応量子化をデータに適用し、あるいは逆周波数変換を使わないデコーダシステムにおいて、空間ドメインデータを直接逆量子化する。
【００８２】
逆周波数変換器１０６０は、量子化された、周波数ドメインデータを、空間ドメイン映像情報に変換する。ブロックベースの映像ピクチャに対して、逆周波数変換器１０６０は、周波数変換係数のブロックに、逆ＤＣＴ［「ＩＤＣＴ」］、ＩＤＣＴの変形、または他の逆ブロック変換を適用し、キーピクチャまたは予測ピクチャ用に、それぞれピクセルデータまたは予測残余データを生じる。代替的には、逆周波数変換器１０６０は、逆フーリエ変換など別の従来の逆周波数変換を適用し、あるいはウェーブレットまたはサブバンド合成を用いる。逆周波数変換器１０６０は、８×８、８×４、４×８、４×４または他のサイズの逆周波数変換を適用することもできる。
【００８３】
予測ピクチャに対して、デコーダ１０００は、再構成された予測残余１０４５を動き補償された予測１０３５と組み合わせて、再構成されたピクチャ１００５を形成する。デコーダが、再構成されたピクチャ１００５を後続の動き補償のために必要とする場合、ピクチャストアの１つ（たとえば、ピクチャストア１０２０）が、次のピクチャの予測に使うために、再構成されたピクチャ１００５をバッファリングする。一部の実施形態では、デコーダ１０００は、再構成されたピクチャに非ブロック化フィルタを適用して、ピクチャ中の不連続を適合的に平滑化する。
【００８４】
ＩＩＩ．動きベクトル予測
マクロブロック（またはブロック）に対する動きベクトルは、そうしたマクロブロック（またはブロック）の因果隣接部分における動きベクトルを予測するのに使うことができる。たとえば、エンコーダ／デコーダは、隣接する候補マクロブロックに対する動きベクトルの中から、現在のマクロブロック用の動きベクトル予測子を選択し、この動きベクトル予測子を用いて、現在のマクロブロックに対する動きベクトルを予測的にエンコードすることができる。エンコーダ／デコーダは、中央値３（ｍｅｄｉａｎ−ｏｆ−ｔｈｒｅｅ）の予測、中央値４（ｍｅｄｉａｎ−ｏｆ−ｆｏｕｒ）の予測、または他の何らかの技術を用いて、隣接マクロブロックの候補動きベクトルの中から、現在のマクロブロック用の動きベクトル予測子を決定することができる。中央値３の予測の手順を、図１３の擬似コード１３００に記述する。中央値４の予測の手順は、図１４の擬似コード１４００に記述する。
【００８５】
ＩＶ．インターレースピクチャに対するフィールド符号化
一般的なインターレース映像フレームは、別々の時間に走査される２つのフィールド（たとえば、トップフィールドおよびボトムフィールド）からなる。概して、インターレース映像フレームの複数の静止領域を、符号化フィールドによって一斉にエンコードする（「フレームモード」符号化）のが、より効率的である。他方ではしばしば、インターレース映像フレームの複数の動画領域を、符号化フィールドによって別個に符号化する（「フィールドモード」符号化）のが、より効率的である。というのは、こうした２つのフィールドが、異なる動きをする場合が多いからである。順方向予測インターレース映像フレームは、２つの別個の順方向予測フィールド、すなわちインターレースＰフィールドとして符号化することができる。順方向予測インターレース映像フレームに対してフィールドを別個に符号化することは、たとえば、インターレース映像フレーム全体に動きが多く、したがってフィールド間の差が多い場合に効率的であり得る。
【００８６】
Ａ．インターレースＰフィールド用の参照フィールド
インターレースＰフィールドは、１つまたは複数の他のフィールド（通常、ビットストリームに符号化できてもできなくてもよい先行フィールド）を参照する。たとえば、いくつかの実装形態では、インターレースＰフィールドは、１つまたは２つの参照フィールドを有することができる。インターレースＰフィールドが２つの参照フィールドを有する場合、Ｐフィールドのブロックまたはマクロブロックに対するある特定の動きベクトルは、２つの参照フィールドのうち選択された１つを参照する。図１５および１６は、２つの参照フィールドを有するインターレースＰフィールドの例を示す。図１５において、現在のフィールド１５１０は、時間的に先行するフレーム中のトップフィールド１５２０およびボトムフィールド１５３０を参照する。フィールド１５４０および１５５０は、インターレースＢフィールドなので、参照フィールドとして使用されない。図１６において、現在のフィールド１６１０は、現在のフィールド１６１０を含むインターレース映像フレームの直前の予測フレーム中のトップフィールド１６２０およびボトムフィールド１６３０を参照する。他の場合では、インターレースＰフィールドは、単一のフィールド、たとえば、最近のまたは２番目に最近のＩフィールドまたはＰフィールドを参照する。
【００８７】
あるいは、インターレースＰフィールドは、タイプまたは時間的な位置が異なるフレームの他のフィールドのうちのフィールドを、参照フィールドとして使うこともできる。
【００８８】
Ｂ．フィールドピクチャの調整システムおよびフィールド極性
動きベクトル単位は、ピクセル／サブピクセル単位でも、フィールド単位でも表すことができる。たとえば、動きベクトルの垂直成分が６つの４分の１ピクセル単位の変位を示す場合、フィールド中の各ラインが１ピクセルの高さなので、このことは、１．５フィールドラインの変位を示す。
【００８９】
図１７は、一実装形態における、動きベクトルの垂直成分と空間的な位置との間の関係を示す。図１７に示す例は、現在のフィールドタイプおよび参照フィールドタイプ（たとえば、上部および下部）の異なる３つの組合せに対する、異なる３つのシナリオ１７１０、１７２０および１７３０を示す。フィールドタイプが現在のフィールドおよび参照フィールドに対して異なる場合、極性は「反対」である。フィールドタイプが同じ場合、極性は「同じ」である。各シナリオに対して、図１７は、現在のフィールド中のピクセルである１つの縦の列、および参照フィールド中のピクセルである第２の縦の列を示す。実際には、２つの列は、水平に整列される。○は、実際の整数ピクセル位置を表し、Ｘは、補間された２分の１または４分の１ピクセル位置を表す。それぞれのフィールドが水平に整列されるので、水平成分の値（図示せず）は、インターレースによるどのオフセットも考慮しなくてよい。負の値は、図に示してある正の値の垂直オフセットと反対方向の、さらに上のオフセットを示す。
【００９０】
シナリオ１７１０において、極性は「反対」である。現在のフィールドはトップフィールドであり、参照フィールドはボトムフィールドである。現在のフィールドと比べて、参照フィールドの位置は、インターレースにより、下方向に２分の１ピクセル分オフセットされている。したがって、垂直動きベクトル成分の値０は、デフォルトの「動きがない」値として、現在のフィールド中の位置より下に２分の１ピクセル分オフセットされている、参照フィールド中の位置を表す。垂直成分の値＋２は、現在のフィールド中の位置より下に（絶対的に）１ピクセル分オフセットされている位置を表し、この値は、参照フィールドにおいて補間された値である。垂直成分＋４は、現在のフィールド中の位置より下に（絶対的に）１．５ピクセル分オフセットされている位置を表し、この値は、参照フィールドにおける実際の値である。
【００９１】
シナリオ１７２０において、極性はやはり「反対」である。現在のフィールドはボトムフィールドであり、参照フィールドはトップフィールドである。現在のフィールドと比較すると、参照フィールドの位置は、インターレースにより、２分の１ピクセル分、上方向にオフセットされている。したがって、垂直動きベクトル成分０は、現在のフィールド中の位置より（絶対的に）２分の１ピクセル分上にある参照フィールド中の位置を表し、垂直成分の値＋２は、現在のフィールド中の位置と（絶対的に）同じレベルにある位置を表し、垂直成分＋４は、現在のフィールド中の位置より（絶対的に）２分の１ピクセル分下にオフセットされている位置を表す。
【００９２】
シナリオ１７３０において、極性は「同じ」であり、現在のフィールドの位置が参照フィールドと比較して同じなので、垂直オフセットは適用されない。
【００９３】
あるいは、動きベクトルに対する変位は、異なる規約に従って表される。
【００９４】
Ｖ．インターレースＰフィールドの予測的符号化／復号化のための動きベクトル予測における革新
説明する実施形態は、インターレース映像（たとえば、インターレースＰフィールド）を符号化し復号する技術およびツールを含む。説明する技術およびツールは、互いにまたは他の技術およびツールと組み合わせて使うこともでき、それぞれ独立に使うこともできる。
【００９５】
具体的には、説明する技術およびツールは、たとえば、動き補償された予測符号化用の参照として２つのフィールドを使用するインターレースＰフィールドのブロックおよび／またはマクロブロック用の動きベクトル予測子を生成するための方法を指定する。説明する技術およびツールは、以下のものを含むがそれに限定されない１つまたは複数の革新を実装する。
【００９６】
１．２つの動きベクトル予測子、すなわち偶数フィールド参照用に１つ、奇数フィールド参照用に１つの予測子を生成する。各予測子は、先行して符号化された、隣接する３つの候補動きベクトルから導出される。
【００９７】
２．同じ参照フィールドの動きベクトル予測子を現在の動きベクトルとして使用する（両方とも同じ参照フィールドを参照する）。
【００９８】
３．あるフィールドに対する実際の動きベクトル予測子候補値をスケーリングして、動きベクトル予測のために、他のフィールド用の動きベクトル予測子候補を生成する。
【００９９】
４．現在のフィールドと上記２つの参照フィールドとの間の相対時間距離を使うスケーリング操作を用いて、一方の参照極性に対する動きベクトル予測子候補を、他方の極性である既存の動きベクトル予測子候補から導出する。
【０１００】
インターレース映像において、フィールドは、動き予測（イントラすなわちＩフィールド）を用いずに、順方向動き予測（Ｐフィールド）を用いて、または双方向予測（Ｂフィールド）を用いて符号化することができる。説明する技術およびツールは、具体的には、動き補償が、（表示順序において）最近の２つのＩフィールドまたはＰフィールドのいずれかを参照して起こり得る場合の、インターレースＰフィールドの部分に対する動きベクトル予測子の演算に関わる。２つの参照フィールドは反極性であり、つまり一方の参照フィールドがインターレース映像フレームの奇数ラインを表し、他方の参照フィールドが同じまたは異なるインターレース映像フレームの偶数ラインを表すと仮定する。これは、図２４に示す信号送信プロトコルに当てはまり、この図は、インターレースピクチャのフィールドピクチャタイプのシンタクス要素（ＦＰＴＹＰＥ）を示す。または、たとえば再度図１５を参照すると、現在のフィールド１５１０は、トップフィールド１５２０およびボトムフィールド１５３０を参照し、この２つのフィールドは、それぞれ映像フレームの奇数ラインおよび偶数ラインを表す。
【０１０１】
Ａ．二参照フィールドピクチャにおける動きベクトル予測
二参照フィールドＰフィールドを用いると、現在のフィールドは、同じ時間方向である２つのフィールド（たとえば、最近の２つの先行参照フィールド）を参照することができる。二参照フィールドインターレースＰフィールドの場合、エンコーダおよびデコーダは、ブロックまたはマクロブロックに対する動きベクトル用の２つの動きベクトル予測子の間で選択を行う。一部の実施形態では、一方の予測子が、現在のフィールドと同じ極性の参照フィールドであり、他方が、反極性の参照フィールドである。極性の他の組合せも可能である。
【０１０２】
一部の実施形態では、エンコーダ／デコーダは、奇数フィールド予測子および偶数フィールド予測子を見つけること、およびマクロブロックを処理するために予測子の１つを選択することによって、現在のブロックまたはマクロブロック用の動きベクトル予測子を計算する。たとえば、図１８は、可能な２つの参照フィールドを有するインターレースＰフィールドのブロックまたはマクロブロック用の動きベクトル予測子を演算する技術１８００を示す。
【０１０３】
１８１０で、エンコーダ／デコーダは、奇数フィールド動きベクトル予測子および偶数フィールド動きベクトル予測子を決定する。動きベクトル予測子の一方はしたがって、現在のフィールドと同じ極性を有し、他方の動きベクトル予測子は、反対の極性を有する。
【０１０４】
１８２０で、エンコーダ／デコーダは、奇数フィールド動きベクトル予測子および偶数フィールド動きベクトル予測子の中から、動きベクトル予測子を選択する。たとえば、エンコーダは、どちらがより優れた予測をもたらすかに基づいて、動きベクトル予測子の間で選択を行う。または、エンコーダは、現在予測が行われている動きベクトルと同じ参照フィールドを参照する動きベクトル予測子を選択する。エンコーダは、単純な選択信号を用いて、またはコンテキスト情報を組み込んだより複雑な信号を用いて、どちらの動きベクトル予測子を使うかを信号通知して、符号化効率を向上させる。コンテキスト情報は、奇数フィールドまたは偶数フィールドのどちらが、あるいは同極性フィールドまたは反極性フィールドのどちらが、ブロックまたはマクロブロック周辺の隣接部分において主に使われていたかを示すことができる。デコーダは、選択信号および／またはコンテキスト情報に基づいて、どちらの動きベクトル予測子を使うか選択する。
【０１０５】
１８３０で、エンコーダ／デコーダは、選択された動きベクトル予測子を用いて動きベクトルを処理する。たとえば、エンコーダは、動きベクトルと動きベクトル予測子との間の差分をエンコードする。または、デコーダは、動きベクトルの差分および動きベクトル予測子を組み合わせることによって、動きベクトルを復号する。
【０１０６】
別法としては、エンコーダおよび／またはデコーダは、奇数フィールド動きベクトル予測子の決定、または偶数フィールド動きベクトル予測子の決定をスキップすることができる。たとえば、ある特定のブロックまたはマクロブロックに対する動き補償のために奇数フィールドが使われるとエンコーダが決定した場合、エンコーダは、奇数フィールド動きベクトル予測子のみを決定する。あるいは、コンテキストおよび／または信号通知された情報から、動き補償のために奇数フィールドが使われるとデコーダが決定した場合、デコーダは、奇数フィールド動きベクトル予測子のみを決定する。このようにして、エンコーダおよびデコーダは、不必要な動作を回避することができる。
【０１０７】
一実装形態では、デコーダは、以下の技術を利用して、現在のインターレースＰフィールド用の動きベクトル予測子を決定する。
【０１０８】
インターレースＰフィールド中の動きベクトルを有する各ブロックまたはマクロブロックごとに、３つの候補動きベクトル予測子の２つの組が取得される。こうした候補動きベクトル予測子がそこから取得される隣接マクロブロックの、現在のマクロブロック１９００に相対的な位置を、図１９に示す。候補のうち３つは偶数参照フィールドであり、３つは奇数参照フィールドである。各候補方向（Ａ、ＢまたはＣ）にある隣接マクロブロックは、イントラ符号化されるか、または偶数フィールドまたは奇数フィールドのいずれかを参照する実際の動きベクトルを有するので、他のフィールドの動きベクトルを導出する必要がある。たとえば、所与のマクロブロックに対して、予測子Ａが、奇数フィールドを参照する動きベクトルを有すると仮定する。この場合、「偶数フィールド」予測子候補Ａが、「奇数フィールド」予測子候補Ａの動きベクトルから導出される。この導出は、スケーリング操作を用いて遂行される。（たとえば、以下の図２１Ａおよび２１Ｂの説明を参照されたい。）あるいは、導出は、別の方式で遂行される。
【０１０９】
３つの奇数フィールド候補動きベクトル予測子が取得されると、中央値の動作（ｍｅｄｉａｎ  ｏｐｅｒａｔｉｏｎ）が、３つの奇数フィールド候補から奇数フィールド動きベクトル予測子を導出するのに用いられる。同様に、３つの偶数フィールド候補動きベクトル予測子が取得されると、中央値の動作が、３つの偶数フィールド候補から偶数フィールド動きベクトル予測子を導出するのに用いられる。あるいは、別の機構が、候補フィールド動きベクトル予測子に基づいてフィールドの動きベクトル予測子を選択するのに用いられる。デコーダは、（たとえば、主要予測子を選択することによって）動きベクトル予測子として偶数フィールドを使うか、または奇数フィールドを使うかを決定し、偶数または奇数動きベクトル予測子が、動きベクトルを再構成するのに使われる。
【０１１０】
図２０Ａ〜２０Ｆの擬似コード２０００は、図１９のように配列された予測子Ａ、Ｂ、およびＣから、動きベクトル予測子を生成するのに用いられる処理を示す。図１９は、現在のインターレースＰフィールドの中央にある一般的なマクロブロックの隣接部分を示し、図２０Ａ〜２０Ｆの擬似コード２０００は、マクロブロックの位置に関する、様々な特殊ケースに対処する。さらに、擬似コード２０００は、様々な位置におけるブロックの動きベクトル用の動きベクトル予測子を演算するのに使うこともできる。
【０１１１】
擬似コード２０００において、「ｓａｍｅ  ｆｉｅｌｄ」および「ｏｐｐｏｓｉｔｅ  ｆｉｅｌｄ」という用語は、現在符号化中のまたは復号化中のフィールドに相対的であると理解されたい。現在のフィールドが偶数フィールドの場合、たとえば、「ｓａｍｅ  ｆｉｅｌｄ」は偶数参照フィールドであり、「ｏｐｐｏｓｉｔｅ  ｆｉｅｌｄ」は奇数参照フィールドである。擬似コード２０００の変数ｓａｍｅｆｉｅｌｄｐｒｅｄ＿ｘおよびｓａｍｅｆｉｅｌｄｐｒｅｄ＿ｙは、同じフィールドの動きベクトル予測子の水平および垂直成分を表し、変数ｏｐｐｏｓｉｔｅｆｉｅｌｄｐｒｅｄ＿ｘおよびｏｐｐｏｓｉｔｅｆｉｅｌｄｐｒｅｄ＿ｙは、反対フィールドの動きベクトル予測子の水平および垂直成分を表す。変数ｓａｍｅｃｏｕｎｔおよびｏｐｐｏｓｉｔｅｃｏｕｎｔは、それぞれ、現在のブロックまたはマクロブロックの隣接ブロックに対する動きベクトルのうち何個が、現在のフィールド用に「同じ」極性の参照フィールドを参照するか、また、何個が「反対」極性の参照フィールドを参照するかを追跡する。変数ｓａｍｅｃｏｕｎｔおよびｏｐｐｏｓｉｔｅｃｏｕｎｔは、擬似コードの冒頭において、０に初期化される。
【０１１２】
擬似コード２０００に挙げられているスケーリング操作ｓｃａｌｅｆｏｒｓａｍｅ（）およびｓｃａｌｅｆｏｒｏｐｐｏｓｉｔｅ（）は、隣接部分の実際の動きベクトルの値から、「他の」フィールド用の動きベクトル予測子候補を導出するのに使われる。スケーリング操作は、実装依存である。例としてのスケーリング操作を、図２１Ａ、２１Ｂ、２２、および２３を参照して後で説明する。あるいは、たとえば図１７に示すような垂直変位を補償するのに、他のスケーリング操作が用いられる。
【０１１３】
図２０Ａおよび２０Ｂは、一般的な内部ブロックまたはマクロブロック用の動きベクトル予測子を演算する擬似コードを示す。「イントラ」隣接ブロックに対する動きベクトルは、０に設定される。各隣接ブロックに対して、同じフィールドの動きベクトル予測子および反対フィールドの動きベクトル予測子が設定され、一方は隣接ブロックに対する動きベクトルの実際の値から設定され、他方は、その設定から導出される。候補の中央値は、同じフィールドの動きベクトル予測子および反対フィールドの動きベクトル予測子に対して演算され、「主要」予測子は、ｓａｍｅｃｏｕｎｔおよびｏｐｐｏｓｉｔｅｃｏｕｎｔから決定される。変数ｄｏｍｉｎａｎｔｐｒｅｄｉｃｔｏｒは、どちらのフィールドが主要動きベクトル予測子を含むかを示す。動きベクトル予測子は、３つの候補予測子のより多くと同じ極性の場合、主要予測子となる。（信号通知された値ｐｒｅｄｉｃｔｏｒ＿ｆｌａｇは、動きベクトルの差分データとともに復号され、主要または非主要予測子のいずれが使われるかを示す。）
図２０Ｃの擬似コードは、ＢまたはＣという隣接マクロブロックのない、１行あたりただ１つのマクロブロックを有する、インターレースＰフィールド中のマクロブロックという状況に対処する。図２０Ｄおよび２０Ｅの擬似コードは、隣接ブロックＣのない、インターレースＰフィールドの左端にあるブロックまたはマクロブロックという状況に対処する。ここで、動きベクトル予測子が、２つの候補予測子のより多くと同じ極性を持つ場合、主要予測子であり、同数の場合、反対フィールドの動きベクトル予測子が主要予測子である。最後に、図２０Ｆの擬似コードは、たとえば、インターレースＰフィールドの最上位行にあるマクロブロックの場合に対処する。
【０１１４】
Ｂ．別のフィールド動きベクトル予測子から、１つのフィールド動きベクトル予測子を導出するためのスケーリング
一実装形態では、エンコーダ／デコーダが、図２１Ａおよび２１Ｂの擬似コード２１００に示すスケーリング操作を用いて、別のフィールド動きベクトル予測子から１つのフィールド動きベクトル予測子を導出する。ＳＣＡＬＥＯＰＰ、ＳＣＡＬＥＳＡＭＥ１、ＳＣＡＬＥＳＡＭＥ２、ＳＣＡＬＥＺＯＮＥ１＿Ｘ、ＳＣＡＬＥＺＯＮＥ１＿Ｙ、ＺＯＮＥ１ＯＦＦＳＥＴ＿ＸおよびＺＯＮＥ１ＯＦＦＳＥＴ＿Ｙの値は、実装依存である。値の、可能な２つの組を、現在のフィールドがインターレース映像フレーム中の第１のフィールドである場合は図２２のテーブル２２００に示し、現在のフィールドがインターレース映像フレーム中の第２のフィールドである場合は図２３のテーブル２３００に示す。テーブル２２００および２３００において、参照フレーム距離は、現在のフィールドと、時間的に最も遠い参照フィールドを含むフレームとの間のＢピクチャ（すなわち、２つのＢフィールドを含む映像フレーム）の数として定義される。
【０１１５】
テーブル２２００および２３００に示す例では、値Ｎは、動きベクトル範囲に依存する。たとえば、拡張された動きベクトル範囲は、シンタクス要素ＥＸＴＥＮＤＥＤ＿ＭＶ＝１によって信号通知することができる。ＥＸＴＥＮＤＥＤ＿ＭＶ＝１の場合、ＭＶＲＡＮＧＥシンタクス要素がピクチャヘッダ中に存在し、動きベクトル範囲を信号通知する。ＥＸＴＥＮＤＥＤ＿ＭＶ＝０の場合、デフォルトの動きベクトル範囲が使われる。テーブル１は、ＮとＭＶＲＡＮＧＥとの間の関係を示す。
【０１１６】
【表１】
2008278547.tif 000003
【０１１７】
テーブル２２００および２３００に示す値は、実装に応じて変更することができる。
別法としては、拡張動きベクトル範囲情報が使用されず、またはスケーリングを他の何らかの方法で実施することができる。
【０１１８】
ＶＩ．複合実装形態
ここでは、ビットストリームのシンタクスおよびデコーダの詳細な複合実装形態を、主たる複合実装形態とのわずかな違いを有する代替複合実装形態とともに説明する。
【０１１９】
Ａ．ビットストリームのシンタクス
様々な複合実装形態において、インターレースＰフィールドのデータは、複数の層（たとえば、シーケンス、フレーム、フィールド、マクロブロック、ブロックおよび／または下位ブロック層）を有するビットストリームの形で示される。インターレースＰフィールドを含む各フレームのデータは、フレームヘッダからなり、ヘッダの後には、フィールド層のデータが続く。インターレースＰフィールドを含むフレームのフレームヘッダを構成するビットストリーム要素を、図２４に示す。インターレースＰフィールド用のフィールドヘッダを構成するビットストリーム要素を、図２５に示す。インターレースＰフィールド用のマクロブロック層を構成するビットストリーム要素を、図２６に示す。以下のセクションでは、インターレースＰフィールドのブロックまたはマクロブロックに対する動きベクトル予測の信号通知に関連するフレーム層、フィールド層およびマクロブロック層内の、選択されたビットストリーム要素を説明する。
【０１２０】
１．選択されたフレーム層の要素
図２４は、複合実装形態における、インターレースＰフィールドを含むフレーム用の、フレームレベルのビットストリームのシンタクスを示す図である。具体的なビットストリーム要素を以下で説明する。
【０１２１】
フレーム符号化モード（ＦＣＭ）（可変サイズ）
ＦＣＭは、ピクチャの符号化タイプを示すのに使われる、可変長コードワード［「ＶＬＣ」］である。ＦＣＭは、以下のテーブル２に示すように、フレーム符号化モードに対する値をとる。
【０１２２】
【表２】
2008278547.tif 000004
【０１２３】
フィールドピクチャタイプ（ＦＰＴＹＰＥ）（３ビット）
ＦＰＴＹＰＥは、インターレースＰフィールドを含むフレームのフレームヘッダ中に示される３ビットのシンタクス要素である。ＦＰＴＹＰＥは、以下のテーブル３に従って、フィールドタイプの、異なる組合せに対して値をとる。
【０１２４】
【表３】
2008278547.tif 000005
【０１２５】
Ｐ参照距離（ＲＥＦＤＩＳＴ）（可変サイズ）
ＲＥＦＤＩＳＴは、可変サイズのシンタクス要素である。この要素は、現在のフレームと参照フレームとの間のフレームの数を示す。テーブル４は、ＲＥＦＤＩＳＴの値をエンコードするのに使われるＶＬＣを示す。
【０１２６】
【表４】
2008278547.tif 000006
【０１２７】
テーブル４の最後の行は、２より大きい参照フレーム距離を表すのに使われるコードワードを示す。こうしたコードワードは、（バイナリ）１１として符号化され、その後にＮ−３  １ｓが続く。Ｎは、参照フレーム距離である。コードワード中の最終ビットは０である。たとえば、以下のようになる。
Ｎ＝３，ＶＬＣ  Ｃｏｄｅｗｏｒｄ＝１１０，ＶＬＣ  Ｓｉｚｅ＝３
Ｎ＝４，ＶＬＣ  Ｃｏｄｅｗｏｒｄ＝１１１０，ＶＬＣ  Ｓｉｚｅ＝４
Ｎ＝５，ＶＬＣ  Ｃｏｄｅｗｏｒｄ＝１１１１０，ＶＬＣ  Ｓｉｚｅ＝５
【０１２８】
代替複合実装形態では、ピクチャタイプ情報が、インターレースＰフィールドを含むフレームのフレームレベルではなく、インターレースＰフィールドのフィールドレベルの冒頭で信号通知され、Ｐ参照距離は省略される。
【０１２９】
２．選択されるフィールド層要素
図２５は、複合実装形態における、インターレースＰフィールド用の、フィールドレベルのビットストリームのシンタクスを示す図である。具体的なビットストリーム要素を、以下で説明する。
【０１３０】
参照ピクチャ数（ＮＵＭＲＥＦ）（１ビット）
ＮＵＭＲＥＦシンタクス要素は、現在のフィールドが１つまたは２つの先行参照フィールドピクチャを参照することができるかを示す１ビットのシンタクス要素である。ＮＵＭＲＥＦ＝０の場合、現在のＰフィールドピクチャは、１つのフィールドのみを参照することができる。この場合、ＲＥＦＦＩＥＬＤシンタクス要素は、ピクチャ層ビットストリーム中に続く。２つの参照フィールドを有するインターレースＰフィールドの場合、ＮＵＭＲＥＦ＝１である。
【０１３１】
参照フィールドピクチャ指示子（ＲＥＦＦＩＥＬＤ）（１ビット）
ＲＥＦＦＩＥＬＤは、ＮＵＭＲＥＦ＝０の場合、インターレースＰフィールドピクチャヘッダ中に存在する１ビットのシンタクス要素である。ＲＥＦＦＩＥＬＤは、先行して復号されたどのフィールドが、参照として使われるかを示す。ＲＥＦＦＩＥＬＤ＝０の場合、（表示順序において）時間的に最も近いＩまたはＰフィールドが、参照として使われる。ＲＥＦＦＩＥＬＤ＝１の場合、時間的に２番目に近いＩまたはＰフィールドピクチャが、参照として使われる。
【０１３２】
拡張ＭＶ範囲フラグ（ＭＶＲＡＮＧＥ）（可変サイズ）
ＭＶＲＡＮＧＥは、シーケンス層のＥＸＴＥＮＤＥＤ＿ＭＶビットが１にセットされているときに存在する可変サイズのシンタクス要素である。ＭＶＲＡＮＧＥ  ＶＬＣは、動きベクトル範囲を表す。
【０１３３】
拡張差分ＭＶ範囲フラグ（ＤＭＶＲＡＮＧＥ）（可変サイズ）
ＤＭＶＲＡＮＧＥは、シーケンスレベルのシンタクス要素ＥＸＴＥＮＤＥＤ＿ＤＭＶ＝１のときに存在する可変サイズのシンタクス要素である。ＤＭＶＲＡＮＧＥ  ＶＬＣは、動きベクトルの差分範囲を表す。
【０１３４】
動きベクトルモード（ＭＶＭＯＤＥ）（可変サイズまたは１ビット）
ＭＶＭＯＤＥシンタクス要素は、４つの動きベクトル符号化モードの１つまたは１つの強度補償モードを信号通知する。いくつかの後続要素は、追加の動きベクトルモードおよび／または強度補償情報を提供する。
【０１３５】
マクロブロックモードテーブル（ＭＢＭＯＤＥＴＡＢ）（２または３ビット）
ＭＢＭＯＤＥＴＡＢシンタクス要素は、固定長フィールドである。インターレースＰフィールドに対して、ＭＢＭＯＤＥＴＡＢは、８個のハフマンテーブルのどの１つが、マクロブロック層内の、マクロブロックモードのシンタクス要素（ＭＢＭＯＤＥ）を復号するのに使われるかを示す３ビットの値である。
【０１３６】
動きベクトルテーブル（ＭＶＴＡＢ）（２または３ビット）
ＭＶＴＡＢシンタクス要素は、２または３ビット値である。ＮＵＭＲＥＦ＝１であるインターレースＰフィールドに対して、ＭＶＴＡＢは、８個のインターレースハフマンテーブルのどれが、動きベクトルデータを復号するのに使われるかを示す３ビットのシンタクス要素である。
【０１３７】
４ＭＶブロックパターンテーブル（４ＭＶＢＰＴＡＢ）（２ビット）
４ＭＶＢＰＴＡＢシンタクス要素は、２ビット値である。インターレースＰフィールドに対して、この要素は、ＭＶＭＯＤＥ（または、ＭＶＭＯＤＥが強度補償に設定されている場合はＭＶＭＯＤＥ２）が、ピクチャが「混合ＭＶ」タイプであることを示す場合のみ存在する。４ＭＶＢＰＴＡＢシンタクス要素は、４つのハフマンテーブルのどれが、４ＭＶマクロブロック中の４ＭＶブロックパターン（４ＭＶＢＰ）シンタクス要素を復号するのに使われるかを信号通知する。
【０１３８】
３．選択されるマクロブロック層要素
図２６は、複合実装形態における、インターレースＰフィールド用のマクロブロックレベルのビットストリームのシンタクスを示す図である。特定のビットストリーム要素を、以下で説明する。マクロブロック用のデータは、マクロブロックヘッダからなり、ヘッダの後に、ブロック層データが続く。
【０１３９】
マクロブロックモード（ＭＢＭＯＤＥ）（可変サイズ）
ＭＢＭＯＤＥシンタクス要素は、以下のセクションＶＩ．Ｂ．３．で詳しく説明するように、マクロブロックタイプ（１ＭＶ、４ＭＶまたはイントラ）、ならびにＣＢＰフラグの存在および動きベクトルデータも示す。
【０１４０】
動きベクトルデータ（ＭＶＤＡＴＡ）（可変サイズ）
ＭＶＤＡＴＡは、マクロブロック用の動きベクトル（群）に対する差分をエンコードする可変サイズのシンタクス要素であり、その復号化は、以下のセクションＶＩ．Ｂ．３．で詳しく説明する。
【０１４１】
４ＭＶブロックパターン（４ＭＶＢＰ）（４ビット）
４ＭＶＢＰシンタクス要素は、４つの輝度ブロックのどれが、ゼロでない動きベクトルの差分を含むかを示し、その使用法は、以下のセクションＶＩ．Ｂ．３．で詳しく説明する。
【０１４２】
ブロックレベルの動きベクトルデータ（ＢＬＫＭＶＤＡＴＡ）（可変サイズ）
ＢＬＫＭＶＤＡＴＡは、ブロックの動き情報を含む可変サイズのシンタクス要素であり、４ＭＶマクロブロック中に存在する。
【０１４３】
ハイブリッド動きベクトル予測（ＨＹＢＲＩＤＰＲＥＤ）（１ビット）
ＨＹＢＲＩＤＰＲＥＤは、動きベクトルごとに１つの１ビットのシンタクス要素である。予測子が、ビットストリーム中で明示的に符号化されている場合、動きベクトル予測子として、予測子Ａまたは予測子Ｃのどちらを使うかを示すビットが存在する。
【０１４４】
Ｂ．インターレースＰフィールドの復号化
以下のセクションでは、複合実装形態における、インターレースＰフィールドを復号する処理を説明する。
【０１４５】
１．フレーム／フィールド層の復号化
参照ピクチャ
Ｐフィールドピクチャは、先行して復号された１つまたは２つのフィールドを参照することができる。ピクチャ層内のＮＵＭＲＥＦシンタクス要素は、現在のフィールドが、１つまたは２つの先行参照フィールドピクチャを参照することができるかを示す１ビットのシンタクス要素である。ＮＵＭＲＥＦ＝０の場合、現在のインターレースＰフィールドピクチャのブロックおよびマクロブロックは、１つのフィールドのみを参照することができる。ＮＵＭＲＥＦ＝１の場合、現在のインターレースＰフィールドピクチャのブロックおよびマクロブロックは、（表示順序において）２つの時間的に最も近いＩまたはＰフィールドピクチャのいずれかを、参照として使うことができる。
【０１４６】
図１５および１６は、２つの参照Ｐフィールドの例を示す。
【０１４７】
Ｐフィールドピクチャタイプ
インターレースＰフィールドピクチャは、２つのタイプ、すなわち１ＭＶまたは混合ＭＶの一方とすることができる。以下のセクションで、各タイプを説明する。１ＭＶのＰフィールドでは、マクロブロック中の６個すべてのブロックに対する予測ブロックの変位を示すのに、動き補償されたマクロブロック１つに対して単一の動きベクトルが使われる。１ＭＶモードは、ＭＶＭＯＤＥおよびＭＶＭＯＤＥ２のピクチャ層シンタクス要素によって信号通知される。
【０１４８】
混合ＭＶのＰフィールドでは、動き補償された各マクロブロックは、１ＭＶまたは４ＭＶマクロブロックとしてエンコードすることができる。４ＭＶマクロブロックでは、４つの輝度ブロックはそれぞれ、それに関連づけられた動きベクトルを有する。混合ＭＶのＰフィールドでは、各マクロブロックに対する１ＭＶまたは４ＭＶモードが、すべてのマクロブロックにおいて、ＭＢモードのシンタクス要素によって示される。混合ＭＶモードは、ＭＶＭＯＤＥおよびＭＶＭＯＤＥ２のピクチャ層シンタクス要素によって信号通知される。
【０１４９】
２．マクロブロック層の復号化
インターレースＰフィールドピクチャ中のマクロブロックは、可能な３つのタイプ、すなわち１ＭＶ、４ＭＶ、およびイントラの１つとすることができる。マクロブロックタイプは、マクロブロック層中のＭＢＭＯＤＥのシンタクス要素によって信号通知される。以下のセクションでは、１ＭＶおよび４ＭＶタイプ、ならびにどのようにしてそうしたタイプが信号通知されるかを説明する。
【０１５０】
１ＭＶマクロブロック
１ＭＶマクロブロックは、１ＭＶおよび混合ＭＶのＰフィールドピクチャ中で出現することができる。１ＭＶマクロブロックは、その中において、単一の動きベクトルが、マクロブロック中の６個すべてのブロックに対する、現在のピクチャと参照ピクチャとの間の変位を表すマクロブロックである。１ＭＶマクロブロックに対して、マクロブロック層内のＭＢＭＯＤＥのシンタクス要素は、３つのことを示す。
１）マクロブロックタイプが１ＭＶである
２）ＣＢＰＣＹシンタクス要素が存在するかどうか
３）ＭＶＤＡＴＡシンタクス要素が存在するかどうか
【０１５１】
ＭＢＭＯＤＥのシンタクス要素が、ＣＢＰＣＹシンタクス要素が存在することを示す場合、ＣＢＰＣＹシンタクス要素は、対応する位置にあるマクロブロック層内に存在する。ＣＢＰＣＹは、６個のブロックのどれが、ブロック層において符号化されているかを示す。ＭＢＭＯＤＥのシンタクス要素が、ＣＢＰＣＹシンタクス要素が存在しないことを示す場合、ＣＢＰＣＹは０に等しいと仮定され、マクロブロック中の６個のブロックのどれに対しても、ブロックデータは存在しない。
【０１５２】
ＭＢＭＯＤＥのシンタクス要素が、ＭＶＤＡＴＡシンタクス要素が存在することを示す場合、ＭＶＤＡＴＡシンタクス要素は、対応する位置にあるマクロブロック層内に存在する。ＭＶＤＡＴＡシンタクス要素は、動きベクトルの差分をエンコードする。動きベクトルの差分は、動きベクトル予測子と組み合わされて、動きベクトルを再構成する。ＭＢＭＯＤＥのシンタクス要素が、ＭＶＤＡＴＡシンタクス要素が存在しないことを示す場合、動きベクトルの差分は０に等しいと仮定され、したがって、動きベクトルは、動きベクトル予測子に等しい。
【０１５３】
４ＭＶマクロブロック
４ＭＶマクロブロックは、混合ＭＶのＰフィールドピクチャ中にのみ出現することができる。４ＭＶマクロブロックとは、その中で、マクロブロック中の４つの輝度ブロックがそれぞれ、そのブロックに対する現在のピクチャと参照ピクチャとの間の変位を示す、関連づけられた動きベクトルを有するマクロブロックである。彩度ブロックに対する変位は４つの輝度動きベクトルから導出される。
【０１５４】
４ＭＶマクロブロックに対して、マクロブロック層内のＭＢＭＯＤＥのシンタクス要素は、２つのことを示す。
１）マクロブロックタイプが４ＭＶである
２）ＣＢＰＣＹシンタクス要素が存在するかどうか
【０１５５】
４ＭＶＢＰシンタクス要素は、４つの輝度ブロックのどれが、ゼロでない動きベクトルの差分を含むかを示す。４ＭＶＢＰシンタクス要素は、０と１５との間の値に復号する。４ＭＶＢＰ中の４ビットの位置それぞれに対して、値０は、そのブロックに対して動きベクトルの差分（ＢＬＫＭＶＤＡＴＡ）が存在しないことを示し、動きベクトルの差分は、０であると仮定される。値１は、そのブロックに対して、動きベクトルの差分（ＢＬＫＭＶＤＡＴＡ）が対応する位置にあることを示す。たとえば、４ＭＶＢＰが値１１００（バイナリ）に復号する場合、ビットストリームは、ブロック０および１に対するＢＬＫＭＶＤＡＴＡを含み、ブロック２および３に対しては、ＢＬＫＭＶＤＡＴＡは存在しない。
【０１５６】
代替実装形態では、ＭＢＭＯＤＥのシンタクス要素は、４ＭＶＢＰシンタクス要素が存在するかを示すことができる。ＭＢＭＯＤＥのシンタクス要素が、４ＭＶＢＰシンタクス要素が存在しないことを示す場合、動きベクトルの差分データ（ＢＬＫＭＶＤＡＴＡ）が４つすべての輝度ブロックに対して存在すると仮定される。
【０１５７】
ＭＶＭＯＤＥ／ＭＶＭＯＤＥ２のシンタクス要素が、混合ＭＶまたは全部が１ＭＶのどちらを示すかに応じて、ＭＢＭＯＤＥは、以下のように情報を信号通知する。テーブル５は、どのようにしてＭＢＭＯＤＥが、全部が１ＭＶのピクチャ中のマクロブロックについての情報を信号通知するかを示す。
【０１５８】
【表５】
2008278547.tif 000007
【０１５９】
テーブル６は、どのようにしてＭＢＭＯＤＥが、混合ＭＶピクチャ中のマクロブロックについての情報を信号通知するかを示す。
【０１６０】
【表６】
2008278547.tif 000008
【０１６１】
８個のテーブルの１つが、ＭＢＭＯＤＥを信号通知するのに使われる。そのテーブルは、ＭＢＭＯＤＥＴＡＢシンタクス要素を介して、ピクチャ層で信号通知される。
【０１６２】
３．動きベクトルの復号化処理
以下のセクションでは、Ｐフィールドピクチャのブロックおよびマクロブロックに対する、動きベクトルの復号化処理を説明する。
【０１６３】
動きベクトルの差分の復号化
ＭＶＤＡＴＡまたはＢＬＫＭＶＤＡＴＡシンタクス要素は、マクロブロック、またはマクロブロック中のブロックに対する動き情報をエンコードする。１ＭＶマクロブロックは、ただ１つのＭＶＤＡＴＡシンタクス要素を有し、４ＭＶマクロブロックは、ゼロから４つのＢＬＫＭＶＤＡＴＡ要素を有することができる。以下のセクションでは、単参照（ｏｎｅ−ｒｅｆｅｒｅｎｃｅ）（ピクチャ層シンタクス要素ＮＵＭＲＥＦ＝０）および二参照（ピクチャ層シンタクス要素ＮＵＭＲＥＦ＝１）の場合の動きベクトルの差分を演算する方法を説明する。
【０１６４】
単参照フィールドピクチャにおける動きベクトルの差分
１つの参照フィールドのみを有するフィールドピクチャでは、マクロブロック層内の各ＭＶＤＡＴＡまたはＢＬＫＭＶＤＡＴＡシンタクス要素は、１）水平動きベクトルの差分成分、および２）垂直動きベクトルの差分成分の２つを共同でエンコードする。
【０１６５】
ＭＶＤＡＴＡまたはＢＬＫＭＶＤＡＴＡシンタクス要素は、可変長ハフマンコードワードであり、その後に固定長コードワードが続く。ハフマンコードワードの値は、固定長コードワードのサイズを決定する。ピクチャ層内のＭＶＴＡＢシンタクス要素は、可変サイズのコードワードを復号するのに使われるハフマンテーブルを指定する。
【０１６６】
図２７Ａの擬似コード２７００は、どのようにして動きベクトルの差分が単参照フィールド用に復号されるかを示す。値ｄｍｖ＿ｘおよびｄｍｖ＿ｙは、擬似コード２７００において演算される。この２つの値は、以下のように定義される。
【０１６７】
ｄｍｖ＿ｘ：差分水平動きベクトル成分
ｄｍｖ＿ｙ：差分垂直動きベクトル成分
ｋ＿ｘ、ｋ＿ｙ：長い動きベクトル用の固定長
ｋ＿ｘおよびｋ＿ｙは、ＭＶＲＡＮＧＥシンボルによって定義される動きベクトル範囲に依存する。
【０１６８】
【表７】
2008278547.tif 000009
【０１６９】
ｅｘｔｅｎｄ＿ｘ：水平動きベクトルの差分用の拡張範囲
ｅｘｔｅｎｄ＿ｙ：垂直動きベクトルの差分用の拡張範囲
ｅｘｔｅｎｄ＿ｘおよびｅｘｔｅｎｄ＿ｙは、ＤＭＶＲＡＮＧＥピクチャフィールドシンタクス要素から導出される。ＤＭＶＲＡＮＧＥが、水平成分用の拡張範囲が使われることを示す場合、ｅｘｔｅｎｄ＿ｘ＝１である。そうでない場合、ｅｘｔｅｎｄ＿ｘ＝０である。同様に、ＤＭＶＲＡＮＧＥが、垂直成分用の拡張範囲が使われることを示す場合、ｅｘｔｅｎｄ＿ｙ＝１である。そうでない場合、ｅｘｔｅｎｄ＿ｙ＝０である。
【０１７０】
ｏｆｆｓｅｔ＿ｔａｂｌｅは、擬似コード２７００で使われる配列であり、図２７Ａに示すように定義される。
【０１７１】
図２７Ｂの擬似コード２７１０は、代替複合実装形態において、どのようにして動きベクトルの差分が単参照フィールド用に復号されるかを示す。擬似コード２７１０は、動きベクトルの差分を異なる方法で復号する。たとえば、擬似コード２７１０では、拡張された動きベクトルの差分範囲の処理を省く。
【０１７２】
二参照フィールドピクチャにおける動きベクトルの差分
二参照フィールドピクチャは、フィールドピクチャを用いたインターレースフレームの符号化において出現する。シーケンスの各フレームは、２つのフィールドに分離され、各フィールドは、本質的にプログレッシブコード経路であるものを用いて符号化される。フィールドピクチャはしばしば、２つの参照フィールドを有し、この場合のフィールドピクチャ動きベクトルの符号化を、以下で説明する。
【０１７３】
２つの参照フィールドを有するフィールドピクチャにおいて、マクロブロック層内の各ＭＶＤＡＴＡまたはＢＬＫＭＶＤＡＴＡシンタクス要素は共同で、１）水平動きベクトルの差分成分、２）垂直動きベクトルの差分成分、および３）主要または非主要予測子のいずれが使われるか、すなわち、２つのフィールドのどちらが動きベクトルによって参照されるかという３つのものをエンコードする。
【０１７４】
ＭＶＤＡＴＡまたはＢＬＫＭＶＤＡＴＡシンタクス要素は、可変長ハフマンコードワードであり、その後に固定長コードワードが続く。ハフマンコードワードの値は、固定長コードワードのサイズを決定する。ピクチャ層内のＭＶＴＡＢシンタクス要素は、可変サイズのコードワードを復号するのに使われるハフマンテーブルを指定する。
【０１７５】
図２８Ａの擬似コード２８００は、動きベクトルの差分、ならびに主要／非主要予測子情報がどのようにして復号されるかを示す。
【０１７６】
値ｐｒｅｄｉｃｔｏｒ＿ｆｌａｇ、ｄｍｖ＿ｘおよびｄｍｖ＿ｙは、図２８Ａの擬似コード２８００において演算される。図２７Ａの擬似コード２７００に示す変数および配列に加え、擬似コード２８００は、主要または非主要動きベクトル予測子のいずれが使われる（０のときは主要予測子が使われ、１のときは非主要予測子が使われる）かを示すバイナリフラグである変数ｐｒｅｄｉｃｔｏｒ＿ｆｌａｇと、図２８に示すように定義される配列であるテーブルｓｉｚｅ＿ｔａｂｌｅとを含む。
【０１７７】
図２８Ｂの擬似コード２８１０は、代替複合実装形態において、どのようにして動きベクトルの差分が二参照フィールド用に復号されるかを示す。擬似コード２８１０は、動きベクトルの差分を異なる方法で復号する。たとえば、擬似コード２８１０では、拡張された動きベクトルの差分範囲の処理を省く。
【０１７８】
動きベクトル予測子
動きベクトルは、先行セクションにおいて演算された動きベクトルの差分を動きベクトル予測子に加えることによって演算される。動きベクトル予測子は、最大３つの隣接動きベクトルから演算される。以下のセクションでは、本複合実装形態において、どのようにして動きベクトル予測子が、１ＭＶのＰフィールドピクチャおよび混合ＭＶのＰフィールドピクチャ中のマクロブロックに対して計算されるを説明する。
【０１７９】
１ＭＶインターレースＰフィールドにおける動きベクトル予測子
図２９Ａおよび２９Ｂは、インターレースＰフィールド中の１ＭＶマクロブロック用の候補動きベクトル予測子に対して検討されるマクロブロックの位置を示す図である。１ＭＶインターレースＰフィールドにおいて、候補予測子は、マクロブロックが行の中の最後のマクロブロックである場合を除き、左のマクロブロック、上のマクロブロック、および右上のマクロブロックから選ばれる。マクロブロックが行の中の最後のマクロブロックである場合、予測子Ｂは、右上ではなく左上のマクロブロックから選ばれる。フレームの幅が１つ分のマクロブロックである特殊な場合、予測子は常に予測子Ａ（上の予測子）である。現在のマクロブロックが最上位行にある（ＡおよびＢ予測子ももたず、または予測子を全くもたない）特殊な場合は、図２０Ａ〜２０Ｆを参照して上記で対処される。
【０１８０】
混合ＭＶのＰピクチャにおける動きベクトル予測子
図３０Ａ〜３４は、混合ＭＶのＰフィールドピクチャ中の１ＭＶまたは４ＭＶマクロブロック用の動きベクトルに対する最大３つの候補動きベクトルに対して検討されるブロックまたはマクロブロックの位置を示す。以下の図において、大きい四角形はマクロブロック境界であり、小さい四角形はブロック境界である。フレームの幅が１つ分のマクロブロックである特殊な場合、予測子は常に予測子Ａ（上の予測子）である。現在のマクロブロックが最上位行にある特殊な場合は、図２０Ａ〜２０Ｆを参照して上記で対処される。
【０１８１】
図３０Ａおよび３０Ｂは、混合１ＭＶ／４ＭＶインターレースＰフィールド中の、１ＭＶの現在のマクロブロック用の候補動きベクトル予測子に対して検討されるブロックの位置を示す図である。隣接マクロブロックは、１ＭＶマクロブロックでも、４ＭＶマクロブロックでもよい。図３０Ａおよび３０Ｂは、隣接マクロブロックが４ＭＶである（すなわち、予測子Ａが、現在のマクロブロックの上にあるマクロブロック中のブロック２に対する動きベクトルであり、予測子Ｃが、現在のマクロブロックのすぐ左にあるマクロブロック中のブロック１に対する動きベクトルである）と仮定した場合の候補動きベクトルの位置を示す。隣接マクロブロックのどれかが１ＭＶマクロブロックである場合、図２９Ａおよび２９Ｂに示す動きベクトル予測子は、マクロブロック全体に対するベクトルであるとみなされる。図３０Ｂが示すように、マクロブロックが行の最後のマクロブロックである場合、予測子Ｂは、それ以外の場合と同様に右上のマクロブロックのブロック２からではなく、左上のマクロブロックのブロック３からの予測子である。
【０１８２】
図３１Ａ〜３４は、４ＭＶマクロブロック中の４つの輝度ブロックそれぞれに対する候補動きベクトル予測子用に検討されるブロックの位置を示す。図３１Ａおよび３１Ｂは、混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロックの位置０にあるブロック用の候補動きベクトル予測子に対して検討されるブロックの位置を示す図である。図３２Ａおよび３２Ｂは、混合インターレースＰフィールド中の４ＭＶマクロブロックの位置１にあるブロック用の候補動きベクトル予測子に対して検討されるブロックの位置を示す図である。図３３は、混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロックの位置２にあるブロック用の候補動きベクトル予測子に対して検討されるブロックの位置を示す図である。図３４は、混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロックの位置３にあるブロック用の候補動きベクトル予測子に対して検討されるブロックの位置を示す図である。やはり、隣接マクロブロックが１ＭＶマクロブロックの場合、そのマクロブロック用の動きベクトル予測子が、マクロブロックのブロック用に使われる。
【０１８３】
マクロブロックが行の最初のマクロブロックである場合、ブロック０用の予測子Ｂは、行にある残りのマクロブロックとは違うやり方で処理される。この場合、予測子Ｂは、他の場合と同様に現在のマクロブロックの左上にあるマクロブロック中のブロック３ではなく、現在のマクロブロックのすぐ上にあるマクロブロック中のブロック３から選ばれる。同様に、マクロブロックが行の最後のマクロブロックである場合、ブロック１用の予測子Ｂは違うやり方で処理される。この場合、予測子は、他の場合と同様に現在のマクロブロックの右上にあるマクロブロック中のブロック２ではなく、現在のマクロブロックのすぐ上にあるマクロブロック中のブロック２から選ばれる。マクロブロックが最初のマクロブロック列にある場合、ブロック０および２用の予測子Ｃは、０に設定される。
【０１８４】
主要ＭＶ予測子および非主要ＭＶ予測子
二参照フィールドのＰフィールドピクチャでは、各インター符号化マクロブロックごとに、２つの動きベクトル予測子が導出される。１つは主要フィールドからであり、もう１つは非主要フィールドからである。主要フィールドは、隣接マクロブロック中の実際値動きベクトル予測子候補の大部分を含むフィールドであるとみなされる。同数の場合は、反対フィールド用の動きベクトル予測子が主要予測子であるとみなされる。イントラ符号化マクロブロックは、主要／非主要予測子の計算において考慮されない。すべての候補予測子マクロブロックがイントラ符号化されている場合、主要および非主要動きベクトル予測子はゼロに設定され、主要予測子は反対フィールドからのものであるとみなされる。
【０１８５】
動きベクトル予測子の計算
ＮＵＭＲＥＦ＝１の場合、現在のフィールドピクチャは、２つの最近のフィールドピクチャを参照することができ、２つの動きベクトル予測子が、ブロックまたはマクロブロックの各動きベクトル用に計算される。図３５Ａ〜３５Ｆの擬似コード３５００は、複合実装形態において、二参照の場合にどのようにして動きベクトル予測子が計算されるかを説明する。（図２０Ａ〜２０Ｆの擬似コード２０００は、別の実装形態において、二参照の場合にどのようにして動きベクトル予測子が計算されるかを説明する）。二参照ピクチャ（ＮＵＭＲＥＦ＝１）では、現在のフィールドは、２つの最近のフィールドを参照することができる。一方の予測子は、同じ極性の参照フィールド用であり、他方は、反極性の参照フィールド用である。
【０１８６】
複合実装形態におけるスケーリング操作
図２１Ａ〜Ｂは、１つのフィールドから予測子をスケーリングして、別のフィールドから予測子を導出する擬似コード２１００を示すコードの図である。本複合実装形態におけるＳＣＡＬＥＯＰＰ、ＳＣＡＬＥＳＡＭＥ１、ＳＣＡＬＥＳＡＭＥ２、ＳＣＡＬＥＺＯＮＥ１＿Ｘ、ＳＣＡＬＥＺＯＮＥ１＿Ｙ、ＺＯＮＥ１ＯＦＦＳＥＴ＿ＸおよびＺＯＮＥ１ＯＦＦＳＥＴ＿Ｙの値を、図２２のテーブル２２００（現在のフィールドが第１のフィールドである場合）、および図２３のテーブル２３００（現在のフィールドが第２のフィールドである場合）に示す。参照フレーム距離は、ピクチャヘッダ中のＲＥＦＤＩＳＴフィールドにエンコードされる。参照フレーム距離は、ＲＥＦＤＩＳＴ＋１である。
【０１８７】
動きベクトルの再構成
以下のセクションでは、１ＭＶおよび４ＭＶマクロブロックに対する輝度および彩度動きベクトルをどのようにして再構成するかを説明する。動きベクトルは、再構成された後、隣接マクロブロックの動きベクトルとして、近くのマクロブロックに対する動きベクトルを予測するのに使うことができる。動きベクトルが二参照フィールドのインターレースＰフィールド中のブロックまたはマクロブロック用である場合、動きベクトルは、関連づけられた「同じ」または「反対」の極性を有し、動きベクトル予測のために他のフィールド極性用の動きベクトル予測子を導出するのに使うことができる。
【０１８８】
輝度動きベクトルの再構成
すべての場合（１ＭＶおよび４ＭＶマクロブロック）において、輝度動きベクトルは、以下のように予測子に差分を加えることによって再構成される。
ｍｖ＿ｘ＝（ｄｍｖ＿ｘ＋ｐｒｅｄｉｃｔｏｒ＿ｘ）ｓｍｏｄ  ｒａｎｇｅ＿ｘ
ｍｖ＿ｙ＝（ｄｍｖ＿ｙ＋ｐｒｅｄｉｃｔｏｒ＿ｙ）ｓｍｏｄ  ｒａｎｇｅ＿ｙ
【０１８９】
モジュロ演算「ｓｍｏｄ」は、符号付きモジュロであり、以下のように定義される。
Ａ  ｓｍｏｄ  ｂ＝（（Ａ＋ｂ）％（２＊ｂ））−ｂ
【０１９０】
この定義は、再構成されたベクトルが有効であることを保証する。（Ａ  ｓｍｏｄ  ｂ）は、−ｂからｂ−１の範囲内である。ｒａｎｇｅ＿ｘおよびｒａｎｇｅ＿ｙは、ＭＶＲＡＮＧＥに依存する。
【０１９１】
インターレースＰフィールドピクチャが２つの参照ピクチャを使う（ＮＵＭＲＥＦ＝１）場合、動きベクトルの差分の復号化の後に導出されたＰｒｅｄｉｃｔｏｒ＿ｆｌａｇは、動きベクトル予測から導出されたｄｏｍｉｎａｎｔｐｒｅｄｉｃｔｏｒの値と組み合わされて、どのフィールドが参照として使われるかを決定する。図３６の擬似コード３６００は、どのようにして参照フィールドが決定されるかを説明する。
【０１９２】
１ＭＶマクロブロックには、マクロブロックの輝度成分を形成する４つのブロックに対して単一の動きベクトルがある。ＭＢＭＯＤＥのシンタクス要素が、マクロブロック層にＭＶデータがないことを示す場合、ｄｍｖ＿ｘ＝０かつｄｍｖ＿ｙ＝０（ｍｖ＿ｘ＝ｐｒｅｄｉｃｔｏｒ＿ｘかつｍｖ＿ｙ＝ｐｒｅｄｉｃｔｏｒ＿ｙ）である。
【０１９３】
４ＭＶマクロブロックでは、マクロブロック中のインター符号化輝度ブロックがそれぞれ、それ自体の動きベクトルを有する。したがって、各４ＭＶマクロブロックには、０から４個の間の輝度動きベクトルがある。４ＭＶＢＰシンタクス要素が、ブロックに対して動きベクトル情報がないことを示す場合、そのブロックに対してｄｍｖ＿ｘ＝０かつｄｍｖ＿ｙ（ｍｖ＿ｘ＝ｐｒｅｄｉｃｔｏｒ＿ｘかつｍｖ＿ｙ＝ｐｒｅｄｉｃｔｏｒ＿ｙ）である。
【０１９４】
彩度動きベクトルの再構成
彩度動きベクトルは、輝度動きベクトルから導出される。代替実装形態では、４ＭＶマクロブロックに対して、彩度ブロックをインターとして符号化するか、またはイントラとして符号化するかに関する判断が、輝度ブロックまたはフィールドのコンテキストに基づいて行われる。
【０１９５】
以上、様々な実施形態を参照して本発明の原理を説明し示したが、こうした様々な実施形態は、このような原理から逸脱することなく、構成および細部において変更できることが理解されよう。本明細書において説明したプログラム、処理、または方法は、特にそう示さない限り、特定のどのタイプの計算機環境にも関連せず、限定されないことを理解されたい。様々なタイプの汎用または専用計算機環境が、本明細書において説明した教示とともに使うことができ、そうした教示に従って動作を実施することができる。ソフトウェアで示した実施形態の要素は、ハードウェアでも実装することができ、その逆も可能である。
【０１９６】
本発明の原理を適用することができる可能な多くの実施形態を鑑み、本発明として、このようなすべての実施形態が添付の特許請求の範囲および均等物の範囲および精神内であると主張する。
【図面の簡単な説明】
【０１９７】
【図１】従来技術による、映像エンコーダにおける動き推定を示す図である。
【図２】従来技術による、映像エンコーダにおける予測残余の８×８のブロックに対するブロックベースの圧縮を示す図である。
【図３】従来技術による、映像デコーダにおける予測残余の８×８のブロックに対するブロックベースの圧縮を示す図である。
【図４】従来技術による、インターレース映像フレームを示す図である。
【図５】ＷＭＶ９の初期バージョンにおける、フレーム符号化された現在のマクロブロック用の候補動きベクトル予測子を示す図である。
【図６】ＷＭＶ９の初期バージョンにおける、フィールド符号化された現在のマクロブロック用の候補動きベクトル予測子を示す図である。
【図７】ＷＭＶ９の初期バージョンにおける、フィールド符号化された現在のマクロブロック用の候補動きベクトル予測子を示す図である。
【図８】説明した一部の実施形態を実装することができる適切な計算機環境を示すブロック図である。
【図９】説明した一部の実施形態を実装することができる、一般化した映像エンコーダシステムを示すブロック図である。
【図１０】説明した一部の実施形態を実装することができる、一般化した映像デコーダシステムを示すブロック図である。
【図１１】説明した一部の実施形態において用いられるマクロブロック形式を示す図である。
【図１２Ａ】トップフィールドおよびボトムフィールドの交互ラインを示す、インターレース映像フレームの一部を示す図である。
【図１２Ｂ】フレームとしてエンコード／復号するように編成されたインターレース映像フレームを示す図である。
【図１２Ｃ】フィールドとしてエンコード／復号するように編成されたインターレース映像フレームを示す図である。
【図１３】中央値３の計算を実施する擬似コードを示すコードである。
【図１４】中央値４の計算を実施する擬似コードを示すコードである。
【図１５】２つの参照フィールドを有するインターレースＰフィールドを示す図である。
【図１６】２つの参照フィールドを有するインターレースＰフィールドを示す図である。
【図１７】現在のフィールド極性および参照フィールド極性の様々な組合せに対する、動きベクトルの垂直成分と対応する空間的な位置との間の関係を示す図である。
【図１８】可能な２つの参照フィールドを有するインターレースＰフィールド用の動きベクトル予測子を選択する技術を示すフロー図である。
【図１９】現在のマクロブロックに対する、３つの候補動きベクトル予測子からなる２つの組を示す図である。
【図２０Ａ】２つの参照インターレースＰフィールドにおける、動きベクトル予測子を計算する擬似コードを示すコードである。
【図２０Ｂ】２つの参照インターレースＰフィールドにおける、動きベクトル予測子を計算する擬似コードを示すコードである。
【図２０Ｃ】２つの参照インターレースＰフィールドにおける、動きベクトル予測子を計算する擬似コードを示すコードである。
【図２０Ｄ】２つの参照インターレースＰフィールドにおける、動きベクトル予測子を計算する擬似コードを示すコードである。
【図２０Ｅ】２つの参照インターレースＰフィールドにおける、動きベクトル予測子を計算する擬似コードを示すコードである。
【図２０Ｆ】２つの参照インターレースＰフィールドにおける、動きベクトル予測子を計算する擬似コードを示すコードである。
【図２１Ａ】あるフィールドから予測子をスケーリングして、別のフィールドから予測子を導出する擬似コードを示すコードである。
【図２１Ｂ】あるフィールドから予測子をスケーリングして、別のフィールドから予測子を導出する擬似コードを示すコードである。
【図２２】異なる参照フレーム距離に関連づけられたスケーリング操作値を示すテーブルである。
【図２３】異なる参照フレーム距離に関連づけられたスケーリング操作値を示すテーブルである。
【図２４】複合実装形態における、インターレースＰフィールド用のフレーム層ビットストリームのシンタクスを示す図である。
【図２５】複合実装形態における、インターレースＰフィールド用のフィールド層ビットストリームのシンタクスを示す図である。
【図２６】複合実装形態における、インターレースＰフィールド用のマクロブロック層ビットストリームのシンタクスを示す図である。
【図２７Ａ】１つの参照インターレースＰフィールドに対する、動きベクトルの差分の復号化を例示する擬似コードを示すコードである。
【図２７Ｂ】１つの参照インターレースＰフィールドに対する、動きベクトルの差分の復号化を例示する擬似コードを示すコードである。
【図２８Ａ】２つの参照インターレースＰフィールドに対する、動きベクトルの差分、および主要／非主要予測子情報の復号化を例示する擬似コードを示すコードである。
【図２８Ｂ】２つの参照インターレースＰフィールドに対する、動きベクトルの差分、および主要／非主要予測子情報の復号化を例示する擬似コードを示すコードである。
【図２９Ａ】インターレースＰフィールド中の１ＭＶマクロブロック用の候補動きベクトル予測子のためのマクロブロックの位置を示す図である。
【図２９Ｂ】インターレースＰフィールド中の１ＭＶマクロブロック用の候補動きベクトル予測子のためのマクロブロックの位置を示す図である。
【図３０Ａ】混合１ＭＶ／４ＭＶインターレースＰフィールド中の１ＭＶマクロブロック用の候補動きベクトル予測子のためのマクロブロックの位置を示す図である。
【図３０Ｂ】混合１ＭＶ／４ＭＶインターレースＰフィールド中の１ＭＶマクロブロック用の候補動きベクトル予測子のためのマクロブロックの位置を示す図である。
【図３１Ａ】混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロック中の様々な位置にあるブロック用の候補動きベクトル予測子のためのブロックの位置を示す図である。
【図３１Ｂ】混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロック中の様々な位置にあるブロック用の候補動きベクトル予測子のためのブロックの位置を示す図である。
【図３２Ａ】混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロック中の様々な位置にあるブロック用の候補動きベクトル予測子のためのブロックの位置を示す図である。
【図３２Ｂ】混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロック中の様々な位置にあるブロック用の候補動きベクトル予測子のためのブロックの位置を示す図である。
【図３３】混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロック中の様々な位置にあるブロック用の候補動きベクトル予測子のためのブロックの位置を示す図である。
【図３４】混合１ＭＶ／４ＭＶインターレースＰフィールド中の４ＭＶマクロブロック中の様々な位置にあるブロック用の候補動きベクトル予測子のためのブロックの位置を示す図である。
【図３５Ａ】複合実装形態における、二参照インターレースＰフィールド中の動きベクトル予測子を計算する擬似コードを示すコードである。
【図３５Ｂ】複合実装形態における、二参照インターレースＰフィールド中の動きベクトル予測子を計算する擬似コードを示すコードである。
【図３５Ｃ】複合実装形態における、二参照インターレースＰフィールド中の動きベクトル予測子を計算する擬似コードを示すコードである。
【図３５Ｄ】複合実装形態における、二参照インターレースＰフィールド中の動きベクトル予測子を計算する擬似コードを示すコードである。
【図３５Ｅ】複合実装形態における、二参照インターレースＰフィールド中の動きベクトル予測子を計算する擬似コードを示すコードである。
【図３５Ｆ】複合実装形態における、二参照インターレースＰフィールド中の動きベクトル予測子を計算する擬似コードを示すコードである。
【図３６】二参照インターレースＰフィールドのうち、１つの参照フィールドを決定する擬似コードを示すコードである。
【符号の説明】
【０１９８】
９００    映像エンコーダ
９１０    動き推定器
９２０    ピクチャストア
９２２    ピクチャストア
９３０    動き補償器
９６０    周波数変換器
９６６    逆周波数変換器
９７０    量子化器
９７６    逆量子化器
９８０    エントロピーコーダ
９９０    バッファ
１０２０    ピクチャストア
１０２２    ピクチャストア
１０３０    動き補償器
１０６０    逆周波数変換器
１０７０    逆量子化器
１０８０    エントロピーデコーダ
１０９０    バッファ
【図１】
2008278547.tif 000010
【図２】
2008278547.tif 000011
【図３】
2008278547.tif 000012
【図４】
2008278547.tif 000013
【図５】
2008278547.tif 000014
【図６】
2008278547.tif 000015
【図７】
2008278547.tif 000016
【図８】
2008278547.tif 000017
【図９】
2008278547.tif 000018
【図１０】
2008278547.tif 000019
【図１１】
2008278547.tif 000020
【図１２Ａ】
2008278547.tif 000021
【図１２Ｂ】
2008278547.tif 000022
【図１２Ｃ】
2008278547.tif 000023
【図１３】
2008278547.tif 000024
【図１４】
2008278547.tif 000025
【図１５】
2008278547.tif 000026
【図１６】
2008278547.tif 000027
【図１７】
2008278547.tif 000028
【図１８】
2008278547.tif 000029
【図１９】
2008278547.tif 000030
【図２０Ａ】
2008278547.tif 000031
【図２０Ｂ】
2008278547.tif 000032
【図２０Ｃ】
2008278547.tif 000033
【図２０Ｄ】
2008278547.tif 000034
【図２０Ｅ】
2008278547.tif 000035
【図２０Ｆ】
2008278547.tif 000036
【図２１Ａ】
2008278547.tif 000037
【図２１Ｂ】
2008278547.tif 000038
【図２２】
2008278547.tif 000039
【図２３】
2008278547.tif 000040
【図２４】
2008278547.tif 000041
【図２５】
2008278547.tif 000042
【図２６】
2008278547.tif 000043
【図２７Ａ】
2008278547.tif 000044
【図２７Ｂ】
2008278547.tif 000045
【図２８Ａ】
2008278547.tif 000046
【図２８Ｂ】
2008278547.tif 000047
【図２９Ａ】
2008278547.tif 000048
【図２９Ｂ】
2008278547.tif 000049
【図３０Ａ】
2008278547.tif 000050
【図３０Ｂ】
2008278547.tif 000051
【図３１Ａ】
2008278547.tif 000052
【図３１Ｂ】
2008278547.tif 000053
【図３２Ａ】
2008278547.tif 000054
【図３２Ｂ】
2008278547.tif 000055
【図３３】
2008278547.tif 000056
【図３４】
2008278547.tif 000057
【図３５Ａ】
2008278547.tif 000058
【図３５Ｂ】
2008278547.tif 000059
【図３５Ｃ】
2008278547.tif 000060
【図３５Ｄ】
2008278547.tif 000061
【図３５Ｅ】
2008278547.tif 000062
【図３５Ｆ】
2008278547.tif 000063
【図３６】
2008278547.tif 000064