ビデオコーディング(たとえば、ビデオ符号化および/またはビデオ復号)は、通常、同じピクチャの中のビデオデータのすでにコーディングされたブロック(たとえば、イントラ予測)または異なるピクチャの中のビデオデータのすでにコーディングされたブロック(たとえば、インター予測)のいずれかから、ビデオデータのブロックを予測することを伴う。いくつかの事例では、ビデオエンコーダはまた、予測ブロックを元のブロックと比較することによって残差データを計算する。したがって、残差データは、予測ブロックと元のブロックとの差を表す。残差データをシグナリングするために必要とされるビットの数を減らすために、ビデオエンコーダは、残差データを変換して量子化し、変換され量子化された残差データを符号化されたビットストリームにおいてシグナリングする。変換および量子化プロセスによって達成される圧縮は不可逆であることがあり、変換および量子化プロセスが復号されたビデオデータに歪みをもたらし得ることを意味する。
ビデオデコーダは、残差データを復号し予測ブロックに加算して、予測ブロック単独よりも元のビデオブロックとよく一致する再構築されたビデオブロックを生成する。残差データの変換および量子化によってもたらされる損失により、最初の再構築されたブロックはひずみまたはアーティファクトを有することがある。1つのよくあるタイプのアーティファクトまたは歪みはブロッキネスと呼ばれ、これは、ビデオデータをコーディングするために使用されるブロックの境界が見えるというものである。
復号されたビデオの品質をさらに改善するために、ビデオデコーダは、再構築されたビデオブロックに対して1回または複数回のフィルタリング動作を実行することができる。これらのフィルタリング動作の例は、デブロッキングフィルタリング、サンプル適応オフセット(SAO)フィルタリング、および適応ループフィルタリング(ALF)を含む。これらのフィルタリング動作のためのパラメータは、ビデオエンコーダによって決定され符号化されたビデオビットストリームにおいて明示的にシグナリングされ得るか、または符号化されたビデオビットストリームにおいてパラメータが明示的にシグナリングされる必要なくビデオデコーダによって暗黙的に決定され得るかのいずれかである。
本開示は、テンプレート照合、バイラテラル照合、およびデコーダ側MV改良などの、デコーダ側動きベクトル導出(DMVD)技法に関する技法を説明する。これらの技法はデコーダ側で実行されるものとして言及されるが、本明細書で説明されるデコーダ側動きベクトル導出技法は、たとえば、ビデオデータのブロックをどのように符号化するかを決定し、ビデオデコーダが利用可能な復号された参照データと同じ参照データを記憶するために、ビデオエンコーダによっても実行され得る。本開示の技法は、High Efficiency Video Coding(HEVC)、Versatile Video Coding(VVC)、Essential Video Coding(EVC)などの既存のビデオコーデックのいずれに適用されてもよく、または未来のビデオコーディング規格における効率的なツールであってもよい。
本開示の様々な技法は、ビデオコーデック(エンコーダおよびデコーダ)の性能を改善し、コーディングされたビデオデータのビットレートを下げることがある。一般に、本開示の技法は、DMVDを使用してビデオデータの現在のブロックのための初期動きベクトルを改良することを含み、初期動きベクトルは整数精度を有する。すなわち、初期動きベクトルは、小数ピクセル位置ではなく完全整数ピクセル位置を指し示す。初期動きベクトルの改良により、改良された動きベクトルが小数ピクセル精度を有するようになることがある。(小数ピクセル精度を有する動きベクトルのためにより多くのビットが必要とされるのではなく)ビットストリームにおいて初期動きベクトルを表すためにより少数のビットが必要とされるように、初期動きベクトルがビットストリームにおいてコーディングされ得る。さらに、完全整数精度動きベクトルを符号化して復号することは、小数ピクセル精度を有する動きベクトルを符号化して復号するよりも、より少ない処理動作しか要しないことがある。
しかしながら、小数ピクセル精度を潜在的に有するように動きベクトルを改良することによって、改良された動きベクトルは、より精度が高くなり、したがって、現在のブロックのための予測ブロックをより正確に特定できる。結果として、現在のブロックに対する残差を減らすことができ、それにより、ビットストリームのビットレート、ならびに残差データを符号化または復号するために必要とされる符号化および復号動作がさらに減る。したがって、これらの技法は、エンコーダとデコーダの両方の動作を改善し、コーディングされたビデオシーケンスを表すデータを含むビットストリームのビットレートを下げることができる。
その上、整数ピクセル精度を使用してDMVDを実行することは、小数ピクセル精度を使用してDMVDを実行することと比較して、エンコーダおよびデコーダの負担を減らす。具体的には、DMVDを実行するために、エンコーダまたはデコーダは、初期動きベクトルによって特定されるエリアの周りのエリアにおいて探索を実行する。初期動きベクトルが整数ピクセル精度を有するとき、そのエリアの中の復号されたピクセルを直接使用することができる。対照的に、初期動きベクトルがサブ整数ピクセル精度(すなわち、小数ピクセル精度)を有する場合、サブ整数ピクセル値が補間されなければならず、それにより、エンコーダおよびデコーダに課される処理およびメモリ消費の需要が増大する。
ビデオコーディング規格は、そのスケーラブルビデオコーディング(SVC:Scalable Video Coding)拡張およびマルチビュービデオコーディング(MVC:Multi-view Video Coding)拡張を含む、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、およびITU-T H.264(ISO/IEC MPEG-4 AVCとも呼ばれる)を含む。
加えて、High Efficiency Video Coding(HEVC)またはITU-T H.265が、その範囲拡張、マルチビュー拡張(MV-HEVC)、およびスケーラブル拡張(SHVC)を含めて、Joint Collaboration Team on Video Coding(JCT-VC)、ならびに、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on 3D Video Coding Extension Development(JCT-3V)によって開発された。以後HEVC WDと呼ばれる、HEVCドラフト仕様書は、phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。
ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は、HEVC規格(その現在の拡張ならびにスクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングのための目先の拡張を含む)の圧縮能力を大きく超える圧縮能力をもつ、将来のビデオコーディング技術について研究している。このグループは、この分野の専門家により提案されている圧縮技術の設計を評価するために、Joint Video Exploration Team(JVET)として知られている共同研究においてこの調査活動に一緒に取り組んでいる。参照ソフトウェアの最新バージョン、すなわちVVC Test Model 11.2(VTM 11.2)は、vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTMから入手可能である。Versatile Video Coding(VVC)ドラフト仕様書は、Document JVET-T2001と呼ばれる。Versatile Video CodingおよびTest Model 11(VTM11.0)のアルゴリズム説明書は、Document JVET-T2002と呼ばれる。
図1は、本開示の技法を実行し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、一般に、ビデオデータをコーディングする(符号化および/または復号)することを対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生のコーディングされていないビデオ、符号化されたビデオ、復号された(たとえば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
図1に示されるように、この例では、システム100は、宛先デバイス116によって復号され表示されるべき、符号化されたビデオデータを提供するソースデバイス102を含む。具体的には、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、モバイルデバイス、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、表示デバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのうちのいずれかを備え得る。場合によっては、ソースデバイス102および宛先デバイス116は、ワイヤレス通信に対応し得るので、ワイヤレス通信デバイスと呼ばれ得る。
図1の例では、ソースデバイス102は、ビデオソース104、メモリ106、ビデオエンコーダ200、および出力インターフェース108を含む。宛先デバイス116は、入力インターフェース122、ビデオデコーダ300、メモリ120、および表示デバイス118を含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、モデルベースの動きベクトル差分導出およびテンプレート照合予測のための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの例を表し、一方で宛先デバイス116はビデオ復号デバイスの例を表す。他の例では、ソースデバイスおよび宛先デバイスは、他のコンポーネントまたは構成を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、統合された表示デバイスを含むのではなく、外部表示デバイスとインターフェースし得る。
図1に示されるようなシステム100は一例にすぎない。一般に、あらゆるデジタルビデオ符号化および/または復号デバイスが、モデルベースの動きベクトル差分導出およびテンプレート照合予測のための技法を実行し得る。ソースデバイス102および宛先デバイス116は、ソースデバイス102が宛先デバイス116への送信のためにコーディングされたビデオデータを生成するような、コーディングデバイスの例にすぎない。本開示は、データのコーディング(符号化および/または復号)を実行するデバイスとして、「コーディング」デバイスに言及する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイス、具体的には、それぞれビデオエンコーダおよびビデオデコーダの例を表す。いくつかの例では、ソースデバイス102および宛先デバイス116は、ソースデバイス102および宛先デバイス116の各々がビデオ符号化および復号コンポーネントを含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のための、ソースデバイス102と宛先デバイス116との間での一方向または双方向のビデオ送信をサポートし得る。
一般に、ビデオソース104は、ビデオデータ(すなわち、生のコーディングされていないビデオデータ)のソースを表し、ビデオデータの連続した一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためのデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラなどの、ビデオキャプチャデバイス、以前にキャプチャされた生のビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータで生成されたビデオとの組合せを生成し得る。各々の場合において、ビデオエンコーダ200は、キャプチャされた、事前にキャプチャされた、またはコンピュータで生成されたビデオデータを符号化する。ビデオエンコーダ200は、受信された順序(「表示順序」と呼ばれることがある)からコーディングのためのコーディング順序へと、ピクチャを並べ替えることができる。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス102は次いで、たとえば宛先デバイス116の入力インターフェース122によって、受信および/または取り出しのために、出力インターフェース108を介してコンピュータ可読媒体110へと、符号化されたビデオデータを出力し得る。
ソースデバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、たとえば、ビデオソース104からの生のビデオと、ビデオデコーダ300からの生の復号されたビデオデータとを記憶し得る。追加または代替として、メモリ106、120は、たとえばビデオエンコーダ200およびビデオデコーダ300によってそれぞれ実行可能なソフトウェア命令を記憶し得る。メモリ106およびメモリ120は、この例ではビデオエンコーダ200およびビデオデコーダ300とは別々に示されているが、ビデオエンコーダ200およびビデオデコーダ300は、機能的に同様のまたは等価な目的で内部メモリも含み得ることを理解されたい。さらに、メモリ106、120は、たとえばビデオエンコーダ200から出力されビデオデコーダ300へと入力される、符号化されたビデオデータを記憶し得る。いくつかの例では、メモリ106、120の一部は、たとえば生の、復号された、および/または符号化されたビデオデータを記憶するために、1つまたは複数のビデオバッファとして割り振られ得る。
コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化されたビデオデータを移すことが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、ソースデバイス102がリアルタイムで宛先デバイス116に符号化されたビデオデータを直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調することができ、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調することができる。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたは有線通信媒体を含み得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどのパケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
いくつかの例では、ソースデバイス102は、符号化されたデータを出力インターフェース108から記憶デバイス112に出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して、記憶デバイス112からの符号化されたデータにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、様々な分散されたまたはローカルでアクセスされるデータ記憶媒体のうちのいずれかを含み得る。
いくつかの例では、ソースデバイス102は、符号化されたビデオデータを、ソースデバイス102によって生成された符号化されたビデオデータを記憶し得るファイルサーバ114または別の中間記憶デバイスに出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114からの記憶されたビデオデータにアクセスし得る。
ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイトのための)ウェブサーバ、(ファイル転送プロトコル(FTP)またはFile Delivery over Unidirectional Transport(FLUTE)プロトコルなどの)ファイル転送プロトコルサービスを提供するように構成されたサーバ、コンテンツ配信ネットワーク(CDN)デバイス、ハイパーテキスト転送プロトコル(HTTP)サーバ、Multimedia Broadcast Multicast Service(MBMS)もしくはEnhanced MBMS(eMBMS)サーバ、および/またはネットワークアタッチトストレージ(NAS)デバイスを表し得る。ファイルサーバ114は、追加または代替として、Dynamic Adaptive Streaming over HTTP(DASH)、HTTP Live Streaming(HLS)、Real Time Streaming Protocol(RTSP)、HTTP Dynamic Streamingなどの1つまたは複数のHTTPストリーミングプロトコルを実装し得る。
宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通じて、ファイルサーバ114からの符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、またはファイルサーバ114に記憶されている符号化されたビデオデータにアクセスするのに適した、両方の組合せを含み得る。入力インターフェース122は、ファイルサーバ114からメディアデータを取り出すかもしくは受信するための上で論じられた様々なプロトコルまたはメディアデータを取り出すための他のそのようなプロトコルのうちのいずれか1つまたは複数に従って動作するように構成され得る。
出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、有線ネットワーキングコンポーネント(たとえば、イーサネットカード)、種々のIEEE 802.11規格のいずれかに従って動作するワイヤレス通信コンポーネント、または他の物理コンポーネントを表し得る。出力インターフェース108および入力インターフェース122がワイヤレスコンポーネントを備える例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(Long-Term Evolution)、LTE Advanced、5Gなどのセルラー通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108および入力インターフェース122は、IEEE 802.11仕様、IEEE 802.15仕様(たとえば、ZigBee(商標))、Bluetooth(商標)規格などの他のワイヤレス規格に従った、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。たとえば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に起因する機能を実行するためのSoCデバイスを含んでもよく、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に起因する機能を実行するためのSoCデバイスを含んでもよい。
本開示の技法は、電波によるテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、dynamic adaptive streaming over HTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されているデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、通信媒体、記憶デバイス112、ファイルサーバ114など)から、符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームは、ビデオブロックまたは他のコーディングされたユニット(たとえば、スライス、ピクチャ、ピクチャグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素などの、ビデオデコーダ300によっても使用されるビデオエンコーダ200によって定義されるシグナリング情報を含み得る。表示デバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。表示デバイス118は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプの表示デバイスなどの、様々な表示デバイスのいずれかを表し得る。
図1には示されないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は各々、オーディオエンコーダおよび/またはオーディオデコーダと統合されることがあり、共通のデータストリームの中のオーディオとビデオの両方を含む多重化されたストリームを扱うために、適切なMUX-DEMUXユニット、または他のハードウェアおよび/もしくはソフトウェアを含むことがある。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
ビデオエンコーダ200およびビデオデコーダ300は各々、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な適切なエンコーダおよび/またはデコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、適切な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ200およびビデオデコーダ300の各々は、1つまたは複数のエンコーダまたはデコーダに含まれもてよく、それらのいずれも、それぞれのデバイスの中で複合エンコーダ/デコーダ(コーデック)の一部として統合されてもよい。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/または携帯電話などのワイヤレス通信デバイスを備え得る。
ビデオエンコーダ200およびビデオデコーダ300は、High Efficiency Video Coding(HEVC)としても言及されるITU-T H.265などのビデオコーディング規格、または、マルチビューおよび/もしくはスケーラブルビデオコーディング拡張などのそれらの拡張に従って動作し得る。代わりに、ビデオエンコーダ200およびビデオデコーダ300は、Versatile Video Coding(VVC)などの、他のプロプライエタリ規格または業界規格に従って動作し得る。VVC規格のドラフトは、Bross他、「Versatile Video Coding(Draft 9)」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Video Experts Team(JVET)、第18回会議、4月15~24日、JVET-R2001-v8(以後「VVC Draft 9」)に記載されている。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
一般に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は全般に、処理されるべきデータ(たとえば、符号化および/または復号プロセスにおいて符号化される、復号される、または別様に使用される)を含む構造を指す。たとえば、ブロックは、輝度および/または色度データのサンプルの2次元行列を含み得る。一般に、ビデオエンコーダ200およびビデオデコーダ300は、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルに対する赤、緑、および青(RGB)のデータをコーディングするのではなく、ビデオエンコーダ200およびビデオデコーダ300は、輝度成分および色度成分をコーディングしてもよく、色度成分は、赤の色調と青の色調の両方の色度成分を含んでもよい。いくつかの例では、ビデオエンコーダ200は、受信されたRGBフォーマットされたデータを符号化の前にYUV表現へと変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニットおよび後処理ユニット(図示せず)が、これらの変換を実行してもよい。
本開示は、一般に、ピクチャのデータを符号化または復号するプロセスを含むものとして、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックのためのデータを符号化または復号するプロセス、たとえば予測および/または残差コーディングを含むものとして、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは一般に、コーディングの決定(たとえば、コーディングモード)およびブロックへのピクチャの区分を表す、シンタックス要素に対する一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は全般に、ピクチャまたはブロックを形成するシンタックス要素に対する値をコーディングすることとして理解されるべきである。
HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCによれば、ビデオコーダ(ビデオエンコーダ200など)は、四分木構造に従ってコーディングツリーユニット(CTU)をCUへと区分する。すなわち、ビデオコーダは、CTUおよびCUを4つの等しい重複しない正方形へと区分し、四分木の各ノードは、0個または4個のいずれかの子ノードを有する。子ノードのないノードは「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUおよび/または1つまたは複数のTUを含むことがある。ビデオコーダはPUおよびTUをさらに区分し得る。たとえば、HEVCでは、残差四分木(RQT)はTUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
別の例として、ビデオエンコーダ200およびビデオデコーダ300は、VVCに従って動作するように構成され得る。VVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、四分木二分木(QTBT)構造またはマルチタイプツリー(MTT)構造などの木構造に従って、CTUを区分し得る。QTBT構造は、HEVCのCUと、PUと、TUとの分離などの、複数の区分タイプという概念を取り払う。QTBT構造は、四分木区分に従って区分される第1のレベル、および二分木区分に従って区分される第2のレベルという、2つのレベルを含む。QTBT構造のルートノードは、CTUに対応する。二分木のリーフノードは、コーディングユニット(CU)に対応する。
MTT区分構造では、ブロックは四分木(QT)区分、二分木(BT)区分、および1つまたは複数のタイプの三分木(triple tree)(TT)(三分木(ternary tree)(TT)とも呼ばれる)区分を使用して区分され得る。三分木(triple tree)または三分木(ternary tree)区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、三分木(triple tree)または三分木(ternary tree)区分は、中心を通って元のブロックを分割することなく、ブロックを3つのサブブロックへと分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称的であっても、または非対称であってもよい。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、輝度成分および色度成分の各々を表すために単一のQTBT構造またはMTT構造を使用してもよく、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、輝度成分のための1つのQTBT/MTT構造および両方の色度成分のための別のQTBT/MTT構造(またはそれぞれの色度成分のための2つのQTBT/MTT構造)などの、2つ以上のQTBTまたはMTT構造を使用してもよい。
ビデオエンコーダ200およびビデオデコーダ300は、HEVCに従った四分木区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明のために、本開示の技法の記載はQTBT区分に関して提示される。しかしながら、本開示の技法は、四分木区分、または他のタイプの区分も使用するように構成される、ビデオコーダにも適用され得ることを理解されたい。
いくつかの例では、CTUは、ルーマサンプルのコーディングツリーブロック(CTB)、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、またはモノクロームピクチャもしくはサンプルをコーディングするために使用される3つの別個の色平面およびシンタックス構造を使用してコーディングされたピクチャのサンプルのCTBを含む。CTBは、CTBへの成分の分割が区分であるような、何らかの値のNに対するサンプルのN×Nブロックであり得る。成分は、4:2:0、4:2:2、もしくは4:4:4色フォーマットのピクチャの3つのアレイ(ルーマおよび2つのクロマ)のうちの1つからのアレイもしくはそのアレイの単一のサンプル、またはモノクロームフォーマットのピクチャのアレイもしくはそのアレイの単一のサンプルであり得る。いくつかの例では、コーディングブロックは、コーディングブロックへのCTBの分割が区分であるような、何らかの値のMおよびNに対するサンプルのM×Nブロックである。
ブロック(たとえば、CTUまたはCU)は、ピクチャにおいて様々な方法でグループ化され得る。一例として、ブリックは、ピクチャの中の特定のタイル内のCTU行の長方形領域を指し得る。タイルは、ピクチャにおける特定のタイル列および特定のタイル行の中のCTUの長方形領域であり得る。タイル列は、ピクチャの高さに等しい高さおよび(たとえば、ピクチャパラメータセットなどにおいて)シンタックス要素によって指定される幅を有する、CTUの長方形領域を指す。タイル行は、(たとえば、ピクチャパラメータセットなどにおいて)シンタックス要素によって指定される高さおよびピクチャの幅に等しい幅を有する、CTUの長方形領域を指す。
いくつかの例では、タイルは複数のブリックへと区分されてもよく、ブリックの各々はタイル内の1つまたは複数のCTU行を含んでもよい。複数のブリックに区分されないタイルも、ブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
ピクチャの中のブリックは、スライスとしても並べられ得る。スライスは、単一のネットワーク抽象化レイヤ(NAL)ユニットに独占的に含まれ得る、整数個のピクチャのブリックであり得る。いくつかの例では、スライスは、ある数の完全なタイル、または、1つのタイルの完全なブリックの連続的なシーケンスのみの、いずれかを含む。
本開示は、垂直方向および水平方向の寸法に関して、ブロック(CUまたは他のビデオブロックなど)のサンプル寸法を指すために、「N×N」および「N対N」を、たとえば16×16サンプルまたは16対16サンプルを交換可能に使用することがある。一般に、16×16 CUは、垂直方向に16個のサンプル(y=16)および水平方向に16個のサンプル(x=16)を有する。同様に、N×N CUは、一般に、垂直方向にN個のサンプルおよび水平方向にN個のサンプルを有し、ここで、Nは非負の整数値を表す。CUの中のサンプルは、行および列として並べられ得る。その上、CUは、必ずしも水平方向に垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mサンプルを備えることがあり、ここでMは必ずしもNと等しいとは限らない。
ビデオエンコーダ200は、予測情報および/または残差情報、ならびに他の情報を表す、CUのためのビデオデータを符号化する。予測情報は、CUのための予測ブロックを形成するために、CUがどのように予測されるべきかを示す。残差情報は一般に、符号化の前のCUのサンプルと予測ブロックとの間のサンプルごとの差を表す。
CUを予測するために、ビデオエンコーダ200は一般に、インター予測またはイントラ予測を通じて、CUのための予測ブロックを形成し得る。インター予測は一般に、以前にコーディングされたピクチャのデータからCUを予測することを指し、一方、イントラ予測は一般に、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は一般に、たとえば、CUと参照ブロックとの差に関して、CUとよく一致する参照ブロックを特定するために、動き探索を実行し得る。ビデオエンコーダ200は、絶対差分和(SAD)、二乗差分和(SSD)、平均絶対差(MAD)、平均二乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し、参照ブロックが現在のCUとよく一致するかどうかを決定し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在のCUを予測し得る。
VVCのいくつかの例は、インター予測モードと見なされ得るアフィン動き補償モードも提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインもしくはズームアウト、回転、射影運動、または他の不規則な運動タイプなどの、非並進運動を表す2つ以上の動きベクトルを決定し得る。
イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するためにイントラ予測モードを選択し得る。VVCのいくつかの例は、様々な方向モードを含む67個のイントラ予測モード、ならびに平面モードおよびDCモードを提供する。一般に、ビデオエンコーダ200は、現在のブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、その現在のブロックに対する隣接サンプルを記述する、イントラ予測モードを選択する。そのようなサンプルは一般に、ビデオエンコーダ200がラスター走査順序で(左から右、上から下)CTUおよびCUをコーディングすると仮定して、現在のブロックと同じピクチャにおいて、現在のブロックの上、上および左、または左にあり得る。
ビデオエンコーダ200は、現在のブロックのための予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのいずれが使用されるかを表すデータ、ならびに、対応するモードのための動き情報を符号化し得る。単方向または双方向のインター予測のために、たとえば、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)モードまたはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、同様のモードを使用して、アフィン動き補償モードのために動きベクトルを符号化し得る。
ブロックのイントラ予測またはインター予測などの予測に従って、ビデオエンコーダ200は、ブロックのための残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成されたそのブロックのための予測ブロックとの間のサンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域の代わりに変換領域において変換されたデータを生成するために、1つまたは複数の変換を残差ブロックに適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に類似の変換を、残差ビデオデータに適用し得る。加えて、ビデオエンコーダ200は、モード依存非分離可能二次変換(MDNSST: mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT)などの二次的な変換を、最初の変換に続いて適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を生成する。
上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行し得る。量子化は一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、変換係数の一部またはすべてと関連付けられるビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化の間にnビット値をmビット値に丸めてもよく、ここで、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行してもよい。
量子化に続いて、ビデオエンコーダ200は、変換係数を走査し、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高エネルギー(したがって、より低周波数)の変換係数をベクトルの前方に置き、より低エネルギー(したがって、より高周波数)の変換係数をベクトルの後方に置くように設計され得る。いくつかの例では、ビデオエンコーダ200は、量子化された変換係数を走査するためにあらかじめ定められた走査順序を利用して直列化されたベクトルを生成し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応走査を実行し得る。量子化された変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際にビデオデコーダ300によって使用するための符号化されたビデオデータと関連付けられるメタデータを記述するシンタックス要素に対する値をエントロピー符号化し得る。
CABACを実行するために、ビデオエンコーダ200は、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接する値が0であるかどうかに関連し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
ビデオエンコーダ200はさらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、または、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、もしくはビデオパラメータセット(VPS)などの他のシンタックスデータにおいて、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号するかを決定するために、そのようなシンタックスデータを同様に復号し得る。
このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックに対する予測および/または残差情報を記述するシンタックス要素を含む、ビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
一般に、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実行されたプロセスと逆のプロセスを実行する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが実質的に同様の方式で、CABACを使用してビットストリームのシンタックス要素に対する値を復号し得る。シンタックス要素は、CTUのCUを定義するために、ピクチャをCTUに区分するための区分情報と、QTBT構造などの対応する区分構造に従った各CTUの区分とを定義し得る。シンタックス要素はさらに、ビデオデータのブロック(たとえば、CU)に対する予測および残差情報を定義し得る。
残差情報は、たとえば量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックの量子化された変換係数を逆量子化し逆変換して、ブロックに対する残差ブロックを再現し得る。ビデオデコーダ300は、シグナリングされた予測モード(イントラ予測またはインター予測)および関連する予測情報(たとえば、インター予測のための動き情報)を使用して、ブロックに対する予測ブロックを形成する。ビデオデコーダ300は次いで、予測ブロックと残差ブロックとを(サンプルごとに)組み合わせて、元のブロックを再現し得る。ビデオデコーダ300は、ブロックの境界に沿った視覚的なアーティファクトを減らすために、デブロッキング処理を実行することなどの、追加の処理を実行し得る。
本開示は一般に、シンタックス要素などの何らかの情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、一般に、シンタックス要素に対する値、および/または符号化されたビデオデータを復号するために使用される他のデータの通信を指すことがある。すなわち、ビデオエンコーダ200は、ビットストリームにおいてシンタックス要素に対する値をシグナリングし得る。一般に、シグナリングは、ビットストリームにおいて値を生成することを指す。上で述べられたように、ソースデバイス102は、実質的にリアルタイムで、または非リアルタイムでビットストリームを宛先デバイス116に転送してもよく、これは、宛先デバイス116により後で取り出すためにシンタックス要素を記憶デバイス112に記憶するときなどに起こることがある。
図2Aおよび図2Bは、例示的な四分木二分木(QTBT)構造130および対応するコーディングツリーユニット(CTU)132を示す概念図である。実線は四分木分割を表し、点線は二分木分割を示す。二分木の各分割(すなわち、非リーフ)ノードでは、どちらの分割タイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされ、この例では0が水平の分割を示し、1が垂直の分割を示す。四分木分割では、四分木ノードはブロックをサイズの等しい4つのサブブロックへと水平および垂直に分割するので、分割タイプを示す必要はない。したがって、QTBT構造130の領域木レベル(すなわち、実線)のためのシンタックス要素(分割情報など)およびQTBT構造130の予測木レベル(すなわち、破線)のためのシンタックス要素(分割情報など)を、ビデオエンコーダ200は符号化することができ、ビデオデコーダ300は復号することができる。QTBT構造130の末端リーフノードによって表されるCUのための、予測データおよび変換データなどのビデオデータを、ビデオエンコーダ200は符号化することができ、ビデオデコーダ300は復号することができる。
一般に、図2BのCTU132は、第1および第2のレベルにおけるQTBT構造130のノードに対応するブロックのサイズを定義するパラメータと関連付けられ得る。これらのパラメータは、CTUサイズ(例ではCTU132のサイズを表す)、最小四分木サイズ(MinQTSize、最小の許容される四分木リーフノードサイズを表す)、最大二分木サイズ(MaxBTSize、最大の許容される二分木ルートノードサイズを表す)、最大二分木深度(MaxBTDepth、最大の許容される二分木深度を表す)、および最小二分木サイズ(MinBTSize、最小の許容される二分木リーフノードサイズを表す)を含み得る。
CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有してもよく、それらの各々が、四分木区分に従って区分されてもよい。すなわち、第1のレベルのノードは、リーフノードである(子ノードを有しない)か、または4つの子ノードを有するかのいずれかである。QTBT構造130の例は、親ノードと、分岐のための実線を有する子ノードとを含むものとして、そのようなノードを表す。第1のレベルのノードが最大の許容される二分木ルートノードサイズ(MaxBTSize)より大きくない場合、ノードはそれぞれの二分木によってさらに区分され得る。分割に起因するノードが最小の許容される二分木リーフノードサイズ(MinBTSize)または最大の許容される二分木深度(MaxBTDepth)に達するまで、1つのノードの二分木分割が繰り返され得る。QTBT構造130の例は、分岐のための破線を有するものとしてそのようなノードを表す。二分木リーフノードはコーディングユニット(CU)と呼ばれ、これは、さらなる区分なしで予測(たとえば、ピクチャ内またはピクチャ間予測)および変換のために使用される。上で論じられたように、CUは「ビデオブロック」または「ブロック」とも呼ばれ得る。
QTBT区分構造の一例では、CTUサイズは128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、MinBTSize(幅と高さの両方に対して)は4として設定され、MaxBTDepthは4として設定される。四分木リーフノードを生成するために、四分木区分がまずCTUに適用される。四分木リーフノードは、16x16(すなわち、MinQTSize)から128x128(すなわち、CTUサイズ)までのサイズを有し得る。四分木リーフノードが128x128である場合、四分木リーフノードは二分木によってさらに分割されず、それはサイズがMaxBTSize(すなわち、この例では64x64)を超えるからである。それ以外の場合、四分木リーフノードは二分木によってさらに区分され得る。したがって、四分木リーフノードは二分木のルートノードでもあり、0という二分木深度を有する。二分木深度がMaxBTDepth(この例では4)に達するとき、さらなる分割は許可されない。二分木ノードがMinBTSize(この例では4)に等しい幅を有することは、その二分木ノードに対してさらなる垂直分割(すなわち、幅の分割)が許可されないことを示唆する。同様に、二分木ノードがMinBTSizeに等しい高さを有することは、その二分木ノードに対してさらなる水平分割(すなわち、高さの分割)が許可されないことを示唆する。上述のように、二分木のリーフノードはCUと呼ばれ、さらなる区分のない予測および変換に従ってさらに処理される。
HEVCでは、スライスの中の最大のコーディング単位は、CTUとも呼ばれるCTBである。CTBは、そのノードがCUである四分木を含む。(技術的には8×8のCTBサイズがサポートされ得るが)CTBのサイズは、HEVCメインプロファイルでは16×16から64×64にわたり得る。CUは、CTBと同じサイズから、8×8程度の小ささであってもよい。各CUは、1つのコーディングモード、たとえばインターまたはイントラでコーディングされる。CUがインターコーディングされるとき、CUは、2つもしくは4つのPUへとさらに区分されることがあり、またはさらなる区分が適用されないときには1つだけのPUになることがある。1つのCUの中に2つのPUが存在するとき、2つのPUは、CUの半分のサイズの長方形であることがあり、またはCUの1/4もしくは3/4のサイズの2つの長方形であることがある。
図3Aおよび図3Bは、マージモードおよび高度動きベクトル予測(AMVP)のための空間隣接動きベクトル候補を示す概念図である。CUがインターコーディングされるとき、各PUは動き情報の1つのセットを有し、これは固有のインター予測モードを用いて導出される。HEVC規格では、PUに対して、それぞれ、マージモード(スキップはマージの特別な場合であると見なされる)および高度動きベクトル予測(AMVP)モードと名付けられた、2つのインター予測モードがある。
AMVPモードでもまたはマージモードでも、ビデオエンコーダ200およびビデオデコーダ300は、複数の動きベクトル予測子のための動きベクトル(MV)候補リストを維持するように構成され得る。ビデオエンコーダ200およびビデオデコーダ300は、現在のPUの動きベクトル、ならびにマージモードにおける参照インデックスを、MV候補リストから1つの候補をとることによって生成するように構成され得る。
HEVCでは、MV候補リストは、マージモードのための最高で5つの候補とAMVPモードのための2つだけの候補とを含む。マージ候補は、動き情報のセット、たとえば、参照ピクチャリスト(リスト0およびリスト1)と参照インデックスの両方に対応する動きベクトルを含み得る。マージ候補がマージインデックスによって特定される場合、ビデオエンコーダ200およびビデオデコーダ300は、現在のブロックの予測のために使用される参照ピクチャ、ならびに関連する動きベクトルを決定するように構成され得る。一方、リスト0またはリスト1のいずれかからの各々の潜在的な予測方向に対するAMVPモードのもとでは、AMVP候補が動きベクトルのみを含むので、参照インデックスが、MV候補リストへのMV予測子(MVP)インデックスとともに明示的にシグナリングされる。AMVPモードでは、予測される動きベクトルはさらに改良され得る。両モードに対する候補は、同じ空間的および時間的に隣接するブロックから同様に導出される。
図3Aおよび図3Bは、マージモードおよび高度動きベクトル予測(AMVP)のための空間隣接動きベクトル候補を示す概念図である。空間MV候補は、特定のPU(PU0)に対して(図3Aおよび図3Bに示される)隣接ブロックから導出されるが、ブロックから候補を生成するためのプロセスは、マージモードとAMVPモードとで異なる。
マージモードでは、最高で4つの空間MV候補が、図3Aに示される順序でPU0 140のために導出され得る。順序は、左(0)、上(1)、右上(2)、左下(3)、そして左上(4)である。
図3Bに示されるように、AVMPモードでは、ブロックPU0 142の隣接ブロックは、ブロック0および1を含む左のグループと、ブロック2、3および4を含む上のグループという、2つのグループに分割される。各グループに対して、シグナリングされた参照インデックスによって示される参照ピクチャと同じ参照ピクチャを参照する隣接ブロックの中の潜在的な候補は、グループの最終候補を形成するために選択される際の優先順位が最高である。すべての隣接ブロックが、同じ参照ピクチャを指す動きベクトルを含まないことがあり得る。したがって、そのような候補を見出すことができない場合、第1の利用可能な候補が、最終候補を形成するようにスケーリングされ得るので、時間距離の差が補償され得る。
図4Aおよび図4Bは、時間動きベクトル予測(TMVP)候補およびTMVPのための動きベクトルスケーリングを示す概念図である。ビデオエンコーダ200およびビデオデコーダ300は、時間動きベクトル予測子(TMVP)候補を空間動きベクトル候補の後にMV候補リストへ追加することを、それが有効にされておりTMVP候補が入手可能である場合、行うように構成され得る。TMVP候補のための動きベクトル導出のプロセスは、マージモードとAMVPモードの両方に対して同じである。しかしながら、HEVCでは、マージモードにおけるTMVP候補のための目標参照インデックスは0に設定される。
図4AはブロックPU0 156のための例示的なTMVP候補を示し、図4Bは動きベクトルスケーリングプロセスを示す。TMVP候補導出のための主要なブロック位置は、同一位置(collocated)PUの外側の右下のブロックである。この候補は、図4AにおいてブロックT150として示されている。ブロックT150の位置は、空間隣接候補を生成するために使用される上および左のブロックへの偏りを補償するために使用される。しかしながら、ブロックT150が現在のCTB行の外側に位置する場合、または動き情報が利用可能ではない場合、ブロックT152に関して示されるように、ブロックT152はPU156の中心のブロックT154で置き換えられる。
TMVP候補のための動きベクトルは、スライスレベルで示される、同一位置ピクチャの同一位置PUから導出される。同一位置PUのための動きベクトルは、同一位置MVと呼ばれる。AVCにおけるtemporal directモードと同様に、TMVP候補動きベクトルを導出するために、同一位置MVは、図4Bに示されるように、時間距離差分を補償するためにスケーリングされ得る。
ビデオエンコーダ200およびビデオデコーダ300は、動きベクトルスケーリングを実行するように構成され得る。動きベクトルの値は、提示時におけるピクチャの距離に比例すると仮定される。動きベクトルは、2つのピクチャ、すなわち、参照ピクチャと、動きベクトルを含むピクチャ(すなわち、格納ピクチャ)とを関連付ける。他の動きベクトルを予測するためにある動きベクトルが使用されるとき、格納ピクチャと参照ピクチャの距離は、ピクチャ順序カウント(POC)値に基づいて計算される。
予測されるべき動きベクトルに対して、その関連する格納ピクチャと参照ピクチャの両方が異なることがある。したがって、新しい距離(POCに基づく)が計算され、動きベクトルがこれらの2つのPOC距離に基づいてスケーリングされる。空間隣接候補について、2つの動きベクトルのための格納ピクチャは同じであるが、参照ピクチャは異なる。HEVCでは、動きベクトルのスケーリングは、空間隣接候補および時間隣接候補のためのTMVPとAMVPの両方に適用される。
ビデオエンコーダ200およびビデオデコーダ300は、人工動きベクトル候補生成を実行するように構成され得る。動きベクトル候補リストが完全ではない(たとえば、何らかの所定の数の候補未満である)場合、人工動きベクトル候補が生成され、リストに指定された数の候補が載るまでリストの最後に挿入される。
マージモードでは、Bスライスのためだけに導出される合成候補、および、第1のタイプが十分な人工候補をもたらさない場合にAMVPのために使用されるゼロ動きベクトル候補という、2つのタイプの人工MV候補がある。
候補リストの中にすでにあり、必要な動き情報を有する候補の各ペアに対して、リスト0の中のピクチャを参照する第1の候補の動きベクトル、およびリスト1の中のピクチャを参照する第2の候補の動きベクトルの合成によって、双方向合成動きベクトル候補が導出される。
ビデオエンコーダ200およびビデオデコーダ300は、候補挿入のための剪定プロセスを実行するように構成され得る。異なるブロックからの候補が偶然同じであることがあり、これは、マージ/AMVP候補リストの効率を下げる。この問題を解決するために剪定プロセスが適用される。剪定プロセスは、同一の候補を挿入するのをある程度避けるために、ある候補を現在の候補リストの中の他の候補と比較する。複雑さを下げるために、各々の可能性のある候補をすべての他の既存の候補と比較する代わりに、限られた数の剪定プロセスのみが適用される。
図5は、初期動きベクトルを使用してブロックの周りの探索エリアに対して実行されるテンプレート照合(TM)を示す概念図である。ビデオエンコーダ200およびビデオデコーダ300は、テンプレート照合TM予測を実行するように構成され得る。TM予測は、Frame-Rate Up Conversion(FRUC)技法に基づく特別なマージモードである。このモードでは、ブロックの動き情報はシグナリングされず、デコーダ側で導出される。それは、AMVPモードと通常マージモードの両方に適用される。AMVPモードでは、現在のブロックテンプレートと参照ブロックテンプレートとの差が最小になるものを選ぶために、テンプレート照合に基づいてMVP候補選択が決定される。通常マージモードでは、TMの使用を示すためにTMモードフラグがシグナリングされてもよく、次いで、MV改良のためにマージインデックスによって示されるマージ候補にTMが適用される。
図5は、初期MVの周りの探索エリアに対して例示的なテンプレート照合が実行されるのを示す。図5に示されるように、ビデオエンコーダ200およびビデオデコーダ300は、現在のピクチャの中のテンプレート(現在のCUの上および/または左の隣接ブロック)と参照ピクチャの中のブロック(テンプレートと同じサイズ)との最良の一致を見つけることによって、現在のCUの動き情報を導出するために、テンプレート照合を使用するように構成され得る。初期照合誤差に基づいて選択されたAMVP候補を用いて、そのMVPがテンプレート照合によって改良される。シグナリングされたマージインデックスによって示されるマージ候補を用いて、L0およびL1に対応するそのマージされたMVが独立にテンプレート照合によって改良され、そして、より正確ではない候補がさらに、より良い候補をpriorとして用いて再び改良される。
ビデオエンコーダ200およびビデオデコーダ300は、コスト関数を実装するように構成され得る。動きベクトルが小数サンプル位置を指し示すとき、動き補償された補間が必要である。複雑さを減らすために、参照ピクチャ上でテンプレートを生成するための両方のテンプレート照合に対して、通常の8タップDCT-IF補間の代わりに双線形補間が使用され得る。テンプレート照合の照合コストCは次のように計算される。
ここで、wは経験的に4に設定される加重係数であり、MVおよびMVsはそれぞれ、現在テストしているMVおよび初期MV(たとえば、AMVPモードにおけるMVP候補またはマージモードにおけるマージされた動きベクトル)を示す。テンプレート照合の照合コストとして、SADが使用される。
TMが使用されるとき、ルーマサンプルだけを使用することによって動きが改良される。導出される動きは、MCインター予測に対するルーマとクロマの両方のために使用され得る。MVが決められた後、ルーマのための8タップ補間フィルタおよびクロマのための4タップ補間フィルタを使用して、最後のMCが実行される。
ビデオエンコーダ200およびビデオデコーダ300は、上で論じられたようなテンプレート照合を使用して動きベクトル(MV)改良のための探索プロセスを実施するように構成され得る。MV改良は、テンプレート照合コストの基準および階層構造を用いたパターンベースのMV探索である。MV改良に対して、ダイヤモンド探索および交差探索という、2つの探索パターンがサポートされる。階層構造は、粗い動きベクトル差分(MVD)精度(たとえば、4分の1ピクセル(pel))から始まり高い精度(たとえば、1/8-pel)で終わる、MVを改良するための反復的なプロセスを指定する。MVは、ダイヤモンドパターンを用いて4分の1ルーマサンプルMVD精度で直接探索され、続いて交差パターンを用いて4分の1ルーマサンプルMVD精度で探索され、そして、続いて交差パターンを用いた8分の1ルーマサンプルMVD改良が行われる。MV改良の探索範囲は、初期MVの周りの(-8, +8)ルーマサンプルに等しく設定される。現在のブロックが双予測のブロックであるとき、両方のMVが独立に改良され、それらのうちで(照合コストに関して)最良のMVが、CUレベル重み(BCW)重み値を用いた双予測により他方のMVをさらに改良するためのpriorとして設定される。
図6は、2つの動きベクトル差分(MVD)値が時間距離に基づいて比例するようなバイラテラル照合予測の例を示す概念図である。ビデオエンコーダ200およびビデオデコーダ300は、バイラテラル照合予測を実行するように構成され得る。バイラテラル照合(バイラテラルマージとしても知られている)(BM)予測は、FRUC技法に基づく別のマージモードである。ブロックがBMモードを適用するために決定されるとき、シグナリングされたマージ候補インデックスを使用して、構築されたマージリストの中のマージ候補を選択することによって、2つの初期動きベクトルMV0およびMV1が導出される。バイラテラル照合を実施するとき、ビデオエンコーダ200およびビデオデコーダ300は、MV0およびMV1の周りで探索する。最後のMV0'およびMV1'は、最小のバイラテラル照合コストに基づいて導出される。
2つの参照ブロックを指し示す動きベクトル差分MVD0(MV0'-MV0によって表記される)およびMVD1(MV1'-MV1によって表記される)は、現在のピクチャと2つの参照ピクチャとの間の時間距離(TD)、たとえばTD0およびTD1に比例することがある。図6はMVD0およびMVD1の例を示し、TD1はTD0の4倍である。図6は、MVD0およびMVD1の例が時間距離に基づいて比例することを示す。
図7は、2つのMVDが時間距離にかかわらずミラーリングされるようなバイラテラル照合予測の例を示す概念図である。MVD0およびMVD1が時間距離TD0およびTD1とは無関係にミラーリングされるような、任意選択の設計である。図7はミラーリングされたMVD0およびMVD1の例を示し、TD1はTD0の4倍である。
図8は、探索範囲における3×3の正方形探索パターンを示す概念図である。バイラテラル照合を実行するとき、ビデオエンコーダ200およびビデオデコーダ300は、初期MV0およびMV1の周りでローカル探索を実行して最終的なMV0'およびMV1'を導出するように構成され得る。ローカル探索は、3×3の正方形探索パターンを適用して探索範囲[-8,8]をループする。各探索反復において、探索パターンの中の8つの周辺MVのバイラテラル照合コストが計算され、中心MVのバイラテラル照合コストと比較される。バイラテラル照合コストが最小のMVが、次の探索反復における新しい中心のMVになる。ローカル探索は、現在の中心のMVが3×3の正方形の探索パターン内で最小のコストを有するとき、またはローカル探索があらかじめ定められた最大の探索反復に達するとき、終了する。図8は、探索範囲[-8,8]における3×3の正方形の探索パターンの例を示す。
図9は、デコーダ側動きベクトル改良(DMVR)を示す概念図である。ビデオエンコーダ200およびビデオデコーダ300は、デコーダ側動きベクトル改良を実行するように構成され得る。マージモードのMVの正確さを高めるために、デコーダ側動きベクトル改良(DMVR)がVVCにおいて適用される。双予測演算において、参照ピクチャリストL0および参照ピクチャリストL1の中の初期MVの周りで、改良されたMVが探索される。DMVRプロセスは、参照ピクチャリストL0およびリストL1の中の2つの候補ブロックの間の歪みを計算する。図9に示されるように、初期MVの周りの各MV候補に基づくブロック間のSADが計算される。SADが最低のMV候補は、改良されたMVになり、双予測された信号、たとえば図9のブロック170および172を生成するために使用される。
図9は、デコーダ側動きベクトル改良の例を示す。DMVRプロセスによって導出される改良されたMVは、インター予測サンプルを生成するために使用され、未来のピクチャのコーディングのための時間動きベクトル予測においても使用される。一方、元のMVは、デブロッキングプロセスにおいて使用され、未来のCUのコーディングのための空間動きベクトル予測においても使用される。DMVRは、16×16のルーマサンプルというあらかじめ定められた最大の処理単位をもつ、サブブロックベースのマージモードである。CUの幅および/または高さが16個のルーマサンプルより大きいとき、それはさらに、16個のルーマサンプルに等しい幅および/または高さをもつサブブロックへと分割され得る。
ビデオエンコーダ200およびビデオデコーダ300は、ある探索方式を実装するように構成され得る。DVMRでは、探索点は初期MVを囲んでおり、MVオフセットはMV差分ミラーリングルールに従う。言い換えると、MVペア候補(MV0, MV1)によって表記される、DMVRによって確認されるあらゆる点が、以下の2つの式に従う。
MV0'=MV0+MV_offset
MV1'=MV1-MV_offset
ここで、MV_offsetは、参照ピクチャの1つにおける初期MVと改良されたMVとの間の改良オフセットを表す。改良探索範囲は、初期MVから2つの整数ルーマサンプルである。この探索は、整数サンプルオフセット探索段階および小数サンプル改良段階を含む。
ビデオエンコーダ200およびビデオデコーダ300は、整数サンプルオフセット探索のための25点の完全探索を適用するように構成され得る。初期MVペアのSADが最初に計算される。初期MVペアのSADが閾値より小さい場合、DMVRの整数サンプル段階は終了する。それ以外の場合、残りの24点のSADが計算され、ラスター走査順序で確認される。SADが最小の点が、整数サンプルオフセット探索段階の出力として選択される。DMVR改良の不確実性という不利益を減らすために、DMVRプロセスの間は元のMVを優先することが提案される。初期MV候補によって参照される参照ブロック間のSADは、SAD値の1/4だけ減少する。
整数サンプル探索に続いて、ビデオエンコーダ200およびビデオデコーダ300は、小数サンプル改良を実行するように構成され得る。計算の複雑さを減らすために、SAD比較を用いた追加の探索の代わりに、パラメトリック誤差曲面方程式を使用することによって、小数サンプル改良が導出される。小数サンプル改良は、整数サンプル探索段階の出力に基づいて条件的に呼び出される。整数サンプル探索段階が、第1の反復探索または第2の反復探索のいずれかにおいて最小のSADを有する中心で終了するとき、小数サンプル改良がさらに適用される。
phenix.it-sudparis.eu/jvet/doc_end_user/current_document.php?id=3542において入手可能な、Sethuraman他、「Decoder Side MV Refinement/Derivation with CTB-level concurrency and other normative complexity reduction techniques」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Video Experts Team(JVET)、文書JVET-K0041-v2、第11回会合、リュブリャナ、スロベニア、2018年7月10~18日(以後「JVET-K0041」)は、モデルベースの小数ピクセル(小数-pel)動きベクトル改良プロセスを説明する。JVET-K0041は、各々のあり得る小数-pel MVのための予測誤差曲面を形成するために二次パラメトリック関数を使用することを説明する。
基本的に、二次パラメトリック関数は、予測誤差の値を推定子として補間する補間関数である。整数間隔のMV改良からの厳密な予測誤差値に基づいて、量子化パラメトリック関数のパラメータを導出することができ、したがって、この誤差探索について最良の動きサンプリング位置を見つけることができる。次いで、コーデックによって小数-pel動きベクトル探索を実際に実行する代わりに、元のMVがこの厳密な動きサンプリング位置に調整される。このパラメトリック関数は、MVのすべてのあり得るサンプリング位置の誤差曲面を補間し、この曲面上でコスト値が最小である最良の位置を見つけるための基準として、5つの点からのコスト値を採用する。これらの5つの点は交差形状を形成し、各々の2つの隣接する点の間の間隔は1ピクセルの幅であり、中心/左/右/上/下の点が、(整数サンプル探索が見つける)MVが指し示す点に対して相対的に、(0,0)、(-1,0)、(1,0)、(0,-1)、および(0,1)に調整される。具体的には、このパラメトリック誤差曲面関数は、2D放物線誤差曲面方程式である。
Ex, y = A(x -Δx)2+B(y -Δy)2+C
ここで、Ex, yは(MV0'+x, MV1'+y)を指し示すMVに関連するSADを表し、(Δx,Δy)はコストが最小の位置に対応する未知の項であり、Cは最小コスト値に対応する。
5つの未知数について5つの式を解くことによって、(Δx,Δy)は次のように計算される。
Δx = floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))
Δy = floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))
ここで、αは、ある小数-pel精度で(Δx,Δy)を表すために導入される整数スケーリング係数であり、たとえば、16分の1精度では16であり、4分の1精度では4である。VVCでは、16が常に使用される。小数-pel精度MVを得るために、計算された小数(Δx,Δy)が、整数サンプル探索が発見するMVに加算される。
VVCでは、(Δx,Δy)は、計算されず、以下の条件の少なくとも1つが満たされるとき(0,0)に等しく設定される。
上で論じられたようなMV_offsetは、探索範囲の水平方向の境界にぶつかる(たとえば、DMVRまたはバイラテラル照合では±Nピクセル、Nは1、2、3、4、5、6、7、または8ピクセル以上であり得る)。
上で論じられたようなMV_offsetは、探索範囲の垂直方向の境界にぶつかる(たとえば、DMVRまたはバイラテラル照合では±Nピクセル、Nは1、2、3、4、5、6、7、または8ピクセル以上であり得る)。
E0,0は0に等しい。
ビデオエンコーダ200およびビデオデコーダ300は、双線形補間およびサンプルパディングを行うように構成され得る。VVCでは、MVの分解能は1/16ルーマサンプルである。小数位置におけるサンプルは、8タップの補間フィルタを使用して補間される。DMVRでは、探索点は整数サンプルオフセットを伴って初期小数-pel MVを取り囲んでおり、したがって、それらの小数位置のサンプルはDMVR探索プロセスのために補間される必要がある。計算の複雑さを減らすために、DMVRにおける探索プロセスのための小数サンプルを生成するために、双線形補間フィルタが使用される。別の重要な効果は、2サンプルの探索範囲をもつ双線形フィルタを使用することによって、DMVRが普通の動き補償プロセスと比較してより多くの参照サンプルにアクセスしないということである。改良されたMVがDMVR探索プロセスを用いて得られた後、最終的な予測を生成するために普通の8タップ補間フィルタが適用される。普通のMCプロセスより多くの参照サンプルにアクセスしないようにするために、元のMVに基づく補間プロセスのために必要とされないが、改良されたMVに基づく補間プロセスのために必要とされるサンプルが、それらの利用可能なサンプルからパディングされ得る。
ビデオエンコーダ200およびビデオデコーダ300は、1つまたは複数の有効化条件を実装するように構成され得る。一例では、以下の条件がすべて満たされる場合、ビデオエンコーダ200およびビデオデコーダ300はDMVRを有効にし得る。
・双予測MVを用いるCUレベルマージモード
・現在のピクチャに対して、一方の参照ピクチャは過去にあり、別の参照ピクチャは未来にある
・両方の参照ピクチャから現在のピクチャまでの距離(すなわちPOC差分)が同じである
・CUが64個より多くのルーマサンプルを有する
・CUの高さとCUの幅の両方が8ルーマサンプル以上である
・BCW重みインデックスが等しい重みを示す
・加重予測(WP)が現在のブロックに対して有効にされない
・合成イントラインター予測(CIIP)モードが現在のブロックのために使用されない
図10は、動きベクトル差分を用いたマージモード(MMVD)を示す概念図である。ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル差分を用いたマージモード(MMVD)を実装するように構成され得る。MMVDは、マージモードの動きフィールドを改良するために追加の動きベクトル差分を明確にシグナリングすることを許容するマージモードである。MMVDフラグは、MMVDモードがCUのために使用されるかどうかを示すために、スキップフラグ、マージフラグ、および通常マージフラグを送信した直後にシグナリングされ得る。MMVDでは、マージ候補が選択された後、それは、シグナリングされたMVD情報によってさらに改良される。さらなる情報は、マージ候補フラグ、動きの大きさを指定するためのインデックス、および動きの方向の指示のためのインデックスを含む。MMVDモードでは、マージリストの中の最初の2つの候補のための情報が、MVの基礎として使用されるものとして選択される。マージ候補フラグは、どの候補が使用されるかを指定するためにシグナリングされる。
図10は、それぞれのリスト0(L0)参照180およびリスト1(L1)参照182内のMMVD探索点の例を示す。距離インデックスは動きの大きさの情報を指定し、開始点からの事前定義されたオフセットを示す。図10に示されるように、開始MVの水平成分または垂直成分のいずれかにオフセットが加えられる。距離インデックスとあらかじめ定められたオフセットとの関係は2idx-2として定義され、idxは0から7にわたる整数である。ピクチャヘッダシンタックス(たとえば、pic_fpel_mmvd_enabled_flag)が有効に設定されるとき、インデックスとオフセットのマッピングが2idxとなるように変更され得ることに留意されたい。
方向インデックスは、開始点に対するMVDの方向を表す。方向インデックスは、以下の表に示されるように、4つの方向を表すことができ、00、01、10、および11はそれぞれ、右、左、上、および下を表す。MVD符号の意味は、開始MVの情報に従って様々であり得ることに留意されたい。開始MVが、単予測MV、または両方のリストが現在のピクチャの同じ側を指し示す双予測MVである(すなわち、2つの参照のPOCが両方とも、現在のピクチャのPOCよりも大きいか、または両方とも現在のピクチャのPOCよりも小さい)とき、以下表の中の符号は、開始MVに加えられるMVオフセットの符号を指定する。開始MVが、2つのMVが現在のピクチャの異なる側を指し示す双予測MVである(すなわち、一方の参照のPOCが現在のピクチャのPOCよりも大きく、他方の参照のPOCが現在のピクチャのPOCよりも小さい)とき、以下の表の中の符号は、開始MVのlist0 MV成分に加えられるMVオフセットの符号を指定し、list1 MVのための符号は反対の値を有する。
従来のTM技法の処理手順は、ハードウェア復号設計に余計な負荷をもたらすことがあり、それは、従来の技法が小数-pel探索の実行を必要とするからである。したがって、従来のTM技法では、追加の補間において、TMコストを計算するために余計な復号レイテンシを伴って探索エリアのサンプルを生成することが避けられない。モデルベースの小数-pel MV改良方法が、小数-pel補間を避けるためにVVCにおいて導入された。モデルベースの小数-pel MV改良方法は、TMのMV改良プロセスの間に必要とされるMVD精度の各レベルのための補間を実行する必要性を減らすために、TMと組み合わせることができる。したがって、より複雑さの低いデコーダ設計が期待され得る。
本開示は、テンプレート照合、バイラテラル照合、デコーダ側動きベクトル改良、モデルベースの動きベクトル差分導出などを含む、様々なデコーダ側動きベクトル導出/改良技法の性能を改善し得る様々な技法を説明する。ビデオエンコーダ200およびビデオデコーダ300は、単独でまたは任意の組合せで、本開示の技法の実行するように構成され得る。
一例では、ビデオエンコーダ200およびビデオデコーダ300は、モデルベースの小数ピクセル(小数-pel)動きベクトル改良をテンプレート照合(TM)に対して実行するように構成され得る。最初に、ビデオエンコーダ200およびビデオデコーダ300は、初期MV(vx,vy)の周りのあらかじめ定められた探索範囲[±SRx,±SRy]に対して整数MVD精度でTM探索プロセスを開始してもよく、SRxおよびSRyは整数値である。一般性を失うことなく、本開示は、(vx,vy)が最高のMV記憶精度(たとえば、VVCでは16、HEVCでは4)で表され、SRxおよびSRyはすでに、最高のMV記憶精度に従ってスケーリングされている。TMの探索プロセスが完了するとき、探索範囲内の最低のテンプレート照合誤差(たとえば、SAD、SSE、MRSAD、MRSSE、SSIM、MS-SSIM)はE0,0と表記され、左/右/上/下におけるそれぞれの隣接点(すなわち、それらのすべてが中心の1ピクセル隣に位置する)のテンプレート照合誤差は、E-1,0、E1,0、E0,-1、およびE0,1と表記される。
簡潔にするために、E0,0に関連する動きベクトルが(vx', vy')と表記され、|(vx',vy')-(vx,vy)|≦(SRx,SRy)である。次いで、上で論じられたように、ビデオエンコーダ200およびビデオデコーダ300は、(Δx, Δy)を導出するためのモデルベースの小数-pel MV改良方法への入力として、誤差値(E0,0、E-1,0、E1,0、E0,-1およびE0,1)を設定し、TMの得られる動きベクトルは(vx'+Δx, vy'+Δy)になる。同様に、たとえば、上で論じられた条件の少なくとも1つが満たされる場合(以下に再び記される)、(Δx,Δy)は0ベクトルであり得る。
|vx'-vx|がSRxに等しい、
|vy'-vy|がSRyに等しい、
E0,0が0に等しい。
説明を簡単にするために、本開示は、適応動きベクトル分解能(AMVR)モードによって指定される必要なスケーリング係数が、(Δx,Δy)を加算される前に、すでに(vx',vy')に適用されていると仮定する。
一例では、モデルベースの小数-pel MV改良方法を、次のように、MV(vx',vy')の一方向だけを改良するために適用できるように、前述の条件を変更することができる。
E0,0≠0かつ|vx'-vx|<SRxである場合、ΔxをE0,0、E-1,0、およびE1,0に基づいて導出することができる。そうではなく、E0,0=0または|vx'-vx|≧SRxである場合、Δxは0に等しく設定される。
E0,0≠0かつ|vy'-vy|<SRyである場合、ΔyをE0,0、E0,-1、およびE0,1に基づいて導出することができる。そうではなく、E0,0=0または|vy'-vy|≧SRyである場合、Δyは0に等しく設定される。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、モデルベースの小数-pel MV改良のための追加の有効化条件を用いて構成され得る。たとえば、ビデオエンコーダ200およびビデオデコーダ300は、上で論じられた条件に加えて、追加の条件を用いて、モデルベースの小数-pel MV改良を有効または無効にするように構成され得る。有効化/無効化条件は、以下のいずれかであり得る。
・TMの初期MVがバイラテラル照合またはDMVRによって改良されている、
・TMの得られたMVがバイラテラル照合またはDMVRによってさらに改良される、
・バイラテラル照合またはDMVRの有効化条件が満たされている、すなわち以下の各々が真である:
○双予測MVを用いるCUレベルマージモード
○現在のピクチャに対して、一方の参照ピクチャは過去にあり、別の参照ピクチャは未来にある
○両方の参照ピクチャから現在のピクチャまでの距離(すなわちPOC差分)が同じである
○CUが64個より多くのルーマサンプルを有する
○CUの高さとCUの幅の両方が8ルーマサンプル以上である
○BCW重みインデックスが等しい重みを示す
○加重予測(WP)が現在のブロックに対して有効にされない
○合成イントラインター予測(CIIP)モードが現在のブロックのために使用されない
代替として、有効化/無効化条件は次のようであってもよい。
・TMの初期MVがバイラテラル照合またはDMVRによって改良されない、
・TMの得られたMVがバイラテラル照合またはDMVRによってさらに改良されない、
・バイラテラル照合またはDMVRの有効化条件が満たされない、すなわち以下の少なくとも1つが真ではない:
○双予測MVを用いるCUレベルマージモード
○現在のピクチャに対して、一方の参照ピクチャは過去にあり、別の参照ピクチャは未来にある
○両方の参照ピクチャから現在のピクチャまでの距離(すなわちPOC差分)が同じである
○CUが64個より多くのルーマサンプルを有する
○CUの高さとCUの幅の両方が8ルーマサンプル以上である
○BCW重みインデックスが等しい重みを示す
○加重予測(WP)が現在のブロックに対して有効にされない
○合成イントラインター予測(CIIP)モードが現在のブロックのために使用されない
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、AMVRモードまたは1/2-pel補間フィルタ(これはAMVRモードが1/2-pel精度であるときに使用されるのと同じフィルタである)の使用に従って適応的に定義されるα項を調整し得る。たとえば、次の通りである。
・AMVRモードがfull-pel、2-pel、4-pel、またはそれ未満(すなわち、4-pelを超える)であるとき、モデルベースの小数-pel MV改良方法は適用されず、またはα項は0または1に等しく設定される。
AMVRモードが1/2-pelであるとき、または1/2-pel補間フィルタが使用されるとき、α項は2に等しく設定される。
AMVRモードが1/4-pelであるとき、α項は4に等しく設定される。
AMVRモードが1/8-pelであるとき、α項は8に等しく設定される。
AMVRモードが1/16-pelであるとき、α項は16に等しく設定される。
AMVRが1/N-pelであるとき(Nは32、64、128、またはそれより大きい)、α項はNに等しく設定される。
本開示は、(vx,vy)が最高のMV記憶精度(たとえば、VVCでは16、HEVCでは4)で表されると仮定するので、モデル出力(Δx,Δy)はα項の値に従って調整される必要がある。α≦16である場合、モデル出力は以下になる。
Δx=s*floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))
Δy=s*floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))
ここでs=16/αである。α>16である他の場合には、MV記憶精度は16より高くなければならず、モデル出力のスケーリング係数sはM/αであり、Mは(vx,vy)のMV記憶精度であり、M≧Nである。
別の例では、α項は、1/2-pel補間フィルタの使用とは無関係に、16(またはMV記憶精度に従った最高の値、たとえばVVCでは16、HEVCでは4)に等しく設定される。次いで、(vx'+Δx, vy'+Δy)である、TMの得られるMVは、AMVRモードによって示されるMV精度に丸められる。
別の例では、α項は、AMVRモードの使用とは無関係に、16(またはMV記憶精度に従った最高の値、たとえばVVCでは16、HEVCでは4)に等しく設定される。次いで、(vx'+Δx, vy'+Δy)である、TMの得られるMVは、AMVRモードによって示されるMV精度に丸められる。
2020年12月29日に出願された米国仮出願第63/131,676号のいくつかの技法が、以下で論じられるような本開示のモデルベースの小数-pel MV改良技法と組み合わせられてもよい。本明細書で開示されるように、TM探索精度はAMVRモードに従って変動し得る。たとえば、AMVRモードが1/4-pelであるとき、ビデオエンコーダ200およびビデオデコーダ300は、full-pel MVD精度でTM探索プロセスを開始し、続いて1/2-pel MVD精度で行い、1/4-pel MVD精度で止めてもよい。この例では、TMは、簡略化の観点で、AMVRモードによって示される最高のMVD精度に向かって探索しない。いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、以下を実行するように構成され得る。
・AMVRモードが1/2-pelであるとき、TMはfull-pel MVD精度で開始して停止し、次いで、α=2、s=8、および{E0,0, E-1,0, E1,0, E0,-1, E0,1}として、モデルベースの方法が適用される。
・AMVRモードが1/4-pelであるとき、TMはfull-pelで開始して停止することができ、次いで、α=4、s=4、および{E0,0, E-1,0, E1,0, E0,-1, E0,1}として、モデルベースの方法が適用される。
・AMVRモードが1/4-pelであるとき、TMはfull-pelで開始して1/2-pelで停止することができ、次いで、α=2、s=4としてモデルベースの方法が適用され、{E0,0, E-1,0, E1,0, E0,-1, E0,1}は{E0,0, E-0.5,0, E0.5,0, E0,-0.5, E0,0.5}を使用することで置き換えられる。
・AMVRモードが1/16-pelであるとき、TMはfull-pelで開始して停止することができ、次いで、α=16、s=1、および{E0,0, E-1,0, E1,0, E0,-1, E0,1}として、モデルベースの方法が適用される。
・AMVRモードが1/16-pelであるとき、TMはfull-pelで開始して1/2-pelで停止することができ、次いで、α=8、s=1としてモデルベースの方法が適用され、{E0,0, E-1,0, E1,0, E0,-1, E0,1}は{E0,0, E-0.5,0, E0.5,0, E0,-0.5, E0,0.5}を使用することで置き換えられる。
・AMVRモードが1/16-pelであるとき、TMはfull-pelで開始し、続いて1/2-pelで行われ、1/4-pelで停止することができ、次いで、α=4、s=1としてモデルベースの方法が適用され、{E0,0, E-1,0, E1,0, E0,-1, E0,1}は{E0,0, E-0.25,0, E0.25,0, E0,-0.25, E0,0.25}を使用することで置き換えられる。
・AMVRモードが1/16-pelであるとき、TMはfull-pelで開始し、続いて順番に1/2-pelおよび1/4-pelで行われ、1/8-pelで停止することができ、次いで、α=2、s=1としてモデルベースの方法が適用され、{E0,0, E-1,0, E1,0, E0,-1, E0,1}は{E0,0, E-0.125,0, E0.125,0, E0,-0.125, E0,0.125}を使用することで置き換えられる。
様々な例では、4つの隣接点が常に中心の周りに1ピクセルの距離をおいて位置するとは限らず、それは、ビデオエンコーダ200およびビデオデコーダ300は、full-pel MVD精度を超えるより高いMVD精度でTM探索を実行するように構成され得るからである。その距離は、AMVRモードに従って1ピクセル未満であり得る。たとえば、AMVRモードが1/2-pelであるとき、{E0,0, E-1,0, E1,0, E0,-1, E0,1}は、{E0,0, E-0.5,0, E0.5,0, E0,-0.5, E0,0.5}を使用することで置き換えられ得る。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、AMVRモードとは無関係にfull-pel精度のみでTM探索を実行し、α=16、s=1、および{E0,0, E-1,0, E1,0, E0,-1, E0,1}としてモデルベースの方法を適用する。次いで、得られるMVは、AMVRモードによって示されるMV精度に丸められる。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、AMVRモードとは無関係にfull-pel精度および1/2-pel精度でTM探索を実行し、α=8、s=1、および{E0,0, E-0.5,0, E0.5,0, E0,-0.5, E0,0.5}としてモデルベースの方法を適用する。次いで、得られるMVは、AMVRモードによって示されるMV精度に丸められる。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、AMVRモードとは無関係にfull-pel精度、1/2-pel精度、および1/4-pel精度でTM探索を実行し、α=4、s=1、および{E0,0, E-0.25,0, E0.25,0, E0,-0.25, E0,0.25}としてモデルベースの方法を適用する。次いで、得られるMVは、AMVRモードによって示されるMV精度に丸められる。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、AMVRモードとは無関係にfull-pel精度、1/2-pel精度、1/4-pel精度、および1/8-pel精度でTM探索を実行し、α=2、s=1、および{E0,0, E-0.125,0, E0.125,0, E0,-0.125, E0,0.125}としてモデルベースの方法を適用する。次いで、得られるMVは、AMVRモードによって示されるMV精度に丸められる。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、full-pel精度および1/2-pel精度でTM探索を実行し、α=8、s=2、および{E0,0, E-0.5,0, E0.5,0, E0,-0.5, E0,0.5}としてモデルベースの方法を適用する。次いで、得られるMVは、AMVRモードによって示されるMV精度に丸められる。
ビデオエンコーダ200およびビデオデコーダ300は、双予測されるTMマージモードのための簡略化された探索プロセスを実行するように構成され得る。いくつかの例では、双予測ブロックのためのTMマージモードは、(1)TMによって実行されるMV改良のためにMVの1つを選択し、(2)次いで改良されたMVがBCW重み値を用いて他のMVをさらに改良するためのpriorとして設定されるという、二重のプロセスになる。次のように、双予測ブロックから1つのMVを選ぶためにステップ1に対して定められ得る、いくつかのルールがある。
・参照ピクチャリストLxに関連するMV、xは0または1のいずれかであり得る。
・参照ピクチャリストLxに関連するMV、ph_mvd_l1_zero_flag=trueであるとき、xは1に等しく設定される。(ph_mvd_l1_zero_flagは、様々なビデオ規格において異なるように名付けられることがあるが、その機能は同じままであり、すなわち、MVDL1を0にしてMVDL1のためのシンタックスシグナリングを飛ばすことであることに留意されたい)。
・参照ピクチャリストLxに関連するMV、ph_mvd_l1_zero_flag=falseであるときxは1に等しく設定される。
・参照ピクチャリストLxに関連するMV、xはMV L0およびMVL1のそれぞれのTMコストに応じて0または1のいずれかであり得る。
・MVL0のTMコストがより低い場合、xは0に等しく設定され、そうではない場合、1に等しく設定される。
・参照ピクチャリストLxに関連するMV、xはMV L0およびMVL1のそれぞれのTMコストに応じて0または1のいずれかであり得る。
・MVL0のTMコストがより低い場合、xは1に等しく設定され、そうではない場合、0に等しく設定される。
いくつかの例では、現在のブロックが双予測されるとき、MVの1つが、BCW重み値を用いて他のMVをさらに改良するためのpriorとして(上で定められた方法の1つに従って)選択される。
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、TMマージモードのために制約された探索範囲を使用するように構成され得る。たとえば、TMマージモードの前にバイラテラル照合(BM)モードを実行するとき、ビデオエンコーダ200およびビデオデコーダ300は、BMの初期MVの周りの同じ探索範囲内でBM改良されたMVをさらに改良するためにTMを使用するように構成され得る。したがって、TMとBMの両方が、参照ピクチャからフェッチされた同じ参照サンプルを共有することができる。同様に、TMがBMの前に実行されるとき、BMは、TMの初期MVの周りの同じ探索範囲内のTM改良されたMVをさらに改良するために使用され得る。したがって、TMとBMの両方が、参照ピクチャからフェッチされた同じ参照サンプルを共有することができる。
いくつかの例では、TMおよびBMは、TMがBMの前に実行されるような、またはBMがTMの前に実行されるような、連鎖的プロセスを形成し得る。どちらが最初に来るかにかかわらず、この探索プロセスは、同じ探索範囲内に制約されるだけではなく、整数MVD精度だけにも制限され得る。小数-pel MV改良は、TMまたはBMのうちで連鎖的プロセスの最後に実行されたものの段階においてのみ実行され得る。たとえば、ビデオエンコーダ200およびビデオデコーダ300は、{BM -> TM ->サブブロックBM}という連鎖的プロセスで構成されてもよく、小数-pel MV改良はサブブロックBMの段階においてのみ実行されるが、他は整数MVD精度でのみ実行される。サブブロックBMが無効にされ得る別の例では、小数-pel MV改良はTMの段階においてのみ実行されるが、他は整数MVD精度でのみ実行される。
いくつかの例では、AMVRモードが4-pelであるとき、ビデオエンコーダ200およびビデオデコーダ300は、TM AMVPモードを無効にし得る。「無効にされる」とは、テンプレート照合が、AMVP候補を改良するために適用されず、AMVP候補を選択するためにも使用されないことを意味し得るので、AMVPモードは、変更なしでVVCまたはHEVCに同じように実行される。いくつかの例では、AMVRモードが2-pel以下であるとき(たとえば、4-pelまたはそれより多くのpel)、ビデオエンコーダ200およびビデオデコーダ300は、TM AMVPモードを無効にし得る。
図11は、本開示の技法を実行し得る例示的なビデオエンコーダ200を示すブロック図である。図11は、説明のために提供され、本開示において広く例示され説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、ITU-T H.265/HEVCビデオコーディング規格および開発中のVVCビデオコーディング規格などのビデオコーディング規格の文脈でビデオエンコーダ200を説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、全般に他のビデオ符号化および復号規格に適用可能である。
図11の例では、ビデオエンコーダ200は、ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、フィルタユニット216、復号ピクチャバッファ(DPB)218、およびエントロピー符号化ユニット220を含む。ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、フィルタユニット216、DPB218、およびエントロピー符号化ユニット220のいずれかまたはすべてが、1つもしくは複数のプロセッサにおいてまたは処理回路において実装され得る。たとえば、ビデオエンコーダ200のユニットは、ハードウェア回路の一部としての1つもしくは複数の回路もしくは論理要素として、またはプロセッサ、ASIC、もしくはFPGAの一部として実装され得る。さらに、ビデオエンコーダ200は、これらおよび他の機能を実行するための追加または代替のプロセッサまたは処理回路を含み得る。
ビデオデータメモリ230は、ビデオエンコーダ200のコンポーネントによって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、ビデオデータメモリ230に記憶されたビデオデータを、たとえば、ビデオソース104(図1)から受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する、参照ピクチャメモリとして作動し得る。ビデオデータメモリ230およびDPB218は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、示されるように、ビデオエンコーダ200の他のコンポーネントとともにオンチップであってもよく、またはそれらのコンポーネントに対してオフチップであってもよい。
本開示では、ビデオデータメモリ230への言及は、そのように別段記述されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または、そのように別段記述されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。むしろ、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべき現在のブロックに対するビデオデータ)を記憶する参照メモリとして理解されるべきである。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的な記憶を行い得る。
図11の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解するのを助けるために示されている。ユニットは、固定機能の回路、プログラム可能回路、またはこれらの組合せとして実装され得る。固定機能の回路は、特定の機能を提供する回路を指し、実行され得る動作があらかじめ設定される。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。たとえば、プログラム可能回路は、ソフトウェアまたはファームウェアの命令によって定義される方式で、プログラム可能回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能の回路は、(たとえば、パラメータを受信するために、またはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能の回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットの1つまたは複数は、別個の回路ブロック(固定機能またはプログラム可能)であってもよく、いくつかの例では、1つまたは複数のユニットは集積回路であってもよい。
ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/または、プログラム可能回路から形成されるプログラム可能コアを含み得る。プログラム可能回路によって実行されるソフトウェアを使用してビデオエンコーダ200の動作が実行される例では、メモリ106(図1)が、ビデオエンコーダ200が受信して実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶してもよく、または、ビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶してもよい。
ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204およびモード選択ユニット202に提供し得る。ビデオデータメモリ230の中のビデオデータは、符号化されるべき生のビデオデータであり得る。
モード選択ユニット202は、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226を含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、イントラブロックコピーユニット(これは、動き推定ユニット222および/または動き補償ユニット224の一部であり得る)、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
モード選択ユニット202は一般に、複数の符号化パスを協調させて、符号化パラメータの組合せと、そのような組合せに対して得られるレート歪み値を試験する。符号化パラメータは、CUへのCTUの区分、CUに対する予測モード、CUの残差データに対する変換タイプ、CUの残差データに対する量子化パラメータなどを含み得る。モード選択ユニット202は最終的に、他の試験された組合せより良いレート歪み値を有する符号化パラメータの組合せを選択し得る。
ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内に1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、QTBT構造または上で説明されたHEVCの四分木構造などの、木構造に従ってピクチャのCTUを区分し得る。上で説明されたように、ビデオエンコーダ200は、木構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、一般に「ビデオブロック」または「ブロック」とも呼ばれ得る。
一般に、モード選択ユニット202はまた、現在のブロック(たとえば、現在のCU、またはHEVCでは、PUおよびTUの重複部分)に対する予測ブロックを生成するように、そのコンポーネント(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在のブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前にコーディングされたピクチャ)の中の1つまたは複数のよく一致する参照ブロックを特定するために、動き探索を実行し得る。具体的には、動き推定ユニット222は、たとえば、絶対差分和(SAD)、二乗差分和(SSD)、平均絶対差(MAD)、平均二乗差(MSD)などに従って、潜在的な参照ブロックが現在のブロックとどれだけ類似しているかを表す値を計算し得る。動き推定ユニット222は一般に、現在のブロックと検討されている参照ブロックとの間のサンプルごとの差を使用して、これらの計算を実行し得る。動き推定ユニット222は、現在のブロックと最もよく一致する参照ブロックを示す、これらの計算に起因する最低の値を有する参照ブロックを特定し得る。
動き推定ユニット222は、現在のピクチャの中の現在のブロックの位置に対する相対的な参照ピクチャの中の参照ブロックの位置を定義する、1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向のインター予測のために、動き推定ユニット222は単一の動きベクトルを提供してもよく、一方、双方向インター予測のために、動き推定ユニット222は2つの動きベクトルを提供してもよい。動き補償ユニット224は次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが小数サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って、予測ブロックに対する値を補間し得る。その上、双方向インター予測のために、動き補償ユニット224は、それぞれの動きベクトルによって特定される2つの参照ブロックに対するデータを取り出し、たとえば、サンプルごとの平均または荷重平均を通じて、取り出されたデータを組み合わせ得る。
その上、動き補償ユニット224は、任意の組合せで、本開示の技法のいずれかまたはすべてに従って、デコーダ側動きベクトル改良/導出技法を実行するように構成され得る。たとえば、動き補償ユニット224は、動き推定ユニット222からこれらの技法を使用して最初に受信されるフルピクセル分解能の動きベクトルを改良するために、テンプレート照合およびモデルベースの小数ピクセル動きベクトル改良を実行し得る。
たとえば、動き補償ユニット224は、動き推定ユニット222から初期動きベクトルを受信し得る。初期動きベクトルは、完全整数ピクセル分解能を有し得る。動き補償ユニット224およびエントロピー符号化ユニット220は、完全整数ピクセル精度を有する動きベクトル差分(MVD)値を使用した高度動きベクトル予測(AMVP)を使用して、初期動きベクトルを符号化し得る。動き補償ユニット224はさらに、初期動きベクトルを改良してもよく、これはたとえば、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲の決定を含む。動き補償ユニット224は次いで、最良の一致する領域を特定するために、探索範囲においてテンプレート照合探索プロセスを実行し得る。最良の一致する領域は、最低のレート歪み最適化(RDO)値を生み出す領域であり得る。RDO値は、たとえば、絶対差分値の合計、二乗差分値の合計、平均絶対差分値、平均二乗差分値などを使用して計算され得る。
最良の一致する領域を決定することを通じて、動き補償ユニット224は、整数精度の改良された動きベクトルを取得し得る。動き補償ユニット224は次いで、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値(たとえば、x(水平)および/またはy(垂直)成分動きベクトル差分値)を導出するために、最良の一致する領域の中の隣接ピクセルに対する誤差値をさらに決定し得る。動き補償ユニット224はさらに、動きベクトル差分値の少なくとも1つを初期動きベクトルに適用して、現在のブロックのための改良された動きベクトルを決定し得る。改良された動きベクトルは、小数ピクセル精度を有し得る。動き補償ユニット224は次いで、改良された動きベクトルを使用して、予測ブロックを生成し、予測ブロックを残差生成ユニット204および再構築ユニット214に提供し得る。
具体的には、動きベクトル差分成分の各々に対して、動き補償ユニット224は、最良の一致する領域に対する誤差値が0に等しいかどうかを決定し得る。動き補償ユニット224は次いで、初期動きベクトルのある成分とその成分のための対応する動きベクトル差分値との差の絶対値が、その成分のための対応する探索領域値未満であるとさらに決定した後、その成分のための動きベクトル差分値を初期動きベクトルのその成分に適用し得る。
上で述べられたように、動き補償ユニット224(または動き選択ユニット202)はまた、本開示の動きベクトル改良技法を実行するかどうかを決定し得る。たとえば、モード選択ユニット202または動き補償ユニット224は、初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW: bi-prediction with CU-level weight)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々を決定し、それに応答して、動きベクトル改良技法を決定し得る。
いくつかの例では、現在のブロックが双予測される場合、動き補償ユニット224は、現在のブロックの両方の動きベクトルのためにこれらの動きベクトル改良技法を実行し得る。
別の例として、イントラ予測またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在のブロックに隣接するサンプルから予測ブロックを生成し得る。たとえば、指向性モードでは、イントラ予測ユニット226は一般に、隣接するサンプルの値を数学的に組み合わせて、現在のブロックにわたって定められた方向においてこれらの計算された値を埋めて、予測ブロックを生み出し得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在のブロックに隣接するサンプルの平均を計算し、予測ブロックの各サンプルに対するこの得られた平均を含むように予測ブロックを生成し得る。
モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230からの現在のブロックおよびモード選択ユニット202からの予測ブロックの生のコーディングされていないバージョンを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとのサンプルごとの差を計算する。得られるサンプルごとの差は、現在のブロックに対する残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルス符号変調(RDPCM: residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロックの中のサンプル値間の差を決定し得る。いくつかの例では、残差生成ユニット204は、二進減算を実行する1つまたは複数の減算器回路を使用して形成され得る。
モード選択ユニット202がCUをPUへと区分する例では、各PUは、ルーマ予測ユニットおよび対応するクロマ予測ユニットと関連付けられ得る。ビデオエンコーダ200およびビデオデコーダ300は、様々なサイズを有するPUをサポートし得る。上で示されたように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ユニットのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測に対して2N×2NまたはN×NというPUサイズ、およびインター予測に対して2N×2N、2N×N、N×2N、N×N、または類似の対称的なPUサイズをサポートし得る。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測に対して、2N×nU、2N×nD、nL×2N、およびnR×2NというPUサイズのための非対称区分をサポートし得る。
モード選択ユニット202がCUをPUにさらに区分しない例では、各CUはルーマコーディングブロックおよび対応するクロマコーディングブロックと関連付けられてもよい。上のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがある。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、またはN×2NというCUサイズをサポートし得る。
いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法では、モード選択ユニット202は、コーディング技法に関連するそれぞれのユニットを介して、符号化されている現在のブロックに対する予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は、予測ブロックを生成しなくてもよく、代わりに、選択されたパレットに基づいてブロックを再構築する方式を示すシンタックス要素を生成してもよい。そのようなモードでは、モード選択ユニット202は、符号化されるようにこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
上で説明されたように、残差生成ユニット204は、現在のブロックおよび対応する予測ブロックに対するビデオデータを受信する。残差生成ユニット204は次いで、現在のブロックのための残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在のブロックとのサンプルごとの差を計算する。
変換処理ユニット206は、1つまたは複数の変換を残差ブロックに適用して、変換係数のブロック(「変換係数ブロック」と本明細書で呼ばれる)を生成する。変換処理ユニット206は、残差ブロックに様々な変換を適用して、変換係数ブロックを形成し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または概念的に類似の変換を、残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、複数の変換、たとえば、回転変換などの一次変換および二次変換を残差ブロックに対して実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
量子化ユニット208は、変換係数ブロックの中の変換係数を量子化して、量子化された変換係数ブロックを生成し得る。量子化ユニット208は、現在のブロックと関連付けられる量子化パラメータ(QP)値に従って、変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUと関連付けられるQP値を調整することによって、現在のブロックと関連付けられる変換係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらすことがあり、したがって、量子化された変換係数は、変換処理ユニット206によって生成される元の変換係数より精度が低いことがある。
逆量子化ユニット210および逆変換処理ユニット212は、それぞれ、量子化された変換係数ブロックに逆量子化および逆変換を適用して、変換係数ブロックから残差ブロックを再構築し得る。再構築ユニット214は、モード選択ユニット202によって生成される再構築された残差ブロックおよび予測ブロックに基づいて、(ある程度の歪みを伴う可能性があるが)現在のブロックに対応する再構築されたブロックを生成し得る。たとえば、再構築ユニット214は、モード選択ユニット202によって生成される予測ブロックからの対応するサンプルに再構築された残差ブロックのサンプルを加算して、再構築されたブロックを生成し得る。
フィルタユニット216は、再構築されたブロックに対して1回または複数回のフィルタ動作を実行し得る。たとえば、フィルタユニット216は、CUの端部に沿ったブロッキネスアーティファクトを減らすために、デブロッキング動作を実行し得る。いくつかの例では、フィルタユニット216の動作はスキップされ得る。
ビデオエンコーダ200は、DPB218に再構築されたブロックを記憶する。たとえば、フィルタユニット216の動作が必要とされない例では、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタリングされた再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222および動き補償ユニット224は、後で符号化されるピクチャのブロックをインター予測するために、再構築された(および場合によってはフィルタリングされた)ブロックから形成される、DPB218から参照ピクチャを取り出し得る。加えて、イントラ予測ユニット226は、現在のピクチャの中の他のブロックをイントラ予測するために、現在のピクチャのDPB218の中の再構築されたブロックを使用し得る。
一般に、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能コンポーネントから受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、1つまたは複数のエントロピー符号化動作を、ビデオデータの別の例であるシンタックス要素に対して実行して、エントロピー符号化されたデータを生成し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応可変長コーディング(CAVLC)動作、CABAC動作、可変長-可変長(V2V)コーディング動作、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行することができる。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。具体的には、エントロピー符号化ユニット220がビットストリームを出力し得る。
上で説明された動作は、ブロックに関して説明される。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)および参照ピクチャを特定するための動作が、クロマブロックのためのMVおよび参照ピクチャを特定するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされてもよく、参照ピクチャは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックについて同じであってもよい。
こうして、図11のビデオエンコーダ200は、ビデオデータを記憶するように構成されるメモリと、回路で実装される1つまたは複数のプロセッサとを含む、ビデオデータを符号化して復号するためのデバイスの例を表し、1つまたは複数のプロセッサは、ビデオデータの現在のブロックのための初期動きベクトルを決定し、初期動きベクトルが整数動きベクトル差分(MVD)精度を有し、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定し、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行し、最良の一致する領域に対する隣接ピクセルの誤差値を決定し、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用し、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用し、改良された動きベクトルを使用して現在のブロックを復号するように構成される。
図12は、本開示の技法を実行し得る例示的なビデオデコーダ300を示すブロック図である。図12は説明のために提供され、本開示において広く例示され説明されるような技法を限定するものではない。説明のために、本開示は、VVCおよびHEVC(ITU-T H.265)の技法によるビデオデコーダ300を説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に従って構成されたビデオコーディングデバイスによって実行され得る。
図12の例では、ビデオデコーダ300は、コーディングピクチャバッファ(CPB)メモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、フィルタユニット312、および復号ピクチャバッファ(DPB)314を含む。CPBメモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、フィルタユニット312、およびDPB314のいずれかまたはすべてが、1つもしくは複数のプロセッサにおいてまたは処理回路において実装され得る。たとえば、ビデオデコーダ300のユニットは、ハードウェア回路の一部としての1つもしくは複数の回路もしくは論理要素として、またはプロセッサ、ASIC、もしくはFPGAの一部として実装され得る。さらに、ビデオデコーダ300は、これらおよび他の機能を実行するための追加または代替のプロセッサまたは処理回路を含み得る。
予測処理ユニット304は、動き補償ユニット316およびイントラ予測ユニット318を含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、イントラブロックコピーユニット(これは、動き補償ユニット316の一部を形成し得る)、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
CPBメモリ320は、ビデオデコーダ300のコンポーネントによって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPUメモリ320に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPUメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなどの、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は一般に復号されたピクチャを記憶し、ビデオデコーダ300は、符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するとき、参照ビデオデータとしてこの復号されたピクチャを出力および/または使用し得る。CPBメモリ320およびDPB314は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他のコンポーネントとともにオンチップであってよく、またはそれらのコンポーネントに対してオフチップであってよい。
追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320について上で論じられたようなデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部またはすべてがビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されるとき、ビデオデコーダ300によって実行されるべき命令を記憶してもよい。
図12に示される様々なユニットは、ビデオデコーダ300によって実行される動作を理解するのを助けるために示されている。ユニットは、固定機能の回路、プログラム可能回路、またはこれらの組合せとして実装され得る。図11と同様に、固定機能の回路は、特定の機能を提供する回路を指し、実行され得る動作があらかじめ設定されている。プログラム可能回路は、様々なタスクを実行して、実行され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る、回路を指す。たとえば、プログラム可能回路は、ソフトウェアまたはファームウェアの命令によって定義される方式で、プログラム可能回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能の回路は、(たとえば、パラメータを受信するために、またはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能の回路が実行する動作のタイプは、一般に不変である。いくつかの例では、1つまたは複数のユニットは、別個の回路ブロック(固定機能またはプログラム可能)であってもよく、いくつかの例では、1つまたは複数のユニットは集積回路であってもよい。
ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/または、プログラム可能回路から形成されるプログラム可能コアを含み得る。ビデオデコーダ300の動作がプログラム可能回路上で実行されるソフトウェアによって実行される例では、オンチップメモリまたはオフチップメモリは、ビデオデコーダ300が受信して実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、ビデオデータをエントロピー復号して、シンタックス要素を再生し得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、およびフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
一般に、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対する再構築動作を個別に実行し得る(ここで、現在再構築されている、すなわち復号されているブロックは、「現在のブロック」と呼ばれ得る)。
エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに、量子化パラメータ(QP)および/または変換モード指示などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックと関連付けられるQPを使用し得る。逆量子化ユニット306は、たとえば、ビットごとの左シフト演算を実行して、量子化された変換係数を逆量子化し得る。こうして、逆量子化ユニット306は、変換係数を含む変換係数ブロックを形成し得る。
逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、現在のブロックと関連付けられる残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を、変換係数ブロックに適用し得る。
さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って、予測ブロックを生成する。たとえば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそこから取り出すべきDPB314の中の参照ピクチャ、ならびに、現在のピクチャの中の現在のブロックの位置に対する相対的な参照ピクチャの中の参照ブロックの位置を特定する動きベクトルを示し得る。動き補償ユニット316は一般に、動き補償ユニット224(図11)に関して説明されるものと実質的に同様の方式で、インター予測処理を実行し得る。
さらに、本開示の技法によれば、動き補償ユニット316は、たとえば、テンプレート照合およびモデルベースの小数ピクセル動きベクトル改良を使用して、エントロピー復号ユニット302から受信される復号された動きベクトルを改良し得る。動き補償ユニット316は、デコーダ側動きベクトル改良/導出のための本開示の技法のいずれかまたはすべてを、単独でまたは任意の組合せで適用し得る。
その上、動き補償ユニット316は、任意の組合せで、本開示の技法のいずれかまたはすべてに従って、デコーダ側動きベクトル改良/導出技法を実行するように構成され得る。たとえば、動き補償ユニット316は、エントロピー復号ユニット302からこれらの技法を使用して最初に受信されるフルピクセル分解能の動きベクトルを改良するために、テンプレート照合およびモデルベースの小数ピクセル動きベクトル改良を実行し得る。
たとえば、動き補償ユニット316は、エントロピー復号ユニット302から初期動きベクトルを表すデータを受信し得る。初期動きベクトルは、完全整数ピクセル分解能を有し得る。動き補償ユニット316およびエントロピー復号ユニット302は、完全整数ピクセル精度を有する動きベクトル差分(MVD)値を使用した高度動きベクトル予測(AMVP)を使用して、初期動きベクトルを復号し得る。動き補償ユニット316はさらに、初期動きベクトルを改良してもよく、これはたとえば、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲の決定を含む。動き補償ユニット316は次いで、最良の一致領域を特定するために、探索範囲においてテンプレート照合探索プロセスを実行し得る。最良の一致する領域は、最低のレート歪み最適化(RDO)値を生み出す領域であり得る。RDO値は、たとえば、絶対差分値の合計、二乗差分値の合計、平均絶対差分値、平均二乗差分値などを使用して計算され得る。
最良の一致する領域を決定することを通じて、動き補償ユニット316は、整数精度の改良された動きベクトルを取得し得る。動き補償ユニット316は次いで、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値(たとえば、x(水平)および/またはy(垂直)成分動きベクトル差分値)を導出するために、最良の一致する領域の中の隣接ピクセルに対する誤差値をさらに決定し得る。動き補償ユニット316はさらに、動きベクトル差分値の少なくとも1つを初期動きベクトルに適用して、現在のブロックのための改良された動きベクトルを決定し得る。改良された動きベクトルは、小数ピクセル精度を有し得る。動き補償ユニット316は次いで、改良された動きベクトルを使用して、予測ブロックを生成し、予測ブロックを再構築ユニット310に提供し得る。
具体的には、動きベクトル差分成分の各々に対して、動き補償ユニット316は、最良の一致する領域に対する誤差値が0に等しいかどうかを決定し得る。動き補償ユニット316は次いで、初期動きベクトルのある成分とその成分のための対応する動きベクトル差分値との差の絶対値が、その成分のための対応する探索領域値未満であるとさらに決定した後、その成分のための動きベクトル差分値を初期動きベクトルのその成分に適用し得る。
上で述べられたように、動き補償ユニット316はまた、本開示の動きベクトル改良技法を実行するかどうかを決定し得る。たとえば、動き補償ユニット316は、初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャのための表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々を決定し、それに応答して、動きベクトル改良技法を決定し得る。
いくつかの例では、現在のブロックが双予測される場合、動き補償ユニット316は、現在のブロックのための両方の動きベクトルのためにこれらの動きベクトル改良技法を実行し得る。
別の例として、現在のブロックがイントラ予測されることを、予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って、予測ブロックを生成し得る。再び、イントラ予測ユニット318は一般に、イントラ予測ユニット226(図11)に関して説明されるものと実質的に同様の方式で、イントラ予測処理を実行し得る。イントラ予測ユニット318は、DPB314から、現在のブロックに隣接するサンプルのデータを取り出し得る。
再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在のブロックを再構築し得る。たとえば、再構築ユニット310は、予測ブロックの対応するサンプルに残差ブロックのサンプルを追加して、現在のブロックを再構築し得る。
フィルタユニット312は、再構築されたブロックに対して1回または複数回のフィルタ動作を実行し得る。たとえば、フィルタユニット312は、再構築されたブロックの端部に沿ったブロッキネスアーティファクトを減らすために、デブロッキング動作を実行し得る。すべての例において、フィルタユニット312の動作が実行されるとは限らない。
ビデオデコーダ300は、DPB314に再構築されたブロックを記憶し得る。たとえば、フィルタユニット312の動作が必要とされない例では、再構築ユニット310は再構築されたブロックをDPB314に記憶し得る。フィルタユニット312の動作が実行される例では、フィルタユニット312は、フィルタリングされた再構築されたブロックをDPB314に記憶し得る。上で論じられたように、DPB314は、イントラ予測のための現在のピクチャおよび以後の動き補償のための以前に復号されたピクチャのサンプルなどの参照情報を、予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、図1の表示デバイス118などの表示デバイス上に後で提示するために、DPB314から復号されたピクチャを出力し得る。
こうして、図12のビデオデコーダ300は、ビデオデータを記憶するように構成されるメモリと、回路で実装される1つまたは複数のプロセッサとを含む、ビデオデータを復号するためのデバイスの例を表し、1つまたは複数のプロセッサは、ビデオデータの現在のブロックのための初期動きベクトルを決定し、初期動きベクトルが整数動きベクトル差分(MVD)精度を有し、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定し、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行し、最良の一致する領域に対する隣接ピクセルの誤差値を決定し、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用し、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用し、改良された動きベクトルを使用して現在のブロックを復号するように構成される。
図13は、本開示の技法による、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオエンコーダ200(図1および図11)に関して説明されるが、他のデバイスが図13の方法と同様の方法を実行するように構成され得ることを理解されたい。
この例では、ビデオエンコーダ200は最初に、現在のブロックを予測する(350)。たとえば、ビデオエンコーダ200は、現在のブロックに対する予測ブロックを形成し得る。具体的には、ビデオエンコーダ200は、本開示の技法のいずれかまたはすべてを、単独でまたは任意の組合せで適用して、たとえば、モデルベースの動きベクトル差分導出およびテンプレート照合予測を使用して、デコーダ側動きベクトル導出/改良を実行し、改良された動きベクトルを形成し、次いで改良された動きベクトルを使用して予測ブロックを生成し得る。次いで、ビデオエンコーダ200は、現在のブロックに対する残差ブロックを算出し得る(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元のコーディングされていないブロックと現在のブロックに対する予測ブロックとの差を計算し得る。次いで、ビデオエンコーダ200は、残差ブロックの係数を変換して量子化し得る(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(356)。走査の間、または走査に続いて、ビデオエンコーダ200は、係数をエントロピー符号化し得る(358)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して係数を符号化し得る。次いで、ビデオエンコーダ200は、ブロックのエントロピー符号化されたデータを出力し得る(360)。
ビデオエンコーダ200はまた、現在のブロックを符号化した後に現在のブロックを復号して、現在のブロックの復号されたバージョンを、(たとえば、インター予測モードまたはイントラ予測モードにおける)後でコーディングされるデータのための参照データとして使用し得る。したがって、ビデオエンコーダ200は、係数を逆量子化および逆変換して、残差ブロックを再現し得る(362)。ビデオエンコーダ200は、残差ブロックを予測ブロックと合成して、復号されたブロックを形成し得る(364)。次いで、ビデオエンコーダ200は、復号されたブロックをDPB218に記憶し得る(366)。
こうして、図13の方法は、ビデオデータの現在のブロックのための初期動きベクトルを決定するステップであって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、ステップと、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するステップと、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行するステップと、最良の一致する領域に対する隣接ピクセルの誤差値を決定するステップと、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するステップと、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するステップと、改良された動きベクトルを使用して現在のブロックを復号するステップとを含む、ビデオデータを復号する方法の例を表す。図13の方法は、ビデオデータを符号化するそのような方法も表す。
図14は、本開示の技法による、現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオデコーダ300(図1および図12)に関して説明されるが、他のデバイスが図14の方法に類似の方法を実行するように構成され得ることを理解されたい。
ビデオデコーダ300は、エントロピー符号化された予測情報および現在のブロックに対応する残差ブロックの係数のためのエントロピー符号化されたデータなどの、現在のブロックのためのエントロピー符号化されたデータを受信し得る(370)。ビデオデコーダ300は、現在のブロックのための予測情報を決定するために、および残差ブロックの係数を再現するために、エントロピー符号化されたデータをエントロピー復号し得る(372)。ビデオデコーダ300は、現在のブロックに対する予測ブロックを計算するために、たとえば、現在のブロックに対する予測情報によって示されるようなインター予測モードを使用して、現在のブロックを予測し得る(374)。具体的には、ビデオデコーダ300は、本開示の技法のいずれかまたはすべてを、単独でまたは任意の組合せで適用して、たとえば、モデルベースの動きベクトル差分導出およびテンプレート照合予測を使用して、デコーダ側動きベクトル導出/改良を実行し、改良された動きベクトルを形成し、次いで改良された動きベクトルを使用して予測ブロックを生成し得る。次いで、ビデオデコーダ300は、量子化された変換係数のブロックを作り出すために、再現された係数を逆走査し得る(376)。次いで、ビデオデコーダ300は、量子化された変換係数を逆量子化し逆変換して、残差ブロックを生成し得る(378)。ビデオデコーダ300は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在のブロックを復号し得る(380)。
こうして、図14の方法は、ビデオデータの現在のブロックのための初期動きベクトルを決定するステップであって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、ステップと、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するステップと、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索処理を実行するステップと、最良の一致する領域に対する隣接ピクセルの誤差値を決定するステップと、モデルベースの小数ピクセル誤差ベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するステップと、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するステップと、改良された動きベクトルを使用して現在のブロックを復号するステップとを含む、ビデオデータを復号する方法の例を表す。
図15は、本開示の技法による、ビデオデータを符号化または復号する例示的な方法を示すフローチャートである。図15の方法は、図1および図12のビデオデコーダ300に関して説明される。図1および図11のビデオエンコーダ200などの他のデバイスはまた、この方法または同様の方法を実行するように構成され得る。
最初に、ビデオデコーダ300は、現在のブロックのための整数精度動きベクトル差分(MVD)値を有する初期動きベクトルを取得し得る(400)。ビデオデコーダ300は、初期動きベクトルを表すデータを復号し得る。いくつかの例では、ビデオデコーダ300は、バイラテラル照合を使用して動きベクトルを表す復号されたデータを改良してもよく、得られた動きベクトルは初期動きベクトルであってもよい。ビデオエンコーダ200が方法を実行する例では、ビデオエンコーダ200は、たとえば上で論じられたような動き推定ユニット222によって実行される、探索プロセスを通じて初期動きベクトルを取得し得る。
ビデオデコーダ300は次いで探索範囲を決定してもよく(402)、探索範囲は、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りにある。ビデオデコーダ300は次いで、最良の一致する領域を特定するために、探索範囲においてテンプレート照合探索プロセスを実行し得る(404)。
ビデオデコーダ300は次いで、最良の一致する領域に対する隣接ピクセルの誤差値を決定し得る(406)。ビデオデコーダ300は、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために誤差値を使用し得る(408)。ビデオデコーダ300は次いで、改良された動きベクトルを取得するために動きベクトル差分値を初期動きベクトルに適用し得る(410)。ビデオデコーダ300は次いで、改良された動きベクトルを使用して現在のブロックを復号し得る(412)。ビデオエンコーダ200が方法を実行する例では、ビデオエンコーダ200は、改良された動きベクトルを使用して現在のブロックの符号化と復号の両方を行い得る。
こうして、図15の方法は、ビデオデータの現在のブロックのための初期動きベクトルを決定するステップであって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、ステップと、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するステップと、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索処理を実行するステップと、最良の一致する領域に対する隣接ピクセルの誤差値を決定するステップと、モデルベースの小数ピクセル誤差ベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するステップと、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するステップと、改良された動きベクトルを使用して現在のブロックを復号するステップとを含む、ビデオデータを復号する方法の例を表す。
本開示の技法の様々な例が以下の条項において要約される。
条項1:ビデオデータを復号する方法であって、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号するステップであって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、ステップと、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するステップと、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行するステップと、最良の一致する領域に対する隣接ピクセルの誤差値を決定するステップと、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するステップと、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するステップと、改良された動きベクトルを使用して現在のブロックを復号するステップとを備える、方法。
条項2:動きベクトル差分値が、水平方向の動きベクトル差分値および垂直方向の動きベクトル差分値を含む、条項1の方法。
条項3:動きベクトル差分値の少なくとも1つを適用するステップが、動きベクトル差分値のすべてを適用するステップを備える、条項1および2のいずれかの方法。
条項4:動きベクトル差分値の少なくとも1つを適用するステップが、最良の一致する領域の誤差値が0に等しくないと決定するステップと、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値未満であると決定したことに応答して、その成分のための動きベクトル差分値をその成分に適用するステップとを備える、条項1および2のいずれかの方法。
条項5:動きベクトル差分値の少なくとも1つを適用するステップが、最良の一致する領域の誤差値が0に等しいこと、または、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値以上であることのうちの少なくとも1つを決定したことに応答して、その成分のための動きベクトル差分値をその成分に適用するのを防ぐステップを備える、条項1および2のいずれかの方法。
条項6:モデルベースの小数ピクセル動きベクトル改良を実行するステップが、1)初期動きベクトルがバイラテラル照合もしくはデコーダ側動きベクトル(DMVR)改良を使用して改良されたこと、2)改良された動きベクトルがバイラテラル照合もしくはDMVRを使用してさらに改良されること、または、3)初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々のうちの1つまたは複数を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するステップを備える、条項1から5のいずれかの方法。
条項7:モデルベースの小数ピクセル動きベクトル改良を実行するステップが、1)初期動きベクトルがバイラテラル照合もしくはデコーダ側動きベクトル(DMVR)改良を使用して改良されなかったこと、2)改良された動きベクトルがバイラテラル照合もしくはDMVRを使用してさらに改良されないこと、または、3)初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことのうちの少なくとも1つが真ではないことのうちの1つまたは複数を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するステップを備える、条項1から5のいずれかの方法。
条項8:動きベクトル差分値が、水平方向の動きベクトル差分(Δx)および垂直方向の動きベクトル差分(Δy)を備え、隣接ピクセルの誤差値がEx,y値を備え、誤差値を決定するステップが、Ex, y=A(x -Δx)2+B(y -Δy)2+Cを計算するステップを備え、モデルベースの小数ピクセル動きベクトル改良を実行するステップが、s*floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))に従ってΔxを計算するステップと、s*floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))に従ってΔyを計算するステップとを備え、αがある小数-pel精度で(Δx,Δy)を表すために導入される整数スケーリング係数であり、sがスケーリング値である、条項1から7のいずれかの方法。
条項9:現在のブロックのための適応動きベクトル分解能(AMVR)モードに従って、αの値を決定するステップをさらに備える、条項8の方法。
条項10:1/2ピクセル補間フィルタが使用されるかどうかに従って、αの値を決定するステップをさらに備える、条項8および9のいずれかの方法。
条項11:αの値を決定するステップが、AMVRモードが、フルピクセル、2ピクセル、4ピクセル、または4ピクセルより大きいのうちの1つであるとき、αの値が0または1に等しいと決定するステップを備える、条項9および10のいずれかの方法。
条項12:αの値を決定するステップが、AMVRモードが1/2ピクセルであるとき、または1/2ピクセル補間フィルタが使用されるとき、αの値が2に等しいと決定するステップを備える、条項9から11のいずれかの方法。
条項13:αの値を決定するステップが、AMVRモードが1/4ピクセルであるとき、αの値が4に等しいと決定するステップを備える、条項9から12のいずれかの方法。
条項14:αの値を決定するステップが、AMVRモードが1/8ピクセルであるとき、αの値が8に等しいと決定するステップを備える、条項9から13のいずれかの方法。
条項15:αの値を決定するステップが、AMVRモードが1/16ピクセルであるとき、αの値が16に等しいと決定するステップを備える、条項9から14のいずれかの方法。
条項16:αの値を決定するステップが、AMVRモードが1/Nピクセルであるとき、αの値がNに等しいと決定するステップを備える、条項9から15のいずれかの方法。
条項17:sの値を16/αに等しいものとして計算するステップをさらに備える、条項9から16のいずれかの方法。
条項18:sの値をM/αに等しいものとして計算するステップをさらに備え、Mが動きベクトル記憶精度である、条項9から16のいずれかの方法。
条項19:AMVRモードが1/2ピクセルであるとき、テンプレート照合探索プロセスを実行するステップが、フルピクセル動きベクトル差分精度でテンプレート照合探索プロセスを実行するステップを備え、αの値を決定するステップが、αの値が2に等しいと決定するステップを備え、方法がさらに、sの値を8に等しいものとして決定するステップを備える、条項9から16のいずれかの方法。
条項20:AMVRモードが1/4ピクセルであるとき、テンプレート照合探索プロセスを実行するステップが、フルピクセル動きベクトル差分精度でテンプレート照合探索プロセスを実行するステップを備え、αの値を決定するステップが、αの値が4に等しいと決定するステップを備え、方法がさらに、sの値を4に等しいものとして決定するステップを備える、条項9から16のいずれかの方法。
条項21:AMVRモードが1/4ピクセルであるとき、テンプレート照合探索プロセスを実行するステップが、フルピクセル動きベクトル差分精度でテンプレート照合探索プロセスを実行するステップを備え、αの値を決定するステップが、αの値が2に等しいと決定するステップを備え、方法がさらに、sの値を4に等しいものとして決定するステップを備える、条項9から16のいずれかの方法。
条項22:AMVRモードが1/16ピクセルであるとき、テンプレート照合探索プロセスを実行するステップが、フルピクセル動きベクトル差分精度でテンプレート照合探索プロセスを実行するステップを備え、αの値を決定するステップが、αの値が2に等しいと決定するステップを備え、方法がさらに、sの値を1に等しいものとして決定するステップを備える、条項9から16のいずれかの方法。
条項23:AMVRモードが1/16ピクセルであるとき、テンプレート照合探索プロセスを実行するステップが、フルピクセル動きベクトル差分精度でテンプレート照合探索プロセスを実行するステップを備え、αの値を決定するステップが、αの値が8に等しいと決定するステップを備え、方法がさらに、sの値を1に等しいものとして決定するステップを備える、条項9から16のいずれかの方法。
条項24:AMVRモードが1/16ピクセルであるとき、テンプレート照合探索プロセスを実行するステップが、フルピクセル動きベクトル差分精度で、および1/2ピクセル動きベクトル差分精度でテンプレート照合探索プロセスを実行するステップを備え、αの値を決定するステップが、αの値が4に等しいと決定するステップを備え、方法がさらに、sの値を1に等しいものとして決定するステップを備える、条項9から16のいずれかの方法。
条項25:AMVRモードが1/16ピクセルであるとき、テンプレート照合探索プロセスを実行するステップが、フルピクセル動きベクトル差分精度で、1/2ピクセル動きベクトル差分精度で、および1/4ピクセル動きベクトル差分精度でテンプレート照合探索プロセスを実行するステップを備え、αの値を決定するステップが、αの値が2に等しいと決定するステップを備え、方法がさらに、sの値を1に等しいものとして決定するステップを備える、条項9から16のいずれかの方法。
条項26:現在のブロックが双予測され、初期動きベクトルが第1の初期動きベクトルを備え、改良された動きベクトルが第1の改良された動きベクトルを備え、方法がさらに、第1の改良された動きベクトルを使用して現在のブロックのための第2の初期動きベクトルを改良するステップを備える、条項1から25のいずれかの方法。
条項27:第1の初期動きベクトルが参照ピクチャリスト0と関連付けられる、条項26の方法。
条項28:第1の初期動きベクトルが参照ピクチャリスト1と関連付けられる、条項26の方法。
条項29:第1の初期動きベクトルが参照ピクチャリストxと関連付けられ、方法がさらに、参照ピクチャリスト1のための動きベクトル差分値が0に等しくなるように強制されることをデータが示し、参照ピクチャリスト1のための動きベクトル差分値に対するシンタックス要素のデータが復号されないとき、xが1に等しいと決定するステップを備える、条項26の方法。
条項30:第1の初期動きベクトルが参照ピクチャリストxと関連付けられ、方法がさらに、参照ピクチャリスト1のための動きベクトル差分値が0に等しくなるように強制されないことをデータが示し、参照ピクチャリスト1のための動きベクトル差分値に対するシンタックス要素のデータが復号されるとき、xが1に等しいと決定するステップを備える、条項26の方法。
条項31:第1の初期動きベクトルが参照ピクチャリストxと関連付けられ、方法がさらに、参照ピクチャリスト0および参照ピクチャリスト1のための動きベクトルのTMコストに従って、0または1のいずれかであるものとしてxの値を決定するステップを備える、条項26の方法。
条項32:xの値を決定するステップが、参照ピクチャリスト0のための動きベクトルのTMコストが参照ピクチャリスト1のための動きベクトルのTMコストより小さいとき、xが0に等しいと決定するステップを備える、条項31の方法。
条項33:xの値を決定するステップが、参照ピクチャリスト1のための動きベクトルのTMコストが参照ピクチャリスト0のための動きベクトルのTMコストより小さいとき、xが0に等しいと決定するステップを備える、条項31の方法。
条項34:初期動きベクトルを形成するためにバイラテラル照合を使用して動きベクトルを表す復号されたデータを改良するステップをさらに備える、条項1から33のいずれかの方法。
条項35:さらなる改良された動きベクトルを形成するためにバイラテラル照合を使用して改良された動きベクトルを改良するステップをさらに備え、現在のブロックを復号するステップが、さらなる改良された動きベクトルを使用して現在のブロックを復号するステップを備える、条項1から33のいずれかの方法。
条項36:バイラテラル照合およびテンプレート照合が同じ探索範囲を共有する、条項34および35のいずれかの方法。
条項37:テンプレート照合探索プロセスを実行するステップが、適応動きベクトル分解能(AMVR)モードが4ピクセルモードではないと決定した後、テンプレート照合探索プロセスを実行するステップを備える、条項1から36のいずれかの方法。
条項38:テンプレート照合探索プロセスを実行するステップが、適応動きベクトル分解能(AMVR)モードが2ピクセルモードより大きいと決定した後、テンプレート照合探索プロセスを実行するステップを備える、条項1から36のいずれかの方法。
条項39:現在のブロックを復号する前に現在のブロックを符号化するステップをさらに備える、条項1から38のいずれかの方法。
条項40:ビデオデータを復号するためのデバイスであって、条項1から39のいずれかの方法を実行するための1つまたは複数の手段を備える、デバイス。
条項41:1つまたは複数の手段が、回路において実装される1つまたは複数のプロセッサを備える、条項40のデバイス。
条項42:復号されたビデオデータを表示するように構成されるディスプレイをさらに備える、条項40および41のいずれかのデバイス。
条項43:デバイスが、カメラ、コンピュータ、モバイルデバイス、放送受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、条項40から42のいずれかのデバイス。
条項44:ビデオデータを記憶するように構成されるメモリをさらに備える、条項40から43のデバイス。
条項45:実行されると、ビデオデータを復号するためのデバイスのプロセッサに条項1から39のいずれかの方法を実行させる命令を記憶した、コンピュータ可読記憶媒体。
条項46:ビデオデータを復号するためのデバイスであって、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号するための手段であって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、手段と、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するための手段と、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行するための手段と、最良の一致する領域に対する隣接ピクセルの誤差値を決定するための手段と、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するための手段と、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するための手段と、改良された動きベクトルを使用して現在のブロックを復号するための手段とを備える、デバイス。
条項47:ビデオデータを復号する方法であって、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号するステップであって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、ステップと、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するステップと、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索処理を実行するステップと、最良の一致する領域に対する隣接ピクセルの誤差値を決定するステップと、モデルベースの小数ピクセル誤差ベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するステップと、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するステップと、改良された動きベクトルを使用して現在のブロックを復号するステップとを備える、方法。
条項48:動きベクトル差分値が、水平方向の動きベクトル差分値および垂直方向の動きベクトル差分値を含む、条項47の方法。
条項49:動きベクトル差分値の少なくとも1つを適用するステップが、動きベクトル差分値のすべてを適用するステップを備える、条項47の方法。
条項50:動きベクトル差分値の少なくとも1つを適用するステップが、最良の一致する領域の誤差値が0に等しくないと決定するステップと、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値未満であると決定したことに応答して、その成分のための動きベクトル差分値をその成分に適用するステップとを備える、条項47の方法。
条項51:動きベクトル差分値の少なくとも1つを適用するステップが、最良の一致する領域の誤差値が0に等しいこと、または、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値以上であることのうちの少なくとも1つを決定したことに応答して、その成分のための動きベクトル差分値をその成分に適用するのを防ぐステップを備える、条項47の方法。
条項52:モデルベースの小数ピクセル動きベクトル改良を実行するステップが、初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するステップを備える、条項47の方法。
条項53:モデルベースの小数ピクセル動きベクトル改良を実行するステップが、1)初期動きベクトルがバイラテラル照合もしくはデコーダ側動きベクトル(DMVR)改良を使用して改良されたこと、または2)改良された動きベクトルがバイラテラル照合もしくはDMVRを使用してさらに改良されることのうちの少なくとも1つを決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するステップを備える、条項47の方法。
条項54:モデルベースの小数ピクセル動きベクトル改良を実行するステップが、1)初期動きベクトルがバイラテラル照合もしくはデコーダ側動きベクトル(DMVR)改良を使用して改良されなかったこと、2)改良された動きベクトルがバイラテラル照合もしくはDMVRを使用してさらに改良されないこと、または、3)初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことのうちの少なくとも1つが真ではないことのうちの1つまたは複数を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するステップを備える、条項47の方法。
条項55:動きベクトル差分値が、水平方向の動きベクトル差分(Δx)および垂直方向の動きベクトル差分(Δy)を備え、隣接ピクセルの誤差値がEx,y値を備え、誤差値を決定するステップが、Ex, y=A(x -Δx)2+B(y -Δy)2+Cを計算するステップを備え、モデルベースの小数ピクセル動きベクトル改良を実行するステップが、s*floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))に従ってΔxを計算するステップと、s*floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))に従ってΔyを計算するステップとを備え、αがある小数-pel精度で(Δx,Δy)を表すために導入される整数スケーリング係数であり、sがスケーリング値である、条項47の方法。
条項56:1/2ピクセル補間フィルタが使用されるかどうかにかかわらず、αの値を16に等しいものとして決定するステップをさらに備える、条項55の方法。
条項57:現在のブロックのための適応動きベクトル分解能(AMVR)モードに従って、αの値を決定するステップをさらに備える、条項55の方法。
条項58:1/2ピクセル補間フィルタが使用されるかどうかに従ってαの値を決定するステップをさらに備える、条項55の方法。
条項59:現在のブロックが双予測され、初期動きベクトルが第1の初期動きベクトルを備え、改良された動きベクトルが第1の改良された動きベクトルを備え、方法がさらに、第1の改良された動きベクトルを使用して現在のブロックのための第2の初期動きベクトルを改良するステップを備える、条項47の方法。
条項60:初期動きベクトルを形成するためにバイラテラル照合を使用して動きベクトルを表す復号されたデータを改良するステップをさらに備える、条項47の方法。
条項61:さらなる改良された動きベクトルを形成するためにバイラテラル照合を使用して改良された動きベクトルを改良するステップをさらに備え、現在のブロックを復号するステップが、さらなる改良された動きベクトルを使用して現在のブロックを復号するステップを備える、条項47の方法。
条項62:テンプレート照合探索プロセスを実行するステップが、適応動きベクトル分解能(AMVR)モードが4ピクセルモードではないと決定した後、テンプレート照合探索プロセスを実行するステップを備える、条項47の方法。
条項63:現在のブロックを復号する前に現在のブロックを符号化するステップをさらに備える、条項47の方法。
条項64:ビデオデータを復号するためのデバイスであって、デバイスが、ビデオデータを記憶するように構成されるメモリと、回路で実装される1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサが、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号し、初期動きベクトルが整数動きベクトル差分(MVD)精度を有し、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定し、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行し、最良の一致する領域に対する隣接ピクセルの誤差値を決定し、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用し、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用し、改良された動きベクトルを使用して現在のブロックを復号するように構成される、デバイス。
条項65:動きベクトル差分値の少なくとも1つを適用するために、1つまたは複数のプロセッサが、最良の一致する領域の誤差値が0に等しくないと決定し、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値未満であると決定したことに応答して、その成分のための動きベクトル差分値をその成分に適用するように構成される、条項64のデバイス。
条項66:1つまたは複数のプロセッサが、初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するように構成される、条項64のデバイス。
条項67:動きベクトル差分値が、水平方向の動きベクトル差分(Δx)および垂直方向の動きベクトル差分(Δy)を備え、隣接ピクセルの誤差値がEx,y値を備え、誤差値を決定するために、1つまたは複数のプロセッサが、Ex, y=A(x -Δx)2+B(y -Δy)2+Cを計算するように構成され、モデルベースの小数ピクセル動きベクトル改良を実行するために、1つまたは複数のプロセッサが、s*floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))に従ってΔxを計算し、s*floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))に従ってΔyを計算し、1/2ピクセル補間フィルタが使用されるかどうかにかかわらずαの値を16に等しいものとして決定するように構成され、αがある小数-pel精度で(Δx,Δy)を表すために導入される整数スケーリング係数であり、sがスケーリング値である、条項64のデバイス。
条項68:1つまたは複数のプロセッサがさらに、初期動きベクトルを形成するためにバイラテラル照合を使用して動きベクトルを表す復号されたデータを改良するように構成される、条項64のデバイス。
条項69:1つまたは複数のプロセッサがさらに、さらなる改良された動きベクトルを形成するためにバイラテラル照合を使用して改良された動きベクトルを改良するように構成され、1つまたは複数のプロセッサが、さらなる改良された動きベクトルを使用して現在のブロックを復号するように構成される、条項64のデバイス。
条項70:1つまたは複数のプロセッサが、適応動きベクトル分解能(AMVR)モードが4ピクセルモードではないと決定した後、テンプレート照合探索プロセスを実行するように構成される、条項64のデバイス。
条項71:復号されたビデオデータを表示するように構成されるディスプレイをさらに備える、条項64のデバイス。
条項72:デバイスが、カメラ、コンピュータ、モバイルデバイス、放送受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、条項64のデバイス。
条項73:命令を記憶したコンピュータ可読記憶媒体であって、前記命令が、実行されると、ビデオデータを復号するためのデバイスのプロセッサに、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号させ、初期動きベクトルが整数動きベクトル差分(MVD)精度を有し、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定させ、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行させ、最良の一致する領域に対する隣接ピクセルの誤差値を決定させ、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用させ、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルへ適用させ、改良された動きベクトルを使用して現在のブロックを復号させる、コンピュータ可読記憶媒体。
条項74:プロセッサに動きベクトル差分値の少なくとも1つを適用させる命令が、プロセッサに、最良の一致する領域の誤差値が0に等しくないと決定させ、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値未満であると決定したことに応答して、その成分のための動きベクトル差分値をその成分へ適用させる、命令を備える、条項73のコンピュータ可読記憶媒体。
条項75:プロセッサにモデルベースの小数ピクセル動きベクトル改良を実行させる命令が、プロセッサに、初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行させる命令を備える、条項73のコンピュータ可読記憶媒体。
条項76:動きベクトル差分値が、水平方向の動きベクトル差分(Δx)および垂直方向の動きベクトル差分(Δy)を備え、隣接ピクセルの誤差値がEx,y値を備え、プロセッサに誤差値を決定させる命令が、プロセッサに、Ex, y=A(x -Δx)2+B(y -Δy)2+Cを計算させる命令を備え、プロセッサにモデルベースの小数ピクセル動きベクトル改良を実行させる命令が、プロセッサに、s*floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))に従ってΔxを計算させ、s*floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))に従ってΔyを計算させ、1/2ピクセル補間フィルタが使用されるかどうかにかかわらずαの値を16に等しいものとして決定させる命令を備え、αがある小数-pel精度で(Δx,Δy)を表すために導入される整数スケーリング係数であり、sがスケーリング値である、条項73のコンピュータ可読記憶媒体。
条項77:プロセッサに、初期動きベクトルを形成するためにバイラテラル照合を使用して動きベクトルを表す復号されたデータを改良させる命令をさらに備える、条項73のコンピュータ可読記憶媒体。
条項78:プロセッサに、さらなる改良された動きベクトルを形成するためにバイラテラル照合を使用して改良された動きベクトルを改良させる、命令をさらに備え、プロセッサに現在のブロックを復号させる命令が、プロセッサに、さらなる改良された動きベクトルを使用して現在のブロックを復号させる命令を備える、条項73のコンピュータ可読記憶媒体。
条項79:プロセッサにテンプレート照合探索プロセスを実行させる命令が、プロセッサに、適応動きベクトル分解能(AMVR)モードが4ピクセルモードではないと決定した後、テンプレート照合探索プロセスを実行させる命令を備える、条項73のコンピュータ可読記憶媒体。
条項80:ビデオデータを復号するためのデバイスであって、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号するための手段であって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、手段と、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するための手段と、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行するための手段と、最良の一致する領域に対する隣接ピクセルの誤差値を決定するための手段と、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するための手段と、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するための手段と、改良された動きベクトルを使用して現在のブロックを復号するための手段とを備える、デバイス。
条項81:ビデオデータを復号する方法であって、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号するステップであって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、ステップと、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するステップと、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索処理を実行するステップと、最良の一致する領域に対する隣接ピクセルの誤差値を決定するステップと、モデルベースの小数ピクセル誤差ベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するステップと、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するステップと、改良された動きベクトルを使用して現在のブロックを復号するステップとを備える、方法。
条項82:動きベクトル差分値が、水平方向の動きベクトル差分値および垂直方向の動きベクトル差分値を含む、条項81の方法。
条項83:動きベクトル差分値の少なくとも1つを適用するステップが、動きベクトル差分値のすべてを適用するステップを備える、条項81および82のいずれかの方法。
条項84:動きベクトル差分値の少なくとも1つを適用するステップが、最良の一致する領域の誤差値が0に等しくないと決定するステップと、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値未満であると決定したことに応答して、その成分のための動きベクトル差分値をその成分に適用するステップとを備える、条項81および82のいずれかの方法。
条項85:動きベクトル差分値の少なくとも1つを適用するステップが、最良の一致する領域の誤差値が0に等しいこと、または、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値以上であることのうちの少なくとも1つを決定したことに応答して、その成分のための動きベクトル差分値をその成分に適用するのを防ぐステップを備える、条項81および82のいずれかの方法。
条項86:モデルベースの小数ピクセル動きベクトル改良を実行するステップが、初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するステップを備える、条項81から85のいずれかの方法。
条項87:モデルベースの小数ピクセル動きベクトル改良を実行するステップが、1)初期動きベクトルがバイラテラル照合もしくはデコーダ側動きベクトル(DMVR)改良を使用して改良されたこと、または2)改良された動きベクトルがバイラテラル照合もしくはDMVRを使用してさらに改良されることのうちの少なくとも1つを決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するステップを備える、条項81から85のいずれかの方法。
条項88:モデルベースの小数ピクセル動きベクトル改良を実行するステップが、1)初期動きベクトルがバイラテラル照合もしくはデコーダ側動きベクトル(DMVR)改良を使用して改良されなかったこと、2)改良された動きベクトルがバイラテラル照合もしくはDMVRを使用してさらに改良されないこと、または、3)初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことのうちの少なくとも1つが真ではないことのうちの1つまたは複数を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するステップを備える、条項81から85のいずれかの方法。
条項89:動きベクトル差分値が、水平方向の動きベクトル差分(Δx)および垂直方向の動きベクトル差分(Δy)を備え、隣接ピクセルの誤差値がEx,y値を備え、誤差値を決定するステップが、Ex, y=A(x -Δx)2+B(y -Δy)2+Cを計算するステップを備え、モデルベースの小数ピクセル動きベクトル改良を実行するステップが、s*floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))に従ってΔxを計算するステップと、s*floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))に従ってΔyを計算するステップとを備え、αがある小数-pel精度で(Δx,Δy)を表すために導入される整数スケーリング係数であり、sがスケーリング値である、条項81から88のいずれかの方法。
条項90:1/2ピクセル補間フィルタが使用されるかどうかにかかわらず、αの値を16に等しいものとして決定するステップをさらに備える、条項89の方法。
条項91:現在のブロックのための適応動きベクトル分解能(AMVR)モードに従って、αの値を決定するステップをさらに備える、条項89および90のいずれかの方法。
条項92:1/2ピクセル補間フィルタが使用されるかどうかに従って、αの値を決定するステップをさらに備える、条項89および91のいずれかの方法。
条項93:現在のブロックが双予測され、初期動きベクトルが第1の初期動きベクトルを備え、改良された動きベクトルが第1の改良された動きベクトルを備え、方法がさらに、第1の改良された動きベクトルを使用して現在のブロックのための第2の初期動きベクトルを改良するステップを備える、条項81から92のいずれかの方法。
条項94:初期動きベクトルを形成するためにバイラテラル照合を使用して動きベクトルを表す復号されたデータを改良するステップをさらに備える、条項81から93のいずれかの方法。
条項95:さらなる改良された動きベクトルを形成するためにバイラテラル照合を使用して改良された動きベクトルを改良するステップをさらに備え、現在のブロックを復号するステップが、さらなる改良された動きベクトルを使用して現在のブロックを復号するステップを備える、条項81から93のいずれかの方法。
条項96:テンプレート照合探索プロセスを実行するステップが、適応動きベクトル分解能(AMVR)モードが4ピクセルモードではないと決定した後、テンプレート照合探索プロセスを実行するステップを備える、条項81から95のいずれかの方法。
条項97:現在のブロックを復号する前に現在のブロックを符号化するステップをさらに備える、条項81から96のいずれかの方法。
条項98:ビデオデータを復号するためのデバイスであって、デバイスが、ビデオデータを記憶するように構成されるメモリと、回路で実装される1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサが、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号し、初期動きベクトルが整数動きベクトル差分(MVD)精度を有し、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定し、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行し、最良の一致する領域に対する隣接ピクセルの誤差値を決定し、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用し、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用し、改良された動きベクトルを使用して現在のブロックを復号するように構成される、デバイス。
条項99:動きベクトル差分値の少なくとも1つを適用するために、1つまたは複数のプロセッサが、最良の一致する領域の誤差値が0に等しくないと決定し、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値未満であると決定したことに応答して、その成分のための動きベクトル差分値をその成分に適用するように構成される、条項98のデバイス。
条項100:1つまたは複数のプロセッサが、初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行するように構成される、条項98および99のいずれかのデバイス。
条項101:動きベクトル差分値が、水平方向の動きベクトル差分(Δx)および垂直方向の動きベクトル差分(Δy)を備え、隣接ピクセルの誤差値がEx,y値を備え、誤差値を決定するために、1つまたは複数のプロセッサが、Ex, y=A(x -Δx)2+B(y -Δy)2+Cを計算するように構成され、モデルベースの小数ピクセル動きベクトル改良を実行するために、1つまたは複数のプロセッサが、s*floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))に従ってΔxを計算し、s*floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))に従ってΔyを計算し、1/2ピクセル補間フィルタが使用されるかどうかにかかわらずαの値を16に等しいものとして決定するように構成され、αがある小数-pel精度で(Δx,Δy)を表すために導入される整数スケーリング係数であり、sがスケーリング値である、条項98から100のいずれかのデバイス。
条項102:1つまたは複数のプロセッサがさらに、初期動きベクトルを形成するためにバイラテラル照合を使用して動きベクトルを表す復号されたデータを改良するように構成される、条項98から101のいずれかのデバイス。
条項103:1つまたは複数のプロセッサがさらに、さらなる改良された動きベクトルを形成するためにバイラテラル照合を使用して改良された動きベクトルを改良するように構成され、1つまたは複数のプロセッサが、さらなる改良された動きベクトルを使用して現在のブロックを復号するように構成される、条項98から102のいずれかのデバイス。
条項104:1つまたは複数のプロセッサが、適応動きベクトル分解能(AMVR)モードが4ピクセルモードではないと決定した後、テンプレート照合探索プロセスを実行するように構成される、条項98から103のいずれかのデバイス。
条項105:復号されたビデオデータを表示するように構成されるディスプレイをさらに備える、条項98から104のいずれかのデバイス。
条項106:デバイスが、カメラ、コンピュータ、モバイルデバイス、放送受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、条項98から105のいずれかのデバイス。
条項107:命令を記憶したコンピュータ可読記憶媒体であって、前記命令が、実行されると、ビデオデータを復号するためのデバイスのプロセッサに、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号させ、初期動きベクトルが整数動きベクトル差分(MVD)精度を有し、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定させ、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行させ、最良の一致する領域に対する隣接ピクセルの誤差値を決定させ、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用させ、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルへ適用させ、改良された動きベクトルを使用して現在のブロックを復号させる、コンピュータ可読記憶媒体。
条項108:プロセッサに動きベクトル差分値の少なくとも1つを適用させる命令が、プロセッサに、最良の一致する領域の誤差値が0に等しくないと決定させ、初期動きベクトルの成分とその成分のための対応する動きベクトル差分値との差の絶対値がその成分のための対応する探索領域値未満であると決定したことに応答して、その成分のための動きベクトル差分値をその成分へ適用させる、命令を備える、条項107のコンピュータ可読記憶媒体。
条項109:プロセッサにモデルベースの小数ピクセル動きベクトル改良を実行させる命令が、プロセッサに、初期動きベクトルが双予測動きベクトルを用いたコーディングユニット(CU)レベルマージモードであること、現在のブロックのための第1の参照ピクチャが現在のブロックを含む現在のピクチャの表示順序値より小さい表示順序値を有すること、現在のブロックのための第2の参照ピクチャが現在のピクチャの表示順序値より大きい表示順序値を有すること、現在のピクチャと第1の参照ピクチャと第2の参照ピクチャとの間の時間距離が等しいこと、現在のブロックが64個より多くのルーマピクセルを有すること、現在のブロックの高さが少なくとも8ルーマピクセルであること、現在のブロックの幅が少なくとも8ルーマピクセルであること、CUレベル重みを用いた双予測(BCW)のための重み値が等しいこと、加重予測(WP)が現在のブロックに対して有効にされていないこと、および合成イントラインター予測(CIIP)モードが現在のブロックのために使用されないことの各々を決定したことに応答して、モデルベースの小数ピクセル動きベクトル改良を実行させる命令を備える、条項107および108のいずれかのコンピュータ可読記憶媒体。
条項110:動きベクトル差分値が、水平方向の動きベクトル差分(Δx)および垂直方向の動きベクトル差分(Δy)を備え、隣接ピクセルの誤差値がEx,y値を備え、プロセッサに誤差値を決定させる命令が、プロセッサに、Ex, y=A(x -Δx)2+B(y -Δy)2+Cを計算させる命令を備え、プロセッサにモデルベースの小数ピクセル動きベクトル改良を実行させる命令が、プロセッサに、s*floor((α(E-1,0-E1,0))/(2(E-1,0+E1,0-2E0,0)))に従ってΔxを計算させ、s*floor((α(E0,-1-E0,1))/(2(E0,-1+E0,1-2E0,0)))に従ってΔyを計算させ、1/2ピクセル補間フィルタが使用されるかどうかにかかわらずαの値を16に等しいものとして決定させる命令を備え、αがある小数-pel精度で(Δx,Δy)を表すために導入される整数スケーリング係数であり、sがスケーリング値である、条項107から109のいずれかのコンピュータ可読記憶媒体。
条項111:プロセッサに、初期動きベクトルを形成するためにバイラテラル照合を使用して動きベクトルを表す復号されたデータを改良させる命令をさらに備える、条項107から110のいずれかのコンピュータ可読記憶媒体。
条項112:プロセッサに、さらなる改良された動きベクトルを形成するためにバイラテラル照合を使用して改良された動きベクトルを改良させる、命令をさらに備え、プロセッサに現在のブロックを復号させる命令が、プロセッサに、さらなる改良された動きベクトルを使用して現在のブロックを復号させる命令を備える、条項107から111のいずれかのコンピュータ可読記憶媒体。
条項113:プロセッサにテンプレート照合探索プロセスを実行させる命令が、プロセッサに、適応動きベクトル分解能(AMVR)モードが4ピクセルモードではないと決定した後、テンプレート照合探索プロセスを実行させる命令を備える、条項107から112のいずれかのコンピュータ可読記憶媒体。
条項114:ビデオデータを復号するためのデバイスであって、ビデオデータの現在のブロックのための初期動きベクトルを表すデータを復号するための手段であって、初期動きベクトルが整数動きベクトル差分(MVD)精度を有する、手段と、参照ピクチャの中の初期動きベクトルによって特定される参照エリアの周りの探索範囲を決定するための手段と、最良の一致する領域を特定するために探索範囲においてテンプレート照合探索プロセスを実行するための手段と、最良の一致する領域に対する隣接ピクセルの誤差値を決定するための手段と、モデルベースの小数ピクセル動きベクトル改良を実行して動きベクトル差分値を導出するために隣接ピクセルの誤差値を使用するための手段と、現在のブロックのための改良された動きベクトルを決定するために動きベクトル差分値の少なくとも1つを初期動きベクトルに適用するための手段と、改良された動きベクトルを使用して現在のブロックを復号するための手段とを備える、デバイス。
例によっては、本明細書で説明された技法のいずれかのいくつかの行為またはイベントが、異なる順序で実行されることがあり、追加され、統合され、または完全に除外されてもよい(たとえば、説明されたすべての行為またはイベントが技法の実践にとって必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて同時に実行されてもよい。
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されてもよく、またはコンピュータ可読媒体を介して送信されてもよく、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に相当するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含んでもよい。このように、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に相当し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コード、および/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であってもよい。コンピュータプログラム製品はコンピュータ可読媒体を含んでもよい。
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用でき、コンピュータによってアクセスすることができる任意の他の媒体を備えてもよい。また、いかなる接続も適切にコンピュータ可読媒体と呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義の中に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まず、代わりに非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記のものの組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の等価な集積論理回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行されてもよい。したがって、本明細書で使用される「プロセッサ」および「処理回路」という用語は、上記の構造、または本明細書で説明される技法の実装に適した任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/もしくはソフトウェアモジュール内で提供されてもよく、または複合コーデックに組み込まれてもよい。また、技法は、1つまたは複数の回路または論理要素において完全に実装されてもよい。
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装されてもよい。開示された技法を実行するように構成されたデバイスの機能的態様を強調するために、様々なコンポーネント、モジュール、またはユニットが本開示で説明されたが、それらは必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられてもよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上で説明されたような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてもよい。
様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。