(57)【要約】  イントラ予測残差に対して適用される多重変換を示すための例示的な技法が説明される。この技法は、HEVCの拡張または次世代のビデオコーディング規格など、先進的なビデオコーデックのコンテキストにおいて使用されてもよい。ビデオエンコーダおよびビデオデコーダは、それぞれが1つまたは複数の候補変換を識別する変換部分集合を選択することができる。ビデオエンコーダおよびビデオデコーダは、選択された変換部分集合から変換を決定することができる。
2019525575.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
複数の予測モードのうちの1つの予測モードに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択するステップであって、水平および垂直の変換対組合せの前記選択された集合が、1つまたは複数の水平および垂直の変換対組合せを含む、ステップと、
水平および垂直の変換対組合せの前記選択された集合から水平および垂直の変換対組合せを選択するステップと、
前記選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択するステップと、
現在の変換ブロックを決定するために、前記選択された水平変換および前記選択された垂直変換を使用して逆変換を前記現在の係数ブロックに適用するステップと、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成するステップと
を含む、方法。
【請求項２】
変換の前記集合を選択する前記ステップがN個の変換を選択するステップを含み、変換の前記選択された集合に対するすべての前記利用可能な水平および垂直の変換対組合せがN2個の水平および垂直の変換対組合せを含み、前記すべての利用可能な水平および垂直の変換対組合せがN2個より少ない水平および垂直の変換対組合せを含む、請求項1に記載の方法。
【請求項３】
水平および垂直の変換対組合せのすべての前記利用可能な集合が、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、および{DCT-5, DCT-5}の水平および垂直の変換対組合せからなり、
DSTが離散サイン変換のタイプを指し、DCTが離散コサイン変換のタイプを指す、請求項1に記載の方法。
【請求項４】
水平および垂直の変換対組合せのすべての前記利用可能な集合が、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、{DCT-5, DCT-5}、{DST-7, ID}、{DST-4, ID}、{DCT-8, ID}、(DCT-5, ID}、{DST-1, ID}および{ID、ID}の水平および垂直の変換対組合せからなり、
DSTが離散サイン変換のタイプを指し、DCTが離散コサイン変換のタイプを指し、IDが恒等変換を指す、請求項1に記載の方法。
【請求項５】
水平および垂直の変換対組合せのすべての前記利用可能な集合から水平および垂直の変換対組合せの前記集合を選択するステップが、水平および垂直の変換対組合せの前記集合に対する2段マッピングを検索するステップを含む、請求項1に記載の方法。
【請求項６】
前記2段マッピングが、ブロック高さ、幅およびイントラモードを変換対集合インデックスにマッピングする第1のマッピングと、前記変換対集合インデックスを水平および垂直の変換対組合せの前記集合にマッピングする第2のマッピングとを含む、請求項5に記載の方法。
【請求項７】
水平および垂直の変換対組合せの前記選択された集合から前記水平および垂直の変換対組合せを選択するステップが、
拡張型多重変換(EMT)インデックス値を決定するステップと、
前記決定されたEMTインデックス値に基づいて、水平および垂直の変換対組合せの前記選択された集合から前記水平および垂直の変換対組合せを選択するステップと
を含む、請求項1に記載の方法。
【請求項８】
水平および垂直の変換対組合せの前記集合を選択するステップが、前記複数の予測モードのうちの前記1つの予測モードが水平または垂直のイントラ予測モードを含むことに基づいて、水平変換または垂直変換に対する恒等(ID)変換を含む集合を選択するステップを含む、請求項1に記載の方法。
【請求項９】
水平および垂直の変換対組合せの前記集合を選択するステップが、前記複数の予測モードのうちの前記1つの予測モードが水平または垂直のイントラ予測モードに関連するしきい値内にイントラ予測モードを含むことに基づいて、水平変換または垂直変換に対する恒等(ID)変換を含む集合を選択するステップを含む、請求項1に記載の方法。
【請求項１０】
前記しきい値が、前記現在の係数ブロックのサイズに基づく、請求項9に記載の方法。
【請求項１１】
前記しきい値が、前記イントラ予測モードに関連する角度と前記水平または垂直のイントラ予測モードとの間の距離に基づく、請求項9に記載の方法。
【請求項１２】
水平および垂直の変換対組合せの前記集合を選択するステップが、4つの水平および垂直の変換対の水平および垂直の変換対組合せの前記集合を選択するステップを含む、請求項1に記載の方法。
【請求項１３】
前記複数の予測モードのうちの前記1つの予測モードが、角度イントラ予測モードを含む、請求項12に記載の方法。
【請求項１４】
水平および垂直の変換対組合せの前記集合を選択するステップが、前記現在の係数ブロックの高さ、前記現在の係数ブロックの幅、または前記複数の予測モードのうちの前記1つの予測モード、のうちの少なくとも1つに基づくマッピングを適用するステップを含む、請求項1に記載の方法。
【請求項１５】
前記マッピングを適用するステップが、前記複数の予測モードのうちの予測モードの部分集合に対する値を決定するステップと、予測モードの前記部分集合に対する前記値から導出された前記複数の予測モードのうちの予測モードの別の部分集合に対する値を決定するステップとを含む、請求項14に記載の方法。
【請求項１６】
ビデオデータを復号するためのデバイスであって、
前記ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサが、
複数の予測モードのうちの1つの予測モードに従って符号化された前記ビデオデータのビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択することであって、水平および垂直の変換対組合せの前記選択された集合が、1つまたは複数の水平および垂直の変換対組合せを含む、選択することと、
水平および垂直の変換対組合せの前記選択された集合から水平および垂直の変換対組合せを選択することと、
前記選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択することと、
現在の変換ブロックを決定するために、前記選択された水平変換および前記選択された垂直変換を使用して逆変換を前記現在の係数ブロックに適用することと、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成することと
を行うように構成される、デバイス。
【請求項１７】
変換の前記集合を前記選択することがN個の変換を選択することを含み、変換の前記選択された集合に対するすべての前記利用可能な水平および垂直の変換対組合せがN2個の水平および垂直の変換対組合せを含み、前記すべての利用可能な水平および垂直の変換対組合せがN2個より少ない水平および垂直の変換対組合せを含む、請求項16に記載のデバイス。
【請求項１８】
水平および垂直の変換対組合せのすべての前記利用可能な集合が、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、および{DCT-5, DCT-5}の水平および垂直の変換対組合せからなり、
DSTが離散サイン変換のタイプを指し、DCTが離散コサイン変換のタイプを指す、請求項16に記載のデバイス。
【請求項１９】
水平および垂直の変換対組合せのすべての前記利用可能な集合が、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、{DCT-5, DCT-5}、{DST-7, ID}、{DST-4, ID}、{DCT-8, ID}、{DCT-5, ID}、{DST-1, ID}および{ID、ID}の水平および垂直の変換対組合せからなり、
DSTが離散サイン変換のタイプを指し、DCTが離散コサイン変換のタイプを指し、IDが恒等変換を指す、請求項16に記載のデバイス。
【請求項２０】
水平および垂直の変換対組合せのすべての前記利用可能な集合からの水平および垂直の変換対組合せの前記集合の選択が、水平および垂直の変換対組合せの前記集合に対する2段マッピングの検索を含む、請求項16に記載のデバイス。
【請求項２１】
前記2段マッピングが、ブロック高さ、幅およびイントラモードを変換対集合インデックスにマッピングする第1のマッピングと、前記変換対集合インデックスを水平および垂直の変換対組合せの前記集合にマッピングする第2のマッピングとを含む、請求項20に記載のデバイス。
【請求項２２】
水平および垂直の変換対組合せの前記選択された集合から前記水平および垂直の変換対組合せを選択するように構成された前記1つまたは複数のプロセッサが、
拡張型多重変換(EMT)インデックス値を決定することと、
前記決定されたEMTインデックス値に基づいて、水平および垂直の変換対組合せの前記選択された集合から前記水平および垂直の変換対組合せを選択することと
を行うように構成された前記1つまたは複数のプロセッサを備える、請求項16に記載のデバイス。
【請求項２３】
水平および垂直の変換対組合せの前記集合を選択するように構成された前記1つまたは複数のプロセッサが、前記複数の予測モードのうちの前記1つの予測モードが水平または垂直のイントラ予測モードを含むことに基づいて、水平変換または垂直変換に対する恒等(ID)変換を含む集合を選択するように構成された前記1つまたは複数のプロセッサを備える、請求項16に記載のデバイス。
【請求項２４】
水平および垂直の変換対組合せの前記集合を選択するように構成された前記1つまたは複数のプロセッサが、前記複数の予測モードのうちの前記1つの予測モードが水平または垂直のイントラ予測モードに関連するしきい値内にイントラ予測モードを含むことに基づいて、水平変換または垂直変換に対する恒等(ID)変換を含む集合を選択するように構成された前記1つまたは複数のプロセッサを備える、請求項16に記載のデバイス。
【請求項２５】
前記しきい値が、前記現在の係数ブロックのサイズに基づく、請求項24に記載のデバイス。
【請求項２６】
前記しきい値が、前記イントラ予測モードに関連する角度と前記水平または垂直のイントラ予測モードとの間の距離に基づく、請求項24に記載のデバイス。
【請求項２７】
水平および垂直の変換対組合せの前記集合を選択するように構成された前記1つまたは複数のプロセッサが、前記現在の係数ブロックの高さ、前記現在の係数ブロックの幅、または前記複数の予測モードのうちの前記1つの予測モード、のうちの少なくとも1つに基づくマッピングを適用するように構成された前記1つまたは複数のプロセッサを備える、請求項16に記載のデバイス。
【請求項２８】
前記マッピングを適用するように構成された前記1つまたは複数のプロセッサが、前記複数の予測モードのうちの予測モードの部分集合に対する値を決定することと、予測モードの前記部分集合に対する前記値から導出された前記複数の予測モードのうちの予測モードの別の部分集合に対する値を決定することとを行うように構成された前記1つまたは複数のプロセッサを備える、請求項27に記載のデバイス。
【請求項２９】
ビデオデータを復号するためのデバイスであって、
複数の予測モードのうちの1つの予測モードに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択するための手段であって、水平および垂直の変換対組合せの前記選択された集合が、1つまたは複数の水平および垂直の変換対組合せを含む、手段と、
水平および垂直の変換対組合せの前記選択された集合から水平および垂直の変換対組合せを選択するための手段と、
前記選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択するための手段と、
現在の変換ブロックを決定するために、前記選択された水平変換および前記選択された垂直変換を使用して逆変換を前記現在の係数ブロックに適用するための手段と、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成するための手段と
を含む、デバイス。
【請求項３０】
命令を記憶するコンピュータ可読記録媒体であって、前記命令が、1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
複数の予測モードのうちの1つの予測モードに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択することであって、水平および垂直の変換対組合せの前記選択された集合が、1つまたは複数の水平および垂直の変換対組合せを含む、選択することと、
水平および垂直の変換対組合せの前記選択された集合から水平および垂直の変換対組合せを選択することと、
前記選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択することと、
現在の変換ブロックを決定するために、前記選択された水平変換および前記選択された垂直変換を使用して逆変換を前記現在の係数ブロックに適用することと、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成することと
を行わせる、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参照により組み込まれる、2016年7月15日に出願された米国仮出願第62/363,188号の利益を主張する。
【０００２】
本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、Advanced Video Coding (AVC)、ITU-T H.265、High Efficiency Video Coding (HEVC)規格、およびそのような規格の拡張によって定義された規格に記載されているものなどのビデオ圧縮技法を実施する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、かつ/または記憶し得る。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオフレーム、またはビデオフレームの一部分)は、ビデオブロックに区分され得る。ピクチャのイントラコード化(I)スライスの中のビデオブロックは、同じピクチャの中の隣接ブロックの中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ中の近隣ブロック中の参照サンプルに対する空間的予測または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間の画素差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル、およびコード化ブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されてよく、残差係数が得られ、残差係数は、次いで、量子化され得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示は、ビデオ符号化の一部として変換ブロックから係数ブロックを生成するために使用すべき変換と、ビデオ復号の一部として係数ブロックから変換ブロックを生成するために使用すべき変換とを決定する技法について説明する。いくつかの例において、ビデオエンコーダは、複数の変換部分集合を決定することができる。同様に、ビデオデコーダは、複数の変換部分集合を決定することができる。ビデオエンコーダおよびビデオデコーダは、必ずしも追加のシグナリングを要求しない暗黙の技法を使用して複数の変換部分集合の変換部分集合を選択し、選択された変換部分集合から変換を決定することができる。この形で、ビデオエンコーダおよびビデオデコーダは、シグナリングされる必要がある情報の量の最小限の増加を伴って、変換の相対的に大きい集合から選択することができる。
【０００６】
一例では、本開示は、ビデオデータを復号する方法を説明する。方法は、複数の予測モードのうちの1つに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択するステップであって、水平および垂直の変換対組合せの選択された集合は1つまたは複数の水平および垂直の変換対組合せを含む、ステップと、水平および垂直の変換対組合せの選択された集合から水平および垂直の変換対組合せを選択するステップと、選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択するステップと、現在の変換ブロックを決定するために選択された水平変換および選択された垂直変換を使用して逆変換を現在の係数ブロックに適用するステップと、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成するステップとを含む。
【０００７】
別の例では、本開示は、ビデオデータを復号するためのデバイスを説明する。デバイスは、ビデオデータを記憶するように構成されたメモリと1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、複数の予測モードのうちの1つに従って符号化されたビデオデータのビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択することであって、水平および垂直の変換対組合せの選択された集合は1つまたは複数の水平および垂直の変換対組合せを含む、選択することと、水平および垂直の変換対組合せの選択された集合から水平および垂直の変換対組合せを選択することと、選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択することと、現在の変換ブロックを決定するために選択された水平変換および選択された垂直変換を使用して逆変換を現在の係数ブロックに適用することと、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成することとを行うように構成される。
【０００８】
別の例では、本開示はビデオデータのブロックを復号するためのデバイスについて説明し、そのデバイスは、複数の予測モードのうちの1つに従って符号化されたビデオデータのビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択するための手段であって、水平および垂直の変換対組合せの選択された集合は1つまたは複数の水平および垂直の変換対組合せを含む、手段と、水平および垂直の変換対組合せの選択された集合から水平および垂直の変換対組合せを選択するための手段と、選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択するための手段と、現在の変換ブロックを決定するために選択された水平変換および選択された垂直変換を使用して逆変換を現在の係数ブロックに適用するための手段と、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成するための手段とを含む。
【０００９】
別の例では、本開示は命令を記憶するコンピュータ可読媒体について説明し、その命令は、1つまたは複数のプロセッサによって実行されたとき、複数の予測モードのうちの1つに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択することであって、水平および垂直の変換対組合せの選択された集合は1つまたは複数の水平および垂直の変換対組合せを含む、選択することと、水平および垂直の変換対組合せの選択された集合から水平および垂直の変換対組合せを選択することと、選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択することと、現在の変換ブロックを決定するために選択された水平変換および選択された垂直変換を使用して逆変換を現在の係数ブロックに適用することと、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成することとを1つまたは複数のプロセッサに行わせる。
【００１０】
別の例では、本開示は、ビデオデータを符号化する方法を説明する。方法は、複数の予測モードのうちの1つに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択するステップであって、水平および垂直の変換対組合せの選択された集合は1つまたは複数の水平および垂直の変換対組合せを含む、ステップと、水平および垂直の変換対組合せの選択された集合から水平および垂直の変換対組合せを選択するステップと、選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択するステップと、現在の変換ブロックを決定するために選択された水平変換および選択された垂直変換を使用して順変換を現在の係数ブロックに適用するステップと、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成するステップとを含む。
【００１１】
別の例では、本開示は、ビデオデータを符号化するためのデバイスを説明する。デバイスは、ビデオデータを記憶するように構成されたメモリと1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、複数の予測モードのうちの1つに従って符号化されたビデオデータのビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択することであって、水平および垂直の変換対組合せの選択された集合は1つまたは複数の水平および垂直の変換対組合せを含む、選択することと、水平および垂直の変換対組合せの選択された集合から水平および垂直の変換対組合せを選択することと、選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択することと、現在の変換ブロックを決定するために選択された水平変換および選択された垂直変換を使用して順変換を現在の係数ブロックに適用することと、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成することとを行うように構成される。
【００１２】
別の例では、本開示はビデオデータのブロックを符号化するためのデバイスについて説明し、デバイスは、複数の予測モードのうちの1つに従って符号化されたビデオデータのビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択するための手段であって、水平および垂直の変換対組合せの選択された集合は1つまたは複数の水平および垂直の変換対組合せを含む、手段と、水平および垂直の変換対組合せの選択された集合から水平および垂直の変換対組合せを選択するための手段と、選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択するための手段と、現在の変換ブロックを決定するために選択された水平変換および選択された垂直変換を使用して順変換を現在の係数ブロックに適用するための手段と、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成するための手段とを含む。
【００１３】
別の例では、本開示は命令を記憶するコンピュータ可読媒体について説明し、命令は、1つまたは複数のプロセッサによって実行されたとき、複数の予測モードのうちの1つに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択することであって、水平および垂直の変換対組合せの選択された集合は1つまたは複数の水平および垂直の変換対組合せを含む、選択することと、水平および垂直の変換対組合せの選択された集合から水平および垂直の変換対組合せを選択することと、選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択することと、現在の変換ブロックを決定するために選択された水平変換および選択された垂直変換を使用して順変換を現在の係数ブロックに適用することと、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成することとを1つまたは複数のプロセッサに行わせる。
【００１４】
1つまたは複数の例の詳細が、添付の図面および以下の説明において記載される。他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１５】
【図１Ａ】変換タイプの例を示す表である。
【図１Ｂ】変換タイプの例を示す表である。
【図１Ｃ】変換タイプの例を示す表である。
【図１Ｄ】変換タイプの例を示す表である。
【図１Ｅ】変換タイプの例を示す表である。
【図２】本開示に記載される技法を利用することができる例示的なビデオコーディングシステムを示すブロック図である。
【図３】high efficiency video coding (HEVC)における残差四分木に基づく変換方式の例を示す概念図である。
【図４】HEVCにおけるコーディンググループに基づく係数スキャンの例を示す概念図である。
【図５Ａ】複数のブロックサイズと複数のイントラ予測モードとに対する水平/垂直変換対を指定する例示的なルックアップテーブルである。
【図５Ｂ】複数のブロックサイズと複数のイントラ予測モードとに対する水平/垂直変換対を指定する例示的なルックアップテーブルである。
【図６】ブロック高さ、幅およびイントラモードから変換対集合インデックスにマッピングする例示的なルックアップテーブルである。
【図７】本開示に記載される技法を実施することができる例示的なビデオエンコーダを示すブロック図である。
【図８】本開示に記載される技法を実施することができる例示的なビデオデコーダを示すブロック図である。
【図９】ビデオデータをコーディングする例示的な方法を示す流れ図である。
【発明を実施するための形態】
【００１６】
本開示は、イントラ予測残差またはインター予測残差に適用される多重変換に関する。この技法は、high efficiency video coding (HEVC)標準規格の拡張またはビデオコーディング標準規格の次の世代など、高度なビデオコーデックの文脈において使用され得る。
【００１７】
本開示の技法は、適応多重変換(AMT:Adaptive Multiple Transform)としても知られている拡張型の多重変換(EMT)の現在の設計を潜在的に改善する。EMTは、イントラ予測モードおよび決定されたEMTインデックスに基づいて変換対を決定するための簡単なルックアップテーブルを使用し得る。
【００１８】
P. Philippe、V. Lorcy、「Proposed improvements to the Adaptive multiple Core transform」、JVET-C0222における修正されたEMTルックアップテーブルは、より柔軟な水平/垂直変換対およびブロックサイズ依存性を導入することによってEMTのコーディング利得を改善したが、ルックアップテーブルはかなり大きくて不規則であり、それはクリーンな設計を持たず、記憶負荷を大幅に増加させる。本開示の技法は、より小さいLUTを使用する。
【００１９】
ビデオコーディングにおいて、ビデオエンコーダは、ビデオデータの元のブロックのサンプル値から予測ブロックのサンプル値を減算することによって残差ブロックを生成する。ビデオエンコーダは、残差ブロックを1つまたは複数の変換ブロックに分割し、1つまたは複数の変換ブロックに変換(たとえば、離散コサイン変換(DCT)などの離散周波数変換)を適用して、1つまたは複数の変換ブロック内の残差値を画素領域から周波数領域に変換する。周波数領域において、変換されたブロックは、1つまたは複数の変換係数値を含む係数ブロックと呼ばれる。
【００２０】
復号中に、ビデオデコーダは、相反プロセスを実行する。たとえば、ビデオデコーダは、係数ブロックに逆変換を適用して、係数ブロックを変換ブロックに変換する(たとえば、周波数領域から画素領域に変換する)。変換ブロックは、残差ブロックの1ブロックであり、ビデオデコーダは、予測ブロックのサンプル値に残差ブロックの残差値を加算して、現在のブロックを再構成する。
【００２１】
説明のしやすさだけのために、本開示は、それぞれ符号化プロセスおよび復号プロセスに使用される変換を決定するものとしてビデオエンコーダおよびビデオデコーダについて説明する。しかしながら、ビデオエンコーダが、係数ブロックを生成するために変換ブロックに変換を適用することと、ビデオデコーダが、変換ブロックを再構成するために係数ブロックにその変換の逆を適用することとを理解されたい。したがって、ビデオデコーダが適用する変換は、ビデオエンコーダが適用する変換の逆である。したがって、本開示において、ビデオデコーダが、変換を決定し、かつ/または変換を適用するものとして説明される時に、ビデオデコーダが、ビデオエンコーダによって決定された変換の逆である変換を決定しており、かつ/または、ビデオデコーダが、ビデオエンコーダによって適用された変換の逆である変換を適用していることを理解されたい。
【００２２】
本開示は、変換係数を符号化するために残差値の変換ブロックに適用される変換または残差値を復号するために変換係数の係数ブロックに適用される変換を決定するための例の技法について説明する。たとえば、ビデオエンコーダおよびビデオデコーダは、それぞれ複数の変換部分集合を構成することができ、各変換部分集合は、複数の候補変換を識別する。候補変換は、異なるタイプのDCTおよび異なるタイプの離散サイン変換(DST)など、異なるタイプの変換を指す。ビデオエンコーダおよびビデオデコーダは、変換部分集合を選択し、ビデオ符号化のために変換ブロックから係数ブロックを、またはビデオ復号のために係数ブロックから変換ブロックを決定するのに使用される変換を、選択された変換部分集合から決定する。
【００２３】
この形で、ビデオエンコーダおよびビデオデコーダは、候補変換のより大きい集合から使用すべき変換を決定することができ、ビットストリーム帯域幅に過度の重荷を負わせることなく変換ブロックの変化する統計へのより良い適合を可能にする。たとえば、一部の技法は、何個の変換が使用可能であるのかを制約し、これは、変換ブロックの統計が、使用可能な変換のどれもが良好に動作しないようなものなので、悪いコーディング性能をもたらす可能性がある。他のより良い変換がある可能性があるが、これらの変換は、制約に起因して使用不能である。
【００２４】
本開示において説明される技法において、より多くの変換が使用可能なので、ビデオエンコーダおよびビデオデコーダは、変換の制限された集合を用いて可能になるものより良いコーディング性能を提供する変換を使用することができる。さらに、より詳細に説明されるように、どの変換を使用すべきかを示すのに使用されるシグナリングオーバーヘッドは、低く保たれ、その結果、使用可能なより多くの変換を有し、帯域幅に対する影響を低く保ちながら、コーディング利得が達成され得るようになる。
【００２５】
たとえば、ビットストリーム内でシグナリングされる情報に頼るのではなく、ビデオデコーダは、イントラ予測モード、変換ブロックのロケーション、その他などの暗黙の技法に基づいて、どの変換部分集合を使用すべきかを選択することができる。次いで、ビデオデコーダは、ビットストリーム内でシグナリングされた、選択された変換部分集合のそれぞれの変換部分集合の1つまたは複数の変換部分集合インデックス、あるいは非ゼロ係数の個数、非ゼロ係数の和、または係数ブロック内の非ゼロ係数の位置を含むがこれに限定されない他の要因におそらくは基づいて、選択された変換部分集合から使用すべき変換を決定することができる。
【００２６】
変換部分集合インデックスが、それぞれの変換部分集合についてシグナリングされる場合であっても、インデックス値が、すべての可能な変換にわたるのではなく変換部分集合の範囲だけにわたるので、シグナリングオーバーヘッドは低く保たれ得る。たとえば、16個までの可能な変換があり、変換部分集合が3つの候補変換を含むと仮定する。この場合に、インデックスは、0から2までの範囲にわたるが、すべての変換のリスト内へのインデックスは、0から15までの範囲にわたる。0から2までなどのより小さい値のシグナリングは、より大きい値のシグナリングより少数のビットを必要とする可能性がある。
【００２７】
変換部分集合が構成され、選択される形について説明する前に、以下は、ビデオコーディング標準規格、DCTおよびDST全般、DCTおよびDSTの異なるタイプ、ならびにいくつかの既存のDCT技法およびDST技法について説明する。次いで、本開示は、既存の技法におけるいくつかの問題について説明し、それらの問題を克服することのできる例の技法がこれに続く。
【００２８】
ビデオコーディング規格は、そのスケーラブルビデオコーディング(SVC:Scalable Video Coding)拡張およびマルチビュービデオコーディング(MVC:Multi-view Video Coding)拡張を含む、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、およびITU-T H.264(ISO/IEC MPEG-4 AVCとも呼ばれる)を含む。加えて、新たなビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)が、ITU-Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG)とのビデオコーディング共同研究部会(JCT-VC)によって最近開発されている。以下ではHEVC WDと呼ばれる、最終的なHEVCドラフト仕様は、http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。HEVC標準規格の最終ドラフトは、ITU-T H.265, Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services - Coding of moving video, Advanced video coding for generic audiovisual services, The International Telecommunication Union、2014年10月であり、http://www.itu.int/rec/T-REC-H.265-201410-I/enから入手可能である。
【００２９】
以下は、離散サイン変換および離散コサイン変換の説明である。変換は、入力信号の代替表現を導出するプロセスを示す。たとえば、変換は、値を画素領域から周波数領域に(たとえば、ビデオ符号化において)または周波数領域から画素領域に(たとえば、ビデオ復号において)変換する。N点ベクトルx=[x0, x1, …, xN-1]Tおよび所与のベクトルの集合{Φ0, Φ1, …, ΦM-1}を与えられれば、xはΦ0, Φ1, …, ΦM-1の線形結合を使用して近似され得、または正確に表現され得、これは、
【００３０】
【数１】
2019525575.tif 000003
【００３１】
のように定式化され得、上式で、
【００３２】
【数２】
2019525575.tif 000004
【００３３】
はxの近似または同等物とすることができ、ベクトルf=[f0、f1、f2、…、fM-1]は変換係数ベクトルと呼ばれ、{Φ0、Φ1、…、ΦM-1}は変換基底ベクトルである。
【００３４】
ビデオコーディングのシナリオにおいて、変換係数は、おおむね無相関かつ疎である、すなわち、入力ベクトルxのエネルギーは、少数の変換係数のみに詰め込まれ、残りの大多数の変換係数は、通常は0に近い。たとえば、ビデオエンコーダが、変換ブロックを係数ブロックに変換する時に、係数ブロック内の非0係数値は、係数ブロックの左上角に一緒にグループ化される傾向があり、係数値の大多数は0である。係数ブロックの左上角付近でグループ化された非0係数は、低周波数成分を反映し、0になる傾向がある係数ブロックの右下角付近の係数値は、高周波数成分を反映する。
【００３５】
特定の入力データを与えられて、エネルギーコンパクション(energy compaction)に関する最適変換は、いわゆるカルーネンレーベ変換(KLT)であり、このKLTは、変換基底ベクトルとして入力データの共分散行列の固有ベクトルを使用する。したがって、KLTは、実際にはデータ依存変換であり、一般的な数学的定式化を有しない。しかし、ある種の仮定、たとえば、入力データが一次定常マルコフ過程(first-order stationary Markov process)を形成するという仮定の下では、文献において、対応するKLTが、実際にユニタリ変換の正弦曲線族のメンバであることが証明されており、これは、Jain、A.K.、A sinusoidal family of unitary transforms、IEEE Trans. on Pattern Analysis and Machine Intelligence、1、356頁、1979年に記載されている。ユニタリ変換の正弦曲線族は、次のように定式化される変換基底ベクトルを使用する変換を示す。
Φm(k)=Aeikθ+Beikθ
上式で、eは、2.71828にほぼ等しい自然対数の底であり、A、B、およびθは、一般に複素数であり、mの値に依存する。
【００３６】
離散フーリエ、コサイン、サイン、および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の異なるタイプの完全な定義は、下で与えられる。
【００３７】
入力のN点ベクトルがx=[x0, x1, …, xN-1]Tとして表され、行列を乗算することによってy=[y0, y1, …, yN-1]Tとして表される別のN点変換係数ベクトルに変換されると仮定すると、上記のプロセスは、次の変換式のうちの1つに従ってさらに示すことができ、ここでkはyの変換係数のインデックスであり、両端を含めて0〜N-1に及び、w0およびw1はDCTおよびDSTの各タイプに対する次の変換定式化の中で定義される2つの定数であり、xnは入力ベクトルxのn番目の要素を示す。
DCTタイプI (DCT-1):
【００３８】
【数３】
2019525575.tif 000005
【００３９】
【数４】
2019525575.tif 000006
【００４０】
DCTタイプII (DCT-2):
【００４１】
【数５】
2019525575.tif 000007
【００４２】
【数６】
2019525575.tif 000008
【００４３】
DCTタイプIII (DCT-3):
【００４４】
【数７】
2019525575.tif 000009
【００４５】
【数８】
2019525575.tif 000010
【００４６】
DCTタイプIV (DCT-4):
【００４７】
【数９】
2019525575.tif 000011
【００４８】
DCTタイプV (DCT-5):
【００４９】
【数１０】
2019525575.tif 000012
【００５０】
【数１１】
2019525575.tif 000013
【００５１】
DCTタイプVI (DCT-6):
【００５２】
【数１２】
2019525575.tif 000014
【００５３】
【数１３】
2019525575.tif 000015
【００５４】
DCTタイプVII (DCT-7):
【００５５】
【数１４】
2019525575.tif 000016
【００５６】
【数１５】
2019525575.tif 000017
【００５７】
DCTタイプVIII (DCT-8):
【００５８】
【数１６】
2019525575.tif 000018
【００５９】
DSTタイプI (DST-1):
【００６０】
【数１７】
2019525575.tif 000019
【００６１】
DSTタイプII (DST-2):
【００６２】
【数１８】
2019525575.tif 000020
【００６３】
【数１９】
2019525575.tif 000021
【００６４】
DSTタイプIII (DST-3):
【００６５】
【数２０】
2019525575.tif 000022
【００６６】
【数２１】
2019525575.tif 000023
【００６７】
DSTタイプIV (DST-4):
【００６８】
【数２２】
2019525575.tif 000024
【００６９】
DSTタイプV (DST-5):
【００７０】
【数２３】
2019525575.tif 000025
【００７１】
DSTタイプVI (DST-6):
【００７２】
【数２４】
2019525575.tif 000026
【００７３】
DSTタイプVII (DST-7):
【００７４】
【数２５】
2019525575.tif 000027
【００７５】
DSTタイプVIII (DST-8):
【００７６】
【数２６】
2019525575.tif 000028
【００７７】
【数２７】
2019525575.tif 000029
【００７８】
上記は、異なるDCTタイプおよびDSTタイプの例を提供し、全部で16個の変換タイプがある。変換タイプは、変換基底関数の数学的定式化によって指定される。変換タイプと変換サイズとを混同してはならない。変換タイプは、基底関数を指すが、変換サイズは、変換のサイズを指す。たとえば、4点DST-VIIおよび8点DST-VIIは、Nの値(たとえば、4点または8点)にかかわりなく、同一の変換タイプを有する。
【００７９】
一般性を失うことなく、上記のすべての変換タイプを、下の一般化された定式化を使用して表すことができる。
【００８０】
【数２８】
2019525575.tif 000030
【００８１】
上式で、Tは、1つの一定の変換の定義、たとえばDCTタイプI〜DCTタイプVIIIまたはDSTタイプI〜DSTタイプVIIIによって指定される変換行列であり、Tの行ベクトル、たとえば[Ti,0, Ti,1, Ti,2, …, Ti,N-1]は、第iの変換基底ベクトルである。N点入力ベクトルに適用される変換は、N点変換と呼ばれる。DCTタイプI〜DCTタイプVIIIおよびDSTタイプI〜DSTタイプVIIIに対する式は、行列乗算として書き換えられてもよく、ここで変換行列Tは、浮動小数点数を有する行列である。例示的なビデオコーデックでは、浮動小数点変換行列の代わりに、変換行列Tが、整数行列として近似され得る。
【００８２】
1-D入力データxに対して適用される上の変換式は、下のように行列乗算の形で表され得ることにも留意されたい。
y=T・x
上式で、Tは変換行列を示し、xは入力データベクトルを示し、yは出力変換係数ベクトルを示す。
【００８３】
たとえば、ビデオエンコーダは、変換係数ベクトルを生成するために行列乗算y=T・xを実行することができる。ビデオデコーダは、変換係数ベクトルから変換ベクトルを生成するために、逆行列乗算を実行することができる。
【００８４】
上で導入された変換は、1D入力データに対して適用され、変換は、2D入力データソースにも拡張され得る。Xが、入力のM×Nデータアレイであると仮定する。2D入力データに対して変換を適用する通常の方法は、分離型2D変換および非分離型2D変換を含む。
【００８５】
分離型2D変換は、下で定式化されるように、Xの水平ベクトルおよび垂直ベクトルに1D変換を順次適用する。
Y=C・X・RT
ここで、CおよびRは、それぞれ所与のM×M変換行列およびN×N変換行列を表す。
【００８６】
この定式化から、Cが、Xの列ベクトルに1D変換を適用し、Rが、Xの行ベクトルに1D変換を適用することがわかる。本開示の後の部分において、単純さのために、CおよびRを左(垂直)変換および右(水平)変換と表し、これらの両方が、変換対を形成する。CがRと等しく、直交行列である場合がある。その場合に、分離型2D変換は、1つの変換行列だけによって決定される。
【００８７】
非分離型2D変換は、まず、一例として次の数学的写像を行うことによって、Xのすべての要素を単一のベクトルすなわちX'に再編成する。
【００８８】
【数２９】
2019525575.tif 000031
【００８９】
次いで、1D変換T'が、下のようにX'に適用される。
Y=T'・X
ここで、T'は、(M*N)×(M*N)変換行列である。
【００９０】
ビデオコーディングにおいて、分離型2D変換は、一般的に、1D変換と比較してはるかにより少ない演算(たとえば、加算、乗算)カウントしか必要としない。下でより詳細に説明するように、本開示は、ビデオエンコーダおよびビデオデコーダがそれを用いて左変換および右変換を選択する例の技法について説明する。
【００９１】
たとえば、ビデオエンコーダおよびビデオデコーダは、複数の変換部分集合を決定することができ、各変換部分集合は、複数の候補変換を識別する。16個の可能な変換(たとえば、DCT-1からDCT-8およびDST-1からDST-8)の例として、ビデオエンコーダおよびビデオデコーダは、3つの変換部分集合を決定することができ、変換部分集合の各々は、16個の変換のうちの2つ以上を含む。ビデオエンコーダおよびビデオデコーダは、3つの変換部分集合のうちの1つを選択し、選択された変換部分集合から左変換(たとえば、C)を決定し、3つの変換部分集合のうちの1つを選択し、選択された変換部分集合から右変換(たとえば、R)を決定することができる。選択される変換部分集合は、異なる部分集合または同一の部分集合とすることができる。
【００９２】
以下は、HEVCにおいて適用される変換タイプの説明である。H.264/AVCなどのいくつかのビデオコーデックにおいて、4点および8点の離散コサイン変換(DCT)タイプIIの整数近似が、イントラ予測残差とインター予測残差との両方に関して必ず適用される。イントラ予測残差は、イントラ予測からの残差を指し、インター予測残差は、インター予測からの残差を指す。残差、インター予測、およびイントラ予測は、すべて、下でより詳細に説明される。一般に、残差ブロックは、複数の変換ブロックに分割される。ビデオ符号化において、変換は、係数ブロックを生成するために変換ブロックの各々に適用される。ビデオ復号において、変換は、変換ブロックを生成し、残差ブロックを再構成するために、係数ブロックの各々に適用される。
【００９３】
残差サンプルの様々な統計によりよく対処するために、DCTタイプII以外の変換のより柔軟なタイプが、新世代ビデオコーデック内で利用される。たとえば、HEVCにおいては、4点タイプVII離散サイン変換(DST)の整数近似が、イントラ予測残差に使用され、これは、DSTタイプVIIが、イントラ予測方向に沿って生成された残差ベクトルに関してDCTタイプIIより効率的であることが、理論的な証明と実験的な検証との両方を行われており、たとえば、DSTタイプVIIは、水平イントラ予測方向によって生成された行残差ベクトルに関してDCTタイプIIより効率的である。たとえば、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月、726〜729頁を参照されたい。
【００９４】
HEVCにおいて、4点DSTタイプVIIの整数近似は、4×4ルマイントラ予測残差ブロックに関してのみ適用される(ルマイントラ予測残差ブロックは、下でより詳細に説明される)。HEVCにおいて使用される4点DST-VIIを、図1Aに示す。
【００９５】
HEVCにおいて、4×4ルマイントラ予測残差ブロックではない残差ブロックに関して、4点、8点、16点、および32点のDCTタイプIIの整数近似も適用される。図1Bは、4点DCT-IIの例を示し、図1Cは、8点DCT-IIの例を示し、図1Dは、16点DCT-IIの例を示し、図1Eは、32点DCT-IIの例を示す。図1A〜図1Eは、タイプIIの異なるサイズのDCTの例を示し、図1A〜図1Eに似て、異なるタイプのN点DCTおよびN点DSTの例がある。
【００９６】
図2は、本開示の技法を利用することのできる例のビデオコーディングシステム10を示すブロック図である。本明細書で使用される時に、「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示において、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指す。ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示内で説明される様々な例に従って予測残差の拡張型多重変換(enhanced multiple transform)の技法を実行するように構成され得るデバイスの例を表す。
【００９７】
図1に示されるように、ビデオコーディングシステム10は、ソースデバイス12および宛先デバイス14を含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００９８】
ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータなどを含む、広範囲のデバイスを備え得る。
【００９９】
宛先デバイス14は、ソースデバイス12からチャネル16を介して符号化されたビデオデータを受信し得る。チャネル16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にする、1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス14へ送信することができる。1つまたは複数の通信媒体は、高周波(RF)スペクトルまたは1つまたは複数の物理伝送線路などの、ワイヤレスおよび/または有線の通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などの、パケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にする他の機器を含み得る。
【０１００】
別の例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の好適なデジタル記憶媒体などの、ローカルにアクセスされる様々なデータ記憶媒体を含み得る。
【０１０１】
さらなる例では、チャネル16は、ファイルサーバ、またはソースデバイス12によって生成された符号化ビデオデータを記憶する別の中間記憶デバイスを含み得る。この例では、宛先デバイス14は、ファイルサーバまたは他の中間記憶デバイスにおいて記憶された符号化ビデオデータに、ストリーミングまたはダウンロードを介してアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、符号化ビデオデータを宛先デバイス14へ送信することが可能なタイプのサーバであってよい。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
【０１０２】
宛先デバイス14は、インターネット接続などの標準的なデータ接続を通じて、符号化ビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであってよい。
【０１０３】
本開示の技法は、ワイヤレスの用途または設定に限定されない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえば、インターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの、様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの用途をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【０１０４】
図2に示されたビデオコーディングシステム10は、単に例であり、本開示の技法は、符号化デバイスと復号デバイスとの間のいかなるデータ通信をも必ずしも含まないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)にあてはまる可能性がある。他の例において、データは、ローカルメモリからの取出し、ネットワークを介するストリーミングなどが行われる。ビデオ符号化デバイスは、データを符号化し、メモリに記憶することができ、かつ/またはビデオ復号デバイスは、データをメモリから取り出し、復号することができる。多くの例では、符号化および復号は、お互いに通信しないが、単純にデータをメモリに符号化し、かつ/またはデータをメモリから取り出し、復号するデバイスによって実行される。
【０１０５】
図2の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、ビデオ取込デバイス(たとえば、ビデオカメラ)、以前に取り込まれたビデオデータを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するビデオフィードインターフェース、および/もしくはビデオデータを生成するコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含むことができる。
【０１０６】
ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して符号化ビデオデータを宛先デバイス14へ直接送信する。他の例では、復号および/または再生のために宛先デバイス14によって後でアクセスできるように、符号化ビデオデータはまた、記憶媒体またはファイルサーバへ記憶され得る。
【０１０７】
図2の例では、宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して符号化ビデオデータを受信し得る。ディスプレイデバイス32は、宛先デバイス14と統合されてよく、または宛先デバイス14の外部にあってもよい。一般に、ディスプレイデバイス32は、復号されたビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスを備え得る。
【０１０８】
ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理回路、ハードウェア、またはそれらの任意の組合せなどの、様々な好適な回路構成のいずれかとして実装され得る。技法が部分的にソフトウェアで実装される場合、デバイスは、ソフトウェアのための命令を、好適な非一時的コンピュータ可読記憶媒体に記憶してよく、1つまたは複数のプロセッサを使用するハードウェアにおいて命令を実行して、本開示の技法を実行し得る。上記のもの(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)のいずれもが、1つまたは複数のプロセッサであると見なされてよい。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれかが、それぞれのデバイスの中の複合エンコーダ/デコーダ(コーデック)の一部として統合されてよい。
【０１０９】
本開示は、全般に、ビデオエンコーダ20がいくつかの情報をビデオデコーダ30などの別のデバイスへ「シグナリングすること」または「送信すること」に言及することがある。「シグナリングすること」または「送信すること」という用語は、概して、シンタックス要素、および/または圧縮ビデオデータを復号するために使用される他のデータの通信を指すことがある。そのような通信は、リアルタイムで、またはほぼリアルタイムで行われてよい。代替的に、そのような通信は、ある時間の範囲にわたって行われてよく、たとえば、符号化の時点において符号化ビットストリームの中のシンタックス要素をコンピュータ可読記憶媒体に記憶する時に行われる場合があり、次いで、この媒体に記憶された後の任意の時点において、復号デバイスによってシンタックス要素が取り出されてよい。
【０１１０】
いくつかの例において、ビデオエンコーダ20およびビデオデコーダ30は、上で言及されたHEVC標準規格、HEVCの拡張、またはおそらくは開発中の次世代のビデオコーディング標準規格などのビデオ圧縮標準規格に従って動作する。理解のしやすさのみのために、以下では、HEVC標準規格に関するいくつかの情報を提供する。しかし、本開示において説明される技法が、HEVC標準規格に限定されると考えてはならない。
【０１１１】
HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは、通常一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれる場合もある。ピクチャは、SL、SCb、およびSCrと表記される3つのサンプルアレイを含み得る。SLは、輝度サンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「彩度」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであることがあり、ルマサンプルのアレイしか含まないことがある。
【０１１２】
ピクチャの符号化された表現を生成するために、ビデオエンコーダ20は、コーディングツリー単位(CTU)のセットを生成し得る。CTUの各々は、ルマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用される構文構造とすることができる。コーディングツリーブロックは、サンプルのN×Nブロックとすることができる。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックに概して類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含んでよい。スライスは、ラスター走査において連続的に順序付けられた整数個のCTUを含み得る。
【０１１３】
コード化CTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロック上で4分木区分化を再帰的に実施して、コーディングツリーブロックをコーディングブロックに分割することができ、したがって、「コーディングツリーユニット」という名前である。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルマサンプルアレイ、Cbサンプルアレイ、およびCrサンプルアレイを有するピクチャの、ルマサンプルのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロック、ならびにコーディングブロックのサンプルをコーディングするのに使用される構文構造とすることができる。ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分することができる。予測ブロックは、同一の予測が適用されるサンプルの長方形(すなわち、正方形または非正方形)のブロックとすることができる。CUの予測ユニット(PU)は、ピクチャの、ルマサンプルの予測ブロック、クロマサンプルの2つの対応する予測ブロック、および予測ブロックサンプルを予測するのに使用される構文構造とすることができる。ビデオエンコーダ20は、CUの各PUのルマ予測ブロック、Cb予測ブロック、およびCr予測ブロックの予測ルマブロック、予測Cbブロック、および予測Crブロックを生成することができる。
【０１１４】
ビデオエンコーダ20は、PUの予測ブロックを生成する(たとえば、決定する)ためにイントラ予測またはインター予測を使用することができる。ビデオエンコーダ20が、PUの予測ブロックを生成するのにイントラ予測を使用する場合に、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成することができる。
【０１１５】
ビデオエンコーダ20が、PUの予測ブロックを生成する(たとえば、決定する)のにインター予測を使用する場合に、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成する。ビデオエンコーダ20は、PUの予測ブロックを生成するのに片方向予測(uni-prediction)または双方向予測(bi-prediction)を使用することができる。ビデオエンコーダ20が、PUの予測ブロックを生成するのに片方向予測を使用する時に、PUは、単一の動きベクトル(MV)を有することができる。ビデオエンコーダ20が、PUの予測ブロックを生成するのに双方向予測を使用する時に、PUは、2つのMVを有することができる。
【０１１６】
ビデオエンコーダ20がCUの1つまたは複数のPU用の予測ルマブロック、予測Cbブロック、および予測Crブロックを生成した後、ビデオエンコーダ20は、CU用のルマ残差ブロックを生成することができる。CUのルマ残差ブロック内の各サンプルは、CUの予測ルマブロックのうちの1つの中のルマサンプルと、CUの元のルマコーディングブロックの中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ20は、CU用のCb残差ブロックを生成することができる。CUのCb残差ブロックの中の各サンプルは、CUの予測Cbブロックのうちの1つの中のCbサンプルと、CUの元のCbコーディングブロックの中の対応するサンプルとの間の差分を示すことができる。ビデオエンコーダ20は、CU用のCr残差ブロックを生成することもできる。CUのCr残差ブロックの中の各サンプルは、CUの予測Crブロックのうちの1つの中のCrサンプルと、CUの元のCrコーディングブロックの中の対応するサンプルとの間の差分を示すことができる。
【０１１７】
さらに、ビデオエンコーダ20は、4分木区分化を使用して、CUのルマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを、1つまたは複数のルマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解することができる。変換ブロックは、同じ変換が適用されるサンプルの長方形ブロックであり得る。CUの変換ユニット(TU)は、ルマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、CUの各TUは、ルマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連し得る。TUに関連するルマ変換ブロックは、CUのルマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。
【０１１８】
ビデオエンコーダ20は、TUのルマ変換ブロックに1つまたは複数の変換を適用して、TU用のルマ係数ブロックを生成することができる。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、TUのCb変換ブロックに1つまたは複数の変換を適用して、TU用のCb係数ブロックを生成することができる。ビデオエンコーダ20は、TUのCr変換ブロックに1つまたは複数の変換を適用して、TU用のCr係数ブロックを生成することができる。より詳細に説明されるように、本開示は、係数ブロックを生成するために使用すべき変換をビデオエンコーダ20が決定する例の形について説明する。
【０１１９】
係数ブロック(たとえば、ルマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後に、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化することができる。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実施することができる。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリームの中に出力することができる。
【０１２０】
ビデオエンコーダ20は、エントロピー符号化された構文要素を含むビットストリームを出力することができる。このビットストリームは、コーディングされたピクチャの表現および関連付けられたデータを形成するビットのシーケンスを含むことができる。このビットストリームは、ネットワーク抽象化レイヤ(NAL)ユニットのシーケンスを含むことができる。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP:raw byte sequence payload)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化されている整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPは0個のビットを含む。
【０１２１】
様々なタイプのNALユニットは、様々なタイプのRBSPをカプセル化することができる。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS)のためのRBSPをカプセル化することができ、第2のタイプのNALユニットはコーディングされたスライスのためのRBSPをカプセル化することができ、第3のタイプのNALユニットはSEIのためのRBSPをカプセル化することができ、以下同様である。ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれ得る。
【０１２２】
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、シンタックス要素をビットストリームから復号するために、ビットストリームを構文解析し得る。ビデオデコーダ30は、ビットストリームから復号されたシンタックス要素に少なくとも一部基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは全般に、ビデオエンコーダ20によって実施されるプロセスと逆であり得る。たとえば、ビデオデコーダ30は、PUのMVを使用して、現在CUのPUに関する予測ブロックを決定し得る。加えて、ビデオデコーダ30は、現在CUのTUと関連した変換係数ブロックを逆量子化し得る。
【０１２３】
ビデオデコーダ30は、変換係数ブロックに対して逆変換を実行して、現在のCUのTUと関連付けられる変換ブロックを再構築し得る。本開示は、変換係数ブロックに対して逆変換を実行するのに使用される変換をビデオデコーダ30が決定する形の例の技法について説明する。
【０１２４】
ビデオデコーダ30は、現在のCUのPUの予測ブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構築し得る。ピクチャのCUごとにコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築し得る。
【０１２５】
上で説明したように、CUは、1つまたは複数のTUを含む。以下は、HEVCにおける残差四分木に基づく変換方式について説明する。残差ブロックの様々な特性に適合するために、残差四分木(RQT)を使用する変換コーディング構造が、HEVCにおいて適用され、この変換コーディング構造は、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で短く説明されている。
【０１２６】
上で説明したように、各ピクチャは、CTUに分割され、このCTUは、特定のタイルまたはスライスに関してラスター走査順においてコーディングされる。CTUは、正方形ブロックであり、四分木すなわちコーディングツリーのルートを表す。CTUサイズは、8×8から64×64のルマサンプルまでの範囲にわたり得るが、通常は64×64が使用される。各CTUは、コーディングユニット(CU)と呼ばれるより小さい正方形ブロックにさらに分割され得る。CTUがCUに再帰的に分割された後に、各CUは、予測ユニット(PU)および変換ユニット(TU)にさらに分割される。TUへのCUの区分は、四分木手法に基づいて再帰的に実行され、したがって、各CUの残差信号は、木構造すなわち残差四分木(RQT)によってコーディングされる。RQTは、4×4から32×32までの輝度サンプルのTUサイズを許容する。
【０１２７】
図3は、CUが文字「a」から「j」のラベルを付けられた10個のTUおよび対応するブロック区分を含む例を示す。RQTの各ノードは、変換ユニット(TU)である。個々のTUは、深さ優先木トラバーサル順で処理され、この深さ優先木トラバーサル順は、図3ではアルファベット順として図示され、深さ優先トラバーサルを用いる再帰Zスキャンに従う。四分木手法は、残差信号の変化する空間周波数特性に対する変換の適応を可能にする。通常、空間的なサポートがより大きい、より大きな変換ブロックサイズは、より良い周波数分解能を提供する。しかしながら、空間的なサポートがより小さい、より小さな変換ブロックサイズは、より良い空間分解能を提供する。この2つすなわち空間分解能と周波数分解能との間のトレードオフは、たとえばレートひずみ最適化技法に基づいて、エンコーダモード判断(たとえば、ビデオエンコーダ20による)によって選択される。レートひずみ最適化技法は、コーディングモード(たとえば、特定のRQT分割構造)ごとにコーディングビットと再構成ひずみとの加重和すなわちレートひずみコストを計算し、最小のレートひずみコストを有するコーディングモードを最良のモードとして選択する。
【０１２８】
3つのパラメータすなわち、木の最大深度、最小の許容される変換サイズ、および最大の許容される変換サイズが、RQTにおいて定義される。最小変換サイズおよび最大変換サイズは、4×4サンプルから32×32サンプルまでの範囲内で変化することができ、このサイズは、前の段落で言及されたサポートされるブロック変換に対応する。RQTの最大の許容される深度は、TUの個数を制約する。0と等しい最大深度は、各含まれるTB (変換ブロック)が最大の許容される変換サイズ、たとえば32×32に達した場合に、CB (コーディングブロック)がそれ以上分解され得ないことを意味する。
【０１２９】
これらのパラメータのすべてが、RQT構造と相互作用し、これに影響する。ルートCBサイズが64×64であり、最大深度が0と等しく、最大変換サイズが32×32と等しいケースを考慮されたい。この場合に、CBは、少なくとも1回分割されなければならない。というのは、そうでなければ64×64 TBにつながり、これが許容されないからである。HEVCにおいて、より大きいサイズの変換、たとえば64×64変換は、主にその制限された利益考慮と、相対的により小さい解像度ビデオに関する相対的に高い複雑さとに起因して、採用されない。
【０１３０】
RQTパラメータすなわち、最大RQT深度、最小変換サイズ、最大変換サイズは、シーケンスパラメータセットレベルにおいてビットストリーム内で送信される。RQT深度に関して、イントラコーディングされたCUおよびインターコーディングされたCU (すなわち、イントラ予測され符号化されたCU、インター予測され復号されたCU、イントラ予測され符号化されたCU、またはインター予測されたCU)に関して、異なる値が指定され、シグナリングされ得る。
【０１３１】
四分木変換は、イントラ残差ブロックとインター残差ブロックとの両方に対して適用される。通常、現在の残差四分木区分の同一のサイズのDCT-II変換が、残差ブロックに関して適用される。しかし、現在の残差四分木区分ブロックが4×4であり、イントラ予測によって生成される場合には、上記の4×4 DST-VII変換が適用される。
【０１３２】
以下は、HEVCにおける係数コーディングについて説明する。TUサイズにかかわりなく、変換ユニットの残差は、オーバーラップしない係数グループ(CG)を用いてコーディングされ、それぞれがTUの4×4ブロックの係数を含む。たとえば、32×32 TUは、合計64個のCGを有し、16×16 TUは、合計16個のCGを有する。TUの内部のCGは、ある事前に定義されたスキャン順に従ってコーディングされる。各CGをコーディングする時に、現在のCGの内部の係数は、4×4ブロックのある事前に定義されたスキャン順に従ってスキャンされ、コーディングされる。図4は、4個のCGを含む8×8 TUの係数スキャンを示す。
【０１３３】
色成分ごとに、1つのフラグが、現在の変換ユニットが少なくとも1つの非0係数を有するかどうかを示すために、最初にシグナリングされ得る。次いで、少なくとも1つの非0係数がある場合には、変換ユニット内の係数スキャン順において最後の有意な係数の位置が、変換ユニットの左上角に対する相対的な座標を用いて明示的にコーディングされる。座標の垂直成分または水平成分は、そのプレフィックスおよびサフィックスによって表され、ここで、プレフィックスは、トランケーテッドライス(TR:truncated rice)を用いて2進化され、サフィックスは、固定長を用いて2進化される。
【０１３４】
last_sig_coeff_x_prefixは、変換ブロック内のスキャン順において最後の有意な係数の列位置のプレフィックスを指定する。last_sig_coeff_x_prefixの値は、両端を含めて0から(log2TrafoSize << 1) - 1までの範囲内にある必要がある。
【０１３５】
last_sig_coeff_y_prefixは、変換ブロック内のスキャン順において最後の有意な係数の行位置のプレフィックスを指定する。last_sig_coeff_y_prefixの値は、両端を含めて0から(log2TrafoSize << 1) - 1までの範囲内にある必要がある。
【０１３６】
last_sig_coeff_x_suffixは、変換ブロック内のスキャン順において最後の有意な係数の列位置のサフィックスを指定する。last_sig_coeff_x_suffixの値は、両端を含めて0から(1 << ((last_sig_coeff_x_prefix >> 1) - 1)) - 1までの範囲内にある必要がある。
【０１３７】
変換ブロック内の走査順序において最後の有意な係数の列の場所LastSignificantCoeffXは、次のように導出される。
- last_sig_coeff_x_suffixが存在しない場合には、次があてはまる。
LastSignificantCoeffX = last_sig_coeff_x_prefix
- そうではない(last_sig_coeff_x_suffixが存在する)場合には、次があてはまる。
LastSignificantCoeffX = (1 << ((last_sig_coeff_x_prefix >> 1) - 1)) * (2 + (last_sig_coeff_x_prefix & 1)) + last_sig_coeff_x_suffix
【０１３８】
last_sig_coeff_y_suffixは、変換ブロック内のスキャン順において最後の有意な係数の行位置のサフィックスを指定する。last_sig_coeff_y_suffixの値は、両端を含めて0から(1 << ((last_sig_coeff_y_prefix >> 1) - 1)) - 1までの範囲内にある必要がある。
【０１３９】
変換ブロック内の走査順序において最後の有意な係数の行の場所LastSignificantCoeffYは、次のように導出される。
- last_sig_coeff_y_suffixが存在しない場合には、次があてはまる。
LastSignificantCoeffY = last_sig_coeff_y_prefix
- そうではない(last_sig_coeff_y_suffixが存在する)場合には、次があてはまる。
LastSignificantCoeffY = (1 << ((last_sig_coeff_y_prefix >> 1) - 1)) * (2 + (last_sig_coeff_y_prefix & 1)) + last_sig_coeff_y_suffix
【０１４０】
scanIdxが2と等しい時に、座標は、次のように交換される。
(LastSignificantCoeffX, LastSignificantCoeffY)=Swap(LastSignificantCoeffX, LastSignificantCoeffY)
【０１４１】
コーディングされたそのような位置およびCGの係数スキャン順をも用いて、最後のCG (スキャン順において)を除くCGが非0係数を含むかどうかを示す1つのフラグが、それらのCGに関してさらにシグナリングされる。非0係数を含む可能性があるCGに関して、有意フラグ、係数の絶対値、および符号情報が、事前に定義された4×4係数スキャン順に従って係数ごとにさらにコーディングされ得る。
【０１４２】
上で説明したように、本開示内で説明される技法は、ビデオエンコーダ20が変換ブロックを係数ブロックに変換するために適用する変換を決定する形と、ビデオデコーダ30が係数ブロックを変換ブロックに変換するために適用する(たとえば、逆変換として)変換を決定する形とについて説明する。以下は、イントラ予測残差およびインター予測残差に関する多重変換(たとえば、残差ブロックがイントラ予測から生成される時と残差ブロックがインター予測から生成される時とに関する異なる変換タイプ)について説明する。技法の多くがイントラ予測およびインター予測に関連して本明細書で説明されるが、技法は、コーディング残差データの一部として変換を利用する他のコーディングモードにも適用可能であり得る。
【０１４３】
いくつかの場合に、DSTタイプVIIが、従来のDCTタイプIIと比較してイントラコーディング効率を効率的に改善できるという事実にもかかわらず、予測残差が様々な統計を提示し、DCTタイプIIおよびDSTタイプVIIの固定された使用が、すべての可能なケースに効率的に適合することができないので、変換効率は、相対的に制限される。いくつかの技法が、異なるケースに適合するために提案されて来た。
【０１４４】
S.-C. Lim、D.-Y. Kim、S. Jeong、J. S. Choi、H. Choi、およびY.-L. Lee、「Rate-distortion optimized adaptive transform coding」、Opt. Eng.、vol. 48、no. 8、087004-1-087004-14頁、2009年8月において、予測残差に関するDCTまたはDSTの整数バージョンを適応的に使用する新しい変換方式が提案され、ブロックごとに、DCT変換またはDST変換のどちらが予測残差に使用されるのかがシグナリングされる。Y. YeおよびM. Karczewicz、「Improved H.264 intra coding based on bidirectional intra prediction, directional transform, and adaptive coefficient scanning」、in Proc. 15th IEEE Int. Conf. Image Process.、2008年10月、2116〜2119頁において、各イントラ予測モードが、KLT対として事前に定義された変換の一意の対(CおよびR)に写像され得、その結果、モード依存変換(MDDT:mode dependent transform)があてはまるようになることが提案された。この形で、異なるKLT変換が、異なるイントラ予測モードについて使用され得るが、どの変換が使用されるべきかは、事前に定義され、イントラ予測モードに依存する。
【０１４５】
しかしながら、X. Zhao、L. Zhang、S. W. Ma、およびW. Gao、「Video coding with rate-distortion optimized transform」、IEEE Trans. Circuits Syst. Video Technol.、vol. 22、no. 1、138〜151頁、2012年1月において、より多くの変換が使用され得、オフライントレーニングプロセスから導出される変換候補の事前に定義された集合からの変換へのインデックスが、明示的にシグナリングされる。MDDTに似て、各イントラ予測方向は、変換の対の一意の集合を有することができる。インデックスは、どの変換対が集合から選択されるのかを指定するためにシグナリングされる。たとえば、最小のブロックサイズ4×4に関して4つまでの垂直KLT変換と4つまでの水平KLT変換とがあり、したがって、16個の組合せが選択され得る。より大きいブロックサイズに関して、より少ない個数の組合せが使用される。「Video coding with rate-distortion optimized transform」において提案された方法は、イントラ予測残差とインター予測残差との両方にあてはまる。インター予測残差に関して、KLT変換の16個までの組合せが、選択され得、組合せ(4×4は4つ、8×8は16個)のうちの1つへのインデックスが、ブロックごとにシグナリングされる。
【０１４６】
A. SaxenaおよびF. Fernandes、「DCT/DST-based transform coding for intra prediction in image/video coding」、IEEE Trans. Image ProcessingならびにC. Yeo、Y. H. Tan、Z. Li、およびS. Rahardja、「Mode-dependent transforms for coding directional intra prediction residuals」、IEEE Trans. Circuits Syst. Video Technol.、vol. 22、no. 4、545〜554頁、2012年において、多重変換が使用されるが、KLT変換(通常はトレーニングされる必要がある)を使用する代わりに、DCT (DCT-II)またはDST (DST-VII)が、変換ユニット(同一である左変換と右変換と(たとえば、CおよびR)の両方)に使用され、どちらを使用すべきかは、シグナリングされたフラグによって決定される。F. Zou、O. C. Au、C. Pang、J. Dai、およびF. Lu、「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変換対が使用され、変換対へのインデックスが、コーディングユニットに関してシグナリングされ(導出される代わりに)、その結果、コーディングユニットの各変換ユニットが、変換の同一の対を使用するようになる。
【０１４７】
J. An、X. Zhao、X. Guo、およびS. Lei、「Non-CE7: Boundary-Dependent Transform for Inter-Predicted Residue」、JCTVC-G281において、多重変換が、CU内のTUのロケーションに従ってTUのインター予測された残差に関して選択される。C変換とR変換との両方が、DST-VIIおよびDST-VIIの反転されたバージョンから選択される。したがって、4つまでの組合せが、CU内のTUに関して可能である。しかしながら、組合せが、PUのロケーションによって完全に決定されるので、どの組合せが使用されているのかをシグナリングする必要はない。
【０１４８】
HEVCにおいて採用されているDCT-IIおよび4×4 DST-VIIに加えて、拡張型多重変換(「EMT」)方式が、インターとイントラの両方のコード化ブロックに対する残差コーディングのために使用され得る。方式は、HEVCにおける現在の変換以外のDCT/DSTファミリーからの複数の選択された変換を使用し得る。これらの変換行列は、DST-VII、DCT-VIII、DST-IおよびDCT-Vである。Table 1(表1)は、選択されたDST/DCTの基底関数を示す。
【０１４９】
変換行列の直交性を保持するために、変換行列は、HEVC内の変換行列より正確に量子化され得る。変換された係数の中間値を16ビットの範囲内に保持するために、水平変換の後および垂直変換の後に、すべての係数は、現在のHEVC変換において使用される右シフトと比較して、2ビットだけ余分に右シフトされ得る。
【０１５０】
EMTは、幅と高さの両方が、64以下であるCUに適用され、EMTが適用されるか否かは、CUレベルフラグによって制御される。CUレベルフラグが0に等しいとき、DCT-IIが、残差を符号化するためにCU内に適用される。EMT対応CU内のルマコーディングブロックの場合、2つの追加のフラグが、使用されるべき水平変換および垂直変換を識別するためにシグナリングされる。
【０１５１】
イントラ残差コーディングの場合、異なるイントラ予測モードの異なる残差統計量に起因して、モード依存の変換候補選択プロセスが使用される。3つの変換部分集合がTable 1(表1)に示すように定義されており、変換部分集合は、Table 2(表2)で指定されるようにイントラ予測モードに基づいて選択される。
【０１５２】
【表１】
2019525575.tif 000032
【０１５３】
部分集合の概念の場合、変換部分集合は、CUレベルのEMTフラグが1に等しいCUのイントラ予測モードを使用してTable 1(表1)に基づいて最初に識別される。その後、水平変換および垂直変換の各々に対して、Table 2(表2)内で識別された変換部分集合内の2つの変換候補のうちの1つが、遅延を伴って明確にシグナリングされることに基づいて選択される。
【０１５４】
【表２】
2019525575.tif 000033
【０１５５】
しかしながら、インター予測残差の場合、DST-VIIおよびDCT-VIIIからなる1つの変換集合のみが、すべてのインターモードに対して、および水平変換と垂直変換の両方に対して使用され得る。
【０１５６】
P. Philippe、V. Lorcy、「Proposed improvements to the Adaptive multiple Core transform」、JVET-C0222において、DST-IVおよび恒等変換(ID: Identity Transform)を使用して導入される、EMTの修正された設計が提案される。ID変換は、単位行列に等しい変換コアを使用し、したがって、ID変換は、単純に入力を出力にコピーしており、水平または垂直のいずれかの方向における変換をスキップしていると見なされ得る。DST-4およびID変換の利用は、規則的なパターンを持たない大きいルックアップテーブルによって指定される。これらのルックアップテーブルは、図5Aおよび図5Bに示すように、各ブロックサイズ(4×4、8×8、16×16、32×32を含む4つの異なるブロックサイズ)および各イントラ予測モード(67のイントラモード)に対する水平/垂直変換対を指定する。
【０１５７】
EMTの設計のこの修正は、改善されたコーディング利得を示すが、ルックアップテーブルは、クリーンな設計および妥当な記憶負荷に対して大きすぎる。加えて、最新のJEMコーデックにおいて、より柔軟な長方形ブロックサイズを含む4分木プラス2分木(QTBT)ブロック区分構造が、使用される。提案されたQTBTを用いる修正された設計を受け入れるために、ルックアップテーブルのサイズは爆発的に増加することになり、そのことがコーディング利得の改善をより疑わしいものにする。
【０１５８】
EMTの設計は、変換利用ベースのイントラ予測モードおよびEMTインデックスを指定するために簡単なルックアップテーブルを使用し、そのことで、異なるブロックサイズおよび水平/垂直変換対に対する柔軟性が欠ける場合がある。
【０１５９】
JVET-C0022における修正されたEMTルックアップテーブルは、より柔軟な水平/垂直変換対およびブロックサイズ依存性を導入することによってEMTのコーディング利得を改善したが、ルックアップテーブル(LUT)はかなり大きくて不規則であり、それはクリーンな設計ではなく、記憶負荷を大幅に増加させ、それにより記憶するためにかなりのメモリが必要となる。
【０１６０】
本開示のいくつかの例では、下の技法のうちの1つまたは複数は、上で言及された問題のうちの1つまたは複数に対処するために記述されている。しかしながら、以下の技法が上で言及された問題のうちの1つまたは複数に対処することは、要件ではない。以下の技法は、個別に適用され得る。いくつかの場合に、例の技法の任意の組合せが適用され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、技法を個別に適用することができ、あるいは、いくつかの場合に、1つまたは複数の技法の任意の組合せを適用することができる。
【０１６１】
本技法のいくつかの例では、JVET-C0022において使用されるものより小さいが、同様の性能を示すLUTが、使用され得る。
【０１６２】
いくつかの例では、変換の選択された集合、たとえば{DST-7, DST-4, DCT-8, DCT-5, DST-1}または{DST-7, DST-4, DCT-8, DCT-5, DST-1, ID}の間で異なる水平変換および垂直変換のすべての可能な組合せを許容する代わりに、はるかに少ない数の水平/垂直変換対のみが使用される。この例では、可能な変換タイプの数は制約され、たとえば、より低効率の組合せになる。すべての可能な組合せから、ID変換を含まない25およびID変換を含む36の、部分集合だけが使用され得る。したがって、変換の集合がN個の変換を含み得る場合(Nが、たとえば5または6の変換に等しい場合)、N個の変換のすべての垂直および水平の対の組合せは、N2個の水平および垂直の変換対組合せに等しいことになる。したがって、N2個より少ない水平および垂直の変換対組合せが使用され得る。
【０１６３】
より低効率の組合せが、すべての変換組合せを使用する試験に基づいて決定され得、最も少なく使用された組合せに基づいて、許容される組合せの数が低減される。したがって、多数の利用可能な変換が、性能利得が低減または逆転するまで、1つずつ低減され得る。変換組合せにおけるさらなる低減の後、計算される性能改善がわずかまたはゼロになった場合、変換組合せの集合が決定され得る。
【０１６４】
いくつかの例では、異なる水平変換および垂直変換の可能な組合せの総数が25、36、またはさらに大であり得るとき、水平/垂直変換対のはるかに少ない数の典型的な数は、10、11、12、13、14などであり得る。
【０１６５】
他の例では、制限された水平/垂直変換対は、限定はしないが、14個の対、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、{DCT-5, DCT-5}から選択され得る。
【０１６６】
他の例では、角度イントラ予測モードに対して適用される、制限された水平/垂直変換対は、限定はしないが、10個の対、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-4, DST-5}、{DCT-7, DST-5}、{DCT-8, DST-7}、{DST-8, DCT-4}、{DCT-5, DST-7}、{DST-1, DCT-7}、{DST-1, DCT-4}から選択され得る。
【０１６７】
さらなる例では、すべての利用可能な水平/垂直変換対から1つの水平/垂直変換対を選択することは、限定はしないが、EMTフラグ、EMTインデックス、非分離型二次変換(NSST)インデックス、イントラ予測モード、RQT深さ、ブロック幅/高さ、量子化された係数、およびCUまたはPUの内部のTUの相対ロケーションを含む復号された情報の全部または一部に依存することがある。たとえば、EMTインデックスは、ID変換が使用されるかどうかを決定するために使用され得る。
【０１６８】
いくつかの例では、N個の異なる水平/垂直変換対、ここでNはEMT内の利用可能な変換候補の数、のすべての可能な組合せを許容する代わりに、変換対のいくつかの集合があらかじめ規定され、各集合が水平/垂直変換のN対のうちの1つの特定の組合せを指定し、利用可能な変換対集合の数はN個の異なる水平/垂直変換対の可能な組合せの総数よりはるかに小さい。
【０１６９】
あらかじめ規定された変換対集合の典型的な例示的な数は、限定はしないが、10、11、12、13および14であり得る。
【０１７０】
N(例として4に等しいNを取る)個の水平/垂直変換対に対する10個の変換対集合の一例が下に示されており、ここで各行は4つの変換対を含む変換対集合を表し、各変換対は水平変換と垂直変換との組合せを示す。
{{DST4, DST4}、{DST7, DST7}、{DST4, DCT8}、{DCT8, DST4}}、
{{DST4, DST7}、{DST4, DCT5}、{DCT5, DST7}、{DST1, DCT5}}、
{{DST7, DST4}、{DST7, DCT5}、{DCT5, DST4}、{DST1, DCT5}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DCT5}}、
{{DST7, DST7}、{DST7, DCT8}、{DCT8, DST7}、{DCT5, DCT5}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST4}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST7}}、
{{DST4, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DST7}}
10個の変換対集合のこの集合は、たとえば、平坦、DC、水平、垂直、および角度予測のモードに使用され得る。角度イントラ予測モードに適用される変換対集合は、限定はしないが、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST4}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST7}}、
{{DST4, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DST7}}
から選択され得る。
【０１７１】
いくつかの例では、変換対集合の選択は、限定はしないが、EMTフラグ、EMTインデックス、NSSTインデックス、イントラ予測モード、RQT深さ、ブロック幅/高さ、量子化された係数、およびCUまたはPUの内部のTUの相対ロケーションを含む復号された情報の全部または一部に依存することがある。
【０１７２】
いくつかの例では、一定の変換タイプ、たとえばDST-4を適用するとき、その変換タイプは、一定のブロックサイズに対してのみ適用されるように制限される。
【０１７３】
いくつかのさらなる例では、垂直変換の場合、DST-4は、一定のサイズ、たとえば4または8以下の高さを有するブロックに対してのみ適用され得る。水平変換の場合、DST-4は、一定のサイズ、たとえば4または8以下の幅を有するブロックに適用されるように制限される場合がある。これは、変換DST-4の用途を、一般的に高度に粗い質感のブロックを含むより小さいブロックサイズに限定することになる。これは、事実上、DST-4変換の適用例が、より小さいテクスチャブロックに対してより効率的であるからである。
【０１７４】
いくつかの例では、ID変換を適用するとき、ID変換は、イントラ予測方向が水平(垂直)予測方向に対して角度の所与の範囲内にあるか、またはイントラモードインデックスが水平(垂直)予測方向のモードインデックスに対して所与のしきい値内にある時に、垂直変換(水平変換)としてのみ適用され得る。したがって、水平または垂直に比較的近い角度に対して、ID変換が使用され得る。しきい値は、予測モードと、水平に対する予測モード(18)および/または垂直に対する予測モード(50)との間の差分の絶対値を指す。したがって、しきい値は、イントラ予測角度と水平または垂直との間の距離に基づくことになる。いくつかの例では、所与のしきい値はあらかじめ規定され得、しきい値の例は、限定はしないが、8、6、4、2および0であり得る。しきい値が0の場合、水平および垂直の予測モードのみが、ID変換を使用し得る。
【０１７５】
いくつかの例では、所与のしきい値は、限定はしないが、EMTフラグ、EMTインデックス、NSSTインデックス、RQT深さ、ブロック幅/高さ(たとえば、ブロックサイズ)、量子化された係数、およびCUまたはPUの内部のTUの相対ロケーションを含む復号された情報に依存する場合がある。
【０１７６】
いくつかの例では、変換選択がイントラ予測モードに依存するとき、水平および垂直の変換対選択の規則は、イントラ予測モードの一部のみに対して定義され得、残りのイントラ予測モードに対して、変換対選択は、異なるイントラ予測モード間の対称性に従って、イントラ予測のモードのすでに定義された部分を使用して導出され得る。したがって、変換対の半分だけが記憶されるために必要である。なぜならば、その他は対の中の垂直変換と水平変換とを交換することによって導出され得るからである。
【０１７７】
いくつかの例では、67の角度イントラ予測モードが使用されるとき、モード0は平坦モードであり、モード1はDCモードであり、モード2〜66は異なる角度予測モードであり、18は水平予測モードであり、50は垂直予測モードであり、34は対角予測モードであり、水平および垂直の変換対選択は、イントラ予測モード0〜34に対してのみ定義される。イントラモードi、iは34超、を使用するブロックサイズM×Nに対する水平変換および垂直変換を選択するとき、イントラ予測モード68-iを使用するブロックサイズN×Mに対する水平変換および垂直変換の対は、最初に{TH, TV}として導出され、次いで、{TV, TH}が、イントラモードiによって予測される現在のM×Nブロックに対する水平および垂直の変換対として使用される。
【０１７８】
いくつかの例では、変換選択が、限定はしないが、NSSTインデックス、イントラ予測モード、RQT深さ、ブロック幅/高さ、量子化係数、およびCUまたはPUの内部のTUの相対的ロケーションを含む復号された情報に依存するとき、変換選択は同じ規則を共有し、復号された情報の異なる値を伴う場合に併合される。したがって、同じ変換対集合が、同様に、大きいブロックサイズ(たとえば、4×4、4×8、...、4×128)に対して使用され得る。
【０１７９】
たとえば、変換選択がブロックサイズ/形状に依存するとき、同じ変換選択規則が、32×32、32×64、64×32および64×64のような大きいブロックサイズに適用され得る。したがって、同じ変換対集合が、大きいサイズのブロックに使用されて、ルックアップテーブルのサイズをさらに低減することができる。
【０１８０】
いくつかの例では、変換選択がイントラ予測モードに依存するとき、同じ変換選択規則が、予測角度が互いに近い対角イントラ予測を実行するイントラ予測モード33、34および35のような複数のイントラ予測モードに対して適用され得る。したがって、いくつかの角度予測モードの場合、変換対の単一の集合が、LUTサイズを低減するために使用され得る。
【０１８１】
一例では、垂直および水平の変換対{TV, TH}が導出され得る。10個の変換対集合が、あらかじめ規定され得る。
transformSet[10][4][2] =
{
{ {DST4, DST4}, {DST7, DST7}, {DST4, DCT8}, {DCT8, DST4} },
{ {DST4, DST7}, {DST4, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST4}, {DST7, DCT5}, {DCT5, DST4}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT8}, {DCT8, DST7}, {DCT5, DCT5} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST4} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST7} },
{ {DST4, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DST7} },
};
【０１８２】
ブロック高さ(第1のアレイ値)、幅(第2のアレイ値)-最初の2つの値は4×4〜64×64のブロックサイズを表す、およびイントラモード(第3のアレイ値)から変換対集合インデックス(0〜9)にマッピングするルックアップテーブルは、図6に示すようにあらかじめ規定され得る。35のタイプのブロックが、図6のアレイ内で定義される。これは、他のイントラ予測モードを表すために対称性が使用されるからである。
【０１８３】
ブロック高さH、幅W、イントラ予測モードintraMode、EMT変換候補インデックスtrIdxが与えられると、垂直および水平の変換対{TV, TH}は、下のように導出され、ここでDIA_IDXは(たとえば、ハードコード化された定数であり得る値34を有する)対角イントラ予測インデックスであり、min()は最小値関数を返す関数である。
if(intraMode>DIA_IDX)
{
Int transformSetIdx=transformSetIdxLut[log2(W)-2][min(log2(H)-2,2)][68-intraMode];
TV=transformSet[transformSetIdx][trIdx][1];
TH=transformSet[transformSetIdx][trIdx][0];
}
else
{
Int transformSetIdx=transformSetIdxLut[log2(H)-2][min(log2(W)-2,2)][intraMode];
TV=transformSet[transformSetIdx][trIdx][0];
TH=transformSet[transformSetIdx][trIdx][1];
}
次いで、TVおよびTHは、垂直および水平の変換タイプとして適用され得る。
【０１８４】
したがって、変換集合は、transformSet[10][4][2]内で定義された10個の集合から選択され得る。10個の集合のうちのいずれかが、transformSet[10][4][2]内の第1のアレイエントリに対応するtransformSetIdxLut[5][3][35]の値(すなわち、0〜9の値)に基づいて選択される。上の「if」の場合では、値は、(たとえば、イントラ予測モードがDIA_IDXの値、34未満である場合)直接探索される。そうでない場合(「else」の場合)、対称性によって、TVとTHとが交換される。同じく、ブロックサイズをアレイエントリに変換するために、高さのlog2マイナス2および幅のlog2マイナス2に基づいて、transformSetIdxLut[5][3][35]内の値が決定されることに留意されたい。
【０１８５】
たとえば、サイズ64×64のブロック内で、イントラ予測モード35を使用して、1の変換候補インデックスに対して、エンコーダ20またはデコーダ30は、イントラモードがDIA_IDXより大きいかどうかを決定し得る。そうであるので、エンコーダ20またはデコーダ30は、transformSetIdxLut(図6に示す)内の探索を実行することによって、transformSetIdxに対する値を決定し得る。探索は、transformSetIdxLut[4][2][33]に対して評価するtransformSetIdxLut[log2(W)-2][min(log2(H)-2,2)][68-intraMode]におけるものであり、transformSetIdxLut[4][2][33]は9である。エンコーダ20またはデコーダ30は、transformSet内の値を探索することによってTVおよびTHの値を決定し得る。TV=transformSet[transformSetIdx][trIdx][1]であり、それはtransformSet[9][1][1]に対して評価し、transformSet[9][1][1]はDST7である。TH=transformSet[transformSetIdx][trIdx][0]であり、それはtransformSet[9][1][0]に対して評価し、transformSet[9][1][0]はDST5である。エンコーダ20またはデコーダ30は、変換対は{DST-7, DCT-5}であると決定し得る。
【０１８６】
恒等(ID)変換を適用する一例では、垂直および水平の変換タイプが導出された後、垂直および水平の変換タイプは、ID変換としてさらに修正され得る。したがって、いくつかの例では、ID変換は、いくつかの状況において変換対内で以前に選択された垂直変換および/または水平変換に対して置換され得る。
【０１８７】
ブロック高さH、幅W、イントラ予測モードintraMode、EMT変換候補インデックスtrIdxが与えられると、水平および垂直の変換タイプTVおよびTHは下のようにさらに修正され、HOR_IDX(それは18としてハードコード化され得る)およびVER_IDX(それは48としてハードコード化され得る)はそれぞれ水平および垂直のイントラ予測インデックスであり、IDはID変換タイプを示す。変換候補インデックスtrIdxは、0〜3の値を取り得、RDコストに基づいて決定される。関数abs()は、絶対値を返す。
【０１８８】
しきい値ルックアップテーブルは、
thrLut[3][3]={{8,6,4},{8,8,6},{4,2,-1}};として定義され得る。
【０１８９】
次いで、水平および垂直の変換タイプTVおよびTHは、下のようにさらに修正され得る。
if(trIdx==3 && W<=16 && H<=16)
{
if(abs(intraMode-HOR_IDX)<=thrLut[log2(H)-2][log2(W)-2])
{
TV=ID;
}
if(abs(intraMode-VER_IDX)<=thrLut[log2(W)-2][log2(H)-2])
{
TH=ID;
}
}
【０１９０】
したがって、EMTインデックスが1である場合、ID変換が使用され得る。thrLutにおいて、しきい値は、ブロックサイズに基づいて定義され得る(ここでより大きいブロックはより小さいしきい値を有し、より小さいブロックはより大きいしきい値を有する)。「if」表現は、ブロックの幅または高さが16以下であるならば、真(true)に対してのみ評価することに留意されたい。したがって、ID変換は、イントラモードが垂直モードおよび/または水平モードから離れてしきい値の量内にある場合、垂直方向または水平方向において使用され得る。いくつかの例では、上のtransformSet内で定義された変換対は、ID変換を含めるために、場合によってはさらに修正される。
【０１９１】
たとえば、4×4ブロックにおいて、3の変換候補インデックスおよび10のイントラモードに対して、エンコーダ20またはデコーダ30は、表現(trIdx=3およびW≦16およびH≦16)が真であると決定し得る。エンコーダ20またはデコーダ30は、表現abs(intraMode-HOR_IDX) <= thrLut[log2(H)-2][log2(W)-2]を評価し得、8≦thrLut[0][0]かどうかを評価することになる。thrLut[0][0]は8であるので、表現は、真であると決定され得る。それゆえ、エンコーダ20またはデコーダ30は、垂直変換がID変換であると決定し得る(およびID変換に対して異なる決定された垂直変換を交換し得る)。エンコーダ20またはデコーダ30は、表現abs(intraMode-VER_IDX)<=thrLut[log2(H)-2][log2(W)-2]を評価し得、38≦thrLut[0][0]かどうかを評価することになる。thrLut[0][0]は8であるので、表現は、偽(false)であると決定され得る。それゆえ、水平変換は、ID変換のために設定されない。
【０１９２】
図7は、本開示の技法を実施することができる例示的なビデオエンコーダ20を示すブロック図である。図7は説明のために提供され、広く例示されるとともに本開示において説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、HEVCコーディングの文脈においてビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。たとえば、ビデオエンコーダ20は、HEVCにおいて提供される制限されたオプションより多数の変換を変換ブロックに対して適用するように構成され得る。
【０１９３】
図7の例では、ビデオエンコーダ20は、予測処理ユニット100、ビデオデータメモリ101、残差生成ユニット102、変換処理ユニット104、量子化ユニット106、逆量子化ユニット108、逆変換処理ユニット110、再構成ユニット112、フィルタユニット114、復号されたピクチャバッファ116、およびエントロピー符号化ユニット118を含む。予測処理ユニット100は、インター予測処理ユニット120およびイントラ予測処理ユニット126を含む。インター予測処理ユニット120は、動き推定ユニットおよび動き補償ユニット(図示せず)を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【０１９４】
ビデオデータメモリ101は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ101内に記憶されるビデオデータは、たとえば、ビデオソース18から入手され得る。復号されたピクチャバッファ116は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリとすることができる。ビデオデータメモリ101および復号されたピクチャバッファ116は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗変化RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ101および復号されたピクチャバッファ116は、同一のメモリデバイスまたは別々のメモリデバイスによって提供され得る。様々な例において、ビデオデータメモリ101は、ビデオエンコーダ20の他の構成要素とともにオンチップであってもよく、または、これらの構成要素に対してオフチップであってもよい。
【０１９５】
ビデオエンコーダ20は、ビデオデータを受信し得る。ビデオエンコーダ20は、ビデオデータのピクチャのスライスの中の各CTUを符号化し得る。CTUの各々は、ピクチャの、等しいサイズの輝度コーディングツリーブロック(CTB)、および対応するCTBと関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを次第に小さくなるブロックに分割し得る。より小さいブロックは、CUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUに関連付けられたCTBを4つの等しいサイズのサブブロックに区分し、サブブロックのうちの1つまたは複数を4つの等しいサイズのサブブロックに区分するなどを行うことができる。
【０１９６】
ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化表現(すなわち、コード化CU)を生成し得る。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの間でCUに関連付けられたコーディングブロックを区分し得る。したがって、各PUは、ルマ予測ブロックおよび対応するクロマ予測ブロックに関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上記のように、CUのサイズは、CUのルマコーディングブロックのサイズを指してよく、PUのサイズは、PUのルマ予測ブロックのサイズを指してよい。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測に対して2N×2NまたはN×NというPUサイズ、およびインター予測に対して2N×2N、2N×N、N×2N、N×N、または類似の、対称のPUサイズをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測に対して、2N×nU、2N×nD、nL×2N、およびnR×2NというPUサイズのための非対称区分をサポートし得る。
【０１９７】
インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによって、PUに関する予測データを生成し得る。PUに対する予測データは、PUの予測ブロックおよびPUのための動き情報を含み得る。インター予測ユニット121は、PUがIスライスの中にあるか、Pスライスの中にあるか、またはBスライスの中にあるかに応じて、CUのPUに対して異なる動作を実行し得る。Iスライスでは、すべてのPUがイントラ予測される。したがって、PUがIスライスの中にある場合、インター予測ユニット121は、インター予測をPUに対して実行しない。したがって、Iモードで符号化されるブロックの場合、予測されるブロックは、同じフレーム内の以前に符号化された隣接ブロックからの空間予測を使用して形成される。
【０１９８】
PUがPスライスの中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUの参照領域について参照ピクチャのリスト(たとえば、「RefPicList0」)の中の参照ピクチャを検索し得る。PUの参照領域は、PUのサンプルブロックに最も密接に対応するサンプルブロックを含む、参照ピクチャ内の領域であり得る。動き推定ユニットは、PUに対する参照領域を含む参照ピクチャのRefPicList0の中での位置を示す、参照インデックスを生成し得る。加えて、動き推定ユニットは、PUのコーディングブロックと参照領域に関連する参照ロケーションとの間の空間変位を示す、MVを生成し得る。たとえば、MVは、現在の復号ピクチャの中の座標から参照ピクチャの中の座標までのオフセットを提供する2次元ベクトルであり得る。動き推定ユニットは、PUの動き情報として参照インデックスおよびMVを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照位置における実際のサンプルまたは補間されたサンプルに基づいて、PUの予測ブロックを生成し得る。
【０１９９】
PUがBスライス内にある場合に、インター予測処理ユニット120の動き推定ユニットは、PUの片方向予測または双方向予測を実行することができる。PUの片方向予測を実行するために、動き推定ユニットは、RefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャからPUの参照領域を検索することができる。動き推定ユニットは、PUの動き情報として、参照領域を含む参照ピクチャのRefPicList0またはRefPicList1内の位置を示す参照インデックス、PUの予測ブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示すMV、および参照ピクチャがRefPicList0またはRefPicList1のどちらに含まれるのかを示す1つまたは複数の予測方向インジケータを出力することができる。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成することができる。
【０２００】
PUに対して双方向インター予測を実行するために、動き推定ユニットは、PUの参照領域についてRefPicList0の中の参照ピクチャを検索することができ、また、PUの別の参照領域についてRefPicList1の中の参照ピクチャを検索することができる。動き推定ユニットは、参照領域を含む参照ピクチャのRefPicList0およびRefPicList1の中での場所を示す参照ピクチャインデックスを生成し得る。加えて、動き推定ユニットは、参照領域と関連付けられる参照位置とPUのサンプルブロックとの間の空間変位を示すMVを生成し得る。PUの動き情報は、PUの参照インデックスおよびMVを含み得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示される参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいてPUの予測ブロックを生成することができる。
【０２０１】
イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PUの予測データを生成し得る。PUの予測データは、PUの予測ブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライスの中のPUに対して、イントラ予測を実行し得る。
【０２０２】
イントラ予測をPUに対して実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUの予測データの複数のセットを生成し得る。イントラ予測処理ユニット126は、隣接PUのサンプルブロックからのサンプルを使用して、PUに対する予測ブロックを生成し得る。PU、CU、およびCTUに対して左から右、上から下への符号化順序を仮定すると、隣接PUは、PUの上、右上、左上、または左であり得る。イントラ予測処理ユニット126は、様々な個数のイントラ予測モード、たとえば35個の方向性イントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数は、PUに関連付けられる領域のサイズに依存し得る。
【０２０３】
予測処理ユニット100は、PUに関してインター予測処理ユニット120によって生成された予測データ、またはPUに関してイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUに関する予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみの尺度に基づいて、CUのPUに関する予測データを選択する。選択される予測データの予測ブロックは、本明細書で選択予測ブロックと呼ばれることがある。
【０２０４】
本開示において説明される例において、技法は、ビデオブロックがイントラ予測されまたはインター予測される時に適用可能である。たとえば、ブロックがイントラ予測される時に、イントラ予測モードが、変換部分集合を決定するのに使用され得る。ブロックがインター予測される時に、その位置が、変換部分集合を決定するのに使用され得る。したがって、例の技法は、イントラ予測モードのいずれかでイントラ予測されまたは単一方向もしくは双方向においてインター予測されるビデオブロックに適用する。
【０２０５】
さらに、例の技法は、イントラ予測またはインター予測に限定されず、intra-block copy (IBC)モードにも拡張され得る。IBCモードにおいて、予測ブロックは、符号化されるビデオブロックと同一のピクチャ内にあり、ブロックベクトルによって識別される。IBCモードにおいて、変換部分集合は、少数の例として、ビデオブロックの位置、予測ブロックの位置、またはブロックベクトルから選択され得る。
【０２０６】
残差生成ユニット102は、CUのルマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックと、CUのPUの選択された予測ルマブロック、選択された予測Cbブロック、および選択された予測Crブロックとに基づいて、CUのルマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成することができる。たとえば、残差生成ユニット102は、残差ブロック内の各サンプルが、CUのコーディングブロック内のサンプルとCUのPUの対応する選択された予測ブロック内の対応するサンプルとの間の差と等しい値を有するように、CUの残差ブロックを生成することができる。
【０２０７】
変換処理ユニット104は、4分木区分を実行して、CUに関連付けられる残差ブロックをCUのTUに関連付けられる変換ブロックに区分し得る。したがって、TUは、ルマ変換ブロックおよび2つのクロマ変換ブロックに関連付けられ得る。CUのTUのルマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づいても基づかなくてもよい。「残差4分木」(RQT)と呼ばれる4分木構造が、領域の各々に関連付けられるノードを含み得る。CUのTUは、RQTの葉ノードに相当することができる。
【０２０８】
変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられる変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向変換、または概念的に類似の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット104は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
【０２０９】
本開示において説明される技法において、変換処理ユニット104は、TUの変換ブロックに垂直(左)変換および水平(右)変換を適用することができる。いくつかの例において、予測処理ユニット100は、本開示において説明される技法を使用して、適用すべき変換を決定することができる。
【０２１０】
たとえば、予測処理ユニット100は、複数の変換部分集合を決定することができ、各部分集合は、1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は、複数の候補変換を識別する。候補変換は、異なる変換タイプを有し、いくつかの例において、予測処理ユニット100は、符号化されているビデオブロックのサイズに基づいて複数の変換部分集合を決定する。候補変換は、{DST-7, DST-4, DCT-8, DCT-5, DST-1}または{DST-7, DST-4, DCT-8, DCT-5, DST-1, ID}を含む変換の集合に制約され得る。したがって、比較的小さい数の変換対が、考察される必要がある。たとえば、角度イントラ予測モードは、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-4, DST-5}、{DCT-7, DST-5}、{DCT-8, DST-7}、{DST-8, DCT-4}、{DCT-5, DST-7}、{DST-1, DCT-7}、{DST-1, DCT-4}から選択され得る。いくつかの例では、前述の対のうちのいずれかが、いくつかの例におけるID変換と置き換えられ得る。上でより詳細に説明したように、変換対において、エンコーダ20およびデコーダ30は、対のうちのどちらが水平変換のために選択され、どちらが垂直変換のために選択されるかを決定し得る。
【０２１１】
たとえば、N(例として4に等しいNを取る)個の水平/垂直変換対に対して10個の変換対が、下のように定義され得る。
{{DST4, DST4}、{DST7, DST7}、{DST4, DCT8}、{DCT8, DST4}}、
{{DST4, DST7}、{DST4, DCT5}、{DCT5, DST7}、{DST1, DCT5}}、
{{DST7, DST4}、{DST7, DCT5}、{DCT5, DST4}、{DST1, DCT5}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DCT5}}、
{{DST7, DST7}、{DST7, DCT8}、{DCT8, DST7}、{DCT5, DCT5}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST4}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST7}}、
{{DST4, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DST7}}
角度イントラ予測モードに適用される変換対集合は、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST4}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST7}}、
{{DST4, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DST7}}、
から選択され得る。
いくつかの例では、選択された変換対の一方または両方は、イントラ予測方向が水平(または垂直)予測方向に対して角度の所与の範囲内にあるか、またはイントラモードインデックスが水平(または垂直)予測方向のモードインデックスに対して所与のしきい値内にある時に、ID変換と交換され得る。しきい値は、限定はしないが、EMTフラグ、EMTインデックス、NSSTインデックス、RQT深さ、ブロック幅/高さ、量子化された係数、およびCUまたはPUの内部のTUの相対ロケーションを含む復号された情報に依存することがある。
【０２１２】
予測処理ユニット100は、ビデオデータのビデオブロックの現在の変換ブロックの左変換の複数の変換部分集合から第1の変換部分集合を選択し、ビデオデータのビデオブロックの現在の変換ブロックの右変換の複数の変換部分集合から第2の変換部分集合を選択することができる。現在の変換ブロックは、変換処理ユニット104が生成し、変換処理ユニット104がそれに対して変換を適用する変換ブロックとすることができる。
【０２１３】
予測処理ユニット100は、変換の集合の中の変換対に基づいて左変換および右変換を決定し得る。この集合は、たとえば、4つの変換を含み得る。たとえば、予測処理ユニット100は、選択された変換部分集合内の変換の各々をテストし、どの変換が最良のビデオコーディングを提供するのかを決定することができる。予測処理ユニット100は、左変換および右変換として最良のビデオコーディングを提供するそれぞれの変換を決定することができる。
【０２１４】
変換処理ユニット104は、左変換、右変換、および現在の変換ブロックに基づいて、現在の係数ブロックを決定することができる。たとえば、変換処理ユニット104は、式Y = C*X*RTを実行することができ、ここで、Cは左変換、Rは右変換、Xは現在の変換ブロック、Yは結果の現在の係数ブロックである。
【０２１５】
ビデオブロック(たとえば、CUまたはPU)がイントラ予測符号化される場合に、予測処理ユニット100は、ビデオブロックのイントラ予測モードを決定することができる。予測処理ユニット100は、決定されたイントラ予測モードに基づいて第1の変換部分集合を選択し、決定されたイントラ予測モードに基づいて第2の変換部分集合を選択することができる。
【０２１６】
ビデオブロック(たとえば、CUまたはPU)がインター予測符号化される場合に、予測処理ユニット100は、ビデオブロックの現在の変換ブロックのロケーションを決定する(たとえば、変換ブロックが、ビデオブロック内の特定のロケーションから生成された残差に関するのかどうかを決定する)ことができる。予測処理ユニット100は、現在の変換ブロックの決定されたロケーションに基づいて第1の変換部分集合を選択し、現在の変換ブロックの決定されたロケーションに基づいて第2の変換部分集合を選択することができる。
【０２１７】
イントラ予測またはインター予測に関して、いくつかの例において、予測処理ユニット100は、エントロピー符号化ユニット118に、現在の係数ブロックを決定するのに使用される第1の変換部分集合内の変換を識別するために第1の変換部分集合内への第1の変換部分集合インデックスをシグナリングさせ(たとえば、ビットストリーム内で生成させ)、現在の係数ブロックを決定するのに使用される第2の変換部分集合内の変換を識別するために第2の変換部分集合内への第2の変換部分集合インデックスをシグナリングさせる(たとえば、ビットストリーム内で生成させる)ことができる。いくつかの例において、予測処理ユニット100は、現在の係数ブロック内の非0係数の個数を決定することができる。これらの例において、予測処理ユニット100は、エントロピー符号化ユニット118に、非0係数の個数がしきい値より大きいことに基づいて第1の変換部分集合インデックスをシグナリングさせ、非0係数の個数がしきい値より大きいことに基づいて第2の変換部分集合インデックスをシグナリングさせることができる。非0係数の個数がしきい値未満である場合に、予測処理ユニット100は、エントロピー符号化ユニット118に、第1および第2の変換部分集合内のインデックスをシグナリングさせないものとすることができる。
【０２１８】
量子化ユニット106は、係数ブロック中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連付けられるビット深度を低減し得る。たとえば、nビットの変換係数は、量子化中にmビットの変換係数に切り捨てられてよく、nはmよりも大きい。量子化ユニット106は、CUに関連付けられる量子化パラメータ(QP)値に基づいて、CUのTUに関連付けられる係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連付けられるQP値を調整することによって、CUに関連付けられる係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の消失を導入する可能性があり、したがって、量子化された変換係数は、元の変換係数より低い精度を有する可能性がある。
【０２１９】
逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、逆量子化および逆変換を係数ブロックに適用して、係数ブロックから残差ブロックを再構築し得る。再構成ユニット112は、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに、再構成された残差ブロックを加算して、TUに関連する再構成された変換ブロックを生成し得る。このようにしてCUのTUごとに変換ブロックを再構築することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構築し得る。
【０２２０】
フィルタユニット114は、1つまたは複数のデブロッキング動作を実行して、CUに関連付けられるコーディングブロックにおけるブロッキングアーティファクトを低減し得る。フィルタユニット114が、再構成されたコーディングブロックに対して1つまたは複数のデブロッキング動作を実行した後、復号されたピクチャバッファ116は、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、再構成されたコーディングブロックを含む参照ピクチャを使用して、他のピクチャのPUに対してインター予測を実行し得る。加えて、イントラ予測処理ユニット126は、復号されたピクチャバッファ116の中の再構成されたコーディングブロックを使用して、CUと同じピクチャの中の他のPUに対してイントラ予測を実行し得る。
【０２２１】
エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受け取り得る。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロック(たとえば、ビデオブロックを再構成するのに使用される現在の係数ブロックの係数を示す情報)を受信することができ、予測処理ユニット100から構文要素(たとえば、第1および第2の変換部分集合内へのインデックス)を受信することができる。エントロピー符号化ユニット118は、エントロピー符号化されたデータを生成するために、データに対して1つまたは複数のエントロピー符号化動作を実行することができる。たとえば、エントロピー符号化ユニット118は、context-adaptive variable length coding (CAVLC)動作、CABAC動作、可変長-可変長(V2V)コーディング動作、syntax-based context-adaptive binary arithmetic coding (SBAC)動作、Probability Interval Partitioning Entropy (PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行することができる。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化されたデータを含むビットストリームを出力することができる。たとえば、ビットストリームは、CUのRQTを表すデータを含むことができる。
【０２２２】
例の技法において、予測処理ユニット100は、予測ブロックを決定し、エントロピー符号化ユニット118が出力するビデオビットストリーム内に、予測ブロックに基づくビデオブロックの予測モードを示す情報を生成する。予測モードは、ビデオブロックがイントラ予測またはインター予測のどちらを行われるのかを示す。たとえば、予測ブロックは、ビデオブロックがイントラ予測されることに基づくビデオブロックと同一のピクチャ内のブロック、または、ビデオブロックがインター予測されることに基づくビデオブロックを含むピクチャとは異なるピクチャ内のブロックである。残差生成ユニット102は、ビデオブロックと予測ブロックとの間の残差として現在の変換ブロックを決定することができる。
【０２２３】
図8は、本開示の技法を実施するように構成された例示的なビデオデコーダ30を示すブロック図である。図8は説明のために提供され、本開示において広く例示され説明されるような技法の限定でない。説明のために、本開示は、HEVCコーディングの文脈においてビデオデコーダ30について説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用であり得る。
【０２２４】
ビデオデコーダ30は、本開示において説明される様々な例による技法を実行するように構成され得るデバイスの例を表す。図8の例において、ビデオデコーダ30は、エントロピー復号ユニット150、ビデオデータメモリ151、予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、フィルタユニット160、および復号されたピクチャバッファ162を含む。予測処理ユニット152は、動き補償ユニット164およびイントラ予測処理ユニット166を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【０２２５】
ビデオデータメモリ151は、ビデオデコーダ30の構成要素によって復号されるべき符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ151に記憶されるビデオデータは、たとえば、コンピュータ可読媒体から取得されてもよく、またはたとえば、カメラなどのローカルビデオソースから取得されてもよく、またはビデオデータのワイヤードネットワーク通信もしくはワイヤレスネットワーク通信を介して取得されてもよく、または物理データ記憶媒体にアクセスすることによって取得されてもよい。ビデオデータメモリ151は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB:coded picture buffer)を形成し得る。復号されたピクチャバッファ162は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ151および復号されたピクチャバッファ162は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗変化RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ151および復号されたピクチャバッファ162は、同じメモリデバイスまたは別個のメモリデバイスによって設けられてよい。様々な例では、ビデオデータメモリ151は、ビデオデコーダ30の他の構成要素とともにオンチップであってよく、またはそれらの構成要素に対してオフチップであってよい。
【０２２６】
コード化ピクチャバッファ(CPB)は、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信および記憶し得る。エントロピー復号ユニット150は、符号化ビデオデータ(たとえば、NALユニット)をCPBから受信するとともにNALユニットを構文解析して、シンタックス要素を復号し得る。エントロピー復号ユニット150は、NALユニットの中のエントロピー符号化シンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号ビデオデータを生成し得る。
【０２２７】
ビットストリームのNALユニットは、コード化スライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、シンタックス要素をコーディングされたスライスNALユニットから抽出し、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダおよびスライスデータを含み得る。スライスヘッダは、スライスに関係するシンタックス要素を含み得る。スライスヘッダの中のシンタックス要素は、スライスを含むピクチャに関連するPPSを識別するシンタックス要素を含み得る。
【０２２８】
シンタックス要素をビットストリームから復号することに加えて、ビデオデコーダ30は、区分されていないCUに対して再構築動作を実行し得る。区分されていないCUに対して再構築動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構築動作を実行し得る。CUのTUごとに再構築動作を実行することによって、ビデオデコーダ30は、CUの残差ブロックを再構築し得る。
【０２２９】
CUのTUに対して再構成動作を実行することの一部として、逆量子化ユニット154は、TUに関連付けられる係数ブロックを逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)し得る。逆量子化ユニット154は、量子化の程度と、同様に、逆量子化ユニット154が適用すべき逆量子化の程度とを決定するために、TUのCUに関連するQP値を使用し得る。すなわち、圧縮率、すなわち、元のシーケンスおよび圧縮されたシーケンスを表すために使用されるビット数の比が、変換係数を量子化する時に使用されるQPの値を調整することによって制御され得る。圧縮率はまた、採用されるエントロピーコーディングの方法に依存し得る。
【０２３０】
逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUと関連付けられた残差ブロックを生成するために、1つまたは複数の逆変換を係数ブロックに適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
【０２３１】
本開示において説明される技法において、予測処理ユニット152は、逆変換処理ユニット156が適用すべき左変換および右変換を決定することができる。たとえば、予測処理ユニット152は、複数の変換部分集合を決定することができ、各部分集合は、1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は、複数の候補変換を識別する。候補変換は、異なる変換タイプのものであり、いくつかの例において、予測処理ユニット152は、限定はしないが、EMTフラグ、EMTインデックス、NSSTインデックス、イントラ予測モード、RQT深さ、ブロック幅/高さ(たとえば、ブロックサイズ)、量子化された係数、およびCUまたはPUの内部のTUの相対ロケーションを含む、復号された情報の全部または一部に基づいて複数の変換部分集合を決定する。
【０２３２】
予測処理ユニット152は、ビデオデータの現在の係数ブロックの左変換の複数の変換部分集合から第1の変換部分集合を選択し、ビデオデータの現在の係数ブロックの右変換の複数の変換部分集合から第2の変換部分集合を選択することができる。予測処理ユニット152は、選択された第1の変換部分集合から左変換を決定し、選択された第2の変換部分集合から右変換を決定することができる。変換対の集合は、{DST-7, DST-4, DCT-8, DCT-5, DST-1}または{DST-7, DST-4, DCT-8, DCT-5, DST-1, ID}を含む変換の集合に制約され得る。したがって、比較的小さい数の変換対が、考察される必要がある。たとえば、角度イントラ予測モードは、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-4, DST-5}、{DCT-7, DST-5}、{DCT-8, DST-7}、{DST-8, DCT-4}、{DCT-5, DST-7}、{DST-1, DCT-7}、{DST-1, DCT-4}から選択され得る。いくつかの例では、前述の対のうちのいずれかが、いくつかの例におけるID変換と置き換えられ得る。
【０２３３】
たとえば、N(例として4に等しいNを取る)個の水平/垂直変換対に対して10個の変換対集合が、下のように定義され得る。
{{DST4, DST4}、{DST7, DST7}、{DST4, DCT8}、{DCT8, DST4}}、
{{DST4, DST7}、{DST4, DCT5}、{DCT5, DST7}、{DST1, DCT5}}、
{{DST7, DST4}、{DST7, DCT5}、{DCT5, DST4}、{DST1, DCT5}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DCT5}}、
{{DST7, DST7}、{DST7, DCT8}、{DCT8, DST7}、{DCT5, DCT5}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST4}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST7}}、
{{DST4, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DST7}}
角度イントラ予測モードに適用される変換対集合は、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST4}}、
{{DST4, DST4}、{DST4, DCT5}、{DCT8, DST4}、{DST1, DST7}}、
{{DST4, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT8, DST7}、{DST1, DST7}}、
{{DST7, DST7}、{DST7, DCT5}、{DCT5, DST7}、{DST1, DST7}}、
から選択され得る。
いくつかの例では、選択された変換対の一方または両方は、イントラ予測方向が水平(または垂直)予測方向に対して角度の所与の範囲内にあるか、またはイントラモードインデックスが水平(または垂直)予測方向のモードインデックスに対して所与のしきい値内にある時に、ID変換と交換され得る。しきい値は、限定はしないが、EMTフラグ、EMTインデックス、NSSTインデックス、RQT深さ、ブロック幅/高さ、量子化された係数、およびCUまたはPUの内部のTUの相対ロケーションを含む復号された情報に依存することがある。予測処理ユニット152は、シグナリングされた変換対集合のうちの1つから選択し得る。
【０２３４】
逆変換処理ユニット156は、左変換、右変換、および現在の係数ブロックに基づいて、現在の変換ブロックを決定することができる。たとえば、逆変換処理ユニット156は、式Y = C*X*RTの逆を実行することができ、ここで、Yは係数ブロック、Cは左変換、Xは現在の変換ブロック、Rは右変換である。やはり、本開示において、逆変換処理ユニット156が、ビデオエンコーダ20が適用した変換の逆を適用するが、簡単さのために、ビデオデコーダ30が、変換を適用するものとして説明されることを理解されたい。
【０２３５】
予測処理ユニット152は、現在の変換ブロックおよび予測ブロックに基づいて、ビデオブロックを再構成(たとえば、イントラ予測復号またはインター予測復号)することができる。たとえば、PUが、イントラ予測を使用して符号化される場合に、イントラ予測処理ユニット166は、PUの予測ブロックを生成するためにイントラ予測を実行することができる。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいて、PUの予測ルマブロック、予測Cbブロック、および予測Crブロックを生成することができる。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数の構文要素に基づいて、PUのイントラ予測モードを決定することができる。
【０２３６】
予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構築し得る。さらに、PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUの動き情報を抽出し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUに対する1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUに対する1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUに対する予測ルマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
【０２３７】
本開示において説明される例において、技法は、ビデオブロックがイントラ予測されまたはインター予測される時に適用可能である。たとえば、ブロックがイントラ予測される時に、イントラ予測モードが、変換部分集合を決定するのに使用され得る。ブロックがインター予測される時に、その位置が、変換部分集合を決定するのに使用され得る。したがって、例の技法は、イントラ予測モードのいずれかでイントラ予測されまたは単一方向もしくは双方向においてインター予測されるビデオブロックに適用する。
【０２３８】
さらに、例の技法は、イントラ予測またはインター予測に限定されず、intra-block copy (IBC)モードにも拡張され得る。IBCモードにおいて、予測ブロックを形成するのに使用される参照ブロックは、符号化されているビデオブロックと同一のピクチャ内にあり、ブロックベクトルによって識別される。IBCモードにおいて、変換部分集合は、少数の例として、ビデオブロックの位置、参照ブロックの位置、またはブロックベクトルから選択され得る。
【０２３９】
再構成ユニット158は、CUのTUに関連付けられたルマ変換ブロック、Cb変換ブロック、およびCr変換ブロックと、CUのPUの予測ルマブロック、予測Cbブロック、および予測Crブロックと、すなわち、適宜、イントラ予測データまたはインター予測データのいずれかを使用して、CUのルマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成することができる。たとえば、再構成ユニット158は、ルマ変換ブロック、Cb変換ブロック、およびCr変換ブロックのサンプルを、予測ルマブロック、予測Cbブロック、および予測Crブロックの対応するサンプルに加算して、CUのルマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成することができる。
【０２４０】
フィルタユニット160は、デブロッキング動作を実行して、CUのルマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックと関連付けられるブロッキングアーティファクトを低減し得る。ビデオデコーダ30は、CUのルマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを復号されたピクチャバッファ162に記憶し得る。復号されたピクチャバッファ162は、その後の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号されたピクチャバッファ162の中のルマブロック、Cbブロック、およびCrブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。
【０２４１】
いくつかの例において、ビデオブロックがイントラ予測復号される場合に、予測処理ユニット152は、ビデオブロックのイントラ予測モードを決定することができる。予測処理ユニット152は、決定されたイントラ予測モードに基づいて第1の変換部分集合を選択し、決定されたイントラ予測モードに基づいて第2の変換部分集合を選択することができる。
【０２４２】
ビデオブロックがインター予測復号される場合に、予測処理ユニット152は、ビデオブロック内の現在の変換ブロックのロケーションを決定する(たとえば、係数ブロックがビデオブロック内の特定のロケーションから生成された残差に関するかどうかを決定する)ことができる。予測処理ユニット152は、現在の変換ブロックの決定されたロケーションに基づいて第1の変換部分集合を選択し、現在の変換ブロックの決定されたロケーションに基づいて第2の変換部分集合を選択することができる。
【０２４３】
いくつかの例において、予測処理ユニット152は、第1の変換部分集合内への第1の変換部分集合インデックスを受信し、第2の変換部分集合内への第2の変換部分集合インデックスを受信することができる。これらの例において、予測処理ユニット152は、第1の変換部分集合インデックスによって識別される第1の変換部分集合内の変換に基づいて左変換を決定し、第2の変換部分集合インデックスによって識別される第2の変換部分集合内の変換に基づいて右変換を決定することができる。
【０２４４】
しかしながら、予測処理ユニット152が、第1の変換部分集合および第2の変換部分集合内のインデックスを受信する必要がない場合がある。たとえば、予測処理ユニット152が、現在の係数ブロック内の非0係数の個数がしきい値未満であると決定する場合がある。そのような場合において、予測処理ユニット152は、現在の係数ブロック内の非0係数の個数がしきい値未満であるとの決定に応答して、第1の変換部分集合内への変換部分集合インデックスを受信することなく、第1の変換部分集合内で最初に識別される変換が左変換であると決定し、現在の係数ブロック内の非0係数の個数がしきい値未満であるとの決定に応答して、第2の変換部分集合内への変換部分集合インデックスを受信することなく、第2の変換部分集合内で最初に識別される変換が右変換であると決定することができる。
【０２４５】
また、予測処理ユニット152は、必ずしもすべての場合において変換部分集合から変換を決定するとは限らない。いくつかの例において、予測処理ユニット152は、現在の変換ブロックを含むブロックのすべての変換ブロックが同一の変換を使用して変換されるのではないことを示すフラグを受信する場合がある。そのような例において、予測処理ユニット152は、現在の変換ブロックを含むブロックのすべての変換ブロックが同一の変換を使用して変換されるのではないことを示すフラグの受信に応答して、第1の変換および第2の変換を選択し、それぞれの第1の変換および第2の変換から左変換および右変換を決定することができる。ブロックの例は、コーディングツリーユニット(CTU)、コーディングユニット(CU)、または予測ユニット(PU)を含む。
【０２４６】
例の技法において、ビデオデコーダ30は、予測モード(たとえば、ビデオブロックがイントラ予測されたのかインター予測されたのか)を示す情報をビットストリームから受信し、現在の係数ブロックの係数を示す情報をビットストリームから受信することができる。予測処理ユニット152は、予測モードに基づいて予測ブロックを決定することができ、逆変換ユニット156または予測処理ユニット152は、係数を示す受信された情報に基づいて係数ブロックを構成することができる。予測モードは、インター予測モードまたはイントラ予測モードのうちの1つであり、現在の変換ブロックは、ビデオブロックと予測ブロックとの残差である。
【０２４７】
上で説明された技法は、ビデオエンコーダ20(図7)および/またはビデオデコーダ30(図8)によって実行されることがあり、それらの両方が一般にビデオコーダと呼ばれることがある。同様に、ビデオコーディングは、適用可能な場合、ビデオ符号化またはビデオ復号を指すことがある。加えて、ビデオ符号化およびビデオ復号が、総称的にビデオデータの「処理」と呼ばれる場合がある。
【０２４８】
本明細書で説明した技法のすべてが、個別に使用されても組み合わせて使用されてもよいことを理解されたい。本開示は、ブロックサイズ、スライスタイプ、その他など、ある種の要因に依存して変化する可能性がある複数のシグナリング方法を含む。構文要素のシグナリングまたは推論におけるそのような変動は、先験的にエンコーダおよびデコーダに知られ得、あるいは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ内で、タイルレベルにおいて、または他の場所で明示的にシグナリングされ得る。
【０２４９】
図9は、ビデオデータをコーディングする例示的な方法を示す流れ図である。ビデオデコーダ30および/またはビデオエンコーダ20は、複数の予測モードのうちの1つに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対するすべての利用可能な水平および垂直の変換対組合せの部分集合から水平および垂直の変換対組合せを決定する(900)。選択は、複数の予測モードのうちの1つに従って符号化されたビデオブロックの現在の係数ブロックに対するものである。水平および垂直の変換対組合せの集合は、1つまたは複数の水平および垂直の変換対組合せを含む。いくつかの例では、水平および垂直の変換対組合せの集合は、4つの水平および垂直の変換対を含む。しかしながら、他の例では、より多いまたはより少ない数の変換対が、集合の中に存在する。いくつかの例では、ビデオデコーダ30および/またはビデオエンコーダ20は、水平および垂直の変換対組合せの変換を恒等(ID)変換と置換し得る。
【０２５０】
ビデオデコーダ30および/またはビデオエンコーダ20は、水平および垂直の変換対組合せを水平および垂直の変換対組合せの選択された集合から選択し得る(902)。集合内に4つの変換対が存在する例では、ビデオデコーダ30および/またはビデオエンコーダ20は、単一の変換対を選択する。
【０２５１】
ビデオデコーダ30および/またはビデオエンコーダ20は、水平変換および垂直変換を選択された水平および垂直の変換対組合せから選択し得る(904)。いくつかの例では、ビデオデコーダ30および/またはビデオエンコーダ20は、変換対のうちのどれが水平変換であり、どれが垂直変換であるかを選択する。
【０２５２】
ビデオデコーダ30および/またはビデオエンコーダ20は、現在の変換ブロックを決定するために、選択された水平変換および垂直変換を使用して変換を現在の係数ブロックに適用し得る(906)。ビデオデコーダ30は、逆変換を適用し得る。ビデオエンコーダ20は、順変換を適用し得る。逆変換において適用される変換行列は、順変換において適用される転置変換行列であり得る。ビデオデコーダ30および/またはビデオエンコーダ20は、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成し得る(908)。
【０２５３】
例に応じて、本明細書で説明した技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行されてよく、追加、併合、または完全に除外されてよい(たとえば、説明したすべての行為またはイベントが技法の実践にとって必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて並行して実行されてよい。加えて、明快のために本開示のいくつかの態様は単一のモジュールまたはユニットによって実行されるものとして説明されるが、本開示の技法がビデオコーダと関連付けられるユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
【０２５４】
技法の様々な態様の特定の組合せが上記で説明されたが、これらの組合せは、単に本開示で説明する技法の例を示すために提供される。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明した技法の様々な態様の考えられる任意の組合せを包含し得る。
【０２５５】
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せとして実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるかまたはコンピュータ可読媒体を介して送信されてよく、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含んでもよい。このようにして、コンピュータ可読媒体は一般に、非一時的である有形コンピュータ可読記憶媒体に対応する場合がある。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスすることができる任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ可読媒体を含んでもよい。限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、フラッシュメモリ、キャッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備えることができる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体が、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【０２５６】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価な集積論理回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」という用語は、上記の構造、または本明細書において説明される技法の実装に適した任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書において説明される機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/もしくはソフトウェアモジュール内で与えられることがあり、または複合コーデックに組み込まれることがある。また、技法は、1つまたは複数の回路または論理要素において完全に実装される可能性がある。
【０２５７】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置に実装されてよい。開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが本開示で説明されるが、それらは必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられてよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上記で説明したような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてよい。
【０２５８】
様々な例が記載されている。これらおよび他の例は、以下の特許請求の範囲内に入る。
【符号の説明】
【０２５９】
10  ビデオコーディングシステム
12  ソースデバイス
14  宛先デバイス
16  チャネル
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
100  予測処理ユニット
101  ビデオデータメモリ
102  残差生成ユニット
104  変換処理ユニット
106  量子化ユニット
108  逆量子化ユニット
110  逆変換処理ユニット
112  再構成ユニット
114  フィルタユニット
116  復号ピクチャバッファ
118  エントロピー符号化ユニット
120  インター予測処理ユニット
121  インター予測ユニット
126  イントラ予測処理ユニット
150  エントロピー復号ユニット
151  ビデオデータメモリ
152  予測処理ユニット
154  逆量子化ユニット
156  逆変換処理ユニット1
158  再構成ユニット
160  フィルタユニット
162  復号されたピクチャバッファ
164  動き補償ユニット
166  イントラ予測処理ユニット
【図１Ａ】
2019525575.tif 000034
【図１Ｂ】
2019525575.tif 000035
【図１Ｃ】
2019525575.tif 000036
【図１Ｄ】
2019525575.tif 000037
【図１Ｅ】
2019525575.tif 000038
【図２】
2019525575.tif 000039
【図３】
2019525575.tif 000040
【図４】
2019525575.tif 000041
【図５Ａ】
2019525575.tif 000042
【図５Ｂ】
2019525575.tif 000043
【図６】
2019525575.tif 000044
【図７】
2019525575.tif 000045
【図８】
2019525575.tif 000046
【図９】
2019525575.tif 000047
【手続補正書】
【提出日】平成31年1月16日(2019.1.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
複数の予測モードのうちの1つの予測モードに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択するステップであって、水平および垂直の変換対組合せの前記選択された集合が、1つまたは複数の水平および垂直の変換対組合せを含む、ステップと、
水平および垂直の変換対組合せの前記選択された集合から水平および垂直の変換対組合せを選択するステップと、
前記選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択するステップと、
現在の変換ブロックを決定するために、前記選択された水平変換および前記選択された垂直変換を使用して逆変換を前記現在の係数ブロックに適用するステップと、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成するステップと
を含む、方法。
【請求項２】
変換の前記集合を選択する前記ステップがN個の変換を選択するステップを含み、変換の前記選択された集合に対するすべての前記利用可能な水平および垂直の変換対組合せがN2個の水平および垂直の変換対組合せを含む、請求項1に記載の方法。
【請求項３】
水平および垂直の変換対組合せのすべての前記利用可能な集合が、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、および{DCT-5, DCT-5}の水平および垂直の変換対組合せからなり、
DSTが離散サイン変換のタイプを指し、DCTが離散コサイン変換のタイプを指す、請求項1に記載の方法。
【請求項４】
水平および垂直の変換対組合せのすべての前記利用可能な集合が、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、{DCT-5, DCT-5}、{DST-7, ID}、{DST-4, ID}、{DCT-8, ID}、(DCT-5, ID}、{DST-1, ID}および{ID、ID}の水平および垂直の変換対組合せからなり、
DSTが離散サイン変換のタイプを指し、DCTが離散コサイン変換のタイプを指し、IDが恒等変換を指す、請求項1に記載の方法。
【請求項５】
水平および垂直の変換対組合せのすべての前記利用可能な集合から水平および垂直の変換対組合せの前記集合を選択するステップが、水平および垂直の変換対組合せの前記集合に対する2段マッピングを検索するステップを含む、請求項1に記載の方法。
【請求項６】
前記2段マッピングが、ブロック高さ、幅およびイントラモードを変換対集合インデックスにマッピングする第1のマッピングと、前記変換対集合インデックスを水平および垂直の変換対組合せの前記集合にマッピングする第2のマッピングとを含む、請求項5に記載の方法。
【請求項７】
水平および垂直の変換対組合せの前記選択された集合から前記水平および垂直の変換対組合せを選択するステップが、
拡張型多重変換(EMT)インデックス値を決定するステップと、
前記決定されたEMTインデックス値に基づいて、水平および垂直の変換対組合せの前記選択された集合から前記水平および垂直の変換対組合せを選択するステップと
を含む、請求項1に記載の方法。
【請求項８】
水平および垂直の変換対組合せの前記集合を選択するステップが、前記複数の予測モードのうちの前記1つの予測モードが水平または垂直のイントラ予測モードを含むことに基づいて、水平変換または垂直変換に対する恒等(ID)変換を含む集合を選択するステップを含む、請求項1に記載の方法。
【請求項９】
水平および垂直の変換対組合せの前記集合を選択するステップが、前記複数の予測モードのうちの前記1つの予測モードが水平または垂直のイントラ予測モードに関連するしきい値内にイントラ予測モードを含むことに基づいて、水平変換または垂直変換に対する恒等(ID)変換を含む集合を選択するステップを含む、請求項1に記載の方法。
【請求項１０】
前記しきい値が、前記現在の係数ブロックのサイズに基づく、請求項9に記載の方法。
【請求項１１】
前記しきい値が、前記イントラ予測モードに関連する角度と前記水平または垂直のイントラ予測モードとの間の距離に基づく、請求項9に記載の方法。
【請求項１２】
水平および垂直の変換対組合せの前記集合を選択するステップが、4つの水平および垂直の変換対の水平および垂直の変換対組合せの前記集合を選択するステップを含む、請求項1に記載の方法。
【請求項１３】
前記複数の予測モードのうちの前記1つの予測モードが、角度イントラ予測モードを含む、請求項12に記載の方法。
【請求項１４】
水平および垂直の変換対組合せの前記集合を選択するステップが、前記現在の係数ブロックの高さ、前記現在の係数ブロックの幅、または前記複数の予測モードのうちの前記1つの予測モード、のうちの少なくとも1つに基づくマッピングを適用するステップを含む、請求項1に記載の方法。
【請求項１５】
前記マッピングを適用するステップが、前記複数の予測モードのうちの予測モードの部分集合に対する値を決定するステップと、予測モードの前記部分集合に対する前記値から導出された前記複数の予測モードのうちの予測モードの別の部分集合に対する値を決定するステップとを含む、請求項14に記載の方法。
【請求項１６】
ビデオデータを復号するためのデバイスであって、
前記ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサが、
複数の予測モードのうちの1つの予測モードに従って符号化された前記ビデオデータのビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択することであって、水平および垂直の変換対組合せの前記選択された集合が、1つまたは複数の水平および垂直の変換対組合せを含む、選択することと、
水平および垂直の変換対組合せの前記選択された集合から水平および垂直の変換対組合せを選択することと、
前記選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択することと、
現在の変換ブロックを決定するために、前記選択された水平変換および前記選択された垂直変換を使用して逆変換を前記現在の係数ブロックに適用することと、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成することと
を行うように構成される、デバイス。
【請求項１７】
変換の前記集合を前記選択することがN個の変換を選択することを含み、変換の前記選択された集合に対するすべての前記利用可能な水平および垂直の変換対組合せがN2個の水平および垂直の変換対組合せを含む、請求項16に記載のデバイス。
【請求項１８】
水平および垂直の変換対組合せのすべての前記利用可能な集合が、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、および{DCT-5, DCT-5}の水平および垂直の変換対組合せからなり、
DSTが離散サイン変換のタイプを指し、DCTが離散コサイン変換のタイプを指す、請求項16に記載のデバイス。
【請求項１９】
水平および垂直の変換対組合せのすべての前記利用可能な集合が、{DST-7, DST-7}、{DST-4, DST-4}、{DST-4, DST-7}、{DST-7, DST-4}、{DCT-8, DST-7}、{DCT-8, DST-4}、{DST-7, DCT-5}、{DCT-5, DST-7}、{DST-7, DCT-8}、{DST-4, DCT-5}、{DST-1, DST-7}、{DST-1, DST-4}、{DST-1, DCT-5}、{DCT-5, DCT-5}、{DST-7, ID}、{DST-4, ID}、{DCT-8, ID}、{DCT-5, ID}、{DST-1, ID}および{ID、ID}の水平および垂直の変換対組合せからなり、
DSTが離散サイン変換のタイプを指し、DCTが離散コサイン変換のタイプを指し、IDが恒等変換を指す、請求項16に記載のデバイス。
【請求項２０】
水平および垂直の変換対組合せのすべての前記利用可能な集合からの水平および垂直の変換対組合せの前記集合の選択が、水平および垂直の変換対組合せの前記集合に対する2段マッピングの検索を含む、請求項16に記載のデバイス。
【請求項２１】
前記2段マッピングが、ブロック高さ、幅およびイントラモードを変換対集合インデックスにマッピングする第1のマッピングと、前記変換対集合インデックスを水平および垂直の変換対組合せの前記集合にマッピングする第2のマッピングとを含む、請求項20に記載のデバイス。
【請求項２２】
水平および垂直の変換対組合せの前記選択された集合から前記水平および垂直の変換対組合せを選択するように構成された前記1つまたは複数のプロセッサが、
拡張型多重変換(EMT)インデックス値を決定することと、
前記決定されたEMTインデックス値に基づいて、水平および垂直の変換対組合せの前記選択された集合から前記水平および垂直の変換対組合せを選択することと
を行うように構成された前記1つまたは複数のプロセッサを備える、請求項16に記載のデバイス。
【請求項２３】
水平および垂直の変換対組合せの前記集合を選択するように構成された前記1つまたは複数のプロセッサが、前記複数の予測モードのうちの前記1つの予測モードが水平または垂直のイントラ予測モードを含むことに基づいて、水平変換または垂直変換に対する恒等(ID)変換を含む集合を選択するように構成された前記1つまたは複数のプロセッサを備える、請求項16に記載のデバイス。
【請求項２４】
水平および垂直の変換対組合せの前記集合を選択するように構成された前記1つまたは複数のプロセッサが、前記複数の予測モードのうちの前記1つの予測モードが水平または垂直のイントラ予測モードに関連するしきい値内にイントラ予測モードを含むことに基づいて、水平変換または垂直変換に対する恒等(ID)変換を含む集合を選択するように構成された前記1つまたは複数のプロセッサを備える、請求項16に記載のデバイス。
【請求項２５】
前記しきい値が、前記現在の係数ブロックのサイズに基づく、請求項24に記載のデバイス。
【請求項２６】
前記しきい値が、前記イントラ予測モードに関連する角度と前記水平または垂直のイントラ予測モードとの間の距離に基づく、請求項24に記載のデバイス。
【請求項２７】
水平および垂直の変換対組合せの前記集合を選択するように構成された前記1つまたは複数のプロセッサが、前記現在の係数ブロックの高さ、前記現在の係数ブロックの幅、または前記複数の予測モードのうちの前記1つの予測モード、のうちの少なくとも1つに基づくマッピングを適用するように構成された前記1つまたは複数のプロセッサを備える、請求項16に記載のデバイス。
【請求項２８】
前記マッピングを適用するように構成された前記1つまたは複数のプロセッサが、前記複数の予測モードのうちの予測モードの部分集合に対する値を決定することと、予測モードの前記部分集合に対する前記値から導出された前記複数の予測モードのうちの予測モードの別の部分集合に対する値を決定することとを行うように構成された前記1つまたは複数のプロセッサを備える、請求項27に記載のデバイス。
【請求項２９】
ビデオデータを復号するためのデバイスであって、
複数の予測モードのうちの1つの予測モードに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択するための手段であって、水平および垂直の変換対組合せの前記選択された集合が、1つまたは複数の水平および垂直の変換対組合せを含む、手段と、
水平および垂直の変換対組合せの前記選択された集合から水平および垂直の変換対組合せを選択するための手段と、
前記選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択するための手段と、
現在の変換ブロックを決定するために、前記選択された水平変換および前記選択された垂直変換を使用して逆変換を前記現在の係数ブロックに適用するための手段と、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成するための手段と
を含む、デバイス。
【請求項３０】
命令を記憶するコンピュータ可読記録媒体であって、前記命令が、1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
複数の予測モードのうちの1つの予測モードに従って符号化されたビデオブロックの現在の係数ブロックに対して、変換の選択された集合に対する水平および垂直の変換対組合せのすべての利用可能な集合から水平および垂直の変換対組合せの集合を選択することであって、水平および垂直の変換対組合せの前記選択された集合が、1つまたは複数の水平および垂直の変換対組合せを含む、選択することと、
水平および垂直の変換対組合せの前記選択された集合から水平および垂直の変換対組合せを選択することと、
前記選択された水平および垂直の変換対組合せから水平変換および垂直変換を選択することと、
現在の変換ブロックを決定するために、前記選択された水平変換および前記選択された垂直変換を使用して逆変換を前記現在の係数ブロックに適用することと、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成することと
を行わせる、コンピュータ可読記録媒体。
【国際調査報告】
2019525575.tif 000048
2019525575.tif 000049
2019525575.tif 000050
2019525575.tif 000051