本発明は、全般的にビデオデータの符号化および復号化に関し、特に、ビデオデータ符号化および復号化においてサブブロックの動きベクトル予測の方法およびシステムに関する。
デジタル・テレビ、ラップトップまたはデスクトップ・コンピュータ、タブレット・コンピュータ、デジタル・カメラ、デジタル記録装置、デジタル・メディア・プレーヤー、ビデオ・ゲーム機、スマートフォン、ビデオ会議装置やビデオ・ストリーミング装置などの各種電子装置は全てデジタル-ビデオを支持する。電子装置は、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、Advanced Video Coding(AVC)、High Efficiency Video Coding(HEVC)及びVersatile Video Coding(VVC)の標準で定義されたビデオ圧縮/展開の標準を実行することで、デジタル・ビデオ・データを受送信し、符号化し、復号化や格納する。ビデオ圧縮は、通常、空間(フレーム内)予測および/または時間(フレーム間)予測を実行して、ビデオデータに固有の冗長性を低減または削除することを含む。ブロックに基づくビデオ符号化では、ビデオフレームが、符号化木ユニット(CTU:Coding Tree UNIT)と呼ばれる複数のビデオブロックを含む1つ又は複数のスライスに区画される。各CTUは、1つの符号化ユニット(CU)を含み、または予め定められた最小のCUサイズに達するまでより小さなCUに再帰的に区画されることがある。各CU(リーフCUとも呼ばれる)には、1つまたは複数の変換ユニット(TU:transform unit)と、1つまたは複数の予測ユニット(PU:prediction unit)とが含まれる。各CUは、イントラ、インター、またはIBCモードのいずれかで符号化されることが可能である。1つのビデオフレームにおけるイントラ符号化された(I)スライス内のビデオブロックは、同ビデオフレームにおける隣接ブロック内の参照サンプルに関する空間予測で符号化される。1つのビデオフレームにおけるインター符号化された(PまたはB)スライス内のビデオブロックは、同ビデオフレームにおける隣接ブロック内の参照サンプルに関する空間予測、または他の以前および/または将来の参照ビデオフレームにおける参照サンプルに関する時間予測を使用する。
以前符号化された参照ブロック、例えば隣接ブロックに基づく空間予測又は時間予測では、符号化対象である現在のビデオブロックの予測ブロックが得られる。参照ブロックを見つける処理は、ブロックマッチングアルゴリズムによって実現されることが可能である。符号化対象である現在ブロックと予測ブロックとの間の画素差を示す残差データは、残差ブロック又は予測誤差と呼ばれる。インター符号化ブロックは、予測ブロックを生成した参照フレームにおける参照ブロックに指す動きベクトルと、残差ブロックとに応じて符号化される。動きベクトルを確定する処理は、通常、動き推定と呼ばれる。イントラ符号化ブロックは、イントラ予測モードと残差ブロックに応じて符号化されたものである。更なる圧縮のために、残差ブロックは画素領域から変換領域、例えば周波数領域に変換され、結果としてその後定量化される残差変換係数が得られる。そして、最初に二次元行列で配置され且つ定量化された変換係数は、走査されて変換係数の一次元ベクトルを生成し、その後、更なる圧縮を達成するようにビデオ・ビットストリームにエントロピー符号化される。
そして、符号化されたビデオ・ビットストリームは、コンピュータ読取可能な記憶媒体(例えば、フラッシュメモリ)に保存されて、デジタル・ビデオ能力を持つ電子装置によってアクセスされ、或いは有線または無線でこの電子装置に直接送信される。そして、この電子装置は、例えば、符号化されたビデオ・ビットストリームを解析してこのビットストリームから構文要素を取得し、このビットストリームから取得された構文要素の少なくとも一部に基づいてデジタル・ビデオデータをこの符号化されたビデオストリームから元のフォーマットに再構成することで、ビデオ展開(上述したビデオ圧縮とは反対のプロセス)を実行しており、この再構成されたデジタル・ビデオデータを電子装置のディスプレイに再現する。
デジタル・ビデオの品質が高解像度から4K×2K、さらに8K×4Kに進んでいるにつれて、符号化/復号化対象となるビデオデータの量は指数関数的に増加する。復号化されたビデオデータの画像品質を維持しながらビデオデータを効率的に符号化/復号化することは、常に課題である。
本願は、ビデオデータの符号化および復号化、より具体的には、サッブブロックの動きベクトル予測の方法およびシステムに関する実現を説明する。
本願の第1の方面に従い、現在の画像における現在の符号化ユニットを復号化するための方法であって、前記現在の符号化ユニットのコロケーテッド画像を決定することと、前記現在の符号化ユニットの空間的隣接ブロックを位置決めることと、前記空間的隣接ブロックの第1の参照フレームリスト(List0)に含まれる動きベクトルのそれぞれを順次検査することと、List0内のそれぞれの動きベクトルのいずれが前記コロケーテッド画像を当該動きベクトルの参照画像として使用するという決定に従って:List0における当該前記動きベクトルを前記動きシフトベクトルとして設定し、前記空間的隣接ブロックのList0における後続の動きベクトル及び第2の参照フレームリスト(List1)における動きベクトルの検査を放棄することと、List0内のそれぞれの動きベクトルのいずれが前記コロケーテッド画像を参照画像として使用しないという決定に従って:前記空間的隣接ブロックのList1に含まれる動きベクトルのそれぞれを順次検査し、List1内のそれぞれの動きベクトルのいずれが前記コロケーテッド画像を当該動きベクトルの参照画像として使用するという決定に従って:List1内の当該動きベクトルを前記動きシフトベクトルとして設定し、List1における後続の動きベクトルの検査を放棄し、List1内のそれぞれの動きベクトルがいずれも前記コロケーテッド画像を当該動きベクトルの参照画像として使用しないという決定に従って、前記動きシフトベクトルをゼロ値ベクトルに設定することと、を含み、前記現在の画像における前記現在の符号化ユニットと前記コロケーテッド画像における対応するコロケーテッドブロックとの間の空間的位置のシフトを示す前記現在の符号化ユニットの動きシフトベクトルを決定することと、前記現在の符号化ユニットにおける複数のサブブロックのうちのそれぞれのサブブロックについて、前記動きシフトベクトルに基づいて、前記コロケーテッド画像における対応するサブブロックから、サブブロックに基づく時間的動きベクトルを再構成することと、を含む復号化方法を提供する。
本願の第2の方面に従い、コンピューティング装置は、1つまたは複数のプロセッサと、メモリと、前記メモリに格納されている複数のプログラムと、を含む。前記プログラムは、前記1つまたは複数のプロセッサによって実行されると、当該コンピューティング装置に上記の操作を実行させる。
本願の第3の方面に従い、非一時的なコンピュータ読取可能な記憶媒体は、1つまたは複数のプロセッサを有するコンピューティング装置によって実行される複数のプログラムを格納する。前記プログラムは、前記1つまたは複数のプロセッサによって実行されると、前記コンピューティング装置に上記の操作を実行させる。
本発明の実現のさらなる理解を提供する、本明細書の一部として本明細書に引き入れる添付図面は、上述した実現を示し、その説明と共に基礎原理を説明するためものである。なお、同一符号は同一または相当な部分を示す。
図1は、本開示のある実施形態に係る例示的なビデオ符号化および復号化システムを示すブロック図である。
図2は、本開示のある実施形態に係る例示的なビデオエンコーダを示すブロック図である。
図3は、本開示のある実施形態に係る例示的なビデオデコーダを示すブロック図である。
図4A~4Eは、本開示のある実施形態に係る、フレームがどのように再帰的に異なるサイズ及び形状の複数のビデオブロックに区画されるかを示すブロック図である。
図5は、本開示のある実施形態に係る、符号化対象である現在CUの空間的に隣り合っている位置かつ時間的に並べているブロック位置を示すブロック図である。
図6A~6Dは、本開示のある実施形態に係る、現在ブロックの時間的動きベクトル予測子または現在ブロックにおけるサッブブロックのサッブブロック時間的動きベクトル予測子を導出するためのステップを示すブロック図である。
図7は、本開示のある実施形態に係る、時間的動きベクトル予測子およびサッブブロック時間的動きベクトル予測子を導出することに使用される有効な領域を決定するためのブロック図を示している。
図8は、本開示のある実施形態に係る、ビデオエンコーダがサッブブロック時間的動きベクトル予測子を導出する技術を実現する例示的なプロセスを示すフローチャートである。
以下、図面を参照して本発明の実施の形態を詳細に説明する。以下の詳細な説明において、本明細書に述べる趣旨を容易に理解するために、複数の非限定的な具体的な詳細を述べる。ただし、本発明は、特許請求の範囲及びその趣旨から逸脱することではなく種々の変形により実施することができることは当業者には明らかである。例えば、本明細書に述べる趣旨がデジタルビデオ機能を有する多くの種類の電子装置で実施され得る。
図1は、本開示のある実施形態に係る、ビデオブロックを並列に符号化および復号化するための例示的なシステム10を示すブロック図である。図1に示すように、システム10は、将来目標装置14によって復号化されるビデオデータを生成し符号化するソース装置12を含む。ソース装置12および目標装置14には、デスクトップまたはラップトップ・コンピュータ、タブレット・コンピュータ、スマートフォン、セットトップボックス、デジタル・テレビ、カメラ、表示装置、デジタルメディアプレーヤー、ビデオ・ゲーム機、ビデオ・ストリーミング装置などを含む多種の電子装置のいずれかを含んでもよい。ある実施形態では、ソース装置12および目標装置14は、無線通信機能を備えている。
ある実施形態では、目標装置14が、リンク16を介して復号化対象の符号化されたビデオデータを受信する。リンク16には、符号化されたビデオデータをソース装置12から目標装置14に移動できる任意のタイプの通信媒体または装置を含むことが可能である。一つの例では、リンク16には、ソース装置12に符号化されたビデオデータを目標装置14にリアルタイムで直接送信させることができる通信媒体を含んでもよい。符号化されたビデオデータは、無線通信プロトコルなどの通信標準に従って変調され、目標装置14に送信される。通信媒体には、無線周波数(RF:radio frequency)スペクトルや1つまたは複数の物理的な伝送路などの任意の無線または有線通信媒体を含むことが可能である。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネット等のグローバルネットワークなどのようなパケットベースに基づくネットワークの一部として構成してもよい。通信媒体には、ルーター、交換機、基地局や、ソース装置12から目標装置14への通信に役立つ他の任意の装置を含んでもよい。
他のある実施形態では、符号化されたビデオデータは、出力インターフェース22からストレージ装置32に送信される。その後、ストレージ装置32にある符号化されたビデオデータは、入力インターフェース28を介して目標装置14によってアクセスされる。ストレージ装置32には、ハードドライブ、Blu-rayディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、や符号化されたビデオデータを格納するための他の適切なデジタル記憶媒体などのような多種の分散型またはローカルにアクセスされるデータ記憶媒体のいずれかを含むことが可能である。別の例では、ストレージ装置32は、ファイルサーバ、やソース装置12によって生成された符号化ビデオデータを保持することができる別の中間ストレージ装置に対応してもよい。目標装置14は、ストリーミングまたはダウンロードによりストレージ装置32から格納されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを格納し、この符号化されたビデオデータを目標装置14に送信することができる任意のタイプのコンピュータであってよい。例示的なファイルサーバは、ウェブサーバ(例えば、ウェブサイト用もの)、FTPサーバ、ネットワーク接続ストレージ(NAS)装置、またはローカルディスクドライブを含む。目標装置14は、ファイルサーバーに保存されている符号化ビデオデータへのアクセスに適する無線チャネル(例えば、Wi―Fi接続)、有線接続(例えば、DSL、ケーブルモデムなど)、またはそれらの組み合わせを含む任意の標準的なデータ接続を介して、符号化されたビデオデータをアクセスすることができる。ストレージ装置32からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組み合わせであってもよい。
図1に示すように、ソース装置12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。ビデオソース18には、ビデオ・キャプチャ装置(例えばビデオカメラ)、前に捕らえられたビデオを含むビデオアーカイブ、ビデオコンテンツ提供者からビデオを受信するためのビデオフィードインターフェイス、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそれらの組み合わせ等のようなソースを含むことが可能である。一つの例として、ビデオソース18がセキュリティ監視システムのビデオカメラである場合、ソース装置12および目標装置14は、カメラ付き携帯電話またはビデオ電話を構成できる。しかしながら、本願で説明する実施形態は、一般にビデオ符号化に適用可能であり、そして無線および/または有線アプリケーションに適用可能である。
ビデオエンコーダ20は、捕れるビデオ、予め捕らえられたビデオ、またはコンピュータによって生成されたビデオを符号化することができる。符号化されたビデオデータは、ソース装置12の出力インターフェース22を介して目標装置14に直接送信されることが可能である。これに加えて(または選択的に)、符号化されたビデオデータは、その後目標装置14または他の装置によってアクセスされて復号化および/または再生されるように、ストレージ装置32に格納されてもよい。出力インターフェース22は、モデムおよび/または送信機をさらに含んでもよい。
目標装置14は、入力インターフェース28、ビデオデコーダ30、および表示装置34を含む。入力インターフェース28は受信機および/またはモデムを含み、リンク16を介して符号化されたビデオデータを受信する。リンク16を介して通信された、またはストレージ装置32に提供された符号化ビデオデータには、ビデオエンコーダ20によって生成されかつビデオデコーダ30によるビデオデータの復号化に使用される多くの構文要素を含んでもよい。これらの符号化されたビデオデータは、通信媒体で送信されたか、記憶媒体に記憶されているか、ファイルサーバーに記憶されているかに関わらず、そのような構文要素を含んでもよい。
ある実施形態では、目標装置14が、集積された表示装置や、目標装置14と通信できるように構成された外部表示装置である表示装置34を含んでもよい。表示装置34は、復号化されたビデオデータをユーザに表示するものであって、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプの表示装置などの各種の表示装置のいずれかを含んでもよい。
ビデオエンコーダ20およびビデオデコーダ30は、VVC、HEVC、MPEG-4、Part10、高度なビデオ符号化(AVC:Advanced Video Coding)、またはそのような標準の拡張などの専門または業界標準に従って動作する。なお、本願は、特定のビデオ符号化/復号化の標準に限定されず、他のビデオ符号化/復号化標準にも適用可能であることが理解されるべきである。ソース装置12のビデオエンコーダ20は、これらの現在または将来の標準のいずれかに従ってビデオデータを符号化するように構成される。同様に、目標装置14のビデオデコーダ30は、これらの現在または将来の標準のいずれかに従ってビデオデータを復号化するように構成される。
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、離散な論理、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組み合わせなどのような、種々の適切なエンコーダ回路のいずれかによって実現されることが可能である。ソフトウェアによって一部実現される場合、電子装置は、ソフトウェアの命令を適切な非一時的なコンピュータ読取可能な媒体に格納し、1つまたは複数のプロセッサによってハードウェアにおける命令を実行することで本開示に述べたビデオ符号化/復号化操作を実行してもよい。ビデオエンコーダ20およびビデオデコーダ30は、それぞれの装置において結合式エンコーダ/デコーダ(CODEC)の一部として集積された一つまたは複数のエンコーダまたはデコーダに含まれてもよい。
図2は、本願で説明されるある実施形態に係るビデオエンコーダ20を例示するブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックに対してイントラ予測符号化およびインター予測符号化を実行することができる。イントラ予測符号化は空間予測に依存し、所定のビデオフレームまたは画像内のビデオデータの空間的冗長性を低減または削除する。インター予測符号化は、時間予測に依存し、ビデオシーケンスの隣接するビデオフレームまたは画像内のビデオデータの時間的冗長性を低減または削除する。
図2に示すように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理部41、復号化画像バッファ(DPB)64、加算器50、変換処理部52、定量化部54、エントロピー符号化部56を備えている。予測処理部41は、動き推定部42、動き補償部44、区画部45、イントラ予測処理部46、イントラブロックコピー(BC)部48をさらに備えている。ある実施形態では、ビデオエンコーダ20はまた、ビデオブロック再構成のための逆定量化部58、逆変換処理部60、および加算器62をさらに備えている。加算器62とDPB64との間には、再構成されたビデオからブロック同士の境界をフィルタリングしてブロック性アーチファクトを除去するデブロッキング・フィルタ(図示せず)を配置することが可能である。また、加算器62の出力をフィルタリングするために、デブロッキング・フィルタに加えて、環内フィルタ(図示せず)を用いてもよい。ビデオエンコーダ20は、固定的、またはプログラマブル・ハードウェアユニットの形態で形成してもよいし、または図示された固定的またはプログラマブル・ハードウェアユニットの1つ又は複数内で区画されてもよい。
ビデオデータメモリ40は、ビデオエンコーダ20における部品によって符号化対象のビデオデータを格納する。ビデオデータメモリ40におけるビデオデータは、例えばビデオソース18から得られる。DPB64は、ビデオエンコーダ20によってビデオデータを(例えば、イントラ予測またはインター予測符号化モードで)符号化する際に使用される参照ビデオデータを格納するバッファである。ビデオデータメモリ40およびDPB64は、種々のメモリデバイスのいずれかで形成されることが可能である。種々の例では、ビデオデータメモリ40は、ビデオエンコーダ20における他の部品とともにオンチップであってもよく、またはそれらの部品に対するオフチップであってもよい。
図2に示すように、ビデオデータを受信した後、予測処理部41における区画部45は、このビデオデータをビデオブロックに区画する。この区画には、このビデオデータに関するquad-tree構造のような予め定められた区画構造に従って、ビデオフレームをスライス、タイルまたは他のより大きい符号化ユニット(CU)に区画することを含んでもよい。ビデオフレームは、複数のビデオブロック(または、タイルと称されるビデオブロックトセット)に区画されることができる。予測処理部41は、現在のビデオブロックに対して、エラー結果(例えば、符号化率および歪みレベル)に基づいて、複数のイントラ予測符号化モードのうちの1つまたは複数のインター予測符号化モードのうちの1つを選択するように、複数の可能な予測符号化モードのうちの1つを選択する。そして、予測処理部41は、得られたイントラ又はインター予測符号化ブロックを加算器50に提供して残差ブロックを生成し、その後の参照フレームの一部として使用するように符号化ブロックを再構成する。また、予測処理部41は、さらに動きベクトル、イントラモードインジケータ、区画情報及び他の構文情報のような構文要素をエントロピー符号化部56に提供する。
予測処理部41におけるイントラ予測処理部46は、現在のビデオブロックに適するイントラ予測符号化モードを選択するために、符号化対象である現在ブロックと同一のフレーム内の1つまたは複数の隣接ブロックと関連して、現在のビデオブロックのイントラ予測符号化を実行することで空間予測を行うことができる。予測処理部41における動き推定部42および動き補償部44は、一つ又は複数の参照フレーム内の一つ又は複数の予測ブロックに関連して、現在のビデオブロックのインター予測符号化を実行することで時間予測を行う。ビデオエンコーダ20は、複数のパスの符号化処理を実行して、例えばビデオデータにおける各ブロックに適切な符号化モードを選択してもよい。
ある実施形態では、動き推定部42は、ビデオフレームのシーケンスの予め定められたパターンに従って、現在のビデオフレームについて、参照ビデオフレーム内における予測ブロックと関連する現在のビデオフレーム内におけるビデオブロックの予測ユニット(PU)の変位を示す動きベクトルを生成することで、インター予測モードを決定する。動き推定部42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成する処理である。動きベクトルは、例えば、現在のビデオ・フレームまたは画像内の符号化されている現在のビデオブロックに対する参照フレーム(または他の符号化ユニット)内の予測ブロックに対して、現在のビデオ・フレーム(または他の符号化ユニット)内のビデオブロックのPUの変位を示すことができる。シーケンスの予め定められたパターンは、このシーケンスにおけるビデオ・フレームをPフレームまたはBフレームとして指定できる。イントラBC部48は、動き推定部42によるインター予測のための動きベクトル決定と同様な方法により、イントラBC符号化のためのベクトル、例えばブロックベクトルを決定してもよいし、または動き推定部42を利用してこのブロックベクトルを決定してもよい。
予測ブロックは、絶対差の合計(SAD)、二乗差の合計(SSD)又はその他の差メトリックによって決定できる画素差に関して符号化対象のビデオブロックのPUと厳密にマッチングされる参照フレームにおけるブロックである。ある実施形態では、ビデオエンコーダ20が、DPB64に格納されている参照フレームのサブ整数画素位置の値を算出することが可能である。例えば、ビデオエンコーダ20は、参照フレームの1/4画素位置、1/8の画素位置、または他の分数の画素位置の値を補間してよい。したがって、動き推定装置42は、すべての画素位置および分数画素位置に対して動き探索処理を実行して、分数画素精度を有する動きベクトルを出力ことが可能である。
動き推定部42は、インター予測符号化フレーム内のビデオブロックのPUの位置と、それぞれDPB64に格納されている1つまたは複数の参照フレームを識別する第1の参照フレームリスト(List0)または第2の参照フレームリスト(List1)から選択された参照フレームの予測ブロックの位置と比較することで、このPUのための動きベクトルを算出する。動き推定部42は、算出された動きベクトルを動き補償部44に送信し、そして、エントロピー符号化部56に送信する。
動き補償部44によって実行される動き補償には、動き推定部42によって決定された動きベクトルに基づいて予測ブロックを取得または生成することを含み得る。動き補償部44は、現在のビデオブロックのPUのための動きベクトルを受信すると、参照フレームリストの1つにおいてこの動きベクトルが指している予測ブロックを位置決めし、DPB64からこの予測ブロックを探し、この予測ブロックを加算器50に転送する。そして、加算器50は、符号化されている現在のビデオブロックの画素値から動き補償部44によって提供された予測ブロックの画素値を差し引くことで、画素差値の残差ビデオブロックを形成する。残差ビデオブロックを形成する画素差値は、輝度差成分または彩度差成分、あるいはその両方を含み得る。また、動き補償部44は、ビデオフレームのビデオブロックに関する構文要素をさらに生成することが可能であり、これらの構文要素は、ビデオデコーダ30によってビデオフレームのビデオブロックを復号化する際に使用される。構文要素には、例えば、この予測ブロックを識別するための動きベクトルを定義する構文要素、予測モードを示す任意のフラグ、または本明細書で説明される任意の他の構文情報を含んでよい。なお、動き推定部42および動き補償部44は、概念的な目的のために個別に示されているが、高度に集積されてもよい。
ある実施形態では、イントラBC部48は、動き推定部42および動き補償部44に関して上述した方法と同様の方法でベクトルを生成し、予測ブロックを取得することができるが、ここで、予測ブロックは符号化されている現在ブロックと同じフレームにあり、ベクトルは、動きベクトルではなくブロックベクトルと呼ばれる。特に、イントラBC部48は、現在ブロックを符号化することに用いられるイントラ予測モードを決定することができる。ある例では、イントラBC部48は、例えば個別のパスの符号化において、各種のイントラ予測モードを使用して現在ブロックを符号化し、レート歪み解析によりそれらのパフォーマンスを試験することが可能である。次に、イントラBC部48は、種々の試験されたイントラ予測モードから、一つの適切なイントラ予測を選択し使用して、対応するイントラモードインジケータを生成する。例えば、イントラBC部48は、レート歪み解析により種々の試験されたイントラ予測モードのレート歪み値を算出し、試験されたモードからレート歪み特性が最適なイントラ予測モードを適切なイントラ予測モードとして選択し使用してもよい。レート歪み解析では、通常、符号化されているブロックとこの符号化されたブロックを符号化されて生成した、符号化されない元のブロックとの間の歪み(又は、エラー)の量、および、この符号化されるブロックを生成するために使用されるビットレート(すなわち、ビットの数)を決定する。イントラBC部48は、種々の符号化されるブロックについて歪み及びレートから比率を算出して、どのイントラ予測モードがこのブロックに対して最適なレート歪み値を示しているかを決定してもよい。
別の例では、イントラBC部48は、動き推定部42および動き補償部44の全体または一部を使用して、本明細書に記載の実施形態に従うイントラBC予測に係る機能を実行してもよい。いずれの場合も、イントラ・ブロック・コピーについては、予測ブロックが、絶対差の合計(SAD)、二乗差の合計(SSD)または他の差メトリックによって決定できる画素差に関して、符号化対象のブロックと厳密にマッチングすると考えられるものであり、予測ブロックの識別には、サブ整数画素位置の値の算出が含まれる場合がある。
ビデオエンコーダ20は、予測ブロックがイントラ予測に基づいて同じフレームからのものであるか、インター予測に基づいて異なるフレームからのものであるかに関わらず、符号化されている現在のビデオブロックの画素値から予測ブロックの画素値を差し引いて画素差値を生成することで、残差ビデオブロックを生成することができる。残差ビデオブロックを形成する画素差値には、輝度成分差及び彩度成分差の両方を含んでよい。
イントラ予測処理部46は、上述した動き推定部42および動き補償部44によって実行されるインター予測、またはイントラBC部48によって実行されるイントラ・ブロック・コピー予測の代わりに、現在のビデオブロックに対してイントラ予測することができる。特に、イントラ予測処理部46は、1つのイントラ予測モードを決定して現在ブロックを符号化することができる。それを実現するために、イントラ予測処理部46は、例えば、個別のパスの符号化処理において、種々のイントラ予測モードを使用して現在ブロックを符号化し、イントラ予測処理部46(またはある例では、モード選択部)は、試験されたイントラ予測モードから1つの適切なイントラ予測モードを選択し使用してもよい。イントラ予測処理部46は、このブロックに関して選択されたイントラ予測モードを示す情報をエントロピー符号化部56に提供してもよい。エントロピー符号化部56は、選択されたイントラ予測モードを示す情報をビットストリームに符号化することができる。
予測処理部41がインター予測またはイントラ予測により現在のビデオブロックの予測ブロックを決定した後、加算器50は、現在のビデオブロックからこの予測ブロックを差し引くことで残差ビデオブロックを生成する。残差ブロック内の残差ビデオデータは、1つまたは複数の変換ユニット(TU)に含まれて変換処理部52に提供される。変換処理部52は、離散コサイン変換(DCT)または概念的に類似する変換などにより、残差ビデオデータを残差変換係数に変換する。
変換処理部52は、得られた変換係数を定量化部54に送信する。定量化部54は、これらの変換係数を定量化して、ビットレートをさらに低減する。定量化プロセスは、これらの係数の一部または全部に関連するビット深度を減らすことができる。 定量化の度合いは、定量化パラメータを調整することによって変更されることができる。そして、ある例では、定量化部54は、定量化された変換係数を含む行列に対する走査を実行することができる。この走査は、エントロピー符号化部56によって実行されてもよい。
定量化に続いて、エントロピー符号化部56は、例えば、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、構文ベースのコンテキスト適応バイナリ算術符号化(SBAC)、確率間隔区画エントロピー(PIPE)符号化や別のエントロピー符号化方法または技術により、定量化された変換係数を、ビデオ・ビットストリームにエントロピー符号化する。そして、符号化されたビットストリームは、ビデオデコーダ30に送信されてもよいし、またはその後にビデオデコーダ30へ送信するか、またはビデオデコーダ30によって検索するためにストレージ装置32にアーカイブされてもよい。また、エントロピー符号化部56は、符号化されている現在のビデオフレームのための動きベクトルおよび他の構文要素をエントロピー符号化してもよい。
逆定量化部58および逆変換処理部60は、それぞれ、逆定量化および逆変換により、他のビデオブロックの予測に使用される参照ブロックを生成するための画素領域内の残差ビデオブロックを再構成する。以上で述べたように、動き補償部44は、DPB64に格納されたフレームの1つまたは複数の参照ブロックから動き補償予測ブロックを生成することができる。また、動き補償部44は、この予測ブロックに1つまたは複数の補間フィルタを適用して、動き推定に使用されるサブ整数画素値を算出してもよい。
加算器62は、再構成された残差ブロックを動き補償部44によって生成された動き補償予測ブロックに加算して、DPB64に格納する参照ブロックを生成する。そして、この参照ブロックは、予測ブロックとして、イントラBC部48、動き推定部42および動き補償部44によって使用されて後続のビデオフレーム内の別のビデオブロックをインター予測することが可能である。
図3は、本願のある実施形態に係る例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号化部80、予測処理部81、逆定量化部86、逆変換処理部88、加算器90およびDPB92を備える。予測処理部81は、動き補償部82、イントラ予測処理部84及びイントラBC部85をさらに備える。ビデオデコーダ30は、図2を参照してビデオエンコーダ20に関して上述した符号化プロセスとおおよそ逆の復号化プロセスを実行することができる。例えば、動き補償部82は、エントロピー復号化部80から受信した動きベクトルに基づいて予測データを生成し、イントラ予測部84は、エントロピー復号化部80から受信したイントラ予測モードインジケータに基づいて予測データを生成することができる。
ある例では、ビデオデコーダ30における一つの構成要素が本願の実施を実行する任務を負ってもよい。また、ある例では、本開示の実施は、ビデオデコーダ30における1つまたは複数の構成要素に区画されてもよい。例えば、イントラBC部85は、本願の実施を単独で実現してもよいし、または動き補償部82、イントラ予測処理部84およびエントロピー復号化部80などのビデオデコーダ30における他の構成要素と組み合わせて実現してもよい。ある例では、ビデオデコーダ30がイントラBC部85を含まなく、イントラBC部85の機能が動き補償部82のようなの予測処理部81における他の構成要素によって実現されてもよい。
ビデオデータメモリ79は、ビデオデコーダ30における他の構成要素によって復号化される符号化ビデオビットストリームなどのビデオデータを格納することができる。ビデオデータメモリ79に格納されたビデオデータは、例えば、ビデオデータの有線または無線ネットワーク通信や物理的なデータ記憶媒体(例えば、フラッシュドライブやハードディスク)へのアクセスにより、ストレージ装置32やカメラなどのローカルビデオソースから取得した。ビデオデータメモリ79は、符号化されたビデオビットストリームからの符号化されたビデオデータを格納する符号化画像バッファ(CPB)を含んでもよい。ビデオデコーダ30における復号化画像バッファ(DPB)92は、ビデオデコーダ30による(例えば、イントラ予測またはインター予測符号化モードでの)ビデオデータの復号化に使用される参照ビデオデータを格納する。ビデオデータメモリ79およびDPB92は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗型RAM(RRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、または他のタイプのメモリデバイスなどの種々のメモリデバイスのいずれかによって形成されることが可能である。説明の便利上、ビデオデータメモリ79およびDPB92は、図3ではビデオデコーダ30における2つの個別の構成要素として示されている。しかし、当業者にとっては、ビデオデータメモリ79およびDPB92が同じメモリデバイス又は個別のメモリデバイスによって提供されることは明らかである。ある例では、ビデオデータメモリ79は、ビデオデコーダ30における他の構成要素とともにオンチップであってもよく、それらの構成要素に対するオフチップであってもよい。
ビデオデコーダ30は、復号化プロセスにおいて、符号化されたビデオフレームのビデオブロックおよび関連する構文要素を示す符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベルおよび/またはビデオブロックレベルで構文要素を受信してもよい。ビデオデコーダ30のエントロピー復号化部80は、このビットストリームをエントロピー復号化して、定量化された係数、動きベクトルまたはイントラ予測モードインジケータ、および他の構文要素を生成する。そして、エントロピー復号化部80は、動きベクトルおよび他の構文要素を予測処理部81に転送する。
ビデオフレームがイントラ予測符号化(I)フレームに符号化され、または他のタイプのフレームにおけるイントラ符号化予測ブロックに用いられる場合、予測処理部81におけるイントラ予測処理部84は、信号で通知されたイントラ予測モード、および現在フレームの以前復号化されたブロックからの参照データに基づいて、現在のビデオフレームのビデオブロックのための予測データを生成することが可能である。
ビデオフレームがインター予測符号化(すなわち、BまたはP)フレームに符号化された場合、予測処理部81における動き補償部82は、エントロピー復号化部80から受信した動きベクトルおよび他の構文要素に基づいて、現在のビデオフレームのビデオブロックのための1つまたは複数の予測ブロックを生成することが可能である。各予測ブロックは、参照フレームリストのうちの1つ内の参照フレームから生成される。ビデオデコーダ30は、DPB92に格納された参照フレームに基いて、デフォルトの構成技術によりこれらの参照フレームリスト、List0およびList1を構成することが可能である。
ある例では、ビデオブロックがここで述べたイントラBCモードに従って符号化された場合には、予測処理部81におけるイントラBC部85は、エントロピー復号化部80から受信したブロックベクトルおよび他の構文要素に基づいて、現在のビデオブロックのための予測ブロックを生成する。この予測ブロックは、ビデオエンコーダ20によって决定された現在のビデオブロックと同一の画像の再構成領域にあり得る。
動き補償部82および/またはイントラBC部85は、動きベクトルおよび他の構文要素を解析することで現在のビデオフレームのビデオブロックのための予測情報を決定し、そして、この予測情報を使用して復号化されている現在のビデオブロックのための予測ブロックを生成する。例えば、動き補償部82は、受信した構文要素の一部を使用して、このビデオフレームのビデオブロックを符号化するための予測モード(例えば、イントラ予測またはインター予測)、インター予測フレームタイプ(例えば、BまたはP)、このフレームのための1つまたは複数の参照フレームリストの構造情報、このフレームの各インター予測符号化ビデオブロックの動きベクトル、このフレームの各インター予測符号化ビデオブロックのインター予測状態、および現在のビデオフレームにおけるビデオブロックを復号化するための他の情報を決定する。
同様に、イントラBC部85は、受信した構文要素の一部、例えばフラグを使用して、現在のビデオブロックがイントラBCモードで予測されること、このフレームにおけるどのビデオブロックが再構成領域にあり且つDPB92に格納されるべきかに関する構造情報、このフレームにおける各イントラBC予測ビデオブロックのブロックベクトル、このフレームにおける各イントラBC予測ビデオブロックのイントラBC予測状態、及び現在のビデオフレームにおけるビデオブロックを復号化するための他の情報を決定することができる。
また、動き補償部82は、ビデオエンコーダ20がビデオブロックの符号化において使用した補間フィルタを使用して補間を実行して、参照ブロックのサブ整数画素の補間値を算出することもできる。この場合、動き補償部82は、受信した構文要素からビデオエンコーダ20によって使用された補間フィルタを決定し、この補間フィルタを使用して予測ブロックを生成してもよい。
逆定量化部86は、ビデオエンコーダ20によって定量化の度合いを決定するためにこのビデオフレーム内の各ビデオブロックに対して算出された定量化パラメータと同じものを使用して、ビットストリームに提供され且つエントロピー復号化部80によってエントロピー復号化された定量化の変換係数を逆定量化する。逆変換処理部88は、画素領域にある残差ブロックを再構成するように、逆変換、例えば逆DCT、逆整数変換、または概念的に類似の逆変換処理をこれらの変換係数に適用する。
動き補償部82またはイントラBC部85がベクトルおよび他の構文要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、加算器90は、逆変換処理部88からの残差ブロックと動き補償部82及びイントラBC部85によって生成された対応する予測ブロックとを加算することで、現在のビデオブロックに対して復号化されたビデオブロックを再構成する。加算器90とDPB92との間には、インループフィルタ(図示せず)を配置して、この復号化されたビデオブロックをさらに処理することが可能である。そして、所定のフレーム内のこれらの復号化されたビデオブロックは、次のビデオブロックの将来の動き補償に使用される参照フレームを格納するDPB92に格納される。また、DPB92、またはDPB92とは別のメモリデバイスには、図1の表示装置34などのような表示装置にその後表示されるように、復号化されたビデオも格納されることが可能である。
典型的なビデオ符号化プロセスでは、1つのビデオシーケンスが、通常、順序付けられたフレームまたは画像のセットを含む。各フレームには、SL、SCbおよびSCrで示す3つのサンプル行列を含むことが可能である。SLは、輝度サンプルの2次元行列である。SCbは、Cb彩度サンプルの2次元行列である。SCrは、Cr彩度サンプルの2次元行列である。別の例では、フレームがモノクロであることがあり、この場合、輝度サンプルの1つの2次元行列のみが含まれる。
図4Aに示すように、ビデオエンコーダ20(または、より具体的には区画部45)は、まずフレームを1組の符号化木ユニットに区画することにより、このフレームの符号化表現を生成する。ビデオフレームには、ラスター走査順で左から右、および上から下に連続的に順序付けられた整数個のCTUが含まれる。各CTUは、最大の論理的な符号化ユニットであり、幅および高さが、ビデオシーケンス内のすべてのCTUが128×128、64×64、32×32及び16×16のうちの1つである同じサイズを有するように、ビデオエンコーダ20によってシーケンスパラメータセットで通知される。なお、本願は必ずしも特定のサイズに限定されない。図4Bに示すように、各CTUは、輝度サンプルの1つの符号化木ブロック(CTB)、彩度サンプルの2つの対応する符号化木ブロック、および符号化木ブロックのサンプルを符号化するために使用される構文要素を含み得る。構文要素は、画素の符号化ブロックの異なるタイプのユニットの属性、及びどのようにビデオシーケンスがビデオデコーダ30において再構成されるかを記述するものであって、例えば、インター予測またはイントラ予測、イントラ予測モード、動きベクトルおよび他のパラメータを含む。モノクロ画像または3つの個別の色平面を有する画像では、1つのCTUが、単一の符号化木ブロックと、この符号化木ブロックのサンプルを符号化するために使用される構文要素とを含み得る。符号化木ブロックは、N×Nのサンプルブロックであることが可能である。
より良いパフォーマンスを達成するために、ビデオエンコーダ20は、CTUの符号化木ブロックに対して二分木区画、四分木区画、またはそれらの組み合わせなどの木区画を再帰的に実行して、このCTUをより小さな符号化ユニット(CU)に区画することができる。より良いパフォーマンスを達成するために、ビデオエンコーダ20は、CTUの符号化木ブロックに対して二分木区画、三分木区画、四分木区画、またはそれらの組み合わせなどの木区画を再帰的に実行して、このCTUをより小さな符号化ユニット(CU)に区画することができる。図4Cに示すように、64×64のCTU400は、まず、32×32ブロックサイズの4つのより小さなCUに区画される。これらの4つのより小さいCUのうち、CU410及びCU420は、それぞれ16×16ブロックサイズの4つのCUに区画される。16×16ブロックサイズの2つのCU430および440は、それぞれ8×8ブロックサイズの4つのCUにさらに区画される。図4Dは、図4Cに示されたCTU400の区画プロセスの最終的な結果を表す四分木データ構造を示し、四分木の各リーフノードは、32×32から8×8までの各サイズの1つのCUに対応する。図4Bに示されたCTUのように、各CUは、フレームの同じサイズの輝度サンプルの1つの符号化ブロック(CB)と、彩度サンプルの2つの対応する符号化ブロックと、これらの符号化ブロックのサンプルを符号化するために使用される構文要素とを含み得る。モノクロ画像または3つの個別の色平面を有する画像には、1つのCUが、単一の符号化ブロックと、この符号化ブロックのサンプルを符号化するために使用される構文構造とを含み得る。なお、図4Cおよび図4Dに示す四分木分割は、例示的にすぎず、1つのCTUが四分/三分/二分木区画に基づいて各種のローカル特性に適するCUに分割されることができる。マルチタイプ木構造では、1つのCTUが四分木構造に従って分割され、各四分木リーフCUが、二分木および三分木構造に従ってさらに分割されることができる。図4Eに示すように、幅Wおよび高さHを有する符号化ブロックの5種の可能な区画タイプ、すなわち、四元区画、水平二元区画、垂直二元区画、水平三元区画、および垂直三元区画がある。
ある実施形態では、ビデオエンコーダ20が、さらにCUの符号化ブロックを1つまたは複数のM×N予測ブロック(PB)に区画するこができる。予測ブロックは、同じ予測(インター予測またはイントラ予測)が適用される長方形(正方形または非正方形)のサンプルブロックである。CUの予測ユニット(PU)は、1つの輝度サンプルの予測ブロック、彩度サンプルの2つの対応する予測ブロック、およびこれらの予測ブロックを予測するために使用される構文要素を含み得る。モノクロ画像または3つの個別の色平面を有する画像では、PUが単一の予測ブロックと、この予測ブロックを予測するために使用される構文構造とを含み得る。ビデオエンコーダ20は、CUの各PUの輝度予測ブロック、Cb予測ブロックおよびCr予測ブロックに対する予測的な輝度ブロック、予測的なCbブロックおよび予測的なCrブロックを生成することができる。
ビデオエンコーダ20は、イントラ予測またはインター予測により、PUに対してこれらの予測ブロックを生成することができる。ビデオエンコーダ20は、イントラ予測によりPUの予測ブロックを生成する場合、このPUに関連するフレームの復号化されたサンプルに基づいて、このPUの予測的なブロックを生成することができる。ビデオエンコーダ20は、インター予測によりPUの予測的なブロックを生成する場合、このPUに関連するフレーム以外の1つまたは複数のフレームの復号化されたサンプルに基づいて、このPUの予測的なブロックを生成することができる。
ビデオエンコーダ20は、CUの1つまたは複数のPUの予測的な輝度ブロック、予測的なCbブロック、および予測的なCrブロックを生成した後、CUの元の輝度符号化ブロックからCUの予測的な輝度ブロックを差し引くことで、このCUの輝度残差ブロックを生成し、ここで、このCUの輝度残差ブロックにおける各サンプルが、このCUの予測的な輝度ブロックのうち1つの予測的な輝度ブロックにおける輝度サンプルとこのCUの元の輝度符号化ブロックにおける対応するサンプルとの差を示す。同様に、ビデオエンコーダ20は、CUのCb残差ブロックおよびCr残差ブロックをそれぞれ生成し、ここで、このCUのCb残差ブロックにおける各サンプルが、このCUの予測的なCbブロックのうち1つの予測的なCbブロックにおけるCbサンプルとこのCUの元のCb符号化ブロックにおける対応するサンプルとの差を示し、このCUのCr残差ブロックにおける各サンプルが、このCUの予測的なCrブロックのうち1つの予測的なCrブロックにおけるCrサンプルとこのCUの元のCr符号化ブロックにおける対応するサンプルとの差を示す。
さらに、図4Cに示すように、ビデオエンコーダ20は、四分木区画により、CUの輝度残差ブロック、Cb残差ブロック、およびCr残差ブロックを1つまたは複数の輝度変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解することができる。変換ブロックは、同じ変換が適用される長方形(正方形または非正方形)のサンプルブロックである。CUの変換ユニット(TU)は、輝度サンプルの変換ブロック、彩度サンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用される構文要素を含み得る。したがって、CUの各TUは、輝度変換ブロック、Cb変換ブロックおよびCr変換ブロックに関連付けられることが可能である。ある例では、TUに関連付けられた輝度変換ブロックは、CUの輝度残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロ画像または3つの個別の色平面を有する画像では、TUが、単一の変換ブロックと、この変換ブロックのサンプルを変換するために使用される構文構造とを含み得る。
ビデオエンコーダ20は、1つまたは複数の変換をTUの輝度変換ブロックに適用して、このTUの輝度係数ブロックを生成することができる。係数ブロックは、変換係数の2次元行列であってもよい。変換係数はスカラー量であってもよい。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、このTUのCb係数ブロックを生成することができる。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、このTUのCr係数ブロックを生成することができる。
ビデオエンコーダ20は、係数ブロック(例えば、輝度係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後、係数ブロックを定量化してもよい。定量化とは、一般的に、変換係数を定量化してこれらの変換係数を示すデータの量をなるべく低減し、更なる圧縮に達することを意味する。ビデオエンコーダ20は、係数ブロックを定量化した後、定量化された変換係数を示す構文要素をエントロピー符号化することが可能である。例えば、ビデオエンコーダ20は、定量化された変換係数を示す構文要素に対してコンテキスト適応型バイナリ算術符号化(CABAC)を実行してもよい。最終的に、ビデオエンコーダ20は、符号化されたフレームおよび関連データの表現を構成するビットシーケンスを含むビットストリームを出力して、ストレージ装置32に保存するか、または目標装置14に送信する。
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信した後、このビットストリームを解析して、ビットストリームから構文要素を取得する。ビデオデコーダ30は、ビットストリームから取得された構文要素の少なくとも一部に基づいて、ビデオデータのフレームを再構成することができる。ビデオデータを再構成するプロセスは、一般的に、ビデオエンコーダ20によって実行された符号化プロセスと逆である。例えば、ビデオデコーダ30は、現在CUのTUに関連する係数ブロックに対して逆変換を実行して、現在CUのTUに関連する残差ブロックを再構成することが可能である。また、ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルと現在CUのTUの変換ブロックの対応するサンプルとを加算することによって、現在CUの符号化ブロックを再構成する。フレームの各CUの符号化ブロックが再構成された後、ビデオデコーダ30はこのフレームを再構成することが可能である。
上述したように、ビデオ符号化では、主に2つのモード、即ちイントラフレーム予測(またはイントラ予測)及びインターフレーム予測(またはインター予測)を使用してビデオ圧縮を実現する。なお、IBCは、イントラフレーム予測または第三モードと見なすことができる。この2つのモードを比べると、インターフレーム予測は、動きベクトルを使用して参照ビデオブロックから現在のビデオブロックを予測するため、イントラフレーム予測よりも符号化効率に大きく貢献する。
しかし、ビデオデータ・キャプチャ技術の向上及びビデオデータの詳細を保持するためのより精細化的なビデオブロックサイズにつれて、現在フレームのための動きベクトルを表すために必要なデータの量も大幅に増加している。この課題を解決するための1つの方法は、空間ドメインと時間ドメインにおける1組の隣り合うCUが、予測目的のための同じビデオデータを含むだけでなく、これらの隣り合うCU間で動きベクトルも同じであるという事実が有益である。したがって、空間的に隣り合うCUおよび/または時間的にコロケーテッドCUの動き情報の空間的および時間的相関性を探索することにより、空間的に隣り合うCUおよび/または時間的にコロケーテッドCUの動き情報を、現在CUの「動きベクトル予測子」(MVP)もという動き情報(例えば、動きベクトル)の近似として使用することが可能である。
図2を参照して上述した動き推定部42によって決定された現在CUの実際の動きベクトルをビデオビットストリームに符号化する代わりに、現在CUの実際の動きベクトルから現在CUの動きベクトル予測子を差し引くにより、現在CUの動きベクトル差(MVD)を生成する。これにより、フレームの各CUに対して動き推定部42によって決定した動きベクトルをビデオビットストリームに符号化する必要がなく、ビデオビットストリームにおける動き情報を表すためのデータの量を大幅に減らすことができる。
符号化ブロックのインターフレーム予測中に参照フレーム内から予測ブロックを選択するプロセスと同様に、ビデオエンコーダ20及びビデオデコーダ30は、1組のルールにより、現在CUの空間的に隣り合うCUおよび/または時間的にコロケーテッドCUに関連する潜在的な候補動きベクトルを使用して動きベクトル候補リスト(「マージリスト」とも呼ばれる)を構成し、そしてこれらの動きベクトル候補リストから1つの項目を選択して現在CUの動きベクトル予測子とする必要がある。これにより、ビデオエンコーダ20とビデオデコーダ30との間で動きベクトル候補リスト自身を送信する必要がなく、動きベクトル候補リスト内の選択された動きベクトル予測子の索引は、ビデオエンコーダ20およびビデオデコーダ30が動きベクトル候補リスト内で同じ動きベクトル予測子を使用して現在CUを符号化および復号化することに十分である。
ある実施形態では、各インター予測CUが、動きベクトル候補リストを構成するためのインター(「高度な動きベクトル予測」(AMVP))、スキップおよびマージを含む3つの動きベクトル予測モードを有する。各モードでは、以下に説明するアルゴリズムに従って、1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加することが可能である。最終的に、候補リスト内のそれらの動きベクトル候補のうちの1つは、ビデオエンコーダ20によってビデオビットストリームに符号化されるか、またはビデオデコーダ30によってビデオビットストリームから復号化されるインター予測CUの最適な動きベクトル予測子として使用される。候補リストから最適な動きベクトル予測子を見つけるために、動きベクトル競合(MVC)スキームが導入されて、空間的および時間的動きベクトル候補を含む所定の動きベクトル候補セット、すなわち動きベクトル候補リストから1つの動きベクトルが選択される。
動きベクトル予測子候補は、空間的に隣り合い、または時間的にコロケーテッドCUから導出されることに加えて、いわゆる「履歴による動きベクトル予測」(HMVP)テーブルからも導出されることが可能である。HMVPテーブルには、それぞれがCTUの同じ行(または同じCTU)の所定のCUを符号化/復号化することに使用された予め定められた数の動きベクトル予測子を収納している。これらのCUの空間的/時間的近接性によって、HMVPテーブルにおける動きベクトル予測子のうち1つが、CTUの同じ行内の異なるCUを符号化/復号化することに再利用される可能性は高い。したがって、動きベクトル候補リストを構成する処理にHMVPテーブルを使用することにより、より高い符号化効率を達成することが可能である。
ある実施形態では、HMVPテーブルが固定の長さ(例えば5)を有し、先入れ先出し(FIFO)の方式で管理される。例えば、CUの1つのインター符号化ブロックを復号化する際に、このCUに対して動きベクトルを再構成する。再構成された動きベクトルが後続のCUの動きベクトル予測子である可能性があるので、HMVPテーブルは、この動きベクトルによりオンザフライで更新される。HMVPテーブルの更新では、以下の2つの状況がある。(i)再構成された動きベクトルがHMVPテーブル内の既存の動きベクトルの1つと異なる、または(ii)再構成された動きベクトルがHMVPテーブル内の既存の動きベクトルの1つと同じである。第1の状況では、HMVPテーブルが未満の場合、再構成された動きベクトルが最新のものとしてHMVPテーブルに追加される。HMVPテーブルがすでにいっぱいになる場合、再構成された動きベクトルが最新のものとして追加される前に、まずHMVPテーブル内の最も古い動きベクトルがHMVPテーブルから削除される必要がある。言い換えると、この場合、HMVPテーブルは、FIFOバッファと同様に、FIFOバッファの先頭にあり且つ以前にインター符号化された別のブロックに関連する動き情報がこのバッファから取り除かれて、再構成された動きベクトルがHMVPテーブルにおける最新の項目としてFIFOバッファの末端に追加される。第2の状況では、再構成された動きベクトルが最新のものとしてHMVPテーブルに追加される前に、HMVPテーブル内の、再構成された動きベクトルと実質的に同じ既存の動きベクトルがHMVPテーブルから削除される。HMVPテーブルもFIFOバッファの方式で維持されている場合、HMVPテーブル内の同じ動きベクトルの次の動きベクトル予測子が1つの項目だけ前方に移動されて削除された動きベクトルによって残された空間を占有し、そして、再構成された動きベクトルがHMVPテーブル内の最新のものとしてFIFOバッファの末端に追加される。
HMVPテーブルにおける動きベクトルは、AMVP、マージ、スキップなどの異なる予測モードで動きベクトル候補リストに追加されることが可能である。HMVPテーブルに保存されている以前にインター符号化されたブロックの動き情報は、現在ブロックに隣り合っていなくても、より効率的な動きベクトル予測に利用できることが分かった。
現在CUに対する所定の動きベクトル候補セット内で1つのMVP候補が選択された後、ビデオエンコーダ20は、対応するMVP候補に対して1つまたは複数の構文要素を生成し、ビデオビットストリームに符号化してビデオデコーダ30がこの構文要素を使用してこのデオビットストリームからこのMVP候補を検索できる。動きベクトル候補セットを構成するための特定のモードによっては、異なるモード(例えば、AMVP、マージ、スキップなど)が異なる構文要素セットを有する。AMVPモードの場合には、構文要素が、インター予測インジケーター(List0、List1、または双方向予測)、参照索引、動きベクトル候補索引、動きベクトル予測残差信号などを含む。スキップモード及びマージモード場合には、現在CUが、符号化されたマージ索引によって指す隣接CUから、インター予測インジケータ、参照索引、動きベクトルなどの他の構文要素を継承するので、マージ索引のみがビットストリームに符号化される。スキップ符号化されたCUの場合には、動きベクトル予測残差信号も省略される。
図5Aは、本開示のある実施形態に係る、符号化/復号化対象の現在CUの空間的に隣り合いかつ時間的にコロケーテッドブロック位置を示すブロック図である。所定のモードでは、まず空間的に左側隣接ブロック位置および上方隣接ブロック位置に関連する動きベクトルの利用可能性、時間的にコロケーテッドブロック位置に関連する動きベクトルの利用可能性を検査し、次にHMVPテーブル内の動きベクトルの利用可能性を検査することで、動きベクトル予測(MVP)候補リストを構成する。MVP候補リストを構成するプロセスには、いくつかの冗長なMVP候補が候補リストから削除され、必要に応じて候補リストが固定の長さを有するようにゼロ値の動きベクトルが追加される(なお、モードによって固定の長さが異なることがある)。MVP候補リストの構成後、ビデオエンコーダ20は、この候補リストから最適な動きベクトル予測子を選択し、選択された候補を指す対応する索引をビデオビットストリームに符号化することができる。
ある例では、候補リスト(マージ候補リストとも呼ばれる)が、以下の5種タイプの候補を以下の順に含むことによって構成されることができる。
1.空間的に隣り合うCUからの空間的MVP(即ち、動きベクトル予測子)
2.コロケーテッドCUからの時間的MVP
3.FIFOテーブルから履歴によるMVP
4.ペアワイズ平均MVP
5.ゼロMV
ある実施形態では、候補リストのサイズがスライスヘッダーで通知され、候補リストの最大許容サイズが6である(例えば、VVCの場合)。マージモードの各CUコードについて、最適なマージ候補のインデックスが、切り捨て単項二値化(TU)により符号化される。マージインデックスの第1のビンは、コンテキストで符号化され、一方バイパス符号化が他のビンに使用される。本開示の以下の文脈において、この拡張されたマージモードは、概念がHEVCに使用されるマージモードと同じであるため、通常のマージモードとも呼ばれる。
図5Aを例として使用し、かつ候補リストが2の固定長さを有すると仮定すると、現在CUに関する動きベクトル予測子(MVP)候補リストは、AMVPモードで以下のステップを順に実行することによって構成されることが可能である。
1)空間的に隣り合うCUからのMVP候補の選択
a)A0で始まり且つA1で終わる左側の空間的に隣り合う2つのCUのうちの1つから、最大1つの非スケールMVP候補を導出する;
b)前のステップで左に利用可能な非スケールMVP候補がない場合には、A0で始まり且つA1で終わる左側の空間的に隣り合う2つのCUのうちの1つから、最大1つのスケールMVP候補を導出する;
c)B0で始まり且つB1を通じてB2で終わる上側の空間的に隣り合う3つのCUのうちの1つから、最大1つの非スケールMVP候補を導出する;
d)A0とA1の両方とも利用不可である場合、またはそれらがいずれもイントラモードで符号化された場合には、B0で始まり且つB1を通じてB2で終わる上側の3つの空間的隣り合うCUのうちの1つから、最大1つのスケールMVP候補を導出する;
2)前のステップで2つのMVP候補が見つかり、且つそれらが同一である場合は、このMVP候補リストからこの2つの候補のうちの1つを削除する;
3)時間的にコロケーテッドCUからのMVP候補の選択
a)前のステップの後、MVP候補リストに2つのMVP候補が含まれていない場合には、時間的にコロケーテッドCU(例えばT0)から最大1つのMVP候補を導出する;
4)HMVPテーブルからのMVP候補の選択
a)前のステップの後、MVP候補リストに2つのMVP候補が含まれていない場合には、HMVPテーブルから最大2つの履歴によるMVPを導出する;
5)前のステップの後、MVP候補リストに2つのMVP候補が含まれていない場合には、最大2つのゼロ値MVPをMVP候補リストに追加する。
以上の構成されたAMVPモードMVP候補リストには2つの候補しかないので、候補リスト内の2つのMVP候補のうちどのが現在CUの復号化に使用されるかを示すように、バイナリフラグのような関連する構文要素をビットストリームに符号化する。
ある実施形態では、スキップモードまたはマージモードでは、上述のような一連のステップを順に実行することで、現在CUに関するMVP候補リストを構成し得る。なお、「ペアワイズマージ候補」と呼ばれる1つの特別な種類のマージ候補も、スキップモードまたはマージモードのためのMVP候補リストに含まれる。ペアワイズマージ候補は、以前に導出された2つのマージモード動きベクトル候補のMVを平均化することによって生成される。マージMVP候補リストのサイズ(たとえば、1から6)は、現在CUのスライスヘッダーで通知される。マージモードの各CUについて、最適なマージ候補の索引は、切り捨て単項二値化(TU)により復号化される。マージ索引の第1のビンはコンテキストで符号化され、バイパス符号化が他のビンに使用される。
上述のように、履歴によるMVPは、空間的MVP及び時間的MVPの後、AMVPモードMVP候補リスト又はマージMVP候補リストに追加されることができる。以前インター符号化されたCUの動き情報は、HMVPテーブルに保存され、現在CUのためのMVP候補として使用される。HMVPテーブルは、符号化/復号化プロセス中に維持されている。非サブブロックインター符号化したCUがあるたびに、関連する動きベクトル情報が新しい候補としてHMVPテーブルの最後のエントリに追加され、一方(HMVPテーブルがすでにいっぱいで、このテーブル内に関連動きベクトル情報の同じ複本がない場合)HMVPテーブルの第1のエントリに格納されている動きベクトル情報がそこから削除される。これの代わりに、関連する動きベクトル情報がHMVPテーブルの最後のエントリに追加される前に、関連する動きベクトル情報の同じ複本をこのテーブルから削除してもよい。
上述のように、イントラブロックコピー(IBC)は、スクリーンコンテンツ素材の符号化効率を著しく改善することができる。IBCモードはブロックレベルの符号化モードとして実現されるので、ビデオエンコーダ20では、ブロックマッチング(BM)を実行して、各CUに対して最適なブロックベクトルを見つける。ここでは、ブロックベクトルは、現在の画像内で現在ブロックからすでに再構成された参照ブロックへの変位を示すためのものである。IBC符号化されたCUは、イントラ予測モードまたはインター予測モード以外の第三予測モードとして扱われる。
CUレベルでは、IBCモードが、以下のようにIBC AMVPモードまたはIBCスキップ/マージモードとして信号で通知されることができる。
-IBC AMVPモード:CUの実際のブロックベクトルとこのCUのブロックベクトル候補から選択されたこのCUのブロックベクトル予測子との間のブロックベクトル差(BVD)は、上述したAMVPモードで動きベクトル差に対する符号化と同じ方法で符合化される。(IBC符合化される場合)ブロックベクトル予測方法では、2つのブロックベクトル候補が予測子として使用され、1つが左側の隣から、もう1つが上方の隣からである。いずれの隣も利用不可である場合には、デフォルトのブロックベクトルがブロックベクトル予測子として使用される。二値フラグは、ブロックベクトル予測子索引を示すように信号で通知される。IBC AMVP候補リストには、空間的候補およびHMVP候補を含む。
-IBCスキップ/マージモード:マージ候補索引は、隣り合うIBC符号化ブロックからのマージ候補リスト(「マージリスト」とも呼ばれる)においてどのブロックベクトル候補が現在ブロックのためのブロックベクトルの予測に使用されるかを示すためのものである。IBCマージ候補リストには、空間的候補、HMVP候補、およびペアワイズ候補を含む。
図6A~6Dは、本開示のある実施形態に係る、現在ブロックの時間的動きベクトル予測子(TMVP)またはサッブブロックのサッブブロック時間的動きベクトル予測子(SbTMVP)を導出するためのステップを示すブロック図である。
ある実施形態では、図5に関して説明したように、1つの時間的動きベクトル予測子(TMVP)候補のみがマージ候補リストに追加される。このTMVP候補が有効か無効かを指示すように、第1フラグ(sps_temporal_mvp_enabled_flag)が画像のシーケンスパラメータセット(SPS)で通知され、第2フラグ(slice_temporal_mvp_enabled_flag)がスライスヘッダーで通知される。特に、この時間的マージ候補の導出では、スケール動きベクトルが、参照画像リストにおける以前に符号化復号化された画像であるコロケーテッド画像のMVから導出される。この時間的動き候補の導出では、このコロケーテッド画像が第1の参照フレームリスト(List0)か第2の参照フレームリスト(List1)から選択されたかを指示すように、スライスヘッダー内の明示的なフラグ(co-located_from_l0_flag)が最初にデコーダーに送信される。使用されるリスト内のどの画像が、時間的動き候補を導出するためのコロケーテッド画像として選択されるかを指示すように、コロケーテッド参照インデックス(co-located_ref_idx)がさらに送信される。時間的動き候補のList0(L0とも呼ばれる)およびList1(L1とも呼ばれる)MVは、以下の擬似コードに従ってコロケーテッド画像のコロケーテッドブロック内の異なるリストのMVに対する予め定められた順序で個別に導出される。
時間的併合候補のスケール動きベクトル602は、図6Aの点線で示すように、POC距離tb604およびPOC距離td606を使用して、選択されたコロケーテッドブロックの動きベクトルからスケールされることで得られる。ここで、tbは、現在の画像の参照画像(例えば、現在の参照608)と現在の画像(例えば、現在の画像610)との間のPOC差と定義され、tdは、コロケーテッド画像の参照画像(コロケーテッド参照614)とコロケーテッド画像(コロケーテッド画像612)との間のPOC差と定義される。時間的マージ候補の参照画像インデックスはゼロに設定される。スケールプロセスの実際的な実現は、HEVC仕様に記載されている。Bスライスの場合、1つが参照画像List0用、もう1つが参照画像List1用のような2つの動きベクトルは、取得されて結合され、双予測マージ候補を作成する。
参照フレームに属するコロケーテッドブロック(例えば、コロケーテッドブロック620)において、時間的候補の位置は、図6Bに示すように、候補C0とC1との間で選択される。位置C0でのブロックが利用不可であり、イントラ符号化復号化されており、または現在のCTUの外にある場合は、位置C1が使用される。それ以外の場合、位置C0は時間的マージ候補の導出に使用される。
ある符号化復号化標準(例えば、VVC試験モデル1)は、サッブブロックに基づく時間的動きベクトル予測子(SbTMVP)方法をサポートする。HEVCにおける時間的動きベクトル予測(TMVP)と同様に、SbTMVPは、コロケーテッド画像の動きフィールドを使用して、現在の画像におけるCUの動きベクトル予測及びマージモードを改善する。SbTMVPでは、TMVPで使用されたコロケーテッド画像と同じものが使用される。SbTMVPは、次の2つの主な点でTMVPと異なる。
1.TMVPはCUレベルで動きを予測するが、SbTMVPはサブCUレベルで動きを予測する。
2.TMVPがコロケーテッド画像におけるコロケーテッドブロックから時間的動きベクトルを選択する期間(コロケーテッドブロックは現在のCUに対して右下または中央のブロックである)では、SbTMVPは、現在のCUの空間的に隣り合うブロックのうちの1つからの動きベクトルから取得された動きシフトをこのコロケーテッド画像から選択された時間的動き情報に適用する。
SbTMVPプロセスは、図6C-6Dに示されている。SbTMVP(図6DのSbTMVP632)は、2つのステップで、現在のCU(図6Dの現在のCU636)内のサブCU(例えば、サブCU634)の動ベクトルを予測する。第1のステップにおいて、図6C中の空間的隣A1(例えば、空間的隣638)を調べる。A1がコロケーテッド画像(例えば、図6Aのコロケーテッド画像612)を参照画像として使用する動きベクトルを有する場合、この動きベクトルは、適用される動きシフト(例えば、図6Dの動きシフト630)として選択される。そのような動きベクトルが識別されながった場合、動きシフトはゼロ値ベクトル(0、0)に設定される。ブロックA1のList0MVおよびList1MVのうちの最初に利用可能な動きベクトルは、動きシフトとして設定される。このように、SbTMVPでは、常に現在のCUに対して右下または中央の位置にある対応するブロック(コロケーテッドブロックと呼ばれることもある)がTMVPと比較して、より正確に識別されることができる。動きシフトを決定するための擬似コードは以下のとおりである。
VVCにおけるSbTMVPの動きシフトを決定するための擬似コード
上記の表で使用される変数および関数は、以下のように示す。
・ColFromL0Flag:コロケーテッド画像がList0参照画像リストからのものであるかどうかを示す構文;
・LDC:すべての参照画像のPOC値が現在の画像よりも小さいかどうかを示す;
・CurrentSliceType:現在のスライス(画像)のタイプ;
・count:すでに導出されたマージ候補の利用可能な数;
・interDirA1:N番目のマージ候補のinterDir(1:L0, 2:L1, または3:Bi);
・refIdxA1 [0]:N番目のマージ候補のL0動き情報(例えば、MV, ref. index)
・refIdxA1 [1]:N番目のマージ候補のL1動き情報(例えば、MV, ref. index)
・getRefPic(M, I):参照インデックスIによって参照画像ListMから参照画像を取得するための関数。
第2のステップでは、図6Dに示すように、ステップ1で識別された動きシフトが適用されて(すなわち、現在のブロックの座標に追加されて)、コロケーテッド画像からサブCUレベルの動き情報(動きベクトルおよび参照インデックス)を取得する。図6Dの例では、動きシフトがブロックA1の動きに設定されているとする。実際の実現では、動きシフトがブロックA1、A2、B1、またはB2の動きのいずれかに設定されることが可能である。
まず、代表的なサブCUが選択され、この代表的なサブCUの対応するブロックの動き情報がデフォルト動き情報として使用される。SbTMVPの既存のスキームでは、現在のCUの中央位置の右下にあるサブCUが代表的なサブCUとして選択される。代表的なサブCUの対応するブロックからデフォルト動き情報として有効な動き情報を導出できなかった場合、SbTMVP候補は利用不可と見なされる。デフォルト動き情報が利用可能な場合、次のステップに進み、現在のCU内の各サブCUの動き情報を取得する。いずれかのサブCUの対応するブロックに利用可能な動き情報がないたびに、デフォルト動き情報がそのサブCUの導出された時間的動きとして使用される。
次に、各サブCUについて、コロケーテッド画像内の対応するブロック(中央のサンプルを含む最小の動きグリッド)の動き情報を使用して、このサブCUの動き情報を導出する。コロケーテッドサブCUの動き情報が特定された後、時間的動きスケールを適用して時間的動きベクトルの参照画像を現在のCUの参照画像と位置合わせるHEVCのTMVPプロセスと同様の方法で、現在のサブCUの動きベクトル及び参照インデックスに変換される。
なお、現在の設計では、コロケーテッド画像におけるコロケーテッドCTU内の動きフィールド+このコロケーテッドCTUの右側の1つの列のみが、各CUのSbTMVPおよびTMVP導出に使用できる。図6に示すように、コロケーテッドCTU内の動き情報+このコロケーテッドCTUの右側にある1列の動き情報(この例では、CTU2は現在のCUのコロケーテッドCTU)のみは、SbTMVPおよびTMVPの時間的なmv導出に使用される可能である。以降、説明の便宜上、このコロケーテッドCTU+1つの列を、SbTMVP / TMVP導出のための「有効な領域」と呼びる。このコンテキストでは、サブCUのコロケーテッド画像内の対応するN×Nブロックが有効な領域の外側にあるたびに、この対応するN×NブロックがコロケーテッドCTU内にある代替ブロックに置き換えられる。代替N×Nブロックの位置は、以下の式を使用して、有効な領域内に位置決めされる対応するN×Nブロックの元の位置をクリップすることで導出される。以下の式(各サブCUの位置クリッププロセス)では、CurPicWidthInSamplesY及びCurPicHeightInSamplesYは符号化復号化された画像の幅及び高さであり、CTUWidthInSamplesX及びCTUWidthInSamplesYはCTUの幅及び高さであり、xCtb及びyCtbはコロケーテッドCTUの左上のサンプルの水平位置及び垂直位置である。xColCtrCb及びyColCtrCbはサブCUの代表的なサンプルの水平位置及び垂直位置であり、MotionShiftX及びMotionShiftYは、動きシフトのx成分及びy成分である。関数Clip3(x, y, z)及びMin(x, y)は次のように定義される。
VVCでは、SbTMVP候補及びアフィンマージ候補の両方を含む、サブブロックに基づく結合式マージリストが、サブブロックに基づくマージモードの信号による通知に使用される。SbTMVPモードは、シーケンスパラメータセット(SPS)フラグによって有効化/無効化される。SbTMVPモードが有効になっている場合、SbTMVP予測子は、サブブロックに基づくマージ候補のリストの最初のエントリとして追加され、その後にアフィンマージ候補が続く。サブブロックに基づくマージリストのサイズはSPSで信号により通知され、VVCでは、サブブロックに基づくマージリストの最大許可サイズが5である。
SbTMVPで使用されるサブCUサイズは8×8に固定されており、アフィンマージモードの場合のように、SbTMVPモードは、幅および高さの両方が8以上であるCUにのみ適用可能である。さらに、現在のVVCでは、TMVPおよびSbTMVPで使用される時間的動きフィールドストレージの場合、動きフィールド圧縮は、HEVCにおける16×16の粒度とは対照的に、8×8の粒度で実行される。
ある実施形態では、動きシフトは、常に隣接ブロックのList0mvから導出される。List0mvが利用不可である場合は、隣接ブロックのList1mvが使用されて、SbTMVPの動きシフトを導出する。擬似コードが以下に説明される。
SbTMVPの動きシフトを決定するための擬似コード
ある実施形態では、動きシフトが、常に隣接ブロックのList1mvから導出される。 List1mvが利用不可である場合は、隣接ブロックのList0mvが使用されて、SbTMVPの動きシフトを導出する。擬似コードが以下に説明される。
SbTMVPの動きシフトを決定するための擬似コード
ある実施形態では、有効な領域の外に位置するサブCUの対応するブロックのいずれがあるたびに、ゼロベクトルが動きシフトベクトルとして使用されてSbTMVPを導出する。このように、現在のCUのすべてのサブCUの対応するブロックが有効な領域内に位置することが保証される。したがって、各サブCUのための位置クリッププロセスは不要である。現在のCUにおいてサブCUの対応するブロックのいずれが有効な領域の外にあるかどうかを判定する方法はたくさんある。一例では、左上のN×NサブCUの対応するブロックおよび右下のN×NサブCUの対応するブロックは、この2つの対応するブロックが有効な領域内にあるかどうかを決定するようにチェックされる。いずれかの対応するブロックが有効な領域の外にある場合、ゼロベクトルが動きシフトベクトルとして使用される。それ以外の場合(対応するブロックの両方はとも有効な領域内にある)、導出された動きシフトがSbTMVPに使用される。
ある実施形態では、有効な領域の外に位置するサブCUの対応するブロックのいずれかがあるたびに、SbTMVPは、現在のCUに対して利用不可と見なされる。
ある実施形態では、有効な領域の外に位置するサブCUの対応するブロックのいずれかがあるたびに、動きシフトは、すべてのサブCUの対応するブロックが有効な領域内に位置することを保証するように修正される。したがって、各サブCUのための位置クリッププロセスは不要である。
ある実施形態では、ゼロベクトルは、常にSbTMVP導出のための動きシフトに使用される。
ある実施形態では、有効な領域の外に位置する対応するブロックを有するサブCUのMVとして、代表的なサブCUから導出されたデフォルトMVを使用することが提案される。
図7は、本開示のある実施形態に係る、現在の画像(例えば、現在の画像704)における符号化ブロック(例えば、現在のCU702)のためのTMVPおよびSbTMVPを導出することに使用される有効な領域を決定するためのブロック図を示している。有効な領域は、TMVPまたはSbTMVPのために現在のCU(例えば、現在のCU702)に対応するCU(例えば、対応するCU702')が検索されているコロケーテッド画像(例えば、コロケーテッド画像704')内の領域である。ある実施形態では、有効な領域は、TMVPおよびSbTMVPを導出するためのCTU(例えば、CTU2)+1つの列(例えば、1列のTMVバッファ706)によって決定される。有効な領域制約は、メモリ使用の削減のための設計である。有効な領域をコロケーテッドCTU+1つの列に制限することにより、有効な領域内の動き情報のみを内部メモリ(例えば、キャッシュ)に保存して、外部メモリからの時間的動きデータへのアクセスの平均コスト(時間またはエネルギー)を削減する必要がある。今、最大CTUサイズはVVCで128×128であり(最大CTUサイズはVVCプロファイルの後続の段階で決定される可能性がある)、CTUサイズは128×128未満(例えば、64×64又は32×32)に設定されることが可能である。1つの例では、CTUサイズが64×64に設定されている場合、有効な領域は、コロケーテッド64×64ブロック+1つの列に制約される。最大CTUのための時間的MVバッファーの設計はすでに存在するので、符号化復号化効率の観点から、最大CTUサイズよりも小さい有効な領域を使用するのは賢明ではない場合がある。ある実施形態では、使用中のCTUサイズに関係なく、有効な領域は、常に許可な最大CTUサイズ+1つの列に固定されている。
ある実施形態では、有効な領域は、コロケーテッドCTUだけになるように変更される。
第10の実施形態によれば、CTUサイズが最大CTUサイズに等しい場合、有効な領域は、コロケーテッドCTU+1つの列である。CTUサイズが最大CTUサイズよりも小さい場合、有効な領域は、コロケーテッドCTU+コロケーテッドCTUの右側の1つの列及びコロケーテッドCTUの下の1つの行になるように変更される。
図8A~8Bは、本開示のある実施形態に係る、ビデオエンコーダがサブブロック時間的動きベクトル予測子を導出する技術を実現する例示的なプロセス800を示すフローチャートである。プロセス800は、復号化プロセスか符号化プロセスかであり得るが、便宜上、プロセス800は、ビデオデコーダ(例えば、図3のビデオデコーダ30)によって実行される復号化プロセスとして説明される。
第1のステップとして、デコーダは、現在の符号化ユニットのコロケーテッド画像を決定する(例えば、ビットストリームから現在のフレームのコロケーテッド画像が第1のリストまたは第2のリストからのものであるかを指示する第1の構文要素を受信する;次に、ビットストリームから選択されたリストのどのフレームがコロケーテッドフレームとして使用されるかを指示する第2の構文要素を受信する)(805)。例えば、図6Aを参照すると、現在の画像610における現在のCU601は、コロケーテッド画像612内のコロケーテッドCU601'に対応する。
次に、デコーダは、現在の符号化ユニットの空間的隣接ブロックを位置決める(810)。例えば、図6Dを参照すると、現在の符号化ユニット(例えば、現在のCU636)は、空間的隣638(ブロックA1)を有する。ある実施形態では、空間的隣接ブロックは、符号化ユニットまたはサブブロックである。
空間的隣接ブロックを位置決めした後、デコーダは、次に、現在の符号化ユニットの動きシフトベクトルを決定する(815)。動きシフトベクトルは、現在の画像(例えば、図6Dにおける現在の画像610)における現在の符号化ユニット(例えば、図6Dにおける現在のCU636)とコロケーテッド画像(例えば、図6Dにおけるコロケーテッド画像612)における対応するコロケーテッドブロック(例えば、図6Dにおける空間的隣638'(ブロックA1'))との間の空間的位置のシフトを示す。
動きシフトベクトルを決定するために、デコーダは、空間的隣接ブロックのList0に含まれる動きベクトルのそれぞれを順次検査する(820)。List0内のそれぞれの動きベクトルのいずれがコロケーテッド画像を当該動きベクトルの参照画像として使用するという決定に従って(825):デコーダは、List0内の当該動きベクトルを動きシフトベクトルとして設定し(830)(例えば、動きシフトベクトル630)、空間的隣接ブロックのList0における後続の動きベクトル及びList1における動きベクトルの検査を放棄する(835)。その結果、動きベクトルの検索が終了し、List0内の最初にマッチング動きベクトルが動きシフトベクトルとして使用される。言い換えると、デコーダは、空間的隣接ブロックのList1をチェックする前に、常に最初に空間的隣接ブロックのList0に含まれる動きベクトルをチェックする。
一方、List0内のそれぞれの動きベクトルが、いずれもコロケーテッド画像を参照画像として使用しないという決定に従って(840)、デコーダは、空間的隣接ブロックのList1に含まれる動きベクトルのそれぞれを順次検査する(845)。つまり、デコーダは、List0内の動きベクトルの検索が否定的な結果を返す場合にのみ、空間的隣接ブロックのList1の動きベクトルをチェックする。
空間的隣接ブロックのList1内の動きベクトルを検索している間、List1内のそれぞれの動きベクトルのいずれが、コロケーテッド画像を当該動きベクトルの参照画像として使用するという決定に従って(850)、デコーダは、List1における当該動きベクトルを動きシフトベクトルとして設定し(855)、List1における後続の動きベクトルの検査を放棄する(860)。つまり、List1内の最初にマッチング動きベクトルが動きシフトベクトルとして使用される。List1内のそれぞれの動きベクトルが、いずれもコロケーテッド画像を当該動きベクトルの参照画像として使用しないという決定に従って(865)、デコーダは、動きシフトベクトルをゼロ値に設定する(870)。結果として、対応する符合化ユニットおよび現在の符号化ユニットは、コロケーテッド画像および現在の画像に対して同じ相対な位置にある(例えば、現在の符号化ユニットと対応する符号化ユニットとの間に動きのシフトがない)。
最後に、デコーダは、現在の符号化ユニット内の複数のサブブロックのうちのそれぞれのサブブロックについて、動きシフトベクトルに基づいて、コロケーテッド画像内の対応するサブブロックから、サブブロックに基づく時間的動きベクトルを再構成する(875)。例えば、図6Dを参照すると、スケーリング後、サブブロック時間的動きベクトル予測子632は、動きシフトベクトル630により、対応するサブブロック時間的動きベクトル631を位置決めすことで構成される(例えば、図6Aに関して説明されたスケールプロセス及び関する説明)。ある実施形態では、サブブロックは、List0およびList1からの1つまたは2つの時間的動きベクトルを含む。
ある実施形態では、動きシフトベクトルに基づいてコロケーテッド画像内の対応するサブブロックから、現在の符号化ユニット内の複数のサブブロックのうちのそれぞれのサブブロックのサブブロックに基づく時間的動きベクトルを再構築することは、現在の符号化ユニット内の複数のサブブロックのうちのそれぞれのサブブロックのサブブロックに基づく時間的動きベクトルを予測することを含み、動きシフトベクトルに基づいてコロケーテッド画像における所定の領域(例えば、有効な領域)内において、それぞれのサブブロックに対応するコロケーテッドサブブロックを探索する;コロケーテッド画像における所定の領域内においてコロケーテッドサブブロックが存在するという決定に従って、コロケーテッドサブブロックの1つ又は2つの動きベクトルを識別し、それぞれのサブブロックのためのサブブロックに基づく時間的動きベクトルを、現在の画像と現在の画像の参照画像との間の第1の画像順序カウント(POC)距離(例えば、図6AにおけるPOC距離tb)およびコロケーテッド画像とコロケーテッド画像の参照画像との間の第2のPOC距離(例えば、図6AにおけるPOD距離td)に基づいてスケールされた1つまたは2つの動きベクトルとして設定する。ある実施形態では、コロケーテッド画像における所定の領域内においてコロケーテッドサブブロックが存在しないという決定に従って、対応するサブブロックのサブブロックに基づく時間的運動ベクトルは、ゼロ値動きベクトルに設定される。別の実施形態では、コロケーテッド画像における所定の領域内においてコロケーテッドサブブロックが存在しないという決定に従って、コロケーテッド画像における所定の領域内の代替的サブブロックは対応するサブブロックとして設定される。例えば、代替的サブブロックは、コロケーテッドサブブロックに最も近い所定の領域内における境界サブブロックである。
ある実施形態では、コロケーテッド符号化ユニットを含むCTUのサイズに関係なく、所定の領域は、最大許可CTUサイズ+1つの列に等しいサイズを有する。
ある実施形態では、デコーダは、空間的隣接ブロックのList0をチェックする前に、まず空間的隣接ブロックのList1における動きベクトルをチェックする。
1つまたは複数の例では、上述した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実現される。ソフトウェアで実現される場合、それらの機能は、1つまたは複数の命令またはコードとして、コンピュータ読取可能な媒体に格納されまたはこれを介して送信され、ハードウェアによる処理ユニットによって実行される。コンピュータ読取可能な媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ読取可能な記憶媒体、または、例えば、通信プロトコルに従って、ある箇所から別の箇所へのコンピュータプログラムの転送を役立つ任意の媒体を含む通信媒体を含むことが可能である。このように、コンピュータ読取可能な媒体は、一般的に、(1)非一時的な有形のコンピュータ読取可能な記憶媒体、または(2)信号または搬送波などの通信媒体、に対応することが可能である。データ記憶媒体は、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされて、本願で説明された実施形態を実現するための命令、コード、および/またはデータ構造を検索することができる任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ読取可能な媒体を含んでもよい。
ここで実施形態を説明するために使用される用語は、特定の実施形態を説明することのみを目的としており、特許請求の範囲を限定することを意図することがではない。実施形態の説明および添付の特許請求の範囲で使用されるように、単数形「一」、「1つの」、および「この」は、文脈で明確に別段の指示がない限り、複数形も含むことを意図している。 ここで使用される「および/または」という用語は、1つまたは複数の関する、列挙された項目の任意及びすべての可能な組み合わせを意味しかつ含むことも理解されべきである。本明細書で使用された「含む」という用語は、記載された特徴、要素、および/または成分の存在を指示するが、1つまたは複数の他の機能、要素、成分、および/またはそれらの組の存在または追加を排除するものではないことがさらに理解されべきである。
ここで、第1、第2などの用語を使用して各種の要素を説明したことが、これらの要素はこれらの用語によって限定されないことも理解されべきである。これらの用語は、ある要素を別の要素と区別するためにのみ使用された。例えば、実施形態の範囲から逸脱することない限り、第1の電極は、第2の電極と呼ばれてよく、同様に、第2の電極は、第1の電極と呼ばれてもよい。第1の電極と第2の電極は両方とも電極であるが、同じ電極ではない。
本願の説明は、例示および説明のために提示されており、網羅的なまたは開示された形態の発明に限定されるものではない。各種の変更、変形、および置換した実現は、前述の説明および関連する図面に提示された教示を得った当業者にとっては明らかである。実施形態は、本発明の原理、実際の適用を最もよく説明し、当業者が各種の実施のために本発明を理解し、特定の用途に適するために各種の変更で基礎となる原理および各種の実施を最もよく利用できるようにするために選択されおよび説明されたものである。したがって、特許請求の範囲は、開示された実現の特定の例に限定されなく、変更および他の実現も、添付の特許請求の範囲に含まれることを理解されるべきである。
本発明は、全般的にビデオデータの符号化および復号化に関し、特に、ビデオデータ符号化および復号化においてサブブロックの動きベクトル予測の方法およびシステムに関する。
デジタル・テレビ、ラップトップまたはデスクトップ・コンピュータ、タブレット・コンピュータ、デジタル・カメラ、デジタル記録装置、デジタル・メディア・プレーヤー、ビデオ・ゲーム機、スマートフォン、ビデオ会議装置やビデオ・ストリーミング装置などの各種電子装置は全てデジタル・ビデオを支持する。電子装置は、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、Advanced Video Coding(AVC)、High Efficiency Video Coding(HEVC)及びVersatile Video Coding(VVC)の標準で定義されたビデオ圧縮/展開の標準を実行することで、デジタル・ビデオ・データを受送信し、符号化し、復号化や格納する。ビデオ圧縮は、通常、空間(フレーム内)予測および/または時間(フレーム間)予測を実行して、ビデオデータに固有の冗長性を低減または削除することを含む。ブロックに基づくビデオ符号化では、ビデオフレームが、符号化木ユニット(CTU:Coding Tree UNIT)と呼ばれる複数のビデオブロックを含む1つ又は複数のスライスに区画される。各CTUは、1つの符号化ユニット(CU)を含み、または予め定められた最小のCUサイズに達するまでより小さなCUに再帰的に区画されることがある。各CU(リーフCUとも呼ばれる)には、1つまたは複数の変換ユニット(TU:transform unit)と、1つまたは複数の予測ユニット(PU:prediction unit)とが含まれる。各CUは、イントラ、インター、またはIBCモードのいずれかで符号化されることが可能である。1つのビデオフレームにおけるイントラ符号化された(I)スライス内のビデオブロックは、同ビデオフレームにおける隣接ブロック内の参照サンプルに関する空間予測で符号化される。1つのビデオフレームにおけるインター符号化された(PまたはB)スライス内のビデオブロックは、同ビデオフレームにおける隣接ブロック内の参照サンプルに関する空間予測、または他の以前および/または将来の参照ビデオフレームにおける参照サンプルに関する時間予測を使用する。
以前符号化された参照ブロック、例えば隣接ブロックに基づく空間予測又は時間予測では、符号化対象である現在のビデオブロックの予測ブロックが得られる。参照ブロックを見つける処理は、ブロックマッチングアルゴリズムによって実現されることが可能である。符号化対象である現在ブロックと予測ブロックとの間の画素差を示す残差データは、残差ブロック又は予測誤差と呼ばれる。インター符号化ブロックは、予測ブロックを生成した参照フレームにおける参照ブロックに指す動きベクトルと、残差ブロックとに応じて符号化される。動きベクトルを確定する処理は、通常、動き推定と呼ばれる。イントラ符号化ブロックは、イントラ予測モードと残差ブロックに応じて符号化されたものである。更なる圧縮のために、残差ブロックは画素領域から変換領域、例えば周波数領域に変換され、結果としてその後定量化される残差変換係数が得られる。そして、最初に二次元行列で配置され且つ定量化された変換係数は、走査されて変換係数の一次元ベクトルを生成し、その後、更なる圧縮を達成するようにビデオ・ビットストリームにエントロピー符号化される。
そして、符号化されたビデオ・ビットストリームは、コンピュータ読取可能な記憶媒体(例えば、フラッシュメモリ)に保存されて、デジタル・ビデオ能力を持つ電子装置によってアクセスされ、或いは有線または無線でこの電子装置に直接送信される。そして、この電子装置は、例えば、符号化されたビデオ・ビットストリームを解析してこのビットストリームから構文要素を取得し、このビットストリームから取得された構文要素の少なくとも一部に基づいてデジタル・ビデオデータをこの符号化されたビデオストリームから元のフォーマットに再構成することで、ビデオ展開(上述したビデオ圧縮とは反対のプロセス)を実行しており、この再構成されたデジタル・ビデオデータを電子装置のディスプレイに再現する。
デジタル・ビデオの品質が高解像度から4K×2K、さらに8K×4Kに進んでいるにつれて、符号化/復号化対象となるビデオデータの量は指数関数的に増加する。復号化されたビデオデータの画像品質を維持しながらビデオデータを効率的に符号化/復号化することは、常に課題である。
本願は、ビデオデータの符号化および復号化、より具体的には、サッブブロックの動きベクトル予測の方法およびシステムに関する実現を説明する。
本願の第1の方面に従い、現在の画像における現在の符号化ユニットを復号化するための方法であって、前記現在の画像のコロケーテッド画像を決定することと、前記現在の符号化ユニットの空間的隣接ブロックの動きベクトルに基づいて前記現在の画像における前記現在の符号化ユニット内の複数のサブブロックのうちのそれぞれのサブブロックと前記コロケーテッド画像における対応するサブブロックとの間の空間的位置のシフトを示す前記現在の符号化ユニットの動きシフトベクトルを決定することと、前記現在の符号化ユニットにおける複数のサブブロックのうちのそれぞれのサブブロックについて、前記動きシフトベクトルに基づいて、前記コロケーテッド画像における対応するサブブロックから、サブブロックに基づく時間的動きベクトルを再構成することと、を含む、復号化方法を提供する。
本願の第2の方面に従い、コンピューティング装置は、1つまたは複数のプロセッサと、メモリと、前記メモリに格納されている複数のプログラムと、を含む。前記プログラムは、前記1つまたは複数のプロセッサによって実行されると、当該コンピューティング装置に上記の操作を実行させる。
本願の第3の方面に従い、非一時的なコンピュータ読取可能な記憶媒体は、1つまたは複数のプロセッサを有するコンピューティング装置によって実行される複数のプログラムを格納する。前記プログラムは、前記1つまたは複数のプロセッサによって実行されると、前記コンピューティング装置に上記の操作を実行させる。
本発明の実現のさらなる理解を提供する、本明細書の一部として本明細書に引き入れる添付図面は、上述した実現を示し、その説明と共に基礎原理を説明するためものである。なお、同一符号は同一または相当な部分を示す。
図1は、本開示のある実施形態に係る例示的なビデオ符号化および復号化システムを示すブロック図である。
図2は、本開示のある実施形態に係る例示的なビデオエンコーダを示すブロック図である。
図3は、本開示のある実施形態に係る例示的なビデオデコーダを示すブロック図である。
図4A~4Eは、本開示のある実施形態に係る、フレームがどのように再帰的に異なるサイズ及び形状の複数のビデオブロックに区画されるかを示すブロック図である。
図5は、本開示のある実施形態に係る、符号化対象である現在CUの空間的に隣り合っている位置かつ時間的に並べているブロック位置を示すブロック図である。
図6A~6Dは、本開示のある実施形態に係る、現在ブロックの時間的動きベクトル予測子または現在ブロックにおけるサッブブロックのサッブブロック時間的動きベクトル予測子を導出するためのステップを示すブロック図である。
図7は、本開示のある実施形態に係る、時間的動きベクトル予測子およびサッブブロック時間的動きベクトル予測子を導出することに使用される有効な領域を決定するためのブロック図を示している。
図8は、本開示のある実施形態に係る、ビデオエンコーダがサッブブロック時間的動きベクトル予測子を導出する技術を実現する例示的なプロセスを示すフローチャートである。
以下、図面を参照して本発明の実施の形態を詳細に説明する。以下の詳細な説明において、本明細書に述べる趣旨を容易に理解するために、複数の非限定的な具体的な詳細を述べる。ただし、本発明は、特許請求の範囲及びその趣旨から逸脱することではなく種々の変形により実施することができることは当業者には明らかである。例えば、本明細書に述べる趣旨がデジタルビデオ機能を有する多くの種類の電子装置で実施され得る。
図1は、本開示のある実施形態に係る、ビデオブロックを並列に符号化および復号化するための例示的なシステム10を示すブロック図である。図1に示すように、システム10は、将来目標装置14によって復号化されるビデオデータを生成し符号化するソース装置12を含む。ソース装置12および目標装置14には、デスクトップまたはラップトップ・コンピュータ、タブレット・コンピュータ、スマートフォン、セットトップボックス、デジタル・テレビ、カメラ、表示装置、デジタルメディアプレーヤー、ビデオ・ゲーム機、ビデオ・ストリーミング装置などを含む多種の電子装置のいずれかを含んでもよい。ある実施形態では、ソース装置12および目標装置14は、無線通信機能を備えている。
ある実施形態では、目標装置14が、リンク16を介して復号化対象の符号化されたビデオデータを受信する。リンク16には、符号化されたビデオデータをソース装置12から目標装置14に移動できる任意のタイプの通信媒体または装置を含むことが可能である。一つの例では、リンク16には、ソース装置12に符号化されたビデオデータを目標装置14にリアルタイムで直接送信させることができる通信媒体を含んでもよい。符号化されたビデオデータは、無線通信プロトコルなどの通信標準に従って変調され、目標装置14に送信される。通信媒体には、無線周波数(RF:radio frequency)スペクトルや1つまたは複数の物理的な伝送路などの任意の無線または有線通信媒体を含むことが可能である。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネット等のグローバルネットワークなどのようなパケットベースに基づくネットワークの一部として構成してもよい。通信媒体には、ルーター、交換機、基地局や、ソース装置12から目標装置14への通信に役立つ他の任意の装置を含んでもよい。
他のある実施形態では、符号化されたビデオデータは、出力インターフェース22からストレージ装置32に送信される。その後、ストレージ装置32にある符号化されたビデオデータは、入力インターフェース28を介して目標装置14によってアクセスされる。ストレージ装置32には、ハードドライブ、Blu-rayディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、や符号化されたビデオデータを格納するための他の適切なデジタル記憶媒体などのような多種の分散型またはローカルにアクセスされるデータ記憶媒体のいずれかを含むことが可能である。別の例では、ストレージ装置32は、ファイルサーバ、やソース装置12によって生成された符号化ビデオデータを保持することができる別の中間ストレージ装置に対応してもよい。目標装置14は、ストリーミングまたはダウンロードによりストレージ装置32から格納されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを格納し、この符号化されたビデオデータを目標装置14に送信することができる任意のタイプのコンピュータであってよい。例示的なファイルサーバは、ウェブサーバ(例えば、ウェブサイト用もの)、FTPサーバ、ネットワーク接続ストレージ(NAS)装置、またはローカルディスクドライブを含む。目標装置14は、ファイルサーバーに保存されている符号化ビデオデータへのアクセスに適する無線チャネル(例えば、Wi―Fi接続)、有線接続(例えば、DSL、ケーブルモデムなど)、またはそれらの組み合わせを含む任意の標準的なデータ接続を介して、符号化されたビデオデータをアクセスすることができる。ストレージ装置32からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組み合わせであってもよい。
図1に示すように、ソース装置12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。ビデオソース18には、ビデオ・キャプチャ装置(例えばビデオカメラ)、前に捕らえられたビデオを含むビデオアーカイブ、ビデオコンテンツ提供者からビデオを受信するためのビデオフィードインターフェイス、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそれらの組み合わせ等のようなソースを含むことが可能である。一つの例として、ビデオソース18がセキュリティ監視システムのビデオカメラである場合、ソース装置12および目標装置14は、カメラ付き携帯電話またはビデオ電話を構成できる。しかしながら、本願で説明する実施形態は、一般にビデオ符号化に適用可能であり、そして無線および/または有線アプリケーションに適用可能である。
ビデオエンコーダ20は、捕れるビデオ、予め捕らえられたビデオ、またはコンピュータによって生成されたビデオを符号化することができる。符号化されたビデオデータは、ソース装置12の出力インターフェース22を介して目標装置14に直接送信されることが可能である。これに加えて(または選択的に)、符号化されたビデオデータは、その後目標装置14または他の装置によってアクセスされて復号化および/または再生されるように、ストレージ装置32に格納されてもよい。出力インターフェース22は、モデムおよび/または送信機をさらに含んでもよい。
目標装置14は、入力インターフェース28、ビデオデコーダ30、および表示装置34を含む。入力インターフェース28は受信機および/またはモデムを含み、リンク16を介して符号化されたビデオデータを受信する。リンク16を介して通信された、またはストレージ装置32に提供された符号化ビデオデータには、ビデオエンコーダ20によって生成されかつビデオデコーダ30によるビデオデータの復号化に使用される多くの構文要素を含んでもよい。これらの符号化されたビデオデータは、通信媒体で送信されたか、記憶媒体に記憶されているか、ファイルサーバーに記憶されているかに関わらず、そのような構文要素を含んでもよい。
ある実施形態では、目標装置14が、集積された表示装置や、目標装置14と通信できるように構成された外部表示装置である表示装置34を含んでもよい。表示装置34は、復号化されたビデオデータをユーザに表示するものであって、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプの表示装置などの各種の表示装置のいずれかを含んでもよい。
ビデオエンコーダ20およびビデオデコーダ30は、VVC、HEVC、MPEG-4、Part10、高度なビデオ符号化(AVC:Advanced Video Coding)、またはそのような標準の拡張などの専門または業界標準に従って動作する。なお、本願は、特定のビデオ符号化/復号化の標準に限定されず、他のビデオ符号化/復号化標準にも適用可能であることが理解されるべきである。ソース装置12のビデオエンコーダ20は、これらの現在または将来の標準のいずれかに従ってビデオデータを符号化するように構成される。同様に、目標装置14のビデオデコーダ30は、これらの現在または将来の標準のいずれかに従ってビデオデータを復号化するように構成される。
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、離散な論理、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組み合わせなどのような、種々の適切なエンコーダ回路のいずれかによって実現されることが可能である。ソフトウェアによって一部実現される場合、電子装置は、ソフトウェアの命令を適切な非一時的なコンピュータ読取可能な媒体に格納し、1つまたは複数のプロセッサによってハードウェアにおける命令を実行することで本開示に述べたビデオ符号化/復号化操作を実行してもよい。ビデオエンコーダ20およびビデオデコーダ30は、それぞれの装置において結合式エンコーダ/デコーダ(CODEC)の一部として集積された一つまたは複数のエンコーダまたはデコーダに含まれてもよい。
図2は、本願で説明されるある実施形態に係るビデオエンコーダ20を例示するブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックに対してイントラ予測符号化およびインター予測符号化を実行することができる。イントラ予測符号化は空間予測に依存し、所定のビデオフレームまたは画像内のビデオデータの空間的冗長性を低減または削除する。インター予測符号化は、時間予測に依存し、ビデオシーケンスの隣接するビデオフレームまたは画像内のビデオデータの時間的冗長性を低減または削除する。
図2に示すように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理部41、復号化画像バッファ(DPB)64、加算器50、変換処理部52、定量化部54、エントロピー符号化部56を備えている。予測処理部41は、動き推定部42、動き補償部44、区画部45、イントラ予測処理部46、イントラブロックコピー(BC)部48をさらに備えている。ある実施形態では、ビデオエンコーダ20はまた、ビデオブロック再構成のための逆定量化部58、逆変換処理部60、および加算器62をさらに備えている。加算器62とDPB64との間には、再構成されたビデオからブロック同士の境界をフィルタリングしてブロック性アーチファクトを除去するデブロッキング・フィルタ(図示せず)を配置することが可能である。また、加算器62の出力をフィルタリングするために、デブロッキング・フィルタに加えて、環内フィルタ(図示せず)を用いてもよい。ビデオエンコーダ20は、固定的、またはプログラマブル・ハードウェアユニットの形態で形成してもよいし、または図示された固定的またはプログラマブル・ハードウェアユニットの1つ又は複数内で区画されてもよい。
ビデオデータメモリ40は、ビデオエンコーダ20における部品によって符号化対象のビデオデータを格納する。ビデオデータメモリ40におけるビデオデータは、例えばビデオソース18から得られる。DPB64は、ビデオエンコーダ20によってビデオデータを(例えば、イントラ予測またはインター予測符号化モードで)符号化する際に使用される参照ビデオデータを格納するバッファである。ビデオデータメモリ40およびDPB64は、種々のメモリデバイスのいずれかで形成されることが可能である。種々の例では、ビデオデータメモリ40は、ビデオエンコーダ20における他の部品とともにオンチップであってもよく、またはそれらの部品に対するオフチップであってもよい。
図2に示すように、ビデオデータを受信した後、予測処理部41における区画部45は、このビデオデータをビデオブロックに区画する。この区画には、このビデオデータに関するquad-tree構造のような予め定められた区画構造に従って、ビデオフレームをスライス、タイルまたは他のより大きい符号化ユニット(CU)に区画することを含んでもよい。ビデオフレームは、複数のビデオブロック(または、タイルと称されるビデオブロックトセット)に区画されることができる。予測処理部41は、現在のビデオブロックに対して、エラー結果(例えば、符号化率および歪みレベル)に基づいて、複数のイントラ予測符号化モードのうちの1つまたは複数のインター予測符号化モードのうちの1つを選択するように、複数の可能な予測符号化モードのうちの1つを選択する。そして、予測処理部41は、得られたイントラ又はインター予測符号化ブロックを加算器50に提供して残差ブロックを生成し、その後の参照フレームの一部として使用するように符号化ブロックを再構成する。また、予測処理部41は、さらに動きベクトル、イントラモードインジケータ、区画情報及び他の構文情報のような構文要素をエントロピー符号化部56に提供する。
予測処理部41におけるイントラ予測処理部46は、現在のビデオブロックに適するイントラ予測符号化モードを選択するために、符号化対象である現在ブロックと同一のフレーム内の1つまたは複数の隣接ブロックと関連して、現在のビデオブロックのイントラ予測符号化を実行することで空間予測を行うことができる。予測処理部41における動き推定部42および動き補償部44は、一つ又は複数の参照フレーム内の一つ又は複数の予測ブロックに関連して、現在のビデオブロックのインター予測符号化を実行することで時間予測を行う。ビデオエンコーダ20は、複数のパスの符号化処理を実行して、例えばビデオデータにおける各ブロックに適切な符号化モードを選択してもよい。
ある実施形態では、動き推定部42は、ビデオフレームのシーケンスの予め定められたパターンに従って、現在のビデオフレームについて、参照ビデオフレーム内における予測ブロックと関連する現在のビデオフレーム内におけるビデオブロックの予測ユニット(PU)の変位を示す動きベクトルを生成することで、インター予測モードを決定する。動き推定部42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成する処理である。動きベクトルは、例えば、現在のビデオ・フレームまたは画像内の符号化されている現在のビデオブロックに対する参照フレーム(または他の符号化ユニット)内の予測ブロックに対して、現在のビデオ・フレーム(または他の符号化ユニット)内のビデオブロックのPUの変位を示すことができる。シーケンスの予め定められたパターンは、このシーケンスにおけるビデオ・フレームをPフレームまたはBフレームとして指定できる。イントラBC部48は、動き推定部42によるインター予測のための動きベクトル決定と同様な方法により、イントラBC符号化のためのベクトル、例えばブロックベクトルを決定してもよいし、または動き推定部42を利用してこのブロックベクトルを決定してもよい。
予測ブロックは、絶対差の合計(SAD)、二乗差の合計(SSD)又はその他の差メトリックによって決定できる画素差に関して符号化対象のビデオブロックのPUと厳密にマッチングされる参照フレームにおけるブロックである。ある実施形態では、ビデオエンコーダ20が、DPB64に格納されている参照フレームのサブ整数画素位置の値を算出することが可能である。例えば、ビデオエンコーダ20は、参照フレームの1/4画素位置、1/8の画素位置、または他の分数の画素位置の値を補間してよい。したがって、動き推定装置42は、すべての画素位置および分数画素位置に対して動き探索処理を実行して、分数画素精度を有する動きベクトルを出力ことが可能である。
動き推定部42は、インター予測符号化フレーム内のビデオブロックのPUの位置と、それぞれDPB64に格納されている1つまたは複数の参照フレームを識別する第1の参照フレームリスト(List0)または第2の参照フレームリスト(List1)から選択された参照フレームの予測ブロックの位置と比較することで、このPUのための動きベクトルを算出する。動き推定部42は、算出された動きベクトルを動き補償部44に送信し、そして、エントロピー符号化部56に送信する。
動き補償部44によって実行される動き補償には、動き推定部42によって決定された動きベクトルに基づいて予測ブロックを取得または生成することを含み得る。動き補償部44は、現在のビデオブロックのPUのための動きベクトルを受信すると、参照フレームリストの1つにおいてこの動きベクトルが指している予測ブロックを位置決めし、DPB64からこの予測ブロックを探し、この予測ブロックを加算器50に転送する。そして、加算器50は、符号化されている現在のビデオブロックの画素値から動き補償部44によって提供された予測ブロックの画素値を差し引くことで、画素差値の残差ビデオブロックを形成する。残差ビデオブロックを形成する画素差値は、輝度差成分または彩度差成分、あるいはその両方を含み得る。また、動き補償部44は、ビデオフレームのビデオブロックに関する構文要素をさらに生成することが可能であり、これらの構文要素は、ビデオデコーダ30によってビデオフレームのビデオブロックを復号化する際に使用される。構文要素には、例えば、この予測ブロックを識別するための動きベクトルを定義する構文要素、予測モードを示す任意のフラグ、または本明細書で説明される任意の他の構文情報を含んでよい。なお、動き推定部42および動き補償部44は、概念的な目的のために個別に示されているが、高度に集積されてもよい。
ある実施形態では、イントラBC部48は、動き推定部42および動き補償部44に関して上述した方法と同様の方法でベクトルを生成し、予測ブロックを取得することができるが、ここで、予測ブロックは符号化されている現在ブロックと同じフレームにあり、ベクトルは、動きベクトルではなくブロックベクトルと呼ばれる。特に、イントラBC部48は、現在ブロックを符号化することに用いられるイントラ予測モードを決定することができる。ある例では、イントラBC部48は、例えば個別のパスの符号化において、各種のイントラ予測モードを使用して現在ブロックを符号化し、レート歪み解析によりそれらのパフォーマンスを試験することが可能である。次に、イントラBC部48は、種々の試験されたイントラ予測モードから、一つの適切なイントラ予測を選択し使用して、対応するイントラモードインジケータを生成する。例えば、イントラBC部48は、レート歪み解析により種々の試験されたイントラ予測モードのレート歪み値を算出し、試験されたモードからレート歪み特性が最適なイントラ予測モードを適切なイントラ予測モードとして選択し使用してもよい。レート歪み解析では、通常、符号化されているブロックとこの符号化されたブロックを符号化されて生成した、符号化されない元のブロックとの間の歪み(又は、エラー)の量、および、この符号化されるブロックを生成するために使用されるビットレート(すなわち、ビットの数)を決定する。イントラBC部48は、種々の符号化されるブロックについて歪み及びレートから比率を算出して、どのイントラ予測モードがこのブロックに対して最適なレート歪み値を示しているかを決定してもよい。
別の例では、イントラBC部48は、動き推定部42および動き補償部44の全体または一部を使用して、本明細書に記載の実施形態に従うイントラBC予測に係る機能を実行してもよい。いずれの場合も、イントラ・ブロック・コピーについては、予測ブロックが、絶対差の合計(SAD)、二乗差の合計(SSD)または他の差メトリックによって決定できる画素差に関して、符号化対象のブロックと厳密にマッチングすると考えられるものであり、予測ブロックの識別には、サブ整数画素位置の値の算出が含まれる場合がある。
ビデオエンコーダ20は、予測ブロックがイントラ予測に基づいて同じフレームからのものであるか、インター予測に基づいて異なるフレームからのものであるかに関わらず、符号化されている現在のビデオブロックの画素値から予測ブロックの画素値を差し引いて画素差値を生成することで、残差ビデオブロックを生成することができる。残差ビデオブロックを形成する画素差値には、輝度成分差及び彩度成分差の両方を含んでよい。
イントラ予測処理部46は、上述した動き推定部42および動き補償部44によって実行されるインター予測、またはイントラBC部48によって実行されるイントラ・ブロック・コピー予測の代わりに、現在のビデオブロックに対してイントラ予測することができる。特に、イントラ予測処理部46は、1つのイントラ予測モードを決定して現在ブロックを符号化することができる。それを実現するために、イントラ予測処理部46は、例えば、個別のパスの符号化処理において、種々のイントラ予測モードを使用して現在ブロックを符号化し、イントラ予測処理部46(またはある例では、モード選択部)は、試験されたイントラ予測モードから1つの適切なイントラ予測モードを選択し使用してもよい。イントラ予測処理部46は、このブロックに関して選択されたイントラ予測モードを示す情報をエントロピー符号化部56に提供してもよい。エントロピー符号化部56は、選択されたイントラ予測モードを示す情報をビットストリームに符号化することができる。
予測処理部41がインター予測またはイントラ予測により現在のビデオブロックの予測ブロックを決定した後、加算器50は、現在のビデオブロックからこの予測ブロックを差し引くことで残差ビデオブロックを生成する。残差ブロック内の残差ビデオデータは、1つまたは複数の変換ユニット(TU)に含まれて変換処理部52に提供される。変換処理部52は、離散コサイン変換(DCT)または概念的に類似する変換などにより、残差ビデオデータを残差変換係数に変換する。
変換処理部52は、得られた変換係数を定量化部54に送信する。定量化部54は、これらの変換係数を定量化して、ビットレートをさらに低減する。定量化プロセスは、これらの係数の一部または全部に関連するビット深度を減らすことができる。 定量化の度合いは、定量化パラメータを調整することによって変更されることができる。そして、ある例では、定量化部54は、定量化された変換係数を含む行列に対する走査を実行することができる。この走査は、エントロピー符号化部56によって実行されてもよい。
定量化に続いて、エントロピー符号化部56は、例えば、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、構文ベースのコンテキスト適応バイナリ算術符号化(SBAC)、確率間隔区画エントロピー(PIPE)符号化や別のエントロピー符号化方法または技術により、定量化された変換係数を、ビデオ・ビットストリームにエントロピー符号化する。そして、符号化されたビットストリームは、ビデオデコーダ30に送信されてもよいし、またはその後にビデオデコーダ30へ送信するか、またはビデオデコーダ30によって検索するためにストレージ装置32にアーカイブされてもよい。また、エントロピー符号化部56は、符号化されている現在のビデオフレームのための動きベクトルおよび他の構文要素をエントロピー符号化してもよい。
逆定量化部58および逆変換処理部60は、それぞれ、逆定量化および逆変換により、他のビデオブロックの予測に使用される参照ブロックを生成するための画素領域内の残差ビデオブロックを再構成する。以上で述べたように、動き補償部44は、DPB64に格納されたフレームの1つまたは複数の参照ブロックから動き補償予測ブロックを生成することができる。また、動き補償部44は、この予測ブロックに1つまたは複数の補間フィルタを適用して、動き推定に使用されるサブ整数画素値を算出してもよい。
加算器62は、再構成された残差ブロックを動き補償部44によって生成された動き補償予測ブロックに加算して、DPB64に格納する参照ブロックを生成する。そして、この参照ブロックは、予測ブロックとして、イントラBC部48、動き推定部42および動き補償部44によって使用されて後続のビデオフレーム内の別のビデオブロックをインター予測することが可能である。
図3は、本願のある実施形態に係る例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号化部80、予測処理部81、逆定量化部86、逆変換処理部88、加算器90およびDPB92を備える。予測処理部81は、動き補償部82、イントラ予測部84及びイントラBC部85をさらに備える。ビデオデコーダ30は、図2を参照してビデオエンコーダ20に関して上述した符号化プロセスとおおよそ逆の復号化プロセスを実行することができる。例えば、動き補償部82は、エントロピー復号化部80から受信した動きベクトルに基づいて予測データを生成し、イントラ予測部84は、エントロピー復号化部80から受信したイントラ予測モードインジケータに基づいて予測データを生成することができる。
ある例では、ビデオデコーダ30における一つの構成要素が本願の実施を実行する任務を負ってもよい。また、ある例では、本開示の実施は、ビデオデコーダ30における1つまたは複数の構成要素に区画されてもよい。例えば、イントラBC部85は、本願の実施を単独で実現してもよいし、または動き補償部82、イントラ予測部84およびエントロピー復号化部80などのビデオデコーダ30における他の構成要素と組み合わせて実現してもよい。ある例では、ビデオデコーダ30がイントラBC部85を含まなく、イントラBC部85の機能が動き補償部82のようなの予測処理部81における他の構成要素によって実現されてもよい。
ビデオデータメモリ79は、ビデオデコーダ30における他の構成要素によって復号化される符号化ビデオビットストリームなどのビデオデータを格納することができる。ビデオデータメモリ79に格納されたビデオデータは、例えば、ビデオデータの有線または無線ネットワーク通信や物理的なデータ記憶媒体(例えば、フラッシュドライブやハードディスク)へのアクセスにより、ストレージ装置32やカメラなどのローカルビデオソースから取得した。ビデオデータメモリ79は、符号化されたビデオビットストリームからの符号化されたビデオデータを格納する符号化画像バッファ(CPB)を含んでもよい。ビデオデコーダ30における復号化画像バッファ(DPB)92は、ビデオデコーダ30による(例えば、イントラ予測またはインター予測符号化モードでの)ビデオデータの復号化に使用される参照ビデオデータを格納する。ビデオデータメモリ79およびDPB92は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗型RAM(RRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、または他のタイプのメモリデバイスなどの種々のメモリデバイスのいずれかによって形成されることが可能である。説明の便利上、ビデオデータメモリ79およびDPB92は、図3ではビデオデコーダ30における2つの個別の構成要素として示されている。しかし、当業者にとっては、ビデオデータメモリ79およびDPB92が同じメモリデバイス又は個別のメモリデバイスによって提供されることは明らかである。ある例では、ビデオデータメモリ79は、ビデオデコーダ30における他の構成要素とともにオンチップであってもよく、それらの構成要素に対するオフチップであってもよい。
ビデオデコーダ30は、復号化プロセスにおいて、符号化されたビデオフレームのビデオブロックおよび関連する構文要素を示す符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベルおよび/またはビデオブロックレベルで構文要素を受信してもよい。ビデオデコーダ30のエントロピー復号化部80は、このビットストリームをエントロピー復号化して、定量化された係数、動きベクトルまたはイントラ予測モードインジケータ、および他の構文要素を生成する。そして、エントロピー復号化部80は、動きベクトルおよび他の構文要素を予測処理部81に転送する。
ビデオフレームがイントラ予測符号化(I)フレームに符号化され、または他のタイプのフレームにおけるイントラ符号化予測ブロックに用いられる場合、予測処理部81におけるイントラ予測部84は、信号で通知されたイントラ予測モード、および現在フレームの以前復号化されたブロックからの参照データに基づいて、現在のビデオフレームのビデオブロックのための予測データを生成することが可能である。
ビデオフレームがインター予測符号化(すなわち、BまたはP)フレームに符号化された場合、予測処理部81における動き補償部82は、エントロピー復号化部80から受信した動きベクトルおよび他の構文要素に基づいて、現在のビデオフレームのビデオブロックのための1つまたは複数の予測ブロックを生成することが可能である。各予測ブロックは、参照フレームリストのうちの1つ内の参照フレームから生成される。ビデオデコーダ30は、DPB92に格納された参照フレームに基いて、デフォルトの構成技術によりこれらの参照フレームリスト、List0およびList1を構成することが可能である。
ある例では、ビデオブロックがここで述べたイントラBCモードに従って符号化された場合には、予測処理部81におけるイントラBC部85は、エントロピー復号化部80から受信したブロックベクトルおよび他の構文要素に基づいて、現在のビデオブロックのための予測ブロックを生成する。この予測ブロックは、ビデオエンコーダ20によって决定された現在のビデオブロックと同一の画像の再構成領域にあり得る。
動き補償部82および/またはイントラBC部85は、動きベクトルおよび他の構文要素を解析することで現在のビデオフレームのビデオブロックのための予測情報を決定し、そして、この予測情報を使用して復号化されている現在のビデオブロックのための予測ブロックを生成する。例えば、動き補償部82は、受信した構文要素の一部を使用して、このビデオフレームのビデオブロックを符号化するための予測モード(例えば、イントラ予測またはインター予測)、インター予測フレームタイプ(例えば、BまたはP)、このフレームのための1つまたは複数の参照フレームリストの構造情報、このフレームの各インター予測符号化ビデオブロックの動きベクトル、このフレームの各インター予測符号化ビデオブロックのインター予測状態、および現在のビデオフレームにおけるビデオブロックを復号化するための他の情報を決定する。
同様に、イントラBC部85は、受信した構文要素の一部、例えばフラグを使用して、現在のビデオブロックがイントラBCモードで予測されること、このフレームにおけるどのビデオブロックが再構成領域にあり且つDPB92に格納されるべきかに関する構造情報、このフレームにおける各イントラBC予測ビデオブロックのブロックベクトル、このフレームにおける各イントラBC予測ビデオブロックのイントラBC予測状態、及び現在のビデオフレームにおけるビデオブロックを復号化するための他の情報を決定することができる。
また、動き補償部82は、ビデオエンコーダ20がビデオブロックの符号化において使用した補間フィルタを使用して補間を実行して、参照ブロックのサブ整数画素の補間値を算出することもできる。この場合、動き補償部82は、受信した構文要素からビデオエンコーダ20によって使用された補間フィルタを決定し、この補間フィルタを使用して予測ブロックを生成してもよい。
逆定量化部86は、ビデオエンコーダ20によって定量化の度合いを決定するためにこのビデオフレーム内の各ビデオブロックに対して算出された定量化パラメータと同じものを使用して、ビットストリームに提供され且つエントロピー復号化部80によってエントロピー復号化された定量化の変換係数を逆定量化する。逆変換処理部88は、画素領域にある残差ブロックを再構成するように、逆変換、例えば逆DCT、逆整数変換、または概念的に類似の逆変換処理をこれらの変換係数に適用する。
動き補償部82またはイントラBC部85がベクトルおよび他の構文要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、加算器90は、逆変換処理部88からの残差ブロックと動き補償部82及びイントラBC部85によって生成された対応する予測ブロックとを加算することで、現在のビデオブロックに対して復号化されたビデオブロックを再構成する。加算器90とDPB92との間には、インループフィルタ(図示せず)を配置して、この復号化されたビデオブロックをさらに処理することが可能である。そして、所定のフレーム内のこれらの復号化されたビデオブロックは、次のビデオブロックの将来の動き補償に使用される参照フレームを格納するDPB92に格納される。また、DPB92、またはDPB92とは別のメモリデバイスには、図1の表示装置34などのような表示装置にその後表示されるように、復号化されたビデオも格納されることが可能である。
典型的なビデオ符号化プロセスでは、1つのビデオシーケンスが、通常、順序付けられたフレームまたは画像のセットを含む。各フレームには、SL、SCbおよびSCrで示す3つのサンプル行列を含むことが可能である。SLは、輝度サンプルの2次元行列である。SCbは、Cb彩度サンプルの2次元行列である。SCrは、Cr彩度サンプルの2次元行列である。別の例では、フレームがモノクロであることがあり、この場合、輝度サンプルの1つの2次元行列のみが含まれる。
図4Aに示すように、ビデオエンコーダ20(または、より具体的には区画部45)は、まずフレームを1組の符号化木ユニットに区画することにより、このフレームの符号化表現を生成する。ビデオフレームには、ラスター走査順で左から右、および上から下に連続的に順序付けられた整数個のCTUが含まれる。各CTUは、最大の論理的な符号化ユニットであり、幅および高さが、ビデオシーケンス内のすべてのCTUが128×128、64×64、32×32及び16×16のうちの1つである同じサイズを有するように、ビデオエンコーダ20によってシーケンスパラメータセットで通知される。なお、本願は必ずしも特定のサイズに限定されない。図4Bに示すように、各CTUは、輝度サンプルの1つの符号化木ブロック(CTB)、彩度サンプルの2つの対応する符号化木ブロック、および符号化木ブロックのサンプルを符号化するために使用される構文要素を含み得る。構文要素は、画素の符号化ブロックの異なるタイプのユニットの属性、及びどのようにビデオシーケンスがビデオデコーダ30において再構成されるかを記述するものであって、例えば、インター予測またはイントラ予測、イントラ予測モード、動きベクトルおよび他のパラメータを含む。モノクロ画像または3つの個別の色平面を有する画像では、1つのCTUが、単一の符号化木ブロックと、この符号化木ブロックのサンプルを符号化するために使用される構文要素とを含み得る。符号化木ブロックは、N×Nのサンプルブロックであることが可能である。
より良いパフォーマンスを達成するために、ビデオエンコーダ20は、CTUの符号化木ブロックに対して二分木区画、四分木区画、またはそれらの組み合わせなどの木区画を再帰的に実行して、このCTUをより小さな符号化ユニット(CU)に区画することができる。より良いパフォーマンスを達成するために、ビデオエンコーダ20は、CTUの符号化木ブロックに対して二分木区画、三分木区画、四分木区画、またはそれらの組み合わせなどの木区画を再帰的に実行して、このCTUをより小さな符号化ユニット(CU)に区画することができる。図4Cに示すように、64×64のCTU400は、まず、32×32ブロックサイズの4つのより小さなCUに区画される。これらの4つのより小さいCUのうち、CU410及びCU420は、それぞれ16×16ブロックサイズの4つのCUに区画される。16×16ブロックサイズの2つのCU430および440は、それぞれ8×8ブロックサイズの4つのCUにさらに区画される。図4Dは、図4Cに示されたCTU400の区画プロセスの最終的な結果を表す四分木データ構造を示し、四分木の各リーフノードは、32×32から8×8までの各サイズの1つのCUに対応する。図4Bに示されたCTUのように、各CUは、フレームの同じサイズの輝度サンプルの1つの符号化ブロック(CB)と、彩度サンプルの2つの対応する符号化ブロックと、これらの符号化ブロックのサンプルを符号化するために使用される構文要素とを含み得る。モノクロ画像または3つの個別の色平面を有する画像には、1つのCUが、単一の符号化ブロックと、この符号化ブロックのサンプルを符号化するために使用される構文構造とを含み得る。なお、図4Cおよび図4Dに示す四分木分割は、例示的にすぎず、1つのCTUが四分/三分/二分木区画に基づいて各種のローカル特性に適するCUに分割されることができる。マルチタイプ木構造では、1つのCTUが四分木構造に従って分割され、各四分木リーフCUが、二分木および三分木構造に従ってさらに分割されることができる。図4Eに示すように、幅Wおよび高さHを有する符号化ブロックの5種の可能な区画タイプ、すなわち、四元区画、水平二元区画、垂直二元区画、水平三元区画、および垂直三元区画がある。
ある実施形態では、ビデオエンコーダ20が、さらにCUの符号化ブロックを1つまたは複数のM×N予測ブロック(PB)に区画するこができる。予測ブロックは、同じ予測(インター予測またはイントラ予測)が適用される長方形(正方形または非正方形)のサンプルブロックである。CUの予測ユニット(PU)は、1つの輝度サンプルの予測ブロック、彩度サンプルの2つの対応する予測ブロック、およびこれらの予測ブロックを予測するために使用される構文要素を含み得る。モノクロ画像または3つの個別の色平面を有する画像では、PUが単一の予測ブロックと、この予測ブロックを予測するために使用される構文構造とを含み得る。ビデオエンコーダ20は、CUの各PUの輝度予測ブロック、Cb予測ブロックおよびCr予測ブロックに対する予測的な輝度ブロック、予測的なCbブロックおよび予測的なCrブロックを生成することができる。
ビデオエンコーダ20は、イントラ予測またはインター予測により、PUに対してこれらの予測ブロックを生成することができる。ビデオエンコーダ20は、イントラ予測によりPUの予測ブロックを生成する場合、このPUに関連するフレームの復号化されたサンプルに基づいて、このPUの予測的なブロックを生成することができる。ビデオエンコーダ20は、インター予測によりPUの予測的なブロックを生成する場合、このPUに関連するフレーム以外の1つまたは複数のフレームの復号化されたサンプルに基づいて、このPUの予測的なブロックを生成することができる。
ビデオエンコーダ20は、CUの1つまたは複数のPUの予測的な輝度ブロック、予測的なCbブロック、および予測的なCrブロックを生成した後、CUの元の輝度符号化ブロックからCUの予測的な輝度ブロックを差し引くことで、このCUの輝度残差ブロックを生成し、ここで、このCUの輝度残差ブロックにおける各サンプルが、このCUの予測的な輝度ブロックのうち1つの予測的な輝度ブロックにおける輝度サンプルとこのCUの元の輝度符号化ブロックにおける対応するサンプルとの差を示す。同様に、ビデオエンコーダ20は、CUのCb残差ブロックおよびCr残差ブロックをそれぞれ生成し、ここで、このCUのCb残差ブロックにおける各サンプルが、このCUの予測的なCbブロックのうち1つの予測的なCbブロックにおけるCbサンプルとこのCUの元のCb符号化ブロックにおける対応するサンプルとの差を示し、このCUのCr残差ブロックにおける各サンプルが、このCUの予測的なCrブロックのうち1つの予測的なCrブロックにおけるCrサンプルとこのCUの元のCr符号化ブロックにおける対応するサンプルとの差を示す。
さらに、図4Cに示すように、ビデオエンコーダ20は、四分木区画により、CUの輝度残差ブロック、Cb残差ブロック、およびCr残差ブロックを1つまたは複数の輝度変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解することができる。変換ブロックは、同じ変換が適用される長方形(正方形または非正方形)のサンプルブロックである。CUの変換ユニット(TU)は、輝度サンプルの変換ブロック、彩度サンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用される構文要素を含み得る。したがって、CUの各TUは、輝度変換ブロック、Cb変換ブロックおよびCr変換ブロックに関連付けられることが可能である。ある例では、TUに関連付けられた輝度変換ブロックは、CUの輝度残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロ画像または3つの個別の色平面を有する画像では、TUが、単一の変換ブロックと、この変換ブロックのサンプルを変換するために使用される構文構造とを含み得る。
ビデオエンコーダ20は、1つまたは複数の変換をTUの輝度変換ブロックに適用して、このTUの輝度係数ブロックを生成することができる。係数ブロックは、変換係数の2次元行列であってもよい。変換係数はスカラー量であってもよい。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、このTUのCb係数ブロックを生成することができる。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、このTUのCr係数ブロックを生成することができる。
ビデオエンコーダ20は、係数ブロック(例えば、輝度係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後、係数ブロックを定量化してもよい。定量化とは、一般的に、変換係数を定量化してこれらの変換係数を示すデータの量をなるべく低減し、更なる圧縮に達することを意味する。ビデオエンコーダ20は、係数ブロックを定量化した後、定量化された変換係数を示す構文要素をエントロピー符号化することが可能である。例えば、ビデオエンコーダ20は、定量化された変換係数を示す構文要素に対してコンテキスト適応型バイナリ算術符号化(CABAC)を実行してもよい。最終的に、ビデオエンコーダ20は、符号化されたフレームおよび関連データの表現を構成するビットシーケンスを含むビットストリームを出力して、ストレージ装置32に保存するか、または目標装置14に送信する。
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信した後、このビットストリームを解析して、ビットストリームから構文要素を取得する。ビデオデコーダ30は、ビットストリームから取得された構文要素の少なくとも一部に基づいて、ビデオデータのフレームを再構成することができる。ビデオデータを再構成するプロセスは、一般的に、ビデオエンコーダ20によって実行された符号化プロセスと逆である。例えば、ビデオデコーダ30は、現在CUのTUに関連する係数ブロックに対して逆変換を実行して、現在CUのTUに関連する残差ブロックを再構成することが可能である。また、ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルと現在CUのTUの変換ブロックの対応するサンプルとを加算することによって、現在CUの符号化ブロックを再構成する。フレームの各CUの符号化ブロックが再構成された後、ビデオデコーダ30はこのフレームを再構成することが可能である。
上述したように、ビデオ符号化では、主に2つのモード、即ちイントラフレーム予測(またはイントラ予測)及びインターフレーム予測(またはインター予測)を使用してビデオ圧縮を実現する。なお、IBCは、イントラフレーム予測または第三モードと見なすことができる。この2つのモードを比べると、インターフレーム予測は、動きベクトルを使用して参照ビデオブロックから現在のビデオブロックを予測するため、イントラフレーム予測よりも符号化効率に大きく貢献する。
しかし、ビデオデータ・キャプチャ技術の向上及びビデオデータの詳細を保持するためのより精細化的なビデオブロックサイズにつれて、現在フレームのための動きベクトルを表すために必要なデータの量も大幅に増加している。この課題を解決するための1つの方法は、空間ドメインと時間ドメインにおける1組の隣り合うCUが、予測目的のための同じビデオデータを含むだけでなく、これらの隣り合うCU間で動きベクトルも同じであるという事実が有益である。したがって、空間的に隣り合うCUおよび/または時間的にコロケーテッドCUの動き情報の空間的および時間的相関性を探索することにより、空間的に隣り合うCUおよび/または時間的にコロケーテッドCUの動き情報を、現在CUの「動きベクトル予測子」(MVP)もという動き情報(例えば、動きベクトル)の近似として使用することが可能である。
図2を参照して上述した動き推定部42によって決定された現在CUの実際の動きベクトルをビデオビットストリームに符号化する代わりに、現在CUの実際の動きベクトルから現在CUの動きベクトル予測子を差し引くにより、現在CUの動きベクトル差(MVD)を生成する。これにより、フレームの各CUに対して動き推定部42によって決定した動きベクトルをビデオビットストリームに符号化する必要がなく、ビデオビットストリームにおける動き情報を表すためのデータの量を大幅に減らすことができる。
符号化ブロックのインターフレーム予測中に参照フレーム内から予測ブロックを選択するプロセスと同様に、ビデオエンコーダ20及びビデオデコーダ30は、1組のルールにより、現在CUの空間的に隣り合うCUおよび/または時間的にコロケーテッドCUに関連する潜在的な候補動きベクトルを使用して動きベクトル候補リスト(「マージリスト」とも呼ばれる)を構成し、そしてこれらの動きベクトル候補リストから1つの項目を選択して現在CUの動きベクトル予測子とする必要がある。これにより、ビデオエンコーダ20とビデオデコーダ30との間で動きベクトル候補リスト自身を送信する必要がなく、動きベクトル候補リスト内の選択された動きベクトル予測子の索引は、ビデオエンコーダ20およびビデオデコーダ30が動きベクトル候補リスト内で同じ動きベクトル予測子を使用して現在CUを符号化および復号化することに十分である。
ある実施形態では、各インター予測CUが、動きベクトル候補リストを構成するためのインター(「高度な動きベクトル予測」(AMVP))、スキップおよびマージを含む3つの動きベクトル予測モードを有する。各モードでは、以下に説明するアルゴリズムに従って、1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加することが可能である。最終的に、候補リスト内のそれらの動きベクトル候補のうちの1つは、ビデオエンコーダ20によってビデオビットストリームに符号化されるか、またはビデオデコーダ30によってビデオビットストリームから復号化されるインター予測CUの最適な動きベクトル予測子として使用される。候補リストから最適な動きベクトル予測子を見つけるために、動きベクトル競合(MVC)スキームが導入されて、空間的および時間的動きベクトル候補を含む所定の動きベクトル候補セット、すなわち動きベクトル候補リストから1つの動きベクトルが選択される。
動きベクトル予測子候補は、空間的に隣り合い、または時間的にコロケーテッドCUから導出されることに加えて、いわゆる「履歴による動きベクトル予測」(HMVP)テーブルからも導出されることが可能である。HMVPテーブルには、それぞれがCTUの同じ行(または同じCTU)の所定のCUを符号化/復号化することに使用された予め定められた数の動きベクトル予測子を収納している。これらのCUの空間的/時間的近接性によって、HMVPテーブルにおける動きベクトル予測子のうち1つが、CTUの同じ行内の異なるCUを符号化/復号化することに再利用される可能性は高い。したがって、動きベクトル候補リストを構成する処理にHMVPテーブルを使用することにより、より高い符号化効率を達成することが可能である。
ある実施形態では、HMVPテーブルが固定の長さ(例えば5)を有し、先入れ先出し(FIFO)の方式で管理される。例えば、CUの1つのインター符号化ブロックを復号化する際に、このCUに対して動きベクトルを再構成する。再構成された動きベクトルが後続のCUの動きベクトル予測子である可能性があるので、HMVPテーブルは、この動きベクトルによりオンザフライで更新される。HMVPテーブルの更新では、以下の2つの状況がある。(i)再構成された動きベクトルがHMVPテーブル内の既存の動きベクトルの1つと異なる、または(ii)再構成された動きベクトルがHMVPテーブル内の既存の動きベクトルの1つと同じである。第1の状況では、HMVPテーブルが未満の場合、再構成された動きベクトルが最新のものとしてHMVPテーブルに追加される。HMVPテーブルがすでにいっぱいになる場合、再構成された動きベクトルが最新のものとして追加される前に、まずHMVPテーブル内の最も古い動きベクトルがHMVPテーブルから削除される必要がある。言い換えると、この場合、HMVPテーブルは、FIFOバッファと同様に、FIFOバッファの先頭にあり且つ以前にインター符号化された別のブロックに関連する動き情報がこのバッファから取り除かれて、再構成された動きベクトルがHMVPテーブルにおける最新の項目としてFIFOバッファの末端に追加される。第2の状況では、再構成された動きベクトルが最新のものとしてHMVPテーブルに追加される前に、HMVPテーブル内の、再構成された動きベクトルと実質的に同じ既存の動きベクトルがHMVPテーブルから削除される。HMVPテーブルもFIFOバッファの方式で維持されている場合、HMVPテーブル内の同じ動きベクトルの次の動きベクトル予測子が1つの項目だけ前方に移動されて削除された動きベクトルによって残された空間を占有し、そして、再構成された動きベクトルがHMVPテーブル内の最新のものとしてFIFOバッファの末端に追加される。
HMVPテーブルにおける動きベクトルは、AMVP、マージ、スキップなどの異なる予測モードで動きベクトル候補リストに追加されることが可能である。HMVPテーブルに保存されている以前にインター符号化されたブロックの動き情報は、現在ブロックに隣り合っていなくても、より効率的な動きベクトル予測に利用できることが分かった。
現在CUに対する所定の動きベクトル候補セット内で1つのMVP候補が選択された後、ビデオエンコーダ20は、対応するMVP候補に対して1つまたは複数の構文要素を生成し、ビデオビットストリームに符号化してビデオデコーダ30がこの構文要素を使用してこのデオビットストリームからこのMVP候補を検索できる。動きベクトル候補セットを構成するための特定のモードによっては、異なるモード(例えば、AMVP、マージ、スキップなど)が異なる構文要素セットを有する。AMVPモードの場合には、構文要素が、インター予測インジケーター(List0、List1、または双方向予測)、参照索引、動きベクトル候補索引、動きベクトル予測残差信号などを含む。スキップモード及びマージモード場合には、現在CUが、符号化されたマージ索引によって指す隣接CUから、インター予測インジケータ、参照索引、動きベクトルなどの他の構文要素を継承するので、マージ索引のみがビットストリームに符号化される。スキップ符号化されたCUの場合には、動きベクトル予測残差信号も省略される。
図5Aは、本開示のある実施形態に係る、符号化/復号化対象の現在CUの空間的に隣り合いかつ時間的にコロケーテッドブロック位置を示すブロック図である。所定のモードでは、まず空間的に左側隣接ブロック位置および上方隣接ブロック位置に関連する動きベクトルの利用可能性、時間的にコロケーテッドブロック位置に関連する動きベクトルの利用可能性を検査し、次にHMVPテーブル内の動きベクトルの利用可能性を検査することで、動きベクトル予測(MVP)候補リストを構成する。MVP候補リストを構成するプロセスには、いくつかの冗長なMVP候補が候補リストから削除され、必要に応じて候補リストが固定の長さを有するようにゼロ値の動きベクトルが追加される(なお、モードによって固定の長さが異なることがある)。MVP候補リストの構成後、ビデオエンコーダ20は、この候補リストから最適な動きベクトル予測子を選択し、選択された候補を指す対応する索引をビデオビットストリームに符号化することができる。
ある例では、候補リスト(マージ候補リストとも呼ばれる)が、以下の5種タイプの候補を以下の順に含むことによって構成されることができる。
1.空間的に隣り合うCUからの空間的MVP(即ち、動きベクトル予測子)
2.コロケーテッドCUからの時間的MVP
3.FIFOテーブルから履歴によるMVP
4.ペアワイズ平均MVP
5.ゼロMV
ある実施形態では、候補リストのサイズがスライスヘッダーで通知され、候補リストの最大許容サイズが6である(例えば、VVCの場合)。マージモードの各CUコードについて、最適なマージ候補のインデックスが、切り捨て単項二値化(TU)により符号化される。マージインデックスの第1のビンは、コンテキストで符号化され、一方バイパス符号化が他のビンに使用される。本開示の以下の文脈において、この拡張されたマージモードは、概念がHEVCに使用されるマージモードと同じであるため、通常のマージモードとも呼ばれる。
図5Aを例として使用し、かつ候補リストが2の固定長さを有すると仮定すると、現在CUに関する動きベクトル予測子(MVP)候補リストは、AMVPモードで以下のステップを順に実行することによって構成されることが可能である。
1)空間的に隣り合うCUからのMVP候補の選択
a)A0で始まり且つA1で終わる左側の空間的に隣り合う2つのCUのうちの1つから、最大1つの非スケールMVP候補を導出する;
b)前のステップで左に利用可能な非スケールMVP候補がない場合には、A0で始まり且つA1で終わる左側の空間的に隣り合う2つのCUのうちの1つから、最大1つのスケールMVP候補を導出する;
c)B0で始まり且つB1を通じてB2で終わる上側の空間的に隣り合う3つのCUのうちの1つから、最大1つの非スケールMVP候補を導出する;
d)A0とA1の両方とも利用不可である場合、またはそれらがいずれもイントラモードで符号化された場合には、B0で始まり且つB1を通じてB2で終わる上側の3つの空間的隣り合うCUのうちの1つから、最大1つのスケールMVP候補を導出する;
2)前のステップで2つのMVP候補が見つかり、且つそれらが同一である場合は、このMVP候補リストからこの2つの候補のうちの1つを削除する;
3)時間的にコロケーテッドCUからのMVP候補の選択
a)前のステップの後、MVP候補リストに2つのMVP候補が含まれていない場合には、時間的にコロケーテッドCU(例えばT0)から最大1つのMVP候補を導出する;
4)HMVPテーブルからのMVP候補の選択
a)前のステップの後、MVP候補リストに2つのMVP候補が含まれていない場合には、HMVPテーブルから最大2つの履歴によるMVPを導出する;
5)前のステップの後、MVP候補リストに2つのMVP候補が含まれていない場合には、最大2つのゼロ値MVPをMVP候補リストに追加する。
以上の構成されたAMVPモードMVP候補リストには2つの候補しかないので、候補リスト内の2つのMVP候補のうちどのが現在CUの復号化に使用されるかを示すように、バイナリフラグのような関連する構文要素をビットストリームに符号化する。
ある実施形態では、スキップモードまたはマージモードでは、上述のような一連のステップを順に実行することで、現在CUに関するMVP候補リストを構成し得る。なお、「ペアワイズマージ候補」と呼ばれる1つの特別な種類のマージ候補も、スキップモードまたはマージモードのためのMVP候補リストに含まれる。ペアワイズマージ候補は、以前に導出された2つのマージモード動きベクトル候補のMVを平均化することによって生成される。マージMVP候補リストのサイズ(たとえば、1から6)は、現在CUのスライスヘッダーで通知される。マージモードの各CUについて、最適なマージ候補の索引は、切り捨て単項二値化(TU)により復号化される。マージ索引の第1のビンはコンテキストで符号化され、バイパス符号化が他のビンに使用される。
上述のように、履歴によるMVPは、空間的MVP及び時間的MVPの後、AMVPモードMVP候補リスト又はマージMVP候補リストに追加されることができる。以前インター符号化されたCUの動き情報は、HMVPテーブルに保存され、現在CUのためのMVP候補として使用される。HMVPテーブルは、符号化/復号化プロセス中に維持されている。非サブブロックインター符号化したCUがあるたびに、関連する動きベクトル情報が新しい候補としてHMVPテーブルの最後のエントリに追加され、一方(HMVPテーブルがすでにいっぱいで、このテーブル内に関連動きベクトル情報の同じ複本がない場合)HMVPテーブルの第1のエントリに格納されている動きベクトル情報がそこから削除される。これの代わりに、関連する動きベクトル情報がHMVPテーブルの最後のエントリに追加される前に、関連する動きベクトル情報の同じ複本をこのテーブルから削除してもよい。
上述のように、イントラブロックコピー(IBC)は、スクリーンコンテンツ素材の符号化効率を著しく改善することができる。IBCモードはブロックレベルの符号化モードとして実現されるので、ビデオエンコーダ20では、ブロックマッチング(BM)を実行して、各CUに対して最適なブロックベクトルを見つける。ここでは、ブロックベクトルは、現在の画像内で現在ブロックからすでに再構成された参照ブロックへの変位を示すためのものである。IBCモードは、イントラ予測モードまたはインター予測モード以外の第三予測モードとして扱われる。
CUレベルでは、IBCモードが、以下のようにIBC AMVPモードまたはIBCスキップ/マージモードとして信号で通知されることができる。
-IBC AMVPモード:CUの実際のブロックベクトルとこのCUのブロックベクトル候補から選択されたこのCUのブロックベクトル予測子との間のブロックベクトル差(BVD)は、上述したAMVPモードで動きベクトル差に対する符号化と同じ方法で符合化される。(IBC符合化される場合)ブロックベクトル予測方法では、2つのブロックベクトル候補が予測子として使用され、1つが左側の隣から、もう1つが上方の隣からである。いずれの隣も利用不可である場合には、デフォルトのブロックベクトルがブロックベクトル予測子として使用される。二値フラグは、ブロックベクトル予測子索引を示すように信号で通知される。IBC AMVP候補リストには、空間的候補およびHMVP候補を含む。
-IBCスキップ/マージモード:マージ候補索引は、隣り合うIBC符号化ブロックからのマージ候補リスト(「マージリスト」とも呼ばれる)においてどのブロックベクトル候補が現在ブロックのためのブロックベクトルの予測に使用されるかを示すためのものである。IBCマージ候補リストには、空間的候補、HMVP候補、およびペアワイズ候補を含む。
図6A~6Dは、本開示のある実施形態に係る、現在ブロックの時間的動きベクトル予測子(TMVP)またはサッブブロックのサッブブロック時間的動きベクトル予測子(SbTMVP)を導出するためのステップを示すブロック図である。
ある実施形態では、図5に関して説明したように、1つの時間的動きベクトル予測子(TMVP)候補のみがマージ候補リストに追加される。このTMVP候補が有効か無効かを指示すように、第1フラグ(sps_temporal_mvp_enabled_flag)が画像のシーケンスパラメータセット(SPS)で通知され、第2フラグ(slice_temporal_mvp_enabled_flag)がスライスヘッダーで通知される。特に、この時間的マージ候補の導出では、スケール動きベクトルが、参照画像リストにおける以前に符号化復号化された画像であるコロケーテッド画像のMVから導出される。この時間的動き候補の導出では、このコロケーテッド画像が第1の参照フレームリスト(List0)か第2の参照フレームリスト(List1)から選択されたかを指示すように、スライスヘッダー内の明示的なフラグ(co-located_from_l0_flag)が最初にデコーダーに送信される。使用されるリスト内のどの画像が、時間的動き候補を導出するためのコロケーテッド画像として選択されるかを指示すように、コロケーテッド参照インデックス(co-located_ref_idx)がさらに送信される。時間的動き候補のList0(L0とも呼ばれる)およびList1(L1とも呼ばれる)MVは、以下の擬似コードに従ってコロケーテッド画像のコロケーテッドブロック内の異なるリストのMVに対する予め定められた順序で個別に導出される。
時間的併合候補のスケール動きベクトル602は、図6Aの点線で示すように、POC距離tb604およびPOC距離td606を使用して、選択されたコロケーテッドブロックの動きベクトルからスケールされることで得られる。ここで、tbは、現在の画像の参照画像(例えば、現在の参照608)と現在の画像(例えば、現在の画像610)との間のPOC差と定義され、tdは、コロケーテッド画像の参照画像(コロケーテッド参照614)とコロケーテッド画像(コロケーテッド画像612)との間のPOC差と定義される。時間的マージ候補の参照画像インデックスはゼロに設定される。スケールプロセスの実際的な実現は、HEVC仕様に記載されている。Bスライスの場合、1つが参照画像List0用、もう1つが参照画像List1用のような2つの動きベクトルは、取得されて結合され、双予測マージ候補を作成する。
参照フレームに属するコロケーテッドブロック(例えば、コロケーテッドブロック620)において、時間的候補の位置は、図6Bに示すように、候補C0とC1との間で選択される。位置C0でのブロックが利用不可であり、イントラ符号化復号化されており、または現在のCTUの外にある場合は、位置C1が使用される。それ以外の場合、位置C0は時間的マージ候補の導出に使用される。
ある符号化復号化標準(例えば、VVC試験モデル1)は、サッブブロックに基づく時間的動きベクトル予測子(SbTMVP)方法をサポートする。HEVCにおける時間的動きベクトル予測(TMVP)と同様に、SbTMVPは、コロケーテッド画像の動きフィールドを使用して、現在の画像におけるCUの動きベクトル予測及びマージモードを改善する。SbTMVPでは、TMVPで使用されたコロケーテッド画像と同じものが使用される。SbTMVPは、次の2つの主な点でTMVPと異なる。
1.TMVPはCUレベルで動きを予測するが、SbTMVPはサブCUレベルで動きを予測する。
2.TMVPがコロケーテッド画像におけるコロケーテッドブロックから時間的動きベクトルを選択する期間(コロケーテッドブロックは現在のCUに対して右下または中央のブロックである)では、SbTMVPは、現在のCUの空間的に隣り合うブロックのうちの1つからの動きベクトルから取得された動きシフトをこのコロケーテッド画像から選択された時間的動き情報に適用する。
SbTMVPプロセスは、図6C-6Dに示されている。SbTMVP(図6DのSbTMVP632)は、2つのステップで、現在のCU(図6Dの現在のCU636)内のサブCU(例えば、サブCU634)の動ベクトルを予測する。第1のステップにおいて、図6C中の空間的隣A1(例えば、空間的隣638)を調べる。A1がコロケーテッド画像(例えば、図6Aのコロケーテッド画像612)を参照画像として使用する動きベクトルを有する場合、この動きベクトルは、適用される動きシフト(例えば、図6Dの動きシフト630)として選択される。そのような動きベクトルが識別されながった場合、動きシフトはゼロ値ベクトル(0、0)に設定される。ブロックA1のList0MVおよびList1MVのうちの最初に利用可能な動きベクトルは、動きシフトとして設定される。このように、SbTMVPでは、常に現在のCUに対して右下または中央の位置にある対応するブロック(コロケーテッドブロックと呼ばれることもある)がTMVPと比較して、より正確に識別されることができる。動きシフトを決定するための擬似コードは以下のとおりである。
VVCにおけるSbTMVPの動きシフトを決定するための擬似コード
上記の表で使用される変数および関数は、以下のように示す。
・ColFromL0Flag:コロケーテッド画像がList0参照画像リストからのものであるかどうかを示す構文;
・LDC:すべての参照画像のPOC値が現在の画像よりも小さいかどうかを示す;
・CurrentSliceType:現在のスライス(画像)のタイプ;
・count:すでに導出されたマージ候補の利用可能な数;
・interDirA1:N番目のマージ候補のinterDir(1:L0, 2:L1, または3:Bi);
・refIdxA1 [0]:N番目のマージ候補のL0動き情報(例えば、MV, ref. index)
・refIdxA1 [1]:N番目のマージ候補のL1動き情報(例えば、MV, ref. index)
・getRefPic(M, I):参照インデックスIによって参照画像ListMから参照画像を取得するための関数。
第2のステップでは、図6Dに示すように、ステップ1で識別された動きシフトが適用されて(すなわち、現在のブロックの座標に追加されて)、コロケーテッド画像からサブCUレベルの動き情報(動きベクトルおよび参照インデックス)を取得する。図6Dの例では、動きシフトがブロックA1の動きに設定されているとする。実際の実現では、動きシフトがブロックA1、A2、B1、またはB2の動きのいずれかに設定されることが可能である。
まず、代表的なサブCUが選択され、この代表的なサブCUの対応するブロックの動き情報がデフォルト動き情報として使用される。SbTMVPの既存のスキームでは、現在のCUの中央位置の右下にあるサブCUが代表的なサブCUとして選択される。代表的なサブCUの対応するブロックからデフォルト動き情報として有効な動き情報を導出できなかった場合、SbTMVP候補は利用不可と見なされる。デフォルト動き情報が利用可能な場合、次のステップに進み、現在のCU内の各サブCUの動き情報を取得する。いずれかのサブCUの対応するブロックに利用可能な動き情報がないたびに、デフォルト動き情報がそのサブCUの導出された時間的動きとして使用される。
次に、各サブCUについて、コロケーテッド画像内の対応するブロック(中央のサンプルを含む最小の動きグリッド)の動き情報を使用して、このサブCUの動き情報を導出する。コロケーテッドサブCUの動き情報が特定された後、時間的動きスケールを適用して時間的動きベクトルの参照画像を現在のCUの参照画像と位置合わせるHEVCのTMVPプロセスと同様の方法で、現在のサブCUの動きベクトル及び参照インデックスに変換される。
なお、現在の設計では、コロケーテッド画像におけるコロケーテッドCTU内の動きフィールド+このコロケーテッドCTUの右側の1つの列のみが、各CUのSbTMVPおよびTMVP導出に使用できる。図
7に示すように、コロケーテッドCTU内の動き情報+このコロケーテッドCTUの右側にある1列の動き情報(この例では、CTU2は現在のCUのコロケーテッドCTU)のみは、SbTMVPおよびTMVPの時間的なmv導出に使用される可能である。以降、説明の便宜上、このコロケーテッドCTU+1つの列を、SbTMVP / TMVP導出のための「有効な領域」と呼びる。このコンテキストでは、サブCUのコロケーテッド画像内の対応するN×Nブロックが有効な領域の外側にあるたびに、この対応するN×NブロックがコロケーテッドCTU内にある代替ブロックに置き換えられる。代替N×Nブロックの位置は、以下の式を使用して、有効な領域内に位置決めされる対応するN×Nブロックの元の位置をクリップすることで導出される。以下の式(各サブCUの位置クリッププロセス)では、CurPicWidthInSamplesY及びCurPicHeightInSamplesYは符号化復号化された画像の幅及び高さであり、CTUWidthInSamplesX及びCTUWidthInSamplesYはCTUの幅及び高さであり、xCtb及びyCtbはコロケーテッドCTUの左上のサンプルの水平位置及び垂直位置である。xColCtrCb及びyColCtrCbはサブCUの代表的なサンプルの水平位置及び垂直位置であり、MotionShiftX及びMotionShiftYは、動きシフトのx成分及びy成分である。関数Clip3(x, y, z)及びMin(x, y)は次のように定義される。
VVCでは、SbTMVP候補及びアフィンマージ候補の両方を含む、サブブロックに基づく結合式マージリストが、サブブロックに基づくマージモードの信号による通知に使用される。SbTMVPモードは、シーケンスパラメータセット(SPS)フラグによって有効化/無効化される。SbTMVPモードが有効になっている場合、SbTMVP予測子は、サブブロックに基づくマージ候補のリストの最初のエントリとして追加され、その後にアフィンマージ候補が続く。サブブロックに基づくマージリストのサイズはSPSで信号により通知され、VVCでは、サブブロックに基づくマージリストの最大許可サイズが5である。
SbTMVPで使用されるサブCUサイズは8×8に固定されており、アフィンマージモードの場合のように、SbTMVPモードは、幅および高さの両方が8以上であるCUにのみ適用可能である。さらに、現在のVVCでは、TMVPおよびSbTMVPで使用される時間的動きフィールドストレージの場合、動きフィールド圧縮は、HEVCにおける16×16の粒度とは対照的に、8×8の粒度で実行される。
ある実施形態では、動きシフトは、常に隣接ブロックのList0mvから導出される。List0mvが利用不可である場合は、隣接ブロックのList1mvが使用されて、SbTMVPの動きシフトを導出する。擬似コードが以下に説明される。
SbTMVPの動きシフトを決定するための擬似コード
ある実施形態では、動きシフトが、常に隣接ブロックのList1mvから導出される。 List1mvが利用不可である場合は、隣接ブロックのList0mvが使用されて、SbTMVPの動きシフトを導出する。擬似コードが以下に説明される
SbTMVPの動きシフトを決定するための擬似コード
ある実施形態では、有効な領域の外に位置するサブCUの対応するブロックのいずれがあるたびに、ゼロベクトルが動きシフトベクトルとして使用されてSbTMVPを導出する。このように、現在のCUのすべてのサブCUの対応するブロックが有効な領域内に位置することが保証される。したがって、各サブCUのための位置クリッププロセスは不要である。現在のCUにおいてサブCUの対応するブロックのいずれが有効な領域の外にあるかどうかを判定する方法はたくさんある。一例では、左上のN×NサブCUの対応するブロックおよび右下のN×NサブCUの対応するブロックは、この2つの対応するブロックが有効な領域内にあるかどうかを決定するようにチェックされる。いずれかの対応するブロックが有効な領域の外にある場合、ゼロベクトルが動きシフトベクトルとして使用される。それ以外の場合(対応するブロックの両方はとも有効な領域内にある)、導出された動きシフトがSbTMVPに使用される。
ある実施形態では、有効な領域の外に位置するサブCUの対応するブロックのいずれかがあるたびに、SbTMVPは、現在のCUに対して利用不可と見なされる。
ある実施形態では、有効な領域の外に位置するサブCUの対応するブロックのいずれかがあるたびに、動きシフトは、すべてのサブCUの対応するブロックが有効な領域内に位置することを保証するように修正される。したがって、各サブCUのための位置クリッププロセスは不要である。
ある実施形態では、ゼロベクトルは、常にSbTMVP導出のための動きシフトに使用される。
ある実施形態では、有効な領域の外に位置する対応するブロックを有するサブCUのMVとして、代表的なサブCUから導出されたデフォルトMVを使用することが提案される。
図7は、本開示のある実施形態に係る、現在の画像(例えば、現在の画像704)における符号化ブロック(例えば、現在のCU702)のためのTMVPおよびSbTMVPを導出することに使用される有効な領域を決定するためのブロック図を示している。有効な領域は、TMVPまたはSbTMVPのために現在のCU(例えば、現在のCU702)に対応するCU(例えば、対応するCU702')が検索されているコロケーテッド画像(例えば、コロケーテッド画像704')内の領域である。ある実施形態では、有効な領域は、TMVPおよびSbTMVPを導出するためのCTU(例えば、CTU2')+1つの列(例えば、1列のTMVバッファ706)によって決定される。有効な領域制約は、メモリ使用の削減のための設計である。有効な領域をコロケーテッドCTU+1つの列に制限することにより、有効な領域内の動き情報のみを内部メモリ(例えば、キャッシュ)に保存して、外部メモリからの時間的動きデータへのアクセスの平均コスト(時間またはエネルギー)を削減する必要がある。今、最大CTUサイズはVVCで128×128であり(最大CTUサイズはVVCプロファイルの後続の段階で決定される可能性がある)、CTUサイズは128×128未満(例えば、64×64又は32×32)に設定されることが可能である。1つの例では、CTUサイズが64×64に設定されている場合、有効な領域は、コロケーテッド64×64ブロック+1つの列に制約される。最大CTUのための時間的MVバッファーの設計はすでに存在するので、符号化復号化効率の観点から、最大CTUサイズよりも小さい有効な領域を使用するのは賢明ではない場合がある。ある実施形態では、使用中のCTUサイズに関係なく、有効な領域は、常に許可な最大CTUサイズ+1つの列に固定されている。
ある実施形態では、有効な領域は、コロケーテッドCTUだけになるように変更される。
ある実施形態では、CTUサイズが最大CTUサイズに等しい場合、有効な領域は、コロケーテッドCTU+1つの列である。CTUサイズが最大CTUサイズよりも小さい場合、有効な領域は、コロケーテッドCTU+コロケーテッドCTUの右側の1つの列及びコロケーテッドCTUの下の1つの行になるように変更される。
図8A~8Bは、本開示のある実施形態に係る、ビデオエンコーダがサブブロック時間的動きベクトル予測子を導出する技術を実現する例示的なプロセス800を示すフローチャートである。プロセス800は、復号化プロセスか符号化プロセスかであり得るが、便宜上、プロセス800は、ビデオデコーダ(例えば、図3のビデオデコーダ30)によって実行される復号化プロセスとして説明される。
第1のステップとして、デコーダは、現在の符号化ユニットのコロケーテッド画像を決定する(例えば、ビットストリームから現在のフレームのコロケーテッド画像が第1のリストまたは第2のリストからのものであるかを指示する第1の構文要素を受信する;次に、ビットストリームから選択されたリストのどのフレームがコロケーテッドフレームとして使用されるかを指示する第2の構文要素を受信する)(805)。例えば、図6Aを参照すると、現在の画像610における現在のCU601は、コロケーテッド画像612内のコロケーテッドCU601'に対応する。
次に、デコーダは、現在の符号化ユニットの空間的隣接ブロックを位置決める(810)。例えば、図6Dを参照すると、現在の符号化ユニット(例えば、現在のCU636)は、空間的隣638(ブロックA1)を有する。ある実施形態では、空間的隣接ブロックは、符号化ユニットまたはサブブロックである。
空間的隣接ブロックを位置決めした後、デコーダは、次に、現在の符号化ユニットの動きシフトベクトルを決定する(815)。動きシフトベクトルは、現在の画像(例えば、図6Dにおける現在の画像610)における現在の符号化ユニット(例えば、図6Dにおける現在のCU636)とコロケーテッド画像(例えば、図6Dにおけるコロケーテッド画像612)における対応するコロケーテッドブロック(例えば、図6Dにおける空間的隣638'(ブロックA1'))との間の空間的位置のシフトを示す。
動きシフトベクトルを決定するために、デコーダは、空間的隣接ブロックのList0に含まれる動きベクトルのそれぞれを順次検査する(820)。List0内のそれぞれの動きベクトルのいずれがコロケーテッド画像を当該動きベクトルの参照画像として使用するという決定に従って(825):デコーダは、List0内の当該動きベクトルを動きシフトベクトルとして設定し(830)(例えば、動きシフトベクトル630)、空間的隣接ブロックのList0における後続の動きベクトル及びList1における動きベクトルの検査を放棄する(835)。その結果、動きベクトルの検索が終了し、List0内の最初にマッチング動きベクトルが動きシフトベクトルとして使用される。言い換えると、デコーダは、空間的隣接ブロックのList1をチェックする前に、常に最初に空間的隣接ブロックのList0に含まれる動きベクトルをチェックする。
一方、List0内のそれぞれの動きベクトルが、いずれもコロケーテッド画像を参照画像として使用しないという決定に従って(840)、デコーダは、空間的隣接ブロックのList1に含まれる動きベクトルのそれぞれを順次検査する(845)。つまり、デコーダは、List0内の動きベクトルの検索が否定的な結果を返す場合にのみ、空間的隣接ブロックのList1の動きベクトルをチェックする。
空間的隣接ブロックのList1内の動きベクトルを検索している間、List1内のそれぞれの動きベクトルのいずれが、コロケーテッド画像を当該動きベクトルの参照画像として使用するという決定に従って(850)、デコーダは、List1における当該動きベクトルを動きシフトベクトルとして設定し(855)、List1における後続の動きベクトルの検査を放棄する(860)。つまり、List1内の最初にマッチング動きベクトルが動きシフトベクトルとして使用される。List1内のそれぞれの動きベクトルが、いずれもコロケーテッド画像を当該動きベクトルの参照画像として使用しないという決定に従って(865)、デコーダは、動きシフトベクトルをゼロ値に設定する(870)。結果として、対応する符合化ユニットおよび現在の符号化ユニットは、コロケーテッド画像および現在の画像に対して同じ相対な位置にある(例えば、現在の符号化ユニットと対応する符号化ユニットとの間に動きのシフトがない)。
最後に、デコーダは、現在の符号化ユニット内の複数のサブブロックのうちのそれぞれのサブブロックについて、動きシフトベクトルに基づいて、コロケーテッド画像内の対応するサブブロックから、サブブロックに基づく時間的動きベクトルを再構成する(875)。例えば、図6Dを参照すると、スケーリング後、サブブロック時間的動きベクトル予測子632は、動きシフトベクトル630により、対応するサブブロック時間的動きベクトル631を位置決めすことで構成される(例えば、図6Aに関して説明されたスケールプロセス及び関する説明)。ある実施形態では、サブブロックは、List0およびList1からの1つまたは2つの時間的動きベクトルを含む。
ある実施形態では、動きシフトベクトルに基づいてコロケーテッド画像内の対応するサブブロックから、現在の符号化ユニット内の複数のサブブロックのうちのそれぞれのサブブロックのサブブロックに基づく時間的動きベクトルを再構築することは、現在の符号化ユニット内の複数のサブブロックのうちのそれぞれのサブブロックのサブブロックに基づく時間的動きベクトルを予測することを含み、動きシフトベクトルに基づいてコロケーテッド画像における所定の領域(例えば、有効な領域)内において、それぞれのサブブロックに対応するコロケーテッドサブブロックを探索する;コロケーテッド画像における所定の領域内においてコロケーテッドサブブロックが存在するという決定に従って、コロケーテッドサブブロックの1つ又は2つの動きベクトルを識別し、それぞれのサブブロックのためのサブブロックに基づく時間的動きベクトルを、現在の画像と現在の画像の参照画像との間の第1の画像順序カウント(POC)距離(例えば、図6AにおけるPOC距離tb)およびコロケーテッド画像とコロケーテッド画像の参照画像との間の第2のPOC距離(例えば、図6AにおけるPOD距離td)に基づいてスケールされた1つまたは2つの動きベクトルとして設定する。ある実施形態では、コロケーテッド画像における所定の領域内においてコロケーテッドサブブロックが存在しないという決定に従って、対応するサブブロックのサブブロックに基づく時間的運動ベクトルは、ゼロ値動きベクトルに設定される。別の実施形態では、コロケーテッド画像における所定の領域内においてコロケーテッドサブブロックが存在しないという決定に従って、コロケーテッド画像における所定の領域内の代替的サブブロックは対応するサブブロックとして設定される。例えば、代替的サブブロックは、コロケーテッドサブブロックに最も近い所定の領域内における境界サブブロックである。
ある実施形態では、コロケーテッド符号化ユニットを含むCTUのサイズに関係なく、所定の領域は、最大許可CTUサイズ+1つの列に等しいサイズを有する。
ある実施形態では、デコーダは、空間的隣接ブロックのList0をチェックする前に、まず空間的隣接ブロックのList1における動きベクトルをチェックする。
1つまたは複数の例では、上述した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実現される。ソフトウェアで実現される場合、それらの機能は、1つまたは複数の命令またはコードとして、コンピュータ読取可能な媒体に格納されまたはこれを介して送信され、ハードウェアによる処理ユニットによって実行される。コンピュータ読取可能な媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ読取可能な記憶媒体、または、例えば、通信プロトコルに従って、ある箇所から別の箇所へのコンピュータプログラムの転送を役立つ任意の媒体を含む通信媒体を含むことが可能である。このように、コンピュータ読取可能な媒体は、一般的に、(1)非一時的な有形のコンピュータ読取可能な記憶媒体、または(2)信号または搬送波などの通信媒体、に対応することが可能である。データ記憶媒体は、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされて、本願で説明された実施形態を実現するための命令、コード、および/またはデータ構造を検索することができる任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ読取可能な媒体を含んでもよい。
ここで実施形態を説明するために使用される用語は、特定の実施形態を説明することのみを目的としており、特許請求の範囲を限定することを意図することがではない。実施形態の説明および添付の特許請求の範囲で使用されるように、単数形「一」、「1つの」、および「この」は、文脈で明確に別段の指示がない限り、複数形も含むことを意図している。 ここで使用される「および/または」という用語は、1つまたは複数の関する、列挙された項目の任意及びすべての可能な組み合わせを意味しかつ含むことも理解されべきである。本明細書で使用された「含む」という用語は、記載された特徴、要素、および/または成分の存在を指示するが、1つまたは複数の他の機能、要素、成分、および/またはそれらの組の存在または追加を排除するものではないことがさらに理解されべきである。
ここで、第1、第2などの用語を使用して各種の要素を説明したことが、これらの要素はこれらの用語によって限定されないことも理解されべきである。これらの用語は、ある要素を別の要素と区別するためにのみ使用された。例えば、実施形態の範囲から逸脱することない限り、第1の電極は、第2の電極と呼ばれてよく、同様に、第2の電極は、第1の電極と呼ばれてもよい。第1の電極と第2の電極は両方とも電極であるが、同じ電極ではない。
本願の説明は、例示および説明のために提示されており、網羅的なまたは開示された形態の発明に限定されるものではない。各種の変更、変形、および置換した実現は、前述の説明および関連する図面に提示された教示を得った当業者にとっては明らかである。実施形態は、本発明の原理、実際の適用を最もよく説明し、当業者が各種の実施のために本発明を理解し、特定の用途に適するために各種の変更で基礎となる原理および各種の実施を最もよく利用できるようにするために選択されおよび説明されたものである。したがって、特許請求の範囲は、開示された実現の特定の例に限定されなく、変更および他の実現も、添付の特許請求の範囲に含まれることを理解されるべきである。