(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-08
(45)【発行日】2024-11-18
(54)【発明の名称】変換に基づく映像コーディング方法及びその装置
(51)【国際特許分類】
H04N 19/70 20140101AFI20241111BHJP
H04N 19/12 20140101ALI20241111BHJP
H04N 19/157 20140101ALI20241111BHJP
H04N 19/176 20140101ALI20241111BHJP
H04N 19/186 20140101ALI20241111BHJP
【FI】
H04N19/70
H04N19/12
H04N19/157
H04N19/176
H04N19/186
(21)【出願番号】P 2024014858
(22)【出願日】2024-02-02
(62)【分割の表示】P 2022549702の分割
【原出願日】2021-02-22
【審査請求日】2024-02-21
(32)【優先日】2020-02-21
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-03-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-03-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502032105
【氏名又は名称】エルジー エレクトロニクス インコーポレイティド
【氏名又は名称原語表記】LG ELECTRONICS INC.
【住所又は居所原語表記】128, Yeoui-daero, Yeongdeungpo-gu, 07336 Seoul,Republic of Korea
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100165191
【氏名又は名称】河合 章
(74)【代理人】
【識別番号】100114018
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100159259
【氏名又は名称】竹本 実
(72)【発明者】
【氏名】ク ムンモ
(72)【発明者】
【氏名】イム チェヒョン
(72)【発明者】
【氏名】キム スンファン
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2021/096290(WO,A1)
【文献】Takeshi Tsukuba, Masaru Ikeda, Yoichi Yagasaki, and Teruhiko Suzuki,On Interaction of LFNST and Transform skip,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-Q0099-v1,17th Meeting: Brussels, BE,2019年12月,pp.1-6
【文献】Benjamin Bross, Jianle Chen, Shan Liu, and Ye-Kui Wan,Versatile Video Coding (Draft 8),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-Q2001 (version 13),17th Meeting: Brussels, BE,2020年02月09日,pp.69-73,307-310,313-314
【文献】Moonmo Koo, Jaehyun Lim, Mehdi Salehifar, and Seung-Hwan Kim,AHG16: The interaction between LFNST and BDPCM,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-R0319-v2,18th Meeting: by teleconference,2020年04月,pp.1-5
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
デコーディング装置によって行われる映像デコーディング方法であって、
ビットストリームからレジデュアル情報を受信する段階と、
前記レジデュアル情報に基づいて逆量子化を行って現在ブロックの第1成分に対する変換係数を導出する段階であって、前記第1成分は前記現在ブロックのルマ成分又はクロマ成分の一つを示す、段階と、
前記変換係数にLFNST(Low-Frequency Non-Separable Transform)を適用して修正された変換係数を導出する段階を含み、
前記修正された変換係数を導出する段階は、
前記現在ブロックのツリータイプと、前記現在ブロックの第2成分に対する変換係数コーディングフラグと、前記現在ブロックの前記第1成分に対する変換スキップフラグと、前記第2成分が前記現在ブロックの前記ルマ成分又は前記クロマ成分のその他を示すことに基づき、LFNST適用変数に設定する段階と、
前記LFNST適用変数の値に基づいて、前記ビットストリームから、
LFNSTセットにおいて複数のLFNSTマトリックスの一つを示すLFNSTインデックスをパースする段階と、
前記LFNSTインデックスに基づいて、前記変換係数に前記LFNSTを実行する段階とを含み、
前記LFNST適用変数の値が1に等しいことに基づいて、前記LFNSTインデックスは、前記ビットストリームからパースされ、
前記現在ブロックの前記第2成分がBDPCM(block-based delta pulse code modulation)モードでコーディングされる間、前記現在ブロックの前記第1成分は前記BDPCMモードでコーディングされない、映像デコーディング方法。
【請求項2】
前記現在ブロックの前記第2成分に対する前記変換係数コーディングフラグが0であることに
基づいて、前記LFNST適用変数の値は1に等しく設定され
る、請求項1に記載の映像デコーディング方法。
【請求項3】
前記現在ブロックの前記第1成分に対する前記変換スキップフラグが0に等しいことに
基づいて、前記LFNST適用変数の値は、1に等しく設定される、請求項
1に記載の映像デコーディング方法。
【請求項4】
前記現在ブロックの前記ツリータイプがシングルツリーである
ことに基づいて、前記現在ブロックの前記第2成分に対する前記変換係数コーディングフラグが0
に等しく、前記現在ブロックの前記第1成分に対する変換スキップフラグが0
に等しく、前記LFNST適用変数の値は、1に等しく設定される、請求項1に記載の映像デコーディング方法。
【請求項5】
前記現在ブロックの第1成分に対する変換係数コーディングフラッグにかかわらず、前記LFNSTの変数は1に等しく設定される、請求項4に記載の映像デコーディング方法。
【請求項6】
前記現在ブロックの前記第2成分の変換スキップフラグは1
に等しいと類推される、請求項1に記載の映像デコーディング方法。
【請求項7】
エンコーディング装置によって行われる映像エンコーディング方法であって、
現在ブロックの第1成分に対する予測サンプルを導出する段階であって、前記第1成分は前記現在ブロックのルマ成分又はクロマ成分の一つを示す、段階と、
前記予測サンプルに基づいて前記現在ブロックの第1成分に対するレジデュアルサンプルを導出する段階と、
前記レジデュアルサンプルに対する1次変換に基づいて前記現在ブロックの前記第1成分に対する変換係数を導出する段階と、
LFNST(Low-Frequency Non-Separable Transform)を適用して、前記変換係数から修正された変換係数を導出する段階を含み、
前記修正された変換係数を導出する段階は、
前記現在ブロックのツリータイプと、前記現在ブロックの第2成分に対する変換係数コーディングフラグと、前記現在ブロックの前記第1成分に対する変換スキップフラグと、前記第2成分が前記現在ブロックの前記ルマ成分又は前記クロマ成分のその他を示すことに基づいて、LFNST適用変数を設定する段階と、
前記LFNST適用変数に基づいて前記LFNSTを適用する段階を含み、
LFNSTセットにおいて複数のLFNSTマトリックスの一つを示すLFNSTインデックスは前記LFNST適用変数の値に基づいてビットストリームにエンコーディングされ、
前記LFNST適用変数の値が1に等しい
ことに基づいて前記LFNSTが適用され、
前記現在ブロックの前記第2成分がBDPCM(block-based delta pulse code modulation)モードでコーディングされる間、前記現在ブロックの前記第1成分は前記BDPCMモードでコーディングされない、映像エンコーディング方法。
【請求項8】
前記現在ブロックの前記第
2成分に対する前記変換係数コーディングフラグが0
に等しいことに基づいて、前記LFNST適用変数の値は、1に等しく設定され
る、請求項
7に記載の映像エンコーディング方法。
【請求項9】
前記現在ブロックの前記第1成分に対する前記変換スキップフラグが0に等しいことに
基づいて、前記LFNST適用変数の値は、1に等しく設定される、請求項7に記載の映像エンコーディング方法。
【請求項10】
前記現在ブロックの前記ツリータイプがシングルツリーである
ことに基づいて、前記現在ブロックの前記第2成分に対する前記変換係数コーディングフラグが0
に等しく、前記現在ブロックの前記第1成分に対する前記変換スキップフラグは0
に等しく、前記LFNST適用変数の値は、1に等しく設定される、請求項
7に記載の映像エンコーディング方法。
【請求項11】
前記現在ブロックの第1成分に対する変換係数コーディングフラッグにかかわらず、前記LFNST適用変数の値が1に等しい、請求項10に記載の映像エンコーディング方法。
【請求項12】
前記現在ブロックの前記第2成分に対する前記変換スキップフラグは1
に等しいと類推される、請求項
7に記載の映像エンコーディング方法。
【請求項13】
映像情報に対するデータを送信する方法であって、
現在ブロックの第1成分に対する予測サンプルを導出する段階であって、前記第1成分は、前記現在ブロックのルマ成分又はクロマ成分の一つを示す、段階と、
前記予測サンプルに基づいて前記現在ブロックの前記第1成分に対するレジデュアルサンプルを導出する段階と、
前記レジデュアルサンプルの第1変換に基づいて前記現在ブロックの前記第1成分に対する変換係数を導出する段階と、
LFNST(Low-Frequency Non-Separable Transform)を適用することにより、前記変換係数から修正された変換係数を導出する段階と、
前記修正された変換係数に基づいて量子化を実行することにより、量子化された変換係数を導出する段階と、
ビットストリームを生成するために、前記量子化された変換係数に対するレジデュアル情報をエンコーディングする段階と、
前記ビットストリームを含む前記データを送信する段階とを含み、
前記修正された変換係数を導出する段階は、
前記現在ブロックのツリータイプと、前記現在ブロックの第2成分に対する変換係数コーディングフラグと、前記現在ブロックの前記第1成分に対する変換スキップフラグと、前記第2成分が前記現在ブロックの前記ルマ成分又は前記クロマ成分のその他を示すことに基づいて、LFNST適用変数を設定する段階と、
前記LFNST適用変
数に基づいて前記LFNSTを適用する段階を含み、
LFNSTセットにおいて複数のLFNSTマトリックスの一つを示すLFNSTインデックスは前記LFNST適用変数の値に基づいて前記ビットストリームにエンコーディングされ、
前記LFNST適用変数の値が1に等しいことに基づいて前記LFNSTが適用され、
前記現在ブロックの前記第2成分がBDPCM(block-based delta pulse code modulation)モードでコーディングされる間、前記現在ブロックの前記第1成分は前記BDPCMモードでコーディングされない、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本文書は、映像コーディング技術に関し、より詳細には、映像コーディングシステムにおいて変換(transform)に基づく映像コーディング方法及びその装置に関する。
【背景技術】
【0002】
近年、4K又は8K以上のUHD(Ultra High Definition)映像/ビデオのような高解像度、高品質の映像/ビデオに対する需要が様々な分野で増加している。映像/ビデオデータが高解像度、高品質になるほど、既存の映像/ビデオデータに比べて相対的に伝送される情報量又はビット量が増加するため、既存の有無線広帯域回線のような媒体を用いて映像データを伝送したり既存の記憶媒体を用いて映像/ビデオデータを記憶する場合に、伝送及び記憶にかかるコストが増加する。
【0003】
また、近年、VR(Virtual Reality)、AR(Artificial Realtiy)コンテンツやホログラムなどの実感メディア(Immersive Media)に対する関心及び需要が増加しており、ゲーム映像のように、現実映像と異なる映像特性を有する映像/ビデオに対する放送が増加している。
【0004】
このため、上記のような様々な特性を有する高解像度・高品質の映像/ビデオの情報を効果的に圧縮して伝送したり記憶し、再生するために高効率の映像/ビデオ圧縮技術が要求される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本文書の技術的課題は、映像コーディング効率を上げる方法及び装置を提供することにある。
【0006】
本文書の他の技術的課題は、LFNSTインデックスのコーディング効率を上げる方法及び装置を提供することにある。
【0007】
本文書のさらに他の技術的課題は、BDPCM及び変換係数の存在に対するフラグ情報に基づいてLFNSTインデックスのコーディング効率を上げる方法及び装置を提供することにある。
【課題を解決するための手段】
【0008】
本文書の一実施例によれば、デコーディング装置によって行われる映像デコーディング方法を提供する。前記方法は、修正された変換係数を導出する段階を含み、該修正された変換係数を導出する段階は、前記現在ブロックのツリータイプと、前記現在ブロックの各成分に対する変換係数コーディングフラグ又は前記現在ブロックの各成分に対する変換スキップフラグに基づき、前記LFNSTの適用有無に対するLFNST適用変数を設定する段階を含み、前記LFNST適用変数の値に基づいてLFNSTインデックスをパースする段階を含むことができる。
【0009】
前記現在ブロックの各成分に対する前記変換係数コーディングフラグが0であることに基づき、前記LFNST適用変数の値は、前記LFNSTインデックスがパーシング可能であることを示す1に設定されてよい。
【0010】
前記現在ブロックの各成分に対する前記変換スキップフラグが0であることに基づき、前記LFNST適用変数の値は、前記LFNSTインデックスがパーシング可能であることを示す1に設定されてよい。
【0011】
前記ツリータイプがシングルツリーであり、前記現在ブロックのルマ成分に対する前記変換スキップフラグが0であり、前記現在ブロックのクロムA成分がBDPCMモードであれば、前記LFNST適用変数の値は、前記LFNSTインデックスがパーシング可能であることを示す1に設定されてよい。
【0012】
前記クロムA成分の前記変換係数コーディングフラグは、0であってよい。
【0013】
前記クロムA成分の前記変換スキップフラグは、1と類推されてよい。
【0014】
本文書の一実施例によれば、エンコーディング装置によって行われる映像エンコーディング方法を提供する。前記方法は、LFNSTを適用して、変換係数から、修正された変換係数を導出する段階を含み、前記修正された変換係数を導出する段階は、前記現在ブロックのツリータイプと、前記現在ブロックの各成分に対する変換係数コーディングフラグ又は前記現在ブロックの各成分に対する変換スキップフラグに基づき、前記LFNSTの適用有無に対するLFNST適用変数を設定する段階を含み、前記LFNST適用変数の値に基づいて前記LFNSTを適用する段階を含むことができる。
【0015】
本文書のさらに他の実施例によれば、エンコーディング装置によって行われた映像エンコーディング方法によって生成されたエンコードされた映像情報及びビットストリームが含まれた映像データが記憶されたデジタル記憶媒体が提供されてよい。
【0016】
本文書のさらに他の実施例によれば、デコーディング装置によって前記映像デコーディング方法を行うようにするエンコードされた映像情報及びビットストリームが含まれた映像データが記憶されたデジタル記憶媒体が提供されてよい。
【発明の効果】
【0017】
本文書によれば、映像/ビデオ圧縮効率の全般を上げることができる。
【0018】
本文書によれば、LFNSTインデックスのコーディング効率を上げることができる。
【0019】
本文書によれば、BDPCM及び変換係数の存在に対するフラグ情報に基づいてLFNSTインデックスのコーディング効率を上げることができる。
【0020】
本明細書の具体的な一例から得られる効果は、以上に述べた効果に制限されない。例えば、関連する技術分野における通常の知識を有する者(person having ordinary skill in the related art)が、本明細書から理解したり誘導できる様々な技術的効果が存在してよい。したがって、本明細書の具体的な効果は、本明細書に明示的に記載されたものに制限されず、本明細書の技術的特徴から理解されたり誘導されたりできる様々な効果を含むことができる。
【図面の簡単な説明】
【0021】
【
図1】本文書が適用可能なビデオ/映像コーディングシステムの例を概略的に示す図である。
【
図2】本文書が適用可能なビデオ/映像エンコーディング装置の構成を概略的に説明する図である。
【
図3】本文書が適用可能なビデオ/映像デコーディング装置の構成を概略的に説明する図である。
【
図4】本文書が適用されるコンテンツストリーミングシステム構造を例示する図である。
【
図5】本文書の一実施例に係る多重変換手法を概略的に示す図である。
【
図6】65個予測方向のイントラ方向性モードを例示する図である。
【
図7】本文書の一実施例に係るRSTを説明するための図である。
【
図8】一例によって順方向1次変換の出力データを1次元ベクトルとして配列する順序を示す図である。
【
図9】一例によって順方向2次変換の出力データを2次元ブロックに配列する順序を示す図である。
【
図10】本文書の一実施例に係る広角イントラ予測モードを示す図である。
【
図11】LFNSTが適用されるブロック形態を示す図である。
【
図12】一例によって順方向LFNSTの出力データの配列を示す図である。
【
図13】一例によって4x4LFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【
図14】一例によって8x8LFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【
図15】本文書の一実施例に係るビデオデコーディング装置の動作を示すフローチャートである。
【
図16】本文書の一実施例に係るビデオエンコーディング装置の動作を示すフローチャートである。
【発明を実施するための形態】
【0022】
本文書は様々な変更を加えることができ、様々な実施例を有し得るところ、特定実施例を図面に例示して詳細に説明する。ただし、これは、本文書を特定実施例に限定しようとするものではない。本明細書で常用する用語は特定の実施例を説明するために使われるだけで、本文書の技術的思想を限定する意図で使われるものではない。単数の表現は、文脈において別に断らない限り、複数の表現をも含む。本明細書において、「含む」又は「有する」などの用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品又はそれらを組み合わせたものが存在することを指定するためのものであり、1つ又はそれ以上の他の特徴、数字、段階、動作、構成要素、部品又はそれらを組み合わせたものの存在又は付加の可能性をあらかじめ排除しないものとして理解されるべきである。
【0023】
一方、本文書で説明される図面上の各構成は、それぞれ異なる特徴的な機能に関する説明の便宜のために独立して示すものであり、各構成が互いに別個のハードウェアや別個のソフトウェアとして具現されるということを意味するものではない。例えば、各構成のうち2つ以上の構成が合わせられて一つの構成をなしてもよく、一つの構成が複数の構成に分けられてもよい。各構成が統合及び/又は分離された実施例も、本文書の本質から逸脱しない限り、本文書の権利範囲に含まれる。
【0024】
以下、添付の図面を参照して、本文書の好ましい実施例をより詳細に説明する。以下、図面上の同一の構成要素には同一の参照符号を付し、同一の構成要素について重複する説明は省略する。
【0025】
この文書は、ビデオ/映像コーディングに関する。例えば、この文書に開示されている方法/実施例は、VVC(Versatile Video Coding)標準(ITU-T Rec.H.266)、VVC以後の次世代ビデオ/イメージコーディング標準、又はその他のビデオコーディング関連標準(例えば、HEVC(High Efficiency Video Coding)標準(ITU-T Rec.H.265)、EVC(essential video coding)標準、AVS2標準など)と関連し得る。
【0026】
この文書ではビデオ/映像コーディングに関する様々な実施例を提示し、特に言及がない限り、これらの実施例は互いに組み合わせられて行われてもよい。
【0027】
この文書においてビデオ(video)は、時間の流れによる一連の映像(image)の集合を意味できる。ピクチャー(picture)は一般に、特定時間帯の一つの映像を示す単位を意味し、スライス(slice)/タイル(tile)は、コーディングにおいてピクチャーの一部を構成する単位である。スライス/タイルは、一つ以上のCTU(coding tree unit)を含むことができる。一つのピクチャーは、一つ以上のスライス/タイルで構成されてよい。一つのピクチャーは、一つ以上のタイルグループで構成されてよい。一つのタイルグループは、一つ以上のタイルを含むことができる。
【0028】
ピクセル(pixel)又はペル(pel)は、一つのピクチャー(又は、映像)を構成する最小の単位を意味できる。また、ピクセルに対応する用語として「サンプル(sample)」が使われてよい。サンプルは一般に、ピクセル又はピクセルの値を表すことができ、ルマ(luma)成分のピクセル/ピクセル値のみを表すこともでき、クロマ(chroma)成分のピクセル/ピクセル値のみを表すこともできる。又は、サンプルは、空間ドメインにおけるピクセル値を意味することもでき、このようなピクセル値が周波数ドメインに変換されると、周波数ドメインにおける変換係数を意味することもできる。
【0029】
ユニット(unit)は、映像処理の基本単位を表すことができる。ユニットは、ピクチャーの特定領域及び当該領域に関連した情報のうち少なくとも一つを含むことができる。1つのユニットは、1つのルマブロック及び2つのクロマ(ex.cb,cr)ブロックを含むことができる。ユニットは、場合によってブロック(block)又は領域(area)などの用語と同じ意味で使われてよい。一般の場合、MxNブロックは、M個の列とN個の行からなるサンプル(又は、サンプルアレイ)又は変換係数(transform coefficient)の集合(又は、アレイ)を含むことができる。
【0030】
この文書において、「/」と「、」は、「及び/又は」と解釈される。例えば、「A/B」は「A及び/又はB」と解釈され、「A、B」は「A及び/又はB」と解釈される。さらに、「A/B/C」は、「A、B及び/又はCのうち少なくとも1つ」を意味する。また、「A、B、C」も「A、B及び/又はCのうち少なくとも1つ」を意味する。
【0031】
追加的に、本文書において「又は」は、「及び/又は」と解釈される。例えば、「A又はB」は、1)「A」のみを意味し、2)「B」のみを意味し、又は3)「A及びB」を意味できる。言い換えると、本文書の「又は」は、「追加として又は代替として(additionally or alternatively)」を意味できる。
【0032】
本明細書において「A及びBのうち少なくとも1つ(at least one of A and B)」は、「Aのみ」、「Bのみ」又は「AとB両方」を意味できる。また、本明細書において「A又はBのうち少なくとも1つ(at least one of A or B)」や「A及び/又はBのうち少なくとも1つ(at least one of A and/or B)」という表現は、「A及びBのうち少なくとも1つ(at least one of A and B)」と同一に解釈されてよい。
【0033】
また、本明細書において「A、B及びCのうち少なくとも1つ(at least one of A,B and C)」は、「Aのみ」、「Bのみ」、「Cのみ」、又は「A、B及びCの任意の全ての組合せ(any combination of A,B and C)」を意味できる。また、「A、B又はCのうち少なくとも1つ(at least one of A,B or C)」や「A、B及び/又はCのうち少なくとも1つ(at least one of A,B and/or C)」は、「A、B及びCのうち少なくとも1つ(at least one of A,B and C)」を意味できる。
【0034】
また、本明細書で使われる括弧は、「例えば(for example)」を意味できる。具体的に、「予測(イントラ予測)」と表示された場合に、「予測」の一例として「イントラ予測」が提案されたものであってよい。言い換えると、本明細書における「予測」は「イントラ予測」に制限(limit)されず、「イントラ予測」が「予測」の一例として提案されたものであろう。また、「予測(すなわち、イントラ予測)」と表示された場合にも、「予測」の一例として「イントラ予測」が提案されたものであろう。
【0035】
本明細書において、一つの図面で個別に説明される技術的特徴は、個別に具現されてもよく、同時に具現されてもよい。
【0036】
図1には、本文書が適用可能なビデオ/映像コーディングシステムの例を概略的に示す。
【0037】
図1を参照すると、ビデオ/映像コーディングシステムは、ソースデバイス及び受信デバイスを含むことができる。ソースデバイスは、エンコードされたビデオ(video)/映像(image)情報又はデータをファイル又はストリーミングの形態で、デジタル記憶媒体又はネットワークを介して受信デバイスに伝達できる。
【0038】
前記ソースデバイスは、ビデオソース、エンコーディング装置、送信部を含むことができる。前記受信デバイスは、受信部、デコーディング装置及びレンダラーを含むことができる。前記エンコーディング装置はビデオ/映像エンコーディング装置と呼ばれてもよく、前記デコーディング装置はビデオ/映像デコーディング装置と呼ばれてもよい。送信機はエンコーディング装置に含まれてよい。受信機はデコーディング装置に含まれてよい。レンダラーはディスプレイ部を含むこともでき、ディスプレイ部は別個のデバイス又は外部コンポーネントとして構成されてもよい。
【0039】
ビデオソースは、ビデオ/映像のキャプチャー、合成又は生成過程などによってビデオ/映像を取得できる。ビデオソースは、ビデオ/映像キャプチャーデバイス及び/又はビデオ/映像生成デバイスを含むことができる。ビデオ/映像キャプチャーデバイスは、例えば、1つ以上のカメラ、以前にキャプチャーされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成デバイスは、例えば、コンピュータ、タブレット及びスマートフォンなどを含むことができ、(電子的に)ビデオ/映像を生成することができる。例えば、コンピュータなどによって仮想のビデオ/映像が生成されてよく、この場合、関連データが生成される過程でビデオ/映像キャプチャー過程に代えてよい。
【0040】
エンコーディング装置は、入力ビデオ/映像をエンコードすることができる。エンコーディング装置は、圧縮及びコーディング効率のために予測、変換、量子化などの一連の手順を行うことができる。エンコードされたデータ(エンコードされたビデオ/映像情報)は、ビットストリーム(bitstream)の形態で出力されてよい。
【0041】
送信部は、ビットストリームの形態で出力されたエンコードされたビデオ/映像情報又はデータをファイル又はストリーミングの形態で、デジタル記憶媒体又はネットワークを介して受信デバイスの受信部に伝達することができる。デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含むことができる。送信部は、あらかじめ定められたファイルフォーマットによってメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介した伝送のためのエレメントを含むことができる。受信部は、前記ビットストリームを受信/抽出してデコーディング装置に伝達できる。
【0042】
デコーディング装置は、エンコーディング装置の動作に対応する逆量子化、逆変換、予測などの一連の手順を行ってビデオ/映像をデコードすることができる。
【0043】
レンダラーは、デコードされたビデオ/映像をレンダーすることができる。レンダーされたビデオ/映像は、ディスプレイ部でディスプレイされてよい。
【0044】
図2は、本文書が適用可能なビデオ/映像エンコーディング装置の構成を概略的に説明する図である。以下、ビデオエンコーディング装置は、映像エンコーディング装置を含むことができる。
【0045】
図2を参照すると、エンコーディング装置200は、映像分割部(image partitioner,210)、予測部(predictor,220)、レジデュアル処理部(residual processor,230)、エントロピーエンコーディング部(entropy encoder,240)、加算部(adder,250)、フィルタリング部(filter,260)及びメモリ(memory,270)を含んで構成されてよい。予測部220は、インター予測部221及びイントラ予測部222を含むことができる。レジデュアル処理部230は、変換部(transformer,232)、量子化部(quantizer233)、逆量子化部(dequantizer,234)、逆変換部(inverse transformer,235)を含むことができる。レジデュアル処理部230は、減算部(subtractor,231)をさらに含むことができる。加算部250は、復元部(reconstructor)又は復元ブロック生成部(recontructged block generator)と呼ばれてもよい。上述した映像分割部210、予測部220、レジデュアル処理部230、エントロピーエンコーディング部240、加算部250及びフィルタリング部260は、実施例によって1つ以上のハードウェアコンポーネント(例えば、エンコーダチップセット又はプロセッサ)によって構成されてよい。また、メモリ270は、DPB(decoded picture buffer)を含むことができ、デジタル記憶媒体によって構成されてもよい。前記ハードウェアコンポーネントは、メモリ270を内/外部コンポーネントとしてさらに含むこともできる。
【0046】
映像分割部210は、エンコーディング装置200に入力された入力映像(又は、ピクチャー、フレーム)を1つ以上の処理ユニット(processing unit)に分割することができる。一例として、前記処理ユニットは、コーディングユニット(coding unit,CU)と呼ぶことができる。この場合、コーディングユニットは、コーディングツリーユニット(coding tree unit,CTU)又は最大コーディングユニット(largest coding unit,LCU)からQTBTTT(Quad-tree binary-tree ternary-tree)構造によって再帰的に(recursively)分割されてよい。例えば、1つのコーディングユニットは、クアッドツリー構造、バイナリツリー構造、及び/又はタナーリー構造に基づいて下位(deeper)デプスの複数のコーディングユニットに分割されてよい。この場合、例えば、クアッドツリー構造がまず適用され、バイナリツリー構造及び/又はタナーリー構造が後で適用されてよい。又は、バイナリツリー構造がまず適用されてもよい。それ以上分割されない最終コーディングユニットに基づいて、本文書によるコーディング手順が行われてよい。この場合、映像特性によるコーディング効率などに基づいて、最大コーディングユニットが直ちに最終コーディングユニットとして用いられてよく、又は、必要によってコーディングユニットは再帰的に(recursively)さらに下位デプスのコーディングユニットに分割され、最適のサイズのコーディングユニットが最終コーディングユニットとして用いられてよい。ここでもコーディング手順とは、後述する予測、変換、及び復元などの手順を含むことができる。他の例として、前記処理ユニットは、予測ユニット(PU:Prediction Unit)又は変換ユニット(TU:Transform Unit)をさらに含むことができる。この場合、前記予測ユニット及び前記変換ユニットはそれぞれ、上述した最終コーディングユニットから分割又はパーティションされてよい。前記予測ユニットはサンプル予測の単位であってよく、前記変換ユニットは、変換係数を誘導する単位及び/又は変換係数からレジデュアル信号(residual signal)を誘導する単位であってよい。
【0047】
ユニットは、場合によって、ブロック(block)又は領域(area)などの用語と同じ意味で使われてよい。一般の場合、MxNブロックは、M個の列とN個の行からなるサンプル又は変換係数(transform coefficient)の集合を表すことができる。サンプルは一般に、ピクセル又はピクセルの値を表すことができ、輝度(luma)成分のピクセル/ピクセル値のみを表すこともでき、彩度(chroma)成分のピクセル/ピクセル値のみを表すこともできる。サンプルは、1つのピクチャー(又は、映像)のピクセル(pixel)又はペル(pel)に対応する用語として使われてよい。
【0048】
減算部231は、入力映像信号(原本ブロック、原本サンプル又は原本サンプルアレイ)から、予測部220から出力された予測信号(予測されたブロック、予測サンプル又は予測サンプルアレイ)を減算して、レジデュアル信号(レジデュアルブロック、レジデュアルサンプル又はレジデュアルサンプルアレイ)を生成でき、生成されたレジデュアル信号は変換部232に伝送される。予測部220は、処理対象ブロック(以下、現在ブロックという。)に対する予測を行い、前記現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部220は、現在ブロック又はCU単位でイントラ予測が適用されるか又はインター予測が適用されるかを決定できる。予測部は、各予測モードに関する説明で後述するように、予測モード情報などの予測に関する様々な情報を生成してエントロピーエンコーディング部240に伝達できる。予測に関する情報は、エントロピーエンコーディング部240でエンコードされてビットストリームの形態で出力されてよい。
【0049】
イントラ予測部222は、現在ピクチャー内のサンプルを参照して現在ブロックを予測することができる。前記参照されるサンプルは、予測モードによって、前記現在ブロックの周辺(neighbor)に位置してもよく、又は離れて位置してもよい。イントラ予測において予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。非方向性モードは、例えば、DCモード及びプレーナモード(Planar mode)を含むことができる。方向性モードは、予測方向の細密な程度によって、例えば、33個の方向性予測モード又は65個の方向性予測モードを含むことができる。ただし、これは例示であり、設定によってそれ以上又はそれ以下の個数の方向性予測モードが用いられてもよい。イントラ予測部222は、周辺ブロックに適用された予測モードを用いて、現在ブロックに適用される予測モードを決定することができる。
【0050】
インター予測部221は、参照ピクチャー上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックに対する予測されたブロックを誘導することができる。この時、インター予測モードで伝送される動き情報の量を減らすために、周辺ブロックと現在ブロック間の動き情報の相関性に基づき、動き情報をブロック、サブブロック又はサンプル単位で予測できる。前記動き情報は、動きベクトル及び参照ピクチャーインデックスを含むことができる。前記動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)情報をさらに含むことができる。インター予測において、周辺ブロックは、現在ピクチャー内に存在する空間的周辺ブロック(spatial neighboring block)と、参照ピクチャーに存在する時間的周辺ブロック(temporal neighboring block)を含むことができる。前記参照ブロックを含む参照ピクチャーと前記時間的周辺ブロックを含む参照ピクチャーは同一であってもよく、異なってもよい。前記時間的周辺ブロックは、同一位置参照ブロック(collocated reference block)、同一位置CU(colCU)などと呼ぶこともでき、前記時間的周辺ブロックを含む参照ピクチャーは、同一位置ピクチャー(collocated picture,colPic)と呼ぶこともできる。例えば、インター予測部221は、周辺ブロックに基づいて動き情報候補リストを構成し、前記現在ブロックの動きベクトル及び/又は参照ピクチャーインデックスを導出するためにどの候補が用いられるかを指示する情報を生成することができる。様々な予測モードに基づいてインター予測が行われてよく、例えば、スキップモードとマージモードでは、インター予測部221は周辺ブロックの動き情報を現在ブロックの動き情報として用いることができる。スキップモードでは、マージモードとは違い、レジデュアル信号が伝送されなくてよい。動き情報予測(motion vector prediction,MVP)モードでは、周辺ブロックの動きベクトルを動きベクトル予測子(motion vector predictor)として用い、動きベクトル差分(motion vector difference)をシグナルすることによって現在ブロックの動きベクトルを指示することができる。
【0051】
予測部220は、後述する様々な予測方法に基づいて予測信号を生成できる。例えば、予測部は、1つのブロックに対する予測のためにイントラ予測又はインター予測を適用できる他に、イントラ予測とインター予測を同時に適用することもできる。これをCIIP(combined inter and intra prediction)と呼ぶことができる。また、予測部は、ブロックに対する予測のためにイントラブロックコピー(intra block copy,IBC)を行うことができる。前記イントラブロックコピーは、例えば、SCC(screen content coding)などのように、ゲームなどのコンテンツ映像/動映像コーディングのために用いられてよい。IBCは基本的に現在ピクチャー内で予測を行うが、現在ピクチャー内で参照ブロックを導出する点でインター予測と類似に行われ得る。すなわち、IBCは、本文書で説明されるインター予測手法のうち少なくとも1つを用いることができる。
【0052】
インター予測部221及び/又はイントラ予測部222で生成された予測信号は、復元信号を生成するために用いられるか、レジデュアル信号を生成するために用いられてよい。変換部232は、レジデュアル信号に変換手法を適用して変換係数(transform coefficients)を生成することができる。例えば、変換手法は、DCT(Discrete Cosine Transform)、DST(Discrete Sine Transform)、GBT(Graph-Based Transform)、又はCNT(Conditionally Non-linear Transform)などを含むことができる。ここで、GBTは、ピクセル間の関係情報をグラフで表現するとするとき、このグラフから得られた変換を意味する。CNTは、以前に復元された全てのピクセル(all previously reconstructed pixel)を用いて予測信号を生成し、それに基づいて取得される変換を意味する。また、変換過程は、正方形の同一サイズを有するピクセルブロックに適用されてもよく、正方形以外の可変サイズのブロックに適用されてもよい。
【0053】
量子化部233は、変換係数を量子化してエントロピーエンコーディング部240に伝送し、エントロピーエンコーディング部240は、量子化された信号(量子化された変換係数に関する情報)をエンコードしてビットストリームとして出力できる。前記量子化された変換係数に関する情報は、レジデュアル情報と呼ぶことができる。量子化部233は、係数スキャン順序(scan order)に基づき、ブロック形態の量子化された変換係数を1次元ベクトルの形態で再整列でき、前記1次元ベクトル形態の量子化された変換係数に基づき、前記量子化された変換係数に関する情報を生成することができる。エントロピーエンコーディング部240は、例えば、指数ゴロム(exponential Golomb)、CAVLC(context-adaptive variable length coding)、CABAC(context-adaptive binary arithmetic coding)などのような様々なエンコーディング方法を行うことができる。エントロピーエンコーディング部240は、量子化された変換係数の他にも、ビデオ/イメージ復元に必要な情報(例えば、シンタックス要素(syntax elements)の値など)を共に又は別にエンコードすることができる。エンコードされた情報(例えば、エンコードされたビデオ/映像情報)は、ビットストリームの形態でNAL(network abstraction layer)ユニット単位で伝送又は記憶されてよい。前記ビデオ/映像情報は、アダプテーションパラメータセット(APS)、ピクチャーパラメータセット(PPS)、シーケンスパラメータセット(SPS)又はビデオパラメータセット(VPS)などの様々なパラメータセットに関する情報をさらに含むことができる。また、前記ビデオ/映像情報は、一般制限情報(general constraint information)をさらに含むことができる。本文書で後述されるシグナリング/伝送される情報及び/又はシンタックス要素は、上述したエンコーディング手順によってエンコードされて前記ビットストリームに含まれてよい。前記ビットストリームはネットワークを介して伝送されてよく、又はデジタル記憶媒体に記憶されてよい。ここで、ネットワークは放送網及び/又は通信網などを含むことができ、デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含むことができる。エントロピーエンコーディング部240から出力された信号は、伝送する送信部(図示せず)及び/又は記憶する記憶部(図示せず)がエンコーディング装置200の内/外部エレメントとして構成されてよく、又は送信部はエントロピーエンコーディング部240に含まれてもよい。
【0054】
量子化部233から出力された量子化された変換係数は、予測信号を生成するために用いられてよい。例えば、量子化された変換係数に、逆量子化部234及び逆変換部235で逆量子化及び逆変換を適用することにより、レジデュアル信号(レジデュアルブロック又はレジデュアルサンプル)を復元することができる。加算部250は、復元されたレジデュアル信号を、予測部220から出力された予測信号に足すことにより、復元(reconstructed)信号(復元ピクチャー、復元ブロック、復元サンプル又は復元サンプルアレイ)が生成されてよい。スキップモードが適用された場合のように、処理対象ブロックに対するレジデュアルがない場合に、予測されたブロックが復元ブロックとして用いられてよい。生成された復元信号は、現在ピクチャー内の次の処理対象ブロックのイントラ予測のために用いられてよく、後述するように、フィルタリングを経て次のピクチャーのインター予測のために用いられてよい。
【0055】
一方、ピクチャーエンコーディング及び/又は復元過程でLMCS(luma mapping with chroma scaling)が適用されてもよい。
【0056】
フィルタリング部260は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部260は、復元ピクチャーに様々なフィルタリング方法を適用し、修正された(modified)復元ピクチャーを生成でき、前記修正された復元ピクチャーをメモリ270、具体的にメモリ270のDPBに記憶させることができる。前記様々なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset,SAO)、適応的ループフィルター(adaptive loop filter)、両方向フィルター(bilateral filter)などを含むことができる。フィルタリング部260は、各フィルタリング方法に関する説明で後述するように、フィルタリングに関する様々な情報を生成してエントロピーエンコーディング部290に伝達することができる。フィルタリング関する情報は、エントロピーエンコーディング部290でエンコードされてビットストリームの形態で出力されてよい。
【0057】
メモリ270に伝送された修正された復元ピクチャーは、インター予測部280で参照ピクチャーとして用いられてよい。エンコーディング装置は、これによってインター予測が適用される場合に、エンコーディング装置200とデコーディング装置での予測ミスマッチを避けることができ、符号化効率も向上させることができる。
【0058】
メモリ270のDPBは、修正された復元ピクチャーをインター予測部221での参照ピクチャーとして使用するために記憶することができる。メモリ270は、現在ピクチャー内動き情報が導出された(又は、エンコードされた)ブロックの動き情報及び/又は既に復元されたピクチャー内ブロックの動き情報を記憶することができる。前記記憶された動き情報は、空間的周辺ブロックの動き情報又は時間的周辺ブロックの動き情報として活用するためにインター予測部221に伝達することができる。メモリ270は、現在ピクチャー内復元されたブロックの復元サンプルを記憶することができ、イントラ予測部222に伝達することができる。
【0059】
図3は、本文書が適用可能なビデオ/映像デコーディング装置の構成を概略的に説明する図である。
【0060】
図3を参照すると、デコーディング装置300は、エントロピーデコーディング部(entropy decoder,310)、レジデュアル処理部(residual processor,320)、予測部(predictor,330)、加算部(adder,340)、フィルタリング部(filter,350)及びメモリ(memory,360)を含んで構成されてよい。予測部330は、インター予測部331及びイントラ予測部332を含むことができる。レジデュアル処理部320は、逆量子化部(dequantizer,321)及び逆変換部(inverse transformer,321)を含むことができる。上述したエントロピーデコーディング部310、レジデュアル処理部320、予測部330、加算部340及びフィルタリング部350は、実施例によって、1つのハードウェアコンポーネント(例えば、デコーダチップセット又はプロセッサ)によって構成されてもよい。また、メモリ360は、DPB(decoded picture buffer)を含むことができ、デジタル記憶媒体によって構成されてもよい。前記ハードウェアコンポーネントは、メモリ360を内/外部コンポーネントとしてさらに含むこともできる。
【0061】
ビデオ/映像情報を含むビットストリームが入力されると、デコーディング装置300は、
図2のエンコーディング装置でビデオ/映像情報が処理されたプロセスに対応して映像を復元することができる。例えば、デコーディング装置300は、前記ビットストリームから取得したブロック分割関連情報に基づいてユニット/ブロックを導出することができる。デコーディング装置300は、エンコーディング装置で適用された処理ユニットを用いてデコーディングを行うことができる。したがって、デコーディングの処理ユニットは、例えばコーディングユニットであってよく、コーディングユニットは、コーディングツリーユニット又は最大コーディングユニットから、クアッドツリー構造、バイナリツリー構造及び/又はタナーリーツリー構造をしたがって分割されてよい。コーディングユニットから1つ以上の変換ユニットが導出されてよい。そして、デコーディング装置300でデコーディング及び出力された復元映像信号は、再生装置で再生されてよい。
【0062】
デコーディング装置300は、
図2のエンコーディング装置から出力された信号をビットストリームの形態で受信することができ、受信された信号は、エントロピーデコーディング部310でデコードされてよい。例えば、エントロピーデコーディング部310は、前記ビットストリームをパーシングし、映像復元(又は、ピクチャー復元)に必要な情報(例えば、ビデオ/映像情報)を導出することができる。前記ビデオ/映像情報は、アダプテーションパラメータセット(APS)、ピクチャーパラメータセット(PPS)、シーケンスパラメータセット(SPS)又はビデオパラメータセット(VPS)などの様々なパラメータセットに関する情報をさらに含むことができる。また、前記ビデオ/映像情報は、一般制限情報(general constraint information)をさらに含むことができる。デコーディング装置は、前記パラメータセットに関する情報及び/又は前記一般制限情報にさらに基づいてピクチャーをデコードすることができる。本文書で後述されるシグナリング/受信される情報及び/又はシンタックス要素は、前記デコーディング手順によってデコードされ、前記ビットストリームから取得されてよい。例えば、エントロピーデコーディング部310は、指数ゴロム符号化、CAVLC又はCABACなどのコーディング方法に基づいてビットストリーム内情報をデコードし、映像復元に必要なシンタックスエレメントの値、レジデュアルに関する変換係数の量子化された値を出力することができる。より詳細には、CABACエントロピーデコーディング方法は、ビットストリームから各構文要素に該当するビン(bin)を受信し、デコーディング対象構文要素情報、周辺及びデコーディング対象ブロックのデコーディング情報、或いは以前段階でデコードされたシンボル/ビンの情報を用いて文脈(context)モデルを決定し、決定された文脈モデルによってビン(bin)の発生確率を予測してビンの算術デコーディング(arithmetic decoding)を行い、各構文要素の値に該当するシンボルを生成することができる。このとき、CABACエントロピーデコーディング方法は、文脈モデル決定後に、次のシンボル/ビンの文脈モデルのためにデコードされたシンボル/ビンの情報を用いて文脈モデルをアップデートすることができる。エントロピーデコーディング部310でデコードされた情報のうち予測に関する情報は予測部330に提供されて、エントロピーデコーディング部310でエントロピーデコーディングが行われたレジデュアルに関する情報、すなわち、量子化された変換係数及び関連パラメータ情報は、逆量子化部321に入力されてよい。また、エントロピーデコーディング部310でデコードされた情報のうちフィルタリングに関する情報は、フィルタリング部350に提供されてよい。一方、エンコーディング装置から出力された信号を受信する受信部(図示せず)がデコーディング装置300の内/外部エレメントとしてさらに構成されてよく、又は受信部はエントロピーデコーディング部310の構成要素であってもよい。一方、本文書に係るデコーディング装置は、ビデオ/映像/ピクチャーデコーディング装置と呼ぶことができ、前記デコーディング装置は、情報デコーダ(ビデオ/映像/ピクチャー情報デコーダ)及びサンプルデコーダ(ビデオ/映像/ピクチャーサンプルデコーダ)に区分することもできる。前記情報デコーダは、前記エントロピーデコーディング部310を含むことができ、前記サンプルデコーダは、前記逆量子化部321、逆変換部322、予測部330、加算部340、フィルタリング部350及びメモリ360のうち少なくとも1つを含むことができる。
【0063】
逆量子化部321では、量子化された変換係数を逆量子化して変換係数を出力できる。逆量子化部321は、量子化された変換係数を、2次元ブロックの形態で再整列できる。この場合、前記再整列は、エンコーディング装置で行われた係数スキャン順序に基づいて再整列を行うことができる。逆量子化部321は、量子化パラメータ(例えば、量子化ステップサイズ情報)を用いて量子化された変換係数に対する逆量子化を行い、変換係数(transform coefficient)を取得することができる。
【0064】
逆変換部322では、変換係数を逆変換してレジデュアル信号(レジデュアルブロック、レジデュアルサンプルアレイ)を取得する。
【0065】
予測部は、現在ブロックに対する予測を行い、前記現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部は、エントロピーデコーディング部310から出力された前記予測に関する情報に基づいて、前記現在ブロックにイントラ予測が適用されるか又はインター予測が適用されるかが決定でき、具体的なイントラ/インター予測モードを決定することができる。
【0066】
予測部は、後述する様々な予測方法に基づいて予測信号を生成することができる。例えば、予測部は、1つのブロックに対する予測のためにイントラ予測又はインター予測を適用してもよく、イントラ予測とインター予測を同時に適用してもよい。これをCIIP(combined inter and intra prediction)と呼ぶことができる。また、予測部は、ブロックに対する予測のためにイントラブロックコピー(intra block copy,IBC)を行うことができる。前記イントラブロックコピーは、例えば、SCC(screen content coding)などのように、ゲームなどのコンテンツ映像/動映像コーディングのために用いられてよい。IBCは基本的に現在ピクチャー内で予測を行うが、現在ピクチャー内で参照ブロックを導出する点でインター予測と類似に行われ得る。すなわち、IBCは、本文書で説明されるインター予測手法のうち少なくとも1つを用いることができる。
【0067】
イントラ予測部332は、現在ピクチャー内のサンプルを参照して現在ブロックを予測することができる。前記参照されるサンプルは、予測モードによって前記現在ブロックの周辺(neighbor)に位置してもよく、又は離れて位置してもよい。イントラ予測において予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。イントラ予測部332は、周辺ブロックに適用された予測モードを用いて、現在ブロックに適用される予測モードを決定することができる。
【0068】
インター予測部331は、参照ピクチャー上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックに対する予測されたブロックを誘導することができる。このとき、インター予測モードで伝送される動き情報の量を減らすために、周辺ブロックと現在ブロック間の動き情報の相関性に基づいて動き情報をブロック、サブブロック又はサンプル単位で予測することができる。前記動き情報は、動きベクトル及び参照ピクチャーインデックスを含むことができる。前記動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)情報をさらに含むことができる。インター予測において、周辺ブロックは、現在ピクチャー内に存在する空間的周辺ブロック(spatial neighboring block)と、参照ピクチャーに存在する時間的周辺ブロック(temporal neighboring block)を含むことができる。例えば、インター予測部331は、周辺ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて前記現在ブロックの動きベクトル及び/又は参照ピクチャーインデックスを導出することができる。様々な予測モードに基づいてインター予測が行われてよく、前記予測に関する情報は、前記現在ブロックに対するインター予測のモードを指示する情報を含むことができる。
【0069】
加算部340は、取得されたレジデュアル信号を、予測部330から出力された予測信号(予測されたブロック、予測サンプルアレイ)に足すことにより、復元信号(復元ピクチャー、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合のように、処理対象ブロックに対するレジデュアルがない場合に、予測されたブロックが復元ブロックとして用いられてよい。
【0070】
加算部340は、復元部又は復元ブロック生成部と呼ぶことができる。生成された復元信号は、現在ピクチャー内の次の処理対象ブロックのイントラ予測のために用いられてよく、後述するように、フィルタリングを経て出力されてもよく、又は次のピクチャーのインター予測のために用いられてもよい。
【0071】
一方、ピクチャーデコーディング過程でLMCS(luma mapping with chroma scaling)が適用されてもよい。
【0072】
フィルタリング部350は、復元信号にフィルタリングを適用して、主観的/客観的画質を向上させることができる。例えば、フィルタリング部350は、復元ピクチャーに様々なフィルタリング方法を適用して、修正された(modified)復元ピクチャーを生成でき、前記修正された復元ピクチャーを、メモリ60、具体的にメモリ360のDPBに伝送することができる。前記様々なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルター(adaptive loop filter)、両方向フィルター(bilateral filter)などを含むことができる。
【0073】
メモリ360のDPBに記憶された(修正された)復元ピクチャーは、インター予測部331で参照ピクチャーとして用いられてよい。メモリ360は、現在ピクチャー内動き情報が導出された(又は、デコードされた)ブロックの動き情報及び/又は既に復元されたピクチャー内ブロックの動き情報を記憶することができる。前記記憶された動き情報は、空間的周辺ブロックの動き情報又は時間的周辺ブロックの動き情報として活用するためにインター予測部331に伝達することができる。メモリ360は、現在ピクチャー内復元されたブロックの復元サンプルを記憶することができ、イントラ予測部332に伝達することができる。
【0074】
本明細書において、デコーディング装置300の予測部330、逆量子化部321、逆変換部322及びフィルタリング部350などで説明された実施例は、それぞれ、エンコーディング装置200の予測部220、逆量子化部234、逆変換部235及びフィルタリング部260などにも同一に又は対応するように適用されてよい。
【0075】
上述したように、ビデオコーディングを行う際に、圧縮効率を上げるために予測を行う。これにより、コーディング対象ブロックである現在ブロックに対する予測サンプルを含む予測されたブロックを生成することができる。ここで、前記予測されたブロックは、空間ドメイン(又は、ピクセルドメイン)における予測サンプルを含む。前記予測されたブロックは、エンコーディング装置及びデコーディング装置で同一に導出され、前記エンコーディング装置は、原本ブロックの原本サンプル値自体ではなく前記原本ブロックと前記予測されたブロック間のレジデュアルに関する情報(レジデュアル情報)をデコーディング装置にシグナルすることによって映像コーディング効率を上げることができる。デコーディング装置は、前記レジデュアル情報に基づいて、レジデュアルサンプルを含むレジデュアルブロックを導出し、前記レジデュアルブロックと前記予測されたブロックを合わせて、復元サンプルを含む復元ブロックを生成でき、復元ブロックを含む復元ピクチャーを生成することができる。
【0076】
前記レジデュアル情報は、変換及び量子化手順によって生成されてよい。例えば、エンコーディング装置は、前記原本ブロックと前記予測されたブロック間のレジデュアルブロックを導出し、前記レジデュアルブロックに含まれたレジデュアルサンプル(レジデュアルサンプルアレイ)に変換手順を行って変換係数を導出し、前記変換係数に量子化手順を行って量子化された変換係数を導出し、関連したレジデュアル情報を(ビットストリームを用いて)デコーディング装置にシグナルすることができる。ここで、前記レジデュアル情報は、前記量子化された変換係数の値情報、位置情報、変換手法、変換カーネル、量子化パラメータなどの情報を含むことができる。デコーディング装置は、前記レジデュアル情報に基づいて逆量子化/逆変換手順を行い、レジデュアルサンプル(又は、レジデュアルブロック)を導出することができる。デコーディング装置は、予測されたブロックと前記レジデュアルブロックに基づいて復元ピクチャーを生成することができる。また、エンコーディング装置は、その後、ピクチャーのインター予測のための参照のために、量子化された変換係数を逆量子化/逆変換してレジデュアルブロックを導出し、これに基づいて復元ピクチャーを生成することができる。
【0077】
図4には、本文書が適用されるコンテンツストリーミングシステム構造を例示する。
【0078】
また、本文書が適用されるコンテンツストリーミングシステムは、大きく、エンコーディングサーバー、ストリーミングサーバー、ウェブサーバー、メディアストレージ、ユーザ装置及びマルチメディア入力装置を含むことができる。
【0079】
前記エンコーディングサーバーは、スマートフォン、カメラ、キャムコーダなどのようなマルチメディア入力装置から入力されたコンテンツを、デジタルデータに圧縮してビットストリームを生成し、これを前記ストリーミングサーバーに伝送する役割を担う。他の例として、スマートフォン、カメラ、キャムコーダなどのようなマルチメディア入力装置がビットストリームを直接生成する場合に、前記エンコーディングサーバーは省略されてよい。前記ビットストリームは、本文書が適用されるエンコーディング方法又はビットストリーム生成方法によって生成されてよく、前記ストリーミングサーバーは、前記ビットストリームを伝送又は受信する過程で一時的に前記ビットストリームを保存することができる。
【0080】
前記ストリーミングサーバーは、ウェブサーバーを介したユーザ要請に基づいてマルチメディアデータをユーザ装置に伝送し、前記ウェブサーバーは、いかなるサービスがあるかをユーザに知らせる媒介体の役割を担う。ユーザが前記ウェブサーバーに所望のサービスを要請すれば、前記ウェブサーバーはこれをストリーミングサーバーに伝達し、前記ストリーミングサーバーはユーザにマルチメディアデータを伝送する。このとき、前記コンテンツストリーミングシステムは別の制御サーバーを含むことができ、この場合、前記制御サーバーは前記コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割を担う。
【0081】
前記ストリーミングサーバーは、メディアストレージ及び/又はエンコーディングサーバーからコンテンツを受信することができる。例えば、前記エンコーディングサーバーからコンテンツを受信する場合に、前記コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、前記ストリーミングサーバーは前記ビットストリームを一定時間保存することができる。
【0082】
前記ユーザ装置の例には、携帯電話、スマートフォン(smart phone)、ノートパソコン(laptop computer)、デジタル放送用端末機、PDA(personal digital assistants)、PMP(portable multimedia player)、ナビゲーション、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ultrabook)、ウェアラブルデバイス(wearable device,例えば、ウォッチ型端末機(smartwatch)、グラス型端末機(smart glass)、HMD(head mounted display))、デジタルTV、デスクトップコンピュータ、デジタルサイネージなどがあり得る。前記コンテンツストリーミングシステム内の各サーバーは分散サーバーとして運営されてよく、この場合、各サーバーで受信するデータは分散処理されてよい。
【0083】
図5には、本文書に係る多重変換手法を概略的に示す。
【0084】
図5を参照すると、変換部は、上述した
図2のエンコーディング装置内の変換部に対応してよく、逆変換部は、上述した
図2のエンコーディング装置内の逆変換部、又は
図3のデコーディング装置内の逆変換部に対応してよい。
【0085】
変換部は、レジデュアルブロック内のレジデュアルサンプル(レジデュアルサンプルアレイ)に基づいて1次変換を行って(1次)変換係数を導出することができる(S510)。このような1次変換(primary transform)は、核心変換(core transform)と呼ぶことができる。ここで、前記1次変換は、多重変換選択(Multiple Transform Selection,MTS)を基にしてよく、1次変換として多重変換が適用される場合に、多重核心変換と呼ばれてよい。
【0086】
多重核心変換は、DCT(Discrete Cosine Transform)タイプ2とDST(Discrete Sine Transform)タイプ7、DCTタイプ8、及び/又はDSTタイプ1をさらに使用して変換する方式を表すことができる。すなわち、前記多重核心変換は、前記DCTタイプ2、前記DSTタイプ7、前記DCTタイプ8及び前記DSTタイプ1の中から選択された複数の変換カーネルに基づいて空間ドメインのレジデュアル信号(又は、レジデュアルブロック)を周波数ドメインの変換係数(又は、1次変換係数)に変換する変換方法を表すことができる。ここで、前記1次変換係数は、変換部の立場では臨時変換係数と呼ばれてよい。
【0087】
言い換えると、既存の変換方法が適用される場合に、DCTタイプ2に基づいてレジデュアル信号(又は、レジデュアルブロック)に対する空間ドメインから周波数ドメインへの変換が適用されて変換係数が生成可能であった。これと違い、前記多重核心変換が適用される場合には、DCTタイプ2、DSTタイプ7、DCTタイプ8、及び/又はDSTタイプ1などに基づいてレジデュアル信号(又は、レジデュアルブロック)に対する空間ドメインから周波数ドメインへの変換が適用されて変換係数(又は、1次変換係数)が生成可能である。ここで、DCTタイプ2、DSTタイプ7、DCTタイプ8、及びDSTタイプ1などは、変換タイプ、変換カーネル(kernel)又は変換コア(core)(だ)と呼ぶことができる。このようなDCT/DST変換タイプは基底関数に基づいて定義されてよい。
【0088】
前記多重核心変換が行われる場合に、前記変換カーネルのうち、対象ブロックに対する垂直変換カーネル及び水平変換カーネルが選択されてよく、前記垂直変換カーネルに基づいて前記対象ブロックに対する垂直変換が行われ、前記水平変換カーネルに基づいて前記対象ブロックに対する水平変換が行われてよい。ここで、前記水平変換は、前記対象ブロックの水平成分に対する変換を表すことができ、前記垂直変換は、前記対象ブロックの垂直成分に対する変換を表すことができる。前記垂直変換カーネル/水平変換カーネルは、レジデュアルブロックを含む対象ブロック(CU又はサブブロック)の予測モード及び/又は変換インデックスに基づいて適応的に決定されてよい。
【0089】
また、一例によれば、MTSを適用して1次変換を行う場合に、特定基底関数を所定値に設定し、垂直変換又は水平変換の時にいかなる基底関数が適用されるかを組み合わせて変換カーネルに対するマッピング関係を設定することができる。例えば、水平方向変換カーネルをtrTypeHorと表し、垂直方向変換カーネルをtrTypeVerと表す場合に、trTypeHor又はtrTypeVer値0はDCT2に設定され、trTypeHor又はtrTypeVer値1はDST7に設定され、trTypeHor又はtrTypeVer値2はDCT8に設定されてよい。
【0090】
この場合、複数の変換カーネルセットのうちいずれか1つを指示するために、MTSインデックス情報がエンコードされてデコーディング装置にシグナルされてよい。例えば、MTSインデックスが0であれば、trTypeHor及びtrTypeVer値がいずれも0であることを示し、MTSインデックスが1であれば、trTypeHor及びtrTypeVer値がいずれも1であることを示し、MTSインデックスが2であれば、trTypeHor値は2で、trTypeVer値は1であることを示し、MTSインデックスが3であれば、trTypeHor値は1で、trTypeVer値は2であることを示し、MTSインデックスが4であれば、trTypeHor及びtrTypeVer値がいずれも2であることを示すことができる。
【0091】
一例によって、MTSインデックス情報による変換カーネルセットを表にすると、次の通りである。
【0092】
【0093】
変換部は、前記(1次)変換係数に基づいて2次変換を行い、修正された(2次)変換係数を導出することができる(S520)。前記1次変換は、空間ドメインから周波数ドメインへの変換であり、前記2次変換は、(1次)変換係数間に存在する相関関係(correlation)を用いてより圧縮的な表現に変換することを意味する。前記2次変換は非分離変換(non- separable transform)を含むことができる。この場合、前記2次変換は、非分離2次変換(non-separable secondary transform,NSST)又はMDNSST(mode-dependent non-separable secondary transform)と呼ぶことができる。前記非分離2次変換は、前記1次変換によって導出された(1次)変換係数を、非分離変換マトリックス(non-separable transform matrix)に基づいて2次変換し、レジデュアル信号に対する修正された変換係数(又は、2次変換係数)を生成する変換を表すことができる。ここで、前記非分離変換マトリックスに基づき、前記(1次)変換係数に対して垂直変換及び水平変換を分離して(又は、水平垂直変換を独立して)適用せずに一度で変換を適用することができる。言い換えると、前記非分離2次変換は、前記(1次)変換係数に対して垂直方向と水平方向に別個に適用されず、例えば、2次元信号(変換係数)を特定の定められた方向(例えば、行優先(row-first)方向又は列優先(column-first)方向)によって1次元信号として再整列した後、前記非分離変換マトリックスに基づいて、修正された変換係数(又は、2次変換係数)を生成する変換方法を表すことができる。例えば、行優先順序は、MxNブロックに対して1番目行、2番目行、...,N番目行の順序で一列に配置するものであり、列優先順序は、MxNブロックに対して1番目列、2番目列、...、M番目列の順序で一列に配置するものである。前記非分離2次変換は、(1次)変換係数で構成されたブロック(以下、変換係数ブロックと呼ぶことができる。)の左上端(top-left)領域に対して適用されてよい。例えば、前記変換係数ブロックの幅(W)及び高さ(H)が両方とも8以上である場合に、8×8非分離2次変換が、前記変換係数ブロックの左上端8×8領域に対して適用されてよい。また、前記変換係数ブロックの幅(W)及び高さ(H)が両方とも4以上であり、且つ前記変換係数ブロックの幅(W)又は高さ(H)が8よりも小さい場合に、4×4非分離2次変換が前記変換係数ブロックの左上端min(8,W)×min(8,H)領域に対して適用されてよい。ただし、実施例はこれに限定されず、例えば、前記変換係数ブロックの幅(W)又は高さ(H)がいずれも4以上である条件のみを満足しても、4×4非分離2次変換が前記変換係数ブロックの左上端min(8,W)×min(8,H)領域に対して適用されてもよい。
【0094】
具体的には、例えば、4×4入力ブロックが用いられる場合に、非分離2次変換は次のように行われてよい。
【0095】
前記4×4入力ブロックXは、次のように表されてよい。
【0096】
【0097】
前記Xをベクトルの形態で表す場合に、ベクトル
は次のように表されてよい。
【0098】
【0099】
式2のように、ベクトル
は、行優先(row-first)順序によって、式1のXの2次元ブロックを1次元ベクトルとして再配列する。
【0100】
この場合、前記2次非分離変換は次のように計算されてよい。
【0101】
【0102】
ここで、
は、変換係数ベクトルを表し、Tは、16×16(非分離)変換マトリックスを表す。
【0103】
上記式3によって16×1変換係数ベクトル
が導出されてよく、前記
は、スキャン順序(水平、垂直、対角(diagonal)など)によって4×4ブロックとして再構成(re-organized)されてよい。ただし、上述した計算は例示であり、非分離2次変換の計算複雑度を減らすために、HyGT(Hypercube-Givens Transform)などが非分離2次変換の計算のために用いられてもよい。
【0104】
一方、前記非分離2次変換は、モード依存(mode dependent)変換カーネル(又は、変換コア、変換タイプ)が選択されてよい。ここで、モードは、イントラ予測モード及び/又はインター予測モードを含むことができる。
【0105】
上述したように、前記非分離2次変換は、前記変換係数ブロックの幅(W)及び高さ(H)に基づいて決定された8×8変換又は4×4変換に基づいて行われてよい。8x8変換は、WとHがいずれも8と等しい又はより大きいとき、当該変換係数ブロック内部に含まれた8x8領域に適用され得る変換を表し、当該8x8領域は当該変換係数ブロック内部の左上端8x8領域であってよい。類似に、4x4変換は、WとHがいずれも4と等しい又はより大きいとき、当該変換係数ブロック内部に含まれた4x4領域に適用され得る変換を表し、当該4x4領域は当該変換係数ブロック内部の左上端4x4領域であってよい。例えば、8x8変換カーネルマトリックスは64x64/16x64行列、4x4変換カーネルマトリックスは16x16/8x16行列であってよい。
【0106】
このとき、モード依存変換カーネル選択のために、8×8変換及び4×4変換の両方に対して非分離2次変換のための変換セット当たりに2個ずつの非分離2次変換カーネルが構成されてよく、変換セットは4個であってよい。すなわち、8×8変換に対して4個の変換セットが構成され、4×4変換に対して4個の変換セットが構成されてよい。ここで、8×8変換に対する4個の変換セットにはそれぞれ2個ずつの8×8変換カーネルが含まれてよく、この場合、4×4変換に対する4個の変換セットにはそれぞれ2個ずつの4×4変換カーネルが含まれてよい。
【0107】
ただし、前記変換のサイズ、すなわち変換が適用される領域のサイズは例示であり、8×8又は4×4以外のサイズが用いられてもよく、前記セットの数はn個、各セット内変換カーネルの数はk個であってもよい。
【0108】
前記変換セットは、NSSTセット又はLFNSTセットと呼ぶことができる。前記変換セットのうち特定セットの選択は、例えば、現在ブロック(CU又はサブブロック)のイントラ予測モードに基づいて行われてよい。LFNST(Low-Frequency Non-Separable Transform)は、後述される減少された非分離変換の一例でよく、低周波成分に対する非分離変換を表す。
【0109】
参考として、例えば、イントラ予測モードは、2個の非方向性(non-directinoal)(又は、非角度性(non-angular))イントラ予測モードと65個の方向性(directional)(又は、角度性(angular))イントラ予測モードを含むことができる。前記非方向性イントラ予測モードは、0番であるプレーナ(planar)イントラ予測モード及び1番であるDCイントラ予測モードを含むことができ、前記方向性イントラ予測モードは、2番~66番の65個のイントラ予測モードを含むことができる。ただし、これは例示であり、本文書は、イントラ予測モードの数が異なる場合にも適用されてよい。一方、場合によって67番イントラ予測モードがさらに用いられてもよく、前記67番イントラ予測モードはLM(linear model)モードを表すことができる。
【0110】
図6には、65個の予測方向のイントラ方向性モードを例示する。
【0111】
図6を参照すると、右下方の対角予測方向を有する34番イントラ予測モードを中心に、水平方向性(horizontal directionality)を有するイントラ予測モードと垂直方向性(vertical directionality)を有するイントラ予測モードを区分できる。
図6のHとVはそれぞれ、水平方向性と垂直方向性を意味し、-32~32の数字は、サンプルグリッドポジション(sample grid position)上で1/32単位の変位を表す。これは、モードインデックス値に対するオフセットを表すことができる。2番~33番イントラ予測モードは水平方向性を、34番~66番イントラ予測モードは垂直方向性を有する。一方、34番イントラ予測モードは厳密には水平方向性でも垂直方向性でもないといえるが、2次変換の変換セットを決定する観点で水平方向性に属すると分類してよい。これは、34番イントラ予測モードを中心に対称である垂直方向モードに対しては入力データをトランスポーズ(transpose)して使用し、34番イントラ予測モードに対しては水平方向モードに対する入力データ整列方式を用いるためである。入力データをトランスポーズするということは、2次元ブロックデータMxNに対して行が列になり、列が行になってNxMデータを構成することを意味する。18番イントラ予測モードと50番イントラ予測モードはそれぞれ、水平イントラ予測モード(horizontal intra prediction mode)、垂直イントラ予測モード(vertical intra prediction mode)を表し、2番イントラ予測モードは左側参照ピクセルを持って右上の方向に予測するので、右上方の対角イントラ予測モードと呼ぶことができ、同様に、34番イントラ予測モードは右下方の対角イントラ予測モード、66番イントラ予測モードは左下方の対角イントラ予測モードと呼ぶことができる。
【0112】
一例によって、イントラ予測モードによって4個の変換セットが、例えば次表のようにマップされてよい。
【0113】
【0114】
表2のように、イントラ予測モードによって4個の変換セットのいずれか1つ、すなわちlfnstTrSetIdxが0から3、すなわち、4個のうちいずれか1つにマップされてよい。
【0115】
一方、非分離変換に特定セットが用いられることが決定されると、非分離2次変換インデックスによって、前記特定セット内のk個の変換カーネルのうちの1つが選択されてよい。エンコーディング装置はRD(rate-distortion)チェックベースで特定変換カーネルを示す非分離2次変換インデックスを導出することができ、前記非分離2次変換インデックスをデコーディング装置にシグナルすることができる。デコーディング装置は、前記非分離2次変換インデックスに基づいて特定セット内k個の変換カーネルのうち1つを選択できる。例えば、lfnstインデックス値0は1番目非分離2次変換カーネルを示すことができ、lfnstインデックス値1は2番目非分離2次変換カーネルを示すことができ、lfnstインデックス値2は3番目非分離2次変換カーネルを示すことができる。又は、lfnstインデックス値0は、対象ブロックに対して1番目非分離2次変換が適用されないことを示すことができ、lfnstインデックス値1~3は、前記3個の変換カーネルを示すことができる。
【0116】
変換部は、選択された変換カーネルに基づいて前記非分離2次変換を行い、修正された(2次)変換係数を取得できる。前記修正された変換係数は、上述したように、量子化部で量子化された変換係数として導出されてよく、エンコードされてデコーディング装置にシグナルされ、及びエンコーディング装置内の逆量子化/逆変換部に伝達されてよい。
【0117】
一方、上述したように、2次変換が省略される場合に、前記1次(分離)変換の出力である(1次)変換係数が、上述したように、量子化部で量子化された変換係数として導出されてよく、エンコードされてデコーディング装置にシグナルされ、及びエンコーディング装置内の逆量子化/逆変換部に伝達されてよい。
【0118】
逆変換部は、上述した変換部で行われた手順の逆順で一連の手順を行うことができる。逆変換部は、(逆量子化された)変換係数を受信し、2次(逆)変換を行って(1次)変換係数を導出し(S550)、前記(1次)変換係数に対して1次(逆)変換を行ってレジデュアルブロック(レジデュアルサンプル)を取得することができる(S560)。ここで、前記1次変換係数は、逆変換部の立場では、修正された(modified)変換係数と呼ばれてよい。エンコーディング装置及びデコーディング装置は、前記レジデュアルブロック及び予測されたブロックに基づいて復元ブロックを生成し、これに基づいて復元ピクチャーを生成できることは上述した通りである。
【0119】
一方、デコーディング装置は、2次逆変換適用有無決定部(又は、2次逆変換を適用するか否かを決定する要素)と、2次逆変換決定部(又は、2次逆変換を決定する要素)をさらに含むことができる。2次逆変換適用有無決定部は、2次逆変換を適用するか否かを決定できる。例えば、2次逆変換は、NSST、RST又はLFNSTであってよく、2次逆変換適用有無決定部は、ビットストリームからパースした2次変換フラグに基づいて2次逆変換を適用するか否かを決定できる。他の例として、2次逆変換適用有無決定部は、レジデュアルブロックの変換係数に基づいて2次逆変換を適用するか否かを決定することもできる。
【0120】
2次逆変換決定部は2次逆変換を決定できる。このとき、2次逆変換決定部は、イントラ予測モードによって指定されたLFNST(NSST又はRST)変換セットに基づいて、現在ブロックに適用される2次逆変換を決定できる。また、一実施例として、1次変換決定方法に依存して(depend on)2次変換決定方法が決定されてよい。イントラ予測モードによって1次変換と2次変換の様々な複数の組合せが決定されてよい。また、一例として、2次逆変換決定部は、現在ブロックのサイズに基づいて2次逆変換が適用される領域を決定することもできる。
【0121】
一方、上述したように、2次(逆)変換が省略される場合に(逆量子化された)変換係数を受信し、前記1次(分離)逆変換を行いってレジデュアルブロック(レジデュアルサンプル)を取得することができる。エンコーディング装置及びデコーディング装置は、前記レジデュアルブロック及び予測されたブロックに基づいて復元ブロックを生成し、これに基づいて復元ピクチャーを生成できることは上述した通りである。
【0122】
一方、本文書では、非分離2次変換に伴う計算量とメモリ要求量の低減のために、NSSTの概念で変換マトリックス(カーネル)のサイズが減少したRST(reduced secondary transform)を適用することができる。
【0123】
一方、本文書で説明された変換カーネル、変換マトリックス、変換カーネルマトリックスを構成する係数、すなわち、カーネル係数又はマトリックス係数は、8ビットで表現されてよい。これは、デコーディング装置及びエンコーディング装置において具現されるための一条件であってよく、既存の9ビット又は10ビットと比較して、合理的に受容可能な性能低下を伴いながら変換カーネルを記憶するためのメモリ要求量を減らすことができる。また、カーネルマトリックスを8ビットで表現することにより、小さい乗算器を使用でき、最適のソフトウェア具現のために用いられるSIMD(Single Instruction Multiple Data)命令に、より一層適合であり得る。
【0124】
本明細書において、RSTは、簡素化ファクター(factor)によってサイズが減少した変換マトリックス(transform matrix)に基づいて、対象ブロックに対するレジデュアルサンプルに対して行われる変換を意味できる。簡素化変換を行う場合に、変換マトリックスのサイズ減少によって変換時に要求される演算量が減少し得る。すなわち、RSTは、サイズの大きいブロックの変換又は非分離変換時に発生する演算複雑度(complexity)の問題を解消するために用いられてよい。
【0125】
RSTは、減少した変換(reduced transform)、減少した2次変換(reduced secondary transform)、減少変換(reduction transform)、簡素化した変換(simplified transform)、簡素変換(simple transform)などの様々な用語としてもよく、RSTの名称は、挙げられたこれらの例示に限定されない。又は、RSTは、主に変換ブロックにおいて0以外の係数を含む低周波領域でなされることから、LFNST(Low-Frequency Non-Separable Transform)と呼ぶこともでき、前記変換インデックスは、LFNSTインデックスと呼ぶことができる。
【0126】
一方、2次逆変換がRSTベースでなされる場合に、エンコーディング装置200の逆変換部235とデコーディング装置300の逆変換部322は、変換係数に対する逆RSTに基づいて修正された変換係数を導出する逆RST部と、修正された変換係数に対する逆1次変換に基づいて前記対象ブロックに対するレジデュアルサンプルを導出する逆1次変換部を含むことができる。逆1次変換は、レジデュアルに適用された1次変換の逆変換を意味する。本文書において、変換に基づいて変換係数を導出することは、当該変換を適用して変換係数を導出することを意味できる。
【0127】
図7は、本文書の一実施例に係るRSTを説明するための図である。
【0128】
本明細書において、「対象ブロック」は、コーディングが行われる現在ブロック又はレジデュアルブロック又は変換ブロックを意味できる。
【0129】
一実施例に係るRSTにおいて、N次元ベクトル(N dimensional vector)が、別の空間に位置しているR次元ベクトル(R dimensional vector)にマップされて、減少した変換マトリックスが決定されてよく、ここで、RはNよりも小さい。Nは、変換が適用されるブロックの1辺の長さ(length)の自乗又は変換が適用されるブロックと対応する変換係数の総個数を意味でき、簡素化ファクターは、R/N値を意味できる。簡素化ファクターは、減少したファクター(reduced factor)、減少ファクター(reduction factor)、簡素化したファクター(simplified factor)、簡素ファクター(simple factor)などの様々な用語とすることができる。一方、Rは、簡素化係数(reduced coefficient)と呼ぶことができるが、場合によっては簡素化ファクターがRを意味することもできる。また、場合によって、簡素化ファクターはN/R値を意味することもできる。
【0130】
一実施例において、簡素化ファクター又は簡素化係数は、ビットストリームによってシグナルされてよいが、実施例がこれに限定されるものではない。例えば、簡素化ファクター又は簡素化係数に対する既に定義された値が、各エンコーディング装置200及びデコーディング装置300に記憶されていてよく、この場合、簡素化ファクター又は簡素化係数は別にシグナルされなくてよい。
【0131】
一実施例に係る簡素化変換マトリックスのサイズは、通常の変換マトリックスのサイズNxNよりも小さいRxNであり、下式4のように定義されてよい。
【0132】
【0133】
図7の(a)に示す、減少した変換(Reduced Transform)ブロック内のマトリックスTは、式4のマトリックスT
RxNを意味できる。
図7の(a)のように、対象ブロックに対するレジデュアルサンプルに対して簡素化変換マトリックスT
RxNが掛けられる場合に、対象ブロックに対する変換係数が導出され得る。
【0134】
一実施例において、変換が適用されるブロックのサイズが8x8であり、R=16(すなわち、R/N=16/64=1/4)である場合に、
図7の(a)によるRSTは、下式5のような行列演算で表現されてよい。この場合、メモリと掛け演算が簡素化ファクターによって略1/4に減少し得る。
【0135】
本文書において、行列演算とは、行列を列ベクトルの左側に置き、行列と列ベクトルを掛けて列ベクトルを得る演算と理解されてよい。
【0136】
【0137】
式5で、r1~r64は、対象ブロックに対するレジデュアルサンプルを表すことができ、より具体的には、1次変換を適用して生成された変換係数であってよい。式5の演算の結果、対象ブロックに対する変換係数ciが導出され得、ciの導出過程は、式6の通りでよい。
【0138】
【0139】
式6の演算の結果、対象ブロックに対する変換係数c1~cRが導出され得る。すなわち、R=16の場合に、対象ブロックに対する変換係数c1~c16が導出され得る。仮にRSTではなく通常の(regular)変換が適用され、サイズ64x64(NxN)の変換マトリックスがサイズ64x1(Nx1)のレジデュアルサンプルに掛けられたとすれば、対象ブロックに対する変換係数が64個(N個)が導出されたはずであるが、RSTが適用されたため、対象ブロックに対する変換係数が16個(R個)のみ導出されるわけである。対象ブロックに対する変換係数の総個数がN個からR個に減少し、エンコーディング装置200がデコーディング装置300に伝送するデータの量が減少するので、エンコーディング装置200-デコーディング装置300間の伝送効率が増加し得る。
【0140】
変換マトリックスのサイズ観点で検討すれば、通常の変換マトリックスのサイズは64x64(NxN)であるが、簡素化変換マトリックスのサイズは16x64(RxN)に減少するので、通常の変換を行う時と比較すれば、RSTを行う際にメモリ使用をR/Nの割合に減少させることができる。また、通常の変換マトリックスを用いる時の掛け算演算数NxNと比較すれば、簡素化変換マトリックスを用いると掛け算演算数をR/Nの割合に減少(RxN)させることができる。
【0141】
一実施例において、エンコーディング装置200の変換部232は、対象ブロックに対するレジデュアルサンプルに1次変換及びRSTベースの2次変換を行うことによって対象ブロックに対する変換係数を導出することができる。このような変換係数はデコーディング装置300の逆変換部に伝達されてよく、デコーディング装置300の逆変換部322は、変換係数に対する逆RST(reduced secondary transform)に基づいて修正された変換係数を導出し、修正された変換係数に対する逆1次変換に基づいて対象ブロックに対するレジデュアルサンプルを導出することができる。
【0142】
一実施例に係る逆RSTマトリックスTNxRのサイズは、通常の逆変換マトリックスのサイズNxNよりも小さいNxRであり、式4に示す簡素化変換マトリックスTRxNとトランスポーズ(transpose)の関係にある。
【0143】
図7の(b)に示す、減少した逆変換(Reduced Inv.Transform)ブロック内のマトリックスT
tは、逆RSTマトリックスT
RxN
Tを意味できる(上付き文字Tは、トランスポーズを意味する。)。
図7の(b)のように、対象ブロックに対する変換係数に対して逆RSTマトリックスT
RxN
Tが掛けられる場合に、対象ブロックに対する修正された変換係数又は対象ブロックに対するレジデュアルサンプルが導出され得る。逆RSTマトリックスT
RxN
Tは、(T
RxN)
T
NxRと表現できる。
【0144】
より具体的に、2次逆変換として逆RSTが適用される場合には、対象ブロックに対する変換係数に対して逆RSTマトリックスTRxN
Tが掛けられると、対象ブロックに対する修正された変換係数が導出され得る。一方、逆1次変換として逆RSTが適用されてよく、この場合、対象ブロックに対する変換係数に対して逆RSTマトリックスTRxNTが掛けられると、対象ブロックに対するレジデュアルサンプルが導出され得る。
【0145】
一実施例において、逆変換が適用されるブロックのサイズが8x8であり、R=16(すなわち、R/N=16/64=1/4)である場合に、
図7の(b)によるRSTは、下式7のような行列演算で表現されてよい。
【0146】
【0147】
式7で、c1~c16は、対象ブロックに対する変換係数を表すことができる。式7の演算の結果、対象ブロックに対する修正された変換係数又は対象ブロックに対するレジデュアルサンプルを表すriが導出され得、riの導出過程は式8との通りでよい。
【0148】
【0149】
式8の演算の結果、対象ブロックに対する修正された変換係数又は対象ブロックに対するレジデュアルサンプルを表すr1~rNが導出され得る。逆変換マトリックスのサイズ観点で検討すれば、通常の逆変換マトリックスのサイズは64x64(NxN)であるが、簡素化逆変換マトリックスのサイズは64x16(NxR)に減少するので、通常の逆変換を行う時と比較すれば、逆RSTを行う際にメモリ使用をR/Nの割合に減少させることができる。また、通常の逆変換マトリックスを用いる時の掛け算演算数NxNと比較すれば、簡素化逆変換マトリックスを用いる場合に掛け算演算数をR/Nの割合に減少(NxR)させることができる。
【0150】
一方、8x8 RSTに対しても、表2のような変換セット構成を適用できる。すなわち、表2での変換セットによって当該8x8 RSTが適用されてよい。1つの変換セットは、画面内予測モードによって2個又は3個の変換(カーネル)で構成されているので、2次変換を適用しない場合まで含めて最大で4個の変換のうち1つを選択するように構成されてよい。2次変換を適用しない時の変換は、恒等行列が適用されたものと見なされてよい。4個の変換に対してそれぞれ0、1、2、3のインデックスを付与するとしたとき(例えば、0番インデックスを恒等行列、すなわち2次変換を適用しない場合と割り当てることができる。)、変換インデックス又はlfnstインデックスというシンタックス要素(syntax element)を変換係数ブロックごとにシグナルし、適用される変換を指定できる。すなわち、変換インデックスを用いて、8x8左上端ブロックに対して、RST構成では8x8 RSTを指定でき、又はLFNSTが適用される場合に8x8 lfnstを指定できる。8x8 lfnst及び8x8 RSTは、変換の対象になる対象ブロックのWとHがいずれも8と等しい又はより大きいとき、当該変換係数ブロック内部に含まれた8x8領域に適用され得る変換を表し、当該8x8領域は、当該変換係数ブロック内部の左上端8x8領域であってよい。類似に、4x4 lfnst及び4x4 RSTは、対象ブロックのWとHがいずれも4と等しい又はより大きいとき、当該変換係数ブロック内部に含まれた4x4領域に適用され得る変換を表し、当該4x4領域は、当該変換係数ブロック内部の左上端4x4領域であってよい。
【0151】
一方、本文書の一実施例によって、エンコーディング過程の変換において、8x8領域を構成する64個のデータに対して、16x64変換カーネルマトリックスではなく、48個のデータのみを選択して最大16x48変換カーネルマトリックスを適用することができる。ここで、「最大」とは、m個の係数を生成できるmx48変換カーネルマトリックスに対してmの最大値が16であるということを意味する。すなわち、8x8領域にmx48変換カーネルマトリックス(m≦16)を適用してRSTを行う場合に、48個のデータを受信してm個の係数を生成することができる。mが16である場合に、48個のデータを受信して16個の係数を生成する。すなわち、48個のデータが48x1ベクトルをなすとしたとき、16x48行列と48x1ベクトルを順に掛け、16x1ベクトルが生成されてよい。このとき、8x8領域をなす48個のデータを適切に配列して48x1ベクトルを構成できる。例えば、8x8領域のうち右下端4x4領域を除く領域を構成する48個のデータに基づいて48x1ベクトルを構成できる。この時、最大16x48変換カーネルマトリックスを適用して行列演算を行うと16個の修正された変換係数が生成されるが、16個の修正された変換係数はスキャニング順序によって左上端4x4領域に配置されてよく、右上端4x4領域と左下端4x4領域は0で埋められてよい。
【0152】
デコーディング過程の逆変換には、上述した変換カーネルマトリックスのトランスポーズされたマトリックスが用いられてよい。すなわち、デコーディング装置において行われる逆変換過程として逆RST又はLFNSTが行われる場合に、逆RSTを適用する入力係数データは所定の配列順序によって1次元ベクトルとして構成され、1次元ベクトルに当該逆RST行列を左側で掛けて得られた修正された係数ベクトルは所定の配列順序によって2次元ブロックに配列されてよい。
【0153】
要するに、変換過程において、8x8領域にRST又はLFNSTが適用される場合に、8x8領域の変換係数のうち8x8領域の右下端領域を除く左上端、右上端、左下端領域の48個変換係数と16x48の変換カーネルマトリックスとの行列演算が行われる。行列演算のために48個の変換係数は1次元配列の形態で入力される。このような行列演算が行われると、16個の修正された変換係数が導出され、修正された変換係数は8x8領域の左上端領域に配列され得る。
【0154】
逆に、逆変換過程において、8x8領域に逆RST又はLFNSTが適用される場合に、8x8領域の変換係数のうち8x8領域の左上端に対応する16個の変換係数はスキャニング順序によって1次元配列の形態で入力され、48x16の変換カーネルマトリックスと行列演算されてよい。すなわち、このような場合の行列演算は(48x16行列)*(16x1変換係数ベクトル)=(48x1修正された変換係数ベクトル)と表すことができる。ここで、nx1ベクトルは、nx1行列と同じ意味で解釈されてよいので、nx1列ベクトルと表記されてもよい。また、*は、行列掛け算演算を意味する。このような行列演算が行われると、48個の修正された変換係数が導出され得、48個の修正された変換係数は8x8領域の右下端領域を除く左上端、右上端、左下端領域に配列され得る。
【0155】
一方、2次逆変換がRSTに基づいてなされる場合に、エンコーディング装置200の逆変換部235とデコーディング装置300の逆変換部322は、変換係数に対する逆RSTに基づいて修正された変換係数を導出する逆RST部と、修正された変換係数に対する逆1次変換に基づいて前記対象ブロックに対するレジデュアルサンプルを導出する逆1次変換部を含むことができる。逆1次変換は、レジデュアルに適用された1次変換の逆変換を意味する。本文書において、変換に基づいて変換係数を導出することは、当該変換を適用して変換係数を導出することを意味できる。
【0156】
上述した非分離変換、LFNSTについて具体的に説明すると、次の通りである。LFNSTは、エンコーディング装置による順方向(forward)変換とデコーディング装置による逆方向(inverse)変換を含むことができる。
【0157】
エンコーディング装置は、順方向1次変換(primary(core)transform)を適用した後に導出された結果(又は、結果の一部)を入力として、順方向2次変換(secondary transform)を適用する。
【0158】
【0159】
上記式9で、xとyはそれぞれ、2次変換の入力と出力であり、Gは、2次変換を表す行列であって、変換基底ベクトル(transform basis vector)は列ベクトルで構成される。逆方向LFNSTの場合、変換行列Gの次元(dimension)を[row数xcolumn数]と表記したとき、順方向LFNSTの場合、行列Gのトランスポーズを取ったものがGTの次元となる。
【0160】
逆方向LFNSTの場合、行列Gの次元は、[48x16]、[48x8]、[16x16]、[16x8]になり、[48x8]行列と[16x8]行列はそれぞれ、[48x16]行列と[16x16]行列の左側から8個の変換基底ベクトルをサンプリングした部分行列である。
【0161】
一方、順方向LFNSTの場合、行列GTの次元は、[16x48]、[8x48]、[16x16]、[8x16]になり、[8x48]行列と[8x16]行列はそれぞれ、[16x48]行列と[16x16]行列の上側から8個の変換基底ベクトルをサンプリングした部分行列である。
【0162】
したがって、順方向LFNSTの場合、入力xとしては[48x1]ベクトル又は[16x1]ベクトルが可能であり、出力yとしては[16x1]ベクトル又は[8x1]ベクトルが可能である。ビデオコーディング及びデコーディングにおいて順方向1次変換の出力は、2次元(2D)データであるので、入力xとして[48x1]ベクトル又は[16x1]ベクトルを構成するために、順方向変換の出力である2Dデータを適切に配列して1次元ベクトルを構成しなければならない。
【0163】
図8は、一例によって順方向1次変換の出力データを1次元ベクトルとして配列する順序を示す図である。
図8の(a)及び(b)の左図は、[48x1]ベクトルを作るための順序を示し、
図8の(a)及び(b)の右図は、[16x1]ベクトルを作るための順序を示す。LFNSTの場合、
図8の(a)及び(b)のような順序で2Dデータを順次に配列して一次元ベクトルxを得ることができる。
【0164】
このような順方向1次変換の出力データの配列方向は、現在ブロックのイントラ予測モードによって決定されてよい。例えば、現在ブロックのイントラ予測モードが対角線方向を基準に水平方向であれば、順方向1次変換の出力データは、
図8の(a)の順序で配列されてよく、現在ブロックのイントラ予測モードが対角線方向を基準に垂直方向であれば、順方向1次変換の出力データは、
図8の(b)の順序で配列されてよい。
【0165】
一例によって、
図8の(a)及び(b)の配列順序(ordering)と異なる配列順序を適用でき、
図8の(a)及び(b)の配列順序を適用した時と同じ結果(yベクトル)を導出するためには、行列Gの列ベクトルを当該配列順序に合わせて再配列すればよい。すなわち、xベクトルを構成する各要素に対して、常に同じ変換基底ベクトルと掛けられるようにGの列ベクトルを再配置できる。
【0166】
式9によって導出される出力yは一次元ベクトルであるので、仮に順方向2次変換の結果を入力として処理する構成、例えば、量子化又はレジデュアルコーディングを行う構成が入力データとして2次元データが必要であれば、式9の出力yベクトルはさらに2Dデータとして適切に配置されなければならない。
【0167】
図9は、一例によって、順方向2次変換の出力データを2次元ブロックに配列する順序を示す図である。
【0168】
LFNSTの場合、定められたスキャン順序によって2Dブロックに配置されてよい。
図9の(a)は、出力yが[16x1]ベクトルである場合に、2次元ブロックの16個の位置に対角スキャン(diagonal scan)順序によって出力値が配置されることを示す。
図9の(b)は、出力yが[8x1]ベクトルである場合に、2次元ブロックの8個の位置に対角スキャン順序によって出力値が配置され、残り8個の位置には0で埋められることを示す。
図9の(b)のXは、0で埋められたことを示す。
【0169】
他の例によって、量子化又はレジデュアルコーディングを行う構成によって出力ベクトルyが処理される順序は、既に設定された順序によって行われてよいので、
図9のように、出力ベクトルyが2Dブロックに配置されなくてよい。ただし、レジデュアルコーディングの場合、CG(Coefficient Group)のような2Dブロック(例えば、4x4)単位でデータコーディングが行われてよく、この場合、
図9の対角スキャン順序のように、特定順序によってデータが配列されてよい。
【0170】
一方、デコーディング装置は、逆方向変換のために、逆量子化過程などによって出力された2次元データを、既に設定されたスキャン順序によって並べて、1次元入力ベクトルであるyを構成できる。入力ベクトルyは、下記式によって入力ベクトルxとして出力されてよい。
【0171】
【0172】
逆方向LFNSTの場合、[16x1]ベクトル又は[8x1]ベクトルである入力ベクトルyにG行列を掛けることによって、出力ベクトルxを導出することができる。逆方向LFNSTの場合、出力ベクトルxは[48x1]ベクトル又は[16x1]ベクトルであってよい。
【0173】
出力ベクトルxは、
図8に示す順序によって2次元ブロックに配置されて2次元データとして配列され、このような2次元データは、逆方向1次変換の入力データ(又は、入力データの一部)となる。
【0174】
したがって、逆方向2次変換は全体的に順方向2次変換過程と反対であり、逆変換の場合、順方向におけるとは違い、逆方向2次変換をまず適用した後、逆方向1次変換を適用する。
【0175】
逆方向LFNSTでは、変換行列Gとして[48x16]行列8個と[16x16]行列8個の中から1つが選択されてよい。[48x16]行列と[16x16]行列のうちどの行列を適用するかは、ブロックのサイズと形態によって決定される。
【0176】
また、8個の行列は、上述した表2のように、4個の変換セットから導出されてよく、各変換セットは、2個の行列で構成されてよい。4個の変換セットのうちどの変換セットを使用するかは、イントラ予測モードによって決定され、より具体的には、広角イントラ予測モード(Wide Angle Intra Prediction,WAIP)まで考慮して拡張されたイントラ予測モード値に基づいて変換セットが決定される。選択された変換セットを構成する2個の行列のうちどの行列を選択するかは、インデックスシグナリング(index signaling)によって導出される。より具体的には、伝送されるインデックス値としては0、1、2が可能であり、0は、LFNSTを適用しないことを示し、1と2は、イントラ予測モード値に基づいて選択された変換セットを構成する2個の変換行列のいずれか1つを示す。
【0177】
図10は、本文書の一実施例に係る広角イントラ予測モードを示す図である。
【0178】
一般のイントラ予測モード値は、0~66と81~83までの値を有してよく、図示のように、WAIPによって拡張されたイントラ予測モード値は-14~83までの値も有してよい。81~83までの値は、CCLM(Cross Compoonent Linear Model)モードを示し、-14~-1までの値と67~80までの値は、WAIP適用によって拡張されたイントラ予測モード値を示す。
【0179】
予測現在ブロックの幅が高さよりも大きい場合に、たいてい、上側の参照ピクセルが、予測しようとするブロック内部の位置と相対的に近い。したがって、右上端(top-right)方向に予測することよりは、左下端(bottom-left)方向に予測する方が、より正確であり得る。逆に、ブロックの高さが幅よりも大きい場合には、左側の参照ピクセルが、予測しようとするブロック内部の位置と相対的に近い。したがって、左下端(bottom-left)方向に予測することよりは、右上端(top-right)方向に予測する方が、より正確であり得る。したがって、広角イントラ予測モードのインデックスにリマッピング、すなわち、モードインデックス変換を適用することが有利であり得る。
【0180】
広角イントラ予測が適用される場合に、既存のイントラ予測に関する情報がシグナルされてよく、前記情報がパーシングされた後、前記情報が前記広角イントラ予測モードのインデックスにリマップされてよいしたがって、特定ブロック(例えば、特定サイズの非正方形ブロック)に対する総イントラ予測モードの数は変更されずに済み、すなわち、総イントラ予測モードの数は67個であり、前記特定ブロックに対するイントラ予測モードコーディングは変更されずに済む。
【0181】
一方、上述したように、[48x16]行列と[16x16]行列のうちどの変換行列をLFNSTに適用するかは、変換対象ブロックのサイズと形態によって決定される。
【0182】
図11は、LFNSTが適用されるブロック形態を示す図である。
図11の(a)は、4x4ブロックを、(b)は、4x8及び8x4ブロックを、(c)は、Nが16以上である4xN又はNx4ブロックを、(d)は、8x8ブロックを、(e)は、M≧8、N≧8であり、N>8又はM>8であるMxNブロックを示している。
【0183】
図11で、太い縁のブロックは、LFNSTが適用される領域を表す。
図11の(a)及び(b)のブロックに対しては、左上端(top-left)4x4領域に対してLFNSTが適用され、
図11の(c)のブロックに対しては、連続して配置された2個の左上端4x4領域に対してそれぞれLFNSTが適用される。
図11の(a)、(b)、(c)では、4x4領域単位でLFNSTが適用されることから、このようなLFNSTを以下、「4x4LFNST」と命名するものとし、当該変換行列としては、式9及び式10のGに対する行列次元を基準に[16x16]又は[16x8]行列が適用されてよい。
【0184】
より具体的に、
図11の(a)の4x4ブロック(4x4TU又は4x4CU)に対しては[16x8]行列が適用され、
図11の(b)及び(c)におけるブロックに対しては[16x16]行列が適用される。これは、最悪の場合(worst case)に対する計算複雑度を、サンプル当たり8掛け算(8multiplications per sample)と合わせるためである。
【0185】
図11の(d)及び(e)に対しては、左上端8x8領域に対してLFNSTが適用され、このようなLFNSTを以下、「8x8LFNST」と命名する。当該変換行列としては[48x16]又は[48x8]行列が適用されてよい。順方向LFNSTの場合、入力データとして[48x1]ベクトル(式9のxベクトル)が入力されるので、左上端8x8領域の全てのサンプル値が順方向LFNSTの入力値として使用されない。すなわち、
図8の(a)の左順序、又は
図8の(b)の左順序に見られるように、右下端(bottom-right)の4x4ブロックはそのまま置き、残り3個の4x4ブロックに属したサンプルに基づいて[48x1]ベクトルを構成できる。
【0186】
図11の(d)における8x8ブロック(8x8TU又は8x8CU)に[48x8]行列が適用され、
図11の(e)における8x8ブロックに[48x16]行列が適用されてよい。これも同様、最悪の場合(worst case)に対する計算複雑度をサンプル当たり8掛け算(8multiplications per sample)と合わせるためである。
【0187】
ブロックの形態によってそれに対応する順方向LFNST(4x4LFNST又は8x8LFNST)が適用されると、8個又は16個の出力データ(式9におけるyベクトル、[8x1]又は[16x1]ベクトル)が生成され、順方向LFNSTでは、行列GTの特性の上、出力データの数が入力データの数と等しくなる或いはより少なくなる。
【0188】
図12は、一例によって、順方向LFNSTの出力データの配列を示す図であり、ブロックの形態によって順方向LFNSTの出力データが配置されるブロックを示している。
【0189】
図12に示すブロックの左上端に陰影で処理された領域が、順方向LFNSTの出力データが位置する領域に該当し、0と表記された位置は、0値で埋められるサンプルを表し、残り領域は、順方向LFNSTによって変更されない領域を表す。LFNSTによって変更されない領域には、順方向1次変換の出力データが変更されずにそのまま存在する。
【0190】
上述したように、ブロックの形態によって、適用される変換行列の次元が異なるので、出力データの数も異なる。
図12のように、順方向LFNSTの出力データが左上端4x4ブロックを全て埋められないこともある。
図12の(a)及び(d)で、太線で表示されたブロック又はブロック内部の一部領域にはそれぞれ[16x8]行列と[48x8]行列が適用され、順方向LFNSTの出力として[8x1]ベクトルが生成される。すなわち、
図9の(b)に示すスキャン順序によって、8個の出力データのみが
図12の(a)及び(d)のように埋められ、残り8個の位置に対しては0が埋められてよい。
図11の(d)のLFNST適用ブロックの場合、
図12の(d)のように、左上端4x4ブロックに隣接した右上端及び左下端の2つの4x4ブロックも0値で埋められる。
【0191】
上記のように、基本的に、LFNSTインデックスをシグナルして、LFNSTを適用するか否か及び適用する変換行列を指定する。
図12に示すように、LFNSTが適用される場合に、順方向LFNSTの出力データ数が入力データ数と等しい又は少ないことがあるので、0値で埋められる領域が次のように発生する。
【0192】
1)
図12の(a)のように、左上端4x4ブロック内にスキャン順序において8番目後の位置、すなわち、9番目から16番目までのサンプル
【0193】
2)
図12の(d)及び(e)のように、[16x48]行列又は[8x48]行列が適用されて左上端4x4ブロックに隣接した2つの4x4ブロック又はスキャン順序において2番目と3番目の4x4ブロック
【0194】
したがって、前記1)と2)の領域をチェックし、0以外(non-zero)のデータが存在すると、LFNSTが適用されていないことが確実なので、当該LFNSTインデックスのシグナリングが省略可能になる。
【0195】
一例によって、例えば、VVC標準に採択されたLFNSTの場合、LFNSTインデックスのシグナリングはレジデュアルコーディング後に行われるので、エンコーディング装置は、レジデュアルコーディングによってTU又はCUブロック内部の全ての位置に対する0以外のデータ(有効係数)の存在有無が把握可能になる。したがって、エンコーディング装置は、0以外のデータの存在有無によってLFNSTインデックスに対するシグナリングを行うか否かが判断でき、デコーディング装置は、LFNSTインデックスをパースするか否かが判断できる。仮に、前記1)と2)で指定された領域に0以外のデータが存在しない場合、LFNSTインデックスのシグナリングを行う。
【0196】
一方、採択されたLFNSTに対して、次のような単純化方法が適用されてよい。
【0197】
(i)一例によって、順方向LFNSTに対する出力データ数を最大で16個に限定できる。
【0198】
図11の(c)の場合、左上端に隣接した2個の4x4領域にそれぞれ4x4LFNSTが適用されてよく、この時、最大で32個のLFNST出力データが生成されてよい。仮に、順方向LFNSTに対する出力データ数を最大で16に限定すれば、4xN/Nx4(N≧16)ブロック(TU又はCU)に対しても、左上端に存在する1個の4x4領域に対してのみ4x4LFNSTを適用し、
図11の全てのブロックに対してLFNSTを1回のみ適用できる。これにより、映像コーディングに対する具現が単純化し得る。
【0199】
(ii)一例によって、LFNSTが適用されない領域に対してさらにゼロアウト(zero-out)を適用できる。本文書において、ゼロアウトは、特定領域に属した全ての位置の値を0値で埋めることを意味できる。すなわち、LFNSTによって変更されずに順方向1次変換の結果を維持している領域に対してもゼロアウトを適用できる。上述したように、LFNSTは4x4LFNSTと8x8LFNSTに区分されるので、次のように2種類((ii)-(A)及び(ii)-(B))にゼロアウトを区分できる。
【0200】
(ii)-(A)4x4LFNSTが適用されるとき、4x4LFNSTが適用されない領域をゼロアウトすることができる。
図13は、一例によって、4x4LFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【0201】
図13のように、4x4LFNSTが適用されるブロックに対して、すなわち、
図12の(a)、(b)及び(c)のブロックに対して、LFNSTが適用されない領域まで全て0で埋められてよい。
【0202】
一方、
図13の(d)は、一例によって、順方向LFNSTの出力データ個数の最大値を16に限定した場合に、4x4LFNSTが適用されない残りのブロックに対してゼロアウトを行ったことを示す。
【0203】
(ii)-(B)8x8LFNSTが適用されるとき、8x8LFNSTが適用されない領域をゼロアウトすることができる。
図14は、一例によって、8x8LFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【0204】
図14のように、8x8LFNSTが適用されるブロックに対して、すなわち、
図12の(d)及び(e)のブロックに対して、LFNSTが適用されない領域まで全て0で埋められてよい。
【0205】
(iii)前記(ii)から提示したゼロアウトによって、LFNSTが適用される時に0で埋められる領域が変わることがある。したがって、前記(ii)で提案されたゼロアウトによって0以外のデータが存在するか否かを、
図12のLFNSTの場合に比べてより広い領域に対してチェックできる。
【0206】
例えば、(ii)-(B)を適用する場合に、
図12の(d)及び(e)において0値で埋められる領域に追加して、
図14でさらに0で埋められた領域まで、0以外のデータが存在するか否かをチェックした後、0以外のデータが存在しない場合にのみ、LFNSTインデックスに対するシグナリングを行うことができる。
【0207】
勿論、前記(ii)で提案されたゼロアウトを適用しても、既存LFNSTインデックスシグナリングと同様に0以外のデータが存在するか否かをチェックできる。すなわち、
図12で0で埋められたブロックに対して0以外のデータが存在するか否かをチェックし、LFNSTインデックスシグナリングを適用することができる。このような場合、エンコーディング装置にのみゼロアウトを行い、デコーディング装置では当該ゼロアウトを仮定しないで、すなわち、
図12で明示的に0と表記された領域に対してのみ0以外のデータが存在するか否かをチェックしてLFNSTインデックスパーシングを行うことができる。
【0208】
前記LFNSTに対する単純化方法((i)、(ii)-(A)、(ii)-(B)、(iii))の組合せを適用した様々な実施例が導出されてよい。勿論、前記単純化方法に対する組合せは次の下実施例に限定されず、任意の組合せをLFNSTに適用できる。
【0209】
実施例
【0210】
- 順方向LFNSTに対する出力データ数を最大で16個に限定→(i)
【0211】
- 4x4LFNSTが適用される時に、4x4LFNSTが適用されない領域を全てゼロアウト→(ii)-(A)
【0212】
- 8x8LFNSTが適用される時に、8x8LFNSTが適用されない領域を全てゼロアウト→(ii)-(B)
【0213】
- 既存0値で埋められる領域の他に追加のゼロアウト((ii)-(A)、(ii)-(B))によって0で埋められる領域に対しても0以外のデータが存在するか否かをチェックした後、0以外のデータが存在しない場合にのみLFNSTインデクシングシグナリング→(iii)
【0214】
前記実施例の場合、LFNSTが適用される時に、0以外の出力データが存在し得る領域が、左上端4x4領域内部に制限される。より詳細には、
図13の(a)と
図14の(a)の場合、スキャン順序において8番目位置が0以外のデータが存在し得る最後の位置となり、
図13の(b)及び(d)と
図14の(b)の場合、スキャン順序において16番目位置(すなわち、左上端4x4ブロックの右下端の最端位置)が0以外のデータが存在し得る最後の位置となる。
【0215】
したがって、LFNSTが適用された時にレジデュアルコーディング過程が許容されない位置(最後の位置を超えた位置)で0以外のデータが存在するか否かをチェックした後、LFNSTインデックスシグナリングをするか否かが決定されてよい。
【0216】
(ii)で提案されたゼロアウト方式の場合、1次変換とLFNSTの両方を適用した時に最終的に発生するデータの数を減らすので、全体変換過程を行う時に要求される計算量を減らすことができる。すなわち、LFNSTが適用される場合に、LFNSTが適用されない領域に存在する順方向1次変換出力データに対してもゼロアウトを適用するので、順方向1次変換を行う時からゼロアウトとなる領域に対するデータを生成し始める必要がない。したがって、当該データ生成に要求される演算量を節約できる。(ii)で提案されたゼロアウト方式の追加の効果をまとめると、次の通りである。
【0217】
第一に、上記のように、全体変換過程の実行に必要な計算量が低減する。
【0218】
特に、(ii)-(B)を適用する場合に、最悪の場合に対する計算量が減少し、変換過程を軽量化できる。さらにいうと、一般的に大きいサイズの1次変換実行に多量の演算が要求されるが、(ii)-(B)を適用すると、順方向LFNST実行結果として導出されるデータの数を16個以下に減らすことができ、全体ブロック(TU又はCU)サイズが大きくなるほど変換演算量低減効果はより増大する。
【0219】
第二に、変換過程全体に必要な演算量が減少し、変換実行に必要な電力消費を減らすことができる。
【0220】
第三に、変換過程に伴う遅延時間(latency)を減少させる。
【0221】
LFNSTのような2次変換は、既存1次変換に計算量を追加するため、変換実行に伴う全体遅延時間を増加させる。特に、イントラ予測の場合、予測過程で隣接ブロックの復元データが用いられるので、エンコーディング時に2次変換による遅延時間の増加が、復元(reconstruction)までの遅延時間の増加につながってしまい、イントラ予測エンコーディングの全体的な遅延時間の増加を招くことがある。
【0222】
しかし、(ii)で提示したゼロアウトを適用すると、LFNST適用時に1次変換実行の遅延時間を大幅に減らすことができるので、変換実行全体に対する遅延時間はそのまま維持されるか、却って減少し、エンコーディング装置をより簡単にすることができる。
【0223】
一方、従来のイントラ予測は、現在符号化しようとするブロックを、1つの符号化単位と見なして分割無しで符号化を行った。しかし、ISP(Intra Sub-Paritions)コーディングは、現在符号化しようとするブロックを水平方向或いは垂直方向に分割してイントラ予測符号化を行うことを意味する。このとき、分割されたブロック単位で符号化/復号化を行って復元されたブロックを生成し、復元されたブロックは、次の分割されたブロックの参照ブロックとして用いられてよい。一例によって、ISPコーディング時に1つのコーディングブロックが2個又は4個のサブブロックに分割してコードされてよく、ISPにおいて1つのサブブロックは、隣接した左側又は隣接した上側に位置しているサブブロックの復元されたピクセル値を参照してイントラ予測が行われる。以下、使用される「コーディング」とは、エンコーディング装置で行われるコーディングとデコーディング装置で行われるデコーディングのいずれをも含む概念であってよい。
【0224】
ISPは、ブロックのサイズによって、ルマイントラで予測されたブロックを、垂直方向又は水平方向に2又は4個のサブパーティショニングに分割することである。例えば、ISPが適用され得る最小ブロックサイズは、4x8又は8x4である。仮に、ブロックサイズが4x8又は8x4よりも大きいと、ブロックは4個のサブパーティショニングに分割される。
【0225】
ISP適用時に、サブブロックは分割形態によって、例えば、水平(Horizontal)又は垂直(Verticial)、左側から右側、又は上側から下側に順次にコードされ、1つのサブブロックに対する逆変換とイントラ予測を経て復元過程まで行われた後、次のサブブロックに対するコーディングが行われてよい。最左側又は最上側のサブブロックに対しては、通常のイントラ予測方式のように、既にコードされたコーディングブロックの復元ピクセルを参照する。また、続く内部のサブブロックの各辺に対して以前サブブロックと隣接していない場合には、当該辺に隣接した参照ピクセルを導出するために、通常のイントラ予測方式のように、既にコードされた隣接したコーディングブロックの復元ピクセルを参照する。
【0226】
ISPコーディングモードでは、全てのサブブロックが同一のイントラ予測モードでコードされてよく、ISPコーディングを用いか否かを示すフラグと、どの方向(水平又は垂直)に分割するかを示すフラグなどがシグナルされてよい。この時、ブロックの形態によってサブブロックの個数を2個又は4個に調節でき、1つのサブブロックのサイズ(幅x高さ)が16未満である場合に、当該サブブロックへの分割を許容しないように、又はISPコーディング自体を適用しないように制限できる。
【0227】
一方、ISP予測モードである場合に、1つのコーディングユニットが2個又は4個のパーティションブロック、すなわち、サブブロックに分割されて予測され、当該分割された2個又は4個のパーティションブロックには同一の画面内予測モードが適用される。
【0228】
上述したように、分割方向としては、水平方向(横長と縦長がそれぞれM、NであるMxNコーディングユニットが水平方向に分割されると、2個に分割される場合にMx(N/2)ブロックに分割され、4個に分割される場合にMx(N/4)ブロックに分割される。)と垂直方向(MxNコーディングユニットが垂直方向に分割されると、2個に分割される場合に(M/2)xNブロックに分割され、4個に分割される場合に(M/4)xNブロックに分割される。)とも可能である。水平方向に分割される場合に、上から下の方向への順序でパーティションブロックがコードされ、垂直方向に分割される場合に、左から右の方向への順序でパーティションブロックがコードされる。現在コードされるパーティションブロックは、水平(垂直)方向分割である場合に上側(左側)パーティションブロックの復元されたピクセル値を参照して予測されてよい。
【0229】
ISP予測方法で生成されたレジデュアル信号に、パーティションブロック単位で変換が適用されてよい。順方向(forward)を基準に1次変換(core transform又はprimary transform)に、既存DCT-2の他にDST-7/DCT-8組合せベースのMTS(Multiple Transform Selection)技術も適用されてよく、1次変換によって生成された変換係数に順方向LFNST(Low Frequency Non-Separable Transform)が適用され、最終的な修正された変換係数が生成され得る。
【0230】
すなわち、ISP予測モードが適用されて分割されたパーティションブロックにもLFNSTが適用されてよく、上述したように、分割されたパーティションブロックには同一のイントラ予測モードが適用される。したがって、イントラ予測モードに基づいて導出されるLFNSTセット選択時に、全てのパーティションブロックに導出されたLFNSTセットを適用できる。すなわち、全てのパーティションブロックに同一のイントラ予測モードが適用され、これによって全てのパーティションブロックには同一のLFNSTセットが適用され得る。
【0231】
一方、一例によって、LFNSTは横と縦の長さがいずれも4以上である変換ブロックに対してのみ適用されてよい。したがって、ISP予測方式によって分割されたパーティションブロックの横又は縦の長さが4未満である場合に、LFNSTが適用されず、LFNSTインデックスもシグナルされない。また、各パーティションブロックにLFNSTを適用する場合に、当該パーティションブロックを1つの変換ブロックと見なしてよい。勿論、ISP予測方式が適用されない場合に、コーディングブロックにLFNSTが適用されてよい。
【0232】
各パーティションブロックにLFNSTを適用することを具体的に説明すると、次の通りである。
【0233】
一例によって、個別的なパーティションブロックに対して順方向LFNSTを適用した後、左上端4x4領域に変換係数スキャニング順序によって最大で16個(8個又は16個)の係数のみを残した後、残りの位置及び領域はいずれも0値で埋めるゼロアウトが適用されてよい。
【0234】
又は、一例によって、パーティションブロックの1辺の長さが4である場合に、左上端4x4領域に対してのみLFNSTを適用し、パーティションブロックの全ての辺、すなわち幅及び高さの長さが8以上である場合に、左上端8x8領域内部の右下端4x4領域を除く残り48個の係数に対してLFNSTを適用してよい。
【0235】
又は、一例によって、最悪の場合の計算複雑度を8掛け算/サンプル(multiplications per sample)と合わせるために、各パーティションブロックが4x4又は8x8である場合には、順方向LFNST適用後に8個の変換係数のみを出力できる。すなわち、パーティションブロックが4x4であれば、変換マトリックスとして8x16行列が適用され、パーティションブロックが8x8であれば、変換マトリックスとして8x48行列が適用されてよい。
【0236】
一方、現在VVC標準において、LFNSTインデックスシグナリングは、コーディングユニット単位で行われる。したがって、ISP予測モードであり、且つ全てのパーティションブロックに対してLFNSTを適用する場合に、当該パーティションブロックに対しては同一のLFNSTインデックス値が適用されてよい。すなわち、コーディングユニットレベルでLFNSTインデックス値が一度伝送されると、コーディングユニット内部の全てのパーティションブロックに対しては、当該LFNSTインデックスが適用されてよい。上述したように、LFNSTインデックス値は0、1、2値を有することができ、0は、LFNSTが適用されない場合を示し、1と2は、LFNSTが適用される時に、1つのLFNSTセット内に存在する2つの変換マトリックスを指示する。
【0237】
上記のように、LFNSTセットは、イントラ予測モードによって決定され、ISP予測モードである場合に、コーディングユニット内の全てのパーティションブロックが同一のイントラ予測モードで予測されるので、パーティションブロックは同一のLFNSTセットを参照できる。
【0238】
さらに他の例として、LFNSTインデックスシグナリングは相変らずコーディングユニット単位で行われるが、ISP予測モードの場合に全てのパーティションブロックに対して一様に、LFNSTを適用するか否かを決定せず、別個の条件によって、それぞれのパーティションブロックに対してコーディングユニットレベルでシグナルされたLFNSTインデックス値を適用するかそれともLFNSTを適用しないかを決定できる。ここで、別個の条件は、ビットストリームによって各パーティションブロック別にフラグの形態でシグナルされてよく、フラグ値が1であれば、コーディングユニットレベルでシグナルされたLFNSTインデックス値を適用し、フラグ値が0であれば、LFNSTを適用しなくてよい。
【0239】
以下では、ISPモードにLFNSTの適用時に、最悪の場合に対する計算複雑度を維持する方法について述べる。
【0240】
ISPモードである場合に、LFNST適用時に、サンプル当たり(又は、係数当たり、位置当たり)掛け算数を一定値以下に維持するためにLFNST適用を制限してよい。パーティションブロックのサイズによって次のようにLFNSTを適用し、サンプル当たり(或いは、係数当たり、位置当たり)掛け算数を8個以下に維持できる。
【0241】
1.パーティションブロックの横長と縦長とも4以上である場合には、現在VVC標準におけるLFNSTに対する最悪の場合に対する計算複雑度調節方式と同じ方式を適用できる。
【0242】
すなわち、パーティションブロックが4x4ブロックである場合には、16x16行列の代わりに、順方向では16x16行列から上位8個の行をサンプリングした8x16行列を適用し、逆方向では16x16行列から左側8個の列をサンプリングした16x8行列を適用できる。また、パーティションブロックが8x8ブロックである場合には、順方向の場合、16x48行列の代わりに、16x48行列から上位8個の行をサンプリングした8x48行列を適用し、逆方向の場合、48x16行列の代わりに、48x16行列から左側8個の列をサンプリングした48x8行列を適用できる。
【0243】
4xN又はNx4(N>4)ブロックの場合、順方向変換を行う時に、左上端4x4ブロックに対してのみ16x16行列を適用した後、生成された16個の係数は左上端4x4領域に配置され、それ以外の領域は0値で埋められてよい。また、逆方向変換を行う時は、左上端4x4ブロックに位置した16個の係数をスキャニング順序によって配置して入力ベクトルを構成した後、16x16行列を掛けて16個の出力データを生成できる。生成された出力データは、左上端4x4領域に配置され、左上端4x4領域を除く残りの領域は0で埋められてよい。
【0244】
8xN又はNx8(N>8)ブロックの場合、順方向変換を行う時に、左上端8x8ブロック内部のROI領域(左上端8x8ブロックから右下端4x4ブロックを除く残りの領域)に対してのみ16x48行列を適用した後、生成された16個の係数は左上端4x4領域に配置され、それ以外領域はいずれも0値で埋められてよい。また、逆方向変換を行う時は、左上端4x4ブロックに位置した16個の係数をスキャニング順序によって配置して入力ベクトルを構成した後、48x16行列を掛けて48個の出力データを生成できる。生成された出力データは前記ROI領域に埋められ、残りの領域はいずれも0値で埋められてよい。
【0245】
さらに他の例として、サンプル当たり(又は、係数当たり、位置当たり)掛け算数を一定値以下に維持するために、ISPパーティションブロックのサイズではなくISPコーディングユニットサイズを基準に、サンプル当たり(或いは、係数当たり、位置当たり)掛け算数を8個以下に維持できる。仮に、ISPパーティションブロックのうち、LFNSTが適用される条件を満たすブロックが1つのみ存在する場合に、パーティションブロックのサイズではなく当該コーディングユニットサイズに基づいてLFNSTの最悪の場合に対する複雑度演算が適用されてよい。例えば、あるコーディングユニットに対するルマコーディングブロックが4x4サイズの4個のパーティションブロックに分割されてISPでコードされ、そのうち2個のパーティションブロックに対しては0以外の変換係数が存在しない場合に、他の2個のパーティションブロックには(エンコーダ基準で)それぞれ8個ではなく16個の変換係数が生成されるように設定できる。
【0246】
以下では、ISPモードの場合に、LFNSTインデックスをシグナルする方法について説明する。
【0247】
上述したように、LFNSTインデックスは0、1、2値を有することができ、0は、LFNSTを適用しないことを示し、1と2は、選択されたLFNSTセットに含まれた2つのLFNSTカーネルマトリックスの1つずつを示す。LFNSTインデックスによって選択されたLFNSTカーネルマトリックスに基づいてLFNSTが適用される。現在VVC標準においてLFNSTインデックスが伝送される方式を説明すると、次の通りである。
【0248】
1.コーディングユニット(CU)ごとに1回ずつLFNSTインデックスを伝送することができ、デュアルツリー(dual-tree)の時には、ルマブロックとクロマブロックに対してそれぞれ個別のLFNSTインデックスがシグナルされてよい。
【0249】
2.LFNSTインデックスがシグナルされない場合には、LFNSTインデックス値はデフォルト値である0に定められる(infer)。LFNSTインデックス値が0と類推される場合は、次の通りである。
【0250】
A.変換が適用されないモードである場合(例えば、変換スキップ(transform skip)、BDPCM、無損失(lossless)コーディングなど)
【0251】
B.1次変換がDCT-2でない場合(DST7やDCT8)、すなわち、水平方向の変換又は垂直方向の変換がDCT-2でない場合
【0252】
C.コーディングユニットのルマブロックに対する横長又は縦長が、変換が可能な最大ルマ変換のサイズを超える場合に、例えば、変換が可能な最大ルマ変換のサイズが64である場合に、コーディングブロックのルマブロックに対するサイズが128x16と同じ場合にはLFNSTが適用不可能である。
【0253】
デュアルツリーの場合、ルマ成分に対するコーディングユニットとクロマ成分に対するコーディングユニットのそれぞれに対して最大ルマ変換のサイズを超えるか否かが判断される。すなわち、ルマブロックに対して変換が可能な最大ルマ変換のサイズを超えるか否かがチェックされ、クロマブロックに対してカラーフォーマットに対する対応ルマブロックの横長又は縦長が最大変換が可能な最大ルマ変換のサイズを超えるか否かがチェックされる。例えば、カラーフォーマットが4:2:0である場合には、対応ルマブロックの横/縦長はそれぞれ、当該クロマブロックの2倍になり、対応ルマブロックの変換サイズは当該クロマブロックの2倍となる。さらに他の例として、カラーフォーマットが4:4:4である場合には、対応ルマブロックの横/縦長と変換サイズは、対応するクロマブロックと同一である。
【0254】
64長変換又は32長変換が意味するところがそれぞれ、64又は32の長さを有する横又は縦に適用される変換を意味し、「変換サイズ」は、当該長さである64又は32を意味できる。
【0255】
シングルツリーの場合、ルマブロックに対して横長又は縦長が変換が可能な最大ルマ変換ブロックサイズを超えるか否かをチェックした後、超える場合にLFNSTインデックスシグナリングを省略してよい。
【0256】
D.コーディングユニットの横長と縦長の両方とも4以上である場合にのみLFNSTインデックスを伝送できる。
【0257】
デュアルツリーの場合、当該成分(すなわち、ルマ又はクロマ成分)に対する横長と縦長がいずれも4以上である場合に対してのみLFNSTインデックスをシグナルすることができる。
【0258】
シングルツリーの場合には、ルマ成分に対する横長と縦長がいずれも4以上である場合に対してLFNSTインデックスをシグナルすることができる。
【0259】
E.最後の0以外の係数の位置(last non-zero coefficient position)がDC位置(ブロックの左上端位置)でない場合に、デュアルツリータイプのルマブロックであれば、最後の0以外の係数の位置がDC位置でないとLFNSTインデックスを伝送する。デュアルツリータイプのクロマブロックであれば、Cbに対する最後の0以外の係数の位置とCrに対する最後の0以外の係数の位置のいずれか1つでもDC位置でないと当該LNFSTインデックスを伝送する。
【0260】
シングルツリータイプの場合、ルマ成分、Cb成分、Cr成分のいずれか1つでも当該最後の0以外の係数の位置がDC位置でないとLFNSTインデックスを伝送する。
【0261】
ここで、1つの変換ブロックに対する変換係数の存在有無を示すCBF(coded block flag)値が0であれば、LFNSTインデックスシグナリングするか否かを判断するために、当該変換ブロックに対する最後の0以外の係数の位置をチェックしない。すなわち、当該CBF値が0である場合、当該ブロックに変換が適用されないので、LFNSTインデックスシグナリングに対する条件をチェックする時に最後の0以外の係数の位置を考慮しなくてよい。
【0262】
例えば、1)デュアルツリータイプであり、ルマ成分である場合に、当該CBF値が0であれば、LFNSTインデックスをシグナルしなく、2)デュアルツリータイプであり、クロマ成分である場合に、Cbに対するCBF値が0であり、Crに対するCBF値が1であれば、Crに対する最後の0以外の係数の位置のみをチェックして当該LFNSTインデックスを伝送し、3)シングルツリータイプである場合には、ルマ、Cb、Crの全てに対して、各CBF値が1である成分に対してのみ最後の0以外の係数の位置をチェックする。
【0263】
F.LFNST変換係数が存在し得る位置でない位置に変換係数が存在することが確認された場合に、LFNSTインデックスシグナリングを省略してよい。4x4変換ブロックと8x8変換ブロックの場合は、VVC標準における変換係数スキャニング順序によって、DC位置から8個の位置にLFNST変換係数が存在してよく、残りの位置はいずれも0で埋められる。また、4x4変換ブロックと8x8変換ブロックでない場合には、VVC標準における変換係数スキャニング順序によって、DC位置から16個の位置にLFNST変換係数が存在してよく、残りの位置はいずれも0で埋められる。
【0264】
したがって、レジデュアルコーディング(residual coding)を行った後、前記0値が埋められるべき領域に0以外の変換係数が存在すると、LFNSTインデックスシグナリングを省略してよい。
【0265】
一方、ISPモードは、ルマブロックである場合にのみ適用されてもよく、ルマブロックとクロマブロックの両方に適用されてもよい。上述したように、ISP予測が適用される場合、当該コーディングユニットは2個又は4個のパーティションブロックに分割されて予測され、変換も当該パーティションブロックにそれぞれ適用されてよい。したがって、コーディングユニット単位でLFNSTインデックスをシグナルする条件を決定する時にも、当該パーティションブロックにそれぞれLFNSTが適用され得るという事実を考慮しなければならない。また、ISP予測モードが特定成分(例えば、ルマブロック)に対してのみ適用される場合には、当該成分に対してのみパーティションブロックに分割されるという事実を考慮してLFNSTインデックスをシグナルしなければならない。ISPモードである時に可能なLFNSTインデックスシグナリング方式をまとめると、次の通りである。
【0266】
1.コーディングユニット(CU)ごとに1回ずつLFNSTインデックスを伝送することができ、デュアルツリー(dual-tree)の時は、ルマブロックとクロマブロックに対してそれぞれ個別のLFNSTインデックスがシグナルされてよい。
【0267】
2.LFNSTインデックスがシグナルされない場合には、LFNSTインデックス値はデフォルト値である0に定められる(infer)。LFNSTインデックス値が0と類推される場合は、次の通りである。
【0268】
A.変換が適用されないモードである場合(例えば、変換スキップ(transform skip)、BDPCM、無損失(lossless)コーディングなど)
【0269】
B.コーディングユニットのルマブロックに対する横長又は縦長が変換が可能な最大ルマ変換のサイズを超える場合に、例えば、変換が可能な最大ルマ変換のサイズが64である場合に、コーディングブロックのルマブロックに対するサイズが128x16と同じ場合にはLFNSTが適用不可能である。
【0270】
コーディングユニットの代わりにパーティションブロックのサイズを基準にLFNSTインデックスのシグナリングをするか否かを決定することができる。すなわち、当該ルマブロックに対するパーティションブロックの横長又は縦長が変換が、可能な最大ルマ変換のサイズを超える場合に、LFNSTインデックスシグナリングを省略し、LFNSTインデックス値を0と類推できる。
【0271】
デュアルツリーの場合、ルマ成分に対するコーディングユニット又はパーティションブロックとクロマ成分に対するコーディングユニット又はパーティションブロックのそれぞれに対して、最大変換ブロックサイズを超えるか否かが判断される。すなわち、ルマに対するコーディングユニット又はパーティションブロックの横と縦長をそれぞれ最大ルマ変換サイズと比較し、1つでも最大ルマ変換サイズよりも大きければ、LFNSTを適用しなく、クロマに対するコーディングユニット又はパーティションブロックの場合には、カラーフォーマットに対する対応ルマブロックの横/縦長と最大変換が可能な最大ルマ変換のサイズが比較される。例えば、カラーフォーマットが4:2:0である場合には、対応ルマブロックの横/縦長はそれぞれ当該クロマブロックの2倍となり、対応ルマブロックの最大変換サイズは、当該クロマブロックに対する最大変換サイズの2倍となる。さらに他の例として、カラーフォーマットが4:4:4である場合には、対応ルマブロックの横/縦長と変換サイズは、対応するクロマブロックと同一である。
【0272】
シングルツリーの場合に、ルマブロック(コーディングユニット又はパーティションブロック)に対して横長又は縦長が、変換が可能な最大ルマ変換ブロックサイズを超えるか否かをチェックした後、超える場合にLFNSTインデックスシグナリングを省略してよい。
【0273】
C.仮に現在のVVC標準に含まれたLFNSTを適用すると、パーティションブロックの横長と縦長の両方が4以上である場合に対してのみ、LFNSTインデックスを伝送できる。
【0274】
仮に現在VVC標準に含まれたLFNSTの他に2xM(1xM)又はMx2(Mx1)ブロックに対するLFNSTも適用すると、パーティションブロックのサイズが2xM(1xM)又はMx2(Mx1)ブロックと等しい又はより大きい場合に対してのみLFNSTインデックスを伝送できる。ここで、PxQブロックがRxSブロックと等しい又はより大きいという意味は、P≧Rであり、Q≧Sであるということを意味する。
【0275】
要するに、パーティションブロックが、LFNSTが適用可能な最小限のサイズと等しい又はより大きい場合に対してのみ、LFNSTインデックスを伝送できる。デュアルツリーの場合、ルマ又はクロマ成分に対するパーティションブロックが、LFNSTが適用可能な最小限のサイズと等しい又はより大きい場合にのみ、LFNSTインデックスをシグナルすることができる。シングルツリーの場合、ルマ成分に対するパーティションブロックが、LFNSTが適用可能な最小限のサイズと等しい又はより大きい場合にのみ、LFNSTインデックスをシグナルすることができる。
【0276】
本文書において、MxNブロックがKxLブロックより大きい又は等しいということは、MがKより大きい又は等しく、NがLより大きい又は等しいということを意味する。MxNブロックがKxLブロックよりも大きいということは、MがKより大きい又は等しく、NがLより大きい又は等しいと共に、MがKよりも大きいか又はNがLよりも大きいということを意味する。MxNブロックがKxLブロックより小さい又は等しいということは、MがKより小さい又は等しく、NがLより小さい又は等しいということを意味し、MxNブロックがKxLブロックより小さいということは、MがKより小さい又は等しく、NがLより小さい又は等しいと共に、MがKより小さい又はNがLより小さいということを意味する。
【0277】
D.最後の0以外の係数の位置(last non-zero coefficient position)がDC位置(ブロックの左上端位置)でない場合に、デュアルツリータイプのルマブロックであれば、全パーティションブロックのうちの1つでも当該最後の0以外の係数の位置がDC位置でなければ、LFNSTインデックスを伝送できる。デュアルツリータイプであり、クロマブロックであれば、Cbに対する全てのパーティションブロックの(ISPモードがクロマ成分に適用されない場合にはパーティションブロックの数を1個と見なす。)最後の0以外の係数の位置とCrに対する全パーティションブロックの(ISPモードがクロマ成分に適用されない場合にはパーティションブロックの数を1個と見なす。)最後の0以外の係数の位置のうち1つでもDC位置でなければ、当該LNFSTインデックスを伝送できる。
【0278】
シングルツリータイプの場合、ルマ成分、Cb成分、Cr成分に対する全パーティションブロックのうちの1つでも最後の0以外の係数の位置がDC位置でなければ、当該LFNSTインデックスを伝送できる。
【0279】
ここで、各パーティションブロックに対して変換係数存在の有無を示すCBF(coded block flag)値が0であれば、LFNSTインデックスシグナリングをするか否かを判断するために、当該パーティションブロックに対する最後の0以外の係数の位置をチェックしない。すなわち、当該CBF値が0である場合に、当該ブロックに変換が適用されないので、LFNSTインデックスシグナリングに対する条件をチェックする時に当該パーティションブロックに対する最後の0以外の係数の位置を考慮しない。
【0280】
例えば、1)デュアルツリータイプであり、ルマ成分である場合に、各パーティションブロックに対して当該CBF値が0であれば、LFNSTインデックスシグナリングをするか否かを決定する時に当該パーティションブロックを除外させ、2)デュアルツリータイプであり、クロマ成分である場合に、各パーティションブロックに対してCbに対するCBF値が0であり、Crに対するCBF値が1であれば、Crに対する最後の0以外の係数の位置のみをチェックして、当該LFNSTインデックスシグナリングをするか否かを決定し、3)シングルツリータイプである場合に、ルマ成分、Cb成分、Cr成分の全パーティションブロックに対してCBF値が1であるブロックに対してのみ最後の0以外の係数の位置をチェックして、LFNSTインデックスシグナリングをするか否かを決定できる。
【0281】
ISPモードである場合には、最後の0以外の係数の位置をチェックしないように映像情報を構成してもよく、これに関する実施例は、次の通りである。
【0282】
i.ISPモードである場合は、ルマブロックとクロマブロックの両方に対して最後の0以外の係数の位置に対するチェックを省略し、LFNSTインデックスシグナリングを許容することができる。すなわち、全てのパーティションブロックに対して最後の0以外の係数の位置がDC位置であるか、当該CBF値が0であっても、当該LFNSTインデックスシグナリングを許容することができる。
【0283】
ii.ISPモードである場合には、ルマブロックに対してのみ、最後の0以外の係数の位置に対するチェックを省略し、クロマブロックの場合は、上述した方式の最後の0以外の係数の位置に対するチェックを行うことができる。例えば、デュアルツリータイプであり、ルマブロックである場合は、最後の0以外の係数の位置に対するチェックをしないでLFNSTインデックスシグナリングを許容し、デュアルツリータイプであり、クロマブロックである場合は、上述した方式で最後の0以外の係数の位置に対するDC位置存在の有無をチェックして、当該LFNSTインデックスのシグナリングをするか否かを決定できる。
【0284】
iii.ISPモードであり、シングルツリータイプである場合は、前記i番又はii番方式を適用できる。すなわち、ISPモードであり、シングルツリータイプにi番を適用する場合に、ルマブロックとクロマブロックの両方に対して最後の0以外の係数の位置に対するチェックを省略し、LFNSTインデックスシグナリングを許容することができる。又は、ii番を適用して、ルマ成分に対するパーティションブロックに対しては、最後の0以外の係数の位置に対するチェックを省略し、クロマ成分に対するパーティションブロック(クロマ成分に対してISPを適用しない場合には、パーティションブロックの数を1と見なすことができる。)に対しては、上述した方式で最後の0以外の係数の位置に対するチェックを行って、当該LFNSTインデックスシグナリングをするか否かを決定できる。
【0285】
E.全パーティションブロックのうち1つのパーティションブロックでも、LFNST変換係数が存在し得る位置でない位置に変換係数が存在することが確認されると、LFNSTインデックスシグナリングを省略してよい。
【0286】
例えば、4x4パーティションブロックと8x8パーティションブロックの場合は、VVC標準における変換係数スキャニング順序によって、DC位置から8個の位置にLFNST変換係数が存在してよく、残りの位置はいずれも0で埋められる。また、4x4と等しい又はより大きいと共に、4x4パーティションブロック及び8x8パーティションブロックでない場合には、VVC標準における変換係数スキャニング順序によってDC位置から16個の位置にLFNST変換係数が存在でき、残りの位置はいずれも0で埋められる。
【0287】
したがって、レジデュアルコーディング(residual coding)を行った後、前記0値が埋められるべき領域に0以外の変換係数が存在すると、LFNSTインデックスシグナリングを省略してよい。
【0288】
一方、ISPモードである場合に、現在VVC標準では水平方向と垂直方向に対してそれぞれ独立に長さ条件を確認し、MTSインデックスに対するシグナリング無しでDCT-2の代わりにDST-7を適用する。横又は縦の長さが4と等しい又は大きく、16と等しい又は小さいかが判断され、判断の結果によって1次変換カーネルが決定される。したがって、ISPモードであり、且つLFNSTを適用できる場合に対しては、次のような変換組合せ構成が可能である。
【0289】
1.LFNSTインデックスが0である場合(LFNSTインデックスが0と類推される場合も含む。)に対しては、現在VVC標準に含まれたISPである時の1次変換決定条件に従うことができる。すなわち、水平方向と垂直方向に対してそれぞれ独立に長さ条件(4と等しい又は大きく、16と等しい又は小さい条件)を満たすか否かをチェックし、満たすと、1次変換のためにDCT-2の代わりにDST-7を適用し、満たさないと、DCT-2を適用できる。
【0290】
2.LFNSTインデックスが0よりも大きい場合に対しては、1次変換として次のような2つの構成が可能である。
【0291】
A.水平方向と垂直方向の両方ともにDCT-2を適用できる。
【0292】
B.現在VVC標準に含まれたISPである時の1次変換決定条件に従うことができる。すなわち、水平方向と垂直方向に対してそれぞれ独立に長さ条件(4と等しい又は大きく、16と等しい又は小さい条件)を満たすか否かをチェックし、満たすと、DCT-2の代わりにDST-7を適用し、満たさないと、DCT-2を適用できる。
【0293】
ISPモードであるとき、LFNSTインデックスはコーディングユニットごとに伝送されるのではなく、パーティションブロックごとに伝送されるように映像情報を構成できる。このような場合、上述したLFNSTインデックスシグナリング方式においてLFNSTインデックスが伝送される単位内にパーティションブロックが1個のみ存在すると見なし、LFNSTインデックスシグナリングをするか否かを決定できる。
【0294】
一方、一実施例よって、BDPCM(block differential pulse coded modulation又はBlock-based Delta Pulse Code Modulation)手法が用いられてよい。BDPCMは、RDPCM(quantized Residual block-based Delta Pulse Code Modulation)と命名されてもよい。
【0295】
BDPCMを適用してブロックを予測する場合に、ブロックの行又は列をラインバイラインで予測するために、復元されたサンプルを活用する。このとき、使用された参照ピクセルは、フィルタリングされないサンプルであってよい。BDPCM方向は、垂直方向又は水平方向予測が用いられたか否かを示すことができる。予測誤り(prediction error)は、空間的ドメインで量子化され、ピクセルは、予測に、逆量子化された予測誤りを足すことによって復元される。このようなBDPCMの代案として、量子化されたレジデュアルドメインBDPCMが提案されてよく、予測方向やシグナリングは、空間的ドメインに適用されたBDPCMと同一であってよい。すなわち、量子化されたレジデュアルドメインBDPCMによって量子化係数自体をDPCM(Delta Pulse Code Modulation)のように積み重ねた後、逆量子化によってレジデュアルを復元できる。したがって、量子化されたレジデュアルドメインBDPCMは、レジデュアルコーディング端でDPCMを適用するという意味で使われてよい。本文書で使われる量子化されたレジデュアルドメインは、予測に基づいて導出されたレジデュアルが変換無しで量子化されたものであり、量子化されたレジデュアルサンプルに対するドメインを意味する。
【0296】
一例によって、BDPCM(Block-based Delta Pulse Code Modulation)モードの適用有無は、表3のようにコーディングユニットに対するシンタックステーブルでシグナルされてよい。
【0297】
【0298】
表3のintra_bdpcm_luma_flagは、当該コーディングユニットのルマ成分に対してBDPCMを適用するか否かを示すフラグであり、intra_bdpcm_chroma_flagは、当該コーディングユニットのクロマ成分に対してBDPCMを適用するか否かを示すフラグである。フラグ値が1であれば、BDPCMを適用、0であれば、適用しないことを示す。intra_bdpcm_luma_flagとintra_bdpcm_chroma_flag値によって、表4のようにBdpcmFlag[x][y][cIdx]変数値が定められる。
【0299】
【0300】
表4のBdpcmFlag[x][y][cIdx]において、x値は、ルマピクチャーの左上端横座標(x座標)位置を基準にした時(0にした時)のx座標(横ピクセル位置)値を示し、x座標は左側から右側に向かって増加する。表4のBdpcmFlag[x][y][cIdx]において、y値は、ルマピクチャーの左上端縦座標(y座標)位置を基準にした時(0にした時)のy座標(縦ピクセル位置)値を示し、y座標は上側から下側に向かって増加する。
【0301】
表4のBdpcmFlag[x][y][cIdx]において、cIdx値はカラー成分を示し(Y又はCb又はCr)、0であれば、ルマ成分を、1と2であれば、クロマ成分を示す(1であればCb、2であればCr)。表4で、cIdx値が0でないクロマ成分であっても、x座標とy座標はルマピクチャーを基準で示し、例えば、クロマ成分の横方向解像度がルマ成分に比べて2倍低い場合(例えば、ピクチャーに対するカラーフォーマットが4:2:0であるか4:2:2である場合)に、クロマピクチャーに対する実質的なx座標値は、ルマピクチャー基準の当該座標に比べて半分となる。
【0302】
表4で、cbWidthとcbHeightはそれぞれ、ルマ成分を基準にした時のコーディングブロックに対する横長と縦長を示し、同様に、クロマ成分の横(縦)方向解像度がルマ成分に比べて2倍低い場合に、当該クロマコーディングブロックに対する実質的な横(縦)長は、ルマコーディングブロックに比べて半分となる。
【0303】
表4で、x0とy0はそれぞれ、ルマピクチャーの左上端位置を0にした時の当該ルマコーディングブロック内の左上端位置に対するx座標値とy座標値を示す。このとき、クロマコーディングブロックは、ルマ成分に換算した時の同一位置(collocated)ルマ位置に対応する。
【0304】
表4に見られるように、2クロマ成分(Cb、Cr)に対するBdpcmFlag[x][y][cIdx]値がいずれもintra_bdpcm_chroma_flagで(に)設定されるので、intra_bdpcm_chroma_flag値が1であれば、現在コーディング中であるコーディングユニットの2クロマ成分(Cb、Cr)に対していずれもBDPCMが適用されてよい。
【0305】
表5のように、各成分に対してBDPCMが適用された場合に、当該成分に対する変換スキップフラグ(transform_skip_flag)値は1と類推される。
【0306】
【0307】
表5で、transform_skip_flag[x0][y0][cIdx」は、当該コーディングブロックが変換スキップ(transform skip)でコードされるか否かを示すフラグである。フラグ値が1であれば、変換スキップを適用し、0であれば、変換スキップを適用しないことを示す。ここで、x0、y0、cIdxの意味は表5にも明示されており、表4を参照して説明された通りである。
【0308】
表5で、BdpcmFlag[x0][y0][cIdx]値が1であれば、transform_skip_flag[x0][y0][cIdx]が1と類推されるとしているが(すなわち、cIdxで指定される成分に対してBPPCMが適用されると、当該成分に対する変換スキップフラグは1に設定)、表4から分かるように、2クロマ成分(Cb、Cr)に対してはBdpcmFlag[x0][y0][cIdx]値がいずれもintra_bdpcm_chroma_flagで設定されるので、クロマ成分に対してBDPCMが適用される場合に対しては、2クロマ成分に対するtransform_skip_flag[x0][y0][cIdx]値が同一に1に設定される。
【0309】
表6は、変換ユニットに対するシンタックステーブルであり、transform_skip_flag[x0][y0][cIdx]及び各カラー成分に対する変換ブロックのコーデッドブロックフラグ(coded block flag,CBF)値のシグナリング又はパーシングを示している。
【0310】
【0311】
【0312】
表6で、ルマ成分に対するCBFであるtu_y_coded_flag[x0][y0](又は、tu_cbf_luma[x0][y0]で表現されてよい。)とクロマ成分に対するCBFであるtu_cb_coded_flag[xC][yC](Cb成分に対するCBF、又はtu_cbf_cb[xC][yC])、及びtu_cr_coded_flag[xC][yC](Cr成分に対するCBF、又はtu_cbf_cr[xC][yC])をシグナルする時に、各成分に対するBDPCM適用の有無をチェックしない。すなわち、BdpcmFlag[x][y][cIdx]値をチェックしない。
【0313】
ここで、CBF(Coded Block Flag)は、当該変換ブロック内部に変換係数が存在するか否かを示し、その値が1であれば、変換係数が存在し、0であれば、変換係数が存在しないことを意味する。したがって、各成分に対してBDPCMが適用されても、当該CBF値は0になってよい。
【0314】
BDPCMの動作方式は、選択された方向によって(VVCでは水平方向又は垂直方向、表4でルマ成分の場合、intra_bdpcm_luma_dir_flagで指定され、クロマ成分の場合、intra_bdpm_chroma_dir_flagで指定される。)位置ごとに変換係数の形態で伝達される値を累積してレジデュアル信号を復元する。この時、当該CBF値が0であることは、動作側面でレジデュアル信号がない一般的なイントラ予測方式と同一であるといえる。
【0315】
しかし、CBF値が0である場合に、表3のように、intra_bdpcm_luma_flag、intra_bdpcm_luma_dir_flag、intra_bdpcm_chroma_flag、intra_bdpcm_chroma_dir_flagをシグナルするBDPCMモードが、RD費用の側面で、イントラ予測コーディングよりも有利であるといえる。したがって、CBF値が0である場合に、BDPCMモードでコードされてよく、これによって、BDPCMモードであってもCBF値が0である場合が存在し得る。
【0316】
一方、表3のコーディングユニットでLFNSTインデックス(lfnst_idx)がシグナルされてよく、表3のようにlfnstNotTsFlag変数値が1である場合にのみ、LFNSTインデックスがシグナルされてよい。表3で、複数の成分に対する変換スキップフラグのいずれか1つでも1であれば、lfnstNotTsFlag値は1に設定される。すなわち、lfnstNotTsFlag変数は、現在コーディングユニットに属した全ての成分に対して当該変換スキップフラグ値がいずれも0である場合にのみ1に設定されてよい。
【0317】
表3のように、シングルツリーである場合は、ルマ成分とクロマ成分の両方に対して変換スキップフラグが0である場合に限ってlfnstNotTsFlag値が1になってよく、ルマ分離ツリー(DUAL_TREE_LUMA)である場合には、ルマ成分に対する変換スキップフラグのみ0であればよく、クロマ分離ツリー(DUAL_TREE_CHROMA)である場合には、Cb成分とCr成分に対する変換スキップフラグ値がいずれも0である場合に限ってlfnstNotTsFlag変数値が1になってよい。
【0318】
上述したように、ある成分に対してBDPCMモードであり、且つCBF値が0である場合に、当該成分に対する変換スキップフラグが1と類推されてよい。しかし、当該成分に対して変換係数が存在しないので、当該成分は変換過程と関係がない。当該成分は変換過程と関係がないので、LFNSTインデックスのシグナリングに関しても関係ない必要がある。しかし、この場合、表3では当該成分に対する変換スキップフラグが1と類推され、lfnstNotTsFlag値が0に)設定されるので、LFNSTインデックスがシグナルされない。より具体的な例示として、次のような場合を挙げることができる。
【0319】
1.クロマ分離ツリーである場合に、仮に、表3と違い、Cb成分とCr成分に対してBDPCM適用の有無を示すフラグがそれぞれ存在する(例えば、表3におけるintra_bdpcm_chroma_flagではなくintra_bdpcm_cb_flagとintra_bdpcm_cr_flagが存在する)と、Cb成分又はCr成分にBDPCMが適用され、当該変換ブロックに対するCBF値が0である場合に、Cb成分又はCr成分に対する変換スキップフラグも1になるので、表3におけるlfnstNotTsFlag値は0になる。したがって、LFNSTインデックスがシグナルされない。
【0320】
一方、Cr成分又はCb成分のいずれか1つにBDPCMが適用され、残りの成分に対するCBF値が0でないと共に変換スキップフラグ値が0である場合には、残りの成分に対してはLFNSTが適用されてよいので、LFNSTインデックスがシグナルされ得るように許容することが好ましい。
【0321】
しかし、表3のように、Cb成分とCr成分に対するBDPCM適用の有無を示すフラグがintra_bdpcm_chroma_flagと同一であれば、intra_bdpcm_chroma_flagが1になった時にBDPCMがCb成分とCr成分に同時に適用されるので、Cr成分又はCb成分のいずれか1つにBDPCMが適用され、残りの成分に対するCBF値が0でないと共に変換スキップフラグ値が0である場合が発生しなくなり、LFNSTインデックスがシグナルされない。
【0322】
2.シングルツリーである場合に、Y、Cb、Crのいずれか一成分に対するBDPCMが適用され、当該変換ブロックに対するCBF値が0である場合に、当該成分に対する変換スキップフラグ値も1になるので、表3におけるlfnstNotTsFlag値は0になる。
【0323】
しかし、残り2成分のいずれか1つでも当該CBF値が0でないと共に当該成分に対する変換スキップフラグ値が0である場合には、当該成分に対してLFNSTが適用されてもよいので、LFNSTインデックスがシグナルされ得るように許容することが好ましい。
【0324】
表3のように、ルマ成分(Y)に対するBDPCM適用の有無がintra_luma_bdpcm_flagによって決定され(intra_luma_bdpcm_flag値が1であれば、BDPCMを適用し、0であれば、BDPCMを適用しない。)、2クロマ成分(Cb、Cr)に対するBDPCM適用の有無がintra_chroma_bdpcm_flagによって決定されると仮定しよう(intra_chroma_bdpcm_flag値が1であれば、BDPCMを適用、0であれば、BDPCMを適用しない。)。
【0325】
この場合、シングルツリーでコードされる時に、(1)ルマ成分に対してBDPCMが適用され、当該CBF値が0であり、残り2つのクロマ成分のいずれか1つでも当該CBF値が0でないと共に変換スキップフラグ値が0である場合に、当該クロマ成分に対してLFNSTが適用されてよい。しかし、ルマ成分に対してBDPCMが適用され、当該CBF値が0である場合に、現在VVC標準では2クロマ成分に対する変換スキップフラグ値がいずれも0である場合に限ってLFNSTインデックスがシグナリング可能であり、そのために2クロマ成分に対してBDPCMが適用されることが不可能である。また、現在VVC標準では、シングルツリーである場合に、ルマ成分に対してのみLFNSTを適用するようになっているので、シングルツリーでコードされる時にクロマ成分に対してはLFNSTが適用されない。
【0326】
シングルツリーでコードされる他のケースである、(2)2クロマ成分に対してBDPCMが適用され、当該2クロマ成分に対するCBF値がいずれも0である場合に、ルマ成分に対するCBF値が0でないと共に変換スキップフラグ値が0であれば、当該ルマ成分に対してLFNSTが適用されてもよい。すなわち、ルマ成分に変換スキップに適用されず、2つのクロマ成分にBDPCMが適用され、クロマ成分のCBF値がいずれも0であっても、ルマ成分に対するLFNSTインデックスがシグナルされてよい。
【0327】
したがって、表3におけるlfnstNotTsFlag変数を、表7及び表8のように設定すれば、上記の2つの場合((1)及び(2))にLFNSTインデックスがシグナルされてよい。
【0328】
【0329】
【0330】
表7及び表8のように、ある成分に対するCBF値が0であれば、当該成分に対する変換スキップフラグ値はいずれの値を有しても関係ないので、lfnstNotTsFlag値を0に変更するのに寄与しない。
【0331】
言い換えると、当該コーディングユニットに属した全ての成分に対するCBF値が0であるか、変換スキップフラグ値が0であれば、lfnstNotTsFlag値が1に設定されてよい。
【0332】
表7では、シングルツリーか、ルマ分離ツリーか、クロマ分離ツリーかによって条件をチェックする成分を異なるように構成している。すなわち、シングルツリーはY/Cb/Crの全て、ルマ分離ツリーはYのみ、クロマ分離ツリーはCb及びCrの両方に対してCBF値又は変換スキップフラグ値をチェックし、表8では、全ての成分に対して全部チェックしている。
【0333】
一方、表8では、現在コーディングユニットに関連する成分でない場合に対して、当該CBF又は変換スキップフラグが0と類推されることを仮定している。すなわち、ルマ分離ツリーである場合は、tu_cb_coded_flag[x0][y0]又はtransform_skip_flag[x0][y0][1]が0と類推されるべきであり、tu_cr_coded_flag[x0][y0]又はtransform_skip_flag[x0][y0][2]が0と類推されるべきである。クロマ分離ツリーである場合は、tu_y_coded_flag[x0][y0]又はtransform_skip_flag[x0][y0][0]が0と類推されるべきである。
【0334】
一方、現在VVC標準では、ISPモードが適用されるコーディングブロックにLFNSTが適用されてよい。ISPモードが適用されてY成分に対するコーディングブロック(Coding Block)がN個(N=2又は4)のパーティションブロックに分割される場合に、パーティションブロックごとにCBF値を有する。すなわち、パーティションブロックごとにtu_y_coded_flagがシグナルされる。
【0335】
現在VVC標準においてISPモードが適用されるとき、パーティションブロックのうち少なくとも1つは、CBFが1であることが保障され、CBFが1であるパーティションブロックのうちの1つは、必ずしもコーディング順序において1番目のパーティションブロックである必要はない。
【0336】
ISPが適用される場合に、表7及び表8におけるx0とy0は、コーディングユニットに対するx座標とy座標であるので、表7及び表8で登場するtu_y_coded_flag[x0][y0]は、1番目のパーティションブロックに対するCBFである。
【0337】
したがって、ISPモードが適用される場合に、表7及び表8で「!tu_y_coded_flag[x0][y0]」条件だけでは、ルマコーディングブロック内に変換係数が存在するか否かがチェックできない。
【0338】
一例によって、ISPモードが適用される場合に、ルマコーディングブロック内に変換係数が存在するか否かを明確にチェックできない状況を反映して、表7及び表8はそれぞれ、表9及び表10と記述されてよい。表9及び表10で「IntraSubPartitionsSplitType==ISP_NO_SPLIT」条件は、ISPモードが適用されない場合を示す。
【0339】
【0340】
【0341】
しかし、現在VVC標準においてISPモードが適用される時は変換スキップが適用されることが不可能であるため、「transform_skip_flag[x0][y0][0]==0」条件を満たさないとISPモードも適用されない。
【0342】
表7の「!tu_y_coded_flag[x0][y0]||transform_skip_flag[x0][y0][0]==0」条件において論理的に「!tu_y_coded_flag[x0][y0]」と「transform_skip_flag[x0][y0][0]==0」のいずれか一つのみ満たせば、当該条件は真となるので、「!tu_y_coded_flag[x0][y0]」に対するチェックは、「transform_skip_flag[x0][y0][0]==0」を満たさない場合にのみ意味がある。
【0343】
しかし、上述したように、「transform_skip_flag[x0][y0][0]==0」を満たさないと、ISPモードが適用されないことが確実であるので、「!tu_y_coded_flag[x0][y0]」に対するチェック時に、ISPモードであるか否かを考慮する必要がなくなる。したがって、表7及び表8も依然として有効であるといえる。
【0344】
一例によって、現在VVCにおいて、LFNSTは、1)ルマ分離ツリーである場合に適用されてよく、2)クロマ分離ツリーである場合に適用されてよく、3)シングルツリーである場合に、ルマ成分に対してのみ適用されてよい。上述したように、BDPCMが適用されると共にCBFが0である成分は変換が適用されなくなるので、LFNSTと関係がないといえる。
【0345】
ルマ分離ツリー又はシングルツリーであり、ルマ成分に対してBDPCMが適用され、且つ当該CBFが0である場合に、根本的にLFNSTが適用されないので、ルマ成分に対するCBF値をチェックしなくてもよい。したがって、ルマ分離ツリーとシングルツリーである場合に、ルマ成分に対するCBF値をチェックしないで、表11又は表12のようにlfnstNotTsFlagを導出することができる。
【0346】
【0347】
【0348】
表11又は表12が適用される場合に、BDPCMとLFNSTが適用される全ての場合に対してそれぞれいずれの方式で動作するかについて説明すると、次の通りである。
【0349】
1.ルマBDPCM非適用、クロマ BDPCM非適用:現在のVVC標準のように、すなわち表3と同一に動作する。
【0350】
2.ルマBDPCM適用、クロマBDPCM非適用
【0351】
2-1)ルマ分離ツリー:現在のVVC標準のように、すなわち表3と同一に動作する。すなわち、ルマ成分に対するCBFが0である場合と1である場合ともLFNSTインデックスがシグナルされず、0と類推される。
【0352】
2-2)クロマ分離ツリー:現在のVVC標準のように、すなわち表3と同一に動作する。
【0353】
2-3)シングルツリー:現在のVVC標準のように、すなわち表3と同一に動作する。すなわち、ルマ成分に対するCBFを表12ではチェックしないためである。
【0354】
3.ルマBDPCM非適用、クロマBDPCM適用
【0355】
3-1)ルマ分離ツリー:現在のVVC標準のように、すなわち表3と同一に動作する。
【0356】
3-2)クロマ分離ツリー:Cb成分とCr成分に対してCBF値がいずれも0であれば、LFNSTインデックスがシグナルされず、0と類推されるので、結局、現在のVVC標準のように、すなわち表3と同一に動作する。
【0357】
3-3)シングルツリー:Cb成分とCr成分に対してCBF値がいずれも0である場合であってもルマ成分にはBDPCMが適用されないので、LFNST適用が可能である。したがって、LFNSTインデックスがシグナルされてよい。しかし、現在のVVC標準では、当該場合に対してLFNSTが適用されない。
【0358】
4.ルマBDPCM適用、クロマBDPCM適用:ルマ成分に対してBDPCMが適用されるので、当該変換スキップフラグが1になってlfnstNotTsFlag値が0になり、LFNSTインデックスがシグナルされない。結局、現在のVVC標準、すなわち表3と同一に動作する。
【0359】
先に言及したように、現在VVC標準ではルマ分離ツリーとシングルツリーである場合に、ルマ成分に対してのみLFNSTが適用されてよい。ルマ分離ツリーでは、ルマ成分に対するCBF値が0である場合に、表3でLfnstDcOnly変数値が1とそのまま維持されるので、LFNSTインデックスがシグナルされないで0と類推される。
【0360】
一方、シングルツリーでは、ルマ成分に対するCBF値が0であっても、クロマ成分によってLfnstDcOnly値が0にアップデートされ(当該レジデュアルコーディングが行われ、DC位置外側に最後の0である変換係数が存在すると、LfnstDcOnly値が0にアップデートされる。)、クロマ成分に対してLFNSTに対するゼロアウト条件が満たされ、LfnstZeroOutSigCoeffFlag値が0に維持されると、(順方向LFNSTが適用されたとき、変換係数が存在し得る領域にのみ変換係数が存在する場合であって、変換ブロックのサイズが4x4と8x8である場合は、順方向スキャン順序にしたがってDC位置から8番目位置まで変換係数が位置してよく、残りの場合は、当該TBの左上端4x4領域に位置してよい。ここで、DC位置は、当該変換ブロックの左上端位置を示す。)、LFNSTインデックスがシグナルされてよい。
【0361】
したがって、現在VVC標準では、シングルツリーである時に、LFNSTインデックスがシグナルされてもルマ成分に対するCBF値が0であるので、結果的に、いかなる成分にもLFNSTが適用されず、余計に(redundant)LFNSTインデックスをシグナルする場合が発生し得る。
【0362】
表3のlfnstNotTsFlag変数値設定部分を表13のように修正し、シングルツリーである時に、ルマ成分に対するCBF値が0である場合に対してはLFNSTインデックスシグナリングをしないで0と類推するように構成できる。
【0363】
このとき、表13で、「IntraSubPartitionsSplitType !=ISP_NO_SPLIT」条件は、ISPモードが適用されることを示す。上述したように、ISPモードが適用されると、パーティションブロックのうち少なくとも1つに対しては当該CBFが0でなく、tu_y_coded_flag[x0][y0]は、コーディング順序において1番目のパーティションブロックに対するCBFに過ぎないので、「IntraSubPartitionsSplitType !=ISP_NO_SPLIT」条件を別個に分離させ、ISPモードが適用されない場合に限ってtu_y_coded_flag[x0][y0]をチェックする。
【0364】
【0365】
仮に表7~表10のように、BDPCMが適用されると共にCBF値が0である場合にも、LFNSTインデックスシグナリングを許容すると(すなわち、当該場合に対しては変換を適用しない変換ブロックと見なす。)、lfnstNotTsFlag変数を表14のように設定できる。
【0366】
【0367】
表14を適用すれば、1)ルマ分離ツリーである時は、表13と同一にルマ成分に対するCBF値が1である場合に限ってLFNSTインデックスをシグナルし、2)クロマ分離ツリーである時は、表7~表12のようにクロマ成分(Cb、Cr)に対するCBF値がいずれも0であれば、例えば、BDPCMが適用され、Cb成分とCr成分に対するCBF値がいずれも0である場合にLFNSTインデックスをシグナルしない。また、3)シングルツリーのとき、ルマ成分に対してはCBF値が1であり、3-1)Cb成分とCr成分に対していずれも変換スキップが適用されないか、3-2)クロマ成分に対してBDPCMが適用される時に、Cb成分とCr成分に対していずれも当該CBF値が0であれば、LFNSTインデックスをシグナルすることができる。
【0368】
以下では、BDPCMモードが適用されると、当該変換ブロックに対するCBF値が1と類推されるようにし、既存LFNSTインデックスシグナリング方法をそのまま用いる実施例について説明する。
【0369】
各カラー成分に対してBDPCMモードでコードされる場合に、当該成分に対するCBF値を1と類推されるようにし、表3で提示したLFNSTインデックスシグナリング方式をそのまま、すなわち、lfnstNotTsFlag変数に対する既存設定をそのまま使用することができる。本実施例によって、表6の変換ユニットに対するシンタックステーブルは、表15のように変更されてよい。
【0370】
【0371】
【0372】
表3のように、ISPとBDPCMは互いに排他的であるので、すなわち、intra_bdpcm_luma_flagが0の時にのみintra_subpartitions_mode_flag[x0][y0]がパースされてよいので、BDPCMが適用可能な(enable)時にはISPは適用可能でなく、ISPが適用可能な(enable)時にはBDPCMは適用可能でない。表15で、「IntraSubPartitionsSplitType !=ISP_NO_SPLIT」条件は、ISPモードが適用されることを示し、!BdpcmFlag[x0][y0][0]条件は、表16のように表すことができる。
【0373】
【0374】
表15に加えて、BDPCMが適用される時に当該CBF値が1と類推されるという内容を、CBFに対するスペックテキスト(表17)に反映できる。
【0375】
【0376】
現在コードされるコーディングユニットに対してクロマにBDPCMが適用される場合にjoint Cb-Crをそのまま適用可能なように(enable)してもよく、適用しなくても(disable)よい。表15では、joint Cb-Crの適用されるか否かを示すシンタックス要素であるtu_joint_cbcr_residual_flag[xC][yC]がシグナルされる。
【0377】
表17のように、クロマ成分に対してBDPCMが適用されるとき(すなわち、BdpcmFlag[x0][y0][1]とBdpcmFlag[x0][y0][2]がいずれも1のとき)、Cb成分とCr成分に対するCBF値が1と類推されると、tu_cb_coded_flag[xC][yC]とtu_cr_coded_flag[xC][yC]がいずれも1である場合にのみ、joint Cb-Crが適用されてよい。表18は、joint Cb-Cr動作と関連したスペックテキストを表す。
【0378】
【0379】
【0380】
表18のように、joint Cb-Crモードが適用される場合に、クロマ成分のうち一つに対する変換係数がシグナルされ、コーディング、すなわち、表18でcodedCIdxで指定される成分がコードされる。codedCIdxが有し得る値は、1又は2であり、1は、Cb成分を示し、2はCr成分を示す。このとき、他の成分に対するレジデュアルデータは、コードされた成分に対するレジデュアルデータにcSign値を掛けた後、右に1だけシフトする又はシフトしない値と決定される。
【0381】
クロマ成分に対してBDPCMが適用される場合に、表18のように、TuCResMode[x0][y0]値は2と決められるので、右に1だけシフトしない値(resSamples[x][y]=cSign*res[x][y])と、他の成分に対するレジデュアルデータを決定し、cSign値は、ph_joint_cbcr_sign_flagシンタックス要素に基づいて(1-2*ph_joint_cbcr_sign_flag)と決定される。
【0382】
また、表19のように、クロマ成分に対するBDPCMが適用されない場合には、joint Cb-Crモードを適用しなくてよい。表19は、表15においてtu_joint_cbcr_residual_flag[xC][yC]をシグナルする部分のみが変更されている。すなわち、クロマ成分に対するBDPCMが適用されない場合には、joint Cb-Crモードを適用しないように制限する。
【0383】
【0384】
BdpcmFlag[x0][y0][1]変数とBdpcmFlag[x0][y0][2]変数を用いて表19と同一に動作するシンタックス情報を、表20のように構成できる。
【0385】
【0386】
一例によって、BDPCMモードが適用されると、当該変換ブロックに対するCBF値を1とシグナルするようにビットストリーム条件制限(bitstream conformace constraint)を付けることができる。
【0387】
BDPCMモードであり、且つCBF値が0である場合に、当該成分に対する変換スキップフラグが1と類推される。この場合、変換係数が存在しないため、当該成分は変換過程と関係ないにもかかわらず、変換スキップフラグが1と類推されてしまい、LFNSTインデックスがシグナルされないとする問題点があった。このような問題点を防止するために、BDPCMモードが適用される場合に対しては、当該変換ブロックに対するCBF値を1とシグナルするようにビットストリーム条件制限を付けることができる。
【0388】
表21は、各CBFに対するセマンティクス部分において当該ビットストリーム条件制限が追加されたことを表す。
【0389】
【0390】
以下の図面は、本明細書の具体的な一例を説明するために作成された。図面に記載された具体的な装置の名称や具体的な信号/メッセージ/フィールドの名称は例示的に提示されたものであり、本明細書の技術的特徴は以下の図面に使われた具体的な名称に制限されない。
【0391】
図15は、本文書の一実施例に係るビデオデコーディング装置の動作を示すフローチャートである。
【0392】
図15に開示された各段階は、
図5~
図14で前述した内容の一部に基づくものである。したがって、
図3、
図5~
図14で前述した内容と重複する具体的な内容は、説明を省略又は簡単にするものとする。
【0393】
一実施例に係るデコーディング装置300は、ビットストリームからレジデュアル情報を受信することができる(S1510)。
【0394】
より具体的には、デコーディング装置300は、ビットストリームから現在ブロックに対する量子化された変換係数に関する情報をデコードすることができ、現在ブロックに対する量子化された変換係数に関する情報に基づいて対象ブロックに対する量子化された変換係数を導出することができる。対象ブロックに対する量子化された変換係数に関する情報は、SPS(Sequence Parameter Set)又はスライスヘッダー(slice header)に含まれてよく、簡素化変換(RST)が適用されるか否かに関する情報、簡素化ファクターに関する情報、簡素化変換を適用する最小変換サイズに関する情報、簡素化変換を適用する最大変換サイズに関する情報、簡素化逆変換サイズ、変換セットに含まれた変換カーネルマトリックスのいずれか1つを指示する変換インデックスに関する情報のうち少なくとも1つを含むことができる。
【0395】
また、デコーディング装置は、現在ブロックに対するイントラ予測モードに関する情報及び現在ブロックにISPが適用されるか否かに関する情報をさらに受信することができる。デコーディング装置は、ISPコーディング又はISPモードを適用するか否かを示すフラグ情報を受信及びパースすることによって、現在ブロックが所定の個数のサブパーティション変換ブロックに分割されるか否かを導出することができる。ここで、現在ブロックは、コーディングブロックであってよい。また、デコーディング装置は、現在ブロックがいかなる方向に分割されるかを指示するフラグ情報によって、分割されるサブパーティションブロックのサイズ及び個数を導出することができる。
【0396】
一例によって、ビットストリームによってLFNSTインデックスを受信することができる。LFNSTインデックスは、逆2次非分離としてLFNSTが適用される時に、LFNSTマトリックスを指定するための値として0~2の値を有することができる。例えば、LFNSTインデックス値0は、現在ブロックにLFNSTが適用されないことを示し、LFNSTインデックス値1は1番目のLFNSTマトリックスを、LFNSTインデックス値2は2番目LFNSTマトリックスを示すことができる。
【0397】
ISPに関連した情報及びLFNSTインデックスは、コーディングユニットレベルで受信されてよい。
【0398】
デコーディング装置300は、レジデュアル情報に基づいて逆量子化を行い、現在ブロックに対する変換係数を導出することができる(S1520)。
【0399】
ここで、現在ブロックは、変換単位である変換ブロックであってよく、現在ブロックのツリータイプがシングルツリーであれば、ルマ成分に対する変換ブロック、第1クロマ成分に対する変換ブロック、第2クロマ成分に対する変換ブロックを含むことができる。また、現在ブロックのツリータイプがデュアルツリールマであれば、ルマ成分に対する変換ブロックを、現在ブロックのツリータイプがデュアルツリークロマであれば、第1クロマ成分及び第2クロマ成分に対する変換ブロックを含むことができる。
【0400】
導出された変換係数は、4x4ブロック単位で逆方向対角スキャン順序によって配列されてよく、4x4ブロック内変換係数も、逆方向対角スキャン順序によって配列されてよい。すなわち、逆量子化が行われた変換係数は、VVCやHEVCにおけるように、ビデオコーデックで適用されている逆方向スキャン順序にしたがって配置されてよい。
【0401】
デコーディング装置は、現在ブロックのツリータイプと、現在ブロックの各成分に対する変換係数コーディングフラグ又は現在ブロックの各成分に対する変換スキップフラグに基づいて、LFNSTが適用されるか否かに関するLFNST適用変数を設定できる(S1530)。
【0402】
LFNST適用変数の一例として、lfnstNotTsFlagのようなフラグ変数であってよく、lfnstNotTsFlagは、現在ブロックのツリータイプと、現在ブロックの各成分に対する変換係数コーディングフラグ又は現在ブロックの各成分に対する変換スキップフラグに基づいて導出されてよい。LFNST適用変数が1であれば、LFNSTが適用され得ることを示し、LFNST適用変数が0であれば、LFNSTが適用され得ないことを示す。すなわち、LFNST適用変数が1であれば、LFNSTインデックスがパースされてよく、LFNST適用変数が0であれば、LFNSTインデックスがパースされなくてよい。
【0403】
変換係数コーディングフラグは、変換ブロックに対する変換係数の存在有無を示すCBFを意味し、CBFが1であれば、変換ブロックに対する変換係数が存在することを示すので、変換過程が行われてよく、CBFが0であれば、変換過程が行われない。
【0404】
一例によって、現在ブロックの各成分に対する変換係数コーディングフラグがいずれも0であることに基づき、LFNST適用変数の値は1と導出されてよい。この場合、LFNST適用変数の値は1に設定されるが、CBFが0であれば、実質的な変換過程が行われず、レジデュアルコーディングが呼び出されないので、後述される変数LfnstDcOnlyが0に更新されない。すなわち、現在ブロックの全ての成分に対する変換係数コーディングフラグが0であれば、LFNSTは適用されない。
【0405】
また、一例によって、現在ブロックの各成分に対する変換スキップフラグがいずれも0であることに基づき、LFNST適用変数の値は1に設定されてよい。すなわち、現在ブロックの全ての成分に変換スキップが適用されない場合に、LFNSTが適用されてよい。
【0406】
一方、一例によって、現在ブロックのツリータイプがシングルツリーであれば、ルマ成分とクロマ成分のそれぞれにBDPCMモードが適用されてよい。すなわち、ルマ成分にBDPCMモードが適用され、クロマ成分にはBDPCMモードが適用されなくてよく、逆に、クロマ成分にBDPCMモードが適用され、ルマ成分にはBDPCMモードが適用されなくてよい。
【0407】
現在標準によれば、シングルツリーであるとき、クロマ成分に対してはLFNSTが適用されず、ルマ成分にのみLFNSTが適用されてよい。このとき、ルマ成分にはBDPCMモードが適用されず、変換係数も存在するので、変換が行われてよく(すなわち、ルマ成分はBDPCMモードが適用されず、CBFが0でなく、変換スキップフラグも0でない場合)、クロマ成分にはBDPCMモードが適用され得る場合が存在する。BDPCMモードが適用される場合に、変換スキップフラグは1と類推される。
【0408】
既存にはLFNST適用変数を導出するとき、ブロックに含まれているいずれか1つの成分でも変換スキップフラグが1であれば、LFNST適用変数が0に設定され、LFNSTインデックスがパースされなかった。すなわち、シングルツリータイプでコードされるとき、ルマ成分にLFNSTが適用され得るにもかかわらず、BDPCMモードが適用されるクロマ成分によって(BDPCMモードが適用される場合に、変換スキップフラグが1と類推されるため)LFNST適用変数が0に設定される問題点があった。
【0409】
一例によって、特定ブロックにBDPCMモードが適用される時にCBFが0である場合が発生し得るので、これを活用して前記の問題点を解決しようとする。デコーディング装置は、LFNST適用変数を導出する条件にCBFが0である条件を追加することによって、クロマ成分にBDPCMモードが適用されてもルマ成分にLFNSTを適用することができる。
【0410】
デコーディング装置は、LFNST適用変数を導出するための条件を、「(treeType==DUAL_TREE_CHROMA ||(!tu_y_coded_flag[x0][y0]||transform_skip_flag[x0][y0][0]==0))&&(treeType==DUAL_TREE_LUMA ||((!tu_cb_coded_flag[x0][y0]||transform_skip_flag[x0][y0][1]==0)&&(!tu_cr_coded_flag[x0][y0]||transform_skip_flag[x0][y0][2]==0)))」と設定できる。
【0411】
前記条件によれば、現在ブロックのツリータイプがシングルツリーであり(「treeType==DUAL_TREE_CHROMA」を満たさないので、「(!tu_y_coded_flag[x0][y0]||transform_skip_flag[x0][y0][0]==0)」条件がチェックされる。)、ルマ成分に対する変換スキップフラグが0であるので、「transform_skip_flag[x0][y0][0]==0」条件を満たす。
【0412】
また、現在ブロックのクロマ成分にBDPCMモードが適用され、変換係数コーディングフラグが0であれば、「(!tu_cb_coded_flag[x0][y0]||transform_skip_flag[x0][y0][1]==0)&&(!tu_cr_coded_flag[x0][y0]||transform_skip_flag[x0][y0][2]==0)))」条件を満たす。すなわち、クロマ成分にBDPCMモードが適用されて変換スキップフラグは1と類推されるとしても、変換係数コーディングフラグ条件によって、LFNST適用変数の値はLFNSTインデックスがパーシング可能であることを示す1に設定されてよい。
【0413】
このように、LFNST適用変数の設定条件を変更することによって、いずれか1つの変換ブロックにBDPCMモードが適用されるとCBF値に関係なく全ての変換ブロックにLFNSTが適用されなかった問題を解決できる。また、LFNSTインデックスをパースするか否かを決定する条件をチェックするとき、各カラー成分別に変換スキップフラグとCBF値を共にチェックし、カラー成分のいずれか一つがBDPCMモードであっても、CBF値が0であれば、他の成分に対するLFNSTインデックスパーシングに影響を与えない。
【0414】
デコーディング装置は、LFNST適用変数の値に基づいてLFNSTインデックスをパースすることができる(S1540)。
【0415】
デコーディング装置は、LFNST適用変数の値が1であることに基づき、LFNSTインデックスをパースでき、LFNSTインデックスをパースするために、上述したLFNST適用変数の他にも様々な変数を導出することができる。
【0416】
例えば、デコーディング装置は、現在ブロックのDC成分以外の位置に有効係数が存在するか否かを示す第1変数(変数LfnstDcOnly)、及び現在ブロックの左上端第1領域を除く第2領域に前記変換係数が存在するか否かを示す第2変数(変数LfnstZeroOutSigCoeffFlag)を導出することができる。また、デコーディング装置は、現在ブロックのツリータイプ及びサイズなどに基づいて、LFNST適用の有無、すなわちLFNSTインデックスをパースするか否かを判断できる。
【0417】
このような第1変数及び第2変数は、最初は1に設定され、現在ブロックのDC成分以外の位置に有効係数が存在すれば、第1変数は0に更新され、第2領域に変換係数が存在すれば、第2変数は0に更新されてよい。
【0418】
第1変数は0に)更新され、第2変数は1に維持された場合に、現在ブロックにLFNSTが適用されてよい。
【0419】
一方、イントラサブパーティション(ISP)モードが適用され得るルマブロックの場合、変数LfnstDcOnlyの導出無しでLFNSTインデックスをパースすることができる。
【0420】
具体的にいうと、ISPモードが適用され、ルマ成分に対する変換スキップフラグ、すなわちtransform_skip_flag[x0][y0][0]値が0である場合に、現在ブロックのツリータイプがシングルツリー又はルマに対するデュアルツリーである時は、変数LfnstDcOnly値に関係なくLFNSTインデックスがシグナルされてよい。
【0421】
一方、ISPモードが適用されないクロマ成分の場合に、クロマCb成分に対する変換スキップフラグであるtransform_skip_flag[x0][y0][1]と、クロマCr成分に対する変換スキップフラグであるtransform_skip_flag[x0][y0][2]値によって、変数LfnstDcOnly値を0に設定できる。すなわち、transform_skip_flag[x0][y0][cIdx]でcIdx値が1の場合は、transform_skip_flag[x0][y0][1]値が0の時にのみ変数LfnstDcOnly値を0に設定でき、cIdx値が2の場合は、transform_skip_flag[x0][y0][2]値が0の時にのみ変数LfnstDcOnly値を0に設定できる。変数LfnstDcOnly値が0であれば、デコーディング装置は、LFNSTインデックスをパースでき、そうでなければ、LFNSTインデックスはシグナルされず、0値と類推されてよい。
【0422】
第2変数は、LFNST適用時に、ゼロアウトが行われたことを示し得る変数LfnstZeroOutSigCoeffFlagであってよい。第2変数は、最初は1に設定され、第2領域に有効係数が存在すれば、0に変更されてよい。
【0423】
変数LfnstZeroOutSigCoeffFlagは、最後の0以外の係数が存在するサブブロックのインデックスが0より大きく、変換ブロックの幅及び高さがいずれも4と等しい又は大きいか、0以外の最後の係数が存在するサブブロック内部における0以外の係数の最後の位置が7よりも大きく、変換ブロックのサイズが4x4又は8x8である場合に、0と導出されてよい。サブブロックとは、レジデュアルコーディングにおいてコーディング単位として用いられる4x4ブロックを意味し、CG(Coefficient Group)と命名されてよい。サブブロックのインデックスが0であれば、左上端4x4サブブロックを示す。
【0424】
すなわち、変換ブロックでLFNST変換係数が存在し得る左上端領域以外の領域において0以外の係数が導出されるか、4x4ブロック及び8x8ブロックに対してスキャン順序において8番目の位置を外れて0以外の係数が存在すれば、変数LfnstZeroOutSigCoeffFlagは0に設定される。
【0425】
デコーディング装置は、イントラ予測モード情報から導出されたイントラ予測モードに基づいて、LFNSTマトリックスを含むLFNSTセットを決定し、LFNSTセット及びLFNSTインデックスに基づいて、複数のLFNSTマトリックスのいずれか1つを選択できる。
【0426】
この時、現在ブロックで分割されたサブパーティション変換ブロックには、同一のLFNSTセット及び同一のLFNSTインデックスが適用されてよい。すなわち、サブパーティション変換ブロックには同一のイントラ予測モードが適用されるので、イントラ予測モードに基づいて決定されるLFNSTセットも、全てのサブパーティション変換ブロックに同一に適用されてよい。また、LFNSTインデックスはコーディングユニットレベルでシグナルされるので、現在ブロックで分割されたサブパーティション変換ブロックには同一のLFNSTマトリックスが適用されてよい。
【0427】
一方、上述したように、変換の対象となる変換ブロックのイントラ予測モードによって変換セットが決定されてよく、逆LFNSTは、LFNSTインデックスによって指示される変換セットに含まれている変換カーネルマトリックス、すなわち、LFNST行列のいずれか1つに基づいて行われてよい。逆LFNSTに適用される行列は、逆LFNST行列又はLFNST行列と命名してよく、このような行列は、順方向LFNSTに用いられる行列とトランスポーズ関係にあれば、如何なる名称も可能である。
【0428】
一例示において、逆LFNST行列は、列の個数が行の個数よりも少ない非正方形マトリックスであってよい。
【0429】
デコーディング装置は、パーシングされたLFNSTインデックス及びLFNSTのためのLFNSTマトリックスに基づいて、すなわち、LFNSTを適用して変換係数から修正された変換係数を導出することができる(S1550)。
【0430】
LFNSTは、変換対象となる係数を垂直又は水平方向に分離して変換する1次変換と違い、係数を特定方向に分離しないで変換を適用する非分離変換である。かかる非分離変換は、ブロック全体領域ではなく低周波領域にのみ順方向変換を適用する低周波非分離変換であってよい。
【0431】
デコーディング装置は、修正された変換係数に対する1次逆変換に基づいて、現在ブロックに対するレジデュアルサンプルを導出することができる(S1560)。
【0432】
この時、逆1次変換は、通常の分離変換が用いられてよく、上述したMTSが用いられてもよい。
【0433】
続いて、デコーディング装置300は、現在ブロックに対するレジデュアルサンプル及び現在ブロックに対する予測サンプルに基づいて復元サンプルを生成できる(S1570)。
【0434】
以下の図面は、本明細書の具体的な一例を説明するために作成された。図面に記載された具体的な装置の名称や具体的な信号/メッセージ/フィールドの名称は例示的に提示されたものであり、本明細書の技術的特徴は以下の図面に使われた具体的な名称に制限されない。
【0435】
図16は、本文書の一実施例に係るビデオエンコーディング装置の動作を示すフローチャートである。
【0436】
図16に開示された各段階は、
図4~
図14で前述した内容の一部に基づくものである。したがって、
図2及び
図4~
図14で前述した内容と重複する具体的な内容は、説明を省略又は簡単にするものとする。
【0437】
一実施例に係るエンコーディング装置200は、現在ブロックに適用されるイントラ予測モードに基づいて、現在ブロックに対する予測サンプルを導出することができる(S1610)。
【0438】
エンコーディング装置は、現在ブロックにISPが適用される場合に、サブパーティション変換ブロック別に予測を行うことができる。
【0439】
エンコーディング装置は、現在ブロック、すなわちコーディングブロックにISPコーディング又はISPモードを適用するか否かが判断でき、判断結果によって、現在ブロックがいかなる方向に分割されるかを決定し、分割されるサブブロックのサイズ及び個数を導出することができる。
【0440】
現在ブロックで分割されたサブパーティション変換ブロックには、同一のイントラ予測モードが適用され、エンコーディング装置は、サブパーティション変換ブロック別に予測サンプルを導出することができる。すなわち、エンコーディング装置は、サブパーティション変換ブロックの分割形態によって、例えば、水平(Horizontal)又は垂直(Verticial)、左側から右側に又は上側から下側に順次にイントラ予測を行う。最左側又は最上側サブブロックに対しては、通常のイントラ予測方式のように、既にコードされたコーディングブロックの復元ピクセルを参照する。また、続く内部のサブパーティション変換ブロックの各辺に対して、以前サブパーティション変換ブロックと隣接しない場合には、当該辺に隣接した参照ピクセルを導出するために、通常のイントラ予測方式のように、既にコードされた隣接したコーディングブロックの復元ピクセルを参照する。
【0441】
エンコーディング装置200は、予測サンプルに基づいて、現在ブロックに対するレジデュアルサンプルを導出することができる(S1620)。
【0442】
エンコーディング装置200は、レジデュアルサンプルにLFNST又はMTSのうち少なくとも1つを適用して現在ブロックに対する変換係数を導出し、変換係数を所定のスキャニング順序にしたがって配列できる。
【0443】
エンコーディング装置は、レジデュアルサンプルに対する1次変換及び/又は2次変換のような変換過程に基づいて現在ブロックに対する変換係数を導出することができ、現在ブロックのツリータイプがシングルツリーであり、ルマ成分であれば、LFNSTが適用可能であり、現在ブロックのツリータイプがシングルツリーであり、クロマ成分であれば、LFNSTを適用しなくてよい。
【0444】
エンコーディング装置は、レジデュアルサンプルに対する1次変換に基づいて、現在ブロックに対する変換係数を導出することができる(S1630)。
【0445】
1次変換は、MTSのようで複数の変換カーネルによって行われてよく、この場合、イントラ予測モードに基づいて変換カーネルが選択されてよい。
【0446】
エンコーディング装置200は、現在ブロックのツリータイプと、現在ブロックの各成分に対する変換係数コーディングフラグ又は現在ブロックの各成分に対する変換スキップフラグに基づいて、LFNSTの適用有無に対するLFNST適用変数を設定できる(S1640)
【0447】
LFNST適用変数の一例として、lfnstNotTsFlagのようなフラグ変数であってよく、lfnstNotTsFlagは、現在ブロックのツリータイプと、現在ブロックの各成分に対する変換係数コーディングフラグ又は現在ブロックの各成分に対する変換スキップフラグに基づいて導出されてよい。LFNST適用変数が1であれば、LFNSTが適用され得ることを示し、LFNST適用変数が0であれば、LFNSTが適用され得ないことを示す。すなわち、LFNST適用変数が1であれば、LFNSTが適用されてよく、LFNST適用変数が0であれば、LFNSTが適用されない。
【0448】
変換係数コーディングフラグは、変換ブロックに対する変換係数の存在有無を示すCBFを意味し、CBFが1であれば、変換ブロックに対する変換係数が存在することを示すので、変換過程が行われてよく、CBFが0であれば、変換過程が行われない。
【0449】
一例によって、現在ブロックの各成分に対する変換係数コーディングフラグがいずれも0であることに基づき、LFNST適用変数の値は1と導出されてよい。この場合、LFNST適用変数の値は1に設定されるが、CBFが0であれば、実質的な変換過程が行われず、後述される変数LfnstDcOnlyが0に更新されない。すなわち、現在ブロックの全ての成分に対する変換係数コーディングフラグが0であれば、LFNSTは適用されない。
【0450】
また、一例によって現在ブロックの各成分に対する変換スキップフラグがいずれも0であることに基づき、LFNST適用変数の値は1に設定されてよい。すなわち、現在ブロックの全ての成分に変換スキップが適用されない場合に、LFNSTが適用されてよい。
【0451】
一方、一例によって、現在ブロックのツリータイプがシングルツリーであれば、ルマ成分とクロマ成分のそれぞれにBDPCMモードが適用されてよい。すなわち、ルマ成分にBDPCMモードが適用され、クロマ成分にはBDPCMモードが適用されなくてよく、逆に、クロマ成分にBDPCMモードが適用され、ルマ成分にはBDPCMモードが適用されなくてよい。
【0452】
現在標準によれば、シングルツリーであるとき、クロマ成分に対してはLFNSTが適用されず、ルマ成分にのみLFNSTが適用されてよい。この時、ルマ成分にはBDPCMモードが適用されず、変換係数も存在するので、変換が行われてよく(すなわち、ルマ成分はBDPCMモードが適用されず、CBFが0でなく、変換スキップフラグも0でない場合)、クロマ成分にはBDPCMモードが適用され得る場合が存在する。BDPCMモードが適用される場合に、変換スキップフラグは1と類推される。
【0453】
既存にはLFNST適用変数を導出するとき、ブロックに含まれているいずれか1つの成分でも変換スキップフラグが1であれば、LFNST適用変数が0に設定され、LFNSTインデックスがパースされなかった。すなわち、ルマ成分にLFNSTが適用され得るにもかかわらず、BDPCMモードが適用されるクロマ成分によって(BDPCMモードが適用される場合に、変換スキップフラグが1と類推されるため)、LFNST適用変数が0に設定される問題点があった。
【0454】
一例によって、特定ブロックにBDPCMモードが適用されるとき、CBFが0である場合が発生し得るので、これを活用して前記の問題点を解決しようとする。エンコーディング装置は、LFNST適用変数を導出する条件に、CBFが0である条件を追加することによって、クロマ成分にBDPCMモードが適用されてもルマ成分にLFNSTを適用することができる。
【0455】
エンコーディング装置は、LFNST適用変数を導出するための条件を「(treeType==DUAL_TREE_CHROMA ||(!tu_y_coded_flag[x0][y0]||transform_skip_flag[x0][y0][0]==0))&&(treeType==DUAL_TREE_LUMA ||((!tu_cb_coded_flag[x0][y0]||transform_skip_flag[x0][y0][1]==0)&&(!tu_cr_coded_flag[x0][y0]||transform_skip_flag[x0][y0][2]==0)))」と設定できる。
【0456】
前記条件によれば、現在ブロックのツリータイプがシングルツリーであり(「treeType==DUAL_TREE_CHROMA」を満たさないので、「(!tu_y_coded_flag[x0][y0]||transform_skip_flag[x0][y0][0]==0)」条件がチェックされる。)、ルマ成分に対する変換スキップフラグが0であるので、「transform_skip_flag[x0][y0][0]==0」条件を満たす。
【0457】
また、現在ブロックのクロマ成分にBDPCMモードが適用され、変換係数コーディングフラグが0であれば、((!tu_cb_coded_flag[x0][y0]||transform_skip_flag[x0][y0][1]==0)&&(!tu_cr_coded_flag[x0][y0]||transform_skip_flag[x0][y0][2]==0)))」条件を満たす。すなわち、クロマ成分にBDPCMモードが適用されてクロマ成分に対する変換スキップフラグは1と類推されるとしても、変換係数コーディングフラグ条件によって、LFNST適用変数の値は、LFNSTが適用され得ることを示す1に設定されてよい。
【0458】
このように、LFNST適用変数の設定条件を変更することによって、いずれか1つの変換ブロックにBDPCMモードが適用されると、CBF値に関係なく全ての変換ブロックにLFNSTが適用されなかった問題を解決できる。また、LFNSTインデックスをパースするか否かを決定する条件をチェックするとき、各カラー成分別に変換スキップフラグとCBF値を共にチェックし、カラー成分のいずれか一つがBDPCMモードであっても、CBF値が0であれば、他の成分に対するLFNSTインデックスパーシングに影響を与えない。
【0459】
エンコーディング装置200は、LFNST適用変数の値に基づいてLFNSTを適用し、修正された変換係数を導出することができる(S1650)。
【0460】
LFNSTは、変換対象になる係数を垂直又は水平方向に分離して変換する1次変換と違い、係数を特定方向に分離しないで変換を適用する非分離変換である。このような非分離変換は、変換対象となる対象ブロック全体ではなく低周波領域にのみ変換を適用する低周波非分離変換であってよい。
【0461】
エンコーディング装置は、LFNST適用変数の値が1であることに基づき、現在ブロックにLFNSTを適用でき、LFNSTを適用するために、上述したLFNST適用変数の他にも様々な変数を導出することができる。
【0462】
例えば、エンコーディング装置は、現在ブロックのDC成分以外の位置に有効係数が存在するか否かを示す第1変数(変数LfnstDcOnly)及び現在ブロックの左上端第1領域を除く第2領域に前記変換係数が存在するか否かを示す第2変数(変数LfnstZeroOutSigCoeffFlag)を導出することができる。また、エンコーディング装置は、現在ブロックのツリータイプ及びサイズなどに基づいて、LFNSTを適用するか否かが判断できる。左上端第1領域は、4x4変換ブロックと8x8変換ブロックである場合は、VVC標準における変換係数スキャニング順序によってDC位置から8個の位置に対する領域を示し、4x4変換ブロックと8x8変換ブロックでない場合には、VVC標準における変換係数スキャニング順序によってDC位置から16個の位置までの領域を示す。
【0463】
このような第1変数及び第2変数は、最初は1に設定され、現在ブロックのDC成分以外の位置に有効係数が存在すれば、第1変数は0に更新され、第2領域に変換係数が存在すれば、第2変数は0に更新されてよい。
【0464】
第1変数は0に更新され、第2変数は1に維持された場合に、現在ブロックにLFNSTが適用されてよい。
【0465】
一方、イントラサブパーティション(ISP)モードが適用され得るルマブロックの場合、変数LfnstDcOnlyの導出無しでLFNSTを適用できる。
【0466】
具体的にいうと、ISPモードが適用され、ルマ成分に対する変換スキップフラグ、すなわちtransform_skip_flag[x0][y0][0]値が0である場合に、現在ブロックのツリータイプがシングルツリー又はルマに対するデュアルツリーである時は、変数LfnstDcOnly値に関係なくLFNSTが適用されてよい。
【0467】
一方、ISPモードが適用されないクロマ成分の場合に、クロマCb成分に対する変換スキップフラグであるtransform_skip_flag[x0][y0][1]とクロマCr成分に対する変換スキップフラグであるtransform_skip_flag[x0][y0][2]値によって、変数LfnstDcOnly値を0に設定できる。すなわち、transform_skip_flag[x0][y0][cIdx]においてcIdx値が1の場合は、transform_skip_flag[x0][y0][1]値が0の時にのみ変数LfnstDcOnly値を0に設定でき、cIdx値が2の場合は、transform_skip_flag[x0][y0][2]値が0の時にのみ変数LfnstDcOnly値を0に設定できる。変数LfnstDcOnly値が0であれば、エンコーディング装置はLFNSTを適用でき、そうでなければ、LFNSTを適用しなくてよい。
【0468】
第2変数は、LFNST適用時にゼロアウトが行われたことを示し得る変数LfnstZeroOutSigCoeffFlagであってよい。第2変数は、最初は1に設定され、第2領域に有効係数が存在すれば、0に変更されてよい。
【0469】
変数LfnstZeroOutSigCoeffFlagは、最後の0以外の係数が存在するサブブロックのインデックスが0よりも大きく、変換ブロックの幅及び高さがいずれも4と等しい又は大きいか、0でない最後の係数が存在するサブブロック内部における0でない係数の最後の位置が7よりも大きく、変換ブロックのサイズが4x4又は8x8である場合に、0と導出されてよい。サブブロックとは、レジデュアルコーディングにおいてコーディング単位と用いられる4x4ブロックを意味し、CG(Coefficient Group)と命名されてよい。サブブロックのインデックスが0であれば、左上端4x4サブブロックを示す。
【0470】
すなわち、変換ブロックでLFNST変換係数が存在し得る左上端領域以外の領域で0以外の係数が導出されるか、4x4ブロック及び8x8ブロックに対してスキャン順序において8番目の位置を外れて0以外の係数が存在すれば、変数LfnstZeroOutSigCoeffFlagは0に設定される。
【0471】
エンコーディング装置は、イントラ予測モード情報から導出されたイントラ予測モードに基づいて、LFNSTマトリックスを含むLFNSTセットを決定し、複数のLFNSTマトリックスのいずれか1つを選択できる。
【0472】
この時、現在ブロックで分割されたサブパーティション変換ブロックには、同一のLFNSTセット及び同一のLFNSTインデックスが適用されてよい。すなわち、サブパーティション変換ブロックには同一のイントラ予測モードが適用されるので、イントラ予測モードに基づいて決定されるLFNSTセットも、全てのサブパーティション変換ブロックに同一に適用されてよい。また、LFNSTインデックスはコーディングユニットレベルでシグナルされるので、現在ブロックで分割されたサブパーティション変換ブロックには同一のLFNSTマトリックスが適用されてよい。
【0473】
一方、上述したように、変換の対象となる変換ブロックのイントラ予測モードによって変換セットが決定されてよく、LFNSTは、LFNST変換セットに含まれている変換カーネルマトリックス、すなわちLFNST行列のいずれか1つに基づいて行われてよい。LFNSTに適用される行列はLFNST行列と命名されてよく、このような行列は逆方向LFNSTに使われる行列とトランスポーズ関係にあれば、いかなる名称も可能である。
【0474】
一例示において、LFNST行列は、行の個数が列の個数よりも少ない非正方形マトリックスであってよい。
【0475】
エンコーディング装置は、LFNSTインデックスが0より大きく、現在ブロックのツリータイプがデュアルツリークロマであれば、現在ブロックにLFNSTが適用され得るので、クロマ成分にスケーリングリストが適用されないようにフラグ値を1にエンコードすることができる。かかるフラグは、シーケンスパラメータセット(Sequence Parameter Set,SPS)のような上位レベルシンタックス要素集合に属する一フラグであってよい。
【0476】
一例によって、エンコーディング装置は、LFNSTインデックスが0よりも大きく、現在ブロックのツリータイプがデュアルツリールマであれば、現在ブロックにLFNSTが適用され得るので、ルマ成分にスケーリングリストが適用されないように前記フラグ値を1にエンコードすることができる。
【0477】
エンコーディング装置は、現在ブロックに対する修正された変換係数に基づいて量子化を行ってレジデュアル情報を導出し、レジデュアル情報及びLFNSTインデックスをエンコードして出力できる(S1660)。
【0478】
エンコーディング装置は、量子化された変換係数に関する情報を含むレジデュアル情報を生成できる。レジデュアル情報は、上述した変換関連情報/シンタックス要素を含むことができる。エンコーディング装置は、レジデュアル情報を含む映像/ビデオ情報をエンコードしてビットストリームの形態で出力できる。
【0479】
より具体的には、エンコーディング装置200は、量子化された変換係数に関する情報を生成し、生成された量子化された変換係数に関する情報をエンコードすることができる。
【0480】
本実施例に係るLFNSTインデックスのシンタックス要素は、(逆)LFNSTが適用されるか否か及びLFNSTセットに含まれたLFNSTマトリックスのいずれか1つを指示でき、LFNSTセットが2つの変換カーネルマトリックスを含む場合に、LFNSTインデックスのシンタックス要素の値は3つであってよい。
【0481】
一例によって、現在ブロックに対する分割ツリー構造がデュアルツリータイプであれば、ルマブロック及びクロマブロックのそれぞれに対してLFNSTインデックスがエンコードされてよい。
【0482】
一実施例によって、変換インデックスに対するシンタックス要素値は、現在ブロックに(逆)LFNSTが適用されない場合を示す0、LFNSTマトリックスのうち1番目のLFNSTマトリックスを示す1、LFNSTマトリックスのうち2番目のLFNSTマトリックスを示す2と導出されてよい。
【0483】
本文書において、量子化/逆量子化及び/又は変換/逆変換のうち少なくとも1つは省略されてよい。前記量子化/逆量子化が省略される場合に、前記量子化された変換係数は、変換係数と呼ぶことができる。前記変換/逆変換が省略される場合に、前記変換係数は、係数又はレジデュアル係数と呼ぶこともでき、又は表現の統一性のために変換係数と相変らず呼ぶこともできる。
【0484】
また、本文書において、量子化された変換係数及び変換係数はそれぞれ、変換係数及びスケーリングされた(scaled)変換係数と呼ぶことができる。この場合、レジデュアル情報は、変換係数に関する情報を含むことができ、前記変換係数に関する情報は、レジデュアルコーディングシンタックスによってシグナルされてよい。前記レジデュアル情報(又は、前記変換係数に関する情報)に基づいて変換係数が導出されてよく、前記変換係数に対する逆変換(スケーリング)によってスケーリングされた変換係数が導出されてよい。前記スケーリングされた変換係数に対する逆変換(変換)に基づいてレジデュアルサンプルが導出されてよい。これは、本文書の他の部分でも、同一に適用/表現されてよい。
【0485】
上述した実施例において、方法は、一連の段階又はブロックであり、順序図に基づいて説明されているが、本文書は、段階の順序に限定されるものではなく、ある段階は、上述したのと異なる段階と異なる順序で又は同時に発生してもよい。また、当業者であれば、順序図に示された段階が排他的でなく、他の段階が含まれたり順序図の1つ又はそれ以上の段階が本文書の範囲に影響を及ぼさずに削除されてもよいことが理解できよう。
【0486】
上述した本文書に係る方法は、ソフトウェアり形態で具現されてよく、本文書に係るエンコーディング装置及び/又はデコーディング装置は、例えば、TV、コンピュータ、スマートフォン、セットトップボックス、ディスプレイ装置などの映像処理を行う装置に含まれてよい。
【0487】
本文書において、実施例がソフトウェアとして具現されるとき、上述した方法は、上述した機能を行うモジュール(過程、機能など)として具現されてよい。モジュールはメモリに記憶され、プロセッサによって実行されてよい。メモリは、プロセッサの内部又は外部に存在してよく、周知の様々な手段によってプロセッサに連結されてよい。プロセッサは、ASIC(application-specificintegrated circuit)、他のチップセット、論理回路及び/又はデータ処理装置を含むことができる。メモリは、ROM(read-only memory)、RAM(random access memory)、フラッシュメモリ、メモリカード、記憶媒体及び/又は他の記憶装置を含むことができる。すなわち、本文書で説明した実施例は、プロセッサ、マイクロプロセッサ、コントローラ又はチップ上で具現されて実行されてよい。例えば、各図で示した機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラ又はチップ上で具現されて実行されてよい。
【0488】
また、本文書が適用されるデコーディング装置及びエンコーディング装置は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ会話装置、ビデオ通信のような実時間通信装置、モバイルストリーミング装置、記憶媒体、キャムコーダ、注文型ビデオ(VoD)サービス提供装置、OTTビデオ(Over the top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、映像電話ビデオ装置、及び医療用ビデオ装置などに含まれてよく、ビデオ信号又はデータ信号を処理するために用いられてよい。例えば、OTTビデオ(Over the top video)装置には、ゲームコンソール、ブルーレイプレーヤー、インターネット接続TV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recoder)などを含むことができる。
【0489】
また、本文書が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されてよく、コンピュータ可読記録媒体に記憶されてよい。本文書に係るデータ構造を有するマルチメディアデータも、コンピュータ可読記録媒体に記憶されてよい。前記コンピュータ可読記録媒体は、コンピュータ可読データが記憶される全ての種類の記憶装置及び分散記憶装置を含む。前記コンピュータ可読記録媒体は、例えば、ブルーレイディスク(BD)、汎用直列バス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピーディスク及び光学的データ記憶装置を含むことができる。また、前記コンピュータ可読記録媒体は、搬送波(例えば、インターネットを介した伝送)の形態で具現されたメディアを含む。また、エンコーディング方法で生成されたビットストリームがコンピュータ可読記録媒体に記憶されたり、有無線通信ネットワークを介して伝送されてよい。また、本文書の実施例は、プログラムコードによるコンピュータプログラム製品として具現されてよく、前記プログラムコードは、本文書の実施例によってコンピュータで実行されてよい。前記プログラムコードは、コンピュータ可読キャリア上に記憶されてよい。