本願の目的、技術的解決策、及び利点をより明確化するために、以下、添付図面を参照して、本願の実装を更に詳細に説明する。
図1は、本願の実施形態によるビデオ・コーディング・システム10の概略ブロック図である。図1に示すように、システム10はソース装置12を含む。ソース装置12は、後に宛先装置14によって復号化されるべき符号化されたビデオ・データを生成する。ソース装置12及び宛先装置14は、デスクトップ・コンピュータ、ノートブック・コンピュータ、タブレット・コンピュータ、セット・トップ・ボックス、「スマート」フォンのような電話ハンドセット、「スマート」タッチパッド、テレビ、カメラ、ディスプレイ装置、デジタル・メディア・プレーヤ、ビデオ・ゲーム・コンソール、ビデオ・ストリーミング送信装置などを含む広範囲の装置の任意の何れかを含む可能性がある。幾つかの用途では、ソース装置12及び宛先装置14は、無線通信用に装備されていてもよい。
宛先装置14は、リンク16を介して、復号化対象の符号化されたビデオ・データを受信することができる。リンク16は、符号化されたビデオ・データを、ソース装置12から宛先装置14へ送信することが可能な任意のタイプの媒体又は装置を含むことができる。実現可能な実装において、リンク16は、ソース装置12が、符号化されたビデオ・データを宛先装置14へリアル・タイムで直接的に送信することを可能にする通信媒体を含む可能性がある。符号化されたビデオ・データは、通信規格(例えば、無線通信プロトコル)に従って変調されることが可能であり、その後、宛先装置14へ送信される。通信媒体は、任意の無線又は有線の通信媒体、例えば、無線周波数スペクトル又は少なくとも1つの物理的な送信ラインを含む可能性がある。通信媒体は、パケット・ベースのネットワーク(例えば、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、又はインターネットのようなグローバル・ネットワーク)の一部を構成することができる。通信媒体は、ルーター、スイッチ、基地局、又は、ソース装置12から宛先装置14への通信を促進するために使用されることが可能な任意の他のデバイスを含む可能性がある。
代替的に、符号化されたデータは出力インターフェース22からストレージ装置へ出力されてもよい。同様に、符号化されたデータは、入力インターフェースを介してストレージ装置からアクセスされる可能性がある。ストレージ装置は、複数の分散されたデータ記憶媒体又はローカルにアクセスされるデータ記憶媒体、例えば、ハード・ドライブ、ブルーレイ、デジタル多用途ディスク(digital versatile disc,DVD)、コンパクト・ディスク・リード・オンリー・メモリ(compact disc read-only memory,CD-ROM)、フラッシュ・メモリ、揮発性又は不揮発性メモリ、又は、符号化されたビデオ・データを記憶するように構成された任意の他の適切なデジタル記憶媒体のうちの任意の1つを含む可能性がある。別の実現可能な実装において、ストレージ装置は、ソース装置12によって生成された符号化ビデオを保持することが可能なファイル・サーバー又は別の中間的なストレージ装置に対応する可能性がある。宛先装置14は、ストリーミング送信又はダウンロードにより、ストレージ装置からの記憶されたビデオ・データにアクセスすることが可能である。ファイル・サーバーは、符号化されたビデオ・データを記憶し、符号化されたビデオ・データを宛先装置14へ送信することが可能な任意のタイプのサーバーであるとすることができる。実現可能な実装において、ファイル・サーバーは、ウェブサイト・サーバー、ファイル転送プロトコル・サーバー、ネットワーク接続ストレージ装置、又はローカル・ディスク・ドライブを含む。宛先装置14は、インターネット接続を含む任意の標準データ接続を介して、符号化されたビデオ・データにアクセスすることができる。データ接続は、ファイル・サーバーに記憶された符号化されたビデオ・データにアクセスするのに適した無線チャネル(例えば、ワイヤレス・フィデリティ(wireless-fidelity,Wi-Fi)接続)又は有線接続(例えば、ケーブル・モデム)、又はそれらの組み合わせを含む可能性がある。ストレージ装置からの符号化されたビデオ・データの送信は、ストリーミング送信、ダウンロード送信、又はそれらの組み合わせであってもよい。
本願における技術は必ずしも無線のアプリケーションや設定に限定されない。技術は、複数のマルチメディア・アプリケーション、例えば、オーバー・ザ・エアー・テレビジョン放送、ケーブル・テレビジョン伝送、衛星テレビジョン伝送、ビデオ・ストリーミング伝送(例えば、インターネットを介するもの)、データ記憶媒体における記憶のためのデジタル・ビデオの符号化、データ記憶媒体に記憶されたデジタル・ビデオの復号化、又は他のアプリケーションのうちの任意の何れかをサポートするために、ビデオ復号化に適用されることが可能である。幾つかの実現可能な実装において、システム10は、ビデオ・ストリーミング伝送、ビデオ再生、ビデオ放送、及び/又はビデオ電話などのアプリケーションをサポートするために、一方向又は双方向のビデオ伝送をサポートするように構成されてもよい。
図1の実現可能な実装において、ソース装置12は、ビデオ・ソース18、ビデオ・エンコーダ20、及び出力インターフェース22を含む。幾つかのアプリケーションにおいて、出力インターフェース22は、変調器/復調器(モデム)及び/又は送信機を含んでもよい。ソース装置12において、ビデオ・ソース18は、例えば以下のソース:ビデオ捕捉装置(例えば、ビデオ・カメラ)、以前に捕捉されたビデオを含むビデオ・アーカイブ、ビデオ・コンテンツ・プロバイダからビデオを受信するビデオ・フィードイン・インターフェース、及び/又はソース・ビデオとしてコンピュータ・グラフィックス・データを生成するコンピュータ・グラフィックス・システム、又はそれらの組み合わせを含むことが可能である。実現可能な実装において、ビデオ・ソース18がビデオ・カメラである場合に、ソース装置12及び宛先装置14は、カメラ電話又はビデオ電話を構成することが可能である。例えば、本願で説明される技術は、例えば、ビデオ復号化に適用されることが可能であり、無線及び/又は有線アプリケーションに適用されることが可能である。
ビデオ・エンコーダ20は、捕捉された又は予め捕捉されたビデオ、又はコンピュータによって生成されたビデオを符号化することができる。符号化されたビデオ・データは、ソース装置12の出力インターフェース22を介して宛先装置14へ直接的に送信されることが可能である。符号化されたビデオ・データはまた(又は代替的に)、記憶装置24に記憶されることが可能であり、その結果、宛先装置14又は別の装置は以後に、復号化及び/又は再生のために、符号化されたビデオ・データにアクセスする。
宛先装置14は、入力インターフェース28、ビデオ・デコーダ30、及びディスプレイ装置32を含む。幾つかのアプリケーションでは、入力インターフェース28は、受信機及び/又はモデムを含んでもよい。宛先装置14の入力インターフェース28は、リンク16を介して、符号化されたビデオ・データを受信する。リンク16を介してストレージ装置24に送信又は提供される符号化されたビデオ・データは、ビデオ・エンコーダ20によって生成され且つビデオ・デコーダ30のようなビデオ・デコーダによってビデオ・データを復号化するために使用される複数のシンタックス要素を含む可能性がある。これらのシンタックス要素は、通信媒体上で送信され、且つ記憶媒体又はファイル・サーバーに記憶される、符号化されたビデオ・データに含まれることが可能である。
ディスプレイ装置32は、宛先装置14と一体化されていてもよいし、或いは宛先装置14の外側に配置されていてもよい。幾つかの実現可能な実装において、宛先装置14は、統合されたディスプレイ装置を含んでもよく、また、外部ディスプレイ装置のインターフェースに接続するように構成されてもよい。他の実現可能な実装において、宛先装置14はディスプレイ装置であってもよい。一般に、ディスプレイ装置32は、復号化されたビデオ・データをユーザーに表示し、複数のディスプレイ装置、例えば、液晶ディスプレイ、プラズマ・ディスプレイ、有機発光ダイオード・ディスプレイ、又は他のタイプのディスプレイ装置のうちの任意の1つを含むことができる。
ビデオ・エンコーダ20及びビデオ・デコーダ30は、例えば、現在開発されている次世代ビデオ・コーディング圧縮規格(H.266)に従って動作することが可能であり、H.266テスト・モデルに準拠していてもよい。
代替的に、ビデオ・エンコーダ20及びビデオ・デコーダ30は、例えばITU-T H.265規格又はITU-T H.264規格のような他の専用若しくは工業規格、又はこれらの規格の拡張に従って動作してもよい。ITU-T H.265規格はまた、高効率ビデオ復号化規格とも呼ばれ、ITU-T H.264規格は代替的に、動画エキスパート・グループ(moving picture experts group,MPEG-4)パート10又はアドバンスト・ビデオ・コーディング(advanced video coding,AVC)とも呼ばれている。しかしながら、本願の技術は、如何なる特定の復号化規格にも限定されない。他の実現可能な実装において、ビデオ圧縮規格はMPEG-2及びITU-T H.263を含む。
図1には示されていないが、幾つかの態様において、ビデオ・エンコーダ20及びビデオ・デコーダ30はそれぞれオーディオ・エンコーダ及びオーディオ・デコーダと一体化されていてもよく、同じデータ・ストリーム又は別個のデータ・ストリームにおいてオーディオ及びビデオの両方を符号化するために、適切なマルチプレクサ・デマルチプレクサ(multiplexer-demultiplexer,MUX-DEMUX)ユニット又は他のハードウェア及びソフトウェアを含んでもよい。適用可能であるならば、幾つかの実現可能な実装において、MUX-DEMUXユニットは、ITU H.223マルチプレクサ・プロトコル、又はユーザー・データグラム・プロトコル(user datagram protocol,UDP)のような他のプロトコルに準拠してもよい。
ビデオ・エンコーダ20及びビデオ・デコーダ30は、複数の適切なエンコーダ回路、例えば、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(digital signal processor,DSP)、特定用途向け集積回路(application specific integrated circuit, ASIC)、フィールド・プログラマブル・ゲート・アレイ(field programmable gate array, FPGA)、ディスクリート・ロジック、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせのうちの任意の1つとして実現されることが可能である。幾つかの技術がソフトウェアとして実現される場合、装置は、本願における技術を実現するために、適切な非一時的なコンピュータ読み取り可能な媒体にソフトウェアの命令を記憶し、1つ以上のプロセッサを使用することによってハードウェアの形式で命令を実行することができる。ビデオ・エンコーダ20及びビデオ・デコーダ30はそれぞれ1つ以上のエンコーダ又はデコーダに含まれてもよい。ビデオ・エンコーダ20及びビデオ・デコーダ30の何れも、対応する装置において組み合わされたエンコーダ/デコーダ(coder decoder,CODEC)の一部として統合されることが可能である。
本願は、例えば、ビデオ・エンコーダ20が特定の情報を例えばビデオ・デコーダ30に「シグナリング」する別の装置に関する可能性がある。しかしながら、ビデオ・エンコーダ20は、情報をシグナリングするために、特定のシンタックス要素を、ビデオ・データの符号化された部分に関連付けることができることは、理解されるべきである。即ち、ビデオ・エンコーダ20は、データをシグナリングするために、特定のシンタックス要素を、ビデオ・データの符号化された部分のヘッダ情報に記憶することができる。幾つかのアプリケーションでは、これらのシンタックス要素は、ビデオ・デコーダ30によって受信され復号化される前に、符号化され記憶される(例えば、ストレージ・システム又はファイル・サーバーに記憶される)。従って、用語「信号」は、伝送がリアル・タイムで行われるか、ほぼリアル・タイムで行われるか、又はある時間スパン内で行われるかによらず、例えば、シンタックスの伝送又は圧縮されたビデオ・データを復号化するために使用される他のデータの伝送を意味する可能性がある。例えば、伝送は、符号化の間にシンタックス要素が媒体に記憶された場合に実行されることが可能であり、その後、シンタックス要素は、媒体に記憶された後の任意の時間に、復号化装置によって取り出されることが可能である。
共同ビデオ・エキスパート・チーム(joint video team,JVT)は、H.265高効率ビデオ符号化(high efficiency video coding, HEVC)規格を開発した。HEVC標準化は、ビデオ復号化装置の進化したモデルに基づいており、モデルはHEVCテスト・モデル(HM)と呼ばれる。最新のH.265規格文書はhttp://www.itu.int/rec/T-REC-H.265において入手可能ある。標準文書の最新バージョンはH.265(12/16)であり、標準文書は参照によりその全体が本願に組み込まれる。HMでは、ビデオ復号化装置は、ITU-TH.264/AVCの既存のアルゴリズムに関連する幾つかの追加的な能力を有することが仮定されている。例えば、H.264は9個のイントラ予測符号化モードを提供する一方、HMは最大35個のイントラ予測符号化モードを提供することができる。
JVETはH.266規格の開発に取り組んでいる。H.266標準化プロセスは、ビデオ復号化装置の進化したモデルに基づいており、モデルはH.266テスト・モデルと呼ばれる。H.266アルゴリズムの説明はhttp://phenix.int-evry.fr/jvetで入手可能であり、最新のアルゴリズムの説明はJVET-G1001-v1に含まれている。アルゴリズム記述文書は、その全体が参照により本願に組み込まれる。更に、JEMテスト・モデルのための参照ソフトウェアは、https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/で入手可能であり、その全体が参照により本願に組み込まれる。
一般に、HMワーキング・モデルで説明されているように、ビデオ・フレーム又はピクチャは、ルマ及びクロマ・サンプルの両方を含む、一連のツリー・ブロック又は最大コーディング・ユニット(largest coding unit,LCU)に分割されることが可能である。LCUはまた、コーディング・ツリー・ユニット(coding tree unit,CTU)とも呼ばれる。ツリー・ブロックは、H.264規格のマクロブロックのものと同様の機能を有する。スライスは、復号化の順序で幾つかの連続するツリー・ブロックを含む。ビデオ・フレーム又はピクチャは、1つ又は複数のスライスに区分けされることが可能である。各ツリー・ブロックは、四分木に基づいてコーディング・ユニットに分割されることが可能である。例えば、四分木のルート・ノードとして機能するツリー・ブロックは、4つの子ノードに分割することが可能であり、各々の子ノードはまた、親ノードとして機能する可能性があり、他の4つの子ノードに分割される。四分木のリーフ・ノードとして機能する最終的な分割不可能な子ノードは、復号化ノード、例えば、復号化されたビデオ・ブロックを含む。復号化されたビットストリームに関連したシンタックス・データにおいて、ツリー・ブロックが分割されることが可能な最大回数と、復号化ノードの最小サイズとが、決定される可能性がある。
1つのCTUは、1つのコーディング・ツリー・ブロック(coding tree block,CTB)及び同じ位置における2つのクロマCTBと、幾つかの対応する構文要素とを含むことに留意すべきである。CTBは、1つのコーディング・ブロック(coding block,CB)として直接的に使用されることが可能であるか、又は複数の小さなコーディング・ブロックCB、1つのルマCB、2つのクロマCB、及び幾つかの対応するシンタックス要素に、四分木の形式で分割されて、1つのコーディング・ユニット(coding unit,CU)を形成することが可能である。
CUは、復号化ノード、予測ユニット(prediction unit,PU)、及び復号化ノードに関連する変換ユニット(transform unit,TU)を含む。CUのサイズは復号化ノードのサイズに対応し、CUの形状は正方形である必要がある。CUのサイズは、8×8ピクセルから最大64×64ピクセルまでのレンジにあるか、又はより大きなツリー・ブロック・サイズであってもよい。各CUは、1つ以上のPU及び1つ以上のTUを含むことが可能である。例えば、CUに関連するシンタックス・データは、1つのCUを1つ以上のPUに区分けすることを記述することができる。パーティショニング・パターンは、CUがスキップ又はダイレクト・モードで符号化される場合、イントラ予測モードで符号化される場合、又はインター予測モードで符号化される場合に、相違する可能性がある。パーティショニングによって得られるPUは、非正方形の形状である可能性がある。例えば、CUに関連するシンタックス・データはまた、四分木に基づく1つ以上のTUへのCUのパーティショニングを記述することができる。TUは、正方形又は非正方形の形状であってもよい。
HEVC規格はTUベースの変換を許容する。異なるCUは異なるTUを含む可能性がある。TUのサイズは、通常、区分けされたLCUに対して規定される所与のCU内のPUのサイズに基づいて設定される。しかしながら、常にこのようではないかもしれない。TUのサイズは通常、PUのものと同じか又はそれより小さい。幾つかの実現可能な実装において、「残差四分木」(residual quadtree,RQT)と呼ばれる四分木構造が、CUに対応する残差サンプルを、より小さなユニットに分割するために使用される可能性がある。RQTのリーフ・ノードは、TUと言及される場合がある。TUに関連するピクセル差分は、変換係数を生成するために変換される可能性があり、変換係数は量子化される可能性がある。
一般に、PUは、予測処理に関するデータを含む。例えば、PUがイントラ・モードで符号化される場合、PUは、PUのイントラ予測モードを記述するデータを含む可能性がある。別の実現可能な実装において、PUがインター・モードで符号化される場合、PUは、PUのための動きベクトルを規定するデータを含む可能性がある。例えば、PUのための動きベクトルを規定するデータは、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4ピクセル精度又は1/8ピクセル精度)、動きベクトルが指し示す参照ピクチャ、及び/又は動きベクトルの参照ピクチャ・リスト(例えば、リスト0、リスト1、又はリストC)を記述することができる。
一般に、変換及び量子化処理がTUに対して使用される。1つ以上のPUを含む所与のCUは、1つ以上のTUを含むことも可能である。予測を実行した後に、ビデオ・エンコーダ20は、PUに対応する残差を計算することができる。残差は、ピクセル差分を含む。ピクセル差分は変換係数に変換されることが可能であり、変換係数は量子化され、TUを用いてスキャンされて、エントロピー復号化のためのシリアル化された変換係数を生成する。本願では、用語「ビデオ・ブロック」は、通常、CUの復号化ノードを示すために使用される。幾つかの特定のアプリケーションでは、用語「ビデオ・ブロック」はまた、復号化ノード、PU、及びTUを含むツリー・ブロック、例えばLCU又はCUを示すために使用されることが可能である。
ビデオ・シーケンスには、通常、一連のビデオ・フレーム又はピクチャを含む。例えば、ピクチャのグループ(group of pictures, GOP)は、一連のビデオ・ピクチャ、又は1つ以上のビデオ・ピクチャを含む。GOPは、GOPのヘッダ情報、1つ以上のピクチャのヘッダ情報などにシンタックス・データを含む可能性があり、シンタックス・データは、GOPに含まれるピクチャの量を記述する。ピクチャの各スライスは、対応するピクチャの符号化モードを記述するスライス・シンタックス・データを含む可能性がある。ビデオ・エンコーダ20は、通常、ビデオ・データを符号化するために、個々のビデオ・スライス内のビデオ・ブロックに対して動作を実行する。ビデオ・ブロックは、CUにおける復号化ノードに対応する可能性がある。ビデオ・ブロックのサイズは、固定されていてもよいし、又は変更可能であってもよく、指定された復号化規格によって異なる可能性がある。
実現可能な実装において、HMは様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HMは、2N×2N又はN×Nのサイズを用いたPUに対するイントラ予測と、2N×2N、2N×N、N×2N、又はN×Nのサイズを用いた対称的なPUに対するインター予測をサポートし、HMはまた、2N×nU、2N×nD、nL×2N、又はnR×2Nのサイズを用いたPUに対するインター予測の非対称パーティショニングもサポートする。非対称パーティショニングにおいて、CUはある方向では区分けされず、別の方向では2つの部分に区分けされ、一方の部分はCUの25%を占め、他方の部分はCUの75%を占める。CUの25%を占める部分は、「n」の後に「U(Up)」、「D(Down)」、「L(Left)」、「R(Right)」を続けて示すインジケータによって示される。従って、例えば「2N×nU」は、水平に区分けされた2N×2N CUを指し、上部は2N×0.5N PU、下部は2N×1.5N PUである。
本願では、「N×N」及び「NかけるN」は、例えば16×16ピクセル又は16に16を乗算した個数のピクセルのように、垂直次元及び水平次元のビデオ・ブロックのピクセル・サイズを示すために可換に使用されることが可能である。一般に、16×16ブロックは、垂直方向に16ピクセル(y=16)、水平方向に16ピクセル(x=16)を有する。同様に、N×Nブロックは、通常、垂直方向にN個のピクセルを有し、水平方向にN個のピクセルを有し、ここで、Nは非負の整数値である。ブロック中のピクセルは、行及び列に配列されることが可能である。また、ブロックの水平方向におけるピクセルの量と垂直方向におけるピクセルの量とは、必ずしも同じではない可能性がある。例えば、ブロックは、N×Mピクセルを含んでもよく、ここで、Mは、必ずしもNに等しくない。
CU内のPUに関するイントラ又はインター予測復号化を実行した後に、ビデオ・エンコーダ20は、CU内のTUの残差データを計算することができる。PUは、空間ドメイン(ピクセル・ドメインとも呼ばれる)内のピクセル・データを含む可能性があり、TUは、残差ビデオ・データに適用される変換(例えば、離散コサイン変換(discrete cosine transform,DCT)、整数変換、ウェーブレット変換、又は他の概念的に類似する変換)の後の変換ドメインにおける係数を含む可能性がある。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測子との間のピクセル差分に対応する可能性がある。ビデオ・エンコーダ20は、CUの残差データを含むTUを生成し、次いでTUを変換してCUの変換係数を生成することができる。
変換係数を生成するために何らかの変換を実行した後に、ビデオ・エンコーダ20は、変換係数を量子化することができる。量子化は、例えば係数を表すために使用されるデータの量を減らし、更なる圧縮を実行するために、係数を量子化するプロセスを指す。量子化プロセスは、係数の幾つか又は全てに関連するビット深度を低減することができる。例えば、量子化の間に、nビット値は、丸めによりmビット値に低減されることが可能であり、ここで、nはmより大きい。
JEMモデルはビデオ・ピクチャ符号化構造を更に改良する。具体的には、「四分木プラス二分木」(quad tree plus binary tree,QTBT)構造と呼ばれるブロック・コーディング構造が導入される。HEVCにおけるCU、PU、TUのような概念を使用せずに、QTBT構造は、より柔軟なCU分割形状をサポートする。CUは、正方形又は長方形におけるものであってもよい。四分木パーティショニングが先ずCTU上で実行され、二分木パーティショニングが、四分木のリーフ・ノード上で更に実行される。更に、対称水平パーティショニング及び対称垂直パーティショニングという2つの二分木パーティショニング・モードが存在する。二分木のリーフ・ノードはCUと言及される。JEMモデルにおけるCUは、予測及び変換の間に更に区分けされることはできない。言い換えれば、JEMモデルにおけるCU、PU、及びTUは、同じブロック・サイズを有する。既存のJEMモデルでは、最大CTUサイズは256×256ルマ・ピクセルである。
幾つかの実現可能な実装において、ビデオ・エンコーダ20は、量子化された変換係数を、所定のスキャン順序でスキャンして、エントロピー符号化されることが可能なシリアル化されたベクトルを生成することができる。他の実現可能な実装において、ビデオ・エンコーダ20は、適応スキャニングを実行することができる。量子化された変換係数をスキャンして1次元ベクトルを形成した後に、ビデオ・エンコーダ20は、文脈適応型可変長コーディング(context-adaptive variable-length coding,CAVLC)法、文脈ベースの適応型二進算術コーディング(context-based adaptive binary arithmetic coding,CABAC)法、確率間隔パーティショニング・エントロピー(probability interval partitioning entropy,PIPE)コーディング法、又は別のエントロピー・コーディング法に基づいて、1次元ベクトルをエントロピー符号化することができる。ビデオ・エンコーダ20は、符号化されたビデオ・データに関連付けられたシンタックス要素を更に符号化することが可能であり、その結果、ビデオ・デコーダ30はビデオ・データを復号化する。
CABACを実行するために、ビデオ・エンコーダ20は、コンテキスト・モデルにおけるコンテキストを、送信対象のシンボルに割り当てることができる。コンテキストは、シンボルの隣接する値が非ゼロであるかどうかに関連付けられる可能性がある。CAVLCを実行するために、ビデオ・エンコーダ20は、送信対象のシンボルの可変長コードを選択することができる。可変長コーディングにおけるコードワード(variable-length coding,VLC)は、より短いコードがより可能性の高いシンボルに対応し且つより長いコードがより可能性の低いシンボルに対応するように、構成されることが可能である。このようにして、全ての送信対象のシンボルに対して等しい長さのコードワードを使用することと比較して、VLCを使用することは、ビット・レートを削減することができる。CABACにおける確率は、シンボルに割り当てられたコンテキストに基づいて決定されることが可能である。
本願のこの実施形態では、ビデオ・エンコーダは、ピクチャ間の時間的な冗長性を低減するために、インター予測を実行することができる。上述したように、CUは、異なるビデオ圧縮コーディング規格に従って、1つ以上の予測ユニットPUを有することが可能である。言い換えれば、複数のPUが1つのCUに属している可能性があり、あるいはPU及びCUは同じサイズを有する。本明細書では、CU及びPUが同じサイズを有する場合、CUのパーティショニング・モードは、パーティションなしを実行するか、又はCUを1つのPUに区分けし、ここで、PUは説明のために均一に使用される。ビデオ・エンコーダがインター予測を実行する場合、ビデオ・エンコーダは、PUに関する動き情報を、ビデオ・デコーダにシグナリングすることが可能である。例えば、PUに関する動き情報は、参照ピクチャ・インデックス、動きベクトル、及び予測方向識別子を含む可能性がある。動きベクトルは、PUのピクチャ・ブロック(ビデオ・ブロック、ピクセル・ブロック、ピクセル・セット等とも呼ばれる)とPUの参照ブロックとの間の変位を示すことができる。PUの参照ブロックは、PUのピクチャ・ブロックに類似した参照ピクチャの一部であってもよい。参照ブロックは、参照ピクチャ・インデックス及び予測方向識別子によって示される参照ピクチャ内に配置されてもよい。
PUに関する動き情報を表現するために必要なコーディングされたビットの量を削減するために、ビデオ・エンコーダは、マージ(merge)予測モード又はアドバンスト動きベクトル予測(advanced motion vector prediction,AMVP)モードに従って、各PUに関する候補の予測された動きベクトル(motion vector,MV)のリストを生成することができる。PUに関する候補の予測された動きベクトルのリストにおける候補の予測された動きベクトルの各々は、動き情報を示すことができる。候補の予測された動きベクトルのリスト内の幾つかの候補の予測された動きベクトルによって示される動き情報は、他のPUに対する動き情報に基づいてもよい。候補の予測された動きベクトルが、特定の空間的な候補の予測された動きベクトル位置又は特定の時間的な候補の予測された動きベクトル位置のうちの1つの動き情報を示す場合、候補の予測された動きベクトルは、本願では「オリジナル」候補の予測された動きベクトルと呼ばれる場合がある。例えば、本願でマージ予測モードとも呼ばれるマージ・モードでは、5つのオリジナル空間候補の予測された動きベクトル位置と、1つのオリジナル時間候補の予測された動きベクトル位置とが存在し得る。幾つかの例では、ビデオ・エンコーダは、異なるオリジナル候補の予測された動きベクトルからの幾つかの動きベクトルを組み合わせること、オリジナル候補の予測された動きベクトルを修正すること、又は候補の予測された動きベクトルとしてゼロ動きベクトルのみを挿入することによって、追加候補の予測された動きベクトルを生成することができる。これらの追加候補の予測された動きベクトルは、オリジナル候補の予測された動きベクトルとは考えられず、本願では、マニュアルで生成された候補の予測された動きベクトルと言及される場合がある。
本願における技術は、通常、ビデオ・エンコーダにおいて候補の予測された動きベクトルのリストを生成する技術と、ビデオ・デコーダにおいて同じ候補の予測された動きベクトルのリストを生成する技術とを含む。ビデオ・エンコーダ及びビデオ・デコーダは、候補の予測された動きベクトルのリストを構築するために同じ技術を実現することによって、同じ候補の予測された動きベクトルのリストを生成することができる。例えば、ビデオ・エンコーダ及びビデオ・デコーダは、同じ量の候補の予測された動きベクトル(例えば、5つの候補の予測された動きベクトル)を有するリストを構成することができる。ビデオ・エンコーダ及びビデオ・デコーダは、先ず、(例えば、同じピクチャにおける隣接するブロックのような)空間的な候補の予測された動きベクトルを考慮し、次いで、(例えば、異なるピクチャにおける候補の予測された動きベクトルのような)時間的な候補の予測された動きベクトルを考慮し、最終的に、マニュアルで生成される候補の予測された動きベクトルを考慮することを、必要な量の候補の予測された動きベクトルがリストに追加されるまで行うことができる。本願の技術によれば、候補の予測された動きベクトルのリストを構成する間に、候補の予測された動きベクトルのリストから、反復的な候補の予測された動きベクトルを除去するために、あるタイプの候補の予測された動きベクトルに対して、プルーニング処理が実行されてもよく、プルーニング処理は、デコーダの複雑性を低減するために、他のタイプの候補の予測された動きベクトルに関して実行されなくてもよい。例えば、空間的な候補の予測された動きベクトルの集合及び時間的な候補の予測された動きベクトルの集合に対して、プルーニング処理は、反復した動き情報を伴う候補の予測された動きベクトルを、候補の予測された動きベクトルのリストから除去するために実行されることが可能である。しかしながら、マニュアルで生成された候補の予測された動きベクトルは、プルーニング処理が、マニュアルで生成された候補の予測された動きベクトルに関して実行されない場合に、候補の予測されたベクトルのリストに追加されることが可能である。
CUのPUに関する候補の予測された動きベクトルのリストを生成した後に、ビデオ・エンコーダは、候補の予測された動きベクトルのリストから、候補の予測された動きベクトルを選択し、候補の予測された動きベクトル・インデックスをビットストリームで出力することができる。選択された候補の予測された動きベクトルは、復号化されているターゲットPUの予測ユニットに最もよく合致する動きベクトルを生成するための候補の予測された動きベクトルであってもよい。候補の予測された動きベクトル・インデックスは、候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルの位置を示すことができる。ビデオ・エンコーダは、更に、PUに関する動き情報によって示される参照ブロックに基づいて、PUに関する予測ピクチャ・ブロックを生成してもよい。PUに関する動き情報は、選択された候補の予測された動きベクトルによって示される動き情報に基づいて決定されてもよい。例えば、マージ・モードでは、PUの動き情報は、選択された候補の予測された動きベクトルによって示される動き情報と同じであってもよい。アドバンスト動きベクトル予測モードでは、PUのための動き情報は、PUのための動きベクトル差分と選択された候補の予測された動きベクトルによって示される動き情報とに基づいて決定されることが可能である。ビデオ・エンコーダは、CUのPUに対する予測ピクチャ・ブロックとCUに対するオリジナル・ピクチャ・ブロックとに基づいて、CUに対する1つ以上の残差ピクチャ・ブロックを生成することができる。次いで、ビデオ・エンコーダは、1つ以上の残差ピクチャ・ブロックを符号化し、1つ以上の残差ピクチャ・ブロックをビットストリームで出力することができる。
ビットストリームは、PUに関する候補の予測された動きベクトルのリストにおいて、選択された候補の予測された動きベクトルを識別するデータを含むことができる。ビデオ・デコーダは、PUのための候補の予測された動きベクトル・リストにおいて、選択された候補の予測された動きベクトルによって示される動き情報に基づいて、PUの動き情報を決定することができる。ビデオ・デコーダは、PUの動き情報に基づいて、PUのための1つ以上の参照ブロックを識別することができる。PUに対する1つ以上の参照ブロックを識別した後に、ビデオ・デコーダは、PUに対する1つ以上の参照ブロックに基づいて、PUに対する予測ピクチャ・ブロックを生成してもよい。ビデオ・デコーダは、CUのPUに対する予測ピクチャ・ブロックとCUに対する1つ以上の残差ピクチャ・ブロックとに基づいて、CUに対するピクチャ・ブロックを再構成することができる。
説明を簡単にするために、本願では、位置又はピクチャ・ブロックは、CU又はPUとの様々な空間的な関係を有するものとして説明されることが可能である。説明は、次のように説明することができる:ロケーション又はピクチャ・ブロックは、CU又はPUに関連付けられたピクチャ・ブロックと様々な空間的な関係を有する。追加的に、本願では、ビデオ・デコーダによって現在復号化されているPUは、処理対象のPUと言及されてもよいし、又は現在の処理対象のピクチャ・ブロックと言及されてもよい。本願では、ビデオ・デコーダによって現在復号化されているCUは、処理対象のCUと言及されてもよい。本願では、ビデオ・デコーダによって現在復号化されているピクチャは、現在のピクチャと言及されてもよい。本願は、PU及びCUが同じサイズを有する場合、又はPUがCUである場合にも適用可能であることが理解されるべきである。PUは説明のために均一に使用される。
先に簡単に説明したように、ビデオ・エンコーダ20は、インター予測によってCUのPUに対する予測ピクチャ・ブロック及び動き情報を生成することができる。多くの例において、所与のPUの動き情報は、1つ以上の隣接するPU(即ち、ピクチャ・ブロックが所与のPUのピクチャ・ブロックに空間的又は時間的に隣接しているPU)の動き情報と同一又は類似であってもよい。隣接するPUは、しばしば同様な動き情報を有するので、ビデオ・エンコーダ20は、隣接するPUの動き情報に基づいて、所与のPUの動き情報を符号化することができる。隣接するPUの動き情報に基づいて所与のPUの動き情報を符号化することは、所与のPUの動き情報を示すためにビットストリームにおいて要求される符号化されたビットの量を減らすことができる。
ビデオ・エンコーダ20は、様々な方法で、隣接するPUの動き情報に基づいて、所与のPUの動き情報を符号化することができる。例えば、ビデオ・エンコーダ20は、所与のPUに対する動き情報が、隣接するPUに対する動き情報と同じであることを示すことができる。本願では、マージ・モードは、所与のPUに対する動き情報が隣接するPUに対する動き情報と同じであることを示すために使用されてもよいし、又は隣接するPUに対する動き情報から導出されてもよい。別の実現可能な実装において、ビデオ・エンコーダ20は、所与のPUに対する動きベクトル差分(motion vector difference, MVD)を計算することが可能であり、MVDは、所与のPUに対する初期の動きベクトルと所与のPUに対する最終的な動きベクトルとの間の差分である。ビデオ・エンコーダ20は、所与のPUの動き情報において、所与のPUの動きベクトルの代わりにMVDを含めることができる。ビットストリームでは、MVDを表現するために必要なコーディングされたビットの量は、所与のPUに対する動きベクトルを表現するために必要なコーディングされたビットの量よりも少ない。本願では、アドバンスト動きベクトル予測モードを使用して、所与のPUの動き情報が、MVDと候補の動きベクトルを識別するためのインデックス値とを使用することによって、デコーダにシグナリングされることを示すことができる。
マージ・モード又はAMVPモードにおいて、所与のPUの動き情報をデコーダにシグナリングするために、ビデオ・エンコーダ20は、所与のPUに対する候補の予測された動きベクトルのリストを生成することができる。候補の予測された動きベクトルのリストは、1つ以上の候補の予測された動きベクトルを含んでもよい。所与のPUに関する候補の予測された動きベクトルのリストにおける各候補の予測された動きベクトルは、動き情報を指定することができる。各候補の予測された動きベクトルによって示される動き情報は、動きベクトル、参照ピクチャ・インデックス、及び予測方向識別子を含んでもよい。候補の予測された動きベクトルのリスト内の候補の予測された動きベクトルは、「オリジナル」候補の予測された動きベクトルを含む可能性があり、各々の「オリジナル」候補の予測された動きベクトルは、所与のPUとは異なるPU内の特定の候補の予測された動きベクトル位置のうちの1つの動き情報を示す。
PUに関する候補の予測された動きベクトルのリストを生成した後に、ビデオ・エンコーダ20は、PUのための候補の予測された動きベクトルのリストから、候補の予測された動きベクトルのうちの1つを選択することができる。例えば、ビデオ・エンコーダは、各々の候補の予測された動きベクトルを、復号化されているPUと比較し、所望のレート歪コストを有する候補の予測された動きベクトルを選択することができる。ビデオ・エンコーダ20は、PUのための候補の予測された動きベクトル・インデックスを出力することができる。候補の予測された動きベクトル・インデックスは、候補の予測された動きベクトル・リストにおいて選択された候補の予測された動きベクトルの位置を識別することができる。
更に、ビデオ・エンコーダ20は、PUの動き情報により示される参照ブロックに基づいて、PUの予測ピクチャ・ブロックを生成してもよい。PUに関する動き情報は、PUに関する候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルによって示される動き情報に基づいて決定されてもよい。例えば、マージ・モードにおいて、PUの動き情報は、選択された候補の予測された動きベクトルによって示される動き情報と同じであってもよい。AMVPモードでは、PUの動き情報は、PUの動きベクトル差分と、選択された候補の予測された動きベクトルによって示される動き情報とに基づいて、決定されてもよい。上述のように、ビデオ・エンコーダ20は、PUの予測ピクチャ・ブロックを処理することができる。
ビデオ・デコーダ30がビットストリームを受信する場合に、ビデオ・デコーダ30は、CUの各PUに対して候補の予測された動きベクトルのリストを生成することができる。PUに関するビデオ・デコーダ30によって生成される候補の予測された動きベクトルのリストは、PUに関するビデオ・エンコーダ20によって生成される候補の予測された動きベクトルのリストと同じであってもよい。ビットストリームを解析することによって取得されるシンタックス要素は、PUに関する候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルの位置を示すことができる。PUに関する候補の予測された動きベクトルのリストを生成した後に、ビデオ・デコーダ30は、PUの動き情報によって示される1つ以上の参照ブロックに基づいて、PUの予測ピクチャ・ブロックを生成してもよい。ビデオ・デコーダ30は、PUに関する候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルによって示される動き情報に基づいて、PUの動き情報を決定することができる。ビデオ・デコーダ30は、PUの予測ピクチャ・ブロックとCUの残差ピクチャ・ブロックとに基づいて、CUのピクチャ・ブロックを再構成することができる。
実現可能な実装において、デコーダ上で、候補の予測された動きベクトルのリストの構築と、候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルの位置を得るためのビットストリームの解析とは、互いに独立しており、任意の順序で又は並行して実行されてもよいことが理解されるべきである。
別の実現可能な実装において、デコーダ上で、候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルの位置が、先ずビットストリームを解析することによって取得され、次いで、候補の予測された動きベクトルのリストが、解析によって得られた位置に基づいて構成される。この実装では、全ての候補の予測された動きベクトルのリストを構築することを必要とせずに、解析により得られた位置における候補の予測された動きベクトルのリストのみが、その位置での候補の予測された動きベクトルを決定するために構築されることを必要とする。例えば、ビットストリームを解析することによって、選択された候補の予測された動きベクトルは、候補の予測された動きベクトルのリストにおいてインデックスが3である候補の予測された動きベクトルであり、インデックスが3である候補の予測された動きベクトルを決定するために、インデックス0からインデックス3までの候補の予測された動きベクトルのリストのみを構成する必要があることが分かる。これは、複雑さを低減し、復号化効率を改善することができる。
図2は、本願の実施形態によるビデオ・エンコーダ20の概略ブロック図である。ビデオ・エンコーダ20は、ビデオ・スライス内のビデオ・ブロックに関してイントラ復号化及びインター復号化を実行することができる。イントラ復号化は、所与のビデオ・フレーム又はピクチャ内のビデオの空間的な冗長性を低減又は除去するために、空間的予測を当てにする。インター復号化は、ビデオ・シーケンスの隣接するフレーム又はピクチャにおけるビデオの時間的な冗長性を低減又は除去するために、時間的な予測を当てにする。イントラ・モード(Iモード)は、幾つかの空間的な圧縮モードの任意の1つであってもよい。一方向予測モード(Pモード)又は双方向予測モード(Bモード)のようなインター・モードは、幾つかの時間的な圧縮モードの任意の1つであってもよい。
図2の実現可能な実装において、ビデオ・エンコーダ20は、パーティショニング・ユニット35、予測ユニット41、参照ピクチャ・ストレージ64、加算器50、変換ユニット52、量子化ユニット54、エントロピー符号化ユニット56を含む。
参照ピクチャ・ストレージ64は、MVDを記憶するためのターゲット・ストレージ空間を提供するように、即ち、処理対象のPUに対する最終的な動きベクトルと初期の動きベクトルとの間の差分を記憶するように、更に構成されてもよい。幾つかの実施形態では、参照ピクチャ・ストレージ64は、処理対象のPUの最終的な動きベクトルを更に記憶することができる。本願のこの実施形態では、参照ピクチャ・ストレージ64に記憶されたMVDは、別のPUの符号化プロセスで使用されてもよい。例えば、マージ(merge)モードにおける復号化処理では、更新されていない初期の動きベクトルと更新された最終的な動きベクトルとが、異なる時間に別々に記憶される。従って、処理対象のPUが、別のPUについて予測された動きベクトルを取得する必要がある場合、特定の条件下で、処理対象のPUは、別のPUの更新されていない初期の動きベクトルを、別のPUの動きベクトルとして、直接的に使用することが可能であり、別のPUの動きベクトルが更新された後に、別のPUの動きベクトルを得る必要はない。
ターゲット・ストレージ空間は、参照ピクチャ・ストレージ64以外のメモリ、例えば、新しく追加されたメモリによって提供されてもよいことに留意されたい。これは、本願のこの実施態様で具体的には限定されない。
関連技術において、ビデオ・エンコーダ20がマージ・モードで動作する場合に、参照ピクチャ・ストレージ64の中身が空であるか、又はゼロ・ベクトルであること、即ち、ビデオ・エンコーダ20がマージ・モードで動作する場合に、ターゲット・ストレージ空間は符号化中に使用されず、符号化プロセスでは、処理対象のPUによって得られる他のPUの予測された動きベクトルは、他のPUの更新された最終的な動きベクトルであることに留意されたい。従って、処理対象のPUは、他のPUの予測された動きベクトルが更新された後に限り、他のPUに対する予測された動きベクトルを得ることが可能であり、その結果、符号化の間に符号化遅延が生じる。しかしながら、ビデオ・エンコーダ20が非マージ・モードで動作する場合、参照ピクチャ・ストレージ64が使用されてもよい。例えば、AMVPモードでは、ターゲット・ストレージ空間は、動きベクトル残差を記憶するために使用され、ビデオ・エンコーダ20は、動きベクトル残差を符号化し、その結果、現在のPUを復号化した後に、ビデオ・デコーダ30は、処理対象のPUの動きベクトル残差を取得し、処理対象のPUの動きベクトル残差と、処理対象のPUの初期の動きベクトルとに基づいて、処理対象のPUの最終的な動きベクトルを取得することができる。
予測ユニット41は、動き推定ユニット42、動き補償ユニット44、イントラ予測ユニット46を含む。ビデオ・ブロック再構成のために、ビデオ・エンコーダ20は、逆量子化ユニット58、逆変換ユニット60、及び加算器62を更に含む。ビデオ・エンコーダ20は、ブロック境界上でフィルタリングを実行し、再構成されたビデオからブロッキング・アーチファクトを除去するために、デブロッキング・フィルタ(図2には示されていない)を更に含んでもよい。必要に応じて、デブロッキング・フィルタは、通常、加算器62の出力に対してフィルタリングを実行する。デブロッキング・フィルタに加えて、追加のループ・フィルタ(ループの中又は後)が使用されてもよい。
図2に示すように、ビデオ・エンコーダ20は、ビデオ・データを受信し、パーティショニング・ユニット35は、データをビデオ・ブロックに区分けする。このような区分けは、更に、スライス、ピクチャ・ブロック、又は他のより大きなユニットに区分けすることと、LCU及びCUの四分木構造に基づくビデオ・ブロック・パーティショニングとを含んでもよい。例えば、ビデオ・エンコーダ20は、符号化対象のビデオ・スライス内のビデオ・ブロックを符号化するための構成要素である。通常、1つのスライスは、複数のビデオ・ブロックに区分けされることが可能である(そして、ピクチャ・ブロックと呼ばれるビデオ・ブロックのセットに区分けされることが可能である)。
予測ユニット41は、符号化品質及びコスト計算結果(例えば、レート歪コスト(rate distortion cost,RDcost))に基づいて、現在のビデオ・ブロックに対して、複数の可能な復号化モード、例えば複数のイントラ復号化モードのうちの1つ又は複数のインター復号化モードのうちの1つを選択することができる。予測ユニット41は、取得されたイントラ復号化ブロック又はインター復号化ブロックを加算器50に提供して残差ブロック・データを生成し、得られたイントラ復号化ブロック又はインター復号化ブロックを加算器62に提供して、符号化されたブロックを再構成し、再構成された符号化されたブロックを参照ピクチャとして使用することができる。
予測ユニット41における動き推定ユニット42及び動き補償ユニット44は、1つ以上の参照ピクチャの1つ以上の予測ブロックに対する現在のビデオ・ブロックに関してインター予測復号化を実行して、時間的な圧縮を行う。動き推定ユニット42は、ビデオ・シーケンスのプリセット・モードに基づいて、ビデオ・スライスのインター予測モードを決定するように構成されてもよい。プリセット・モードでは、シーケンス内のビデオ・スライスは、Pスライス、Bスライス、GPBスライスとして指定されることが可能である。動き推定ユニット42及び動き補償ユニット44は、大いに統合されてもよいが、概念を説明するために別々に記述される。動き推定ユニット42によって実行される動き推定は、ビデオ・ブロックを推定するための動きベクトルを生成するプロセスである。例えば、動きベクトルは、参照ピクチャの予測ブロックに対する、現在のビデオ・フレーム又はピクチャのビデオ・ブロックのPUの変位を示すことができる。
予測ブロックは、ピクセル差分に基づいて、復号化対象のビデオ・ブロックに近接して合致していることが見出されたPUのブロックであり、ピクセル差分は、絶対差分(sum of absolute differences,SAD)、二乗差分の合計(sum of squared differences, SSD)、又は他の差分メトリックを使用することにより決定されることが可能である。幾つかの実現可能な実装において、ビデオ・エンコーダ20は、参照ピクチャ・ストレージ64に記憶された参照ピクチャのサブ整数(sub-integer)ピクセル位置の値を計算することができる。例えば、ビデオ・エンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、又は別の分数ピクセル位置の値を補間することができる。従って、動き推定ユニット42は、全てのピクセル位置及び分数ピクセル位置に関する動き探索を実行し、分数ピクセル精度で動きベクトルを出力することができる。
動き推定ユニット42は、PUの位置と参照ピクチャの予測ブロックの位置とを比較することにより、インター復号化されるスライス内のビデオ・ブロックのPUに対する動きベクトルを算出する。参照ピクチャは、第1参照ピクチャ・リスト(リスト0)又は第2参照ピクチャ・リスト(リスト1)から選択されることが可能である。各リストは、参照ピクチャ・ストレージ64に記憶された1つ以上の参照ピクチャを識別するために使用される。動き推定ユニット42は、計算された動きベクトルを、エントロピー符号化ユニット56及び動き補償ユニット44へ送る。
動き補償ユニット44によって実行される動き補償は、動き推定によって決定される動きベクトルに基づく予測ブロックの抽出又は生成を含むことが可能であり、サブ・ピクセル・レベルの精度で補間を実行することが可能である。現在のビデオ・ブロックのPUに対する動きベクトルを受信した後に、動き補償ユニット44は、動きベクトルが1つの参照ピクチャ・リスト内で指し示す予測ブロックを突き止めることができる。ビデオ・エンコーダ20は、復号化されている現在のビデオ・ブロックのピクセル値から、予測ブロックのピクセル値を減算して残差ビデオ・ブロックを取得し、ピクセル差分を取得する。ピクセル差分は、ブロックの残差データを構成し、ルマ差分成分とクロマ差分成分の両方を含む可能性がある。加算器50は、減算演算を実行する1つ以上の構成要素である。動き補償ユニット44は、ビデオ・ブロック及びビデオ・スライスに関連するシンタックス要素を更に生成することが可能であり、その結果、ビデオ・デコーダ30はビデオ・スライス内のビデオ・ブロックを復号化する。
PUがBスライスに位置する場合、PUを含むピクチャは、「list 0」及び「list 1」と言及される2つの参照ピクチャ・リストに関連付けられることが可能である。幾つかの実現可能な実装において、Bスライスを含むピクチャは、リスト0及びリスト1のリストの組み合わせに関連付けられてもよい。
また、PUがBスライスに位置する場合、動き推定ユニット42は、PUに対して一方向予測又は双方向予測を実行することが可能である。幾つかの実現可能な実装において、双方向予測は、参照ピクチャ・リスト0及び参照ピクチャ・リスト1におけるピクチャに基づいて、別々に実行される予測である。幾つかの他の実現可能な実装において、双方向予測は、表示順序で現在のフレームについての再構成される将来のフレームと再構成される過去のフレームとに基づいて別々に実行される予測である。また、動き推定ユニット42が、PUに対して一方向予測を実行する場合には、動き推定ユニット42は、PUに対する参照ブロックを探すために、リスト0又はリスト1内の参照ピクチャを探索することができる。そして、動き推定ユニット42は、リスト0又はリスト1に参照ブロックを含む参照ピクチャを示す参照インデックスと、PU及び参照ブロックの間の空間的な変位を示す動きベクトルとを生成することができる。動き推定ユニット42は、PUの動き情報として、参照インデックス、予測方向識別子、及び動きベクトルを出力することができる。予測方向識別子は、参照インデックスがリスト0又はリスト1における参照ピクチャを示すことを示してもよい。動き補償ユニット44は、PUの動き情報により示される参照ブロックに基づいて、PUの予測ピクチャ・ブロックを生成することができる。
動き推定ユニット42が、PUに対して双方向予測を行う場合、動き推定ユニット42は、PUに対する参照ブロックに対してリスト0内の参照ピクチャを探索し、更に、PUに対する他の参照ブロックに対してリスト1内の参照ピクチャを探索することができる。そして、動き推定ユニット42は、リスト0及びリスト1の参照ブロックを含む参照ピクチャを示す参照インデックスと、参照ブロック及びPUの間の空間的な変位を示す動きベクトルとを生成することができる。また、動き推定ユニット42は、PUの参照インデックス及び動きベクトルを、PUの動き情報として出力することができる。動き補償ユニット44は、PUの動き情報により示される参照ブロックに基づいて、PUの予測ピクチャ・ブロックを生成することができる。
幾つかの実現可能な実装において、動き推定ユニット42は、PUの動き情報の完全なセットを、エントロピー符号化ユニット56に対して出力しない。その代わりに、動き推定ユニット42は、別のPUの動き情報に関するPUの動き情報をシグナリングしてもよい。例えば、動き推定ユニット42は、PUの動き情報が、隣接するPUの動き情報と同様であることを決定することが可能である。この実装において、動き推定ユニット42は、PUに関連するシンタックス構造において、インジケータ値を示すことが可能であり、インジケータ値は、PUの動き情報が、隣接するPUの動き情報と同じであること、又は隣接するPUの動き情報から導出されてもよいことを、ビデオ・デコーダ30に示す。別の実装において、動き推定ユニット42は、PUに関連するシンタックス構造において、隣接するPUに関連する候補の予測された動きベクトルと動きベクトル差分(motion vector difference,MVD)とを識別することができる。MVDは、PUの動きベクトルと、隣接するPUに関連する指示された候補の予測された動きベクトルとの間の差分を示す。ビデオ・デコーダ30は、指示された候補の予測された動きベクトル及びMVDを使用することによって、PUの動きベクトルを決定することができる。
上述したように、予測ユニット41は、CUの各PUに対して候補の予測された動きベクトルのリストを生成することができる。1つ以上の候補の予測された動きベクトルのリストは、1つ以上のオリジナル候補の予測された動きベクトルと、1つ以上のオリジナル候補の予測された動きベクトルから導出された1つ以上の追加候補の予測された動きベクトルとを含むことができる。
本願のこの実施形態では、マージ・モードで候補の予測された動きベクトルのリストを設定する際に、予測ユニット41は、候補の予測された動きベクトルのリストに、処理対象のPUの参照PUの動きベクトルを記憶することができ、参照PUの動きベクトルは、参照PUの更新されていない初期の動きベクトルであってもよいし、又は参照PUの更新された最終的な動きベクトルであってもよいことに留意すべきである。参照PUのための更新された最終的な動きベクトルは、ターゲット・ストレージ空間に記憶された動きベクトルに基づいて取得されてもよい。ターゲット・ストレージ空間がMVDを記憶する場合、参照PUの最終的な動きベクトルは、参照PUの初期の動きベクトルと、ターゲット・ストレージ空間に記憶されたMVDとを加算することによって取得されることが可能である。ターゲット・ストレージ空間が、参照PUのための最終的な動きベクトルを記憶する場合、参照PUのための最終的な動きベクトルは、ターゲット・ストレージ空間から直接的に取得されることが可能である。参照PUの動きベクトルは、以下の方法で、候補の予測された動きベクトルのリストに記憶されることが可能である:参照PUと現在のPUが同一のCTB又はCTBの行レンジにある場合には、参照ユニットの更新されていない初期の動きベクトルが、候補の予測された動きベクトルのリストに記憶されるか、又は参照PUと現在のPUが同一のCTB又はCTBの行レンジにない場合には、参照ユニットの更新された最終的な動きベクトルが、候補の予測された動きベクトルのリストに記憶される。
予測ユニット41のイントラ予測ユニット46は、復号化対象の現在のブロックと同一のピクチャ又はスライス内にある1つ以上の隣接するブロックに対して、現在のビデオ・ブロックに対してイントラ予測復号化を実行し、空間圧縮を提供することができる。従って、動き推定ユニット42と動き補償ユニット44とによって実行される(上述したような)インター予測の代替案として、イントラ予測ユニット46は、現在のブロックに対してイントラ予測を実行することができる。具体的には、イントラ予測ユニット46は、現在のブロックを符号化するためのイントラ予測モードを決定することができる。幾つかの実現可能な実装において、イントラ予測ユニット46は、(例えば)様々なイントラ予測モードを使用して、別々の符号化トラバーサルの間に現在のブロックを符号化し、イントラ予測ユニット46(又は、幾つかの実現可能な実装におけるモード選択ユニット40)は、テスト・モードから適切なイントラ予測モードを選択することができる。
予測ユニット41は、現在のビデオ・ブロックの予測ブロックを、インター予測又はイントラ予測により生成した後に、ビデオ・エンコーダ20は、予測ブロックを現在のビデオ・ブロックから減算し、残差ビデオ・ブロックを取得する。残差ブロック内の残差ビデオ・データは、1つ以上のTUに含まれ、変換ユニット52に印加されることが可能である。変換ユニット52は、離散コサイン変換(discrete cosine transform, DCT)又は概念的に類似した変換(例えば、離散正弦変換(discrete sine transform, DST))のような変換を実行することによって、残差ビデオ・データを、残差変換係数に変換する。変換ユニット52は、残差ビデオ・データを、ピクセル・ドメインから変換ドメイン(例えば、周波数ドメイン)へ変換することができる。
変換ユニット52は、取得された変換係数を量子化ユニット54に送ることができる。量子化ユニット54は、変換係数を量子化して、ビット・レートを更に低下させる。量子化プロセスは、係数の幾つか又は全てに関連するビット深度を低減することができる。量子化度は、量子化パラメータを調整することによって修正されることが可能である。幾つかの実現可能な実装において、量子化ユニット54は、次いで、量子化された変換係数を含む行列をスキャンすることができる。あるいは、エントロピー符号化ユニット56がスキャンを実行してもよい。
量子化の後に、エントロピー符号化ユニット56は、量子化された変換係数をエントロピー符号化することができる。例えば、エントロピー符号化ユニット56は、文脈適応型可変長コーディング(CAVLC)、文脈適応型二進算術コーディング(CABAC)、確率間隔パーティショニング・エントロピー(PIPE)コーディング、又は他のエントロピー・コーディング方法又は技術を実行することができる。エントロピー符号化ユニット56は、復号化されている現在のビデオ・スライスの動きベクトル及び別のシンタックス要素を更にエントロピー符号化することができる。エントロピー符号化ユニット56によってエントロピー符号化された後に、符号化されたビットストリームは、ビデオ・デコーダ30に送信されてもよいし、又はビデオ・デコーダ30によるその後の送信又は検索のために記録されてもよい。
エントロピー符号化ユニット56は、本願の技術によれば、選択されたイントラ予測モードを示す情報を符号化することができる。ビデオ・エンコーダ20は、コンテキストの各々に対して使用される、複数のイントラ予測モード・インデックス・テーブル、及び複数の修正されたイントラ予測モード・インデックス・テーブル(コードワード・マッピング・テーブルとも言及される)を含むことが可能な送信されたビットストリーム構成データの中に、様々なブロックの符号化コンテキストの定義、最確モード(most probable mode,MPM)の指示、イントラ予測モード・インデックス・テーブル、及び修正されたイントラ予測モード・インデックス・テーブルを含むことができる。
逆量子化ユニット58及び逆変換ユニット60はそれぞれ逆量子化及び逆変換を実行し、ピクセル・ドメイン内の残差ブロックを再構成し、これは、以後、参照ピクチャの参照ブロックとして使用される。動き補償ユニット44は、1つの参照ピクチャ・リスト内の1つの参照ピクチャの残差ブロックと予測ブロックとを加算することによって、参照ブロックを計算することができる。また、動き補償ユニット44は、再構成された残差ブロックに、1つ以上の補間フィルタを適用して、動き推定のためのサブ整数ピクセル値を計算してもよい。加算器62は、再構成された残差ブロックと、動き補償ユニット44によって生成された動き補償された予測ブロックとを加算して、参照ピクチャ・ストレージ64に記憶される参照ブロックを生成する。参照ブロックは、後続のビデオ・フレーム又はピクチャにおけるブロックに関してインター予測を実行するための参照ブロックとして、動き推定ユニット42及び動き補償ユニット44によって使用されてもよい。
図3は、本願の実施形態によるビデオ・デコーダ30の概略ブロック図である。図3の実現可能な実装において、ビデオ・デコーダ30は、エントロピー復号化ユニット80、予測ユニット81、逆量子化ユニット86、逆変換ユニット88、加算器90、及び参照ピクチャ・ストレージ92を含む。
参照ピクチャ・ストレージ92は、ターゲット・ストレージ空間を提供するように構成されることが可能である。ターゲット・ストレージ空間は、MVDを記憶するために使用され、即ち、最終的な動きベクトルと初期の動きベクトルとの間の差分を記憶するために使用される。幾つかの実施形態では、ターゲット・ストレージ空間は、最終的な動きベクトルを記憶するために使用される。本願のこの実施形態では、更新された最終的な動きベクトル、又はターゲット・ストレージ空間に記憶されたMVDは、別のPUの符号化プロセスで使用されることが可能である。例えば、マージ・モードにおける復号化プロセスでは、更新されていない初期の動きベクトルと更新された最終的な動きベクトルとが、異なる時間に別々に記憶される。従って、処理対象のPUが、別のPUについて予測された動きベクトルを取得する必要がある場合、特定の条件下で、処理対象のPUは、別のPUの更新されていない初期の動きベクトルを、別のPUの動きベクトルとして、直接的に使用することが可能であり、別のPUの動きベクトルが更新された後に、別のブロックの動きベクトルを得る必要はない。
ターゲット・ストレージ空間は、参照ピクチャ・ストレージ92以外のメモリ、例えば、新しく追加されたメモリによって提供されてもよいことに留意すべきである。これは本願の実施形態で具体的には限定されない。
関連技術において、ビデオ・デコーダ30がマージ・モードで動作する場合に、ターゲット・ストレージ空間の中身が空であるか、又はゼロ・ベクトルであること、即ち、ビデオ・デコーダ30がマージ・モードで動作する場合に、ターゲット・ストレージ空間は、復号化の間に使用されず、復号化の間に、処理対象のPUによって得られる他のPUの予測された動きベクトルは、他のPUの更新された最終的な動きベクトルであることに留意すべきである。従って、処理対象のPUは、他のPUに対する予測された動きベクトルが更新された後に限り、他のPUに対する予測された動きベクトルを得ることが可能であり、その結果、復号化の間に復号化遅延が生じる。しかしながら、ビデオ・デコーダ30が非マージ・モードで動作する場合、ターゲット・ストレージ空間が使用されてもよい。例えば、AMVPモードでは、ビデオ・デコーダ30は、復号化により、処理対象のPUのためのMVDを取得することができ、その結果、ビデオ・デコーダ30は、初期の動きベクトルと処理対象のPUに対するMVDとに基づいて、処理対象のPUに対する最終的な動きベクトルを取得することができる。
予測ユニット81は、動き補償ユニット82と、イントラ予測ユニット84とを含む。幾つかの実現可能な実装において、ビデオ・デコーダ30は、図4のビデオ・エンコーダ20に関して説明した符号化プロセスと逆の例示的な復号化プロセスを実行することができる。
復号化の間に、ビデオ・デコーダ30は、ビデオ・エンコーダ20から、符号化されたビデオ・スライス及び関連するシンタックス要素のビデオ・ブロックを表すエンコードされたビデオ・ビットストリームを受信する。ビデオ・デコーダ30のエントロピー復号化ユニット80は、ビットストリームを復号化し、量子化された係数、動きベクトル、及び他のシンタックス要素を生成する。エントロピー復号化ユニット80は、動きベクトル及び他のシンタックス要素を予測ユニット81に転送する。ビデオ・デコーダ30は、ビデオ・スライス・レベル及び/又はビデオ・ブロック・レベルでシンタックス要素を受信することができる。
ビデオ・スライスが、イントラ復号化された(I)スライスに復号化された場合、予測ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モードと、現在のフレーム又はピクチャの以前に復号化されたブロックのデータとに基づいて、現在のビデオ・スライスのビデオ・ブロックの予測データを生成することができる。
ビデオ・ピクチャが、インター復号化されたスライス(例えば、Bスライス、Pスライス、又はGPBスライス)に復号化された場合、予測ユニット81の動き補償ユニット82は、エントロピー復号化ユニット80から受信した動きベクトル及び他のシンタックス要素に基づいて、現在のビデオ・ピクチャのビデオ・ブロックの予測ブロックを生成する。予測ブロックは、1つの参照ピクチャ・リスト内の1つの参照ピクチャから生成されてもよい。ビデオ・デコーダ30は、参照ピクチャ・ストレージ92に記憶された参照ピクチャに基づいて、参照ピクチャ・リスト(リスト0及びリスト1)を構成するためにデフォルトの構成技術を使用することができる。
動き補償ユニット82は、動きベクトル及び他のシンタックス要素を解析することによって、現在のビデオ・スライスのビデオ・ブロックの予測情報を決定し、予測情報を用いて、復号化されているビデオ・ブロックの予測ブロックを生成する。例えば、動き補償ユニット82は、受信したシンタックス要素の幾つかを用いて、ビデオ・スライスのビデオ・ブロックを復号化するための予測(例えば、イントラ予測又はインター予測)モード、インター予測スライス・タイプ(例えば、Bスライス、Pスライス、又はGPBスライス)スライスの1つ以上の参照ピクチャ・リストの構成情報、スライスの各々のインター符号化されたビデオ・ブロックの動きベクトル、スライスの各々のインター復号化されたビデオ・ブロックのインター予測ステータス、及び現在のビデオ・スライスにおけるビデオ・ブロックを復号化するための他の情報を決定する。
動き補償ユニット82は、更に、補間フィルタを用いて補間を実行してもよい。動き補償ユニット82は、例えば、ビデオ・ブロックの符号化の間に、ビデオ・エンコーダ20によって使用される補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算することができる。本願では、動き補償ユニット82は、受信したシンタックス要素に基づいて、ビデオ・エンコーダ20によって使用される補間フィルタを決定し、補間フィルタを用いて予測ブロックを生成することができる。
PUがインター予測によって符号化される場合、動き補償ユニット82は、PUに対する候補の予測された動きベクトルのリストを生成することができる。ビットストリームは、PUのための候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルの位置を識別するためのデータを含んでもよい。PUに対する候補の予測された動きベクトルを生成した後に、動き補償ユニット82は、PUに対する動き情報によって示される1つ以上の参照ブロックに基づいて、PUに対する予測ピクチャ・ブロックを生成することができる。PUの参照ブロックは、PUの時間的なピクチャとは異なる時間的なピクチャの中に位置していてもよい。動き補償ユニット82は、PUに対する候補の予測された動きベクトルのリストにおいて選択された動き情報に基づいて、PUの動き情報を決定することができる。
本願の実施形態では、動き補償ユニット82は、マージ・モードにおける候補の予測された動きベクトルのリストを設定する際に、処理対象のPUの参照PUに対する予測された動きベクトルを、候補の予測された動きベクトルのリストに記憶してもよく、参照PUの予測された動きベクトルは、参照PUの更新されていない初期の動きベクトルであってもよく、或いは参照PUの更新された最終的な動きベクトルであってもよいことに留意すべきである。参照PUの更新された最終的な動きベクトルは、ターゲット・ストレージ空間に記憶される参照PUのための動きベクトルに基づいて取得されてもよい。例えば、ターゲット・ストレージ空間がMVDを記憶する場合、参照PUのための最終的な動きベクトルは、参照PUのための初期の動きベクトルとターゲット・ストレージ空間に記憶されたMVDとを加算することによって、取得されることが可能である。ターゲット・ストレージ空間が、参照PUのための最終的な動きベクトルを記憶する場合に、参照PUのための最終的な動きベクトルは、ターゲット・ストレージ空間から直接的に取得されることが可能である。参照PUに対する予測された動きベクトルは、次のような方法で、候補の予測された動きベクトルのリストに記憶されてもよい:参照PUと現在のPUとが同じCTB又はCTBの行レンジにある場合に、参照ユニットに対する更新されていない初期の動きベクトルが、候補の予測された動きベクトルのリストに記憶される;又は参照PUと現在のPUとが同じCTB又はCTBの行レンジにない場合に、参照ユニットに対する更新された最終的な動きベクトルが、候補の予測された動きベクトルのリストに記憶される。
逆量子化ユニット86は、ビットストリームで提供され且つエントロピー復号化ユニット80によって復号化される量子化変換係数に対して逆量子化(例えば、量子化解除)を実行する。逆量子化プロセスは、ビデオ・スライス内の各ビデオ・ブロックについてビデオ・エンコーダ20によって計算された量子化パラメータに基づいて量子化度を決定し、適用されるべき逆量子化度を同様に決定することを含むことが可能である。逆変換ユニット88は、変換係数に対して逆変換(例えば、逆DCT、逆整数変換、又は概念的に類似する逆変換プロセス)を実行し、ピクセル・ドメインにおいて残差ブロックを生成する。
動き補償ユニット82が、動きベクトル及び他のシンタックス要素に基づいて、現在のビデオ・ブロックの予測ブロックを生成した後に、ビデオ・デコーダ30は、逆変換ユニット88からの残差ブロックと、動き補償ユニット82によって生成された対応する予測ブロックとの加算演算を実行して、復号化されたビデオ・ブロックを形成する。加算器90は、加算演算を実行する1つ以上の構成要素である。必要な場合には、ブロッキング・アーチファクトを除去するために、復号化されたブロックに関してフィルタリングを実行するために、デブロッキング・フィルタが使用されてもよい。別のループ・フィルタ(復号化ループの中又は後)が、ピクセルを平滑化するために使用されてもよいし、又は別の方法でビデオ品質が改善されてもよい。次いで、所与のフレーム又はピクチャ内の復号化されたビデオ・ブロックは、参照ピクチャ・ストレージ92に記憶される。参照ピクチャ・ストレージ92は、後続の動き補償のために使用される参照ピクチャを記憶する。参照ピクチャ・ストレージ92はまた、図1のディスプレイ装置32のようなディスプレイ装置で以後に提示される復号化されたビデオを記憶する。
上述したように、本願の技術は、例えばインター復号化に関連する。本願の技術は、本願で説明される任意のビデオ・デコーダによって実行されてもよく、ビデオ・デコーダは、図1ないし図3に示され説明される(例えば)ビデオ・エンコーダ20及びビデオ・デコーダ30を含むことは理解されるべきである。具体的には、実現可能な実装において、図2で説明された予測ユニット41は、ビデオ・データのブロックの符号化中にインター予測が実行される場合に、以下で説明される特定の技術を実行することができる。別の実現可能な実装において、図3で説明された予測ユニット81は、ビデオ・データのブロックの復号化中にインター予測が実行される場合に、以下で説明される特定の技術を実行することができる。従って、一般的な「ビデオ・エンコーダ」又は「ビデオ・デコーダ」に対する参照は、ビデオ・エンコーダ20、ビデオ・デコーダ30、又は別のビデオ符号化若しくは符号化ユニットを含んでもよい。
図4は、本願の実施形態によるインター予測モジュールの概略ブロック図である。インター予測モジュール121は、例えば、動き推定ユニット42及び動き補償ユニット44を含むことができる。PUとCUの間の関係は、ビデオ圧縮コーディング規格によって異なる。インター予測モジュール121は、複数のパーティショニング・パターンに従って、現在のCUをPUに区分けすることができる。例えば、インター予測モジュール121は、2N×2N、2N×N、N×2N、N×Nのパーティショニング・パターンに従って、現在のCUをPUに区分けすることができる。別の実施形態では、現在のCUは現在のPUである。これに限定されない。
インター予測モジュール121は、各PUに関して整数動き推定(integer motion estimation,IME)、次いで分数動き推定(fraction motion estimation,FME)を行うことができる。インター予測モジュール121がPUに対してIMEを実行する場合、インター予測モジュール121は、PUに対する参照ブロックについて1つ以上の参照ピクチャを探索することができる。PUに対する参照ブロックを発見した後に、インター予測モジュール121は、PUとPUに対する参照ブロックとの間の空間的変位を示す動きベクトルを、整数の精度で生成することができる。インター予測モジュール121がPUに対してFMEを実行する場合、インター予測モジュール121は、PUに対してIMEを実行することによって生成される動きベクトルを改善することができる。PUに関してFMEを実行することによって生成される動きベクトルは、サブ整数精度(例えば、1/2ピクセル精度又は1/4ピクセル精度)を有する可能性がある。PUの動きベクトルを生成した後に、インター予測モジュール121は、PUの動きベクトルを使用することによって、PUの予測ピクチャ・ブロックを生成することができる。
インター予測モジュール121がPUの動き情報をAMVPモードにおいてデコーダにシグナリングする幾つかの実現可能な実装において、インター予測モジュール121は、PUのための候補の予測された動きベクトルのリストを生成することができる。候補の予測された動きベクトルのリストは、1つ以上のオリジナル候補の予測された動きベクトルと、1つ以上のオリジナル候補の予測された動きベクトルから導出された1つ以上の追加候補の予測された動きベクトルとを含んでもよい。PUのための候補の予測された動きベクトルのリストを生成した後に、インター予測モジュール121は、候補の予測された動きベクトルのリストから、候補の予測された動きベクトルを選択し、PUのための動きベクトル差分(MVD)を生成することができる。PUに対するMVDは、選択された候補の予測された動きベクトルによって示される動きベクトルと、IME及びFMEによりPUに対して生成された動きベクトルとの間の差分を示すことができる。これらの実現可能な実装において、インター予測モジュール121は、候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルの位置を識別する、候補の予測された動きベクトルのインデックスを出力することができる。インター予測モジュール121は、PUのMVDを更に出力することができる。以下、本願の実施形態における図11においてアドバンスト動きベクトル予測(AMVP)モードの実現可能な実装を詳細に説明する。
PUの動き情報を生成するために、PUに対してIME及びFMEを実行することに加えて、インター予測モジュール121は、更に、PUに対してマージ演算を実行してもよい。インター予測モジュール121がPUに対してマージ演算を実行する場合に、インター予測モジュール121は、PUのための候補の予測された動きベクトルのリストを生成することができる。PUのための候補の予測された動きベクトルのリストは、1つ以上のオリジナル候補の予測された動きベクトルと、1つ以上のオリジナル候補の予測された動きベクトルから導出された1つ以上の追加候補の予測された動きベクトルとを含んでもよい。候補の予測された動きベクトルのリスト内の1つ以上のオリジナル候補の予測された動きベクトルは、1つ以上の空間候補の予測された動きベクトルと時間候補の予測された動きベクトルとを含むことができる。空間候補の予測された動きベクトルは、現在のピクチャ内の別のPUに対する動き情報を示すことができる。時間候補の予測された動きベクトルは、現在のピクチャとは異なるピクチャ内の対応するPUの動き情報に基づいてもよい。時間候補の予測された動きベクトルは、時間的動きベクトル予測子(temporal motion vector predictor,TMVP)と言及される場合もある。
候補の予測された動きベクトルのリストを生成した後に、インター予測モジュール121は、候補の予測された動きベクトルのリストから、1つの候補の予測された動きベクトルを選択することができる。次に、インター予測モジュール121は、PUの動き情報によって示される参照ブロックに基づいて、PUの予測ピクチャ・ブロックを生成することができる。マージ・モードでは、PUの動き情報は、選択された候補の予測された動きベクトルによって示される動き情報と同じであってもよい。図10は、マージ・モードの例のフローチャートである。
IME及びFMEによりPUの予測ピクチャ・ブロックを生成し、マージ演算によりPUの予測ピクチャ・ブロックを生成した後に、インター予測モジュール121は、FME演算を実行することによって生成された予測ピクチャ・ブロック、又はマージ演算を実行することによって生成された予測ピクチャ・ブロックを選択することができる。幾つかの実現可能な実装において、インター予測モジュール121は、FME演算を実行することによって生成された予測ピクチャ・ブロックと、マージ演算を実行することによって生成された予測ピクチャ・ブロックとのレート歪コストを分析することによって、PUの予測ピクチャ・ブロックを選択することができる。
インター予測モジュール121が、各パーティショニング・パターンに従って現在のCUを区分けすることによって生成されたPUの予測ピクチャ・ブロックを選択した後に(幾つかの実装では、コーディング・ツリー・ユニットCTUがCUに区分けされた後であり、CUはより小さなPUに更には区分けされず、この場合、PUはCUと同等である)、インター予測モジュール121は、現在のCUに対するパーティショニング・パターンを選択することができる。幾つかの実装において、インター予測モジュール121は、各パーティショニング・パターンに従って現在のCUを区分けすることによって生成されたPUの選択された予測ピクチャ・ブロックのレート歪コストを分析することによって、現在のCUのためのパーティショニング・パターンを選択することができる。インター予測モジュール121は、選択されたパーティショニング・パターンに属するPUに関連付けられた予測ピクチャ・ブロックを、残差生成モジュール102に出力することができる。インター予測モジュール121は、選択されたパーティショニング・パターンに属するPUの動き情報のシンタックス要素を、エントロピー符号化モジュール116に出力することができる。
図4に示す概略図では、インター予測モジュール121は、IMEモジュール180Aないし180N(「IMEモジュール180」と総称する)、FMEモジュール182Aないし182N(「FMEモジュール182」と総称する)、モジュール184Aないし184N(「マージ・モジュール184」と総称する)、PUパターン意思決定モジュール186Aないし186N(「PUパターン意思決定モジュール186」と総称する)、及びCUパターン意思決定モジュール188(CTU対CUパターン意思決定プロセスを更に実行してもよい)を含む。
IMEモジュール180、FMEモジュール182、及びマージ・モジュール184はそれぞれIME演算、FME演算、及び現在のCUのPUに関するマージ演算を実行することができる。図4に示す概略図では、インター予測モジュール121は、CUの各パーティショニング・パターンにおける各PUについて、別個のIMEモジュール180、別個のFMEモジュール182、及び別個のマージ・モジュール184を含むものとして説明される。別の実現可能な実装では、インター予測モジュール121は、CUの各パーティショニング・パターンにおける各PUについて、個別のIMEモジュール180も、個別のFMEモジュール182も、個別のマージ・モジュール184も含まない。
図4の概略図に示すように、IMEモジュール180A、FMEモジュール182A、及びマージ・モジュール184Aはそれぞれ、2N×2Nのパーティショニング・パターンに従ってCUを区分けすることによって生成されたPUに対して、IME演算、FME演算、及びマージ演算を実行することができる。PUモード意思決定モジュール186Aは、IMEモジュール180A、FMEモジュール182A、及びマージ・モジュール184Aによって生成される予測ピクチャ・ブロックの1つを選択することができる。
IMEモジュール180B、FMEモジュール182B、及びマージ・モジュール184Bはそれぞれ、N×2Nのパーティショニング・パターンに従ってCUを区分けすることによって生成された左PUに対して、IME演算、FME演算、及びマージ演算を実行することができる。PUモード意思決定モジュール186Bは、IMEモジュール180B、FMEモジュール182B、及びマージ・モジュール184Bによって生成される予測ピクチャ・ブロックの1つを選択することができる。
IMEモジュール180C、FMEモジュール182C、及びマージ・モジュール184Cはそれぞれ、N×2Nのパーティショニング・パターンに従ってCUを区分けすることによって生成された右PUに対して、IME演算、FME演算、及びマージ演算を実行することができる。PUモード意思決定モジュール186Cは、IMEモジュール180C、FMEモジュール182C、及びマージ・モジュール184Cによって生成される予測ピクチャ・ブロックの1つを選択することができる。
IMEモジュール180N、FMEモジュール182N、及びマージ・モジュール184はそれぞれ、N×Nのパーティショニング・パターンに従ってCUを区分けすることによって生成された右下PUに対して、IME演算、FME演算、及びマージ演算を実行することができる。PUモード意思決定モジュール186Nは、IMEモジュール180N、FMEモジュール182N、及びマージ・モジュール184Nによって生成される予測ピクチャ・ブロックの1つを選択することができる。
PUパターン意思決定モジュール186は、複数の可能な予測ピクチャ・ブロックのレート歪コストを分析することによって予測ピクチャ・ブロックを選択し、所与の復号化シナリオにおいて最適なレート歪コストを提供する予測ピクチャ・ブロックを選択することができる。例えば、限られた帯域幅を有するアプリケーションに対しては、PUモード意思決定モジュール186は、圧縮比が増やされた予測ピクチャ・ブロックを好む可能性があり、他のアプリケーションに対しては、PUモード意思決定モジュール186は、再構成されたビデオの品質が改善される予測ピクチャ・ブロックを好む可能性がある。PUパターン意思決定モジュール186が現在のCUのPUに対する予測ピクチャ・ブロックを選択した後に、CUパターン意思決定モジュール188は、現在のCUに対するパーティショニング・パターンを選択し、選択されたパーティショニング・パターンに属するPUに対する予測ピクチャ・ブロック及び動き情報を出力する。
図5は、本願の実施形態によるコーディング・ユニットとコーディング・ユニットに関連付けられた隣接するピクチャ・ブロックとの一例の概略図であり、CU250とCU250に関連付けられた例示的な候補の予測された動きベクトル位置252Aないし252Eを示す概略図である。本願では、候補の予測された動きベクトル位置252Aないし252Eは、まとめて候補の予測された動きベクトル位置252と言及される場合がある。候補の予測された動きベクトル位置252は、CU250と同じピクチャ内にある空間候補の予測された動きベクトルを表す。候補の予測された動きベクトル位置252AはCU250の左にある。候補の予測された動きベクトル位置252BはCU250の上にある。候補の予測された動きベクトル位置252CはCU250の右上にある。候補の予測された動きベクトル位置252DはCU250の左下にある。候補の予測された動きベクトル位置252EはCU250の左上にある。図8は、インター予測モジュール121及び動き補償モジュール162が、候補の予測された動きベクトルのリストを生成することができる方法の実装例を示す。以下、インター予測モジュール121に関連して実装が説明される。しかしながら、動き補償モジュール162が、同じ技術を実装し、従って同じ候補の予測された動きベクトルのリストを生成してもよいことが理解されるべきである。本願のこの実施形態では、候補の予測された動きベクトル位置が位置するピクチャ・ブロックは、参照ブロックと呼ばれる。更に、参照ブロックは、空間参照ブロック、例えば252Aないし252Eが位置するピクチャ・ブロックを含み、時間参照ブロック、例えば同一位置にある(co-located)ブロックが位置するピクチャ・ブロック、又は同一位置にあるブロックの空間的に隣接するピクチャ・ブロックを含む。
図6は、本願の実施形態による、候補の予測された動きベクトルのリストを構成するための例示的なフローチャートである。図6の技術は、5つの候補の予測された動きベクトルを含むリストに基づいて説明されるが、本願で説明される技術は、代替的に、別のサイズのリストと共に使用されてもよい。5つの候補の予測された動きベクトルはそれぞれインデックス(例えば、0ないし4)を有することができる。図6の技術は一般的なビデオ・デコーダに基づいて説明される。一般的なビデオ・デコーダは、例えば、ビデオ・エンコーダ(例えば、ビデオ・エンコーダ20)又はビデオ・デコーダ(例えば、ビデオ・デコーダ30)であってもよい。
図6の実装に従って、候補の予測された動きベクトルのリストを再構成するために、ビデオ・デコーダは、先ず4つの空間候補を考察し(602)、各々の空間候補は、1つの予測された動きベクトルに対応し、4つの空間候補の予測された動きベクトルは、候補の予測された動きベクトル位置252A、252B、252C、252Dを含む可能性がある。4つの空間候補の予測された動きベクトルは、現在のCU(例えば、CU250)と同じピクチャ内にある4つのPUの動き情報に対応する。言い換えると、4つの空間候補の予測された動きベクトルは、4つのPUの予測された動きベクトルである。本願のこの実施形態では、4つの空間候補の予測された動きベクトルを取得する場合に、ビデオ・デコーダは先ず4つのPUを決定する必要がある。例えば、ビデオ・デコーダが4つのPUのうちの1つを決定するプロセスは、次のようなプロセスであってもよい:PUと現在のCUが同一のCTB又はCTBの行レンジにある場合には、PUの更新されていない初期の動きベクトルが、PUに対応する空間候補の予測された動きベクトルとして使用されるか、又は、PUと現在のCUが同一のCTB又はCTBの行レンジにない場合には、PUの更新された最終的な動きベクトルが、PUに対応する空間候補の予測された動きベクトルとして使用される。PUのための更新された最終的な動きベクトルは、PUが記憶されているターゲット・ストレージ空間から取得されることができる。この場合、ターゲット・ストレージ空間は、更新された最終的な動きベクトルを記憶する。幾つかの実施形態では、ターゲット・ストレージ空間はMVDを記憶する。この場合、PUのための更新された最終的な動きベクトルは、代替的に、ターゲット・ストレージ空間に記憶されたMVD及びPUのための更新されていない初期の動きベクトルに基づいて取得されてもよい。
ビデオ・デコーダは、リスト内の4つの空間候補の予測された動きベクトルを、指定された順序で考慮することができる。例えば、候補の予測された動きベクトル位置252Aが最初に考慮されてもよい。候補の予測された動きベクトル位置252Aが利用可能である場合、候補の予測された動きベクトル位置252Aはインデックス0に割り当てられてもよい。候補の予測された動きベクトル位置252Aが利用不可能である場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Aを、候補の予測された動きベクトルのリストに追加しない可能性がある。候補の予測された動きベクトル位置は、様々な理由で利用不可能であるかもしれない。例えば、候補の予測された動きベクトル位置が現在のピクチャに無い場合、候補の予測された動きベクトル位置は利用不可能である可能性がある。別の実現可能な実装において、候補の予測された動きベクトル位置がイントラ予測を経る場合、候補の予測された動きベクトル位置は利用不可能である可能性がある。別の実現可能な実装において、候補の予測された動きベクトル位置が、現在のCUに対応するスライスとは異なるスライスにある場合、候補の予測された動きベクトル位置は利用不可能である可能性がある。
候補の予測された動きベクトル位置252Aを考慮した後、ビデオ・デコーダは候補の予測された動きベクトル位置252Bを考慮してもよい。候補の予測された動きベクトル位置252Bが利用可能であり、候補の予測された動きベクトル位置252Aとは異なる場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Bを、候補の予測された動きベクトルのリストに追加してもよい。この特定の文脈では、用語「同一」又は「異なる」は、候補の予測された動きベクトル位置が同一又は異なる動き情報に関連付けられることを意味する。従って、2つの候補の予測された動きベクトル位置が同じ動き情報を有する場合、2つの候補の予測された動きベクトル位置は同じであると考えられ、又は2つの候補の予測された動きベクトル位置が異なる動き情報を有する場合、2つの候補の予測された動きベクトル位置は異なると考えられる。候補の予測された動きベクトル位置252Aが利用不可能である場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Bを、インデックス0に割り当てる可能性がある。候補の予測された動きベクトル位置252Aが利用可能である場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Bを、インデックス1に割り当てる可能性がある。候補の予測された動きベクトル位置252Bが利用不可能であるか、又は候補の予測された動きベクトル位置252Aと同じである場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Bをスキップし、候補の予測された動きベクトル位置252Bを、候補の予測された動きベクトルのリストに追加しない。
同様に、ビデオ・デコーダは、候補の予測された動きベクトル位置252Cを考慮して、候補の予測された動きベクトル位置252Cをリストに追加するかどうかを決定する。候補の予測された動きベクトル位置252Cが利用可能であり、候補の予測された動きベクトル位置252B及び252Aと異なる場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Cを、次の利用可能なインデックスに割り当てることができる。候補の予測された動きベクトル位置252Cが利用不可能であるか、又は候補の予測された動きベクトル位置252A及び252Bの少なくとも1つと同一である場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Cを、候補の予測された動きベクトルのリストに追加しない。次に、ビデオ・デコーダは、候補の予測された動きベクトル位置252Dを考慮する。候補の予測された動きベクトル位置252Dが利用可能であり、候補の予測された動きベクトル位置252A、252B、及び252Cと異なる場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Dを、次の利用可能なインデックスに割り当てることができる。候補の予測された動きベクトル位置252Dが利用不可能であるか、又は候補の予測された動きベクトル位置252A、252B、及び252Cの少なくとも1つと同一である場合、ビデオ・デコーダは、候補の予測された動きベクトル位置252Dを、候補の予測された動きベクトルのリストに追加しない。前述の実装では、候補の予測された動きベクトル252Aないし252Dを考慮して、候補の予測された動きベクトル252Aないし252Dが、候補の予測された動きベクトルのリストに追加されるか否かを決定する例が、概略的に説明されている。しかしながら、幾つかの実装において、候補の予測された動きベクトル252Aないし252Dの全てが、先ず候補の予測された動きベクトルのリストに追加されてもよく、次いで、反復的な候補の予測された動きベクトル位置が、候補の予測された動きベクトルのリストから除去される。
ビデオ・デコーダが最初の4つの空間候補の予測された動きベクトルを考慮した後、候補の予測された動きベクトルのリストは、4つの空間候補の予測された動きベクトルを含む可能性があり、或いは4つより少ない空間候補の予測された動きベクトルを含む可能性がある。リストが4つの空間候補の予測された動きベクトルを含む場合(604でyes)、即ち、4つの空間候補を含む場合、ビデオ・デコーダは時間候補を考慮し(606)、各々の時間候補は1つの候補の予測された動きベクトルに対応する。時間候補の予測された動きベクトルは、現在のピクチャとは異なるピクチャの同一位置にあるPUの動き情報に対応する可能性がある。時間候補の予測された動きベクトルが利用可能であり、最初の4つの空間候補の予測された動きベクトルと異なる場合、ビデオ・デコーダは、時間候補の予測された動きベクトルを、インデックス4に割り当てる。時間候補の予測された動きベクトルが利用不可能であるか、又は最初の4つの空間候補の予測された動きベクトルの1つと同一である場合、ビデオ・デコーダは、時間候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加しない。従って、ビデオ・デコーダが時間候補の予測された動きベクトルを考慮した後(606)、候補の予測された動きベクトルのリストは、5つの候補の予測された動きベクトル(602で考慮された最初の4つの空間候補の予測された動きベクトル、及び604で考慮された時間候補の予測された動きベクトル)を含む可能性があり、或いは4つの候補の予測された動きベクトル(602で考慮された最初の4つの空間候補の予測された動きベクトル)を含む可能性がある。候補の予測された動きベクトルのリストが、5つの候補の予測された動きベクトルを含む場合(608においてyes)、即ち5つの候補を含む場合、ビデオ・デコーダはリストの構築を完了する。
候補の予測された動きベクトルのリストが、4つの候補の予測された動きベクトルを含む場合(608においてNo)、ビデオ・デコーダは、第5の空間候補の予測された動きベクトルを考慮することができる(610)。第5の空間候補の予測された動きベクトルは、(例えば)候補の予測された動きベクトル位置252Eに対応してもよい。位置252Eに対応する候補の予測された動きベクトルが利用可能であり、位置252A、252B、252C、及び252Dに対応する候補の予測された動きベクトルとは異なる場合、ビデオ・デコーダは、第5の空間候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加し、第5の空間候補の予測された動きベクトルを、インデックス4に割り当てることができる。位置252Eに対応する候補の予測された動きベクトルが利用不可能である場合、又は候補の予測された動きベクトル位置252A、252B、252C、及び252Dに対応する候補の予測された動きベクトルのうちの1つと同一である場合、ビデオ・デコーダは、位置252に対応する候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加しない可能性がある。従って、第5の空間候補の予測された動きベクトルが考慮された後(610)、リストは、5つの候補の予測された動きベクトル(602で考慮された最初の4つの空間候補の予測された動きベクトル、及び610で考慮された第5の空間候補の予測された動きベクトル)を含む可能性があり、或いは4つの候補の予測された動きベクトル(602で検討された最初の4つの空間候補の予測された動きベクトル)を含む可能性がある。
候補の予測された動きベクトルのリストが5つの候補を含む場合(612においてyes)、即ち、5つの候補の予測された動きベクトルを含む場合、ビデオ・デコーダは候補の予測された動きベクトルのリストの生成を完了する。候補の予測された動きベクトルのリストが4つの候補の予測された動きベクトルを含む場合(612においてNo)、ビデオ・デコーダは、リストが5つの候補を含むまで(616でyes)、即ち5つの候補の予測された動きベクトルを含むまで、マニュアルで生成された候補の予測された動きベクトルを追加する(614)。
ビデオ・デコーダが最初の4つの空間候補の予測された動きベクトルを考慮した後に、リストが4つより少ない空間候補の予測された動きベクトルを含む場合(604においてNo)、ビデオ・デコーダは、第5の空間候補を考慮し(618)、即ち、第5の空間候補の予測された動きベクトルを考慮することができる。第5の空間候補の予測された動きベクトルは、(例えば)候補の予測された動きベクトル位置252Eに対応してもよい。位置252Eに対応する候補の予測された動きベクトルが利用可能であり、候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルと異なる場合、ビデオ・デコーダは、第5の空間候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加し、第5の空間候補の予測された動きベクトルを、次の利用可能なインデックスに割り当てることができる。位置252Eに対応する候補の予測された動きベクトルが利用不可能であるか、又は候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルの1つと同一である場合、ビデオ・デコーダは、位置252Eに対応する候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加しない可能性がある。次いで、ビデオ・デコーダは、時間的な候補、即ち、時間的な予測された動きベクトルを考慮することができる(620)。時間候補の予測された動きベクトルが利用可能であり、候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルと異なる場合、ビデオ・デコーダは、時間候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加し、時間候補の予測された動きベクトルを、次の利用可能インデックスに割り当てることができる。時間候補の予測された動きベクトルが利用不可能であるか、又は候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルの1つと同一である場合、ビデオ・デコーダは、時間候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加しない可能性がある。
第5の空間候補の予測された動きベクトル(618)と時間候補の予測された動きベクトル(620)とが考慮された後に、候補の予測された動きベクトルのリストが、第5の空間候補の予測された動きベクトルを含む場合(622でyes)、ビデオ・デコーダは候補の予測された動きベクトルのリストの生成を完了する。候補の予測された動きベクトルのリストが、5つより少ない候補の予測された動きベクトルを含む場合(622においてNo)、ビデオ・デコーダは、リストが5つの候補の予測された動きベクトルを含むまで(616においてYes)、マニュアルで生成された候補の予測された動きベクトルを追加する(614)。
本願の技術によれば、追加のマージ候補の予測された動きベクトルは、空間候補の予測された動きベクトル及び時間候補の予測された動きベクトルの後に、マニュアルで生成されることが可能であり、その結果、マージ候補の予測された動きベクトルのリストのサイズは、常に、指定された量のマージ候補の予測された動きベクトル(例えば、上述した図6の実現可能な実装における5つの候補の予測された動きベクトル)に等しくなる。追加的なマージ候補の予測された動きベクトルは、例えば、組み合わされた双方向予測マージ候補の予測された動きベクトル(候補の予測された動きベクトル1)、スケーリングされた双方向予測マージ候補の予測された動きベクトル(候補の予測された動きベクトル2)、及びゼロ・ベクトル・マージ候補の予測された動きベクトル(候補の予測された動きベクトル3)を含む可能性がある。追加のマージ候補の予測された動きベクトルの前述の3つのケースの具体的な説明については、図7ないし図9を参照されたい。
図7は、本願の実施形態による、マージ・モード候補の予測された動きベクトルのリストに、結合された候補の動きベクトルを追加する例の概略図である。結合された双予測マージ候補の予測された動きベクトルは、オリジナルのマージ候補の予測された動きベクトルを結合することによって生成されることが可能である。具体的には、2つのオリジナル候補の予測された動きベクトル(mvL0及びrefIdxL0、又はmvL1及びrefIdxL1を有する)を使用して、双予測マージ候補の予測された動きベクトルを生成することができる。図7では、2つの候補の予測された動きベクトルが、オリジナルのマージ候補の予測された動きベクトルのリストに含まれる。一方の候補の予測された動きベクトルの予測タイプはリスト0を使用することによる一方向予測であり、他方の候補の予測された動きベクトルの予測タイプはリスト1を使用することによる一方向予測である。この実現可能な実装では、mvL0_A及びref0はリスト0から得られ、mvL1_B及びref0はリスト1から得られる。次いで、双予測マージ候補の予測された動きベクトル(リスト0におけるmvL0_A及びref0を、リスト1におけるmvL1_B及びref0を有する)が生成されることが可能であり、双予測マージ候補の予測された動きベクトルが、候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルと異なるかどうかが、検査される。双予測マージ候補の予測された動きベクトルが既存の候補の予測された動きベクトルと異なる場合、ビデオ・デコーダは、双予測マージ候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加することができる。
図8は、本願の実施形態による、スケーリングされた候補の動きベクトルを、マージ・モード候補の予測された動きベクトルのリストに追加する例の概略図である。スケーリングされた双予測マージ候補の予測された動きベクトルは、オリジナルのマージ候補の予測された動きベクトルをスケーリングすることによって生成されてもよい。具体的には、1つのオリジナル候補の予測された動きベクトル(mvLX及びrefIdxLXを有する)を使用して、双予測マージ候補の予測された動きベクトルを生成することができる。図8の実現可能な実装では、2つの候補の予測された動きベクトルが、オリジナルのマージ候補の予測された動きベクトルのリストに含まれる。一方の候補の予測された動きベクトルの予測タイプはリスト0を使用することによる一方向予測であり、他方の候補の予測された動きベクトルの予測タイプはリスト1を使用することによる一方向予測である。この実現可能な実装では、mvL0_A及びref0はリスト0から得られ、ref0はリスト1にコピーされ、参照インデックスref0’として示される。次いで、mvL0’_Aは、ref0及びref0’でmvL0_Aをスケーリングすることによって計算されることが可能である。スケーリングは、POC(Picture Order Count,POC)距離に依存する可能性がある。次に、双予測マージ候補の予測された動きベクトル(リスト0におけるmvL0_A及びref0、リスト1におけるmvL0’_A及びref0’を有する)を生成することが可能であり、双予測マージ候補の予測された動きベクトルが反復されているか否かが検査される。双予測マージ候補の予測された動きベクトルが反復されていない場合、双予測マージ候補の予測された動きベクトルが、マージ候補の予測された動きベクトルのリストに追加されることが可能である。
図9は、本願の実施形態による、マージ・モード候補の予測された動きベクトルのリストに、ゼロ動きベクトルを追加する例の概略図である。ゼロ・ベクトル・マージ候補の予測された動きベクトルは、ゼロ・ベクトル及び参照されることが可能な参照インデックスを組み合わせることによって生成されることが可能である。ゼロ・ベクトル候補の予測された動きベクトルが反復されない場合、ゼロ・ベクトル候補の予測された動きベクトルは、マージ候補の予測された動きベクトルのリストに追加されることが可能である。各々の生成されたマージ候補の予測された動きベクトルの動き情報は、リスト内の以前の候補の予測された動きベクトルの動き情報と比較されることが可能である。
実現可能な実装において、新しく生成された候補の予測された動きベクトルが、候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルと異なる場合、生成された候補の予測された動きベクトルは、マージ候補の予測された動きベクトルのリストに追加される。候補の予測された動きベクトルが、候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルと異なるかどうかを決定するプロセスは、しばしば、プルーニング(pruning)と呼ばれる。プルーニングにより、各々新しく生成された候補の予測された動きベクトルは、リスト内の既存候補の予測された動きベクトルと比較されることが可能である。幾つかの実現可能な実装において、プルーニング処理は、1つ以上の新しい候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルと比較し、候補の予測された動きベクトルのリストに存在する候補の予測された動きベクトルと同一である新しい候補の予測された動きベクトルを追加することをスキップすることを含むことが可能である。幾つかの他の実現可能な実装において、プルーニング処理は、1つ以上の新しい候補の予測された動きベクトルを、候補の予測された動きベクトルのリストに追加し、次いで、反復した候補の予測された動きベクトルをリストから除外することを含む可能性がある。
本願の実現可能な実装において、インター予測の間に、処理対象ピクチャ・ブロックの動き情報を予測する方法は:処理対象のピクチャ・ブロックが位置するピクチャにおいて動きベクトルが決定される少なくとも1つのピクチャ・ブロックの動き情報を取得するステップであって、動きベクトルが決定される少なくとも1つのピクチャ・ブロックは、処理対象のピクチャ・ブロックに隣接しないピクチャ・ブロックであって、その動きベクトルが決定されているピクチャ・ブロックを含む、ステップと、第1識別情報を取得するステップであって、第1識別情報は、動きベクトルが決定される少なくとも1つのピクチャ・ブロックの動き情報においてターゲット動き情報を決定するために使用される、ステップと、ターゲット動き情報に基づいて、処理対象ピクチャ・ブロックの動き情報を予測するステップとを含む。
図10は、本願の実施形態によるマージ・モードの一例のフローチャートである。ビデオ・エンコーダ(例えば、ビデオ・エンコーダ20)は、マージ演算200を実行することができる。別の実現可能な実装において、ビデオ・エンコーダは、マージ演算200とは異なるマージ演算を実行する可能性がある。例えば、別の実現可能な実装において、ビデオ・エンコーダはマージ演算を実行することが可能であり、ビデオ・エンコーダは、マージ演算200のステップより多い又は少ないステップ、或いはマージ演算200のステップとは異なるステップを実行する。別の実現可能な実装において、ビデオ・エンコーダは、マージ演算200のステップを異なる順序で、又は並列で実行することができる。エンコーダは、更に、スキップ(skip)モードで符号化されたPUに対してマージ演算200を実行してもよい。
ビデオ・エンコーダがマージ演算200を開始した後、ビデオ・エンコーダは、現在のPUのための候補の予測された動きベクトルのリストを生成することができる(202)。ビデオ・エンコーダは、現在のPUのための候補の予測された動きベクトルのリストを、種々の方法で生成することができる。例えば、ビデオ・エンコーダは、図7から図9に関連して以下で説明される技術例の1つに従って、現在のPUのための候補の予測された動きベクトルのリストを生成することができる。
上記のように、現在のPUの候補の予測された動きベクトルのリストは、時間候補の予測された動きベクトルを含む可能性がある。時間候補の予測された動きベクトルは、時間的な同一位置にあるPUの動き情報を示すことができる。同一位置にあるPUは、ピクチャ・フレーム内で、現在のPUと同じ位置に空間的に位置していてもよいが、現在のピクチャの代わりに参照ピクチャ内に位置していてもよい。本願では、対応する時間的PUを含む参照ピクチャは、関連する参照ピクチャとして言及されてもよい。この出願において、関連する参照ピクチャの参照ピクチャ・インデックスは、関連する参照ピクチャ・インデックスとして言及されてもよい。上述のように、現在のピクチャは、1つ以上の参照ピクチャ・リスト(例えば、リスト0及びリスト1)に関連付けられてもよい。参照ピクチャ・インデックスは、参照ピクチャ・リスト内の参照ピクチャの位置を示すことによって、参照ピクチャを示すことができる。幾つかの実現可能な実装において、現在のピクチャは、結合された参照ピクチャ・リストに関連付けられてもよい。
一部のビデオ・エンコーダでは、関連する参照ピクチャ・インデックスは、現在のPUに関連する参照インデックス・ソース位置をカバーするPUの参照ピクチャ・インデックスである。これらのビデオ・エンコーダでは、現在のPUに関連して位置する参照インデックス・ソースは、現在のPUの左又は現在のPUの上に隣接している。本願では、PUに関連するピクチャ・ブロックが特定の場所を含む場合、PUは特定の場所を「カバー」することができる。これらのビデオ・エンコーダでは、参照インデックスのソース位置が利用不可能である場合、ビデオ・エンコーダは参照ピクチャ・インデックス0を使用してもよい。
一部の例において、現在のPUに関連する参照インデックス・ソース位置は、現在のCU内にある。これらの例では、現在のPUに関連する参照インデックス・ソース位置をカバーするPUは、PUが現在のCUの上又は左にある場合に、利用可能であると考えられてもよい。しかしながら、ビデオ・エンコーダは、同一位置にあるPUを含む参照ピクチャを決定するために、現在のCUの別のPUの動き情報にアクセスする必要があるかもしれない。従って、これらのビデオ・エンコーダは、現在のCUに属するPUに対する動き情報(例えば、参照ピクチャ・インデックス)を使用して、現在のPUの時間候補の予測された動きベクトルを生成することができる。換言すれば、これらのビデオ・エンコーダは、現在のCUに属するPUの動き情報を使用して、時間的な候補の予測された動きベクトルを生成することができる。従って、ビデオ・エンコーダは、現在のPUと、現在のPUに関連する参照インデックス・ソース位置をカバーするPUとに関する候補の予測された動きベクトルのリストを、並列的に生成することはできないかもしれない。
本願の技術によれば、ビデオ・エンコーダは、他の如何なるPUの参照ピクチャ・インデックスも参照することなく、関連する参照ピクチャ・インデックスを明示的に設定することができる。このようにして、ビデオ・エンコーダは、現在のPU及び現在のCUの別のPUについて、候補の予測された動きベクトルのリストを、並列的に生成することができる。ビデオ・エンコーダは、関連する参照ピクチャ・インデックスを明示的に設定するので、関連する参照ピクチャ・インデックスは、現在のCUの他の如何なるPUの動き情報にも基づいていない。ビデオ・エンコーダが、関連付けられた参照ピクチャ・インデックスを明示的に設定する幾つかの実現可能な実装では、ビデオ・エンコーダは、関連付けられた参照ピクチャ・インデックスを、固定された前もってセットされた参照ピクチャ・インデックス(例えば、0)に常に設定することができる。このようにして、ビデオ・エンコーダは、前もってセットされた参照ピクチャ・インデックスによって示された参照フレーム内の同一位置にあるPUの動き情報に基づいて、時間的な候補の予測された動きベクトルを生成することが可能であり、時間的な候補の予測された動きベクトルを、現在のCUの候補の予測された動きベクトルのリストに追加することが可能である。また、候補の予測された動きベクトルのリストは、参照フレーム・リストでもある。
ビデオ・エンコーダが、関連付けられた参照ピクチャ・インデックスを明示的に設定する実現可能な実装では、ビデオ・エンコーダは、シンタックス構造(例えば、ピクチャ・ヘッダ、スライス・ヘッダ、APS、又は他のシンタックス構造)において、関連付けられた参照ピクチャ・インデックスを明示的にシグナリングすることができる。この実現可能な実装では、ビデオ・エンコーダは、各LCU(即ち、CTU)、CU、PU、TU、又は別のタイプのサブ・ブロックのための関連する参照ピクチャ・インデックスを、デコーダにシグナリングすることができる。例えば、ビデオ・エンコーダは、CUの各PUに対する関連する参照ピクチャ・インデックスが「1」に等しいことを、シグナリングすることができる。
幾つかの実現可能な実装では、関連する参照ピクチャ・インデックスは、明示的ではなく暗黙的に設定されてもよい。これらの実現可能な実装では、たとえこれらの位置が現在のPUに厳密に隣接していなかったとしても、ビデオ・エンコーダは、現在のCU外側の位置をカバーするPUの参照ピクチャ・インデックスによって示される参照ピクチャ内のPUに対する動き情報を使用することによって、現在のCUのPUに対する候補の予測された動きベクトルのリスト内の各々の時間的な候補の予測された動きベクトルを生成することができる。
現在のPUに対する候補の予測された動きベクトルのリストを生成した後に、ビデオ・エンコーダは、候補の予測された動きベクトルのリストにおいて候補の予測された動きベクトルに関連する予測ピクチャ・ブロックを生成することができる(204)。ビデオ・エンコーダは、指示された候補の予測された動きベクトルの動き情報に基づいて現在のPUの動き情報を決定し、次いで、候補の予測された動きベクトルに関連する予測ピクチャ・ブロックを生成するために、現在のPUの動き情報によって示された1つ以上の参照ブロックに基づいて予測ピクチャ・ブロックを生成することができる。次いで、ビデオ・エンコーダは、候補の予測された動きベクトルのリストから、1つの候補の予測された動きベクトルを選択することができる(206)。ビデオ・エンコーダは、候補の予測された動きベクトルを種々の方法で選択することができる。例えば、ビデオ・エンコーダは、候補の予測された動きベクトルに関連する各々の予測ピクチャ・ブロックのレート歪コストを分析することによって、1つの候補の予測された動きベクトルを選択することができる。
候補の予測された動きベクトルを選択した後に、ビデオ・エンコーダは、候補の予測された動きベクトル・インデックスを出力することができる(208)。また、候補の予測された動きベクトル・インデックスは、参照フレーム・リスト・インデックスでもあり、候補の予測された動きベクトル・インデックスは、候補の予測された動きベクトルのリストから選択された候補の予測された動きベクトルの位置を示すことができる。幾つかの実現可能な実装では、候補の予測された動きベクトル・インデックスは「merge_idx」として表現されてもよい。
図11は、本願の実施形態によるアドバンスト動きベクトル予測モードの一例のフローチャートである。ビデオ・エンコーダ(例えば、ビデオ・エンコーダ20)は、AMVP演算210を実行することができる。
ビデオ・エンコーダがAMVP演算210を開始した後、ビデオ・エンコーダは、現在のPUに対して1つ以上の動きベクトルを生成することができる(211)。ビデオ・エンコーダは、現在のPUのための動きベクトルを生成するために、整数動き推定及び分数動き推定を実行することができる。上述のように、現在のピクチャは、2つの参照ピクチャ・リスト(リスト0及びリスト1)と関連付けられる可能性がある。一方向予測が現在のPUで実行される場合、ビデオ・エンコーダは、現在のPUのためのリスト-0動きベクトル又はリスト-1動きベクトルを生成することができる。リスト-0動きベクトルは、現在のPUのためのピクチャ・ブロックと、リスト0における参照ピクチャの参照ブロックとの間の空間的変位を示すことができる。リスト-1動きベクトルは、現在のPUのためのピクチャ・ブロックと、リスト1における参照ピクチャの参照ブロックとの間の空間的変位を示すことができる。双方向予測が現在のPUで実行される場合、ビデオ・エンコーダは、現在のPUのためのリスト-0動きベクトル及びリスト-1動きベクトルを生成することができる。
現在のPUに対する1つ以上の動きベクトルを生成した後、ビデオ・エンコーダは、現在のPUに対する予測ピクチャ・ブロックを生成してもよい(212)。ビデオ・エンコーダは、現在のPUに対する1つ以上の動きベクトルによって示される1つ以上の参照ブロックに基づいて、現在のPUに対する予測ピクチャ・ブロックを生成することができる。
更に、ビデオ・エンコーダは、現在のPUのための候補の予測された動きベクトルのリストを生成することができる(213)。ビデオ・エンコーダは、現在のPUのための候補の予測された動きベクトルのリストを、種々の方法で生成することができる。例えば、ビデオ・エンコーダは、図6ないし図9に関連して以下で説明される1つ以上の実現可能な実装に従って、現在のPUのための候補の予測された動きベクトルのリストを生成することができる。幾つかの実現可能な実装では、ビデオ・エンコーダがAMVP演算210において候補の予測された動きベクトルのリストを生成する場合に、候補の予測された動きベクトルのリストは、2つの候補の予測された動きベクトルに制限される可能性がある。対照的に、ビデオ・エンコーダがマージ演算において候補の予測された動きベクトルのリストを生成する場合には、候補の予測された動きベクトルのリストは、より多くの候補の予測された動きベクトル(例えば、5つの候補の予測された動きベクトル)を含む可能性がある。
現在のPUに対する候補の予測された動きベクトルのリストを生成した後、ビデオ・エンコーダは、候補の予測された動きベクトルのリストにおいて、各々の候補の予測された動きベクトルに対して1つ以上の動きベクトル差分(MVD)を生成することができる(214)。ビデオ・エンコーダは、候補の予測された動きベクトルによって示される動きベクトルと、現在のPUに対する対応する動きベクトルとの間の差分を決定して、候補の予測された動きベクトルに対する動きベクトル差分を生成することができる。
一方向予測が現在のPUに対して実行される場合、ビデオ・エンコーダは、各々の候補の予測された動きベクトルに対して単一のMVDを生成することができる。双方向予測が現在のPUに対して実行される場合、ビデオ・エンコーダは、各々の候補の予測された動きベクトルに対して2つのMVDを生成することができる。第1MVDは、候補の予測された動きベクトルによって示される動きベクトルと、現在のPUに対するリスト-0動きベクトルとの間の差分を示すことができる。第2MVDは、候補の予測された動きベクトルによって示される動きベクトルと、現在のPUに対するリスト-1動きベクトルとの間の差分を示すことができる。
ビデオ・エンコーダは、候補の予測された動きベクトルのリストから1つ以上の候補の予測された動きベクトルを選択することができる(215)。ビデオ・エンコーダは、1つ以上の候補の予測された動きベクトルを、種々の方法で選択することができる。例えば、ビデオ・エンコーダは、符号化対象の動きベクトルの関連する動きベクトルに最小誤差で合致する候補の予測された動きベクトルを選択することができる。これは、候補の予測された動きベクトルに対する動きベクトル差分を表現するために必要なビット量を削減することができる。
1つ以上の候補の予測された動きベクトルを選択した後、ビデオ・エンコーダは、現在のPUに対する1つ以上の参照ピクチャ・インデックスと、現在のPUに対する1つ以上の候補の予測された動きベクトル・インデックスと、1つ以上の選択された候補の予測された動きベクトルに対する1つ以上の動きベクトル差分とを出力することができる(216)。
現在のピクチャが2つの参照ピクチャ・リスト(リスト0及びリスト1)に関連付けられ、一方向予測が現在のPUに対して実行される例において、ビデオ・エンコーダは、リスト0に対する参照ピクチャ・インデックス(「ref_idx_10」)又はリスト1に対する参照ピクチャ・インデックス(「ref_idx_11」)を出力することができる。ビデオ・エンコーダは、更に、候補の予測された動きベクトルのリスト内で、現在のPUに対するリスト-0動きベクトルの選択された候補の予測された動きベクトルの位置を示す候補の予測された動きベクトル・インデックス(「mvp_10_flag」)を出力することができる。代替的に、ビデオ・エンコーダは、候補の予測された動きベクトルのリスト内で、現在のPUに対するリスト-1動きベクトルの選択された候補の予測された動きベクトルの位置を示す候補の予測された動きベクトル・インデックス(「mvp_11_flag」)を出力することができる。ビデオ・エンコーダは、更に、現在のPUに対するリスト-0動きベクトル又はリスト-1動きベクトルに対するMVDを出力することができる。
現在のピクチャが2つの参照ピクチャ・リスト(リスト0及びリスト1)に関連付けられており、且つ双方向予測が現在のPUに対して実行される例において、ビデオ・エンコーダは、リスト0に対して参照ピクチャ・インデックス(「ref_idx_10」)及びリスト1に対して参照ピクチャ・インデックス(「ref_idx_11」)を出力することができる。更に、ビデオ・エンコーダは、候補の予測された動きベクトルのリストにおける現在のPUに対するリスト-0動きベクトルの選択された候補の予測された動きベクトルの位置を示す、候補の予測された動きベクトル・インデックス(「mvp_10_flag」)を出力することができる。更に、ビデオ・エンコーダは、候補の予測された動きベクトルのリストにおける現在のPUに対するリスト-1動きベクトルの選択された候補の予測された動きベクトルの位置を示す、候補の予測された動きベクトル・インデックス(「mvp_11_flag」)を出力することができる。ビデオ・エンコーダは、更に、現在のPUに対するリスト-0動きベクトルに対するMVDと、現在のPUに対するリスト-1動きベクトルに対するMVDとを出力することができる。
図12は、本願の実施形態による、ビデオ・デコーダ(例えば、ビデオ・デコーダ30)によって実行される動き補償の一例のフローチャートである。
ビデオ・デコーダが動き補償演算を実行する場合220、ビデオ・デコーダは、現在のPUに対して選択された候補の予測された動きベクトルの指示を受けることができる(222)。例えば、ビデオ・デコーダは、現在のPUのための候補の予測された動きベクトルのリストにおいて選択された候補の予測された動きベクトルの位置を示す、候補の予測された動きベクトル・インデックスを受信することができる。
現在のPUの動き情報がAMVPモードで符号化され、双方向予測が現在のPUに対して実行される場合、ビデオ・デコーダは、第1候補の予測された動きベクトル・インデックスと第2候補の予測された動きベクトル・インデックスとを受信することができる。第1候補の予測された動きベクトル・インデックスは、候補の予測された動きベクトルのリスト中の現在のPUに対するリスト-0動きベクトルの選択された候補の予測された動きベクトルの位置を示す。第2候補の予測された動きベクトル・インデックスは、候補の予測された動きベクトルのリスト中の現在のPUに対するリスト-1動きベクトルの選択された候補の予測された動きベクトルの位置を示す。幾つかの実現可能な実装において、単一のシンタックス要素が、2つの候補の予測された動きベクトル・インデックスを識別するために使用されることが可能である。
更に、ビデオ・デコーダは、現在のPUのための候補の予測された動きベクトルのリストを生成することができる(224)。ビデオ・デコーダは、現在のPUのための候補の予測された動きベクトルのリストを、種々の方法で生成することができる。例えば、ビデオ・デコーダは、図5ないし図9に関連して後述される技術を使用することによって、現在のPUのための候補の予測された動きベクトルのリストを生成することができる。ビデオ・デコーダが候補の予測された動きベクトルのリストのための時間的な候補の予測された動きベクトルを生成する場合に、ビデオ・デコーダは、図10に関して上述したように、同一位置にあるPUを含む参照ピクチャを識別する参照ピクチャ・インデックスを明示的又は暗黙的に設定することができる。
現在のPUに対する候補の予測された動きベクトルのリストを生成した後に、ビデオ・デコーダは、現在のPUに対する候補の予測された動きベクトルのリストにおける1つ以上の候補の予測された動きベクトルによって示される動き情報に基づいて、現在のPUに対する動き情報を決定することができる(225)。例えば、現在のPUの動き情報がマージ・モードで符号化される場合、現在のPUの動き情報は、選択された候補の予測された動きベクトルによって示される動き情報と同じであってもよい。現在のPUの動き情報がAMVPモードで符号化される場合、ビデオ・デコーダは、選択された候補の予測された動きベクトルによって示される1つ以上の動きベクトルとビットストリームで示される1つ以上のMVDとを使用することによって、現在のPUのための1つ以上の動きベクトルを再構成することができる。現在のPUの参照ピクチャ・インデックス及び予測方向識別子は、1つ以上の参照ピクチャ・インデックス、及び1つ以上の選択された候補の予測された動きベクトルの1つ以上の予測方向識別子と同一であってもよい。現在のPUのための動き情報を決定した後に、ビデオ・デコーダは、現在のPUのための動き情報によって示される1つ以上の参照ブロックに基づいて、現在のPUのための予測ピクチャ・ブロックを生成することができる(226)。
図13は、本願の実施形態によるビデオ符号化中に動きベクトルを更新する一例のフローチャートである。処理対象のピクチャ・ブロックは、符号化対象のブロックである。
1301:処理対象のピクチャ・ブロックの予測された動きベクトルに基づいて、処理対象のピクチャ・ブロックの初期の動きベクトルを取得する。
実行可能な実装において、例えば、マージ・モードでは、処理対象のピクチャ・ブロックの予測された動きベクトルは、処理対象のピクチャ・ブロックの初期の動きベクトルとして使用される。
処理対象のピクチャ・ブロックの予測された動きベクトルは、本願の実施形態における図6ないし図9に示される方法、又はH.265規格又はJEM参照モードにおける任意の何れかの既存の予測された動きベクトル取得方法によって取得されることが可能である。これは限定されない。動きベクトル差分は、処理対象のピクチャ・ブロックに関連して取得されることが可能である。動き推定は、処理対象のピクチャ・ブロックの予測された動きベクトルに基づいて決定された探索範囲内で実行され、動き推定後に得られた処理対象のピクチャ・ブロックの動きベクトルと処理対象のピクチャ・ブロックの予測された動きベクトルとの間の差分が、動きベクトル差分として使用される。
双方向予測の間に、このステップは具体的には:処理対象のピクチャ・ブロックの前方予測された動きベクトルに基づいて、処理対象のピクチャ・ブロックの第1の初期の動きベクトルを取得するステップと、処理対象のピクチャ・ブロックの後方予測された動きベクトルに基づいて、処理対象のピクチャ・ブロックの第2の初期の動きベクトルを取得するステップとを含む。
1302:初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとに基づいて、処理対象のピクチャ・ブロックの予測ブロックを取得する。詳細は以下の通りである:
S13021:処理対象のピクチャ・ブロックの参照フレーム・インデックスで示される処理対象のピクチャ・ブロックの参照フレームから、処理対象のピクチャ・ブロックの初期の動きベクトルで示されるピクチャ・ブロックを取得し、処理対象のピクチャ・ブロックの時間的な予測ブロックとして供給する。
初期の動きベクトルは、第1の初期の動きベクトルと第2の初期の動きベクトルとを含む。第1の初期の動きベクトルは、処理対象のピクチャ・ブロックの第1の参照フレーム・リストに基づいて第1動き補正ブロックを示し、第1動き補正ブロックは、処理対象のピクチャ・ブロックにおける動き補償を実行するための参照ブロックである。第2の初期の動きベクトルは、処理対象のピクチャ・ブロックの第2の参照フレーム・リストに基づいて第2動き補正ブロックを示し、第2動き補正ブロックは、処理対象のピクチャ・ブロックにおける動き補償を実行するための参照ブロックである。
13022:1つ以上の最終的な動きベクトルを取得するために、初期の動きベクトルと、処理対象のピクチャ・ブロックの1つ以上の前もってセットされた動きベクトル・オフセットとを加える。ここで、各々の最終的な動きベクトルは探索位置を示す。
前もってセットされた動きベクトル・オフセットは、前もってセットされたオフセット・ベクトル値であってもよいし、前もってセットされたオフセット・ベクトル精度であってもよいし、又は前もってセットされたオフセット・ベクトル・レンジであってもよい。前もってセットされた動きベクトル・オフセットの具体的な値、及び前もってセットされた動きベクトル・オフセットの量は、本発明のこの実施形態において限定されない。
最終的な動きベクトルは、第1の最終的な動きベクトルと第2の最終的な動きベクトルとを含む。第1の最終的な動きベクトルは、処理対象のピクチャ・ブロックの第1参照フレーム・リストに基づいて第1動き補償ブロックを示し、第1動き補償ブロックは、処理対象のピクチャ・ブロックにおける動き補償を実行するための予測ブロックである。第2の最終的な動きベクトルは、処理対象のピクチャ・ブロックの第2参照フレーム・リストに基づいて第2動き補償ブロックを示し、第2動き補償ブロックは、処理対象のピクチャ・ブロックにおける動き補償を実行するための予測ブロックである。
13023:1つ以上の最終的な動きベクトルによって示される1つ以上の探索位置において1つ以上の候補の予測ブロックを取得する。ここで、各々の探索位置は1つの候補予測ブロックに対応する。
13024:1つ以上の候補の予測ブロックから、時間的な予測ブロックからのピクセル差分が最小の候補の予測ブロックを、処理対象のピクチャ・ブロックの予測ブロックとして選択する。
最小ピクセル差分はまた、最小歪コストとして理解されてもよい。この場合、予測ブロックの最終的な動きベクトルは、複数の候補の最終的な動きベクトルにおける最小歪コストに対応する候補の最終的な動きベクトルである。歪コストは、複数の方法で計算されてもよいことが、理解されるべきである。例えば、候補予測ブロックと時間的な予測ブロックとのピクセル行列間の絶対差分の合計が計算されてもよいし、又は、ピクセル行列の平均が除去された後の絶対差分の合計が計算されてもよいし、又は、ピクセル行列の別の比較的正確な値が計算されてもよい。最小歪コストの具体的な内容は、本発明のこの実施形態では限定されない。
双方向予測の間において、このステップは具体的には:処理対象のピクチャ・ブロックの第1参照フレーム・リスト・インデックスによって示される処理対象のピクチャ・ブロックの第1参照フレーム・リストから、処理対象のピクチャ・ブロックの第1の初期の動きベクトルによって示される第1ピクチャ・ブロックを取得するステップであって、第1ピクチャ・ブロックは前方参照ブロックであり、相応して第1の初期の動きベクトルは前方の初期の動きベクトルであってもよい、ステップと、処理対象のピクチャ・ブロックの第2参照フレーム・リストによって示される処理対象のピクチャ・ブロックの第2参照フレーム・リストから、処理対象のピクチャ・ブロックの第2の初期の動きベクトルによって示される第2ピクチャ・ブロックを取得するステップであって、第2ピクチャ・ブロックは後方参照ブロックであり、相応して第2の初期の動きベクトルは後方の初期の動きベクトルであってもよい、ステップと、処理対象のピクチャ・ブロックの時間予測ブロック・ブロックを取得するために、第1ピクチャ・ブロック及び第2ピクチャ・ブロックに対する重み付け処理を実行するステップと、1つ以上の第1の最終的な動きベクトルを取得するために、処理対象のピクチャ・ブロックの第1の初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとを加算し、1つ以上の第2の最終的な動きベクトルを取得するために、処理対象のピクチャ・ブロックの第2の初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとを加算するステップと、1つ以上の第2の最終的な動きベクトルによって示される1つ以上の探索位置で1つ以上の第1候補予測ブロックを取得し、1つ以上の第2の最終的な動きベクトルによって示される1つ以上の探索位置で1つ以上の第1候補予測ブロックを取得するステップと、1つ以上の第1候補予測ブロックから、時間予測ブロックからの最小ピクセル差分を有する候補予測ブロックを、処理対象のピクチャ・ブロックの第1予測ブロックとして選択し、1つ以上の後方の候補予測ブロックから、時間予測ブロックからの最小ピクセル差分を有する候補予測ブロックを、処理対象のピクチャ・ブロックの第2予測ブロックとして選択するステップと、処理対象のピクチャ・ブロックの予測ブロックを取得するために、第1予測ブロック及び第2予測ブロックに対する重み付け処理を実行するステップとを含む。
一部の実施形態では、複数の候補の最終的な動きベクトルにおける最小歪コストに対応する候補の最終動きベクトルによって示される方向の別の動きベクトルが、代替的に、予測ブロックの最終的な動きベクトルとして使用されてもよい。具体的には、予測ブロックの最終的な動きベクトルは、第1の前もってセットされた条件に基づいて選択されてもよい。
可能な実装において、複数の候補の最終的な動きベクトルは、複数の方向における複数の動きベクトルであってもよい。先ず、各方向の特定の精度が選択されてもよい。例えば、整数ピクセル精度を有する候補の最終的な動きベクトルが、各方向の第1ベクトルとして使用され、最小歪コストに対応する第1ベクトルが、複数の第1ベクトルから参照ベクトルとして選択される。参照ベクトルに対応する歪コストAと、負の方向の参照ベクトルに対応する第2ベクトルに対応する歪コストCと、初期の動きベクトルに対応する歪コストBとの間の第1の前もってセットされた関係が、第1の前もってセットされた条件を満たす場合、参照ベクトルが、予測ブロックの最終的な動きベクトルとして使用される。参照ベクトルに対応する歪コストAと、負の方向の参照ベクトルに対応する第2ベクトルに対応する歪コストCと、初期の動きベクトルに対応する歪コストBとの間の第1の前もってセットされた関係が、第1の前もってセットされた条件を満たさない場合において、A及びBが第2の前もってセットされた条件を満たすならば、第1ベクトルの長さは、第3ベクトルを得るために前もってセットされた精度で減らされ、第3ベクトルが、予測ブロックの第1ターゲット・ベクトルとして使用される。A及びBが第2の前もってセットされた条件を満たさない場合において、B及びCが第3の前もってセットされた条件を満たすならば、第1ベクトルの長さは、第4ベクトルを得るために前もってセットされた精度で増やされ、第4ベクトルが、予測ブロックの第1ターゲット・ベクトルとして使用される。B及びCが第3の前もってセットされた条件を満たさない場合には、特定のループ・カウントが設定される。各ループでは、参照ベクトルのオフセットが最初に更新される。具体的には、A、B、Cの間の第2の前もってセットされた関係が第4の前もってセットされた条件を満たす場合、参照ベクトルのオフセットが更新される。A、B、Cの間の第2の前もってセットされた関係が第4の前もってセットされた条件を満たさないか、又はループ・カウントが0まで減った場合、参照ベクトルのオフセットは更新されず、ループは終了する。ループが終了した後、オフセットの方向が、A及びCの値の関係に基づいて決定され、オフセットの方向は正方向又は負方向を含む。参照ベクトル、オフセット、及びオフセットの方向に基づいて第5ベクトルが取得され、第5ベクトルは、予測ブロックの第1ターゲット・ベクトルとして使用される。最終的に、第1ターゲット・ベクトルは、予測ブロックの最終的な動きベクトルとして使用される。第1の前もってセットされた関係は、比例関係、差分関係、又は値の関係であってもよい。第1の前もってセットされた条件は、A、C、及びBの間の第1の前もってセットされた関係が、前もってセットされた値に等しいことであってもよいし、第2の前もってセットされた条件は、AがBに等しいことであってもよいし、第3の前もってセットされた条件は、BがCに等しいことであってもよい。第1の前もってセットされた関係、第1の前もってセットされた条件、前もってセットされた値、第2の前もってセットされた条件、第3の前もってセットされた条件、第2の前もってセットされた関係、及び第4の前もってセットされた条件は、本発明のこの実施形態において特に限定されない。
例えば、8つの候補の動きベクトルが存在し、8つの候補の動きベクトルは、予測ブロックの上方向、下方向、左方向、及び右方向の4方向に位置する。各方向に2つの候補の動きベクトルが存在する。4つの第1ベクトルを得るために、最大長の候補の動きベクトルが、4つの方向のそれぞれからを先ず選択される。上方向の第1ベクトルが最小歪コストに対応する場合、上方向の第1ベクトルが参照ベクトルとして使用され、即ち、予測ブロックの最終的なベクトルは正方向の動きベクトルである。第1の前もってセットされた条件は、参照ベクトルに対応する歪コストAと、第2ベクトルに対応する歪コストCと、初期の動きベクトルに対応する歪コストBとの間の比例関係が1であり、第2ベクトルは参照ベクトルとは逆方向の候補の動きベクトルであり、前もってセットされた精度は1/4精度であることが仮定される。この場合において、参照ベクトルに対応する歪コストが2であり、下方向の第1ベクトルに対応する歪コストが4であり、初期の動きベクトルに対応する歪コストが3である場合に、参照ベクトルに対応する歪コスト、下方向の第1ベクトルに対応する歪コスト、及び初期の動きベクトルに対応する歪コストの比例関係が(2×B)/(A+C)であり、比例関係は1であることが仮定される。この場合、参照ベクトルは、予測ブロックの最終的な動きベクトルとして使用される。下方向の第1ベクトルに対応する歪コストが5であり、比率関係(2×B)/(A+C)が1でない場合、比率は第1の前もってセットされた条件を満たさない。この場合において、AがBに等しい場合、参照ベクトルの長さは、第3ベクトルを得るために、前もってセットされた精度1/4で減らされ、第3ベクトルは、予測ブロックの最終的な動きベクトルとして使用される。AがBと等しくない場合において、BがCに等しい場合、参照ベクトルの長さは、第4ベクトルを得るために、前もってセットされた精度1/4で増やされ、第4ベクトルは、予測ブロックの最終的な動きベクトルとして使用される。BがCと等しくない場合、ループ・カウントは3に設定され、参照ベクトルのオフセットの精度は、先ず、各ループで1/8に更新され、A、B、及びCの間の第2の前もってセットされた関係は、K=|(A-C)×16|及びT=((A+C)-2×B)×8であると仮定される。KがT以上である場合に、第4の前もってセットされた条件は満たされ、参照ベクトルのオフセットの精度は1/16に更新される。K及びTは各ループにおいて、K=K-T、及びT=T/2に更新されることが仮定される。ループ・カウントが0まで減少すると、ループは終了する。ループが終了した後に、A及びCの値の関係に基づいて、オフセットの方向が決定される。AがC以上である場合、オフセットの方向は正の方向である。AがCより小さい場合、オフセットの方向は負の方向である。参照ベクトル、オフセット、及びオフセットの方向に基づいて第5ベクトルが取得され、第5ベクトルは、予測ブロックの第1ターゲット・ベクトルとして使用される。最終的に、第1ターゲット・ベクトルは、予測ブロックの最終的な動きベクトルとして使用される。
確かに、幾つかの実施形態では、参照ベクトルに対応する歪コストと、ターゲット方向の第3ベクトルに対応する歪コストとの間の第3の前もってセットされた関係が、第5の前もってセットされた条件を満たさない場合、第1ベクトルの長さは、第2ターゲット・ベクトルに対応する増加した歪コストが第2ターゲット条件を満たすまで、前もってセットされた精度によって増やされることが可能である。参照ベクトルに対応する歪コストと、ターゲット方向の第3ベクトルに対応する歪コストとの間の第3の前もってセットされた関係が、第5の前もってセットされた条件を満たす場合、第1ベクトルの長さは、第2ターゲット・ベクトルに対応する減少した歪コストがターゲット条件を満たすまで、前もってセットされた精度によって減らされることが可能である。ターゲット方向は参照ベクトルの方向以外の任意の方向である。第3の前もってセットされた関係、第5の前もってセットされた条件、及びターゲット条件は、本発明のこの実施形態において具体的に限定されない。
幾つかの実施態様において、参照ベクトルに対応する歪コストのうちの第4の前もってセットされた関係、ターゲット方向の第3ベクトルに対応する歪コスト、及び中間ベクトルに対応する歪コストが、第6の前もってセットされた条件を満たす場合、第3ターゲット・ベクトルは、前もってセットされた精度によって参照ベクトルの長さを増加させることによって決定される。参照ベクトルに対応する歪コスト、ターゲット方向の第3ベクトルに対応する歪コスト、及び中間ベクトルに対応する歪コストの間の第4の前もってセットされた関係が、第6の前もってセットされた条件を満たさない場合、第3ターゲット・ベクトルは、前もってセットされた精度によって参照ベクトルの長さを減少させることによって決定される。中間ベクトルは、参照ベクトルと第2ベクトルとの間に位置する動きベクトルである。前もってセットされた精度で参照ベクトルを増加させ、前もってセットされた精度で参照ベクトルを減少させる処理は上述されており、詳細はここで再び説明しない。第4の前もってセットされた関係及び第6の前もってセットされた条件は、本発明のこの実施形態において具体的に限定されない。
図14は、本願の実施形態によるビデオ復号化の間に動きベクトルを更新する一例のフローチャートである。処理対象のピクチャ・ブロックは、復号化対象のブロックである。
1401:インデックスで示される処理対象のピクチャ・ブロックの予測された動きベクトルに基づいて、処理対象のピクチャ・ブロックの初期の動きベクトルを取得する。
実行可能な実装において、例えば、マージ・モードでは、処理対象のピクチャ・ブロックの予測された動きベクトルが、処理対象のピクチャ・ブロックの初期の動きベクトルとして使用される。
処理対象のピクチャ・ブロックの予測された動きベクトルは、本願の実施形態における図6ないし図9に示される方法、又はH.265規格又はJEM参照モードにおける既存の予測動きベクトル取得方法の任意の1つによって取得されることが可能である。これは限定されない。動きベクトル差分は、ビットストリームを解析することによって取得されることが可能である。
双方向予測の間に、このステップは、具体的には:処理対象のピクチャ・ブロックの前方予測動きベクトルに基づいて、処理対象のピクチャ・ブロックの第1の初期の動きベクトルを取得するステップと、処理対象のピクチャ・ブロックの後方予測動きベクトルに基づいて、処理対象のピクチャ・ブロックの第2の初期の動きベクトルを取得するステップとを含む。
1402:初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとに基づいて、処理対象のピクチャ・ブロックの予測ブロックを取得する。詳細は次のとおりである。
S14021:処理対象のピクチャ・ブロックの時間的な予測ブロックとして供給するために、処理対象のピクチャ・ブロックの参照フレーム・インデックスで示される処理対象のピクチャ・ブロックの参照フレームから、処理対象のピクチャ・ブロックの初期の動きベクトルで示されるピクチャ・ブロックを取得する。
14022:1つ以上の最終的な動きベクトルを得るために、初期の動きベクトルと、処理対象のピクチャ・ブロックの1つ以上の前もってセットされた動きベクトル・オフセットとを加える。ここで、各々の最終的な動きベクトルは、探索位置を示す。
14023:1つ以上の最終的な動きベクトルによって示される1つ以上の探索位置において、1つ以上の候補の予測ブロックを取得する。各々の探索位置は1つの候補の予測ブロックに対応する。
14024:1つ以上の候補の予測ブロックから、時間的な予測ブロックからの最初のピクセル差分を有する候補の予測ブロックを、処理対象のピクチャ・ブロックの予測ブロックとして選択する。
双方向予測の間に、このステップは具体的には:処理対象のピクチャ・ブロックの第1参照フレーム・インデックスによって示される処理対象のピクチャ・ブロックの第1参照フレームから、処理対象のピクチャ・ブロックの第1の初期の動きベクトルによって示される第1ピクチャ・ブロックを取得し、処理対象のピクチャ・ブロックの第2参照フレーム・インデックスによって示される処理対象のピクチャ・ブロックの第2参照フレームから、処理対象のピクチャ・ブロックの第2の初期の動きベクトルによって示される第2ピクチャ・ブロックを取得するステップと、
処理対象のピクチャ・ブロックの時間的な予測ブロックを取得するために、第1ピクチャ・ブロックと第2ピクチャ・ブロックとに対して重み付け処理を実行するステップと、第1の初期の動きベクトルと処理対象のピクチャ・ブロックの1つ以上の前もってセットされた動きベクトル・オフセットとを加算して、1つ以上の第1の最終的な動きベクトルを取得し、第2の初期の動きベクトルと処理対象のピクチャ・ブロックの1つ以上の前もってセットされた動きベクトル・オフセットとを加算して、1つ以上の第2の最終的な動きベクトルを取得するステップと、1つ以上の第1の最終的な動きベクトルによって示される1つ以上の探索位置における1つ以上の前方候補予測ブロックを取得し、1つ以上の第2の最終的な動きベクトルによって示される1つ以上の探索位置における1つ以上の後方候補予測ブロックを取得するステップと、1つ以上の前方候補予測ブロックから、時間的な予測ブロックからの最小ピクセル差分を有する候補予測ブロックを、処理対象のピクチャ・ブロックの前方予測ブロックとして選択し、1つ以上の後方候補予測ブロックから、時間的な予測ブロックからの最小ピクセル差分を有する候補予測ブロックを、処理対象のピクチャ・ブロックの後方予測ブロックとして選択するステップと、処理対象のピクチャ・ブロックの予測ブロックを得るために、前方予測ブロック及び後方予測ブロックに対して重み付け処理を実行するステップとを含む。
幾つかの具体的な実施形態を用いることにより、以下、動きベクトルを更新する実装を詳細に説明する。図13の符号化方法及び図14の復号化方法で説明されているように、動きベクトルの更新はエンコーダ及びデコーダにおいて一貫していることが理解されるべきである。従って、以下の実施形態は、エンコーダ又はデコーダのみから説明される。エンコーダからの説明が提供される場合に、デコーダにおける実装は、エンコーダにおけるものと一貫性を維持しており、デコーダからの説明が提供される場合に、エンコーダにおける実装は、デコーダにおけるものと一貫性を維持していることが理解されるべきである。
図15に示すように、現在の復号化ブロックは、第1復号化ブロックであり、現在の復号化ブロックの予測された動き情報が得られる。現在の復号化ブロックの前方及び後方の動きベクトル予測子は、それぞれ(-10,4)及び(5,6)であり、現在の復号化ブロックのピクチャ・オーダ-・カウント(picture order count,POC)POCは、4であると仮定する。POCは、ピクチャの表示順序を示すために使用され、ピクチャの表示された参照ピクチャのインデックス値によって示される参照ピクチャのPOCは、それぞれ2及び6である。この場合、現在の復号化ブロックに対応するPOCは4であり、前方予測参照ピクチャ・ブロックに対応するPOCは2であり、後方予測参照ピクチャ・ブロックに対応するPOCは6である。
前方予測と後方予測とが現在の復号化ブロックに対して別々に実行されて、現在の復号化ブロックの初期の前方予測ブロック(forward prediction block,FPB)と初期の後方予測ブロック(backward prediction block,BPB)とを求める。初期の前方復号化予測ブロック及び初期の後方復号化予測ブロックはそれぞれFPB1及びBPB1であると仮定する。現在の復号化ブロックの第1復号化予測ブロック(decoding prediction block,DPB)は、FPB1及びBPB1に対して重み付け加算を行うことによって得られ、DPB1である仮定される。
(-10,4)及び(5,6)が前方及び後方動きベクトル予測器の基準入力として使用され、前方予測参照ピクチャ・ブロックと後方予測参照ピクチャ・ブロックに対して、第1精度の動き探索が別々に実行される。この場合、第1精度は1ピクセル・レンジにおける1/2ピクセル精度である。第1復号化予測ブロックDPB1が参照として使用される。各々の動き探索により得られる対応する新しい前方及び後方復号化予測ブロックが、第1復号化予測ブロックDPB1と比較されて、DPB1からの最小の差分を有する新しい復号化予測ブロックを取得し、新しい復号化予測ブロックに対応する前方及び後方動きベクトル予測子が、ターゲット動きベクトル予測子として使用され、それぞれ(-11,4)及び(6,6)であると仮定される。
ターゲット動きベクトル予測子は、(-11,4)及び(6,6)に更新され、前方予測及び後方予測が、ターゲット動きベクトル予測子に基づいて第1復号化ブロックに対して別々に実行され、ターゲット復号化予測ブロックが、取得された新しい前方及び後方復号化予測ブロックに対して重み付け加算を行うことにより取得され、DPB2であると仮定され、現在の復号化ブロックの復号化予測ブロックは、DPB2に更新される。
第1精度の動き探索が、前方予測参照ピクチャ・ブロック及び後方予測参照ピクチャ・ブロックに対して実行される場合、第1精度は任意の指定あれた精度であってもよく、例えば、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、又は1/8ピクセル精度であってもよい。
図16に示すように、現在の復号化ブロックは、第1復号化ブロックであり、現在の復号化ブロックの予測された動き情報が取得される。現在の復号化ブロックの前方動きベクトル予測子は(-21,18)であり、現在の復号化ブロックが位置するピクチャのPOCは4であり、参照ピクチャのインデックス値によって示される参照ピクチャのPOCは2であることが仮定される。この場合、現在の復号化ブロックに対応するPOCは4であり、前方予測参照ピクチャ・ブロックに対応するPOCは2である。
前方予測が、現在の復号化ブロックに対して実行されて、現在の復号化ブロックの初期の前方予測ブロックを取得する。初期の前方復号化予測ブロックはFPB1であると仮定する。この場合、FPB1は、現在の復号化ブロックの第1復号化予測ブロックとして使用され、第1復号化予測ブロックは、DPB1として示される。
(-21,18)が、前方動きベクトル予測器の基準入力として使用され、第1精度の動き探索が、前方動き予測参照ピクチャ・ブロックに対して実行される。この場合において、第1精度は5ピクセル・レンジにおける1ピクセル精度である。第1復号化予測ブロックDPB1が参照として使用される。各々の動き探索により取得された対応する新しい前方復号化予測ブロックは、第1復号化予測ブロックDPB1と比較され、DPB1からの最小差分を有する新しい復号化予測ブロックを取得し、新しい復号化予測ブロックに対応する前方動きベクトル予測子が、ターゲット動きベクトル予測子として使用され、(-19,19)であると仮定される。
ターゲット動きベクトル予測子は(-19,19)に更新され、前方予測がターゲット動きベクトル予測子に基づいて実行され、取得された新しい前方復号化予測ブロックは、ターゲット復号化予測ブロックとして使用され、DPB2であると仮定され、現在の復号化ブロックの復号化予測ブロックはDPB2に更新される。
第1精度の動き探索が前方予測参照ピクチャ・ブロックと後方予測参照ピクチャ・ブロックとに対して実行される場合に、第1精度は任意の指定された精度であってもよく、例えば整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、又は1/8ピクセル精度であってもよいことに留意すべきである。
図17A及び図17Bに示すように、現在のコーディング・ブロックは第1コーディング・ブロックであり、現在のコーディング・ブロックの予測動き情報が得られる。現在のコーディング・ブロックの前方及び後方動きベクトル予測子はそれぞれ(-6,12)及び(8,4)であり、現在のコーディング・ブロックが位置するピクチャのPOCは8であり、参照ピクチャのインデックス値によって示される参照ピクチャのPOCはそれぞれ4及び12であることが仮定される。この場合、現在のコーディング・ブロックに対応するPOCは4であり、前方予測参照ピクチャ・ブロックに対応するPOCは4であり、後方予測参照ピクチャ・ブロックに対応するPOCは12である。
前方予測及び後方予測は、現在の符号化ブロックに対して別々に実行されて、現在の符号化ブロックの初期の前方符号化予測ブロックと初期の後方符号化予測ブロックとを取得する。初期の前方符号化予測ブロック及び初期の後方符号化予測ブロックはそれぞれFPB1及びBPB1であると仮定される。現在の符号化ブロックの第1符号化予測ブロックは、FPB1及びBPB1に対して重み付け加算を実行することによって取得され、DPB1であると仮定される。
(-6,12)及び(8,4)が前方及び後方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、前方予測参照ピクチャ・ブロック及び後方予測参照ピクチャ・ブロックに対して別々に実行される。第1符号化予測ブロックDPB1は、参照として使用される。各々の動き探索により取得された対応する新しい前方及び後方符号化予測ブロックは、第1符号化予測ブロックDPB1と比較され、DBIからの最小差分を有する新しい符号化予測ブロックを取得し、新しい符号化予測ブロックに対応する前方及び後方動きベクトル予測子が、ターゲット動きベクトル予測子として使用され、それぞれ(-11,4)及び(6,6)であると仮定される。
ターゲット動きベクトル予測子は(-11,4)及び(6,6)に更新され、前方予測及び後方予測が、ターゲット動きベクトル予測子に基づいて第1符号化ブロックに対して別々に実行され、ターゲット符号化予測ブロックが、取得された新しい前方及び後方符号化予測ブロックに対して重み付け加算を実行することにより取得され、DPB2であると仮定され、現在のコーディング・ブロックの符号化予測ブロックはDPB2に更新される。
次いで、(-11,4)及び(6,6)が前方及び後方の動きベクトル予測子の参照入力として使用され、第1精度の動き探索が、前方予測参照ピクチャ・ブロック及び後方予測参照ピクチャ・ブロックに関して別々に実行される。現在のコーディング・ブロックの符号化予測ブロックDPB2は、参照として使用される。各々の動き探索で得られた対応する新しい前方及び後方符号化予測ブロックは、第1符号化予測ブロックDPB2と比較されて、DPB2からの最小差分を有する新しい符号化予測ブロックを取得し、新しい符号化予測ブロックに対応する前方及び後方動きベクトル予測子が、新しいターゲット動きベクトル予測子として使用され、それぞれ(-7,11)及び(6,5)であると仮定される。
次いで、ターゲット動きベクトル予測子は(-7,11)及び(6,5)に更新され、前方予測及び後方予測が、最新のターゲット動きベクトル予測子に基づいて、第1コーディング・ブロックに対して別々に実行され、ターゲット符号化予測ブロックは、取得された新しい前方及び後方符号化予測ブロックに対して重み付け加算を実行することにより取得され、DPB3であると仮定され、現在のコーディング・ブロックの符号化予測ブロックはDPB3に更新される。
更に、ターゲット動きベクトル予測子は、上記の方法に従って連続的に更新されることが可能であり、サイクル数は限定されない。
第1精度の動き探索が前方予測参照ピクチャ・ブロック及び後方予測参照ピクチャ・ブロックに対して実行される場合に、第1精度は任意の指定された精度であってもよく、例えば整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、又は1/8ピクセル精度であってもよいことに留意すべきである。
幾つかの実現可能な実施形態では、条件が満たされるとサイクルは終了することが理解されるべきである。例えば、サイクルは、DPBnとDPBn-1との差分が閾値より小さい場合に終了し、ここで、nは2より大きな正の整数である。
図18に示すように、現在の復号化ブロックは、第1復号化ブロックであり、現在の復号化ブロックの予測された動き情報が得られる。現在の復号化ブロックの前方及び後方動きベクトルの値はそれぞれ(-10,4)及び(5,6)であり、現在の復号化ブロックの前方及び後方動きベクトル差分はそれぞれ(-2,1)及び(1,1)であり、現在の復号化ブロックが位置するピクチャのPOCは4であり、参照ピクチャのインデックス値で示される参照ピクチャのPOCはそれぞれ2及び6であることが仮定される。従って、現在の復号化ブロックに対応するPOCは4であり、前方予測参照ピクチャ・ブロックに対応するPOCは2であり、後方予測参照ピクチャ・ブロックに対応するPOCは6である。
前方予測及び後方予測は、現在の復号化ブロックに対して別々に実行されて、現在の復号化ブロックの初期の前方復号化予測ブロック(FPB)及び初期の後方復号化予測ブロック(BPB)を取得する。初期の前方復号化予測ブロック及び初期の後方復号化予測ブロックはそれぞれFPB1及びBPB1であると仮定される。現在の復号化ブロックの第1復号化予測ブロック(DPB)は、FPB1及びBPB1に関して重み付け加算を実行することによって取得され、DPB1であると仮定される。
前方動きベクトル予測子及び前方動きベクトル差分の合計と、後方動きベクトル予測子及び後方動きベクトル差分の合計とは、即ち(-10,4)+(-2,1)=(-12,5)と(5,6)+(1,1)=(6,7)とはそれぞれ前方動きベクトル及び後方動きベクトルとして使用され、第1精度の動き探索が、前方予測参照ピクチャ・ブロック及び後方予測参照ピクチャ・ブロックに別々に実行される。この場合、第1精度は1ピクセル/レンジにおける1/4ピクセル精度である。第1復号化予測ブロックDPB1は参照として使用される。各々の動き探索で得られる対応する新しい前方及び後方復号化予測ブロックは、第1復号化予測ブロックDPB1と比較されて、DPB1からの最小差分を有する新しい復号化予測ブロックを取得する。新しい復号化予測ブロックに対応する前方及び後方動きベクトルは、ターゲット動きベクトル予測子として使用され、それぞれ(-11,4)及び(6,6)と仮定される。
ターゲット動きベクトルは(-11,4)及び(6,6)に更新され、前方予測及び後方予測が、ターゲット動きベクトルに基づいて第1復号化ブロックに対して別々に実行され、ターゲット復号化予測ブロックは、取得された新しい前方及び後方復号化予測ブロックに対して重み付け加算を実行することにより取得され、DPB2であると仮定され、現在の復号化ブロックの復号化予測ブロックはDPB2に更新される。
本願の中核的な技術的内容を更に反映させるために、マージ・モードにおけるエンコーダによる動きベクトルを記憶する処理が、以下、具体的な実施形態を使用することにより説明される。図19は、本願の実施形態によるエンコーダによる動きベクトルを取得する方法の概略フローチャートである。方法は以下のステップを含む。
1901:第1の処理対象のピクチャ・ブロックを取得した後に、エンコーダは、第1の処理対象のピクチャ・ブロックの1つ以上の前もってセットされた候補の参照ブロックを決定する。
図3を参照すると、第1の処理対象のピクチャ・ブロックは、符号化対象のピクチャ・ブロックであり、即ち、符号化対象のピクチャ・ブロックは、エンコーダ・パーティションのパーティション・ユニットがビデオ・データを取得した後に得られる。第1の処理対象のピクチャ・ブロックは、現在のPUであってもよいし、又は現在のCUであってもよいことに留意すべきである。これは、本発明のこの実施形態において具体的に限定されない。
候補の参照ブロックは、第1の処理対象のピクチャ・ブロックとの前もってセットされた空間位置関係を有するピクチャ・ブロックを含む。前もってセットされた空間位置関係は、図5に示された位置関係であってもよい。図5に示す候補の参照ブロックは、第1の処理対象のピクチャ・ブロックに隣接しているので、即ち、候補の参照ブロックのピクチャ情報は、第1の処理対象のピクチャ・ブロックのものと比較的類似しているので、第1の処理対象のピクチャ・ブロックを予測するために、候補の参照ブロックの動きベクトルは、第1の処理対象のピクチャ・ブロックの予測された動きベクトルとして使用されることが可能である。幾つかの実施形態では、候補の参照ブロックは、更に、別の実際のピクチャ・ブロック、又は、第1の処理対象のピクチャ・ブロックとの前もってセットされた空間相関を有するバーチャル・ピクチャ・ブロックを含む。本願のこの実施態様において、候補の参照ブロックと第1の処理対象のピクチャ・ブロックとの間の位置関係は、特定の量の候補参照ブロックによって具体的に限定されない。
1902:エンコーダは、1つ以上の候補の参照ブロックの1つ以上の動きベクトルを決定する。
本願のこの実施形態では、動きベクトル更新処理が、候補参照ブロックに対して実行される。候補参照ブロックに対する更新処理が完了すると、候補参照ブロックは、初期の動きベクトルと最終的な動きベクトルとを有し、即ち、候補参照ブロックは、相応して、初期の動きベクトルと最終的な動きベクトルとを記憶する。幾つかの実施形態では、候補参照ブロックは、相応して、初期の動きベクトル及び動きベクトル残差を記憶し、候補の参照ブロックの最終的な動きベクトルは、候補の参照ブロックの初期の動きベクトルと動きベクトル残差とを加えることによって取得されることが可能である。
しかしながら、候補参照ブロックに対する更新処理が完了していない場合、候補参照ブロックは初期動きベクトルのみを有し、即ち、相応して候補の参照ブロックは候補の参照ブロックの初期の動きベクトルのみを記憶する。
候補の参照ブロックは、初期の動きベクトルと最終的な動きベクトルとを有するので、エンコーダは、候補の参照ブロックの動きベクトルとして、候補の参照ブロックの初期の動きベクトル又は最終的な動きベクトルを使用することが可能であり、その結果、候補の参照ブロックの動きベクトルは、第1の処理対象のピクチャ・ブロックの空間候補の予測された動きベクトルとして使用される。
参照ブロックにおける動きベクトル更新処理については、図13に関連する本願の実施形態を参照されたい、ということに留意すべきである。図19に関連する実施形態の参照ブロックは、図13に関連する実施形態における処理対象のピクチャ・ブロックであることが理解されるべきである。
ステップ1902において、候補の参照ブロックの動きベクトルは、候補の参照ブロックの前もってセットされたレンジに基づいて決定されてもよい。例えば、候補の参照ブロックが前もってセットされたレンジ内にある場合には、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用され、或いは候補の参照ブロックが前もってセットされたレンジ外にある場合には、候補の参照ブロックの最終的な動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。従って、1つ以上の候補の参照ブロックの1つ以上の動きベクトルを決定することができる。
具体的には、前もってセットされたレンジはCTB行レンジであってもよい。例えば、候補の参照ブロックが位置するCTBと、第1の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置する場合、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。相応して、候補の参照ブロックが位置するCTBと、第1の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置していない場合、候補の参照ブロックの最終的な動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。図21を参照すると、候補の参照ブロックが位置するコーディング・ツリー・ブロックと、第1の処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行に位置し、候補の参照ブロックが位置するコーディング・ツリー・ブロックと、第1の処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行の隣接する空間に位置する場合、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用されることが理解されるであろう。異なる行の隣接する空間は、異なる行の上空間、左上空間などであってもよい。異なる行の隣接する空間の具体的なレンジは、本発明のこの実施形態で具体的に限定されない。
関連技術において、エンコーダは複数の処理対象のピクチャ・ブロックを同時に符号化してもよい。しかしながら、複数の処理対象のピクチャ・ブロックが同一のCTB行内に位置する場合、複数の処理対象のピクチャ・ブロックは、互いの候補の参照ブロックである可能性がある。複数の処理対象のピクチャ・ブロックが互いの候補の参照ブロックである場合、別のブロックの更新された最終的な動きベクトルは、別のブロックが更新された後に限り、現在の処理対象のピクチャ・ブロックの空間候補の予測された動きベクトルとして使用されることが可能である。その結果、符号化の遅延が存在する。更に、複数の処理対象のピクチャ・ブロックは、互いの候補の参照ブロックであるので、他のブロックが更新されるまで待機する必要がある。その結果、符号化遅延が増加する。
従って、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして直接的に使用されることが可能であり、次いで、候補の参照ブロックの動きベクトルが、第1の処理対象のピクチャ・ブロックの空間候補の予測された動きベクトルとして使用される。これについては、ステップ1903を参照されたい。
候補の参照ブロックが位置するCTBと、第1の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置する場合、候補の参照ブロックに対する更新処理は完了しない可能性がある。従って、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして直接的に使用されることが可能であり、候補の参照ブロックが更新されるまで待機する必要はなく、符号化遅延を低減する。候補の参照ブロックが位置するCTBと、第1の処理対象のピクチャ・ブロックが位置するCTBとが同一の行に位置していない場合、それは、候補の参照ブロックに関して更新処理を完了するのに十分な時間があることを示す。従って、候補の参照ブロックは最終的な動きベクトルを有し、候補の参照ブロックの最終的な動きベクトルは、候補の参照ブロックの動きベクトルとして使用されることが可能である。更に、最終的な動きベクトルは、初期の動きベクトルが洗練された後に得られる動きベクトルであるので、候補の参照ブロックの動きベクトルとして最終的な動きベクトルを使用することは、符号化品質を保証することができる。
前もってセットされたレンジは、代替的に、CTBブロック・レンジであってもよい。例えば、候補の参照ブロックと第1の処理対象のピクチャ・ブロックとが同一のCTB内に位置する場合、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。相応して、候補の参照ブロックと第1の処理対象のピクチャ・ブロックとが同一のCTB内に位置していない場合、候補の参照ブロックの最終的な動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。
候補の参照ブロックと第1の処理対象のピクチャ・ブロックとが同一のCTB内に位置する場合、それは候補の参照ブロックにおける更新処理は完了していない可能性があることを示し、候補の参照ブロックの初期の動きベクトルは、候補の参照ブロックが更新されるまで待機することを必要とすることなく、候補の参照ブロックの動きベクトルとして直接的に使用され、符号化遅延を低減する。更に、候補の参照ブロックと第1の処理対象のピクチャ・ブロックとが同一のCTB内に位置していない場合、それは候補の参照ブロックに関して更新処理を完了するための十分な時間があることを示す。更に、最終的な動きベクトルは、初期の動きベクトルが洗練された後に得られる動きベクトルであるので、第1の処理対象のピクチャ・ブロックと同じCTB内に位置していない候補の参照ブロックの最終的な動きベクトルを、候補の参照ブロックの動きベクトルとして使用することは、符号化品質を保証することができる。
前もってセットされたレンジは、代替的に、同じCTBブロック・レンジ又は左隣接及び右隣接CTBブロックのレンジであってもよい。例えば、候補の参照ブロックが位置するCTBが、第1の処理対象のピクチャ・ブロックが位置するCTBであるか、又は候補の参照ブロックが位置するCTBが、第1の処理対象のピクチャ・ブロックが位置するCTBの左隣接又は右隣接ブロックである場合には、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。相応して、候補の参照ブロックが位置するCTBが、第1の処理対象のピクチャ・ブロックが位置するCTBと同じでないか、又は候補の参照ブロックが位置するCTBが、第1の処理対象のピクチャ・ブロックが位置するCTBの左隣接又は右隣接ブロックでない場合には、候補の参照ブロックの最終的な動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。
候補の参照ブロックが位置するCTBが、第1の処理対象のピクチャ・ブロックが位置するCTBと同じである場合、又は候補参照ブロックが位置するCTBが、第1の処理対象のピクチャ・ブロックが位置するCTBの左隣接又は右隣接ブロックである場合、それは、候補の参照ブロックに対する更新処理が完了しない可能性があることを示し、候補の参照ブロックの初期の動きベクトルは、候補の参照ブロックが更新されるまで待機することを必要とせずに、候補の参照ブロックの動きベクトルとして直接的に使用され、符号化遅延を低減する。更に、候補の参照ブロックが位置するCTBが、第1の処理対象のピクチャ・ブロックが位置するCTBと同じでないか、又は候補の参照ブロックが位置するCTBが、第1の処理対象のピクチャ・ブロックが位置するCTBの左隣接又は右隣接ブロックでない場合には、それは、候補の参照ブロックに関して更新処理を完了するのに十分な時間があることを示す。更に、最終的な動きベクトルは、初期の動きベクトルが洗練された後に得られる動きベクトルであるので、候補の参照ブロックの動きベクトルとして、候補の参照ブロックの最終的な動きベクトルを使用することは、符号化品質を保証することができる。
1903:エンコーダは、1つ以上の候補の参照ブロックの1つ以上の動きベクトルに基づいて、候補の予測された動きベクトルのリストを設定する。
候補の予測された動きベクトルのリストを設定する方法については、図6ないし図9を参照されたい。詳細はここで再び説明しない。
1904:エンコーダは、処理対象のピクチャ・ブロックの参照ブロックを決定する。参照ブロック及び第1の処理対象のピクチャ・ブロックは、同じピクチャのフレーム内に位置する。
最小レート歪コストを有する候補の参照ブロックが、第1の処理対象のピクチャ・ブロックの1つ以上の候補の参照ブロックから、第1の処理対象のピクチャ・ブロックの参照ブロックとして選択される。
1905:エンコーダは、参照ブロックの動きベクトルを記憶する。参照ブロックの動きベクトルは、第1の処理対象のピクチャ・ブロックの初期の動きベクトルである。
参照ブロックの動きベクトルは、設定された候補の予測された動きベクトルのリストにおける対応する位置から取得されることが可能である。
ステップ1901ないしステップ1905は、エンコーダが第1の処理対象のピクチャ・ブロックの初期の動きベクトルを取得する処理である。
1906:エンコーダは、第1の処理対象のピクチャ・ブロックの初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとに基づいて、第1の処理対象のピクチャ・ブロックの予測ブロックを決定する。
ステップ1906は、図13の13021ないし13024を使用することによって完了させることが可能である。詳細はここで再び説明しない。
1つ以上の前もってセットされた動きベクトル・オフセットは、ピクセル単位に基づいて設定されることが可能である。例えば、第1の処理対象のピクチャ・ブロックの初期の動きベクトルで示されるピクチャ・ブロックは、第1の処理対象のピクチャ・ブロックの時間的な予測ブロックとして使用され、時間的な予測ブロックの1ピクセル単位又は1/2ピクセル単位内の1つ以上の候補の予測ブロックが、時間的な予測ブロックを中心として使用することにより探索される。確かに、別の長さ又は別のピクセル単位が使用されてもよい。1つ以上の前もってセットされた動きベクトル・オフセットは、本願のこの実施形態で具体的に限定されない。
1907:予測ブロックの動きベクトルを決定した後に、エンコーダは、予測ブロックの動きベクトルを、第1の処理対象のピクチャ・ブロックの最終的な動きベクトルとして使用する。
ステップ1907において、予測ブロックの動きベクトルは、予測ブロックの前もってセットされたレンジに基づいて決定されることが可能である。例えば、予測ブロックが、前もってセットされたレンジ内にある場合には、予測ブロックの初期の動きベクトルが、予測ブロックの動きベクトルとして使用され、予測ブロックが、前もってセットされたレンジ外にある場合には、予測ブロックの最終的な動きベクトルが、予測ブロックの動きベクトルとして使用される。
具体的には、前もってセットされたレンジはCTB行レンジであってもよい。例えば、予測ブロックが位置するCTBと、第1の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置する場合には、予測ブロックの初期の動きベクトルが、予測ブロックの動きベクトルとして使用される。相応して、予測ブロックが位置するCTBと、第1の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置しない場合には、予測ブロックの初期の動きベクトルが、予測ブロックの動きベクトルとして使用される。図21を参照すると、予測ブロックが位置するコーディング・ツリー・ブロックと、第1の処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行に位置し、予測ブロックが位置するコーディング・ツリー・ブロックと、第1の処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行の隣接する空間に位置する場合には、予測ブロックの初期の動きベクトルが、予測ブロックの動きベクトルとして使用されることが理解されるであろう。異なる行の隣接する空間は、異なる行の上空間、左上空間などであってもよい。異なる行の隣接する空間の特定のレンジは、本発明のこの実施形態では具体的に限定されない。
予測ブロックが位置するCTBと、第1の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置する場合、予測ブロックに対する更新処理は終了しない可能性がある。従って、予測ブロックの初期の動きベクトルは、予測ブロックの動きベクトルとして直接的に使用されることが可能であり、予測ブロックが更新されるまで待機する必要はなく、符号化遅延を低減する。予測ブロックが位置するCTBと、第1の処理対象のピクチャ・ブロックが位置するCTBとが同一の行に位置していない場合、それは、予測ブロックに対する更新処理を完了するのに十分な時間があることを示す。従って、予測ブロックは最終的な動きベクトルを有し、予測ブロックの最終的な動きベクトルは、予測ブロックの動きベクトルとして使用されることが可能である。更に、最終的な動きベクトルは、初期の動きベクトルが洗練された後に得られる動きベクトルであるので、予測ブロックの動きベクトルとして最終的な動きベクトルを使用することは、符号化品質を保証することができる。
幾つかの実施形態では、前もってセットされたレンジは代替的にCTBブロック・レンジであってもよい。幾つかの他の実施形態では、前もってセットされたレンジは、代替的に、同じCTBブロックであってもよい。予測ブロックの動きベクトルの決定は、候補の参照ブロックの動きベクトルの決定と同様である。これについてはステップ1902を参照されたい。詳細はここで再び説明しない。
1908:エンコーダは、候補リスト内の第1の処理対象のピクチャ・ブロックの初期の動きベクトルを、第1の処理対象のピクチャ・ブロックの最終的な動きベクトルに更新する。
1909:エンコーダは、第1の処理対象のピクチャ・ブロックの動きベクトル残差を、ターゲット・ストレージ空間に記憶する。
動きベクトル残差は、第1の処理対象のピクチャ・ブロックの最終的な動きベクトルと、第1の処理対象のピクチャ・ブロックの初期の動きベクトルとの間の動きベクトル差分である。
ターゲット・ストレージ空間は、動きベクトル残差をエンコーダにより記憶するための空間である。例えば、ターゲット・ストレージ空間は、図2の参照ピクチャ記憶ストレージ64であってもよい。
関連技術におけるマージ・モードでは、ターゲット・ストレージ空間はゼロ・ベクトルを記憶するか、又はターゲット・ストレージ空間はデータを記憶しないことに留意すべきである。しかしながら、本願のこの実施形態におけるマージ・モードでは、処理対象のピクチャ・ブロックの動きベクトル残差がターゲット・ストレージ空間に記憶され、その結果、ターゲット・ストレージ空間を完全に使用することが可能であるだけでなく、他のピクチャ・ブロックの動きベクトルが第1の処理対象のピクチャ・ブロックに対して必要とされる場合に、他のピクチャ・ブロックの動きベクトルを柔軟に選択することも可能である。ステップ1902及び1907において示されるように、エンコーダの符号化効率は更に改善される。
更に、一部の実装では、ステップ1909において、第1の処理対象のピクチャ・ブロックの最終的な動きベクトルが、代替的に、第1の処理対象のピクチャ・ブロックの動きベクトル残差として使用され、ターゲット・ストレージ空間に記憶されることが可能であり、即ち、第1の処理対象のピクチャ・ブロックの最終的な動きベクトルがターゲット・ストレージ空間に記憶され、第1の処理対象のピクチャ・ブロックの動きベクトル残差は、ターゲット・ストレージ空間に記憶されない。この場合において、第1の処理対象のピクチャ・ブロックの最終的な動きベクトルが別のブロックに必要とされる場合、第1の処理対象のピクチャ・ブロックの最終的な動きベクトルは、第1の処理対象のピクチャ・ブロックの初期の動きベクトルと、第1の処理対象のピクチャ・ブロックの動きベクトル残差とを加算する必要なしに、エンコーダのターゲット・ストレージ空間から直接的に取得されることが可能である。
ステップ1909の具体的なストレージ方法については、図21を参照されたい。
ステップ1908及び1909のシーケンスには厳密な要件がないことに留意すべきであり、エンコーダは代替的にステップ1908の前にステップ1909を実行してもよい。これは本願のこの実施形態で具体的に限定されない。
ステップ1906ないし1909は、エンコーダが第1の処理対象のピクチャ・ブロックの最終的な動きベクトルを取得する処理である。
1910:エンコーダは、処理対象のピクチャ・ブロックの初期の動きベクトル、又は候補リスト内の処理対象のピクチャ・ブロックの初期の動きベクトルに対応する1つ以上の第1識別情報を、ビットストリームに符号化する。
識別情報はインデックスを含む可能性がある。確かに、幾つかの実装において、識別情報は、予測モードを更に含んでもよい。インデックスは、候補の予測された動きベクトルのリストにおける対応する動きベクトルを示すために使用され、動きベクトルは、第1の処理対象のピクチャ・ブロックの初期の動きベクトル又は最終的な動きベクトルであり、予測モードはマージ・モード、AMVPAモード、及びスキップ・モードを含む。本願のこの実施形態では、予測モードはマージ・モードである。確かに、別の実施形態では、予測モードは別のモードであってもよい。これは本願のこの実施形態で限定されない。
前述の実装において、現在のコーディング・ブロックを符号化する場合に、エンコーダは、参照ブロックの最終的な動きベクトルの代わりに、参照ブロックの更新されていない初期の動きベクトルを、現在のコーディング・ブロックの予測された動きベクトルとして使用する。このようにして、参照ブロックの動きベクトルが現在のコーディング・ブロックに対して必要とされる場合に、関連するステップは、参照ブロックの最終的な動きベクトルが更新されるまで待機することを必要とせずに、実行されることが可能であり、符号化遅延が削減されることを補償する一方、動きベクトルが更新されるので符号化効率が改善される。
エンコーダにより使用されるインター予測モードが前方予測又は後方予測である場合に、候補参照ブロックの動きベクトル、参照ブロックの動きベクトル、及び予測ブロックの動きベクトルは、前方動きベクトル又は後方動きベクトルを含むことに留意すべきである。相応して、候補の予測された動きベクトルのリストが設定されると、候補の予測された動きベクトルのリストは、リスト0又はリスト1のみを含み、処理対象のピクチャ・ブロックの初期の動きベクトルは、前方の初期の動きベクトル又は後方の初期の動きベクトルを含み、処理対象のピクチャ・ブロックの最終的な動きベクトルは、前方の最終的な動きベクトル又は後方の最終的な動きベクトルを含む。
エンコーダにより使用されるインター予測モードが双方向予測である場合、候補の参照ブロックの動きベクトル、参照ブロックの動きベクトル、及び予測ブロックの動きベクトルは、第1動きベクトルと第2動きベクトルとを含み、第1動きベクトルは前方動きベクトルであり、第2動きベクトルは後方動きベクトルである。相応して、候補の予測された動きベクトルのリストが設定されると、候補の予測された動きベクトルのリストは、リスト0及びリスト1を含み、処理対象のピクチャ・ブロックの初期の動きベクトルは、第1の初期の動きベクトル及び第2の初期の動きベクトルを含み、処理対象のピクチャ・ブロックの最終的な動きベクトルは、第1の最終的な動きベクトル及び第2の最終的な動きベクトルを含む。第1の初期の動きベクトル及び第1の最終的な動きベクトルは前方動きベクトルであり、第2の初期の動きベクトルと第2の最終的な動きベクトルは後方動きベクトルである。
上記の内容はエンコーダについて説明されている。相応して、マージ・モードにおいてデコーダにより動きベクトルを記憶する処理が、具体的な実施形態を用いて以下において説明される。図20は、本願の実施形態による、デコーダによる動きベクトルを取得する方法の概略フローチャートである。方法は以下のステップを含む。
2001:第2の処理対象のピクチャ・ブロックに対応するビットストリームを受信した後、デコーダは、第2識別情報及び第3識別情報を得るためにビットストリームを解析する。ここで、第2識別情報は、処理対象のピクチャ・ブロックの初期の予測された動きベクトルを決定するために使用され、第3識別情報は、動きベクトル残差が復号化の間に解析される必要があるかどうかを示すために使用される。
第2識別情報は、処理対象のピクチャ・ブロックの初期の動きベクトルを決定するために使用されるインデックスを含んでもよい。ステップ2002及び2004を参照すると、幾つかの実施形態において、第2識別情報は、予測モード・タイプを更に含んでもよい。
第3識別情報は、復号化の間に、動きベクトル残差が、解析されることを必要とするかどうかを示すために使用される。本願のこの実施形態では、動きベクトル残差は、マージ・モードで解析されることを必要としないが、別の実施形態において、動きベクトル残差が解析される場合がある。例えば、SMVPモードでは、第3識別情報の指示に従って、第2処理対象のピクチャ・ブロックの動きベクトル残差をビットストリームに加える場合に、デコーダは、ビットストリームを解析することによって、動きベクトル残差を取得することができる。この場合、デコーダは、動きベクトル残差を、ターゲット・ストレージ空間に直接的に記憶する。
2002:第2の処理対象のピクチャ・ブロックに対応するビットストリームを受信した後に、デコーダは、第2の処理対象のピクチャ・ブロックの1つ以上の候補の参照ブロックと、1つ以上の候補の参照ブロックの1つ以上の動きベクトルとを決定する。
1つ以上の候補の参照ブロックは、第2の処理対象のピクチャ・ブロックとの前もってセットされた空間位置関係を有するピクチャ・ブロックを含む。候補の参照ブロックの決定については、図5を参照されたい。詳細はここで再び説明しない。
本願のこの実施形態では、動きベクトル更新処理が、候補の参照ブロックに対して実行される。候補の参照ブロックに対する更新処理が完了すると、候補の参照ブロックは、初期の動きベクトルと最終的な動きベクトルとを有し、即ち、候補の参照ブロックは、初期の動きベクトルと最終的な動きベクトルとを記憶する。幾つかの実施形態では、候補の参照ブロックは、初期の動きベクトルと動きベクトル残差とを記憶し、候補の参照ブロックの最終的な動きベクトルは、候補の参照ブロックの初期の動きベクトルと動きベクトル残差とを加えることによって取得することができる。
しかしながら、候補の参照ブロックの更新処理が完了していない場合、候補の参照ブロックは初期の動きベクトルのみを有し、即ち、候補の参照ブロックは、候補の参照ブロックの初期の動きベクトルのみを記憶する。
候補の参照ブロックは、初期の動きベクトルと最終的な動きベクトルとを有するので、デコーダは、候補の参照ブロックの動きベクトルとして、候補の参照ブロックの初期の動きベクトル又は最終的な動きベクトルを用いる必要があり、その結果、候補の参照ブロックの動きベクトルは、第2の処理対象のピクチャ・ブロックの空間的な候補の予測された動きベクトルとして使用される。
参照ブロックに対する動きベクトル更新プロセス及び初期の動きベクトルの取得については、図14に関連する本願の実施形態を参照されたい、ということに留意すべきである。図20に関連する実施形態の参照ブロックは、図14に関連する実施形態の処理対象のピクチャ・ブロックであることが理解されるべきである。
ステップ2002において、候補の参照ブロックの動きベクトルは、候補の参照ブロックの前もってセットされたレンジに基づいて決定されてもよい。例えば、候補の参照ブロックが前もってセットされたレンジ内にある場合には、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用され、候補の参照ブロックが前もってセットされたレンジ外にある場合には、候補の参照ブロックの最終的な動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。従って、1つ以上の候補の参照ブロックの1つ以上の動きベクトルを決定することができる。
具体的には、前もってセットされたレンジはCTB行レンジであってもよい。例えば、候補の参照ブロックが位置するCTBと、第2の処理対象のピクチャ・ブロックが位置するCTBとが同一行に位置する場合、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。相応して、候補の参照ブロックが位置するCTBと、第2の処理対象のピクチャ・ブロックが位置するCTBとが同一行に位置していない場合、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。図21を参照すると、候補の参照ブロックが位置するコーディング・ツリー・ブロックと、第2の処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行に位置し、候補の参照ブロックが位置するコーディング・ツリー・ブロックと、第2の処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行の隣接する空間に位置する場合に、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用されることが理解されるであろう。異なる行の隣接する空間は、異なる行の上空間、左上空間などであってもよい。異なる行の隣接する空間の具体的なレンジは、本発明のこの実施形態で具体的に限定されない。
関連技術において、デコーダは複数の処理対象のピクチャ・ブロックを同時に復号化してもよい。しかしながら、複数の処理対象のピクチャ・ブロックが同一のCTB行内に位置する場合、複数の処理対象のピクチャ・ブロックは、互いの候補の参照ブロックである可能性がある。複数の処理対象のピクチャ・ブロックが互いの候補の参照ブロックである場合、別のブロックの更新された最終的な動きベクトルは、別のブロックが更新された後に限り、現在の処理対象のピクチャ・ブロックの空間候補の予測された動きベクトルとして使用されることが可能である。その結果、復号化の遅延が存在する。更に、複数の処理対象のピクチャ・ブロックは、互いの候補の参照ブロックであるので、他のブロックが更新されるまで待機する必要がある。その結果、復号化遅延が増加する。
従って、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして直接的に使用されることが可能であり、次いで、候補の参照ブロックの動きベクトルが、第2の処理対象のピクチャ・ブロックの空間候補の予測された動きベクトルとして使用される。これについては、ステップ2003を参照されたい。
候補の参照ブロックが位置するCTBと、第2の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置する場合、候補の参照ブロックに対する更新処理は完了しない可能性がある。従って、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして直接的に使用されることが可能であり、候補の参照ブロックが更新されるまで待機する必要はなく、復号化遅延を低減する。候補の参照ブロックが位置するCTBと、第2の処理対象のピクチャ・ブロックが位置するCTBとが同一の行に位置していない場合、それは、候補の参照ブロックに関して更新処理を完了するのに十分な時間があることを示す。従って、候補の参照ブロックは最終的な動きベクトルを有し、候補の参照ブロックの最終的な動きベクトルは、候補の参照ブロックの動きベクトルとして使用されることが可能である。更に、最終的な動きベクトルは、初期の動きベクトルが洗練された後に得られる動きベクトルであるので、候補の参照ブロックの動きベクトルとして最終的な動きベクトルを使用することは、復号化品質を保証することができる。
前もってセットされたレンジは、代替的に、CTBブロック・レンジであってもよい。例えば、候補の参照ブロックと第2の処理対象のピクチャ・ブロックとが同一のCTB内に位置する場合、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。相応して、候補の参照ブロックと第2の処理対象のピクチャ・ブロックとが同一のCTB内に位置していない場合、候補の参照ブロックの最終的な動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。
候補の参照ブロックと第2の処理対象のピクチャ・ブロックとが同一のCTB内に位置する場合、それは候補の参照ブロックにおける更新処理は完了していない可能性があることを示し、候補の参照ブロックの初期の動きベクトルは、候補の参照ブロックが更新されるまで待機することを必要とすることなく、候補の参照ブロックの動きベクトルとして直接的に使用され、復号化遅延を低減する。更に、候補の参照ブロックと第2の処理対象のピクチャ・ブロックとが同一のCTB内に位置していない場合、それは候補の参照ブロックに関して更新処理を完了するための十分な時間があることを示す。更に、最終的な動きベクトルは、初期の動きベクトルが洗練された後に得られる動きベクトルであるので、第2の処理対象のピクチャ・ブロックと同じCTB内に位置していない候補の参照ブロックの最終的な動きベクトルを、候補の参照ブロックの動きベクトルとして使用することは、復号化品質を保証することができる。
前もってセットされたレンジは、代替的に、同じCTBブロック・レンジ、又は左隣接及び右隣接CTBブロックのレンジであってもよい。例えば、候補の参照ブロックが位置するCTBが、第2の処理対象のピクチャ・ブロックが位置するCTBであるか、又は候補の参照ブロックが位置するCTBが、第2の処理対象のピクチャ・ブロックが位置するCTBの左隣接又は右隣接ブロックである場合には、候補の参照ブロックの初期の動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。相応して、候補の参照ブロックが位置するCTBが、第2の処理対象のピクチャ・ブロックが位置するCTBと同じでないか、又は候補の参照ブロックが位置するCTBが、第2の処理対象のピクチャ・ブロックが位置するCTBの左隣接又は右隣接ブロックでない場合には、候補の参照ブロックの最終的な動きベクトルが、候補の参照ブロックの動きベクトルとして使用される。
候補の参照ブロックが位置するCTBが、第2の処理対象のピクチャ・ブロックが位置するCTBと同じである場合、又は候補の参照ブロックが位置するCTBが、第2の処理対象のピクチャ・ブロックが位置するCTBの左隣接又は右隣接ブロックである場合、それは、候補の参照ブロックに対する更新処理が完了しない可能性があることを示し、候補の参照ブロックの初期の動きベクトルは、候補の参照ブロックが更新されるまで待機することを必要とせずに、候補の参照ブロックの動きベクトルとして直接的に使用され、復号化遅延を低減する。更に、候補の参照ブロックが位置するCTBが、第2の処理対象のピクチャ・ブロックが位置するCTBと同じでないか、又は候補の参照ブロックが位置するCTBが、第2の処理対象のピクチャ・ブロックが位置するCTBの左隣接又は右隣接ブロックでない場合には、それは、候補の参照ブロックに関して更新処理を完了するのに十分な時間があることを示す。更に、最終的な動きベクトルは、初期の動きベクトルが洗練された後に得られる動きベクトルであるので、候補の参照ブロックの動きベクトルとして、候補の参照ブロックの最終的な動きベクトルを使用することは、復号化品質を保証することができる。
2003:デコーダは、1つ以上の候補の参照ブロックの1つ以上の動きベクトルに基づいて、候補の予測された動きベクトルのリストを設定する。
ステップ2003は、ステップ1903と同じであり、即ち、デコーダが候補の予測された動きベクトルのリストを設定する方法は、エンコーダが候補の予測された動きベクトルのリストを設定する方法と一貫しており、設定された候補の予測された動きベクトルのリストは同じである。エンコーダは、デコーダによって受信されるビットストリームを符号化するエンコーダである。
2004:デコーダは、第2識別情報に基づいて、候補の予測された動きベクトルのリストから、第2の処理対象のピクチャ・ブロックの参照ブロックと参照ブロックの動きベクトルとを決定する。
第2識別情報のインデックスで示される動きベクトルは、インデックスに基づいて候補の予測された動きベクトルのリストから選択される。動きベクトルは、第2の処理対象のピクチャ・ブロックの初期の動きベクトルであり、動きベクトルはまた、第2の処理対象のピクチャ・ブロックの参照ブロックの動きベクトルでもある。
2005:エンコーダは、参照ブロックの動きベクトルを、第2の処理対象のピクチャ・ブロックの初期の動きベクトルとして記憶する。
ステップ2001ないし2005は、デコーダが第2の処理対象のピクチャ・ブロックの初期の動きベクトルを取得する処理である。
2006:デコーダは、第2の処理対象のピクチャ・ブロックの初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとに基づいて、第2の処理対象のピクチャ・ブロックの予測ブロックを決定する。
ステップ2006は、図14の14021ないし14024を使用することによって完了することができる。詳細はここで再び説明しない。
1つ以上の前もってセットされた動きベクトル・オフセットについては、ステップ1906を参照されたい。詳細はここで再び説明しない。
ステップ2005及び2006を実行する不特定のシーケンスがあることに留意すべきであり、ステップ2006は代替的にステップ2005の前に実行されてもよい。ステップ2005及び2006を実行するシーケンスは、本願のこの実施形態において具体的に限定されない。
2007:予測ブロックの動きベクトルを決定した後に、デコーダは、予測ブロックの動きベクトルを、第2の処理対象のピクチャ・ブロックの最終的な動きベクトルとして使用する。
ステップ2007では、候補の参照ブロックの動きベクトルが、予測ブロックの前もってセットされたレンジに基づいて決定されることが可能である。例えば、予測ブロックが前もってセットされたレンジ内にある場合には、予測ブロックの初期の動きベクトルが予測ブロックの動きベクトルとして使用され、予測ブロックが前もってセットされたレンジ外にある場合には、予測ブロックの最終的な動きベクトルが予測ブロックの動きベクトルとして使用される。
具体的には、前もってセットされたレンジはCTB行レンジであってもよい。例えば、予測ブロックが位置するCTBと、第2の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置する場合には、予測ブロックの初期の動きベクトルが、予測ブロックの動きベクトルとして使用される。相応して、予測ブロックが位置するCTBと、第2の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置しない場合には、予測ブロックの初期の動きベクトルが、予測ブロックの動きベクトルとして使用される。図21を参照すると、予測ブロックが位置するコーディング・ツリー・ブロックと、第2の処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行に位置し、予測ブロックが位置するコーディング・ツリー・ブロックと、第2の処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行の隣接する空間に位置する場合には、予測ブロックの初期の動きベクトルが、予測ブロックの動きベクトルとして使用されることが理解されるであろう。異なる行の隣接する空間は、異なる行の上空間、左上空間などであってもよい。異なる行の隣接する空間の特定のレンジは、本発明のこの実施形態では具体的に限定されない。
予測ブロックが位置するCTBと、第2の処理対象のピクチャ・ブロックが位置するCTBとが同じ行に位置する場合、予測ブロックに対する更新処理は終了しない可能性がある。従って、予測ブロックの初期の動きベクトルは、予測ブロックの動きベクトルとして直接的に使用されることが可能であり、予測ブロックが更新されるまで待機する必要はなく、復号化遅延を低減する。予測ブロックが位置するCTBと、第2の処理対象のピクチャ・ブロックが位置するCTBとが同一の行に位置していない場合、それは、予測ブロックに対する更新処理を完了するのに十分な時間があることを示す。従って、予測ブロックは最終的な動きベクトルを有し、予測ブロックの最終的な動きベクトルは、予測ブロックの動きベクトルとして使用されることが可能である。更に、最終的な動きベクトルは、初期の動きベクトルが洗練された後に得られる動きベクトルであるので、予測ブロックの動きベクトルとして最終的な動きベクトルを使用することは、復号化品質を保証することができる。
幾つかの実施形態では、前もってセットされたレンジは代替的にCTBブロック・レンジであってもよい。幾つかの他の実施形態では、前もってセットされたレンジは、代替的に、同じCTBブロック・レンジであってもよい。予測ブロックの動きベクトルの決定は、候補の参照ブロックの動きベクトルの決定と同様である。これについてはステップ1802を参照されたい。詳細はここで再び説明しない。
ステップ2006及びステップ2007は、デコーダが第2の処理対象のピクチャ・ブロックの最終的な動きベクトルを取得する処理である。
2008:第2の処理対象のピクチャ・ブロックの動きベクトル残差を、ターゲット・ストレージ空間に記憶する。
ターゲット・ストレージ空間は、デコーダによって動きベクトル残差を記憶するための空間である。例えば、ターゲット・ストレージ空間は、図3の参照ピクチャ・ストレージ92であってもよい。
関連技術におけるマージ・モードでは、ターゲット・ストレージ空間はゼロ・ベクトルを記憶するか、又はターゲット・ストレージ空間はデータを記憶しないことに留意すべきである。しかしながら、本願のこの実施形態におけるマージ・モードでは、処理対象のピクチャ・ブロックの動きベクトル残差がターゲット・ストレージ空間に記憶され、その結果、ターゲット・ストレージ空間を完全に使用することが可能であるだけでなく、他のピクチャ・ブロックの動きベクトルが第2の処理対象のピクチャ・ブロックに対して必要とされる場合に、他のピクチャ・ブロックの動きベクトルを柔軟に選択することも可能である。ステップ2002及び2007において示されるように、デコーダの復号化効率は更に改善される。
更に、一部の実装では、ステップ2008において、第2の処理対象のピクチャ・ブロックの最終的な動きベクトルが、代替的に、第2の処理対象のピクチャ・ブロックの動きベクトル残差として使用され、ターゲット・ストレージ空間に記憶されることが可能であり、即ち、第2の処理対象のピクチャ・ブロックの最終的な動きベクトルがターゲット・ストレージ空間に記憶され、第2の処理対象のピクチャ・ブロックの動きベクトル残差は、ターゲット・ストレージ空間に記憶されない。この場合において、第2の処理対象のピクチャ・ブロックの最終的な動きベクトルが別のブロックに必要とされる場合、第2の処理対象のピクチャ・ブロックの最終的な動きベクトルは、第2の処理対象のピクチャ・ブロックの初期の動きベクトルと、第2の処理対象のピクチャ・ブロックの動きベクトル残差とを加算する必要なしに、デコーダのターゲット・ストレージ空間から直接的に取得されることが可能である。
このステップ2008における具体的なストレージ方法については、図21を参照されたい。
ステップ2007及び2008の間のシーケンスには厳密な要件がないことに留意すべきであり、デコーダは代替的にステップ2008の前にステップ2007を実行してもよい。これは本願のこの実施形態で具体的に限定されない。
2009:デコーダは、第2の処理対象のピクチャ・ブロックの動きベクトル残差と初期の動き差分とに基づいて、第2の処理対象のピクチャ・ブロックに対応するピクチャ情報を取得する。
ピクチャ情報は、第2の処理対象のピクチャ・ブロックのオリジナル・ピクチャを識別するために使用されるピクセル情報を含む。
デコーダは、第2の処理対象のピクチャ・ブロックの動きベクトル残差と初期の動き差分とに基づいて、第2の処理対象のピクチャ・ブロックに対応するピクチャ情報を取得する。これについては、図3を参照されたい。詳細はここで再び説明されない。
相応して、デコーダは、代替的に、第2の処理対象のピクチャ・ブロックの最終的な動きベクトルに基づいて、第2の処理対象のピクチャ・ブロックに対応するピクチャ情報を取得してもよい。
前述の実装では、現在の復号化ブロックを復号化する場合に、デコーダは、参照ブロックの最終的な動きベクトルの代わりに、現在の復号化ブロックの予測された動きベクトルとして、参照ブロックの更新されていない初期の動きベクトルを使用する。このように、参照ブロックの動きベクトルが現在の復号化ブロックに対して必要とされる場合、関連するステップは、参照ブロックの最終的な動きベクトルが更新されるまで待機する必要なしに実行されることが可能であり、復号化遅延が確実に削減されることを保証する一方、復号化効率は、動きベクトルが更新されるので改善される。
動きベクトル・ストレージ方法を更に反映するために、具体的な実施形態が、ストレージ・ステップを説明するためにここで使用される。具体的な説明は次のとおりである:
マージ・モードでは、各々の予測方向において2つのMVが存在する可能性があり、それぞれ第1MV情報及び第2MV情報である。例えば、第1MV及び第2MVはそれぞれ、参照ブロックの初期の動きベクトル、及び参照ブロックの候補の最終的な動きベクトルであってもよい。MVD導出プロセスはマージ・モードに導入される。例えば、前方予測プロセスにおいて、第1MVがMV0であり、第2MVがMV0’である場合に、派生的な関係が存在する:MV0’=MV0+(-)MVD0。2つのMV、例えば初期の動きベクトルのインデックス値と以前のMVD、即ち、2つのMV間の差分とを記憶することによって、第1MVが特定の条件下で使用されることが可能であり、第2MVが特定の条件下で使用されることが可能であり、遅延を回避する。
特定の条件については、ステップ1902又は2002を参照されたい。詳細はここで再び説明されない。
実現可能な実装において、
非マージ・モードでは、ターゲット・ストレージ空間が、参照ブロックの動きベクトル残差を記憶するために使用され、参照ブロックの動きベクトル残差は、参照ブロックの最終的な動きベクトルと参照ブロックの予測された動きベクトルとの差分である。
マージ・モードでは、ターゲット・ストレージ空間は、選択された最終的な動きベクトルを記憶するために使用されるか、又はターゲット・ストレージ空間は、参照ブロックの初期の動きベクトルと選択された最終的な動きベクトルとの間の差分を記憶するために使用される。
本願の別の実施形態は次のとおりである:
図22に示すように、現在のコーディング・ブロックは第1コーディング・ブロックであり、現在のコーディング・ブロックの予測された動き情報が得られ、参照ブロックはマージ・モードであり、参照ブロックの動き情報の位置は、現在のコーディング・ブロックと同一のCTB行レンジにはない。この場合、現在のコーディング・ブロックの前方動きベクトル予測子(-21,18)は、参照ブロックの前方動きベクトル(-22,18)と前方MVD(1,0)とを加えることによって取得され、現在のコーディング・ブロックの後方動きベクトル予測子(1,12)は、参照ブロックの後方動きベクトル(2,12)と後方MVD(-1,0)とを加えることによって取得され、現在のコーディング・ブロックが位置するピクチャのPOCは4であり、参照ピクチャのインデックス値で示される前方参照ピクチャのPOCは2であり、参照ピクチャのインデックス値で示される後方参照ピクチャのPOCは6である。この場合、現在のコーディング・ブロックに対応するPOCは4であり、前方予測参照ピクチャ・ブロックに対応するPOCは2であり、後方予測参照ピクチャ・ブロックに対応するPOCは6である。
(-21,18)は前方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、前方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1ピクセル・レンジにおける1ピクセル精度である。第1前方予測ブロックは参照として使用され、対応する新しい前方予測ブロックは、各々の動き探索により取得される。(1,12)は後方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、後方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1ピクセル・レンジにおける1ピクセル精度である。第1後方予測ブロックは参照として使用され、対応する新しい後方予測ブロックは、各々の動き探索により取得される。新しい前方予測ブロックは新しい後方予測ブロックと比較されて、最小差分を有する前方予測ブロックと最小差分を有する後方予測ブロックとを取得し、前方予測ブロックに対応する前方動きベクトル予測子と後方予測ブロックに対応する後方動きベクトル予測子とはターゲットの動きベクトル予測子として使用され、それぞれ(-21,19)及び(1,11)であると仮定される。
現在のコーディング・ブロックの前方MVD(0,1)は、前方動きベクトル予測子(-21,18)を、前方ターゲット動きベクトル予測子(-21,19)から減算することにより取得され、現在のコーディング・ブロックの後方MVD(0,-1)は、後方動きベクトル予測子(1,12)を、後方ターゲット動きベクトル予測子(1,11)から減算することによって取得される。MVD計算方法1は次のとおりである:MVD0=(-21,19)-(-21,18)及びMVD1=(1,11)-(1,12);又はMVD0=(-21,19)-(-21,18)及びMVD1=-MVD0。
更に、前方予測及び後方予測は、ターゲット動きベクトル予測子に基づいて、第1コーディング・ブロックに対して別々に実行され、取得された前方及び後方予測ブロックは、ターゲット復号化予測ブロックとして使用され、現在のコーディング・ブロックの予測ブロックが更新される。
第1精度の動き探索が前方予測参照ピクチャ・ブロックと後方予測参照ピクチャ・ブロックとに対して実行される場合、第1精度は、任意の指定された精度、例えば、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、又は1/8ピクセル精度であってもよい。
本願の別の実施形態は次のとおりである:
図22に示すように、現在のコーディング・ブロックは第1コーディング・ブロックであり、現在のコーディング・ブロックの予測された動き情報が得られ、参照ブロックはマージ・モードであり、参照ブロックの動き情報の位置は、現在のコーディング・ブロックと同一のCTBレンジにはない。この場合、現在のコーディング・ブロックの前方動きベクトル予測子(-21,18)は、参照ブロックの前方動きベクトル(-22,18)と前方MVD(1,0)とを加えることによって取得され、現在のコーディング・ブロックの後方動きベクトル予測子(1,12)は、参照ブロックの後方動きベクトル(2,12)と後方MVD(-1,0)とを加えることによって取得され、現在のコーディング・ブロックが位置するピクチャのPOCは4であり、参照ピクチャのインデックス値で示される前方参照ピクチャのPOCは2であり、参照ピクチャのインデックス値で示される後方参照ピクチャのPOCは6である。この場合、現在のコーディング・ブロックに対応するPOCは4であり、前方予測参照ピクチャ・ブロックに対応するPOCは2であり、後方予測参照ピクチャ・ブロックに対応するPOCは6である。
(-21,18)は前方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、前方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1ピクセル・レンジにおける1ピクセル精度である。第1前方予測ブロックは参照として使用され、対応する新しい前方予測ブロックは、各々の動き探索により取得される。(1,12)は後方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、後方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1ピクセル・レンジにおける1ピクセル精度である。第1後方予測ブロックは参照として使用され、対応する新しい後方予測ブロックは、各々の動き探索により取得される。
新しい前方予測ブロックは新しい後方予測ブロックと比較されて、最小差分を有する前方予測ブロックと最小差分を有する後方予測ブロックとを取得し、前方予測ブロックに対応する前方動きベクトル予測子と後方予測ブロックに対応する後方動きベクトル予測子とはターゲットの動きベクトル予測子として使用され、それぞれ(-21,19)及び(1,11)であると仮定される。
現在のコーディング・ブロックの前方MVD(0,1)は、前方動きベクトル予測子(-21,18)を、前方ターゲット動きベクトル予測子(-21,19)から減算することにより取得され、現在のコーディング・ブロックの後方MVD(0,-1)は、後方動きベクトル予測子(1,12)を、後方ターゲット動きベクトル予測子(1,11)から減算することによって取得される。MVD計算方法1は次のとおりである:MVD0=(-21,19)-(-21,18)及びMVD1=(1,11)-(1,12);又はMVD0=(-21,19)-(-21,18)及びMVD1=-MVD0。
更に、前方予測及び後方予測は、ターゲット動きベクトル予測子に基づいて、第1コーディング・ブロックに対して別々に実行され、取得された前方及び後方予測ブロックは、ターゲット復号化予測ブロックとして使用され、現在のコーディング・ブロックの予測ブロックが更新される。
第1精度の動き探索が前方予測参照ピクチャ・ブロックと後方予測参照ピクチャ・ブロックとに対して実行される場合、第1精度は、任意の指定された精度、例えば、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、又は1/8ピクセル精度であってもよい。
本願の別の実施形態は次のとおりである:
図22に示すように、現在のコーディング・ブロックは第1コーディング・ブロックであり、現在のコーディング・ブロックの予測された動き情報が得られ、参照ブロックはマージ・モードであり、参照ブロックの動き情報の位置は、現在のコーディング・ブロックと同一のCTBラインのレンジにはない。この場合、現在のコーディング・ブロックの前方動きベクトル予測子(-21,18)は、参照ブロックの前方動きベクトル(-22,18)と前方MVD(1,0)とを加えることによって取得され、現在のコーディング・ブロックの後方動きベクトル予測子(1,12)は、参照ブロックの後方動きベクトル(2,12)と後方MVD(-1,0)とを加えることによって取得され、現在のコーディング・ブロックが位置するピクチャのPOCは4であり、参照ピクチャのインデックス値で示される前方参照ピクチャのPOCは2であり、参照ピクチャのインデックス値で示される後方参照ピクチャのPOCは6である。この場合、現在のコーディング・ブロックに対応するPOCは4であり、前方予測参照ピクチャ・ブロックに対応するPOCは2であり、後方予測参照ピクチャ・ブロックに対応するPOCは6である。
(-21,18)は前方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、前方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1ピクセル・レンジにおける1ピクセル精度である。第1前方予測ブロックは参照として使用され、対応する新しい前方予測ブロックは、各々の動き探索により取得される。(1,12)は後方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、後方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1ピクセル・レンジにおける1ピクセル精度である。第1後方予測ブロックは参照として使用され、対応する新しい後方予測ブロックは、各々の動き探索により取得される。新しい前方予測ブロックは新しい後方予測ブロックと比較されて、最小差分を有する前方予測ブロックと最小差分を有する後方予測ブロックとを取得し、前方予測ブロックに対応する前方動きベクトル予測子と後方予測ブロックに対応する後方動きベクトル予測子とはターゲットの動きベクトル予測子として使用され、それぞれ(-21,19)及び(1,11)であると仮定される。
次いで、(-21,19)は前方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、前方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1/2ピクセル精度である。第1前方予測ブロックは参照として使用され、対応する新しい前方予測ブロックは、各々の動き探索により取得される。(1,11)は後方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、後方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1/2ピクセル精度である。第1後方予測ブロックは参照として使用され、対応する新しい後方予測ブロックは、各々の動き探索により取得される。新しい前方予測ブロックは新しい後方予測ブロックと比較されて、最小差分を有する前方予測ブロックと最小差分を有する後方予測ブロックとを取得し、
前方予測ブロックに対応する前方動きベクトル予測子と後方予測ブロックに対応する後方動きベクトル予測子とはターゲットの動きベクトル予測子として使用される。
現在のコーディング・ブロックの前方MVD(0,1)は、前方動きベクトル予測子(-21,18)を、前方ターゲット動きベクトル予測子(-21,19)から減算することにより取得され、現在のコーディング・ブロックの後方MVD(0,-1)は、後方動きベクトル予測子(1,12)を、後方ターゲット動きベクトル予測子(1,11)から減算することによって取得される。MVD計算方法1は次のとおりである:MVD0=(-21,19)-(-21,18)及びMVD1=(1,11)-(1,12);又はMVD0=(-21,19)-(-21,18)及びMVD1=-MVD0。
更に、前方予測及び後方予測は、ターゲット動きベクトル予測子に基づいて、第1コーディング・ブロックに対して別々に実行され、取得された前方及び後方予測ブロックは、ターゲット復号化予測ブロックとして使用され、現在のコーディング・ブロックの予測ブロックが更新される。
第1精度の動き探索が前方予測参照ピクチャ・ブロックと後方予測参照ピクチャ・ブロックとに対して実行される場合、第1精度は、任意の指定された精度、例えば、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、又は1/8ピクセル精度であってもよい。
本願の別の実施形態は次のとおりである:
現在のコーディング・ブロックは第1コーディング・ブロックであり、現在のコーディング・ブロックの予測された動き情報が取得される。この場合、現在のコーディング・ブロックの前方動きベクトル予測子(-21,18)は、参照ブロックの前方動きベクトル(-21,18)であり、現在のコーディング・ブロックの後方動きベクトル予測子(1,12)は、参照ブロックの後方動きベクトル(1,12)であり、現在のコーディング・ブロックが位置するピクチャのPOCは4であり、参照ピクチャのインデックス値で示される前方参照ピクチャのPOCは2であり、参照ピクチャのインデックス値で示される後方参照ピクチャのPOCは6である。この場合、現在のコーディング・ブロックに対応するPOCは4であり、前方予測参照ピクチャ・ブロックに対応するPOCは2であり、後方予測参照ピクチャ・ブロックに対応するPOCは6である。
(-21,18)は前方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、前方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1ピクセル・レンジにおける1ピクセル精度である。第1前方予測ブロックは参照として使用され、対応する新しい前方予測ブロックは、各々の動き探索により取得される。(1,12)は後方動きベクトル予測器の参照入力として使用され、第1精度の動き探索が、後方予測参照ピクチャ・ブロックに対して実行される。この場合、第1精度は1ピクセル・レンジにおける1ピクセル精度である。第1後方予測ブロックは参照として使用され、対応する新しい後方予測ブロックは、各々の動き探索により取得される。新しい前方予測ブロックは新しい後方予測ブロックと比較されて、最小差分を有する前方予測ブロックと最小差分を有する後方予測ブロックとを取得し、前方予測ブロックに対応する前方動きベクトル予測子と後方予測ブロックに対応する後方動きベクトル予測子とはターゲットの動きベクトル予測子として使用され、それぞれ(-21,19)及び(1,11)であると仮定される。
現在のコーディング・ブロックの前方MVD(0,1)は、前方動きベクトル予測子(-21,18)を、前方ターゲット動きベクトル予測子(-21,19)から減算することにより取得され、現在のコーディング・ブロックの後方MVD(0,-1)は、後方動きベクトル予測子(1,12)を、後方ターゲット動きベクトル予測子(1,11)から減算することによって取得される。MVD計算方法1は次のとおりである:MVD0=(-21,19)-(-21,18)及びMVD1=(1,11)-(1,12);又はMVD0=(-21,19)-(-21,18)及びMVD1=-MVD0。
更に、前方予測及び後方予測は、ターゲット動きベクトル予測子に基づいて、第1コーディング・ブロックに対して別々に実行され、取得された前方及び後方予測ブロックは、ターゲット復号化予測ブロックとして使用され、現在のコーディング・ブロックの予測ブロックが更新される。
第1精度の動き探索が前方予測参照ピクチャ・ブロックと後方予測参照ピクチャ・ブロックとに対して実行される場合、第1精度は、任意の指定された精度、例えば、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、又は1/8ピクセル精度であってもよい。
幾つかの実施形態では、処理対象のピクチャ・ブロックは複数のサブ・ブロックを含んでもよく、コーデックは、各々のサブ・ブロックの最終的な動きベクトルに基づいて、処理対象のピクチャ・ブロックの最終的な動きベクトルを取得することができる。可能な実装において、各々のサブ・ブロックは、初期の動きベクトルと、サブ・ブロックの複数の前もってセットされたオフセット・ベクトルとを有する。コーデックは、任意のサブ・ブロックの複数の候補の最終的な動きベクトルを得るために、複数のサブ・ブロックのうちの任意の1つの初期の動きベクトルと複数の前もってセットされたオフセット・ベクトルとを別々に加えることができる。コーデックは、任意のサブ・ブロックの最終的な動きベクトルとして、任意のサブ・ブロックの複数の候補の最終的な動きベクトルにおける最小歪コストに対応する候補の最終的な動きベクトルを使用する。同様に、コーデックは、各サブ・ブロックの最終的な動きベクトルを得ることができ、次いで、コーデックは、各サブ・ブロックの最終的な動きベクトルに基づいて、処理対象のピクチャ・ブロックの最終的な動きベクトルを得ることができる。各サブ・ブロックの最終的な動きベクトルに基づいて処理対象のピクチャ・ブロックの最終的な動きベクトルを得るプロセスは、本発明のこの実施形態において具体的に限定されない。
任意のサブ・ブロックの複数の候補の最終的な動きベクトルを得る前に、コーデックは、先ず、任意のサブ・ブロックの初期の動きベクトルと複数の前もってセットされたオフセット・ベクトルとを決定する必要があることに留意すべきである。任意のサブ・ブロックの初期の動きベクトルを決定する方法は、処理対象のピクチャ・ブロックの初期の動きベクトルを決定する方法に類似しており、本発明のこの実施形態では説明しない。更に、任意のサブ・ブロックの複数の前もってセットされたオフセット・ベクトルを決定する方法は、処理対象のピクチャ・ブロックの複数の前もってセットされたオフセット・ベクトルを決定する方法に類似しており、本発明のこの実施形態では説明しない。
図23は、本願の実施形態による動きベクトル取得装置2300の概略ブロック図である。装置2300は:
処理対象のピクチャ・ブロックの参照ブロックを決定するように構成された決定モジュール2301であって、参照ブロック及び処理対象のピクチャ・ブロックは前もってセットされた時間的又は空間的な相関を有し、参照ブロックは、初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとを有し、参照ブロックの初期の動きベクトルは、参照ブロックの予測された動きベクトルに基づいて取得され、参照ブロックの予測ブロックは、初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとに基づいて取得される、決定モジュールと、
処理対象のピクチャ・ブロックの予測された動きベクトルとして、参照ブロックの初期の動きベクトルを使用するように構成された取得モジュール2302とを含む。
実現可能な実装において、取得モジュール2302は、参照ブロックの予測された動きベクトルを、参照ブロックの初期の動きベクトルとして使用するように構成されるか、又は参照ブロックの予測された動きベクトルと参照ブロックの動きベクトル差分とを加算して、参照ブロックの初期の動きベクトルを取得するように更に構成される。
実現可能な実施において、取得モジュール2302は、更に、参照ブロックの時間的な予測ブロックとして機能するように、参照ブロックの初期の動きベクトルによって示されるピクチャ・ブロックを、参照ブロックの参照フレームから取得し;1つ以上の実際の動きベクトルを取得するために、参照ベクトルの初期の動きベクトルと1つ以上の前もってセットされた動きベクトル・オフセットとを追加し(ここで、それぞれの実際の動きベクトルは1つ以上の探索位置を示す)、1つ以上の実際の動きベクトルによって示される1つ以上の探索位置において1つ以上の候補の予測ブロックを取得し(ここで、それぞれの探索位置は1つの候補の予測ブロックに対応する)、時間的な予測ブロックからの最小ピクセル差分を有する候補の予測ブロックを、参照ブロックの予測ブロックとして、1つ以上の候補の予測ブロックから選択するように構成される。
実現可能な実装において、装置2300は、双方向予測に使用され、参照フレームは、第1方向の参照フレームと第2方向の参照フレームとを含み、初期の動きベクトルは、第1方向の初期の動きベクトルと第2方向の初期の動きベクトルとを含み、取得モジュール2302は、具体的には、参照ブロックの第1方向の参照フレームから、参照ブロックの第1方向の初期の動きベクトルによって示される第1ピクチャ・ブロックを取得し、参照ブロックの第2方向の参照フレームから、参照ブロックの第2方向の初期の動きベクトルによって示される第2のピクチャ・ブロックを取得し、参照ブロックの時間的な予測ブロックを取得するために、第1ピクチャ・ブロック及び第2ピクチャ・ブロックに対して重み付け処理を実行するように構成される。
実現可能な実施において、取得モジュール2302は、処理対象のピクチャ・ブロックの予測された動きベクトルを、処理対象のピクチャ・ブロックの初期の動きベクトルとして使用するように具体的に構成される。
実現可能な実施において、取得モジュール2302は、処理対象のピクチャ・ブロックの予測された動きベクトルと、処理対象のピクチャ・ブロックの動きベクトル差分
とを加算して、処理対象のピクチャ・ブロックの初期の動きベクトルを取得するように、具体的に構成される。
実現可能な実装において、装置2300は、ビデオ復号化に使用され、処理対象のピクチャ・ブロックの動きベクトル差分は、ビットストリームにおける第1識別情報を解析することによって得られる。
実現可能な実装において、装置2300は、ビデオ復号化に使用され、決定モジュール2301は、第2識別情報を得るためにビットストリームを解析し、第2識別情報に基づいて処理対象のピクチャ・ブロックの参照ブロックを決定するように、具体的に構成される。
実現可能な実装において、装置2300は、ビデオ符号化に使用され、決定モジュール2301は、処理対象のピクチャ・ブロックの1つ以上の候補の参照ブロックから、処理対象のピクチャ・ブロックの参照ブロックとして、最小レート歪コストを有する候補参照ブロックを選択するように、具体的に構成される。
図24は、本願の実施形態によるビデオ・コーディング・デバイスの概略ブロック図である。デバイス2400は、エンコーダに適用されてもよいし、又はデコーダに適用されてもよい。デバイス2400はプロセッサ2401及びメモリ2402を含む。プロセッサ2401及びメモリ2402は互いに(例えば、バス2404を介して)接続される。可能な実装において、デバイス2400は、トランシーバ2403を更に含んでもよい。トランシーバ2403は、プロセッサ2401及びメモリ2402に接続され、データを受信/送信するように構成される。
メモリ2402は、ランダム・アクセス・メモリ(random access memory,RAM)、リード・オンリー・メモリ(read-only memory,ROM)、消去可能なプログラマブル。リード・オンリー・メモリ(erasable programmable read only memory,EPROM)、又はコンパクト・ディスク・リード・オンリー・メモリ(compact disc read-only memory,CD-ROM)を含むが、これらに限定されない。メモリ2402は、関連するプログラム・コード及びビデオ・データを記憶するように構成される。
プロセッサ2401は、1つ以上の中央処理ユニット(central processing unit,CPU)であってもよい。プロセッサ2401が1つのCPUである場合、CPUは、シングル・コアCPU又はマルチ・コアCPUであってもよい。
プロセッサ2401は、メモリ2402に記憶されたプログラム・コードを読み込み、図13ないし図20に対応する任意の実装解決策、及び実装解決策の種々の実現可能な実装における演算を実行するように構成される。
例えば、本願の実施形態は、コンピュータ読み取り可能な記憶媒体を更に提供する。コンピュータ読み取り可能な記憶媒体は命令を記憶する。命令がコンピュータ上で実行される場合に、コンピュータは、
図13ないし図20に対応する任意の実装解決策、及び実装解決策の種々の実装可能な実装における演算を実行することを可能にする。
例えば、本願の実施形態は、命令を含むコンピュータ・プログラム製品を更に提供する。コンピュータ・プログラム製品がコンピュータ上で実行される場合に、コンピュータは、図13ないし図20に対応する任意の実装解決策、及び実装解決策の種々の実装可能な実装における演算を実行することを可能にする。
図25は、本願の実施形態による動きベクトル取得装置を示す。装置は、決定モジュール2501と、第1取得モジュール2502と、第2取得モジュール2503とを含む。
決定モジュール2501は、ステップ1904を実行するように構成される。
第1取得モジュール2502は、ステップ1907を実行するように構成される。
第2取得モジュール2503は、ステップ1907を実行するように構成される。
オプションとして、参照ブロックが、前もってセットされたレンジ内にあることは、参照ブロックが位置するコーディング・ツリー・ブロックCTBと、処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが同じ行に位置することを含む。
相応して、参照ブロックが、前もってセットされたレンジ外にあることは、ステップ1907に関連して、参照ブロックが位置するコーディング・ツリー・ブロックと、処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックとが異なる行に位置することを含む。
オプションとして、参照ブロックが前もってセットされたレンジ内にあることは、参照ブロックと処理対象のピクチャ・ブロックとが同じコーディング・ツリー・ブロックに位置することを含む。
相応して、参照ブロックが前もってセットされたレンジ外にあることは、ステップ1907に関連して、参照ブロックと処理対象のピクチャ・ブロックとが異なるコーディング・ツリー・ブロックに位置することを含む。
オプションとして、
参照ブロックが前もってセットされたレンジ内にあることは、参照ブロックが位置するコーディング・ツリー・ブロックが、処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックと同じであること、又は参照ブロックが位置するコーディング・ツリー・ブロックが、処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックの左隣接又は右隣接ブロックであることを含む。
相応して、参照ブロックが前もってセットされたレンジ外にあることは、ステップ1907に関し、参照ブロックが位置するコーディング・ツリー・ブロックが、処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックと同じではないこと、又は参照ブロックが位置するコーディング・ツリー・ブロックが、処理対象のピクチャ・ブロックが位置するコーディング・ツリー・ブロックの左隣接又は右隣接ブロックではないことを含む。
図26は、本願の実施形態による動きベクトル残差決定装置を示す。装置は、解析モジュール2601、加算モジュール2602、決定モジュール2603、及び取得モジュール2604を含む。
解析モジュール2601は、ステップ2001を実行するように構成される。
加算モジュール2602は、ステップ2002を実行するように構成される。
決定モジュール2603は、ステップ1422を実行するように構成される。
取得モジュール2604は、ステップ2008を実行するように構成される。
オプションとして、装置は双方向インター予測に使用され、最終的な動きベクトルは第1の最終的な動きベクトルと第2の最終的な動きベクトルとを含み、初期の動きベクトルは第1の初期の動きベクトルと第2の初期の動きベクトルを含み;第1の最終的な動きベクトルと第1の初期の動きベクトルとは処理対象のピクチャ・ブロックの第1参照フレーム・リストに基づいて動き補償ブロックを示し、第2の最終的な動きベクトルと第2の初期の動きベクトルとは処理対象のピクチャ・ブロックの第2参照フレーム・リストに基づいて動き補償ブロックを示し;及び
最終的な動きベクトルと初期の動きベクトルとの間の差分を、処理対象のピクチャ・ブロックの動きベクトル残差として使用することは:
第1の最終的な動きベクトルと第1の初期の動きベクトルとの間の差分を、処理対象のピクチャ・ブロックの第1動きベクトル残差として使用することを含む。
図27は、本願の実施形態による動きベクトル・データ記憶装置を示す。装置は、第1解析モジュール2701、取得モジュール2702、第2解析モジュール2703、及び記憶モジュール2704を含む。
第1解析モジュール2701は、ステップ2001を実行するように構成される。
取得モジュール2702は、ステップ2007を実行するように構成される。
第2解析モジュール2703は、ステップ2001を実行するように構成される。
記憶モジュール2704は、ステップ2008を実行するように構成される
当業者は、本明細書で開示された実施形態で説明される例との組み合わせにおいて、ユニット及びアルゴリズム・ステップは、電子ハードウェア、又はコンピュータ・ソフトウェアと電子ハードウェアとの組み合わせによって実現されることが可能であることを認識するであろう。機能がハードウェア又はソフトウェアによって実行されるかどうかは、特定のアプリケーション及び技術的解決策の設計制約条件に依存する。当業者は、それぞれの特定のアプリケーションについて、説明された機能を実装するために様々な方法を使用することが可能であるが、そのような実装が本願の範囲を超えるものであると考えるべきではない。
便宜上及び簡潔な説明の目的により、前述のシステム、装置、及びユニットの詳細な動作プロセスについては、前述の方法の実施形態における対応するプロセスを参照されたいということが、当業者には明らかに理解されるであろう。詳細はここで再び説明しない。
前述の実施形態のすべて又は一部は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせによって実現されることが可能である。ソフトウェアが実施形態を実施するために使用される場合、実施形態は、コンピュータ・プログラム製品の形式で完全に又は部分的に実現されることが可能である。コンピュータ・プログラム製品は、1つ以上のコンピュータ命令を含む。コンピュータ・プログラム命令がコンピュータ上においてロードされ実行される場合に、本願の実施形態に従って、手順又は機能の全部又は一部が生じる。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータ・ネットワーク、又は他のプログラム可能な装置であってもよい。コンピュータ命令は、コンピュータ読み取り可能な記憶媒体に記憶されてもよく、又はコンピュータ読み取り可能な記憶媒体から別のコンピュータ読み取り可能な記憶媒体へ送信されてもよい。例えば、コンピュータ命令は、ウェブサイト、コンピュータ、サーバー、又はデータ・センターから他のウェブサイト、コンピュータ、サーバー、又はデータ・センターに、有線(例えば、同軸ケーブル、光ファイバ、又はデジタル加入者回線)又は無線(例えば、赤外線、マイクロ波など)方式で送信されることが可能である。コンピュータ読み取り可能な記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体、又は1つ以上の使用可能な媒体を統合するサーバー又はデータ・センターなどのデータ・ストレージ・デバイスであってもよい。使用可能な媒体は、磁気媒体(例えば、フロッピー・ディスク、ハード・ディスク、又は磁気テープ)、光媒体(例えば、デジタル多用途ディスク)、半導体媒体(例えば、固体ドライブ)等であってもよい。
前述の実施形態では、各々の実施形態における説明は個々の焦点を有する。実施形態において詳細には説明されていない部分については、他の実施形態における関連する説明を参照されたい。
以上の説明は、本願の特定の実装を説明しているに過ぎず、本願の保護範囲を限定するようには意図されていない。本願で開示される技術的範囲の中で当業者により容易に把握される任意の変形又は置換は、本願の保護範囲内にあるものとする。従って、本願の保護範囲は、クレームの保護範囲に従うものとする。