以下、本出願の実施形態の技術的解決策を、本出願の実施形態における添付の図面を参照して明確に説明する。
図1は、本出願の一実施形態による、ビデオ符号化システム10の概略的なブロック図である。図1に示されるように、システム10は、送信元装置12を備える。送信元装置12は、宛先装置14によって後に復号される符号化されたビデオデータを生成する。送信元装置12および宛先装置14は、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、「スマート」フォンなどの電話ハンドセット、「スマート」タッチパッド、テレビ、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミング伝送装置などを含む多様な装置のうちのいずれか1つを含み得る。いくつかのアプリケーションでは、送信元装置12および宛先装置14は、無線通信のために装備され得る。
宛先装置14は、リンク16を介して、復号される符号化されたビデオデータを受信し得る。リンク16は、符号化されたビデオデータを送信元装置12から宛先装置14に転送し得る任意のタイプの媒体または装置を含み得る。実現可能な実装形態では、リンク16は、送信元装置12が符号化されたビデオデータを宛先装置14にリアルタイムで直接送信することを可能にする通信媒体を含み得る。符号化されたビデオデータは、通信規格(例えば、無線通信プロトコル)にしたがって変調され、次いで、宛先装置14に送信され得る。通信媒体は、任意の無線または有線の通信媒体、例えば無線周波数帯域または1つ以上の物理的伝送線を含み得る。通信媒体は、パケットベースのネットワーク(例えば、ローカルエリアネットワーク、広域ネットワーク、またはインターネットなどのグローバルネットワーク)の一部を構成してもよい。通信媒体は、ルータ、スイッチ、基地局、または送信元装置12から宛先装置14への通信を容易にするために使用され得る任意の他のデバイスを含み得る。
あるいは、符号化されたデータは、出力インターフェース22を介して記憶装置24に出力され得る。同様に、記憶装置24からの符号化されたデータは、入力インターフェースを介してアクセスされ得る。記憶装置24は、複数の散在している、またはローカルのデータ記憶媒体、例えば、ハードディスクドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは非不揮発性メモリ、または符号化されたビデオデータを記憶するように構成された任意の他の適切なデジタル記憶媒体のうちのいずれか1つを含み得る。別の実現可能な実装形態では、記憶装置24は、送信元装置12によって生成された符号化されたビデオを保持することができるファイルサーバまたは別の中間記憶装置に対応し得る。宛先装置14は、ストリーミング伝送またはダウンロードを介して、記憶装置24からの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、符号化されたビデオデータを宛先装置14に送信することができる任意のタイプのサーバであり得る。実現可能な実装形態では、ファイルサーバは、ウェブサイトサーバ、ファイル転送プロトコルサーバ、ネットワークアタッチトストレージ装置、またはローカルディスクドライブを含む。宛先装置14は、インターネット接続を含む任意の標準データ接続を介して符号化されたビデオデータにアクセスし得る。データ接続は、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適した無線チャネル(例えば、Wi-Fi接続)もしくは有線接続(例えば、ケーブルモデム)、またはそれらの組み合わせを含み得る。符号化されたビデオデータは、ストリーミング方式で、ダウンロードを介して、またはそれらの組み合わせを介して、記憶装置24から送信され得る。
本出願の技術は、必ずしも無線アプリケーションまたは設定に限定されない。本技術は、複数のマルチメディアアプリケーションのうちのいずれか1つ、例えば、無線テレビ放送、ケーブルテレビ伝送、衛星テレビ伝送、ビデオストリーミング伝送(例えば、インターネットを介する)、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または別のアプリケーションをサポートするために、ビデオ復号に適用され得る。いくつかの実現可能な実装形態では、システム10は、ビデオストリーミング伝送、ビデオ再生、ビデオ放送、および/またはビデオ電話などのアプリケーションをサポートするために、単方向または双方向のビデオ伝送をサポートするように構成され得る。
図1の実現可能な実装形態では、送信元装置12は、ビデオソース18と、ビデオ符号化器20と、出力インターフェース22とを備える。いくつかのアプリケーションでは、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を備え得る。送信元装置12において、ビデオソース18は、例えば、以下のソース、すなわち、ビデオキャプチャ装置(例えば、ビデオカメラ)、以前に取り込まれたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからのビデオを受信するためのビデオフィードインインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそれらの組み合わせを含み得る。実現可能な実装形態では、ビデオソース18がビデオカメラである場合、送信元装置12および宛先装置14は、カメラ付き携帯電話またはテレビ電話を構成し得る。例えば、本出願で説明される技術は、ビデオ復号に適用されてもよいし、無線および/または有線アプリケーションに適用されてもよい。
ビデオ符号化器20は、取り込まれた、または事前に取り込まれたビデオ、またはコンピュータによって生成されたビデオを符号化し得る。符号化されたビデオデータは、送信元装置12の出力インターフェース22を介して宛先装置14に直接送信され得る。符号化されたビデオデータはまた(または代替的に)、宛先装置14または別の装置が復号および/または再生のために符号化されたビデオデータに後にアクセスするように、記憶装置24に記憶され得る。
宛先装置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テストモデル(JEM)に準拠することができる。あるいは、ビデオ符号化器20およびビデオ復号器30は、例えば、ITU-T勧告H.265規格もしくはITU-T勧告H.264規格、またはこれらの規格の拡張などの他の専用または工業規格にしたがって動作することができる。ITU-T勧告H.265規格は、高効率ビデオ符号化規格とも呼ばれ、ITU-T勧告H.264規格は、MPEG-4パート10または高度ビデオ符号化(advanced video coding、AVC)とも呼ばれる。ただし、本出願の技術は、いかなる特定の符号化規格にも限定されない。他の実現可能な実装形態では、ビデオ圧縮規格はMPEG-2およびITU-T勧告H.263を含む。
図1には示されていないが、いくつかの態様では、ビデオ符号化器20およびビデオ復号器30は、オーディオ符号化器およびオーディオ復号器とそれぞれ一体化されてもよく、同じデータストリームまたは個別のデータストリームのオーディオおよびビデオの両方を符号化するために、適切なマルチプレクサ-デマルチプレクサ(MUX-DEMUX)ユニット、または他のハードウェアおよびソフトウェアを含むことができる。該当する場合、いくつかの実現可能な実装形態では、MUX-DEMUXユニットは、ITU勧告H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
ビデオ符号化器20およびビデオ復号器30はそれぞれ、複数の適切な符号化器回路、例えば、1つ以上のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、離散ロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせのいずれか1つとして実施され得る。本技術が部分的にソフトウェアで実施される場合、装置は、適切な非一時的なコンピュータ可読媒体にソフトウェアのための命令を格納でき、本出願の技術を実行するためにし、1つまたは複数のプロセッサを使用することによりハードウェアで命令を実行できる。ビデオ符号化器20およびビデオ復号器30は、1つまたは複数の符号化器または復号器にそれぞれ含まれてもよい。ビデオ符号化器20およびビデオ復号器30のいずれかは、対応する装置の複合符号化器/復号器(コーデック)の一部として一体化されてもよい。
本出願は、例えば、ビデオ符号化器20が例えばビデオ復号器30に特定の情報をシグナリングする別の装置に関係し得る。ただし、ビデオ符号化器20は、情報をシグナリングするために、特定のシンタックス要素をビデオデータの符号化された部分に関連付け得ることを理解されたい。つまり、ビデオ符号化器20は、データをシグナリングするために、特定のシンタックス要素を、ビデオデータの符号化された部分のヘッダ情報に記憶させ得る。いくつかのアプリケーションでは、これらのシンタックス要素は、ビデオ復号器30によって受信されて復号される前に、符号化されて記憶され得る(例えば、記憶システム34またはファイルサーバ36に記憶され得る)。したがって、「シグナリングする(signal)」という用語は、伝送がリアルタイムで実行されるか、ほぼリアルタイムで実行されるか、またはあるタイムスパン内で実行されるかに関係なく、例えば、シンタックスの伝送または圧縮されたビデオデータを復号するために使用される他のデータの伝送を意味し得る。例えば、伝送は、シンタックス要素が符号化中に媒体に記憶されるときに実行されてもよく、次いで、シンタックス要素は、媒体に記憶された後にはいつでも復号装置によって再探索されてもよい。
JCT-VCはH.265(HEVC)規格を開発している。HEVC規格化は、ビデオ復号装置の発展型モデルに基づいており、このモデルはHEVCテストモデル(HM)と呼ばれる。最新のH.265規格文書は、http://www.itu.int/rec/T-REC-H.265で入手できる。規格文書の最新バージョンはH.265(12/16)であり、規格文書はその全体が参照により本明細書に組み込まれる。HMでは、ビデオ復号装置は、ITU-T勧告H.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はCTUとも呼ばれる。ツリーブロックは、H.264規格のマクロブロックの機能と同様の機能を有する。スライスは、復号順にいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに分割され得る。各ツリーブロックは、四分木に基づいて符号化ユニットに分割され得る。例えば、四分木の根ノードとして機能するツリーブロックが、4つの子ノードに分割されてもよく、各子ノードは、親ノードとしても機能することができ、他の4つの子ノードに分割されてもよい。四分木の葉ノードとして機能する最後の分割不可能な子ノードは、復号ノード、例えば復号されたビデオブロックを含む。復号されたビットストリームに関連付けられた構文データでは、ツリーブロックが分割され得る最大回数と復号ノードの最小サイズとが規定され得る。
符号化ユニットは、復号ノードと、予測ユニット(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つのCUを1つまたは複数のTUに分割することも記述し得る。TUは、正方形または非正方形の形状であり得る。
HEVC規格は、TUベースの変換を可能にし、TUは異なるCUについては異なり得る。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、Nx2N、または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×0.5NのPU、下部に2N×1.5NのPUを有する2N×2NのCUを指す。
本出願では、「N×M」と「NかけるM」、例えば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を生成し、次いで、CUの変換係数を生成するためにTUを変換し得る。
変換係数を生成するためになんらかの変換を実行した後、ビデオ符号化器20は、変換係数を量子化し得る。量子化とは、例えば、係数を表すために使用されるデータの量を減らし、さらに圧縮を実施するために、係数を量子化するプロセスを指す。量子化処理は、係数の一部または全部に関連付けられているビットデプスを減らすことができる。例えば、量子化中に、nビット値は、丸めによってmビット値に減らされてもよく、nはmより大きい。
JEMモデルは、ビデオピクチャの符号化構造をさらに改善する。具体的には、「四分木プラス二分木」(QTBT)構造と呼ばれるブロック符号化構造が導入される。HEVCでCU、PU、およびTUなどの概念を使用せずに、QTBT構造はより柔軟な分割されたCU形状をサポートする。1つのCUは、正方形または長方形の形状であり得る。四分木分割がCTUに対して最初に実行され、二分木分割が四分木の葉ノードに対してさらに実行される。加えて、二分木分割には、対称水平分割と対称垂直分割との2つの分割パターンがある。二分木の葉ノードはCUと呼ばれる。JEMモデルのCUは、予測および変換中にさらに分割することはできない。換言すれば、JEMモデルのCU、PU、およびTUは同じブロックサイズを有する。既存のJEMモデルでは、最大CTUサイズは256x256輝度ピクセルである。
いくつかの実現可能な実装形態では、ビデオ符号化器20は、エントロピー符号化され得るシリアライズされたベクトルを生成するために、事前定義されたスキャン順序で量子化された変換係数をスキャンし得る。他の実現可能な実装形態では、ビデオ符号化器20は、適応スキャンを実行し得る。1次元ベクトルを形成するために量子化された変換係数をスキャンした後、ビデオ符号化器20は、コンテキストベースの適応型可変長符号化(CAVLC)またはコンテキストベースの適応型2値算術復号(CABAC)、シンタックスベースのコンテキスト適応型2値算術復号(SBAC)、確率区間分割エントロピー(PIPE)復号、または別のエントロピー復号方法を使用することにより、1次元ベクトルに対してエントロピー復号を実行し得る。ビデオ符号化器20は、ビデオ復号器30がビデオデータを復号するために、符号化されたビデオデータに関連付けられたシンタックス要素に対してエントロピー符号化をさらに実行し得る。
CABACを実行するために、ビデオ符号化器20は、コンテキストモデル内のコンテキストを、送信されるシンボルに割り当てることができる。コンテキストは、シンボルの隣接する値がゼロ以外であるか否かに関連し得る。CAVLCを実行するために、ビデオ符号化器20は、送信されるシンボルの可変長コードを選択し得る。可変長符号化(VLC)のコードワードは、より短いコードがより確率の高いシンボルに対応し、より長いコードがより確率の低いシンボルに対応するように構築され得る。このようにして、送信されるすべてのシンボルに同じ長さのコードワードを使用することと比較すると、VLCを使用することはビットレートを下げることができる。CABACの確率は、シンボルに割り当てられたコンテキストに基づいて決定され得る。
本出願の本実施形態では、ビデオ符号化器は、ピクチャ間の時間的冗長性を低減するためにインター予測を実行し得る。上記のように、CUは、異なるビデオ圧縮符号化規格に応じて、1つまたは複数の予測ユニットPUを有し得る。換言すれば、複数のPUがCUに属していてもよいし、PUとCUとが同じサイズを有していてもよい。本明細書では、CUとPUとが同じサイズを有する場合、CUの分割パターンは分割なしである、またはCUが1つのPUに分割され、PUが記述のために一律に使用される。ビデオ符号化器がインター予測を実行するとき、ビデオ符号化器は、PUの動き情報をビデオ復号器にシグナリングし得る。例えば、PUの動き情報は、参照ピクチャインデックス、動きベクトル、および予測方向識別子を含み得る。動きベクトルは、PUのピクチャブロック(ビデオブロック、ピクセルブロック、ピクセルセットなどとも呼ばれる)とPUの参照ブロックとの間の変位を示し得る。PUの参照ブロックは、PUのピクチャブロックと同様の参照ピクチャの一部であり得る。参照ブロックは、参照ピクチャインデックスおよび予測方向識別子によって示される参照ピクチャに配置され得る。
PUの動き情報を表すために必要とされる符号化されたビットの数を減らすために、ビデオ符号化器は、マージ予測モードまたは高度動きベクトル予測モードにしたがって、各PUの候補予測された動きベクトル(Motion Vector、MV)リストを生成し得る。PUの候補予測された動きベクトルリスト内の各候補予測された動きベクトルは、動き情報を示し得る。候補予測された動きベクトルリスト内のいくつかの候補予測された動きベクトルによって示される動き情報は、他のPUの動き情報に基づき得る。候補予測された動きベクトルが、指定された空間候補予測された動きベクトル位置または指定された時間候補予測された動きベクトル位置のうちの1つの動き情報を示す場合、候補予測された動きベクトルは、本明細書において「元の」候補予測された動きベクトルと呼ばれ得る。例えば、本明細書においてマージ予測モードとも呼ばれるマージモードでは、5つの元の空間候補予測された動きベクトル位置および1つの元の時間候補予測された動きベクトル位置が存在し得る。いくつかの例では、ビデオ符号化器は、異なる元の候補予測された動きベクトルからのいくつかの動きベクトルを組み合わせるか、元の候補予測された動きベクトルを修正するか、または候補予測された動きベクトルとしてゼロ動きベクトルのみを挿入することによって、追加の候補予測された動きベクトルを生成し得る。追加の候補予測された動きベクトルは、元の候補予測された動きベクトルとは見なされず、本出願では、人工的に生成された候補予測された動きベクトルと呼ばれ得る。
本出願の技術は、ビデオ符号化器で候補予測された動きベクトルリストを生成するための技術と、ビデオ復号器で同じ候補予測された動きベクトルリストを生成するための技術とを通常含む。ビデオ符号化器およびビデオ復号器は、候補予測された動きベクトルリストを構築するための同じ技術を実装することによって、同じ候補予測された動きベクトルリストを生成し得る。例えば、ビデオ符号化器およびビデオ復号器は、同数の候補予測された動きベクトル(例えば、5つの候補予測された動きベクトル)を用いてリストを構築し得る。ビデオ符号化器およびビデオ復号器は、空間候補予測された動きベクトル(例えば、同じピクチャの隣接するブロック)を最初に検討し、次に時間候補予測された動きベクトル(例えば、異なるピクチャの候補予測された動きベクトル)を検討でき、必要とされる数の候補予測された動きベクトルがリストに追加されるまで、人工的に生成された候補予測された動きベクトルを最終的に検討できる。本出願の技術によれば、候補予測された動きベクトルリストの構築中に、候補予測された動きベクトルリストから重複する候補予測された動きベクトルを除去するために、いくつかのタイプの候補予測された動きベクトルに対して枝刈り操作が実行される場合もあり、復号器の複雑さを軽減するために、他のタイプの候補予測された動きベクトルに対しては実行されない場合もある。例えば、空間候補予測された動きベクトルの集合および時間候補予測された動きベクトルについて、候補予測された動きベクトルリストから重複する動き情報を有する候補予測された動きベクトルを除去するために、枝刈り操作が実行され得る。しかしながら、人工的に生成された候補予測された動きベクトルは、枝刈りされることなく候補予測された動きベクトルリストに追加され得る。
CUのPUの候補予測された動きベクトルリストを生成した後、ビデオ符号化器は、候補予測された動きベクトルリストから候補予測された動きベクトルを選択し、候補予測された動きベクトルインデックスをビットストリームに出力し得る。選択された候補予測された動きベクトルは、復号されているターゲットPUの予測子に最も緊密に一致する動きベクトルを生成するための候補予測された動きベクトルであり得る。候補予測された動きベクトルインデックスは、候補予測された動きベクトルリスト内の選択された候補予測された動きベクトルの位置を示し得る。ビデオ符号化器は、PUの動き情報によって示される参照ブロックに基づいて、PUの予測ピクチャブロックをさらに生成し得る。PUの動き情報は、選択された候補予測された動きベクトルによって示される動き情報に基づいて決定され得る。例えば、マージモードでは、PUの動き情報は、選択された候補予測された動きベクトルによって示される動き情報と同じであり得る。AMVPモードでは、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である候補予測された動きベクトルであることが得られた場合、インデックス0からインデックス3までの候補予測された動きベクトルリストのみが構築される必要があり、インデックスが3である候補予測された動きベクトルが決定され得る。このことは、複雑さを軽減し、復号効率を改善する。
図2は、本出願の一実施形態による、ビデオ符号化器20の概略的なブロック図である。ビデオ符号化器20は、ビデオスライスにおけるビデオブロックに対してイントラ符号化およびインター符号化を実行し得る。イントラ符号化は、所与のビデオフレームまたはピクチャにおけるビデオの空間的冗長性を削減または除去するために、空間的予測に依拠する。インター符号化は、ビデオシーケンスの隣接するフレームまたはピクチャにおける映像の時間的冗長性を削減または除去するために、時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのうちのいずれか1つであり得る。単方向予測モード(Pモード)または双方向予測モード(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのうちのいずれか1つであり得る。
図2の実現可能な実装形態では、ビデオ符号化器20は、分割ユニット35と、予測ユニット41と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを備える。予測ユニット41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測ユニット46とを備える。ビデオブロックの再構成のために、ビデオ符号化器20は、逆量子化ユニット58と、逆変換ユニット60と、加算器62とをさらに備える。ビデオ符号化器20は、再構成されたビデオからブロッキングアーティファクトを除去するために、ブロック境界をフィルタリングするためのデブロッキングフィルタ(図2には示さず)をさらに備え得る。必要に応じて、デブロッキングフィルタは加算器62の出力を通常フィルタリングする。デブロッキングフィルタに加えて、追加のループフィルタ(ループ内またはループ後)が使用されてもよい。
図2に示されるように、ビデオ符号化器20はビデオデータを受信し、分割ユニット35はデータをビデオブロックに分割する。このような分割は、スライス、ピクチャブロック、または他のより大きなユニットへの分割、ならびに(例えば)LCUおよびCUの四分木構造に基づくビデオブロックの分割をさらに含み得る。例えば、ビデオ符号化器20は、符号化されるビデオスライスにおけるビデオブロックを符号化するためのコンポーネントである。通常、1つのスライスは、複数のビデオブロックに分割され得る(そして、ピクチャブロックと呼ばれるビデオブロックの集合に分割され得る)。
予測ユニット41は、符号化品質およびコスト計算結果(例えば、レート歪みコスト、RDコスト、またはレート歪みコストと呼ばれる)に基づいて、現在のビデオブロックについて、複数の可能な復号モードのうちの1つ、例えば、複数のイントラ復号モードのうちの1つまたは複数のインター復号モードのうちの1つを選択し得る。予測ユニット41は、残差ブロックデータを生成するために、取得されたイントラ復号またはインター復号されたブロックを加算器50に提供し得、符号化されたブロックを再構築し、再構築された符号化されたブロックを参照ピクチャとして使用するために、取得されたイントラ復号またはインター復号されたブロックを加算器62に提供し得る。
予測ユニット41の動き推定ユニット42および動き補償ユニット44は、時間圧縮を提供するために、1つまたは複数の参照ピクチャの1つまたは複数の予測ブロックに対して現在のビデオブロックに対するインター予測復号を実行する。動き推定ユニット42は、ビデオシーケンスの事前設定されたモードに基づいてビデオスライスのインター予測モードを決定するように構成され得る。事前設定されたモードでは、シーケンス内のビデオスライスは、Pスライス、Bスライス、またはGPBスライスとして指定され得る。動き推定ユニット42と動き補償ユニット44とは高度に一体化され得るが、概念を説明するために別々に説明される。動き推定ユニット42によって実行される動き推定は、ビデオブロックを推定するための動きベクトルを生成するプロセスである。例えば、動きベクトルは、参照ピクチャの予測ブロックに対する現在のビデオフレームまたはピクチャにおけるビデオブロックのPUの変位を示し得る。
予測ブロックは、ピクセル差分に基づいて、復号されるビデオブロックと緊密に一致することが判明したPUのブロックである。ピクセル差分は、差分絶対値和(SAD)、差分二乗和(SSD)、または別の差分メトリックに基づいて決定され得る。いくつかの実現可能な実装形態では、ビデオ符号化器20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数(sub-integer)ピクセル位置の値を計算し得る。例えば、ビデオ符号化器20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または別の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、1ピクセル位置および分数ピクセル位置に対する動き探索を行い、分数ピクセル精度で動きベクトルを出力することができる。
動き推定ユニット42は、PUの位置と参照ピクチャの予測ブロックの位置とを比較することによって、インター復号されたスライスにおけるビデオブロックのPUの動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。リスト内の各項目は、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別するために使用される。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送信する。
動き補償ユニット44によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックを抽出または生成することを含み得、サブピクセルレベルでの補間が実行され得る。現在のビデオブロックのPUの動きベクトルを受信した後に、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルによって指し示された予測ブロックを特定し得る。ビデオ符号化器20は、残差ビデオブロックを取得し、ピクセル差分を取得するために、復号されている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を差し引く。ピクセル差分は、ブロックの残差データを構成し、輝度差分成分とクロミナンス差分成分との両方を含み得る。加算器50は、減算演算を実行する1つまたは複数のコンポーネントである。動き補償ユニット44は、ビデオ復号器30がビデオスライスにおけるビデオブロックを復号するために、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素をさらに生成し得る。
PUがBスライスに配置されている場合、PUを含むピクチャは、「リスト0」および「リスト1」と呼ばれる2つの参照ピクチャリストに関連付けられ得る。いくつかの実現可能な実装形態では、Bスライスを含むピクチャは、リスト0とリスト1とのリストの組み合わせに関連付けられ得る。
加えて、PUがBスライスに配置されている場合、動き推定ユニット42は、PUの単方向予測または双方向予測を実行し得る。いくつかの実現可能な実装形態では、双方向予測は、参照ピクチャリスト0のピクチャおよび参照ピクチャリスト1のピクチャに基づいて別々に実行される予測である。他のいくつかの実現可能な実装形態では、双方向予測は、現在のフレームのものである、再構築された将来のフレームおよび再構築された過去のフレームに基づいて表示順で別々に実行される予測である。動き推定ユニット42がPUの単方向予測を実行するとき、動き推定ユニット42は、リスト0またはリスト1内の参照ピクチャでPUの参照ブロックを探索し得る。次に、動き推定ユニット42は、リスト0またはリスト1の参照ブロックを含む参照ピクチャを示す参照インデックス、および参照ブロックとPUとの間の空間変位を示す動きベクトルを生成し得る。動き推定ユニット42は、参照インデックス、予測方向識別子、および動きベクトルを、PUの動き情報として出力し得る。予測方向識別子は、参照インデックスがリスト0またはリスト1内の参照ピクチャを示すことを示し得る。動き補償ユニット44は、PUの動き情報によって示される参照ブロックに基づいて、PUの予測ピクチャブロックを生成し得る。
動き推定ユニット42がPUの双方向予測を実行するとき、動き推定ユニット42は、リスト0内の参照ピクチャでPUの参照ブロックを探索し、リスト1内の参照ピクチャでPUの別の参照ブロックをさらに探索し得る。次に、動き推定ユニット42は、リスト0およびリスト1の参照ブロックを含む参照ピクチャを示す参照インデックス、および参照ブロックとPUとの間の空間変位を示す動きベクトルを生成し得る。動き推定ユニット42は、PUの動き情報として、PUの参照インデックスおよび動きベクトルを出力し得る。動き補償ユニット44は、PUの動き情報によって示される参照ブロックに基づいて、PUの予測ピクチャブロックを生成し得る。
いくつかの実現可能な実装形態では、動き推定ユニット42は、PUの動き情報の完全集合をエントロピー符号化ユニット56に出力しない。代わりに、動き推定ユニット42は、別のPUの動き情報を参照して、PUの動き情報をシグナリングし得る。例えば、動き推定ユニット42は、PUの動き情報が隣接するPUの動き情報に類似していると決定し得る。この実装形態では、動き推定ユニット42は、PUに関連付けられたシンタックス構造でインジケータ値を示すことができ、インジケータ値は、ビデオ復号器30に対して、PUの動き情報が同じであるか、隣接するPUの動き情報から導出され得ることを示す。別の実装形態では、動き推定ユニット42は、PUに関連付けられたシンタックス構造において、隣接するPUに関連付けられた候補予測された動きベクトルおよび動きベクトルの差分(MVD)を識別し得る。MVDは、PUの動きベクトルと、隣接するPUに関連付けられた示された候補予測された動きベクトルとの間の差分を示す。ビデオ復号器30は、PUの動きベクトルを決定するために、示された候補予測された動きベクトルとMVDとを使用し得る。
上記のように、予測ユニット41は、CUの各PUについて候補予測された動きベクトルリストを生成し得る。候補予測された動きベクトルリストのうちの1つまたは複数は、1つまたは複数の元の候補予測された動きベクトルと、1つまたは複数の元の候補予測された動きベクトルから導出された1つまたは複数の追加の候補予測された動きベクトルとを含み得る。
予測ユニット41内のイントラ予測ユニット46は、空間圧縮を提供するために、復号される現在のブロックと同じピクチャまたはスライスにおける1つまたは複数の隣接するブロックに対して現在のビデオブロックに対するイントラ予測復号を実行し得る。したがって、動き推定ユニット42および動き補償ユニット44によって実行される(上記のような)インター予測の代替として、イントラ予測ユニット46は、現在のブロックに対してイントラ予測を実行し得る。具体的には、イントラ予測ユニット46は、現在のブロックを符号化するためのイントラ予測モードを決定し得る。いくつかの実現可能な実装形態では、イントラ予測ユニット46は、(例えば)別個の符号化トラバーサル中に現在のブロックを符号化するために、様々なイントラ予測モードを使用することができ、イントラ予測ユニット46(またはいくつかの実現可能な実装形態ではモード選択ユニット40)は、テストされたモードから適切なイントラ予測モードを選択し得る。
予測ユニット41が、インター予測またはイントラ予測によって現在のビデオブロックの予測ブロックを生成した後、ビデオ符号化器20は、残差ビデオブロックを取得するために、現在のビデオブロックから予測ブロックを差し引く。残差ブロックの残差ビデオデータは、1つまたは複数のTUに含まれ、変換処理ユニット52に適用され得る。変換処理ユニット52は、残差ビデオデータを残差変換係数に変換するために、変換、例えば離散コサイン変換(DCT)または概念的に類似した変換(例えば、離散サイン変換DST)を実行する。変換処理ユニット52は、残差ビデオデータをピクセルドメインデータから変換ドメイン(例えば、周波数ドメイン)データに変換し得る。
変換処理ユニット52は、取得された変換係数を量子化ユニット54に送信し得る。量子化ユニット54は、ビットレートをさらに減らすために、変換係数を量子化する。量子化処理は、係数の一部または全部に関連付けられているビットデプスを減らすことができる。量子化度は、量子化パラメータを調整することによって修正され得る。次に、いくつかの実現可能な実装形態では、量子化ユニット54は、量子化された変換係数を含む行列をスキャンし得る。あるいは、エントロピー符号化ユニット56がスキャンを行うこともできる。
量子化後、エントロピー符号化ユニット56は、量子化された変換係数に対してエントロピー符号化を実行し得る。例えば、エントロピー符号化ユニット56は、コンテキスト適応型可変長復号(CAVLC)またはコンテキスト適応型2値算術復号(CABAC)、シンタックスベースのコンテキスト適応型2値算術復号(SBAC)、確率区間分割エントロピー(PIPE)復号、または別のエントロピー符号化方法もしくは技術を実行し得る。エントロピー符号化ユニット56は、復号されている現在のビデオスライスの動きベクトルおよび別のシンタックス要素に対してエントロピー符号化をさらに実行し得る。エントロピー符号化ユニット56がエントロピー符号化を実行した後、符号化されたビットストリームは、ビデオ復号器30に送信されてもよいし、その後の送信またはビデオ復号器30による再探索のためにアーカイブされてもよい。
エントロピー符号化ユニット56は、本出願の技術によれば、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオ符号化器20は、送信されたビットストリームに、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、MPM、イントラ予測モードインデックステーブル、およびコンテキストごとに使用される修正されたイントラ予測モードインデックステーブルの指示と、を含み得る構成データを含み得る。
逆量子化ユニット58および逆変換ユニット60は、参照ピクチャの参照ブロックとして後に使用されるように、ピクセル領域の残差ブロックを再構築するために、逆量子化および逆変換をそれぞれ実行する。動き補償ユニット44は、参照ピクチャリストのうちの1つの参照ピクチャにおける残差ブロックと予測ブロックとを加算することによって、参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定のためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つ以上の補間フィルタを適用し得る。加算器62は、参照ブロックを生成するために、再構成された残差ブロックと動き補償ユニット44によって生成された動き補償予測ブロックとを加算し、参照ブロックは参照ピクチャメモリ64に記憶される。参照ブロックは、動き推定ユニット42および動き補償ユニット44によって、後続のビデオフレームまたはピクチャのブロックに対してインター予測を実行するための参照ブロックとして使用され得る。
図3は、本出願の一実施形態による、ビデオ復号器30の概略的なブロック図である。図3の実現可能な実装形態では、ビデオ復号器30は、エントロピー復号ユニット80と、予測ユニット81と、逆量子化ユニット86と、逆変換ユニット88と、加算器90と、参照ピクチャメモリ92とを備える。予測ユニット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の動き情報を決定し得る。
逆量子化ユニット86は、ビットストリームで提供され、エントロピー符号化ユニット80によって復号された量子化された変換係数に対して逆量子化(inverse quantization)(例えば、逆量子化(dequantization))を実行する。逆量子化プロセスは、ビデオスライスにおける各ビデオブロックについてビデオ符号化器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がAMVPモードでPUの動き情報を復号器にシグナリングするいくつかの実現可能な実装形態では、インター予測モジュール121は、PUの候補予測された動きベクトルリストを生成し得る。候補予測された動きベクトルリストは、1つまたは複数の元の候補予測された動きベクトルと、1つまたは複数の元の候補予測された動きベクトルから導出された1つまたは複数の追加の候補予測された動きベクトルとを含み得る。PUの候補予測された動きベクトルリストを生成した後、インター予測モジュール121は、候補予測された動きベクトルリストから候補予測された動きベクトルを選択し、PUの動きベクトルの差分(MVD)を生成し得る。PUのMVDは、選択された候補予測された動きベクトルによって示される動きベクトルと、IMEおよびFMEによりPUのために生成された動きベクトルとの間の差分を示し得る。これらの実現可能な実装形態では、インター予測モジュール121は、候補予測された動きベクトルリスト内の選択された候補予測された動きベクトルの位置を識別する候補予測された動きベクトルインデックスを出力し得る。インター予測モジュール121は、PUのMVDをさらに出力し得る。以下は、本出願の本実施形態における図6の高度動きベクトル予測(AMVP)モードの実現可能な実装形態を詳細に説明する。
PUの動き情報を生成するためにPUに対してIMEおよびFMEを実行することに加えて、インター予測モジュール121は、PUに対してとマージ(Merge)操作をさらに実行し得る。インター予測モジュール121がPUに対してマージ操作を実行すると、インター予測モジュール121は、PUの候補予測された動きベクトルリストを生成し得る。PUの候補予測された動きベクトルリストは、1つまたは複数の元の候補予測された動きベクトルと、1つまたは複数の元の候補予測された動きベクトルから導出された1つまたは複数の追加の候補予測された動きベクトルとを含み得る。候補予測された動きベクトルリスト内の元の候補予測された動きベクトルは、1つまたは複数の空間候補予測された動きベクトルおよび時間候補予測された動きベクトルを含み得る。空間候補予測された動きベクトルは、現在のピクチャの別のPUの動き情報を示し得る。時間候補予測された動きベクトルは、現在のピクチャとは異なるピクチャの対応するPUの動き情報に基づき得る。時間候補予測された動きベクトルは、時間動きベクトル予測(TMVP)と呼ばれることもある。
候補予測された動きベクトルリストを生成した後、インター予測モジュール121は、候補予測された動きベクトルリストから1つの候補予測された動きベクトルを選択し得る。次に、インター予測モジュール121は、PUの動き情報によって示される参照ブロックに基づいて、PUの予測ピクチャブロックを生成し得る。マージモードでは、PUの動き情報は、選択された候補予測された動きベクトルによって示される動き情報と同じであり得る。以下に説明される図5は、mergeモードの一例のフローチャートである。
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は、現在のCUのPUに対して、IME操作、FME操作、およびマージ操作をそれぞれ実行し得る。図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、およびマージモジュール184Nは、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は、本出願の一実施形態によるマージモードの一例のフローチャートである。ビデオ符号化器(例えば、ビデオ符号化器20)は、マージ操作200を実行し得る。別の実現可能な実装形態では、ビデオ符号化器は、マージ操作200とは異なるマージ操作を実行し得る。例えば、別の実現可能な実装形態では、ビデオ符号化器は、マージ操作を実行することができ、ビデオ符号化器は、マージ操作200のステップよりも多いまたは少ないステップ、またはマージ操作200のステップとは異なるステップを実行する。別の実現可能な実装形態では、ビデオ符号化器は、マージ操作200のステップを異なる順序でまたは並行して実行し得る。符号化器は、スキップ(skip)モードで符号化されたPUに対してマージ操作200をさらに実行し得る。
ビデオ符号化器がマージ操作200を開始した後、ビデオ符号化器は、現在のPUの候補予測された動きベクトルリストを生成し得る(202)。ビデオ符号化器は、様々な方式で、現在のPUの候補予測された動きベクトルリストを生成し得る。例えば、ビデオ符号化器は、図8から図12に関連して以下に説明される例示的な技術のうちの1つにしたがって、現在のPUの候補予測された動きベクトルリストを生成し得る。
上記のように、現在のPUの候補予測された動きベクトルリストは、時間候補予測された動きベクトルを含み得る。時間候補予測された動きベクトルは、対応する時間領域の同じ位置にある(co-located)PUの動き情報を示し得る。co-located PUは、現在のピクチャの代わりに、参照ピクチャのピクチャフレーム内の現在のPUと同じ位置に空間的に配置され得る。本出願では、対応する時間領域PUを含む参照ピクチャは、関連する参照ピクチャと呼ばれ得る。本出願では、関連する参照ピクチャの参照ピクチャインデックスは、関連する参照ピクチャインデックスと呼ばれ得る。上記のように、現在のピクチャは、1つまたは複数の参照ピクチャリスト(例えば、リスト0およびリスト1)に関連付けられ得る。参照ピクチャインデックスは、参照ピクチャリスト内の参照ピクチャの位置を示すことによって参照ピクチャを示し得る。いくつかの実現可能な実装形態では、現在のピクチャは、結合された参照ピクチャリストに関連付けられ得る。
いくつかのビデオ符号化器では、関連する参照ピクチャインデックスは、現在のPUに関連付けられた参照インデックスソース位置をカバーするPUの参照ピクチャインデックスである。これらのビデオ符号化器では、現在のPUに関連付けられた参照インデックスソース位置は、現在のPUの左側に隣接する、または現在のPUの上部に隣接する。本出願では、PUに関連付けられたピクチャブロックが特定の位置を含む場合、PUは特定の位置を「カバー」し得る。これらのビデオ符号化器では、参照インデックスソース位置が利用できない場合、ビデオ符号化器は参照ピクチャインデックス0を使用し得る。
しかしながら、一例では、現在のPUに関連付けられた参照インデックスソース位置は現在のCU内にある。この例では、現在のPUに関連付けられた参照インデックスソース位置をカバーするPUが、PUが現在のCUの上または左にある場合に、使用可能であると見なされ得る。この場合、ビデオ符号化器は、co-located PUを含む参照ピクチャを決定するために、現在のCUの別のPUの動き情報にアクセスする必要があり得る。したがって、これらのビデオ符号化器は、現在のPUの時間候補予測された動きベクトルを生成するために、現在のCUに属するPUの動き情報(例えば、参照ピクチャインデックス)を使用し得る。換言すれば、これらのビデオ符号化器は、時間候補予測された動きベクトルを生成するために、現在のCUに属するPUの動き情報を使用し得る。したがって、ビデオ符号化器は、現在のPUおよび現在のPUに関連付けられた参照インデックスソース位置をカバーするPUの候補予測された動きベクトルリストを並行して生成できない場合がある。
本出願の技術によれば、ビデオ符号化器は、他のPUの参照ピクチャインデックスを参照せずに、関連する参照ピクチャインデックスを明示的に設定し得る。このようにして、ビデオ符号化器は、現在のPUおよび現在のCUの別のPUの候補予測された動きベクトルリストを並行して生成し得る。ビデオ符号化器は関連する参照ピクチャインデックスを明示的に設定するため、関連する参照ピクチャインデックスは、現在のCUの他のPUの動き情報に基づいていない。ビデオ符号化器が関連する参照ピクチャインデックスを明示的に設定するいくつかの実現可能な実装形態では、ビデオ符号化器は、関連する参照ピクチャインデックスを固定の事前設定された参照ピクチャインデックス(例えば、0)に常に設定し得る。このようにして、ビデオ符号化器は、事前設定された参照ピクチャインデックスによって示される参照フレーム内のco-located PUの動き情報に基づいて時間候補予測された動きベクトルを生成することができ、時間候補予測された動きベクトルが現在のCUの候補予測された動きベクトルリストに含まれ得る。
ビデオ符号化器が関連する参照ピクチャインデックスを明示的に設定する実現可能な実装形態では、ビデオ符号化器は、シンタックス構造(例えば、ピクチャヘッダ、スライスヘッダ、APS、または別のシンタックス構造)で関連する参照ピクチャインデックスを明示的にシグナリングし得る。この実現可能な実装形態では、ビデオ符号化器は、各LCU(すなわち、CTU)、CU、PU、TU、または別のタイプのサブブロックの関連する参照ピクチャインデックスを復号器にシグナリングし得る。例えば、ビデオ符号化器は、CUの各PUについて関連する参照ピクチャインデックスが「1」に等しいことをシグナリングし得る。
いくつかの実現可能な実装形態では、関連する参照ピクチャインデックスは、明示的にではなく黙示的に設定され得る。これらの実現可能な実装形態では、ビデオ符号化器は、現在のCUの外側の位置が現在のPUに厳密に隣接していなくても、これら現在のCUの外側の位置をカバーするPUの参照ピクチャインデックスによって示される参照ピクチャのPUの動き情報を使用することによって、現在のCUのPUの候補予測された動きベクトルリスト内の各時間候補予測された動きベクトルを生成し得る。
現在のPUの候補予測された動きベクトルリストを生成した後、ビデオ符号化器は、候補予測された動きベクトルリスト内の候補予測された動きベクトルに関連付けられた予測ピクチャブロックを生成し得る(204)。ビデオ符号化器は、示された候補予測された動きベクトルの動き情報に基づいて現在のPUの動き情報を決定し、次に候補予測された動きベクトルに関連付けられた予測ピクチャブロックを生成するために、現在のPUの動き情報によって示された1つまたは複数の参照ブロックに基づいて予測ピクチャブロックを生成し得る。次に、ビデオ符号化器は、候補予測された動きベクトルリストから1つの候補予測された動きベクトルを選択し得る(206)。ビデオ符号化器は、様々な方式で、候補予測された動きベクトルを選択し得る。例えば、ビデオ符号化器は、候補予測された動きベクトルに関連付けられた各予測ピクチャブロックのレート歪みコストを分析することによって、1つの候補予測された動きベクトルを選択し得る。
候補予測された動きベクトルを選択した後、ビデオ符号化器は、候補予測された動きベクトルインデックスを出力し得る(208)。候補予測された動きベクトルインデックスは、候補予測された動きベクトルリスト内の選択された候補予測された動きベクトルの位置を示し得る。いくつかの実現可能な実装形態では、候補予測された動きベクトルインデックスは「merge_idx」として表され得る。
図6は、本出願の一実施形態による、高度動きベクトル予測(AMVP)モードの一例のフローチャートである。ビデオ符号化器(例えば、ビデオ符号化器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の候補予測された動きベクトルリストを生成し得る。例えば、ビデオ符号化器は、図8から図12に関連して以下に説明される実現可能な実装形態のうちの1つまたは複数にしたがって、現在のPUの候補予測された動きベクトルリストを生成し得る。いくつかの実現可能な実装形態では、ビデオ符号化器がAMVP操作210で候補予測された動きベクトルリストを生成する場合、候補予測された動きベクトルリストは、2つの候補予測された動きベクトルに制限され得る。対照的に、ビデオ符号化器がマージ操作で候補予測された動きベクトルリストを生成する場合、候補予測された動きベクトルリストは、より多くの候補予測された動きベクトル(例えば、5つの候補予測された動きベクトル)を含み得る。
現在のPUの候補予測された動きベクトルリストを生成した後、ビデオ符号化器は、候補予測された動きベクトルリスト内の各候補予測された動きベクトルの1つまたは複数の動きベクトルの差分(MVD)を生成し得る(214)。ビデオ符号化器は、候補予測された動きベクトルの動きベクトルの差分を生成するために、候補予測された動きベクトルによって示される動きベクトルと現在のPUの対応する動きベクトルとの間の差分を決定し得る。
現在のPUが一方向に予測される場合、ビデオ符号化器は、各候補予測された動きベクトルについて単一のMVDを生成し得る。現在のPUが双方向に予測される場合、ビデオ符号化器は、各候補予測された動きベクトルについて2つのMVDを生成し得る。第1のMVDは、候補予測された動きベクトルによって示される動きベクトルと、現在のPUのリスト0の動きベクトルとの間の差分を示し得る。第2のMVDは、候補予測された動きベクトルによって示される動きベクトルと、現在の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をさらに出力し得る。
図7は、本出願の一実施形態による、ビデオ復号器(例えば、ビデオ復号器30)によって実行される動き補償の一例のフローチャートである。
ビデオ復号器が動き補償操作220を実行するとき、ビデオ復号器は、現在のPUの選択された候補予測された動きベクトルの指示を受信し得る(222)。例えば、ビデオ復号器は、現在のPUの候補予測された動きベクトルリスト内の選択された候補予測された動きベクトルの位置を示す候補予測された動きベクトルインデックスを受信し得る。
現在のPUの動き情報がAMVPモードで符号化され、現在のPUが双方向に予測される場合、ビデオ復号器は、第1の候補予測された動きベクトルインデックスおよび第2の候補予測された動きベクトルインデックスを受信し得る。第1の候補予測された動きベクトルインデックスは、候補予測された動きベクトルリスト内の現在のPUのリスト0の動きベクトルの選択された候補予測された動きベクトルの位置を示す。第2の候補予測された動きベクトルインデックスは、候補予測された動きベクトルリスト内の現在のPUのリスト1の動きベクトルの選択された候補予測された動きベクトルの位置を示す。いくつかの実現可能な実装形態では、2つの候補予測された動きベクトルインデックスを識別するために、単一のシンタックス要素が使用され得る。
加えて、ビデオ復号器は、現在のPUの候補予測された動きベクトルリストを生成し得る(224)。ビデオ復号器は、様々な方式で、現在のPUの候補予測された動きベクトルリストを生成し得る。例えば、ビデオ復号器は、図8から図12に関連して以下に説明される技術を使用することにより、現在のPUの候補予測された動きベクトルリストを生成し得る。ビデオ復号器が候補予測された動きベクトルリストの時間候補予測された動きベクトルを生成するとき、ビデオ復号器は、図5に関連して上で選択されたように、co-located PUを含む参照ピクチャを識別する参照ピクチャインデックスを明示的または黙示的に設定し得る。
現在のPUの候補予測された動きベクトルリストを生成した後、ビデオ復号器は、現在のPUの候補予測された動きベクトルリスト内の1つまたは複数の選択された候補予測された動きベクトルによって示される動き情報に基づいて、現在のPUの動き情報を決定し得る(225)。例えば、現在のPUの動き情報がマージモードで符号化される場合、現在のPUの動き情報は、選択された候補予測された動きベクトルによって示される動き情報と同じであり得る。現在のPUの動き情報がAMVPモードで符号化される場合、ビデオ復号器は、1つまたは複数の選択された候補予測された動きベクトルによって示される1つまたは複数の動きベクトルおよびビットストリームで示された1つまたは複数のMVDを使用することによって、現在のPUの1つまたは複数の動きベクトルを再構築し得る。現在のPUの参照ピクチャインデックスおよび予測方向識別子は、1つまたは複数の選択された候補予測された動きベクトルの参照ピクチャインデックスおよび予測方向識別子と同じであり得る。現在のPUの動き情報を決定した後、ビデオ復号器は、現在のPUの動き情報によって示される1つまたは複数の参照ブロックに基づいて、現在のPUの予測ピクチャブロックを生成し得る(226)。
図8は、本出願の一実施形態による、符号化ユニット(CU)および符号化ユニットに関連付けられた隣接位置ピクチャブロックの一例の概略図である。図8は、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ブロックが配置されているピクチャブロック、またはco-locatedブロックの空間的に隣接するピクチャブロックも含む。
図9は、本出願の一実施形態による、候補予測された動きベクトルリストを構築する一例のフローチャートである。図9の技術は、5つの候補予測された動きベクトルを含むリストに基づいて説明されているが、本明細書で説明される技術は、別のサイズのリストと共に代替的に使用されてもよい。5つの候補予測された動きベクトルは、インデックス(例えば、0から4)をそれぞれ有し得る。図9の技術は、一般的なビデオ復号器に基づいて説明されている。一般的なビデオ復号器は、例えば、ビデオ符号化器(例えば、ビデオ符号化器20)またはビデオ復号器(例えば、ビデオ復号器30)であり得る。
図9の実装形態にしたがって候補予測された動きベクトルリストを再構築するために、ビデオ復号器は、4つの空間候補予測された動きベクトルを最初に検討する(902)。4つの空間候補予測された動きベクトルは、候補予測された動きベクトル位置252A、252B、252C、および252Dを含み得る。4つの空間候補予測された動きベクトルは、現在のCU(例えば、CU250)と同じピクチャに配置されている4つのPUの動き情報に対応し得る。ビデオ復号器は、リスト内の4つの空間候補予測された動きベクトルを指定された順序で検討し得る。例えば、候補予測された動きベクトル位置252Aが最初に検討され得る。候補予測された動きベクトル位置252Aが利用可能である場合、候補予測された動きベクトル位置252Aがインデックス0に割り当てられ得る。候補予測された動きベクトル位置252Aが利用できない場合、ビデオ復号器は、候補予測された動きベクトル位置252Aを候補予測された動きベクトルリストに追加しない場合がある。候補予測された動きベクトル位置は、様々な理由で利用できない場合がある。例えば、候補予測された動きベクトル位置が現在のピクチャ内に配置されていない場合、候補予測された動きベクトル位置は利用できない場合がある。別の実現可能な実装形態では、候補予測された動きベクトル位置がイントラ予測を経る場合、候補予測された動きベクトル位置は利用できない場合がある。別の実現可能な実装形態では、候補予測された動きベクトル位置が現在のCUのスライスとは異なるスライスに配置されている場合、候補予測された動きベクトル位置は利用できない場合がある。
候補予測された動きベクトル位置252Aを検討した後、ビデオ復号器は、候補予測された動きベクトル位置252Bを検討し得る。候補予測された動きベクトル位置252Bが利用可能であり、候補予測された動きベクトル位置252Aとは異なる場合、ビデオ復号器は、候補予測された動きベクトル位置252Bを候補予測された動きベクトルリストに追加し得る。この特定の文脈において、「同じ」または「異なる」という用語は、候補予測された動きベクトル位置に関連付けられた動き情報が同じまたは異なることを意味する。したがって、2つの候補予測された動きベクトル位置が同じ動き情報を有する場合、2つの候補予測された動きベクトル位置は同じであると見なされる、または2つの候補予測された動きベクトル位置が異なる動き情報を有する場合、2つの候補予測された動きベクトル位置は異なると見なされる。候補予測された動きベクトル位置252Aが利用できない場合、ビデオ復号器は、候補予測された動きベクトル位置252Bをインデックス0に割り当てることができる。候補予測された動きベクトル位置252Aが利用可能である場合、ビデオ復号器は、候補予測された動きベクトル位置252をインデックス1に割り当てることができる。候補予測された動きベクトル位置252Bが利用できないか、候補予測された動きベクトル位置252Aと同じである場合、ビデオ復号器は、候補予測された動きベクトル位置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が候補予測された動きベクトルリストに最初に追加され、次に重複する候補予測された動きベクトル位置が候補予測された動きベクトルリストから除去され得る。
ビデオ復号器が最初の4つの空間候補予測された動きベクトルを検討した後、候補予測された動きベクトルリストは4つの空間候補予測された動きベクトルを含み得る、またはリストは4つ未満の空間候補予測された動きベクトルを含み得る。リストが4つの空間候補予測された動きベクトルを含む場合(904、はい)、ビデオ復号器は、時間候補予測された動きベクトルを検討する(906)。時間候補予測された動きベクトルは、現在のピクチャとは異なるピクチャのco-located PUの動き情報に対応し得る。時間候補予測された動きベクトルが利用可能であり、最初の4つの空間候補予測された動きベクトルとは異なる場合、ビデオ復号器は、時間候補予測された動きベクトルをインデックス4に割り当てる。時間候補予測された動きベクトルが利用できないか、最初の4つの空間候補予測された動きベクトルのうちの1つと同じである場合、ビデオ復号器は、時間候補予測された動きベクトルを候補予測された動きベクトルリストに追加しない。したがって、ビデオ復号器が時間候補予測された動きベクトルを検討した後(906)、候補予測された動きベクトルリストは、5つの候補予測された動きベクトル(902において検討された最初の4つの空間候補予測された動きベクトル、および906において検討された時間候補予測された動きベクトル)を含み得る、または4つの候補予測された動きベクトル(902において検討された最初の4つの空間候補予測された動きベクトル)を含み得る。候補予測された動きベクトルリストが5つの候補予測された動きベクトルを含む場合(908、はい)、ビデオ復号器はリストの構築を完了する。
候補予測された動きベクトルリストが4つの候補予測された動きベクトルを含む場合(908、いいえ)、ビデオ復号器は、第5の空間候補予測された動きベクトルを検討し得る(910)。第5の空間候補予測された動きベクトルは、(例えば)候補予測された動きベクトル位置252Eに対応し得る。位置252Eにおける候補予測された動きベクトルが利用可能であり、位置252A、252B、252C、および252Dにおける候補予測された動きベクトルとは異なる場合、ビデオ復号器は、第5の空間候補予測された動きベクトルを候補予測された動きベクトルリストに追加し、第5の空間候補予測された動きベクトルをインデックス4に割り当てることができる。位置252Eにおける候補予測された動きベクトルが利用できない場合、または候補予測された動きベクトル位置252A、252B、252C、および252Dにおける候補予測された動きベクトルと同じである場合、ビデオ復号器は、位置252Eにおける候補予測された動きベクトルを候補予測された動きベクトルリストに追加しない場合がある。したがって、第5の空間候補予測された動きベクトルが検討された後(910)、リストは、5つの候補予測された動きベクトル(902において検討された最初の4つの空間候補予測された動きベクトルおよび910において検討された第5の空間候補予測された動きベクトル)を含み得る、または4つの候補予測された動きベクトル(902において検討された最初の4つの空間候補予測された動きベクトル)を含み得る。
候補予測された動きベクトルリストが5つの候補予測された動きベクトルを含む場合(912、はい)、ビデオ復号器は、候補予測された動きベクトルリストの生成を完了する。候補予測された動きベクトルリストが4つの候補予測された動きベクトルを含む場合(912、いいえ)、ビデオ復号器は、リストが5つの候補予測された動きベクトルを含むまで(916、はい)、人工的に生成された候補予測された動きベクトルを追加する(914)。
ビデオ復号器が最初の4つの空間候補予測された動きベクトルを検討した後、リストが4つ未満の空間候補予測された動きベクトルを含む場合(904、いいえ)、ビデオ復号器は第5の空間候補予測された動きベクトルを検討し得る(918)。第5の空間候補予測された動きベクトルは、(例えば)候補予測された動きベクトル位置252Eに対応し得る。位置252Eにおける候補予測された動きベクトルが利用可能であり、候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルとは異なる場合、ビデオ復号器は、第5の空間候補予測された動きベクトルを候補予測された動きベクトルリストに追加し、第5の空間候補予測された動きベクトルを次に利用可能なインデックスに割り当てることができる。位置252Eにおける候補予測された動きベクトルが利用できない場合、または候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルのうちの1つと同じである場合、ビデオ復号器は、位置252Eにおける候補予測された動きベクトルを候補予測された動きベクトルリストに追加しない場合がある。次に、ビデオ復号器は、時間候補予測された動きベクトルを検討し得る(920)。時間候補予測された動きベクトルが利用可能であり、候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルとは異なる場合、ビデオ復号器は、時間候補予測された動きベクトルを候補予測された動きベクトルリストに追加し、時間候補予測された動きベクトルを次に利用可能なインデックスに割り当てることができる。時間候補予測された動きベクトルが利用できない場合、または候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルのうちの1つと同じである場合、ビデオ復号器は、時間候補予測された動きベクトルを候補予測された動きベクトルリストに追加しない場合がある。
(918において)第5の空間候補予測された動きベクトルおよび(920において)時間候補予測された動きベクトルが検討された後、候補予測された動きベクトルリストが5つの候補予測された動きベクトルを含む場合(922、はい)、ビデオ復号器は、候補予測された動きベクトルリストの生成を完了する。候補予測された動きベクトルリストが5つ未満の候補予測された動きベクトルを含む場合(922、いいえ)、ビデオ復号器は、リストが5つの候補予測された動きベクトルを含むまで(916、はい)、人工的に生成された候補予測された動きベクトルを追加する(914)。
本出願の技術によれば、追加のマージ候補予測された動きベクトルが、マージ候補予測された動きベクトルリストのサイズが固定され、マージ候補予測された動きベクトルの指定された数(例えば、上記の図9の実現可能な実装形態では5つ)に等しくなるように、空間候補予測された動きベクトルおよび時間候補予測された動きベクトルの後に、人工的に生成され得る。追加のマージ候補予測された動きベクトルは、結合された双予測マージ候補予測された動きベクトル(候補予測された動きベクトル1)、スケーリングされた双予測マージ候補予測された動きベクトル(候補予測された動きベクトル2)、およびゼロベクトルmerge/AMVP候補予測された動きベクトル(候補予測された動きベクトル3)の例を含み得る。
図10は、本出願の一実施形態による、結合された候補動きベクトルをマージモード候補予測された動きベクトルリストに追加する一例の概略図である。結合された双予測マージ候補予測された動きベクトルは、元のマージ候補予測された動きベクトルを結合することによって生成され得る。具体的には、2つの元の候補予測された動きベクトル(mvL0およびrefIdxL0またはmvL1およびrefIdxL1を有する)が、双予測マージ候補予測された動きベクトルを生成するために使用され得る。図10では、2つの候補予測された動きベクトルが、元のマージ候補予測された動きベクトルリストに含まれている。一方の候補予測された動きベクトルの予測タイプは、リスト0を使用することによる単方向予測であり、他方の候補予測された動きベクトルの予測タイプは、リスト1を使用することによる単方向予測である。この実現可能な実装形態では、mvL0_Aおよびref0はリスト0から取得され、mvL1_Bおよびref0はリスト1から取得される。次に、双予測マージ候補予測された動きベクトル(リスト0においてmvL0_Aおよびref0を有し、リスト1においてmvL1_Bおよびref0を有する)が生成され得、双予測マージ候補予測された動きベクトルが、候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルとは異なるか否かがチェックされる。双予測マージ候補予測された動きベクトルが既存の候補予測された動きベクトルとは異なる場合、ビデオ復号器は、双予測マージ候補予測された動きベクトルを候補予測された動きベクトルリストに追加し得る。
図11は、本出願の一実施形態による、スケーリングされた候補動きベクトルをマージモード候補予測された動きベクトルリストに追加する一例の概略図である。スケーリングされた双予測マージ候補予測された動きベクトルは、元のマージ候補予測された動きベクトルをスケーリングすることによって生成され得る。具体的には、1つの元の候補予測された動きベクトル(mvLXおよびrefIdxLXを有する)が、双予測マージ候補予測された動きベクトルを生成するために使用され得る。図11の実現可能な実装形態では、2つの候補予測された動きベクトルが、元のマージ候補予測された動きベクトルリストに含まれている。一方の候補予測された動きベクトルの予測タイプは、リスト0を使用することによる単方向予測であり、他方の候補予測された動きベクトルの予測タイプは、リスト1を使用することによる単方向予測である。この実現可能な実装形態では、mvL0_Aおよびref0がリスト0から取得され、ref0がリスト1に複製されて、参照インデックスref0’として示され得る。次に、mvL0’_Aは、mvL0_Aをref0およびref0’でスケーリングすることによって計算され得る。スケーリングは、POC(Picture Order Count)距離に依存し得る。次に、双予測マージ候補予測された動きベクトル(リスト0においてmvL0_Aおよびref0を有し、リスト1においてmvL0’_Aおよびref0’を有する)が生成され得、双予測マージ候補予測された動きベクトルが重複しているか否かがチェックされる。双予測マージ候補予測された動きベクトルが重複していない場合、マージ候補予測された動きベクトルリストに追加され得る。
図12は、本出願の一実施形態による、ゼロ動きベクトルをマージモード候補予測された動きベクトルリストに追加する一例の概略図である。ゼロベクトルマージ候補予測された動きベクトルは、ゼロベクトルと参照され得る参照インデックスとを結合することによって生成され得る。ゼロベクトルマージ候補予測された動きベクトルが重複していない場合、マージ候補予測された動きベクトルリストに追加され得る。生成された各マージ候補予測された動きベクトルの動き情報は、リスト内の以前の候補予測された動きベクトルの動き情報と比較され得る。
実現可能な実装形態では、新しく生成された候補予測された動きベクトルが、候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルとは異なる場合、生成された候補予測された動きベクトルがマージ候補予測された動きベクトルリストに追加される。候補予測された動きベクトルが候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルとは異なるか否かを決定するプロセスは、枝刈り(pruning)と場合により呼ばれる。枝刈りにより、新しく生成された各候補予測された動きベクトルは、リスト内の既存の候補予測された動きベクトルと比較され得る。いくつかの実現可能な実装形態では、枝刈り操作は、1つまたは複数の新しい候補予測された動きベクトルを、候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルと比較することと、候補予測された動きベクトルリスト内の既存の候補予測された動きベクトルと同じである新しい候補予測された動きベクトルの追加をスキップすることとを含み得る。いくつかの他の実現可能な実装形態では、枝刈り操作は、1つまたは複数の新しい候補予測された動きベクトルを候補予測された動きベクトルリストに追加することと、次に、重複する候補予測された動きベクトルをリストから除去することとを含み得る。
本出願の実現可能な実装形態では、インター予測の間、処理されるピクチャブロックの動き情報を予測するための方法が、処理されるピクチャブロックが配置されているピクチャにおいて、動きベクトルが、決定される少なくとも1つのピクチャブロックの動き情報を取得するステップであって、動きベクトルが決定される少なくとも1つのピクチャブロックが、処理されるピクチャブロックに隣接しておらず、動きベクトルが決定されるピクチャブロックを含む、ステップと、第1の識別情報を取得するステップであって、第1の識別情報が、動きベクトルが決定される少なくとも1つのピクチャブロックの動き情報におけるターゲット動き情報を決定するために使用される、ステップと、ターゲット動き情報に基づいて、処理されるピクチャブロックの動き情報を予測するステップとを含む。
図13は、本出願の一実施形態による、ビデオ符号化において動きベクトルを更新する一例のフローチャートである。処理されるブロックは、符号化されるブロックである。
S1301:処理されるブロックの予測された動きベクトルに基づいて、処理されるブロックの初期動きベクトルを取得する。
実現可能な実装形態では、例えば、mergeモードにおいて、処理されるブロックの予測された動きベクトルが、処理されるブロックの初期動きベクトルとして使用される。
別の実現可能な実装形態では、例えば、AMVPモードにおいて、処理されるブロックの初期動きベクトルを取得するために、処理されるブロックの予測された動きベクトルと処理されるブロックの動きベクトルの差分とが加算される。
処理されるブロックの予測された動きベクトルは、本出願の実施形態において図9から図12に示される方法、またはH.265規格またはJEM参照モードにおける予測された動きベクトルを取得するための既存の方法のいずれか1つにしたがって取得され得る。このことは、限定されない。動きベクトルの差分は、処理されるブロックを参照として使用し、処理されるブロックの予測された動きベクトルに基づいて決定された探索範囲内で動き推定を実行し、動き推定後に取得された、処理されるブロックの動きベクトルと、処理されるブロックの予測された動きベクトルとの間の差分を計算することによって取得され得る。
双方向予測の間、このステップは、処理されるブロックの前方向予測された動きベクトルに基づいて処理されるブロックの前方向初期動きベクトルを取得するステップと、処理されるブロックの後方向予測された動きベクトルに基づいて処理されるブロックの後方向初期動きベクトルを取得するステップとを特に含む。
S1302:初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとに基づいて、処理されるブロックの予測ブロックを取得する。具体的には、
S13021:処理されるブロックのものであり、処理されるブロックの参照フレームインデックスによって示される参照フレームから、処理されるブロックの初期動きベクトルによって示されるピクチャブロックを取得し、取得されたピクチャブロックを処理されるブロックの一時的な予測ブロックとして使用する。
S13022:1つまたは複数の実際の動きベクトルを取得するために、処理されるブロックの初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとを加算し、各実際の動きベクトルが探索位置を示す。
S13023:1つまたは複数の実際の動きベクトルによって示される探索位置において1つまたは複数の候補予測ブロックを取得し、各探索位置が1つの候補予測ブロックに対応する。
S13024:1つまたは複数の候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックを、処理されるブロックの予測ブロックとして選択する。
ピクセル差分は、複数の方式で計算され得ることを理解されたい。例えば、候補予測ブロックと一時的な予測ブロックとのピクセル行列間の絶対誤差の和が計算されてもよいし、ピクセル行列間の平均二乗誤差が計算されてもよいし、ピクセル行列間の相関が計算されてもよい。このことは、限定されない。
双方向予測の間、このステップは、処理されるブロックのものであり、処理されるブロックの前方向参照フレームインデックスによって示される前方向参照フレームから、処理されるブロックの前方向初期動きベクトルによって示される第1のピクチャブロックを取得し、処理されるブロックのものであり、処理されるブロックの後方向参照フレームインデックスによって示される後方向参照フレームから、処理されるブロックの後方向初期動きベクトルによって示される第2のピクチャブロックを取得し、処理されるブロックの一時的な予測ブロックを取得するために、第1のピクチャブロックと第2のピクチャブロックとに重み付けするステップと、1つまたは複数の前方向の実際の動きベクトルを取得するために、処理されるブロックの前方向初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとを加算し、1つまたは複数の後方向の実際の動きベクトルを取得するために、処理されるブロックの後方向初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとを加算するステップと、1つまたは複数の前方向の実際の動きベクトルによって示される探索位置において1つまたは複数の前方向候補予測ブロックを取得し、1つまたは複数の後方向の実際の動きベクトルによって示される探索位置において1つまたは複数の後方向候補予測ブロックを取得するステップと、1つまたは複数の前方向候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックを、処理されるブロックの前方向予測ブロックとして選択し、1つまたは後方向候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックを、処理されるブロックの後方向予測ブロックとして選択し、処理されるブロックの予測ブロックを取得するために、前方向予測ブロックと後方向予測ブロックとに重み付けするステップとを特に含む。
場合により、実現可能な実装形態では、ステップS13022の後、本方法は、以下のステップをさらに含む。
S13025:実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度よりも高い場合、処理された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度に等しくなるように、実際の動きベクトルの動きベクトル解像度を丸める。事前設定されたピクセル精度は、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、または1/8ピクセル精度であり、このことは限定されない。
動きベクトル解像度は、動き推定または動き補償プロセスにおいて動きベクトルによって区別され得るピクセル精度であることを理解されたい。丸めは、ピクセル精度のタイプに基づいて、四捨五入、切り上げ、切り下げなどを含み得る。このことは、限定されない。
例えば、丸めは次の操作を含み得る。
処理される動きベクトルの水平成分または垂直成分が、整数部分a、小数部分b、および符号ビットに分解される。当然のことながら、aは非負の整数であり、bは0より大きく1より小さい分数であり、符号ビットは正または負である。
事前設定されたピクセル精度はNピクセル精度であると仮定され得、Nは0より大きく1以下であり、cはbをNで除した値に等しい。
四捨五入規則が使用される場合、cの小数部分が四捨五入され、切り上げ規則が使用される場合、cの整数部分が1増加し、小数部分が破棄され、切り捨て規則が使用される場合、cの小数部分が破棄される。処理後に得られるcはdであると仮定され得る。
処理された動きベクトル成分の絶対値は、dにNを乗じ、次にaを加えることによって得られ、動きベクトル成分の正または負の符号は変更されない。
例えば、実際の動きベクトルが(1.25,1)の場合、事前設定されたピクセル精度が整数ピクセル精度の場合、実際の動きベクトルは丸められて(1,1)が得られる。実際の動きベクトルが(-1.7,-1)の場合、事前設定されたピクセル精度が1/4ピクセル精度の場合、実際の動きベクトルは丸められて(-1.75,-1)が得られる。
場合により、別の実現可能な実装形態では、ステップS13024が、1つまたは複数の候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックに対応する実際の動きベクトルを選択するステップと、選択された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度よりも高い場合、処理された選択された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度に等しくなるように、選択された実際の動きベクトルの動きベクトル解像度を丸めるステップと、処理された選択された実際の動きベクトルによって示される位置に対応する予測ブロックが、処理されるブロックの予測ブロックであると決定するステップとを含む。
同様に、事前設定されたピクセル精度は、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、または1/8ピクセル精度である。このことは、限定されない。丸めについては、上述の実現可能な実装形態の例を参照されたい。詳細は繰り返し説明されない。
より高いピクセル精度は、一般に、動きベクトル解像度を事前設定されたピクセル精度に等しくするために、動き推定または動き補償プロセスの探索領域においてより複雑なピクセル補間(interpolation)が実行される必要があることを意味することを理解されたい。このことは、複雑さを軽減し得る。
図14は、本出願の一実施形態による、ビデオ復号において動きベクトルを更新する一例のフローチャートである。処理されるブロックは、復号されるブロックである。
S1401:処理されるブロックの予測された動きベクトルに基づいて、処理されるブロックの初期動きベクトルを取得する。
実現可能な実装形態では、例えば、mergeモードにおいて、処理されるブロックの予測された動きベクトルが、処理されるブロックの初期動きベクトルとして使用される。
別の実現可能な実装形態では、例えば、AMVPモードにおいて、処理されるブロックの初期動きベクトルを取得するために、処理されるブロックの予測された動きベクトルと処理されるブロックの動きベクトルの差分とが加算される。
処理されるブロックの予測された動きベクトルは、本出願の実施形態において図9から図12に示される方法、またはH.265規格またはJEM参照モードにおける予測された動きベクトルを取得するための既存の方法のいずれか1つにしたがって取得され得る。このことは、限定されない。動きベクトルの差分は、ビットストリームを解析することにより取得され得る。
双方向予測の間、このステップは、処理されるブロックの前方向予測された動きベクトルに基づいて処理されるブロックの前方向初期動きベクトルを取得するステップと、処理されるブロックの後方向予測された動きベクトルに基づいて処理されるブロックの後方向初期動きベクトルを取得するステップとを特に含む。
S1402:初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとに基づいて、処理されるブロックの予測ブロックを取得する。具体的には、
S14021:処理されるブロックのものであり、処理されるブロックの参照フレームインデックスによって示される参照フレームから、処理されるブロックの初期動きベクトルによって示されるピクチャブロックを取得し、取得されたピクチャブロックを、処理されるブロックの一時的な予測ブロックとして使用する。
S14022:1つまたは複数の実際の動きベクトルを取得するために、処理されるブロックの初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとを加算し、各実際の動きベクトルが探索位置を示す。
S14023:1つまたは複数の実際の動きベクトルによって示される探索位置において1つまたは複数の候補予測ブロックを取得し、各探索位置が1つの候補予測ブロックに対応する。
S14024:1つまたは複数の候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックを、処理されるブロックの予測ブロックとして選択する。
ピクセル差分は、複数の方式で計算され得ることを理解されたい。例えば、候補予測ブロックと一時的な予測ブロックとのピクセル行列間の絶対誤差の和が計算されてもよいし、ピクセル行列間の平均二乗誤差が計算されてもよいし、ピクセル行列間の相関が計算されてもよい。このことは、限定されない。
双方向予測の間、このステップは、処理されるブロックのものであり、処理されるブロックの前方向参照フレームインデックスによって示される前方向参照フレームから、処理されるブロックの前方向初期動きベクトルによって示される第1のピクチャブロックを取得し、処理されるブロックのものであり、処理されるブロックの後方向参照フレームインデックスによって示される後方向参照フレームから、処理されるブロックの後方向初期動きベクトルによって示される第2のピクチャブロックを取得し、処理されるブロックの一時的な予測ブロックを取得するために、第1のピクチャブロックと第2のピクチャブロックとに重み付けするステップと、1つまたは複数の前方向の実際の動きベクトルを取得するために、処理されるブロックの前方向初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとを加算し、1つまたは複数の後方向の実際の動きベクトルを取得するために、処理されるブロックの後方向初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとを加算するステップと、1つまたは複数の前方向の実際の動きベクトルによって示される探索位置において1つまたは複数の前方向候補予測ブロックを取得し、1つまたは複数の後方向の実際の動きベクトルによって示される探索位置において1つまたは複数の後方向候補予測ブロックを取得するステップと、1つまたは複数の前方向候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックを、処理されるブロックの前方向予測ブロックとして選択し、1つまたは後方向候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックを、処理されるブロックの後方向予測ブロックとして選択し、処理されるブロックの予測ブロックを取得するために、前方向予測ブロックと後方向予測ブロックとに重み付けするステップとを特に含む。
場合により、実現可能な実装形態では、ステップS14022の後、本方法は、以下のステップをさらに含む。
S14025:実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度よりも高い場合、処理された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度に等しくなるように、実際の動きベクトルの動きベクトル解像度を丸める。事前設定されたピクセル精度は、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、または1/8ピクセル精度であり、このことは限定されない。
場合により、別の実現可能な実装形態では、ステップS14024が、1つまたは複数の候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックに対応する実際の動きベクトルを選択するステップと、選択された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度よりも高い場合、処理された選択された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度に等しくなるように、選択された実際の動きベクトルの動きベクトル解像度を丸めるステップと、処理された選択された実際の動きベクトルによって示される位置に対応する予測ブロックが、処理されるブロックの予測ブロックであると決定するステップとを含む。
同様に、事前設定されたピクセル精度は、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、または1/8ピクセル精度である。このことは、限定されない。丸めについては、上述の実現可能な実装形態の例を参照されたい。詳細は繰り返し説明されない。
いくつかの特定の実施形態を使用することによって、以下は、動きベクトルを更新する実装形態を詳細に説明する。図13の符号化方法および図14の復号方法に記載されているように、動きベクトルの更新は、符号化器と復号器上とで一貫性を保つことを理解されたい。したがって、以下の実施形態は、符号化器または復号器からのみ説明される。符号化器から説明が提供される場合、復号器での実装形態は符号化器での実装形態と一貫性を保ち、復号器から説明が提供される場合、符号化器での実装形態は復号器での実装形態と一貫性を保つことを理解されたい。
実施形態1
図15に示されるように、現在の復号ブロックは第1の復号ブロックであり、現在の復号ブロックの予測動き情報が取得される。現在の復号ブロックの前方向動きベクトル予測子および後方向動きベクトル予測子はそれぞれ(-10,4)および(5,6)であり、現在の復号ブロックが配置されているピクチャのPOCは4であり、参照ピクチャのものであり、参照ピクチャのインデックス値によって示される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が参照として使用される。各動き探索で取得された対応する新しい前方向および後方向の復号予測ブロックが、DPB1との差が最小である新しい復号予測ブロックを取得するために、第1の復号予測ブロックDPB1と比較され、新しい復号予測ブロックに対応する前方向および後方向動きベクトル予測子が、ターゲット動きベクトル予測子として使用され、それぞれ(-11,4)および(6,6)であると仮定される。
ターゲット動きベクトル予測子が(-11,4)および(6,6)に更新され、ターゲット動きベクトル予測子に基づいて第1の復号ブロックに対して前方向予測および後方向予測が実行され、取得された新しい前方向および後方向復号予測ブロックの加重和をとることによって、ターゲット復号予測ブロックが取得され、DPB2になると仮定され、現在の復号ブロックの復号予測ブロックがDPB2に更新される。
前方向予測参照ピクチャブロックおよび後方向予測参照ピクチャブロックに対して第1の精度の動き探索が行われる場合、第1の精度は任意の指定された精度であり得、例えば、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、または1/8ピクセル精度であり得ることに留意されたい。
実施形態2
図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が参照として使用される。各動き探索で取得された対応する新しい前方向の復号予測ブロックが、DPB1との差が最小である新しい復号予測ブロックを取得するために、第1の復号予測ブロックDPB1と比較され、新しい復号予測ブロックに対応する前方向動きベクトル予測子が、ターゲット動きベクトル予測子として使用され、それぞれ(-19,19)であると仮定される。
ターゲット動きベクトル予測子が(-19,19)に更新され、ターゲット動きベクトル予測子に基づいて第1の復号ブロックに対して前方向予測が実行され、取得された新しい前方向復号予測ブロックがターゲット復号予測ブロックとして使用され、DPB2になると仮定され、現在の復号ブロックの復号予測ブロックがDPB2に更新される。
前方向予測参照ピクチャブロックおよび後方向予測参照ピクチャブロックに対して第1の精度の動き探索が行われる場合、第1の精度は任意の指定された精度であり得、例えば、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、または1/8ピクセル精度であり得ることに留意されたい。
実施形態3
図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が参照として使用される。各動き探索で取得された対応する新しい前方向および後方向の符号化予測ブロックが、DPB1との差が最小である新しい符号化予測ブロックを取得するために、第1の符号化予測ブロックDPB1と比較され、新しい符号化予測ブロックに対応する前方向および後方向動きベクトル予測子が、ターゲット動きベクトル予測子として使用され、それぞれ(-11,4)および(6,6)であると仮定される。
ターゲット動きベクトル予測子が(-11,4)および(6,6)に更新され、ターゲット動きベクトル予測子に基づいて第1の符号化ブロックに対して前方向予測および後方向予測が実行され、取得された新しい前方向および後方向符号化予測ブロックの加重和をとることによって、ターゲット符号化予測ブロックが取得され、DPB2になると仮定され、現在の符号化ブロックの符号化予測ブロックがDPB2に更新される。
次に、(-11,4)および(6,6)は、前方向動きベクトル予測子および後方向動きベクトル予測子の参照入力として使用され、第1の精度の動き探索が、前方向予測参照ピクチャブロックおよび後方向予測参照ピクチャブロックに対して別々に実行される。現在の符号化ブロックの符号化予測ブロックDPB2が参照として使用される。各動き探索で取得された対応する新しい前方向および後方向の符号化予測ブロックが、DPB2との差が最小である新しい符号化予測ブロックを取得するために、第1の符号化予測ブロック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より大きい正の整数である。
実施形態4
図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が参照として使用される。各動き探索で取得された対応する新しい前方向および後方向の復号予測ブロックが、DPB1との差が最小である新しい復号予測ブロックを取得するために、第1の復号予測ブロックDPB1と比較され、新しい復号予測ブロックに対応する前方向および後方向動きベクトルが、ターゲット動きベクトル予測子として使用され、それぞれ(-11,4)および(6,6)であると仮定される。
ターゲット動きベクトルが(-11,4)および(6,6)に更新され、ターゲット動きベクトルに基づいて第1の復号ブロックに対して前方向予測および後方向予測が別々に実行され、取得された新しい前方向および後方向復号予測ブロックの加重和をとることによって、ターゲット復号予測ブロックが取得され、DPB2になると仮定され、現在の復号ブロックの復号予測ブロックがDPB2に更新される。
図19は、本出願の一実施形態による、符号化器によって動きベクトルを取得するための方法の概略的なフローチャートである。本方法は、以下のステップを含む。
S1901:処理されるブロックの参照ブロックを決定する。
参照ブロックは、図8に関連して上で説明されている。参照ブロックは、図8に示される処理されるブロックの空間的に隣接するブロックを含むだけでなく、処理されるブロックと事前設定された時間的または空間的な相関関係を有する別の実際のまたは仮想のピクチャブロックも含むことを理解されたい。
本出願の本実施形態の有益な効果は、処理されるブロックの参照ブロックの動きベクトルが更新されるシナリオに反映されることを理解されたい。具体的には、参照ブロックが、初期動きベクトルおよび1つまたは複数の事前設定された動きベクトルオフセットを有し、参照ブロックの初期動きベクトルが、参照ブロックの予測された動きベクトルに基づいて取得され、参照ブロックの予測ブロックが、初期動きベクトルおよび1つまたは複数の事前設定された動きベクトルオフセットに基づいて取得される。
具体的には、参照ブロックの動きベクトルを更新し、初期動きベクトルを取得するプロセスについては、本出願の図13に関連する実施形態を参照されたい。図19に関連する実施形態における参照ブロックは、図13に関連する実施形態における処理されるブロックであることを理解されたい。
いくつかの実現可能な実装形態では、処理されるブロックの参照ブロックを決定するステップが、処理されるブロックの1つまたは複数の候補参照ブロックから、レート歪みコストが最小である候補参照ブロックを、処理されるブロックの参照ブロックとして選択するステップを特に含む。
いくつかの実現可能な実装形態では、処理されるブロックの1つまたは複数の候補参照ブロックにおける処理されるブロックの参照ブロックを決定した後、本方法は、1つまたは複数の候補参照ブロックにおける決定された参照ブロックの識別情報をビットストリームに符号化するステップをさらに含む。
S1902:参照ブロックの初期動きベクトルを、処理されるブロックの予測された動きベクトルとして使用する。
いくつかの実現可能な実装形態では、例えば、マージモードにおいて、ステップS1902の後、本方法は、処理されるブロックの予測された動きベクトルを、処理されるブロックの初期動きベクトルとして使用するステップをさらに含む。あるいは、ステップS1902において、参照ブロックの初期動きベクトルが、処理されるブロックの初期動きベクトルとして使用される。
別の実現可能な実装形態では、例えば、AMVPモードにおいて、ステップS1902の後に、本方法は、処理されるブロックの初期動きベクトルを取得するために、処理されるブロックの予測された動きベクトルと処理されるブロックの動きベクトルの差分とを加算するステップをさらに含む。
図20は、本出願の一実施形態による、復号器によって動きベクトルを取得するための方法の概略的なフローチャートである。本方法は、以下のステップを含む。
S2001:処理されるブロックの参照ブロックを決定する。
本出願の本実施形態の有益な効果は、処理されるブロックの参照ブロックの動きベクトルが更新されるシナリオに反映されることを理解されたい。具体的には、参照ブロックが、初期動きベクトルおよび1つまたは複数の事前設定された動きベクトルオフセットを有し、参照ブロックの初期動きベクトルが、参照ブロックの予測された動きベクトルに基づいて取得され、参照ブロックの予測ブロックが、初期動きベクトルおよび1つまたは複数の事前設定された動きベクトルオフセットに基づいて取得される。
具体的には、参照ブロックの動きベクトルを更新し、初期動きベクトルを取得するプロセスについては、本出願の図14に関連する実施形態を参照されたい。図20に関連する実施形態における参照ブロックは、図14に関連する実施形態における処理されるブロックであることを理解されたい。
いくつかの実現可能な実装形態では、処理されるブロックの参照ブロックを決定するステップが、第2の識別情報を取得するために、ビットストリームを解析するステップと、第2の識別情報に基づいて、処理されるブロックの参照ブロックを決定するステップとを特に含む。
S2002:参照ブロックの初期動きベクトルを、処理されるブロックの予測された動きベクトルとして使用する。
実現可能な実装形態では、例えば、mergeモードにおいて、ステップS2002の後、本方法は、処理されるブロックの予測された動きベクトルを、処理されるブロックの初期動きベクトルとして使用するステップをさらに含む。あるいは、ステップS2002において、参照ブロックの初期動きベクトルが、処理されるブロックの初期動きベクトルとして使用される。
別の実現可能な実装形態では、例えば、AMVPモードにおいて、ステップS2002の後に、本方法は、処理されるブロックの初期動きベクトルを取得するために、処理されるブロックの予測された動きベクトルと、処理されるブロックの動きベクトルの差分とを加算するステップをさらに含み、処理されるブロックの動きベクトルの差分が、ビットストリームにおける第1の識別情報を解析することにより取得される。
上述の実装形態では、更新前の初期動きベクトルが、実際の動きベクトルを置き換えるために使用され、かつ後続の符号化ブロックまたは復号ブロックを予測するために使用される。実際の動きベクトルの更新が完了する前に、後続の符号化ブロックまたは復号ブロックに対して予測ステップが実行され得る。このことは、動きベクトルの更新によりもたらされる符号化効率の改善を確保し、処理の遅延を排除する。
図21は、本出願の一実施形態による、動きベクトルを取得するための装置2100の概略的なブロック図である。装置2100は、
処理されるブロックの参照ブロックを決定し、参照ブロックと処理されるブロックとが、事前設定された時間的または空間的な相関関係を有し、参照ブロックが、初期動きベクトルおよび1つまたは複数の事前設定された動きベクトルオフセットを有し、参照ブロックの初期動きベクトルが、参照ブロックの予測された動きベクトルに基づいて取得され、参照ブロックの予測ブロックが、初期動きベクトルおよび1つまたは複数の事前設定された動きベクトルオフセットに基づいて取得される、ように構成された決定モジュール2101と、
参照ブロックの初期動きベクトルを、処理されるブロックの予測された動きベクトルとして使用するように構成された取得モジュール2102と
を備える。
実現可能な実装形態では、取得モジュール2102が、参照ブロックの予測された動きベクトルを、参照ブロックの初期動きベクトルとして使用する、または参照ブロックの初期動きベクトルを取得するために、参照ブロックの予測された動きベクトルと参照ブロックの動きベクトルの差分とを加算する、ようにさらに構成される。
実現可能な実装形態では、取得モジュール2102が、参照ブロックの参照フレームから、参照ブロックの初期動きベクトルによって示されるピクチャブロックを取得し、取得されたピクチャブロックを、参照ブロックの一時的な予測ブロックとして使用し、1つまたは複数の実際の動きベクトルを取得するために、参照ブロックの初期動きベクトルと1つまたは複数の事前設定された動きベクトルオフセットとを加算し、各実際の動きベクトルが探索位置を示し、1つまたは複数の実際の動きベクトルによって示される探索位置において1つまたは複数の候補予測ブロックを取得し、各探索位置が1つの候補予測ブロックに対応し、1つまたは複数の候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックを、参照ブロックの予測ブロックとして選択する、ようにさらに構成される。
実現可能な実装形態では、装置2100が双方向予測のために構成され、参照フレームが、第1の方向の参照フレームと第2の方向の参照フレームとを含み、初期動きベクトルが、第1の方向の初期動きベクトルと第2の方向の初期動きベクトルとを含み、取得モジュール2102が、参照ブロックの第1の方向の参照フレームから、参照ブロックの第1の方向の初期動きベクトルによって示される第1のピクチャブロックを取得し、参照ブロックの第2の方向の参照フレームから、参照ブロックの第2の方向の初期動きベクトルによって示される第2のピクチャブロックを取得し、参照ブロックの一時的な予測ブロックを取得するために、第1のピクチャブロックと第2のピクチャブロックとに重み付けする、ように特に構成される。
実現可能な実装形態では、装置2100は、実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度よりも高い場合、処理された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度に等しくなるように、実際の動きベクトルの動きベクトル解像度を丸めるように構成された丸めモジュール2103をさらに備える。
実現可能な実装形態では、取得モジュール2102が、1つまたは複数の候補予測ブロックから、一時的な予測ブロックとのピクセル差分が最小である候補予測ブロックに対応する実際の動きベクトルを選択し、選択された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度よりも高い場合、処理された選択された実際の動きベクトルの動きベクトル解像度が事前設定されたピクセル精度に等しくなるように、選択された実際の動きベクトルの動きベクトル解像度を丸め、処理された選択された実際の動きベクトルによって示される位置に対応する予測ブロックが、参照ブロックの予測ブロックであると決定する、ように特に構成される。
実現可能な実装形態では、事前設定されたピクセル精度は、整数ピクセル精度、1/2ピクセル精度、1/4ピクセル精度、または1/8ピクセル精度である。
実現可能な実装形態では、取得モジュール2102が、処理されるブロックの予測された動きベクトルを、処理されるブロックの初期動きベクトルとして使用するように特に構成される。
実現可能な実装形態では、取得モジュール2102が、処理されるブロックの初期動きベクトルを取得するために、処理されるブロックの予測された動きベクトルと処理されるブロックの動きベクトルの差分とを加算するように特に構成される。
実現可能な実装形態では、装置2100はビデオ復号のために構成され、処理されるブロックの動きベクトルの差分が、ビットストリームにおける第1の識別情報を解析することによって取得される。
実現可能な実装形態では、装置2100はビデオ復号のために構成され、決定モジュール2101が、第2の識別情報を取得するために、ビットストリームを解析し、第2の識別情報に基づいて、処理されるブロックの参照ブロックを決定する、ように特に構成される。
実現可能な実装形態では、装置2100はビデオ符号化のために構成され、決定モジュール2101が、処理されるブロックの1つまたは複数の候補参照ブロックから、レート歪みコストが最小である候補参照ブロックを、処理されるブロックの参照ブロックとして選択するように特に構成される。
図22は、本出願の一実施形態による、ビデオ符号化デバイスの概略的なブロック図である。デバイス2200は、符号化器に適用されてもよいし、復号器に適用されてもよい。デバイス2200は、プロセッサ2201とメモリ2202とを備える。プロセッサ2201とメモリ2202とは相互に接続される(例えば、バス2204を介して相互に接続される)。可能な実装形態では、デバイス2200は、送受信機2203をさらに備え得る。送受信機2203はプロセッサ2201とメモリ2202とに接続され、データを受信/送信するように構成される。
メモリ2202は、ランダムアクセスメモリ(random access memory、RAM)、読み取り専用メモリ(read-only memory、ROM)、消去可能なプログラマブル読み取り専用メモリ(erasable programmable read only memory、EPROM)、またはコンパクトディスク読み取り専用メモリ(compact disc read-only memory、CD-ROM)を含むが、これらに限定されない。メモリ2202は、関連するプログラムコードおよびビデオデータを記憶するように構成される。
プロセッサ2201は、1つまたは複数の中央演算処理装置(central processing unit、CPU)であってもよい。プロセッサ2201が1つのCPUである場合、CPUはシングルコアCPUであってもよいし、マルチコアCPUであってもよい。
プロセッサ2201は、メモリ2202に記憶されたプログラムコードを読み取り、図13から図20に対応する任意の実装解決策および実装解決策の様々な実現可能な実装形態における動作を実行する、ように構成される。
例えば、本出願の一実施形態は、コンピュータ可読記憶媒体をさらに提供する。コンピュータ可読記憶媒体は命令を記憶する。命令がコンピュータ上で実行されると、コンピュータは、図13から図20に対応する任意の実装解決策および実装解決策の様々な実現可能な実装形態における動作を実行することが可能にされる。
例えば、本出願の一実施形態は、命令を含むコンピュータプログラム製品をさらに提供する。コンピュータプログラム製品がコンピュータ上で実行されると、コンピュータは、図13から図20に対応する任意の実装解決策および実装解決策の様々な実現可能な実装形態における動作を実行することが可能にされる。
当業者であれば、本明細書で開示した各実施形態において説明した例と組み合わせて、電子的ハードウェアまたはコンピュータソフトウェアと電子的ハードウェアとの組み合わせによって、ユニットおよびアルゴリズムステップが実装され得ることを承知しているはずである。機能がハードウェアで行われるかソフトウェアで行われるかは、技術的解決策の具体的なアプリケーションと設計制約とによって決まる。当業者は、それぞれの具体的な応用形態に対して説明された機能を実施するために、異なる方法を使用することができるが、こうした実施が、本出願の範囲を超えるものであると見なされるべきではない。
当業者であれば、説明を簡便にする目的で、上記のシステム、装置およびユニットの詳細な動作プロセスについては、上記方法実施形態における対応するプロセスを参照することを明確に理解するはずであり、ここでは細部を繰り返し説明しない。
上記の実施形態の全部または一部は、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせを使用することにより実施されてもよい。ソフトウェアが実施形態を実施するために使用される場合、実施形態は、コンピュータプログラム製品の形態で完全にまたは部分的に実施されてもよい。コンピュータプログラム製品が1つまたは複数のコンピュータ命令を含み、コンピュータプログラム命令がコンピュータにロードされて実行されると、本発明の実施形態による手順または機能のすべてまたは一部が生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または別のプログラマブル装置であり得る。コンピュータ命令は、コンピュータ可読記憶媒体に記憶されてもよいし、コンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に送信されてもよい。例えば、コンピュータ命令は、ウェブサイト、コンピュータ、サーバ、またはデータセンタから別のウェブサイト、コンピュータ、サーバ、またはデータセンタに、有線(例えば、同軸ケーブル、光ファイバ、またはデジタル加入者線)または無線(例えば、赤外線、またはマイクロ波)方式で送信され得る。コンピュータ可読記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体であってもよく、または1つ以上の使用可能な媒体を一体化するサーバまたはデータセンタなどのデータ記憶デバイスであってもよい。使用可能な媒体は、磁気媒体(例えば、フロッピーディスク、ハードディスク、または磁気テープ)、光学媒体(例えばDVD)、半導体媒体(例えば、ソリッドステートディスク)などであってもよい。
上述した実施形態では、各実施形態の説明には、それぞれの重点がある。一実施形態において詳細に記載されていない部分については、他の実施形態における関連説明を参照されたい。
上記の説明は、単に本発明の具体的な実施に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明において開示された技術的範囲内にあり、当業者によって容易に想到される、あらゆる変形や置き換えは、本発明の保護範囲内に含まれるものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に属する。