(58)【調査した分野】(Int.Cl.,DB名)
前記ビットストリーム内の前記符号化されたデータは、前記所与のブロックが該所与のブロックについての前記ビットストリーム内の動きベクトル情報を用いて又は用いずに動き補償されるかどうかを示す前記所与のブロックについてのモード情報を更に含み、
前記ビットストリーム内の前記符号化されたデータは、前記モード情報が、前記所与のブロックが該所与のブロックについての前記ビットストリーム内の動きベクトル情報を用いずに動き補償されることを示す場合に、前記識別情報を含む、
請求項8乃至10のうちいずれか一項に記載の方法。
【発明を実施するための形態】
【0016】
本発明を、限定的にではなく例示的に、添付の図面の各図に示す。同様の構成要素および/または機能を参照するために、各図を通して同じ符号を使用する。
【0017】
本発明のある態様によれば、ビデオデータをコーディング(例えば符号化および/または復号化)する方法および装置が提供される。この方法および装置は、「インターレース」または漸進的ビデオコーディングストリーミング技術のコーディング効率を改善するように構成することができる。ある実装、例えば現在のH.26L規格に関するある実装では、いくつかの追加のマクロブロックモードを導入することにより、いわゆる「Pフレーム」が著しく改善された。ある場合には、そのときマクロブロックごとに最大16個の動きベクトルを送ることが必要となる可能性がある。本発明のある態様により、これらの動きベクトルを符号化する方法が提供される。例えば以下で説明するように、直接P予測技法を使用して、以前のフレーム中の配列ピクセル(collocated pixel)の動きベクトルを選択することができる。
【0018】
上記や他の例示的方法および装置を説明するが、本発明の技法は、添付の図面で説明および図示される例に限定されず、他の同様の既存のビデオコーディング方式および将来のビデオコーディング方式などにも明らかに適合可能であることに留意されたい。
【0019】
このような例示的方法および装置を紹介する前に、例えばコンピューティング装置や他のタイプの装置/電気器具の形態の、適切な例示的オペレーティング環境に関する概要を次節で与える。
【0020】
例示的動作環境
各図面を参照すると、同じ参照符号は同じ要素を指しており、本発明が適切なコンピューティング環境で実装されるものとして示されている。必須ではないが、パーソナルコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的状況で本発明を説明する。
【0021】
一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの消費者向け電子機器またはプログラム可能消費者向け電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ポータブル通信装置などを含む他のコンピュータシステム構成を用いて本発明を実施できることを当業者は理解されよう。
【0022】
本発明は、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリ記憶装置とリモートメモリ記憶装置のどちらにも位置することができる。
【0023】
図1に、後で説明するシステム、装置、および方法を実施することができる適切なコンピューティング環境120の例を示す。例示的コンピューティング環境120は、適切なコンピューティング環境の一例に過ぎず、本明細書で説明する改良型の方法およびシステムの使用範囲および機能範囲に関して何らかの制限を提案するものではない。コンピューティング環境120に図示する構成要素のうちのいずれか1つ、あるいはそれらの組合せに関係する何らかの依存関係または要件をコンピューティング環境120が有するものと解釈すべきでもない。
【0024】
本明細書の改良型の方法およびシステムは、他の多数の汎用コンピューティングシステム環境または構成、あるいは他の多数の特殊目的コンピューティングシステム環境または構成で動作可能である。適切な周知のコンピューティングシステム、環境、および/または構成の例には、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、薄型クライアント、厚型クライアント、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能消費者向け電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ならびに上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれる。
【0025】
図1に示すように、コンピューティング環境120は、コンピュータ130の形態の汎用コンピューティング装置を含む。コンピュータ130の構成要素は、1つまたは複数のプロセッサまたは処理装置132と、システムメモリ134と、システムメモリ134を含む様々なシステム構成要素をプロセッサ132に結合するバス136とを含むことができる。
【0026】
バス136は、メモリバスまたはメモリコントローラと、周辺バスと、アクセラレーテッドグラフィックスポートと、様々なバスアーキテクチャのうちのいずれかを用いるプロセッサバスまたはローカルバスとを含むいくつかのタイプのバス構造のうちのいずれか1つまたは複数を表す。例えば、限定はしないが、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとも呼ばれるPCI(Peripheral Component Interconnect)バスが含まれる。
【0027】
コンピュータ130は、一般に様々なコンピュータ可読媒体を含む。このような媒体は、コンピュータ130がアクセス可能な入手可能などんな媒体でもよく、揮発性媒体と不揮発性媒体の両方、取外し可能媒体と取外し不能媒体の両方が含まれる。
【0028】
図1では、システムメモリ134は、ランダムアクセスメモリ(RAM)140などの揮発性メモリの形態のコンピュータ可読媒体、および/または読取り専用メモリ(ROM)138などの不揮発性メモリの形態のコンピュータ可読媒体を含む。起動時などにコンピュータ130内の要素間で情報を転送する助けとなる基本ルーチンを含む基本入出力システム(BIOS)142は、ROM 138内に格納される。RAM 140は一般に、直ちにプロセッサ132がアクセス可能であり、かつ/またはプロセッサ132が現在操作しているデータおよび/またはプログラムモジュールを含む。
【0029】
コンピュータ130は、他の取外し可能/取外し不能な、揮発性/不揮発性コンピュータ記憶媒体をさらに含むことができる。例えば、
図1に、取外し不能不揮発性磁気媒体(図示せず。一般には「ハードドライブ」と呼ばれる。)を読み書きするためのハードディスクドライブ144と、取外し可能不揮発性磁気ディスク148(例えば「フロッピー(登録商標)ディスク」)を読み書きするための磁気ディスクドライブ146と、CD−ROM/R/RW、DVD−ROM/R/RW/+R/RAM、または他の光媒体などの取外し可能不揮発性光ディスク152を読み書きするための光ディスクドライブ150とを示す。ハードディスクドライブ144、磁気ディスクドライブ146、および光ディスクドライブ150はそれぞれ、1つまたは複数のインターフェース154によってバス136に接続される。
【0030】
ドライブと、関連するコンピュータ可読媒体により、コンピュータ130に対するコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶が実現される。本明細書で説明する例示的環境ではハードディスク、取外し可能磁気ディスク148、および取外し可能光ディスク152を利用するが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)などの、コンピュータがアクセス可能な、データを格納することができる他のタイプのコンピュータ可読媒体もこの例示的動作環境で使用できることを当業者は理解されたい。
【0031】
例えばオペレーティングシステム158、1つまたは複数のアプリケーションプログラム160、他のプログラムモジュール162、およびプログラムデータ164を含むいくつかのプログラムモジュールは、ハードディスク、磁気ディスク148、光ディスク152、ROM 138、またはRAM 140上に格納することができる。
【0032】
本明細書で説明する改良型の方法およびシステムは、オペレーティングシステム158、1つまたは複数のアプリケーションプログラム160、他のプログラムモジュール162、および/またはプログラムデータ164内に実装することができる。
【0033】
ユーザは、キーボード166およびポインティングデバイス168(「マウス」など)などの入力装置を介して、コンピュータ130にコマンドおよび情報を与えることができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、シリアルポート、スキャナ、カメラなどを含めることができる。これらの入力装置や他の入力装置は、バス136に結合されるユーザ入力インターフェース170を介して処理装置132に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などの他のインターフェース構造およびバス構造で接続することもできる。
【0034】
モニタ172または他のタイプのディスプレイ装置もまた、ビデオアダプタ174などのインターフェースを介してバス136に接続される。モニタ172に加えて、パーソナルコンピュータは一般に、スピーカおよびプリンタなどの他の周辺出力装置(図示せず)を含む。これらは、出力周辺インターフェース175を介して接続することができる。
【0035】
コンピュータ130は、リモートコンピュータ182などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ182は、コンピュータ130に関して本明細書で説明する要素および機能のうちの多く、またはすべてを含むことができる。
【0036】
図1に示す論理接続は、ローカルエリアネットワーク(LAN)177および汎用ワイドエリアネットワーク(WAN)179である。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
【0037】
LANネットワーキング環境で使用するとき、コンピュータ130は、ネットワークインターフェースまたはアダプタ186を介してLAN 177に接続される。WANネットワーキング環境で使用するとき、コンピュータは一般に、モデム178、またはWAN 179を介して通信を確立する他の手段を含む。モデム178は内蔵でも外付けでもよく、ユーザ入力インターフェース170または他の適切な機構を介してシステムバス136に接続することができる。
【0038】
図1には、インターネットを介するWANの特定の実装を図示する。この場合、コンピュータ130は、インターネット180を介して少なくとも1つのリモートコンピュータ182との通信を確立するためにモデム178を利用する。
【0039】
ネットワーク環境では、コンピュータ130に関係して図示したプログラムモジュール、またはその一部は、リモートメモリ記憶装置内に格納することができる。したがって、例えば
図1に図示するように、リモートアプリケーションプログラム189は、リモートコンピュータ182のメモリ装置上に常駐することができる。図示し、説明したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されよう。
【0040】
次に
図2に注目する。
図2は、本明細書で開示される方法および装置からやはり益を得ることができる別の例示的装置200を示すブロック図である。装置200は、本明細書で述べる方法および装置の全部または一部とその均等物による、ビデオおよび/または関係する任意のタイプのデータを処理するように動作可能に構成された、任意の1つまたは複数の装置または電気器具を表す。したがって、装置200は、
図1のようなコンピューティング装置の形態を取ることができ、または例えばワイヤレス装置、ポータブル通信装置、携帯情報端末、ビデオプレーヤ、テレビジョン、DVDプレーヤ、CDプレーヤ、カラオケマシン、キオスク、デジタルビデオプロジェクタ、フラットパネルビデオディスプレイ装置機構、セットトップボックス、ビデオゲームマシンなどの他の形態を取ることができる。この例では、装置200は、ビデオデータを処理するように構成された論理機構202と、ビデオデータを論理機構202に供給するように構成されたビデオデータソース204と、ビデオデータの少なくとも一部をユーザの閲覧のために表示することができる少なくとも1つのディスプレイモジュール206とを含む。論理機構202は、ハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せを表す。ある実装では、例えば論理機構202は、圧縮器/解凍器(コーデック)などを含む。ビデオデータソース204は、論理機構202で処理するのに適したビデオデータを供給し、通信し、出力し、かつ/または少なくとも瞬間的に格納することができる任意の機構を表す。ビデオ再生ソースは、装置200の内側および/または外側にあるように例示的に図示されている。ディスプレイモジュール206は、ユーザが直接または間接に閲覧することができ、提示されたビデオデータの視覚結果を見ることができる任意の機構を表す。加えて、ある実装では、装置200はまた、ビデオデータに関連するオーディオデータを再生し、または処理する、何らかの形態または機能も含むことができる。したがって、オーディオ再生モジュール208が図示されている。
【0041】
図1および2の例や、同様の他の例を念頭に置いて、次節では、このような環境や装置を用いて少なくとも部分的に実施することができる、ある例示的方法および装置に焦点を当てる。
【0042】
ビデオコーディングにおける予測(P)フレームおよび双方向予測(B)フレームに関する直接予測
本節では、特に大きい/複雑な動きシーケンスに関するコーディング効率を著しく改善することができる、新しく非常に効率的なインターマクロブロックタイプを提示する。この新しいタイプのインターマクロブロックは、マクロブロックレベルでフレーム内に存在する可能性のある時間的相関および空間的相関を利用し、その結果、品質を保持し、さらには改善すると共に、動き情報を符号化するのに必要なビットを著しく削減することができる。
【0043】
直接予測
前述の問題および/または他の問題は、「直接予測モード」を導入することによって、本明細書で少なくとも部分的に解決される。直接予測モードでは、実際の動き情報を符号化する代わりに、後続の基準フレームの相関マクロブロックで使用する動きベクトルから、順方向動きベクトルおよび/または逆方向動きベクトルの両方を直接導出する。
【0044】
このことを、例えば
図3に示す。
図3は、3つのビデオフレーム、すなわち時間t、t+1、およびt+2にそれぞれ対応するPフレーム300、Bフレーム302、およびPフレーム304を示す。
図3には、フレーム300、302、および304内のマクロブロックと、例示的動きベクトル(MV)情報も示す。ここで、各フレームは、それぞれに関連するx座標とy座標を有する。Bフレーム302に関する動きベクトル情報は、Pフレーム300および304に関して符号化された動きベクトル情報から予測される(この場合、例えば補間される)。この例示的技法は、オブジェクトが一定の速度で移動しているという仮定から導出され、それによって、動きベクトルを送ることなくBフレーム302内部のオブジェクトの現在位置を予測することが可能となる。この技法は所与の品質に関してビットレートを著しく低下させる可能性があるが、この技法は常には適用されない。
【0045】
本発明のある実装に従って、マクロブロックレベルで、具体的にはマクロブロックの動きベクトル情報に関して存在する可能性がある空間的相関および時間的相関を効果的に利用することができる、新しいインターマクロブロックタイプが本明細書で導入される。この新しいモードによれば、現在のマクロブロックが、以前に符号化した情報から直接導出(例えば動き投影)することができる動きを有する可能性がある。したがって、
図4に例示的に示すように、マクロブロック、さらには全フレームに関する動きベクトルを送る必要がないことがある。この場合、ビデオフレームのシーケンス400が、フレーム間のコード化関係を示す実線の矢印と、予測可能マクロブロックの関係を示す破線と共に示されている。ビデオフレーム402はIフレームであり、ビデオフレーム404、406、410、および412はBフレームであり、ビデオフレーム408および414はPフレームである。この例では、Pフレーム408が
【0047】
で記述される動きフィールドを有する場合、ピクチャ404、406、および414内の配列マクロブロックの動きも非常に相関する。具体的には、速度がフレーム全体に関して概して一定であり、かつフレーム404および406がフレーム402と408の間に時間的に等間隔に配置されていると仮定し、さらにBフレームに関して、順方向動きベクトルと逆方向動きベクトルを共に使用することができるとみなすと、フレーム404内の動きフィールドは、順方向動きフィールドおよび逆方向動きフィールドそれぞれに関して、
【0050】
と等しくすることができる。同様に、フレーム408では、動きフィールドは、順方向動きフィールドおよび逆方向動きフィールドそれぞれに関して、
【0053】
と等しくすることができる。414および406は等しい間隔で配置されているので、次いで同じ仮定を用いて、配列マクロブロックは、動きベクトル
【0056】
Bフレーム内の直接モードと同様に、再び速度が一定であると仮定することによって、マクロブロックに関する動きは、基準フレームの相関マクロブロックから直接導出することができる。このことを、例えば
図6にさらに示す。
図6は、3つのビデオフレーム、すなわち時間t、t+1、およびt+2にそれぞれ対応するPフレーム600、Bフレーム602、およびPフレーム604を示す。この場合、図示する配列マクロブロックは、同一でないとしても同様の動き情報を有する。
【0057】
このような動きパラメータを改良するために、加速度を考慮することさえ可能である。例えば、
図7を参照されたい。この場合、例えば3つのフレーム、すなわち時間tでの現フレーム704、前フレーム702(時間t−1)および700(時間t−2)が示されており、異なる加速度情報が異なる長さの動きベクトルで示されている。
【0058】
このプロセスもまた、動き投影やマクロブロックレベルを考慮する代わりに、前イメージ内部のピクセルが場合によっては一定速度または一定加速度で移動していることを考慮に入れる(例えばピクセル投影)ことによって著しく改善することができる。したがって、例えば
図8に示すように、Bフレームのコーディングに関する、現フレームのより非常に正確な予測を生成することができ、例えば
図9に図示するように、Pフレームコーディングに関する、現フレームのより非常正確な予測を生成することができる。例えば
図8に、3つのビデオフレーム、すなわち時間t、t+1、およびt+2にそれぞれ対応するPフレーム800、Bフレーム802、およびPフレーム804を示す。例えば
図9に、3つのビデオフレーム、すなわち時間t、t+1、およびt+2にそれぞれ対応するPフレーム900、Bフレーム902、およびPフレーム904を示す。
【0059】
ある実装では、性能をさらに良好にするために各方法を組み合わせることも可能である。
【0060】
ある別の実装によれば、動きは、例えば周囲のマクロブロックの動き情報から動きベクトルをコーディングするために利用される予測技法を使用して、空間情報からも導出することができる。加えて、動き情報を送る必要のない多重仮説予測アーキテクチャでこの2つの異なる方法を組み合わせることによって、性能をさらに向上させることもできる。したがって、このような新しいマクロブロックタイプは、同様の品質または品質の改善を達成すると共に、顕著なビットレートの低減を達成することができる。
【0061】
例示的符号化プロセス
図10に、従来のブロックベースのビデオエンコーダ1002を有する例示的符号化環境1000を示す。例示的符号化環境1000では、ビデオデータ1004がエンコーダ1002に供給され、対応する符号化ビデオデータビットストリームが出力される。
【0062】
ビデオデータ1004は加算モジュール1006に供給される。加算モジュール1006はまた、動き補償(MC)モジュール1022からの出力も入力として受け取る。加算モジュール1006からの出力は、離散コサイン変換(DCT)モジュール1010に供給される。DCTモジュール1010の出力は、量子化モジュール(QP)1012への入力として供給される。QPモジュール1012の出力は、逆量子化モジュール(QP
−1)1014への入力として供給され、かつ可変長コーディング(VLC)モジュール1016への入力として供給される。VLCモジュール1016はまた、動き推定(ME)モジュール1008からの出力も入力として受け取る。VLCモジュール1016の出力は、符号化ビデオビットストリーム1210である。
【0063】
QP
−1モジュール1014の出力は、逆離散コサイン変換(DCT)モジュール1018への入力として供給される。1018の出力は、加算モジュール1020に入力として供給される。加算モジュール1020は、MCモジュール1022からの出力を別の入力として有する。加算モジュール1020からの出力は、ループフィルタモジュール1024への入力として供給される。ループフィルタモジュール1024からの出力は、フレームバッファモジュール1026への入力として供給される。フレームバッファモジュール1026からの1つの出力はMEモジュール1008への入力として供給され、別の出力はMCモジュール1022への入力として供給される。モジュール1008はまた、入力としてビデオデータ1004も受け取る。ME 1008からの出力は、MCモジュール1022への入力として供給される。
【0064】
この例では、MCモジュール1022は、MEモジュール1008から入力を受け取る。この場合、MEは、基準フレームに対する現フレームに関して実施される。MEは、様々なブロックサイズおよび検索範囲を使用して実施することができ、その後、「最良の」パラメータが、例えばある事前定義された基準を使用して符号化および伝送される(INTERコーディング)。DCTおよびQPを実施した後、剰余情報もコード化される。ある場合には、MEの性能が満足の行く結果を生成しない可能性もあり、したがってマクロブロック、さらにはサブブロックがINTRA符号化される可能性がある。
【0065】
動き情報が非常に費用がかかる可能性があることを考慮し、別のプロセスで、以前に符号化した動き情報からマクロブロックに関する動きベクトルを時間的および/または空間的に予測することができる可能性も考慮して、本発明のある例示的実装に従って、
図12のように符号化プロセスを変更することができる。このような決定は、例えばレートひずみ最適化技法または他のコスト指標を用いて実施することができる。このような技法/モードを使用すると、詳細な動き情報を送ることが不要となることがある。詳細な動き情報は、例えば
図5に示すように、直接予測(直接P)モードで置換される可能性があるからである。
【0066】
動きは、例えば以下の各モデルまたはそれらの組合せのいずれでもモデル化することができる。(1)動き投影(例えば、Bフレームに関して
図3に示し、Pフレームに関して
図6に示したもの)、(2)ピクセル投影(例えばBフレームに関して
図8に示し、Pフレームに関して
図9に示したもの)、(3)空間MV予測(例えば配列マクロブロックの動きベクトルの中央値)、(4)動き投影および空間予測の重みつき平均、または(5)他の同様の技法。
【0067】
他の予測モデル(例えば加速度、フィルタリングなど)も使用することができる。これらのモデルのうち1つだけを使用すべきである場合、これはエンコーダとデコーダで共通にすべきである。そうでない場合、どのモデルを使用すべきかに関してデコーダを迅速に導くサブモードを使用することができる。上記のモデルの任意の組合せを使用して、ブロックまたはマクロブロックをマルチリファレンシングすることも可能であることも当業者は理解されよう。
【0068】
図12では、改良型ビデオ符号化環境1200は、ビデオデータ1004を受け取り、対応する符号化ビデオデータビットストリームを出力するビデオエンコーダ1202を含む。
【0069】
この場合、ビデオエンコーダ1202は、改良1204を含むように変更されている。改良1204は、追加の動きベクトル(MV)バッファモジュール1206およびDIRECT判定モジュール1208を含む。より具体的には、図示するように、MVバッファモジュール1206が、フレームバッファモジュール1026からの出力と、MEモジュール1008からの出力とを入力として受け取るように構成される。MVバッファモジュール1206からの出力は、MEモジュール1008からの出力と共に、DIRECT判定モジュール1208への入力として供給される。次いでDIRECT判定モジュール1208からの出力は、フレームバッファモジュール1026からの出力と共に、MCモジュール1022への入力として供給される。
【0070】
この例示的アーキテクチャを首尾よく動作させるために、以前にコード化したフレームからの動き情報を、MVバッファモジュール1206に加える目的で、完全な状態で格納する。動きベクトルを格納するために、MVバッファモジュール1206を使用することができる。ある実装では、MVバッファモジュール1206はまた、使用する基準フレームについての情報と、使用する動きモードの情報も格納することができる。加速度の場合、例えば加速度に関するより複雑モデルを利用するとき、例えば2番目の前フレーム、さらにはN番目の前フレームの動き情報を格納するための追加のバッファリングが有用であることがある。
【0071】
マクロブロック、サブブロック、またはピクセルが動きベクトルと関連しない場合(すなわちマクロブロックがイントラコード化される場合)、そのようなブロックに関して、使用する動きベクトルが(0,0)であり、基準として以前のフレームだけを使用すると仮定する。
【0072】
マルチフレームリファレンシングを使用する場合、動き情報を現状のまま使用し、かつ/または動き情報を以前のコード化フレームを参照して補間することを選択することができる。これは本質的には設計次第であるが、実際には、特に(0,0)動きベクトルの場合、現ブロックが依然としてずっと古いフレームから参照されている可能性は低いと思われる。
【0073】
直接予測を追加の1組の動き情報と組み合わせることができる。この追加の1組の動き情報は、前とは異なり、直接予測の一部として符号化される。この場合、予測は、例えば直接予測と動き情報の両方の多重仮説予測とすることができる。
【0074】
組み合わせることのできる、いくつかの可能な直接予測サブモードがあるので、これらは多重仮説フレームワーク内で組み合わせることもできる。例えば、動き投影からの予測は、ピクセル投影および/または空間MV予測からの予測と組み合わせることができる。
【0075】
直接予測は、マクロブロック内のサブブロックレベルでも使用することができる。このことは、現行のH.26Lコーデック内部で、Bフレームに関して既に行われているが、現在は動き投影のみを使用して行われており、ピクセル投影、または動き投影とピクセル投影の組合せは使用されていない。
【0076】
Bフレームのコーディングでは、直接予測を実施できるのは一方向(順方向または逆方向)からのみであり、必ずしも常に両側から実施されるわけではない。予測の一方が直接予測を使用しているBフレームの双方向モード内部でも、直接予測を使用することができる。
【0077】
例えば多重仮説イメージの場合、Pフレームが将来のフレームを参照している可能性がある。この場合、Bフレーム動き補間と同様に、動き情報の適切なスケーリングおよび/または反転を実施することができる。
【0078】
例えばランレングスコーディングも使用することができる。フレームまたはスライスをコーディングする際に後続の「同等な」直接Pモードを使用する場合、これらはランレングス表現を使用して符号化することができる。
【0079】
DIRECT判定モジュール1208は本質的に、既存のインターモードまたはイントラモードの代わりに直接予測モードを使用すべきかどうかの判定を実施する。例えば、この判定は、ジョイントレート/ひずみ最適化基準、および/または別々のビットレートまたはひずみの要件または制限に基づくことができる。
【0080】
代替の実装では、モジュール直接予測モジュール1208がMEモジュール1008に先行することも可能である。このような場合、ある事前定義された条件に基づいて直接予測が動きパラメータに関する十分良好な推定を直ちに提供することができる場合、MEモジュール1008を完全に迂回することができ、したがって符号化の計算もかなり削減することができる。
【0081】
例示的復号化プロセス
次に
図11を参照する。
図11は、符号化ビデオデータビットストリーム1104を受け取り、対応する(復号化)ビデオデータ1120を出力するビデオデコーダ1102を有する例示的な従来型復号化環境1100を示す。
【0082】
符号化ビデオデータビットストリーム1104は、可変長復号化(VLD)モジュール1106への入力として供給される。VLDモジュール1106の出力は、QP
−1モジュール1108への入力として供給され、かつMCモジュール1110への入力として供給される。QP
−1モジュール1108からの出力は、IDCTモジュール1112への入力として供給される。IDCTモジュール1112の出力は、加算モジュール1114への入力として供給される。加算モジュール1114は、MCモジュール1110からの出力も、入力として受け取る。加算モジュール1114からの出力は、ループフィルタモジュール1116への入力として供給される。ループフィルタモジュール1116の出力は、フレームバッファモジュール1118に供給される。フレームバッファモジュール1118からの出力は、MCモジュール1110への入力として供給される。フレームバッファモジュール1118は、(復号化)ビデオデータ1120も出力する。
【0083】
直接予測環境1300で使用するための例示的な改良型デコーダ1302は、改良1306をさらに含む。この場合、
図13に示すように、改良型デコーダ1302は、例えば
図12の改良型ビデオエンコーダ1202によって出力される符号化ビデオデータビットストリーム1210を受け取り、対応する(復号化)ビデオデータ1304を出力する。
【0084】
改良1306は、この例ではMCモジュール1110とVLDモジュール1106’との間に動作可能に挿入される。改良1306は、VLDモジュール1106’からの出力を入力として受け取るMVバッファモジュール1308を含む。MVバッファモジュール1308の出力は、改良1306の選択モジュール1312への、選択可能な入力として供給される。改良1306には、ブロックモードモジュール1310も設ける。ブロックモードモジュール1310は、VLDモジュール1106’からの出力を入力として受け取る。ブロックモードモジュール1310の出力は、VLDモジュール1106’への入力として供給され、選択モジュール1312への制御入力としても供給される。VLDモジュール1106’からの出力は、選択モジュール1312への、選択可能な入力として供給される。選択モジュール1312は、MVバッファモジュール1308またはVLDモジュール1106’からの出力のどちらかを、MCモジュール1110への入力として選択的に供給するように構成される。
【0085】
改良1306を用いると、例えば各ピクセルについての動き情報を格納することができる。またマクロブロックのモードが直接予測モードとして識別される場合、格納した動き情報と、適切な投影方法または予測方法が選択され、使用される。動き投影だけが使用される場合、既存のデコーダの変化はごくわずかであり、デコーダに対して追加される追加の複雑さを無視できるとみなせることに留意されたい。
【0086】
サブモードを使用する場合、改良型デコーダ1302は例えば、現マクロブロックを適切に復号化するために、改良型エンコーダ1202が実施する予測ステップと逆のステップを実施するように構成することができる。
【0087】
この場合も、非参照のピクセル(イントラブロックなど)は、動き格納のために、ゼロモーションを有するとみなすことができる。
【0088】
いくつかの例示的方式
直接予測と共に直ちに使用することができる、いくつかの可能な予測子があることを考慮して、この説明を簡単にするために、各ケースのより小さいサブセットをより詳細に説明する。このサブセットは、幾分効率的であるだけでなく、実装が容易でもある。具体的には、以下のモデルを例証的により詳細に検討する。
【0089】
(A)この例では、動き投影が、使用する唯一のモードである。直接モードのランレングスコーディングは使用しないが、剰余情報も送られる。ゼロ動きベクトルを使用する場合、動きパラメータの特別な変更を実施する。このような状況では、直接予測のための基準フレームは常にゼロに設定される(例えば以前の符号化フレーム)。さらに、イントラコード化ブロックは、ゼロモーションおよび基準フレームパラメータを有するとみなされる。
【0090】
(B)この例は、剰余が送られないことを除き、例(A)と同様である。
【0091】
(C)この例は、QP<n(例えばn=24)である場合に剰余も符号化され、そうでない場合に剰余が送られないという点で、基本的には例(A)と(B)の組合せである。
【0092】
(D)この例は、3つのサブモード、すなわち、
(1)動き投影
【0096】
(3)この2つのケースの重みつき平均
【0098】
を組み合わせる拡張直接予測方式である。
【0099】
QP<n(例えばn=24)の場合、剰余は送られない。この場合、ランレングスコーディングは使用しない。サブモードの区分化は以下のように設定することができる。
サブモード コード
空間予測子 0
動き投影 1
重みつき平均 2
最良のサブモードは、レートひずみ最適化プロセスを使用して選択することができる(ビットレートと品質の間の最良の折合い)。
【0100】
(E)例(C)とピクセル投影との組合せ。この場合、例えば直接予測モードに関する2つの予測の平均。
【0101】
(F)これは、例(C)とMotion_Copy R2(例えば、非特許文献3参照。この文献は参照により本明細書に組み込まれる)などとの組合せである。このケースは、例(D)で使用される空間MV予測子の使用法の代替方法とみなすことができる。1つの差は、空間予測子がある条件の下でゼロスキップモードを完全に置換すること、およびこの例(F)をランレングス符号化することができ、したがってより効率的な性能を達成できることである。
【0102】
直接モードに関する双方向予測(B)フレームでの動きベクトル予測
現在のJVT規格は、直接モードコード化マクロブロックまたはブロックを双方向予測(B)フレーム内の動きベクトル予測でどのようにみなすべきかということについて非常に不明瞭であると思われる。その代わりに、現在のソフトウェアは、直接モードマクロブロックまたはサブブロックを「異なる基準フレーム」を有するものとみなし、したがって予測で使用されないと思われる。遺憾ながら、近接するブロックを有する直接予測ブロックの動きベクトル間に依然として高い相関がある可能性があることを考えると、このような条件は、Bフレームの性能を著しく妨げ、その効率を低下させる。このような条件はまた、エラー隠蔽アルゴリズムがBフレームに適用されるとき、その効率も低下させる。
【0103】
本節では、例示的代替手法を提示する。この例示的代替手法は、例えばコーディング効率を改善し、Bフレーム内の動きベクトルの相関を増大させる。このことは、動き予測段階内の双方向予測ブロックと本質的に等価な直接モードコード化ブロックを考慮することによって行われる。
【0104】
(例えば8×8サブパーティションの場合の)直接モードマクロブロックまたはブロックは、隣接するフレームの動きベクトル情報の時間的相関を効果的に利用することができるので、双方向予測(B)フレームの効率を著しく改善することができる。この考えは、本質的に時間的補間技法から導出される。時間的補間技法では、ブロックを時間tでの位置(x+dx,y+dy)から時間t+2に位置(x,y)に移動した場合、時間的補間を使用することにより、時間t+1で、その同じブロックが本質的に位置
【0106】
を有していたはずであるという仮定が行われる。
【0107】
このことを、例えば
図14に示す。
図14は、3つのフレーム、すなわち時間t、t+1、およびt+2にそれぞれ対応するPフレーム1400、Bフレーム1402、およびPフレーム1404を示す。しかし、この手法ではなく、現在の符号化規格で最も頻繁に使用される手法では、時間t+1でのフレームの位置(x,y)のところのブロックを、時間tでは
【0111】
で見つけることができる可能性が最も高いと仮定する。
【0112】
後者を
図15に示す。
図15は、3つのフレーム、すなわち時間t、t+1、およびt+2にそれぞれ対応するPフレーム1500、Bフレーム1502、およびPフレーム1504を示す。シーケンス内の直接モードコード化ブロックの数をかなり多くすることができる一方、そのようなケースに対して剰余および動き情報が送られないので、Bフレームの効率を著しく改善することができる。ランレングスコーディング(例えば、汎用可変長コード(UVLC)エントロピーコーディングを使用する場合)を使用して、性能をさらに改善することもできる。
【0113】
遺憾ながら、現在のJVT規格では、直接モードブロックに隣接するブロックの動きベクトル予測をどのように実施すべきかが明らかにされていない。現在のソフトウェアからわかるように、直接モードブロックは現在、「異なる基準フレーム」を有するものとみなされており、したがってこのような場合に、空間的相関が利用されない。このことは、予測の効率を著しく低下させる可能性があり、Bフレームに対して適用するエラー隠蔽アルゴリズムが必要である場合に、その性能に潜在的に影響を及ぼす可能性もある。
【0114】
例えば、A、B、C、およびDがすべて直接モードコード化される場合に現在のコーデックでEの動きベクトルを予測したい場合、予測子が(0,0)として設定される。これは良い決定ではない。
【0115】
図16では、例えば、EがA、B、C、およびDから予測される。したがって、A、B、C、またはDが直接モードコード化される場合、その実際の値は、現在は予測では使用されない。しかしこのことは変更することができる。したがって、例えば、A、B、C、またはDが直接モード符号化される場合、動きベクトルの実際の値と、基準フレームを予測で使用することができる。これにより、2つの選択可能なオプションが与えられる。(1)後続のPフレーム中の配列マクロブロック/ブロックがイントラコード化される場合、基準フレームが−1に設定される。(2)後続のPフレーム中の配列マクロブロック/ブロックがイントラコード化される場合、基準フレームが0であると仮定する。
【0116】
本発明のある態様によれば、その代わりに、動きベクトル予測を実施するために、直接モードコード化ブロックから入手可能な実際の動き情報を使用することができる。これにより、Bフレームシーケンス内の動きベクトルの相関を高めることが可能となり、したがって、効率を改善することができる。
【0117】
1つの生じ得る問題は、後続のフレーム中の配列ブロック/マクロブロックがイントラコード化された直接モードマクロブロックを適切に処理する方法である。この場合、例えば、2つの可能なオプションには、
(1)このマクロブロック/ブロックを異なる基準フレームを有するものとみなし、したがって動きベクトル予測でこのマクロブロック/ブロックを使用しないこと、および
(2)このマクロブロックが(0,0)動きベクトルおよび基準フレーム0を有するものとみなすことが含まれる。
【0118】
本発明のある他の例示的実装によれば、ブロック化解除フィルタプロセスで別の変更を行うことができる。直接モードでは、ブロック化解除フィルタプロセスは、直接コード化ブロックから取られた格納動きベクトル情報を比較するように構成することができる。そうでない場合、これらは通常ゼロとみなされる。しかし別の修正形態では、その代わりに、使用するブロックタイプの如何に関わらず(厳密な)動きベクトルを比較するようにブロック化解除フィルタプロセスを構成することができる。したがって、ある実装では、直接コード化ブロックに関して剰余が送られない場合、「より強力な」ブロック化解除フィルタにより、さらに性能を改善することができる。
【0119】
さらに、ある他の実装では、Bフレームに関するレートひずみ決定を再設計することができる。動きベクトル予測方式のある実装に関して、レートひずみ最適化決定で使用する、異なるラグランジュパラメータλにより、コーディング効率がさらに向上する可能性が極めて高いからである。そのようなλは例えば、
【0122】
インターモード決定の細分化
JVT規格は現在、ほとんどの現在の他のブロックベースのコーディング規格に対して圧倒的な性能上の利点を有している。この性能の一部は、固定ブロックサイズを有するのではなく、16×16から4×4(ピクセル)にわたる可変ブロックサイズを使用できるためであると考えることができる。そのようにすることにより、例えば、時間的相関をより効果的に利用することが可能となる。遺憾ながら、従来のコーディング論理機構(例えばハードウェア、ファームウェア、および/またはソフトウェア)に現在存在しているモード決定技法のためにモード決定が最適に実施されない可能性があり、したがってより良好に割り振ることができるビットを浪費されることがわかった。
【0123】
本節では、この問題および/または別の問題を少なくとも部分的に解決する、別の方法および装置を提供する。ここでは、少なくとも16×8および8×16(ピクセル)ブロックモードで使用するように、例示的方法および装置を構成した。さらに、少なくとも1つの追加の基準が導入される、比較的単純な解決策を使用して、エンコーダの複雑さについて約5%から10%の間の節約が実現される。
【0124】
JVT規格の2つの主要な特徴は、可変マクロブロックモード選択とレートひずみ最適化である。16×16(ピクセル)マクロブロックは、動き情報も送られる様々な区分化モードを使用してコード化することができる。使用するモードの選択は、レートひずみ最適化段階で実施することができ、その段階では、可能な最良のビットレートでの可能な最良の品質の決定が試みられる。遺憾ながら、サブパーティションごとの可能な最良の動き情報の割当ては、符号化の完全に異なるプロセスで行われるので、ある場合には、非16×16モード(例えば16×8または8×16(ピクセル))が16×16マクロブロックと等価な動き情報を搬送する可能性がある。各モードに対して使用する動き予測子は相異なる可能性があるので、このような16×16タイプ動き情報は、16×16モードに割り当てられたものとは異なる可能性が高い。さらに、ある条件の下では、非16×16マクロブロックタイプが16×16動き情報を持続する場合であっても、レートひずみ最適化が、16×16モードを使用してコード化することが良いかどうかを検討することなく、最終的に非16×16マクロブロックタイプを使用することを決定する可能性がある。
【0125】
このことを理解して、そのようなケースが生じたときを判定し、それによって性能の向上を達成することができるように例示的システムを構成することができる。本発明のある例示的実装によれば、例えばP2to1およびP3to1と呼ぶ、2つの追加のモードが、モード決定プロセス/段階内で使用可能となる。P2to1およびP3to1モードは、それぞれ16×8サブパーティショニングおよび8×16サブパーティショニングの動き情報が16×16モードと等価なときに使用可能にされる。
【0126】
ある実装では、各パーティションに割り当てられるすべての動きベクトルおよび基準フレームを等しくすることができる。したがって、レートひずみプロセス/段階中に、等しいモードを使用可能にし、検査することができる。剰余情報およびひずみ情報は、サブパーティションの場合と比較して変化しない可能性が高いので、著しく計算を増大させることなく、それらを再利用することができる。
【0127】
しかしレートひずみモード決定が完全ではないことを考慮すると、現在の最良のモードの如何に関わらずこの2つの追加のモードを追加および考慮することによって、ある限定されたケースでは、効率が改善されるのではなく、低下する可能性がある。代替方法として、使用するモード決定によれば、対応するサブパーティショニングモードも可能な最良のモードであるときにだけ、これらのモードを使用可能にすることができる。そのようにすることにより、PSNRに影響を与えずに、他の論理機構(例えばコーデックなど)と比較して改善(例えばビットレート低減)を実現することができる。
【0128】
16×8または8×16サブパーティショニングの動き情報が16×16モードのものと等しい場合、このようなモードに関するモード決定の実施が不要となる。例えば、第1サブパーティションの動きベクトル予測子が16×16モードの動きベクトル予測子と全く同じである場合、モード決定の実施は不要である。このような条件が満たされる場合、モード決定プロセス中にこのモードを完全にスキップすることができる。そのようにすることにより、このモードについて、符号化プロセス中に比較的費用のかかる傾向があるDCT、量子化、および/または他の同様のレートひずみプロセス/測定を実施することが不要となるので、複雑さが著しく低下する。
【0129】
他のある例示的実装では、プロセス全体は、さらに木構造マクロブロックパーティションに拡張することもできる(例えば、非特許文献2参照。)。
【0130】
例示的アルゴリズム
以下は、例示的コーデックまたは他の同様の論理機構でモード細分化を実現するために実施することができる、ある動作である(他のある実装では、動作の順番は変化する可能性があり、かつ/またはある動作を一緒に実施できることに留意されたい)。
【0131】
動作1:Valid[P2to1]=Valid[P3to1]=0に設定する。
【0132】
動作2:可能な各インターモードについて、動きベクトルおよび基準フレームの決定を実施する。
【0134】
、およびrefframe
16×16を、それぞれ16×16モードの動きベクトル、動きベクトル予測子、および基準フレームとし、
【0137】
を、16×8モードについての対応する情報とし、
【0140】
を、8×16モードについての対応する情報とする。
【0150】
動作5:Valid[16x8]=0;動作7に進む。
(例えば、16×8モードが16×16モードと同一である場合、16×8モードを使用不能にする。複雑さの低減。)
【0151】
動作6:Valid[P2to1]=1;(例えば、16×8に対する細分化モードを使用可能にする)
【0162】
動作9:Valid[8x16]=0;動作11に進む。
(例えば、8×16モードが16×16モードと等しい場合、複雑さを低減するため8×16モードを使用不能にする)
【0163】
動作10:Valid[P3to1]=1
(例えば、8×16に対する細分化モードを使用可能にする)
【0165】
動作11:(Valid[MODE]=1)の場合にすべてのインターモードおよびイントラモードに対してレートひずみを実施する。ただしMODE∈{INTRA4x4,INTRA16x16,SKIP,16x16,16x8,8x16,P8x8}である。ラングランジュの関数を使用して、
J(s,c,MODE|QP,λ
MODE)=SSD(s,c,MODE|QP)+λ
MODE・R(s,c,MODE|QP)
最良のモードをBestModeにActSetする。
【0166】
動作12:(BestMode!=16x8)である場合、Valid[P3to1]=0(この動作は任意選択であることに留意されたい)。
【0167】
動作13:(BestMode!=8x16)である場合、Valid[P2to1]=0(この動作は任意選択であることに留意されたい)。
【0168】
動作14:MODE∈{P2to1,P3to1}として、(Valid[MODE]=1)である場合、
2つの追加のモードに対してレートひずみ最適化を実施する(例えば、モードは16×16モードと同等であるとみなされる)。
【0169】
動作15:BestModeを、見つかった全体の最良のモードに設定する。
【0170】
インターレースコーディングに対する例示的直接予測技法の適用
H.26L規格内のインターレース化ビデオコーディングに対する関心が高まっているため、インターレース化シーケンスの符号化性能を高めることに関していくつかの提案が提示された。本節では、H.26L現在のシンタックスおよび/または他の同様のシステムで実装することができる技法を提示する。これらの例示的技法は、性能の向上を実現することができる。さらに、インターレース化コーディングと漸進的ビデオコーディングのどちらにも適用することができる、直接B予測と類似した直接P予測技術を紹介する。
【0171】
例示的直接P予測技法に関する別の情報
Bフレーム内部の動きベクトルの直接モードにより、符号化性能から著しく益を受けることができる。特に最大2つの動きベクトルを送らなければならないことを考えると、動きベクトルの符号化に必要なビットを著しく削減することができるからである。しかし、直接モードを使用してブロックをコード化する場合、動きベクトルは不要であり、その代わりに、後続の第1の基準イメージ中の配列ブロックの動きベクトルの時間的補間として計算される。Pフレームに対する同様の手法は、決して考慮されてこなかったと思われる。Pフレームとその対応するマクロブロックの構造はずっと単純であり、一方各マクロブロックが必要とする動きベクトルは1つだけであるからである。このようなモードを加えることは、その代わりに、著しいオーバヘッドを招く可能性が非常に高く、したがって恐らくは可能などんな改善も無にされたであろう。
【0172】
一方H.26Lでは、いくつかの追加のマクロブロックモードを導入することにより、Pフレームが著しく拡張された。先に述べたように、多くの場合、さらにマクロブロックごとに最大16個の動きベクトルを送ることが必要となる可能性がある。H.26LでのPフレームが含む可能性のあるこの追加のモードオーバヘッドを考慮すると、動きベクトルの直接予測の実装は実行可能である。このようにして、追加のモードの犠牲を払うだけで、使用する動きベクトルおよび基準フレームに関するすべてのビットを節約することができる。例えば
図4を参照されたい。
【0173】
直接P予測のより直接的な方法が、以前のフレーム内の配列ピクセルの動きベクトルを選択することであるとしても、他の実装では、動き加速度を代替の解決策として考慮することもできる。これは、恐らく動きがフレームごとに変化し、動きが一定でなく、かつ加速度を使用することによってより良好な結果を得ることができることに由来する。例えば
図7を参照されたい。
【0174】
このような技法は、さらに漸進的ビデオコーディングに適用することができる。さらに、例えば一定の水平移動だけを伴う領域などのインターレースシーケンス内部でフィールドがある場合に有することができる相関を考慮すると、この手法を、インターレースシーケンスコーディングに関するコーディング効率を改善する助けとすることもできる。このことは、具体的には、例えば隣接するフィールドの動きが同じであると仮定した場合に、周知のフィールドタイプフレームにとって有利となる。このタイプの構成では、同じパリティフィールドを新しいフレームとみなすことができ、それが、インターレース機能を考慮することなく順次コード化される。これはデコーダ上に完全に残される。しかし、この例示的直接Pモードを使用することによって、最初にコード化される(例えばサイズ16×16ピクセルの)フィールドマクロブロックに対して1組の動きベクトルを使用することができるのに対して、同じ位置の第2フィールドは同じ動き情報を再利用している。送る必要のある他の情報は、コード化剰余イメージだけである。他の実装では、2つの配列フィールドブロックの剰余イメージ間の相関を考慮することにより、これらの技法をさらに改良することが可能である。
【0175】
Pフレームで直接モードを可能とするためには、1つの追加のインターモードをシステムに追加することが基本的に必要である。したがって、8個のインターモードだけを有するのではなく、1つの例では、以下に示す9個のインターモードを使用することができる。
【0176】
インターモード 説明
COPY_MB 0 スキップマクロブロックモード
M16x16_MB 1 1つの16×16ブロック
M16x8_MB 2 2つの16×8ブロック
M8x16_MB 3 2つの8×16ブロック
M8x8_MB 4 4つの8×8ブロック
M8x4_MB 5 8つの8×4ブロック
M4x8_MB 6 8つの4×8ブロック
M4x4_MB 7 16個の16×8ブロック
PDIRECT_MB 8 以前のフレーム中の配列マクロブロックのコピーモードおよび動きベクトル
【0177】
一般には、Pフレームに関するこのような例示的直接モードは、スキップマクロブロックを除くが、直接モードを含めて配列マクロブロックもINTERタイプである場合に出現することができる。他の場合には、使用することができる動き情報が存在しないからである。以前のマクロブロックも直接Pモードで符号化される場合、代わりにこのマクロブロックに関する最も最近の動きベクトルおよびモードが考慮される。しかしこのモードが論理的に出現するのではない場合、具体的にはINTRAモードが使用された場合をより効率的に扱うために、情報のコピーが先フレームからではなく、その1つ前からである第2スキップマクロブロックモードをモードがそのとき示す場合にこのモードが出現することを可能とすることを選択することができる。この場合、剰余情報は符号化されない。これは、インターレースシーケンスに対して特に有用である。先の技法で提示したのと同様に、以前に符号化したフィールドフレームからではなく、同じパリティフィールドフレームからより高い精度でマクロブロックを見つけることができる可能性がより高いからである。
【0178】
効率をさらに改善するために、インターレースイメージをコーディングするときに1組の2つのフィールドタイプフレームを使用する場合、同じパリティフィールドイメージを使用するようにスキップマクロブロックモードを構成することができる。例えば直接Pモードをスキッピングフラグとして使用する場合、その代わりに異なるパリティが使用される。直接Pモードの追加の利点は、エンコーダ中の複雑さの著しい低減が可能であることである。直接Pモードが満足の行く十分な解決策を与えるかどうかをシステムが事前チェックを実施することが可能であるからであり、そうである場合、その特定のブロックのモード決定および動き推定に関して追加の計算は不要となる。動きベクトルコーディングの問題にも対処するため、直接Pコーディングのために使用する動きベクトルを、MEDIAN予測子の計算と「同様に」使用することができる。
【0179】
最良フィールドファースト技法およびフィールドリシャッフリング
インターレースフレーム素材と、同じストリーム内部の別々のインターレースフィールドイメージのどちらもサポートすることが可能なインターレース化シーケンスのコーディングにより、2つの方法の一方だけを使用するコーディングよりもずっと良好な解決策が得られる可能性が高い。別々のインターレースフィールド技法は、例えばブロック化解除などのいくつかの追加の利点を有し、具体的には強化エラー回復力を提供することができる。例えばエラーが1つのフィールドイメージ内部に生じた場合、第2イメージからの情報を使用して、エラーを容易に吸収することができる。
【0180】
フレームベースの技法に関してはそうではなく、特にこのようなフレームで使用する、しばしば大きなサイズのビットを考慮するときは、このようなフレーム内部のエラーがずっと高い確率で生じる可能性がある。ピクセル/ブロック間の相関の低下により、エラー回復が促進されない可能性がある。
【0181】
この場合、どのフィールドを最初に表示すべきかを無視すると同時に、どのフィールドを最初に符号化すべきかをエンコーダによって選択することを可能にすることにより、フィールド/フレームコーディングの概念をさらに改良することができる。このことは、デコーダ上で自動的に処理することができる。デコーダでは、将来のフィールドフレームを表示するまでそれを格納するために、大きいバッファが必要となる。例えば時間の点で上部フィールドが下部フィールドに先行する場合であっても、まず下部フィールドをコード化して送り、その後に上部フィールドフレームが続く場合、コーディング効率が高くなることがある。この決定は、例えばレートひずみ最適化プロセス/段階で行うことができる。レートひずみ最適化プロセス/段階では、奇数フィールドを最初にコード化し、その後に偶数フィールドが続く場合と、その代わりに偶数フィールドをコード化し、それを奇数フィールドに対する基準として使用する場合の性能をまず検査する。このような方法は、エンコーダとデコーダがどちらも、どのフィールドを最初に表示すべきかを認識すべきであることを意味し、任意のリシャッフリングがシームレスに行われる。奇数フィールドを最初にコード化する場合であっても、エンコーダとデコーダがどちらも、INTER/INTRA予測のためにフレームを索引付けするときにこの変化を認識していることも重要である。4つの基準フレームを用いるこのような予測方式の例を
図17および
図18に示す。
図17では、Pフレームで例示的な最良フィールドファースト方式を用いるインターレースコーディングを示す。
図18では、Bフレームで最良フィールドファースト方式を用いるインターレースコーディングを示す。
【0182】
コーディングジョイントフィールド/フレームイメージの場合、
図19に例示的に示す方式を使用することができる。この場合、フレームおよびフィールドベースのコーディングを用いる最良フィールドファースト方式の例示的実装が示されている。フレームベースの動き推定のために2つのフレームを使用する場合、特にフィールドスワッピングが行われる場合にフィールドの動き推定のために少なくとも5つのフィールドフレームを使用することができる。これにより、同じパリティの少なくとも2つのフィールドフレームの参照が可能となる。一般には、N個の全フレームを使用すべきである場合、2×N+1個のフィールドフレームを格納すべきである。フレームはまた、このようなプロセス用のエンコーダおよびデコーダ上で、容易にインターリーブおよびインターリーブ解除することもできる。
【0183】
結論
上記の説明では、構造的特徴および/または動作に特有の術語を用いたが、頭記の特許請求の範囲で定義される発明は、ここで説明した特定の機能および動作に限定されないことを理解されたい。むしろ、本発明を実施する例示的形態としてこの特定の特徴および操作を開示する。