以下は、本出願の実施形態における添付の図面を参照して、本出願の実施形態の技術的な解決法を明確かつ完全に説明する。
図1は、本出願の実施形態によるビデオコーディングシステムの例のブロック図である。本明細書で説明されるように、「ビデオコーダ」という用語は通常、ビデオエンコーダとビデオデコーダの両方を指す。本出願では、「ビデオコーディング」または「コーディング」と言う用語は通常、ビデオ符号化またはビデオ復号を指し得る。ビデオコーディングシステムの中のビデオエンコーダ100およびビデオデコーダ200は、本出願において提供される複数の新しいインター予測モードのうちのいずれか1つに基づいて説明される様々な方法の例に従って、現在のコーディングされるピクチャブロックまたは現在のコーディングされるピクチャブロックのサブブロックの動き情報、たとえば動きベクトルを予測するように構成されるので、予測される動きベクトルは、動き推定方法を使用することによって得られる動きベクトルに最大限近くなり、動きベクトル差分はコーディングの間に送信される必要がない。さらに、これはコーディング性能を改善する。
図1に示されるように、ビデオコーディングシステムは、ソース装置10およびデスティネーション装置20を含む。ソース装置10は符号化されたビデオデータを生成する。したがって、ソース装置10はビデオ符号化装置と呼ばれ得る。デスティネーション装置20は、ソース装置10によって生成される符号化されたビデオデータを復号し得る。したがって、デスティネーション装置20はビデオ復号装置と呼ばれ得る。様々な実装の解決法である、ソース装置10、デスティネーション装置20、または両方において、ソース装置10およびデスティネーション装置20は、1つまたは複数のプロセッサおよび1つまたは複数のプロセッサに結合されるメモリを含み得る。本明細書で説明されるように、メモリは、限定はされないが、RAM、ROM、EEPROM、フラッシュメモリ、または、命令もしくはデータ構造の形態で必要とされるプログラムコードを記憶するために使用され得る、およびコンピュータによってアクセスされ得る、任意の他の媒体を含み得る。
ソース装置10およびデスティネーション装置20は、デスクトップコンピュータ、モバイルコンピューティング装置、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、「スマート」フォンなどのハンドヘルド電話セット、テレビジョンセット、カメラ、ディスプレイ装置、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータなどを含む、様々な装置を含み得る。
デスティネーション装置20は、リンク30を介してソース装置10から符号化されたビデオデータを受信し得る。リンク30は、ソース装置10からの符号化されたビデオデータをデスティネーション装置20に転送することができる1つまたは複数の媒体または装置を含み得る。ある例では、リンク30は、ソース装置10が符号化されたビデオデータをリアルタイムでデスティネーション装置20に直接送信することを可能にする、1つまたは複数の通信媒体を含み得る。この例では、ソース装置10は、通信規格(たとえば、ワイヤレス通信プロトコル)に従って符号化されたビデオデータを変調することができ、変調されたビデオデータをデスティネーション装置20に送信することができる。1つまたは複数の通信媒体は、ワイヤレスおよび/または有線通信媒体、たとえば無線周波数(radio frequency, RF)スペクトルまたは1つまたは複数の物理的な送信線を含み得る。1つまたは複数の通信媒体は、パケットベースのネットワークの一部を構成してもよく、パケットベースのネットワークは、たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)である。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、または、ソース装置10からデスティネーション装置20への通信を容易にする別のデバイスを含み得る。
別の例では、符号化されたデータは、出力インターフェース140を通じて記憶装置40に出力され得る。同様に、符号化されたデータは、入力インターフェース240を通じて記憶装置40からアクセスされ得る。記憶装置40は、複数の分散したデータ記憶媒体またはローカルにアクセス可能なデータ記憶媒体、たとえば、ハードディスクドライブ、ブルーレイディスク、デジタルビデオディスク(digital video disc, DVD)、コンパクトディスク読み取り専用メモリ(compact disc read-only memory, CD-ROM)、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または、符号化されたビデオデータを記憶するように構成される任意の他の適切なデジタル記憶媒体のうちの、任意の1つを含み得る。
別の例では、記憶装置40は、ソース装置10によって生成された符号化されたビデオを記憶することが可能なファイルサーバまたは別の中間記憶装置に対応し得る。デスティネーション装置20は、ストリーミング送信またはダウンロードを通じて、記憶装置40からの記憶されているビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶して符号化されたビデオデータをデスティネーション装置20に送信することができる、任意のタイプのサーバであり得る。ある例では、ファイルサーバは、ネットワークサーバ(たとえば、ウェブサイトのために使用される)、ファイル転送プロトコル(file transfer protocol, FTP)サーバ、ネットワークアタッチトストレージ(network-attached storage, NAS)装置、またはローカルディスクドライブを含む。デスティネーション装置20は、任意の標準的なデータ接続(インターネット接続を含む)を通じて符号化されたビデオデータにアクセスし得る。標準的なデータ接続は、ワイヤレスチャネル(たとえば、ワイヤレスフィデリティ(wireless-fidelity, Wi-Fi)接続)、有線接続(たとえば、デジタル加入者線(digital subscriber line, DSL)またはケーブルモデム)、または、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適している、ワイヤレスチャネルと有線チャネルの組合せを含み得る。符号化されたビデオデータは、ストリーミング送信、ダウンロード送信、またはこれらの組合せを通じて、記憶装置40から送信され得る。
本出願の動きベクトル予測技術は、複数のマルチメディア用途、たとえば地上波テレビ放送、ケーブルテレビ送信、衛星テレビ送信、ビデオストリーミング送信(たとえば、インターネットを通じた)、データ記憶媒体に記憶されているビデオデータの符号化、データ記憶媒体に記憶されているビデオデータの復号、または別の用途をサポートするための、ビデオコーディングに適用可能である。いくつかの例では、ビデオコーディングシステムは、ビデオストリーミング送信、ビデオ再生、ビデオブロードキャスト、および/またはビデオ電話などの用途をサポートするために、単方向または双方向ビデオ送信をサポートするように構成され得る。
図1において説明されるビデオコーディングシステムは例にすぎず、本出願の技術は、符号化装置と復号装置との間のデータ通信を必ずしも含まないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用可能である。別の例では、データは、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化装置は、データを符号化してデータをメモリに記憶することができ、および/または、ビデオ復号装置は、メモリからデータを取り出してデータを復号することができる。多くの例において、符号化および復号は、互いに通信しないが、単にデータを符号化してデータをメモリに記憶する、および/またはデータをメモリから取り出してデータを復号する装置によって実行される。
図1の例では、ソース装置10は、ビデオソース120、ビデオエンコーダ100、および出力インターフェース140を含む。いくつかの例では、出力インターフェース140は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース120は、ビデオキャプチャ装置(たとえば、ビデオカメラ)、以前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオコンテンツ提供者からビデオデータを受信するためのビデオフィードインインターフェース、および/もしくは、ビデオデータを生成するためのコンピュータグラフィクスシステム、または前述のビデオデータソースの組合せを含み得る。
ビデオエンコーダ100はビデオソース120からビデオデータを符号化し得る。いくつかの例では、ソース装置10は、出力インターフェース140を通じて、符号化されたビデオデータをデスティネーション装置20に直接送信する。他の例では、符号化されたビデオデータは記憶装置40にさらに記憶され得るので、デスティネーション装置20は続いて、復号および/または再生のために符号化されたビデオデータにアクセスする。
図1の例では、デスティネーション装置20は、入力インターフェース240、ビデオデコーダ200、およびディスプレイ装置220を含む。いくつかの例では、入力インターフェース240は、受信機および/またはモデムを含む。入力インターフェース240は、リンク30を介して、および/または記憶装置40から、符号化されたビデオデータを受信し得る。ディスプレイ装置220は、デスティネーション装置20と統合されてもよく、またはデスティネーション装置20の外部に位置していてもよい。一般に、ディスプレイ装置220は復号されたビデオデータを表示する。ディスプレイ装置220は、複数のタイプのディスプレイ装置、たとえば、液晶ディスプレイ(liquid crystal display, LCD)、プラズマディスプレイ、有機発光ダイオード(organic light-emitting diode, OLED)ディスプレイ、または別のタイプのディスプレイ装置を含み得る。
いくつかの態様では、図1には示されていないが、ビデオエンコーダ100およびビデオデコーダ200は、それぞれオーディオエンコーダおよびオーディオデコーダと統合されてもよく、同じデータストリームまたは別々のデータストリームにおいてオーディオとビデオの両方を符号化するために、適切なマルチプレクサ-デマルチプレクサユニットまたは他のハードウェアおよびソフトウェアを含んでもよい。いくつかの例では、適用可能な場合、デマルチプレクサ(MUX-DEMUX)ユニットは、国際電気通信連合(international telecommunication union, ITU)H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(user datagram protocol, UDP)などの別のプロトコルに準拠し得る。
ビデオエンコーダ100およびビデオデコーダ200は各々、複数の回路、たとえば、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(digital signal processor, DSP)、特定用途向け集積回路(application-specific integrated circuit, ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array, FPGA)、ディスクリート論理回路、ハードウェア、またはこれらの任意の組合せのうちの、任意の1つとして実装され得る。本出願がソフトウェアを使用して部分的に実装される場合、装置は、本出願の技術を実装するために、ソフトウェアのための命令を適切な不揮発性コンピュータ可読記憶媒体に記憶してもよく、ハードウェアで命令を実行するために1つまたは複数のプロセッサを使用してもよい。前述の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)のいずれもが、1つまたは複数のプロセッサとして見なされ得る。ビデオエンコーダ100およびビデオデコーダ200は各々、1つまたは複数のエンコーダまたはデコーダに含まれ得る。エンコーダまたはデコーダのいずれかが、対応する装置において複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
本出願では、ビデオエンコーダ100は一般に、ビデオデコーダ200などの別の装置に何らかの情報を「シグナリング」または「送信」する装置として言及され得る。「シグナリングする」または「送信する」という用語は一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータの送信を指し得る。送信は、リアルタイムで、またはほぼリアルタイムで実行され得る。代替的に、通信は、ある期間の後に実行されてもよく、たとえば、符号化されたビットストリームの中のシンタックス要素が符号化の間にコンピュータ可読記憶媒体に記憶されるときに実行されてもよい。次いで、シンタックス要素が媒体に記憶された後の任意の時間に、復号装置がシンタックス要素を取り出してもよい。
JCT-VCは、H.265高効率ビデオコーディング(high efficiency video coding, HEVC)規格を開発した。HEVCの規格化は、ビデオ復号装置の進化したモデルに基づき、このモデルはHEVCテストモデル(HEVC model, 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-F1001-v2に含まれている。アルゴリズム記述の文書は、その全体が参照によって本明細書に組み込まれる。加えて、JEMテストモデルのための参照ソフトウェアは、http://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/において入手可能であり、これもその全体が参照によって本明細書に組み込まれる。
一般に、HMワーキングモデルにおいて説明されるように、ビデオフレームまたはピクチャは、ルマサンプルとクロマサンプルの両方を含むツリーブロックまたは最大コーディング単位(largest coding unit, LCU)のシーケンスへと分割され得る。LCUはコーディングツリー単位(coding tree unit, 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つまたは複数のPUへの1つのCUの区分を記述し得る。CUがスキップモードもしくはダイレクトモードに基づいて符号化されるとき、イントラ予測モードに基づいて符号化されるとき、またはインター予測モードに基づいて符号化されるとき、区分モードは変化し得る。区分を通じて取得されるPUは正方形ではない形状であってもよい。たとえば、CUと関連付けられるシンタックスデータは代替的に、四分木に基づく1つまたは複数のTUへの1つのCUの区分を記述し得る。TUは正方形または非正方形の形状であってもよい。
HEVC規格はTUベースの変換を可能にする。TUは異なるCUに対しては異なり得る。TUのサイズは通常、区分されたLCUのために定義される所与のCU内のPUのサイズに基づいて設定される。しかしながら、常にこのようであるとは限らない。TUのサイズは通常、PUのサイズと同じかそれ未満である。いくつかの実現可能な実装形態では、CUに対応する残差サンプルをより小さい単位に区分するために、「残差四分木」(residual quadtree, RQT)と呼ばれる四分木構造が使用され得る。RQTのリーフノードはTUと呼ばれ得る。TUと関連付けられるピクセル差分は、変換係数を生成するために変換されてもよく、変換係数は量子化されてもよい。
一般に、PUは予測プロセスに関するデータを含む。たとえば、PUがイントラ予測モードに基づいて符号化されるとき、PUは、PUに対応するイントラ予測モードを記述するデータを含み得る。別の実現可能な実装形態では、PUがインター予測モードに基づいて符号化されるとき、PUはPUの動きベクトルを定義するデータを含み得る。たとえば、PUの動きベクトルを定義するデータは、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの分解能(たとえば、1/4サンプル精度または1/8サンプル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
一般に、変換および量子化プロセスがTUのために使用される。1つまたは複数のPUを含む所与のCUは、1つまたは複数のTUも含み得る。予測の後、ビデオエンコーダ100は、PUに対応する残差値を計算し得る。残差値はピクセル差分を含む。ピクセル差分は変換係数へと変換されてもよく、変換係数は量子化されて、エントロピー復号のためのシリアライズされた変換係数を生成するためにTU走査を受ける。本出願では、「ビデオブロック」という用語は通常、CUの復号ノードを示すために使用される。いくつかの具体的な適用例では、本出願では、「ビデオブロック」という用語は、復号ノード、PU、およびTUを含む、LCUまたはCUなどのツリーブロックを示すためにも使用され得る。
ビデオシーケンスは通常、一連のビデオフレームまたはピクチャを含む。たとえば、ピクチャのグループ(group of picture, GOP)は、一連のビデオピクチャ、または1つまたは複数のビデオピクチャを含む。GOPは、GOPのヘッダ情報、ピクチャの1つまたは複数のヘッダ情報、または他の箇所にシンタックスデータを含めてもよく、シンタックスデータは、GOPに含まれるピクチャの量を記述する。ピクチャの各スライスは、対応するピクチャのためのコーディングモードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ100は通常、ビデオデータを符号化するために、ビデオスライスの中のビデオブロックに対して動作を実行する。ビデオブロックは、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×0.5N PUを、および下部に2N×1.5N PUを伴う、水平に区分された2N×2N CUを指す。
本明細書では、「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に対して実行された後で、ビデオエンコーダ100は、CUの中のTUの残差データを計算し得る。PUは空間領域(ピクセル領域とも呼ばれる)の中のピクセルデータを含み得る。TUは、変換(たとえば、離散コサイン変換(discrete cosine transform, DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換)が残差ビデオデータに適用された後の、変換領域における係数を含み得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値とのピクセル差分に対応し得る。ビデオエンコーダ100は、CUの残差データを含むTUを生成し、次いで、CUの変換係数を生成するためにTUを変換し得る。
変換係数を生成するためのあらゆる変換を実行した後で、ビデオエンコーダ100は変換係数を量子化し得る。量子化は、たとえば、係数を表すために使用されるデータの量を減らし、さらに圧縮を実装するために、係数を量子化するプロセスを指す。量子化プロセスは、係数の一部またはすべてと関連付けられるビット深度を減らすことができる。たとえば、量子化の間、nビット値が丸めを通じてmビット値に減らされてもよく、nはmより大きい。
JEMモデルはさらに、ビデオピクチャコーディング構造を改善する。具体的には、「四分木プラス二分木」(QTBT)構造と呼ばれるブロックコーディング構造が導入される。HEVCにおけるCU、PU、およびTUなどの概念を使用することなく、QTBT構造は、よりフレキシブルなCU分割形状をサポートする。CUは、正方形の形状または長方形の形状であってもよい。四分木分割がまずCTUに対して実行され、二分木分割がさらに四分木のリーフノードに対して実行される。加えて、二分木分割には、対称水平区分および対称垂直区分という2つの分割モードがある。二分木のリーフノードはCUと呼ばれる。JEMモデルのCUを、予測および変換の間にさらに分割することはできない。言い換えると、JEMモデルにおけるCU、PU、およびTUは、同じブロックサイズを有する。既存のJEMモデルでは、最大のCTUサイズは256×256ルマピクセルである。
いくつかの実現可能な実装形態では、ビデオエンコーダ100は、あらかじめ定められた走査順序で量子化された変換係数を走査し、エントロピー符号化され得るシリアライズされたベクトルを生成し得る。他の実現可能な実装形態では、ビデオエンコーダ100は、適応走査を実行し得る。量子化された変換係数を走査して1次元ベクトルを生成した後で、ビデオエンコーダ100は、コンテキストベース適応可変長コーディング(context-based adaptive variable-length code, CAVLC)、コンテキストベース適応バイナリ算術コーディング(context-based adaptive binary arithmetic coding, CABAC)、シンタックスベースコンテキスト適応バイナリ算術コーディング(syntax-based adaptive binary arithmetic coding, SBAC)、確率間隔区分エントロピー(probability interval partitioning entropy, PIPE)コーディング、または別のエントロピーコーディング方法を使用することによって、1次元ベクトルに対してエントロピー符号化を実行し得る。ビデオエンコーダ100はさらに、ビデオデコーダ200がビデオデータを復号するために、符号化されたビデオデータと関連付けられるシンタックス要素に対してエントロピー符号化を実行し得る。
CABACを実行するために、ビデオエンコーダ100は、コンテキストモデルの中のコンテキストを送信対象シンボルに割り当て得る。コンテキストは、シンボルの隣接値が0ではないかどうかに関連し得る。CAVLCを実行するために、ビデオエンコーダ100は、送信対象シンボルの可変長コードを選択し得る。可変長コーディング(variable-length code, VLC)における符号語は、より短い符号がより確率の高いシンボルに対応し、より長いコードがより確率の低いシンボルに対応するように、構築され得る。このようにして、すべての送信対象シンボルに対して等しい長さの符号語を使用する場合と比較して、VLCを使用することでビットレートを下げることができる。CABACにおける確率は、シンボルに割り当てられたコンテキストに基づいて決定され得る。
本出願のこの実施形態では、ビデオエンコーダは、ピクチャ間の時間的な冗長性を減らすためにインター予測を実行し得る。上で説明されたように、CUは、異なるビデオ圧縮コーディング規格に応じて、1つまたは複数の予測単位PUを有し得る。言い換えると、複数のPUが1つのCUに属してもよく、またはPUとCUが同じサイズを有してもよい。本明細書では、CUおよびPUが同じサイズを有するとき、CUに対応する区分モードは、説明のために、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が一律に使用される。
上で簡単に説明されたように、ビデオエンコーダ100は、インター予測を通じて、CUのPUの予測ピクチャブロックおよび動き情報を生成し得る。多くの例では、所与のPUの動き情報は、1つまたは複数の近隣PU(すなわち、そのピクチャブロックが所与のPUのピクチャブロックに空間的または時間的に隣接しているPU)の動き情報と同一または同様であり得る。近隣PUは同様の動き情報を有することが多いので、ビデオエンコーダ100は、近隣PUの動き情報に基づいて、所与のPUの動き情報を符号化し得る。近隣PUの動き情報に基づいて所与のPUの動き情報を符号化すると、所与のPUの動き情報を示すのに必要とされるビットストリームの中のコーディングビットの量を減らすことができる。
ビデオエンコーダ100は、様々な方式で、近隣PUの動き情報に基づいて所与のPUの動き情報を符号化し得る。たとえば、ビデオエンコーダ100は、所与のPUの動き情報が近隣PUの動き情報と同じであることを示し得る。本出願では、マージモードは、所与のPUの動き情報が近隣PUの動き情報と同じである、またはそれから導かれ得ることを示すために、使用され得る。別の実現可能な実装形態では、ビデオエンコーダ100は、所与のPUに対する動きベクトル差分(Motion Vector Difference, MVD)を計算し得る。MVDは、所与のPUの動きベクトルと近隣PUの動きベクトルとの差を示す。ビデオエンコーダ100は、所与のPUの動きベクトルの代わりにMVDを所与のPUの動き情報に含め得る。ビットストリームにおいて、MVDを表現するために必要なコーディングビットの量は、所与のPUの動きベクトルを表現するために必要なコーディングビットの量より少ない。本出願では、進化型動きベクトル予測モードは、MVDと、動きベクトル候補を特定するために使用されるインデックス値とを使用することによって、所与のPUの動き情報がデコーダ側にシグナリングされることを示すために、使用され得る。
マージモードまたはAMVPモードに基づいて、所与のPUの動き情報をデコーダ側にシグナリングするために、ビデオエンコーダ100は、所与のPUに対する予測動きベクトル候補リストを生成し得る。予測動きベクトル候補リストは、1つまたは複数の予測動きベクトル候補を含み得る。所与のPUに対する予測動きベクトル候補リストの中の予測動きベクトル候補の各々は、動き情報を示し得る。各予測動きベクトル候補によって示される動き情報は、動きベクトル、参照ピクチャインデックス、および予測方向インジケータを含み得る。予測動きベクトル候補リストの中の予測動きベクトル候補は、「元の」予測動きベクトル候補を含み得る。予測動きベクトル候補の各々は、所与のPUとは異なるPU内の位置における指定された予測動きベクトル候補のうちの1つの中の動き情報を示す。
PUに対する予測動きベクトル候補リストを生成した後で、ビデオエンコーダ100は、PUのために使用される1つの予測動きベクトル候補を予測動きベクトル候補リストから選択し得る。たとえば、ビデオエンコーダは、各予測動きベクトル候補を復号されているPUと比較してもよく、必要とされるレート歪みコストを伴う予測動きベクトル候補を選択してもよい。ビデオエンコーダ100は、PUに対する予測動きベクトル候補インデックスを出力し得る。予測動きベクトル候補インデックスは、予測動きベクトル候補リストにおける選択された予測動きベクトル候補の位置を特定し得る。
加えて、ビデオエンコーダ100は、PUの動き情報によって示される参照ブロックに基づいて、PUの予測ピクチャブロックを生成し得る。PUの動き情報は、PUに対する予測動きベクトル候補リストの中の選択された予測動きベクトル候補によって示される動き情報に基づいて決定され得る。たとえば、マージモードでは、PUの動き情報は、選択された予測動きベクトル候補によって示される動き情報と同じであり得る。AMVPモードでは、PUの動き情報は、PUに対する動きベクトル差分および選択された予測動きベクトル候補によって示される動き情報に基づいて決定され得る。上で説明されたように、ビデオエンコーダ100は、PUの予測ピクチャブロックを処理し得る。
ビデオデコーダ200がビットストリームを受信すると、ビデオデコーダ200は、CUの各PUに対する予測動きベクトル候補リストを生成し得る。PUに対するビデオデコーダ200により生成される予測動きベクトル候補リストは、PUに対するビデオエンコーダ100により生成される予測動きベクトル候補リストと同じであり得る。ビットストリームを解析することによって取得されるシンタックス要素は、PUに対する予測動きベクトル候補リストにおける選択された予測動きベクトル候補の位置を示し得る。PUに対する予測動きベクトル候補リストを生成した後で、ビデオデコーダ200は、PUの動き情報によって示される1つまたは複数の参照ブロックに基づいて、PUの予測ピクチャブロックを生成し得る。ビデオデコーダ200は、PUに対する予測動きベクトル候補リストの中の選択された予測動きベクトル候補によって示される動き情報に基づいて、PUの動き情報を決定し得る。ビデオデコーダ200は、PUの予測ピクチャブロックおよびCUの残差ピクチャブロックに基づいて、CUのピクチャブロックを再構築し得る。
ある実現可能な実装形態では、デコーダ側で、予測動きベクトル候補リストを構築することと、予測動きベクトル候補リストにおける選択された予測動きベクトル候補の位置を取得するためにビットストリームを解析することは互いに独立であり、任意の順序で、または並列に実行され得る。
別の実現可能な実装形態では、デコーダ側で、予測動きベクトル候補リストにおける選択された予測動きベクトル候補の位置がまず、ビットストリームを解析することによって取得され、次いで、予測動きベクトル候補リストが、解析を通じて取得された位置に基づいて構築される。この実装形態では、すべての予測動きベクトル候補リストを構築することは必要ではなく、具体的には、解析を通じて得られる位置における予測動きベクトル候補を決定できる限り、その位置における予測動きベクトル候補リストだけが構築される必要がある。たとえば、選択される予測動きベクトル候補が、そのインデックスが予測動きベクトル候補リストにおいて3である予測動きベクトル候補であることが、ビットストリームを解析することによって得られるとき、そのインデックスが0である予測動きベクトル候補から、そのインデックスが3である予測動きベクトル候補までを含む、予測動きベクトル候補リストのみが構築される必要があり、そのインデックスが3である予測動きベクトル候補を決定することができる。これにより、複雑さを減らし、復号効率を改善することができる。
図2は、本出願の実施形態によるビデオエンコーダ100の例のブロック図である。ビデオエンコーダ100は、後処理エンティティ41にビデオを出力するように構成される。後処理エンティティ41は、ビデオエンコーダ100からの符号化されたビデオデータを処理することができるビデオエンティティの例を表す。たとえば、ビデオエンティティは、媒体認識ネットワーク要素(MANE)またはスプライシング装置/編集装置である。いくつかの場合、後処理エンティティ41はネットワークエンティティの例であり得る。いくつかのビデオコーディングシステムでは、後処理エンティティ41およびビデオエンコーダ100は、別々の装置のコンポーネントであり得る。他の場合には、後処理エンティティ41の機能は、ビデオエンコーダ100を含む同じ装置によって実行され得る。ある例では、後処理エンティティ41は、図1の記憶装置40の例である。
図2の例では、ビデオエンコーダ100は、予測処理ユニット108、フィルタユニット106、復号ピクチャバッファ(decoded picture buffer, DPB)107、加算器112、変換器101、量子化器102、およびエントロピーエンコーダ103を含む。予測処理ユニット108は、インター予測器110およびイントラ予測器109を含む。ピクチャブロックを再構築するために、ビデオエンコーダ100はさらに、逆量子化器104、逆変換器105、および加算器111を含む。フィルタユニット106は、1つまたは複数のループフィルタ、たとえば、デブロッキングフィルタ、適応ループフィルタ(adaptive loop filter, ALF)、およびサンプル適応オフセット(sample adaptive offset, SAO)フィルタを表すことが意図される。フィルタユニット106は図2ではループ内フィルタとして示されているが、別の実装形態では、フィルタユニット106はループ後フィルタとして実装され得る。ある例では、ビデオエンコーダ100はさらに、ビデオデータメモリおよび区分ユニット(図には示されない)を含み得る。
ビデオデータメモリは、ビデオエンコーダ100のコンポーネントによって符号化されるべきビデオデータを記憶し得る。ビデオデータに記憶されているビデオデータは、ビデオソース120から取得され得る。DPB107は、イントラコーディングモードまたはインターコーディングモードでビデオデータを符号化するためにビデオエンコーダ100によって使用される参照ビデオデータを記憶する、参照ピクチャメモリであり得る。ビデオデータメモリおよびDPB107は、複数のタイプのメモリ装置、たとえば、同期ダイナミックランダムアクセスメモリ(synchronous dynamic random access memory, SDRAM)を含むダイナミックランダムアクセスメモリ(dynamic random access memory, DRAM)、磁気RAM(magnetic random access memory, MRAM)、抵抗変化型RAM(resistive random access memory, RRAM(登録商標))、または別のタイプのメモリ装置のうちの任意の1つを含み得る。ビデオデータメモリおよびDPB107は、同じメモリ装置または別々のメモリ装置によって提供され得る。様々な例では、ビデオデータメモリは、ビデオエンコーダ100の他のコンポーネントと一緒にチップに統合されてもよく、または、それらのコンポーネントに対してチップの外側に配設されてもよい。
図2に示されるように、ビデオエンコーダ100は、ビデオデータを受信し、ビデオデータメモリにビデオデータを記憶する。区分ユニットは、ビデオデータをいくつかのピクチャブロックに区分し、これらのピクチャブロックをより小さいブロックにさらに区分してもよく、たとえば、四分木構造または二分木構造に基づいてこれらのピクチャブロックを区分してもよい。この区分はさらに、スライス(slice)、タイル(tile)、または他のより大きいユニットへと区分することを含み得る。ビデオエンコーダ100は通常、符号化対象のビデオスライスの中のピクチャブロックを符号化するコンポーネントである。スライスは、複数のピクチャブロックへと区分され得る(および、タイルと呼ばれるピクチャブロックセットへと区分され得る)。予測処理ユニット108は、現在のピクチャブロックのために使用される複数の可能なコーディングモードのうちの1つを選択してもよく、たとえば、複数のイントラコーディングモードのうちの1つまたは複数のインターコーディングモードのうちの1つを選択してもよい。予測処理ユニット108は、加算器112のための取得されたイントラコーディングまたはインターコーディングされたブロックを提供して残差ブロックを生成し、加算器111のための取得されたイントラコーディングまたはインターコーディングされたブロックを提供して、参照ピクチャとして使用される符号化されたブロックを再構築し得る。
予測処理ユニット108の中のイントラ予測器109は、空間冗長性を取り除くために、現在のピクチャブロックと同じフレームまたはスライスの中にある1つまたは複数の近隣ブロックに対する相対的なイントラ予測符号化を、符号化対象の現在のブロックに対して実行し得る。予測処理ユニット108の中のインター予測器110は、時間冗長性を取り除くために、1つまたは複数の参照ピクチャの中の1つまたは複数の予測ブロックに対する相対的なインター予測符号化を、現在のピクチャブロックに対して実行し得る。
具体的には、インター予測器110は、現在のピクチャブロックを符号化するために使用されるインター予測モードを決定するように構成され得る。たとえば、インター予測器110は、レート歪み分析を通じてインター予測モード候補セットの中の様々なインター予測モードに対するレート歪み値を計算し、インター予測モード候補セットから最適なレート歪み特徴を伴うインター予測モードを選択し得る。レート歪み分析は通常、符号化されたブロックと、符号化されたブロックが符号化を通じてそれから生成される元の符号化されていないブロックとの間の、歪み(または誤差)の量、および、符号化されたブロックを生成するために使用されるビットレート(すなわち、ビットの量)を決定するために使用される。たとえば、インター予測器110は、ビットレート歪みコストが最小である現在のピクチャブロックを符号化するために使用されるインター予測モード候補セットの中のインター予測モードが、現在のピクチャブロックに対してインター予測を実行するために使用されるインター予測モードであると決定し得る。
インター予測器110は、決定されたインター予測モードに基づいて現在のピクチャブロックの1つまたは複数のサブブロックの動き情報(たとえば、動きベクトル)を予測し、現在のピクチャブロックの1つまたは複数のサブブロックの動き情報(たとえば、動きベクトル)に基づいて現在のピクチャブロックの予測ブロックを取得または生成するように構成される。インター予測器110は、参照ピクチャリストのうちの1つにおいて、動きベクトルにより指示される予測ブロックを位置特定し得る。インター予測器110はさらに、ピクチャブロックおよびビデオスライスと関連付けられるシンタックス要素を生成し得るので、ビデオデコーダ200は、シンタックス要素を使用してビデオスライスの中のピクチャブロックを復号する。代替的に、ある例では、インター予測器110は、各サブブロックの予測ブロックを生成して現在のピクチャブロックの予測ブロックを取得するために、各サブブロックの動き情報に基づいて動き補償処理を実行する。本明細書のインター予測器110は、動き推定処理および動き補償処理を実行することを理解されたい。
具体的には、現在のピクチャブロックに対してインター予測モードを選択した後で、インター予測器110は、現在のピクチャブロックのために選択されるインター予測モードを示す情報をエントロピーエンコーダ103に提供し得るので、エントロピーエンコーダ103は、選択されたインター予測モードを示す情報を符号化する。
イントラ予測器109は、現在のピクチャブロックに対してイントラ予測を実行し得る。イントラ予測器109は、現在のブロックを符号化するために使用されるイントラ予測モードを決定し得ることが明らかである。たとえば、イントラ予測器109は、レート歪み分析を通じて、様々な試験対象のイントラ予測モードに対するレート歪み値を計算し、試験対象のモードから最適なレート歪み特徴を伴うイントラ予測モードを選択し得る。いずれの場合でも、ピクチャブロックに対するイントラ予測モードを選択した後で、イントラ予測器109は、現在のピクチャブロックに対して選択されるイントラ予測モードを示す情報をエントロピーエンコーダ103に提供し得るので、エントロピーエンコーダ103は、選択されたイントラ予測モードを示す情報を符号化する。
予測処理ユニット108がインター予測およびイントラ予測を通じて現在のピクチャブロックの予測ブロックを生成した後で、ビデオエンコーダ100は、符号化対象の現在のピクチャブロックから予測ブロックを差し引くことによって残差ピクチャブロックを取得する。加算器112は、減算演算を実行する1つまたは複数のコンポーネントを表す。残差ブロックの中の残差ビデオデータは、1つまたは複数のTUに含まれてもよく、変換器101に適用される。変換器101は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を通じて、残差ビデオデータを残差変換係数に変換する。変換器101は、ピクセル値領域から変換領域、たとえば周波数領域に残差ビデオデータを変換し得る。
変換器101は、取得された変換係数を量子化器102に送信し得る。量子化器102は、変換係数を量子化してビットレートをさらに低減する。いくつかの例では、量子化器102はさらに、量子化された変換係数を含む行列を走査し得る。代替的に、エントロピーエンコーダ103が走査を実行し得る。
量子化の後で、エントロピーエンコーダ103は、量子化された変換係数に対してエントロピー符号化を実行する。たとえば、エントロピーエンコーダ103は、コンテキスト適応可変長コーディング(CALVC)、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング方法もしくは技術を実行し得る。エントロピー符号化を実行した後で、エントロピーエンコーダ103は、符号化されたビットストリームをビデオデコーダ200に送信し、または、後で送信するために、またはビデオデコーダ200により後で取り出すために、符号化されたビットストリームをアーカイブし得る。エントロピーエンコーダ103はさらに、符号化対象の現在のピクチャブロックのシンタックス要素に対してエントロピー符号化を実行し得る。
逆量子化器104および逆変換器105はそれぞれ、たとえば参照ピクチャの参照ブロックとして後で使用されるための、ピクセル領域において残差ブロックを再構築するために、逆量子化および逆変換を実行する。加算器111は、再構築されたピクチャブロックを生成するために、インター予測器110またはイントラ予測器109によって生成される予測ブロックに再構築された残差ブロックを追加する。フィルタユニット106が、歪み、たとえばブロックアーティファクト(block artifacts)を減らすために、再構築されたピクチャブロックに適用可能である。次いで、再構築されたピクチャブロックは、参照ブロックとして使用され、復号ピクチャバッファ107に記憶され、後続のビデオフレームまたはピクチャの中のブロックに対してインター予測を実行するために、参照ブロックとしてインター予測器110によって使用され得る。
ビデオエンコーダ100の他の構造的な変形が、ビデオストリームを符号化するために使用され得ることを理解されたい。たとえば、いくつかのピクチャブロックまたはピクチャフレームに対して、ビデオエンコーダ100は残差信号を直接量子化してもよく、変換器101による処理は必要ではなく、それに対応して、逆変換器105による処理も必要ではない。代替的に、いくつかのピクチャブロックまたはピクチャフレームに対して、ビデオエンコーダ100は、残差データを生成せず、それに対応して、変換器101、量子化器102、逆量子化器104、および逆変換器105による処理は必要ではない。代替的に、ビデオエンコーダ100は、再構築されたピクチャブロックを参照ブロックとして直接記憶してもよく、フィルタユニット106による処理は必要ではない。代替的に、ビデオエンコーダ100の中の量子化器102および逆量子化器104は組み合わされてもよい。
図3は、本出願の実施形態による、ビデオデコーダ200の例のブロック図である。図3の例では、ビデオデコーダ200は、エントロピーデコーダ203、予測処理ユニット208、逆量子化器204、逆変換器205、加算器211、フィルタユニット206、およびDPB207を含む。予測処理ユニット208は、インター予測器210およびイントラ予測器209を含み得る。いくつかの例では、ビデオデコーダ200は、図2のビデオエンコーダ100を参照して説明された符号化処理とは概ね逆の復号処理を実行し得る。
復号の間、ビデオデコーダ200は、ビデオエンコーダ100から、符号化されたビデオスライスの中のピクチャブロックを表す符号化されたビデオビットストリームと、関連するシンタックス要素とを受信する。ビデオデコーダ200は、ネットワークエンティティ42からビデオデータを受信してもよく、任意選択で、ビデオデータをビデオデータメモリ(図には示されない)にさらに記憶してもよい。ビデオデータメモリは、ビデオデータ、たとえば、ビデオデコーダ200のコンポーネントによって復号されることになる符号化されたビデオビットストリームを記憶してもよい。ビデオデータメモリに記憶されているビデオデータは、たとえば、記憶装置40などのローカルビデオソースから、または、ビデオデータの有線もしくはワイヤレスネットワーク通信を通じてカメラから、または、物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリは、符号化されたビデオビットストリームから符号化されたビデオデータを記憶するための復号ピクチャバッファ(CPB)として使用され得る。したがって、ビデオデータメモリは図3に示されていないが、ビデオデータメモリおよびDPB207は同じメモリであってもよく、または別々に配設されるメモリであってもよい。ビデオデータメモリおよびDPB207は各々、複数のタイプのメモリ装置、たとえば、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気RAM(MRAM)、抵抗変化型RAM(RRAM(登録商標))、または別のタイプのメモリ装置のうちの任意の1つを含み得る。様々な例において、ビデオデータメモリは、ビデオデコーダ200の他のコンポーネントと一緒にチップに統合されてもよく、または、それらのコンポーネントに対してチップの外側に配設されてもよい。
ネットワークエンティティ42は、たとえば、サーバ、MANE、ビデオエディタ/スプライサ、または、上で説明された技術の1つまたは複数を実装するように構成される別の装置であり得る。ネットワークエンティティ42は、ビデオエンコーダ、たとえばビデオエンコーダ100を含んでも含まなくてもよい。ネットワークエンティティ42が符号化されたビデオビットストリームをビデオデコーダ200に送信する前に、ネットワークエンティティ42は、本出願で説明される技術の一部を実装し得る。いくつかのビデオ復号システムでは、ネットワークエンティティ42およびビデオデコーダ200は別々の装置のコンポーネントであり得る。他の場合には、ネットワークエンティティ42の機能は、ビデオデコーダ200を含む同じ装置によって実行され得る。いくつかの場合、ネットワークエンティティ42は、図1の記憶装置40の例であり得る。
ビデオデコーダ200のエントロピーデコーダ203は、量子化された係数およびいくつかのシンタックス要素を生成するために、ビットストリームに対してエントロピー復号を実行する。エントロピーデコーダ203は、シンタックス要素を予測処理ユニット208に転送する。ビデオデコーダ200は、シンタックス要素をビデオスライスレベルおよび/またはピクチャブロックレベルで受信し得る。
ビデオスライスがイントラ復号(I)されたスライスへと復号されるとき、予測処理ユニット208の中のイントラ予測器209は、シグナリングされたイントラ予測モードおよび現在のフレームまたはピクチャの以前に復号されたブロックのデータに基づいて、現在のビデオスライスの中のピクチャブロックの予測ブロックを生成し得る。ビデオスライスがインター復号された(すなわち、BまたはP)スライスへと復号されるとき、予測処理ユニット208の中のインター予測器210は、エントロピーデコーダ203から受信されたシンタックス要素に基づいて、現在のビデオスライスの中の現在のピクチャブロックを復号するために使用されるインター予測モードを決定し、決定されたインター予測モードに基づいて現在のピクチャブロックを復号する(たとえば、それに対してインター予測を実行する)ことができる。具体的には、インター予測器210は、現在のビデオスライスの中の現在のピクチャブロックを予測するために新しいインター予測モードが使用されるかどうかを決定し得る。現在のピクチャブロックを予測するために新しいインター予測モードが使用されることをシンタックス要素が示す場合、現在のビデオスライスの中の現在のピクチャブロックの動き情報または現在のピクチャブロックのサブブロックの動き情報は、新しいインター予測モード(たとえば、シンタックス要素またはデフォルトの新しいインター予測モードを使用することによって指定される新しいインター予測モード)に基づいて予測され、現在のピクチャブロックの予測ブロックまたは現在のピクチャブロックのサブブロックの予測ブロックは、動き補償プロセスにおいて、現在のピクチャブロックまたは現在のピクチャブロックのサブブロックの予測される動き情報を使用することによって、取得または生成される。本明細書の動き情報は、参照ピクチャ情報および動きベクトルを含み得る。参照ピクチャ情報は、限定はされないが、単予測/双予測情報、参照ピクチャリスト番号、および参照ピクチャリストに対応する参照ピクチャインデックスを含み得る。インター予測では、予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ200は、DPB207に記憶されている参照ピクチャに基づいて、参照ピクチャリスト、すなわちリスト0およびリスト1を構築し得る。現在のピクチャの参照フレームインデックスは、参照フレームリスト0および参照フレームリスト1の一方または両方に含まれ得る。いくつかの例では、ビデオエンコーダ100は、特定のブロックの特定のシンタックス要素を復号するために新しいインター予測モードが使用されるかどうかをシグナリングし、または、特定のブロックの特定のシンタックス要素を復号するために、新しいインター予測モードが使用されるかどうか、およびどの新しいインター予測モードが使用されるかをシグナリングし得る。本明細書のインター予測器210は、動き補償プロセスを実行することを理解されたい。
逆量子化器204は、ビットストリームにおいて提供されエントロピーデコーダ203によって復号される量子化された変換係数に対して逆量子化を実行し、すなわちそれを逆量子化する。逆量子化プロセスは、ビデオスライスの中の各ピクチャブロックに対してビデオエンコーダ100によって計算される量子化パラメータを使用することによって適用されるべき量子化の程度を決定することと、同じ方法で、適用されるべき逆量子化の程度を決定することとを含み得る。逆変換器205は、ピクセル領域の残差ブロックを生成するために、変換係数に対して逆変換を、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを実行する。
インター予測器210が現在のピクチャブロックまたは現在のピクチャブロックのサブブロックに対する予測ブロックを生成した後で、ビデオデコーダ200は、再構築されたブロック、すなわち復号されたピクチャブロックを取得するために、逆変換器205からの残差ブロックとインター予測器210によって生成される対応する予測ブロックとを加算する。加算器211は、加算演算を実行するコンポーネントを表す。必要なとき、ループフィルタ(復号ループの中の、または復号ループの後のいずれか)がさらに、ピクセル遷移を滑らかにし、または別の方式でビデオ品質を改善するために使用され得る。フィルタユニット206は、1つまたは複数のループフィルタ、たとえば、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタを表し得る。フィルタユニット206は図2ではループ内フィルタとして示されているが、別の実装形態では、フィルタユニット206はループ後フィルタとして実装され得る。ある例では、フィルタユニット206は、ブロック歪みを減らすために再構築されたブロックに適用可能であり、結果は復号されたビデオストリームとして出力される。加えて、所与のフレームまたはピクチャの中の復号されたピクチャブロックが、DPB207にさらに記憶されてもよく、DPB207は、後続の動き補償のために使用される参照ピクチャを記憶する。DPB207は、メモリの一部であってもよく、ディスプレイ装置(たとえば、図1のディスプレイ装置220)上に後で提示するために復号されたビデオをさらに記憶してもよい。代替的に、DPB207はそのようなメモリとは別個であってもよい。
ビデオデコーダ200の他の構造的な変形が、符号化されたビデオビットストリームを復号するために使用され得ることを理解されたい。たとえば、ビデオデコーダ200が出力ビデオストリームを生成してもよく、フィルタユニット206による処理は必要とされない。代替的に、一部のピクチャブロックまたはピクチャフレームに対して、ビデオデコーダ200の中のエントロピーデコーダ203は、復号を通じて量子化された係数を取得せず、それに対応して、逆量子化器204および逆変換器205による処理は必要とされない。
上で説明されたように、本出願の技術は、たとえば、インター復号に関する。本出願の技術は、本出願で説明される任意の1つのビデオコーデックによって実行されてもよく、ビデオデコーダは、(たとえば)図1から図3において示され説明されたビデオエンコーダ100およびビデオデコーダ200を含むことを理解されたい。具体的には、ある実現可能な実装形態では、図2において説明されるインター予測器110は、インター予測がビデオデータのブロックの符号化の間に実行されるとき、以下で説明される特定の技術を実行し得る。別の実現可能な実装形態では、図3において説明されるインター予測器210は、インター予測がビデオデータのブロックの復号の間に実行されるとき、以下で説明される特定の技術を実行し得る。したがって、「ビデオエンコーダ」または「ビデオデコーダ」への言及は、ビデオエンコーダ100、ビデオデコーダ200、または別のビデオ符号化ユニットもしくは復号ユニットを含み得る。
本出願のエンコーダ100およびデコーダ200では、ステップの処理結果がさらに処理されて、次いで次のステップに出力され得ることを理解されたい。たとえば、補間フィルタリング、動きベクトル導出、またはループフィルタリングなどのステップの後で、クリップまたはシフトなどのさらなる動作が、対応するステップの処理結果に対して実行される。
たとえば、動きベクトルの値は、特定のビット深度範囲内にあるように制約される。動きベクトルの許容されるビット深度がbitDepthであると仮定すると、動きベクトルの値は-2^(bitDepth-1)から2^(bitDepth-1)-1にわたり、記号「^」はべき乗を表す。bitDepthが16である場合、値は-32768から32767にわたる。bitDepthが18である場合、値は-131072から131071にわたる。動きベクトルの値は、以下の2つの方式のいずれかで制約され得る。
方式1:動きベクトルのオーバーフロー最上位ビットが除去される。
ux=(vx+2bitDepth)%2bitDepth
vx=(ux≧2bitDepth-1)?(ux-2bitDepth):ux
uy=(vy+2bitDepth)%2bitDepth
vy=(uy≧2bitDepth-1)?(uy-2bitDepth):uy
たとえば、vxの値が-32769であり、32767は前述の式に従って導出される。値は2の補数表現としてコンピュータに記憶され、-32769の2の補数表現は1,0111,1111,1111,1111(17ビット)であり、オーバーフローのためにコンピュータによって実行される処理は、最上位ビットを廃棄することである。したがって、vxの値は0111,1111,1111,1111、すなわち32767である。この値は、式に従った処理を通じて導出される結果と一貫している。
方式2:クリッピングが動きベクトルに対して実行され、以下の式が使用される。
vx=Clip3(-2bitDepth-1,2bitDepth-1-1,vx)
vy=Clip3(-2bitDepth-1,2bitDepth-1-1,vy)
上の式において、Clip3は、zという値を範囲[x,y]に切り落とすものとして定義される。
図4は、本出願の実施形態による、インター予測モジュール121の概略ブロック図である。たとえば、インター予測モジュール121は、動き推定ユニットおよび動き補償ユニットを含み得る。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に対してIMEおよびFMEを実行してPUの動き情報を生成することに加えて、インター予測モジュール121はさらに、各PUに対してマージ(Merge)動作を実行し得る。インター予測モジュール121がPUに対してマージ動作を実行するとき、インター予測モジュール121は、PUに対して予測動きベクトル候補リストを生成し得る。PUに対する予測動きベクトル候補リストは、1つまたは複数の元の予測動きベクトル候補と、1つまたは複数の元の予測動きベクトル候補から導出された1つまたは複数の追加の予測動きベクトル候補とを含み得る。予測動きベクトル候補リストの中の元の予測動きベクトル候補は、1つまたは複数の空間予測動きベクトル候補および時間予測動きベクトル候補を含み得る。空間予測動きベクトル候補は、現在のピクチャの別のPUの動き情報を示し得る。時間予測動きベクトル候補は、現在のピクチャとは異なるピクチャの対応するPUの動き情報に基づき得る。時間予測動きベクトル候補は、時間動きベクトル予測(TMVP)とも呼ばれ得る。
予測動きベクトル候補リストを生成した後で、インター予測モジュール121は、予測動きベクトル候補リストから1つの予測動きベクトル候補を選択し得る。次いで、インター予測モジュール121は、PUの動き情報によって示される参照ブロックに基づいて、PUの予測ピクチャブロックを生成し得る。マージモードでは、PUの動き情報は、選択された予測動きベクトル候補によって示される動き情報と同じであり得る。以下で説明される図5は、マージモードの例のフローチャートである。
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の動き情報を示すシンタックス要素を出力し得る。
図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は、本出願の実施形態による、マージモードの実装形態のフローチャートである。ビデオエンコーダ(たとえば、ビデオエンコーダ100)は、マージ動作201を実行し得る。マージ動作201は、S202:現在の予測ユニットに対する候補リストを生成することと、S204:候補リストの中の候補と関連付けられる予測ビデオブロックを生成することと、S206:候補リストから候補を選択することと、S208:候補を出力することとを含み得る。候補は動きベクトル候補または動き情報候補である。
別の実現可能な実装形態では、ビデオエンコーダは、マージ動作201とは異なるマージ動作を実行し得る。たとえば、別の実現可能な実装形態では、ビデオエンコーダはマージ動作を実行し得る。この場合、ビデオエンコーダは、マージ動作201のステップより多数もしくは少数のステップ、またはマージ動作201のステップとは異なるステップを実行する。別の実現可能な実装形態では、ビデオエンコーダは、異なる順序で、または並列に、マージ動作201のステップを実行し得る。エンコーダはさらに、スキップ(skip)モードに基づいて符号化されるPUに対してマージ動作201を実行し得る。
ビデオエンコーダがマージ動作201を開始した後で、ビデオエンコーダは、現在のPUに対する予測動きベクトル候補リストを生成し得る(S202)。ビデオエンコーダは、様々な方式で現在のPUに対する予測動きベクトル候補リストを生成し得る。たとえば、ビデオエンコーダは、図8から図12を参照して以下で説明される例示的な技術のうちの1つを使用することによって、現在のPUに対する予測動きベクトル候補リストを生成し得る。
上で説明されたように、現在のPUに対する予測動きベクトル候補リストは、時間予測動きベクトル候補を含み得る。時間予測動きベクトル候補は、対応する時間的な(併置)PUの動き情報を示し得る。併置PUは、ピクチャフレームの現在のPUと同じ位置に空間的に位置するが、現在のピクチャではなく参照ピクチャの中にあり得る。本出願では、対応する時間的PUを含む参照ピクチャは、関連する参照ピクチャと呼ばれ得る。本出願では、関連する参照ピクチャの参照ピクチャインデックスは、関連する参照ピクチャインデックスと呼ばれ得る。上で説明されたように、現在のピクチャは、1つまたは複数の参照ピクチャリスト(たとえば、リスト0およびリスト1)と関連付けられ得る。参照ピクチャインデックスは、参照ピクチャリストにおける参照ピクチャの位置を示すことによって、参照ピクチャを示し得る。いくつかの実現可能な実装形態では、現在のピクチャは、組み合わせられた参照ピクチャリストと関連付けられ得る。
いくつかのビデオエンコーダでは、関連する参照ピクチャインデックスは、現在のPUと関連付けられる参照インデックスソース位置を包含するPUの参照ピクチャインデックスである。これらのビデオエンコーダでは、現在のPUと関連付けられる参照インデックスソース位置は、現在のPUの左または現在のPUの上で、現在のPUに隣接する。本出願では、PUと関連付けられるピクチャブロックが特定の位置を含む場合、PUはその特定の位置を「包含」し得る。これらのビデオエンコーダでは、ビデオエンコーダは、参照インデックスソース位置が利用不可能である場合、参照ピクチャインデックス0を使用し得る。
しかしながら、いくつかの例では、現在のPUと関連付けられる参照インデックスソース位置は、現在のCU内にある。これらの例では、現在のPUと関連付けられる参照インデックスソース位置を包含するPUは、そのPUが現在のCUの上または左にある場合、利用可能であると見なされ得る。この場合、ビデオエンコーダは、併置PUを含む参照ピクチャを決定するために、現在のCUの別のPUの動き情報にアクセスする必要があり得る。したがって、これらのビデオエンコーダは、現在のPUに対する時間予測動きベクトル候補を生成するために、現在のCUに属するPUの動き情報(すなわち、参照ピクチャインデックス)を使用し得る。言い換えると、これらのビデオエンコーダは、時間予測動きベクトル候補を生成するために、現在のCUに属するPUの動き情報を使用し得る。したがって、ビデオエンコーダは、現在のPUに対する予測動きベクトル候補リストと、現在のPUと関連付けられる参照インデックスソース位置を包含するPUとを並列に生成することが、不可能であり得る。
本出願の技術によれば、ビデオエンコーダは、任意の他のPUの参照ピクチャインデックスを参照することなく、関連する参照ピクチャインデックスを明示的に設定し得る。このようにして、ビデオエンコーダは、現在のCUの現在のPUおよび別のPUに対する予測動きベクトル候補リストを並列に生成することができる。ビデオエンコーダは関連する参照ピクチャインデックスを明示的に設定するので、関連する参照ピクチャインデックスは、現在のCUのいずれの他のPUの動き情報にも基づかない。ビデオエンコーダが関連する参照ピクチャインデックスを明示的に設定するいくつかの実現可能な実装形態では、ビデオエンコーダは常に、関連する参照ピクチャインデックスを、固定された、あらかじめ定められた、およびあらかじめ設定された参照ピクチャインデックス(たとえば、0)に設定し得る。このようにして、ビデオエンコーダは、あらかじめ設定された参照ピクチャインデックスによって示される参照フレームの中の併置PUの動き情報に基づいて、時間予測動きベクトル候補を生成することができ、時間予測動きベクトル候補は、現在のCUに対する予測動きベクトル候補リストに含まれ得る。
ビデオエンコーダが関連する参照ピクチャインデックスを明示的に設定する実現可能な実装形態では、ビデオエンコーダは、シンタックス構造(たとえば、ピクチャヘッダ、スライスヘッダ、APS、または別のシンタックス構造)において関連する参照ピクチャインデックスを明示的にシグナリングし得る。この実現可能な実装形態では、ビデオエンコーダは、各LCU(すなわち、CTU)、CU、PU、TU、または別のタイプのサブブロックの関連する参照ピクチャインデックスをデコーダ側にシグナリングし得る。たとえば、ビデオエンコーダは、CUの各PUの関連する参照ピクチャインデックスが「1」に等しいことをシグナリングし得る。
いくつかの実現可能な実装形態では、関連する参照ピクチャインデックスは、明示的ではなく暗黙的に設定され得る。これらの実現可能な実装形態では、ビデオエンコーダは、現在のCUの外側の位置を包含するPUの参照ピクチャインデックスによって示される参照ピクチャの中のPUの動き情報を、これらの位置が現在のPUに厳密には隣接していない場合であっても使用することによって、現在のCUのPUに対する予測動きベクトル候補リストの中の各時間予測動きベクトル候補を生成し得る。
現在のPUに対する予測動きベクトル候補リストを生成した後で、ビデオエンコーダは、予測動きベクトル候補リストの中の予測動きベクトル候補と関連付けられる予測ピクチャブロックを生成し得る(S204)。ビデオエンコーダは、示される予測動きベクトル候補の動き情報に基づいて現在のPUの動き情報を決定し、次いで、現在のPUの動き情報によって示される1つまたは複数の参照ブロックに基づいて予測ピクチャブロックを生成して、予測動きベクトル候補と関連付けられる予測ピクチャブロックを生成し得る。次いで、ビデオエンコーダは、予測動きベクトル候補リストから1つの予測動きベクトル候補を選択し得る(S206)。ビデオエンコーダは、様々な方式で予測動きベクトル候補を選択し得る。たとえば、ビデオエンコーダは、予測動きベクトル候補と関連付けられる予測ピクチャブロックの各々のレート歪みコストを分析することによって、1つの予測動きベクトル候補を選択し得る。
予測動きベクトル候補を選択した後で、ビデオエンコーダは、予測動きベクトル候補インデックスを出力し得る(S208)。予測動きベクトル候補インデックスは、予測動きベクトル候補リストにおける選択された予測動きベクトル候補の位置を示し得る。いくつかの実現可能な実装形態では、予測動きベクトル候補インデックスは「merge_idx」として表現され得る。
図6は、本出願の実施形態による、進化型動きベクトル予測(AMVP)モードの実装形態のフローチャートである。ビデオエンコーダ(たとえば、ビデオエンコーダ100)はAMVP動作210を実行し得る。AMVP動作210は、S211:現在の予測ユニットに対する1つまたは複数の動きベクトルを生成することと、S212:現在の予測ユニットに対する予測ビデオブロックを生成することと、S213:現在の予測ユニットに対する候補リストを生成することと、S214:動きベクトル差分を生成することと、S215:候補リストから候補を選択することと、S216:選択された候補のために使用される参照ピクチャインデックス、候補インデックス、および動きベクトル差分を出力することとを含み得る。候補は、動きベクトル候補または動き情報候補である。
ビデオエンコーダがAMVP動作210を開始した後、ビデオエンコーダは、現在のPUに対する1つまたは複数の動きベクトルを生成し得る(S211)。ビデオエンコーダは、現在のPUに対する動きベクトルを生成するために、整数動き推定および分数動き推定を実行し得る。上で説明されたように、現在のピクチャは、2つの参照ピクチャリスト(リスト0およびリスト1)と関連付けられ得る。現在のPUが一方向に予測される場合、ビデオエンコーダは、現在のPUに対するリスト0動きベクトルまたはリスト1動きベクトルを生成し得る。リスト0動きベクトルは、現在のPUに対応するピクチャブロックと、リスト0の中の参照ピクチャの中の参照ブロックとの間の空間的なずれを示し得る。リスト1動きベクトルは、現在のPUに対応するピクチャブロックと、リスト1の中の参照ピクチャの中の参照ブロックとの間の空間的なずれを示し得る。現在のPUが双方向に予測される場合、ビデオエンコーダは、現在のPUに対してリスト0動きベクトルおよびリスト1動きベクトルを生成し得る。
現在のPUに対する1つまたは複数の動きベクトルを生成した後、ビデオエンコーダは、現在のPUに対する予測ピクチャブロックを生成し得る(S212)。ビデオエンコーダは、現在のPUの1つまたは複数の動きベクトルによって示される1つまたは複数の参照ブロックに基づいて、現在のPUに対する予測ピクチャブロックを生成し得る。
加えて、ビデオエンコーダは、現在のPUに対する予測動きベクトル候補リストを生成し得る(S213)。ビデオエンコーダは、様々な方式で、現在のPUに対する予測動きベクトル候補を生成し得る。たとえば、ビデオエンコーダは、図8から図12を参照して以下で説明される実現可能な実装形態のうちの1つまたは複数を使用することによって、現在のPUに対する予測動きベクトル候補リストを生成し得る。いくつかの実現可能な実装形態では、ビデオエンコーダがAMVP動作210において予測動きベクトル候補リストを生成するとき、予測動きベクトル候補リストは、2つの予測動きベクトル候補に限定され得る。対照的に、ビデオエンコーダがマージ動作において予測動きベクトル候補リストを生成するとき、予測動きベクトル候補リストは、より多くの予測動きベクトル候補(たとえば、5つの予測動きベクトル候補)を含み得る。
現在のPUに対する予測動きベクトル候補を生成した後で、ビデオエンコーダは、予測動きベクトル候補リストの中の各予測動きベクトル候補に対する1つまたは複数の動きベクトル差分(MVD)を生成し得る(S214)。ビデオエンコーダは、予測動きベクトル候補に対する動きベクトル差分を生成するために、予測動きベクトル候補によって示される動きベクトルと、現在のPUの対応する動きベクトルとの差を決定し得る。
現在のPUが一方向に予測される場合、ビデオエンコーダは、各予測動きベクトル候補に対する単一のMVDを生成し得る。現在のPUが双方向に予測される場合、ビデオエンコーダは、各予測動きベクトル候補に対して2つのMVDを生成し得る。第1のMVDは、予測動きベクトル候補によって示される動きベクトルと現在のPUのリスト0動きベクトルとの差を示し得る。第2のMVDは、予測動きベクトル候補によって示される動きベクトルと現在のPUのリスト1動きベクトルとの差を示し得る。
ビデオエンコーダは、予測動きベクトル候補リストから1つまたは複数の予測動きベクトル候補を選択し得る(S215)。ビデオエンコーダは、様々な方式で、1つまたは複数の予測動きベクトル候補を選択し得る。たとえば、ビデオエンコーダは、符号化されるべき動きベクトルと関連付けられる動きベクトルと最小限の誤差で一致する、予測動きベクトル候補を選択し得る。これは、予測動きベクトル候補に対する動きベクトル差分を表現するために必要なビットの量を減らすことができる。
1つまたは複数の予測動きベクトル候補を選択した後で、ビデオエンコーダは、現在のPUに対する1つまたは複数の参照ピクチャインデックス、現在のPUに対する1つまたは複数の予測動きベクトル候補インデックス、および1つまたは複数の選択された予測動きベクトル候補に対する1つまたは複数の動きベクトル差分を出力し得る(S216)。
現在のピクチャが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の選択された予測動きベクトル候補のために使用される指示を受信し得る(S222)。たとえば、ビデオデコーダは、現在のPUに対する予測動きベクトル候補リストの中の選択された予測動きベクトル候補の位置を示す、予測動きベクトル候補インデックスを受信し得る。
現在のPUの動き情報がAMVPモードに基づいて符号化され、現在のPUが双方向に予測される場合、ビデオデコーダは、第1の予測動きベクトル候補インデックスおよび第2の予測動きベクトル候補インデックスを受信し得る。第1の予測動きベクトル候補インデックスは、予測動きベクトル候補リストの中の現在のPUのリスト0動きベクトルに対する選択された予測動きベクトル候補の位置を示す。第2の予測動きベクトル候補インデックスは、予測動きベクトル候補リストの中の現在のPUのリスト1動きベクトルに対する選択された予測動きベクトル候補の位置を示す。いくつかの実現可能な実装形態では、2つの予測動きベクトル候補インデックスを特定するために、単一のシンタックス要素が使用され得る。
加えて、ビデオデコーダは、現在のPUに対する予測動きベクトル候補リストを生成し得る(S224)。ビデオデコーダは、様々な方式で、現在のPUに対する予測動きベクトル候補リストを生成し得る。たとえば、ビデオデコーダは、図8から図12を参照して以下で説明される技術を使用することによって、現在のPUに対する予測動きベクトル候補リストを生成し得る。ビデオデコーダが予測動きベクトル候補リストに対する時間予測動きベクトル候補を生成するとき、ビデオデコーダは、図5を参照して上で説明されたように、併置PUを含む参照ピクチャを特定する参照ピクチャインデックスを、明示的または暗黙的に設定し得る。
現在のPUに対する予測動きベクトル候補リストを生成した後で、ビデオデコーダは、現在のPUに対する予測動きベクトル候補リストの中の1つまたは複数の選択された予測動きベクトル候補によって示される動き情報に基づいて、現在のPUの動き情報を決定し得る(S225)。たとえば、現在のPUの動き情報がマージモードに基づいて符号化される場合、現在のPUの動き情報は、選択された予測動きベクトル候補によって示される動き情報と同じであり得る。現在のPUの動き情報がAMVPモードに基づいて符号化される場合、ビデオデコーダは、1つまたは複数の選択された予測動きベクトル候補によって示される1つまたは複数の動きベクトルと、ビットストリームにおいて示される1つまたは複数のMVDとを使用することによって、現在のPUの1つまたは複数の動きベクトルを再構築し得る。現在のPUの参照ピクチャインデックスおよび予測方向インジケータは、1つまたは複数の選択された予測動きベクトル候補の1つまたは複数の参照ピクチャインデックスおよび予測方向インジケータと同じであり得る。現在のPUの動き情報を決定した後で、ビデオデコーダは、現在のPUの動き情報によって示される1つまたは複数の参照ブロックに基づいて、現在のPUに対する予測ピクチャブロックを生成し得る(S226)。
図8は、本出願の実施形態による、コーディング単位(CU)およびコーディング単位(CU)と関連付けられる近隣ピクチャブロックの例の概略図である。図8は、CU250とCU250に関連付けられる位置252Aから252Eにおける例示的な予測動きベクトル候補とを記述するための概略図である。本出願では、位置252Aから252Eにおける予測動きベクトル候補は、位置252における予測動きベクトル候補と総称され得る。位置252における予測動きベクトル候補は、CU250と同じピクチャの中にある空間予測動きベクトル候補を表す。位置252Aにおける予測動きベクトル候補は、CU250の左側に位置する。位置252Bにおける予測動きベクトル候補は、CU250の上に位置する。位置252Cにおける予測動きベクトル候補は、CU250の右上に位置する。位置252Dにおける予測動きベクトル候補は、CU250の左下に位置する。位置252Eにおける予測動きベクトル候補は、CU250の左上に位置する。図8は、インター予測モジュール121および動き補償モジュールが予測動きベクトル候補リストを生成し得る方式の概略的な実装形態を示す。以下では、インター予測モジュール121に基づいて実装形態が説明される。しかしながら、動き補償モジュールが同じ技術を実装できるので、同じ予測動きベクトル候補リストを生成できることを理解されたい。
図9は、本出願の実施形態による、予測動きベクトル候補リストを構築する実装形態のフローチャートである。図9の技術は、5つの予測動きベクトル候補を含むリストに基づいて説明されるが、本明細書において説明される技術は代替的に、別のサイズを有するリストとともに使用され得る。5つの予測動きベクトル候補は各々、インデックス(たとえば、0から4)を有し得る。図9の技術は、一般的なビデオコーデックに基づいて説明される。一般的なビデオコーデックは、たとえば、ビデオエンコーダ(たとえば、ビデオエンコーダ100)またはビデオデコーダ(たとえば、ビデオデコーダ30)であり得る。
図9の実装形態に従って予測動きベクトル候補リストを構築するために、ビデオデコーダはまず、4つの空間予測動きベクトル候補を考慮する(902)。4つの空間予測動きベクトル候補は、位置252A、252B、252C、および252Dにおける予測動きベクトル候補を含み得る。4つの空間予測動きベクトル候補は、現在のCU(たとえば、CU250)と同じピクチャに位置する4つのPUの動き情報に対応し得る。ビデオデコーダは、指定された順序でリストの中の4つの空間予測動きベクトル候補を考慮し得る。たとえば、位置252Aにおける予測動きベクトル候補が最初に考慮され得る。位置252Aにおける予測動きベクトル候補が利用可能である場合、インデックス0は、位置252Aにおける予測動きベクトル候補に割り当てられ得る。位置252Aにおける予測動きベクトル候補が利用不可能である場合、ビデオデコーダは、位置252Aにおける予測動きベクトル候補を予測動きベクトル候補リストに追加するのをスキップし得る。位置における予測動きベクトル候補は、様々な理由で利用不可能であり得る。たとえば、位置における予測動きベクトル候補が現在のピクチャ内にない場合、位置における予測動きベクトル候補は利用不可能であり得る。別の実現可能な実装形態では、位置における予測動きベクトル候補がイントラ予測を受ける場合、位置における予測動きベクトル候補は利用不可能であり得る。別の実現可能な実装形態では、位置における予測動きベクトル候補が現在のCUに対応するスライスとは異なるスライスの中にある場合、位置における予測動きベクトル候補は利用不可能であり得る。
位置252Aにおける予測動きベクトル候補を考慮した後で、ビデオデコーダは、位置252Bにおける予測動きベクトル候補を考慮し得る。位置252Bにおける予測動きベクトル候補が利用可能であり、位置252Aにおける予測動きベクトル候補と異なる場合、ビデオデコーダは、位置252Bにおける予測動きベクトル候補を予測動きベクトル候補リストに追加し得る。この特定の文脈では、「同じ」または「異なる」という用語は、位置における予測動きベクトル候補と関連付けられる動き情報が同じであることまたは異なることを意味する。したがって、位置における2つの予測動きベクトル候補が同じ動き情報を有する場合、位置における2つの予測動きベクトル候補は同じであると見なされ、または、位置における2つの予測動きベクトル候補が異なる動き情報を有する場合、位置における2つの予測動きベクトル候補は異なると見なされる。位置252Aにおける予測動きベクトル候補が利用不可能である場合、ビデオデコーダは、位置252Bにおける予測動きベクトル候補にインデックス0を割り当て得る。位置252Aにおける予測動きベクトル候補が利用可能である場合、ビデオデコーダは、位置252Bにおける予測動きベクトル候補にインデックス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が考慮される例が、一般に説明される。しかしながら、いくつかの実装形態では、すべての予測動きベクトル候補252Aから252Dが予測動きベクトル候補リストにまず追加されてもよく、次いで、繰り返される予測動きベクトル候補が予測動きベクトル候補リストから取り除かれる。
ビデオデコーダが最初の4つの空間予測動きベクトル候補を考慮した後で、予測動きベクトル候補リストは4つの空間予測動きベクトル候補を含むことがあり、または、リストは4つ未満の空間予測動きベクトル候補を含むことがある。リストが4つの空間予測動きベクトル候補を含む場合(904、yes)、ビデオデコーダは時間予測動きベクトル候補を考慮する(906)。時間予測動きベクトル候補は、現在のピクチャと異なるピクチャの併置PUの動き情報に対応し得る。時間予測動きベクトル候補が利用可能であり、最初の4つの空間予測動きベクトル候補と異なる場合、ビデオデコーダは、インデックス4を時間予測動きベクトル候補に割り当てる。時間予測動きベクトル候補が利用不可能である場合、または最初の4つの空間予測動きベクトル候補のうちの1つと同じである場合、ビデオデコーダは、時間予測動きベクトル候補を予測動きベクトル候補リストに追加するのをスキップする。したがって、ビデオデコーダが時間予測動きベクトル候補を考慮した後で(906)、予測動きベクトル候補リストは、5つの予測動きベクトル候補(902において考慮される最初の4つの空間予測動きベクトル候補および906において考慮される時間予測動きベクトル候補)を含んでもよく、または、4つの予測動きベクトル候補(902において考慮される最初の4つの空間予測動きベクトル候補)を含んでもよい。予測動きベクトル候補リストが5つの予測動きベクトル候補を含む場合(908、yes)、ビデオデコーダはリストの構築を完了する。
予測動きベクトル候補リストが4つの予測動きベクトル候補を含む場合(908、no)、ビデオデコーダは、第5の空間予測動きベクトル候補を考慮し得る(910)。第5の空間予測動きベクトル候補は(たとえば)、位置252Eにおける予測動きベクトル候補に対応し得る。位置252Eにおける予測動きベクトル候補が利用可能であり、位置252A、252B、252C、および252Dにおける予測動きベクトル候補と異なる場合、ビデオデコーダは、第5の空間予測動きベクトル候補を予測動きベクトル候補リストに追加し、インデックス4を第5の空間予測動きベクトル候補に割り当て得る。位置252Eにおける予測動きベクトル候補が利用不可能である場合、または位置252A、252B、252C、および252Dにおける予測動きベクトル候補のうちの1つと同じである場合、ビデオデコーダは、位置252Eにおける予測動きベクトル候補を予測動きベクトル候補リストに追加するのをスキップし得る。したがって、第5の空間予測動きベクトル候補が考慮された後(910)、リストは5つの予測動きベクトル候補(902において考慮される最初の4つの空間予測動きベクトル候補および910において考慮される第5の空間予測動きベクトル候補)を含んでもよく、または、4つの予測動きベクトル候補(902において考慮される最初の4つの空間予測動きベクトル候補)を含んでもよい。
予測動きベクトル候補リストが5つの予測動きベクトル候補を含む場合(912、yes)、ビデオデコーダは、予測動きベクトル候補リストの生成を完了する。予測動きベクトル候補リストが4つの予測動きベクトル候補を含む場合(912、no)、ビデオデコーダは、リストが5つの予測動きベクトル候補を含むまで(916、yes)、人工的に生成された予測動きベクトル候補を追加する(914)。
リストが4つ未満の空間予測動きベクトル候補を含む場合(904、no)、ビデオデコーダが最初の4つの空間予測動きベクトル候補を考慮した後で、ビデオデコーダは第5の空間予測動きベクトル候補を考慮し得る(918)。第5の空間予測動きベクトル候補は(たとえば)、位置252Eにおける予測動きベクトル候補に対応し得る。位置252Eにおける予測動きベクトル候補が利用可能であり、予測動きベクトル候補リストの中の既存の予測動きベクトル候補とは異なる場合、ビデオデコーダは、第5の空間予測動きベクトル候補を予測動きベクトル候補リストに追加し、次の利用可能なインデックスを第5の空間予測動きベクトル候補に割り当て得る。位置252Eにおける予測動きベクトル候補が利用不可能である場合、または予測動きベクトル候補リストの中の既存の予測動きベクトル候補のうちの1つと同じである場合、ビデオデコーダは、位置252Eにおける予測動きベクトル候補を予測動きベクトル候補リストに追加するのをスキップし得る。次に、ビデオデコーダは、時間予測動きベクトル候補を考慮し得る(920)。時間予測動きベクトル候補が利用可能であり、予測動きベクトル候補リストの中の既存の予測動きベクトル候補とは異なる場合、ビデオデコーダは、時間予測動きベクトル候補を予測動きベクトル候補リストに追加し、次の利用可能なインデックスを時間予測動きベクトル候補に割り当て得る。時間予測動きベクトル候補が利用不可能である場合、または予測動きベクトル候補リストの中の既存の予測動きベクトル候補のうちの1つと同じである場合、ビデオデコーダは、時間予測動きベクトル候補を予測動きベクトル候補リストに追加するのをスキップし得る。
第5の空間予測動きベクトル候補(918における)および時間予測動きベクトル候補(920における)が考慮された後、予測動きベクトル候補リストが5つの予測動きベクトル候補を含む場合(922、yes)、ビデオデコーダは、予測動きベクトル候補リストの生成を完了する。予測動きベクトル候補リストが5つ未満の予測動きベクトル候補を含む場合(922、no)、ビデオデコーダは、リストが5つの予測動きベクトル候補を含むまで(916、yes)、人工的に生成された予測動きベクトル候補を追加する(914)。
本出願の技術によれば、追加のマージ予測動きベクトル候補が、空間予測動きベクトル候補および時間予測動きベクトル候補の後で人工的に生成され得るので、マージ予測動きベクトル候補のサイズは一定であり、マージ予測動きベクトル候補リストは、指定された量(たとえば、図9の前述の実現可能な実装形態では5つ)のマージ予測動きベクトル候補を含む。追加のマージ予測動きベクトル候補は、組み合わせられた双予測マージ予測動きベクトル候補(予測動きベクトル候補1)、スケーリングされた双予測マージ予測動きベクトル候補(予測動きベクトル候補2)、およびゼロベクトルマージ/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がref0およびref0'を有するmvL0_Aをスケーリングすることによって計算され得る。スケーリングはPOC(Picture Order Count)距離に依存し得る。次いで、双予測マージ予測動きベクトル候補(リスト0の中のmvL0_Aおよびref0と、リスト1の中のref0'とを有する)が生成されてもよく、双予測マージ予測動きベクトル候補が繰り返されるかどうかが確認される。双予測マージ予測動きベクトル候補が繰り返されない場合、双予測マージ予測動きベクトル候補が、マージ予測動きベクトル候補リストに追加され得る。
図12は、本出願のある実施形態による、ゼロ動きベクトルをマージモード予測動きベクトル候補リストに追加する例の概略図である。ゼロベクトルマージ予測動きベクトル候補は、ゼロベクトルと参照され得る参照インデックスとを組み合わせることによって生成され得る。ゼロベクトルマージ予測動きベクトル候補が繰り返されない場合、ゼロベクトルマージ予測動きベクトル候補が、マージ予測動きベクトル候補リストに追加され得る。各々の生成されたマージ予測動きベクトル候補の動き情報は、リストの中の以前の予測動きベクトル候補の動き情報と比較され得る。
ある実現可能な実装形態では、新しく生成された予測動きベクトル候補が、予測動きベクトル候補リストの中の既存の予測動きベクトル候補と異なる場合、生成された予測動きベクトル候補がマージ予測動きベクトル候補リストに追加される。予測動きベクトル候補が予測動きベクトル候補リストの中の既存の予測動きベクトル候補と異なるかどうかを決定するプロセスは、プルーニング(pruning)と呼ばれることがある。プルーニングを通じて、各々の新しく生成された予測動きベクトル候補が、リストの中の既存の予測動きベクトル候補と比較され得る。いくつかの実現可能な実装形態では、プルーニング動作は、1つまたは複数の新しい予測動きベクトル候補を予測動きベクトル候補リストの中の既存の予測動きベクトル候補と比較することと、予測動きベクトル候補リストの中の既存の予測動きベクトル候補と同じ新しい予測動きベクトル候補を追加するのをスキップすることとを含み得る。いくつかの他の実現可能な実装形態では、プルーニング動作は、1つまたは複数の新しい予測動きベクトル候補を予測動きベクトル候補リストに追加することと、次いで、繰り返される予測動きベクトル候補をリストから取り除くこととを含み得る。
以下は、いくつかのインター予測の実装形態を説明する。本出願における第1のあらかじめ設定されたアルゴリズムおよび第2のあらかじめ設定されたアルゴリズムは、インター予測の実装形態のうちの1つまたは複数を含み得る。
ピクチャ間予測は、ピクチャサンプルのブロックに対する動き補償された予測(motion-compensated prediction, MCP)を導出するために、ピクチャ間の時間的な相関を使用する。
このブロックベースのMCPでは、ビデオピクチャは長方形のブロックへと分割される。同種の動きが1つのブロックの内部で発生し、移動している物体が1つのブロックより大きいと仮定すると、各ブロックに対して、以前に復号されたピクチャの中の対応するブロックを発見することができ、これが予測値として機能する。並進動きモデルを使用すると、以前に復号されたピクチャにおけるブロックの位置は動きベクトル(Δx,Δy)によって示され、Δxは現在のブロックの位置に対する水平方向のずれを指定し、Δyは現在のブロックの位置に対する垂直方向のずれを指定する。動きベクトル(Δx,Δy)は、背後にある物体の動きをより正確に捉えるために、分数サンプルの正確さを有し得る。対応する動きベクトルが分数サンプルの正確さを有するとき、予測信号を導出するために、参照ピクチャに対して補間が適用される。以前に復号されたピクチャは、参照ピクチャと呼ばれ、参照ピクチャリストに対応する参照インデックスΔtによって示される。これらの並進動きモデルパラメータ、すなわち動きベクトルおよび参照インデックスはさらに、動きデータと呼ばれる。2つのタイプのピクチャ間予測が、現代のビデオコーディング規格、すなわち単予測および双予測において許容される。
双予測の場合、動きデータの2つのセット(Δx0,Δy0,Δt0,およびΔx1,Δy1,Δt1)が(場合によっては異なるピクチャから)2つのMCPを生成するために使用され、これらは次いで最終的なMCPを得るために組み合わされる。デフォルトでは、これは平均化によって行われるが、加重予測の場合には、たとえばシーンフェードアウトを補償するために、異なる重みが各MCPに適用され得る。双予測において使用され得る参照ピクチャは、2つの別々のリスト、すなわち、リスト0およびリスト1に記憶される。双予測を許容するスライスにおけるメモリ帯域幅を制約するために、HEVC規格は、4×8または8×4ルマ予測ブロックを伴うPUを、単予測のみを使用することに制約する。動きデータは、動き補償プロセスを使用することによってエンコーダにおいて導出される。動き推定はビデオ規格内で指定されないので、様々なエンコーダが、エンコーダの実装の間に様々な複雑さと品質のトレードオフを利用することができる。
ブロックの動きデータは近隣ブロックと相関付けられる。この相関を活用するために、動きデータはビットストリームにおいて直接コーディングされず、近隣動きデータに基づいて予測的にコーディングされる。HEVCでは、2つの概念がそのために使用される。動きベクトルの予測コーディングは、進化型動きベクトル予測(advanced motion vector prediction, AMVP)と呼ばれる新しいツールを導入することによってHEVCにおいて改善され、このとき、各動きブロックに対する最良の予測値がデコーダにシグナリングされる。加えて、インター予測ブロックマージングと呼ばれる新しい技術が、近隣ブロックからのブロックのすべての動きデータを導出するために使用される。このようにして、H.264/AVCにおけるダイレクトモードとスキップモードが置き換えられる。
進化型動きベクトル予測
以前のビデオコーディング規格において記述されているように、HEVC動きベクトルは、水平(x)成分と垂直(y)成分に基づく動きベクトル予測値(motion vector prediction value, MVP)への差分としてコーディングされる。2つの動きベクトル差分(MVD)成分は、式(1.1)および(1.2)に従って計算される。
MVDX=Δx-MVPX (1.1)
MVDY=Δy-MVPY (1.2)
現在のブロックの動きベクトルは通常、現在のピクチャまたはより前のコーディングされたピクチャの中の近隣ブロックの動きベクトルと相関付けられる。これは、近隣ブロックが、同様の動きをもつ同じ動いている物体に対応する可能性が高く、その物体の動きが時間とともに突然変わる可能性は高くないからである。したがって、予測値として近隣ブロックの動きベクトルを使用すると、シグナリングされる動きベクトル差分が減る。MVPは通常、併置ピクチャの中の空間的な近隣ブロックまたは時間的な近隣ブロックのすでに復号された動きベクトルから導出される。いくつかの場合、代替的に、ゼロ動きベクトルがMVPとして使用され得る。H.264/AVCにおいて、これは、3つの空間的な近隣動きベクトルの成分ごとのメジアンを実行することによって実施される。この手法を使用すると、予測値のシグナリングは必要とされない。併置ピクチャからの時間的なMVPは、H.264/AVCにおけるいわゆる時間ダイレクトモードのみにおいて考慮される。H.264/AVCダイレクトモードも、動きベクトル以外の動きデータを導出するために使用される。
HEVCでは、MVPを暗黙的に導出するための手法は、動きベクトル補償として知られる技術によって置き換えられた。この技術は、MVPのリストからのどのMVPが動きベクトル導出のために使用されるかを明示的にシグナリングする。HEVCにおける可変コーディング四分木ブロック構造が、動きベクトルを伴ういくつかの近隣ブロックを有する1つのブロックを、潜在的なMVP候補として機能させ得る。進化型動きベクトル予測(Advanced Motion Vector Prediction, AMVP)の初期の設計は、予測値の3つの異なるクラス、すなわち、空間的な近隣からの3つの動きベクトル、3つの空間予測値のメジアン、および併置された時間的な近隣ブロックからのスケーリングされた動きベクトルからの、5つのMVPを含んでいた。さらに、予測値のリストは、第1の位置に最も確率の高い動き予測値を置くように並び替えることによって、および、シグナリングオーバーヘッドが最小限になることを確実にするために冗長候補を取り除くことによって修正された。次いで、メジアン予測値を取り除くこと、リストの中の候補の量を5つから2つに減らすこと、リストにおける候補の順序を固定すること、および冗長性の確認の量を減らすことなどの、AMVP設計の大幅な簡略化が開発される。AMVP候補リスト構築の最終的な設計は、以下の2つのMVP候補、すなわち、a.5つの空間的な近隣ブロックから導出された最大で2つの空間MVP候補、b.両方の空間MVP候補が利用不可能または同一であるとき、2つの時間的な併置ブロックから導出される1つの時間MVP候補、およびc.空間候補、時間候補、または空間候補と時間候補の両方が利用不可能であるとき、ゼロ動きベクトルを含む。
すでに言及されたように、2つの空間MVP候補AおよびBが5つの空間的な近隣ブロックから導出される。空間的なブロック候補の位置は、AMVPとインター予測ブロックマージングの両方に対して同じである。候補Aに対して、左下の角における2つのブロックA0およびA1の動きデータが、2パス手法において考慮される。第1のパスにおいて、候補ブロックのいずれかが、現在のブロックの参照インデックスに等しい参照インデックスを含むかどうかが確認される。発見される第1の動きベクトルは、候補Aとして使用される。A0からA1のすべての参照インデックスが、現在のブロックの参照インデックスとは異なる参照ピクチャを指しているとき、関連付けられる動きベクトルをそのまま使用することはできない。したがって、第2のパスにおいて、動きベクトルは、参照ピクチャ候補と現在の参照ピクチャとの間の時間的な距離に基づいてスケーリングされる必要がある。式(1.3)は、動きベクトル候補mvcandがスケーリング係数に基づいてどのようにスケーリングされるかを示す。ScaleFactorは、現在のピクチャとブロック候補tdの参照ピクチャとの間の時間的な距離、および、現在のピクチャと現在のブロックtbの参照ピクチャとの間の時間的な距離に基づいて計算される。時間的な距離は、ピクチャの表示順序を定義するピクチャ順序カウント(picture order count, POC)値間の差に関して表現される。スケーリング動作は、H.264/AVCの時間ダイレクトモードのために使用される方式と基本的に同じである。この要素分解は、スライスヘッダにおいてシグナリングされる参照ピクチャリスト構造のみに依存するので、この要素分解はスライスレベルにおけるScaleFactorの事前計算を可能にする。MVスケーリングは、現在の参照ピクチャと参照ピクチャ候補の両方が短期の参照ピクチャであるときにのみ実行されることに留意されたい。パラメータtdは、併置ピクチャと、併置ブロック候補に対する参照ピクチャとの間のPOC差分として定義される。
mv=sign(mvcand・ScaleFactor)((|mvcand・ScaleFactor|+27)>>8) (1.3)
ScaleFactor=clip(-212,212-1,(tb・tx+25)>>6) (1.4)
候補Bに対して、候補B0からB2は、A0およびA1が第1のパスにおいて確認される方式と同じ方式で逐次確認される。しかしながら、第2のパスは、ブロックA0およびA1がどのような動き情報も含まないとき、言い換えると、ブロックA0およびA1が利用不可能であるとき、またはイントラピクチャ予測を通じてコーディングされるときにのみ、実行される。次いで、候補Aが発見される場合、候補Aはスケーリングされていない候補Bに等しく設定され、候補Bは候補Bの第2のスケーリングされていないまたはスケーリングされた変形に等しく設定される。第2のパスにおいて、スケーリングされていないMVおよびスケーリングされたMVを候補B0~B2から導出するために、検索が実行される。全体として、この設計は、B0、B1、およびB2とは独立にA0とA1を処理することを可能にする。Bの導出は、スケーリングされたMVまたは追加のスケーリングされていないMVをB0~B2から導出するための検索を実行するために、A0とA1の両方の利用可能性を認識しているだけであるべきである。この依存性は、それが候補Bに対する複雑な動きベクトルスケーリング動作を大きく減らすことを考えれば、受け入れられる。動きベクトルスケーリングの量を減らすことで、動きベクトル予測値導出プロセスにおける複雑さが大幅に減る。
HEVCでは、現在のブロックの右下および中央にあるブロックが、良好な時間動きベクトル予測値(temporal motion vector prediction value, TMVP)をもたらすのに最も適したブロックであると決定された。これらの候補の中で、C0は右下の近隣ブロックを表し、C1は中央ブロックを表す。ここでも、C0の動きデータがまず考慮される。C0の動きデータが利用不可能である場合、中央にある併置ブロック候補の動きデータが、時間MVP候補Cを導出するために使用される。C0の動きデータはまた、関連するPUが現在のCTU行を超えるCTUに属しているとき、利用不可能であると見なされる。これにより、併置動きデータを記憶するためのメモリ帯域幅要件が最低限になる。その動きベクトルが同じ参照ピクチャを指し得る空間MVP候補とは対照的に、動きベクトルスケーリングがTMVPに対して必須である。したがって、空間MVPに対するスケーリング動作と同じスケーリング動作が使用される。
H.264/AVCにおける時間ダイレクトモードは常に、第2の参照ピクチャリスト、すなわちリスト1の中の第1の参照ピクチャを参照し、双予測スライスにおいてのみ許容されるが、HEVCは、各ピクチャに対して、どの参照ピクチャが併置ピクチャであると見なされるかを示すことが可能である。これは、併置参照ピクチャリストおよび参照ピクチャインデックスをスライスヘッダにおいてシグナリングすることと、ピクチャの中のすべてのスライスの中のこれらのシンタックス要素が同じ参照ピクチャを指定することを要求することとによって、実施される。
時間MVP候補はさらなる依存性をもたらすので、時間MVP候補の使用は、誤りに対するロバスト性のために無効にされる必要があり得る。H.264/AVCでは、スライスヘッダの中の双予測スライスに対して時間ダイレクトモードを無効にすることが可能である(direct_spatial_mv_pred_flag)。HEVCシンタックスは、シーケンスレベルまたはピクチャレベルでTMVPを無効にすることを許容することによって、このシグナリングを拡張する(sps/slice_temporal_mvp_enabled_flag)。フラグはスライスヘッダにおいてシグナリングされるが、フラグの値が1つのピクチャの中のすべてのスライスに対して同じでなければならないという、ビットストリーム適合の要件がある。ピクチャレベルフラグのシグナリングはSPSフラグに依存するので、PPSにおけるピクチャレベルフラグのシグナリングは、SPSとPPSとの間で解析の依存性をもたらし得る。このスライスヘッダシグナリングの別の利点は、PPSにおけるこのフラグの値のみが、別のパラメータを変更することなく変更されることが望ましく、第2のPPSを送信する必要がないということである。
一般に、HEVCにおける動きデータシグナリングは、H/264/AVCにおける動きデータシグナリングと同様である。ピクチャ間予測シンタックス要素inter_pred_idcは、参照リスト0が使用されるか、参照リスト1が使用されるか、または参照リスト0と参照リスト1の両方が使用されるかをシグナリングする。1つの参照ピクチャリストから得られる各MCPに対して、対応する参照ピクチャ(Δt)は、参照ピクチャリストに対するインデックスref_idx_l0/1によってシグナリングされ、MV(Δx,Δy)はMVPに対するインデックスmvp_l0/1_flag、およびMVPのMVDによって表される。スライスヘッダの中の新しく導入されるフラグmvd_l1_zero_flagは、第2の参照ピクチャリストに対するMVDが0に等しいかどうか、および、したがってビットストリームにおいてシグナリングされないかどうかを示す。動きベクトルが完全に再構築されると、最終的なクリッピング動作は、最終的な動きベクトルの各成分の値が両端を含めて-215から215-1の範囲内に常にあることを確実にする。
ピクチャ間予測ブロッホ(Bloch)マージング
AMVPリストは、1つの参照リストに対する動きベクトルのみを含むが、マージ候補は、1つまたは2つの参照ピクチャリストが使用されるかどうか、ならびに、各リストに対する参照インデックスおよび動きベクトルについての情報を含む、すべての動きデータを含む。全体として、マージ候補リストは、次の候補、すなわち、a.5つの空間的な近隣ブロックから導出される最大で4つの空間マージ候補、b.2つの時間的な併置ブロックから導出される1つの時間マージ候補、ならびにc.組み合わせられた双予測候補およびゼロ動きベクトル候補を含む追加のマージ候補に基づいて構築される。
マージ候補リストの中の第1の候補は、空間的な近隣である。A1、B1、B0、A0、およびB2は逐次的に確認され、最大で4つの候補が、この順序でマージリストに挿入され得る。
近隣ブロックが利用可能であり動き情報を含むかどうかをただ確認するのではなく、近隣ブロックのすべての動きデータがマージ候補として使用される前に、いくつかの追加の冗長性確認が実行される。これらの冗長性確認は、a.冗長動きデータを伴う候補がリストの中にないようにすること、およびb.冗長シンタックスを作り出し得る他の手段により表現され得る2つの区分のマージを防ぐことという、2つの異なる目的で、2つのカテゴリへと分割され得る。
Nが空間マージ候補の量を表すとき、完全な冗長性確認は、
回の動きデータの比較からなる。5つの潜在的な空間マージ候補の場合、マージリストの中のすべての候補が異なる動きデータを有することを確実にするために、10回の動きデータの比較が実行される必要がある。HEVCの開発の間に、比較論理を大幅に減らしながらコーディング効率が維持されるように、冗長な動きデータに対する確認がサブセットへと減らされた。最終的な設計では、候補当たり2回だけの比較が実行され、全体で5回の比較がある。{A1,B1,B0,A0,B2}という順序を仮定すると、B0はB1のみを確認し、A0はA1のみを確認し、B2はA1とB1のみを確認する。冗長性確認の区分が実行される実施形態では、2N×Nの区分の下側PUが、候補B1を選択することによって上側PUとマージされる。この場合、1つのCUが同じ動きデータを伴う2つのPUを有する。CUは、2N×2NのCUとして等しくシグナリングされ得る。全体では、この確認は、長方形の非対称な区分のすべての第2のPU、すなわち、2N×N、2N×nU、2N×nD、N×2N、nR×2N、およびnL×2Nに対して当てはまる。空間マージ候補に対して、冗長性確認が実行され、動きデータが候補ブロックからそのままコピーされることに留意されたい。したがって、ここでは動きベクトルのスケーリングは必要とされない。
時間マージ候補の動きベクトルは、TMVPを導出する方式と同じ方式で導出される。マージ候補はすべての動きデータを含み、TMVPは1つだけの動きベクトルであるので、動きデータ全体の導出がスライスタイプだけに依存する。双予測スライスに対して、TMVPが各参照ピクチャリストのために導出される。各リストに対するTMVPの利用可能性に応じて、予測タイプは、双予測に、または、TMVPが利用可能であるリストに設定される。すべての関連する参照ピクチャインデックスは0に等しく設定される。したがって、単予測スライスでは、リスト0に対するTMVPだけが、0に等しい参照ピクチャインデックスと一緒に導出される。
少なくとも1つのTMVPが利用可能であり、時間マージ候補がリストに追加されるとき、冗長性確認は実行されない。これは、マージリストの構築を併置ピクチャとは無関係にするので、誤りに対する回復力を高める。時間マージ候補が冗長であり、したがってマージ候補リストに含まれない事例が考慮され、併置ピクチャが失われるとき、デコーダは、時間候補を導出することができないので、時間候補が冗長であるかどうかを確認しない。これは、すべての後続の候補のインデクシングに影響する。
解析のロバスト性のために、マージ候補リストは一定の長さを有する。空間マージ候補および時間マージ候補が追加された後でも、リストはその一定の長さに達しないことがある。長さ適応的ではないリストインデックスシグナリングに付随するコーディング効率の損失を補償するために、追加の候補が生成される。スライスタイプに応じて、a.組み合わせられた双予測候補、およびb.ゼロ動きベクトル候補という、最大で2つのタイプの候補が、リストを完全に埋めるために使用され得る。
双予測スライスにおいて、1つの候補の参照ピクチャリスト0動きデータと別の候補の参照ピクチャリスト1動きデータを組み合わせることによって、追加の候補が既存の候補に基づいて生成され得る。これは、第1の候補などの1つの候補からΔx0、Δy0、およびΔt0をコピーし、第2の候補などの別の候補からΔx1、Δy1、およびΔt1をコピーすることによって実施される。様々な組合せがあらかじめ定められており、表1.1において与えられる。
組み合わせられた双予測候補が追加された後でもまだリストが埋まっていないとき、または単予測スライスに対してリストが埋まっていない場合、リストを完成させるためにゼロ動きベクトル候補が計算される。すべてのゼロ動きベクトル候補は、単予測スライスに対する1つのゼロ視差動きベクトルと、双予測スライスに対する2つのゼロ視差動きベクトルとを有する。参照インデックスは0に等しく設定され、最大の量の参照インデックスに達するまで、各々の追加の候補に対して1だけインクリメントされる。この場合、まだ欠けている他の候補がある場合、0に等しい参照インデックスが、これらの候補を作成するために使用される。すべての追加の候補に対して、冗長性の確認は実行されず、それは、これらの確認を省略してもコーディング効率の損失をもたらさないことがわかっているからである。
ピクチャ間予測モードに基づいてコーディングされる各PUに対して、merge_flagは、ブロックのマージが動きデータを導出するために使用されることを示し、merge_idxがさらに、マージリストの中にありMCPに対して必要とされるすべての動きデータを提供する候補を決定するために使用される。このPUレベルのシグナリングに加えて、マージリストの中の候補の量は、スライスヘッダにおいてシグナリングされる。デフォルト値は5であるので、それは5に対する差分として表現される(five_minus_max_num_merge_cand)。このようにして、0のための短い符号語を用いて、5がシグナリングされる。1つの候補だけが使用される場合、5は4のためのより長い符号語を用いてシグナリングされる。マージ候補リスト構築プロセスに対する影響に関して、全体のプロセスは同じままであるが、リストが最大の量のマージ候補を含んだ後でプロセスは終了する。初期の設計において、マージインデックスのコーディングのための最大値は、リストの中の利用可能な空間候補と時間候補の量によって与えられる。たとえば、2つだけの候補が利用可能であるとき、インデックスはフラグとして効率的にコーディングされ得る。しかしながら、マージインデックスを解析するためには、候補の実際の量を知るためにマージ候補リスト全体が構築されなければならない。近隣ブロックが送信エラーにより利用不可能であるとすると、もはやマージインデックスを解析することはできない。
HEVCのブロックマージングの概念の重要な応用は、スキップモードとの組合せである。以前のビデオコーディング規格では、動きデータは明示的にシグナリングされるのではなく推測され、予測残差が0であることを、ブロックについて示すために、スキップモードが使用される。言い換えると、変換係数は送信されない。HEVCでは、ピクチャ間予測スライスの中の各CUの最初に、a.CUが1つだけのPUを含むこと(2N×2N区分タイプ)と、b.マージモードが動きデータを導出するために使用されること(1に等しいmerge_flag)と、c.残差データがビットストリームに存在しないこととを示唆する、skip_flagがシグナリングされる。
領域を示す並列マージ推定レベルが、HEVCにおいて導入される。マージ候補リストは、ブロック候補がマージ推定領域(MER)に位置するかどうかを確認することによって、独立に導出され得る。同じMERの中のブロック候補は、マージ候補リストに含まれない。したがって、候補ブロックの動きデータは、リストの構築の間に利用可能である必要はない。このレベルが、たとえば32であるとき、32×32の領域の中のすべての予測ユニットを、マージ候補リストを並列に構築するために使用することができ、それは、同じ32×32のMERの中のすべてのマージ候補がリストに挿入されるのではないからである。第1のPU 0に対するすべての潜在的なマージ候補が利用可能であり、それは、すべての潜在的なマージ候補が第1の32×32のMERの外側にあるからである。第2のMERについて、MERの内部のマージ推定が独立であるべきであるとき、PU 2から6に対するマージ候補リストは、これらのPUからの動きデータを含むことができない。したがって、たとえば、PU 5が見られるとき、マージ候補は利用可能ではないので、マージ候補リストに挿入されない。この場合、PU5に対するマージリストは、時間候補(利用可能な場合)およびゼロMV候補のみを含む。エンコーダが並列処理とコーディング効率のトレードオフをとることを可能にするために、並列マージ推定レベルは適応的であり、ピクチャパラメータセットにおいてlog2_parallel_merge_level_minus2としてシグナリングされる。
サブCUベースの動きベクトル予測
新しいビデオコーディング技術の開発の間、QTBTを用いると、各CUは、各予測方向に対する動きパラメータの多くても1つのセットを有し得る。大きいCUをサブCUへと区分して、大きいCUのすべてのサブCUに対する動き情報を導出することによって、2つのサブCUレベル動きベクトル予測方法がエンコーダにおいて考慮される。代替時間動きベクトル予測(alternative temporal motion vector prediction, ATMVP)法は、各CUが、併置参照ピクチャの中の現在のCUより小さい複数のブロックから動き情報の複数のセットをフェッチすることを可能にする。空間時間動きベクトル予測(spatial-temporal motion vector prediction, STMVP)法では、サブCUの動きベクトルは、時間動きベクトル予測値と空間近隣動きベクトルを使用することによって再帰的に導出される。
サブCU動き予測のためのより正確な動きフィールドを維持するために、参照フレームのための動き補償は現在無効にされている。
代替時間動きベクトル予測
代替時間動きベクトル予測(alternative temporal motion vector prediction, ATMVP)法では、動きベクトルに対する時間動きベクトル予測(temporal motion vector prediction, TMVP)は、現在のCUより小さいブロックから動き情報の複数のセット(動きベクトルおよび参照インデックスを含む)をフェッチすることによって修正される。サブCUは正方形のN×Nブロック(Nはデフォルトで4に設定される)である。
ATMVPは、CUの中のサブCUの動きベクトルを2つのステップで予測する。第1のステップは、時間ベクトルを使用することによって、参照ピクチャの中の対応するブロックを特定することである。参照ピクチャは動きソースピクチャと呼ばれる。第2のステップは、現在のCUをサブCUへと区分し、サブCUに対応するブロックから各サブCUの動きベクトルおよび参照インデックスを取得することである。
第1のステップにおいて、参照ピクチャおよび対応するブロックは、現在のCUの空間近隣ブロックの動き情報に基づいて決定される。近隣ブロックに対する反復的な走査プロセスを避けるために、現在のCUに対するマージ候補リストの中の第1のマージ候補が使用される。第1の利用可能な動きベクトルおよび第1の利用可能な動きベクトルと関連付けられる参照インデックスは、動きソースピクチャの時間ベクトルおよびインデックスとなるように設定される。このようにして、TMVPと比較して、ATMVPでは、対応するブロックをより正確に特定することができる。TMVPでは、対応するブロック(併置ブロックと呼ばれることがある)は常に、現在のCUに対して右下または中心の位置に配置される。
第2のステップにおいて、サブCUの対応するブロックは、現在のCUの座標に時間ベクトルを加算することによって、動きソースピクチャの中の時間ベクトルによって特定される。各サブCUに対して、サブCUの対応するブロックの動き情報(中心のサンプルを包含する最小の動きグリッド)が、サブCUに対する動き情報を導出するために使用される。対応するN×Nブロックの動き情報が特定された後で、動き情報は、HEVCにおけるTMVPと同じ方式で、現在のサブCUの動きベクトルおよび参照インデックスへと変換され、動きスケーリングおよび他の手順が適用される。たとえば、デコーダは、低遅延条件(すなわち、現在のピクチャのすべての参照ピクチャのPOCが現在のピクチャのPOCより小さい)が満たされるかどうかを確認し、場合によっては、各サブCUに対する動きベクトルMVy(Xは0または1に等しく、Yは1-Xに等しい)を予測するために、動きベクトルMVx(参照ピクチャリストXに対応する動きベクトル)を使用する。
空間時間動きベクトル予測
この方法では、サブCUの動きベクトルは、ラスタ走査順序に従って再帰的に導出される。8×8のCUは4つの4×4のサブCU A、B、C、およびDを含むと見なされる。現在のフレームの中の近隣の4×4のブロックは、a、b、c、およびdとして標識される。
サブCU Aのための動き導出は、サブCU Aの2つの空間的な近隣を特定することによって開始する。第1の近隣は、サブCU A(すなわち、ブロックc)の上のN×Nブロックである。ブロックcが利用不可能である場合、またはイントラコーディングされる場合、サブCU Aの上の他のN×Nブロックが確認される(ブロックcから始まって、左から右に)。第2の近隣は、サブCU A(すなわち、ブロックb)の左のブロックである。ブロックbが利用不可能である場合、またはイントラコーディングされる場合、サブCU Aの左の他のブロックが確認される(ブロックbから始まって、上から下に)。各リストに対する近隣ブロックから得られる動き情報は、所与のリストに対する第1の参照フレームにスケーリングされる。次に、サブブロックAの時間動きベクトル予測値(temporal motion vector prediction value, TMVP)が、HEVCにおいて指定されたのと同じTMVP導出の手順に従って導出される。位置Dにおける併置ブロックの動き情報が、それに従ってフェッチされスケーリングされる。最後に、動き情報が取り出されてスケーリングされた後で、すべての利用可能な動きベクトル(最大で3つ)が、各参照リストに対して別々に平均化される。平均化された動きベクトルは、現在のサブCUの動きベクトルとして割り当てられる。
マージモードとの組合せ
追加のマージ候補として、サブCUモードが有効にされ、モードをシグナリングするために、追加のシンタックス要素は必要とされない。ATMVPモードおよびSTMVPモードを表現するために、2つの追加のマージ候補が各CUに対するマージ候補リストに追加される。ATMVPおよびSTMVPが有効にされることをシーケンスパラメータセットが示す場合、最高で7つのマージ候補が使用される。追加のマージ候補の符号化論理は、HMにおけるマージ候補の符号化論理と同じである。これは、PまたはBスライスの中の各CUについて、2回以上のRD確認が2つの追加のマージ候補に対して実行される必要があることを意味する。
アフィン動き補償予測
ブロックのアフィン動きフィールドは、2つの制御点動きベクトルを使用することによって記述される。
ブロックの動きベクトルフィールド(motion vector field, MVF)は、以下の式に従って記述される。
ここで、(v0x,v0y)は左上の角の制御点の動きベクトルを表し、(v1x,v1y)は右上の角の制御点の動きベクトルを表す。
動き補償予測をさらに簡略化するために、サブブロックベースのアフィン変換予測が適用される。サブブロックサイズM×Nは式(1.7)に従って導出され、MvPreは動きベクトル分数正確度(たとえば、1/16)を表し、(v2x,v2y)は式(1.6)に従って計算される左下の制御点の動きベクトルを表す。
サブブロックサイズM×Nが式(1.7)に従って導出された後で、MおよびNは、必要であればMおよびNをそれぞれwおよびhの約数にするために、下方に調整され得る。
各M×Nサブブロックの動きベクトルを導出するために、サブブロックの中心サンプルの動きベクトルが式(1.6)に従って計算され、1/16分数精度へと丸められる。
アフィンインターモード
幅と高さがともに8より大きいCUに対して、AF_INTERモードが適用され得る。AF_INTERモードが使用されるかどうかを示すために、CUレベルにおけるアフィンフラグがビットストリームにおいてシグナリングされる。このモードでは、動きベクトルペア{(v0,v1)|v0={vA,vB,vC},v1={vD,vE}}を伴う候補リストが、近隣ブロックを使用することによって構築される。v0が、ブロックA、B、またはCの動きベクトルから選択される。近隣ブロックからの動きベクトルは、参照リストに従って、および、近隣ブロックに対する参照のPOCと、現在のCUに対する参照のPOCと、現在のCUのPOCとの間の関係に従ってスケーリングされる。近隣ブロックDおよびEからv1を選択するために使用される手法は同様である。候補リストの量が2より小さい場合、リストは、各AMVP候補を複製することによって成り立つ動きベクトルペアによりパディングされる。候補リストの量が2より大きいとき、候補はまず、近隣動きベクトルの一貫性(ペア候補の中の2つの動きベクトルの類似性)に従ってソートされ、最初の2つの候補だけが維持される。どの動きベクトルペア候補が現在のCUの制御点動きベクトル予測(control point motion vector prediction, CPMVP)として選択されるかを決定するために、RDコスト確認が使用され、候補リストにおけるCPMVPの位置を示すインデックスがビットストリームにおいてシグナリングされる。CPMVとCPMVPとの差は、ビットストリームにおいてシグナリングされる。
アフィンマージモード
CUがAF_MERGEモードにおいて適用されるとき、アフィンモードに基づいてコーディングされる第1のブロックは、有効な近隣の再構築されたブロックから取得される。候補ブロックの選択順序は、左、上、右上、左下、左上である。左下の近隣ブロックAがアフィンモードに基づいてコーディングされる場合、ブロックAを含むCUの左上、右上、および左下の動きベクトルv2、v3、およびv4が導出される。加えて、現在のCUの左上の動きベクトルv0は、v2、v3、およびv4に従って計算される。次いで、現在のCUの右上の動きベクトルv1が計算される。
現在のCUがAF_MERGEモードに基づいてコーディングされるかどうかを特定するために、アフィンモードに基づいてコーディングされる少なくとも1つの近隣ブロックがあるとき、アフィンフラグがビットストリームにおいてシグナリングされる。
パターンマッチング動きベクトル導出
パターンマッチング動きベクトル導出(pattern matched motion vector derivation, PMMVD)モードは、フレームレートアップ変換(Frame-Rate Up Conversion, FRUC)技術に基づく。このモードでは、ブロックの動き情報はシグナリングされず、デコーダ側で導出される。
CUのマージフラグが真であるとき、CUのFRUCフラグがシグナリングされる。FRUCフラグが偽であるとき、マージインデックスがシグナリングされ、正規マージモードが使用される。FRUCフラグが真であるとき、ブロックの動き情報を導出するためにどの方法(バイラテラルマッチングまたはテンプレートマッチング)が使用されるべきかを示すために、追加のFRUCモードフラグがシグナリングされる。
エンコーダ側で、CUに対するFRUCマージモードを使用するかどうかの決定は、普通のマージ候補に対して行われるようなRDコスト選択に基づく。すなわち、2つのマッチングモード(バイラテラルマッチングおよびテンプレートマッチング)が両方とも、RDコスト選択を使用することによってCUに対して確認される。最小コストにつながるモードはさらに、他のCUモードと比較される。FRUCマッチングモードが最も効率的なモードである場合、FRUCフラグはCUに対して真に設定され、関連するマッチングモードが使用される。
FRUCマージモードにおける動き導出プロセスは2つのステップを含む。CUレベルの動き検索がまず実行され、続いて、サブCUレベルの動き改善が行われる。CUレベルにおいて、バイラテラルマッチングまたはテンプレートマッチングに基づいて、CU全体に対して最初の動きベクトルが導出される。まず、MV候補のリストが生成され、最小のマッチングコストにつながる候補が、さらなるCUレベルの改善のための始点として選択される。次いで、始点の周りのバイラテラルマッチングまたはテンプレートマッチングに基づくローカル検索が実行され、最小のマッチングコストにつながるMVがCU全体のMVとして使用される。続いて、動き情報はさらに、導出されたCU動きベクトルを始点として使用することによって、サブCUレベルで改善される。
たとえば、以下の導出プロセスが、W×H CUの動き情報導出のために実行される。第1の段階で、W×H CU全体のMVが導出される。第2の段階で、CUがM×MサブCUにさらに区分される。Mの値は式(1.8)に従って計算され、Dはあらかじめ定められた区分深度を表し、JEMではデフォルトで3に設定される。次いで、各サブCUのMVが導出される。
バイラテラルマッチングは、2つの異なる参照ピクチャの中の現在のCUの動き軌跡に沿って2つのブロックの間の最も近い一致を発見することによって、現在のCUの動き情報を導出するために使用される。連続的な動き軌跡の仮定のもとでは、2つの参照ブロックを指す動きベクトルMV0およびMV1は、現在のピクチャと2つの参照ピクチャとの間の時間距離、すなわちTD0およびTD1に比例するものとする。現在のピクチャが時間的に2つの参照ピクチャ間にあり、現在のピクチャと2つの参照ピクチャとの間の時間的な距離が同じであるとき、バイラテラルマッチングはミラーベースの双方向MVになる。
バイラテラルマッチングマージモードでは、双予測が常に適用され、それは、CUの動き情報が2つの異なる参照ピクチャの中の現在のCUの動き軌跡に沿った2つのブロック間の最も近い一致に基づいて導出されるからである。テンプレートマッチングマージモードにはそのような制限はない。テンプレートマッチングマージモードでは、エンコーダは、リスト0からの単予測、リスト1からの単予測、またはCUに対する双予測を選択することができる。選択は、次のようにテンプレートマッチングコストに基づく。
costBi<=factor*min(cost0,cost1)の場合、
双予測が使用される;
そうではなく、cost0<=cost1の場合、
リスト0からの単予測が使用される;
それ以外の場合、
リスト1からの単予測が使用される。
cost0はリスト0テンプレートマッチングのSADを表し、cost1はリスト1テンプレートマッチングのSADを表し、costBiは双予測テンプレートマッチングのSADを表す。係数の値は1.25に等しく、これは、選択プロセスが双予測に偏っていることを意味する。インター予測方向の選択は、CUレベルのテンプレートマッチングプロセスのみに適用される。
テンプレートマッチングは、現在のピクチャの中のテンプレート(現在のCUの上および/または左の近隣ブロック)と参照ピクチャの中のブロック(テンプレートと同じサイズの)との間の最も近い一致を発見することによって、現在のCUの動き情報を導出するために使用される。前述のFRUCマージモードを除き、テンプレートマッチングはAMVPモードにも適用される。テンプレートマッチング法を使用することによって、新しい候補が導出される。テンプレートマッチングを通じて導出された新しい候補が、最初の既存のAMVP候補と異なる場合、AMVP候補リストの最初に新しい候補が挿入され、次いでリストのサイズが2に設定される(これは、第2の既存のAMVP候補が取り除かれることを意味する)。テンプレートマッチングがAMVPモードに適用されるとき、CUレベルの検索だけが適用される。
CUレベルにおけるMV候補セットは、a.AMVPモードが現在のCUのために使用される場合に選択される元のAMVP候補、b.すべてのマージ候補、c.補間されたMVフィールドの中のいくつかのMV、およびd.上と左の近隣動きベクトルを含む。
上で言及された補間されたMVフィールドは、ピクチャ全体がユニラテラルMEに基づいてコーディングされる前に生成されることに留意されたい。次いで、動きフィールドが、CUレベルまたはサブCUレベルのMV候補として後で使用され得る。まず、2つの参照リストの中の各参照ピクチャの動きフィールドが、4×4ブロックレベルで網羅される。各4×4ブロックに対して、ブロックと関連付けられる動きが現在のピクチャの中の4×4ブロックを通過し、ブロックがどのような補間された動きも割り当てられていない場合、参照ブロックの動きは、時間距離TD0およびTD1に基づいて(HEVCのTMVPにおけるMVスケーリングと同じ方式で)現在のピクチャにスケーリングされ、スケーリングされた動きは現在のフレームの中のブロックに割り当てられる。スケーリングされたMVが4×4ブロックに割り当てられない場合、ブロックの動きは、補間された動きフィールドにおいて利用不可能であるものとして標識される。
バイラテラルマッチングが使用されるとき、マージ候補の各々の有効なMVが、バイラテラルマッチングの仮定のもとでMVペアを生成するために入力として使用される。たとえば、マージ候補の1つの有効なMVは、参照リストAの中の(MVa,refa)である。そして、そのペアのバイラテラルMVの参照ピクチャrefbが、他方の参照リストBにおいて発見される。このようにして、refaおよびrefbは、現在のピクチャの異なる側に時間的に位置する。そのようなrefbが参照リストBにおいて利用不可能である場合、refbはrefaとは異なる参照として決定され、refbと現在のピクチャとの間の時間距離は、リストBにおいて最小のものになる。refbが決定された後で、MVbは、現在のピクチャとrefaとの間の時間距離、および現在のピクチャとrefbとの間の時間距離に基づいてMVaをスケーリングすることによって導出される。
補間されたMVフィールドからの4つのMVも、CUレベルの候補リストに追加される。より具体的には、現在のCUの位置(0,0)、(W/2,0)、(0,H/2)、および(W/2,H/2)における補間されたMVが追加される。
FRUCがAMVPモードに適用されるとき、元のAMVP候補も、CUレベルのMV候補セットに追加される。
CUレベルで、AMVP CUの最高で15個のMV、およびマージCUの最高で13個のMVが、候補リストに追加される。
サブCUレベルにおけるMV候補セットは、a.CUレベル検索から決定されるMV、b.上、左、左上、および右上の近隣MV、c.参照ピクチャからの併置MVのスケーリングされたバージョン、d.最高で4つのATMVP候補、およびe.最高で4つのSTMVP候補を含む。
参照ピクチャからのスケーリングされたMVは、次のように導出される。両方のリストの中のすべての参照ピクチャが網羅され、参照ピクチャにおけるサブCUの併置される位置においてMVが、開始CUレベルのMVの参照にスケーリングされる。
ATMVPおよびSTMVP候補は、4つの最初の候補に限定される。
サブCUレベルにおいて、最高で17個のMVが候補リストに追加される。
動きベクトル改善
動きベクトルは、様々なインター予測モードと組み合わせる様々な方法を使用することによって改善され得る。
FRUCにおけるMV改善
MV改善は、バイラテラルマッチングコストまたはテンプレートマッチングコストの基準を用いた、パターンベースのMV検索である。現在の開発では、それぞれ、無制約中心バイアスダイヤモンド検索(unrestricted center-biased diamond search, UCBDS)、ならびにCUレベルおよびサブCUレベルにおけるMV改善のために使用される適応クロス検索という、2つの検索パターンがサポートされる。CUレベルとサブCUレベルの両方のMV改善のために、MVは4分の1ルマサンプルのMV正確度で直接検索され、この後に8分の1ルマサンプルのMV正確度で検索される。CUおよびサブCUステップに対するMV改善の検索範囲は、8ルマサンプルに等しく設定される。
デコーダ側動きベクトル改善
双予測動作において、1つのブロック領域の予測のために、リスト0 MVおよびリスト1 MVを使用してそれぞれ形成される2つの予測ブロックが、単一の予測信号を形成するために組み合わせられる。デコーダ側動きベクトル改善(decoder-side motion vector refinement, DMVR)法では、双予測の2つの動きベクトルはさらに、バイラテラルテンプレートマッチングプロセスを使用することによって改善される。バイラテラルテンプレートマッチングがデコーダにおいて適用されて、バイラテラルテンプレートと参照ピクチャの中の再構築されたサンプルとの間の歪みベースの検索を実行し、追加の動き情報の送信なしで改善されたMVを取得する。
DMVRでは、バイラテラルテンプレートは、それぞれ最初のリスト0 MV0およびリスト1 MV1からの、2つの予測ブロックの重み付けられた組合せ(すなわち、平均)として生成される。テンプレートマッチング動作は、生成されたテンプレートと、参照ピクチャの中のサンプル領域(最初の予測ブロックの周りの)との間のコスト尺度を計算することを含む。2つの参照ピクチャの各々に対して、最小のテンプレートコストを生むMVが、元のMVを置き換えるべき、リストに対する更新されたMVと見なされる。現在の開発では、9個のMV候補が各リストに対して検索される。9個のMV候補は、元のMVと、水平方向と垂直方向のいずれか、または、水平方向と垂直方向の両方において、元のMVに対する1ルマサンプルオフセットを伴う8個の周囲のMVとを含む。最後に、2つの新しいMV、すなわちMV 0'およびMV 1'が、最終的な双予測結果を生成するために使用される。絶対差分和(sum of absolute difference, SAD)がコスト尺度として使用される。
DMVRは、追加のシンタックス要素を送信することのない、過去の参照ピクチャからの1つのMV、および未来の参照ピクチャからの別のMVを用いた双予測のマージモードのために適用される。
動きデータの精度と記憶
動きデータ記憶削減
AMVPにおける、ならびにマージモードにおけるTMVPの使用は、併置参照ピクチャへの動きデータ(動きベクトル、参照インデックス、およびコーディングモードを含む)の記憶を必要とする。動き表現の粒度を考慮すると、動きデータを記憶するために必要とされるメモリサイズは莫大である。HEVCは、参照ピクチャの中の動きデータをサブサンプリングすることによって、動きデータバッファのサイズと、関連するメモリアクセス帯域幅とを減らすために、動きデータ記憶削減(motion data storage reduction, MDSR)を利用する。H.264/AVCでは、情報は4×4ブロックごとに記憶されるが、HEVCでは16×16ブロックが使用される。4×4グリッドをサブサンプリングする場合、左上の4×4ブロックの情報が記憶される。このサブサンプリングにより、MDSRは、時間予測の品質に影響を与える。
さらに、併置ピクチャにおいて使用されるMVの位置と、MDSRを使用することによって記憶されるMVの位置との間には、密接な相関がある。HEVCの規格化プロセスの間に、右下と中央のTMVP候補と一緒に、16×16領域の内部の左上ブロックの動きデータを記憶することで、コーディング効率とメモリ帯域幅削減との間の最良のトレードオフがもたらされることがわかっている。
より高い動きベクトル記憶の正確度
HEVCにおいて、動きベクトルの正確度は4分の1ペル(4:2:0ビデオに対して4分の1ルマサンプルおよび8分の1クロマサンプル)である。現在の開発では、内部の動きベクトル記憶とマージ候補の正確度は、1/16ペルに向上する。より高い動きベクトル正確度(1/16ペル)が、スキップ/マージモードに基づいてコーディングされるCUに対する動き補償インター予測において使用される。普通のAMVPモードに基づいてコーディングされるCUに対しては、整数ペル動きまたは4分の1ペル動きのいずれかが使用される。
適応動きベクトル差分分解能
HEVCでは、動きベクトル差分(motion vector difference, MVD)は、use_integer_mv_flagがスライスヘッダにおいて0に等しいとき、4分の1ルマサンプルの単位でシグナリングされる。現在の開発では、ローカル適応動きベクトル分解能(locally adaptive motion vector resolution, LAMVR)が導入される。MVDは、4分の1ルマサンプル、整数ルマサンプル、または4ルマサンプルの単位でコーディングされ得る。MVD分解能は、コーディング単位(coding unit, CU)レベルで制御され、MVD分解能フラグは、少なくとも1つの0ではないMVD成分を有する各CUに対して条件的にシグナリングされる。
少なくとも1つの0ではないMVD成分を有するCUに対して、4分の1ルマサンプルMV精度がCUのために使用されるかどうかを示すために、第1のフラグがシグナリングされる。第1のフラグ(これは1に等しい)が、4分の1ルマサンプルMV精度が使用されないことを示すとき、整数ルマサンプルMV精度が使用されるか、または4ルマサンプルMV精度が使用されるかを示すために、別のフラグがシグナリングされる。
CUの第1のMVD分解能フラグが0であるとき、またはCUに対してコーディングされない(これはCUに対するすべてのMVDが0であることを意味する)とき、4分の1ルマサンプルMV分解能がCUのために使用される。整数ルマサンプルMV精度または4ルマサンプルMV精度がCUのために使用されるとき、CUのためのAMVP候補リストの中のMVPは、対応する精度に丸められる。
エンコーダにおいて、どのMVD分解能がCUのために使用されるべきであるかを決定するために、CUレベルのRD確認が使用される。すなわち、各MVD分解能に対して3回、CUレベルのRD確認が実行される。
分数サンプル補間モジュール
動きベクトルが分数サンプル位置を指すとき、動き補償された補間が必要とされる。表1.2に示されるように、ルマ補間フィルタリングのために、8タップの分離可能なDCTベースの補間フィルタが2/4精度サンプルのために使用され、7タップの分離可能なDCTベースの補間フィルタが1/4精度サンプルのために使用される。
同様に、表1.3に示されるように、4タップの分離可能なDCTベースの補間フィルタが、クロマ補間フィルタのために使用される。
4:2:2クロマチャネルに対する垂直補間、ならびに4:4:4クロマチャネルに対する水平および垂直補間に対しては、表1.3における奇数位置は使用されず、1/4クロマ補間となる。
双予測では、補間フィルタの出力のビット深度は、2つの予測信号の平均化の前に、ソースビット深度とは無関係に14ビットの正確度に維持される。実際の平均化プロセスは、ビット深度削減プロセスとともに次のように暗黙的に実行される。
predSamples[x,y]=(predSamplesL0[x,y]+predSamplesL1[x,y]+offset)>>shift (1.9)
shift=15-BitDepth (1.10)
offset=1<<(shift-1) (1.11)
複雑さを減らすために、普通の8タップHEVC補間の代わりに、双線形補間が、バイラテラルマッチングとテンプレートマッチングの両方のために使用される。
マッチングコストの計算は、異なるステップでは少し異なる。候補がCUレベルにおける候補セットから選択されるとき、マッチングコストは、バイラテラルマッチングまたはテンプレートマッチングのSADである。開始MVが決定された後で、サブCUレベルの検索におけるバイラテラルマッチングのマッチングコストCは、次のように計算される。
wは4に経験的に設定される加重係数を表し、MVおよびMVSはそれぞれ、現在のMVおよび開始MVを示す。それでもSADが、サブCUレベルの検索におけるテンプレートマッチングのマッチングコストとして使用される。
FRUCモードでは、MVはルマサンプルのみを使用することによって導出される。導出された動きベクトルは、MCインター予測ではルマとクロマの両方のために使用されることになる。MVが決定された後で、最終的なMCが、ルマに対して8タップ補間フィルタを、クロマに対して4タップ補間フィルタを使用することによって実行される。
動き補償モジュール
オーバーラップブロック動き補償
オーバーラップブロック動き補償(Overlapped Block Motion Compensation, OBMC)は、現在の開発では、CUの右と下の境界を除く、すべての動き補償(motion compensation, MC)ブロック境界に対して実行される。その上、オーバーラップブロック動き補償は、ルマ成分とクロマ成分の両方に適用される。MCブロックはコーディングブロックに対応する。CUがサブCUモード(サブCUマージモード、アフィンモード、およびFRUCモードを含む)に基づいてコーディングされるとき、CUの各サブブロックはMCブロックである。CUの境界を均一に処理するために、OBMCは、すべてのMCブロック境界に対してサブブロックレベルで実行され、サブブロックサイズは4×4に等しく設定される。
OBMCが現在のサブブロックに適用されるとき、現在の動きベクトルに加えて、4つの接続された近隣サブブロックの動きベクトルが利用可能であり、現在の動きベクトルと同一ではない場合、4つの接続された近隣サブブロックの動きベクトルも、現在のサブブロックに対する予測ブロックを導出するために使用される。複数の動きベクトルに基づく複数のこれらの予測ブロックは、現在のサブブロックの最終的な予測信号を生成するために組み合わせられる。
近隣サブブロックの動きベクトルに基づく予測ブロックはPNと表記され、Nは上側、下側、左側、または右側の近隣サブブロックのインデックスを表し、現在のサブブロックの動きベクトルに基づく予測ブロックはPCと表記される。PNが、現在のサブブロックと同じ動き情報を含む近隣サブブロックの動き情報に基づくとき、OBMCはPNから実行されない。それ以外の場合、PNの1つ1つのサンプルが、PCの中の同じサンプルに追加される。すなわち、PNの4つの行/列がPCに追加される。加重係数{1/4,1/8,1/16,1/32}がPNのために使用され、加重係数{3/4,7/8,15/16,31/32}がPCのために使用される。例外は小さいMCブロックであり(すなわち、コーディングブロックの高さまたは幅が4に等しいとき、またはCUがサブCUモードに基づいてコーディングされるとき)、およびそのようなブロックに対して、PNの2つだけの行/列がPCに追加される。この場合、加重係数{1/4,1/8}がPNのために使用され、加重係数{3/4,7/8}がPCのために使用される。垂直の(水平の)近隣サブブロックの動きベクトルに基づいて生成されるPNに対して、PNの同じ行(列)の中のサンプルは、同じ加重係数を用いてPCに追加される。
現在の開発では、256ルマサンプル以下のサイズのCUに対して、OBMCが現在のCUに対して適用されるかされないかを示すために、CUレベルフラグがシグナリングされる。256ルマサンプルより大きいサイズのCU、またはAMVPモードに基づいてコーディングされないCUに対して、OBMCがデフォルトで適用される。エンコーダにおいて、OBMCがCUに対して適用されるとき、OBMCの影響が動き推定段階において考慮される。上側の近隣ブロックおよび左側の近隣ブロックの動き情報を使用することによってOBMCを通じて形成される予測信号は、現在のCUの元の信号の上側と左側の境界を補償するために使用され、次いで、普通の動き推定処理が適用される。
最適化ツール
ローカル照明補償
ローカル照明補償(Local Illumination Compensation, LIC)は、スケーリング係数aおよびオフセットbを使用した、照明変化に対する線形モデルに基づく。ローカル照明補償は、各々のインターモードコーディングされたコーディング単位(coding unit, CU)に対して適応的に有効または無効にされる。
LICがCUに対して適用されるとき、最小二乗誤差法が、現在のCUの近隣サンプルおよび対応する参照サンプルを使用することによって、パラメータaおよびbを導出するために利用される。CUのサブサンプリングされた(2:1サブサンプリング)近隣サンプルおよび参照ピクチャの中の対応するサンプル(現在のCUまたはサブCUの動き情報によって特定される)が使用される。LICパラメータは、各予測方向に対して別々に導出され適用される。
CUがマージモードに基づいてコーディングされるとき、LICフラグが、マージモードにおける動き情報のコピーと同様の方式で、近隣ブロックからコピーされる。それ以外の場合、LICが適用されるかどうかを示すために、LICフラグがCUに対してシグナリングされる。
LICがピクチャに対して有効にされるとき、LICがCUに対して適用されるかどうかを決定するために、追加のCUレベルのRD確認が必要である。LICがCUに対して有効にされるとき、SADおよびSATDの代わりに、平均値分離絶対差分和(mean-removed sum of absolute difference, MR-SAD)および平均値分離絶対アダマール変換差分和(mean-removed sum of absolute Hadamard-transformed difference, MR-SATD)が、整数ペル動き検索および分数ペル動き検索のためにそれぞれ使用される。
双方向オプティカルフロー
双方向オプティカルフロー(Bi-directional Optical flow, BIO)は、双予測のためのブロックごとの動き補償に加えて実行されるサンプルごとの動き改善である。サンプルレベルの動き改善はシグナリングを使用しない。
I(k)をブロック動き補償の後の参照k(k=0,1)からのルマ値とし、∂I(k)/∂xおよび∂I(k)/∂yはそれぞれ、I(k)の勾配の水平成分および垂直成分を表す。オプティカルフローが有効であると仮定すると、動きベクトルフィールド(vx,vy)は式(1.13)に従って与えられる。
∂I(k)/∂t+vx∂I(k)/∂x+vy∂I(k)/∂y=0 (1.13)
各サンプルの動き軌跡に対して、このオプティカルフローの式をエルミート補間と組み合わせることで、端部において関数値I(k)と導関数∂I(k)/∂xおよび∂I(k)/∂yとの両方と一致する固有の3次多項式が得られる。t=0におけるこの多項式の値は、BIO予測値である。
predBIO=1/2(I(0)+I(l)+vx/2(τ1∂I(1)/∂x-τ0∂I(0)/∂x)+vy/2(τ1∂I(1)/∂y-τ0∂I(0)/∂y)) (1.14)
ここで、τ0およびτ1は、参照フレームへの距離を表す。距離τ0およびτ1は、Ref0およびRef1に対するPOCに基づいて計算され、τ0=POC(現在)-POC(Ref0)、τ1=POC(Ref1)-POC(現在)である。両方の予測が同じ時間方向から来る(両方とも過去から、または両方とも未来からのいずれか)場合、符号が異なる(すなわち、τ0・τ1<0)。この場合、BIOは、予測が同じ瞬間からのものではない場合(すなわち、τ0≠τ1)にのみ適用され、両方の参照される領域が0ではない動きベクトルを有し(MVx0,MVy0,MVx1,MVy1≠0)、ブロック動きベクトルは時間距離に比例する(MVx0/MVx1= MVy0/MVy1=-τ0/τ1)。
動きベクトルフィールド(vx,vy)は、点Aにおける値と点Bにおける値の差Δ(動き軌跡および参照フレーム平面の交差)を最小にすることによって決定される。モデルは、Δに対する局所的なテイラー展開の最初の線形項だけを使用する。
式(1.15)の中のすべての値はサンプル位置(i',j')に依存し、これはこれまで表記から省略されていた。動きが局所的な周辺領域において一貫していると仮定すると、Δは、現在の予測される点(i,j)を中心とする(2M+1)×(2M+1)の正方形区間Ωの内部で最小になり、Mは2に等しい。
この最適化問題のために、現在の開発は、まず垂直方向において、次いで水平方向において最小化を行う、簡略化された手法を使用する。以下の式が得られる。
ここで、
0または非常に小さい値による除算を避けるために、正規化パラメータrおよびmが、式(1.17)および(1.18)において導入される。
r=500・4d-8 (1.20)
m=700・4d-8 (1.21)
ここで、dはビデオサンプルのビット深度を表す。
BIOに対するメモリアクセスを、通常の双予測動き補償に対するメモリアクセスと同じままにするために、すべての予測値および勾配値I(k)、∂I(k)/∂x、∂I(k)/∂yが、現在のブロックの内部の位置に対してのみ計算される。式(1.19)において、予測ブロックの境界上の現在の予測点を中心とする(2M+1)×(2M+1)の正方形の枠Ωは、ブロックの外側の位置にアクセスする必要がある。現在の開発では、ブロックの外部のI(k)、∂I(k)/∂x、∂I(k)/∂yの値は、ブロックの内部の最も近い利用可能な値に等しく設定される。たとえば、これはパディングとして実装され得る。
BIOを用いると、動きフィールドが各サンプルに対して改善されることが可能である。しかしながら、計算の複雑さを下げるために、BIOのブロックベース設計が使用され得る。動き改善は、4×4ブロックに基づいて計算される。ブロックベースのBIOでは、4×4ブロックの中のすべてのサンプルの式(1.19)におけるsnの値が集約され、次いで、snの集約された値が、4×4ブロックに対するBIO動きベクトルオフセットを導出するために使用される。ブロックベースのBIOの導出のために、以下の式が使用される。
bkは、予測ブロックの第kの4×4ブロックに属するサンプルのセットを表記する。式(1.17)および(1.18)のsnは、関連する動きベクトルオフセットを導出するために((sn,bk)>>4)によって置き換えられる。
いくつかの場合、BIOの大量のMVは、ノイズまたは不規則な動きにより信頼性がないことがある。したがって、BIOでは、大量のMVの規模は閾値thBIOに制限される。閾値は、現在のピクチャの参照ピクチャがすべて一方向からのものであるかどうかに基づいて決定される。現在のピクチャのすべての参照ピクチャが一方向からのものである場合、閾値の値は12×214-dに設定され、それ以外の場合、値は12×213-dに設定される。
BIOに対する勾配は、HEVC動き補償プロセス(2Dの分離可能なFIR)と一貫する動作を使用することによって、動き補償補間を用いて同時に計算される。2Dの分離可能なFIRの入力は、ブロック動きベクトルの分数部分に従った動き補償プロセスおよび分数位置(fracX,fracY)と同じ参照フレームサンプルである。水平方向の勾配∂I/∂x信号の場合、まず、垂直補間が、スケーリング解除シフトd-8を用いて、分数位置fracYに対応するBIOfilterSを使用することによって実行され、次いで、勾配フィルタBIOfilterGが、18-dのスケーリング解除シフトを用いて、分数位置fracXに対応する水平方向に適用される。垂直方向の勾配∂I/∂yの場合、まず、勾配フィルタは、スケーリング解除シフトd-8を用いて、分数位置fracYに対応するBIOfilterGを使用することによって垂直に適用され、次いで、18-dのスケーリング解除シフトを用いて、分数位置fracXに対応する水平方向にBIOfilterSを使用することによって、信号の消除が実行される。勾配計算のための補間フィルタBIOfilterGおよび信号消除のための補間フィルタBIOfilterSの長さは、適切な複雑さを維持するためにより短い(6タップ)。表1.4は、BIOにおけるブロック動きベクトルの異なる分数位置における勾配計算のために使用されるフィルタを示す。表1.5は、BIOにおける予測信号生成のための補間フィルタを示す。
現在の開発では、2つの予測が異なる参照ピクチャからのものであるとき、BIOはすべての双予測ブロックに適用される。LICがCUに対して有効にされるとき、BIOは無効にされる。OBMCは、普通のMCプロセスの後でブロックに対して適用される。計算の複雑さを下げるために、BIOはOMBCプロセスにおいて適用されない。これは、BIOが、ブロックのMVが使用されるときにはブロックに対するMCプロセスにおいてのみ適用されるが、近隣ブロックのMVがOBMCプロセスにおいて使用されるときにはMCプロセスにおいて適用されないことを意味する。
加重サンプル予測モジュール
任意選択のツールとして、加重予測(weighed prediction, WP)ツールがHEVCにおいて提供される。WPの原理は、線形加重予測信号P'(重みwおよびオフセットoを伴う)によってインター予測信号Pを置き換えることである。
単予測:P'=w×P+0 (1.23)
双予測:P'=(w0×P0+o0+w1×P1+o1)/2 (1.24)
適用可能な重みおよび適用可能なオフセットは、エンコーダによって選択され、ビットストリーム内で搬送される。L0およびL1の接尾辞は、それぞれ、参照ピクチャリストのリスト0およびリスト1を定義する。補間フィルタのために、予測信号が平均化される前に、ビット深度は14ビットの正確度に維持される。
リストL0およびL1の各々において利用可能な少なくとも1つの参照ピクチャを用いた双予測の場合、以下の式が、ルマチャネルに関する加重予測パラメータの明示的なシグナリングに適用される。対応する式は、クロマチャネルに、および単予測の場合に適用される。
ここで、
log2WD=luma_log2_weight_denom+14-bitDepth,
w0=LumaWeightL0[refIdxL0], wl=LumaWeightL[refIdxL1],
o0=luma_offset_l0[refIdxL0]*highPrecisionScaleFactor,
o1=luma_offset_l1[refIdxL1]*highPrecisionScaleFactor,
highPrecisionScaleFactor=(1<<(bitDepth-8))
境界予測フィルタ(Boundary prediction filter)は、一番左の列および一番上の行の予測サンプルをさらに調整するために使用されるイントラコーディング方法である。HEVCでは、イントラ予測ブロックが垂直イントラモードまたは水平イントラモードのために生成された後で、一番左の列および一番上の行の予測サンプルが、それぞれさらに調整される。この方法は、いくつかの対角イントラモードへとさらに拡張されてもよく、最高で4列または4行の境界サンプルがさらに、2タップフィルタ(イントラモード2および34のための)または3タップフィルタ(イントラモード3から6および30から33のための)を使用することによって調整される。
HEVC規格および以前の規格では、参照フレームは、順方向参照フレームおよび逆方向参照フレームという2つのグループへと分類され、2つの参照フレームリスト(reference picture list)にそれぞれ配置される。2つの参照フレームリストは通常、リスト0およびリスト1と名付けられる。現在のブロックに対して、順方向予測、逆方向予測、または双予測のいずれの予測方向が使用されるかを示すために、インター予測方向が使用され、異なる参照フレームリスト、すなわち、リスト0、リスト1、またはリスト0とリスト1の両方が、予測方向に基づいて選択される。選択された参照フレームリストの中の参照フレームは、参照フレームインデックスによって示される。現在のフレームの中の現在のブロックに対する相対的な、選択された参照フレームの中の現在のブロックの予測ブロックの参照ブロックの位置オフセットを示すために、動きベクトルが使用される。次いで、最終的な予測ブロックが、リスト0、リスト1、またはリスト0とリスト1の両方の中の参照フレームから得られた予測ブロックを使用することによって、予測方向に基づいて生成される。予測方向が単予測であるとき、リスト0またはリスト1の中の参照フレームから得られた予測ブロックが直接使用される。予測方向が双予測であるとき、リスト0とリスト1の両方の中の参照フレームから得られた予測ブロックは、最終的な予測ブロックを得るために加重平均を通じて合成される。
インター予測モードに基づいて得られる予測サンプルが空間的に不連続であり、予測効率が影響を受け、予測残差エネルギーが比較的大きいという従来の技術の問題を解決するために、本出願の実施形態は、予測サンプルが生成された後で近隣の再構築されたサンプルを使用することによって予測サンプルをフィルタリングし、コーディング効率を改善するための、インター予測方法を提供する。
図13は、本出願の実施形態によるインター予測方法の概略フローチャートである。図13に示されるように、方法はステップS1301からS1307を含む。
S1301:処理対象ピクチャブロックの動き情報を取得するためにビットストリームを解析する。
処理対象ピクチャブロックは、現在のブロックまたは現在のCUと呼ばれ得る。
ステップS1301は、図1のビデオデコーダ200によって実行され得ることが理解され得る。
たとえば、本出願のこの実施形態では、現在のコーディングブロックの最適な一致するブロックのための符号化されたブロックを検索するために、ブロックベースの動き補償技術が使用され得るので、予測ブロックと現在のブロックとの間の残差は可能な限り小さく、現在のブロックのオフセットMVを計算するために使用される。
たとえば、処理対象ピクチャブロックは、ピクチャの中のいずれのブロックであってもよく、処理対象ピクチャブロックのサイズは、2×2、4×4、8×8、16×16、32×32、64×64、または128×128であってもよい。これは、本出願のこの実施形態では限定されない。
たとえば、処理対象ピクチャブロック(現在のブロック)がマージ(merge)モードに基づいてエンコーダ側で符号化される場合、現在のブロックの空間候補および時間候補は、現在のブロックに対するマージ動き情報候補リストに追加され得る。方法はHEVCにおける方法と同じである。たとえば、図8から図12で説明された技術のいずれの1つも、マージ動き情報候補リストを取得するための具体的な方法として使用され得る。
たとえば、マージモードが現在のブロックのために使用される場合、現在のブロックの動き情報は、ビットストリームにおいて搬送されるマージインデックスに基づいて決定される。インターMVPモードが現在のブロックのために使用される場合、現在のブロックの動き情報は、ビットストリームにおいて送信される、インター予測方向、参照フレームインデックス、動きベクトル予測値インデックス、および動きベクトル残差値に基づいて決定される。
ステップS1301は、HEVCもしくはVTMにおける方法を使用することによって実行されてもよく、または、動きベクトル予測候補リストを生成するための別の方法を使用することによって実行されてもよい。これは、本出願のこの実施形態において限定されない。
S1302:(任意選択)処理対象ピクチャブロックの予測ブロックを更新すると決定する。
ステップS1302は、図1のビデオデコーダ200によって実行され得ることが理解され得る。
処理対象ピクチャブロックの予測ブロックは、現在のブロックの予測ブロックであり、1つまたは複数の符号化されたブロックに基づいて取得され得る。
たとえば、処理対象ピクチャブロックの予測ブロックを更新するかどうかは、処理対象ピクチャブロックの更新決定インジケータに基づいて決定され得る。言い換えると、処理対象ピクチャブロックに対して空間フィルタリングを実行するかどうかは、処理対象ピクチャブロックの更新決定インジケータに基づいて決定され得る。
ある実現可能な実装形態では、ビットストリームは、処理対象ピクチャブロックの更新決定指示情報を取得するために解析されてもよく、更新決定指示情報は、処理対象ピクチャブロックの予測ブロックを更新するかどうかを示すために使用され、処理対象ピクチャブロックの更新決定指示情報に基づいて、処理対象ピクチャブロックの予測ブロックが更新されるべきであることがさらに決定される。
別の実現可能な実装形態では、処理対象ピクチャブロックのあらかじめ設定された更新決定指示情報が取得されてもよく、あらかじめ設定された更新決定指示情報は、処理対象ピクチャブロックの予測ブロックを更新するかどうかを示すために使用され、あらかじめ設定された更新決定指示情報に基づいて、処理対象ピクチャブロックの予測ブロックが更新されるべきであることがさらに決定される。
たとえば、更新決定インジケータが真である場合、処理対象ピクチャブロックの予測ブロックが更新されるべきであることが決定され得る。言い換えると、空間フィルタリングが、処理対象ピクチャブロックの予測ブロックに対して実行されるべきであることが決定される。更新決定インジケータが偽である場合、処理対象ピクチャブロックの予測ブロックは、更新される必要がないと決定される。更新決定インジケータの具体的な形態は、本出願のこの実施形態では限定されない。ここでは、更新決定インジケータが真または偽であることは、単に説明のための例として使用される。
S1303:(任意選択)処理対象ピクチャブロックに対応する予測モードを決定する。
ステップS1303は、図1のビデオデコーダ200によって実行され得ることが理解され得る。
たとえば、処理対象ピクチャブロックに対応する予測モードは、マージ(merge)モードおよび/またはインター進化型動きベクトル予測(inter AMVP)モードであり得る。これは、本出願のこの実施形態では限定されない。処理対象ピクチャブロックに対応する予測モードは、マージモードのみ、インターAMVPモードのみ、またはマージモードとインターAMVPモードの組合せであり得ることが理解され得る。
インター進化型動きベクトル予測(inter AMVP)モードは、インター動きベクトル予測(インターMVP)モードとも呼ばれ得ることに留意されたい。
たとえば、処理対象ピクチャブロックに対応する予測モードを決定するための方法は、処理対象ピクチャブロックに対応する予測モードを取得するためにビットストリームを解析するステップと、処理対象ピクチャブロックに対応する予測モードがマージモードおよび/またはインターAMVPモードであると決定するステップとであり得る。
本出願のこの実施形態では、空間フィルタリング方法が、マージモードおよび/またはインターAMVPモードに基づいて符号化されているインターコーディングされたブロックに対して実行され得ることが理解され得る。言い換えると、フィルタリング処理が、復号の間にデコーダ側で、マージモードおよび/またはインターAMVPモードに基づいて符号化されているブロックに対して実行され得る。
S1304:処理対象ピクチャブロックの予測ブロックを取得するために、動き情報に基づいて処理対象ピクチャブロックに対して動き補償を実行する。
処理対象ピクチャの予測ブロックは、目標サンプルの予測値を含む。
ステップS1304は、図1のビデオデコーダ200によって実行され得ることが理解され得る。
たとえば、動き補償の間、現在の部分的なピクチャが、参照ピクチャに基づいて予測され補償される。このことは、フレームシーケンスの冗長な情報を減らすことができる。
たとえば、動き補償が動き情報に基づいて実行されるとき、処理対象ピクチャブロックの予測ブロックが、参照フレーム方向、参照フレームシーケンス番号、および動きベクトルに基づいて、参照フレームから取得され得る。参照フレーム方向は、順方向予測、逆方向予測、または双予測であり得る。これは、本出願のこの実施形態では限定されない。
たとえば、参照フレーム方向が順方向予測であるとき、参照ピクチャは、参照ブロックを取得するために、現在のコーディング単位(CU)に対する順方向参照ピクチャセットから選択され得る。参照フレーム方向が逆方向予測であるとき、参照ピクチャは、参照ブロックを取得するために現在のコーディング単位(CU)に対する逆方向参照ピクチャセットから選択され得る。参照フレーム方向が双予測であるとき、参照ピクチャは、参照ブロックを取得するために、現在のコーディング単位(CU)に対する順方向参照ピクチャセットおよび逆方向参照ピクチャセットの各々から選択され得る。
ステップS1304において、動き情報に基づいて処理対象ピクチャブロックに対して動き補償を実行するための方法は、HEVCもしくはVTMにおける方法であってもよく、または、処理対象ピクチャブロックの予測ブロックを取得するための別の方法であってもよい。これは、本出願のこの実施形態では限定されない。
S1306:目標サンプルの予測値を更新するために、1つまたは複数の参照サンプルの1つまたは複数の再構築された値および目標サンプルの予測値に対して加重計算を実行する。
参照サンプルは、目標サンプルとのあらかじめ設定された空間的な位置関係を有する。
ステップS1306は、図1のビデオデコーダ200によって実行され得ることが理解され得る。
たとえば、目標サンプルは、処理対象ピクチャブロックの予測ブロックの中のサンプルであり、目標サンプルの予測値は、参照ブロックの中のサンプルのサンプル値に基づいて決定され得る。
たとえば、参照サンプルは、現在のCU(処理対象ピクチャブロック)に空間的に隣接する再構築されたサンプルであり得る。具体的には、参照サンプルは、ピクチャの中の現在のCUブロック以外のブロックの中の再構築されたサンプルであり得る。たとえば、参照サンプルは、現在のCUの上または左にあるCUブロックの中の再構築されたサンプルであり得る。これは、本出願のこの実施形態では限定されない。
ステップS1306において、空間フィルタリングが、現在のCUに空間的に隣接する再構築されたサンプルを使用することによって、目標サンプルの予測サンプルに対して実行されることが理解され得る。具体的には、目標サンプルの更新された予測サンプルを取得するために、現在のブロックの中の目標サンプルの予測サンプル、および現在のCUに空間的に隣接する再構築されたサンプルのサンプル値に対して、加重計算が実行される。
ある実現可能な実装形態では、1つまたは複数の参照サンプルは、目標サンプルと同じ水平座標を有し目標サンプルに対するあらかじめ設定された垂直座標差を有する再構築されたサンプル、または、目標サンプルと同じ垂直座標を有し目標サンプルに対するあらかじめ設定された水平座標差を有する再構築されたサンプルを含み得る。
たとえば、図14に示されるように、ピクチャの左上の角が座標系の原点として使用され、座標系のX軸方向はピクチャの上側に沿って右に延び、座標系のY軸方向はピクチャの左側に沿って下に延びる。処理対象ピクチャブロック(現在のCU)の中の目標サンプルの座標が(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標が(xN,yN)である場合、目標サンプルの参照サンプルは、処理対象ピクチャブロックの上または左にあるブロックの中の再構築されたサンプルであり得る。参照サンプルが処理対象ピクチャブロックの上のブロックの中の再構築されたサンプルである場合、参照サンプルは処理対象ピクチャブロック以外のブロックの中の再構築されたサンプルであるので、参照サンプルの垂直座標は、処理対象ピクチャブロックの上側の垂直座標からあらかじめ設定された位置関係Nを差し引くことによって得られる値であり、参照サンプルの水平座標は、処理対象ピクチャブロックの中の目標サンプルの水平座標と同じである。具体的には、参照サンプルの座標は(xP,yN-N)である。参照サンプルが処理対象ピクチャブロックの左にあるブロックの中の再構築されたサンプルである場合、参照サンプルは、処理対象ピクチャブロック以外のブロックの中の再構築されたサンプルであるので、参照サンプルの水平座標は、処理対象ピクチャブロックの一番左の水平座標からあらかじめ設定された位置関係Mを差し引くことによって得られる値であり、参照サンプルの垂直座標は、処理対象ピクチャブロックの中の目標サンプルの垂直座標と同じである。具体的には、参照サンプルの座標は(xN-M,yP)である。参照サンプルと目標サンプルとの間の具体的な空間的な位置関係(MおよびNの具体的な値)は、本出願のこの実施形態では限定されない。
ある実現可能な実装形態では、目標サンプルの予測値は、以下の式に従って更新され得る。
ここで、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上のサンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-M1,yP)およびrecon(xP,yN-M2)は、それぞれ座標位置(xN-M1,yP)および(xP,yN-M2)における参照サンプルの再構築された値を表し、w1、w2、w3、w4、w5、およびw6はあらかじめ設定された定数であり、M1およびM2はあらかじめ設定された正の整数である。
以下は、処理対象ピクチャブロックの左上サンプルの座標(xN,yN)の異なる場合に基づいて、目標サンプルの更新された予測値を計算するための具体的な方法を説明する。
第1のケースにおいて、xNが0より大きく、yNが0に等しく、位置(xN-M1,yP)における参照サンプルが符号化され再構築されている場合、目標サンプルの更新された予測値は、以下の式に従って取得され得る。
たとえば、図15に示されるように、処理対象ピクチャブロックのサイズが16×16であることが、説明のための例として使用される。処理対象ピクチャブロックがCU 1である場合、処理対象ピクチャブロック(CU 1)の左上サンプル(xN,yN)は(16,0)であり、処理対象ピクチャブロックの中の目標サンプル(xP,yP)の座標は(18,3)である。現在のCU(CU 1)の左上サンプルの水平座標xNは0より大きく、現在のCU(CU 1)の左上サンプルの垂直座標yNは0に等しいので、現在のCUはピクチャの上側に位置すると決定され得る。空間フィルタリングが現在のCUの中の目標サンプルに対して実行されるとき、現在のCUはピクチャの上側に位置し、現在のCUの上に再構築されたサンプルはないので、参照サンプルは現在のCUの左にある再構築されたサンプルである。参照サンプルは、目標サンプルと同じ垂直座標を有し、(16-M1,3)と表記されてもよく、M1は参照サンプルと目標サンプルとの間のあらかじめ設定された空間的な位置関係を表す。本明細書では、M1が1に等しいということが、説明のための例として使用される。M1が1に等しいとき、目標サンプル(18,3)の参照サンプルは(15,3)であり得る。同様に、目標サンプル(xP,yP)の任意の参照サンプルが(xN-1,yP)であり得る。
位置(xN-1,yP)における参照サンプルが符号化されて再構築されている場合、目標サンプルの更新された予測値predQ(xP,yP)を取得するために、参照サンプルの再構築された値recon(xN-1,yP)および目標サンプルの予測値predP(xP,yP)に対して加重計算が実行され得る。
第2のケースにおいて、xNが0に等しく、yNが0より大きく、位置(xP,yN-M2)における参照サンプルが符号化されて再構築されている場合、目標サンプルの更新された予測値は以下の式に従って取得され得る。
たとえば、図15に示されるように、処理対象ピクチャブロックがCU 2である場合、処理対象ピクチャブロック(CU 2)の左上サンプル(xN,yN)は(0,32)であり、目標サンプル(xP,yP)の座標は(8,35)である。現在のCU(CU 2)の左上サンプルの水平座標xNは0に等しく、現在のCU(CU 2)の左上サンプルの垂直座標yNは0より大きいので、ピクチャの左側に現在のCUが位置すると決定され得る。空間フィルタリングが現在のCUの中の目標サンプルに対して実行されるとき、現在のCUはピクチャの左側に位置し、現在のCUの左側に再構築されたサンプルはないので、参照サンプルは現在のCUの上にある再構築されたサンプルである。参照サンプルは目標サンプルと同じ水平座標を有し、(8,32-M2)と表記されてもよく、M2は参照サンプルと目標サンプルとの間のあらかじめ設定された空間的な位置関係を表す。本明細書では、M2が1に等しいことが、説明のための例として使用される。M2が1に等しいとき、目標サンプル(8,35)の参照サンプルは(8,31)であり得る。同様に、目標サンプル(xP,yP)の任意の参照サンプルは(xP,yN-M2)であり得る。
位置(xP,yN-M2)における参照サンプルが符号化され再構築されている場合、目標サンプルの更新された予測値predQ(xP,yP)を取得するために、参照サンプルの再構築された値recon(xP,yN-M2)および目標サンプルの予測値predP(xP,yP)に対して加重計算が実行され得る。
第3のケースにおいて、xNが0より大きく、yNが0より大きく、位置(xN-M1,yP)および(xP,yN-M2)における参照サンプルが符号化され再構築されている場合、目標サンプルの更新された予測値は以下の式に従って取得され得る。
たとえば、図15に示されるように、処理対象ピクチャブロックがCU 3である場合、処理対象ピクチャブロック(CU 3)の左上サンプル(xN,yN)は(48,32)であり、目標サンプル(xP,yP)の座標は(56,33)である。現在のCU(CU 3)の左上サンプルの水平座標xNが0より大きく、現在のCU(CU 3)の左上サンプルの垂直座標yNが0より大きいので、現在のCUはピクチャの端に位置しないと決定され得る。空間フィルタリングが現在のCUの中の目標サンプルに対して実行されるとき、参照サンプルは、現在のCUの上にある再構築されたサンプル、および現在のCUの左にある再構築されたサンプルであり得る。参照サンプルが現在のCUの左にある再構築されたサンプルであるとき、再構築されたサンプルは、目標サンプルと同じ垂直座標を有し、(xN-M1,33)であり得る。参照サンプルが現在のCUの上にある再構築されたサンプルであるとき、再構築されたサンプルは、目標サンプルと同じ水平座標を有し、(56,yN-M2)であってもよく、M1およびM2は各々、参照サンプルおよび目標サンプルの各々の間のあらかじめ設定された空間的な位置関係を表す。本明細書では、M1とM2の両方が1に等しいことが、説明のための例として使用される。M1とM2の両方が1に等しいとき、目標サンプル(56,33)の参照サンプルは(47,33)および(56,31)であり得る。同様に、目標サンプル(xP,yP)の任意の参照サンプルが、(xN-M1,yP)および(xP,yN-M2)であり得る。
位置(xN-M1,yP)および(xP,yN-M2)における参照サンプルが符号化され再構築されている場合、目標サンプルの更新された予測値predQ(xP,yP)を取得するために、参照サンプルの再構築された値recon(xN-M1,yP)およびrecon(xP,yN-M2)および目標サンプルの予測値predP(xP,yP)に対して、加重計算が実行され得る。
加重係数w1、w2、w3、w4、w5、およびw6の値、ならびにM1およびM2の値は、本出願のこの実施形態では限定されず、M1とM2の両方が1に等しいことが、単なる例として使用されることに留意されたい。
たとえば、加重係数セット(w1,w2)、(w3,w4)、または(w5,w6,w7)は、w1+w2、w3+w4、またはw5+w6+w7の値の組合せであってもよく、w1+w2、w3+w4、またはw5+w6+w7は、2の整数乗に等しい。このようにすると、除算演算はもはや実行されない。たとえば、(6,2)、(5,3)、(4,4)、(6,1,1)、または(5,2,1)などの値の組合せが使用され得る。これは本出願のこの実施形態では限定されず、本明細書で列挙される値の組合せは、単に説明のための例として使用される。
別の実現可能な実装形態では、目標サンプルの予測値は、以下の式に従って更新され得る。
ここで、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-M1,yP)およびrecon(xP,yN-M2)は、それぞれ座標位置(xN-M1,yP)および(xP,yN-M2)における参照サンプルの再構築された値を表し、w1、w2、およびw3はあらかじめ設定された定数であり、M1およびM2はあらかじめ設定された正の整数である。
たとえば、加重係数セット(w1,w2,w3)は、w1+w2+w3の値の組合せであってもよく、w1+w2+w3は2の整数乗に等しい。このようにすると、除算演算はもはや実行されない。たとえば、(6,1,1)または(5,2,1)などの値の組合せが使用され得る。これは、本出願のこの実施形態では限定されず、本明細書で列挙される値の組合せは、単に説明のための例として使用される。
この実装形態と以前の実装形態の差は、処理対象ピクチャブロックの左にあるサンプルおよび処理対象ピクチャブロックの上にあるサンプルがこの実装形態では考慮されないという点にあることに留意されたい。この実装形態が目標サンプルの予測値を更新するために使用され、参照サンプルの再構築された値が利用不可能であるとき、以下のステップS13061およびS13062における方法が、新しい参照サンプルを取得し、新しい参照サンプルに基づいて目標サンプルの予測値を更新するために使用され得る。
別の実現可能な実装形態では、目標サンプルの予測値は、以下の式に従って更新され得る。
ここで、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-M1,yP)、recon(xN-M2,yP)、recon(xP,yN-M3)、およびrecon(xP,yN-M4)はそれぞれ、座標位置(xN-M1,yP)、(xN-M2,yP)、(xP,yN-M3)、および(xP,yN-M4)における参照サンプルの再構築された値を表し、w1、w2、w3、w4、w5、w6、w7、w8、w9、w10、およびw11はあらかじめ設定された定数であり、M1、M2、M3、およびM4はあらかじめ設定された正の整数である。
以下は具体的に、処理対象ピクチャブロックの左上サンプルの座標(xN,yN)の異なる場合に基づいて目標サンプルの更新された予測値を計算するための方法を説明する。
第1のケースにおいて、xNが0より大きく、yNが0に等しく、位置(xN-M1,yP)および(xN-M2,yP)における参照サンプルが符号化され再構築されている場合、目標サンプルの更新された予測値は、以下の式に従って取得され得る。
本実装形態のこのケースと第1の実装形態の第1のケースとの違いは、本実装形態では2つの参照サンプルがあるという点にあることが理解され得る。処理対象ピクチャブロックがCU 1である場合、処理対象ピクチャブロック(CU 1)の左上サンプル(xN,yN)は(16,0)であり、処理対象ピクチャブロックの中の目標サンプル(xP,yP)の座標は(18,3)である。参照サンプルは、現在のCUの左にある再構築されたサンプルである。参照サンプルは各々、目標サンプルと同じ垂直座標を有し、(16-M1,3)および(16-M2,3)と表記されてもよく、M1およびM2は各々、参照サンプルの各々と目標サンプルとの間のあらかじめ設定された空間的な位置関係を表す。本明細書では、M1が1に等しくM2が2に等しいということが、説明のための例として使用される。M1が1に等しく、M2が2に等しいとき、目標サンプル(18,3)の参照サンプルは(15,3)および(14,3)であり得る。同様に、目標サンプル(xP,yP)の任意の参照サンプルが、(xN-1,yP)および(xN-2,yP)であり得る。
位置(xN-1,yP)および(xN-2,yP)における参照サンプルが符号化されて再構築されている場合、目標サンプルの更新された予測値predQ(xP,yP)を取得するために、参照サンプルの再構築された値recon(xN-1,yP)およびrecon(xN-2,yP)ならびに目標サンプルの予測値predP(xP,yP)に対して加重計算が実行され得る。
第2のケースにおいて、xNが0に等しく、yNが0より大きく、位置(xP,yN-M3)および(xP,yN-M4)における参照サンプルが符号化されて再構築されている場合、目標サンプルの更新された予測値は以下の式に従って取得され得る。
たとえば、本実装形態のこのケースと第1の実装形態の第2のケースとの違いは、本実装形態では2つの参照サンプルがあるという点にある。処理対象ピクチャブロックがCU 2である場合、処理対象ピクチャブロック(CU 2)の左上サンプル(xN,yN)は(0,32)であり、目標サンプル(xP,yP)の座標は(8,35)である。参照サンプルは、現在のCUの上にある再構築されたサンプルである。参照サンプルは各々、目標サンプルと同じ水平座標を有し、(8,32-M3)および(8,32-M4)と表記されてもよく、M3およびM4は各々、参照サンプルの各々と目標サンプルとの間のあらかじめ設定された空間的な位置関係を表す。本明細書では、M3が1に等しく、M4が2に等しいということが、説明のための例として使用される。M3が1に等しく、M4が2に等しいとき、目標サンプル(8,35)の参照サンプルは、(8,31)および(8,30)であり得る。同様に、目標サンプル(xP,yP)の任意の参照サンプルが、(xP,yN-1)および(xP,yN-2)であり得る。
位置(xP,yN-1)および(xP,yN-2)における参照サンプルが符号化され再構築されている場合、目標サンプルの更新された予測値predQ(xP,yP)を取得するために、参照サンプルの再構築された値recon(xP,yN-1)およびrecon(xP,yN-2)ならびに目標サンプルの予測値predP(xP,yP)に対して加重計算が実行され得る。
第3のケースにおいて、xNが0より大きく、yNが0より大きく、位置(xN-M1,yP)、(xN-M2,yP)、(xP,yN-M3)、および(xP,yN-M4)における参照サンプルが符号化され再構築されている場合、目標サンプルの更新された予測値は以下の式に従って取得され得る。
たとえば、本実装形態のこのケースと第1の実装形態の第3のケースとの違いは、本実装形態では、現在のCUの上の参照サンプルとして2つの再構築されたサンプルがあり、現在のCUの左にある参照サンプルとして2つの再構築されたサンプルがあるという点にある。処理対象ピクチャブロックがCU 3である場合、処理対象ピクチャブロック(CU 3)の左上サンプル(xN,yN)は(48,32)であり、目標サンプル(xP,yP)の座標は(56,33)である。参照サンプルが現在のCUの左にある再構築されたサンプルであるとき、再構築されたサンプルは各々、目標サンプルと同じ垂直座標を有し、(48-M1,33)および(48-M2,33)であってもよく、参照サンプルが現在のCUの上にある再構築されたサンプルであるとき、再構築されたサンプルは各々、目標サンプルと同じ水平座標を有し、(56,32-M3)および(56,32-M4)であってもよく、M1、M2、M3、およびM4は各々、参照サンプルの各々と目標サンプルとの間のあらかじめ設定された空間的な位置関係を表す。本明細書では、M1とM3の両方が1に等しく、M2とM4の両方が2に等しいということが、説明のための例として使用される。M1とM3の両方が1に等しく、M2とM4の両方が2に等しいとき、目標サンプル(56,33)の参照サンプルは、(47,33)、(46,33)、(56,31)、および(56,30)であり得る。同様に、目標サンプル(xP,yP)の任意の参照サンプルが、(xN-M1,yP)、(xN-M2,yP)、(xP,yN-M3)、および(xP,yN-M4)であり得る。
位置(xN-M1,yP)、(xN-M2,yP)、(xP,yN-M3)、および(xP,yN-M4)における参照サンプルが符号化され再構築されている場合、目標サンプルの更新された予測値predQ(xP,yP)を取得するために、参照サンプルの再構築された値recon(xN-M1,yP)、recon(xN-M2,yP)、recon(xP,yN-M3)、およびrecon(xP,yN-M4)ならびに目標サンプルの予測値predP(xP,yP)に対して、加重計算が実行され得る。
加重係数w1、w2、w3、w4、w5、w6、w7、w8、w9、w10、およびw11の値、ならびにM1、M2、M3、およびM4の値は、本出願のこの実施形態では限定されないことに留意されたい。M1とM3の両方が1に等しく、M2とM4の両方が2に等しいということが、単に説明のための例として使用される。実際の適用例では、M1とM3の値は同じであっても異なっていてもよく、M2とM4の値は同じであっても異なっていてもよく、M1とM2の値は異なっていてもよく、M3とM4の値は異なっていてもよいことが理解され得る。
たとえば、加重係数セット(w1,w2,w3)、(w4,w5,w6)、または(w7,w8,w9,w10,w11)は、w1+w2+w3、w4+w5+w6、またはw7+w8+w9+w10+w11の値の組合せであってもよく、w1+w2+w3、w4+w5+w6、またはw7+w8+w9+w10+w11は、2の整数乗に等しい。このようにすると、除算演算はもはや実行されない。たとえば、(6,1,1)、(5,2,1)、または(3,2,1,1,1)などの値の組合せが使用され得る。これは、本出願のこの実施形態では限定されず、本明細書で列挙される値の組合せは、単に説明のための例として使用される。
別の実装形態では、目標サンプルの予測値は、以下の式に従って更新され得る。
ここで、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-M1,yP)、recon(xN-M2,yP)、recon(xP,yN-M3)、およびrecon(xP,yN-M4)は、それぞれ座標位置(xN-M1,yP)、(xN-M2,yP)、(xP,yN-M3)、および(xP,yN-M4)における参照サンプルの再構築された値を表し、w1、w2、w3、w4、およびw5はあらかじめ設定された定数であり、M1、M2、M3、およびM4はあらかじめ設定された正の整数である。
たとえば、加重係数セット(w1,w2,w3,w4,w5)は、w1+w2+w3+w4+w5の値の組合せであってもよく、w1+w2+w3+w4+w5は2の整数乗に等しい。このようにすると、除算演算はもはや実行されない。たとえば、(3,2,1,1,1)などの値の組合せが使用され得る。これは、本出願のこの実施形態では限定されず、本明細書で列挙される値の組合せは、単に説明のための例として使用される。この実装形態と以前の実装形態との差は、処理対象ピクチャブロックの左にあるサンプルおよび処理対象ピクチャブロックの上にあるサンプルがこの実装形態では考慮されないという点にあることに留意されたい。この実装形態が目標サンプルの予測値を更新するために使用され、参照サンプルの再構築された値が利用不可能であるとき、以下のステップS13061およびS13062における方法が、利用可能な参照サンプルを取得し、利用可能な参照サンプルに基づいて目標サンプルの予測値を更新するために使用され得る。
ある実現可能な実装形態では、1つまたは複数の参照サンプルは、以下のサンプル、すなわち、目標サンプルと同じ水平座標を有し処理対象ピクチャブロックの上側に隣接する再構築されたサンプルと、目標サンプルと同じ垂直座標を有し処理対象ピクチャブロックの左側に隣接する再構築されたサンプル、処理対象ピクチャブロックの右上の再構築されたサンプル、処理対象ピクチャブロックの左下の再構築されたサンプル、または処理対象ピクチャブロックの左上の再構築されたサンプルのうちの1つまたは複数を含む。
別の実現可能な実装形態では、目標サンプルの予測値は、以下の式に従って更新され得る。
predQ(xP,yP)=(w1*predP(xP,yP)+w2*predP1(xP,yP)+((w1+w2)/2))/(w1+w2)
ここで、目標ピクセルの座標は(xP,yP)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標ピクセルの更新された予測値を表し、w1およびw2はあらかじめ設定された定数である。
具体的には、第2の予測サンプル値predP1(xP,yP)がまず、空間的な近隣サンプルおよび平面(PLANAR)イントラ予測モードに基づいて取得され得る。PLANARモードでは、水平方向および垂直方向における2つの線形フィルタが使用され、2つの線形フィルタによって取得される平均値は、現在のブロックの中のサンプルの予測値として使用されることが理解され得る。
たとえば、第2の予測サンプル値predP1(xP,yP)は、PLANARモードに基づいて取得され得る。
predP1(xP,yP)=(predV(xP,yP)+predH(xP,yP)+nTbW*nTbH)>>(Log2(nTbW)+Log2(nTbH)+1)、
predV(xP,yP)=((nTbH-1-(yP-yN))*recon(xP,yN-1)+(yP-yN+1)*recon(xN-1,yN+nTbH))<<Log2(nTbW)、
predH(xP,yP)=((nTbH-1-(xP-xN))*recon(xN-1,yP)+(xP-xN+1)*recon(xN+nTbW,yN-1))<<Log2(nTbH)
ここで、図16に示されるように、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、recon(xP,yN-1)、recon(xN-1,yN+nTbH)、recon(xN-1,yP)、およびrecon(xN+nTbW,yN-1)は、それぞれ座標位置(xP,yN-1)、(xN-1,yN+nTbH)、(xN-1,yP)、および(xN+nTbW,yN-1)における参照サンプルの再構築された値を表し、nTbWおよびnTbHは、現在のCU(処理対象ピクチャブロック)の幅および高さを表す。
別の実現可能な実装形態では、目標サンプルの予測値は、以下の式に従って更新される。
predQ(xP,yP)=(w1*predP(xP,yP)+w2*predV(xP,yP)+w3*predH(xP,yP)+((w1+w2+w3)/2))/(w1+w2+w3)
ここで、predV(xP,yP)=((nTbH-1-yP)*p(xP,-1)+(yP+1)*p(-1,nTbH)+nTbH/2)>>Log2(nTbH)、predH(xP,yP)=((nTbW-1-xP)*p(-1,yP)+(xP+1)*p(nTbW,-1)+nTbW/2)>>Log2(nTbW)であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(0,0)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、p(xP,-1)、p(-1,nTbH)、p(-1,yP)、およびp(nTbW,-1)は、それぞれ座標位置(xP,-1)、(-1,nTbH)、(-1,yP)、および(nTbW,-1)における参照サンプルの再構築された値を表し、w1およびw2はあらかじめ設定された定数であり、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表す。
別の実現可能な実装形態では、目標サンプルの予測値は、以下の式に従って更新される。
predQ(xP,yP)=(((w1*predP(xP,yP))<<(Log2(nTbW)+Log2(nTbH)+1))+w2*predV(xP,yP)+w3*predH(xP,yP)+(((w1+w2+w3)/2)<<(Log2(nTbW)+Log2(nTbH)+1)))/(((w1+w2+w3)<<(Log2(nTbW)+Log2(nTbH)+1)))
ここで、predV(xP,yP)=((nTbH-1-yP)*p(xP,-1)+(yP+1)*p(-1,nTbH))<<Log2(nTbW)、predH(xP,yP)=((nTbW-1-xP)*p(-1,yP)+(xP+1)*p(nTbW,-1))<<Log2(nTbH)であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(0,0)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、p(xP,-1)、p(-1,nTbH)、p(-1,yP)、およびp(nTbW,-1)は、それぞれ(xP,-1)、(-1,nTbH)、(-1,yP)、および(nTbW,-1)における参照サンプルの再構築された値を表し、w1およびw2はあらかじめ設定された定数であり、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表す。
第2の予測サンプル値predP1(xP,yP)を生成するために使用される平面(PLANAR)モードアルゴリズムは、VTMにおけるアルゴリズムに限定されず、HEVCまたはH.264におけるPLANARアルゴリズムが代替的に使用され得ることに留意されたい。これは、本出願のこの実施形態では限定されない。
加重係数w1およびw2の値は、本出願のこの実施形態では限定されないことに留意されたい。たとえば、加重係数セット(w1,w2)は、w1+w2の値の組合せであってもよく、w1+w2は2の整数乗に等しい。このようにすると、除算演算はもはや実行されない。たとえば、(6,2)、(5,3)、または(4,4)などの値の組合せが使用され得る。これは、本出願のこの実施形態では限定されず、本明細書で列挙される値の組合せは、単に説明のための例として使用される。
別の実現可能な実装形態では、目標サンプルの予測値は、以下の式に従って更新され得る。
predQ(xP,yP)=(w1*predP(xP,yP)+w2*predP1(xP,yP)+((w1+w2)/2))/(w1+w2)
ここで、
predP1(xP,yP)=(predV(xP,yP)+predH(xP,yP)+1)>>1、
predV(xP,yP)=((nTbH-1-(yP-yN))*recon(xP,yN-1)+(yP-yN+1)*recon(xN-1,yN+nTbH)+(nTbH>>1))>>Log2(nTbH)、
predH(xP,yP)=((nTbW-1-(xP-xN))*recon(xN-1,yP)+(xP-xN+1)*recon(xN+nTbW,yN-1)+(nTbW>>1))>>Log2(nTbW)
であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xP,yN-1)、recon(xN-1,yN+nTbH)、recon(xN-1,yP)、およびrecon(xN+nTbW,yN-1)は、それぞれ座標位置(xP,yN-1)、(xN-1,yN+nTbH)、(xN-1,yP)、および(xN+nTbW,yN-1)における参照サンプルの再構築された値を表し、w1およびw2はあらかじめ設定された定数であり、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表す。
別の実現可能な実装形態では、インター予測ブロックは、イントラ予測において使用される位置依存のイントラ予測組合せ処理(Position-dependent intra prediction combination process)技術を使用することによって処理されてもよく、目標サンプルの更新された予測値predQ(xP,yP)は、VTMにおけるイントラ予測組合せ処理技術においてDCモード方法を使用することによって取得され得る。DCモードが使用されるとき、現在のブロックの予測値は、現在のブロックの左および上にある参照サンプルの平均値に基づいて取得され得ることが理解され得る。
たとえば、目標サンプルの更新された予測値predQ(xP,yP)は、以下の式に従って取得され得る。
ここで、refL(xP,yP)=recon(xN-1,yP)、refT(xP,yP)=recon(xP,yN-1)、wT(yP)=32>>((yP<<1)>>nScale)、wL(xP)=32>>((xP<<1)>>nScale)、wTL(xP,yP)=((wL(xP)>>4)+(wT(yP)>>4))、nScale=((Log2(nTbW)+Log2(nTbH)-2)>>2)であり、図16に示されるように、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xP,yN-1)、recon(xN-1,yP)、およびrecon(xN-1,yN-1)は、それぞれ座標位置(xP,yN-1)、(xN-1,yP)、および(xN-1,yN-1)における参照サンプルの再構築された値を表し、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表し、clip1Cmpはクリッピング動作を表す。
目標サンプルの更新された予測値predQ(xP,yP)は、VTMにおけるイントラ予測組合せ処理技術だけを使用するのではなく、JEMにおけるアルゴリズムも使用することによって取得され得ることに留意されたい。
ある実現可能な実装形態では、インター予測ブロックは、イントラ予測において使用される位置依存のイントラ予測組合せ処理技術を使用することによって処理されてもよく、目標サンプルの更新された予測値predQ(xP,yP)は、VTMにおけるイントラ予測組合せ処理技術におけるPLANARモード法を使用することによって取得されてもよい。以下の式が使用される。
ここで、refL(xP,yP)=recon(xN-1,yP)、refT(xP,yP)=recon(xP,yN-1)、wT(yP)=32>>((yP<<1)>>nScale)、wL(xP)=32>>((xP<<1)>>nScale)、nScale=((Log2(nTbW)+Log2(nTbH)-2)>>2)であり、図16に示されるように、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-1,yP)およびrecon(xP,yN-1)は、それぞれ座標位置(xN-1,yP)および(xP,yN-1)における参照サンプルの再構築された値を表し、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表し、clip1Cmpはクリッピング動作を表す。
目標サンプルの更新された予測値predQ(xP,yP)は、VTMにおけるアルゴリズムだけを使用するのではなく、JEMにおけるアルゴリズムを使用することによっても取得され得ることに留意されたい。
ある実現可能な実装形態では、イントラ予測境界フィルタリング技術を使用することによって、フィルタリング処理がインター予測サンプルに対して実行され得る。境界フィルタリング技術の詳細については、HEVCの方法を参照されたい。詳細はここでは説明されない。
目標サンプルの予測値が前述の方式のうちのいずれか1つで更新されるとき、目標サンプルの再構築される値が利用不可能である場合、ステップS1306は以下のステップS13601およびS13062をさらに含み得ることに留意されたい。
S13061:参照サンプルの再構築された値が利用不可能であるとき、あらかじめ設定された順序で、あらかじめ設定された量の利用可能な参照サンプルが取得されるまで、処理対象ピクチャブロックの上側および左側に隣接するサンプルの利用可能性を決定する。
参照サンプルの再構築された値が利用不可能であるケースは、処理対象ピクチャブロックがピクチャの上側に位置しており、座標位置(xP,yN-M)における参照サンプルの再構築された値がないとき、または、処理対象ピクチャブロックがピクチャの左側に位置しており、座標位置(xN-N,yP)における参照サンプルの再構築された値がないとき、または、再構成値を参照サンプルに対して取得できないときがあり得ることが理解され得る。参照サンプルの再構築された値が利用不可能である具体的なケースは、本出願のこの実施形態では限定されず、ここでこのケースは単に説明のための例として使用される。
ある実装形態では、図17に示されるように、あらかじめ設定された順序は、座標(xN-1,yN+nTbH-1)から座標(xN-1,yN-1)への、次いで座標(xN,yN-1)から座標(xN+nTbW-1,yN-1)への順序であり得る。たとえば、処理対象ピクチャブロックの上側および左側に隣接するサンプルからの利用可能な参照サンプルを探すために、すべてのサンプルが、座標(xN-1,yN+nTbH-1)から座標(xN-1,yN-1)への、次いで座標(xN,yN-1)から座標(xN+nTbW-1,yN-1)への順序で網羅され得る。具体的なあらかじめ設定された順序は本出願のこの実施形態では限定されず、本明細書のあらかじめ設定された順序は単に説明のための例として使用されることに留意されたい。
たとえば、すべての参照サンプルの中に少なくとも1つの利用可能な参照サンプルがあるとき、参照サンプル(xN-1,yN+nTbH-1)の再構築された値が利用不可能であるとき、利用可能なサンプルが、座標(xN-1,yN+nTbH-1)から座標(xN-1,yN-1)への、次いで座標(xN,yN-1)から座標(xN+nTbW-1,yN-1)へのあらかじめ設定された順序で検索される。利用可能なサンプルが発見されると、検索は終了する。利用可能なサンプルが(x,y)である場合、参照サンプル(xN-1,yN+nTbH-1)の再構築された値は、サンプル(x,y)の再構築された値に設定される。参照サンプル(x,y)の再構築された値が参照サンプル(xN-1,yN+nTbH-M)を含むセットの中で利用不可能である場合、参照サンプル(x,y)の再構築された値は、サンプル(x,y+1)の再構築された値に設定され、Mは2以上でありnTbH+1以下である。参照サンプル(x,y)の再構築された値が参照サンプル(xN+N,yN-1)を含むセットにおいて利用不可能である場合、参照サンプル(x,y)の再構築された値は、参照サンプル(x-1,y)の再構築された値に設定され、Nは0以上でありnTbW-1以下である。
たとえば、参照サンプル(xN-1,yN+nTbH-M)の再構築された値が利用不可能である場合、利用可能な参照サンプルは、座標(xN-1,yN+nTbH-M)から開始するあらかじめ設定された順序で検索されてもよく、Mは1以上でありnTbH+1以下である。利用可能な参照サンプルがBである場合、参照サンプル(xN-1,yN+nTbH-M)の再構築された値は、参照サンプルBの再構築された値に設定され得る。座標(xN+N,yN-1)を伴う参照サンプルの再構築された値が利用不可能である場合、利用可能な参照サンプルは、座標(xN+N,yN-1)から始まるあらかじめ設定された順序で検索されてもよく、Nは0以上でありnTbW-1以下である。利用可能な参照サンプルがCである場合、参照サンプル(xN+N,yN-1)の再構築された値は、参照サンプルCの再構築された値に設定され得る。
たとえば、参照サンプル(xN-1,yN+nTbH-3)の再構築された値が利用不可能である場合、処理対象ピクチャブロックの上側および左側に隣接するサンプルの利用可能性が、あらかじめ設定された量の利用可能な参照サンプルが取得されるまで座標(xN-1,yN+nTbH-3)から座標(xN-1,yN-1)への順序で決定されてもよく、参照サンプル(xN-1,yN+nTbH-3)の再構築された値は利用可能な参照サンプルの再構築された値に設定され得る。座標(xN+3,yN-1)を伴う参照サンプルの再構築された値が利用不可能である場合、利用可能なサンプルが、座標(xN+3,yN-1)から座標(xN+nTbW-1,yN-1)への順序で検索され、参照サンプル(xN+3,yN-1)の再構築された値は利用可能な参照サンプルの再構築された値に設定され得る。
たとえば、参照サンプル(xN-1,yN+nTbH-1)の再構築された値が利用不可能である場合、利用可能なサンプルが、座標(xN-1,yN+nTbH-1)から座標(xN-1,yN-1)への、次いで座標(xN,yN-1)から座標(xN+nTbW-1,yN-1)へのあらかじめ設定された順序で検索される。利用可能なサンプルが発見されると、検索は終了する。利用可能なサンプルが(x,y)である場合、参照サンプル(xN-1,yN+nTbH-1)の再構築された値は、サンプル(x,y)の再構築された値に設定される。参照サンプル(xN-1,yN+nTbH-M)の再構築された値が利用不可能である場合、利用可能な参照サンプルは、座標(xN-1,yN+nTbH-M)から開始するあらかじめ設定された順序とは逆の順序で検索されてもよく、Mは1より大きくnTbH+1以下である。利用可能な参照サンプルがCである場合、参照サンプル(xN-1,yN+nTbH-M)の再構築された値は、参照サンプルCの再構築された値に設定され得る。座標(xN+N,yN-1)を伴う参照サンプルの再構築された値が利用不可能である場合、利用可能な参照サンプルは、座標(xN+N,yN-1)から始まるあらかじめ設定された順序とは逆の順序で検索されてもよく、Nは0以上でありnTbW-1以下である。利用可能な参照サンプルがDである場合、参照サンプル(xN+N,yN-1)の再構築された値は、参照サンプルDの再構築された値に設定され得る。
たとえば、参照サンプル(xN-1,yN+nTbH-3)の再構築された値が利用不可能である場合、処理対象ピクチャブロックの上側および左側に隣接するサンプルの利用可能性が、あらかじめ設定された量の利用可能な参照サンプルが取得されるまで座標(xN-1,yN+nTbH-3)から座標(xN-1,yN+nTbH-1)への順序で決定されてもよく、参照サンプル(xN-1,yN+nTbH-3)の再構築された値は利用可能な参照サンプルの再構築された値に設定され得る。座標(xN+3,yN-1)を伴う参照サンプルの再構築された値が利用不可能である場合、利用可能なサンプルが、座標(xN+3,yN-1)から座標(xN,yN-1)への順序で検索され、参照サンプル(xN+3,yN-1)の再構築された値は利用可能な参照サンプルの再構築された値に設定され得る。
新しい参照サンプルはあらかじめ設定された順序で発見される第1の利用可能な参照サンプルであってもよく、またはあらかじめ設定された順序で発見される任意の利用可能な参照サンプルであってもよいことに留意されたい。これは、本出願のこの実施形態では限定されない。
方法に従うと、参照サンプルが利用不可能であるとき、利用可能な参照サンプルは、処理対象ピクチャブロックの上側および左側に隣接するサンプルからあらかじめ設定された順序で検索されてもよく、利用可能な参照サンプルの再構築された値は利用不可能な参照サンプルの再構築された値として使用されることが理解され得る。
S13062:目標サンプルの予測値を更新するために、利用可能な参照サンプルの再構築された値および目標サンプルの予測値に対して加重計算を実行する。
たとえば、目標サンプルの予測値は、前述の実装形態のうちのいずれか1つを使用することによって、新しい参照サンプルの再構築された値に基づいて更新され得る。
参照サンプルの再構築された値が利用不可能である場合、ステップS13061において、処理対象ピクチャブロックの上側および左側に隣接するすべてのサンプルが利用不可能であると決定され、参照サンプルの再構築された値は1<<(bitDepth-1)に設定されてもよく、bitDepthは参照サンプルのサンプル値のビット深度を表すことに留意されたい。たとえば、処理対象ピクチャブロックがピクチャの左上の角に位置するとき、処理対象ピクチャブロックの左上の角の座標は(0,0)であり、処理対象ピクチャブロックの上側および左側に隣接するすべてのサンプルが利用不可能である。この場合、処理対象ピクチャブロックの中の目標サンプルに対応する参照サンプルの再構築された値は、1<<(bitDepth-1)に設定され得る。
前述の複数の実装形態において、インター予測サンプルを生成するプロセスにおいて、インター予測サンプルに対して空間フィルタリングが実行される。従来の技術と比較すると、コーディング効率が改善される。
ある実現可能な実装形態では、ステップS1306の前に、方法はさらにステップS1305を含み得る。
S1305:(任意選択で)参照サンプルに対してフィルタリング処理を実行する。
ステップS1305は図3のビデオデコーダにおいてフィルタユニット206によって実行され得ることが理解され得る。
たとえば、参照サンプルに対してフィルタリング処理を実行することは、参照サンプルが処理対象ピクチャブロックの上に位置しているとき、参照サンプルの再構築された値ならびに参照サンプルの左側の近隣サンプルおよび右側の近隣サンプルの再構築された値に対して加重計算を実行することと、参照サンプルが処理対象ピクチャブロックの左に位置するとき、参照サンプルの再構築された値ならびに参照サンプルの上側の近隣サンプルおよび下側の近隣サンプルの再構築された値に対して加重計算を実行することと、加重計算の結果を使用することによって参照サンプルの再構築された値を更新することとを含み得る。
フィルタリング処理がステップS1305において参照サンプルに対して実行された後で、ステップS1306が実行されるとき、目標サンプルの予測値を更新するために、フィルタリング処理の後の参照サンプルの更新された再構築された値および目標サンプルの予測値に対して、加重計算が実行され得ることが理解され得る。
参照サンプルに対するフィルタリング処理を実行するための具体的な方法については、ステップS1306のフィルタリング方法を参照できることに留意されたい。詳細はここでは説明されない。
参照サンプルの再構築された値を更新するために、参照サンプルに対してフィルタリング処理が実行され、参照サンプルの更新された再構築された値に基づいて、目標サンプルに対してフィルタリング処理が実行されることが理解され得る。これはさらに、コーディング効率を改善し、予測残差を減らすことができる。
ある実現可能な実装形態では、ステップS1306の前またはステップS1306の後に、ステップS1307がさらに含まれ得る。
S1307:(任意選択で)この方法以外のインターコーディング技術を使用することによって、動き情報およびビットストリーム情報に基づいてインター予測を実行し続ける。
ステップS1307は、図3のビデオデコーダにおいてインター予測器210によって実行され得ることが理解され得る。
たとえば、限定はされないが、双方向オプティカルフロー法、デコーダ側動きベクトル改善法、ローカル照明補償(LIC)技術、汎用加重予測(GBI)、重複ブロック動き補償(OBMC)、およびデコーダ側動きベクトル補償(DMVD)技術を含む、HEVCまたはVTMにおける技術が使用され得る。HEVCもしくはVTMにおける方法、または、動きベクトル予測候補リストを生成するための別の方法が使用され得る。これは、本出願のこの実施形態では限定されない。
前述の方法のステップS1301からS1307を実行する順序は、本出願のこの実施形態では限定されないことに留意されたい。たとえば、ステップS1305は、ステップS1307の前に実行されてもよく、またはステップS1307の後に実行されてもよい。これは、本出願のこの実施形態では限定されない。
ある実現可能な実装形態では、動き情報に基づいて処理対象ピクチャブロックに対して動き補償を実行する前に、方法はさらに、第1のあらかじめ設定されたアルゴリズムを使用することによって動き情報を最初に更新するステップを含んでもよく、それに対応して、動き情報に基づいて処理対象ピクチャブロックに対して動き補償を実行するステップは、最初に更新された動き情報に基づいて処理対象ピクチャブロックに対して動き補償を実行するステップを含む。
別の実現可能な実装形態では、処理対象ピクチャブロックの予測ブロックが取得された後で、方法はさらに、第2のあらかじめ設定されたアルゴリズムを使用することによって予測ブロックをあらかじめ更新するステップを含んでもよく、それに対応して、1つまたは複数の参照サンプルの1つまたは複数の再構築された値および目標サンプルの予測値に対して加重計算を実行するステップは、1つまたは複数の参照サンプルの1つまたは複数の再構築された値および目標サンプルのあらかじめ更新された予測値に対して加重計算を実行するステップを含む。
別の実現可能な実装形態では、目標サンプルの予測値を更新するために、1つまたは複数の参照サンプルの1つまたは複数の再構築された値および目標サンプルの予測値に対して加重計算を実行した後で、方法はさらに、第2のあらかじめ設定されたアルゴリズムを使用することによって目標サンプルの予測値を更新するステップを含む。
目標サンプルの更新された予測値が取得された後で、方法はさらに、現在のブロックの再構築されたピクチャを取得するために、最終的なインター予測ピクチャおよび残差ピクチャを追加するステップを含み得ることがさらに理解されるべきである。具体的には、現在のブロックが残差を有する場合、現在のブロックの再構築されたピクチャを取得するために、残差情報が予測ピクチャに追加される。現在のブロックが残差を有しない場合、予測ピクチャは現在のブロックの再構築されたピクチャである。前述のプロセスでは、HEVCもしくはVTMにおけるのと同じ方法、または別の動き補償方法もしくはピクチャ再構築方法が使用され得る。これは限定されない。
本出願のこの実施形態において提供されるインター予測方法によれば、処理対象ピクチャブロックの動き情報を取得するためにビットストリームが解析され、処理対象ピクチャブロックの予測ブロックを取得するために、動き情報に基づいて処理対象ピクチャブロックに対して動き補償が実行され、目標サンプルの予測値を更新するために、1つまたは複数の参照サンプルの1つまたは複数の再構築された値および目標サンプルの予測値に対して加重計算が実行され、参照サンプルは目標サンプルとのあらかじめ設定された空間的な位置関係を有する。本出願のこの実施形態では、処理対象ピクチャブロックの中の目標サンプルの予測値が取得された後で、近隣の再構築されたサンプルを使用することによって、目標サンプルの予測値に対してフィルタリング処理が実行される。このようにして、コーディング圧縮効率を改善することができ、PSNR BDrateは0.5%低下する。従来の技術と比較して、インター予測サンプルを生成するプロセスにおいてインター予測サンプルに対して実行される空間フィルタリングは、コーディング効率を改善する。
本出願の実施形態はインター予測装置を提供する。装置はビデオデコーダであり得る。具体的には、インター予測装置は、前述のインター予測方法において復号装置によって実行されるステップを実行するように構成される。本出願のこの実施形態において提供されるインター予測装置は、対応するステップに対応するモジュールを含み得る。
本出願のこの実施形態において、インター予測装置は、前述の方法の例に基づいて機能モジュールへと分割され得る。たとえば、機能モジュールは、対応する機能に基づく分割を通じて得られてもよく、または、2つ以上の機能が1つの処理モジュールに統合されてもよい。統合されたモジュールは、ハードウェアの形式で実装されてもよく、または、ソフトウェア機能モジュールの形式で実装されてもよい。本出願のこの実施形態において、モジュールへの分割は例であり、単なる論理的な機能分割であり、実際の実装形態では他の分割であってもよい。
対応する機能に基づく分割を通じて機能モジュールが取得されるとき、図18は、前述の実施形態のインター予測装置1800の可能な概略構造図である。図18に示されるように、インター予測装置1800は、解析モジュール1801、補償モジュール1802、および計算モジュール1803を含み得る。具体的には、モジュールの機能は次の通りである。
解析モジュール1801は、処理対象ピクチャブロックの動き情報を取得するためにビットストリームを解析するように構成される。
補償モジュール1802は、処理対象ピクチャブロックの予測ブロックを取得するために、動き情報に基づいて処理対象ピクチャブロックに対して動き補償を実行するように構成され、処理対象ピクチャブロックの予測ブロックは目標サンプルの予測値を備える。
計算モジュール1803は、目標サンプルの予測値を更新するために、1つまたは複数の参照サンプルの1つまたは複数の再構築された値および目標サンプルの予測値に対して加重計算を実行するように構成され、参照サンプルは目標サンプルとのあらかじめ設定された空間的な位置関係を有する。
ある実現可能な実装形態では、1つまたは複数の参照サンプルは、目標サンプルと同じ水平座標を有し目標サンプルに対するあらかじめ設定された垂直座標差を有する再構築されたサンプル、または、目標サンプルと同じ垂直座標を有し目標サンプルに対するあらかじめ設定された水平座標差を有する再構築されたサンプルを含む。
ある実現可能な実装形態では、計算モジュール1803は、以下の式に従って目標サンプルの予測値を更新する。
ここで、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-M1,yP)およびrecon(xP,yN-M2)は、それぞれ座標位置(xN-M1,yP)および(xP,yN-M2)における参照サンプルの再構築された値を表し、w1、w2、w3、w4、w5、およびw6はあらかじめ設定された定数であり、M1およびM2はあらかじめ設定された正の整数である。
ある実現可能な実装形態では、w1+w2=R、w3+w4=R、またはw5+w6+w7=Rであり、Rは2のn乗であり、nは非負の整数である。
ある実現可能な実装形態では、計算モジュール1803は、以下の式に従って目標サンプルの予測値を更新する。
ここで、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-M1,yP)、recon(xN-M2,yP)、recon(xP,yN-M3)、およびrecon(xP,yN-M4)は、それぞれ、座標位置(xN-M1,yP)、(xN-M2,yP)、(xP,yN-M3)、および(xP,yN-M4)における参照サンプルの再構築された値を表し、w1、w2、w3、w4、w5、w6、w7、w8、w9、w10、およびw11はあらかじめ設定された定数であり、M1、M2、M3、およびM4はあらかじめ設定された正の整数である。
ある実現可能な実装形態では、w1+w2+w3=S、w4+w5+w6=S、またはw7+w8+w9+w10+w11=Sであり、Sは2のn乗であり、nは非負の整数である。
ある実現可能な実装形態では、計算モジュール1803は、以下の式に従って目標サンプルの予測値を更新する。
ここで、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-M1,yP)およびrecon(xP,yN-M2)は、それぞれ座標位置(xN-M1,yP)および(xP,yN-M2)における参照サンプルの再構築された値を表し、w1、w2、およびw3はあらかじめ設定された定数であり、M1およびM2はあらかじめ設定された正の整数である。
ある実現可能な実装形態では、w1+w2+w3=Rであり、Rは2のn乗であり、nは非負の整数である。
ある実現可能な実装形態では、計算モジュール1803は、以下の式に従って目標サンプルの予測値を更新する。
ここで、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-M1,yP)、recon(xN-M2,yP)、recon(xP,yN-M3)、およびrecon(xP,yN-M4)は、それぞれ、座標位置(xN-M1,yP)、(xN-M2,yP)、(xP,yN-M3)、および(xP,yN-M4)における参照サンプルの再構築された値を表し、w1、w2、w3、w4、およびw5はあらかじめ設定された定数であり、M1、M2、M3、およびM4はあらかじめ設定された正の整数である。
ある実現可能な実装形態では、w1+w2+w3+w4+w5=Sであり、Sは2のn乗であり、nは非負の整数である。
ある実現可能な実装形態では、1つまたは複数の参照サンプルは、以下のサンプル、すなわち、目標サンプルと同じ水平座標を有し処理対象ピクチャブロックの上側に隣接する再構築されたサンプル、目標サンプルと同じ垂直座標を有し処理対象ピクチャブロックの左側に隣接する再構築されたサンプル、処理対象ピクチャブロックの右上の再構築されたサンプル、処理対象ピクチャブロックの左下の再構築されたサンプル、または処理対象ピクチャブロックの左上の再構築されたサンプルのうちの1つまたは複数を含む。
ある実現可能な実装形態では、計算モジュール1803は、以下の式に従って目標サンプルの予測値を更新する。
predQ(xP,yP)=(w1*predP(xP,yP)+w2*predP1(xP,yP)+((w1+w2)/2))/(w1+w2)
ここで、predP1(xP,yP)=(predV(xP,yP)+predH(xP,yP)+nTbW*nTbH)>>(Log2(nTbW)+Log2(nTbH)+1)、predV(xP,yP)=((nTbH-1-yP)*p(xP,-1)+(yP+1)*p(-1,nTbH))<<Log2(nTbW)、predH(xP,yP)=((nTbW-1-xP)*p(-1,yP)+(xP+1)*p(nTbW,-1))<<Log2(nTbH)であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(0,0)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、p(xP,-1)、p(-1,nTbH)、p(-1,yP)、およびp(nTbW,-1)は、それぞれ、座標位置(xP,-1)、(-1,nTbH)、(-1,yP)、および(nTbW,-1)における参照サンプルの再構築された値を表し、w1およびw2はあらかじめ設定された定数であり、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表す。
ある実現可能な実装形態では、目標サンプルの予測値は以下の式に従って更新される。
predQ(xP,yP)=(w1*predP(xP,yP)+w2*predV(xP,yP)+w3*predH(xP,yP)+((w1+w2+w3)/2))/(w1+w2+w3)
ここで、predV(xP,yP)=((nTbH-1-yP)*p(xP,-1)+(yP+1)*p(-1,nTbH)+nTbH/2)>>Log2(nTbH)、predH(xP,yP)=((nTbW-1-xP)*p(-1,yP)+(xP+1)*p(nTbW,-1)+nTbW/2)>>Log2(nTbW)であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(0,0)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、p(xP,-1)、p(-1,nTbH)、p(-1,yP)、およびp(nTbW,-1)は、それぞれ、座標位置(xP,-1)、(-1,nTbH)、(-1,yP)、および(nTbW,-1)における参照サンプルの再構築された値を表し、w1およびw2はあらかじめ設定された定数であり、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表す。
ある実現可能な実装形態では、目標サンプルの予測値は、以下の式に従って更新される。
predQ(xP,yP)=(((w1*predP(xP,yP))<<(Log2(nTbW)+Log2(nTbH)+1))+w2*predV(xP,yP)+w3*predH(xP,yP)+(((w1+w2+w3)/2)<<(Log2(nTbW)+Log2(nTbH)+1)))/(((w1+w2+w3)<<(Log2(nTbW)+Log2(nTbH)+1)))
ここで、predV(xP,yP)=((nTbH-1-yP)*p(xP,-1)+(yP+1)*p(-1,nTbH))<<Log2(nTbW)、predH(xP,yP)=((nTbW-1-xP)*p(-1,yP)+(xP+1)*p(nTbW,-1))<<Log2(nTbH)であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(0,0)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、p(xP,-1)、p(-1,nTbH)、p(-1,yP)、およびp(nTbW,-1)は、それぞれ、座標位置(xP,-1)、(-1,nTbH)、(-1,yP)、および(nTbW,-1)における参照サンプルの再構築された値を表し、w1およびw2はあらかじめ設定された定数であり、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表す。
ある実現可能な実装形態では、計算モジュール1803は、以下の式に従って目標サンプルの予測値を更新する。
predQ(xP,yP)=(w1*predP(xP,yP)+w2*predP1(xP,yP)+((w1+w2)/2))/(w1+w2)
ここで、
predP1(xP,yP)=(predV(xP,yP)+predH(xP,yP)+1)>>1、
predV(xP,yP)=((nTbH-1-(yP-yN))*recon(xP,yN-1)+(yP-yN+1)*recon(xN-1,yN+nTbH)+(nTbH>>1))>>Log2(nTbH)、
predH(xP,yP)=((nTbW-1-(xP-xN))*recon(xN-1,yP)+(xP-xN+1)*recon(xN+nTbW,yN-1)+(nTbW>>1))>>Log2(nTbW)
であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xP,yN-1)、recon(xN-1,yN+nTbH)、recon(xN-1,yP)、およびrecon(xN+nTbW,yN-1)は、それぞれ、座標位置(xP,yN-1)、(xN-1,yN+nTbH)、(xN-1,yP)、および(xN+nTbW,yN-1)における参照サンプルの再構築された値を表し、w1およびw2はあらかじめ設定された定数であり、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表す。
ある実現可能な実装形態では、w1とw2の合計は2のn乗であり、nは非負の整数である。
ある実現可能な実装形態では、計算モジュール1803は、以下の式に従って目標サンプルの予測値を更新する。
ここで、refL(xP,yP)=recon(xN-1,yP)、refT(xP,yP)=recon(xP,yN-1)、wT(yP)=32>>((yP<<1)>>nScale)、wL(xP)=32>>((xP<<1)<<nScale)、wTL(xP,yP)=((wL(xP)>>4)+(wT(yP)>>4))、nScale=((Log2(nTbW)+Log2(nTbH)-2)>>2)であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xP,yN-1)、recon(xN-1,yP)、およびrecon(xN-1,yN-1)は、それぞれ、座標位置(xP,yN-1)、(xN-1,yP)、および(xN-1,yN-1)における参照サンプルの再構築された値を表し、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表し、clip1Cmpはクリッピング動作を表す。
ある実現可能な実装形態では、計算モジュール1803は、以下の式に従って目標サンプルの予測値を更新する。
ここで、refL(xP,yP)=recon(xN-1,yP)、refT(xP,yP)=recon(xP,yN-1)、wT(yP)=32>>((yP<<1)>>nScale)、wL(xP)=32>>((xP<<1)>>nScale)、nScale=((Log2(nTbW)+Log2(nTbH)-2)>>2)であり、目標サンプルの座標は(xP,yP)であり、処理対象ピクチャブロックの左上サンプルの座標は(xN,yN)であり、predP(xP,yP)は更新の前の目標サンプルの予測値を表し、predQ(xP,yP)は目標サンプルの更新された予測値を表し、recon(xN-1,yP)およびrecon(xP,yN-1)は、それぞれ、座標位置(xN-1,yP)および(xP,yN-1)における参照サンプルの再構築された値を表し、nTbWおよびnTbHは処理対象ピクチャブロックの幅および高さを表し、clip1Cmpはクリッピング動作を表す。
ある実現可能な実装形態では、計算モジュール1803はさらに、参照サンプルの再構築された値が利用不可能であるとき、あらかじめ設定された順序で、あらかじめ設定された量の利用可能な参照サンプルが取得されるまで、処理対象ピクチャブロックの上側および左側に隣接するサンプルの利用可能性を決定し、利用可能な参照サンプルの再構築された値および目標サンプルの予測値に対して加重計算を実行するように構成される。
ある実現可能な実装形態では、計算モジュール1803はさらに、参照サンプルが処理対象ピクチャブロックの上に位置するとき、参照サンプルの再構築された値ならびに参照サンプルの左側の近隣サンプルおよび右側の近隣サンプルの再構築された値に対して加重計算を実行し、参照サンプルが処理対象ピクチャブロックの左側に位置するとき、参照サンプルの再構築された値ならびに参照サンプルの上側の近隣サンプルおよび下側の近隣サンプルの再構築された値に対して加重計算を実行し、加重計算の結果を使用することによって参照サンプルの再構築された値を更新するように構成される。
ある実現可能な実装形態では、計算モジュール1803はさらに、第1のあらかじめ設定されたアルゴリズムを使用することによって、動き情報を最初に更新するように構成される。それに対応して、補償モジュール1802は特に、最初に更新された動き情報に基づいて、処理対象ピクチャブロックに対して動き補償を実行するように構成される。
ある実現可能な実装形態では、計算モジュール1803はさらに、第2のあらかじめ設定されたアルゴリズムを使用することによって、予測ブロックをあらかじめ更新するように構成される。それに対応して、計算モジュール1803は特に、1つまたは複数の参照サンプルの1つまたは複数の再構築された値および目標サンプルのあらかじめ更新された予測値に対して加重計算を実行するように構成される。
ある実現可能な実装形態では、計算モジュール1803はさらに、第2のあらかじめ設定されたアルゴリズムを使用することによって、目標サンプルの予測値を更新するように構成される。
ある実現可能な実装形態では、解析モジュール1801はさらに、処理対象ピクチャブロックに対応する予測モードを取得するためにビットストリームを解析し、予測モードがマージ(merge)モードおよび/またはインター進化型動きベクトル予測(inter AMVP)モードであると決定するように構成される。
ある実現可能な実装形態では、解析モジュール1801はさらに、処理対象ピクチャブロックの更新決定指示情報を取得するためにビットストリームを解析し、処理対象ピクチャブロックの予測ブロックを更新することを示すために更新決定指示情報が使用されると決定するように構成される。
ある実現可能な実装形態では、計算モジュール1803はさらに、処理対象ピクチャブロックのあらかじめ設定された更新決定指示情報を取得し、処理対象ピクチャブロックの予測ブロックを更新することを示すために更新決定指示情報が使用されることを決定するように構成される。
図19は、本出願のある実施形態による、インター予測デバイス1900の概略構造ブロック図である。具体的には、装置は、プロセッサ1901およびプロセッサに結合されたメモリ1902を含む。プロセッサ1901は、図13に示される実施形態および実現可能な実装形態を実行するように構成される。
プロセッサ1901は、中央処理装置(Central Processing Unit, CPU)、汎用プロセッサ、デジタルシグナルプロセッサ(Digital Signal Processor, DSP)、ASIC、FPGAもしくは別のプログラマブル論理デバイス、トランジスタ論理デバイス、ハードウェアコンポーネント、またはこれらの任意の組合せであり得る。プロセッサ1901は、本出願において開示される内容を参照して説明される様々な例示的な論理ブロック、モジュール、および回路を実装または実行し得る。プロセッサは、代替的に、コンピューティング機能、たとえば、1つまたは複数のマイクロプロセッサの組合せまたはDSPとマイクロプロセッサの組合せを実装するプロセッサの組合せであり得る。
前述の方法の実施形態における各シナリオのすべての関連する内容は、対応する機能モジュールの機能の説明において記載され得る。詳細はここでは再び説明されない。
本出願の特定の態様がビデオエンコーダ100およびビデオデコーダ200を参照して説明されたが、本出願の技術は、多くの他のビデオ符号化および/または復号ユニット、プロセッサ、処理ユニット、ならびにハードウェアベースの符号化ユニットなど、たとえばエンコーダ/デコーダ(CODEC)によって使用され得ることを理解されたい。加えて、図13において示され説明されるステップは、単に実現可能な実装形態として与えられることを理解されたい。言い換えると、図13の実現可能な実装形態において示されるステップは、必ずしも図13に示される順序で実行されず、より少数の、追加の、または代替のステップが実行され得る。
さらに、実現可能な実装形態に応じて、本明細書で説明される方法のいずれかにおける具体的な行為またはイベントが、異なる順番で実行されてもよく、行為もしくはイベントが追加されてもよく、または行為もしくはイベントが組み合わされても、もしくは省略されてもよい(たとえば、説明された行為またはイベントのすべてが方法を実施するために必ずしも必要ではない)ことを理解されたい。さらに、特定の実現可能な実装形態では、行為またはイベントは、(たとえば)マルチスレッド処理もしくは割り込み処理を受け、または、逐次ではなく同時に複数のプロセッサによって処理されてもよい。さらに、本出願の特定の態様は、わかりやすくするために単一のモジュールまたはユニットによって実行されるものとして説明されるが、本出願の技術は、ビデオデコーダと関連付けられるユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
1つまたは複数の実現可能な実装形態では、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せを使用することによって実装され得る。機能がソフトウェアを使用することによって実装される場合、機能は、1つまたは複数の命令もしくはコードとしてコンピュータ可読媒体に記憶され、または、コンピュータ可読媒体を通じて送信されてもよく、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、コンピュータ可読記憶媒体または通信媒体を含み得る。コンピュータ可読記憶媒体は、データ記憶媒体などの有形媒体に対応する。通信媒体は、通信プロトコルに従ってある位置から別の位置へのコンピュータプログラム(たとえば)の送信を容易にする任意の媒体を含む。
この方式では、コンピュータ可読媒体は、たとえば、(1)非一時的有形コンピュータ可読記憶媒体、または(2)信号もしくはキャリアなどの通信媒体に対応し得る。データ記憶媒体は、本出願において説明される技術を実装するための命令、コード、および/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
限定ではなく実現可能な実装形態として、コンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは別の光学ディスク記憶装置、磁気ディスク記憶装置もしくは別の磁気記憶装置、フラッシュメモリ、または、命令もしくはデータ構造の形態で必要とされるコードを記憶するために使用されてもよくコンピュータによってアクセスされてもよい任意の他の媒体を含み得る。同様に、あらゆる接続が適切にコンピュータ可読媒体と呼ばれ得る。たとえば、命令が、ウェブサイト、サーバ、または別のリモートソースから、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または、赤外線、無線、およびマイクロ波などのワイヤレス技術を通じて送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または、赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、キャリア、信号、または別の非一時的媒体を含まなくてもよく、代替的に、非一時的有形記憶媒体を意味してもよいことを理解されたい。本明細書において使用される磁気ディスクおよび光学ディスクは、コンパクトディスク(CD)、レーザーディスク(登録商標)、光学ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびBlu-ray(登録商標)ディスクを含む。磁気ディスクは通常、磁気的にデータを再生し、光学ディスクは、レーザーを通じて光学的にデータを再生する。前述の磁気ディスクと光学ディスクの組合せも、コンピュータ可読媒体の範囲に含まれるものとする。
命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の等価な集積論理回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」という用語は、本明細書で説明される技術を実装するために使用される前述の構造または別の構造のいずれか1つであり得る。加えて、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成される専用ハードウェアおよび/もしくはソフトウェアモジュール内で提供されてもよく、または合成コーデックへと組み込まれてもよい。加えて、技術はすべて、1つまたは複数の回路または論理要素において実装され得る。
本出願の技術は、ワイヤレス携帯電話、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、様々な装置またはデバイスにおいて実装され得る。開示される技術を実行するように構成される装置の機能的な態様を強調するために、様々なコンポーネント、モジュール、またはユニットが本出願において説明されるが、これらは、異なるハードウェアユニットによって必ずしも実装されない。より正確には、上で説明されたように、様々なユニットは、コーデックハードウェアユニットへと組み合わされてもよく、または、適切なソフトウェアおよび/またはファームウェアセットと組み合わせて相互運用可能なハードウェアユニット(上で説明された1つまたは複数のプロセッサを含む)によって提供されてもよい。
上記の説明は、本出願の単なる具体的な実装形態であり、本出願の保護範囲を限定することは意図されない。本出願において開示される技術範囲内にあると当業者により容易に理解されるあらゆる変形または置換が、本出願の保護範囲内にあるものとする。したがって、本出願の保護範囲は、請求項の保護範囲に依存するものとする。