[0021] 概して、本開示は、ビデオコーディングにおける暗黙的な変換選択(implicit transform selection)のための技法について説明する。以下でさらに詳細に説明するように、ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダは、ブロックのための残差データを計算し得る。残差ブロックなどの残差データは、対応する予測モードを使用して形成されるブロックとブロックのための予測ブロックとの間のサンプルごとの差分を表す。ビデオエンコーダは、サンプル領域ではなく変換領域において変換されたデータを生成するために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダは、離散コサイン変換(DCT)を適用し得る。いくつかの例では、ビデオエンコーダは、異なるタイプの変換を利用し得る。たとえば、ビデオエンコーダは、様々なタイプのDCTを使用し得る。
[0022] ビデオデコーダは、ビデオデータ(video data)を復号するときに逆変換を適用し得る。ビデオコーダが異なるタイプの変換を利用し得る場合、ビデオデコーダはどの変換がビデオエンコーダによって使用されたのかを決定する必要があり得る。いくつかの例では、ビデオエンコーダは、残差データを変換するときにどのタイプの変換が使用されたのかを明示的にシグナリングし得る(たとえば、それを示す値をもつシンタックス要素(syntax element)を符号化し得る)。しかしながら、いくつかの例では、(たとえば、シグナリングオーバーヘッドのために)使用される変換のタイプを明示的にシグナリングすることが望ましくないことがある。
[0023] 本開示の1つまたは複数の技法によれば、ビデオデコーダは、残差データを変換するときにどのタイプの変換が使用されたのかを暗黙的に決定し得る。たとえば、ビデオデコーダは、(たとえば、明示的にシグナリングされたかまたはシグナリングされた情報から暗黙的に導出されたかのいずれかの)ビデオデコーダにおいて利用可能なサイド情報に基づいて残差データを変換するときにどのタイプの変換が使用されたのかを決定するためにルールのセットを適用し得る。ビデオエンコーダは、どのタイプの変換を使用すべきかを決定するときに同じルールを適用し得る。したがって、ビデオエンコーダとビデオデコーダとはいずれも、変換タイプの明示的シグナリングなしにどのタイプの変換を使用すべきかを決定し得る。
[0024] 図1は、本開示の技法を実行し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための何らかのデータを含む。したがって、ビデオデータは、シグナリングデータなどの未加工の、コーディングされていないビデオと、符号化されたビデオと、復号された(たとえば、再構成された)ビデオと、ビデオメタデータ(video metadata)とを含み得る。
[0025] 図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化されたビデオデータを与えるソースデバイス102を含む。具体的には、ソースデバイス102は、コンピュータ可読媒体110を介してビデオデータを宛先デバイス116に提供する。ソースデバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合、ソースデバイス102および宛先デバイス116は、ワイヤレス通信に対応し得るので、ワイヤレス通信デバイスと呼ばれ得る。
[0026] 図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、暗黙的な変換選択のための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの例を表し、宛先デバイス116はビデオ復号デバイスの例を表す。他の例では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、統合されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0027] 図1に示されているシステム100は一例にすぎない。一般に、いかなるデジタルビデオ符号化および/または復号デバイスも、暗黙的な変換選択ための技法を実行し得る。ソースデバイス102および宛先デバイス116は、ソースデバイス102が宛先デバイス116への送信のためにコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示では、「コーディング(coding)」デバイスをデータのコーディング(符号化および/または復号)を実行するデバイスと称する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイス、特に、それぞれビデオエンコーダおよびビデオデコーダの例を表す。いくつかの例では、デバイス102、116は、デバイス102、116の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のための、ビデオデバイス102とビデオデバイス116との間の一方向または双方向のビデオ送信をサポートし得る。
[0028] 概して、ビデオソース104は、ビデオデータのソース(すなわち、未加工の、コーディングされていないビデオデータ)を表し、ピクチャのためのデータを符号化するビデオエンコーダ200にビデオデータの連続した一連のピクチャ(「フレーム」とも呼ばれる)を与える。ソースデバイス102のビデオソース104は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた未加工のビデオを包含するビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータで生成されたビデオとの組合せを生成し得る。各々の場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータで生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリーム()を生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化されたビデオデータをコンピュータ可読媒体110に出力し得る。
[0029] ソースデバイス102のメモリ106と、宛先デバイス116のメモリ120とは、汎用メモリを表す。いくつかの例では、メモリ106、120は、未加工のビデオデータ、たとえば、ビデオソース104からの未加工のビデオ、およびビデオデコーダ300からの未加工の、復号されたビデオデータを記憶し得る。追加または代替として、メモリ106、120は、たとえば、それぞれ、ビデオエンコーダ200およびビデオデコーダ300によって実行可能なソフトウェア命令を記憶し得る。この例ではビデオエンコーダ200およびビデオデコーダ300とは別々に示されているが、ビデオエンコーダ200およびビデオデコーダ300は、機能的に同等のまたは等価な目的のために内部メモリも含み得ることを理解されたい。さらに、メモリ106、120は、符号化されたビデオデータ、たとえば、ビデオエンコーダ200からの出力、およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の部分は、たとえば、未加工の復号および/または符号化されたビデオデータを記憶するために、1つまたは複数のビデオバッファとして割り振られ得る。
[0030] コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化されたビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化されたビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を変調し得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたは有線の通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を可能にするために有用であり得る任意の他の機器を含み得る。
[0031] いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス116に符号化データを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス116から符号化されたデータにアクセスし得る。記憶デバイス116は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
[0032] いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化されたビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに符号化されたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114から、記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通してファイルサーバ114から符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバ114に記憶された符号化されたビデオデータにアクセスするのに適した、両方の組合せを含み得る。ファイルサーバ114および入力インターフェース122は、ストリーミング伝送プロトコル、ダウンロード伝送プロトコル、またはそれらの組合せに従って動作するように構成され得る。
[0033] 出力インターフェース108と入力インターフェース122とは、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキング構成要素(たとえば、イーサネット(登録商標)カード)、様々なIEEE802.11規格のいずれかに従って動作するワイヤレス通信構成要素、または他の物理的構成要素を表し得る。出力インターフェース108および入力インターフェース122がワイヤレス構成要素を備える例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5Gなどのセルラー通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108と入力インターフェース122とは、IEEE802.11仕様、IEEE802.15仕様(たとえば、ZigBee(登録商標))、Bluetooth(登録商標)規格などの、他のワイヤレス規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。たとえば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に帰属する機能を実行するためのSoCデバイスを含み得、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に帰属する機能を実行するためのSoCデバイスを含み得る。
[0034] 本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
[0035] 宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、記憶デバイス112、ファイルサーバ114など)から符号化されたビデオビットストリーム(video bitstream)を受信する。符号化されたビデオビットストリームコンピュータ可読媒体110は、ビデオブロックまたは他のコーディングされたユニット(たとえば、スライス、ピクチャ、ピクチャのグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素などの、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、ユーザに復号されたビデオデータの復号されたピクチャを表示する。ディスプレイデバイス118は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのいずれかを表し得る。
[0036] 図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、それぞれ、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中のオーディオとビデオの両方を含む多重化されたストリームを処理するために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0037] ビデオエンコーダ200およびビデオデコーダ300はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路および/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つもしくは複数のエンコーダまたはデコーダに含まれ得、それらのいずれかが、それぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれ得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0038] ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265、またはマルチビューおよび/もしくはスケーラブルビデオコーディング拡張などのそれらの拡張などの、ビデオコーディング規格に従って動作し得る。代替として、ビデオエンコーダ200およびビデオデコーダ300は、共同探求テストモデル(JEM:Joint Exploration Test Model)または汎用ビデオコーディング(VVC:Versatile Video Coding)とも呼ばれるITU-T H.266などの、他のプロプライエタリ規格または業界規格に従って動作し得る。VVC標準の最近のドラフトは、Brossら「Versatile Video Coding(Draft4)」、ITU-T SG16 WP3とISO/IEC JTC1/SC29/WG11とのJoint Video Experts Team(JVET)、第13回会合:Marrakech、MA、2019年1月9~18日、JVET-M1001-v6(以下、「VVC Draft4」)に記載されている。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0039] 概して、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、処理されるべき(たとえば、符号化されるべき、復号されるべき、あるいは、さもなければ符号化および/または復号プロセスにおいて他の方法で使用されるべき)データを含む構造を一般に意味する。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200とビデオデコーダ300とは、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマットのデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替的に、前処理および後処理ユニット(図示されず)が、これらの変換を実行し得る。
[0040] 本開示は、概して、ピクチャのデータを符号化または復号するプロセスを含めるように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックに対するデータを符号化または復号する、たとえば、予測および/または残差コーディングのプロセスを含めるように、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素の一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成しているシンタックス要素の値をコーディングすることとして理解されたい。
[0041] HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU:transform unit)を含む、様々なブロックを定義する。HEVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、4分木構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUとCUとを4つの等しい、重複しない正方形に区分し、4分木の各ノードは、0個または4つのいずれかの子ノードを有する。子ノードなしのノードは「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUならびに/あるいは1つまたは複数のTUを含み得る。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差4分木(RQT:residual quadtree)は、TUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
[0042] 別の例として、ビデオエンコーダ200とビデオデコーダ300とは、JEMまたはVVCに従って動作するように構成され得る。JEMまたはVVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分木2分木(QTBT)構造またはマルチタイプツリー(MTT:Multi-Type Tree)構造などの、木構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUの区別などの、複数の区分タイプの概念を除去する。QTBT構造は、4分木区分に従って区分される第1のレベル、および2分木区分に従って区分される第2のレベルという、2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。2分木のリーフノードは、コーディングユニット(CU)に対応する。
[0043] MTT区分構造では、ブロックは、4分木(QT)区分と、2分木(BT)区分と、1つまたは複数のタイプの3分木(TT)区分とを使用して区分され得る。3分木区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、3分木区分は、中心を通って元のブロックを分割することなく、ブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称的または非対称的であり得る。
[0044] いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用し得、他の例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
[0045] ビデオエンコーダ200およびビデオデコーダ300は、HEVCによる4分木区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。ただし、本開示の技法が、4分木区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0046] 本開示は、垂直および水平次元、たとえば、16×16のサンプルまたは16バイ16のサンプルに関して(CUまたは他のビデオブロックなどの)ブロックのサンプル次元を互換的に言及するために「N×N」および「NバイN」を使用し得る。一般に、16×16のCUは、垂直方向に16個のサンプル(y=16)を有し、水平方向に16個のサンプル(x=16)を有する。同様に、N×NのCUは、概して、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CU中のサンプルは行と列とに配列され得る。さらに、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mサンプルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
[0047] ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表すCUのためにビデオデータを符号化する。予測情報は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、概して、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
[0048] CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、以前にコーディングされたピクチャのデータからCUを予測することを指し、一方、イントラ予測は、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、一般に、たとえば、CUと参照ブロックとの差分に関して、CUと厳密に一致する参照ブロックを特定するために動き探索を実行し得る。ビデオエンコーダ200は、参照ブロックが現在CUにぴったり一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
[0049] JEMおよびVVCのいくつかの例はまた、インター予測モード(inter-prediction mode)と見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き、あるいは他の変則の動きタイプなど、非並進の動きを表す2つ以上の動きベクトルを決定し得る。
[0050] イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モード(intra prediction mode)を選択し得る。JEMとVVCとのいくつかの例は、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在のブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在のブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在のブロックと同じピクチャ中の現在のブロックの上方、上方および左側、または左側にあり得る。
[0051] ビデオエンコーダ200は、現在のブロックについて予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP:advanced motion vector prediction)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードの動きベクトルを符号化するために同様のモードを使用し得る。
[0052] ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域中に変換データを生成するために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT:Karhunen-Loeve transform)など、第1の変換に続いて2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数(transform coefficient)を生成する。
[0053] 上記で説明されたように、ビデオエンコーダ200などのビデオエンコーダは、残差データを変換するために様々なタイプの変換を適用し得る。以下は、離散サインおよびコサイン変換(DCTおよびDST)の概要である。また、HEVC標準において使用される変換方式について手短に説明する。
[0054] 離散サインおよびコサイン変換。
[0055] 変換は、入力信号の代替表現を導出するプロセスを示す。N点ベクトルx=[x0,x1,...,×N-1]Tおよび所与のベクトル{Φ0,Φ1,...,ΦM-1}のセットを仮定すれば、xは、近似されるか、またはΦ0,Φ1,...,ΦM-1の線形結合を使用して正確に表され得、これは、次のように公式化され得る。
[0056] ここで、
は、xの近似値または均等物であり得、ベクトルf=[fi,f2,...,fM-1]は、変換係数ベクトルと呼ばれ、{Φ0,Φ1,...,ΦM-1}は、変換基底ベクトルである。
[0057] ビデオコーディングのシナリオでは、変換係数は、ほぼ非相関(non-correlated)であり、疎(sparse)であり、すなわち、入力ベクトルxのエネルギーは、数個の変換係数だけに圧縮され、残りの大多数の変換係数は一般に0に近くなる。
[0058] 特定の入力データを仮定すれば、エネルギー圧縮に関する最適な変換は、変換基底ベクトルとして入力データの共分散行列の固有ベクトルを使用する、いわゆるカルーネンレーベ変換(KLT)である。したがって、KLTは、実際には、データ依存型の変換であり、一般的な数学的公式化を有しない。しかしながら、いくつかの仮定、たとえば、入力データが1次定常マルコフ過程を形成するという仮定の下で、対応するKLTが実際にユニタリ変換の正弦波ファミリのメンバーであることが文献で証明されている。ユニタリ変換の正弦波ファミリは、次のように公式化される変換基底ベクトルを使用して変換を示す。
[0059] ここで、eは、2.71828にほぼ等しい自然対数の底であり、A、B、およびθは概して複素数であり、mの値に依存する。
[0060] 離散フーリエ、コサイン、サイン、および(1次定常マルコフ過程のための)KLTを含む例示的な変換は、ユニタリ変換のこの正弦波ファミリのメンバーである。S.A.Martucci、「Symmetric convolution and the discrete sine and cosine transforms」、IEEE Trans.Sig.Processing SP-42、1038~1051の(1994)によれば、離散コサイン変換(DCT)および離散サイン変換(DST)ファミリの完全セットは、異なるタイプ、すなわち、A、B、およびθの異なる値に基づいて合計で16個の変換を含み、DCTとDSTとの異なるタイプの完全な定義を以下に与える。
[0061] 入力N点ベクトルがx=[x0,x1,...,xN-1]Tとして示され、それが、行列を乗算することによってy=[y0,y1,...,yN-1]Tとして示される別のN点変換係数ベクトルに変換されると仮定し、このプロセスは、次の変換公式化のうちの1つに従ってさらに示され得、ここにおいて、kは、両端値を含んで0からN-1にわたる。
[0062] DCTタイプI(DCT-1):
[0063] DCTタイプII(DCT-2):
[0064] DCTタイプIII(DCT-3):
[0065] DCTタイプIV(DCT-4):
[0066] DCTタイプV(DCT-5):
[0067] DCTタイプVI(DCT-6):
[0068] DCTタイプVII(DCT-7):
[0069] DCTタイプVIII(DCT-8):
[0070] DSTタイプI(DST-1):
[0071] DSTタイプII(DST-2):
[0072] DSTタイプIII(DST-3):
[0073] DSTタイプIV(DST-4):
[0074] DSTタイプV(DST-5):
[0075] DSTタイプVI(DST-6):
[0076] DCTタイプVII(DST-7):
[0077] DSTタイプVIII(DST-8):
[0078] 変換タイプは、変換基底関数の数学的公式化によって指定され、たとえば、4点DST-VIIと8点DST-VIIとは、Nの値にかかわらず、同じ変換タイプを有する。
[0079] 一般性の喪失なしに、すべての上記の変換タイプは、以下の一般化された公式化を使用して表され得る。
[0080] ここで、Tは、1つのある変換の定義によって指定される変換行列、たとえば、DCTタイプI~DCTタイプVIIIまたはDSTタイプI~DSTタイプVIIIであり、Tの行ベクトル、たとえば、[Ti,0,Ti,1,Ti,2,…,Ti,N-1]は、i番目の変換基底ベクトルである。N点入力ベクトルに適用される変換は、N点変換と呼ばれる。
[0081] また、1次元入力データxに適用される上記の変換公式化は、以下のような行列乗算形式で表され得ることに留意されたい。
[0082] ここで、Tは、変換行列を示し、xは、入力データベクトルを示し、yは、出力変換係数ベクトルを示す。
[0083] 2次元(2D)入力データの変換。
[0084] 前の部分で紹介された変換は、1次元入力データに適用され、変換はまた、2次元入力データソースに拡張され得る。Xが入力M×Nデータアレイであると仮定する。2D入力データに変換を適用する典型的な方法は、分離可能および非分離可能2D変換を含む。
[0085] 分離可能2D変換は、以下のように公式化される、Xの水平ベクトルおよび垂直ベクトルに連続的に1D変換を適用する。
[0086] ここで、CおよびRは、それぞれ、所与のM×MおよびN×Nの変換行列を示す。公式化から、Cは、Xの列ベクトルに1D変換を適用し、一方、Rは、Xの行ベクトルに1D変換を適用することがわかる。本明細書の後の部分において、簡単のために、CおよびRを左(垂直)および右(水平)変換として示し、それらは共に変換ペアを形成する。Cが、Rに等しく、直交行列である場合がある。そのような場合、分離可能2D変換は、ただ1つの変換行列によって決定される。
[0087] 非分離可能2D変換は、最初に、一例として次の数学的マッピングを行うことによって、Xのすべての要素を単一のベクトル、すなわち、X’に再編成した。
[0088] 次いで、1D変換T’が、以下のようにX’に適用される。
[0089] ここで、T’は、(M*N)×(M*N)変換行列である。
[0090] ビデオコーディングでは、分離可能2D変換が、1D変換と比較してはるかに少ない演算(加算、乗算)カウントしか利用しないことがあるので、分離可能2D変換が適用され得る。
[0091] H.264/AVCなどの従来のビデオコーデックでは、4点および8点離散コサイン変換(DCT)タイプIIの整数近似値が、イントラ予測残差とインター予測残差の両方に常に適用される。残差サンプルの様々な統計値により良く適応するために、DCTタイプII以外の変換のよりフレキシブルなタイプが、より新しいビデオコーデックにおいて利用される。たとえば、HEVCでは、4点タイプVII離散サイン変換(DST)の整数近似値が、イントラ予測残差のために利用され、これは、DSTタイプVIIが、イントラ予測方向に沿って生成された残差ベクトルについてDCTタイプIIよりも効率的である(たとえば、DSTタイプVIIが、水平イントラ予測方向によって生成された行残差ベクトルについてDCTタイプIIよりも効率的である)ことが、理論的にも証明され、また実験的にも検証されている。HEVCでは、4点DSTタイプVIIの整数近似値は、4×4ルーマイントラ予測残差ブロックにのみ適用される。HEVCにおいて使用される4点DST-VIIが以下に示される。
[0092] 4×4DST-VII:
[0093] HEVCでは、4×4ルーマイントラ予測残差ブロックでない残差ブロックに対して、以下に示されるように、4点、8点、16点および32点DCTタイプIIの整数近似値も適用される。
[0094] 4点DCT-II:
[0095] 8点DCT-II:
[0096] 16点DCT-II:
[0097] 32点DCT-II:
[0098] HEVCにおける残差4分木に基づく変換方式。
[0099] 残差ブロックの様々な特性を適応させるために、HEVCでは残差4分木(RQT)を使用する変換コーディング構造が適用され、これは、http://www.hhi.fraunhofer.de/fields-of-competence/image-processing/research-groups/image-video-coding/hevc-high-efficiency-video-coding/transform-coding-using-the-residual-quadtree-rqt.htmlに手短に記載されている。RQTでは、各ピクチャは、特定のタイルまたはスライスについてラスタ走査順序でコーディングされるコーディングツリーユニット(CTU)に分割される。CTUは、正方形ブロックであり、4分木、すなわち、コーディングツリーのルートを表す。CTUサイズは8×8から64×64ルーマサンプルにわたり得るが、一般に64×64が使用される。各CTUは、コーディングユニット(CU)と呼ばれるより小さい正方形ブロックにさらに分割され得る。CTUがCUに再帰的に分割された後、各CUは、予測ユニット(PU)と変換ユニット(TU)とにさらに分けられる。
[0100] TUへのCUの区分は、4分木手法に基づいて再帰的に行われ、したがって、各CUの残差信号は、ツリー構造、すなわち、残差4分木(RQT)によってコーディングされる。RQTは、4×4から32×32ルーマサンプルまでのTUサイズを可能にする。図2Cは、CUが、文字a~jで標示された10個のTUを含む一例と、対応するブロック区分とを示す。RQTの各ノードは、実際は変換ユニット(TU:transform unit)である。個々のTUは、深度優先トラバーサルによる再帰的Z走査に従う、アルファベット順として図に示された深度優先ツリートラバーサル順序で処理され得る。
[0101] 4分木手法は、残差信号の変動する空間周波数特性に対する変換の適応を可能にする。一般に、より大きい空間サポートを有するより大きい変換ブロックサイズは、より良い周波数解像度を与える。しかしながら、より小さい空間サポートを有するより小さい変換ブロックサイズは、より良い空間解像度を与え得る。これらの2つ、すなわち、空間分解能と周波数分解能との間のトレードオフは、たとえばレートひずみ最適化技法に基づいて、エンコーダモード決定によって選定され得る。ビデオコーダは、各コーディングモード(たとえば、特定のRQT分割構造)についてコーディングビットと再構成ひずみとの加重和、すなわち、レートひずみコストを計算し、最小レートひずみコストをもつコーディングモードを最良のモードとして選択するためにレートひずみ最適化技法を実行し得る。
[0102] 3つのパラメータ、すなわち、ツリーの最大深度、最小許容変換サイズおよび最大許容変換サイズがRQTにおいて定義され得る。最小変換サイズと最大変換サイズとは、前の段落において述べられたサポートされるブロック変換に対応する、4×4から32×32サンプルまでの範囲内で変動することがある。RQTの最大許容深度はTUの数を制限する。0に等しい最大深度は、各含まれたTBが最大許容変換サイズ、たとえば、32×32に達した場合、CBがこれ以上分割され得ないことを意味する。
[0103] すべてのこれらのパラメータは、相互作用し、RQT構造に影響を及ぼす。ルートCBサイズが64×64であり、最大深度が0に等しく、最大変換サイズが32×32に等しい場合について考える。この場合、CBは、さもなければ、それが、許容されない64×64TBにつながることになるので、少なくとも1回区分されなければならない。RQTパラメータ、すなわち、最大RQT深度、最小および最大変換サイズは、シーケンスパラメータセットレベルにおいてビットストリーム中で送信される。RQT深度に関して、イントラコード化CUとインターコード化CUとについて異なる値が指定され、シグナリングされ得る。
[0104] 4分木変換(quadtree transform)は、イントラ残差ブロック(Intra residual block)とインター残差ブロック(Inter residual block)の両方のために適用される。一般に、現在の残差4分木区分の同じサイズのDCT-II変換が残差ブロックのために適用される。しかしながら、現在の残差4分木ブロックが4×4であり、イントラ予測によって生成される場合、上記の4×4DST-VII変換が適用される。
[0105] HEVCでは、より大きいサイズの変換、たとえば、64×64変換は、主に、それの限られた利益の考慮と、より比較的小さい分解能のビデオに対する比較的高い複雑さとにより、採用されない。
[0106] 上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行し得る。量子化は、一般に、係数を表すために使用されるデータの量をできる限り低減してさらなる圧縮をもたらすように、変換係数が量子化されるプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数の一部またはすべてと関連付けられるビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化の間にnビット値をmビット値に丸めてもよく、nはmより大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビットごとの右シフトを実行し得る。
[0107] 量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがって、より低い頻度)の係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、あらかじめ定義された走査順序を利用して、量子化された変換係数を走査してシリアル化ベクトルを生成し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実行し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際にビデオデコーダ300によって使用するための、符号化されたビデオデータと関連付けられるメタデータを記述するシンタックス要素のための値をエントロピー符号化し得る。
[0108] CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0109] ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0110] このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
[0111] 概して、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実行されたものの逆プロセスを実行する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素の値を復号し得る。シンタックス要素は、CTUのCUを定義するために、CTUへのピクチャの区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)のための予測および残差情報をさらに定義し得る。
[0112] 残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックの残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックの予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関連する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、次いで、元のブロックを再生するために(サンプルごとに)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキング処理を実行することなどの、追加の処理を実行し得る。
[0113] 本開示の技法によれば、ビデオコーダ(すなわち、ビデオエンコーダ(video encoder)200および/またはビデオデコーダ(video decoder)300)は、ビデオブロックの現在の係数ブロックのために、複数の変換タイプから変換タイプを導出し得る。ビデオコーダは、ビデオブロックのための再構成された残差データのブロックを取得するために、選択された変換タイプを使用して現在の変換ブロック(たとえば、係数ブロック)を変換し、ビデオブロックのための再構成された残差データに基づいて、ビデオブロックを再構成し得る。
[0114] ビデオコーダは、変換タイプの明示的なシグナリング以外のファクタに基づいて変換タイプを推測し得る。したがって、ビデオコーダは、現在のブロックのための変換タイプを明確に識別するシンタックス要素のコーディングを省略し得る。ビデオコーダが変換タイプを推測し得るファクタのいくつかの例は、現在のブロックのサイズ(たとえば、現在のブロックの高さおよび/または幅)と、現在のブロックがイントラサブブロック区分(ISP)を使用して区分されるのかどうかと、現在のブロックのイントラモードとを含む。ビデオコーダは、ファクタの任意の組合せに基づいて変換タイプを推測し得る。たとえば、ビデオコーダは、現在の変換ブロックのサイズと現在のビデオブロックがISPを使用して区分されるのかどうかとに基づいて現在のビデオブロックの現在の変換ブロックのための変換タイプを推測し得る。そのような例のうちの少なくともいくつかでは、ビデオコーダは、現在のビデオブロックを予測するために使用されるイントラ予測モードにかかわらず現在の変換ブロックのための変換タイプを推測し得る。
[0115] ビデオコーダは、1つまたは複数の離散コサイン変換(DCT)と1つまたは複数の離散サイン変換(DST)とを含む複数の変換タイプから変換タイプを選択し得る。以下でさらに詳細に説明するように、1つもしくは複数のDCTは、DCT-1、DCT-2、DCT-3、DCT-4、DCT-5、DCT-6、DCT-7、およびDCT-8のうちの1つもしくは複数を含み得、ならびに/または1つもしくは複数のDSTは、DST-1、DST-2、DST-3、DST-4、DST-5、DST-6、DST-7、およびDST-8のうちの1つもしくは複数を含み得る。
[0116] 上記で説明されたように、ビデオコーダは、現在の変換ブロックのサイズに基づいて現在の変換ブロックのための変換タイプを推測し得る。たとえば、ビデオコーダは、現在の変換ブロックのサイズがサイズしきい値を満たすと決定することに応答して現在の変換ブロックのために第1の変換タイプを選択し、現在の変換ブロックのサイズがサイズしきい値を満たさないと決定することに応答して現在の変換ブロックのために第2の変換タイプを選択し得る。いくつかの例では、ビデオコーダは、現在の変換ブロックのサイズを単一のしきい値と比較することによって現在の変換ブロックのサイズがサイズしきい値を満たすのかどうかを決定し得る。他の例では、ビデオコーダは、現在の変換ブロックのサイズが下限(lower bound)(たとえば、2、4、6)よりも大きく、上限(upper bound)(たとえば、8、16、32)よりも小さいと決定することによって現在の変換ブロックのサイズがサイズしきい値を満たすのかどうかを決定し得る。現在の変換ブロックのサイズが下限よりも大きく、上限よりも小さい場合、ビデオコーダは、現在の変換ブロックのサイズがサイズしきい値を満たすと決定し得る。同様に、現在の変換ブロックのサイズが下限よりも小さいか、または上限よりも大きい場合、ビデオコーダは、現在の変換ブロックのサイズがサイズしきい値を満たさないと決定し得る。
[0117] 現在のビデオブロックがコーディングユニット(CU)である場合、CUは、ISPを使用して複数の下位区分に区分され得る。下位区分の各々は、関連する変換ブロックを有し得る。したがって、CUがISPを使用して区分される場合、複数の変換ブロックはCUに関連付けられ得る。たとえば、16×16のCUは、4×16のサイズの4つの区分に垂直方向に区分され得、その各々は、4×16のサイズの変換ブロックに関連付けられる。
[0118] 上記で説明されたように、ビデオコーダは、現在のビデオブロックがISPを使用して区分されるのかどうかに基づいて、および現在の変換ブロックのサイズに基づいて現在のビデオブロックの現在の変換ブロックのための変換タイプを推測し得る。一例として、現在の変換ブロックのサイズがサイズしきい値を満たすと決定し、現在のビデオブロックがISPを使用して区分されると決定することに応答して、ビデオコーダは、現在の変換ブロックのための変換タイプとして1つまたは複数のDSTのうちの特定のDST(たとえば、DST-7)を選択し得る。別の例として、現在の変換ブロックのサイズがサイズしきい値を満たさないと決定し、現在のビデオブロックがISPを使用して区分されると決定することに応答して、ビデオコーダは、現在の変換ブロックのための変換タイプとして1つまたは複数のDCTのうちの特定のDCT(particular DCT)(たとえば、DCT-2)を選択し得る。上述の例のいずれでも、ビデオコーダは、変換タイプが現在のビデオブロックを予測するために使用されるイントラ予測モードにかかわらず(たとえば、現在のビデオをイントラ予測するために使用される角度モード、DCモード、または平面モードにかかわらず)変換タイプを選択することを備えることを選択し得る。
[0119] いくつかの例では、ビデオコーダは、常に、変換タイプ推測を実行し得る。他の例では、ビデオコーダは、いくつかの条件の下で変換タイプ推測を実行し得る。たとえば、ビデオコーダは、複数変換選択(MTS:multiple transform selection)が現在のビデオブロックのために使用可能であると決定することに応答して現在の変換ブロックのための変換タイプを推測し得る。ビデオコーダは、いくつかの例では、1つまたは複数のシンタックス要素(たとえば、sps_explicit_mts_intra_enabled_flag)の値に基づいてMTSが現在のビデオブロックのために使用可能であるのかどうかを決定し得る。
[0120] ビデオコーダは、いくつかの例では、水平変換を実行するための変換タイプ(すなわち、水平使用(horizontal use)のための変換タイプ)を推測し、垂直変換を実行するための変換タイプ(すなわち、垂直使用(vertical use)のための変換タイプ)を推測し得る。ビデオコーダは、共通のアルゴリズムを使用して水平および垂直使用のための変換タイプを推測し得る。たとえば、ビデオコーダは、現在の変換ブロックの幅が幅サイズしきい値を満たすのかどうかと、現在の変換ブロックを含む現在のビデオブロックがISPを使用して区分されるのかどうかとに基づいて水平使用のための変換タイプを推測し、現在の変換ブロックの高さが高さサイズしきい値を満たすのかどうかと、現在の変換ブロックを含む現在のビデオブロックがISPを使用して区分されるのかどうかとに基づいて垂直使用のための変換タイプを推測し得る。いくつかの例では、ビデオコーダは、水平と垂直との両方の変換タイプ推測のために同じサイズしきい値を使用し得る。たとえば、サイズしきい値が上限と下限とを含む場合、幅サイズしきい値の上限と下限とは高さサイズしきい値の上限と下限とに等しくなり得る。1つの具体的な例として、幅(width)と高さ(height)との両方のしきい値の下限は4であり得、幅と高さとの両方のしきい値の上限は16であり得る。
[0121] いくつかの例では、現在の係数ブロックのための変換タイプを導出する(すなわち、推測する)ために、ビデオコーダは、しきい値(たとえば、8、16、32)数以下のサンプル(たとえば、ルーマサンプル)をもつ任意の行または列を変換するためにDST-7変換を選択し、しきい値数よりも大きいサンプルをもつ任意の行または列を変換するためにDCT-2変換を選択し得る。
[0122] VVC Draft4(たとえば、JVET-M1001)に関連して、提案された変更の一例は、表8-15を以下と置き換えることによって達成され得る。
ここで、「0」および「1」は、それぞれDCT-2およびDST-7を示す。
[0123] ISPを使用して区分されるブロックは、2つのサンプルしかもたない行/列を有することを禁止され得る。したがって、本開示は、2点DST-7を提案する。(4バイトの追加のメモリしかもたらさない)2点DST-7行列のエントリは以下の通りであり得る。
[0124] 代替的に、提案される変更の一例は、次のようにVVC Draft4を修正することによって達成され得る。
ここで、「0」および「1」は、それぞれDCT-2およびDST-7を示し、変更(すなわち、削除された部分)は、下線およびイタリックにある。
[0125] 本開示では、概して、シンタックス要素など、ある情報を「シグナリング(signaling)」することに言及することがある。「シグナリング」という用語は、概して、符号化されたビデオデータを復号するために使用される値シンタックス要素および/または他のデータの通信を指すことがある。すなわち、ビデオエンコーダ200は、ビットストリームにおいてシンタックス要素の値をシグナリングし得る。一般に、シグナリングは、ビットストリームの中に値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムでビットストリーム(bitstream)を宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素を記憶デバイス112に記憶するときに起こり得るように、非リアルタイムでビットストリームを宛先デバイス116に移送し得る。
[0126] 図2Aと図2Bとは、例示的な4分木2分木(QTBT)構造130と、対応するコーディングツリーユニット(CTU)132とを示す概念図である。実線は4分木分割(quadtree splitting)を表し、点線は2分木分割(binary tree splitting)を表す。2分木の分割された各(すなわち、非リーフ)ノードにおいて、どの分割タイプ(すなわち、水平または垂直)が使用されるのかを示すために1つのフラグがシグナリングされ、ここで、この例では、0は水平分割(horizontal splitting)を示し、1は垂直分割(vertical splitting)を示す。4分木分割の場合、4分木ノードは、サイズが等しい4つのサブブロックに、水平および垂直にブロックを分割するので、分割タイプを示す必要がない。したがって、QTBT構造130の領域ツリーレベル(すなわち、実線)についての(スプリッティング情報などの)シンタックス要素と、QTBT構造130の予測ツリーレベル(すなわち、破線)についての(スプリッティング情報などの)シンタックス要素とを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。QTBT構造130の端末リーフノードによって表されるCUについての、予測および変換データなどのビデオデータを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。
[0127] 概して、図2BのCTU132は、第1および第2のレベルにおいてQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、(サンプル単位でCTU132のサイズを表す)CTUサイズと、最小4分木サイズ(最小許容4分木リーフノードサイズを表す、MinQTSize)と、最大2分木サイズ(最大許容2分木ルートノードサイズを表す、MaxBTSize)と、最大2分木深度(最大許容2分木深度を表す、MaxBTDepth)と、最小2分木サイズ(最小許容2分木リーフノードサイズを表す、MinBTSize)とを含み得る。
[0128] CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有し得、それらの各々は、4分木区分に従って区分され得る。すなわち、第1のレベルのノードは、(子ノードを有しない)リーフノードであるか、あるいは4つの子ノードを有するかのいずれかである。QTBT構造130の例は、分岐のために実線を有する親ノードと子ノードとを含むようなノードを表す。第1のレベルのノードは、最大許容2分木ルートノードサイズ(MaxBTSize)よりも大きくない場合、それぞれの2分木によってさらに区分され得る。1つのノードの2分木分割は、分割から得られるノードが最小許容2分木リーフノードサイズ(MinBTSize)または最大許容2分木深度(MaxBTDepth)に到達するまで反復され得る。QTBT構造130の例は、分岐のために破線を有するものとしてそのようなノードを表す。2分木リーフノードは、コーディングユニット(CU)と呼ばれ、コーディングユニット(CU)は、それ以上区分することなく、予測(たとえば、イントラピクチャ予測またはインターピクチャ予測)および変換のために使用される。上記で説明したように、CUは、「ビデオブロック」または「ブロック」と呼ばれることもある。
[0129] QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、(幅と高さの両方について)MinBTSizeは4として設定され、MaxBTDepthは4として設定される。4分木リーフノードを生成するために、最初に4分木区分がCTUに適用される。4分木リーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有し得る。4分木ノードが128×128である場合、サイズがMaxBTSize(すなわち、この例では64×64)を超えるので、それは2分木によってさらに分割されない。そうでない場合、リーフ4分木ノードは、2分木によってさらに区分される。したがって、4分木リーフノードはまた、2分木に対してルートノードであり、0としての2分木深度を有する。2分木深度がMaxBTDepth(この例では4)に達したとき、さらなる分割は許可されない。2分木ノードがMinBTSize(この例では4)に等しい幅を有するとき、そのことはそれ以上の水平分割が許されないことを暗示する。同様に、MinBTSizeに等しい高さを有する2分木ノードは、その2分木ノードに対してそれ以上の垂直分割が許されないことを暗示する。上述のように、2分木のリーフノードはCUと呼ばれ、それ以上区分することなく予測および変換に従ってさらに処理される。
[0130] 図3は、本開示の技法を実行し得る例示的なビデオエンコーダ(video encoder)200を示すブロック図である。図3は説明のために提供され、本開示で広く例示され記載される技法を限定するものと見なされるべきではない。説明の目的で、本開示では、HEVCビデオコーディング規格および開発中のH.266ビデオコーディング規格などのビデオコーディング規格のコンテキストにおいて、ビデオエンコーダ200について説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般的にビデオ符号化および復号に適用可能である。
[0131] 図3の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、フィルタユニット216と、復号ピクチャバッファ(DPB:decoded picture buffer)218と、エントロピー符号化ユニット220とを含む。ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、フィルタユニット216と、DPB218と、エントロピー符号化ユニット220とのいずれかまたはすべては、1つもしくは複数のプロセッサまたは処理回路において実装され得る。その上、ビデオエンコーダ200は、これらおよび他の機能を実行するための追加もしくは代替のプロセッサまたは処理回路を含み得る。
[0132] ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230およびDPB218は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0133] 本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在のブロックのビデオデータ)を記憶する参照メモリとして理解されたい。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的記憶を提供し得る。
[0134] 図3の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を与える回路を指し、実行され得る動作に関してあらかじめ設定される。プログラマブル回路は、様々なタスクを実行するように、および実行され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0135] ビデオエンコーダ200は、プログラマブル回路から形成される論理演算装置(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(図1)は、ビデオエンコーダ200が受信し実行するソフトウェアのオブジェクトコードを記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示されず)が、そのような命令を記憶し得る。
[0136] ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、残差生成ユニット204とモード選択ユニット202とにビデオデータを与え得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである生のビデオデータであり得る。
[0137] モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するために追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
[0138] モード選択ユニット202は、概して、符号化パラメータの組合せをテストするために複数の符号化パスを協調させ、そのような組合せのためのレートひずみ値を生じる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを最終的に選択し得る。
[0139] ビデオエンコーダ200は、一連のCTUにビデオデータメモリ230から取り出されたピクチャを区分し、スライス内の1つまたは複数のCTUをカプセル化し得る。モード選択ユニット210は、上で説明されたHEVCのQTBT構造または4分木構造などの木構造に従ってピクチャのCTUを区分し得る。上で説明されたように、ビデオエンコーダ200は、木構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、一般に「ビデオブロック」または「ブロック」と呼ばれることもある。
[0140] 概して、モード選択ユニット202はまた、現在のブロック(たとえば、現在のCUまたはHEVCでは、PUおよびTUの重複部分)のための予測ブロックを生成するためにそれの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在のブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前のコーディングされたピクチャ)の中で1つまたは複数の厳密に一致する参照ブロックを特定するために動き探索を実行し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在のブロックに対して潜在的な参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、一般に、現在のブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実行し得る。動き推定ユニット222は、現在のブロックに最も厳密に一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。
[0141] 動き推定ユニット222は、現在のピクチャ中の現在のブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測では、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測では、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが部分サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックの値を補間し得る。その上、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって特定される2つの参照ブロックのためのデータを取り出し、たとえば、サンプルごとの平均化または重み付け平均化を通じて、取り出されたデータを組み合わせ得る。
[0142] 別の例として、イントラ予測、またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在のブロックに隣接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、隣接サンプルの値を概して数学的に組み合わせ、現在のブロックにわたって規定の方向にこれらの計算された値をポピュレートして、予測ブロックを生成し得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在のブロックに対する隣接サンプルの平均を計算し、予測ブロックのサンプルごとにこの得られた平均を含むように予測ブロックを生成し得る。
[0143] モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在のブロックの未加工の、コーディングされていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在のブロックのための残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM:residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロックの中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つまたは複数の減算器回路を使用して形成され得る。
[0144] モード選択ユニット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サイズの非対称的区分をサポートし得る。
[0145] モード選択ユニットがCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ120とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0146] いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法の場合、モード選択ユニット202は、コーディング技法に関連するそれぞれのユニットを介して、符号化されている現在のブロックのための予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構成すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるためにこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
[0147] 上記で説明したように、残差生成ユニット204は、現在のブロックに対するビデオデータと、対応する予測ブロックとを受信する。残差生成ユニット204は、次いで、現在のブロックのための残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在のブロックとの間のサンプルごとの差分を計算する。
[0148] 変換処理ユニット206は、(本明細書では「変換係数ブロック(transform coefficient block)」と呼ぶ)変換係数のブロックを生成するために残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、たとえば、回転変換などの1次変換および2次変換を実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。本明細書で説明されるように、変換処理ユニット206は、異なる係数ブロック(すなわち、変換係数のブロック)に異なる変換を選択的に適用し得る。
[0149] 量子化ユニット208は、量子化変換係数ブロックを生成するために変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在のブロックと関連付けられる量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUと関連付けられたQP値を調整することによって、現在のブロックと関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらすことがあり、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
[0150] 逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構成するために、それぞれ、量子化変換係数ブロックに逆量子化および逆変換を適用し得る。再構成ユニット214は、再構成された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度のひずみを伴うが)現在のブロックに対応する再構成されたブロックを生成し得る。たとえば、再構成ユニット214は、再構成されたブロックを生成するために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構成された残差ブロックのサンプルを加算し得る。
[0151] フィルタユニット216は、再構成されたブロックに対して1つまたは複数のフィルタ演算を実行し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクト(blockiness artifact)を低減するためのデブロッキング動作を実行し得る。フィルタユニット216の動作は、いくつかの例では、スキップされ得る。
[0152] ビデオエンコーダ200は、DPB218中に再構成されたブロックを記憶する。たとえば、フィルタユニット224の動作が必要とされない例において、再構成ユニット214は、再構成されたブロックをDPB218に記憶し得る。フィルタユニット224の動作が必要とされる例では、フィルタユニット216は、フィルタリングされた再構成されたブロックをDPB218に記憶し得る。動き推定ユニット222と動き補償ユニット224とは、後で符号化されるピクチャのブロックをインター予測するために、再構成(および潜在的にフィルタ処理)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在のピクチャの中の他のブロックをイントラ予測するために、現在のピクチャのDPB218の中の再構成されたブロックを使用し得る。
[0153] 概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するためにビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化動作を実行し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0154] ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構成するために必要なエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220は、ビットストリームを出力し得る。
[0155] 上記で説明された動作について、ブロックに関して説明する。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマおよびクロマ成分である。
[0156] いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックとに対して同じであり得る。
[0157] ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、ビデオブロックの現在の係数ブロックのために、複数の変換タイプから変換タイプを導出するように構成された1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表す。ビデオコーダは、ビデオブロックのための再構成された残差データのブロックを取得するために、選択された変換タイプを使用して現在の係数ブロックを変換し、ビデオブロックのための再構成された残差データに基づいて、ビデオブロックを再構成し得る。
[0158] 図4は、本開示の技法を実行し得る例示的なビデオデコーダ(video decoder)300を示すブロック図である。図4は説明のために提供され、本開示で広く例示され記載される技法を限定するものではない。説明の目的で、本開示は、ビデオデコーダ300についてJEM、VVC、およびHEVCの技法に従って説明されることを記載する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実行され得る。
[0159] 図4の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB:coded picture buffer)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構成ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構成ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つもしくは複数のプロセッサまたは処理回路において実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実行するための追加もしくは代替のプロセッサまたは処理回路を含み得る。
[0160] 予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット318の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0161] CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、ビデオデコーダ300が符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときに出力しおよび/または参照ビデオデータとして使用し得る復号されたピクチャを記憶する。CPBメモリ320およびDPB314は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0162] 追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320を用いて上記で論じられたデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行され得るソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
[0163] 図4に示されている様々なユニットは、ビデオデコーダ300によって実行される動作を理解するのを支援するために図示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図3と同様に、固定機能回路は、特定の機能を与える回路を指し、実行され得る動作にあらかじめ設定される。プログラマブル回路は、様々なタスクを実行するように、および実行され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0164] ビデオデコーダ300は、プログラマブル回路から形成されるALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行されるソフトウェアによって実行される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
[0165] エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、シンタックス要素を再生するためにビデオデータをエントロピー復号し得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、およびフィルタユニット312は、ビットストリームから抽出されるシンタックス要素に基づいて復号されたビデオデータを生成し得る。
[0166] 概して、ビデオデコーダ300は、ブロックごとにピクチャを再構成する。ビデオデコーダ300は、各ブロックに対して個々に再構成演算を実行し得る(ここで、現在再構成されているブロック、すなわち、現在復号されているブロックは、「現在のブロック(current block)」と呼ばれることがある)。
[0167] エントロピー復号ユニット302は、量子化変換係数ブロックの量子化変換係数を定義するシンタックス要素ならびに量子化パラメータ(QP)および/または変換モード指示などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度を決定するために、また同様に、逆量子化ユニット306が適用すべき逆量子化の程度を決定するために、量子化された変換係数ブロックと関連付けられるQPを使用し得る。逆量子化ユニット306は、たとえば、量子化された変換係数を逆量子化するためにビット単位の左シフト演算を実行し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
[0168] 逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在のブロックに関連する残差ブロックを生成するために変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。本明細書で説明されるように、変換処理ユニット206は、異なる係数ブロック(すなわち、変換係数のブロック)に異なる変換を選択的に適用し得る。
[0169] さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックを取り出すDPB314中の参照ピクチャ、ならびに現在のピクチャ中の現在のブロックのロケーションに対する参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(図3)に関して説明された方式と実質的に同様である方式でインター予測プロセスを実行し得る。
[0170] 別の例として、予測情報シンタックス要素が、現在のブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図3)に関して説明されたのと実質的に同様である様式でイントラ予測プロセスを実行し得る。イントラ予測ユニット318は、DPB314から、現在のブロックに対する隣接サンプルのデータを取り出し得る。
[0171] 再構成ユニット310は、予測ブロックと残差ブロックとを使用して現在のブロックを再構成し得る。たとえば、再構成ユニット310は、現在のブロックを再構成するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
[0172] フィルタユニット312は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。たとえば、フィルタユニット312は、再構成されたブロックの端部に沿ってブロッキネスアーティファクトを低減するためにデブロッキング動作を実行し得る。フィルタユニット312の動作は、必ずしもすべての例で実行されるとは限らない。
[0173] ビデオデコーダ300は、DPB314中に再構成されたブロックを記憶し得る。上で論じられたように、DPB314は、イントラ予測のための現在のピクチャのサンプルおよび後続の動き補償のための以前に復号されたピクチャなどの、参照情報を予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPBからの復号されたピクチャを、後で提示するために、図1のディスプレイデバイス118などのディスプレイデバイス上に出力し得る。
[0174] このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、ビデオブロックの現在の係数ブロックのために、複数の変換タイプから変換タイプを導出するように構成された1つまたは複数の処理ユニットとを含む、ビデオ復号デバイスの一例を表す。ビデオコーダは、ビデオブロックのための再構成された残差データのブロックを取得するために、選択された変換タイプを使用して現在の係数ブロックを変換し、ビデオブロックのための再構成された残差データに基づいて、ビデオブロックを再構成し得る。
[0175] 図5は、適応変換選択を用いたハイブリッドビデオ符号化のためのシステムを示すブロック図である。図5のビデオエンコーダ200’は、図1および図3のビデオエンコーダ200と同様のビデオ符号化システムを示すと見なされ得る。たとえば、ビデオエンコーダ200’のブロック予測202’、ブロック変換(block transform)206’、量子化208’、逆量子化210’、逆変換212’、フレームバッファ218’、およびエントロピーコーディング220’、図3のビデオエンコーダ200のモード選択ユニット202、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、復号ピクチャバッファ218、およびエントロピー符号化ユニット220と同様の動作を実行すると見なされ得る。図5に示されているように、ビデオエンコーダ200’は、変換バンク(transform bank)207’を含み得、これは、残差データを変換するためにブロック変換206’と併せて動作するように構成され得る。たとえば、変換バンク207’とブロック変換206’とは、予測残差の各ブロックのために様々な変換(たとえば、様々なDCTまたはDST)を集合的に選択し、実行し得る。上記で説明されたように、いくつかの例では、変換バンク207’とブロック変換206’とは、変換サイド情報の選択肢をシグナリングし得る。たとえば、ブロック変換206’は、エントロピーコーディング220’に、使用される変換(すなわち、t)を明示的に示すシンタックス要素を符号化させ得る。
[0176] いくつかの例では、変換バンク207’とブロック変換206’とは、分離可能な方式でブロック変換を計算し得る。たとえば、計算の複雑さを低減するために、変換バンク207’とブロック変換206’とは、図6に示されているように、水平線と垂直線とを独立して変換し得る。言い換えれば、図6の水平矢印および垂直矢印に沿ったサンプルは独立して変換され得る。
[0177] HEVCより前のビデオコーディング規格では、固定の分離可能変換のみが使用され、ここで、DCT-2が垂直と水平の両方に使用される。HEVCでは、DCT-2に加えて、DST-7も、固定の分離可能変換として4×4のブロックのために採用される。US-2016-0219290-A1およびUS-2018-0020218-A1は、それらの固定変換の適応型の拡張について説明し、US-2016-0219290-A1のAMTの一例は、Joint Video Experts Team(JVET)のJoint Experimental Model(JEM)、ITU-T SG16 WP3とISO/IEC JTC1/SC29/WG11とのJoint Video Experts Team(JVET)、JEM Software、https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0において採用されている。
[0178] 本開示の1つまたは複数の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダおよび/またはビデオデコーダ)は、暗黙的な変換選択を実行し得る。たとえば、ビデオコーダは、ブロックのための残差データを変換するための変換を暗黙的に選択するためにルールの1つまたは複数のセットを適用し得る。このようにして、ビデオコーダは、コーディング効率を改善し得る。特に、本開示の技法により、ビデオデコーダは、選択された変換を実際にシグナリングするオーバーヘッドなしに適応型の変換選択を使用する利益を取得することが可能になる。
[0179] VVC Draft4では、比較的複雑で、良好なコーディングパフォーマンスを与えない2つの暗黙的な変換導出(implicit transform derivation)がある。本開示は、同様のまたはより良好な圧縮/コーディングパフォーマンス/効率を与え得るより単純な代替導出を提案した。
[0180] VVC Draft4および参照ソフトウェアVTM-4.0)における関連する技法について以下で説明する。
[0181] VVC Draft4/VTM-4.0では、複数変換選択(MTS)は、変換が(i)複数の候補の中から選択するために明示的にシグナリングされるのか、または(ii)ブロックの形状に基づいて暗黙的に導出されるのかを決定するために高レベルのフラグを使用する。後者の場合、最大サイズ16の水平または垂直変換としてのDST-7とDCT-2との組合せ。特に、ブロック形状に依存する条件に従うことは、VTM-4.0における暗黙的なMTSを定義する。
- ブロックの幅と高さとが等しく、両方が16以下である場合、DST-7が水平方向と垂直方向との両方に使用される。
- ブロックの幅がそれの高さよりも小さく、それが16以下である場合、DST-7が、水平にあり、DCT-2が垂直方向に使用される。
- ブロックの高さがそれの幅よりも小さく、それが16以下である場合、DST-7が、垂直にあり、DCT-2が水平方向に使用される。
- そうでない場合、DCT-2が両方向に使用される。
[0182] VVC Draft4/VTM-4.0では、イントラサブブロック区分(ISP)がルーマブロックをコーディングするために使用されるとき、モード依存の変換選択が行われ、ここで、水平および垂直変換(trTypeHorおよびtrTypeVer)は、VVC Draft4における以下の表に基づいて導出される。
[0183] 上記で説明されたように、本開示の1つまたは複数の技法によれば、ビデオコーダは、利用可能なサイド情報に基づいて変換選択を暗黙的に導出するために1つまたは複数のルールセットを適用し得る。
[0184] 第1の例として、ビデオコーダは、コーディングユニット/変換ユニット(CU/TU)がいくつかの条件の下でDST-7のみを使用してコーディングされると決定し得る。たとえば、許可される最大1D変換サイズがコーデックではNである場合、ビデオコーダは、すべての可能なサイズのためにDST-7が使用され得ると決定し得る。たとえば(図7に示されているように、N個の行が、それぞれM個のサンプルを有し、それのM個の列がN個のサンプルを有する)N×Mのブロックが与えられた場合、ビデオコーダは、N点DST-7が垂直方向に使用され得、M点DST-7が水平方向に使用され得ると決定し得る。
[0185] 第2の例として、選択されたセットの次元について、ビデオコーダは、DST-7とDCT-2との異なる組合せが使用され得ると決定し得る。たとえば、ビデオコーダは、K個のサンプル以下をもつ任意の行または列にDST-7が適用され得、一方、Kよりも多いサンプルの数をもつ任意の行または列を変換するためにDCT-2が使用され得ると決定し得る。たとえば、図7の例では、NがKよりも小さく、MがKよりも大きい場合、ビデオコーダは、垂直方向にN点DST-7を使用し、水平方向にM点DCT-2を使用することを決定し得る。また、図7の例では、NとMとの両方がKよりも小さい場合、ビデオコーダは、水平方向と垂直方向との両方にDST-7を使用することを決定し得る。
[0186] 第3の例として、CU/TUが区分される場合、ビデオデコーダは、すべての区分が同じ暗黙的な変換選択方式を使用することができると決定し得る。いくつかの例では、ビデオコーダは、すべての区分されたサブブロック(サブTUまたはサブCU)のためにDST-7を使用し得る。いくつかの例では、ビデオコーダは、区分後のブロックの次元に応じてDST-7とDCT-2との組合せを使用し得る。いくつかの例では、VVC(VTM-4.0)においてイントラサブブロック区分(ISP:intra-subblock partitioning)を使用するコーディングブロックの場合、ビデオコーダは、第2の例において上記で説明されたように、ブロックの次元に応じてDST-7とDCT-2との組合せを使用し得る。たとえば、16個のサンプル以下をもつ任意の行または列のために、ビデオコーダは、DST-7をし得る。そうでない場合、ビデオコーダは、16よりも多いサンプル数をもつ任意の行または列を変換するためにDCT-2を使用し得る。いくつかの例では、ISPが2つのサンプルをもつ行/列を有することができるので、ビデオコーダは2点DST-7を使用し得る。前の標準では、2点DST-7は使用されていなかった。したがって、ビデオコーダは、以下のように2点DST-7行列の修正されたエントリを使用し得る。
[0187] 第4の例として、ビデオコーダは、イントラ予測モード(モードは図8に示されている)に基づいて変換を導出し得る。イントラ平面およびDCモード(intra planar and DC mode)では、ビデオコーダは、水平方向と垂直方向との両方にDST-7を使用し得る。イントラ対角角度モード(intra diagonal angular mode)(図8のモードインデックス(mode index)34)では、ビデオコーダは、水平方向と垂直方向との両方にDST-7を使用し得る。2から66までインデックス付けされた角度モード(angular mode)では、ビデオコーダは、モードインデックス[2,3,...,65,66]の間のモードインデックスのあらかじめ定義された間隔などのある範囲のモードにDST/DCTの異なる組合せを適用し得る。
1)すべての角度モード[2,3,...,66]からなる間隔の範囲は、2と30との間の所与の整数Tについて以下のように定義され得る。
2)範囲R2の角度モードでは、DST-7が水平方向と垂直方向との両方に適用され得る。
3)範囲R1の角度モードでは、DST-7が水平方向に適用され、DST-2が垂直方向に適用され得る。
4)範囲R3の角度モードでは、DST-2が水平方向に適用され、DST-7が垂直方向に適用され得る。
[0188] 第5の例として、DST-7およびDCT-2以外に、ビデオコーダは、異なるタイプのDCT/DST(たとえば、DST-4およびDCT-8)の組合せおよび1D識別変換を適用し得る。
[0189] 第6の例として、ビデオコーダは、イントラ予測されるCU/TUのみに上記の例の1つまたは複数の組合せを適用し得る。
[0190] 第7の例として、ビデオコーダは、インター予測されるCU/TUのみに上記の例の1つまたは複数の組合せを適用し得る。
[0191] 第8の例として、ビデオコーダは、イントラ予測されるCU/TUとインター予測されるCU/TUとの両方に使用される上記の例の1つまたは複数の組合せを適用し得る。
[0192] 第9の例として、ビデオコーダは、ルーマチャネルもしくはクロマチャネルまたはルーマチャネルとクロマチャネルとの両方に使用される上記の例の1つまたは複数の組合せを適用し得る。
[0193] 図9は、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオエンコーダ200(図1および図3)に関して説明されるが、他のデバイスが図9の方法と同様の方法を実行するように構成され得ることを理解されたい。たとえば、図5のビデオエンコーダ200’は、図9の方法と同様の方法を実行し得る。
[0194] この例では、ビデオエンコーダ200は、最初に、現在のブロックを予測する(350)。たとえば、ビデオエンコーダ200は、現在のブロックのための予測ブロックを形成し得る。ビデオエンコーダ200は、次いで、現在のブロックのための残差ブロックを計算し得る(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元のコーディングされていないブロックと、現在のブロックのための予測ブロックとの間の差分を計算し得る。ビデオエンコーダ200は、次いで、残差ブロックの係数を変換し、量子化し得る(354)。上記で説明されたように、ビデオエンコーダ200は、残差ブロックの係数を変換するときに使用すべき変換タイプを暗黙的に導出し得る。たとえば、ビデオエンコーダ200は、図11に関して以下で説明されられる技法を使用して変換タイプを導出し得る。
[0195] 次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査する(356)。走査の間、または走査に続いて、ビデオエンコーダ200は、係数をエントロピー符号化し得る(358)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して係数を符号化し得る。次いで、ビデオエンコーダ200は、ブロックのエントロピーコーディングされたデータを出力し得る(360)。
[0196] 図10は、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは現在CUを備え得る。ビデオデコーダ300(図1および図4)に関して説明されるが、他のデバイスが、図10の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0197] ビデオデコーダ300は、エントロピーコーディングされた予測情報、および現在のブロックに対応する残差ブロックの係数に対するエントロピーコーディングされたデータなどの、現在のブロックに対するエントロピーコーディングされたデータを受信し得る(370)。ビデオデコーダ300は、現在のブロックに対する予測情報を決定し残差ブロックの係数を再生するために、エントロピーコーディングされたデータをエントロピー復号し得る(372)。ビデオデコーダ300は、現在のブロックのための予測ブロックを計算するために、たとえば、現在のブロックのための予測情報によって示されるイントラ予測またはインター予測モードを使用して、現在のブロックを予測し得る(374)。ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(376)。ビデオデコーダ300は、次いで、残差ブロックを生成するために係数を逆量子化し、逆変換し得る(378)。上記で説明されたように、ビデオデコーダ300は、残差ブロックの係数を変換するときに使用すべき変換タイプを暗黙的に導出し得る。たとえば、ビデオデコーダ300は、図11に関して以下で説明されられる技法を使用して変換タイプを導出し得る。ビデオデコーダ300は、予測ブロックと残差ブロックとを組み合わせることによって、最終的に現在のブロックを復号し得る(380)。
[0198] 図11は、本開示の1つまたは複数の技法による、ビデオブロックの変換ブロックのための変換タイプを推測するための例示的な方法を示すフローチャートである。図11の技法は、ビデオコーダ(たとえば、ビデオエンコーダ200および/またはビデオデコーダ300)によって実行され得る。
[0199] ビデオコーダは、現在のビデオブロックの現在の変換ブロックを取得し得る(1102)。変換ブロックは、ビデオビットストリームから復号された1つまたは複数のシンタックス要素(たとえば、VVC Draft4の残差コーディングシンタックス表中に含まれるシンタックス要素に基づいて構成される変換係数の行列であり得る。現在のビデオブロックは、コーディングユニット(CU)であり得る。
[0200] ビデオコーダは、現在の変換ブロックのために複数の変換タイプから変換タイプを推測し得る。複数の変換タイプは、1つまたは複数の離散コサイン変換(DCT)と1つまたは複数の離散サイン変換(DST)とを含み得る。
[0201] 上記で説明されたように、ビデオコーダは、現在のビデオブロックがISPおよび/または変換ブロックのサイズを使用して区分されるのかどうかなど、1つまたは複数のファクタに基づいて変換タイプを推測し得る。図11に示されるように、ビデオコーダは、現在のビデオブロックがISPを使用して区分されると決定し得る(1104)。ビデオコーダは、現在のビデオブロックが1つまたは複数のシンタックス要素(たとえば、sps_isp_enabled_flag、intra_subpartitions_mode_flag、および/またはintra_subpartitions_split_flag)の値に基づいてISPを使用して区分されると決定し得る。たとえば、intra_subpartitions_split_flagシンタックス要素に基づいて、ビデオコーダは、現在のビデオブロックが区分されない(たとえば、分割されない)のか、水平方向に区分されるのか、または垂直方向に区分されるのかを決定し得る。
[0202] 現在のビデオブロックがISPを使用して区分されると決定すること(1104)に応答して、ビデオコーダは、現在の変換ブロックのサイズを決定し得る(1106)。たとえば、ビデオコーダは、変換ブロックの幅および/または高さを決定し得る。いくつかの例では、ビデオコーダは、各下位区分のための変換ブロックサイズを別々に決定し得る。他の例では、ビデオコーダは、単一の区分のための変換ブロックサイズを決定し、コーディングユニットの各区分のために決定されたサイズを利用し得る。
[0203] ビデオコーダは、現在の変換ブロックのサイズがサイズしきい値を満たすのかどうかを決定し得る。たとえば、図11に示されているように、ビデオコーダは、現在の変換ブロックのサイズが下限よりも大きく、上限よりも小さいのかどうか(すなわち、(サイズ>下限)と(サイズ<上限)との両方が真であるのかどうか)を決定し得る(1108)。上記で説明されたように、いくつかの例では、下限は、4つのサンプルであり得、上限は、16個のサンプルであり得る)。
[0204] 現在の変換ブロックのサイズがサイズしきい値を満たすと決定し、現在のビデオブロックがISPを使用して区分されると決定することに応答して、ビデオコーダは、選択された変換タイプとして1つまたは複数のDSTのうちの特定のDSTを選択し得る。たとえば、図11に示されているように、現在の変換ブロックのサイズがサイズしきい値を満たすと決定し、現在のビデオブロックがISPを使用して区分されると決定することに応答して、ビデオコーダは、現在の変換ブロックのための推測された変換タイプとしてDST-7を選択し得る(1108、1110の「はい」分岐)。代替的に、現在の変換ブロックのサイズがサイズしきい値を満たさないと決定し、現在のビデオブロックがISPを使用して区分されると決定することに応答して、ビデオコーダは、現在の変換ブロックのための推測された変換タイプとしてDCT-2を選択し得る(1108、1112の「いいえ」分岐)。
[0205] ビデオコーダは、再構成された残差データのブロックを取得するために、選択された変換タイプを使用してビデオブロックのための現在の変換ブロックを変換し得る(1114)。たとえば、選択された変換タイプがDST-7である場合、ビデオコーダ(たとえば、ビデオエンコーダ200/200’の逆変換処理ユニット212/212’および/またはビデオデコーダ300の逆変換処理ユニット308)は、逆DST-7変換を適用することによって再構成された残差データに変換ブロックの係数を変換し得る。
[0206] ビデオコーダは、ビデオブロックのための再構成された残差データに基づいて、ビデオブロックを再構成し得る(1116)。たとえば、ビデオエンコーダは、現在のブロックのためのイントラ予測されたサンプルのブロックに残差データを加算し得る。ビデオブロックがISPを使用して区分される場合、ビデオエンコーダは、現在のビデオブロックのそれぞれの下位区分のためのイントラ予測されたサンプルのそれぞれのブロックに再構成された残差データのそれぞれのブロックを加算し得る。
[0207] 以下の番号付けされた例に、本開示の1つまたは複数の態様を示し得る。
[0208] 例1. ビデオデータをコーディングする方法であって、ビデオブロックの現在の係数ブロックのために、複数の変換タイプから変換タイプを導出することと、ビデオブロックのための再構成された残差データのブロックを取得するために、選択された変換タイプを使用して現在の係数ブロックを変換することと、ビデオブロックのための再構成された残差データに基づいて、ビデオブロックを再構成することとを備える方法。
[0209]1 例2. 複数の変換タイプが、1つもしくは複数の離散コサイン変換(DCT)および/または1つもしくは複数の離散サイン変換(DST)を含む、例1に記載の方法。
[0210] 例3. 1つまたは複数のDCTは、DCT-1、DCT-2、DCT-3、DCT-4、DCT-5、DCT-6、DCT-7、およびDCT-8のうちの1つまたは複数を含む、例2に記載の方法。
[0211] 例4. 1つまたは複数のDSTは、DST-1、DST-2、DST-3、DST-4、DST-5、DST-6、DST-7、およびDST-8のうちの1つまたは複数を含む、例2または3に記載の方法。
[0212] 例5. 変換タイプを導出することは、現在の係数ブロックのサイズに基づいて変換タイプを導出することを備える、例1~4のいずれかに記載の方法。
[0213] 例6. 現在の係数ブロックのサイズに基づいて変換タイプを導出することは、DST-7変換タイプを選択することを備える、ここで、許可される最大1D変換サイズがNである、例5に記載の方法。
[0214] 例7. 現在の係数ブロックは、N×Mの次元を有し、DST-7変換タイプを選択することは、垂直使用のためにN点DST-7変換を選択し、水平使用のためにM点DST-7変換を選択することを備える、例6に記載の方法。
[0215] 例8. 変換タイプを導出することは、DST-7変換とDCT-2変換との異なる組合せを選択することを備える、例1~7の任意の組合せに記載の方法。
[0216] 例9. DST-7変換とDCT-2変換との異なる組合せを選択することは、K個のサンプル以下をもつ任意の行または列のためにDST-7変換を選択することと、K個より大きいサンプルをもつ任意の行または列のためにDCT-2変換を選択することとを備える、例8に記載の方法。
[0217] 例10. ビデオブロックが複数の区分に区分されると決定することに応答して、共通のルールセットを使用して複数の区分の各々の係数ブロックのためにそれぞれの変換タイプを選択することをさらに備える、例1~9の任意の組合せに記載の方法。
[0218] 例11. 複数の区分の各々のためにそれぞれの変換タイプを選択することは、複数の区分のすべての係数ブロックのためにDST-7を選択することを備える、例10に記載の方法。
[0219] 例12. 複数の区分の各々のためにそれぞれの変換タイプを選択することは、区分の次元に基づいてDST-7変換とDCT-2変換との異なる組合せを選択することを備える、例10に記載の方法。
[0220] 例13. 区分の次元に基づいてDST-7変換とDCT-2変換との異なる組合せを選択することは、しきい値数以下のサンプルをもつ任意の行または列のためにDST-7変換を選択することと、しきい値数より大きいサンプルをもつ任意の行または列のためにDCT-2変換を選択することとを備える、例12に記載の方法。
[0221] 例14. しきい値が16である、例13に記載の方法。
[0222] 例15. 複数の区分にビデオブロックを区分することは、イントラサブブロック区分(ISP)を使用してビデオブロックを区分することを備える、例10~14の任意の組合せに記載の方法。
[0223] 例16. DST-7変換を使用して変換することは、以下の2点DST-7行列を使用して現在の係数ブロックを変換することを備える、例15に記載の方法。
[0224] 例17. ビデオブロックを予測するために使用されるイントラ予測モードを決定すること、ここにおいて、ビデオブロックの現在の係数ブロックのための変換タイプを導出することは、イントラ予測モードに基づいてビデオブロックの現在の係数ブロックのための変換タイプを導出することを備える、をさらに備える、例1~16の任意の組合せに記載の方法。
[0225] 例18. イントラ予測モードに基づいてビデオブロックの現在の係数ブロックのための変換タイプを導出することは、イントラ予測モードが平面またはDCモードであると決定することに応答して、水平方向と垂直方向との両方で現在の係数ブロックのためにDST-7変換を選択することを備える、例17に記載の方法。
[0226] 例19. イントラ予測モードに基づいてビデオブロックの現在の係数ブロックのための変換タイプを導出することは、イントラ予測モードが対角角度モードであると決定することに応答して、水平方向と垂直方向との両方で現在の係数ブロックのためにDST-7変換を選択することを備える、例17または18のいずれかに記載の方法。
[0227] 例20. 対角角度モードはモードインデックス34である、例19に記載の方法。
[0228] 例21. イントラ予測モードに基づいてビデオブロックの現在の係数ブロックのための変換タイプを導出することは、イントラ予測モードが角度モードであると決定することに応答して、イントラ予測モードのモードインデックスに基づいて現在の係数ブロックのために変換タイプを選択することを備える、例17~20のいずれかに記載の方法。
[0229] 例22. イントラ予測モードのモードインデックスに基づいて現在の係数ブロックのための変換タイプを選択することは、イントラ予測モードのモードインデックスを含む複数の範囲のうちの範囲を識別することと、識別された範囲に基づいて現在の係数ブロックのための変換タイプを選択することとを備える、例21に記載の方法。
[0230] 例23. 範囲を識別することが、モードインデックスが第1のしきい値(threshold)と第2のしきい値との間にあると決定することに応答して第1の範囲を識別することと、モードインデックスが第2のしきい値と第3のしきい値との間にあると決定することに応答して第2の範囲を識別することと、モードインデックスが第3のしきい値と第4のしきい値との間にあると決定することに応答して第3の範囲を識別することとを備える、例22に記載の方法。
[0231] 例24. モードインデックス(mode index)が第1のしきい値と第2のしきい値との間にあると決定することに応答して第1の範囲を識別することが、モードインデックスが[2,...,(33-T)]内にあると決定することに応答して第1の範囲を識別することを備え、モードインデックスが第2のしきい値と第3のしきい値との間にあると決定することに応答して第2の範囲を識別することが、モードインデックスが[(34-T),...,(34+T)]内にあると決定することに応答して第2の範囲を識別することを備え、モードインデックスが第3のしきい値と第4のしきい値との間にあると決定することに応答して第3の範囲を識別することが、モードインデックスが[(35+T),...,66]内にあると決定することに応答して第3の範囲を識別することを備え、Tは、2と30との間の整数である、例23に記載の方法。
[0232] 例25. 識別された範囲に基づいて現在の係数ブロックのための変換タイプを選択することは、第1の範囲を識別することに応答して水平使用のためにDST-7を選択し、垂直使用のためにDCT-2を選択することと、第2の範囲を識別することに応答して水平および垂直使用のためにDCT-7を選択することと、第3の範囲を識別することに応答して水平使用のためにDST-2を選択し、垂直使用のためにDCT-7を選択することとを備える、例23または例24に記載の方法。
[0233] 例26. コーディングすることが復号することを備える、例1~25のいずれかに記載の方法。
[0234] 例27. コーディングすることが符号化することを備える、例1~26のいずれかに記載の方法。
[0235] 例28. ビデオデータをコーディングするためのデバイスであって、例1~27のいずれかに記載の方法を実行するための1つまたは複数の手段例を備える、デバイス。
[0236] 例29. 1つまたは複数の手段は、回路中に実装される1つまたは複数のプロセッサを備える、例28に記載のデバイス。
[0237] 例30. ビデオデータを記憶するためのメモリをさらに備える、例28または29のいずれかに記載のデバイス。
[0238] 例31. 復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、例28~30のいずれかに記載のデバイス。
[0239] 例32. デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、例28~31のいずれかに記載のデバイス。
[0240] 例33. デバイスがビデオデコーダを備える、例28~32のいずれかに記載のデバイス。
[0241] 例34. デバイスがビデオエンコーダを備える、例28~33のいずれかに記載のデバイス。
[0242] 例35. 実行されたとき、例1~25のいずれかに記載の方法を1つまたは複数のプロセッサに実行させる命令を記憶したコンピュータ可読記憶媒体。
[0243] 例に応じて、本明細書で説明した技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る(たとえば、説明したすべての行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実行され得る。
[0244] 1つまたは複数の例において、前述の機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令もしくはコードとして、コンピュータ可読媒体上に記憶され得るか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0245] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体が、接続、搬送波、信号、または他の一時的媒体を含むのではなく、代わりに非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書において使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
[0246] 命令は、1つもしくは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積された論理回路もしくは個別の論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」および「処理回路」という用語は、前述の構造、または本明細書において説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/もしくはソフトウェアモジュール内で提供され、または複合コーデックに組み込まれ得る。また、本技法は、1つもしくは複数の回路または論理要素において十分に実装され得る。
[0247] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置に実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。そうではなく、上記で説明されたように、様々なユニットは、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされ得るか、または相互動作可能なハードウェアユニットの集合によって提供され得る。
[0248] 様々な例を説明した。これらおよび他の例は、以下の特許請求の範囲の範囲内に入る。