(57)【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
複数の予測モードのうちの1つに従ってコーディングされるビデオブロックに関連する現在の係数ブロックを変換するために複数の変換部分集合を判定するステップであって、前記予測モードは、複数のイントラ予測モードおよび複数のインター予測モードを含み、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別し、前記複数の変換部分集合を判定するステップは、前記イントラ予測モードのそれぞれに関する前記複数の変換部分集合のうちの第1の同一の変換部分集合または前記ビデオブロックがインター予測符号化される場合の現在の変換ブロックのロケーションに基づいた前記複数の変換部分集合のうちの第2の同一の変換部分集合のいずれかを判定するステップを含み、前記第1の同一の変換部分集合が、前記イントラ予測モードのそれぞれに関する前記複数の変換部分集合のうちの同一の変換部分集合であり、前記第2の同一の変換部分集合が、前記ビデオブロックがインター予測符号化される場合の前記現在の変換ブロックのロケーションに基づいた前記複数の変換部分集合のうちの同一の変換部分集合である、判定するステップと、
前記ビデオデータの前記現在の係数ブロックの左変換に関する第1の変換部分集合を前記判定された複数の変換部分集合から選択するステップと、
前記ビデオデータの前記現在の係数ブロックの右変換に関する第2の変換部分集合を前記判定された複数の変換部分集合から選択するステップと、
前記選択された第1の変換部分集合から前記左変換を判定するステップと、
前記選択された第2の変換部分集合から前記右変換を判定するステップと、
前記左変換、前記右変換、および前記現在の係数ブロックに基づいて現在の変換ブロックを判定するステップと、
前記現在の変換ブロックおよび予測ブロックに基づいて前記ビデオブロックを再構成するステップと、
を含む、方法。
【請求項２】
前記第1の変換部分集合または前記第2の変換部分集合のうちの少なくとも1つは、離散コサイン変換(DCT)-II変換および離散サイン変換(DST)-VII変換とは異なる、離散コサイン変換(DCT)または離散サイン変換(DST)を備える変換を含む、
請求項1に記載の方法。
【請求項３】
選択されたイントラ予測モードに基づいて、前記第1の変換部分集合および前記第2の変換部分集合から分離可能な変換の水平変換および垂直変換を選択するステップ
をさらに備える、請求項1または2に記載の方法。
【請求項４】
前記現在の係数ブロックに関連する変換サイズを判定するステップであって、前記変換サイズが所定のサイズよりも大きい場合、前記現在の係数ブロックに関連する係数の変換部分集合にのみエントロピーコーディングする、ステップ
をさらに備える、請求項1から3のいずれか一項に記載の方法。
【請求項５】
ビデオデータを符号化する方法であって、
複数の予測モードのうちの1つに従ってコーディングされるビデオブロックに関連する現在の係数ブロックを変換するために複数の変換部分集合を判定するステップであって、前記予測モードは、複数のイントラ予測モードおよび複数のインター予測モードを含み、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別し、前記複数の変換部分集合を判定するステップは、前記イントラ予測モードのそれぞれに関する前記複数の変換部分集合のうちの第1の同一の変換部分集合または前記ビデオブロックがインター予測符号化される場合の現在の変換ブロックのロケーションに基づいた前記複数の変換部分集合のうちの第2の同一の変換部分集合のいずれかを判定するステップを含み、前記第1の同一の変換部分集合が、前記イントラ予測モードのそれぞれに関する前記複数の変換部分集合のうちの同一の変換部分集合であり、前記第2の同一の変換部分集合が、前記ビデオブロックがインター予測符号化される場合の前記現在の変換ブロックのロケーションに基づいた前記複数の変換部分集合のうちの同一の変換部分集合である、判定するステップと、
前記ビデオデータの前記ビデオブロックの前記現在の変換ブロックの左変換に関する第1の変換部分集合を前記判定された複数の変換部分集合から選択するステップと、
前記ビデオデータの前記ビデオブロックの前記現在の変換ブロックの右変換に関する第2の変換部分集合を前記判定された複数の変換部分集合から選択するステップと、
前記選択された第1の変換部分集合から前記左変換を判定するステップと、
前記選択された第2の変換部分集合から前記右変換を判定するステップと、
前記左変換、前記右変換、および前記現在の変換ブロックに基づいて現在の係数ブロックを判定するステップと、
前記ビデオブロックの再構成に使用される前記現在の係数ブロックの係数を示す情報を含むビデオビットストリームを生成するステップと、
を含む、方法。
【請求項６】
前記ビデオブロックのイントラ予測モードを判定するステップ
をさらに含み、前記第1の変換部分集合を選択するステップは、前記判定されたイントラ予測モードに基づいて前記第1の変換部分集合を選択するステップを含み、
前記第2の変換部分集合を選択するステップは、前記判定されたイントラ予測モードに基づいて前記第2の変換部分集合を選択するステップを含む、
請求項1または5に記載の方法。
【請求項７】
前記ビデオブロックがインター予測符号化されることに基づいて前記ビデオブロック内の前記現在の変換ブロックのロケーションを判定するステップ
をさらに含み、前記第1の変換部分集合を選択するステップは、前記現在の変換ブロックの前記判定されたロケーションに基づいて前記第1の変換部分集合を選択するステップを含み、
前記第2の変換部分集合を選択するステップは、前記現在の変換ブロックの前記判定されたロケーションに基づいて前記第2の変換部分集合を選択するステップを含む、
請求項1または5に記載の方法。
【請求項８】
前記現在の係数ブロックを判定するのに使用される前記第1の変換部分集合内の変換を識別するために、前記第1の変換部分集合内への第1の変換部分集合インデックスをビデオビットストリーム内で生成するステップと、
前記現在の係数ブロックを判定するのに使用される前記第2の変換部分集合内の変換を識別するために、前記第2の変換部分集合内への第2の変換部分集合インデックスを前記ビデオビットストリーム内で生成するステップと、をさらに含み、
前記方法は、好ましくは、
前記現在の係数ブロック内の非0係数の個数を判定するステップ
をさらに含み、前記第1の変換部分集合インデックスをシグナリングするステップは、非0係数の前記個数がしきい値より大きいことに基づいて前記第1の変換部分集合インデックスをシグナリングするステップを含み、
前記第2の変換部分集合インデックスをシグナリングするステップは、非0係数の前記個数が前記しきい値より大きいことに基づいて前記第2の変換部分集合インデックスをシグナリングするステップを含む、
請求項1または5に記載の方法。
【請求項９】
前記第1の変換部分集合または前記第2の変換部分集合のうちの少なくとも1つは、離散コサイン変換(DCT)-II変換および離散サイン変換(DST)-VII変換とは異なる変換を含む、
請求項1または5に記載の方法。
【請求項１０】
前記第1の変換部分集合および前記第2の変換部分集合は、異なる変換タイプを含み、かつ／または、
前記複数の変換部分集合は、3つ以上の変換部分集合を含み、かつ／または、
前記候補変換は、異なる変換タイプであり、かつ／または、
前記複数の変換部分集合を判定するステップは、前記ビデオブロックのサイズに基づいて前記複数の変換部分集合を判定するステップを含む、
請求項1または5に記載の方法。
【請求項１１】
予測ブロックを判定するステップと、
前記予測ブロックに基づいて前記ビデオブロックの予測モードを示す情報をビデオビットストリーム内で生成するステップと
をさらに含み、
前記予測ブロックは、好ましくは、前記ビデオブロックがイントラ予測されることに基づいて前記ビデオブロックと同一のピクチャ内のブロック、または前記ビデオブロックがインター予測されることに基づいて前記ビデオブロックを含む前記ピクチャとは異なるピクチャ内のブロックである、
請求項1または5に記載の方法。
【請求項１２】
前記ビデオブロックと予測ブロックとの間の残差として前記現在の変換ブロックを判定するステップ
をさらに含む、請求項1または5に記載の方法。
【請求項１３】
ビデオデータを復号するためのデバイスであって、
複数の予測モードのうちの1つに従ってコーディングされるビデオブロックに関連する現在の係数ブロックを変換するために複数の変換部分集合を判定するための手段であって、前記予測モードは、複数のイントラ予測モードおよび複数のインター予測モードを含み、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別し、前記複数の変換部分集合を判定するための前記手段は、前記イントラ予測モードのそれぞれに関する前記複数の変換部分集合のうちの第1の同一の変換部分集合または前記ビデオブロックがインター予測符号化される場合の現在の変換ブロックのロケーションに基づいた前記複数の変換部分集合のうちの第2の同一の変換部分集合のいずれかを判定するための手段を含み、前記第1の同一の変換部分集合が、前記イントラ予測モードのそれぞれに関する前記複数の変換部分集合のうちの同一の変換部分集合であり、前記第2の同一の変換部分集合が、前記ビデオブロックがインター予測符号化される場合の前記現在の変換ブロックのロケーションに基づいた前記複数の変換部分集合のうちの同一の変換部分集合である、判定するための手段と、
前記ビデオデータの前記現在の係数ブロックの左変換に関する第1の変換部分集合を前記判定された複数の変換部分集合から選択するための手段と、
前記ビデオデータの前記現在の係数ブロックの右変換に関する第2の変換部分集合を前記判定された複数の変換部分集合から選択するための手段と、
前記選択された第1の変換部分集合から前記左変換を判定するための手段と、
前記選択された第2の変換部分集合から前記右変換を判定するための手段と、
前記左変換、前記右変換、および前記現在の係数ブロックに基づいて現在の変換ブロックを判定するための手段と、
前記現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成するための手段と、
を含む、デバイス。
【請求項１４】
ビデオデータを符号化するためのデバイスであって、
複数の予測モードのうちの1つに従ってコーディングされるビデオブロックに関連する現在の係数ブロックを変換するために複数の変換部分集合を判定するための手段であって、前記予測モードは、複数のイントラ予測モードおよび複数のインター予測モードを含み、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別し、前記複数の変換部分集合を判定するための前記手段は、前記イントラ予測モードのそれぞれに関する前記複数の変換部分集合のうちの第1の同一の変換部分集合または前記ビデオブロックがインター予測符号化される場合の現在の変換ブロックのロケーションに基づいた前記複数の変換部分集合のうちの第2の同一の変換部分集合のいずれかを判定するための手段を含み、前記第1の同一の変換部分集合が、前記イントラ予測モードのそれぞれに関する前記複数の変換部分集合のうちの同一の変換部分集合であり、前記第2の同一の変換部分集合が、前記ビデオブロックがインター予測符号化される場合の前記現在の変換ブロックのロケーションに基づいた前記複数の変換部分集合のうちの同一の変換部分集合である、判定するための手段と、
前記ビデオデータの前記ビデオブロックの前記現在の変換ブロックの左変換に関する第1の変換部分集合を前記判定された複数の変換部分集合から選択するための手段と、
前記ビデオデータの前記ビデオブロックの前記現在の変換ブロックの右変換に関する第2の変換部分集合を前記判定された複数の変換部分集合から選択するための手段と、
前記選択された第1の変換部分集合から前記左変換を判定するための手段と、
前記選択された第2の変換部分集合から前記右変換を判定するための手段と、
前記左変換、前記右変換、および前記現在の変換ブロックに基づいて現在の係数ブロックを判定するための手段と、
前記ビデオブロックの再構成に使用される前記現在の係数ブロックの係数を示す情報を含むビデオビットストリームを生成するための手段と、
を含む、デバイス。
【請求項１５】
実行された時に、ビデオコーダに、請求項1から12のいずれか一項に記載の方法を実行させる命令を記憶した、
非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、各々の内容全体が参照によって本明細書に組み込まれている、2015年1月26日に出願した米国特許仮出願第62/107,996号および2015年3月23日に出願した米国特許仮出願第62/137,038号の優先権を主張するものである。
【０００２】
本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
デジタルビデオ能力は、デジタルテレビジョン、デジタル直接放送システム(digital direct broadcast system)、ワイヤレス放送システム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラー無線電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ会議デバイス、ビデオストリーミングデバイス、および類似物を含む広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、アドバンストビデオコーディング(AVC)、ITU-T H.265、高効率ビデオコーディング(HEVC)によって定義された標準規格およびそのような標準規格の拡張に記載されているものなどのビデオ圧縮技法を実施する。ビデオデバイスは、そのようなビデオ圧縮技法を実施することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、かつ/または記憶することができる。
【０００４】
ビデオ圧縮技法は、空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を実行して、ビデオシーケンス内に固有の冗長性を低減しまたは除去する。ブロックベースのビデオコーディングに関して、ビデオスライス(すなわち、ビデオフレームまたはビデオフレームの一部)は、ビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライス内のビデオブロックは、サンプルピクチャ内の隣接ブロック内の参照サンプルに関する空間予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス内のビデオブロックは、同一ピクチャ内の隣接ブロック内の参照サンプルに関する空間予測または他の参照ピクチャ内の参照サンプルに関する時間予測を使用することができる。空間予測または時間予測は、コーディングされるブロックの予測ブロックをもたらす。残差データが、コーディングされるべき元のブロックと予測ブロックとの間の画素差を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの間の差を示す。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは画素領域から変換領域に変換され得、残差係数をもたらし、この残差係数は、次いで量子化され得る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許仮出願第61/561,783号
【特許文献２】米国特許出願第13/678,329号
【特許文献３】米国特許仮出願第61/431,480号
【特許文献４】米国特許仮出願第61/450,532号
【特許文献５】米国特許出願第13/311,834号
【特許文献６】米国特許仮出願第62/107,964号
【特許文献７】米国特許仮出願第62/116,631号
【非特許文献】
【０００６】
【非特許文献１】http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip
【非特許文献２】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
【非特許文献４】Jain、A.K.、A sinusoidal family of unitary transforms、IEEE Trans. on Pattern Analysis and Machine Intelligence、1、356頁、1979年
【非特許文献５】S. A. Martucci、「Symmetric convolution and the discrete sine and cosine transforms」、IEEE Trans. Sig. Processing SP-42、1038〜1051 (1994年)
【非特許文献６】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頁
【非特許文献７】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
【非特許文献８】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月
【非特許文献９】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頁
【非特許文献１０】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月
【非特許文献１１】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年
【非特許文献１３】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月
【非特許文献１４】J. An、X. Zhao、X. Guo、およびS. Lei、「Non-CE7: Boundary-Dependent Transform for Inter-Predicted Residue」、JCTVC-G281
【非特許文献１５】Video Coding for Low Bitrate Communication, document Rec. H.263, ITU-T、1995年4月
【発明の概要】
【課題を解決するための手段】
【０００７】
本開示は、ビデオ符号化の一部として変換ブロックから係数ブロックを生成するために使用すべき変換と、ビデオ復号の一部として係数ブロックから変換ブロックを生成するために使用すべき変換とを判定する技法について説明する。いくつかの例において、ビデオエンコーダは、複数の変換部分集合を判定することができる。同様に、ビデオデコーダは、複数の変換部分集合を判定することができる。ビデオエンコーダおよびビデオデコーダは、必ずしも追加のシグナリングを要求しない暗黙の技法を使用して複数の変換部分集合の変換部分集合を選択し、選択された変換部分集合から変換を判定することができる。この形で、ビデオエンコーダおよびビデオデコーダは、シグナリングされる必要がある情報の量の最小限の増加を伴って、変換の相対的に大きい集合から選択することができる。
【０００８】
一例において、本開示は、複数の変換部分集合を判定するステップであって、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別する、判定するステップと、ビデオデータの現在の係数ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択するステップと、ビデオデータの現在の係数ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択するステップと、選択された第1の変換部分集合から左変換を判定するステップと、選択された第2の変換部分集合から右変換を判定するステップと、左変換、右変換、および現在の係数ブロックに基づいて現在の変換ブロックを判定するステップと、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成するステップとを含む、ビデオデータを復号する方法について説明する。
【０００９】
一例において、本開示は、複数の変換部分集合を判定するステップであって、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別する、判定するステップと、ビデオデータのビデオブロックの現在の変換ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択するステップと、ビデオデータのビデオブロックの現在の変換ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択するステップと、選択された第1の変換部分集合から左変換を判定するステップと、選択された第2の変換部分集合から右変換を判定するステップと、左変換、右変換、および現在の変換ブロックに基づいて現在の係数ブロックを判定するステップと、ビデオブロックの再構成に使用される現在の係数ブロックの係数を示す情報を含むビデオビットストリームを生成するステップとを含む、ビデオデータを符号化する方法について説明する。
【００１０】
一例において、本開示は、ビデオデータおよび変換部分集合を記憶するように構成されたビデオデータメモリであって、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別する、ビデオデータメモリと、集積回路構成を含むビデオデコーダであって、記憶された変換部分集合から複数の変換部分集合を判定し、ビデオデータの現在の係数ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択し、ビデオデータの現在の係数ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択し、選択された第1の変換部分集合から左変換を判定し、選択された第2の変換部分集合から右変換を判定し、左変換、右変換、および現在の係数ブロックに基づいて現在の変換ブロックを判定し、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成するように構成された、ビデオデコーダとを含む、ビデオデータをビデオ復号するためのデバイスについて説明する。
【００１１】
一例において、本開示は、ビデオデータおよび変換部分集合を記憶するように構成されたビデオデータメモリであって、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別する、ビデオデータメモリと、記憶された変換部分集合から複数の変換部分集合を判定し、ビデオデータのビデオブロックの現在の変換ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択し、ビデオデータのビデオブロックの現在の変換ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択し、選択された第1の変換部分集合から左変換を判定し、選択された第2の変換部分集合から右変換を判定し、左変換、右変換、および現在の変換ブロックに基づいて現在の係数ブロックを判定し、ビデオブロックの再構成に使用される現在の係数ブロックの係数を示す情報を含むビデオビットストリームを生成するように構成されたビデオエンコーダとを含む、ビデオデータを符号化するためのデバイスについて説明する。
【００１２】
一例において、本開示は、複数の変換部分集合を判定するための手段であって、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別する、判定するための手段と、ビデオデータの現在の係数ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択するための手段と、ビデオデータの現在の係数ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択するための手段と、選択された第1の変換部分集合から左変換を判定するための手段と、選択された第2の変換部分集合から右変換を判定するための手段と、左変換、右変換、および現在の係数ブロックに基づいて現在の変換ブロックを判定するための手段と、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成するための手段とを含む、ビデオデータを復号するためのデバイスについて説明する。
【００１３】
一例において、本開示は、実行された時に、ビデオ復号のためのデバイスのビデオデコーダに、複数の変換部分集合を判定させ、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別し、ビデオデータの現在の係数ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択させ、ビデオデータの現在の係数ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択させ、選択された第1の変換部分集合から左変換を判定させ、選択された第2の変換部分集合から右変換を判定させ、左変換、右変換、および現在の係数ブロックに基づいて現在の変換ブロックを判定させ、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成させる命令を記憶した非一時的コンピュータ可読記憶媒体について説明する。
【００１４】
一例において、本開示は、複数の変換部分集合を判定するための手段であって、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別する、判定するための手段と、ビデオデータのビデオブロックの現在の変換ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択するための手段と、ビデオデータのビデオブロックの現在の変換ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択するための手段と、選択された第1の変換部分集合から左変換を判定するための手段と、選択された第2の変換部分集合から右変換を判定するための手段と、左変換、右変換、および現在の変換ブロックに基づいて現在の係数ブロックを判定するための手段と、ビデオブロックの再構成に使用される現在の係数ブロックの係数を示す情報を含むビデオビットストリームを生成するための手段とを含む、ビデオデータを符号化するためのデバイスについて説明する。
【００１５】
一例において、本開示は、実行された時に、ビデオ符号化のためのデバイスのビデオエンコーダに、複数の変換部分集合を判定させ、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別し、ビデオデータのビデオブロックの現在の変換ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択させ、ビデオデータのビデオブロックの現在の変換ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択させ、選択された第1の変換部分集合から左変換を判定させ、選択された第2の変換部分集合から右変換を判定させ、左変換、右変換、および現在の変換ブロックに基づいて現在の係数ブロックを判定させ、ビデオブロックの再構成に使用される現在の係数ブロックの係数を示す情報を含むビデオビットストリームを生成させる命令を記憶した非一時的コンピュータ可読記憶媒体について説明する。
【００１６】
1つまたは複数の例の詳細が、添付図面および下の説明において示される。他の特徴、目的、および利点は、この説明、図面、および特許請求の範囲から明らかになる。
【図面の簡単な説明】
【００１７】
【図１Ａ】変換タイプの例を示す表である。
【図１Ｂ】変換タイプの例を示す表である。
【図１Ｃ】変換タイプの例を示す表である。
【図１Ｄ】変換タイプの例を示す表である。
【図１Ｅ】変換タイプの例を示す表である。
【図１Ｆ】変換タイプの例を示す表である。
【図２】本開示において説明される技法を利用することのできる例のビデオコーディングシステムを示すブロック図である。
【図３】高効率ビデオコーディング(HEVC)における残差四分木に基づく変換方式の例を示す概念図である。
【図４】HEVCにおけるコーディンググループに基づく係数スキャンの例を示す概念図である。
【図５】本開示において説明される技法を実施することのできる例のビデオエンコーダを示すブロック図である。
【図６】本開示において説明される技法を実施することのできる例のビデオデコーダを示すブロック図である。
【図７】ITU-T H.263標準規格において定義されるビデオコーディングプロセスによるオーバーラップブロック動き補償(OBMC:overlapped block motion compensation)の例を示す概念図である。
【図８Ａ】OBMCのブロックの一部を示す概念図である。
【図８Ｂ】OBMCのブロックの一部を示す概念図である。
【図９】ビデオデータを復号する例の方法を示す流れ図である。
【図１０】ビデオデータを符号化する例の方法を示す流れ図である。
【発明を実施するための形態】
【００１８】
本開示は、イントラ予測残差またはインター予測残差に適用される複数の変換に関する。この技法は、高効率ビデオコーディング(HEVC)標準規格の拡張またはビデオコーディング標準規格の次の世代など、高度なビデオコーデックの文脈において使用され得る。
【００１９】
ビデオコーディングにおいて、ビデオエンコーダは、予測ブロックのサンプル値から現在のブロックのサンプル値を減算することによって残差ブロックを生成する。ビデオエンコーダは、残差ブロックを1つまたは複数の変換ブロックに分割し、1つまたは複数の変換ブロックに変換(たとえば、離散コサイン変換(DCT)などの離散周波数変換)を適用して、1つまたは複数の変換ブロック内の残差値を画素領域から周波数領域に変換する。周波数領域において、変換されたブロックは、1つまたは複数の変換係数値を含む係数ブロックと呼ばれる。
【００２０】
復号中に、ビデオデコーダは、相反プロセスを実行する。たとえば、ビデオデコーダは、係数ブロックに逆変換を適用して、係数ブロックを変換ブロックに変換する(たとえば、周波数領域から画素領域に変換する)。変換ブロックは、残差ブロックの1ブロックであり、ビデオデコーダは、予測ブロックのサンプル値に残差ブロックの残差値を加算して、現在のブロックを再構成する。
【００２１】
説明のしやすさだけのために、本開示は、それぞれ符号化プロセスおよび復号プロセスに使用される変換を判定するものとしてビデオエンコーダおよびビデオデコーダについて説明する。しかしながら、ビデオエンコーダが、係数ブロックを生成するために変換ブロックに変換を適用することと、ビデオデコーダが、変換ブロックを再構成するために係数ブロックにその変換の逆を適用することとを理解されたい。したがって、ビデオデコーダが適用する変換は、ビデオエンコーダが適用する変換の逆である。したがって、本開示において、ビデオデコーダが、変換を判定し、かつ/または変換を適用するものとして説明される時に、ビデオデコーダが、ビデオエンコーダによって判定された変換の逆である変換を判定しており、かつ/または、ビデオデコーダが、ビデオエンコーダによって適用された変換の逆である変換を適用していることを理解されたい。
【００２２】
本開示は、変換係数を符号化するために残差値の変換ブロックに適用される変換または残差値を復号するために変換係数の係数ブロックに適用される変換を判定するための例の技法について説明する。たとえば、ビデオエンコーダおよびビデオデコーダは、それぞれ複数の変換部分集合を構成することができ、各変換部分集合は、複数の候補変換を識別する。候補変換は、異なるタイプのDCTおよび異なるタイプの離散サイン変換(DST)など、異なるタイプの変換を指す。ビデオエンコーダおよびビデオデコーダは、変換部分集合を選択し、ビデオ符号化のために変換ブロックから係数ブロックを、またはビデオ復号のために係数ブロックから変換ブロックを判定するのに使用される変換を、選択された変換部分集合から判定する。
【００２３】
この形で、ビデオエンコーダおよびビデオデコーダは、候補変換のより大きい集合から使用すべき変換を判定することができ、ビットストリーム帯域幅に過度の重荷を負わせることなく変換ブロックの変化する統計へのより良い適合を可能にする。たとえば、一部の技法は、何個の変換が使用可能であるのかを制約し、これは、変換ブロックの統計が、使用可能な変換のどれもが良好に動作しないようなものなので、悪いコーディング性能をもたらす可能性がある。他のより良い変換がある可能性があるが、これらの変換は、制約に起因して使用不能である。
【００２４】
本開示において説明される技法において、より多くの変換が使用可能なので、ビデオエンコーダおよびビデオデコーダは、変換の制限された集合を用いて可能になるものより良いコーディング性能を提供する変換を使用することができる。さらに、より詳細に説明されるように、どの変換を使用すべきかを示すのに使用されるシグナリングオーバーヘッドは、低く保たれ、その結果、使用可能なより多くの変換を有し、帯域幅に対する影響を低く保ちながら、コーディング利得が達成され得るようになる。
【００２５】
たとえば、ビットストリーム内でシグナリングされる情報に頼るのではなく、ビデオデコーダは、イントラ予測モード、変換ブロックのロケーション、その他などの暗黙の技法に基づいて、どの変換部分集合を使用すべきかを選択することができる。次いで、ビデオデコーダは、ビットストリーム内でシグナリングされた、選択された変換部分集合のそれぞれの1つの1つまたは複数の変換部分集合インデックス、あるいは非ゼロ係数の個数、非ゼロ係数の和、または係数ブロック内の非ゼロ係数の位置を含むがこれに限定されない他の要因におそらくは基づいて、選択された変換部分集合から使用すべき変換を判定することができる。
【００２６】
変換部分集合インデックスが、それぞれの変換部分集合についてシグナリングされる場合であっても、インデックス値が、すべての可能な変換にわたるのではなく変換部分集合の範囲だけにわたるので、シグナリングオーバーヘッドは低く保たれ得る。たとえば、16個までの可能な変換があり、変換部分集合が3つの候補変換を含むと仮定する。この場合に、インデックスは、0から2までの範囲にわたるが、すべての変換のリスト内へのインデックスは、0から15までの範囲にわたる。0から2までなどのより小さい値のシグナリングは、より大きい値のシグナリングより少数のビットを必要とする可能性がある。
【００２７】
変換部分集合が構成され、選択される形について説明する前に、以下は、ビデオコーディング標準規格、DCTおよびDST全般、DCTおよびDSTの異なるタイプ、ならびにいくつかの既存のDCT技法およびDST技法について説明する。次いで、本開示は、既存の技法におけるいくつかの問題について説明し、それらの問題を克服することのできる例の技法がこれに続く。
【００２８】
ビデオコーディング標準規格は、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(ISO/IEC MPEG-4 AVCとも称する)を含む。加えて、新しいビデオコーディング標準規格すなわち、高効率ビデオコーディング(HEVC)が、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(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の線形結合を使用して近似されまたは正確に表現され得、これは、次のように定式化され得る。
【００３０】
【数１】
0006768675.tif 000002
【００３１】
ここで、
【００３２】
【数２】
0006768675.tif 000003
【００３３】
は、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) = A・eikθ+B・e-ikθ
ここで、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は、両端を含めて0からN-1までの範囲にわたる。
DCTタイプI(DCT-1):
【００３８】
【数３】
0006768675.tif 000004
【００３９】
DCTタイプII(DCT-2):
【００４０】
【数４】
0006768675.tif 000005
【００４１】
DCTタイプIII(DCT-3):
【００４２】
【数５】
0006768675.tif 000006
【００４３】
DCTタイプIV(DCT-4):
【００４４】
【数６】
0006768675.tif 000007
【００４５】
DCTタイプV(DCT-5):
【００４６】
【数７】
0006768675.tif 000008
【００４７】
DCTタイプVI(DCT-6):
【００４８】
【数８】
0006768675.tif 000009
【００４９】
DCTタイプVII(DCT-7):
【００５０】
【数９】
0006768675.tif 000010
【００５１】
DCTタイプVIII(DCT-8):
【００５２】
【数１０】
0006768675.tif 000011
【００５３】
DSTタイプI(DST-1):
【００５４】
【数１１】
0006768675.tif 000012
【００５５】
DSTタイプII(DST-2):
【００５６】
【数１２】
0006768675.tif 000013
【００５７】
DSTタイプIII(DST-3):
【００５８】
【数１３】
0006768675.tif 000014
【００５９】
DSTタイプIV(DST-4):
【００６０】
【数１４】
0006768675.tif 000015
【００６１】
DSTタイプV(DST-5):
【００６２】
【数１５】
0006768675.tif 000016
【００６３】
DSTタイプVI(DST-6):
【００６４】
【数１６】
0006768675.tif 000017
【００６５】
DSTタイプVII(DST-7):
【００６６】
【数１７】
0006768675.tif 000018
【００６７】
DSTタイプVIII(DST-8):
【００６８】
【数１８】
0006768675.tif 000019
【００６９】
上記は、異なるDCTタイプおよびDSTタイプの例を提供し、全部で16個の変換タイプがある。変換タイプは、変換基底関数の数学的定式化によって指定される。変換タイプと変換サイズとを混同してはならない。変換タイプは、基底関数を指すが、変換サイズは、変換のサイズを指す。たとえば、4点DST-VIIおよび8点DST-VIIは、Nの値(たとえば、4点または8点)にかかわりなく、同一の変換タイプを有する。
【００７０】
一般性を失うことなく、上記のすべての変換タイプを、下の一般化された定式化を使用して表すことができる。
【００７１】
【数１９】
0006768675.tif 000020
【００７２】
ここで、Tは、ある1つの変換の定義、たとえばDCTタイプI〜DCTタイプVIIIまたはDSTタイプI〜DSTタイプVIIIによって指定される変換行列であり、Tの行ベクトル、たとえば[Ti,0, Ti,1, Ti,2, …, Ti,N-1]は、第iの変換基底ベクトルである。N点入力ベクトルに適用される変換は、N点変換と呼ばれる。
【００７３】
上の変換定式化は、1D入力データ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'に再編成する。
【００７９】
【数２０】
0006768675.tif 000021
【００８０】
次いで、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は、本開示内で説明される様々な例に従って予測残差の機能強化された複数の変換の技法を実行するように構成され得るデバイスの例を表す。
【００８８】
図2に示されているように、ビデオコーディングシステム10は、ソースデバイス12および宛先デバイス14を含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号することができる。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例とすることができる。
【００８９】
ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータまたは類似物を含む、広範囲のデバイスを含むことができる。
【００９０】
宛先デバイス14は、チャネル16を介してソースデバイス12から符号化されたビデオデータを受信することができる。チャネル16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動することのできる1つまたは複数の媒体またはデバイスを含むことができる。一例では、チャネル16は、ソースデバイス12が、宛先デバイス14に直接に符号化されたビデオデータをリアルタイムで送信することを可能にする1つまたは複数の通信媒体を含むことができる。この例において、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信標準規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス14に送信することができる。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線など、ワイヤレス通信媒体および/または有線通信媒体を含むことができる。1つまたは複数の通信媒体は、ローカルエリアネットワーク、広域ネットワーク、またはグローバルネットワーク(たとえば、インターネット)などの、パケットベースネットワークの一部を形成することができる。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にする他の機器を含むことができる。
【００９１】
別の例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶する記憶媒体を含むことができる。この例では、宛先デバイス14は、たとえば、ディスク(disk)アクセスまたはカードアクセスを介して記憶媒体にアクセスすることができる。記憶媒体は、Blu-ray（登録商標）ディスク(disc)、DVD、CD-ROM、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体など、様々なローカルにアクセスされるデータ記憶媒体を含むことができる。
【００９２】
さらなる例において、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間記憶デバイスを含むことができる。この例では、宛先デバイス14は、ファイルサーバまたは他の中間記憶デバイスにおいて記憶された符号化されたビデオデータに、ストリーミングまたはダウンロードを介してアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶するとともに符号化されたビデオデータを宛先デバイス14へ送信することが可能なタイプのサーバとすることができる。例のファイルサーバは、ウェブサーバ(たとえば、ウェブサイト用の)、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスク(disk)ドライブを含む。
【００９３】
宛先デバイス14は、インターネット接続などの標準データ接続を介して符号化されたビデオデータにアクセスすることができる。データ接続の例のタイプは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適切な、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含むことができる。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せとすることができる。
【００９４】
本開示の技法は、ワイヤレス応用またはワイヤレス設定に限定されない。この技法は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介する、ストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の応用例などの様々なマルチメディア応用をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの応用例をサポートするために1方向または両方向のビデオ送信をサポートするように構成され得る。
【００９５】
図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:coding tree unit)の集合を生成することができる。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用される構文構造とすることができる。コーディングツリーブロックは、サンプルのN×Nブロックとすることができる。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の標準規格のマクロブロックにおおまかに類似する可能性がある。しかしながら、CTUは、必ずしも特定のサイズに制限されず、1つまたは複数のコーディングユニット(CU)を含むことができる。スライスは、ラスタスキャンにおいて連続的に順序付けられた整数個のCTUを含むことができる。
【０１０４】
コーディングされたCTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロックに対して四分木区分を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割することができ、これが「コーディングツリーユニット」という名前の由来である。コーディングブロックは、サンプルの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は、四分木区分を使用して、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およびSEIメッセージのRBSPではなく)ビデオコーディングデータのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL:video coding layer) 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のロケーションによって完全に判定されるので、どの組合せが使用されているのかをシグナリングする必要はない。
【０１３９】
残差の変換に関する技法に関するある種の問題がある可能性がある(たとえば、イントラ予測から生じるイントラ予測された残差に関する問題、しかし、インター予測から生じるインター予測された残差にも適用可能である可能性がある)。既存の方法は、イントラ予測された残差に関してDST変換またはDCT変換の対を使用することができる。しかしながら、これらの変換は、残差信号のすべての可能な分布をカバーすることができない。
【０１４０】
たとえば、DCTタイプIIだけが、HEVCにおいて8×8以上のイントラ予測残差ブロックに関して適用され、これは、イントラ予測残差の変化する統計に適合することができない。DCTタイプIIだけが、HEVCにおいてインター予測残差に関して適用され、これは、インター予測残差の変化する統計に適合することができない。変換ブロックサイズまたはイントラ予測モードに依存して変換を単純に選択することは、あまり効率的ではない。というのは、残差統計が、同一のイントラ予測モードまたは同一の変換サイズの下であっても、まだ大きい変動を有する可能性があるからである。
【０１４１】
本開示は、以下の技法について説明する。いくつかの例において、以下の技法のうちの1つまたは複数は、上で言及された問題のうちの1つまたは複数に対処することができる。しかしながら、以下の技法が上で言及された問題のうちの1つまたは複数に対処することは、要件ではない。以下の技法は、個別に適用され得る。いくつかの場合に、例の技法の任意の組合せが適用され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、技法を個別に適用することができ、あるいは、いくつかの場合に、1つまたは複数の技法の任意の組合せを適用することができる。
【０１４２】
いくつかの例において、HEVCにおいて使用されるDCT-IIベースの変換に加えて、イントラ予測モードによって生成される残差ブロックごとに、ビデオエンコーダ20およびビデオデコーダ30は、DCT族およびDST族からの2つ以上の候補変換から変換を選択することができる。一例として、候補変換は、DCT族およびDST族の異なるタイプに基づく合計16個の変換に属すことができ、DCT-I〜DCT-VIII、DST-I〜DST-VIIIを含むことができるが、これに限定はされない。その代わりにまたはそれに加えて、ビデオエンコーダ20およびビデオデコーダ30は、他の正弦曲線ユニタリ変換を使用することができ、または、他のKLT変換さえ使用され得る。TUごとに、水平変換および垂直変換(たとえば、右変換および左変換)は、同一のタイプとすることができる。たとえば、候補変換は、DST-VII、DCT-VIII、DST-I、およびDST-Vである。
【０１４３】
上で説明したように、16個の変換(たとえば、DCT-IからDCT-VIIIおよびDST-IからDST-VIII)がある。どの変換を使用すべきかを識別する1つの形は、ビデオエンコーダ20およびビデオデコーダ30が、これらの16個の変換のリストを構成することである。次いで、ビデオエンコーダ20は、左変換(たとえば、式Y=C*X*RTの変換C、ここで、Xは変換ブロックであり、Yは結果の係数ブロックである)を識別するためにリスト内への第1のインデックスをシグナリングし(たとえば、ビットストリーム内で生成し)、右変換(たとえば式Y=C*X*RTの変換R)を識別するためにリスト内への第2のインデックスをシグナリングする(たとえば、ビットストリーム内で生成する)ことができる。次いで、ビデオデコーダ30は、ビットストリームから第1のインデックスおよび第2のインデックスを受信し、ビデオデコーダ30が係数ブロックを変換ブロックに逆変換するのに使用すべき変換CおよびRを判定する。
【０１４４】
この例において、第1のインデックスの値は、0から15の範囲にわたる可能性があり、第2のインデックスの値は、0から15の範囲にわたる可能性がある。一般に、より大きい数のコーディングは、より小さい数のコーディングより多数のビットをシグナリングすることを必要とする(たとえば、インデックス値15を示すことは、インデックス値2を示すことより多くのビットを必要とする)。リストが16個すべての変換を含む場合には、望ましいものより多くの帯域幅を消費するシグナリングオーバーヘッドがある可能性がある。しかし、HEVCにおいて行われているように、どの変換を使用できるのかに関するオプションを制限することは、シグナリングオーバーヘッドを低減させはするが、より良い変換が使用可能ではないのでコーディング効率に悪影響を及ぼすことがある。
【０１４５】
本開示において説明される技法において、ビデオエンコーダ20およびビデオデコーダ30は、シグナリングオーバーヘッドに対する小さい影響を伴って、相対的に大量の候補変換から左変換および右変換を判定できる可能性がある。一例として、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ複数の変換部分集合を判定することができ、各変換部分集合は、複数の候補変換を識別する。
【０１４６】
たとえば、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ次の3つの変換部分集合すなわち、変換部分集合0:{DST-VII, DCT-VIII}、変換部分集合1:{DST-VII, DST-I}、および変換部分集合2{DST-VII, DCT-V}を構成し、変換部分集合をメモリ内に記憶することができる。いくつかの例において、この3つの変換は、ビデオエンコーダ20およびビデオデコーダ30のメモリ内に事前に記憶され得る。どの場合にも、ビデオエンコーダ20およびビデオデコーダ30は、この3つの変換部分集合を判定するものと考えられ得、3つの変換部分集合の各々は、複数の候補変換(たとえば、この例においては2つの変換)を識別する。複数の変換部分集合は、3つより多数または3つより少数の変換部分集合を含むことができ、一般に、2つ以上の変換部分集合を含む。各変換部分集合は、1つまたは複数の候補変換を含むことができるが、少なくとも1つは、複数の候補変換を識別する。たとえば、いくつかの変換部分集合は、1つの変換だけを識別することができ、他の変換部分集合は、2つ以上の変換を識別することができる。いくつかの例において、各変換部分集合は、相対的に少数の変換(たとえば、5つ以下)を識別することができる。
【０１４７】
本開示において説明される技法において、ビデオエンコーダ20およびビデオデコーダ30は、対応する変換部分集合を判定することができる。たとえば、ビデオエンコーダ20内に記憶された変換部分集合が、変換部分集合0:{DST-VII, DCT-VIII}、変換部分集合1:{DST-VII, DST-I}、および変換部分集合2:{DST-VII, DCT-V}である場合に、ビデオデコーダ30は、逆変換部分集合すなわち、逆変換部分集合0:{IDST-VII, IDCT-VIII}、逆変換部分集合1:{IDST-VII, IDST-I}、および逆変換部分集合2:{IDST-VII, IDCT-V}を記憶することができる。別の例として、ビデオデコーダ30は、ビデオエンコーダ20と同一の変換を記憶することができ、逆変換を適用する前にそれらを逆転することができる。どちらの例においても、ビデオエンコーダ20およびビデオデコーダ30は、対応する変換部分集合(たとえば、同一の部分集合またはお互いの逆変換を有する部分集合)を記憶するものと考えられ得る。
【０１４８】
ビデオエンコーダ20およびビデオデコーダ30は、左変換および右変換の変換部分集合を選択するのに暗黙の技法を利用することができる。暗黙の技法とは、ビデオエンコーダ20が、どの変換部分集合を選択すべきかに関してビデオデコーダ30に指示する情報をビデオデコーダ30にシグナリングする必要がないことを意味する。ビデオエンコーダ20およびビデオデコーダ30は、シグナリングされる必要がある情報の量の増加をまったく伴わずにビデオエンコーダ20およびビデオデコーダ30が同一の変換部分集合を選択することをもたらす、変換部分集合を選択するための同一の暗黙の技法を実行するように構成され得る。
【０１４９】
一例として、変換ブロックがイントラ予測から生成される場合に、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測モードに基づいて、どの変換部分集合を選択すべきかを判定することができる。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、それから左変換が判定される変換部分集合およびそれから右変換が判定される変換部分集合に対してイントラ予測モードを写像するテーブルを記憶することができる。
【０１５０】
一例として、ビデオエンコーダ20は、イントラ予測モードXにおいて現在のブロックをイントラ予測符号化することができる。この例では、ビデオエンコーダ20は、イントラ予測モードXにおいて現在のブロックをイントラ予測符号化することから生成された残差ブロックから変換ブロックを生成する。ビデオエンコーダ20は、イントラ予測モードXに基づいて左変換の変換部分集合を選択し、イントラ予測モードXに基づいて右変換の変換部分集合を選択することができる。ビデオエンコーダ20は、下でより詳細に説明されるようにそれぞれの選択された変換部分集合から左変換および右変換を判定し、変換を適用して係数ブロックを生成することができる。
【０１５１】
ビデオエンコーダ20は、係数ブロックの係数値を示す情報、ならびに、係数ブロックから生成された変換ブロックがイントラ予測モードXを使用してイントラ予測符号化されたブロックに対するものであることを示す情報を含むビデオビットストリームを生成することができる。ビデオデコーダ30は、シグナリングされた情報から係数ブロックを生成し、やはりシグナリングされた情報からイントラ予測モードがモードXであったことを判定することができる。ビデオデコーダ30は、イントラ予測モードがモードXであったことに基づいて、左変換の変換部分集合(この場合にはビデオエンコーダ20によって適用された変換の逆)および右変換の変換部分集合(この場合にはビデオエンコーダ20によって適用された変換の逆)を選択することができる。
【０１５２】
どの変換部分集合がどのイントラ予測モードに写像するのかを示す記憶された写像は、ビデオエンコーダ20側およびビデオデコーダ30側で同一である。したがって、ビデオエンコーダ20およびビデオデコーダ30は、対応する変換部分集合を選択する。ビデオデコーダ30は、下でより詳細に説明されるように、それぞれの選択された変換部分集合から左変換および右変換を判定し、その変換を適用して変換ブロックを生成し得る。
【０１５３】
上の例は、イントラ予測モードに関して説明されたが、本開示において説明される技法は、それに限定されない。いくつかの例において、イントラ予測モードではなく、ビデオエンコーダ20およびビデオデコーダ30は、RQT深度、量子化された係数、および類似物などの他の情報に基づいてそれぞれの変換部分集合を選択することができる。
【０１５４】
また、上の例は、イントラ予測に関して説明されたが、本開示において説明される技法は、インター予測にも拡張され得る。たとえば、上に似て、ビデオエンコーダ20およびビデオデコーダ30は、複数の変換部分集合を判定することができる。インター予測の場合に関するこの複数の変換部分集合は、イントラ予測の場合に関する複数の変換部分集合と同一または異なるものとすることができる。いくつかの場合に、インター予測の場合に関する複数の変換部分集合は、イントラ予測の場合に関する複数の変換部分集合の、すべてではなく一部と同一とすることができる。
【０１５５】
インター予測に関して、ビデオエンコーダ20およびビデオデコーダ30は、変換ブロックが関連付けられたPU、CU、またはLCUに対する相対的な変換ブロックの位置の間の写像を記憶することができる。たとえば、写像は、変換ブロックがPU、CU、またはLCUの左境界にある場合に、変換部分集合の第1のグループが選択される(たとえば、左変換の1つの変換部分集合および右変換の1つの変換部分集合)ことを示すことができる。変換ブロックがPU、CU、またはLCUの右境界にある場合に、変換部分集合の第2のグループが選択され、上境界および下境界に関しても同様であり、ここで、それぞれの場合に、ビデオエンコーダ20およびビデオデコーダ30は、左変換の1つの変換部分集合および右変換の1つの変換部分集合を選択する。
【０１５６】
ビデオエンコーダ20およびビデオデコーダ30は、特定の順序でピクチャのブロックを符号化し、復号することができる。したがって、符号化されまたは復号されたばかりのブロックのロケーションに基づいて、ビデオエンコーダ20およびビデオデコーダ30は、PU、CU、またはLCU内の変換ブロックのロケーションを判定することができる。やはり、ビデオデコーダ30の展望から、ビデオデコーダ30は、係数ブロックから変換ブロックを生成している。しかし、復号順序に基づいて、ビデオデコーダ30は、係数ブロックから生成されるべき変換ブロックのロケーションを判定することができる可能性がある。
【０１５７】
この形で、ビデオエンコーダ20およびビデオデコーダ30は、シグナリングされる必要がある情報の量の増加をまったく伴わずに、左変換および右変換がそれから判定されるそれぞれの変換部分集合を判定することができる。いくつかの例において、ビデオエンコーダ20が、変換部分集合を選択した後に、ビデオエンコーダ20は、選択された変換部分集合内のどの変換が左変換に関し、どの変換が右変換に関するのかを示す情報をシグナリングする(たとえば、ビデオビットストリーム内に情報を生成する)ことができる。ビデオデコーダ30は、シグナリングされた情報を受信し、左変換および右変換を判定する。
【０１５８】
たとえば、ビデオエンコーダ20は、左変換に関して選択された変換部分集合内へのインデックスをシグナリングし(たとえば、ビットストリーム内で生成し)、右変換に関して選択された変換部分集合内へのインデックスをシグナリングする(たとえば、ビットストリーム内で生成する)ことができる。ビデオデコーダ30は、それぞれの変換部分集合へのそれぞれのインデックスを受信し、左変換および右変換を判定することができる。
【０１５９】
この例において、シグナリングされる必要がある情報の増加がある可能性がある(たとえば、左変換および右変換を判定するためのインデックスがシグナリングされる)。しかしながら、シグナリングされる必要がある情報の増加は、最小限とすることができる。上で説明したように、変換部分集合の各々は、相対的に少数の変換を識別することができる。したがって、インデックス値の範囲は、相対的に狭いものとすることができる(たとえば、各変換部分集合が識別する変換の最大個数が5の場合に0から4まで)。
【０１６０】
したがって、シグナリングオーバーヘッドにおける相対的に小さい増加に関して、本開示において説明される技法は、選択され得る変換の個数における相対的に大きい増加を可能にする。たとえば、それぞれが1つまたは複数の変換を含む複数の変換部分集合があるので、16個の例の変換のうちの多数、おそらくはすべてが、変換のうちの1つまたは複数の中で識別され得る。変換部分集合が、暗黙の技法を用いて選択されるので、シグナリングオーバーヘッドにおける増加はなく、各変換部分集合が、相対的に少数の変換を識別するので、特定の変換の識別は、シグナリングオーバーヘッドを劇的には増加させない。
【０１６１】
いくつかの例において、シグナリングオーバーヘッドの量をさらに低減することが可能である場合がある。たとえば、いくつかの例において、ビデオエンコーダ20およびビデオデコーダ30は、上で説明したように変換部分集合を選択するが、次いで、ある種の条件に基づいてそれぞれの変換部分集合の各々から特定の変換を判定するように構成され得る。この場合において、ビデオエンコーダ20は、選択された変換部分集合内のどの変換を使用すべきかを示す情報をシグナリングする必要がないものとされ得、ビデオデコーダ30は、その情報を受信する必要がないものとされ得る。
【０１６２】
一例として、符号化プロセス中に、ビデオエンコーダ20は、選択された変換部分集合からの特定の変換(たとえば、選択された変換部分集合内の最初に識別された変換)を使用し、変換が適用された後に、結果の係数ブロック内の非0係数の個数がしきい値未満であると判定することができる。この場合において、ビデオデコーダ30は、係数ブロックの係数値を示す情報を受信し、非0係数の個数がしきい値未満であると同様に判定することができる。いくつかの例では、ビデオデコーダ30が、係数ブロック内の非0係数の個数がしきい値(たとえば、1または2)未満であると同様に判定する場合に、ビデオデコーダ30は、ビデオデコーダ30が選択された変換部分集合からの特定の変換(たとえば、選択された変換部分集合内の最初に識別された変換)を使用しなければならないと判定することができる。
【０１６３】
たとえば、イントラ予測モードに基づいて、ビデオエンコーダ20が、左変換の変換部分集合が部分集合0であり、右変換の変換部分集合が部分集合1であると判定したと仮定する。この場合において、ビデオエンコーダ20は、部分集合0内で最初に識別される変換が、左変換として使用され、部分集合1内で最初に識別される変換が、右変換として使用される場合に、結果の係数ブロック内の非0係数の個数がしきい値未満であると判定することができる。この例において、ビデオエンコーダ20は、部分集合0および部分集合1内で最初に識別される変換が、それぞれ左変換および右変換として使用されるべきであることを示す情報をシグナリングしなくてもよい。他の場合において、部分集合0(または部分集合1)内で最初に識別される変換が、左変換(または右変換)として使用されない場合に、結果の係数ブロック内の非0係数の個数は、しきい値未満である。この例において、ビデオエンコーダ20は、部分集合0および部分集合1内で識別される変換が、左変換および右変換として使用され得ないという制約を追加する。
【０１６４】
ビデオデコーダ30は、イントラ予測モードを受信し、ビデオエンコーダ20と同様に、イントラ予測モードに基づいて、変換部分集合0および変換部分集合1がそれぞれ左変換および右変換に関して選択されるべきであると判定することができる。また、係数値を示す情報から係数ブロックを生成した後に、ビデオデコーダ30は、係数ブロック内の非0係数の個数がしきい値未満であることも判定することができる。ビデオデコーダ30は、非0係数の個数がしきい値未満なので、部分集合0内の最初に識別される変換および部分集合1内の最初に識別される変換がそれぞれ左変換および右変換として使用されるべきであることを、この情報をビデオエンコーダ20から受信せずに判定することができる。
【０１６５】
上の例において、変換部分集合は、16個の変換(すなわち、8つのDCTおよび8つのDST)から形成される。しかしながら、本開示において説明される技法は、それに限定されない。変換の追加の例は、KLT変換を含む。したがって、変換部分集合は、8つのDCT、8つのDST、KLT変換、および他の変換の例からの1つまたは複数の変換を含むことができる。説明のしやすさだけのために、8つのDCTおよび8つのDSTに関する例が説明される。
【０１６６】
要約として、本開示において説明される例のいくつかにおいて、3つ以上の候補変換からの事前選択が、変換の部分集合を定式化するために実行され、現在のTUに関して使用されるべき最終的な変換が、変換の部分集合から選択される。たとえば、変換の部分集合は、左変換の部分集合および/または右変換の部分集合を合成することができる。変換の部分集合(または左変換の部分集合および右変換の部分集合)を定式化するための事前選択は、イントラ予測モード、RQT深度、量子化された係数、その他などの既に復号された情報によって判定され得る。
【０１６７】
変換の部分集合の個数は、小さい整数、たとえば1、2、3、または4に制限され得、変換の異なる部分集合は、異なるタイプの変換を含む。一例において、それぞれが2つの変換を含む変換の3つの部分集合が作成される。所与のイントラ予測モードに基づいて、左変換の部分集合が、3つの部分集合のうちの1つにセットされ、右変換の部分集合も、3つの部分集合のうちの1つ(左変換の部分集合と同一であってもなくてもよい)にセットされる。一例として、変換の3つの部分集合は、{DST-VII, DCT-VIII}、{DST-VII, DST-I}、および{DST-VII, DCT-V}である。左変換の部分集合または右変換の部分集合のいずれかが、上の3つの部分集合のうちの1つになることができる。したがって、様々なイントラ予測モードは、左変換および右変換の部分集合の9つまでの異なる組合せに対応することができる。その代わりにまたはそれに加えて、左変換の部分集合または右変換の部分集合は、1つの変換だけを含む。その代わりにまたはそれに加えて、左変換の部分集合と右変換の部分集合との両方が、1つの変換だけを含むことができる。
【０１６８】
上で説明した例において、変換部分集合および変換部分集合内で識別される変換は、TUサイズにかかわりなく同一とすることができ、変換部分集合内の変換の個数は、異なるイントラ予測モードに関して同一とすることができる。しかしながら、本開示において説明される技法は、それに限定されない。
【０１６９】
いくつかの例において、異なるTUサイズに関して、左/右変換の部分集合内の変換の個数は、異なるものとすることができ、変換の通常の個数は、2、3、および4とすることができるが、これに限定はされない。異なるイントラ予測モードに関して、左/右変換の部分集合内の変換の個数は、異なるものとすることができ、変換の通常の個数は、2、3、および4とすることができるが、これに限定はされない。
【０１７０】
上で説明したように、変換の部分集合が事前に選択される時に、使用されるべき最終的な変換は、変換の部分集合へのインデックスによってシグナリングされ得る。左変換の部分集合(または右変換の部分集合)が、2つ以上の変換を含む時に、左変換の部分集合(または右変換の部分集合)に属する変換へのインデックスが、シグナリングされる。これは、左変換または右変換の部分集合の個数が1と等しい時に、変換のインデックスをシグナリングする必要がないことを意味する。
【０１７１】
上の例は、ビデオエンコーダ20およびビデオデコーダ30が、変換部分集合を定式化するために事前選択することができる事例について説明した。しかしながら、本開示において説明される例は、それに限定されない。その代わりにまたはそれに加えて、変換の部分集合を定式化するために事前選択を行う必要がない場合があり、2つ以上の候補変換(完全な集合として)への1つのインデックスが、左変換または右変換を示すために直接にシグナリングされる。たとえば、ビデオエンコーダ20において、完全な集合内の変換のうちの一部だけがテストされ得、他の変換は、エンコーダ複雑さを低減するためにテストされないという制約が、導入され得る。どの変換を選択すべきかと変換のインデックスとは、イントラ予測モードまたは他の情報に依存するものとすることができる。
【０１７２】
いくつかの例において、TUごとに、左変換(右変換)に関して、ビデオエンコーダ20およびビデオデコーダ30が、候補変換の部分集合から左変換および右変換を選択できることが、制約され得る。たとえば、変換の唯一の部分集合は、DST-VII、DCT-VIII、およびDCT-IIを含み、TUごとの左変換は、必ず{DST-VII, DCT-VIII, DCT-II}から選択され、TUごとの右変換も、必ず{DST-VII, DCT-VIII, DCT-II}から選択される。
【０１７３】
上で説明したように、本開示において説明される例の技法は、イントラ予測とインター予測との両方に適用可能である可能性がある。HEVCにおいて、インター予測から生成された変換ブロックに関して、DCT-IIベースの変換だけが使用可能であった。いくつかの例において、HEVCにおける従来のDCT-IIベースの変換に加えて、インター予測モードによって生成される残差ブロックごとに、ビデオエンコーダ20およびビデオデコーダ30は、左変換の部分集合および右変換の部分集合が作成されることに加えて、DCT族およびDST族または他の変換、たとえばKLTからの2つ以上の候補変換方法から変換を選択することができる。イントラ予測に関する上の例と同様に、ビデオエンコーダ20は、TUごとに左変換の部分集合へのインデックスおよび右変換の部分集合へのインデックスをシグナリングする(たとえば、ビットストリーム内で生成する)ことができ、ビデオデコーダ30は、左変換および右変換を判定するために、TUごとに左変換の部分集合へのインデックスおよび右変換の部分集合へのインデックスをビットストリーム内で受信することができる。
【０１７４】
一例として、2つの変換、たとえばDST-VIIおよびDCT-VIIIが、左変換の部分集合および右変換の部分集合内に置かれる。これらの部分集合の各々への1ビットインデックスが、現在のTUの最終的な左変換および右変換を判定する。部分集合は、{DST-VII, DCT-VIII}または{DST-VIII, DCT-VII}のいずれかとすることができる。
【０１７５】
その代わりにまたはそれに加えて、3つ以上の候補変換からの事前選択が、変換の部分集合を定式化するために実行され、現在のTUに関して使用されるべき最終的な変換が、変換の部分集合から選択される。たとえば、変換の部分集合(または左変換の部分集合および右変換の部分集合)を定式化するための事前選択は、属するPUに対する現在のTUの相対位置すなわち、現在のTUが上境界、左境界、右境界、下境界、または属するPUの他の位置のどれに配置されているのかによって判定され得る。
【０１７６】
一例において、それぞれが2つの変換を含む変換の3つの部分集合が作成される。属するPUに対する現在のTUの相対位置に基づいて、左変換の部分集合が、3つの部分集合のうちの1つにセットされ、右変換の部分集合も、3つの部分集合のうちの1つ(左変換の部分集合と同一であってもなくてもよい)にセットされる。その代わりにまたはそれに加えて、左変換の部分集合または右変換の部分集合は、1つの変換だけを含む。その代わりにまたはそれに加えて、左変換の部分集合と右変換の部分集合との両方は、1つの変換だけを含むことができる。
【０１７７】
上の例において、上で説明したように、ビデオエンコーダ20およびビデオデコーダ30は、CUのTUごとに変換部分集合を選択し、次いで、TUごとに左変換および右変換を判定することができる。この例において、どの変換を使用すべきかの判定は、TUレベルにあると考えられる。しかしながら、本開示において説明される例は、それに限定されない。
【０１７８】
いくつかの場合において、ビデオエンコーダ20は、CUのTUごとの左変換および右変換が、同一のデフォルト変換(たとえば、一例としてDCT-IIであるが、他の変換タイプも可能である)でなければならないと判定することができる。また、左変換のデフォルト変換および右変換のデフォルト変換がある場合があり、または、左変換のデフォルト変換および右変換のデフォルト変換が同一である場合がある。以下の説明において、「デフォルト変換」という用語は、左変換のデフォルト変換および右変換のデフォルト変換が異なる場合と、左変換のデフォルト変換および右変換のデフォルト変換が同一である場合との両方を含むと解釈されなければならない。たとえば、左変換のデフォルト変換および右変換のデフォルト変換(たとえば、異なる場合または同一の場合)が、事前に選択され、ビデオエンコーダ20およびビデオデコーダ30にとって同一である場合がある。
【０１７９】
ビデオエンコーダ20が、CUの各TUが同一のデフォルト変換を有しなければならないと判定する場合に、ビデオエンコーダ20は、それを示す情報をシグナリングする(たとえば、それを示す情報をビデオビットストリーム内で生成する)ことができる。この例において、ビデオエンコーダ20は、シグナリングされる必要がある情報の量を低減するために変換部分集合内へのインデックスをシグナリングしないものとすることができる。というのは、ビデオデコーダ30が、受信された情報に基づいてCUのTUごとにデフォルト変換が使用されるべきであると判定できるからである。
【０１８０】
一例として、ビデオエンコーダ20は、CUの各TUが同一のデフォルト変換を適用すべきであるかどうかを示すフラグをシグナリングする(たとえば、ビットストリーム内で生成する)ことができる。このフラグが第1の値(たとえば、デジタルハイ)である場合に、CUの各TUは、同一のデフォルト変換を適用された。このフラグが第2の値(たとえば、デジタルロウ)である場合に、CUの少なくとも1つのTUは、デフォルト変換以外の変換を適用された。CUの少なくとも1つのTUが、異なる変換を適用された場合において、上で説明したように、ビデオエンコーダ20は、必要な場合に(たとえば、しきい値を超える非0係数)、変換部分集合を選択し、変換部分集合内のインデックスをシグナリングすることができる。CUの各TUが同一のデフォルト変換を適用された場合において、ビデオデコーダ30が既にどの変換を使用すべきかを判定できるので、ビデオエンコーダ20は、変換部分集合のいずれのインデックスもシグナリングしないものとすることができる。
【０１８１】
ビデオデコーダ30は、CUの各TUが同一のデフォルト変換を適用すべきかどうかを示すフラグを受信することができる。このフラグが第1の値を有する場合に、ビデオデコーダ30は、変換部分集合が選択される必要がなく、変換部分集合内へのインデックスがビットストリームから構文解析される(たとえば、受信される)必要がないと判定することができる。この場合において、ビデオデコーダ30は、CUの各係数ブロックにデフォルト変換を適用することができる。このフラグが第2の値を有する場合に、ビデオデコーダ30は、変換部分集合が選択されなければならないと判定し、インデックスが受信されなければならないかどうかを判定し(たとえば、非0係数の個数に基づいて)、インデックスが受信されなければならないとの判定に基づいて、選択された変換部分集合内のインデックスを受信することができる。
【０１８２】
上の例において、各TUが同一のデフォルト変換を使用すべきであるかどうかを示すフラグは、CUレベルにある(たとえば、CUの各TUが同一のデフォルト変換を使用することを示す)。いくつかの例において、このフラグは、CUレベルではなく、CTUレベルまたはPUレベルにあるものとすることができる。
【０１８３】
たとえば、ビデオエンコーダ20は、あるブロックのすべての変換ブロックが同一の変換を使用して変換されるのかどうかを示すフラグをシグナリングする(たとえば、ビットストリーム内で生成する)ことができる。ブロックのすべての変換ブロックが同一の変換を使用して変換されるのではないことを示すフラグを受信することに応答して、ビデオデコーダ30は、上で説明したように、変換部分集合を選択し、選択された変換内のインデックスを判定することができる。ブロックのすべての変換ブロックが同一の変換を使用して変換されることを示すフラグを受信することに応答して、ビデオデコーダ30は、そのブロックの変換ブロックの各々についてその変換を使用することができる。この例において、「ブロック」は、少数の例として、CTU、CU、またはPUのうちの1つとすることができる。
【０１８４】
要約として、TUごとに使用されるべき変換のシグナリングは、たとえば上で説明したように、現在のCUが追加の変換を利用する時にTUレベルにおいて行われ得る。たとえば、ビデオエンコーダ20は、CU内のTUが追加の変換を用いて(たとえば、HEVC内の変換以外の変換を使用して)コーディングされるのかどうかを示す1つのフラグをCUごとに送信することができる。その代わりにまたはそれに加えて、そのような指示は、LCUレベル(CTUレベル)、CUレベル、PUレベル、TU、または任意の他のブロックレベルにおいてシグナリングされ得る。
【０１８５】
フラグが、CU内のTUのどれもが追加の変換を用いてコーディングされないことを示す時に、すべてのTUが、1つのデフォルト変換を用いてコーディングされる。一例において、デフォルト変換は、DCT-IIである。その代わりにまたはそれに加えて、デフォルト変換は、イントラ/インターモード、イントラ予測モード、ブロックサイズ、PU内のTU位置、または現在のCUの任意の他の統計に依存することができる。たとえば、上で説明したように、ビデオエンコーダ20およびビデオデコーダ30は、同一のデフォルト変換を判定することができ、それに関してデフォルト変換を使用すべき条件は、イントラ/インターモード、イントラ予測モード、ブロックサイズ、PU内のTU位置、または現在のTUの任意の他の統計などの要因に基づくものとすることができる。この形で、デフォルト変換を使用することによって、シグナリングされる必要がある情報の量が、低減され得る。
【０１８６】
加えて、指示は、異なる階層内に存在することができる。たとえば、ビデオエンコーダ20は、LCU(CTU)レベルにおいて1ビットフラグをまずシグナリングし(たとえば、ビットストリーム内で生成し)、この1ビットフラグが0である場合に、ビデオエンコーダ20およびビデオデコーダ30は、CUごとにDCT-IIだけを適用することができ、そうではなく、この1ビットフラグが1である場合に、ビデオエンコーダ20は、CU内のTUが複数の変換またはデフォルト変換のみのどちらを使用できるのかを指定する別のフラグをCUレベルでシグナリングすることができる。
【０１８７】
この例において、ビデオデコーダ30は、特定の階層レベル内のすべてのTUがデフォルト変換を使用するのかどうかを各階層レベルにおいて判定することができる。たとえば、CTUレベルでのフラグが、CTUのすべてのTUが同一のデフォルト変換を使用すべきであることを示す場合に、ビデオデコーダ30は、CTUのすべてのTUに関して同一のデフォルト変換を使用することができる。CTUレベルでのフラグが、CTUのすべてのTUが同一のデフォルト変換を使用すべきではないことを示す場合に、ビデオデコーダ30は、上で説明したように、変換部分集合を選択し、CTUのTUごとに変換を判定することができる。
【０１８８】
いくつかの場合において、CTUレベルにおいて停止し、TUごとに変換を判定するのではなく、CTUのCUの各々について別のフラグがあってもよい。たとえば、ビデオデコーダ30は、CUのすべてのTUが同一のデフォルト変換を使用しまたは同一のデフォルト変換を使用しないのどちらであるのかを示す、CTUのCUごとのフラグを受信することができる。CUに関して、ビデオデコーダ30が、CUのすべてのTUが同一のデフォルト変換を使用することを示すフラグを受信する場合に、ビデオデコーダ30は、デフォルト変換を適用することができる。CUに関して、ビデオデコーダ30が、CUのすべてのTUが同一のデフォルト変換を使用するのではないことを示すフラグを受信する場合に、ビデオデコーダ30は、上で説明したように、変換部分集合を選択し、CUのTUごとに変換を判定することができる。
【０１８９】
いくつかの場合において、CUレベルにおいて停止し、TUごとに変換を判定するのではなく、CUのPUの各々について別のフラグがあってもよい。たとえば、ビデオデコーダ30は、PUのすべてのTUが同一のデフォルト変換を使用しまたは同一のデフォルト変換を使用しないのどちらであるのかを示す、CUのPUごとのフラグを受信することができる。PUに関して、ビデオデコーダ30が、PUのすべてのTUが同一のデフォルト変換を使用することを示すフラグを受信する場合に、ビデオデコーダ30は、デフォルト変換を適用することができる。PUに関して、ビデオデコーダ30が、PUのすべてのTUが同一のデフォルト変換を使用するのではないことを示すフラグを受信する場合に、ビデオデコーダ30は、上で説明したように、変換部分集合を選択し、PUのTUごとに変換を判定することができる。
【０１９０】
その代わりにまたはそれに加えて、さらに、CUのオーバーラップブロック動き補償(OBMC)フラグがオフとしてシグナリングされる時に、1つのデフォルト変換だけが適用されるのかどうかを示す1ビットフラグは、現在のCUに関してシグナリングされず、デフォルト変換(たとえば、DCT-II)が適用されることを示すデフォルト値(たとえば、0)として推論される。その代わりにまたはそれに加えて、1つのデフォルト変換だけが適用されるのかどうかを示す、1つのブロックの1ビットフラグのCABACコンテキストモデリングは、OBMCが現在のスライスに関して許可される(たとえば、OBMCフラグの値に依存する)時に現在のブロックのOBMCフラグに依存する。
【０１９１】
一例において、OBMCフラグ(暗黙のうちに導出されるまたは明示的にシグナリングされるのいずれか)が真(すなわち、1と等しい)時に、ビデオエンコーダ20およびビデオデコーダ30は、1ビットフラグのCABAC符号化またはCABAC復号に関してコンテキストモデルの1つのセットを使用することができる。OBMCフラグが偽である(すなわち、0と等しい)時に、コンテキストモデルの別のセットが、1ビットフラグのコーディングに関して使用され得る。その代わりにまたはそれに加えて、さらに、コンテキストモデルの2つのセットの初期化された確率は、異なるものとすることができる。その代わりにまたはそれに加えて、1つのデフォルト変換だけが適用されるかどうかを示す、1つのブロックの1ビットフラグのCABACコンテキストモデリングは、空間的に隣接するブロック(たとえば、左の隣接するブロックおよび/または上の隣接するブロック)または時間的に隣接するブロック(たとえば、参照ピクチャ内の同一位置に配置されたブロック)の対応する1ビットフラグの値に依存する。
【０１９２】
CUが、追加の変換を使用可能にされる(たとえば、HEVCの制限された選択より多数を意味する)時に、TUごとに、ビデオエンコーダ20は、シグナリングすることができ、ビデオデコーダ30は、上で説明したように、(集合または部分集合の)候補変換からの変換へのインデックスを受信することができる。その代わりにまたはそれに加えて、ビデオエンコーダ20は、そのような情報をシグナリングすることができ、ビデオデコーダ30は、LCUレベル、CUレベル、PUレベル、または任意の他のブロックレベルにおいてそのような情報を受信することができる。ビデオエンコーダ20が、インジケータがLCUレベル、CUレベル、PUレベル、または任意の他のブロックレベルにあることをシグナリングする時に、そのレベル内に含まれるすべてのTUは、変換の同一の対を使用することができる。
【０１９３】
たとえば、ビデオエンコーダ20およびビデオデコーダ30は、上で説明したように変換部分集合を選択することができる(たとえば、イントラ予測モードに基づいて、またはインター予測のTUのロケーションに基づいて)。いくつかの例において、変換ブロックごとに、ビデオエンコーダ20は、インデックスをシグナリングすることができ、ビデオデコーダ30は、変換ブロックごとにインデックスを受信することができる。しかしながら、いくつかの例において、変換ブロックごとにインデックスを受信するのではなく、ビデオエンコーダ20は、少数の例としてCTUのすべてのTU、CUのすべてのTU、またはPUのすべてのTUに関する左変換の1つのインデックスおよび右変換の1つのインデックスをシグナリングすることができる。この例において、ビデオデコーダ30がTUの右変換および左変換に関して選択する変換部分集合ごとに、ビデオデコーダ30は、ブロックの(たとえば、CTU、CU、またはPUの)TUのすべてのインデックスによって識別される変換を適用することができる。
【０１９４】
言い換えれば、いくつかの場合において、変換部分集合内へのインデックスは、より「大域的」と考えられ得る。たとえば、ビデオエンコーダ20は、左変換および右変換のインデックスをシグナリングすることができる。この場合において、インデックスは、インデックスが、選択される特定の変換部分集合にかかわりなく、あるブロックのTUごとに同一であり、ブロックが、CTU、CU、またはPUであるという意味において大域的とすることができる。そのような例において、ビデオデコーダ30は、これらの大域インデックスから、選択された変換部分集合からの左変換および右変換を判定することができる。たとえば、ビデオデコーダ30は、変換ブロックごとの選択された変換部分集合ごとにインデックスを構文解析するのではなく、むしろ、大域インデックスに基づいて、ブロック(たとえば、CTU、CU、またはPU)のすべての変換ブロックの変換を識別することができる。
【０１９５】
上で説明したように、いくつかの例において、ビデオエンコーダ20は、選択された変換部分集合内へのインデックスをシグナリングしなくてもよい。たとえば、ある種のTUに関して、追加変換のシグナリングは、残差信号のエネルギーが制限される場合、たとえば、現在のTUに関して送信される非0係数がない場合に、スキップされ得る。追加変換シグナリングの同様のスキップは、LCU、CU、PU、または任意の他のブロックレベルにあてはまる可能性がある。
【０１９６】
その代わりにまたはそれに加えて、あるブロックレベルにあるインジケータは、そのあるブロックレベルにおいて送信される非0係数の総数、総絶対和、または二乗された値の和が、所与のしきい値より小さい場合に、スキップされ得る。言い換えれば、ビデオエンコーダ20は、係数ブロックの非0係数の総数、総絶対和、または二乗された値の和がしきい値より小さい場合に、選択された変換部分集合内へのインデックスをシグナリングしなくてもよい。そのような例において、ビデオデコーダ30が、非0係数の総数、総絶対和、または二乗された値の和が所与のしきい値より小さいと判定する場合に、ビデオデコーダ30は、選択された変換部分集合内へのインデックスがビットストリームから受信されない(たとえば、構文解析されない)と判定することができる。
【０１９７】
一例において、非0係数の総数のしきい値は、2である。その代わりにまたはそれに加えて、非0係数の総数のしきい値は、異なるブロックサイズまたは異なるイントラ予測モードに関して異なるものとすることができる。
【０１９８】
いくつかの例において、LCU、CU、PU、またはブロックのサイズが、事前に定義されたしきい値超もしくは未満であるか、または所与のしきい値範囲内にある時に、ビデオエンコーダ20は、インジケータ(たとえば、変換部分集合内へのインデックス)のシグナリングをスキップすることができ、ビデオエンコーダ20およびビデオデコーダ30は、デフォルト変換タイプだけを適用することができる。一例において、デフォルト変換は、DCT-IIである。さらに、CUサイズが32×32より大きい時に、ビデオエンコーダ20は、インジケータをシグナリングしなくてもよく、ビデオエンコーダ20およびビデオデコーダ30は、TUごとにDCT-IIだけを適用することができる。
【０１９９】
ビデオエンコーダ20およびビデオデコーダ30は、たとえば固定長符号、切断単項符号(truncated unary code)、または指数ゴロム符号(exponential Golomb code)を使用して、インジケータ(たとえば、変換部分集合内へのインデックス)を2進化することができる。ビデオエンコーダ20およびビデオデコーダ30は、コンテキストとともにCABACを使用してインジケータをエントロピーコーディングする(たとえば、それぞれ符号化するまたは復号する)ことができ、ビンごとに、1つのコンテキストが適用される。一例において、コンテキストモデルは、ビンインデックスに基づいて選択される。別の例において、さらに、イントラ予測モード、TUサイズ、またはTU深度も、コンテキストモデルを選択する時に考慮される。その代わりにまたはそれに加えて、ビンの一部が、コンテキストモデルを用いてコーディングされ、残りのビンは、バイパスモードを用いてコーディングされる。その代わりにまたはそれに加えて、インジケータは、バイパスコーディングされ得る、すなわち、コンテキストモデリングは適用されない。
【０２００】
例の技法において、ビデオエンコーダ20は、ビットストリーム内で様々な情報をシグナリングすることができ、ビデオデコーダ30は、そのような情報をビットストリームから受信することができる。ビデオエンコーダ20は、そのような情報をシグナリングすることができ、ビデオデコーダ30は、そのような情報を異なるロケーションから受信することができる。
【０２０１】
一例として、複数の変換に関する構文が、高水準構文内に存在することができる。スライスヘッダすら含む、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、または任意の他の場所内で使用される2つ以上の候補変換から選択される変換に関して上で説明したように、ビデオエンコーダ20は、候補変換の個数をシグナリングする(たとえば、ビットストリーム内で生成する)ことができ、ビデオデコーダ30は、候補変換の個数を受信することができる。スライスヘッダ、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、または任意の他の場所における3つ以上の候補変換からの事前選択に関して上で説明したように、ビデオエンコーダ20は、各部分集合内の候補変換の個数をシグナリングする(たとえば、ビットストリーム内で生成する)ことができ、ビデオデコーダ30は、各部分集合内の候補変換の個数を受信することができる。
【０２０２】
フラグまたはインデックスは、上で言及した複数の変換がブロックレベルにおいて適用されるかどうかを示すために、スライスヘッダ、PPS、SPS、または任意の他の場所においてシグナリングされ得る。上で説明したように、このフラグまたはインデックスの1つの専用の値は、すべてのTUが1つのデフォルト変換を用いてコーディングされることを示すことができる。その代わりにまたはそれに加えて、このフラグまたはインデックスの1つの専用の値は、1つまたは複数のフラグ/インデックスがブロックレベルにおける変換選択のためにブロックレベルにおいてシグナリングされ得ることを示すことができる。また、複数の変換がそれに関して適用されないブロックのサイズ(サイズが、シグナリングされたサイズより大きいか、シグナリングされたサイズより小さいか、2つのシグナリングされたサイズの範囲内にある時)が、パラメータセット内、たとえば、ピクチャパラメータセットまたはシーケンスパラメータセット内に存在することができる。
【０２０３】
繰り返すと、上の説明は、「変換」という用語を利用する。しかしながら、ビデオエンコーダ20が、残差ブロックから変換係数値の変換ブロックを生成するのに変換を利用することを理解されたい。その一方で、ビデオデコーダ30は、変換ブロックから残差値の残差ブロックを生成するのに逆変換を利用する。したがって、上の説明において、変換の説明が、ビデオデコーダ30に対して同等に適用可能であるが、ビデオデコーダ30が逆変換を利用することを理解されたい。
【０２０４】
図5は、本開示の技法を実施することのできる例のビデオエンコーダ20を示すブロック図である。図5は説明のために提供され、広く例示されるとともに本開示において説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、HEVCコーディングの文脈においてビデオエンコーダ20について説明する。しかしながら、本開示の技法は、他のコーディング標準規格または方法に適用可能とすることができる。たとえば、ビデオエンコーダ20は、HEVCにおいて提供される制限されたオプションより多数の変換を変換ブロックに対して適用するように構成され得る。
【０２０５】
図5の例において、ビデオエンコーダ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は、四分木区分を実行して、CTUのCTBを次第に小さくなるブロックに分割することができる。より小さいブロックは、CUのコーディングブロックとすることができる。たとえば、予測処理ユニット100は、CTUに関連付けられたCTBを4つの等しいサイズのサブブロックに区分し、サブブロックのうちの1つまたは複数を4つの等しいサイズのサブブロックに区分するなどを行うことができる。
【０２０８】
ビデオエンコーダ20は、CUの符号化された表現(すなわち、コーディングされたCU)を生成するためにCTUの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の動き推定ユニットは、参照ピクチャのリスト(たとえば、「RefPicList0」)内の参照ピクチャからPUの参照領域を検索することができる。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の双方向インター予測を実行するために、動き推定ユニットは、RefPicList0内の参照ピクチャからPUの参照領域を検索することができ、RefPicList1内の参照ピクチャからPUの別の参照領域を検索することもできる。動き推定ユニットは、参照領域を含む参照ピクチャの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は、インター予測処理ユニット120によって生成されたPUの予測データまたはイントラ予測処理ユニット126によって生成されたPUの予測データの中からCUのPUの予測データを選択することができる。いくつかの例において、予測処理ユニット100は、予測データのセットのレート/ひずみメトリックに基づいてCUのPUの予測データを選択する。選択された予測データの予測ブロックは、本明細書において選択された予測ブロックと呼ばれる場合がある。
【０２１６】
本開示において説明される例において、技法は、ビデオブロックがイントラ予測されまたはインター予測される時に適用可能である。たとえば、ブロックがイントラ予測される時に、イントラ予測モードが、変換部分集合を判定するのに使用され得る。ブロックがインター予測される時に、その位置が、変換部分集合を判定するのに使用され得る。したがって、例の技法は、イントラ予測モードのいずれかでイントラ予測されまたは単一方向もしくは双方向においてインター予測されるビデオブロックに適用する。
【０２１７】
さらに、例の技法は、イントラ予測またはインター予測に限定されず、イントラブロックコピー(IBC:intra-block copy)モードにも拡張され得る。IBCモードにおいて、予測ブロックは、符号化されるビデオブロックと同一のピクチャ内にあり、ブロックベクトルによって識別される。IBCモードにおいて、変換部分集合は、少数の例として、ビデオブロックの位置、予測ブロックの位置、またはブロックベクトルから選択され得る。
【０２１８】
残差生成ユニット102は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックと、CUのPUの選択された予測ルーマブロック、選択された予測Cbブロック、および選択された予測Crブロックとに基づいて、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成することができる。たとえば、残差生成ユニット102は、残差ブロック内の各サンプルが、CUのコーディングブロック内のサンプルとCUのPUの対応する選択された予測ブロック内の対応するサンプルとの間の差と等しい値を有するように、CUの残差ブロックを生成することができる。
【０２１９】
変換処理ユニット104は、CUに関連付けられた残差ブロックをCUのTUに関連付けられた変換ブロックに区分するために四分木区分を実行することができる。したがって、TUは、ルーマ変換ブロックおよび2つのクロマ変換ブロックに関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づいても基づかなくてもよい。「残差四分木」(RQT)と呼ばれる四分木構造が、領域の各々に関連付けられたノードを含むことができる。CUのTUは、RQTの葉ノードに相当することができる。
【０２２０】
変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUのTUごとに変換係数ブロックを生成することができる。変換処理ユニット104は、TUに関連付けられた変換ブロックに様々な変換を適用することができる。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向変換、または概念的に類似する変換を、変換ブロックに適用することができる。いくつかの例において、変換処理ユニット104は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてよい。
【０２２１】
本開示において説明される技法において、変換処理ユニット104は、TUの変換ブロックに左変換および右変換を適用することができる。いくつかの例において、予測処理ユニット100は、本開示において説明される技法を使用して、適用すべき変換を判定することができる。
【０２２２】
たとえば、予測処理ユニット100は、複数の変換部分集合を判定することができ、各部分集合は、1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は、複数の候補変換を識別する。候補変換は、異なる変換タイプを有し、いくつかの例において、予測処理ユニット100は、符号化されているビデオブロックのサイズに基づいて複数の変換部分集合を判定する。
【０２２３】
いくつかの例において、ビデオデータメモリ101は、複数の変換部分集合を記憶し、予測処理ユニット100は、記憶された変換部分集合から複数の変換部分集合を判定することができる。いくつかの例において、ビデオデータメモリ101は、変換のすべてを記憶することができ、予測処理ユニット100は、事前に定義された形において変換部分集合を構成することができる。候補変換の例は、DCT-IからDCT-VIII、DST-IからDST-VIII、KLT変換、および類似物を含む。いくつかの例において、複数の変換部分集合は、3つ以上の変換部分集合を含む。
【０２２４】
予測処理ユニット100は、ビデオデータのビデオブロックの現在の変換ブロックの左変換の複数の変換部分集合から第1の変換部分集合を選択し、ビデオデータのビデオブロックの現在の変換ブロックの右変換の複数の変換部分集合から第2の変換部分集合を選択することができる。現在の変換ブロックは、変換処理ユニット104が生成し、変換処理ユニット104がそれに対して変換を適用する変換ブロックとすることができる。
【０２２５】
予測処理ユニット100は、選択された第1の変換部分集合から左変換を判定し、選択された第2の変換部分集合から右変換を判定することができる。たとえば、予測処理ユニット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の変換部分集合内のインデックスをシグナリングさせないものとすることができる。
【０２３０】
いくつかの例において、第1の変換部分集合または第2の変換部分集合のうちの少なくとも1つは、離散コサイン変換(DCT)-II変換および離散サイン変換(DST)-VII変換とは異なる変換を含む。いくつかの例において、第1の変換部分集合および第2の変換部分集合は、異なる変換を含む(たとえば、第1の変換部分集合内の少なくとも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は、CUに関連付けられたコーディングブロック内のブロッキングアーティファクトを低減するために、1つまたは複数のデブロッキング動作を実行することができる。フィルタユニット114が再構成されたコーディングブロックに対して1つまたは複数のデブロッキング動作を実行した後に、復号されたピクチャバッファ116は、再構成されたコーディングブロックを記憶することができる。インター予測処理ユニット120は、他のピクチャのPUに対してインター予測を実行するために、再構成されたコーディングブロックを含む参照ピクチャを使用することができる。加えて、イントラ予測処理ユニット126は、CUと同一のピクチャ内の他のPUに対してイントラ予測を実行するために、復号されたピクチャバッファ116内の再構成されたコーディングブロックを使用することができる。
【０２３４】
エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受信することができる。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロック(たとえば、ビデオブロックを再構成するのに使用される現在の係数ブロックの係数を示す情報)を受信することができ、予測処理ユニット100から構文要素(たとえば、第1および第2の変換部分集合内へのインデックス)を受信することができる。エントロピー符号化ユニット118は、エントロピー符号化されたデータを生成するために、データに対して1つまたは複数のエントロピー符号化動作を実行することができる。たとえば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変長-可変長(V2V)コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行することができる。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化されたデータを含むビットストリームを出力することができる。たとえば、ビットストリームは、CUのRQTを表すデータを含むことができる。
【０２３５】
例の技法において、予測処理ユニット100は、予測ブロックを判定し、エントロピー符号化ユニット118が出力するビデオビットストリーム内に、予測ブロックに基づくビデオブロックの予測モードを示す情報を生成する。予測モードは、ビデオブロックがイントラ予測またはインター予測のどちらを行われるのかを示す。たとえば、予測ブロックは、ビデオブロックがイントラ予測されることに基づくビデオブロックと同一のピクチャ内のブロック、または、ビデオブロックがインター予測されることに基づくビデオブロックを含むピクチャとは異なるピクチャ内のブロックである。残差生成ユニット102は、ビデオブロックと予測ブロックとの間の残差として現在の変換ブロックを判定することができる。
【０２３６】
図6は、本開示の技法を実施するように構成された例のビデオデコーダ30を示すブロック図である。図6は説明のために提供され、広く例示されるとともに本開示において説明されるような技法を限定するものではない。説明のために、本開示は、HEVCコーディングの文脈においてビデオデコーダ30について説明する。しかしながら、本開示の技法は、他のコーディング標準規格または方法に適用可能とすることができる。
【０２３７】
ビデオデコーダ30は、本開示において説明される様々な例による技法を実行するように構成され得るデバイスの例を表す。図6の例において、ビデオデコーダ30は、エントロピー復号ユニット150、ビデオデータメモリ151、予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、フィルタユニット160、および復号されたピクチャバッファ162を含む。予測処理ユニット152は、動き補償ユニット164およびイントラ予測処理ユニット166を含む。他の例において、ビデオデコーダ30は、より多数、より少数、または異なる機能構成要素を含むことができる。
【０２３８】
ビデオデータメモリ151は、ビデオデコーダ30の構成要素によって復号される、符号化されたビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ151内に記憶されるビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線ネットワーク通信もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ151は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングされたピクチャバッファ(CPB)を形成することができる。復号されたピクチャバッファ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は、復号されているビデオブロックのサイズに基づいて複数の変換部分集合を判定する。
【０２４５】
いくつかの例において、ビデオデータメモリ151は、複数の変換部分集合を記憶し、予測処理ユニット152は、記憶された変換部分集合から複数の変換部分集合を判定することができる。いくつかの例において、ビデオデータメモリ151は、変換のすべてを記憶することができ、予測処理ユニット152は、事前に定義された形において変換部分集合を構成することができる。いくつかの例において、予測処理ユニット152は、変換部分集合を識別する情報をビットストリームから受信することができる。候補変換の例は、DCT-IからDCT-VIII、DST-IからDST-VIII、KLT変換、および類似物を含む。いくつかの例において、複数の変換部分集合は、3つ以上の変換部分集合を含む。
【０２４６】
予測処理ユニット152は、ビデオデータの現在の係数ブロックの左変換の複数の変換部分集合から第1の変換部分集合を選択し、ビデオデータの現在の係数ブロックの右変換の複数の変換部分集合から第2の変換部分集合を選択することができる。予測処理ユニット152は、選択された第1の変換部分集合から左変換を判定し、選択された第2の変換部分集合から右変換を判定することができる。
【０２４７】
逆変換処理ユニット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ブロックを生成することができる。
【０２５０】
本開示において説明される例において、技法は、ビデオブロックがイントラ予測されまたはインター予測される時に適用可能である。たとえば、ブロックがイントラ予測される時に、イントラ予測モードが、変換部分集合を判定するのに使用され得る。ブロックがインター予測される時に、その位置が、変換部分集合を判定するのに使用され得る。したがって、例の技法は、イントラ予測モードのいずれかでイントラ予測されまたは単一方向もしくは双方向においてインター予測されるビデオブロックに適用する。
【０２５１】
さらに、例の技法は、イントラ予測またはインター予測に限定されず、イントラブロックコピー(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)を含む。
【０２５９】
いくつかの例において、第1の変換部分集合または第2の変換部分集合のうちの少なくとも1つは、離散コサイン変換(DCT)-II変換および離散サイン変換(DST)-VII変換とは異なる変換を含む。いくつかの例において、第1の変換部分集合および第2の変換部分集合は、異なる変換を含む(たとえば、第1の変換部分集合内の少なくとも1つの変換は、第2の変換部分集合内にない、またはその逆)。
【０２６０】
例の技法において、ビデオデコーダ30は、予測モード(たとえば、ビデオブロックがイントラ予測されたのかインター予測されたのか)を示す情報をビットストリームから受信し、現在の係数ブロックの係数を示す情報をビットストリームから受信することができる。予測処理ユニット152は、予測モードに基づいて予測ブロックを判定することができ、逆変換ユニット156または予測処理ユニット152は、係数を示す受信された情報に基づいて係数ブロックを構成することができる。予測モードは、インター予測モードまたはイントラ予測モードのうちの1つであり、現在の変換ブロックは、ビデオブロックと予測ブロックとの残差である。
【０２６１】
上で説明した技法は、ビデオエンコーダ20(図4および図5)および/またはビデオデコーダ30(図4および図6)によって実行され得、ビデオエンコーダ20とビデオデコーダ30との両方が、一般にビデオコーダと呼ばれる場合がある。同様に、ビデオコーディングは、適宜、ビデオ符号化またはビデオ復号を指す場合がある。加えて、ビデオ符号化およびビデオ復号が、総称的にビデオデータの「処理」と呼ばれる場合がある。
【０２６２】
以下のサブセクションにおいて、上記の技法の例を提供する。実際には、例の任意の部分の任意の組合せが、新しい例の技法として使用され得る。
【０２６３】
以下は、追加の候補変換リストを構成することの例について説明する。すべての含まれるTUについて必ずDCT-IIを適用するデフォルト変換方法のほかに、TUごとに、追加の候補変換方法が、選択された候補集合を与えられて構成され得る。一例において、イントラ予測残差およびインター予測残差に関する追加の候補変換リストは、次のように構成される。まず、変換集合は、変換タイプの集合として定義され、たとえば、例の変換集合は、{DCT-II, DST-VII}と定義され得、これは、2タイプの変換すなわちDCT-IIおよびDST-VIIを含む。2つの与えられた変換集合に基づいて、異なる変換方法は、水平変換として第1の変換集合からある変換タイプを、垂直変換として第2の変換集合から別の変換タイプを選択することによって生成され得る。たとえば、変換集合0{DCT-II, DST-VII}が水平変換に使用され、変換集合1{DCT-VIII, DST-VII}が垂直変換に使用される時に、合計4つの変換方法が、次のように生成され得る。
【０２６４】
【表１】
0006768675.tif 000022
【０２６５】
イントラ予測残差に関して、変換部分集合0:{DST-VII、DCT-VIII}、変換部分集合1:{DST-VII、DST-I}、および変換部分集合2:{DST-VII、DCT-V}を含む合計3つの変換部分集合が定義される。水平変換および垂直変換に関する変換集合上の選択は、下のTable 2(表2)に示されているように、イントラ予測モードに依存する。
【０２６６】
【表２】
0006768675.tif 000023
【０２６７】
たとえば、イントラモード10に関して、水平(右)変換の候補変換タイプは、DST-VIIおよびDCT-VIIIを含む変換集合0からであり、垂直(左)変換の候補変換タイプは、DST-VIIおよびDCT-Vを含む変換集合2からである。したがって、イントラモード10の追加の候補変換リストは、合計4つの変換方法が生成されるTable 3(表3)内に示されているように最終的に構成される。
【０２６８】
【表３】
0006768675.tif 000024
【０２６９】
Table 2(表2)によれば、TUごとに、イントラ予測モードを与えられれば、合計4つの変換方法が生成され得る。インター予測残差に関して、同一の変換集合{DST-VII, DCT-VIII}が、水平変換と垂直変換との両方に使用される。したがって、TUごとに、追加の候補変換リストは、Table 4(表4)内に示されているように構成される。
【０２７０】
【表４】
0006768675.tif 000025
【０２７１】
以下の説明は、インジケータシグナリングの例である。異なるコンテンツに適合的にあてはまるために、変換使用法に関するインジケータは、CUレベルとTUレベルとの両方においてシグナリングされる。CUレベルインジケータは、デフォルトDCT-IIが現在のCU内に含まれるすべてのTUに適用されるのかどうかを示す1ビットフラグである。この1ビットフラグが0である場合には、デフォルトDCT-IIだけが、現在のCU内に含まれるすべてのTUに適用され得、そうではない場合には、2ビットのTUレベルインジケータが、TUごとにさらにシグナリングされ得、その第1のビットは、所与の変換集合からのどの変換タイプが水平変換として適用されるのかを指定し、その第2のビットは、所与の変換集合からのどの変換タイプが垂直変換として適用されるのかを指定する。
【０２７２】
イントラ予測残差に関して、TUレベルインジケータは、係数の後にシグナリングされ、TUレベルインジケータは、TUの非0係数の総数が2を超えない時に、シグナリングされず、0として導出される。そうではない場合には、TUレベルインジケータは、明示的にシグナリングされる。インター予測残差に関して、TUレベルインジケータは、係数の前または後のいずれかにシグナリングされ得、TUレベルインジケータは、TU内に非0係数がない時にはシグナリングされない。
【０２７３】
HEVCに基づく提案される例の構文、意味論を、下で提供する。下の構文において、要素を灰色にすることは、構文内の潜在的な変更を示し、または他の形で理解を助けるのに使用される。
【０２７４】
【表５】
0006768675.tif 000026
【０２７５】
代替案では、add_multi_transform_flagが、cbf_lumaへの依存性なしにシグナリングされ得る。
【０２７６】
【表６】
0006768675.tif 000027
【０２７７】
これは、コーディングユニット内でフラグを送信することと同等である。
【０２７８】
【表７Ａ】
0006768675.tif 000028
【０２７９】
【表７Ｂ】
0006768675.tif 000029
【０２８０】
変換木意味論
add_multi_transform_flag[x0][y0]は、機能強化された複数の変換が現在のCU内に含まれるTUごとに適用されるかどうかを指定し、add_multi_transform_flag[x0][y0]が0である時には、DCT-IIが、現在のCU内に含まれるTUごとに必ず適用され、そうではない場合には、現在の変換木に属するTUに関して適用される左変換および右変換を指定するために、left_transform_flagおよびright_transform_flagが、TUごとにさらにシグナリングされ得る。add_multi_transform_flag[x0][y0]が存在しない時には、0と等しいと推論される。
残差コーディング構文
【０２８１】
【表８Ａ】
0006768675.tif 000030
【０２８２】
【表８Ｂ】
0006768675.tif 000031
【０２８３】
【表８Ｃ】
0006768675.tif 000032
【０２８４】
残差コーディング意味論
left_transform_flag[x0][y0]は、現在のTUの左変換に適用される変換インデックスを指定し、提示されない時には、left_transform_flag[x0][y0]は0として推論される。
right_transform_flag[x0][y0]は、現在のTUの右変換に適用される変換インデックスを指定し、提示されない時には、right_transform_flag[x0][y0]は0として推論される。
左変換および右変換を導出するための復号プロセス
-  CuPredMode[x0][y0] = = MODE_INTRAである場合には、イントラモード値IntraPredModeY[xPb][yPb]を与えられて、LeftTransSubsetIdxおよびRightTransSubsetIdxの値が、次の表に基づいて導出される。
【０２８５】
【表９】
0006768675.tif 000033
【０２８６】
-  LeftTransSubsetIdxの値およびleft_transform_flagを与えられて、左変換は、次の表を使用して導出される。
【０２８７】
【表１０】
0006768675.tif 000034
【０２８８】
-  RightTransSubsetIdxの値およびright_transform_flagを与えられて、右変換は、次の表を使用して導出される。
【０２８９】
【表１１】
0006768675.tif 000035
【０２９０】
-  そうではない(CuPredMode[x0][y0]!=MODE_INTRA)場合には、以下が実行される。
-  値left_transform_flagを与えられて、左変換は、次の表を使用して導出される。
【０２９１】
【表１２】
0006768675.tif 000036
【０２９２】
-  値right_transform_flagを与えられて、右変換は、次の表を使用して導出される。
【０２９３】
【表１３】
0006768675.tif 000037
【０２９４】
以下は、機能強化された複数の変換および大きい変換を適用する例である。ビデオエンコーダ20によって実行される符号化プロセスに関して、1つの例において、32×32より小さい(またはこれと等しい)CUごとに、現在のCUは、2回コーディングされる。第1のパスにおいて、現在のCUは、DCT-IIだけを使用してコーディングされる。CU全体のコーディングに関するレート-ひずみコストが、RDcost_CU_DCTとして記録され、PUの各イントラ予測モードのコーディングに関するレート-ひずみコストが、RDcost_PU_DCT[i][p]として記録され、ここで、iは、現在のCUの内部のイントラ予測モードのインデックスを示し、pは、現在のCUの内部のPUのインデックスを示す。pによってインデクシングされる現在のPUのレート-ひずみ最適化に基づく最適のイントラ予測モードは、IPM[p]と示される。
【０２９５】
第2のパスにおいて、現在のCUは、下で説明されるように複数の変換を使用してもう一度コーディングされる。現在のCUの、p'によってインデクシングされる含まれるPUごとに、以下が実行される。候補イントラ予測モードi'ごとに、RDcost_PU_DCT[i'][p'] > RDcost_PU_DCT[IPM[p']][p']である場合に、イントラ予測モードi'が、スキップされ、現在のPUの最適イントラ予測モードとしては選択されない。そうではない場合には、現在のPUに含まれるTUごとに、以下が実行される。
【０２９６】
現在のPUの内部のTUごとに、現在の候補イントラ予測モードを与えられて、上の例に従って、2つの候補右(R)変換および2つの候補左(L)変換が選択され、したがって、合計4つの異なるRおよびLの変換組合せがある。次いで、各候補RおよびL変換組合せが、レート-ひずみコストを使用してテストされる。
【０２９７】
このプロセス中に、1つのRおよびL変換組合せが、0係数(たとえば、0の値または係数なし)を生成する場合に、残りのLおよびR変換組合せは、スキップされ、最適のRおよびL変換組合せとしては選択されない。最小のレート-ひずみコストを有するRおよびL変換組合せが、現在の残差ブロックを符号化するための実際の変換として選択される。その上、組合せRおよびL変換を選択する上記のプロセス中に、1つの候補RおよびL変換組合せが2つ未満の非0係数を生成する場合には、R変換とL変換との両方がDST-VII変換である場合を除いて、その候補RおよびL変換組合せは、最適の変換組合せとしては選択されない。
【０２９８】
上記のプロセスが、現在のCUの内部のすべてのPUについて行われた後に、次いで、CU全体のコーディングのレート-ひずみコストが、RDcost_CU_EMTとして記録される。RDcost_CU_DCTがRDcost_CU_EMTより小さい場合には、1つのフラグadd_multi_transform_flagが、上の例において説明されたように条件付きで0としてシグナリングされ、含まれるTUのすべてが、DCT-IIを使用して符号化される。そうではない場合には、add_multi_transform_flagが、上の例において説明されたように条件付きで1としてシグナリングされ、含まれるTUごとに、フラグleft_transform_flagおよび別のフラグright_transform_flagが、上の例において説明されたように係数がシグナリングされた後に条件付きでシグナリングされて、どの左変換および右変換が現在のTUの符号化に関して選択されるのかを示す。
【０２９９】
以下は、ビデオデコーダ30によって実行される復号プロセスの例について説明する。一例において、32×32より小さい(またはこれと等しい)CUごとに、1ビットフラグadd_multi_transform_flagが、上の例において説明されたように条件付きでシグナリングされる。このフラグは、変換深度が0であり、ルーマ成分のコード化ブロックフラグ(CBF:coded block flag)値が0である時にのみシグナリングされず、そうではない場合には、このフラグは必ずシグナリングされる。
【０３００】
add_multi_transform_flagが0である場合には、DCT-2だけが、すべての含まれるTUに適用され、そうではない場合には、以下が実行される。TUごとに、1ビットフラグleft_transform_flagおよび別のフラグright_transform_flagが、上の例において説明されたように、係数がシグナリングされた後に条件付きでシグナリングされる。left_transform_flagおよびright_transform_flagがシグナリングされるかどうかの条件は、下で説明する。
【０３０１】
現在のCUがイントラコーディングされる時に、非0係数の総数が2未満である(またはこれと等しい)時には、left_transform_flagおよびright_transform_flagはシグナリングされない。そうではない場合には、left_transform_flagおよびright_transform_flagはシグナリングされる。
【０３０２】
そうではなく、現在のCUがイントラコーディングされない時に、非0係数がない時には、left_transform_flagおよびright_transform_flagはシグナリングされない。そうではない場合には、left_transform_flagおよびright_transform_flagはシグナリングされる。
【０３０３】
TUごとに、シグナリングされたleft_transform_flagおよびright_transform_flagを与えられて、左変換および右変換が、上の例において説明されたように導出される。現在のCUが32×32より大きい時には、64×64の同一のサイズを有するTUごとに、変換は、より大きいサイズのTUの例に関して下でより詳細に説明されるように実行される。
【０３０４】
以下は、イントラ予測モードに基づいて追加の変換リストを構成する別の代替案の例である。すべての含まれるTUに関して必ずDCT-IIを適用するデフォルト変換方法のほかに、TUごとに、追加の候補変換DST-VIIが、次のように適用され得る。IPMと表される現在のCUのイントラ予測モードを与えられて、このTUに適用される左変換および右変換は、下記のように指定される。(IPM & 1)が1と等しい場合には、DCT-IIが、現在のTUの左変換と右変換との両方として適用され、そうではなく、((IPM & 1)が0と等しい)場合には、DST-VIIが、現在のTUの左変換と右変換との両方として適用される。
【０３０５】
上記は、使用すべき変換を判定するための例の技法について説明した。以下は、より大きいサイズの変換をサポートすることの例について説明する。たとえば、64×64変換をサポートすることは、特により高い解像度、たとえば1080pおよび4Kを有するビデオのコーディングに関して有益である。ビデオエンコーダ20とビデオデコーダ30との両方の複雑さを制約しながら64×64変換をサポートすることは、重要であり、様々な形が、それを達成するために行われ得るが、より良い解決策が使用可能である可能性がある。
【０３０６】
実際に適用されるN×N変換行列は、元の浮動小数点変換行列のスケーリングの後の整数点近似とすることができ、スケーリングは、s*log2Nを含むがこれに限定されない、64*log2Nより大きいものとすることができ、sは、128または256とすることができる。一例において、水平変換および垂直変換の後の結果の変換係数は、追加の右シフト演算を適用することによって、16ビット表現内に保たれる。追加の右シフト演算は、垂直および水平の逆方向/順方向変換の後の結果の変換係数を追加のlog2(s/64)ビットだけ右シフトすることを含むが、これに限定はされない。
【０３０７】
64点、128点、256点を含むがこれに限定されない32点変換より大きい変換サイズが、残差ブロックに対して適用され得る。M点変換およびN点変換がそれぞれ水平変換および垂直変換に関して適用され、MおよびNが整数であり、MがNと同一または異なるものとされ得る時に、結果のM×N係数ブロックの内部の左上X×Yのより低い周波数の係数だけが(ただし、X<MかつY<N)、シグナリングされ、残りの係数は、シグナリングされず、0として導出される。
【０３０８】
結果のM×N係数ブロックの内部の最後の非0係数の位置は、S×Tブロックに使用される最後の非0係数位置コーディングと同一の論理を再利用することによってコーディングされ得、ここで、コンテキストモデリングに関して、X≦S≦MかつY≦T≦Nである。X×Yを超える係数をゼロで埋めるために、LastSignificantCoeffYおよびLastSignificantCoeffXに関して制約が導入され得る。たとえば、LastSignificantCoeffX(LastSignificantCoeffY)の値は、X(Y)より小さくすることができる。XおよびYの値は、定数、たとえば32とすることができ、または、変換サイズに依存することができ、たとえばX=M/2、Y=N/2である。XおよびYの通常の値は、64点変換に関して32である。
【０３０９】
一例において、M×Nに関する1つまたは複数のCG(コーディンググループ)スキャン順が、事前に定義され、使用され得る。しかし、結果のM×N係数ブロックの左上X×Y領域の外部のCGに関して、各CG内に少なくとも1つの非0係数があるかどうかをシグナリングするCGレベルフラグは、スキップされ、コーディングされない。その代わりにまたはそれに加えて、すべてのW×H CGに関して(WおよびHの通常の値は4である)、CGは、X×Y領域のスキャン順に従ってコーディングされ、このスキャン順は、(M/W)×(N/H)対角線、ジグザグ、水平、または垂直のスキャン順を含むが、これに限定はされない。その代わりにまたはそれに加えて、すべてのCGは、W'×H'のユニット内でグループ化され、W'は、Wの倍数であり、H'は、Hの倍数であり、W'×H'ユニットは、(M/W')×(N/H')対角線、ジグザグ、水平、または垂直のスキャン順を含むが、これに限定はされないスキャン順に従ってコーディングされ、各W×Hユニット内のCGは、(W'/W)×(H'/H)対角線、ジグザグ、水平、または垂直のスキャン順に従ってコーディングされる。
【０３１０】
64×64、128×128、または256×256の変換サイズに対応するRQT深度のコーディングをサポートするために、変換サイズに依存するRQT分割フラグをコーディングするのに使用されるCABACコンテキストは、32×32より大きい変換サイズに対応するRQT深度値に関して共有され得る。たとえば、変換サイズ64×64および32×32に対応するRQT深度値を含むがこれに限定はされないある種のRQT深度の事例に関して、同一のCABACコンテキストが、RQT分割フラグのコーディングに関して適用され得る。
【０３１１】
以下は、64×64変換に関する32×32のゼロで埋めることを実行する例である。最後の位置に関する制約がある可能性があり、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)。LastSignificantCoeffXまたはLastSignificantCoeffYの値は、32より小さくならなければならない。
【０３１４】
以下は、有意なCGおよび有意な係数のシグナリングに関する条件である。
残差コーディング構文
【０３１５】
【表１４Ａ】
0006768675.tif 000038
【０３１６】
【表１４Ｂ】
0006768675.tif 000039
【０３１７】
【表１４Ｃ】
0006768675.tif 000040
【０３１８】
以下は、オーバーラップブロック動き補償(OBMC)の例について説明する。OBMCは、ITU-T H.263の開発において提案された。Video Coding for Low Bitrate Communication, document Rec. H.263, ITU-T、1995年4月を参照されたい。OBMCは、8×8ブロックに対して実行され、2つの接続された隣接する8×8ブロックの動きベクトルが、図8Aおよび図8Bに示されているように現在のブロックに関して使用される。たとえば、現在のマクロブロック内の第1の8×8ブロックに関して、それ自体の動きベクトルのほかに、上および左の隣接する動きベクトルも、2つの追加の予測ブロックを生成するために適用される。この形で、現在の8×8ブロック内の各画素は、3つの予測値を有し、これらの3つの予測値の加重平均が、それぞれの画素の最終的な予測として使用される。
【０３１９】
隣接ブロックが、コーディングされないかイントラとしてコーディングされる、すなわち、隣接ブロックが、使用可能な動きベクトルを有しない時には、現在の8×8ブロックの動きベクトルが、隣接動きベクトルとして使用される。その一方で、現在のマクロブロックの第3および第4の8×8ブロック(図7に示されているように)に関して、下隣接ブロックは、使用されないものとすることができる(たとえば、必ず使用されないまたは必ず使用されるのではない)。言い換えれば、いくつかの例において、MBごとに、その下のMBからの動き情報は、OBMC中に現在のMBの画素を再構成するのに使用されない。
【０３２０】
以下は、HEVC内で提案されるOBMCについて説明する。HEVC内で、OBMCは、2011年11月18日に出願した米国特許仮出願第61/561,783号、2012年11月15日に出願した米国特許出願第13/678,329号、2011年1月10日に出願した米国特許仮出願第61/431,480号、2011年3月8日に出願した米国特許仮出願第61/450,532号、および2011年12月6日に出願した米国特許出願第13/311,834号においてPU境界を平滑化するためにも提案された。HEVC内で提案された方法の例が、図8Aおよび図8Bに示されており、ここで、白い領域は、PU0によって表される第1の予測ユニット(PU)であり、灰色の領域は、PU1によって表される第2のPUである。CUが、2つ(またはより多く)のPUを含む時に、PU境界付近の行/列は、OBMCによって平滑化される。PU0またはPU1内で「A」または「B」を用いてマークされた画素に関して、2つの予測値が生成される、すなわち、それぞれPU0およびPU1の動きベクトルを適用することによって、および、それらの加重平均が、最終的な予測として使用される。
【０３２１】
その上、2015年1月26日に出願した米国特許仮出願第62/107,964号および2015年2月16日に出願した米国特許仮出願第62/116,631号において、OBMCが現在のCUに関して適用されるかどうかを示すCUレベルフラグすなわちOBMCフラグが提案された。
【０３２２】
OBMCが1つのコーディングユニットに適用されない(たとえば、シグナリングされたフラグが0である)時に、DCT-II以外の変換が有効ではないことが観察される。したがって、複数の変換の使用法の指示に関する追加のシグナリングは、冗長である。
【０３２３】
説明したように、ビデオエンコーダ20は、OBMCが現在のCUに関して使用可能にされるか否かを示すためにCUレベルフラグをシグナリングする(たとえば、ビットストリーム内で生成する)ことができる。いくつかの例において、このOBMCフラグが1としてシグナリングされる(OBMCが現在のCUに関して使用可能にされることを示す)時には、デフォルトDCT-IIだけがTUごとに使用され、したがって、ビデオエンコーダ20は、変換選択に関して何もシグナリングしなくてもよい、すなわち、CUレベルフラグもTUレベルインデックスもシグナリングされない。
【０３２４】
以下は、ビデオエンコーダ20の最適化の例について説明する。たとえば、以下の例は、ビデオエンコーダ20に関するものとすることができる。しかしながら、ビデオデコーダ30が同様の技法を実行することが可能とすることができる。
【０３２５】
エンコーダ(たとえば、ビデオエンコーダ20)において、提案される複数の変換が現在のTUに関して適用される時に、M×N以上の変換サイズに関して、M'×N'の低周波数係数だけが計算され、他の係数は0としてセットされ、ここで、(M'≦M、N'≦N、かつM'*N'<M*N)である。一例において、MおよびNの各々の値は、32であり、M'およびN'の各々の値は、16である。この例において、M'より大きいロケーションおよび/またはN'より大きいロケーションに位置決めされた係数は、より高周波数の係数と考えることができる。一般に、TUより右およびTUより下の係数は、より高周波数の係数と考えることができる。
【０３２６】
エンコーダにおいて、ある種のコーディングモードに関して、デフォルト変換、たとえばDCT-IIを使用するコーディングコストが、現在の最小のコーディングコストに所与のしきい値を乗じたものより大きい場合に、提案される複数の変換は、スキップされる。コーディングコストは、レート-ひずみコスト、絶対予測残差の和、予測残差の二乗和、または絶対変換差の和とすることができる。しきい値は、コーディングブロックサイズに依存することができる。一例において、しきい値の値は、1.1である。
【０３２７】
エンコーダにおいて、ある種のイントラ予測方向モードに関して、デフォルト変換、たとえばDCT-IIを使用するコーディングコストが、最良のイントラ予測方向モードのコーディングコストに所与のしきい値を乗じたものより大きい場合に、提案される複数の変換は、このイントラ予測モードに関して適用されず、スキップされる。コーディングコストは、レート-ひずみコスト、絶対予測残差の和、予測残差の二乗和、または絶対変換差の和とすることができる。しきい値は、コーディングブロックサイズに依存することができる。一例において、しきい値の値は、4×4、8×8、16×16、および32×32のブロックサイズに関して、それぞれ1.47、1.28、1.12、および1.06である。
【０３２８】
エンコーダにおいて、デフォルト変換、たとえばDCT-IIを使用するN×NイントラPU区分のコーディングコストが、2N×2NイントラPU区分のコーディングコストに所与のしきい値を乗じたものより大きい場合に、提案される複数の変換は、N×NイントラPU区分に関して適用されず、スキップされる。コーディングコストは、レート-ひずみコスト、絶対予測残差の和、予測残差の二乗和、または絶対変換差の和とすることができる。しきい値は、コーディングブロックサイズに依存することができる。一例において、しきい値の値は、1.2である。
【０３２９】
エンコーダにおいて、デフォルト変換、たとえばDCT-IIを使用する2N×2NイントラPU区分モードのコーディングコストが、最良のインターコーディングモードのコーディングコストに所与のしきい値を乗じたものより大きい場合に、提案される複数の変換は、イントラPUモードに関して適用されず、スキップされる。コーディングコストは、レート-ひずみコスト、絶対予測残差の和、予測残差の二乗和、または絶対変換差の和とすることができる。しきい値は、コーディングブロックサイズに依存することができる。一例において、しきい値の値は、1.4である。
【０３３０】
エンコーダにおいて、複数の変換候補のうちの1つを使用することが、現在のブロックのすべて0の係数を生成する場合に、残りの変換候補は、現在のブロックに関して適用されず、スキップされる。その代わりにまたはそれに加えて、デフォルト変換(たとえば、DCT-II)を使用することが、現在のブロックのすべて0の係数を生成する場合に、複数の変換候補は、現在のブロックに関して適用されず、スキップされ、デフォルト変換(たとえば、DCT-II)だけが、現在のブロックのコーディングに使用される。
【０３３１】
エンコーダにおいて、OBMCフラグがシグナリングされ、これがOBMCオフを示す時に、1つのデフォルト変換だけが適用されるかどうかを示す1ビットフラグが、それでもデフォルト値(たとえば、0)としてシグナリングされ、このデフォルト値は、デフォルト変換(たとえば、DCT-II)が適用されることを示し、複数の変換候補は、現在のブロックに関して適用されず、スキップされる。
【０３３２】
図9は、ビデオデータを復号する例の方法を示す流れ図である。ビデオデコーダ30は、複数の変換部分集合を判定する(200)ことができ、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別する。たとえば、予測処理ユニット152は、ビデオデータメモリ151内に記憶された変換部分集合から複数の変換部分集合を取り出すことができる。複数の変換部分集合は、ビデオデータメモリ151内に事前に記憶され得、または、変換部分集合をどのように構成すべきかを識別する情報が、ビデオエンコーダ20から受信され得る。ビデオデコーダ30は、ビデオデータの現在の係数ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択し、ビデオデータの現在の係数ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択する(202)ことができる。たとえば、予測処理ユニット152は、変換部分集合を判定する少数の例の形として、ビデオビットストリーム内でシグナリングされたイントラ予測モード情報に基づいて、または復号されているビデオブロックの位置に基づいて、第1の変換部分集合および第2の変換部分集合を選択することができる。
【０３３３】
ビデオデコーダ30は、選択された第1の変換部分集合から左変換を判定し、選択された第2の変換部分集合から右変換を判定する(204)ことができる。たとえば、予測処理ユニット152は、選択された変換部分集合内へのインデックスなどの情報をビットストリーム内で受信することができ、または、非0係数の個数に基づいて変換を暗黙のうちに判定することができる。ビデオデコーダ30は、左変換、右変換、および現在の係数ブロックに基づいて現在の変換ブロックを判定する(206)ことができる。たとえば、逆変換処理ユニット156は、逆量子化ユニット154によって出力された係数ブロックに対して左変換および右変換を適用することによって、現在の変換ブロックを判定することができる。ビデオデコーダ30は、現在の変換ブロックおよび予測ブロックに基づいてビデオブロックを再構成する(たとえば、イントラ予測復号するかインター予測復号する)(208)ことができる。たとえば、再構成ユニット158は、ビデオブロックを再構成するために、予測ブロックに現在の変換ブロック(ビデオブロックと予測ブロックとの間の残差である)を加算することができる。
【０３３４】
図10は、ビデオデータを符号化する例の方法を示す流れ図である。ビデオエンコーダ20は、複数の変換部分集合を判定する(300)ことができ、各部分集合は1つまたは複数の候補変換を識別し、少なくとも1つの変換部分集合は複数の候補変換を識別する。たとえば、予測処理ユニット100は、ビデオデータメモリ101内に記憶された変換部分集合から複数の変換部分集合を取り出すことができる。複数の変換部分集合は、ビデオデータメモリ101内に事前に記憶され得る。ビデオエンコーダ20は、ビデオデータのビデオブロックの現在の変換ブロックの左変換に関する第1の変換部分集合を複数の変換部分集合から選択し、ビデオデータのビデオブロックの現在の変換ブロックの右変換に関する第2の変換部分集合を複数の変換部分集合から選択する(302)ことができる。たとえば、予測処理ユニット100は、変換部分集合を判定する少数の例の形として、エントロピー符号化ユニット118がビデオビットストリーム内に生成したイントラ予測モード情報に基づいて、または符号化されるビデオブロックの位置に基づいて、第1の変換部分集合および第2の変換部分集合を選択することができる。
【０３３５】
ビデオエンコーダ20は、選択された第1の変換部分集合から左変換を判定し、選択された第2の変換部分集合から右変換を判定する(304)ことができる。たとえば、予測処理ユニット100は、良いビデオコーディング品質をもたらす変換を識別するために、様々な判定された変換をテストすることができる。ビデオエンコーダ20は、左変換、右変換、および現在の変換ブロックに基づいて現在の係数ブロックを判定する(306)ことができる。たとえば、変換処理ユニット104は、再構成ユニット112によって出力された変換ブロックに対して左変換および右変換を適用することによって、現在の係数ブロックを判定することができる。ビデオエンコーダ20は、ビデオブロックの再構成に使用される現在の係数ブロックの係数を示す情報を有するビデオビットストリームを生成する(たとえば、情報をシグナリングする)(308)ことができる。たとえば、エントロピー符号化ユニット118は、ビデオデコーダ30がビデオブロックを再構成するのに使用する情報を出力することができる。
【０３３６】
本明細書で説明される技法のすべてが、個別に、または組み合わせて使用され得ることを理解されたい。本開示は、ブロックサイズ、スライスタイプ、その他など、ある種の要因に依存して変化する可能性がある複数のシグナリング方法を含む。構文要素のシグナリングまたは推論におけるそのような変動は、先験的にエンコーダおよびデコーダに知られ得、あるいは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ内で、タイルレベルにおいて、または他の場所で明示的にシグナリングされ得る。
【０３３７】
例に依存して、本明細書で説明される技法のいずれかのある種の行為またはイベントが、異なるシーケンスで実行され得、追加され、合併され、または完全に除去され得る(たとえば、説明された行為またはイベントのすべてが、技法の実践に必要とは限らない)ことを認められたい。その上、いくつかの例においては、行為またはイベントは、順次的にではなく、たとえばマルチスレッド処理、割り込み処理または複数のプロセッサを介して、同時に実行され得る。加えて、明瞭さのために、本開示のいくつかの態様は単一のモジュールまたはユニットによって実行されるものとして説明されるが、本開示の技法がビデオコーダに関連するユニットまたはモジュールの組合せによって実行されてもよいことを理解されたい。
【０３３８】
技法の様々な態様の特定の組合せが上で説明されるが、これらの組合せは、単に、本開示において説明される技法の例を示すために提供される。したがって、本開示の技法は、これらの例の組合せに限定されるべきではなく、本開示において説明される技法の様々な態様の任意の考えられる組合せを包含することができる。
【０３３９】
1つまたは複数の例において、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せにおいて実施され得る。ソフトウェアにおいて実施される場合に、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含むことができる。この形において、コンピュータ可読媒体は、一般に、非一時的な有形のコンピュータ可読記憶媒体に対応することができる。データ記憶媒体は、本開示において説明される技法の実施のために命令、コード、および/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の使用可能な媒体とすることができる。コンピュータプログラム製品は、コンピュータ可読媒体を含むことができる。限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク(disc)ストレージ、磁気ディスク(disk)ストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を含むことができる。しかし、コンピュータ可読記憶媒体およびデータ記憶媒体が、接続、搬送波、信号、または他の過渡的媒体を含まず、その代わりに非一時的有形記憶媒体を対象とすることを理解されたい。ディスク(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  インター予測処理ユニット
126  イントラ予測処理ユニット
150  エントロピー復号ユニット
151  ビデオデータメモリ
152  予測処理ユニット
154  逆量子化ユニット
156  逆変換処理ユニット
158  再構成ユニット
160  フィルタユニット
162  復号されたピクチャバッファ
164  動き補償ユニット
166  イントラ予測処理ユニット
【図１Ａ】
0006768675.tif 000041
【図１Ｂ】
0006768675.tif 000042
【図１Ｃ】
0006768675.tif 000043
【図１Ｄ】
0006768675.tif 000044
【図１Ｅ】
0006768675.tif 000045
【図１Ｆ】
0006768675.tif 000046
【図２】
0006768675.tif 000047
【図３】
0006768675.tif 000048
【図４】
0006768675.tif 000049
【図５】
0006768675.tif 000050
【図６】
0006768675.tif 000051
【図７】
0006768675.tif 000052
【図８Ａ】
0006768675.tif 000053
【図８Ｂ】
0006768675.tif 000054
【図９】
0006768675.tif 000055
【図１０】
0006768675.tif 000056