【文献】
SAXENA, Ankur and C. FERNANDES, Felix,On secondary transforms for intra/inter prediction residual,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 9th Meeting: Geneva, CH, 27 April - 7 May 2012, [JCTVC-I0232],2012年 4月28日,JCTVC-I0232 (version 3),pp. 1-3
【文献】
CHEN, Jianle et al.,Algorithm Description of Joint Exploration Test Model 1,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 1nd Meeting: Geneva, CH, 19-21 October 2015, [JVET-A1001],2016年 2月24日,JVET-A1001 (version 1),pp. 18-19
(58)【調査した分野】(Int.Cl.,DB名)
前記方法が、前記ビデオデータのビットストリームから、前記変換ユニット、前記予測ユニット、前記コーディングユニット、またはそれらの組合せに適用可能なインデックスを示すシンタックス要素を取得することをさらに備え、
非分離可能変換の前記セットの前記サブセットから前記候補を選択することが、前記第1の逆変換として、前記インデックスによって示される候補を選択することを備える、請求項1に記載の方法。
前記ビデオデータの符号化ビットストリーム中に、前記変換ユニット、前記予測ユニット、前記コーディングユニット、またはそれらの組合せのためのインデックスを示すデータを生成すること、前記選択された候補を示す前記インデックスが、前記第2の変換である、
をさらに備える、請求項8に記載の方法。
【発明を実施するための形態】
【0025】
[0041]概して、本開示では、ビデオコーディングにおけるイントラまたはインター予測残差データに適用される2次変換設計に関する技法について説明する。変換は、HEVCの拡張または次世代のビデオコーディング規格などの高度なビデオコーデックのコンテキストにおいて使用され得る。
【0026】
[0042]ビデオエンコーダは、ビデオエンコーダからビデオデコーダへの出力に好適な形態でビデオデータのための残差ブロックを表し得る。ビデオエンコーダからビデオデコーダに送信されるデータの量が低減されるように残差ブロックを表すために使用されるデータの量を低減することが望ましい。ビデオコーディングでは、分離可能変換は、非分離可能変換と比較して、より少ない演算(たとえば、加算、乗算)を使用し得るので、分離可能変換は、非分離可能変換に優先して適用されている。分離可能変換は、2つ以上のフィルタの生成物として書くことができるフィルタである。対照的に、非分離可能フィルタは、2つ以上のフィルタの生成物として書くことができない。
【0027】
[0043]ピクセル領域中の残差ブロックを周波数領域中の係数ブロックに変換する変換のみに依拠するのではなく、ビデオエンコーダはまた、係数ブロックのエネルギー圧縮を増加するために2次変換を適用し得る。たとえば、2次変換は、係数ブロックのDC係数のより近くに係数ブロックの非ゼロ係数を集中し得る。したがって、係数ブロックのDC係数と係数ブロックの最後の有意な(すなわち、非ゼロ)係数との間に係数は少なく、残差ブロックを表すために使用されるデータの量が低減され得る。同様に、ビデオデコーダは、係数ブロックを残差ブロックに変換するために逆1次変換を適用し得る。このようにして、残差ブロックを表すために使用されるデータが低減され、それによって、ビデオデータのための帯域幅および/または記憶要件が低減され、潜在的に、ビデオデコーダとビデオエンコーダとのエネルギー使用量が低減され得る。
【0028】
[0044]2次変換の既存の設計は、分離可能変換として2次変換を適用する。いくつかの例では、分離可能変換が非分離可能変換と比較してより低い複雑さを有するので、分離可能変換が非分離可能の代わりに適用されている。したがって、分離可能変換は、ビデオコーディング方式では、非分離可能変換よりも有利になっていることがある。しかしながら、2次変換としての非分離可能変換の使用は、改善された変換効率を与え得る。たとえば、デバイスは、分離可能2次変換よりも高速に、または少ない複雑さで、非分離可能2次変換を適用することが可能であり得る。したがって、本開示の一例によれば、ビデオデコーダは、第2の係数ブロックを生成するために逆量子化された第1の係数ブロックの少なくとも一部に第1の逆変換を適用し、第1の逆変換は、非分離可能変換であり得る。さらにこの例では、ビデオデコーダは、残差ビデオブロックを生成するために第2の係数ブロックに第2の逆変換を適用し得る。第2の逆変換は、周波数領域からピクセル領域に第2の係数ブロックを変換し得る。この例では、ビデオデコーダは、復号ビデオブロックを形成し得る。いくつかの例では、復号ビデオブロックを形成することの一部として、ビデオデコーダは、1つまたは複数の予測ブロックを残差ビデオブロックに加算し得る。
【0029】
[0045]ビデオデータの圧縮の差異、たとえば、異なるイントラ予測モードは、非分離可能2次変換の有効性を変更し得る。たとえば、第1のイントラ予測モードを使用するとき、第1の非分離可能2次変換が、第2の非分離可能2次変換よりも高いエネルギー圧縮を有し得る。しかしながら、本例では、第2のイントラ予測モードを使用するとき、第2の非分離可能2次変換が、第1の非分離可能2次変換よりも高いエネルギー圧縮を有し得る。したがって、候補非分離可能2次変換のセットから候補非分離可能2次変換を選択する技法を可能にすることが望ましいことがある。すなわち、異なるビデオデータに対して同じ非分離可能2次変換を使用するのではなく、ビデオエンコーダは、非分離可能2次変換のセットから候補非分離可能2次変換を選択し得る。たとえば、ビデオエンコーダは、イントラ予測モードに基づいて非分離可能2次変換のサブセットを構築し得る。同様に、いくつかの例では、ビデオデコーダは、非分離可能2次変換のセットから候補非分離可能2次変換を選択し得る。たとえば、ビデオデコーダは、ビデオデータの復号済み情報に基づいて非分離可能2次変換のサブセットを構築し得る。このようにして、より好適な非分離可能2次変換は、残差ブロックに適用されるように選択され得、これにより、ただ1つの非分離可能2次変換候補を使用する例と比較して、残差ブロックを表すために使用されるデータの量が低減され得る。
【0030】
[0046]いくつかの例では、必ずしもベクトルフォーマットで変換係数を量子化するのではなく、ビデオエンコーダは、変換係数を2次元係数ブロックに再編成し得る。より詳細には、いくつかの例では、量子化ユニットは、分離可能変換によって出力されるフォーマットであり得る2次元係数ブロックを量子化するように構成され得る。したがって、ビデオエンコーダが分離可能変換のみを使用するインスタンスならびにビデオエンコーダが分離可能変換と非分離可能変換とを使用したインスタンスにおいて、同じ量子化ユニットが使用され得る。
【0031】
[0047]
図1は、本開示で説明する技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。
図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを提供するソースデバイス12を含む。具体的には、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【0032】
[0048]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が、符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信標準規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、広域ネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成することができる。通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含むことができる。
【0033】
[0049]いくつかの例では、符号化されたデータは、出力インターフェース22からストレージデバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス12によって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0034】
[0050]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の応用など、様々なマルチメディア応用のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【0035】
[0051]
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、たとえば、2次変換に関係する技法など、本開示で説明する技法を適用するように構成され得る。本開示によれば、宛先デバイス14のビデオデコーダ30は、たとえば、2次変換に関係する技法など、本開示で説明する技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0036】
[0052]上述のように、ソースデバイス12は出力インターフェース22を含み、宛先デバイス14は入力インターフェース28を含む。いくつかの例では、出力インターフェース22は送信機を表し、入力インターフェース28は受信機を表す。他の例では、出力インターフェース22および入力インターフェース28は、トランシーバ(すなわち、ワイヤレスにデータ信号を送信することと受信することの両方が可能なインターフェース)の例を表す。トランシーバは、ワイヤレス信号中でビデオデータを送信および受信するように構成され得る。たとえば、出力インターフェース22は、トランシーバとして実装されたとき、符号化ビデオデータを含むデータ信号(たとえば、コンピュータ可読媒体16)を送り得、入力インターフェース28は、トランシーバとして実装されたとき、符号化ビデオデータを含むデータ信号(たとえば、コンピュータ可読媒体16)を受信し得る。上記で説明したように、ビデオエンコーダ20は符号化ビデオデータを出力インターフェース22に与え得、入力インターフェース28は符号化ビデオデータをビデオデコーダ30に与え得る。
【0037】
[0053]
図1の図示のシステム10は一例にすぎない。本開示で説明する技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスおよびビデオ復号デバイスによって実行されるが、本技法はまた、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによって実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ソースデバイス12と宛先デバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
【0038】
[0054]ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成ビデオの組合せを生成し得る。場合によっては、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
【0039】
[0055]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時的媒体を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを宛先デバイス14に与え得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解され得る。
【0040】
[0056]宛先デバイス14の入力インターフェース28はコンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化ユニットの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号ビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【0041】
[0057]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【0042】
[0058]ビデオエンコーダ20とビデオデコーダ30とは、上記で説明した規格などのビデオコーディング規格に従って動作し、いくつかの例では、ITU−T H.265とも呼ばれる高効率ビデオコーディング(HEVC)規格またはHEVC規格の拡張に従って、あるいは次世代のビデオコーディング規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例としては、MPEG−2およびITU−T H.263がある。
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットはITU H.223マルチプレクサプロトコルなどのプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0043】
[0059]本開示の技法は、概して、「SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS,Infrastructure of audiovisual services−Coding of moving video」、高効率ビデオコーディング、ITU−T H.265、2013年4月に記載されている高効率ビデオコーディング(HEVC)とも呼ばれるITU−T H.265に関して説明される。ただし、これらの技法は、HEVCの拡張および他の規格の拡張を含む他のビデオコーディング規格に適用され得る。他のビデオコーディング規格の例としては、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、および、スケーラブルビデオコーディング(SVC)拡張とマルチビュービデオコーディング(MVC)拡張とを含むITU−T H.264/MPEG−4、Part 10、アドバンストビデオコーディング(AVC)がある。
【0044】
[0060]H.265規格は、最近、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC:Joint Collaboration Team on Video Coding)によって確定された。以下でHEVC WDと呼ぶ、HEVCドラフト仕様が、http://phenix.int−evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC−N1003−v1.zipから入手可能である。
【0045】
[0061]また、HEVCのマルチビュー拡張であるMV−HEVCがJCT−3Vによって開発された。MV−HEVC WD8と呼ばれる、MV−HEVCのワーキングドラフト(WD)の例が、phenix.it−sudparis.eu/jct2/doc_end_user/documents/8_Valencia/wg11/JCT3V−H1002−v5.zipから入手可能である。SHVCと称するHEVCのスケーラブル拡張も、JCT−VCによって開発された。SHVC WD6と呼ばれるSHVCのワーキングドラフト(WD)の例が、phenix.it−sudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC−Q1008−v2.zipから入手可能である。
【0046】
[0062]HEVCおよび他のビデオコーデックでは、ビデオフレームまたはピクチャは、ルーマサンプルとクロマサンプルの両方を含み得る最大コーディングユニット(LCU)としても知られる、ツリーブロックのシーケンスに分割され得る。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。スライスは、コーディング順序で、いくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。
【0047】
[0063]HEVCにおいて符号化CTUを生成するために(すなわち、CTUを符号化するために)、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するために、CTUのコーディングツリーブロックに対して4分木区分化を再帰的に実行することができ、したがって、「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのN×Nブロックである。CUは、ルーマサンプルアレイ、CbサンプルアレイおよびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロックと、クロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とであり得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
【0048】
[0064]各ツリーブロックは、4分木データ構造に従ってCUに分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。たとえば、4分木内のノードは、そのノードに対応するCUがサブCUに分割されるか否かを示すスプリットフラグを含み得る。CUのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるか否かに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUをリーフCUとも呼ぶ。たとえば、16×16サイズのCUがさらに分割されない場合、その16×16CUが決して分割されなくても、4つの8×8サブCUはリーフCUとも呼ばれる。
【0049】
[0065]CUは、CUがサイズの特異性を有しないことを別にすれば、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードに分割され得、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最終の、分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームはまた、最小コーディングユニット(SCU)を定義し得る。CUのサイズは、コーディングノードのサイズに対応し、概して形状が正方形である。CUのサイズは、8×8ピクセルから最大サイズ、たとえば、64×64以上のピクセルをもつツリーブロックのサイズまでに及び得る。
【0050】
[0066]CUは、コーディングノードと、そのコーディングノードに関連する予測ユニット(PU:prediction unit)および変換ユニット(TU:transform unit)とを含む。各CUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。CUを符号化することの一部として、ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックであり得る。CUの予測ユニット(PU)は、ピクチャのルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、予測ブロックサンプルを予測するために使用されるシンタックス構造とであり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロックとCb予測ブロックとCr予測ブロックとのための予測ルーマブロックと予測Cbブロックと予測Crブロックとを生成し得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。
【0051】
[0067]ビデオエンコーダ20は、PUのための予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。各CUは、イントラ予測モードまたはインター予測モードのいずれかのうちの1つでコーディングされる。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連するピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成し得る。ビデオエンコーダ20が、PUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連するピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。
【0052】
[0068]区分モードは、CUがスキップであるのか、または直接モード符号化されるのか、イントラ予測モード符号化されるのか、またはインター予測モード符号化されるのかの間で異なり得る。PUは、形状が非正方形になるように区分され得る。
【0053】
[0069]さらに、ビデオエンコーダ20は、1つまたは複数の変換ブロックにCUの各残差ブロックを分解し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(正方形または非正方形)ブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とであり得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。いくつかの例では、残差ブロック、ルーマ成分およびクロマ成分に対して同じCUは、様々な方法で区分され得る。
【0054】
[0070]CUに関連するシンタックスデータはまた、たとえば、4分木に従うCUの1つまたは複数のTUへの区分を記述し得る。TUは、形状が正方形または非正方形(たとえば、矩形)であり得る。本開示は、「ブロック」という用語を、HEVCのコンテキストにおいてCU、PU、またはTUのうちのいずれか、または他の規格のコンテキストにおいて同様のデータ構造(たとえば、H.264/AVCのマクロブロックおよびそのサブブロック)を参照するために使用し得る。
【0055】
[0071]HEVC規格は、CUごとに異なり得る、TUに従う変換を可能にする。TUは、一般に、区分されたLCUのために定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、一般に、PUと同じサイズであるかまたはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用してより小さいユニットに再分割され得る。RQTのリーフノードは、変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、変換係数を生成するために変換され得、その変換係数は量子化され得る。
【0056】
[0072]リーフCUは1つまたは複数のPUを含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出しおよび/または生成するためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUのためのデータは、PUに対応するTUのためのイントラ予測モードを記述するデータを含み得るRQT中に含まれ得る。RQTは変換ツリーと呼ばれることもある。いくつかの例では、イントラ予測モードは、RQTの代わりに、リーフCUシンタックス中でシグナリングされ得る。一例として、PUがインターモード符号化されるとき、PUは、PUのための、1つまたは複数の動きベクトルなど、動き情報を定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルについての解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
【0057】
[0073]1つまたは複数のPUを有するリーフCUはまた、1つまたは複数のTUを含み得る。変換ユニットは、上で論じたように、RQT(TU4分木構造とも称する)を使用して指定され得る。たとえば、分割フラグは、リーフCUが4つの変換ユニットに分割されるのかどうかを示し得る。次いで、各変換ユニットは、さらなるサブTUにさらに分割され得る。TUがさらに分割されないとき、それはリーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは同じイントラ予測モードを共有する。すなわち、概して、リーフCUのすべてのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングでは、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値を、TUに対応するCUの一部と元のブロックとの間の差分として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUは、PUよりも大きいことも小さいこともある。イントラコーディングでは、PUは、同じCUのための対応するリーフTUとコロケートされ得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
【0058】
[0074]その上、リーフCUのTUはまた、上述のようにRQTまたは変換ツリーと呼ばれる、それぞれの4分木データ構造に関連付けられ得る。すなわち、リーフCUは、そのリーフCUがTUにどのように区分されるかを示す4分木を含み得る。TU4分木のルートノードは概してリーフCUに対応し、CU4分木のルートノードは概してツリーブロックに対応する。分割されないRQTのTUはリーフTUと呼ばれる。概して、本開示では、別段に明記されていない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
【0059】
[0075]ビデオシーケンスは、通常、一連のビデオフレームまたはピクチャを含む。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し、指定のコーディング規格に応じてサイズが異なり得る。
【0060】
[0076]本開示では、「N×N」および「N by N」は、垂直方向の寸法および水平方向の寸法に関するビデオブロックのピクセル寸法、たとえば、16x16ピクセルまたは16×16(16 by 16)ピクセルを指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセル(y=16)、および水平方向に16ピクセル(x=16)を有する。同様に、N×Nブロックは、概して、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、ここで、Nは非負整数値を表す。ブロック中のピクセルは行および列に配列され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはN×Mピクセルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
【0061】
[0077]CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間領域において予測ピクセルデータを生成する技法またはモードを記述するシンタックスデータを備え得、TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルとPUに対応する予測値との間のピクセル差に対応し得る。ビデオエンコーダ20は、CUのための残差データを表す量子化された変換係数を含むようにTUを形成し得る。すなわち、ビデオエンコーダ20は、(残差ブロックの形態の)残差データを計算し、変換係数のブロックを生成するために残差ブロックを変換し、次いで、被量子化変換係数を形成するために変換係数を量子化し得る。ビデオエンコーダ20は、量子化された変換係数を含むTU、ならびに他のシンタックス情報(たとえば、TUのための分割情報)を形成し得る。
【0062】
[0078]上述のように、変換係数を生成するための任意の変換の適用の後に、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ得、ただし、nはmよりも大きい。
【0063】
[0079]量子化の後に、ビデオエンコーダ20は、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化された変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は適応型走査を実行し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピー符号化方法に従って、1次元ベクトル中の変換係数を表す特定のシンタックス要素をエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30によって使用するための、符号化ビデオデータに関連付けられたシンタックス要素をエントロピー符号化し得る。
【0064】
[0080]概して、ビデオデコーダ30は、符号化データを復号するためにビデオエンコーダ20によって実行されるものと、相反するが、同様のプロセスを実行する。たとえば、ビデオデコーダ30は、残差ブロックを再生するために、受信されたTUの変換係数を逆量子化および逆変換する。ビデオデコーダ30は、予測されたブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)を使用し得る。ビデオデコーダ30は、元のブロックを再生するために予測されたブロックと残差ブロックとを(ピクセルごとに)組み合わせ得る。ビデオデコーダ30は、ブロック境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実行することなどの追加の処理を実行し得る。さらに、ビデオデコーダ30は、ビデオエンコーダ20のCABAC符号化プロセスに相反するが、それと実質的に同様の様式でCABACを使用してシンタックス要素を復号し得る。
【0065】
[0081]前述のように、ビデオエンコーダ20は、DCT、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。そのような分離可能変換は、入力信号の代替表現を導出するプロセスを示し得る。N点ベクトルx=[x
0,x
1,...,×
N-1]
Tおよび所与のベクトル{Φ
0,Φ
1,...,Φ
M-1}のセットを仮定すれば、xは、近似されるか、またはΦ
0,Φ
1,...,Φ
M-1の線形結合を使用して正確に表され得、これは、次のように公式化され得る。
【0069】
は、xの近似値または均等物であり得、ベクトルf=[f
i,f
2,...,f
M-1]は、変換係数ベクトルと呼ばれ、{Φ
0,Φ
1,...,Φ
M-1}は、変換基底ベクトルである。
【0070】
[0082]ビデオコーディングのシナリオでは、変換係数は、ほぼ非相関であり、疎であり得る。たとえば、入力ベクトルxのエネルギーは、数個の変換係数だけに圧縮され得、残りの大多数の変換係数は一般に0に近くなる。
【0071】
[0083]特定の入力データを仮定すれば、エネルギー圧縮に関する最適な変換は、いわゆるカルーネンレーベ変換(KLT)であり得る。KLTは、変換基底ベクトルとして入力データの共分散行列の固有ベクトルを使用する。したがって、KLTは、実際には、データ依存型の変換であり、一般的な数学的公式化を有しない。しかしながら、入力データが1次定常マルコフ過程を形成するなどのいくつかの仮定の下で、対応するKLTが実際には単一変換の正弦波ファミリーのメンバーであることが文献で証明されており、これは、Jain,A.K.、A sinusoidal family of unitary transforms、IEEE Trans.on Pattern Analysis and Machine Intelligence、1、356、1979に記載されている。単一変換の正弦波ファミリーは、次のように公式化される変換基底ベクトルを使用して変換を示し得る。
【0073】
上記の式中で、eは、2.71828にほぼ等しい自然対数の底であり、A、B、およびθは概して複素数であり、mの値に依存する。さらに、上記の式中で、Φ
mは、ベクトルであり、Φ
m(k)は、ベクトルΦ
mのk番目の成分を示し、iは、複素数の虚数部を示す。
【0074】
[0084]離散フーリエ変換、コサイン変換、サイン変換、および(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)ファミリーは、異なるタイプに基づいて合計16個の変換を含み得、DCTおよびDSTの異なるタイプの完全な定義を以下に与える。異なるタイプは、A、B、およびθの異なる値に対応し得る。
【0075】
[0085]入力N点ベクトルが、x=[x
0,x
1,...,×
N-1]
Tとして示されると仮定すると、N点ベクトルは、行列を乗じることによってy=[y
0,y
1,...,y
N-1]
Tとして示される別のN点変換係数ベクトルに変換される。xからyに変換するプロセスは、さらに、以下の変換公式化のうちの1つに従って示され得、ここにおいて、kは、両端値を含む0〜N−1にわたる。
DCTタイプI(DCT−1):
【0109】
DCTタイプVIII(DCT−8):
【0113】
、
DSTタイプII(DST−2):
【0125】
、
DSTタイプVI(DST−6):
【0127】
、
DCTタイプVII(DST−7):
【0129】
、
DSTタイプVIII(DST−8):
【0135】
[0086]DSTタイプなどの変換タイプは、変換基底関数の数学的公式化によって指定され得る。たとえば、4点DST−VIIおよび8点DST−VIIは、Nの値にかかわらず同じ変換タイプを有する。
【0136】
[0087]一般性を失うことなく、すべての上記の変換タイプは、以下の一般的公式化を使用して表され得る。
【0138】
上記の式中で、Tは、ある変換の定義によって指定され得る変換行列、たとえば、DCTタイプI〜DCTタイプVIIIまたはDSTタイプI〜DSTタイプVIIIであり、Tの行ベクトル、たとえば、[T
i,0,T
i,1,T
i,2,...,T
i,N-1]は、i番目の変換基底ベクトルである。N点入力ベクトルに適用される変換は、N点変換と呼ばれることがある。
【0139】
[0088]また、1次元入力データxに適用される上記の変換公式化が、以下のような行列乗算形態で表され得ることに留意されたい。
y=T・x
上記の式中で、Tは、変換行列を示し、xは、入力データベクトルを示し、yは、出力変換係数ベクトルを示す。
【0140】
[0089]前の部分に導入された変換は、1次元入力データに適用され得、変換はまた、2次元入力データソースに拡張され得る。以下の説明では、Xは、入力M×Nデータアレイである。2次元入力データに変換を適用する技法は、分離可能および非分離可能2次元変換を含み得る。
【0141】
[0090]分離可能2次元変換は、以下のように公式化される、Xの水平および垂直ベクトルに連続的に1次元変換を適用する。
Y=C・X・R
T
上記の式中で、CおよびRは、それぞれ、所与のM×MおよびN×Nの変換行列を示す。公式化から、Cが、Xの列ベクトルに1次元変換を適用し、一方、Rが、Xの行ベクトルに1次元変換を適用することがわかる。本明細書の後の部分において、簡単のために、CおよびRは、左側(垂直)および右側(水平)変換として示され、それらはどちらも、変換ペアを形成する。Cが、Rに等しく、直交行列である場合がある。そのような場合、分離可能2次元変換は、ただ1つの変換行列によって決定され得る。
【0142】
[0091]いくつかの例では、非分離可能2次元変換は、最初に、以下の数学的マッピングを適用することによって、Xのすべての要素を単一のベクトル、すなわち、X’に再編成し得る。
X’
(i・N+j)=X
i,j
次いで、1次元変換T’は、下記のようにX’に適用され得る。
Y=T’・X’
上記の式中で、T’は、(M*N)×(M*N)変換行列である。
【0143】
[0092]ビデオコーディングでは、2次元変換が、1次元変換と比較してより少ない動作カウント(たとえば、加算、乗算)を使用し得るので、分離可能2次元変換が適用され得る。
【0144】
[0093]H.264/AVCなどの従来のビデオコーデックでは、4点および8点DCTタイプIIの整数近似値がイントラおよびインター予測残差の両方に適用される。言い換えれば、ビデオコーダは、イントラまたはインター予測を使用して生成される残差ブロックに4点および8点DCTタイプIIの整数近似値を適用し得る。残差サンプルの様々な統計値により良く適応するために、DCTタイプII以外の変換のよりフレキシブルなタイプが、新世代のビデオコーデックにおいて利用される。たとえば、HEVCでは、イントラ予測残差のために、4点タイプVII DSTの整数近似値が利用され得る。J.Han、A.SaxenaおよびK.Rose、「Towards jointly optimal spatial prediction and adaptive transform in video/image coding」、IEEE International Conference on Acoustics,Speech and Signal Processing(ICASSP)、2010年3月、pp.726〜729に記載されているように、HEVCで使用されるDSTタイプVIIが、イントラ予測方向に沿って生成される残差ベクトルについてDCTタイプIIよりも効率的であることが理論的に証明され、実験的に実証されている。たとえば、DSTタイプVIIは、水平イントラ予測方向によって生成された行残差ベクトルについてDCTタイプIIよりも効率的である。HEVCでは、4点DSTタイプVIIの整数近似値は、4×4ルーマイントラ予測残差ブロックにのみ適用される。HEVCで使用される4点DST−VIIを以下に示す。
4×4DST−VII:
{29,55,74,84}
{74,74,0,−74}
{84,−29,−74,55}
{55,−84,74,−29}
[0094]HEVCでは、4×4ルーマイントラ予測残差ブロックでない残差ブロックに対して、以下に示すように、4点、8点、16点および32点DCTタイプIIの整数近似値も適用され得る。
4点DCT−II:
{64,64,64,64}
{83,36,−36,−83}
{64,−64,−64,64}
{36,−83,83,−36}
8点DCT−II:
{64,64,64,64,64,64,64,64}
{89,75,50,18,−18,−50,−75,−89}
{83,36,−36,−83,−83,−36,36,83}
{75,−18,−89,−50,50,89,18,−75}
{64,−64,−64,64,64,−64,−64,64}
{50,−89,18,75,−75,−18,89,−50}
{36,−83,83,−36,−36,83,−83,36}
{18,−50,75,−89,89,−75,50,−18}
16点DCT−II:
{64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64}
{90,87,80,70,57,43,25,9,−9,−25,−43,−57,−70,−80,−87,−90}
{89,75,50,18,−18,−50,−75,−89,−89,−75,−50,−18,18,50,75,89}
{87,57,9,−43,−80,−90,−70,−25,25,70,90,80,43,−9,−57,−87}
{83,36,−36,−83,−83,−36,36,83,83,36,−36,−83,−83,−36,36,83}
{80,9,−70,−87,−25,57,90,43,−43,−90,−57,25,87,70,−9,−80}
{75,−18,−89,−50,50,89,18,−75,−75,18,89,50,−50,−89,−18,75}
{70,−43,−87,9,90,25,−80,−57,57,80,−25,−90,−9,87,43,−70}
{64,−64,−64,64,64,−64,−64,64,64,−64,−64,64,64,−64,−64,64}
{57,−80,−25,90,−9,−87,43,70,−70,−43,87,9,−90,25,80,−57}
{50,−89,18,75,−75,−18,89,−50,−50,89,−18,−75,75,18,−89,50}
{43,−90,57,25,−87,70,9,−80,80,−9,−70,87,−25,−57,90,−43}
{36,−83,83,−36,−36,83,−83,36,36,−83,83,−36,−36,83,−83,36}
{25,−70,90,−80,43,9,−57,87,−87,57,−9,−43,80,−90,70,−25}
{18,−50,75,−89,89,−75,50,−18,−18,50,−75,89,−89,75,−50,18}
{9,−25,43,−57,70,−80,87,−90,90,−87,80,−70,57,−43,25,−9}
32点DCT−II:
{64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64}
{90,90,88,85,82,78,73,67,61,54,46,38,31,22,13,4,−4,−13,−22,−31,−38,−46,−54,−61,−67,−73,−78,−82,−85,−88,−90,−90}
{90,87,80,70,57,43,25,9,−9,−25,−43,−57,−70,−80,−87,−90,−90,−87,−80,−70,−57,−43,−25,−9,9,25,43,57,70,80,87,90}
{90,82,67,46,22,−4,−31,−54,−73,−85,−90,−88,−78,−61,−38,−13,13,38,61,78,88,90,85,73,54,31,4,−22,−46,−67,−82,−90}
{89,75,50,18,−18,−50,−75,−89,−89,−75,−50,−18,18,50,75,89,89,75,50,18,−18,−50,−75,−89,−89,−75,−50,−18,18,50,75,89}
{88,67,31,−13,−54,−82,−90,−78,−46,−4,38,73,90,85,61,22,−22,−61,−85,−90,−73,−38,4,46,78,90,82,54,13,−31,−67,−88}
{87,57,9,−43,−80,−90,−70,−25,25,70,90,80,43,−9,−57,−87,−87,−57,−9,43,80,90,70,25,−25,−70,−90,−80,−43,9,57,87}
{85,46,−13,−67,−90,−73,−22,38,82,88,54,−4,−61,−90,−78,−31,31,78,90,61,4,−54,−88,−82,−38,22,73,90,67,13,−46,−85}
{83,36,−36,−83,−83,−36,36,83,83,36,−36,−83,−83,−36,36,83,83,36,−36,−83,−83,−36,36,83,83,36,−36,−83,−83,−36,36,83}
{82,22,−54,−90,−61,13,78,85,31,−46,−90,−67,4,73,88,38,−38,−88,−73,−4,67,90,46,−31,−85,−78,−13,61,90,54,−22,−82}
{80,9,−70,−87,−25,57,90,43,−43,−90,−57,25,87,70,−9,−80,−80,−9,70,87,25,−57,−90,−43,43,90,57,−25,−87,−70,9,80}
{78,−4,−82,−73,13,85,67,−22,−88,−61,31,90,54,−38,−90,−46,46,90,38,−54,−90,−31,61,88,22,−67,−85,−13,73,82,4,−78}
{75,−18,−89,−50,50,89,18,−75,−75,18,89,50,−50,−89,−18,75,75,−18,−89,−50,50,89,18,−75,−75,18,89,50,−50,−89,−18,75}
{73,−31,−90,−22,78,67,−38,−90,−13,82,61,−46,−88,−4,85,54,−54,−85,4,88,46,−61,−82,13,90,38,−67,−78,22,90,31,−73}
{70,−43,−87,9,90,25,−80,−57,57,80,−25,−90,−9,87,43,−70,−70,43,87,−9,−90,−25,80,57,−57,−80,25,90,9,−87,−43,70}
{67,−54,−78,38,85,−22,−90,4,90,13,−88,−31,82,46,−73,−61,61,73,−46,−82,31,88,−13,−90,−4,90,22,−85,−38,78,54,−67}
{64,−64,−64,64,64,−64,−64,64,64,−64,−64,64,64,−64,−64,64,64,−64,−64,64,64,−64,−64,64,64,−64,−64,64,64,−64,−64,64}
{61,−73,−46,82,31,−88,−13,90,−4,−90,22,85,−38,−78,54,67,−67,−54,78,38,−85,−22,90,4,−90,13,88,−31,−82,46,73,−61}
{57,−80,−25,90,−9,−87,43,70,−70,−43,87,9,−90,25,80,−57,−57,80,25,−90,9,87,−43,−70,70,43,−87,−9,90,−25,−80,57}
{54,−85,−4,88,−46,−61,82,13,−90,38,67,−78,−22,90,−31,−73,73,31,−90,22,78,−67,−38,90,−13,−82,61,46,−88,4,85,−54}
{50,−89,18,75,−75,−18,89,−50,−50,89,−18,−75,75,18,−89,50,50,−89,18,75,−75,−18,89,−50,−50,89,−18,−75,75,18,−89,50}
{46,−90,38,54,−90,31,61,−88,22,67,−85,13,73,−82,4,78,−78,−4,82,−73,−13,85,−67,−22,88,−61,−31,90,−54,−38,90,−46}
{43,−90,57,25,−87,70,9,−80,80,−9,−70,87,−25,−57,90,−43,−43,90,−57,−25,87,−70,−9,80,−80,9,70,−87,25,57,−90,43}
{38,−88,73,−4,−67,90,−46,−31,85,−78,13,61,−90,54,22,−82,82,−22,−54,90,−61,−13,78,−85,31,46,−90,67,4,−73,88,−38}
{36,−83,83,−36,−36,83,−83,36,36,−83,83,−36,−36,83,−83,36,36,−83,83,−36,−36,83,−83,36,36,−83,83,−36,−36,83,−83,36}
{31,−78,90,−61,4,54,−88,82,−38,−22,73,−90,67,−13,−46,85,−85,46,13,−67,90,−73,22,38,−82,88,−54,−4,61,−90,78,−31}
{25,−70,90,−80,43,9,−57,87,−87,57,−9,−43,80,−90,70,−25,−25,70,−90,80,−43,−9,57,−87,87,−57,9,43,−80,90,−70,25}
{22,−61,85,−90,73,−38,−4,46,−78,90,−82,54,−13,−31,67,−88,88,−67,31,13,−54,82,−90,78,−46,4,38,−73,90,−85,61,−22}
{18,−50,75,−89,89,−75,50,−18,−18,50,−75,89,−89,75,−50,18,18,−50,75,−89,89,−75,50,−18,−18,50,−75,89,−89,75,−50,18}
{13,−38,61,−78,88,−90,85,−73,54,−31,4,22,−46,67,−82,90,−90,82,−67,46,−22,−4,31,−54,73,−85,90,−88,78,−61,38,−13}
{9,−25,43,−57,70,−80,87,−90,90,−87,80,−70,57,−43,25,−9,−9,25,−43,57,−70,80,−87,90,−90,87,−80,70,−57,43,−25,9}
{4,−13,22,−31,38,−46,54,−61,67,−73,78,−82,85,−88,90,−90,90,−90,88,−85,82,−78,73,−67,61,−54,46,−38,31,−22,13,−4}
[0095]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に記載されているように、残差ブロックの様々な特性に適合するために、HEVCでは残差4分木(RQT)を使用する変換コーディング構造が適用され得る。上記で簡単に説明したように、各ピクチャは、コーディングツリーユニット(CTU)に分割され得る。CTUは、特定のタイルまたはスライスについてラスタ走査順序でコーディングされ得る。CTUは、正方形ブロックであり得、4分木、たとえば、コーディングツリーのルートを表し得る。CTUサイズは8×8から64×64ルーマサンプルにわたり得るが、一般に64×64が使用される。各CTUは、さらに、CUと呼ばれるより小さい正方形ブロックに分割され得る。CTUがCUに再帰的に分割された後、各CUは、さらに、1つまたは複数のPUおよび1つまたは複数のTUに分割され得る。CUのTUへの区分は、4分木手法に基づいて再帰的に実行され得る。したがって、各CUの残差信号は、ツリー構造、すなわち、残差4分木(RQT)によってコーディングされる。
【0145】
[0096]RQTは、4×4から32×32ルーマサンプルまでのTUサイズを可能にする。
図2に、CUが、文字a〜jで標示された10個のTUを含む一例と、対応するブロック区分とを示す。RQTの各ノードは、実際はTUであり得る。個々のTUは、深度優先トラバーサルによる再帰的Z走査に従う、アルファベット順として
図2に示す深度優先ツリートラバーサル順序で処理され得る。4分木手法は、残差信号の変動する空間周波数特性に対する変換の適応を可能にし得る。一般に、より大きい空間サポートを有するより大きい変換ブロックサイズは、より良い周波数解像度を与える。しかしながら、より小さい空間サポートを有するより小さい変換ブロックサイズは、より良い空間解像度を与える。空間解像度と周波数解像度との2つの間のトレードオフは、エンコーダモード決定によって選定され得る。たとえば、より大きいまたはより小さい変換ブロックサイズの選定は、レートひずみ最適化技法に基づき得る。レートひずみ最適化技法は、各コーディングモード(たとえば、特定のRQT分割構造)についてコーディングビットと再構築ひずみとの加重和、たとえば、レートひずみコストを計算し得る。さらに、レートひずみ最適化技法は、最小レートひずみコストをもつコーディングモードを最良のモードとして選択し得る。
【0146】
[0097]3つのパラメータ、すなわち、RQTの最大深度、RQTの最小許容変換サイズ、および最大許容変換サイズがRQTにおいて定義され得る。最小および最大変換サイズは、前の段落で述べたサポートされるブロック変換に対応し得る、4×4から32×32サンプルまでの範囲内で変動し得る。RQTの最大許容深度はTUの数を制限し得る。0に等しい最大深度は、各含まれた変換ブロック(TB)が最大許容変換サイズ、たとえば、32×32に達した場合、コーディングブロック(CB)がこれ以上分割され得ないことを意味し得る。
【0147】
[0098]3つのパラメータの各々は、相互作用し、RQT構造に影響を及ぼす。ルートCBサイズが64×64であり、最大深度が0に等しく、最大変換サイズが32×32に等しい場合について考える。この場合、CBは、さもなければ、それが、許容されないことがある64×64TBにつながることになるので、少なくとも1回区分され得る。RQTパラメータ、たとえば、最大RQT深度、最小および最大変換サイズは、シーケンスパラメータセットレベルにおいてビットストリーム中で送信され得る。RQT深度に関して、イントラコード化CUとインターコード化CUとについて異なる値が指定され、シグナリングされ得る。
【0148】
[0099]4分木変換は、イントラ残差ブロックとインター残差ブロックの両方に適用され得る。現在の残差4分木パーティションと同じサイズのDCT−II変換が残差ブロックに適用され得る。しかしながら、現在の残差4分木ブロックが4×4であり、イントラ予測によって生成される場合、上記の4×4DST−VII変換が適用され得る。HEVCでは、より大きいサイズの変換、たとえば、64×64変換は、主に、それらの限られた利益と比較的より小さい解像度のビデオに対する比較的高い複雑さとにより採用されない。
【0149】
[0100]DSTタイプVIIが従来のDCTタイプIIと比較してイントラコーディング効率を効率的に改善し得ることにもかかわらず、予測残差が様々な統計値を提示するので、変換効率は、比較的制限され得、DCTタイプIIおよびDSTタイプVIIの固定使用は、すべての可能な場合に効率的に適合しないことがある。
【0150】
[0101]Limら、「Rate−distortion optimized adaptive transform coding」、Opt.Eng.vol.48、no.8、pp.087004−1〜087004−14、2009年8月に記載されているように、変換方式は、予測残余についてDCTまたはDSTの整数バージョンを適応的に採用し、ブロックごとに、DCTまたはDST変換が予測残余のために使用されるのかどうかがシグナリングされる。Proc.15th IEEE Int.Conf.Image Process.におけるY.YeおよびM.Karczewicz、「Improved H.264 intra coding based on bidirectional intra prediction,directional transform,and adaptive coefficient scanning」、2008年10月、pp.2116〜2119に記載されているように、各イントラ予測モードは、変換の一意のペア(たとえば、CおよびR)、KLTペアとしてあらかじめ定義されたペアにマッピングされ得、したがって、モード依存変換(MDDT)が適用される。このようにして、異なるイントラ予測モードのために異なるKLTが使用され得る。ただし、どの変換を使用すべきかは、あらかじめ定義され、イントラ予測モードに依存する。
【0151】
[0102]しかしながら、X.Zhaoら、「Video coding with rate−distortion optimized transform」、IEEE Trans.Circuits Syst.Video Technol.、vol.22、no.1、pp.138〜151、2012年1月に記載されているように、より多くの変換が使用され得、そのような例は、オフライントレーニングプロセスから導出される変換候補のあらかじめ定義されたセットからの変換へのインデックスを明示的にシグナリングし得る(たとえば、インデックスを示すデータを符号化し得る)。MDDTと同様に、そのような例では、各イントラ予測方向は、変換のペアのそれの一意のセットを有し得る。インデックスは、どの変換ペアがセットから選定されるのかを指定するためにシグナリングされ得る。たとえば、最も小さいブロックサイズ4×4では最大4つの垂直KLTと最大4つの水平KLTとがあり得る。したがって、この例では、16個の組合せが選定され得る。より大きいブロックサイズでは、より少数の組合せが使用され得る。本開示で提案する技法は、イントラ予測残差とインター予測残差との両方に適用し得る。本開示では、イントラ予測残差は、イントラ予測を使用して生成される残差データを指す。さらに、本開示では、インター予測残差は、インター予測を使用して生成される残差データを指す。インター予測残差では、KLTの最大16個の組合せが選定され得、組合せ(4×4では4つ、および8×8では16個)のうちの1つへのインデックスがブロックごとにシグナリングされ得る。
【0152】
[0103]Saxenaら、「DCT/DST−based transform coding for intra prediction in image/video coding」、IEEE Trans.Image Processing、およびYeoら、「Mode−dependent transforms for coding directional intra prediction residuals」、IEEE Trans.Circuits Syst.Video Technol.vol.22、no.4、pp.545〜554、2012に記載されているように、複数の変換が使用され得る。ただし、そのような例では、(トレーニングされ得る)KLTを使用する代わりに、(左変換と右変換との両方が同じである)変換ユニットのために、DCT(DCT−II)またはDST(DST−VII)のいずれかが使用され得、どちらを使用すべきかは、シグナリングされたフラグによって決定される。
【0153】
[0104]さらに、Zouら、「Rate−Distortion Optimized Transforms Based on the Lloyd−Type Algorithm for Intra Block Coding」、IEEE Journal of Selected Topics in Signal Processing、Volume:7、Issue:6、2013年11月に記載されているように、いくつかのあらかじめ定義されたKLTペアが使用され、変換ペアへのインデックスが、コーディングユニットについて(導出される代わりに)シグナリングされ得、したがって、CUの各TUが変換の同じペアを使用する。
【0154】
[0105]Anら、「Non−CE7:Boundary−Dependent Transform for Inter−Predicted Residue」、JCTVC−G281に記載されているように、CU内のそれらのロケーションに従ってTUのインター予測された残差のために複数の変換が選定され得る。DST−VIIとDST−VIIの反転バージョンとから、C変換とR変換との両方が選定され得る。したがって、CU内のTUにとって最大4つの組合せが可能であり得る。しかしながら、組合せがPUのロケーションによって完全に決定され得るので、どの組合せが使用されているのかをシグナリングする必要がないことがある。
【0155】
[0106]2015年3月23日に出願された米国仮出願第62/137,038号、2015年1月26日に出願された米国仮出願第62/107,996号、および2016年1月25日に出願された米国特許出願第15/005,736号において、イントラ予測残差とインター予測残差との両方のための拡張複数変換(EMT:Enhanced Multiple Transforms)技法が提案されている。EMTでは、従来のDCT−2タイプの変換のみが使用されるのか、または他の非DCT2タイプの変換が使用されるのかを示すためにCUレベルのフラグがシグナリングされ得る。CUレベルが1としてシグナリングされる場合、現在のTUのために変換サブセットからどの水平/垂直変換が使用されるのかを示すために現在のCU内のTUごとに2ビットのTUレベルのインデックスがさらにシグナリングされ得る。変換サブセットは、DST−VII、DCT−VIII、DCT−VおよびDST−Iから選択される2つの変換を含み得、選択は、イントラ予測モードとそれが水平変換サブセットであるのか垂直変換サブセットであるのかとに基づき得る。
【0156】
[0107]
図3Aは、ビデオエンコーダ20などのビデオエンコーダにおける例示的な変換プロセスの図である。
図3Bは、ビデオデコーダ30などのビデオデコーダにおける例示的な変換プロセスの図である。
図3Aの例では、ビデオエンコーダ20は、順方向1次変換40(fwdT)と、それに続く2次変換41(fwdR)と、それに続く順方向量子化42(fwdQua)とを適用する。
図3Bの例では、ビデオデコーダ30は、逆量子化43(invQ)と、それに続く逆2次変換44(invR)と、それに続く逆1次変換45(invTran)とを適用する。順方向1次変換40は、ピクセル領域からの残差サンプルを周波数領域中の変換係数に変換し得る。逆1次変換43は、周波数領域中の変換係数をピクセル領域中の残差サンプルに変換し得る。
【0157】
[0108]2次変換41は、変換係数のより良いエネルギー圧縮のために使用され得る。
図3Aおよび
図3Bに示すように、2次変換41は、第1の変換プロセスから導出された変換係数に対して別の変換を適用し得る。
【0158】
[0109]E.Alshina、A.Alshin、F.Fernandes、A.Saxena、V.Seregin、Z.Ma、W.−J.Han(Samsung)、「CE7:Experimental results of ROT by Samsung」ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、JCTVC−E380、ジュネーブ、スイス、2011年3月16〜23日に記載されているように、2次変換は、回転変換(ROT)であり得る。ROTは、1次変換を置き換えない。しかしながら、ROTは、変換係数行列の低周波数部分だけに2次変換として適用される。上記で説明したROTでは、イントラコード化TUごとに、4つのあらかじめ定義された変換候補からどのROTが適用されるのかを示すインデックスがシグナリングされる。4×4の2次変換は、4×4のイントラコード化TUに適用され、一方、8×8の2次変換は、8×8およびそれよりも大きいイントラコード化TUに適用される。たとえば、本例では、2次変換は、次のように指定され得る。
【0160】
[0110]上記に示した4つの変換候補において、1つの候補は、2次変換を適用しないことに対応し、他の3つの候補は、α1,α2,...,α6の3つの異なる設定によって生成されたR
verticalおよびR
horizontalに対応する。より詳細な説明は、K.McCann、W.−J.Han、I.−K.Kim、J.−H.Min、E.Alshina、A.Alshin、T.Lee、J.Chen、V.Seregin、S.Lee、Y.−M.Hong、M.−S.Cheon、N.Shlyakhov、「Video coding technology proposal by Samsung(and BBC)」ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、JCTVC−A124、ドレスデン、ドイツ、2010年4月15〜23日に見いだされ得る。
【0161】
[0111]
図4は、ビデオデコーダ30などのビデオデコーダによって適用される例示的なROTの図である。
図4の例では、ビデオデコーダは、4×4から32×32までのサイズにわたる変換係数ブロック62に対して逆量子化60(Inv Q)を実行する。さらに、
図4の例では、ビデオデコーダは、変換係数行列の低周波数部分だけに2次変換として逆ROT64(Inv ROT)を適用する。たとえば、
図4の例に示すように、4×4および8×8の変換係数行列のすべての変換係数は、変換係数行列の低周波数部分中にあると見なされ得る。しかしながら、
図4に示すように、16×16および32×32の変換係数行列の左上の8×8のサブブロック中の変換係数のみが変換係数行列の低周波数部分中にあると見なされる。さらに、
図4の例では、ビデオデコーダは、変換係数行列を残差ブロックに変換するために変換係数行列に逆DCT変換66(Inv DCT変換)を適用する。
図4の例では、16×16および32×32の変換係数行列に逆DCT変換66を適用する前に、ビデオデコーダは、16×16および32×32の変換係数行列の左上の8×8のサブブロックを、逆ROT64の適用によって生成される対応する8×8の変換係数行列に置き換え得る。
【0162】
[0112]E.Alshina、A.Alshin、J.−H.Min、K.Choi、A.Saxena、M.Budagavi、「Known tools performance investigation for next generation video coding」、ITU−T SG16 Doc.VCEG−AZ05、2015年6月に記載されているように、ROTは、低周波数部分だけでなく、TU全体に拡張され得る。より詳細には、3つの4×4の分離可能2次変換候補があらかじめ定義され得、選択された1つが、CUレベルで2ビットのインデックスを用いて明示的にシグナリングされ得る。2ビットのインデックスを、本明細書では、ROTインデックスと呼ぶことがある。一例では、ROTインデックスが0であるとき、2次変換は適用されない。しかしながら、この例では、ROTインデックスが1、2および3であるとき、3つのあらかじめ定義された2次変換候補のうちの1つに対応する2次変換が、現在のCU内のあらゆるTUに適用され得る。選択された2次変換を仮定すれば、現在のTUのあらゆる4×4のサブブロックに、2次4×4分離可能2次変換が適用され得る。
【0163】
[0113]2次変換の設計は、2次変換として分離可能変換を適用し得る。しかしながら、非分離可能変換が2次元画像ブロックに対して優れたコーディング利得を与え得るので、2次変換効率は改善され得る。言い換えれば、ビデオコーディングのシナリオでは、変換係数は、ほぼ非相関であり、疎であり得、したがって、入力ベクトルxのエネルギーは、数個の変換係数だけに圧縮され得、残りの大多数の変換係数は一般に0に近くなり得る。本例では、非分離可能変換であるKLTは、ピクセル領域から周波数領域に係数を単に変換するのではなく、変換基底ベクトルとして入力データの共分散行列の固有ベクトルを使用するので、最適なエネルギー圧縮を有し得る。
【0164】
[0114]より詳細には、分離可能変換は、水平および/または垂直方向に沿ったピクセル相関を捕らえ得る。対照的に、非分離可能変換は、2次元画像ブロック中の2つのピクセルの任意のペアの間の相関を捕らえ得る。したがって、非分離可能変換は、分離可能変換よりもデータ相関を低減するさらなる柔軟性を有し得る。たとえば、非水平方向または非垂直方向に沿った相関を示す画像ブロック、たとえば、45度のエッジテクスチャの場合、分離可能変換は、45度方向に沿ったピクセル間の相関を低減するのに効率的でないことがあるが、非分離可能は、相関を効率的に低減し得る。
【0165】
[0115]上記で説明した問題に鑑みて、以下の技法が提案される。以下で説明する本開示の技法が、米国特許出願第15/006,994号および米国仮出願第62/108,491号に記載されている技法など、適応型成分間残差予測のための技法と連携して使用され得ることを理解されたい。以下のテキストに、本開示で提案する項目別にあげる技法について説明する。ビデオエンコーダ20および/またはビデオデコーダ30は、項目別にあげる技法を個々に適用し得る。代替的に、ビデオエンコーダ20および/またはビデオデコーダ30は、項目別にあげる技法の任意の組合せを適用し得る。
【0166】
[0116]第1の技法によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、量子化プロセスと変換プロセスとの間に非分離可能2次変換を適用するように構成される。たとえば、平面モードに適用される(3つの非分離可能変換を含む)非分離可能変換セットは、次の通りであり得る。
【0167】
【表1-1】
【表1-2】
【表1-3】
【0168】
[0117]この例の一態様では、非分離可能2次変換は、KLTであり得、これは、オフライントレーニングから導出されるか、または仮定画像相関モデルを使用してオフラインで分析的に導出され得る。いくつかの例では、画像相関モデルは、関数f(x,y)であり、これは、ランダムベクトルのi番目の要素とj番目の要素との間の共分散を測定する。ランダムベクトルは、複数の次元をもつランダム変数であり得る。言い換えれば、画像相関関数は対称f(x,y)=f(y,x)であり得、共分散行列Cov(x,y)=f(x,y)は、半正定値であり得る。相関モデルの一例は、f{x*y}=ρ
|x-y|であり、ここで、0≦ρ≦1である。
【0169】
[0118]この例の一態様では、非分離可能2次変換は、KLTであり得、これは、オフライントレーニングから導出されるか、または符号化/復号プロセス中にオンラインで導出されたKLTを使用してオフラインで分析的に導出され得る。いくつかの例では、符号化/復号プロセス中に、ビデオエンコーダ20および/またはビデオデコーダ30は、変換係数の統計値を収集し、2次変換が適用される場合、変換係数の相関行列が更新されるように構成される。更新された相関行列に基づいて、ビデオエンコーダ20および/またはビデオデコーダ30は、固有ベクトルを抽出し、それらの対応する固有値の順序に配列されるすべての固有ベクトルから構成される行列としてKLT変換コアを導出するように構成され得る。
【0170】
[0119]第1の技法の一例によれば、ビデオエンコーダ20は、残差ビデオブロックを形成し得る。いくつかの例では、残差ビデオブロックを形成することの一部として、ビデオエンコーダ20は、コーディングされているビデオブロックから1つまたは複数の予測ブロックを減算する。さらに、ビデオエンコーダ20は、第1の係数ブロックを生成するために残差ビデオブロックに第1の変換を適用し得る。この例では、第1の変換は、ピクセル領域から周波数領域に残差ビデオブロックを変換する。本明細書では、ピクセル領域または空間領域は、ピクセルの値の変化がそのピクセルの輝度および/または色の変化に対応する領域を指すことがある。ただし、本明細書では、周波数領域は、ピクセルの値の変化がピクセルのピクセル値がピクセル領域中で変化する速度の変化に対応する領域を指すことがある。さらに、ビデオエンコーダ20は、第2の係数ブロックを生成するために第1の係数ブロックの少なくとも一部に2次変換を適用し得る。本開示の第1の技法によれば、第2の変換は、KLTなどの非分離可能変換である。ビデオエンコーダ20は、次いで、第2の係数ブロックを量子化し得る。
【0171】
[0120]同様に、第1の技法の一例によれば、ビデオデコーダ30は、第1の係数ブロックを逆量子化し得る。さらに、この例では、ビデオデコーダ30は、第2の係数ブロックを生成するために、逆量子化された第1の係数ブロックの少なくとも一部に第1の逆変換(すなわち、逆2次変換)を適用し得る。本開示の第1の技法によれば、第1の逆変換は、KLTなどの非分離可能変換である。さらに、この例では、第2の係数ブロックを生成するために第1の逆変換を適用した後に、ビデオデコーダ30は、残差ビデオブロックを生成するために、第2の係数ブロックに第2の逆変換を適用し得る。この例では、第2の逆変換は、周波数領域からピクセル領域に第2の係数ブロックを変換する。さらに、この例では、ビデオデコーダ30は、復号ビデオブロックを形成し得る。いくつかの例では、復号ビデオブロックを形成することの一部として、ビデオデコーダ30は、1つまたは複数の予測ブロックを残差ビデオブロックに加算する。たとえば、ビデオデコーダ30は、1つまたは複数の予測ブロックを残差ビデオブロックに加算し、1つまたは複数の予測ブロックとの残差ビデオブロックの加算に基づいて復号ビデオブロックを形成し得る。
【0172】
[0121]第2の技法によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、非分離可能変換のサブセットを構築するために、3つ以上の非分離可能変換候補からの事前選択を実行する。いくつかの例では、非分離可能変換のサブセットは、オフライントレーニングによって導出されるKLTを指すことがあり、変換コアは、エンコーダ20および/またはデコーダ30の両方について固定数としてハードコーディングされる。ビデオエンコーダ20および/またはビデオデコーダ30は、変換のサブセットから現在のTUのために使用されるべき最終変換を選定し得る。
【0173】
[0122]たとえば、ビデオエンコーダ20は、3つ以上の非分離可能変換候補を含む非分離可能変換のセットのサブセットを構築し得る。この例では、ビデオエンコーダ20は、第1の逆変換として非分離可能変換のセットのサブセットから1つの候補を選択し得る。この例のいくつかの態様では、非分離可能変換のセットは、12個の変換サブセットを含み、12個の変換サブセットは、非分離可能変換のセットのサブセットを含む。この例のいくつかの態様では、非分離可能変換のセットは、ビデオデータのためのルーマイントラ予測モードによって指定される。たとえば、ビデオエンコーダ20は、ビデオデータのための第1のルーマイントラ予測モードが非分離可能変換の第1のセットとともに使用されることを指定し得、ビデオデータのための第2のルーマイントラ予測モードが非分離可能変換の第2のセットとともに使用されることを指定し得る。より詳細には、ビデオエンコーダ20は、シグナリングされたインデックス(たとえば、インデックスを示すデータ)と選択された変換サブセットとによって変換候補を指定し得る。
【0174】
[0123]同様に、ビデオデコーダ30は、3つ以上の非分離可能変換候補を含む非分離可能変換のセットのサブセットを構築し得る。この例では、ビデオデコーダ30は、第2の変換として非分離可能変換のセットのサブセットから1つの候補を選択し得る。この例のいくつかの態様では、非分離可能変換のセットは、12個の変換サブセットを含み、12個の変換サブセットは、非分離可能変換のセットのサブセットを含む。この例のいくつかの態様では、非分離可能変換のセットは、ビデオデータのためのルーマイントラ予測モードによって指定される。
【0175】
[0124]一例では、変換のサブセットを構築する事前選択は、イントラ予測モード、EMTのCUレベルのおよび/またはTUレベルのインデックス、RQT深度、量子化係数、基準予測ブロック、PU内の現在のTUの相対ロケーション(TUが現在のPUのどの境界に位置しているのか)、ブロックサイズ、ブロック形状(それが正方形ブロックであるのかまたは非正方形ブロックであるのか、および高さと幅の比率)などの復号済み情報によって決定され得る。言い換えれば、ビデオデコーダ30は、別個のまたは追加のシグナリングに依拠するのではなく、復号情報に従って変換のサブセットをあらかじめ選択し得る。たとえば、ビデオエンコーダ20は、復号情報に基づいてサブセットを決定し得、復号情報は、イントラ予測モードと、CUレベルのEMTインデックスと、TUレベルのEMTインデックスと、残差4分木深度と、量子化係数と、基準予測ブロックと、PU内の現在のTUの相対ロケーションとのうちの1つまたは複数を備える。この例のいくつかの態様では、12個の変換サブセットが適用され、イントラ予測モードから変換サブセット選択へのマッピングを指定するルックアップテーブルがあらかじめ定義されており、イントラ予測モードとこのルックアップテーブルとが与えられれば、3つの異なる非分離可能変換を含む変換サブセットが、最初に選択され、次いで、3つの非分離可能変換のうちの1つが、さらに、復号情報によって指定され、第1の変換を実行するために使用される。同様に、この例のいくつかの態様では、ビデオデコーダ30は、イントラ予測モード、CUレベルのEMTインデックス、TUレベルのEMTインデックス、残差4分木深度、量子化係数、基準予測ブロック、単位PU内の現在のTUの相対ロケーション、ブロックサイズ、およびブロック形状(それが正方形ブロックであるのかまたは非正方形ブロックであるのか、および高さと幅の比率)のサブセットベースの1つまたは複数を決定し得る。
【0176】
[0125]第2の技法のいくつかの例によれば、変換のサブセットの数は、小さい整数、たとえば、1、2、3、4、12、または34に限定され得る。さらに、この例のいくつかの態様では、変換の異なるサブセットは、異なるタイプの変換を含み得る。たとえば、ビデオエンコーダ20は、あらかじめ選択されたサブセットとして1つまたは複数の左変換を有する第1のサブセット、オアモアな右変換を有する第2のセット、または左右の変換を有する第3のセットをあらかじめ選択し得る。次いで、本例では、ビデオエンコーダ20は、選択された変換としてあらかじめ選択されたサブセットから1つの変換候補を選択し得る。たとえば、ビデオエンコーダ20は、エンコーダモード決定を使用して変換を選択し得、ビデオエンコーダ20は、変換のインデックスを示すデータを符号化する。同様に、ビデオデコーダ30は、ビットストリームからインデックスを復号し、あらかじめ選択された変換のセットから復号されたインデックスに基づいて変換を選択し得る。
【0177】
[0126]いくつかの例では、異なるイントラ予測モードに対応する非分離可能変換のセットの変換サブセット中の変換候補の総数が異なる。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のイントラ予測モードのために第1のサブセットを使用し、第2のイントラ予測モードのために第2のサブセットを使用し得る。
【0178】
[0127]一例では、合計12個の変換サブセットがある。この例では、12個の変換サブセットのそれぞれの変換サブセットは、3つの非分離可能変換候補を含んでいる。変換サブセットは、ルーマイントラ予測モードによって指定され得、異なるイントラモードに対して、同じ変換セットが適用され得る。本明細書では、イントラ予測モードは、予測されているブロックのための予測の様々な方向を指すことがある。イントラ予測モードの例としては、限定はしないが、垂直、水平、対角左下、対角右下、垂直右側、水平下側、垂直左側、水平上側、および予測されているブロックのための予測の他の方向があり得る。言い換えれば、この例のいくつかの態様では、非分離可能変換のセットは、ビデオデータのためのルーマイントラ予測モードによって指定される。たとえば、ビデオデコーダ30は、特定のルーマイントラ予測モードのために12個の変換サブセットのうちの1つの変換サブセットを選択し得る。本例の一態様では、ビデオデコーダ30は、第1のイントラ予測モードのために選択されたサブセット中に含まれている3つの非分離可能変換候補の第1の変換を選択し得、第2のイントラ予測モードのために選択されたサブセット中に含まれている3つの非分離可能変換候補の第2の変換を選択し得る。
【0179】
[0128]一例では、合計12個の変換サブセットがあり、各変換サブセットは、5つの非分離可能変換候補を含み得る。変換セットは、ルーマイントラ予測モードならびにEMTのCUレベルのインデックスおよびTUレベルのインデックスによって指定され得る。異なるイントラモードに対して、同じ変換セットが適用され得る。
【0180】
[0129]一例では、変換サブセットは、ただ1つの変換を含み得る。異なるTUサイズに対して、変換サブセット中の変換の数が異なり得、典型的な数オブは、限定はしないが、2、3および4であり得る。異なるイントラ予測モードに対して、変換サブセット中の変換の数が異なり得、典型的な数は、限定はしないが、2、3および4であり得る。本例の一態様では、平面またはDC予測モードでは、変換サブセット中の変換の数は2であり、一方、他の予測モードでは、変換サブセット中の変換の数は3である。
【0181】
[0130]
図5および
図6は、本開示の第3の技法に関係する。
図5は、2次変換係数再編成プロセスを含む例示的な符号化プロセスの一部を示すブロック図である。
図6は、2次変換係数再編成プロセスを含む例示的な復号プロセスの一部を示すブロック図である。
図5では、ビデオエンコーダ20は、2次元係数ブロック102を生成するために残差ブロック101に1次変換100を適用する。さらに、
図5の符号化プロセスは、非分離可能2次変換106を含む。非分離可能2次変換106は、入力として1次元係数ベクトル156をとり、出力としてインア1次元係数ベクトル108を生成し得る。したがって、
図5の例では、1次変換100は、2次元係数ブロック102を生成するが、非分離可能2次変換106は、入力として1次元係数ベクトルをとる。したがって、ビデオエンコーダ20は、2次元係数ブロック102を1次元係数ベクトル105に変換するために再編成プロセス104を実行し得る。いくつかの例では、再編成プロセス104は、非分離可能2次変換106の一部であると見なされ得る。
【0182】
[0131]さらに、量子化プロセス114は、入力として2次元係数ブロック112をとり得、量子化された2次元係数ブロック116を出力し得る。したがって、本開示の第3の技法によれば、ビデオエンコーダ20は、ビデオエンコーダ20が符号化中に2次変換106を適用した後、2次元係数ブロック112として非分離可能2次変換106によって導出された1次元係数ベクトル108を再編成するために2次変換係数再編成プロセス110を適用し得る。再編成プロセス110を適用することは、1次元係数ベクトルを受け入れるために量子化プロセス106を変更する必要をなくし得る。
【0183】
[0132]
図6では、ビデオデコーダ30は、2次元係数ブロック152を導出するために、量子化された2次元係数ブロック151に逆量子化150を適用し得る。さらに、
図6の復号プロセスは、逆2次変換158を含む。逆2次変換158は、入力として1次元係数ベクトル156をとり、1次元係数ベクトル160を出力し得る。たとえば、逆2次変換158は、入力として16×1の係数ベクトルをとり得、16×1の係数ベクトルを出力し得る。ただし、逆量子化150は、2次元係数ブロック152を出力し得、1次逆変換166は、入力として2次元係数ブロック164をとり得る。したがって、本開示の第3の技法によれば、ビデオデコーダ30が復号プロセス中に2次逆変換158を適用する前に、ビデオデコーダ30は、1次元係数ベクトル156として逆量子化150によって導出された2次元係数ブロック152を再編成するために2次変換係数再編成プロセス154を適用し得る。逆2次変換158を適用する前に再編成プロセス154を適用することは、1次元係数ベクトルを生成するために逆量子化150を変更する必要をなくし得る。さらに、ビデオデコーダ30は、2次元係数ブロック164として1次元係数ベクトル160を再編成するために2次変換係数再編成プロセス162を適用し得る。ビデオデコーダ30は、次いで、残差ブロック168を生成するために2次元係数ブロック164に1次逆変換166を適用し得る。1次逆変換166を適用する前に再編成プロセス162を適用することは、1次逆変換166を変更する必要をなくし得る。いくつかの例では、再編成プロセス162は、2次逆変換158の一部と見なされる。
【0184】
[0133]したがって、第3の技法によれば、ビデオエンコーダ20は、残差ビデオブロックを形成し得る。残差ビデオブロックを形成することの一部として、ビデオエンコーダ20は、コーディングされているビデオブロックから1つまたは複数の予測ブロックを減算し得る。さらに、ビデオエンコーダ20は、第1の2次元係数ブロック(たとえば、2次元係数ブロック102)を生成するために残差ビデオブロックの少なくとも一部に第1の変換(たとえば、1次変換100)を適用し得る。この例では、第1の変換は、ピクセル領域から周波数領域に残差ビデオブロックを変換する。さらに、ビデオエンコーダ20は、第1の1次元係数ベクトルとして第1の2次元係数ブロックを再編成し得る。本例では、ビデオエンコーダ20は、第2の1次元係数ベクトルを生成するために第1の1次元係数ベクトルの少なくとも一部に第2の変換を適用し得る。この例では、第2の変換は、非分離可能変換である。本例では、第2の変換は、非分離可能変換である。この例では、ビデオエンコーダ20は、係数走査順序に従って第2の2次元係数ブロックとして第2の1次元係数ベクトルを再編成し得る。
【0185】
[0134]同様に、ビデオデコーダ30は、係数走査順序に従って第1の1次元係数ベクトル(たとえば、1次元係数ベクトル156)として、第1の2次元係数ブロック(たとえば、2次元係数ブロック152)を再編成し得る。この例では、ビデオデコーダ30は、第2の1次元係数ベクトル(たとえば、1次元係数ブロック160)を生成するために非分離可能変換行列に第1の1次元係数ベクトルを乗じることによって、第1の逆変換(たとえば、非分離可能2次逆変換158)を適用し得る。この例では、第1の逆変換は、非分離可能変換である。この例では、ビデオデコーダ30は、2次元係数ブロック(たとえば、2次元係数ブロック164)として第2の1次元係数ベクトルを再編成し得る。ビデオデコーダ30は、残差ビデオブロック(たとえば、残差ブロック168)を生成するために第2の2次元係数ブロックに第2の逆変換(たとえば、1次逆変換166)を適用し得る。この例では、第2の逆変換は、周波数領域からピクセル領域に第2の2次元係数ブロックを変換する。この例では、ビデオデコーダ30は、復号ビデオブロックを形成し得る。復号ビデオブロックを形成することの一部として、ビデオデコーダ30は、1つまたは複数の予測ブロックを残差ビデオブロックに加算し得る。
【0186】
[0135]第3の技法のいくつかの例では、第2の変換を適用することは、2次元変換行列に第1の1次元係数ベクトルを乗じることを備える。本例のいくつかの例では、第1の2次元係数ブロックは、4×4のブロックであり、2次元変換行列は、ルーマイントラ予測モードとコーディングユニットレベルのインデックスとによって選択される16×16の非分離可能変換行列である。たとえば、ビデオエンコーダ20は、16×16の非分離可能変換行列に第1の1次元係数ベクトル(たとえば、1次元係数ベクトル105)を乗じることによって、第2の変換(たとえば、非分離可能2次変換106)を適用し、それによって、第2の1次元係数ベクトル(たとえば、1次元係数ベクトル108)を生成し得る。同様に、ビデオデコーダ30は、16×16の非分離可能変換行列に第1の1次元係数ベクトル(たとえば、1次元係数ベクトル156)を乗じることによって、第2の変換(たとえば、非分離可能2次変換158)を適用し、それによって、第2の1次元係数ベクトル(たとえば、1次元係数ベクトル160)を生成し得る。
【0187】
[0136]第3の技法のいくつかの例では、4×4の係数グループに対して実行される2次変換係数再編成プロセスは、4×4の係数グループの係数走査順序に依存し得る。たとえば、ビデオエンコーダ20が、エントロピー符号化中に4×4の係数グループの係数を表すシンタックス要素を処理するためにジグザグ走査順序を使用する場合、ビデオエンコーダ20は、非分離可能2次変換を適用することの一部として4×4の係数グループを16×1の係数ベクトルに再編成するときに同じジグザグ走査順序を使用し得る。
【0188】
[0137]さらに、第3の技法のいくつかの例では、ビデオエンコーダ20は、4×4の係数グループのための係数走査順序を決定し得る。この例では、ビデオエンコーダ20は、決定された係数走査順序に基づいて第1の2次元係数ブロック(たとえば、4×4の係数グループ)として第1の1次元係数ベクトルを再編成し得る。この例のいくつかの態様では、ビデオエンコーダ20は、第1の2次元係数ブロックが決定された係数走査順序に対応する(たとえば、一致する)係数走査順序を有するように、第1の2次元係数ブロックとして第1の1次元係数ベクトルを再編成し得る。
【0189】
[0138]同様に、ビデオデコーダ30は、4×4の係数グループのための係数走査順序を決定し得る。この例では、ビデオデコーダ30は、決定された係数走査順序に基づいて第2の1次元係数ベクトルとして第2の2次元係数ブロック(たとえば、4×4の係数グループ)を再編成し得る。この例のいくつかの態様では、ビデオデコーダ30は、第2の1次元係数ベクトルが決定された係数走査順序に対応する(たとえば、一致する)係数走査順序を有するように、第2の1次元係数ベクトルとして第2の2次元係数ブロックを再編成し得る。
【0190】
[0139]第3の技法のいくつかの例では、4×4の係数グループに対して実行される2次変換係数再編成プロセスは、イントラ予測モード、EMTのCUレベルのおよび/またはTUレベルのインデックス、RQT深度、ならびに/あるいは量子化係数などの符号化/復号済み情報に依存し得る。言い換えれば、ビデオエンコーダ20の再編成プロセス110は、イントラ予測モード、EMTのCUレベルのおよび/またはTUレベルのインデックス、RQT深度、ならびに/あるいは量子化係数に基づいて、2次元係数ブロック112として1次元係数ベクトル108を再編成し得る。たとえば、ビデオエンコーダ20は、1次元係数ベクトルが係数走査順序対応(たとえば、一致)の決定済み係数走査順序を有するように垂直ルーマ予測モードが選択されるのか、または水平ルーマ予測モードが選択されるのかに基づいて2次元係数ブロック112として1次元係数ベクトル108を再編成し得る。同様に、ビデオデコーダ30の再編成プロセス154は、イントラ予測モード、EMTのCUレベルのおよび/またはTUレベルのインデックス、RQT深度、ならびに/あるいは量子化係数に基づいて、1次元係数ベクトル156を生成するために2次元係数ブロック152を再編成し得る。
【0191】
[0140]第3の技法の一例では、特定の4×4の係数ブロックに非分離可能2次変換(たとえば、2次変換102)を適用した後に、ビデオエンコーダ20は、16×1の係数ベクトル(たとえば、1次元係数ベクトル108)を導出し得、特定の4×4のブロックのための係数走査順序に従って(すなわち、それに沿って)4×4のブロック(たとえば、2次元係数ブロック112)として得られた16個の係数を再編成し得る。ビデオエンコーダ20は、より小さいインデックスをもつ係数が4×4の係数ブロック中でより小さい走査インデックスをもつロケーションに配置される方法で16個の係数の再編成を実行し得る。たとえば、4×4の係数ブロックが、(たとえば、イントラ予測モードに従って)4×4の係数ブロックの上部から4×4の係数ブロックの下部に向かって行ごとに走査されるとき、ビデオエンコーダ20は、1次元係数ベクトルの最初の4つの係数として係数ブロックの最上行の4つの係数を再編成し、1次元係数ベクトルの次の4つの係数として係数ブロックの上から2番目の行の4つの係数を再編成し、以下同様に行い得る。
【0192】
[0141]TU係数に対して逆量子化を実行した後に、ビデオデコーダ30は、現在のTUの各4×4のサブブロックについて、4×4の逆量子化された2次変換係数ブロック(たとえば、2次元係数ブロック152)を導出し得る。さらに、現在のTUのそれぞれの4×4のサブブロックについて、ビデオデコーダ30は、4×4のブロックのための係数走査順序に基づいてそれぞれの16×1のベクトル(たとえば、1次元係数ベクトル156)としてそれぞれの4×4の逆量子化されたブロック中の16個の係数を再編成し得る。ビデオデコーダ30は、より小さい走査インデックスをもつ係数が16×1の係数ベクトル中でより小さいインデックスをもつロケーションに配置される方法で4×4の係数の再編成を実行し得る。
【0193】
[0142]一例では、ビデオエンコーダ20および/またはビデオデコーダ30は、固定の4×4の係数走査順序、たとえば、水平、垂直、対角、またはジグザグ走査順序に基づいて再編成プロセスを実行し得る。このようにして、16×1の係数ベクトル中でより小さいインデックスをもつ16個の2次変換係数は、固定のあらかじめ定義された4×4の係数走査順序に従って4×4の係数ブロック中に配置され得る。
【0194】
[0143]第3の技法の一例によれば、変換プロセス(たとえば、1次変換100)の後に、ビデオエンコーダ20は、最初に、
【0198】
としてBを表し、次いで、以下の計算を実行することによって、現在のM×NのTUのそれぞれの4×4の変換係数サブブロックBに2次変換(たとえば、2次変換102)を適用し得る。
【0200】
上記の式中で、Tは、上記で説明したように、ルーマイントラ予測モードとシグナリングされたCUレベルのフラグとに基づいて選択された16×16の非分離可能変換行列である。さらに、
図5の例では、
【0202】
は、1次元係数ベクトル105に対応し得る。上記の式を適用したことの結果として、それぞれの4×4のサブブロックについて、ビデオエンコーダ20は、それぞれの16×1の2次変換係数ベクトル
【0206】
は、1次元係数ベクトル108に対応する。ビデオエンコーダ20は、以下の演算を実行することによってそれぞれの4×4の係数ブロックとしてそれぞれの16×1の2次変換係数ベクトルを再編成し得る。
【0208】
上記の式中で、j=0,1,...,15であり、scan_xおよびscan_yは、それぞれ、HEVCにおいてすでに定義されているx座標およびy座標のための走査表であり得る。このようにして、それぞれの4×4の変換係数サブブロックBは、それぞれの導出された2次4×4変換係数ブロックFによって置き換えられ得る。
図5の例では、Fは、2次元係数ボック112に対応する。ビデオエンコーダ20が、各4×4の変換係数サブブロックに対して2次変換を実行した後、ビデオエンコーダ20は、さらに、更新されたM×Nの係数ブロックを量子化し、エントロピー符号化し得る。
【0209】
[0144]それぞれの4×4の係数サブブロックFについて、量子化プロセス(たとえば、逆量子化150)の後に、ビデオデコーダ30は、16×1のベクトルにそれぞれの4×4の係数サブブロックFを再編成することによって、16×1の2次変換係数ベクトル
【0213】
[0145]上記のこの式中で、j=0,1,...,15であり、scan_xおよびscan_yは、それぞれ、HEVCにおいてすでに定義されている4×4の係数サブブロックFのx座標およびy座標のための走査表である。
図6の例では、
【0215】
は、1次元係数ベクトル156に対応し、Fは、2次元係数ブロック152に対応する。ビデオデコーダ30は、次いで、以下の計算を実行することによって
【0217】
に対して逆2次変換(たとえば、2次逆変換158)を適用し得る。
【0219】
[0146]上記の式中で、T’は、上記で説明したように、ルーマイントラ予測モードとシグナリングされたCUレベルのフラグとによって選択され得る16×16の非分離可能変換行列である。上記の式の行列乗算の結果として、それぞれの4×4のサブブロックiについて、ビデオデコーダ30は、それぞれの16×1の2次変換係数ベクトル
【0223】
は、1次元係数ベクトル160に対応する。ビデオデコーダ30は、
【0225】
を計算することによって4×4の係数ブロックとして16×1の2次変換係数ベクトルを再編成する。
図6の例では、Bは、2次元係数ブロック164に対応する。ビデオデコーダ30は、4×4の変換係数サブブロックFを導出された2次4×4変換係数ブロックBと置き換え得る。ビデオデコーダ30が4×4係数サブロックの各々に対して逆2次変換を実行した後、ビデオデコーダ30は、逆変換(たとえば、1次逆変換166)に更新されたM×Nの係数ブロックを入力し得る。
【0226】
[0147]上記のように、いくつかの例では、ビデオエンコーダ20は、非分離可能2次変換を選択し得る。第4の技法によれば、ビデオエンコーダ20は、TU、PU、CUまたは任意の画像コーディングブロックユニットに適用可能なインデックスを使用する非分離可能2次変換の選択の指示をシグナリング(たとえば、符号化)し得、ビデオデコーダ30は、それを受信し得る。言い換えれば、ビデオエンコーダ20は、TU、PU、CUまたは他の画像コーディングブロックユニットについて、選択された非分離可能2次変換を示すインデックスを示すデータを符号化し得る。たとえば、非分離可能変換のセットからの第1の逆変換の選択は、TU、PU、CU、またはそれらの組合せのためのインデックスによってシグナリングされ得る。同様に、ビデオデコーダ30は、ビデオデータのビットストリームから、TU、PU、CU、またはそれらの組合せのためのインデックスを示すデータを取得し、インデックスは、選択された非分離可能2次変換を示し得る。説明を簡単にするために、本開示は、選択された非分離可能2次変換を示すインデックスを非分離可能2次変換(NSST:non-separable secondary transform)インデックスと呼ぶことがある。
【0227】
[0148]いくつかの例では、ビデオエンコーダ20は、NSSTインデックスをエントロピー符号化し得る。NSSTインデックスをエントロピー符号化することの一部として、ビデオエンコーダ20は、NSSTインデックスを2値化し得る。NSSTインデックスをエントロピーコーディングする場合、2値化のために固定長コードが使用され得、2値化のために短縮単項コードまたは指数ゴロムコードなどの可変長コードが使用され得る。
【0228】
[0149]第5の技法によれば、残差信号のエネルギーが限定されている場合、ビデオエンコーダ20は、いくつかのTUについて、NSSTインデックスのシグナリングをスキップし得、2次変換が、適用されないことがある。たとえば、現在のTUのために送信された非ゼロ係数がない場合、ビデオエンコーダ20は、現在のTUについてNSSTインデックスのシグナリングをスキップし得る。言い換えれば、現在のTUのために符号化された非ゼロ係数がない場合、ビデオエンコーダ20は、現在のTUについてNSSTインデックスを示すデータの符号化をスキップし得る。同様に、他の例では、NSSTインデックスシグナリングのスキップは、LCU、CU、PU、または任意の他のブロックレベルのシンタックス要素に適用され得る。したがって、第5の技法によれば、ビデオエンコーダ20は、ビデオデータの符号化ビットストリーム中で、TU、PU、CU、またはそれらの組合せに適用可能なインデックスを示すデータを生成し、インデックスは、選択された候補が第2の変換であることを示し得る。
【0229】
[0150]同様に、ビデオデコーダ30は、ビデオデータのビットストリームから、TU、PU、CU、またはそれらの組合せに適用可能なインデックスを示すシンタックス要素を取得し得る。この例では、ビデオデコーダ30は、第1の逆変換として、インデックスによって示される候補を選択することを備える、非分離可能変換のサブセットから候補を選択し得る。
【0230】
[0151]いくつかの例では、あるブロックレベルで送信される非ゼロ係数の総数または総絶対値和または2乗値の和が所与のしきい値よりも大きくない場合、そのあるブロックレベルのNSSTインデックスは、スキップされ、2次変換が適用されない。たとえば、あるLCUで送信される非ゼロ係数の総数が10よりも大きくないとき、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。いくつかの例では、あるCUで送信される非ゼロ係数の総絶対値和が100よりも大きくないとき、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。一例では、あるPUで送信される非ゼロ係数の2乗値の和が100よりも大きくないとき、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。
【0231】
[0152]したがって、第5の技法によれば、ビデオエンコーダ20は、ビットストリーム中の2次変換(たとえば、非分離可能2次変換106)のインデックスを符号化すべきかどうかを決定し得る。2次変換のインデックスは、複数の利用可能な2次変換の中から2次変換を識別し得る。この例では、ビデオエンコーダ20は、特定のブロックレベルで(たとえば、LCU、CU、PU、TU中で)送信される非ゼロ係数の総数の和、総絶対値和、または2乗値の和が所与のしきい値よりも大きくないことに基づいて2次変換のインデックスがビットストリーム中に符号化されていないと決定し得る。この例では、ビデオエンコーダ20は、特定のブロックレベルで2次変換のインデックスをシグナリングし得る。この例では、ビデオエンコーダ20は、2次元係数ブロックの少なくとも一部に、インデックスがビットストリーム中でシグナリングされる2次変換を適用し得る。
【0232】
[0153]同様に、ビデオデコーダ30は、2次変換(たとえば、非分離可能逆変換158)のインデックスがビットストリーム中でシグナリングされるのかどうかを決定し得る。この例では、ビデオデコーダ30は、特定のブロックレベルの非ゼロ係数の総数の和、総絶対値和、または2乗値の和が所与のしきい値よりも大きくないことに基づいて2次変換のインデックスがビットストリーム中に符号化されていないと決定し得る。この例では、2次変換のインデックスは、特定のブロックレベルでシグナリングされる。この例では、ビデオデコーダ30は、1次元係数ベクトルに、ビットストリーム中でシグナリングされたインデックスによって示される2次変換の逆である2次逆変換を適用し得る。
【0233】
[0154]一例では、2次元係数ブロックの非ゼロ係数の量がしきい値よりも大きくないとビデオエンコーダ20が決定したことに応答して、ビデオデコーダ30は、1次元係数ベクトルに2次逆変換を適用し得る。この例では、しきい値は、ビデオデータのブロックサイズ、イントラ予測モード、またはそれらの組合せごとに異なり得る。
【0234】
[0155]同様に、ビデオエンコーダ20は、2次元係数ブロックの非ゼロ係数の量がしきい値よりも大きいかどうかを決定し得る。この例では、2次元係数ブロックの非ゼロ係数の量がしきい値よりも大きくないと決定したことに応答して、ビデオエンコーダ20は、2次元係数ブロックの少なくとも一部に2次変換を適用し得る。この例では、しきい値は、ビデオデータのブロックサイズ、イントラ予測モード、またはそれらの組合せごとに異なり得る。
【0235】
[0156]いくつかの例では、非ゼロ係数の総数のしきい値は1である。一例では、非ゼロ係数の総数のしきい値は、ブロックサイズまたはイントラ予測モードごとに異なり得る。
【0236】
[0157]いくつかの例では、ビデオエンコーダ20とビデオデコーダ30とは、すべての色成分(たとえば、Y、Cb、およびCr)の係数値に2次変換と2次逆変換とを適用し得る。他の例では、ビデオエンコーダ20とビデオデコーダ30とは、すべてではないが、いくつかの色成分に2次変換と2次逆変換とを適用し得る。たとえば、ビデオエンコーダ20とビデオデコーダ30とは、クロマ(たとえば、CbおよびCr)成分の係数値には適用しないが、ルーマ(すなわち、Y)成分の係数値に2次変換と2次逆変換とを適用し得る。ビデオエンコーダ20とビデオデコーダ30とが2つ以上の色成分に2次変換と2次逆変換とを適用する例では、NSSTインデックスは、2つ以上の色成分の間で共有され得る。
【0237】
[0158]第5の技法の一例によれば、NSSTインデックスが、あるブロックレベルでシグナリングされ、いくつかの成分(たとえば、Y、Cb、Cr)の間で共有される場合、および同じNSSTインデックスを共有するすべての成分からそのあるブロックレベルで送信される非ゼロ係数の総数の和または総絶対値和または2乗値の和が、所与のしきい値よりも大きくない場合、NSSTインデックスは、スキップされ得、2次変換は適用されない。一例では、非ゼロ係数の総数のしきい値は、1、2、または3である。いくつかの例では、非ゼロ係数の総数のしきい値は3よりも大きい。
【0238】
[0159]一例では、NSSTインデックスが、あるブロックレベルでシグナリングされ、Y、Cb、およびCr成分の間で共有される場合、Y、Cb、およびCr成分の非ゼロ係数の総数の和が所与のしきい値よりも小さい場合、NSSTインデックスは、スキップされ得、2次変換は、適用されないことがある。たとえば、Y、Cb、およびCr成分の組合せについてあるCUで送信される非ゼロ係数の絶対値和が100よりも大きくないとき、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。
【0239】
[0160]一例では、NSSTインデックスが、あるブロックレベルでシグナリングされ、CbおよびCr成分の間で共有される場合、CbおよびCr成分の非ゼロ係数の総数の和が所与のしきい値よりも小さい場合、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。たとえば、あるCUのCbおよびCr成分のための非ゼロ係数の総数が3よりも大きくないとき、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。
【0240】
[0161]第5の技法のいくつかの例によれば、非ゼロ係数の総数のしきい値は、ブロックサイズまたはイントラ予測モードごとに異なり得る。たとえば、LCUは、CUおよびPUよりも大きいしきい値を有し得る。同様に、ビデオエンコーダ20は、垂直イントラ予測モードを使用してコーディングされるブロックのために第1のしきい値を使用し得、水平イントラ予測モードを使用してコーディングされるブロックのために第2の異なるしきい値を使用し得る。
【0241】
[0162]第5の技法の一例では、NSSTインデックスが、あるブロックレベルでシグナリングされ、Y、Cb、およびCr成分の間で共有される場合、Y成分のみの非ゼロ係数の総数が所与のしきい値よりも小さい場合、NSSTインデックスは、スキップされ得、2次変換は、適用されないことがある。たとえば、Y成分のみについてあるCUで送信される非ゼロ係数の総数が1、2、3、または別のしきい値よりも大きくないとき、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。
【0242】
[0163]一例では、NSSTインデックスが、あるブロックレベルでシグナリングされ、CbおよびCr成分の間で共有される場合、Cb成分のみの非ゼロ係数の総数が所与のしきい値よりも小さい場合、NSSTインデックスは、スキップされ得、2次変換は、適用されないことがある。たとえば、Cb成分のみについてあるCUで送信される非ゼロ係数の総数が1、2、3、または別のしきい値よりも大きくないとき、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。同様に、Cr成分のみについてあるCUで送信される非ゼロ係数の総数が1、2、3、または別のしきい値よりも大きくないとき、ビデオエンコーダ20は、NSSTインデックスのシグナリングをスキップし、2次変換を適用しないことがある。
【0243】
[0164]追加または代替として、第5の技法のいくつかの例では、非ゼロ係数の総数のしきい値は、ブロックサイズまたはイントラ予測モードごとに異なり得る。言い換えれば、LCUは、CUおよびPUよりも大きいしきい値を有し得る。同様に、16×16のクロマ予測モードは、4×4のクロマ予測モードよりも大きいしきい値を有し得る。たとえば、ビデオエンコーダ20は、垂直イントラ予測モードを使用してコーディングされるブロックのために第1のしきい値を使用し得、水平イントラ予測モードを使用してコーディングされるブロックのために第2の異なるしきい値を使用し得る。
【0244】
[0165]第5の技法の一例では、LCU、CU、PU、または他のタイプのブロックのサイズが、あらかじめ定義されたしきい値よりも大きいかまたはそれよりも小さいか、あるいは所与のしきい値範囲内にあるとき、NSSTインデックスのシグナリングは、スキップされ得、2次変換は、適用されない。たとえば、CUのサイズが、8×8のあらかじめ定義された値よりも小さいとき、ビデオエンコーダ20は、符号化ビデオビットストリーム中に、NSSTインデックスを示すデータを生成することをスキップし、2次変換を適用しないことがある。
【0245】
[0166]第5の技法の一例では、TUが変換スキップモードを使用してコーディングされるとき、NSSTインデックスのシグナリングは、スキップされ得、2次変換は適用されない。言い換えれば、TUが、変換スキップモードを使用してコーディングされるとき、ビデオエンコーダ20は、符号化ビデオビットストリーム中に、NSSTインデックスを示すデータを生成することをスキップし得、2次変換が適用されない。
【0246】
[0167]たとえば、ビデオエンコーダ20は、TUが変換スキップモードでコーディングされていることに基づいてビットストリーム中で2次変換のインデックスをシグナリングする(たとえば、それを示すデータを符号化する)べきかどうかを決定し得る。この例では、ビデオエンコーダ20は、符号化ビデオビットストリーム中に、ビットストリーム中で2次変換のインデックスを示すデータを生成し、ビデオエンコーダ20は、第2の変換のインデックスを示すデータがビットストリーム中に符号化されていることに基づいて第1の2次元係数ブロックの少なくとも一部に2次変換を適用し得る。同様に、ビデオデコーダ30は、TUが変換スキップモードでコーディングされていることに基づいて2次変換のインデックスがビットストリーム中でシグナリングされるかどうかを決定し得る。言い換えれば、ビデオデコーダ30は、1次元係数ベクトルに、2次変換のインデックスによって示される2次逆変換を適用し得る。
【0247】
[0168]さらに、第5の技法のいくつかの例では、ブロック(たとえば、TU)が2次変換を使用してコーディングされるとき、変換スキップモードがシグナリングされないことがある。言い換えれば、ビデオエンコーダ20は、符号化ビデオビットストリーム中に、データインディケィティブ、すなわち、変換スキップモードと2次変換とのうちの1つを生成し得る。たとえば、ビデオエンコーダ20は、符号化ビデオビットストリーム中に、変換スキップモードを示すデータを生成し、2次変換をシグナリングすることを省略し得る。同様に、ビデオエンコーダ20は、符号化ビデオビットストリーム中に、データインディケィティブ、すなわち、変換スキップモードを生成するのを省略し得、符号化ビデオビットストリーム中に、2次変換を示すデータを生成する。
【0248】
[0169]本開示の第6の技法によれば、特定のコーディングモードでは、2次変換が、無効化され、および/またはシグナリングされず、その逆も同様であり得る。たとえば、そのようなコーディングモードは、必ずしも変換スキップモード、線形法(LM)モード、成分間残差予測モードなどを含み得るが、それらに限定されるとは限らない。したがって、2次変換が適用される場合、特定のコーディングモードは、無効化される、および/またはシグナリングされないことがある。たとえば、いくつかの例では、2次変換が適用されるとき、変換スキップモード、LMモード、および成分間残差予測モードは、無効化され得、ならびに/または変換スキップモード、LMモード、および成分間残差予測モードのインデックスは、符号化されない。同様に、変換スキップモード、LMモード、および成分間残差予測モードのうちの1つまたは複数が使用されるとき、2次変換は、無効化される、および/またはシグナリングされないことがある。概して、適応型成分間残差予測は、同じブロックのための別の色成分の残差から1つの色成分(たとえば、Y、Cr、またはCb)の残差を予測することを含み得る。
【0249】
[0170]第6の技法の一例では、2次変換が有効化されると、特定のモードが常に無効化され得る。たとえば、2次変換が有効化されることに基づいて、変換スキップモードは、無効化される。
【0250】
[0171]第6の技法の一例では、2次変換が有効化されると、特定のモードがいくつかの条件で無効化されるが、他の条件で有効化され得る。条件は、限定はしないが、ブロックサイズ、非ゼロ変換係数の数、コーディングがルーマ成分のためのものであるのか、またはクロマ成分のためのものであるのか、隣接予測モード、および他の条件を含み、その逆も同様であり得る。
【0251】
[0172]第6の技法の一例では、2次変換が適用されるとき、特定の予測モードは、依然として、有効化され得るが、この特定の予測モードをシグナリングするために使用されるコンテキストモデリングは、シグナリングされる2次インデックス/フラグにコンテキストモデリングが依存するように変更され得る。言い換えれば、特定の予測モードは、2次変換が適用されるときに適用されるのを許可され得るが、特定の予測モードのためのコンテキストモデリングが変更される。
【0252】
[0173]一例では、2次変換は、依然として、特定の予測モードのために有効化されるが、2次変換をシグナリングするために使用されるコンテキストモデリングは、特定の予測モードが適用されるのかどうかにコンテキストモデリングが依存するように変更され得る。言い換えれば、ビデオエンコーダ20および/またはビデオデコーダ30によって適用されない予測モードを無効化するのではなく、特定の予測モードは、2次変換が適用されるときに使用されるのを許可され得るが、特定の予測モードのためのコンテキストモデリングが変更される。
【0253】
[0174]本開示の第7の例によれば、他の非ルーマ成分(たとえば、クロマ)に対して2次変換を適用するとき、および2次変換選択が、あるコード化情報への何らかの依存を有するとき、NSSTインデックス値は、コロケートされたルーマ成分から継承(たとえば、再使用)され、非ルーマ成分のために符号化されないことがある。そのようなコード化情報の例としては、限定はしないが、イントラ予測モードがあり得る。本明細書では、コロケートされたとは、同じブロックの構成要素を指すことがある。この例の態様では、あるコード化情報への依存は、コロケートされたルーマ成分のコード化情報を継承する代わりに非ルーマ成分のコード化情報が使用される方法で行われる。
【0254】
[0175]一例では、2次変換がクロマ成分(たとえば、Cr成分および/またはCb成分)に対して実行され、ビデオデコーダ30が、シグナリングされたNSSTインデックスとイントラ予測モードとに基づいて2次変換を選択すると、クロマ成分について、ビデオデコーダ30は、コロケートされたルーマ成分のNSSTインデックスと現在のクロマ成分のイントラ予測モードとに基づいて2次変換を選択し得る。
【0255】
[0176]クロマ成分のイントラ予測モードがコロケートされたルーマ成分(たとえば、Y成分)から継承されると、コロケートされたルーマ成分のイントラ予測モードは、2次変換を選択するために使用され得る。たとえば、ビデオデコーダ30は、コロケートされたルーマ成分のNSSTインデックスとコロケートされたルーマ成分のイントラ予測モードとに基づいてサブセットから2次変換候補を選択し得る。
【0256】
[0177]一例では、たとえば、米国特許出願第15/006,994号に記載されているように、クロマ成分のイントラ予測モードがLMモードであるとき、2次変換はクロマ成分に適用されないことがある。たとえば、ビデオデコーダ30は、コロケートされたルーマ成分に2次変換候補を適用し、クロマ成分に2次変換候補を適用するのを控え得る。
【0257】
[0178]一例では、2次変換が適用されるとき、LMモードは適用またはシグナリングされないことがある。この場合、イントラモードコーディングは、LMモードがシグナリングされるべき候補イントラモードでないように相応して変更され得る。そのようなイントラモードコーディングの変更は、限定はしないが、コーディングされるべき利用可能なイントラモードの数を低減すること、または利用可能なイントラモードの総数が同じになるようにLMモードを他のイントラ予測モードと置き換えることを含み得る。言い換えれば、2次変換が適用されるとき、LMモードは、候補イントラモードでないと推定され得るので、2次変換が適用されるとき、イントラモードのシグナリングは、LMモードをもはやシグナリングしないように変更され得る。
【0258】
[0179]追加または代替として、クロマ成分のイントラ予測モードがLMモードであるとき、2次変換は、継承されたNSSTインデックスとクロマ成分のための平面/DCモードとを使用して選択され得る。たとえば、ビデオデコーダ30は、コロケートされたルーマ成分のNSSTインデックスとクロマ成分の平面/DCモードとに基づいてサブセットから2次変換候補を選択し得る。
【0259】
[0180]一例では、コロケートされたルーマ成分のNSSTインデックスとイントラ予測モードとの両方が、現在の非ルーマ成分に継承され得る。たとえば、ビデオデコーダ30は、コロケートされた非ルーマ成分のNSSTインデックスとコロケートされた非ルーマ成分のイントラ予測モードとに基づいてサブセットから2次変換候補を選択し得る。
【0260】
[0181]
図7Aは、ルーマイントラモードから変換セットインデックスへの例示的なマッピングの図である。以下で説明する例は、ビデオエンコーダ20および/またはビデオデコーダ30によって実行され得る。
図7Aに示すように、以下で説明する例は、平面(0)、DC(1)および65個の角度ルーマイントラ予測モード(2〜66)を含む67個のルーマイントラ予測モード上に実装され得る。非分離可能変換を実行するための変換行列を選択するために、合計12個の非分離可能16×16変換セットがあらかじめ定義され得る。各変換セットは、3つの16×16変換候補を含んでいる。一例では、変換セットは、ルーマイントラ予測モードによって指定され得る。たとえば、
図7Aに示すように、ルーマイントラ予測モード「0」は、変換セットインデックス「0」を指定し、ルーマイントラ予測モード「1」は、変換セットインデックス「0」を指定し、ルーマイントラ予測モード「2」は、変換セットインデックス「1」を指定し、以下同様に行う。
【0261】
[0182]
図7Aの例では、変換セットが指定され得、各変換セット内で、3つの候補から選択された変換が、明示的にシグナリングされたCUレベルのROTインデックスによって指定され得る。たとえば、ROTインデックスは、ビットストリーム中でCUごとにシグナリングされるインデックス値であり得、ROTインデックス値は、0〜3にわたり得る。いくつかの例では、ROTインデックス0は、2次変換が適用されないことを指定し、ROTインデックス1〜3は、3つの異なるROTから選択された1つの変換を指定する。
図7Aにおいて、ルーマ予測モードから変換セットインデックスへのマッピングが定義されている。
【0262】
[0183]さらに、
図7Aによれば、34よりも大きいルーマイントラ予測モード(IPM)について、イントラモード68−IPMのための同じ変換セットインデックスが適用され得る。ただし、イントラ予測モードIPMと68−IPMとの間の対称性を利用するために、エンコーダ/デコーダにおいて、2次変換を行う前に/後に変換係数ブロックが転置され得る。より詳細には、
図7Bの例では、イントラ予測モード(IPM)は、0〜66にわたり得る。
図7Bに示すように、イントラモードIPMと68−IPMとは対称である。たとえば、イントラモード18(水平予測)と50(垂直予測)とは対称である。IPMと68−IPMとが対称であるので、これらの2つのモードに適用される非分離可能変換は何らかの関係がある。たとえば、我々がモード50(垂直予測)から予測される残差ブロックを転置する場合、残差統計値は、モード18(水平予測)から予測される残差ブロックとほとんど同様であるはずである。したがって、イントラモードIPMのための非分離可能変換は、イントラモードIPMに転置演算を加えたもののための非分離可能変換と同様であるはずである。この対称性を利用し、非分離可能変換セットの総数を低減するために、34よりも大きいイントラモードIPMについて、68−IPMの同じ変換セットが使用され得、変換係数ブロックは、2次変換の後に転置され得る。JVET−C1001:http://phenix.it−sudparis.eu/jvet/doc_end_user/documents/3_Geneva/wg11/JVET−C1001−v3.zipのセクション2.2.1に、66個のルーマイントラ予測モードが記載されている。
【0263】
[0184]本開示の第8の技法では、ビデオエンコーダ20および/またはビデオデコーダ30は、ブロックサイズごとに異なるサイズおよび異なる形状(正方形または非正方形以外)のNSSTを適用するように構成され得る。一例では、4×4のNSSTは、4×4のブロックに適用され得、8×8のNSSTは、8×8およびそれよりも大きいブロックについて左上の8×8の変換係数に適用され得る。たとえば、ビデオエンコーダ20は、4×4のブロックに4×4の2次変換を適用し得、8×8のブロックに8×8の2次変換を適用し得、8×8よりも大きいブロックの左上の8×8の係数に8×8の2次変換を適用し得る。たとえば、ビデオエンコーダ20は、16×16のブロックの左上の8×8の係数に8×8の2次変換を適用し得る。
【0264】
[0185]第8の技法の一例では、4×4のNSSTがM×Nのブロックに適用されるとき、ここで、M≧4、N≧4、MおよびNは、4の倍数であり、M≠Nであり、M×Nのブロックは、複数の重複しない4×4のサブブロックによって分割され得る。各4×4のサブブロックに対して、4×4のNSSTが適用され得る。たとえば、ビデオエンコーダ20は、ビデオエンコーダ20が8×4のブロックの2つの4×4のブロックの各々にNSSTを適用するように、8×4のブロックの左上の4×4の係数に第1の4×4の2次変換を適用し、左上の4×4の係数の下にある8×4のブロックの4×4の係数に第2の4×4の2次変換を適用し得る。
【0265】
[0186]たとえば、ビデオエンコーダ20は、M×Nの係数ブロックを複数の重複しない4×4のサブブロックに分割し得る。この例では、複数の重複しない4×4のサブブロックは、第1の2次元係数ブロックと第2の2次元係数ブロックとを含み、MおよびNはそれぞれ、4よりも大きく、MおよびNはそれぞれ、4の倍数であり、Mは、Nに等しくない。この例では、ビデオエンコーダ20は、複数の重複しない4×4のサブブロックのそれぞれの4×4のサブブロックに対して、それぞれの係数ブロックを生成するために2次変換を実行する。
【0266】
[0187]同様に、ビデオデコーダ30は、M×Nの係数ブロックを複数の重複しない4×4のサブブロックに分割し得、複数の重複しない4×4のサブブロックは、第1の2次元係数ブロックを含み、MおよびNはそれぞれ、4よりも大きく、MおよびNはそれぞれ、4の倍数であり、Mは、Nに等しくない。この例では、ビデオデコーダ30は、複数の重複しない4×4のサブブロックの各4×4のサブブロックに対して4×4の逆NSSTを実行し得る。この例では、複数の4×4のサブブロックのそれぞれの4×4のサブブロックに対して、ビデオデコーダ30は、それぞれの2次元係数ブロックを生成するために逆2次変換を適用する。
【0267】
[0188]第8の技法の一例では、8×8のNSSTがM×Nのブロックに適用されるとき、ここで、M≧8であり、N≧8であり、MおよびNは、8の倍数であり、M×Nのブロックは、複数の重複しない8×8のサブブロックに分割され得、各8×8のサブブロックに対して、8×8のNSSTが適用され得る。たとえば、ビデオエンコーダ20は、ビデオエンコーダ20が8×64のブロックの8つの8×8のブロックの各々にNSSTを適用するように、8×64のブロックの左上の8×8の係数に第1の8×8の2次変換を適用し、左上の8×8の係数の下にある8×64のブロックの8×8の係数に第2の8×8の2次変換を適用し、以下同様に行い得る。
【0268】
[0189]第8の技法の一例では、正方形のNSSTの代わりに、NSSTは、係数ブロックの任意の領域に位置する変換係数のグループに適用され得る。たとえば、ビデオエンコーダ20は、8×64のブロックの中央の4×16の係数に第1の4×16の2次変換を適用し得る。一例では、係数走査順序で最初のK個の変換係数が単一のベクトルに編成され得、非分離可能変換は、この変換係数ベクトルに対して実行され得る。この例では、係数走査順序は、限定はしないが、対角走査、水平走査または垂直走査であり得る。
【0269】
[0190]第8の技法の一例では、N×Nのブロックに対して、最初のM個の係数のみが計算されるようにゼロアウトNSSTが適用され得、残りのN−M個の係数は、0であると見なされ得る。たとえば、N個の係数を含む1次元係数ベクトルの場合、ビデオエンコーダ20は、1次元係数ベクトルのN個の係数の最初のM個のみを計算し、1次元係数ベクトルの残りの(すなわち、N−M個の)係数を0に設定するNSSTを適用し得る。
【0270】
[0191]ゼロ化された係数のグループが係数グループ(CG)、たとえば、HEVCにおいて定義されている4×4のサブブロックを形成する場合、このCGをエントロピーコーディングするとき、このCG中に少なくとも1つの非ゼロ係数があるのかどうかをシグナリングするフラグがスキップされ、コーディングされないことがある。いくつかの例では、ゼロ化された係数のためのシンタックス要素をコーディングしないのではなく、ゼロ化された係数のためのシンタックス要素が、別個のコンテキストを使用するが、依然としてコーディングされ得る。
【0271】
[0192]さらに、いくつかの例では、ゼロ化された係数のグループが係数グループ(CG)、たとえば、HEVCにおいて定義されている4×4のサブブロックを形成する場合、このCGをエントロピーコーディングするとき、最後の位置のコーディングは、最後の位置がこれらのゼロ化された係数位置に現れることができないという制限を含むように変更され得る。
【0272】
[0193]
図8は、本開示で説明する技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。本開示によれば、ビデオエンコーダ20は、たとえば、2次変換に関係する技法など、本開示で説明する技法を適用するように構成され得る。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオの時間冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースコーディングモードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
【0273】
[0194]
図8に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。
図8の例では、ビデオエンコーダ20は、モード選択ユニット240と、(復号ピクチャバッファ(DPB)と呼ばれることもある)参照ピクチャメモリ264と、加算器250と、変換処理ユニット252と、量子化ユニット254と、エントロピー符号化ユニット256とを含む。モード選択ユニット240は、動き補償ユニット244と、動き推定ユニット242と、イントラ予測ユニット246と、分割ユニット248とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット258と、逆変換ユニット260と、加算器262とを含む。いくつかの例では、デブロッキングフィルタ(
図8に図示せず)も、再構成されたビデオからブロッキネスアーティファクトを除去するために、ブロック境界をフィルタ処理するために含まれる。デブロッキングフィルタは、加算器262の出力をフィルタ処理する。追加のフィルタ(ループ内またはループ後)もデブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡約のために図示されないが、必要な場合、加算器250の出力を(インループフィルタとして)フィルタ処理し得る。
【0274】
[0195]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット242および動き補償ユニット244は、時間的予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測符号化を実行する。代替的に、イントラ予測ユニット246は、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する受信されたビデオブロックのイントラ予測符号化を実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために複数のコーディングパスを実行し得る。
【0275】
[0196]その上、区分ユニット248は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット248は、最初にフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいて、LCUの各々をサブCUに区分し得る。モード選択ユニット240は、さらに、LCUのサブCUへの区分を示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
【0276】
[0197]モード選択ユニット240は、たとえば、誤差結果に基づいて予測モード、すなわち、イントラまたはインターのうちの1つを選択し得、残差データを生成するために、得られた予測されたブロックを加算器250に与え、参照フレームとして使用するための符号化ブロックを再構成するために、得られた予測されたブロックを加算器262に与える。モード選択ユニット240はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット256に与える。
【0277】
[0198]動き推定ユニット242および動き補償ユニット244は、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット242によって実行される動き推定は、動きベクトルを生成する処理であり、ビデオブロックに対する動きを推定する。動きベクトルは、たとえば、現在のフレーム内でコーディングされている現在のブロック(または、他のコード化ユニット)に対する、参照フレーム内の予測ブロック(または、他のコード化ユニット)に対する、現在のビデオフレーム内またはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差の合計(SAD:sum of absolute difference)、二乗差の合計(SSD:sum of square difference)、または他の差メトリックによって決定され得るピクセル差に関する、コーディングされるブロックとよく一致することがわかったブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ264に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの4分の1ピクセル位置、8分の1ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット242は、フルピクセル位置と分数ピクセル位置とに対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【0278】
[0199]動き推定ユニット242は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス内のビデオブロックのPUについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの各々が、参照ピクチャメモリ264に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット242は、エントロピー符号化ユニット256と動き補償ユニット244とに計算された動きベクトルを送る。
【0279】
[0200]動き補償ユニット244によって実行される動き補償は、動き推定ユニット242によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット242と動き補償ユニット244とは機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット244は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。加算器250は、残差ビデオブロックを形成する。残差ビデオブロックを形成することの一部として、加算器250は、以下で説明するように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成し得る。概して、動き推定ユニット242はルーマ成分に対して動き推定を実行し、動き補償ユニット244は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット240はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
【0280】
[0201]イントラ予測ユニット246は、上記で説明したように、動き推定ユニット242と動き補償ユニット244とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット246は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット246は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット246(または、いくつかの例では、モード選択ユニット240)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
【0281】
[0202]たとえば、イントラ予測ユニット246は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット246は、どのイントラ予測モードがブロックに関する最良のレートひずみの値を示すかを決定するために、様々な符号化ブロックに関するひずみおよびレートから比を計算し得る。
【0282】
[0203]ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット246は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット256に与え得る。エントロピー符号化ユニット256は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の変更イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および変更イントラ予測モードインデックステーブルの指示とを含み得る構成データを送信ビットストリーム中に含め得る。
【0283】
[0204]ビデオエンコーダ20は、残差ビデオブロックを形成する。残差ビデオブロックを形成することの一部として、ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット240からの予測データを減算し得る。加算器250は、この減算演算を実行する1つの構成要素または複数の構成要素を表す。変換処理ユニット252は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、変換係数値を備えるビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、DST、または他のタイプの変換が、DCTの代わりに使用され得る。いずれの場合も、変換処理ユニット252は、変換を残差ブロックに適用し、変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域などの変換領域に変換し得る。
【0284】
[0205]さらに、上記で説明したように、変換処理ユニット252は、非分離可能である2次変換を適用するように構成され得る。いくつかの例では、変換処理ユニット252は、量子化ユニット254が使用するための係数走査順序に従って第2の2次元係数ブロックとして非分離可能である2次変換によって形成される1次元係数ベクトルを再編成するように構成され得る。変換処理ユニット252は、得られた変換係数を量子化ユニット254に送り得る。
【0285】
[0206]量子化ユニット254は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。
【0286】
[0207]量子化の後に、エントロピー符号化ユニット256は、量子化変換係数を示すシンタックス要素を走査し、エントロピー符号化する。たとえば、エントロピー符号化ユニット256は、CAVLC、CABAC、SBAC、PIPEコーディングまたは別のエントロピー符号化技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット256によるエントロピーコーディングに続いて、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
【0287】
[0208]逆量子化ユニット258および逆変換ユニット260は、ピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。特に、加算器262は、参照ピクチャメモリ264に記憶するための再構成されたビデオブロックを生成するために、動き補償ユニット244またはイントラ予測ユニット246によって前に生成された動き補償予測ブロックに、再構成された残差ブロックを加算する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット242および動き補償ユニット244によって参照ブロックとして使用され得る。
【0288】
[0209]ビデオエンコーダ20は、概して、コード化ビデオシーケンス中の各ピクチャの各ブロックを符号化するために、上記で説明したプロセスを使用する。さらに、いくつかの例では、ビデオエンコーダ20は、ピクチャの各々を割り当てるべき時間レイヤを決定し得る。さらに、ビデオエンコーダ20は、他のレイヤ、たとえば、他のビュー、スケーラブルビデオコーディングレイヤなどのピクチャを符号化するように構成され得る。いずれの場合も、ビデオエンコーダ20は、(たとえば、様々なビデオ次元の)1つまたは複数のレイヤについて、各ピクチャが属するレイヤを示すデータをさらに符号化し得る。
【0289】
[0210]
図9は、本開示で説明する技法を実装し得るビデオデコーダ30の一例を示すブロック図である。本開示によれば、ビデオデコーダ30は、たとえば、2次変換に関係する技法など、本開示で説明する技法を適用するように構成され得る。
図9の例では、ビデオデコーダ30は、エントロピー復号ユニット270と、動き補償ユニット272と、イントラ予測ユニット274と、逆量子化ユニット276と、逆変換ユニット278と、参照ピクチャメモリ282と、加算器280とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(
図8)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット272は、エントロピー復号ユニット270から受信された動きベクトルに基づいて予測データを生成し得、イントラ予測ユニット274は、エントロピー復号ユニット270から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
【0290】
[0211]復号プロセス中に、ビデオデコーダ30は、符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームをビデオエンコーダ20から受け取る。ビデオデコーダ30のエントロピー復号ユニット270は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット270は、動きベクトルと他のシンタックス要素とを動き補償ユニット272に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0291】
[0212]ビデオスライスが、イントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット274は、現在のフレームまたはピクチャの以前に復号されたブロックから、シグナリングされたイントラ予測モードおよびデータに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームが、インターコード化(すなわち、B、P、または汎用PおよびBピクチャ(GPB:generalized P and B-picture))スライスとしてコーディングされるとき、動き補償ユニット272は、エントロピー復号ユニット270から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ282に記憶された参照ピクチャに基づくデフォルトの構成技法を使用して参照フレームリストのリスト0およびリスト1を構成し得る。動き補償ユニット272は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を決定し、その予測情報を使用して、復号されている現在のビデオブロックの予測ブロックを生成する。たとえば、動き補償ユニット272は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数のための構築情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【0292】
[0213]動き補償ユニット272はまた、補間フィルタに基づいて、補間を実行し得る。動き補償ユニット272は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット272は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するために補間フィルタを使用し得る。
【0293】
[0214]逆量子化ユニット276は、ビットストリーム中で与えられ、エントロピー復号ユニット270によって復号された、量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオデコーダ30によって計算される量子化パラメータQP
Yの使用を含み得る。
【0294】
[0215]逆変換ユニット278は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。さらに、本開示の様々な技法によれば、逆変換ユニット278は、非分離可能である逆2次変換を適用するように構成され得る。いくつかの例では、逆変換ユニット278は、係数走査順序に従って第2の2次元係数ブロックとして1次元係数ベクトルを再編成するように構成され得る。
【0295】
[0216]動き補償ユニット272が、動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオブロックについての予測ブロックを生成した後、ビデオデコーダ30は、復号ビデオブロックを形成する。復号ビデオブロックを形成することの一部として、ビデオデコーダ30は、動き補償ユニット272によって生成された対応する予測ブロックを逆変換ユニット278からの残差ブロックに加算し得る。加算器280は、この加算演算を実行する1つまたは複数の構成要素を表す。望まれる場合に、デブロッキングフィルタも、ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタ処理するために適用され得る。他のループフィルタ(コーディングループ内またはコーディングループの後のいずれであれ)も、ピクセル推移を平滑化し、または他の形でビデオ品質を改善するために、使用され得る。所与のフレームまたはピクチャの復号ビデオブロックは、次いで、参照ピクチャメモリ282に記憶され、この参照ピクチャメモリ282は後続の動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ282はまた、復号ビデオを、
図1のディスプレイデバイス32などのディスプレイデバイス上に後で提示するために記憶する。
【0296】
[0217]ビデオデコーダ30は、概して、コード化ビデオシーケンス中の各ピクチャの各ブロックを復号するために、上記で説明したプロセスを使用する。さらに、いくつかの例では、ビデオデコーダ30は、ピクチャが割り当てられる時間レイヤを示すデータを復号し得る。さらに、ビデオデコーダ30は、他のレイヤ、たとえば、他のビュー、スケーラブルビデオコーディングレイヤなどのピクチャを復号するように構成され得る。いずれの場合も、ビデオデコーダ30は、(たとえば、様々なビデオ次元の)1つまたは複数のレイヤについて、各ピクチャが属するレイヤを示すデータをさらに復号し得る。
【0297】
[0218]ビデオエンコーダ20またはビデオデコーダ30によって実行され得る本開示の技法について、以下でより詳細に説明する。
【0298】
[0219]
図10Aは、本開示で説明する1つまたは複数の技法による、ビデオエンコーダ20による例示的な変換処理の図である。
図10Aの例では、ビデオエンコーダ20の変換処理ユニット252は、1次変換ユニット802と、2次変換ユニット804と、再編成ユニット806とを備える。1次変換ユニット802は、2次元係数ブロックを生成するために残差ブロックに対して、たとえば、DSTまたはDCTなどの1次変換を適用する。2次変換ユニット804は、1次元ベクトルを生成するために、2次元係数ブロックにKLTなどの非分離可能変換を適用する。再編成ユニット806は、2次元係数ブロックとして1次元ベクトルを再編成する。量子化ユニット254は、2次元ブロックを量子化する。
【0299】
[0220]
図10Bは、本開示で説明する1つまたは複数の技法による、ビデオデコーダ30による例示的な変換処理の図である。
図10Bの例では、ビデオデコーダ30の逆変換ユニット278は、再編成ユニット824と、2次逆変換ユニット826と、1次逆変換ユニット828とを備える。逆量子化ユニット276は、ビットストリーム中で与えられ、エントロピー復号ユニット270によって復号された量子化変換係数を逆量子化する。再編成ユニット824は、2次元係数ブロックから1次元ベクトルに変換係数を再編成する。2次逆変換ユニット826は、2次元係数ブロックを生成するために、1次元ベクトルに対してKLTなどの非分離可能逆変換を適用する。1次逆変換ユニット828は、ビデオデータのための残差係数ブロックを生成するために、2次元係数ブロックに対して分離可能逆変換を適用する。
【0300】
[0221]
図11は、本開示で説明する技法を実施し得るビデオデータの第1の例示的な復号を示す流れ図である。
図11の例示的な技法は、ビデオデコーダ30によって実行され得る。
図11の例では、デコーダ(たとえば、ビデオデコーダ30)は、第1の係数ブロックを逆量子化する(902)。デコーダは、第2の係数ブロックを生成するために逆量子化された第1の係数ブロックの少なくとも一部に第1の逆変換を適用する(904)。たとえば、第1の逆変換は、非分離可能変換である。たとえば、デコーダは、逆量子化された第1の係数ブロックに対して逆KLTを適用し得る。デコーダは、残差ビデオブロックを生成するために第2の係数ブロックに第2の逆変換を適用し得る(906)。第2の逆変換は、周波数領域からピクセル領域に第2の係数ブロックを変換する。たとえば、デコーダは、第2の係数ブロックに対して逆DCTまたはDSTを適用する。デコーダは、復号ビデオブロックを形成する(908)。復号ビデオブロックを形成することの一部として、デコーダは、1つまたは複数の予測ブロックを残差ビデオブロックに加算し得る。
【0301】
[0222]
図12は、本開示で説明する技法を実施し得るビデオデータの第1の例示的な符号化を示す流れ図である。説明したように、
図12の例示的な技法は、エンコーダ20によって実行され得る。
図12の例では、エンコーダ(たとえば、ビデオエンコーダ20)は、残差ビデオブロックを形成する(1002)。残差ビデオブロックを形成することの一部として、エンコーダは、コーディングされているビデオブロックから1つまたは複数の予測ブロックを減算し得る。エンコーダは、第1の係数ブロックを生成するために残差ビデオブロックに第1の変換を適用する(1004)。たとえば、第1の変換は、ピクセル領域から周波数領域に残差ビデオブロックを変換する。たとえば、エンコーダは、残差ビデオブロックに対してDCTまたはDSTを適用し得る。エンコーダは、第2の係数ブロックを生成するために第1の係数ブロックの少なくとも一部に第2の変換を適用する(1006)。たとえば、第2の変換は、非分離可能変換である。たとえば、エンコーダは、第2の係数ブロックに対してKLTを適用し得る。次に、エンコーダは、エントロピー符号化するための第2の係数ブロックを量子化する(1008)。
【0302】
[0223]
図13は、本開示で説明する技法を実施し得るビデオデータの第2の例示的な復号を示す流れ図である。説明したように、
図13の例示的な技法は、ビデオデコーダ30によって実行され得る。
図13の例では、デコーダ(たとえば、ビデオデコーダ30)は、係数走査順序に従って第1の1次元係数ベクトルとして第1の2次元係数ブロックを再編成する(1102)。たとえば、デコーダは、係数走査順序に従って第1の2次元係数ブロックを再編成し、ここで、より小さいインデックス値をもつ第1の2次元係数ブロック中の係数が、第1の1次元係数ベクトル中でより小さい走査インデックス位置に配置される。次に、デコーダは、第2の1次元係数ブロックを生成するために第1の1次元係数ベクトルに第1の逆変換を適用する(1104)。第1の逆変換は、非分離可能変換である。たとえば、デコーダは、1次元係数ベクトルに対して逆KLTを適用する。決定者は、係数走査順序に従って第2の2次元係数ベクトルとして第2の1次元係数ブロックを再編成する(1106)。次に、デコーダは、残差ビデオブロックを生成するために第2の2次元係数ブロックに第2の逆変換を適用する(1108)。たとえば、第2の逆変換は、周波数領域からピクセル領域に第2の2次元係数ブロックを変換する。たとえば、デコーダは、第2の2次元係数ブロックに対して逆DCTまたはDSTを適用する。デコーダは、復号ビデオブロックを形成する(1110)。復号ブロックを形成することの一部として、デコーダは、1つまたは複数の予測ブロックを残差ビデオブロックに加算し得る。
【0303】
[0224]
図14は、本開示で説明する技法を実施し得るビデオデータの第2の例示的な符号化を示す流れ図である。説明したように、
図14の例示的な技法は、ビデオエンコーダ20によって実行され得る。
図14の例では、エンコーダ(たとえば、ビデオエンコーダ20)は、残差ビデオブロックを形成する(1202)。残差ビデオブロックを形成することの一部として、エンコーダは、コーディングされているビデオブロックから1つまたは複数の予測ブロックを減算し得る。エンコーダは、第1の2次元係数ブロックを生成するために残差ビデオブロックの少なくとも一部に第1の変換を適用する(1204)。たとえば、第1の変換は、ピクセル領域から周波数領域に残差ビデオブロックを変換する。たとえば、エンコーダは、残差ビデオブロックに対してDCTまたはDSTを適用する。エンコーダは、第1の1次元係数ベクトルとして第1の2次元係数を再編成する(1206)。次に、エンコーダは、第2の1次元係数ベクトルを生成するために第1の1次元係数ブロックの少なくとも一部に第2の変換を適用する(1208)。たとえば、第2の変換は、非分離可能変換である。たとえば、エンコーダは、第1の1次元係数ブロックに対してKLTを適用する。次に、エンコーダは、係数走査順序に従って第2の2次元係数ブロックとして第2の1次元係数ベクトルを再編成する(1210)。たとえば、デコーダは、係数走査順序に従って1次元係数ベクトルを再編成し、ここで、より小さいインデックス値をもつ第2の1次元係数ベクトル中の係数が、量子化し、エントロピー符号化するための第2の2次元係数ブロック中でより小さい走査インデックス位置に配置される。
【0304】
[0225]上記例に応じて、本明細書で説明した技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行され得、全体的に追加、マージ、または除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実行され得る。
【0305】
[0226]1つまたは複数の例では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0306】
[0227]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。さらに、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【0307】
[0228]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明した技法の実装に好適な任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
【0308】
[0229]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされ得るか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【0309】
[0230]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号するための方法であって、
第1の係数ブロックを逆量子化することと、
第2の係数ブロックを生成するために前記逆量子化された第1の係数ブロックの少なくとも一部に第1の逆変換を適用することと、前記第1の逆変換が、非分離可能変換である、
残差ビデオブロックを生成するために前記第2の係数ブロックに第2の逆変換を適用することと、前記第2の逆変換が、周波数領域からピクセル領域に前記第2の係数ブロックを変換する、
復号ビデオブロックを形成することと、ここにおいて、前記復号ビデオブロックを形成することが、1つまたは複数の予測ブロックを前記残差ビデオブロックに加算することを備える、
を備える方法。
[C2]
3つ以上の非分離可能変換候補を含む非分離可能変換のセットのサブセットを構築することと、
前記第1の逆変換として非分離可能変換の前記セットの前記サブセットから1つの候補を選択することと
をさらに備える、C1に記載の方法。
[C3]
前記サブセットを構築することが、復号情報に基づいて前記サブセットを決定することを備える、前記復号された情報が、イントラ予測モードと、コーディングユニット(CU)レベルの拡張複数変換(EMT)インデックスと、変換ユニット(TU)レベルのEMTインデックスと、残差4分木深度と、量子化係数と、参照予測ブロックと、予測ユニット(PU)内の現在のTUの相対ロケーションとのうちの1つまたは複数を備える、C2に記載の方法。
[C4]
非分離可能変換の前記セットが、12個の変換サブセットを含む、前記12個の変換サブセットが、非分離可能変換の前記セットの前記サブセットを含む、C2に記載の方法。
[C5]
前記12個の変換サブセットの各変換サブセットが、3つの変換候補を含む、C4に記載の方法。
[C6]
非分離可能変換の前記セットが、前記ビデオデータのためのルーマイントラ予測モードによって指定される、C5に記載の方法。
[C7]
異なるイントラ予測モードに対応する非分離可能変換の前記セットの変換サブセット中の変換候補の数が異なる、C2に記載の方法。
[C8]
前記方法が、前記ビデオデータのビットストリームから、変換ユニット、予測ユニット、コーディングユニット、またはそれらの組合せに適用可能なインデックスを示すシンタックス要素を取得することをさらに備える、
非分離可能変換の前記サブセットから前記候補を選択することが、前記第1の逆変換として、前記インデックスによって示される候補を選択することを備える、C2に記載の方法。
[C9]
前記第1の逆変換が、カルーネンレーベ変換(KLT)である、C1に記載の方法。
[C10]
ビデオデータを符号化するための方法であって、
残差ビデオブロックを形成することと、ここにおいて、前記残差ビデオブロックを形成することが、コーディングされているビデオブロックから1つまたは複数の予測ブロックを減算することを備える、
第1の係数ブロックを生成するために前記残差ビデオブロックに第1の変換を適用することと、前記第1の変換が、ピクセル領域から周波数領域に前記残差ビデオブロックを変換する、
第2の係数ブロックを生成するために前記第1の係数ブロックの少なくとも一部に第2の変換を適用することと、前記第2の変換が、非分離可能変換である、
前記第2の係数ブロックを量子化することと
を備える方法。
[C11]
3つ以上の非分離可能変換候補を含む非分離可能変換のセットのサブセットを構築することと、
前記第2の変換として非分離可能変換の前記セットの前記サブセットから1つの候補を選択することと
をさらに備える、C10に記載の方法。
[C12]
前記サブセットを構築することが、イントラ予測モードと、コーディングユニット(CU)レベルの拡張複数変換(EMT)インデックスと、変換ユニット(TU)レベルのEMTインデックスと、残差4分木深度と、量子化係数と、基準予測ブロックと、予測ユニット(PU)内の現在のTUの相対ロケーションとのうちの1つまたは複数に基づいて前記サブセットを決定することを備える、C11に記載の方法。
[C13]
非分離可能変換の前記セットが、12個の変換サブセットを含む、前記12個の変換サブセットが、非分離可能変換の前記セットの前記サブセットを含む、C11に記載の方法。
[C14]
前記12個の変換サブセットの各変換サブセットが、3つの変換候補を含む、C13に記載の方法。
[C15]
非分離可能変換の前記セットが、前記ビデオデータのためのルーマイントラ予測モードによって指定される、C14に記載の方法。
[C16]
異なるイントラ予測モードに対応する非分離可能変換の前記セットの変換サブセット中の変換候補の数が異なる、C11に記載の方法。
[C17]
前記ビデオデータの符号化ビットストリーム中に、変換ユニット、予測ユニット、コーディングユニット、またはそれらの組合せのためのインデックスを示すデータを生成すること、前記選択された候補を示す前記インデックスが、前記第2の変換である、
をさらに備える、C11に記載の方法。
[C18]
前記第2の変換が、カルーネンレーベ変換(KLT)である、C10に記載の方法。
[C19]
ビデオデータを復号するための装置であって、
前記ビデオデータを記憶するように構成されたメモリと、
第1の係数ブロックを逆量子化することと、
第2の係数ブロックを生成するために前記逆量子化された第1の係数ブロックの少なくとも一部に第1の逆変換を適用することと、前記第1の逆変換が、非分離可能変換である、
残差ビデオブロックを生成するために前記第2の係数ブロックに第2の逆変換を適用することと、前記第2の逆変換が、周波数領域からピクセル領域に前記第2の係数ブロックを変換する、
1つまたは複数の予測ブロックを前記残差ビデオブロックに加算することと、
1つまたは複数の予測ブロックとの前記残差ビデオブロックの前記加算に基づいて復号ビデオブロックを形成することと
を行うように構成されたビデオデコーダと
を備える装置。
[C20]
前記ビデオデコーダが、
3つ以上の非分離可能変換候補を含む非分離可能変換のセットのサブセットを構築することと、
前記第1の逆変換として非分離可能変換の前記セットの前記サブセットから1つの候補を選択することと
を行うようにさらに構成された、C19に記載の装置。
[C21]
前記ビデオデコーダが、
復号情報に基づいて前記サブセットを決定することを備える、前記サブセットを構築すること、前記復号情報が、イントラ予測モードと、コーディングユニット(CU)レベルの拡張複数変換(EMT)インデックスと、変換ユニット(TU)レベルのEMTインデックスと、残差4分木深度と、量子化係数と、基準予測ブロックと、予測ユニット(PU)内の現在のTUの相対ロケーションとのうちの1つまたは複数を備える、
を行うようにさらに構成された、C20に記載の装置。
[C22]
非分離可能変換の前記セットが、12個の変換サブセットを含む、前記12個の変換サブセットが、非分離可能変換の前記セットの前記サブセットを含む、C20に記載の装置。
[C23]
前記12個の変換サブセットの各変換サブセットが、3つの変換候補を含む、C22に記載の装置。
[C24]
非分離可能変換の前記セットが、前記ビデオデータのためのルーマイントラ予測モードによって指定される、C23に記載の装置。
[C25]
異なるイントラ予測モードに対応する非分離可能変換の前記セットの変換サブセット中の変換候補の数が異なる、C20に記載の装置。
[C26]
前記ビデオデコーダが、前記ビデオデータのビットストリームから、変換ユニット、予測ユニット、コーディングユニット、またはそれらの組合せに適用可能なインデックスを示すシンタックス要素を取得するように構成され、
前記ビデオデコーダが、非分離可能変換の前記サブセットから前記候補を選択することの一部として、前記ビデオデコーダが、前記第1の逆変換として、前記インデックスによって示される候補を選択するように構成された、C20に記載の装置。
[C27]
前記第1の逆変換が、カルーネンレーベ変換(KLT)である、C19に記載の装置。
[C28]
前記装置が、前記復号ビデオブロックを備えるピクチャを表示するように構成されたディスプレイを備える、C19に記載の装置。
[C29]
前記装置が、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、C19に記載の装置。
[C30]
ビデオデータを符号化するための装置であって、
前記ビデオデータを記憶するように構成されたメモリと、
残差ビデオブロックを形成することと、ここにおいて、前記残差ビデオブロックを形成することが、コーディングされているビデオブロックから1つまたは複数の予測ブロックを減算することを備える、
第1の係数ブロックを生成するために前記残差ビデオブロックに第1の変換を適用することと、前記第1の変換が、ピクセル領域から周波数領域に前記残差ビデオブロックを変換する、
第2の係数ブロックを生成するために前記第1の係数ブロックの少なくとも一部に第2の変換を適用することと、前記第2の変換が、非分離可能変換である、
前記第2の係数ブロックを量子化することと
を行うように構成されたビデオエンコーダと
を備える装置。
[C31]
前記ビデオエンコーダが、
3つ以上の非分離可能変換候補を含む非分離可能変換のセットのサブセットを構築することと、
前記第2の変換として非分離可能変換の前記セットの前記サブセットから1つの候補を選択することと
を行うようにさらに構成された、C30に記載の装置。
[C32]
前記ビデオエンコーダが、
イントラ予測モードと、コーディングユニット(CU)レベルの拡張複数変換(EMT)インデックスと、変換ユニット(TU)レベルのEMTインデックスと、残差4分木深度と、量子化係数と、基準予測ブロックと、予測ユニット(PU)内の現在のTUの相対ロケーションとのうちの1つまたは複数に基づいて前記サブセットを決定することを備える、前記サブセットを構築すること
を行うようにさらに構成された、C30に記載の装置。
[C33]
非分離可能変換の前記セットが、12個の変換サブセットを含む、前記12個の変換サブセットが、非分離可能変換の前記セットの前記サブセットを含む、C31に記載の装置。
[C34]
前記12個の変換サブセットの各変換サブセットが、3つの変換候補を含む、C33に記載の装置。
[C35]
非分離可能変換の前記セットが、前記ビデオデータのためのルーマイントラ予測モードによって指定される、C34に記載の装置。
[C36]
異なるイントラ予測モードに対応する非分離可能変換の前記セットの変換サブセット中の変換候補の数が異なる、C31に記載の装置。
[C37]
前記ビデオエンコーダが、
前記ビデオデータの符号化ビットストリーム中に、変換ユニット、予測ユニット、コーディングユニット、またはそれらの組合せのためのインデックスを示すデータを生成すること、前記選択された候補を示す前記インデックスが、前記第2の変換である、
を行うようにさらに構成された、C31に記載の装置。
[C38]
前記第2の変換が、カルーネンレーベ変換(KLT)である、C30に記載の装置。
[C39]
前記ビデオエンコーダが、
変換ユニットが変換スキップモードでコーディングされていることに基づいて前記ビデオデータのビットストリーム中の前記第2の変換のインデックスを示すデータを符号化すべきかどうかを決定することと、
前記第2の変換の前記インデックスを示すデータが前記ビットストリーム中に符号化されていることに基づいて前記第1の係数ブロックの少なくとも一部に前記第2の変換を実行することを備える、前記第1の係数ブロックの少なくとも一部に前記第2の変換を適用することと
を行うようにさらに構成された、C30に記載の装置。
[C40]
前記装置が、前記ビデオブロックを備えるピクチャをキャプチャするように構成されたカメラを備える、C30に記載の装置。
[C41]
前記装置が、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、C30に記載の装置。
[C42]
ビデオデータを復号するための装置であって、
第1の係数ブロックを逆量子化するための手段と、
第2の係数ブロックを生成するために前記逆量子化された第1の係数ブロックの少なくとも一部に第1の逆変換を適用するための手段と、前記第1の逆変換が、非分離可能変換である、
残差ビデオブロックを生成するために前記第2の係数ブロックに第2の逆変換を適用するための手段と、前記第2の逆変換が、周波数領域からピクセル領域に前記第2の係数ブロックを変換する、
復号ビデオブロックを形成するための手段と、ここにおいて、前記復号ビデオブロックを形成するための前記手段が、1つまたは複数の予測ブロックを前記残差ビデオブロックに加算するための手段を備える、
を備える装置。
[C43]
実行されたとき、ビデオデータを復号するためのデバイスの1つまたは複数のプロセッサに、
第1の係数ブロックを逆量子化することと、
第2の係数ブロックを生成するために前記逆量子化された第1の係数ブロックの少なくとも一部に第1の逆変換を適用することと、前記第1の逆変換が、非分離可能変換である、
残差ビデオブロックを生成するために前記第2の係数ブロックに第2の逆変換を適用することと、前記第2の逆変換が、周波数領域からピクセル領域に前記第2の係数ブロックを変換する、
1つまたは複数の予測ブロックを前記残差ビデオブロックに加算することと、
1つまたは複数の予測ブロックとの前記残差ビデオブロックの前記加算に基づいて復号ビデオブロックを形成することと
を行わせる命令を記憶した非一時的コンピュータ可読記憶媒体。