(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-06
(45)【発行日】2025-01-15
(54)【発明の名称】変換に基づく映像コーディング方法およびその装置
(51)【国際特許分類】
H04N 19/11 20140101AFI20250107BHJP
H04N 19/70 20140101ALI20250107BHJP
H04N 19/186 20140101ALI20250107BHJP
H04N 19/157 20140101ALI20250107BHJP
H04N 19/176 20140101ALI20250107BHJP
【FI】
H04N19/11
H04N19/70
H04N19/186
H04N19/157
H04N19/176
(21)【出願番号】P 2022525472
(86)(22)【出願日】2020-10-29
(86)【国際出願番号】 KR2020014915
(87)【国際公開番号】W WO2021086056
(87)【国際公開日】2021-05-06
【審査請求日】2022-06-16
(32)【優先日】2019-10-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)【発明者】
【氏名】キム スンファン
(72)【発明者】
【氏名】イム チェヒョン
【審査官】間宮 嘉誉
(56)【参考文献】
【文献】ZHANG, Z. et al.,Non-CE6: On LFNST Transform Set Selection for a CCLM Coded Block,JVET-O0219 (version 1),ITU,2019年06月24日,pp.1-4,[online],[retrieved on 2023-08-22],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/15_Gothenburg/wg11/JVET-O0219-v1.zip>,JVET-O0219-v1.docx
【文献】BROSS, Benjamin et al.,Versatile Video Coding (Draft 7),JVET-P2001 (version 10),ITU,2019年10月25日,pp.67-71, 174-176,[online],[retrieved on 2023-08-22],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/16_Geneva/wg11/JVET-P2001-v10.zip>,JVET-P2001-vA.docx
【文献】hmjang,Incorrect Corresponding Luma Posiction for Chroma Mode Derivation with lfnst_idx > 0 in Subcluase 8.7.4.1,Ticket No.650 of JVET VVC TRAC,2019年11月05日,[online],[retrieved on 2023-08-22],Retrieved from the Internet: <URL: https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/650>
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
デコード装置により実行される映像デコード方法であって、
ビットストリームからイントラ予測モード情報及びLFNST(low frequency non-separable transform)インデックスを取得するステップと、
クロマブロックのイントラ予測モードがCCLM(cross-component linear model)モードであることに基づいて、前記クロマブロックの前記イントラ予測モードを前記クロマブロックに対応するルマブロックのイントラ予測モードに基づいて更新するステップと、
前記更新されたイントラ予測モードに基づいてLFNSTマトリクスを含むLFNSTセットを決定するステップと、
前記LFNSTセットから導出された前記LFNSTマトリクスに基づいて前記クロマブロックにLFNSTを実行するステップと、を含み、
前記更新されたイントラ予測モードは、前記ルマブロック内の特定位置に対応するイントラ予測モードとして導出され、
前記特定位置に対応する予測モードがIBC(intra block copy)モードであることに基づいて、前記クロマブロックの前記イントラ予測モードは、イントラDCモードに更新され、
前記特定位置は、前記クロマブロックのカラーフォーマットに基づいて決定される、映像デコード方法。
【請求項2】
前記特定位置は、前記ルマブロックの中心位置である、請求項1に記載の映像デコード方法。
【請求項3】
前記特定位置は、((xTbY+(nTbW*SubWidthC)/2),(yTbY+(nTbH*SubHeightC)/2))に設定され、
xTbY及びyTbYは、前記ルマブロックの左上端座標を示し、
nTbW及びnTbHは、前記クロマブロックの幅及び高さを示し、
SubWidthC及びSubHeightCは、前記カラーフォーマットに対応する変数を示す、請求項1に記載の映像デコード方法。
【請求項4】
前記カラーフォーマットが4:2:0である場合、SubWidthC及びSubHeightCは2であり、
前記カラーフォーマットが4:2:2である場合、SubWidthCは2であり、SubHeightCは1である、請求項3に記載の映像デコード方法。
【請求項5】
前記特定位置に対応する前記予測モードがMIP(matrix-based intra prediction)モードである場合、前記クロマブロックの前記イントラ予測モードは、イントラ平面モードに更新される、請求項1に記載の映像デコード方法。
【請求項6】
前記特定位置に対応する前記予測モードがパレットモードである場合、前記クロマブロックの前記イントラ予測モードは、イントラDCモードに更新される、請求項1に記載の映像デコード方法。
【請求項7】
映像エンコード装置により実行される映像エンコード方法であって、
クロマブロックに対するイントラ予測モードがCCLM(cross-component linear model)であることに基づいて、前記クロマブロックに対する予測サンプルを導出するステップと、
前記予測サンプルに基づいて前記クロマブロックに対する残差サンプルを導出するステップと、
前記クロマブロックの前記イントラ予測モードを前記クロマブロックに対応するルマブロックのイントラ予測モードに基づいて更新するステップと、
前記更新されたイントラ予測モードに基づいてLFNST(low frequency non-separable transform)マトリクスを含むLFNSTセットを決定するステップと、
前記残差サンプル及び前記LFNSTマトリクスに基づいて前記クロマブロックにLFNSTを実行するステップと、を含み、
前記更新されたイントラ予測モードは、前記ルマブロック内の特定位置に対応するイントラ予測モードとして導出され、
前記特定位置に対応する予測モードがIBC(intra block copy)モードであることに基づいて、前記クロマブロックの前記イントラ予測モードは、イントラDCモードに更新され、
前記特定位置は、前記クロマブロックのカラーフォーマットに基づいて決定される、映像エンコード方法。
【請求項8】
前記特定位置は、前記ルマブロックの中心位置である、請求項7に記載の映像エンコード方法。
【請求項9】
前記特定位置は、((xTbY+(nTbW*SubWidthC)/2),(yTbY+(nTbH*SubHeightC)/2))に設定され、
xTbY及びyTbYは、前記ルマブロックの左上端座標を示し、
nTbW及びnTbHは、前記クロマブロックの幅及び高さを示し、
SubWidthC及びSubHeightCは、前記カラーフォーマットに対応する変数を示す、請求項7に記載の映像エンコード方法。
【請求項10】
前記カラーフォーマットが4:2:0である場合、SubWidthC及びSubHeightCは2であり、
前記カラーフォーマットが4:2:2である場合、SubWidthCは2であり、SubHeightCは1である、請求項9に記載の映像エンコード方法。
【請求項11】
前記特定位置に対応する前記予測モードがMIP(matrix-based intra prediction)モードである場合、前記クロマブロックの前記イントラ予測モードは、イントラ平面モードに更新される、請求項7に記載の映像エンコード方法。
【請求項12】
前記特定位置に対応する前記予測モードがパレットモードである場合、前記クロマブロックの前記イントラ予測モードは、イントラDCモードに更新される、請求項7に記載の映像エンコード方法。
【請求項13】
映像情報に関するデータを送信する
ための方法であって、
映像に関するビットストリームを
生成するステップであって、前記ビットストリームは、
クロマブロックに対するイントラ予測モードがCCLM(cross-component linear model)であることに基づいて、前記クロマブロックに対する予測サンプルを導出するステップと、
前記予測サンプルに基づいて前記クロマブロックに対する残差サンプルを導出するステップと、
前記クロマブロックの前記イントラ予測モードを前記クロマブロックに対応するルマブロックのイントラ予測モードに基づいて更新するステップと、
前記更新されたイントラ予測モードに基づいてLFNST(low frequency non-separable transform)マトリクスを含むLFNSTセットを決定するステップと、
前記残差サンプル及び前記LFNSTマトリクスに基づいて前記クロマブロックにLFNSTを実行するステップと、
残差情報をエンコードして前記ビットストリームを生成するステップと、に基づいて生成される、ステップと、
前記ビットストリームを含む前記データを送信するステップと、を含み、
前記更新されたイントラ予測モードは、前記ルマブロック内の特定位置に対応するイントラ予測モードとして導出され、
前記特定位置に対応する予測モードがIBC(intra block copy)モードであることに基づいて、前記クロマブロックの前記イントラ予測モードは、イントラDCモードに更新され、
前記特定位置は、前記クロマブロックのカラーフォーマットに基づいて決定される、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本文書は、画像コーディング技術に関し、より詳細には、画像コーディングシステムにおいて変換(transform)に基づく画像コーディング方法およびその装置に関する。
【背景技術】
【0002】
近年、4Kまたは8K以上のUHD(Ultra High Definition)画像/ビデオなどの高解像度、高品質の画像/ビデオに対する需要が様々な分野で増加している。画像/ビデオデータが高解像度、高品質になるほど、既存の画像/ビデオデータに比べて相対的に送信される情報量またはビット量が増加するので、既存の有無線広帯域回線のような媒体を利用して画像データを送信したり、既存の記憶(格納)媒体を利用して画像/ビデオデータを記憶する場合、送信コスト(費用)および記憶コストが増加する。
【0003】
また、近年、VR(Virtual Reality)、AR(Artificial Reality)コンテンツやホログラムなどの没入型(実感)メディア(Immersive Media)に対する関心および需要が増加しており、ゲーム画像のように、現実画像と異なる画像特性を有する画像/ビデオに関する放送が増加している。
【0004】
これにより、上記のような様々な特性を有する高解像度高品質の画像/ビデオの情報を効果的に圧縮して送信するか記憶し、再生するために高効率の画像/ビデオ圧縮技術が求められる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本文書の技術的課題は、映像コーディング効率を上げる方法および装置を提供することにある。
【0006】
本文書の他の技術的課題は、LFNSTインデックスコーディングの効率を上げる方法および装置を提供することにある。
【0007】
本文書の他の技術的課題は、LFNSTインデックスのコーディングを介して2次変換の効率を上げる方法および装置を提供することにある。
【0008】
本文書の他の技術的課題は、CCLMモードであるとき、ルマブロックのイントラモードを用いてLFNST変換セットを導出することに対する映像コーディング方法および装置を提供することにある。
【課題を解決するための手段】
【0009】
本文書の一実施例によると、デコード(デコーディング、復号)装置により実行される映像デコード方法を提供する。方法は、クロマブロックのイントラ予測モードがCCLM(Cross-Component Linear Model)モードであることに基づいて、クロマブロックのイントラ予測モードをクロマブロックに対応するルマブロックのイントラ予測モードに基づいて更新するステップと、更新されたイントラ予測モードに基づいてLFNSTマトリクスを有するLFNSTセットを決定するステップと、LFNSTセットから導出されたLFNSTマトリクスに基づいてクロマブロックに対するLFNSTを実行するステップと、変換係数に基づいてクロマブロックに対する残差(レジデュアル)サンプルを導出するステップと、を有し、更新されたイントラ予測モードは、ルマブロック内の特定位置に対応するイントラ予測モードとして導出され、特定位置に対応するイントラ予測モードがイントラブロックコピー(IBC)モードであることに基づいて、更新されたイントラ予測モードをイントラDCモードに更新することを特徴とする。
【0010】
特定位置は、クロマブロックのカラーフォーマットに基づいて設定される。
【0011】
特定位置は、ルマブロックの中心位置である。
【0012】
特定位置は、((xTbY+(nTbW*SubWidthC)/2)、(yTbY+(nTbH*SubHeightC)/2))に設定され、xTbYおよびyTbYは、ルマブロックの左上端座標を示し、nTbWおよびnTbHは、クロマブロックの幅および高さを示し、SubWidthCおよびSubHeightCは、カラーフォーマットに対応する変数である。
【0013】
カラーフォーマットが4:2:0である場合、SubWidthCおよびSubHeightCは2であり、カラーフォーマットが4:2:2である場合、SubWidthCは2であり、SubHeightCは1である。
【0014】
特定位置に対応するイントラ予測モードがMIPモードである場合、更新されたイントラ予測モードは、イントラ平面(プラナー)モードである。
【0015】
特定位置に対応するイントラ予測モードがパレットモードである場合、更新されたイントラ予測モードは、イントラDCモードである。
【0016】
本文書の一実施例によると、エンコード(エンコーディング、符号化)装置により実行される映像エンコード方法を提供する。方法は、クロマブロックに対するイントラ予測モードがCCLM(Cross-Component Linear Model)であることに基づいてクロマブロックに対する予測サンプルを導出するステップと、予測サンプルに基づいてクロマブロックに対する残差サンプルを導出するステップと、を有し、更新されたイントラ予測モードは、ルマブロック内の特定位置に対応するイントラ予測モードとして導出され、特定位置に対応するイントラ予測モードがイントラブロックコピー(IBC)モードであることに基づいて、更新されたイントラ予測モードをイントラDCモードに更新する。
【0017】
本文書の他の一実施例によると、エンコード装置により実行された映像エンコード方法によって生成されたエンコードされた映像情報およびビットストリームが有されている映像データが記憶されたデジタル記憶媒体が提供される。
【0018】
本文書の他の一実施例によると、デコード装置により映像デコード方法を実行するようにするエンコードされた映像情報およびビットストリームが有されている映像データが記憶されたデジタル記憶媒体が提供される。
【発明の効果】
【0019】
本文書によると、全般的な映像/ビデオ圧縮効率を上げることができる。
【0020】
本文書によると、LFNSTインデックスコーディングの効率を上げることができる。
【0021】
本文書によると、LFNSTインデックスのコーディングを介して2次変換の効率を上げることができる。
【0022】
本文書によると、CCLMモードであるとき、ルマブロックのイントラモードを用いてLFNST変換セットを導出することに対する映像コーディング方法および装置を提供することができる。
【0023】
本明細書の具体的な一例を介して得られる効果は、以上で羅列された効果に制限されない。例えば、関連する技術分野における通常の知識を有する者(a person having ordinary skill in the related art)が、本明細書から理解または誘導できる様々な技術的効果が存在し得る。これによって、本明細書の具体的な効果は、本明細書に明示的に記載されているものに制限されず、本明細書の技術的特徴から理解または誘導できる様々な効果を含み得る。
【図面の簡単な説明】
【0024】
【
図1】本文書が適用されることができるビデオ/映像コーディングシステムの例を概略的に示す図である。
【
図2】本文書が適用されることができるビデオ/映像エンコード装置の構成を概略的に説明する図である。
【
図3】本文書が適用されることができるビデオ/映像デコード装置の構成を概略的に説明する図である。
【
図4】本文書の一実施例に係る多重変換技法(multiple transform scheme)を概略的に示す図である。
【
図5】65個の予測方向のイントラ方向性モードを例示的に示す図である。
【
図6】本文書の一実施例に係るRSTを説明する図である。
【
図7】一例によって順方向1次変換の出力データを1次元ベクトルに配列する順序を示す図である。
【
図8】一例によって順方向2次変換の出力データを2次元ブロックに配列する順序を示す図である。
【
図9】本文書の一実施例に係る広角イントラ予測モードを示す図である。
【
図10】LFNSTが適用されるブロック形状(もよう、パターン)(block shape)を示す図である。
【
図11】一例によって順方向LFNSTの出力データの配置を示す図である。
【
図12】一例によって順方向LFNSTに対する出力データ数を最大16個に限定したことを示す図である。
【
図13】一例によって4×4LFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【
図14】一例によって8×8LFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【
図15】一実施例によるクロマブロックのイントラ予測モード導出時に適用されることができるCCLMを説明する図である。
【
図16】一例による映像のデコード方法を説明する図である。
【
図17】一例による映像のエンコード方法を説明する図である。
【
図18】本文書が適用されるコンテンツストリーミングシステム構造図を例示的に示す図である。
【発明を実施するための形態】
【0025】
本文書は、多様な変更を加えることができ、様々な実施例を有することができ、特定実施例を図面に例示して詳細に説明しようとする。しかしながら、これは、本文書を特定実施例に限定しようとするものではない。本明細書で使用する用語は、単に特定の実施例を説明するために使われたものであって、本文書の技術的思想を限定しようとする意図で使われるものではない。単数の表現は、コンテキスト上明白に異なる意味ではない限り、複数の表現を含む。本明細書において、「含む」または「有する」などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品、またはこれらを組み合わせたものが存在することを指定するものであり、一つまたは複数の他の特徴や数字、ステップ、動作、構成要素、部品、またはこれらを組み合わせたものなどの存在または付加可能性を予め排除しないと理解されなければならない。
【0026】
一方、本文書で説明される図面上の各構成は、互いに異なる特徴的な機能に関する説明の便宜のために独立して図示されたものであって、各構成が互いに別個のハードウェアや別個のソフトウェアで具現されることを意味するものではない。例えば、各構成のうち、二つ以上の構成が結合されて一つの構成をなすこともでき、一つの構成が複数の構成に分けられることもできる。各構成が統合および/または分離された実施例も、本文書の本質から逸脱しない限り、本文書の権利範囲に含まれる。
【0027】
以下、添付図面を参照して、本文書の好ましい実施例をより詳細に説明する。以下、図面上の同じ構成要素に対しては同じ参照符号を使用し、同じ構成要素に対して重複する説明は省略する。
【0028】
この文書は、ビデオ/映像コーディングに関する。例えば、この文書に開示された方法/実施例は、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標準など)と関連付けられている。
【0029】
この文書では、ビデオ/映像コーディングに関する多様な実施例を提示し、他の言及がない限り、上記実施例は、互いに組み合わせられて実行されることもできる。
【0030】
この文書において、ビデオ(video)は、時間の流れによる一連の映像(image)の集合を意味することができる。ピクチャ(picture)は、一般的に特定時間帯の一つの映像を示す単位を意味し、スライス(slice)/タイル(tile)は、コーディングにおいてピクチャの一部を構成する単位である。スライス/タイルは、一つまたは複数のCTU(Coding Tree Unit)を含むことができる。一つのピクチャは、一つまたは複数のスライス/タイルで構成されることができる。一つのピクチャは、一つまたは複数のタイルグループで構成されることができる。一つのタイルグループは、一つまたは複数のタイルを含むことができる。
【0031】
ピクセル(pixel)またはペル(pel)は、一つのピクチャ(または、映像)を構成する最小の単位を意味することができる。また、ピクセルに対応する用語として「サンプル(sample)」が使われることができる。サンプルは、一般的にピクセルまたはピクセルの値を示すことができ、ルマ(luma)成分のピクセル/ピクセル値のみを示すこともでき、クロマ(chroma)成分のピクセル/ピクセル値のみを示すこともできる。あるいは、サンプルは、空間領域(ドメイン)におけるピクセル値を意味することもでき、このようなピクセル値が周波数領域に変換されると、周波数領域における変換係数を意味することもできる。
【0032】
ユニット(unit)は、映像処理の基本単位を示すことができる。ユニットは、ピクチャの特定領域および該当領域に関連する情報のうちの少なくとも一つを含むことができる。一つのユニットは、一つのルマブロックおよび2つのクロマ(例えば、cb、cr)ブロックを含むことができる。ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用されることができる。一般的な場合、M×Nブロックは、M個の列およびN個の行からなるサンプル(または、サンプルアレイ)または変換係数(transform coefficient)の集合(または、アレイ)を含むことができる。
【0033】
この文書において、「/」および「、」は、「および/または」と解釈される。例えば、「A/B」は、「Aおよび/またはB」と解釈され、「A、B」は、「Aおよび/またはB」と解釈される。追加的に、「A/B/C」は、「A、Bおよび/またはCのうちの少なくとも一つ」を意味する。また、「A、B、C」も、「A、Bおよび/またはCのうちの少なくとも一つ」を意味する。(In this document, the term “/” and “、” should be interpreted to indicate “and/or.” For instance, the expression “A/B” may mean “A and/or B.” Further, “A, B” may mean “A and/or B.” Further, “A/B/C” may mean “at least one of A, B, and/or C.” Also, “A/B/C” may mean “at least one of A, B, and/or C.”)
【0034】
追加的に、本文書において、「または」は、「および/または」と解釈される。例えば、「AまたはB」は、1)「A」のみを意味し、または2)「B」のみを意味し、または3)「AおよびB」を意味することができる。他の表現としては、本文書の「または」は、「追加的にまたは代替的に(additionally or alternatively)」を意味することができる。(Further, in the document, the term “or” should be interpreted to indicate “and/or.” For instance, the expression “A or B” may comprise 1)only A,2)only B, and/or 3)both A and B. In other words, the term “or” in this document should be interpreted to indicate “additionally or alternatively”.)
【0035】
本明細書において、「少なくとも一つのAおよびB(at least one of A and B)」は、「ただA」、「ただB」または「AおよびBの両方とも」を意味することができる。また、本明細書において、「少なくとも一つのAまたはB(at least one of A or B)」や「少なくとも一つのAおよび/またはB(at least one of A and/or B)」という表現は、「少なくとも一つのAおよびB(at least one of A and B)」と同じく解釈されることができる。
【0036】
また、本明細書において、「少なくとも一つのA、BおよびC(at least one of A,B and C)」は、「ただA」、「ただB」、「ただC」、または「A、BおよびCの任意の全ての組み合わせ(any combination of A,B and C)」を意味することができる。また、「少なくとも一つのA、BまたはC(at least one of A,B or C)」や「少なくとも一つのA、Bおよび/またはC(at least one of A,B and/or C)」は、「少なくとも一つのA、BおよびC(at least one of A,B and C)」を意味することができる。
【0037】
また、本明細書で使われる括弧は、「例えば(for example)」を意味することができる。具体的には、「予測(イントラ予測)」で表示された場合、「予測」の一例として「イントラ予測」が提案されたものである。他の表現としては、本明細書の「予測」は、「イントラ予測」に制限(limit)されるものではなく、「イントラ予測」が「予測」の一例として提案されたものである。また、「予測(すなわち、イントラ予測)」で表示された場合にも、「予測」の一例として「イントラ予測」が提案されたものである。
【0038】
本明細書において、一つの図面内で個別に説明される技術的特徴は、個別に具現されることもでき、同時に具現されることもできる。
【0039】
図1は、本文書が適用されることができるビデオ/映像コーディングシステムの例を概略的に示す。
【0040】
図1を参照すると、ビデオ/映像コーディングシステムは、ソースデバイスおよび受信デバイスを含むことができる。ソースデバイスは、エンコードされたビデオ(video)/映像(image)情報またはデータをファイルまたはストリーミング形態でデジタル記憶媒体またはネットワークを介して受信デバイスに伝達できる。
【0041】
上記ソースデバイスは、ビデオソース、エンコード装置、送信部を含むことができる。上記受信デバイスは、受信部、デコード装置、およびレンダラを含むことができる。上記エンコード装置は、ビデオ/映像エンコード装置と呼ばれることができ、上記デコード装置は、ビデオ/映像デコード装置と呼ばれることができる。送信器は、エンコード装置に含まれることができる。受信器は、デコード装置に含まれることができる。レンダラは、ディスプレイ部を含むこともでき、ディスプレイ部は、別個のデバイスまたは外部コンポーネントで構成されることもできる。
【0042】
ビデオソースは、ビデオ/映像のキャプチャ、合成または生成過程(処理、プロセス)などを介してビデオ/映像を取得することができる。ビデオソースは、ビデオ/映像キャプチャデバイスおよび/またはビデオ/映像生成デバイスを含むことができる。ビデオ/映像キャプチャデバイスは、例えば、一つまたは複数のカメラ、以前にキャプチャされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成デバイスは、例えば、コンピュータ、タブレット、およびスマートフォンなどを含むことができ、(電子的に)ビデオ/映像を生成することができる。例えば、コンピュータなどを介して仮想のビデオ/映像が生成されることができ、この場合、関連データが生成される過程にビデオ/映像キャプチャ過程が代替されることができる。
【0043】
エンコード装置は、入力ビデオ/映像をエンコードすることができる。エンコード装置は、圧縮およびコーディング効率のために、予測、変換、量子化など、一連の手順を実行することができる。エンコードされたデータ(エンコードされたビデオ/映像情報)は、ビットストリーム(bitstream)形態で出力されることができる。
【0044】
送信部は、ビットストリーム形態で出力されたエンコードされたビデオ/映像情報またはデータをファイルまたはストリーミング形態でデジタル記憶媒体(またはネットワーク)を介して受信デバイスの受信部に伝達できる。デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなど、多様な記憶媒体を含むことができる。送信部は、予め決められたファイルフォーマットを介してメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介した送信のためのエレメントを含むことができる。受信部は、上記ビットストリームを受信/抽出してデコード装置に伝達できる。
【0045】
デコード装置は、エンコード装置の動作に対応する逆量子化、逆変換、予測など、一連の手順を実行してビデオ/映像をデコードすることができる。
【0046】
レンダラは、デコードされたビデオ/映像をレンダリングすることができる。レンダリングされたビデオ/映像は、ディスプレイ部を介して表示(ディスプレイ)されることができる。
【0047】
図2は、本文書が適用されることができるビデオ/映像エンコード装置の構成を概略的に説明する図である。以下、ビデオエンコード装置は、映像エンコード装置を含むことができる。
【0048】
図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、量子化部(quantizer)233、逆量子化部(dequantizer)234、逆変換部(inverse transformer)235を含むことができる。残差処理部230は、減算部(subtractor)231をさらに含むことができる。加算部250は、復元部(reconstructor)または復元ブロック生成部(reconstructed block generator)と呼ばれることができる。前述した映像分割部210、予測部220、残差処理部230、エントロピ符号化部240、加算部250、およびフィルタリング部260は、実施例によって一つまたは複数のハードウェアコンポーネント(例えば、エンコーダチップセットまたはプロセッサ)により構成されることができる。また、メモリ270は、DPB(Decoded Picture Buffer)を含むことができ、デジタル記憶媒体により構成されることもできる。上記ハードウェアコンポーネントは、メモリ270を内/外部コンポーネントとしてさらに含むこともできる。
【0049】
映像分割部210は、エンコード装置200に入力された入力映像(または、ピクチャ、フレーム)を一つまたは複数の処理ユニット(processing unit)に分割できる。一例として、上記処理ユニットは、コーディングユニット(Coding Unit、CU)と呼ばれることができる。この場合、コーディングユニットは、コーディングツリーユニット(Coding Tree Unit、CTU)または最大コーディングユニット(Largest Coding Unit、LCU)からQTBTTT(Quad-Tree Binary-Tree Ternary-Tree)構造によって再帰的に(recursively)分割されることができる。例えば、一つのコーディングユニットは、四分木(クアッドツリー)構造、二分木(バイナリツリー)構造、および/または三分木(ターナリ)構造に基づいて下位(deeper)デプスの複数のコーディングユニットに分割されることができる。この場合、例えば、四分木構造が先に適用され、二分木構造および/または三分木構造がその後に適用されることができる。あるいは、二分木構造が先に適用されることもできる。それ以上分割されない最終コーディングユニットに基づいて本文書によるコーディング手順が実行されることができる。この場合、映像特性によるコーディング効率などに基づいて、最大コーディングユニットが最終コーディングユニットとして使われることができ、または、必要によって、コーディングユニットは、再帰的に(recursively)さらに下位デプスのコーディングユニットに分割されて、最適なサイズのコーディングユニットが最終コーディングユニットとして使われることができる。ここで、コーディング手順は、後述する予測、変換、および復元などの手順を含むことができる。他の例として、上記処理ユニットは、予測ユニット(PU:Prediction Unit)または変換ユニット(TU:Transform Unit)をさらに含むことができる。この場合、上記予測ユニットおよび上記変換ユニットは、各々、前述した最終コーディングユニットから分割またはパーティショニングされることができる。上記予測ユニットは、サンプル予測の単位であり、上記変換ユニットは、変換係数を導出(誘導)する単位および/または変換係数から残差信号(residual signal)を導出する単位である。
【0050】
ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用されることができる。一般的な場合、M×Nブロックは、M個の列およびN個の行からなるサンプルまたは変換係数(transform coefficient)の集合を示すことができる。サンプルは、一般的にピクセルまたはピクセルの値を示すことができ、輝度(luma)成分のピクセル/ピクセル値のみを示すこともでき、彩度(chroma)成分のピクセル/ピクセル値のみを示すこともできる。サンプルは、一つのピクチャ(または、映像)をピクセル(pixel)またはペル(pel)に対応する用語として使われることができる。
【0051】
減算部231は、入力映像信号(オリジナル(原本)ブロック、オリジナルサンプルまたはオリジナルサンプルアレイ)から、予測部220から出力された予測信号(予測されたブロック、予測サンプルまたは予測サンプルアレイ)を減算して残差信号(残差ブロック、残差サンプルまたは残差サンプルアレイ)を生成することができ、生成された残差信号は、変換部232に送信される。予測部220は、処理対象ブロック(以下、現(現在)ブロックという)に対する予測を実行し、上記現ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部220は、現ブロックもしくはCU単位でイントラ予測が適用されるか、または、インター予測が適用されるかを決定することができる。予測部は、各予測モードに関する説明で後述するように、予測モード情報など、予測に関する多様な情報を生成してエントロピ符号化部240に伝達できる。予測に関する情報は、エントロピ符号化部240でエンコードされてビットストリーム形態で出力されることができる。
【0052】
イントラ予測部222は、現ピクチャ内のサンプルを参照して現ブロックを予測することができる。上記参照されるサンプルは、予測モードによって、上記現ブロックの隣接(neighbor)に位置することもでき、または離れて位置することもできる。イントラ予測で、予測モードは、複数の非方向性モードおよび複数の方向性モードを含むことができる。非方向性モードは、例えば、DCモードおよび平面(プラナー)モード(Planarモード)を含むことができる。方向性モードは、予測方向の細かさの程度によって、例えば、33個の方向性予測モードまたは65個の方向性予測モードを含むことができる。ただし、これは例示に過ぎず、設定によってそれ以上またはそれ以下の個数の方向性予測モードが使われることができる。イントラ予測部222は、隣接ブロックに適用された予測モードを利用して、現ブロックに適用される予測モードを決定することもできる。
【0053】
インター予測部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)をシグナリングすることで、現ブロックの動きベクトルを指示することができる。
【0054】
予測部220は、後述する多様な予測方法に基づいて予測信号を生成することができる。例えば、予測部は、一つのブロックに対する予測のために、イントラ予測またはインター予測を適用することができるだけでなく、イントラ予測とインター予測とを同時に適用できる。これは、Combined Inter And Intra Prediction(CIIP)と呼ばれることができる。また、予測部は、ブロックに対する予測のために、イントラブロックコピー(Intra Block Copy、IBC)を実行することもできる。上記イントラブロックコピーは、例えば、SCC(Screen Content Coding)などのように、ゲームなどのコンテンツ映像/動映像コーディングのために使われることができる。IBCは、基本的に現ピクチャ内で予測を実行するが、現ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。すなわち、IBCは、本文書で説明されるインター予測技法のうちの少なくとも一つを利用することができる。
【0055】
インター予測部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)を利用して予測信号を生成し、それに基づいて取得される変換を意味する。また、変換過程は、正方形の同じ大きさを有するピクセルブロックに適用されることもでき、正方形でない可変な大きさのブロックに適用されることもできる。
【0056】
量子化部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に含まれることもできる。
【0057】
量子化部233から出力された量子化された変換係数は、予測信号を生成するために利用されることができる。例えば、量子化された変換係数に逆量子化部234および逆変換部235を介して逆量子化および逆変換を適用することによって、残差信号(残差ブロックまたは残差サンプル)が復元されることができる。加算部250は、復元された残差信号を予測部220から出力された予測信号に加えることによって復元(reconstructed)信号(復元ピクチャ、復元ブロック、復元サンプルまたは復元サンプルアレイ)が生成されることができる。スキップモードが適用された場合のように処理対象ブロックに対する残差がない場合、予測されたブロックが復元ブロックとして使われることができる。生成された復元信号は、現ピクチャ内の次の処理対象ブロックのイントラ予測のために使われることができ、後述するようにフィルタリングを経て次のピクチャのインター予測のために使われることもできる。
【0058】
一方、ピクチャエンコーディングおよび/または復元過程でLMCS(Luma Mapping with Chroma Scaling)が適用されることもできる。
【0059】
フィルタリング部260は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部260は、復元ピクチャに多様なフィルタリング方法を適用して修正された(modified)復元ピクチャを生成することができ、上記修正された復元ピクチャをメモリ270、具体的には、メモリ270のDPBに記憶することができる。上記多様なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応オフセット(Sample Adaptive Offset、SAO)、適応ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。フィルタリング部260は、各フィルタリング方法に関する説明で後述するように、フィルタリングに関する多様な情報を生成してエントロピ符号化部240に伝達できる。フィルタリング関する情報は、エントロピ符号化部240でエンコードされてビットストリーム形態で出力されることができる。
【0060】
メモリ270に送信された修正された復元ピクチャは、インター予測部221で参照ピクチャとして使われることができる。エンコード装置は、これを介してインター予測が適用される場合、エンコード装置200とデコード装置とにおける予測ミスマッチを避けることができ、符号化効率も向上させることができる。
【0061】
メモリ270のDPBは、修正された復元ピクチャをインター予測部221における参照ピクチャとして使用するために記憶することができる。メモリ270は、現ピクチャ内の動き情報が導出された(または、エンコードされた)ブロックの動き情報および/または既に復元されたピクチャ内のブロックの動き情報を記憶することができる。上記記憶された動き情報は、空間隣接ブロックの動き情報または時間隣接ブロックの動き情報として活用されるためにインター予測部221に伝達されることができる。メモリ270は、現ピクチャ内の復元されたブロックの復元サンプルを記憶することができ、イントラ予測部222に伝達できる。
【0062】
図3は、本文書が適用されることができるビデオ/映像デコード装置の構成を概略的に説明する図である。
【0063】
図3を参照すると、デコード装置300は、エントロピ復号(エントロピーデコーディング)部(entropy decoder)310、残差処理部(residual processor)320、予測部(predictor)330、加算部(adder)340、フィルタリング部(filter)350、およびメモリ(memory)360を含んで構成されることができる。予測部330は、インター予測部332およびイントラ予測部331を含むことができる。残差処理部320は、逆量子化部(dequantizer)321および逆変換部(inverse transformer)322を含むことができる。前述したエントロピ復号部310、残差処理部320、予測部330、加算部340、およびフィルタリング部350は、実施例によって一つのハードウェアコンポーネント(例えば、デコーダチップセットまたはプロセッサ)により構成されることができる。また、メモリ360は、DPB(Decoded Picture Buffer)を含むことができ、デジタル記憶媒体により構成されることもできる。上記ハードウェアコンポーネントは、メモリ360を内/外部コンポーネントとしてさらに含むこともできる。
【0064】
ビデオ/映像情報を含むビットストリームが入力される場合、デコード装置300は、
図2のエンコード装置でビデオ/映像情報が処理されたプロセスに対応して映像を復元することができる。例えば、デコード装置300は、上記ビットストリームから取得したブロック分割関連情報に基づいてユニット/ブロックを導出することができる。デコード装置300は、エンコード装置で適用された処理ユニットを利用してデコーディングを実行することができる。したがって、デコーディングの処理ユニットは、例えば、コーディングユニットであり、コーディングユニットは、コーディングツリーユニットまたは最大コーディングユニットから、四分木構造、二分木構造および/または三分木ツリー構造によって分割されることができる。コーディングユニットから一つまたは複数の変換ユニットが導出されることができる。そして、デコード装置300を介してデコーディングおよび出力された復元映像信号は、再生装置を介して再生されることができる。
【0065】
デコード装置300は、
図2のエンコード装置から出力された信号をビットストリーム形態で受信することができ、受信した信号を、エントロピ復号部310を介してデコードすることができる。例えば、エントロピ復号部310は、上記ビットストリームをパージングして映像復元(または、ピクチャ復元)に必要な情報(例えば、ビデオ/映像情報)を導出することができる。上記ビデオ/映像情報は、アダプテーションパラメータセット(APS)、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、またはビデオパラメータセット(VPS)など、多様なパラメータセットに関する情報をさらに含むことができる。また、上記ビデオ/映像情報は、一般制限情報(general constraint information)をさらに含むことができる。デコード装置は、上記パラメータセットに関する情報および/または上記一般制限情報にさらに基づいてピクチャをデコードすることができる。本文書で後述されるシグナリング/受信される情報および/またはシンタックス要素は、上記デコーディング手順を介してデコードされて上記ビットストリームから取得されることができる。例えば、エントロピ復号部310は、指数ゴロム符号化、CAVLCまたはCABACなどのコーディング方法に基づいてビットストリーム内の情報をデコードし、映像復元に必要なシンタックスエレメントの値、残差に関する変換係数の量子化された値を出力することができる。より詳しくは、CABACエントロピ復号方法は、ビットストリームで各構文要素に該当するbinを受信し、デコーディング対象構文要素情報ならびに隣接およびデコーディング対象ブロックのデコーディング情報、または以前のステップでデコードされたシンボル/binの情報を利用して、コンテキスト(context)モデルを決定し、決定されたコンテキストモデルによってbinの発生確率を予測してbinの算術復号(算術デコーディング)(arithmetic decoding)を実行することで各構文要素の値に該当するシンボルを生成することができる。このとき、CABACエントロピ復号方法は、コンテキストモデルの決定後、次のシンボル/binのコンテキストモデルのためにデコードされたシンボル/binの情報を利用してコンテキストモデルをアップデートすることができる。エントロピ復号部310でデコードされた情報のうち、予測に関する情報は、予測部330に提供され、エントロピ復号部310でエントロピ復号が実行された残差に関する情報、すなわち、量子化された変換係数および関連パラメータ情報は、逆量子化部321に入力されることができる。また、エントロピ復号部310でデコードされた情報のうち、フィルタリングに関する情報は、フィルタリング部350に提供されることができる。一方、エンコード装置から出力された信号を受信する受信部(図示せず)がデコード装置300の内/外部エレメントとしてさらに構成されてもよく、または、受信部は、エントロピ復号部310の構成要素であってもよい。一方、本文書によるデコード装置は、ビデオ/映像/ピクチャデコード装置と呼ばれることができ、上記デコード装置は、情報デコーダ(ビデオ/映像/ピクチャ情報デコーダ)とサンプルデコーダ(ビデオ/映像/ピクチャサンプルデコーダ)とに区分することもできる。上記情報デコーダは、上記エントロピ復号部310を含むことができ、上記サンプルデコーダは、上記逆量子化部321、逆変換部322、予測部330、加算部340、フィルタリング部350、およびメモリ360のうちの少なくとも一つを含むことができる。
【0066】
逆量子化部321は、量子化された変換係数を逆量子化して変換係数を出力することができる。逆量子化部321は、量子化された変換係数を2次元のブロック形態で再整列できる。この場合、上記再整列は、エンコード装置で実行された係数スキャン順序に基づいて再整列を実行することができる。逆量子化部321は、量子化パラメータ(例えば、量子化ステップサイズ情報)を利用して量子化された変換係数に対する逆量子化を実行し、変換係数(transform coefficient)を取得することができる。
【0067】
逆変換部322は、変換係数を逆変換して残差信号(残差ブロック、残差サンプルアレイ)を取得する。
【0068】
予測部は、現ブロックに対する予測を実行し、上記現ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部は、エントロピ復号部310から出力された上記予測に関する情報に基づいて、上記現ブロックにイントラ予測が適用されるか、または、インター予測が適用されるかを決定することができ、具体的なイントラ/インター予測モードを決定することができる。
【0069】
予測部は、後述する多様な予測方法に基づいて予測信号を生成することができる。例えば、予測部は、一つのブロックに対する予測のためにイントラ予測またはインター予測を適用することができるだけでなく、イントラ予測とインター予測とを同時に適用することもできる。これは、Combined Inter And Intra Prediction(CIIP)と呼ばれることができる。また、予測部は、ブロックに対する予測のためにイントラブロックコピー(Intra Block Copy、IBC)を実行することもできる。上記イントラブロックコピーは、例えば、SCC(Screen Content Coding)などのように、ゲームなどのコンテンツ映像/動映像コーディングのために使われることができる。IBCは、基本的に現ピクチャ内で予測を実行するが、現ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。すなわち、IBCは、本文書で説明されるインター予測技法のうちの少なくとも一つを利用することができる。
【0070】
イントラ予測部331は、現ピクチャ内のサンプルを参照して現ブロックを予測することができる。上記参照されるサンプルは、予測モードによって、上記現ブロックの隣接(neighbor)に位置することもでき、または離れて位置することもできる。イントラ予測で、予測モードは、複数の非方向性モードおよび複数の方向性モードを含むことができる。イントラ予測部331は、隣接ブロックに適用された予測モードを利用し、現ブロックに適用される予測モードを決定することもできる。
【0071】
インター予測部332は、参照ピクチャ上で動きベクトルにより特定される参照ブロック(参照サンプルアレイ)に基づいて、現ブロックに対する予測されたブロックを導出することができる。このとき、インター予測モードで送信される動き情報の量を減らすために、隣接ブロックと現ブロックとの間の動き情報の相関性に基づいて動き情報をブロック、サブブロック、またはサンプル単位で予測できる。上記動き情報は、動きベクトルおよび参照ピクチャインデックスを含むことができる。上記動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)情報をさらに含むことができる。インター予測の場合、隣接ブロックは、現ピクチャ内に存在する空間隣接ブロック(spatial neighboring block)と、参照ピクチャに存在する時間隣接ブロック(temporal neighboring block)と、を含むことができる。例えば、インター予測部332は、隣接ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて、上記現ブロックの動きベクトルおよび/または参照ピクチャインデックスを導出することができる。多様な予測モードに基づいてインター予測が実行されることができ、上記予測に関する情報は、上記現ブロックに対するインター予測のモードを指示する情報を含むことができる。
【0072】
加算部340は、取得された残差信号を、予測部330から出力された予測信号(予測されたブロック、予測サンプルアレイ)に加えることによって復元信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合のように処理対象ブロックに対する残差がない場合、予測されたブロックが復元ブロックとして使われることができる。
【0073】
加算部340は、復元部または復元ブロック生成部と呼ばれることができる。生成された復元信号は、現ピクチャ内の次の処理対象ブロックのイントラ予測のために使われることができ、後述するように、フィルタリングを経て出力されることもでき、または、次のピクチャのインター予測のために使われることもできる。
【0074】
一方、ピクチャデコーディング過程でLMCS(Luma Mapping with Chroma Scaling)が適用されることもできる。
【0075】
フィルタリング部350は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部350は、復元ピクチャに多様なフィルタリング方法を適用することで、修正された(modified)復元ピクチャを生成することができ、上記修正された復元ピクチャをメモリ360、具体的には、メモリ360のDPBに送信できる。上記多様なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応オフセット(sample adaptive offset)、適応ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。
【0076】
メモリ360のDPBに記憶された(修正された)復元ピクチャは、インター予測部332で参照ピクチャとして使われることができる。メモリ360は、現ピクチャ内の動き情報が導出された(または、デコードされた)ブロックの動き情報および/または既に復元されたピクチャ内のブロックの動き情報を記憶することができる。上記記憶された動き情報は、空間隣接ブロックの動き情報または時間隣接ブロックの動き情報として活用されるために、インター予測部332に伝達されることができる。メモリ360は、現ピクチャ内の復元されたブロックの復元サンプルを記憶することができ、イントラ予測部331に伝達できる。
【0077】
本明細書において、デコード装置300の予測部330、逆量子化部321、逆変換部322、およびフィルタリング部350などで説明された実施例は、各々、エンコード装置200の予測部220、逆量子化部234、逆変換部235、およびフィルタリング部260などにも同一または対応するように適用されることができる。
【0078】
前述したように、ビデオコーディングを実行するにあたって、圧縮効率を上げるために予測を実行する。これを介してコーディング対象ブロックである現ブロックに対する予測サンプルを含む予測されたブロックを生成することができる。ここで、上記予測されたブロックは、空間領域(または、ピクセル領域)における予測サンプルを含む。上記予測されたブロックは、エンコード装置とデコード装置とで同じく導出され、上記エンコード装置は、オリジナルブロックのオリジナルサンプル値自体でない上記オリジナルブロックと上記予測されたブロックとの間の残差に関する情報(残差情報)をデコード装置にシグナリングすることで映像コーディング効率を上げることができる。デコード装置は、上記残差情報に基づいて残差サンプルを含む残差ブロックを導出し、上記残差ブロックと上記予測されたブロックとを合わせて復元サンプルを含む復元ブロックを生成することができ、復元ブロックを含む復元ピクチャを生成することができる。
【0079】
上記残差情報は、変換および量子化手順を介して生成されることができる。例えば、エンコード装置は、上記オリジナルブロックと上記予測されたブロックとの間の残差ブロックを導出し、上記残差ブロックに含まれている残差サンプル(残差サンプルアレイ)に変換手順を実行して変換係数を導出し、上記変換係数に量子化手順を実行して量子化された変換係数を導出して関連する残差情報を(ビットストリームを介して)デコード装置にシグナリングできる。ここで、上記残差情報は、上記量子化された変換係数の値情報、位置情報、変換技法、変換カーネル、量子化パラメータなどの情報を含むことができる。デコード装置は、上記残差情報に基づいて逆量子化/逆変換手順を実行して残差サンプル(または、残差ブロック)を導出することができる。デコード装置は、予測されたブロックと上記残差ブロックとに基づいて復元ピクチャを生成することができる。また、エンコード装置は、以後のピクチャのインター予測のための参照のために量子化された変換係数を逆量子化/逆変換して残差ブロックを導出し、これに基づいて復元ピクチャを生成することができる。
【0080】
【0081】
図4を参照すると、変換部は、前述した
図2のエンコード装置内の変換部に対応することができ、逆変換部は、前述した
図2のエンコード装置内の逆変換部または
図3のデコード装置内の逆変換部に対応することができる。
【0082】
変換部は、残差ブロック内の残差サンプル(残差サンプルアレイ)に基づいて1次変換を実行して(1次)変換係数を導出することができる(S410)。このような1次変換(primary transform)は、コア変換(核心変換)(core transform)と呼ばれることができる。ここで、上記1次変換は、多重変換選択(Multiple Transform Selection、MTS)に基づくことができ、1次変換として多重変換が適用される場合、マルチコア変換(多重核心変換)と呼ばれることができる。
【0083】
マルチコア変換は、DCT(Discrete Cosine Transform)タイプ2およびDST(Discrete Sine Transform)タイプ7、DCTタイプ8、ならびに/またはDSTタイプ1を追加的に使用して変換する方式を示すことができる。すなわち、上記マルチコア変換は、上記DCTタイプ2、上記DSTタイプ7、上記DCTタイプ8、および上記DSTタイプ1の中から選択された複数の変換カーネルに基づいて、空間領域の残差信号(または、残差ブロック)を周波数領域の変換係数(または、1次変換係数)に変換する変換方法を示すことができる。ここで、上記1次変換係数は、変換部の立場で一時(臨時)変換係数と呼ばれることができる。
【0084】
すなわち、既存の変換方法が適用される場合、DCTタイプ2に基づいて、残差信号(または、残差ブロック)に対する空間領域から周波数領域への変換が適用されて変換係数が生成されることができた。これと違って、上記マルチコア変換が適用される場合、DCTタイプ2、DSTタイプ7、DCTタイプ8、および/またはDSTタイプ1などに基づいて、残差信号(または、残差ブロック)に対する空間領域から周波数領域への変換が適用されて変換係数(または、1次変換係数)が生成されることができる。ここで、DCTタイプ2、DSTタイプ7、DCTタイプ8、およびDSTタイプ1などは、変換タイプ、変換カーネル(kernel)または変換コア(core)と呼ばれることができる。このようなDCT/DST変換タイプは、基底関数に基づいて定義されることができる。
【0085】
上記マルチコア変換が実行される場合、上記変換カーネルの中から対象ブロックに対する垂直変換カーネルおよび水平変換カーネルが選択されることができ、上記垂直変換カーネルに基づいて上記対象ブロックに対する垂直変換が実行され、上記水平変換カーネルに基づいて上記対象ブロックに対する水平変換が実行されることができる。ここで、上記水平変換は、上記対象ブロックの水平成分に対する変換を示すことができ、上記垂直変換は、上記対象ブロックの垂直成分に対する変換を示すことができる。上記垂直変換カーネル/水平変換カーネルは、残差ブロックを含む対象ブロック(CUまたはサブブロック)の予測モードおよび/または変換インデックスに基づいて適応的に決定されることができる。
【0086】
また、一例によると、MTSを適用して1次変換を実行する場合、特定の基底関数を所定値に設定し、垂直変換または水平変換であるとき、どのような基底関数が適用されるかを組み合わせて変換カーネルに対するマッピング関係を設定することができる。例えば、水平方向変換カーネルをtrTypeHorで表し、垂直方向変換カーネルをtrTypeVerで表す場合、trTypeHorまたはtrTypeVer値0はDCT2に設定され、trTypeHorまたはtrTypeVer値1はDST7に設定され、trTypeHorまたはtrTypeVer値2はDCT8に設定されることができる。
【0087】
この場合、多数の変換カーネルセットのうちのいずれか一つを指示するために、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であることを指示することができる。
【0088】
一例によって、MTSインデックス情報による変換カーネルセットを表で示すと、以下の通りである。
【0089】
【0090】
変換部は、上記(1次)変換係数に基づいて2次変換を実行して修正された(2次)変換係数を導出することができる(S420)。上記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次変換係数)を生成する変換方法を示すことができる。例えば、行優先順序は、M×Nブロックに対して1番目の行、2番目の行、...、N番目の行の順序で一列に配置することであり、列優先順序は、M×Nブロックに対して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)領域に対して適用されることもできる。
【0091】
具体的には、例えば、4×4入力ブロックが使われる場合、非分離2次変換は、下記のように実行されることができる。
【0092】
上記4×4入力ブロックXは、以下のように示される。
【0093】
【0094】
上記Xをベクトル形態で表す場合、ベクトル
は、以下のように示される。
【0095】
【0096】
数式2のように、ベクトル
は、行優先(row-first)順序によって、数式1のXの2次元ブロックを1次元ベクトルで再配列する。
【0097】
この場合、上記2次非分離変換は、下記のように計算されることができる。
【0098】
【0099】
ここで、
は、変換係数ベクトルを示し、Tは、16×16(非分離)変換マトリクスを示す。
【0100】
上記数式3を介して16×1変換係数ベクトル
が導出されることができ、上記
は、スキャン順序(水平、垂直、対角(diagonal)など)を介して4×4ブロックで再構成(re-organized)されることができる。ただし、前述した計算は、例示に過ぎず、非分離2次変換の計算複雑度を減らすために、HyGT(Hypercube-Givens Transform)などが非分離2次変換の計算のために使われることもできる。
【0101】
一方、上記非分離2次変換は、モードベースの(mode dependent)変換カーネル(または、変換コア、変換タイプ)が選択されることができる。ここで、モードは、イントラ予測モードおよび/またはインター予測モードを含むことができる。
【0102】
前述したように、上記非分離2次変換は、上記変換係数ブロックの幅(W)および高さ(H)に基づいて決定された8×8変換または4×4変換に基づいて実行されることができる。8×8変換は、WおよびHが両方とも8より大きいまたは同じとき、該当変換係数ブロック内部に含まれている8×8領域に適用されることができる変換を指し、該当8×8領域は、該当変換係数ブロック内部の左上端8×8領域である。同様に、4×4変換は、WおよびHが両方とも4より大きいまたは同じとき、該当変換係数ブロック内部に含まれている4×4領域に適用されることができる変換を指し、該当4×4領域は、該当変換係数ブロック内部の左上端4×4領域である。例えば、8×8変換カーネルマトリクスは、64×64/16×64行列、4×4変換カーネルマトリクスは、16×16/8×16行列になることができる。
【0103】
このとき、モードベースの変換カーネル選択のために、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変換カーネルが含まれることができる。
【0104】
ただし、上記変換のサイズ、すなわち、変換が適用される領域のサイズは、例示に過ぎず、8×8または4×4以外のサイズが使われることができ、上記セットの数はn個、各セット内の変換カーネルの数はk個である。
【0105】
上記変換セットは、NSSTセットまたはLFNSTセットと呼ばれることができる。上記変換セットの中からの特定セットの選択は、例えば、現ブロック(CUまたはサブブロック)のイントラ予測モードに基づいて実行されることができる。低周波非分離変換(Low-Frequency Non-Separable Transform;LFNST)は、後述される減少された非分離変換の一例であり、低周波成分に対する非分離変換を示す。
【0106】
参考までに、例えば、イントラ予測モードは、2個の非方向性(non-directional、または非角度性(non-angular))イントラ予測モードと、65個の方向性(directional、または角度性(angular))イントラ予測モードと、を含むことができる。上記非方向性イントラ予測モードは、0番である平面(planar)イントラ予測モードおよび1番であるDCイントラ予測モードを含むことができ、上記方向性イントラ予測モードは、2番ないし66番の65個のイントラ予測モードを含むことができる。ただし、これは例示に過ぎず、本文書は、イントラ予測モードの数が異なる場合にも適用されることができる。一方、場合によって、67番のイントラ予測モードがさらに使用されることができ、上記67番のイントラ予測モードは、LM(Linear Model)モードを示すことができる。
【0107】
図5は、65個の予測方向のイントラ方向性モードを例示的に示す。
【0108】
図5を参照すると、右下向対角予測方向を有する34番のイントラ予測モードを中心にして、水平方向性(horizontal directionality)を有するイントラ予測モードと、垂直方向性(vertical directionality)を有するイントラ予測モードと、を区分することができる。
図5のHおよびVは、各々、水平方向性および垂直方向性を意味し、-32~32の数字は、サンプルグリッド位置(ポジション)(sample grid position)上で1/32単位の変位を示す。これは、モードインデックス値に対するオフセットを示すことができる。2番ないし33番のイントラ予測モードは水平方向性を有し、34番ないし66番のイントラ予測モードは垂直方向性を有する。一方、34番のイントラ予測モードは、厳密には、水平方向性でも垂直方向性でもないとみることができるが、2次変換の変換セットを決定する観点で水平方向性に属すると分類されることができる。これは、34番のイントラ予測モードを中心にして対称的な垂直方向モードに対しては入力データをトランスポーズ(transpose)して使用し、34番のイントラ予測モードに対しては水平方向モードに対する入力データ整列方式を使用するためである。入力データをトランスポーズすることは、2次元ブロックデータM×Nに対して行が列になり、列が行になってN×Mデータを構成することを意味する。18番のイントラ予測モードおよび50番のイントラ予測モードは、各々、水平イントラ予測モード(horizontal intra prediction mode)、垂直イントラ予測モード(vertical intra prediction mode)を示し、2番のイントラ予測モードは、左側参照ピクセルを有して右上向方向に予測するため、右上向対角イントラ予測モードと呼ばれることができ、同じ脈絡で、34番のイントラ予測モードは右下向対角イントラ予測モードと呼ばれ、66番のイントラ予測モードは左下向対角イントラ予測モードと呼ばれることができる。
【0109】
一例によって、イントラ予測モードによって4個の変換セットのマッピング(mapping)は、例えば、以下の表のように示される。
【0110】
【0111】
表2のように、イントラ予測モードによって、4個の変換セットのうちのいずれか一つ、すなわち、lfnstTrSetIdxが0から3、すなわち、4個のうちのいずれか一つにマッピングされることができる。
【0112】
一方、非分離変換に特定セットが使われると決定される場合、非分離2次変換インデックスを介して上記特定セット内のk個の変換カーネルの中から一つが選択されることができる。エンコード装置は、RD(Rate-Distortion)チェックに基づいて特定変換カーネルを指す非分離2次変換インデックスを導出することができ、上記非分離2次変換インデックスをデコード装置にシグナリングできる。デコード装置は、上記非分離2次変換インデックスに基づいて特定セット内のk個の変換カーネルの中から一つを選択することができる。例えば、lfnstインデックス値0は、1番目の非分離2次変換カーネルを指すことができ、lfnstインデックス値1は、2番目の非分離2次変換カーネルを指すことができ、lfnstインデックス値2は、3番目の非分離2次変換カーネルを指すことができる。あるいは、lfnstインデックス値0は、対象ブロックに対して1番目の非分離2次変換が適用されないことを指すことができ、lfnstインデックス値1ないし3は、上記3個の変換カーネルを指すことができる。
【0113】
変換部は、選択された変換カーネルに基づいて上記非分離2次変換を実行して修正された(2次)変換係数を取得することができる。上記修正された変換係数は、前述したように、量子化部を介して量子化された変換係数として導出されることができ、エンコードされてデコード装置にシグナリングおよびエンコード装置内の逆量子化/逆変換部に伝達されることができる。
【0114】
一方、前述したように、2次変換が省略される場合、上記1次(分離)変換の出力である(1次)変換係数が、前述したように、量子化部を介して量子化された変換係数として導出されることができ、エンコードされてデコード装置にシグナリングおよびエンコード装置内の逆量子化/逆変換部に伝達されることができる。
【0115】
逆変換部は、前述した変換部で実行された手順の逆順に一連の手順を実行することができる。逆変換部は、(逆量子化された)変換係数を受信し、2次(逆)変換を実行して(1次)変換係数を導出し(S450)、上記(1次)変換係数に対して1次(逆)変換を実行して残差ブロック(残差サンプル)を取得することができる(S460)。ここで、上記1次変換係数は、逆変換部の立場で修正された(modified)変換係数と呼ばれることができる。エンコード装置およびデコード装置は、上記残差ブロックと予測されたブロックとに基づいて復元ブロックを生成し、これに基づいて復元ピクチャを生成することができることは、前述の通りである。
【0116】
一方、デコード装置は、2次逆変換適用可否決定部(または、2次逆変換の適用が可能か否かを決定する要素)と、2次逆変換決定部(または、2次逆変換を決定する要素)と、をさらに含むことができる。2次逆変換適用可否決定部は、2次逆変換の適用が可能か否かを決定することができる。例えば、2次逆変換は、NSST、RSTまたはLFNSTであり、2次逆変換適用可否決定部は、ビットストリームからパージングした2次変換フラグに基づいて2次逆変換の適用が可能か否かを決定することができる。他の一例として、2次逆変換適用可否決定部は、残差ブロックの変換係数に基づいて2次逆変換の適用が可能か否かを決定することもできる。
【0117】
2次逆変換決定部は、2次逆変換を決定することができる。このとき、2次逆変換決定部は、イントラ予測モードによって指定されたLFNST(NSSTまたはRST)変換セットに基づいて現ブロックに適用される2次逆変換を決定することができる。また、一実施例として、1次変換決定方法に依存的に(depend on)2次変換決定方法が決定されることができる。イントラ予測モードによって、1次変換と2次変換との多様な組み合わせが決定されることができる。また、一例として、2次逆変換決定部は、現ブロックの大きさに基づいて2次逆変換が適用される領域を決定することもできる。
【0118】
一方、前述したように、2次(逆)変換が省略される場合、(逆量子化された)変換係数を受信して上記1次(分離)逆変換を実行することで残差ブロック(残差サンプル)を取得することができる。エンコード装置およびデコード装置は、上記残差ブロックと予測されたブロックとに基づいて復元ブロックを生成し、これに基づいて復元ピクチャを生成することができることは、前述の通りである。
【0119】
一方、本文書では、非分離2次変換による計算量およびメモリ要求量の低減のために、NSSTの概念で変換マトリクス(カーネル)の大きさが減少されたRST(Reduced Secondary Transform)を適用することができる。
【0120】
一方、本文書で説明された変換カーネル、変換マトリクス、変換カーネルマトリクスを構成する係数、すなわち、カーネル係数またはマトリクス係数は、8ビットで表現されることができる。これは、デコード装置およびエンコード装置で具現されるための一つの条件であり、既存の9ビットまたは10ビットと比較して合理的に受け入れることができる性能低下と共に、変換カーネルを記憶するためのメモリ要求量を減らすことができる。また、カーネルマトリクスを8ビットで表現することによって小さい掛け算器を使用することができ、最適なソフトウェア具現のために使われるSIMD(Single Instruction Multiple Data)命令にさらに適合できる。
【0121】
本明細書において、RSTは、簡素化ファクタ(factor)によって大きさが減少された変換マトリクス(transform matrix)に基づいて、対象ブロックに対する残差サンプルに対して実行される変換を意味することができる。簡素化変換を実行する場合、変換マトリクスの大きさの減少によって変換時に要求される演算量が減少されることができる。すなわち、RSTは、大きさが大きいブロックの変換または非分離変換時に発生する演算複雑度(complexity)の問題を解消するために利用されることができる。
【0122】
RSTは、減少された変換、減少変換、reduced transform、reduced secondary transform、reduction transform、simplified transform、simple transformなど、多様な用語で呼ばれることができ、RSTと呼ばれる名称は、羅列された例示に限定されるものではない。あるいは、RSTは、主に変換ブロックで0でない係数を含む低周波領域で行われるため、LFNST(Low-Frequency Non-Separable Transform)と呼ばれることもできる。上記変換インデックスは、LFNSTインデックスと命名されることができる。
【0123】
一方、2次逆変換がRSTに基づいて行われる場合、エンコード装置200の逆変換部235およびデコード装置300の逆変換部322は、変換係数に対する逆RSTに基づいて修正された変換係数を導出する逆RST部と、修正された変換係数に対する逆1次変換に基づいて上記対象ブロックに対する残差サンプルを導出する逆1次変換部と、を含むことができる。逆1次変換は、残差に適用された1次変換の逆変換を意味する。本文書で変換に基づいて変換係数を導出することは、該当変換を適用して変換係数を導出することを意味することができる。
【0124】
図6は、本文書の一実施例に係るRSTを説明する図である。
【0125】
本明細書において、「対象ブロック」は、コーディングが実行される現ブロックまたは残差ブロックまたは変換ブロックを意味することができる。
【0126】
一実施例に係るRSTで、N次元ベクトル(N dimensional vector)が異なる空間に位置するR次元ベクトル(R dimensional vector)にマッピングされて減少された変換マトリクスが決定されることができ、ここで、Rは、Nより小さい。Nは、変換が適用されるブロックの一辺の長さ(length)の自乗(square)または変換が適用されるブロックと対応する変換係数の総数を意味することができ、簡素化ファクタは、R/N値を意味することができる。簡素化ファクタは、減少されたファクタ、減少ファクタ、reduced factor、reduction factor、simplified factor、simple factorなど、多様な用語で呼ばれることができる。一方、Rは、簡素化係数(reduced coefficient)と呼ばれることができるが、場合によっては、簡素化ファクタがRを意味することもできる。また、場合によって、簡素化ファクタは、N/R値を意味することもできる。
【0127】
一実施例において、簡素化ファクタまたは簡素化係数は、ビットストリームを介してシグナリングされることができるが、実施例がこれに限定されるものではない。例えば、簡素化ファクタまたは簡素化係数に対する予め定義された値が各エンコード装置200およびデコード装置300に記憶されている場合があり、この場合、簡素化ファクタまたは簡素化係数は、別途にシグナリングされない。
【0128】
一実施例に係る簡素化変換マトリクスのサイズは、通常の変換マトリクスのサイズN×Nより小さいR×Nであり、以下の数式4のように定義されることができる。
【0129】
【0130】
図6の(a)に示すReduced Transformブロック内のマトリクスTは、数式4のマトリクスT
R×Nを意味することができる。
図6の(a)のように、対象ブロックに対する残差サンプルに対して簡素化変換マトリクスT
R×Nが掛けられる場合、対象ブロックに対する変換係数が導出されることができる。
【0131】
一実施例において、変換が適用されるブロックのサイズが8×8であり、R=16(すなわち、R/N=16/64=1/4)である場合、
図6の(a)によるRSTは、以下の数式5のような行列演算で表現されることができる。この場合、メモリおよび掛け算が簡素化ファクタにより概略1/4に減少されることができる。
【0132】
本文書において、行列演算とは、行列を列ベクトルの左側に置いて行列と列ベクトルとをかけて列ベクトルを得る演算として理解されることができる。
【0133】
【0134】
数式5において、r1ないしr64は、対象ブロックに対する残差サンプルを示すことができ、より具体的には、1次変換を適用して生成された変換係数である。数式5の演算結果、対象ブロックに対する変換係数ciが導出されることができ、ciの導出過程は、数式6の通りである。
【0135】
【0136】
数式6の演算の結果、対象ブロックに対する変換係数c1ないしcRが導出されることができる。すなわち、R=16である場合、対象ブロックに対する変換係数c1ないしc16が導出されることができる。RSTではなく通常の(regular)変換が適用されてサイズが64×64(N×N)である変換マトリクスが、サイズが64×1(N×1)である残差サンプルに掛けられた場合、対象ブロックに対する変換係数が64個(N個)が導出されるが、RSTが適用されたため、対象ブロックに対する変換係数が16個(R個)のみ導出される。対象ブロックに対する変換係数の総数がN個からR個に減少してエンコード装置200がデコード装置300に送信するデータの量が減少するため、エンコード装置200-デコード装置300間の送信効率が増加されることができる。
【0137】
変換マトリクスのサイズの観点で検討すると、通常の変換マトリクスのサイズは64×64(N×N)であり、簡素化変換マトリクスのサイズは16×64(R×N)に減少するため、通常の変換を実行するときと比較すると、RSTを実行するときにメモリ使用をR/Nの割合で減少させることができる。また、通常の変換マトリクスを利用するときの掛け算演算数N×Nと比較すると、簡素化変換マトリクスを利用する場合、掛け算の演算数をR/Nの割合で減少(R×N)させることができる。
【0138】
一実施例において、エンコード装置200の変換部232は、対象ブロックに対する残差サンプルを1次変換およびRSTベースの2次変換を実行することによって対象ブロックに対する変換係数を導出することができる。このような変換係数は、デコード装置300の逆変換部に伝達されることができ、デコード装置300の逆変換部322は、変換係数に対する逆RST(Reduced Secondary Transform)に基づいて修正された変換係数を導出し、修正された変換係数に対する逆1次変換に基づいて対象ブロックに対する残差サンプルを導出することができる。
【0139】
一実施例に係る逆RSTマトリクスTN×Rのサイズは、通常の逆変換マトリクスのサイズN×Nより小さいN×Rであり、数式4に示す簡素化変換マトリクスTR×Nとトランスポーズ(transpose)関係にある。
【0140】
図6の(b)に示すReduced Inv.Transformブロック内のマトリクスT
tは、逆RSTマトリクスT
R×N
Tを意味することができる(上付き文字Tは、トランスポーズを意味する)。
図6の(b)のように、対象ブロックに対する変換係数に対して逆RSTマトリクスT
R×N
Tが掛けられる場合、対象ブロックに対する修正された変換係数または対象ブロックに対する残差サンプルが導出されることができる。逆RSTマトリクスT
R×N
Tは、(T
R×N)
T
N×Rで表現されることもできる。
【0141】
より具体的には、2次逆変換として逆RSTが適用される場合には、対象ブロックに対する変換係数に対して逆RSTマトリクスTR×N
Tが掛けられると、対象ブロックに対する修正された変換係数が導出されることができる。一方、逆1次変換として逆RSTが適用されることができ、この場合、対象ブロックに対する変換係数に対して逆RSTマトリクスTR×N
Tが掛けられると、対象ブロックに対する残差サンプルが導出されることができる。
【0142】
一実施例において、逆変換が適用されるブロックのサイズが8×8であり、R=16(すなわち、R/N=16/64=1/4である場合)である場合、
図6の(b)によるRSTは、以下の数式7のような行列演算で表現されることができる。
【0143】
【0144】
数式7において、c1ないしc16は、対象ブロックに対する変換係数を示すことができる。数式7の演算の結果、対象ブロックに対する修正された変換係数または対象ブロックに対する残差サンプルを示すriが導出されることができ、riの導出過程は、数式8の通りである。
【0145】
【0146】
数式8の演算の結果、対象ブロックに対する修正された変換係数または対象ブロックに対する残差サンプルを示すr1ないしrNが導出されることができる。逆変換マトリクスのサイズの観点で検討すると、通常の逆変換マトリクスのサイズは64×64(N×N)であり、簡素化逆変換マトリクスのサイズは64×16(N×R)に減少するため、通常の逆変換を実行するときと比較すると、逆RSTを実行するときにメモリ使用をR/Nの割合で減少させることができる。また、通常の逆変換マトリクスを利用するときの掛け算演算数N×Nと比較すると、簡素化逆変換マトリクスを利用する場合、掛け算演算数をR/Nの割合で減少(N×R)させることができる。
【0147】
一方、8×8 RSTに対しても、表2のような変換セット構成を適用することができる。すなわち、表2における変換セットによって該当8×8 RSTが適用されることができる。一つの変換セットは、画面内の予測モードによって2個または3個の変換(カーネル)で構成されているため、2次変換を適用しない場合を含んで最大4個の変換の中から一つを選択するように構成されることができる。2次変換を適用しないときの変換は、恒等行列が適用されたと見なされることができる。4個の変換に対して各々0、1、2、3のインデックスを付与するとしたとき(例えば、0番のインデックスが、恒等行列、すなわち、2次変換が適用されない場合に割り当てられることができる)、変換インデックスまたはlfnstインデックスというシンタックス要素(syntax element)を変換係数ブロックごとにシグナリングして適用される変換を指定することができる。すなわち、変換インデックスを介して8×8左上端ブロックに対して、RST構成では8×8 RSTを指定することができ、またはLFNSTが適用される場合、8×8 lfnstを指定することができる。8×8 lfnstおよび8×8 RSTは、変換の対象になる対象ブロックのWおよびHが両方とも8より大きいまたは同じとき、該当の変換係数ブロック内部に含まれている8×8領域に適用されることができる変換を指し、該当の8×8領域は、該当変換係数ブロック内部の左上端8×8領域である。同様に、4×4 lfnstおよび4×4 RSTは、対象ブロックのWおよびHが両方とも4より大きいまたは同じとき、該当変換係数ブロック内部に含まれている4×4領域に適用されることができる変換を指し、該当4×4領域は、該当の変換係数ブロック内部の左上端4×4領域である。
【0148】
一方、本文書の一実施例によって、エンコーディング過程の変換で、8×8領域を構成する64個のデータに対して16×64変換カーネルマトリクスでない、48個のデータのみを選択して最大16×48変換カーネルマトリクスを適用することができる。ここで、「最大」とは、m個の係数を生成することができるm×48変換カーネルマトリクスに対してmの最大値が16であることを意味する。すなわち、8×8領域にm×48変換カーネルマトリクス(m≦16)を適用してRSTを実行する場合、48個のデータの入力を受けてm個の係数を生成することができる。mが16である場合、48個のデータの入力を受けて16個の係数を生成する。すなわち、48個のデータが48×1ベクトルをなすとしたとき、16×48行列と48×1ベクトルとが順に掛けられて16×1ベクトルが生成されることができる。このとき、8×8領域をなす48個のデータを適切に配列して48×1ベクトルを構成することができる。例えば、8×8領域のうちの右下端4×4領域を除外した領域を構成する48個のデータに基づいて48×1ベクトルを構成することができる。このとき、最大16×48変換カーネルマトリクスを適用して行列演算を実行すると、16個の修正された変換係数が生成され、16個の修正された変換係数は、スキャン順序によって左上端4×4領域に配置されることができ、右上端4×4領域および左下端4×4領域は、0で満たされることができる。
【0149】
デコーディング過程の逆変換には、上記叙述された変換カーネルマトリクスのトランスポーズされたマトリクスが使われることができる。すなわち、デコード装置で実行される逆変換過程として逆RSTまたはLFNSTが実行される場合、逆RSTが適用される入力係数データは、所定の配列順序によって1次元ベクトルで構成され、1次元ベクトルに該当の逆RST行列を左側でかけて得られた修正された係数ベクトルは、所定の配列順序によって2次元ブロックに配列されることができる。
【0150】
整理すると、変換過程で、8×8領域にRSTまたはLFNSTが適用される場合、8×8領域の変換係数のうち、8×8領域の右下端領域を除外した左上端、右上端、左下端領域の48個の変換係数と16×48の変換カーネルマトリクスとの行列演算が実行される。行列演算のために、48個の変換係数は、1次元配列で入力される。このような行列演算が実行されると、16個の修正された変換係数が導出され、修正された変換係数は、8×8領域の左上端領域に配列されることができる。
【0151】
逆に、逆変換過程で、8×8領域に逆RSTまたはLFNSTが適用される場合、8×8領域の変換係数のうちの8×8領域の左上端に対応する16個の変換係数は、スキャン順序によって1次元配列形態で入力されて48×16の変換カーネルマトリクスと行列演算されることができる。すなわち、このような場合の行列演算は、(48×16行列)*(16×1変換係数ベクトル)=(48×1修正された変換係数ベクトル)で表すことができる。ここで、n×1ベクトルは、n×1行列のような意味で解釈されることができるため、n×1列ベクトルで表記されることもできる。また、*は、行列の掛け算演算を意味する。このような行列演算が実行される場合、48個の修正された変換係数が導出されることができ、48個の修正された変換係数は、8×8領域の右下端領域を除外した左上端、右上端、左下端領域に配列されることができる。
【0152】
一方、2次逆変換がRSTに基づいて行われる場合、エンコード装置200の逆変換部235およびデコード装置300の逆変換部322は、変換係数に対する逆RSTに基づいて修正された変換係数を導出する逆RST部と、修正された変換係数に対する逆1次変換に基づいて上記対象ブロックに対する残差サンプルを導出する逆1次変換部と、を含むことができる。逆1次変換は、残差に適用された1次変換の逆変換を意味する。本文書において、変換に基づいて変換係数を導出することは、該当の変換を適用して変換係数を導出することを意味することができる。
【0153】
詳述された非分離変換、LFNSTに対して具体的にみると、以下の通りである。LFNSTは、エンコード装置による順方向(forward)変換とデコード装置による逆方向(inverse)変換とを含むことができる。
【0154】
エンコード装置は、順方向1次変換(primary (core) transform)を適用した後に導出された結果(または、結果の一部)を入力とし、順方向2次変換(secondary transform)を適用する。
【0155】
[数9]
y=GTx
【0156】
上記数式9において、xおよびyは、各々、2次変換の入力および出力であり、Gは、2次変換を示す行列であって、変換基底ベクトル(transform basis vector)は、列ベクトルで構成される。逆方向LFNSTの場合、変換行列Gの次元(dimension)を[row数×column数]で表記したとき、順方向LFNSTの場合、行列Gのトランスポーズを行ったものがGTの次元になる。
【0157】
逆方向LFNSTの場合、行列Gの次元は、[48×16]、[48×8]、[16×16]、[16×8]になり、[48×8]行列および[16×8]行列は、各々、[48×16]行列および[16×16]行列の左側から8個の変換基底ベクトルをサンプリングした部分行列である。
【0158】
それに対して、順方向LFNSTの場合、行列GTの次元は、[16×48]、[8×48]、[16×16]、[8×16]になり、[8×48]行列および[8×16]行列は、各々、[16×48]行列および[16×16]行列の上側から8個の変換基底ベクトルをサンプリングした部分行列である。
【0159】
したがって、順方向LFNSTの場合、入力xとしては[48×1]ベクトルまたは[16×1]ベクトルが可能であり、出力yとしては[16×1]ベクトルまたは[8×1]ベクトルが可能である。ビデオコーディングおよびデコーディングにおける順方向1次変換の出力は、二次元(2D)データであるため、入力xとして[48×1]ベクトルまたは[16×1]ベクトルを構成するために、順方向変換の出力である2Dデータを適切に配列して1次元ベクトルを構成しなければならない。
【0160】
図7は、一例によって順方向1次変換の出力データを1次元ベクトルに配列する順序を示す図である。
図7の(a)および(b)の左側の図は、[48×1]ベクトルを作成する順序を示し、
図7の(a)および(b)の右側の図は、[16×1]ベクトルを作成する順序を示す。LFNSTの場合、
図7の(a)および(b)のような順序で、2Dデータを順次配列して一次元ベクトルxを得ることができる。
【0161】
このような順方向1次変換の出力データの配列方向は、現ブロックのイントラ予測モードによって決定されることができる。例えば、現ブロックのイントラ予測モードが対角線方向を基準にして水平方向である場合、順方向1次変換の出力データは、
図7の(a)の順序で配列されることができ、現ブロックのイントラ予測モードが対角線方向を基準にして垂直方向である場合、順方向1次変換の出力データは、
図7の(b)の順序で配列されることができる。
【0162】
一例によって、
図7の(a)および(b)の配列順序(ordering)と異なる配列順序を適用することができ、
図7の(a)および(b)の配列順序を適用したときと同じ結果(yベクトル)を導出しようとする場合は、行列Gの列ベクトルを該当配列順序に合わせて再配列すればよい。すなわち、xベクトルを構成する各要素に対して常に同じ変換基底ベクトルと掛けられるようにGの列ベクトルを再配置することができる。
【0163】
数式9を介して導出される出力yは、一次元ベクトルであるため、順方向2次変換の結果を入力として処理する構成、例えば、量子化または残差コーディングを実行する構成が入力データとして2次元データを必要とする場合、数式9の出力yベクトルは、再び2Dデータで適切に配置されなければならない。
【0164】
図8は、一例によって順方向2次変換の出力データを2次元ブロックに配列する順序を示す図である。
【0165】
LFNSTの場合、決められたスキャン順序によって2Dブロックに配置されることができる。
図8の(a)は、出力yが[16×1]ベクトルである場合、2次元ブロックの16個の位置に対角スキャン(diagonal scan)順序によって出力値が配置されることを示す。
図8の(b)は、出力yが[8×1]ベクトルである場合、2次元ブロックの8個の位置に対角スキャン順序によって出力値が配置され、残り8個の位置は、0で満たされることを示す。
図8の(b)のXは、0で満たされることを示す。
【0166】
他の例によって、量子化または残差コーディングを実行する構成により出力ベクトルyが処理される順序は、予め設定された順序によって実行できるため、
図8のように出力ベクトルyが2Dブロックに配置されないことがある。ただし、残差コーディングの場合、CG(Coefficient Group)のような2Dブロック(例えば、4×4)単位でデータコーディングが実行されることができ、この場合、
図8の対角スキャン順序のように特定順序によってデータが配列されることができる。
【0167】
一方、デコード装置は、逆方向変換のために逆量子化過程などを介して出力された2次元データを予め設定されたスキャン順序によって配列(羅列)して1次元入力ベクトルであるyを構成することができる。入力ベクトルyは、下記数式により入力ベクトルxとして出力されることができる。
【0168】
[数10]
x=Gy
【0169】
逆方向LFNSTの場合、[16×1]ベクトルまたは[8×1]ベクトルである入力ベクトルyにG行列を掛けることによって、出力ベクトルxを導出することができる。逆方向LFNSTの場合、出力ベクトルxは、[48×1]ベクトルまたは[16×1]ベクトルである。
【0170】
出力ベクトルxは、
図7に示す順序によって2次元ブロックに配置されて2次元データで配列され、このような2次元データは、逆方向1次変換の入力データ(または、入力データの一部)になる。
【0171】
したがって、逆方向2次変換は、全体的に順方向2次変換過程と反対であり、逆変換の場合、順方向と違って、逆方向2次変換を先に適用した後に逆方向1次変換を適用する。
【0172】
逆方向LFNSTでは、変換行列Gとして[48×16]行列8個および[16×16]行列8個の中から一つが選択されることができる。[48×16]行列および[16×16]行列のうちのどの行列を適用するかは、ブロックの大きさおよび形状によって決定される。
【0173】
また、8個の行列は、前述された表2のように4個の変換セットから導出されることができ、各変換セットは、2個の行列で構成されることができる。4個の変換セットのうちのどの変換セットを使用するかは、イントラ予測モードによって決定され、より具体的には、広角イントラ予測モード(Wide Angle Intra Prediction、WAIP)を考慮して拡張されたイントラ予測モード値に基づいて変換セットが決定される。選択された変換セットを構成する2個の行列の中からどの行列を選択するかは、インデックスシグナリング(index signaling)を介して導出される。より具体的には、送信されるインデックス値では0、1、2が可能であり、0は、LFNSTを適用しないことを指示し、1および2は、イントラ予測モード値に基づいて選択された変換セットを構成する2個の変換行列のうちのいずれか一つを指示することができる。
【0174】
図9は、本文書の一実施例に係る広角イントラ予測モードを示す図である。
【0175】
一般的なイントラ予測モード値は、0~66および81~83までの値を有することができ、図示されたように、WAIPによって拡張されたイントラ予測モード値は、-14~83までの値を有することができる。81~83までの値は、CCLM(Cross Component Linear Model)モードを指し、-14~-1までの値および67~80までの値は、WAIP適用によって拡張されたイントラ予測モード値を指す。
【0176】
予測現ブロックの幅が高さより大きい場合、一般的に上側参照ピクセルが予測しようとするブロック内部の位置により近い。したがって、右上端(top-right)方向に予測することより左下端(bottom-left)方向に予測することがより正確である。それに対して、ブロックの高さが幅より大きい場合は、左側参照ピクセルが予測しようとするブロック内部の位置に一般的に近い。したがって、左下端(bottom-left)方向に予測することより右上端(top-right)方向に予測することがより正確である。したがって、広角イントラ予測モードのインデックスでリマッピング、すなわち、モードインデックス変換を適用することが有利である。
【0177】
広角イントラ予測が適用される場合、既存のイントラ予測に関する情報がシグナリングされることができ、上記情報がパージングされた以後、上記情報が上記広角イントラ予測モードのインデックスでリマッピングされることができる。したがって、特定ブロック(例えば、特定サイズの非正方形ブロック)に対する総イントラ予測モードの数は変更されず、すなわち、総イントラ予測モードの数は67個であり、上記特定ブロックに対するイントラ予測モードコーディングは変更されない。
【0178】
以下の表3は、イントラ予測モードを広角イントラ予測モードにリマッピングして修正されたイントラモードを導出する過程を示している。
【0179】
【0180】
表3において、最終的にpredModeIntra変数に拡張されたイントラ予測モード値が記憶され、ISP_NO_SPLITは、現在VVC標準に採択されているIntra Sub Partitions(ISP)技術によりCUブロックがサブパーティションに分割されないことを示し、変数値cIdxが0、1、2であることは、各々、ルマ、Cb、Crコンポーネントである場合を指す。表3に示すLog2関数は、ベース(base)が2であるログ値をリターンし、Abs関数は、絶対値をリターンする。
【0181】
広角イントラ予測モードのマッピング過程(Wide angle intra prediction mode mapping process)の入力値として、イントラ予測モードを指示する変数predModeIntra、変換ブロックの高さおよび幅などが使われ、出力値は、修正されたイントラ予測モード(the modified intra prediction mode predModeIntra)になる。変換ブロックまたはコーディングブロックの高さおよび幅が、イントラ予測モードのリマッピングのための現ブロックの高さおよび幅になることができる。このとき、幅と高さとの比率を反映する変数whRatioは、Abs(Log2(nW/nH))に設定されることができる。
【0182】
正方形でないブロックに対して、イントラ予測モードは、2つの場合に区分されて修正されることができる。
【0183】
まず、(1)現ブロックの幅が高さより大きい、(2)修正前のイントラ予測モードが2より大きいまたは同じ、(3)イントラ予測モードが、変数whRatioが1より大きい場合は(8+2*whRatio)であり、変数whRatioが1より小さいまたは同じ場合は8であって、導出される値より小さい[predModeIntra is less than(whRatio>1)?(8+2*whRatio):8]という全ての条件を満たす場合、イントラ予測モードは、イントラ予測モードより65大きい値に設定される[predModeIntra is set equal to(predModeIntra+65)]。
【0184】
上記と異なる場合、(1)現ブロックの高さが幅より大きい、(2)修正前のイントラ予測モードが66より小さいまたは同じ、(3)イントラ予測モードが、変数whRatioが1より大きい場合は(60-2*whRatio)であり、変数whRatioが1より小さいまたは同じ場合は60であって、導出される値より大きい[predModeIntra is greater than(whRatio>1)?(60-2*whRatio):60]という全ての条件を満たす場合、イントラ予測モードは、イントラ予測モードより67小さい値に設定される[predModeIntra is set equal to(predModeIntra-67)]。
【0185】
前述された表2は、LFNSTでWAIPにより拡張されたイントラ予測モード値に基づいて変換セットがどのように選択されるかを示している。
図9のように、14~33までのモードと35~80までのモードとは、モード34を中心にして予測方向の観点で互いに対称である。例えば、モード14とモード54とは、モード34に該当する方向を中心にして対称である。したがって、互いに対称的な方向に位置するモードどうしは同じ変換セットを適用するようになり、表2でもこのような対称性が反映されている。
【0186】
ただし、モード54に対する順方向LFNST入力データは、モード14に対する順方向LFNST入力データと対称を成すと仮定する。例えば、モード14およびモード54に対しては、各々、
図7の(a)および
図7の(b)に示す配列順序によって2次元データを1次元データで再配列するようになり、
図7の(a)および
図7の(b)に示す順序のパターンは、モード34が指す方向(対角線方項)を中心にして対称であることを知ることができる。
【0187】
一方、前述したように、[48×16]行列と[16×16]行列とのうちのどの変換行列をLFNSTに適用するかは、変換対象ブロックの大きさおよび形状により決定される。
【0188】
図10は、LFNSTが適用されるブロック形状を示す図である。
図10の(a)は4×4ブロックを、(b)は4×8および8×4ブロックを、(c)はNが16以上である4×NまたはN×4ブロックを、(d)は8×8ブロックを、(e)はM≧8、N≧8であり、N>8またはM>8であるM×Nブロックを示している。
【0189】
図10において、太い枠のブロックがLFNSTが適用される領域を指す。
図10の(a)および(b)のブロックに対しては左上端(top-left)4×4領域に対してLFNSTが適用され、
図10の(c)のブロックに対しては連続して配置される2個の左上端4×4領域に対して各々LFNSTが適用される。
図10の(a)、(b)、(c)では、4×4領域単位でLFNSTが適用されるため、このようなLFNSTを以下「4×4LFNST」と命名するようにし、該当変換行列として、数式9および数式10のGに対する行列次元に基づいて、[16×16]または[16×8]行列が適用されることができる。
【0190】
より具体的には、
図10の(a)の4×4ブロック(4×4TUまたは4×4CU)に対しては[16×8]行列が適用され、
図10の(b)および(c)のブロックに対しては[16×16]行列が適用される。これは、最悪の場合(worst case)に対する計算複雑度をサンプルあたり8回の乗算(8 multiplications per sample)に合わせるためである。
【0191】
図10の(d)および(e)に対しては左上端8×8領域に対してLFNSTが適用され、このようなLFNSTを以下「8×8LFNST」と命名するようにする。該当変換行列として、[48×16]または[48×8]行列が適用されることができる。順方向LFNSTの場合、入力データとして[48×1]ベクトル(数式9のxベクトル)が入力されるため、左上端8×8領域の全てのサンプル値が順方向LFNSTの入力値として使われない。すなわち、
図7の(a)の左側の順序または
図7の(b)の左側の順序で見ることができるように、右下端(bottom-right)の4×4ブロックはそのまま置き、残り3個の4×4ブロックに属するサンプルに基づいて[48×1]ベクトルを構成することができる。
【0192】
図10の(d)における8×8ブロック(8×8TUまたは8×8CU)に[48×8]行列が適用され、
図10の(e)における8×8ブロックに[48×16]行列が適用されることができる。これも最悪の場合(worst case)に対する計算複雑度をサンプルあたり8回の乗算(8 multiplications per sample)に合わせるためである。
【0193】
ブロック形状によって、これに対応する順方向LFNST(4×4LFNSTまたは8×8LFNST)が適用されると、8個または16個の出力データ(数式9におけるyベクトル、[8×1]または[16×1]ベクトル)が生成され、順方向LFNSTでは、行列GTの特性上、出力データの数が入力データの数と同じかまたは少なくなる。
【0194】
図11は、一例によって順方向LFNSTの出力データの配列を示し、ブロック形状によって順方向LFNSTの出力データが配置されるブロックを示す図である。
【0195】
図11に示すブロックの左上端に陰影で処理された領域が順方向LFNSTの出力データが位置する領域に該当し、0で表記された位置は値0で満たされるサンプルを示し、残りの領域は、順方向LFNSTにより変更されない領域を示す。LFNSTにより変更されない領域には、順方向1次変換の出力データが変更されずにそのまま存在する。
【0196】
前述したように、ブロック形状によって適用される変換行列の次元が変わるため、出力データの数も変わる。
図11のように、順方向LFNSTの出力データが左上端4×4ブロックを全部満たすことができない場合もある。
図11の(a)および(d)の場合、太線で表示されたブロックまたはブロック内部の一部の領域には、各々、[16×8]行列および[48×8]行列が適用されて順方向LFNSTの出力として[8×1]ベクトルが生成される。すなわち、
図8の(b)に示すスキャン順序によって8個の出力データのみが
図11の(a)および(d)のように満たされ、残り8個の位置に対しては0で満たされることができる。
図10の(d)のLFNST適用ブロックの場合、
図11の(d)のように左上端4×4ブロックに隣接する右上端および左下端の2つの4×4ブロックも値0で満たされる。
【0197】
上記のように、基本的にLFNSTインデックスをシグナリングしてLFNST適用が可能か否かおよび適用する変換行列を指定する。
図11に示すように、LFNSTが適用される場合、順方向LFNSTの出力データ数が入力データ数と同じまたは少ないことがあるため、値0で満たされる領域が下記のように発生する。
【0198】
1)
図11の(a)のように左上端4×4ブロック内にスキャン順序上8番目以後の位置、すなわち、9番目から16番目までのサンプル
【0199】
2)
図11の(d)および(e)のように、[16×48]行列または[8×48]行列が適用されて左上端4×4ブロックに隣接する2つの4×4ブロックまたはスキャン順序上2番目および3番目の4×4ブロック
【0200】
したがって、上記1)および2)の領域をチェックして0でない(non-zero)データが存在すると、LFNSTが適用されないことが確実であるため、該当のLFNSTインデックスのシグナリングを省略することができる。
【0201】
一例によって、例えば、VVC標準に採択されたLFNSTの場合、LFNSTインデックスのシグナリングは、残差コーディング以後に実行されるため、エンコード装置は、残差コーディングを介してTUまたはCUブロック内部の全ての位置に対する0でないデータ(有効係数)の存在が可能か否かを知ることができる。したがって、エンコード装置は、0でないデータの存在が可能か否かを介してLFNSTインデックスに対するシグナリングを実行するかどうかを判断することができ、デコード装置は、LFNSTインデックスのパージングが可能か否かを判断することができる。上記1)および2)で指定された領域に0でないデータが存在しない場合、LFNSTインデックスのシグナリングを実行する。
【0202】
LFNSTインデックスに対する二進化方法でトランケイテッドユナリコード(truncated unary code)を適用するため、LFNSTインデックスは、最大2個のbinで構成され、可能なLFNSTインデックス値である0、1、2に対する二進化コード(binary code)で、各々0、10、11が割り当てられる。一例によって、1番目のbinに対してはコンテキストベースのCABACコーディングが適用され(regular coding)、2番目のbinに対してもコンテキストベースのCABACコーディングが適用されることができる。LFNSTインデックスのコーディングを表で表すと、以下の通りである。
【0203】
【0204】
表4のように、1番目のbin(binIdx=0)に対して、シングルツリーの場合は、0番のコンテキストを適用し、シングルツリーでない場合は、1番のコンテキストを適用することができる。また、表4のように、2番目のbin(binIdx=1)に対しては、2番のコンテキストを適用することができる。すなわち、1番目のbinに対しては2個のコンテキストが割り当てられることができ、2番目のbinに対しては1個のコンテキストが割り当てられることができ、ctxIncの値(0、1、2)により各々のコンテキストが区分されることができる。
【0205】
ここで、シングルツリーは、ルマ成分とクロマ成分とが同じコーディング構造(coding structure)でコーディングされることを意味する。コーディングユニットが同じコーディング構造で分割された後、コーディングユニットの大きさが特定閾値以下になってルマ成分とクロマ成分とが別途のツリー構造でコーディングされる場合、該当コーディングユニットに対してはデュアルツリーと見なして1番目のbinのコンテキストを決定することができる。すなわち、表4のように1番のコンテキストを割り当てることができる。
【0206】
あるいは、1番目のbinに対して変数treeTypeの値がSINGLE_TREEで割り当てられる場合は、0番のコンテキストを、そうでない場合は、1番のコンテキストを使用してコーディングできる。
【0207】
一方、採択されたLFNSTに対して、下記のような単純化方法が適用されることができる。
【0208】
(i)一例によって、順方向LFNSTに対する出力データ数を最大16個に限定できる。
【0209】
図10の(c)の場合、左上端に隣接する2個の4×4領域に各々4×4LFNSTが適用されることができ、このとき、最大32個のLFNST出力データが生成されることができる。順方向LFNSTに対する出力データ数を最大16に限定する場合、4×N/N×4(N≧16)ブロック(TUまたはCU)に対しても左上端に存在する1個の4×4領域に対してのみ4×4LFNSTを適用し、
図10の全てのブロックに対してLFNSTを1回のみ適用できる。これを介して映像コーディングに対する具現が単純になる。
【0210】
図12は、一例によって順方向LFNSTに対する出力データ数を最大16個に限定したことを示す図である。
図12のように、Nが16以上である4×NまたはN×4ブロックで最左上端4×4領域に対してLFNSTが適用されると、順方向LFNSTの出力データは、16個になる。
【0211】
(ii)一例によって、LFNSTが適用されない領域に対して追加的にゼロアウト(zero-out)を適用することができる。本文書において、ゼロアウトは、特定領域に属する全ての位置の値を値0で満たすことを意味することができる。すなわち、LFNSTによって変更されずに、順方向1次変換の結果を維持している領域に対してもゼロアウトを適用することができる。前述したように、LFNSTは、4×4LFNSTと8×8LFNSTとに区分されるため、下記のように2種類((ii)-(A)および(ii)-(B))にゼロアウトを区分することができる。
【0212】
(ii)-(A)4×4LFNSTが適用されるとき、4×4LFNSTが適用されない領域をゼロアウトすることができる。
図13は、一例によって4×4LFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【0213】
図13のように、4×4LFNSTが適用されるブロックに対して、すなわち、
図11の(a)、(b)、および(c)のブロックに対してLFNSTが適用されない領域まで全て0で満たされることができる。
【0214】
一方、
図13の(d)は、
図12のように順方向LFNSTの出力データの個数の最大値を16に限定した場合、4×4LFNSTが適用されない残りブロックに対してゼロアウトを実行したことを示す。
【0215】
(ii)-(B)8×8LFNSTが適用されるとき、8×8LFNSTが適用されない領域をゼロアウトすることができる。
図14は、一例によって8×8LFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【0216】
図14のように、8×8LFNSTが適用されるブロックに対して、すなわち、
図11の(d)および(e)のブロックに対してLFNSTが適用されない領域まで全て0で満たされることができる。
【0217】
(iii)上記(ii)で提示したゼロアウトによってLFNSTが適用されるとき、0で満たされる領域が変わることができる。したがって、上記(ii)で提案されたゼロアウトによって0でないデータが存在するかどうかを
図11のLFNSTの場合より広い領域に対してチェックできる。
【0218】
例えば、(ii)-(B)を適用する場合、
図11の(d)および(e)で値0で満たされる領域に追加して、
図14で追加的に0で満たされた領域まで0でないデータが存在するかどうかをチェックした後、0でないデータが存在しない場合にのみLFNSTインデックスに対するシグナリングを実行することができる。
【0219】
もちろん、上記(ii)で提案されたゼロアウトを適用しても、既存のLFNSTインデックスシグナリングと同じく0でないデータが存在するかどうかをチェックすることができる。すなわち、
図11に0で満たされたブロックに対して0でないデータが存在するかどうかをチェックしてLFNSTインデックスシグナリングを適用することができる。このような場合、エンコード装置にのみゼロアウトを実行し、デコード装置では該当ゼロアウトを仮定することなく、すなわち、
図11で明示的に0で表記された領域に対してのみ0でないデータが存在するかどうかのみをチェックしてLFNSTインデックスパージングを実行することができる。
【0220】
上記LFNSTに対する単純化方法((i)、(ii)-(A)、(ii)-(B)、(iii))の組み合わせを適用した多様な実施例が導出されることができる。もちろん、上記単純化方法に対する組み合わせは、下記の実施例に限定されるものではなく、任意の組み合わせをLFNSTに適用できる。
【0221】
実施例
【0222】
-順方向LFNSTに対する出力データ数を最大16個に限定→(i)
【0223】
-4×4LFNSTが適用されるとき、4×4LFNSTが適用されない領域を全てゼロアウト→(ii)-(A)
【0224】
-8×8LFNSTが適用されるとき、8×8LFNSTが適用されない領域を全てゼロアウト→(ii)-(B)
【0225】
-既存の値0で満たされる領域と追加的なゼロアウト((ii)-(A)、(ii)-(B))によって0で満たされる領域とに対しても、0でないデータが存在するかどうかをチェックした後、0でないデータが存在しない場合にのみLFNSTインデキシングシグナリング→(iii)
【0226】
上記実施例の場合、LFNSTが適用されるとき、0でない出力データが存在できる領域が左上端4×4領域内部に制限される。より詳細には、
図13の(a)および
図14の(a)の場合、スキャン順序上、8番目の位置が0でないデータが存在できる最後の位置になり、
図13の(b)および(d)ならびに
図14の(b)の場合、スキャン順序上、16番目の位置(すなわち、左上端4×4ブロックの右下端の最端位置)が0でないデータが存在できる最後の位置になる。
【0227】
したがって、LFNSTが適用されたとき、残差コーディング過程が許容されない位置(最後の位置を超えた位置)で0でないデータが存在するかどうかをチェックした後、LFNSTインデックスシグナリングが可能か否かが決定されることができる。
【0228】
(ii)で提案されたゼロアウト方式の場合、1次変換およびLFNSTを全て適用したときに最終的に発生するデータの数を減らすため、全変換過程を実行するときに要求される計算量を減らすことができる。すなわち、LFNSTが適用される場合、LFNSTが適用されない領域に存在する順方向1次変換出力データに対してもゼロアウトを適用するため、順方向1次変換を実行するときからゼロアウトになる領域に対するデータを生成する必要がない。したがって、該当のデータ生成に要求される演算量を節約することができる。(ii)で提案されたゼロアウト方式の追加的な効果を整理すると、下記の通りである。
【0229】
第一に、上記のように全体変換過程の実行に必要な計算量が低減される。
【0230】
特に、(ii)-(B)を適用する場合、最悪の場合に対する計算量が減少して変換過程を軽量化することができる。説明を敷延すると、一般的に大きいサイズの1次変換実行に多くの量の演算が要求され、(ii)-(B)を適用すると、順方向LFNST実行結果として導出されるデータの数を16個以下に減らすことができ、ブロック(TUまたはCU)全体の大きさが大きくなるほど、変換演算量低減効果はより増加する。
【0231】
第二に、変換過程全体に必要な演算量が減少して変換実行に必要な電力消費を減らすことができる。
【0232】
第三に、変換過程に伴われる遅延時間(latency)を減少させる。
【0233】
LFNSTのような2次変換は、既存の1次変換に計算量を追加することになるため、変換実行に伴われる全体の遅延時間を増加させる。特にイントラ予測の場合、予測過程で隣接ブロックの復元データが使われるため、エンコーディング時に2次変換による遅延時間増加が復元(reconstruction)までの遅延時間増加につながるようになって、イントラ予測エンコーディングの全体的な遅延時間増加につながることができる。
【0234】
しかしながら、(ii)で提示したゼロアウトを適用すると、LFNST適用時に1次変換実行の遅延時間を大幅減らすことができるため、変換実行全体に対する遅延時間は、そのまま維持され、または減るようになって、エンコード装置をより簡単に具現できる。
【0235】
一方、従来のイントラ予測は、現在符号化しようとするブロックを一つの符号化単位と見なして分割無しで符号化を実行した。しかしながら、ISP(Intra Sub-Partitions)コーディングは、現在符号化しようとするブロックを水平方向または垂直方向に分割してイントラ予測符号化を実行することを意味する。このとき、分割されたブロック単位で符号化/復号を実行して復元されたブロックを生成し、復元されたブロックは、次に分割されたブロックの参照ブロックとして使われることができる。一例によって、ISPコーディング時に一つのコーディングブロックが2個または4個のサブブロックに分割されてコーディングされることができ、ISPで一つのサブブロックは、隣接する左側または隣接する上側に位置するサブブロックの復元されたピクセル値を参照してイントラ予測が実行される。以下、使われる「コーディング」は、エンコード装置で実行されるコーディングとデコード装置で実行されるデコーディングとを全て含む概念で使われることができる。
【0236】
一方、以下では、LFNSTインデックスおよびMTSインデックスのシグナリング順序について考察する。
【0237】
一例によって、残差コーディングでシグナリングされるLFNSTインデックスは、最後の0ではない係数位置に対するコーディング位置の次にコーディングされることができ、MTSインデックスは、LFNSTインデックスの直後にコーディングされることができる。このような構成の場合、変換ユニットごとにLFNSTインデックスがシグナリングされることができる。あるいは、残差コーディングでシグナリングされなくても、LFNSTインデックスは、最後の有効係数位置に対するコーディングの次にコーディングされることができ、MTSインデックスは、LFNSTインデックスの次にコーディングされることができる。
【0238】
一例に係る残差コーディングのシンタックスは、下記の通りである。
【0239】
【0240】
【0241】
表5に示す主要変数の意味は、下記の通りである。
【0242】
1.cbWidth、cbHeight:現コーディングブロック(Coding Block)の幅および高さ
【0243】
2.log2TbWidth、log2TbHeight:現変換ブロック(Transform Block)の幅および高さに対するベース-2のログ値であり、ゼロアウトが反映されて0ではない係数(non-zero coefficient)が存在できる左上端領域に縮小されることができる。
【0244】
3.sps_lfnst_enabled_flag:LFNSTの適用(enable)が可能か否かを示すフラグであって、フラグ値が0である場合は、LFNSTが適用不可であることを示し、フラグ値が1である場合は、LFNSTが適用可能であることを示す。シーケンスパラメータセット(Sequence Parameter Set;SPS)において定義されている。
【0245】
4.CuPredMode[chType][x0][y0]:変数chTypeおよび位置(x0、y0)に対応する予測モード、chTypeは、値0および1を有することができ、0はルマ成分を示し、1はクロマ成分を示す。位置(x0、y0)は、ピクチャ上における位置を示し、CuPredMode[chType][x0][y0]の値では、MODE_INTRA(イントラ予測)およびMODE_INTER(インター予測)が可能である。
【0246】
5.IntraSubPartitionsSplit[x0][y0]:位置(x0、y0)に対する内容は、上記4と同じである。位置(x0、y0)においてどのようなISP分割が適用されたかを示し、ISP_NO_SPLITは、位置(x0、y0)に該当するコーディングユニットがパーティションブロックに分割されないことを示す。
【0247】
6.intra_mip_flag[x0][y0]:位置(x0、y0)に対する内容は、上記4と同じである。intra_mip_flagは、MIP(Matrix-based Intra Prediction)予測モードが適用されたかどうかを示すフラグである。フラグ値が0である場合は、MIPが適用不可であることを示し、フラグ値が1である場合は、MIPが適用されることを示す。
【0248】
7.cIdx:値0は、ルマを示し、値1および値2は、各々、クロマ成分であるCb、Crを示す。
【0249】
8.treeType:シングルツリー(single-tree)およびデュアルツリー(dual-tree)などを指す(SINGLE_TREE:シングルツリー、DUAL_TREE_LUMA:ルマ成分に対するデュアルツリー、DUAL_TREE_CHROMA:クロマ成分に対するデュアルツリー)
【0250】
9.tu_cbf_cb[x0][y0]:位置(x0、y0)に対する内容は、上記4と同じである。Cb成分に対するCBF(Coded Block Flag)を示す。その値が0である場合は、0でない係数がCb成分に対する該当変換ユニットに存在しないことを意味し、1である場合は、0でない係数がCb成分に対する該当変換ユニットに存在するということを示す。
【0251】
10.lastSubBlock:最後の有効係数(last non-zero coefficient)が位置するサブブロック(Sub-Block、Coefficient Group(CG))のスキャン順序上の位置を示す。0は、DC成分が含まれているサブブロックを指し、0より大きい場合は、DC成分が含まれているサブブロックでない。
【0252】
11.lastScanPos:最後の有効係数が一サブブロック内部でスキャン順序上どの位置にあるかを示す。一つのサブブロックが16個の位置で構成されている場合、0から15までの値が可能である。
【0253】
12.lfnst_idx[x0][y0]:パージングしようとするLFNSTインデックスシンタックスエレメントである。パージングされない場合、値0と類推される。すなわち、デフォルト値が0に設定され、LFNSTを適用しないことを示す。
【0254】
13.LastSignificantCoeffX、LastSignificantCoeffY:最後の有効係数が変換ブロック内に位置するx座標およびy座標を示す。x座標は、0から始めて左側から右側へ増加し、y座標は0から始めて上側から下側に増加する。2つの変数の値が全て0である場合は、最後の有効係数がDCに位置することを意味する。
【0255】
14.cu_sbt_flag:現在VVC標準に含まれているサブブロック変換(SubBlock Transform、SBT)が適用可能かどうかを示すフラグであって、フラグ値が0である場合は、SBTが適用不可であることを示し、フラグ値が1である場合は、SBTが適用されることを示す。
【0256】
15.sps_explicit_mts_inter_enabled_flag、sps_explicit_mts_intra_enabled_flag:各々インターCUおよびイントラCUに対して明示的なMTSが適用されたかどうかを示すフラグであって、該当フラグ値が0である場合は、インターCUまたはイントラCUに対してMTSが適用不可であることを示し、1である場合は、適用可能であることを示す。
【0257】
16.tu_mts_idx[x0][y0]:パージングしようとするMTSインデックスシンタックスエレメントである。パージングされない場合、値0と類推される。すなわち、デフォルト値が0に設定され、水平方向および垂直方向に対して全てDCT-2が適用されることを示す。
【0258】
表5のように、シングルツリーである場合は、ルマに対する最後の有効係数位置条件のみを有してLFNSTインデックスのシグナリングが可能か否かを決定することができる。すなわち、最後の有効係数位置がDCでなく、最後の有効係数が左上端サブブロック(CG)、例えば、4×4ブロック、内部に存在する場合、LFNSTインデックスがシグナリングされる。このとき、4×4変換ブロックおよび8×8変換ブロックの場合は、左上端サブブロック内部の0から7までの位置に最後の有効係数が存在する場合のみ(してこそ)LFNSTインデックスがシグナリングされる。
【0259】
デュアルツリーの場合は、ルマおよびクロマは、各々、独立してLFNSTインデックスがシグナリングされ、クロマの場合は、Cb成分に対してのみ最後の有効係数位置条件を適用してLFNSTインデックスをシグナリングすることができる。Cr成分に対しては該当条件をチェックせず、Cbに対するCBF値が0である場合は、Cr成分に対して最後の有効係数位置条件を適用してLFNSTインデックスをシグナリングすることができる。
【0260】
表5の「Min(log2TbWidth、log2TbHeight)>=2」は、「Min(tbWidth、tbHeight)>=4」で表現されることができ、「Min(log2TbWidth、log2TbHeight)>=4」は、「Min(tbWidth、tbHeight)>=16」で表現されることができる。
【0261】
表5において、log2ZoTbWidthおよびlog2ZoTbHeightは、各々、ゼロアウトにより最後の有効係数が存在できる左上端領域に対する幅および高さのベースが2である(base-2)ログ値を意味する。
【0262】
表5のように、log2ZoTbWidthおよびlog2ZoTbHeight値は、二箇所でアップデートされることができる。1番目は、MTSインデックスまたはLFNSTインデックス値がパージングされる前であり、2番目は、MTSインデックスのパージング後である。
【0263】
1番目のアップデートは、MTSインデックス(tu_mts_idx[x0][y0])値がパージングされる前であるため、MTSインデックス値にかかわらずlog2ZoTbWidthおよびlog2ZoTbHeightを設定することができる。
【0264】
MTSインデックスがパージングされた後には、MTSインデックス値が0より大きい場合(DST-7/DCT-8組み合わせである場合)に対して、log2ZoTbWidthおよびlog2ZoTbHeightを設定する。1次変換で水平方向および垂直方向に対して各々独立してDST-7/DCT-8を適用する場合、各方向に対して行または列ごとに最大16個までの有効係数が存在できる。すなわち、長さ32以上のDST-7/DCT-8を適用した後、左側または上側から行または列ごとに最大16個の変換係数が導出されることができる。したがって、2次元ブロックに対しては水平方向および垂直方向の両方に対してDST-7/DCT-8が適用されるとき、最大左上端16×16領域までのみ有効係数が存在できる。
【0265】
また、現在1次変換で水平方向および垂直方向に対して各々独立してDCT-2が適用される場合、各方向に対して行または列ごとに最大32個までの有効係数が存在できる。すなわち、長さ64以上のDCT-2を適用するときは、左側または上側から行または列ごとに最大32個の変換係数が導出されることができる。したがって、2次元ブロックに対しては水平方向および垂直方向の両方に対してDCT-2が適用されるとき、最大左上端32×32領域までのみ有効係数が存在できる。
【0266】
また、水平方向および垂直方向に対して、一方ではDST-7/DCT-8が適用され、他方ではDCT-2が適用されるとき、前者の方向では16個の有効係数が存在でき、後者の方向では32個の有効係数が存在できる。例えば、64×8変換ブロックであり、水平方向にはDCT-2が適用され、垂直方向にはDST-7が適用される場合(暗黙的MTSが適用される状況で発生し得る)、最大左上端32×8領域で有効係数が存在できる。
【0267】
表5のようにlog2ZoTbWidthおよびlog2ZoTbHeightが二箇所でアップデートされる場合、すなわち、MTSインデックスパージング前にアップデートされる場合、以下の表のように、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixの範囲がlog2ZoTbWidthおよびlog2ZoTbHeightにより決められることができる。
【0268】
【0269】
また、このような場合、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixに対する二進化過程で、log2ZoTbWidthおよびlog2TbHeight値を反映して、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixの最大値を設定することができる。
【0270】
【0271】
一方、一例によって、ISPモードであり、LFNSTが適用される場合、表5のシグナリングを適用したとき、表8のようにスペックテキストが構成されることができる。表5と比較したとき、ISPモードでない場合に対してのみLFNSTインデックスをシグナリングするという条件(表5のIntraSubPartitionsSplit[x0][y0]==ISP_NO_SPLIT)が削除された。
【0272】
シングルツリーである場合、ルマであるとき(cIdx=0であるとき)に送信したLFNSTインデックスをクロマであるときに再使用する場合は、有効係数が存在する1番目のISPパーティションブロックに対して送信されたLFNSTインデックスをクロマ変換ブロックに適用できる。あるいは、シングルツリーであるとしても、クロマ成分である場合に対して、ルマ成分とは別途にLFNSTインデックスをシグナリングすることができる。表8に記載された変数に関する説明は、表5の通りである。
【0273】
【0274】
一方、一例によって、LFNSTインデックスおよび/またはMTSインデックスは、コーディングユニットレベルでシグナリングされることができる。LFNSTインデックスは、前述したように、0、1、2の3つの値を有することができ、0は、LFNSTを適用しないことを指し、1および2は、選択されたLFNSTセットに含まれている2個のLFNSTカーネル候補のうちの各々1番目の候補および2番目の候補を指示する。LFNSTインデックスは、トランケイテッド単項(ユナリ)二進化(truncated unary binarization)を介してコーディングされ、値0、1、2は、各々、binストリング0、10、11でコーディングされることができる。
【0275】
一例によると、1次変換で水平方向および垂直方向の両方に対してDCT-2が適用されるときにのみLFNSTが適用されることができる。したがって、MTSインデックスをLFNSTインデックスシグナリング後にシグナリングする場合、LFNSTインデックス値が0である場合に限ってのみMTSインデックスをシグナリングすることができ、LFNSTインデックスが0でない場合には、MTSインデックスをシグナリングせずに水平方向および垂直方向の両方にDCT-2を適用して1次変換を実行することができる。
【0276】
MTSインデックス値は、0、1、2、3、4の値を有することができ、0、1、2、3、4は、各々、水平方向および垂直方向に対してDCT-2/DCT-2、DST-7/DST-7、DCT-8/DST-7、DST-7/DCT-8、DCT-8/DCT-8が適用されることを指示することができる。また、MTSインデックスは、トランケイテッド単項二進化を介してコーディングされることができ、上記値0、1、2、3、4は、各々、binストリング0、10、110、1110、1111でコーディングされることができる。
【0277】
LFNSTインデックスおよびMTSインデックスは、コーディングユニットレベルでシグナリングされることができ、MTSインデックスをコーディングユニットレベルでLFNSTインデックス以後に続いてコーディングできる。これに対するコーディングユニットシンタックステーブルは、以下の通りである。
【0278】
【0279】
表9によると、lfnst_idx[x0][y0]をシグナリングする条件において、既存のtu_mts_idx[x0][y0]の値が0であるかをチェックする条件(すなわち、水平方向および垂直方向に対して両方ともDCT-2であるかどうかをチェックすること)は、transform_skip_flag[x0][y0]の値が0であるかをチェックする条件(!transform_skip_flag[x0][y0])に変更された。transform_skip_flag[x0][y0]は、コーディングユニットが、変換が省略される変換スキップモードでコーディングされたかどうかを示し、上記フラグは、MTSインデックスおよびLFNSTインデックスより先にシグナリングされる。すなわち、tu_mtx_idx[x0][y0]の値をシグナリングする前にlfnst_idx[x0][y0]をシグナリングするため、transform_skip_flag[x0][y0]の値に対する条件のみをチェックすることができる。
【0280】
表9に示すように、tu_mts_idx[x0][y0]をコーディングするとき、様々な条件がチェックされ、前述したように、lfnst_idx[x0][y0]の値が0である場合にのみtu_mts_idx[x0][y0]がシグナリングされる。
【0281】
また、tu_cbf_luma[x0][y0]は、ルマ成分に対して有効係数が存在するかどうかを示すフラグであり、cbWidthおよびcbHeightは、各々、ルマ成分に対するコーディングユニットの幅および高さを示す。
【0282】
また、表9において、(IntraSubPartitionsSplit[x0][y0]==ISP_NO_SPLIT)は、ISPモードでない場合を示し、(!cu_sbt_flag)は、SBTが適用されない場合を示す。
【0283】
表9によると、ルマ成分に対するコーディングユニットの幅および高さが両方とも32以下であるとき、tu_mts_idx[x0][y0]がシグナリングされ、すなわち、MTS適用が可能か否かがルマ成分に対するコーディングユニットの幅および高さにより決定される。
【0284】
他の例によって、変換ブロックタイリング(TU tiling)が発生する場合(例えば、最大変換の大きさが32に設定された場合、64×64コーディングユニットは、4個の32×32変換ブロックに分割されてコーディングされる)、各変換ブロックの大きさを基準にしてMTSインデックスがシグナリングされることができる。例えば、変換ブロックの幅および高さが両方とも32以下であるとき、コーディングユニット内の全ての変換ブロックに対しては同じMTSインデックス値が適用されて同じ1次変換が適用されることができる。また、変換ブロックタイリングが発生する場合、表9のtu_cbf_luma[x0][y0]の値は、左上端変換ブロックに対するCBF値であり、または全ての変換ブロックに対して一つの変換ブロックでも該当CBF値が1である場合、1に設定されることができる。
【0285】
一例によって、現ブロックにISPモードが適用される場合、LFNSTを適用することができ、この場合、表9は、表10のように変更されることができる。
【0286】
【0287】
表10のように、ISPモードである場合にも(IntraSubPartitionsSplitType!=ISP_NO_SPLIT)lfnst_idx[x0][y0]をシグナリングするように構成でき、全てのISPパーティションブロックに対して同じLFNSTインデックス値が適用されることができる。
【0288】
また、表10のように、tu_mts_idx[x0][y0]は、ISPモードでない場合にのみシグナリングされることができるため、MTSインデックスコーディング部分は、表9と同じである。
【0289】
表9および表10のように、MTSインデックスをLFNSTインデックスの直後にシグナリングする場合、残差コーディングを実行するとき、1次変換に関する情報を知ることができない。すなわち、MTSインデックスが残差コーディング以後にシグナリングされる。したがって、残差コーディングパートで長さ32のDST-7またはDCT-8に対して16個の係数のみを残してゼロアウトを実行する部分は、以下の表11のように変更されることができる。
【0290】
【0291】
【0292】
表11のようにlog2ZoTbWidthおよびlog2ZoTbHeightを決定する過程で(ここで、log2ZoTbWidthおよびlog2ZoTbHeightは、各々、ゼロアウトが実行された後に残った左上端領域に対する幅および高さのベース-2(Base-2)ログ値を示す)、tu_mts_idx[x0][y0]の値をチェックする部分が省略されることができる。
【0293】
表11のlast_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixに対する二進化は、表7のようにlog2ZoTbWidthおよびlog2ZoTbHeightに基づいて決定されることができる。
【0294】
また、表11のように、残差コーディングでlog2ZoTbWidthおよびlog2ZoTbHeightを決定するとき、sps_mts_enable_flagをチェックする条件が追加されることができる。
【0295】
表7のTRは、トランケイテッドライス二進化(Truncated Rice binarization)方式を示し、表7で定義されたcMaxおよびcRiceParamに基づいて、最後の有効係数情報が二進化されることができる。
【0296】
一例によって、ルマ変換ブロックに対する最後の有効係数位置に関する情報を残差コーディング過程で記録しておくと、表12のようにMTSインデックスをシグナリングすることもできる。
【0297】
【0298】
表12において、LumaLastSignificantCoeffXおよびLumaLastSignificantCoeffYは、各々、ルマ変換ブロックに対する最後の有効係数位置のX座標およびY座標を示す。LumaLastSignificantCoeffXおよびLumaLastSignificantCoeffYが全て16より小さくなければならないという条件が表12に追加され、2つのうちの1つでも16以上になると、水平方向および垂直方向の両方ともDCT-2が適用されるため、tu_mts_idx[x0][y0]に対するシグナリングを省略し、水平方向および垂直方向に対して全てDCT-2が適用されると類推できる。
【0299】
LumaLastSignificantCoeffXおよびLumaLastSignificantCoeffYが全て16より小さいということは、最後の有効係数が左上端16×16領域内に存在することを意味し、現在VVC標準で長さ32のDST-7またはDCT-8が適用される場合、最左側または最上部から16個の変換係数のみを残すゼロアウトが適用された可能性が存在することを示す。したがって、tu_mts_idx[x0][y0]をシグナリングして1次変換のために使われた変換カーネルを指示することができる。
【0300】
一方、他の例によって、コーディングユニットシンタックステーブル、変換ユニットシンタックステーブル、および残差コーディングシンタックステーブルは、以下の表の通りである。表13によると、MTSインデックスは、変換ユニットレベルからコーディングユニットレベルのシンタックスに移動し、LFNSTインデックスシグナリング以後にシグナリングされる。また、コーディングユニットにISPが適用される場合、LFNSTを許容しない制限条件は除去される。コーディングユニットにISPが適用される場合、LFNSTを許容しない制限条件が除去されるため、LFNSTを全てのイントラ予測ブロックに適用できる。また、MTSインデックスおよびLFNSTインデックスは、両方ともコーディングユニットレベルの最後の部分において条件付きでシグナリングされる。
【0301】
【0302】
【0303】
【0304】
表13において、MtsZeroOutSigCoeffFlagは、最初に1に設定され、この値は、表15の残差コーディングで変更されることができる。変数MtsZeroOutSigCoeffFlagは、ゼロアウトによって0で満たされるべき領域(LastSignificantCoeffX>15||LastSignificantCoeffY>15)に有効係数が存在すると、その値が1から0へ変更され、この場合、表15のように、MTSインデックスはシグナリングされない。
【0305】
一方、表13のように、tu_cbf_luma[x0][y0]が0である場合にはmts_idx[x0][y0]コーディングを省略することができる。すなわち、ルマ成分のCBF値が0である場合は、変換を適用しないため、MTSインデックスをシグナリングする必要がなく、MTSインデックスコーディングを省略することができる。
【0306】
一例によって、上記技術的特徴は、他の条件付き構文で具現されることができる。例えば、MTSが実行された後、現ブロックのDC領域を除外した領域に有効係数が存在するかどうかを示す変数を導出することができ、上記変数がDC領域を除外した領域に有効係数が存在することを示す場合、MTSインデックスをシグナリングすることができる。すなわち、現ブロックのDC領域を除外した領域に有効係数が存在するということは、tu_cbf_luma[x0][y0]の値が1であることを示し、この場合、MTSインデックスをシグナリングすることができる。
【0307】
上記変数は、MtsDcOnlyで表すことができ、変数MtsDcOnlyは、コーディングユニットレベルで最初に1に設定された後、残差コーディングレベルで現ブロックのDC領域を除外した領域に有効係数が存在することを示す場合、その値が0に変更されることができる。変数MtsDcOnlyが0である場合、MTSインデックスがシグナリングされるように映像情報が構成されることができる。
【0308】
tu_cbf_luma[x0][y0]が0である場合は、表14の変換ユニットレベルで残差コーディングシンタックスの呼び出しが行われないため、変数MtsDcOnlyは、初期値1を維持する。このような場合、変数MtsDcOnlyが0に変更されなかったため、MTSインデックスがシグナリングされないように映像情報が構成されることができる。すなわち、MTSインデックスは、パージングおよびシグナリングされない。
【0309】
一方、デコード装置は、表15の変数MtsZeroOutSigCoeffFlagを導出するために変換係数のカラーインデックス(cIdx)を判断することができる。カラーインデックス(cIdx)が0であることは、ルマ成分を意味する。
【0310】
一例によって、現ブロックのルマ成分にのみMTSが適用されることができるため、デコード装置は、MTSインデックスのパージングが可能か否かを決定する変数MtsZeroOutSigCoeffFlagを導出するとき、カラーインデックスがルマであるかどうかを判断することができる。
【0311】
変数MtsZeroOutSigCoeffFlagは、MTS適用時にゼロアウトが実行されたかどうかを示す変数であって、MTS実行後にゼロアウトにより最後の有効係数が存在しうる左上端領域、すなわち、左上端16×16領域以外の領域に変換係数が存在するかどうかを示す。変数MtsZeroOutSigCoeffFlagは、表13のようにコーディングユニットレベルで最初に1に設定され(MtsZeroOutSigCoeffFlag=1)、16×16領域以外の領域に変換係数が存在すると、表15のように残差コーディングレベルでその値が1から0へ変更されることができる(MtsZeroOutSigCoeffFlag=0)。変数MtsZeroOutSigCoeffFlagの値が0である場合、MTSインデックスはシグナリングされない。
【0312】
表15のように、残差コーディングレベルで、MTSに伴われるゼロアウトが実行されたかどうかによって0でない変換係数が存在しうる非(ノン)ゼロアウト領域が設定されることができ、この場合にも、カラーインデックス(cIdx)が0である場合、非ゼロアウト領域は、現ブロックの左上端16×16領域に設定されることができる。
【0313】
このように、MTSインデックスのパージングが可能か否かを決定する変数を導出するときは、カラー成分がルマであるかまたはクロマであるかを判断するが、現ブロックのルマ成分およびクロマ成分の両方にLFNSTが適用されることができるため、LFNSTインデックスのパージングが可能か否かを決定する変数を導出するときはカラー成分を判断しない。
【0314】
例えば、表13には、LFNST適用時にゼロアウトが実行されたことを示すことができる変数LfnstZeroOutSigCoeffFlagが示されている。変数LfnstZeroOutSigCoeffFlagは、現ブロックの左上端第1の領域を除外した第2の領域に有効係数が存在するかどうかを示し、この値は、最初に1に設定され、第2の領域に有効係数が存在すると、その値は、0に変更されることができる。最初に設定された変数LfnstZeroOutSigCoeffFlag値が1に維持される場合のみ(てこそ)LFNSTインデックスがパージングされることができる。変数LfnstZeroOutSigCoeffFlag値が1であるかどうかを判断および導出するとき、現ブロックのルマ成分およびクロマ成分の両方にLFNSTが適用されることができるため、現ブロックのカラーインデックスは判断されない。
【0315】
図15は、一実施例によるクロマブロックのイントラ予測モード導出時に適用されることができるCCLMを説明する図である。
【0316】
本明細書において、「参照サンプルテンプレート」は、現クロマブロックを予測するための現クロマブロック周辺の参照サンプルの集合を意味することができる。参照サンプルテンプレートは、予め定義されることができ、参照サンプルテンプレートに関する情報がエンコード装置200からデコード装置300にシグナリングされることもできる。
【0317】
図15を参照すると、現クロマブロックである4×4ブロックの周辺に1ラインで陰影表示されたサンプルの集合は、参照サンプルテンプレートを示す。参照サンプルテンプレートが1ラインの参照サンプルで構成され、それに対して、参照サンプルテンプレートと対応するルマ領域内の参照サンプル領域は、2ラインで構成されることを
図15で確認することができる。
【0318】
一実施例において、JVET(Joint Video Exploration Team)で使われるJEM(Joint Exploration TEST Model)でクロマ映像の画面内の符号化を実行するとき、CCLM(Cross Component Linear Model)を利用することができる。CCLMは、クロマ映像の画素値を復元された輝度映像の画素値で予測する方法であって、輝度映像とクロマ映像との間の相関度(correlation)が高いという特性に基づく。
【0319】
CbおよびCrクロマ映像のCCLM予測は、以下の数式に基づいて行われる。
【0320】
【0321】
ここで、PredC(i、j)は、予測されるCbまたはCrクロマ映像を意味し、RecL’(i、j)は、クロマブロックサイズに調節された復元された輝度映像を意味し、(i、j)は、画素の座標を意味する。カラーフォーマット(color format)4:2:0では、輝度映像の大きさが色彩映像の2倍であるため、ダウンサンプリング(down sampling)を介してクロマブロックサイズのRecL’を生成すべきであり、したがって、クロマ映像Predc(i、j)に使われる輝度映像の画素は、RecL(2i、2j)の他に周辺画素まで全て考慮して使用することができる。上記RecL’(i、j)は、ダウンサンプリングされたルマサンプルを示すことができる。
【0322】
例えば、上記RecL’(i、j)は、以下の数式のように6個の周辺画素を利用して導出されることができる。
【0323】
【0324】
また、α、βは、
図12の陰影表示された領域のように、CbまたはCrクロマブロック周辺テンプレートと輝度ブロック周辺テンプレートとの間のcross-correlationおよび平均値の差を示す。α、βは、例えば、以下の数式13の通りである。
【0325】
【0326】
ここで、L(n)は、現在のクロマ映像に対応するルマブロックの周辺参照サンプルおよび/または左側周辺サンプルを意味し、C(n)は、現在符号化が適用される現クロマブロックの周辺参照サンプルおよび/または左側周辺サンプルを意味し、(i、j)は、画素位置を意味する。また、L(n)は、上記現ルマブロックのダウンサンプリング(down-sampled)された上側周辺サンプルおよび/または左側周辺サンプルを示すことができる。また、Nは、CCLMパラメータ計算に使われた画素対(pair、輝度およびクロマ)値の総数を示すことができ、上記現クロマブロックの幅(width)および高さ(height)のうちの小さい値の2倍である値を示すことができる。
【0327】
一方、ピクチャは、コーディングツリーユニット(CTUs)のシーケンスに分割される(divided into a sequence)ことができる。CTUは、コーディングツリーブロック(CTB)に対応することができる。あるいは、CTUは、ルマサンプルのコーディングツリーブロックと、対応するクロマサンプルのコーディングツリーブロックと、を含むことができる。ツリータイプは、ルマブロックと対応するクロマブロックが個別の分割構造を有するかどうかによって、シングルツリー(SINGLE_TREE)またはデュアルツリー(DUAL_TREE)として区分されることができる。クロマブロックがルマブロックと同じ分割構造を有する場合はシングルツリーで表し、クロマ成分ブロックがルマ成分ブロックと異なる分割構造を有する場合はデュアルツリーで表すことができる。
【0328】
一方、一例によって、クロマ変換ブロックにLFNSTを適用するとき、コロケート(同一位置の)ルマ変換ブロック(collocated Luma transform block)に関する情報を参照する必要がある。
【0329】
該当部分に対する既存のスペックテキストを表で表すと、以下の通りである。
【0330】
【0331】
表16に示すように、現在のイントラ予測モードがCCLMモードであるとき、コロケートルマ変換ブロックに対するイントラ予測モード値を使用して該当クロマ変換ブロックに対する変数値predModeIntraが決定される(イタリック体で表示された部分)。このようにルマ変換ブロックのイントラ予測モード値(predModeIntraの値)は、以後LFNSTセットを決定するときに使われることができる。
【0332】
しかしながら、本変換過程の入力値で入力される変数nTbWおよび変数nTbHは、現変換ブロック(the current transform block)に対する幅および高さを示す。現ブロックがルマ変換ブロックである場合、変数nTbWおよび変数nTbHは、ルマ変換ブロックに対する幅および高さを示し、現ブロックがクロマ変換ブロックである場合、変数nTbWおよび変数nTbHは、クロマ変換ブロックに対する幅および高さを示す。
【0333】
このとき、表16のイタリック体の部分内の変数nTbWおよび変数nTbHは、カラーフォーマットを反映しないクロマ変換ブロックの幅および高さを示しているため、クロマ変換ブロックに対応するルマ変換ブロックの参照位置を正確に指示していない。したがって、表16のイタリック体部分は、以下の表のように修正されることができる。
【0334】
【0335】
表17に示すように、nTbW(/2)およびnTbH(/2)は、各々、(nTbW*SubWidthC)/2および(nTbH*SubHeightC)/2に変更された。xTbYおよびyTbYは、各々、ルマに対する現ピクチャ内における位置を示し(the top-left sample of the current luma transform block relative to the top left luma sample of the current picture)、nTbWおよびnTbHは、現在コーディングする変換ブロックの幅および高さを示すことができる(a variable nTbW specifying the width of the current transform block, a variable nTbH specifying the height of the current transform block)。
【0336】
現在コーディングする変換ブロックがクロマに対する(CbまたはCrに対する)変換ブロックである場合、nTbWおよびnTbHは、各々、クロマ変換ブロックに対する幅および高さになる。したがって、現在コーディングする変換ブロックがクロマ変換ブロックである場合(cIdx>0)、コロケートルマ変換ブロック(collocated Luma transform block)に対する参照位置を求めるとき、該当ルマ変換ブロックに対する幅および高さで該当参照位置を求めなければならない。表17のSubWidthCおよびSubHeightCは、カラーフォーマット(Chroma format、例えば、4:2:0、4:2:2、4:4:4)によって設定される値であり、より具体的には、各々、ルマ成分およびクロマ成分の幅の比率および高さの比率を示すため(以下の表18を参照)、クロマ変換ブロックの場合、(nTbW*SubWidthC)および(nTbH*SubHeightC)は、各々、コロケートルマ変換ブロックに対する幅および高さに対する値になることができる。
【0337】
結果的に、値xTbY+(nTbW*SubWidthC)/2および値yTbY+(nTbH*SubHeightC)/2は、現ピクチャの左上端位置を基準とするコロケートルマ変換ブロック内部のセンタ位置値を指示するため、より明確にはコロケートルマ変換ブロックを指すことができる。
【0338】
【0339】
表17において、predModeIntra変数は、イントラ予測モード値を指し、変数値predModeIntraがINTRA_LT_CCLM、INTRA_L_CCLM、INTRA_T_CCLMであることは、現在の変換ブロックがクロマに対する変換ブロックであることを示す。一例によって、現在VVC標準でINTRA_LT_CCLM、INTRA_L_CCLM、INTRA_T_CCLMは、イントラ予測モード値のうち、各々、81、82、83のモード値に該当する。したがって、表17のように、値xTbY+(nTbW*SubWidthC)/2および値yTbY+(nTbH*SubHeightC)/2を使用して、コロケートルマ変換ブロックで参照位置を求めなければならない。
【0340】
表17のように、predModeIntra変数値は、intra_mip_flag[xTbY+(nTbW*SubWidthC)/2][yTbY+(nTbH*SubHeightC)/2]変数およびCuPredMode[0][xTbY+(nTbW*SubWidthC)/2][yTbY+(nTbH*SubHeightC)/2]変数を共に考慮してその値が更新される。
【0341】
変数intra_mip_flagは、現変換ブロック(または、コーディングユニット)がMIP(Matrix-based Intra Prediction)方式でコーディングされたかを示す変数であり、intra_mip_flag[x][y]は、現ピクチャ内で左上端位置を(0、0)としたとき、ルマ成分を基準にして(x、y)座標に該当する位置に対するMIP適用が可能か否かを指示するフラグ値を示す。x座標およびy座標は、各々、左側から右側へ、上側から下側へ増加する。MIP適用が可能か否かを示すフラグ値が1であるときは、MIPが適用されたことを示す。MIP適用が可能か否かを示すフラグ値が0であるときは、MIPが適用されないことを示す。MIPは、ルマブロックに対してのみ適用されることができる。
【0342】
表17の修正された内容部分によると、コロケートルマ変換ブロック内部のintra_mip_flag[xTbY+(nTbW*SubWidthC)/2][yTbY+(nTbH*SubHeightC)/2]の値が1であるときは、predModeIntra値を平面モードに設定する(INTRA_PLANAR)。
【0343】
変数値CuPredMode[0][xTbY+(nTbW*SubWidthC)/2][yTbY+(nTbH*SubHeightC)/2]は、ルマ成分に対して現ピクチャの左上端位置を(0、0)としたとき、(xTbY+(nTbW*SubWidthC)/2、yTbY+(nTbH*SubHeightC)/2)座標に該当する予測モード値を示す。予測モード値は、MODE_INTRA、MODE_IBC、MODE_PLT、MODE_INTER値を有することができ、各々、イントラ予測モード、IBC(Intra Block Copy)予測モード、PLT(Palette)コーディングモード、インター予測モードを示す。表17によると、変数値CuPredMode[0][xTbY+(nTbW*SubWidthC)/2][yTbY+(nTbH*SubHeightC)/2]がMODE_IBCまたはMODE_PLTである場合、変数predModeIntraの値は、DCモードに設定される。上記2つの場合でない場合、変数predModeIntraの値は、IntraPredModeY[xTbY+(nTbW*SubWidthC)/2][yTbY+(nTbH*SubHeightC)/2]の値に(コロケートルマ変換ブロック内部の中心位置に該当するイントラ予測モード値に)設定される。
【0344】
一例によって、表17で更新された値predModeIntraに基づいて以下の表のように広角イントラ予測(wide angle intra prediction)が可能か否かを考慮して変数predModeIntraの値をもう一回更新できる。
【0345】
【0346】
表19で提示されたマッピング過程の入力値であるpredModeIntra、nTbW、nTbHは、各々、表17で更新された変数predModeIntraの値および表17で参照されるnTbW、nTbHと同じである。
【0347】
表19において、nCbWおよびnCbHは、各々、該当変換ブロックに対応するコーディングブロックの幅および高さを指し、IntraSubPartitionsSplitType変数は、ISPモードが適用されたかどうかを示す。IntraSubPartitionsSplitTypeがISP_NO_SPLITである場合は、ISPによってコーディングユニットが分割されていないことを(すなわち、ISPモードが適用されていないことを)示す。変数IntraSubPartitionsSplitTypeの値がISP_NO_SPLITでない場合は、ISPモードが適用されてコーディングユニットが2個または4個のパーティションブロックに分割されたことを示す。表19において、cIdxは、カラー成分(color component)を指すインデックスであり、cIdxの値が0である場合は、ルマブロックを示し、cIdxの値が0でない場合は、クロマブロックを示す。表19のマッピング過程を介して出力されるpredModeIntraの値は、広角イントラ予測(WAIP)モードの適用が可能か否かを考慮して更新された値である。
【0348】
表19を介して更新されたpredModeIntraの値に対して以下の表のようなマッピング関係を介してLFNSTセットが決定されることができる。
【0349】
【0350】
上記表において、lfnstTrSetIdxは、LFNSTセットを指すインデックスを示し、0から3までの値を有するため、合計4個のLFNSTセットが構成されたことを確認することができる。各LFNSTセットは、2個の変換カーネル、すなわち、LFNSTカーネルで構成されることができ(LFNSTが適用される領域によって、該当変換カーネルは、順方向基準にして16×16行列ないし16×48行列になることができる)、該当2個の変換カーネルのうちのどの変換カーネルが適用されるかは、LFNSTインデックスのシグナリングを介して指定できる。また、LFNSTインデックスを介してLFNSTの適用が可能か否かも指定できる。現在VVC標準でLFNSTインデックスは値0、1、2を有することができ、0は、LFNSTを適用しないということを指し、1および2は、各々該当2個の変換カーネルを示す。
【0351】
以下の図面は、本明細書の具体的な一例を説明するために作成された。図面に記載された具体的な装置の名称や具体的な信号/メッセージ/フィールドの名称は、例示的に提示されたものであるため、本明細書の技術的特徴は、以下の図面に使われた具体的な名称に制限されない。
【0352】
図16は、本文書の一実施例によるビデオデコード装置の動作を示す流れ図である。
【0353】
図16に開示された各ステップは、
図4ないし
図15で詳述した内容のうちの一部に基づく。したがって、
図3ないし
図15で詳述した内容と重複する具体的な内容は、説明を省略または簡単にする。
【0354】
一実施例によるデコード装置300は、ビットストリームからイントラ予測モード情報およびLFNSTインデックスを取得することができる(S1610)。
【0355】
イントラ予測モード情報は、現ブロックの周辺ブロック(例えば、左側および/または上側周辺ブロック)のイントラ予測モードおよび追加的な候補モードに基づいて導出されたMPM(Most Probable Mode)リスト内のmpm候補のうちの一つを指示するmpmインデックスまたは上記mpm候補に含まれない残りのイントラ予測モードのうちの一つを指示する残りの(リメイニング)イントラ予測モード情報を含むことができる。
【0356】
また、イントラモード情報は、現ブロックにCCLMが適用されるかどうかを指示するフラグ情報sps_cclm_enabled_flagおよびクロマ成分に対するイントラ予測モードに関する情報intra_chroma_pred_modeを含むことができる。
【0357】
LFNSTインデックス情報は、シンタックス情報で受信され、シンタックス情報は、0および1を含む二進化されたbinストリングで受信される。
【0358】
本実施例によるLFNSTインデックスのシンタックス要素は、逆LFNSTまたは逆非分離変換が適用されるかどうかと、変換セットに含まれている変換カーネルマトリクスのうちのいずれか一つと、を指示することができ、変換セットが2つの変換カーネルマトリクスを含む場合、変換インデックスのシンタックス要素の値は3つである。
【0359】
すなわち、一実施例によって、LFNSTインデックスに関するシンタックス要素値は、対象ブロックに逆LFNSTが適用されない場合を指示する0、変換カーネルマトリクスのうちの1番目の変換カーネルマトリクスを指示する1、変換カーネルマトリクスのうちの2番目の変換カーネルマトリクスを指示する2、を含むことができる。
【0360】
また、デコード装置300は、ビットストリームから現ブロックに対する量子化された変換係数に関する情報をデコードすることができ、現ブロックに対する量子化された変換係数に関する情報に基づいて対象ブロックに対する量子化された変換係数を導出することができる。対象ブロックに対する量子化された変換係数に関する情報は、SPS(Sequence Parameter Set)またはスライスヘッダ(slice header)に含まれることができ、簡素化変換(RST)が適用されるかどうかに関する情報、簡素化ファクタに関する情報、簡素化変換を適用する最小変換サイズに関する情報、簡素化変換を適用する最大変換サイズに関する情報、簡素化逆変換サイズ、変換セットに含まれている変換カーネルマトリクスのうちのいずれか一つを指示する変換インデックスに関する情報のうちの少なくとも一つを含むことができる。
【0361】
デコード装置300は、現ブロックに対する残差情報、すなわち、量子化された変換係数に対して逆量子化を実行して変換係数を導出することができ、導出された変換係数を所定のスキャン順序で配列できる。
【0362】
具体的には、導出された変換係数は、4×4ブロック単位で逆方向対角スキャン順序によって配列されることができ、4×4ブロック内の変換係数も逆方向対角スキャン順序によって配列されることができる。すなわち、逆量子化が実行された変換係数は、VVCやHEVCなどのビデオコーデックで適用されている逆方向スキャン順序によって配置されることができる。
【0363】
このような残差情報に基づいて導出された変換係数は、上記のように逆量子化された変換係数であってもよく、量子化された変換係数であってもよい。すなわち、変換係数は、量子化が可能か否かにかかわらず、現ブロックで0でないデータであるかどうかをチェックすることができるデータであればよい。
【0364】
デコード装置は、クロマブロックのイントラ予測モードがCCLMモードであることに基づいて、クロマブロックのイントラ予測モードをクロマブロックに対応するルマブロックのイントラ予測モードに基づいて更新でき、特に、ルマブロックのイントラ予測モードがイントラブロックコピー(IBC)モードであることに基づいて、イントラDCモードに更新できる(S1620)。
【0365】
デコード装置は、イントラ予測モード情報に基づいてクロマブロックのイントラ予測モードをCCLMモードとして導出することができる。例えば、デコード装置は、ビットストリームを介して現クロマブロックのイントラ予測モードに関する情報を受信することができ、イントラ予測モードに関する情報に基づいてCCLMモードを上記現クロマブロックのイントラ予測モードとして導出することができる。
【0366】
CCLMモードは、左上側ベースのCCLMモード、上側ベースのCCLMモードまたは左側CCLMモードを含むことができる。
【0367】
前述したように、デコード装置は、非分離変換であるLFNSTまたは分離変換であるMTSを適用して残差サンプルを導出することができ、このような変換は、各々、LFNSTカーネル、すなわち、LFNSTマトリクスを指示するLFNSTインデックスとMTSカーネルを指示するMTSインデックスとに基づいて実行されることができる。
【0368】
一方、LFNSTのためにLFNSTセットが決定されるべきであり、LFNSTセットは、現ブロックのイントラ予測モードとマッピング関係を有する。
【0369】
デコード装置は、クロマブロックの逆LFNSTのために、クロマブロックのイントラ予測モードをクロマブロックに対応するルマブロックのイントラ予測モードに基づいて更新できる。
【0370】
一例によって、更新されたイントラ予測モードは、ルマブロック内の特定の位置に対応するイントラ予測モードとして導出されることができ、このとき、特定位置は、クロマブロックのカラーフォーマットに基づいて設定されることができる。
【0371】
特定位置は、ルマブロックの中心位置であり、((xTbY+(nTbW*SubWidthC)/2)、(yTbY+(nTbH*SubHeightC)/2))で表現されることができる。
【0372】
上記中心位置で、xTbYおよびyTbYは、ルマブロックの左上端座標、すなわち、現変換ブロックに対するルマサンプル基準における左上端位置を示し、nTbWおよびnTbHは、上記クロマブロックの幅および高さを示し、SubWidthCおよびSubHeightCは、カラーフォーマットに対応する変数に対応する。((xTbY+(nTbW*SubWidthC)/2)、(yTbY+(nTbH*SubHeightC)/2))は、ルマ変換ブロックの中間位置を示し、IntraPredModeY[xTbY+(nTbW*SubWidthC)/2][yTbY+(nTbH*SubHeightC)/2」は、該当位置に対するルマブロックにおけるイントラ予測モードを指す。
【0373】
SubWidthCおよびSubHeightCは、表18のように導出されることができる。すなわち、カラーフォーマットが4:2:0である場合、SubWidthCおよびSubHeightCは2であり、カラーフォーマットが4:2:2である場合、SubWidthCは2であり、SubHeightCは1である。
【0374】
表17のように、カラーフォーマットにかかわらずにクロマブロックに対応するルマブロックの特定位置を指定するために、特定位置を指示する変数にカラーフォーマットが反映された。
【0375】
前述したように、特定位置に対応するルマブロックのイントラ予測モードがIBCモードである場合、デコード装置は、更新されたイントラ予測モードをイントラDCモードに更新できる。
【0376】
IBCは、基本的に現ピクチャ内で予測を実行するが、現ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。すなわち、IBCは、本文書で説明されるインター予測技法のうちの少なくとも一つを利用することができる。
【0377】
あるいは、一例によって、特定位置に対応するイントラ予測モードがパレットモードである場合、デコード装置は、更新されたイントラ予測モードをイントラDCモードに設定できる。
【0378】
IBCモードまたはパレットモードは、例えば、SCC(Screen Content Coding)などのように、ゲームなどのコンテンツ映像/動映像コーディングのために使われることができる。IBCは、基本的に現ピクチャ内で予測を実行するが、現ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。すなわち、IBCは、本文書で説明されるインター予測技法のうちの少なくとも一つを利用することができる。パレットモードは、イントラコーディングまたはイントラ予測の一例と見ることができる。パレットモードが適用される場合、パレットテーブルおよびパレットインデックスに関する情報に基づいてピクチャ内のサンプル値をシグナリングすることができる。
【0379】
あるいは、他の例によって、特定位置に対応するルマブロックのイントラ予測モードがマトリクスベースのイントラ予測(Matrix based intra prediction、以下、MIP)モードである場合、デコード装置は、更新されたイントラ予測モードをイントラ平面モードに設定できる。
【0380】
MIPモードは、アフィン線形加重イントラ予測(Affine Linear Weighted Intra Prediction、ALWIP)またはマトリクス加重イントラ予測(Matrix Weighted Intra Prediction、MWIP)とも呼ばれる。MIPが現ブロックに対して適用される場合、i)アベレージング(averaging)手順が実行された周辺参照サンプルを利用して、ii)マトリクスベクトルマルチプリケーション(matrix-vector-multiplication)手順を実行し、iii)必要によって、水平/垂直補間(interpolation)手順をさらに実行することで、上記現ブロックに対する予測サンプルを導出することができる。
【0381】
整理すると、中心位置に対するイントラ予測モードがMIPモード、IBCモード、およびパレットモードである場合、クロマブロックのイントラ予測モードは、イントラ平面モードまたはイントラDCモードなどの特定モードに更新されることができる。
【0382】
もちろん、中心位置のイントラ予測モードがMIPモード、IBCモード、およびパレットモードでない場合、クロマブロックとルマブロックとの関連性を反映するために、クロマブロックのイントラ予測モードは、中心位置に対するルマブロックのイントラ予測モードに更新されることができる。
【0383】
デコード装置は、更新されたイントラ予測モードに基づいてLFNSTマトリクスを含むLFNSTセットを決定し(S1630)、LFNSTセットから導出されたLFNSTマトリクスに基づいてクロマブロックに対するLFNSTを実行して変換係数を導出することができる(S1640)。
【0384】
複数のLFNSTマトリクスのうちのいずれか一つは、LFNSTセットおよびLFNSTインデックスに基づいて複数の中からいずれか一つを選択することができる。
【0385】
表20のように、イントラ予測モードによってLFNST変換セットが導出される。イントラ予測モードでCCLMモードを示す81ないし83は省略されており、これは、CCLMモードの場合、対応するルマブロックに対するイントラモード値を有してLFNST変換セットを導出するためである。
【0386】
一例によって、表20のように、現ブロックのイントラ予測モードによって4個のLFNSTセットのうちのいずれか一つが決定されることができ、このとき、現クロマブロックに適用されるLFNSTセットも決定されることができる。
【0387】
その後、デコード装置は、逆量子化された変換係数にLFNSTマトリクスを適用して逆RST、例えば、逆LFNSTを実行することによって、現クロマブロックに対する修正された変換係数を導出することができる。
【0388】
デコード装置は、1次逆変換を介して変換係数から残差(レジデュアル)サンプルを導出することができ(S1650)、現ブロックがクロマブロックである場合、変換係数に基づいてクロマブロックに対する残差サンプルを導出することができる。1次逆変換としてMTSが使われることができる。
【0389】
また、デコード装置は、現ブロックに対する残差サンプルおよび現ブロックに対する予測サンプルに基づいて、復元サンプルを生成することができる。
【0390】
以下の図面は、本明細書の具体的な一例を説明するために作成された。図面に記載された具体的な装置の名称や具体的な信号/メッセージ/フィールドの名称は、例示的に提示されたものであるため、本明細書の技術的特徴は、以下の図面に使われた具体的な名称に制限されない。
【0391】
図17は、本文書の一実施例によるビデオエンコード装置の動作を示す流れ図である。
【0392】
図17に開示された各ステップは、
図4ないし
図15で詳述した内容のうちの一部に基づく。したがって、
図2および
図4ないし
図15で詳述した内容と重複する具体的な内容は、説明を省略または簡単にする。
【0393】
一実施例によるエンコード装置200は、クロマブロックに対するイントラ予測モードがCCLMモードであることに基づいてクロマブロックに対する予測サンプルを導出することができる(S1710)。
【0394】
まず、エンコード装置は、クロマブロックに対するイントラ予測モードをCCLMモードとして導出することができる。
【0395】
例えば、エンコード装置は、RDコスト(Rate-Distortion cost)(または、RDO)に基づいて上記現クロマブロックのイントラ予測モードを決定することができる。ここで、上記RDコストは、SAD(Sum of Absolute Difference)に基づいて導出されることができる。エンコード装置は、RDコストに基づいて上記CCLMモードを上記現クロマブロックのイントラ予測モードとして決定できる。
【0396】
CCLMモードは、左上側ベースのCCLMモード、上側ベースのCCLMモードまたは左側ベースのCCLMモードを含むことができる。
【0397】
また、エンコード装置は、上記現クロマブロックのイントラ予測モードに関する情報をエンコードすることができ、ビットストリームを介して上記イントラ予測モードに関する情報は、シグナリングされることができる。上記現クロマブロックの予測関連情報は、上記イントラ予測モードに関する情報を含むことができる。
【0398】
一実施例によるエンコード装置は、予測サンプルに基づいてクロマブロックに対する残差(レジデュアル)サンプルを導出することができる(S1720)。
【0399】
一実施例によるエンコード装置は、残差サンプルに対する1次変換に基づいてクロマブロックに対する変換係数を導出することができる。
【0400】
1次変換は、複数の変換カーネルを介して実行されることができ、この場合、イントラ予測モードに基づいて変換カーネルが選択されることができる。
【0401】
エンコード装置は、クロマブロックのLFNSTのために、クロマブロックのイントラ予測モードを、クロマブロックに対応するルマブロックのイントラ予測モードに基づいて更新でき、ルマブロックのイントラ予測モードがイントラブロックコピー(IBC)モードであることに基づいてイントラDCモードに更新できる(S1730)。
【0402】
エンコード装置は、表17に示すように、クロマブロックに対するCCLMモードをクロマブロックに対応するルマブロックのイントラ予測モードに基づいて更新できる(When predModeIntra is equal to either INTRA_LT_CCLM,INTRA_L_CCLM,or INTRA_T_CCLM,predModeIntra is derived as follow:)。
【0403】
一例によって、更新されたイントラ予測モードは、ルマブロック内の特定位置に対応するイントラ予測モードとして導出されることができ、このとき、特定位置は、クロマブロックのカラーフォーマットに基づいて設定されることができる。
【0404】
特定位置は、ルマブロックの中心位置であり、((xTbY+(nTbW*SubWidthC)/2)、(yTbY+(nTbH*SubHeightC)/2))で表現されることができる。
【0405】
上記中心位置で、xTbYおよびyTbYは、ルマブロックの左上端座標、すなわち、現変換ブロックに対するルマサンプル基準における左上端位置を示し、nTbWおよびnTbHは、上記クロマブロックの幅および高さを示し、SubWidthCおよびSubHeightCは、カラーフォーマットに対応する変数に対応する。((xTbY+(nTbW*SubWidthC)/2)、(yTbY+(nTbH*SubHeightC)/2))は、ルマ変換ブロックの中間位置を示し、IntraPredModeY[xTbY+(nTbW*SubWidthC)/2][yTbY+(nTbH*SubHeightC)/2」は、該当位置に対するルマブロックにおけるイントラ予測モードを指す。
【0406】
SubWidthCおよびSubHeighCは、表18のように導出されることができる。すなわち、カラーフォーマットが4:2:0である場合、SubWidthCおよびSubHeightCは2であり、カラーフォーマットが4:2:2である場合、SubWidthCは2であり、SubHeightCは1である。
【0407】
表17のように、カラーフォーマットにかかわらずクロマブロックに対応するルマブロックの特定位置を指定するために、特定位置を指示する変数にカラーフォーマットが反映された。
【0408】
前述したように、特定位置に対応するルマブロックのイントラ予測モードがIBCモードである場合、エンコード装置は、更新されたイントラ予測モードをイントラDCモードに更新できる。
【0409】
IBCは、基本的に現ピクチャ内で予測を実行するが、現ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。すなわち、IBCは、本文書で説明されるインター予測技法のうちの少なくとも一つを利用することができる。
【0410】
あるいは、一例によって、特定位置に対応するイントラ予測モードがパレットモードである場合、エンコード装置は、更新されたイントラ予測モードをイントラDCモードに設定できる。
【0411】
IBCモードまたはパレットモードは、例えば、SCC(Screen Content Coding)などのように、ゲームなどのコンテンツ映像/動映像コーディングのために使われることができる。IBCは、基本的に現ピクチャ内で予測を実行するが、現ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。すなわち、IBCは、本文書で説明されるインター予測技法のうちの少なくとも一つを利用することができる。パレットモードは、イントラコーディングまたはイントラ予測の一例として見ることができる。パレットモードが適用される場合、パレットテーブルおよびパレットインデックスに関する情報に基づいてピクチャ内のサンプル値をシグナリングすることができる。
【0412】
あるいは、他の例によって、特定位置に対応するルマブロックのイントラ予測モードがマトリクスベースのイントラ予測(Matrix based Intra Prediction、以下、MIP)モードである場合、エンコード装置は、更新されたイントラ予測モードをイントラ平面モードに設定できる。
【0413】
MIPモードは、アフィン線形加重イントラ予測(Affine Linear Weighted Intra Prediction、ALWIP)またはマトリクス加重イントラ予測(Matrix Weighted Intra Prediction、MWIP)とも呼ばれる。MIPが現ブロックに対して適用される場合、i)アベレージング(averaging)手順が実行された周辺参照サンプルを利用して、ii)マトリクスベクトルマルチプリケーション(matrix-vector-multiplication)手順を実行し、iii)必要によって、水平/垂直補間(interpolation)手順をさらに実行することで、上記現ブロックに対する予測サンプルを導出することができる。
【0414】
整理すると、中心位置に対するイントラ予測モードがMIPモード、IBCモード、およびパレットモードである場合、クロマブロックのイントラ予測モードは、イントラ平面モードまたはイントラDCモードなどの特定モードに更新されることができる。
【0415】
もちろん、中心位置のイントラ予測モードがMIPモード、IBCモード、およびパレットモードでない場合、クロマブロックとルマブロックとの関連性を反映するために、クロマブロックのイントラ予測モードは、中心位置に対するルマブロックのイントラ予測モードに更新されることができる。
【0416】
エンコード装置は、更新されたイントラ予測モードに基づいてLFNSTマトリクスを含むLFNSTセットを決定し(S1740)、残差サンプル、LFNSTマトリクスに基づいてクロマブロックに対するLFNSTを実行して修正された変換係数を導出することができる(S1750)。
【0417】
エンコード装置は、現ブロックに適用されるイントラ予測モードによるマッピング関係に基づいて変換セットを決定し、変換セットに含まれている2つのうちのいずれか一つのLFNST行列に基づいてLFNST、すなわち、非分離変換を実行することができる。
【0418】
前述したように、変換の対象になる変換ブロックのイントラ予測モードによって、複数の変換セットが決定されることができる。LFNSTに適用される行列は、逆方向LFNSTに使われる行列とトランスポーズ関係にある。
【0419】
一例において、LFNST行列は、行の個数が列の個数より少ない非正方形マトリクスである。
【0420】
エンコード装置は、現クロマブロックに対する修正された変換係数に基づいて量子化を実行して量子化された変換係数を導出し、量子化された変換係数に関する情報、イントラ予測モード情報、およびLFNSTマトリクスを指示するLFNSTインデックスを含む映像情報をエンコードした後に出力できる(S1760)。
【0421】
より具体的には、エンコード装置200は、量子化された変換係数に関する情報を生成し、生成された量子化された変換係数に関する情報をエンコードすることができる。
【0422】
一例において、量子化された変換係数に関する情報は、LFNSTが適用されるかどうかに関する情報、簡素化ファクタに関する情報、LFNSTを適用する最小変換サイズに関する情報、およびLFNSTを適用する最大変換サイズに関する情報のうちの少なくとも一つを含むことができる。
【0423】
エンコード装置は、イントラモード情報として現ブロックにCCLMが適用されるかどうかを指示するフラグ情報sps_cclm_enabled_flagおよびクロマ成分に対するイントラ予測モードに関する情報intra_chroma_pred_modeをエンコードすることができる。
【0424】
CCLMモードに関する情報であるintra_chroma_pred_modeは、左上側ベースのCCLMモード、上側ベースのCCLMモードまたは左側ベースのCCLMモードを指示することができる。
【0425】
本文書において、量子化/逆量子化および/または変換/逆変換の少なくとも1つは省略され得る。上記量子化/逆量子化が省略される場合、上記量子化された変換係数は、変換係数と呼ばれ得る。上記変換/逆変換が省略される場合、上記変換係数は、係数または残差係数と呼ばれることもあり、または表現の統一のために依然として変換係数と呼ばれることもある。
【0426】
また、本文書において、量子化された変換係数および変換係数は、各々変換係数およびスケーリングされた(scaled)変換係数と呼称され得る。この場合、残差情報は、変換係数に関する情報を含むことができ、上記変換係数に関する情報は、残差コーディングシンタックスを介してシグナリングされることができる。上記残差情報(または上記変換係数に関する情報)に基づいて変換係数が導出されることができ、上記変換係数に対する逆変換(スケーリング)を介してスケーリングされた変換係数が導出されることができる。上記スケーリングされた変換係数に対する逆変換(変換)に基づいて、残差サンプルが導出されることができる。これは、本文書の別の部分でも同様に適用/表現できる。
【0427】
前述した実施例において、方法は、一連のステップまたはブロックとしてフローチャートに基づいて説明されているが、本文書は、ステップの順序に限定されるわけではなく、あるステップは、前述したものと異なるステップおよび異なる順序で、または同時に発生し得る。また、当業者であれば、フローチャートに示されているステップが排他的ではなく、別のステップが含まれるか、フローチャートの一つまたは複数のステップが本文書の範囲に影響を与えずに削除され得ることを理解することができる。
【0428】
前述した本文書に係る方法は、ソフトウェアの形態で具現されることができ、本文書に係るエンコード装置および/またはデコード装置は、例えば、TV、コンピュータ、スマートフォン、セットトップボックス、ディスプレイ装置などの画像処理を行う装置に含まれ得る。
【0429】
本文書において、実施例がソフトウェアで具現されるとき、前述した方法は、前述した機能を行うモジュール(過程、機能など)で具現されることができる。モジュールは、メモリに記憶され、プロセッサにより実行されることができる。メモリは、プロセッサの内部または外部にあってもよく、よく知られている様々な手段でプロセッサと連結されてもよい。プロセッサは、ASIC(Application-Specific Integrated Circuit)、他のチップセット、論理回路および/またはデータ処理装置を含むことができる。メモリは、ROM(Read-Only Memory)、RAM(Random Access Memory)、フラッシュメモリ、メモリカード、記憶媒体および/または他の記憶装置を含むことができる。すなわち、本文書で説明した実施例は、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上で具現されて実行されることができる。例えば、各図面で示している機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上で具現されて実行されることができる。
【0430】
また、本文書が適用されるデコード装置およびエンコード装置は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ対話装置、ビデオ通信のようなリアルタイム通信装置、モバイルストリーミング装置、記憶媒体、カムコーダ、ビデオオンデマンド(オーダーメイド型ビデオ)(VoD)サービス提供装置、OTTビデオ(Over the Top Video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、画像電話ビデオ装置、および医療用ビデオ装置などに含まれ得、ビデオ信号またはデータ信号を処理するために使用され得る。例えば、OTTビデオ(Over the Top Video)装置としては、ゲームコンソール、ブルーレイプレーヤ、インターネットアクセスTV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recorder)などを含み得る。
【0431】
また、本文書が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されることができ、コンピュータが読み取ることができる記録媒体に記憶されることができる。本文書に係るデータ構造を有するマルチメディアデータもまた、コンピュータが読み取ることができる記録媒体に記憶されることができる。上記コンピュータが読み取ることができる記録媒体は、コンピュータで読み取ることができるデータが記憶される全ての種類の記憶装置および分散記憶装置を含む。上記コンピュータが読み取ることができる記録媒体は、例えば、ブルーレイディスク(BD)、ユニバーサルシリアル(汎用直列)バス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピディスク、および光学データ記憶装置を含み得る。また、上記コンピュータが読み取ることができる記録媒体は、搬送波(例えば、インターネットを介した送信)の形態で具現されたメディアを含む。また、エンコード方法で生成されたビットストリームが、コンピュータが読み取ることができる記録媒体に記憶されるか、有無線通信ネットワークを介して送信されることができる。また、本文書の実施形態は、プログラムコードによるコンピュータプログラム製品で具現されることができ、上記プログラムコードは、本文書の実施形態によってコンピュータで実行されることができる。上記プログラムコードは、コンピュータによって読み取り可能なキャリア上に記憶されることができる。
【0432】
図18は、本文書が適用されるコンテンツストリーミングシステム構造図を例示的に示す。
【0433】
また、本文書が適用されるコンテンツストリーミングシステムは、主として、エンコードサーバ、ストリーミングサーバ、ウェブサーバ、メディア記憶装置(格納所)、ユーザ装置、およびマルチメディア入力装置を含むことができる。
【0434】
上記エンコードサーバは、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これを上記ストリーミングサーバに送信する役割をする。他の例として、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置がビットストリームを直接生成する場合、上記エンコードサーバは省略されることができる。上記ビットストリームは、本文書が適用されるエンコード方法またはビットストリーム生成方法により生成されることができ、上記ストリーミングサーバは、上記ビットストリームを送信または受信する過程で一時的に上記ビットストリームを記憶することができる。
【0435】
上記ストリーミングサーバは、ウェブサーバを介したユーザリクエスト(要請)に基づいてマルチメディアデータをユーザ装置に送信し、上記ウェブサーバは、どのようなサービスがあるかをユーザに知らせる媒介体の役割をする。ユーザが上記ウェブサーバに所望のサービスをリクエストすると、上記ウェブサーバは、これをストリーミングサーバに伝達し、上記ストリーミングサーバは、ユーザにマルチメディアデータを送信する。このとき、上記コンテンツストリーミングシステムは、別途の制御サーバを含むことができ、この場合、上記制御サーバは、上記コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割をする。
【0436】
上記ストリーミングサーバは、メディア記憶装置および/またはエンコードサーバからコンテンツを受信することができる。例えば、上記エンコードサーバからコンテンツを受信する場合、上記コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、上記ストリーミングサーバは、上記ビットストリームを一定時間の間記憶することができる。
【0437】
上記ユーザ装置の例として、携帯電話、スマートフォン(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、デスクトップコンピュータ、デジタル署名(サイニジ)などがある。上記コンテンツストリーミングシステム内の各サーバは、分散サーバで運用されることができ、この場合、各サーバで受信するデータは、分散処理されることができる。
【0438】
本明細書に記載された請求項は、多様な方式で組み合わせられることができる。例えば、本明細書の方法の請求項の技術的特徴が組み合わせられて装置において具現されることができ、本明細書の装置の請求項の技術的特徴が組み合わせられて方法において具現されることができる。また、本明細書の方法の請求項の技術的特徴と装置の請求項の技術的特徴とが組み合わせられて装置で具現されることができ、本明細書の方法の請求項の技術的特徴と装置の請求項の技術的特徴とが組み合わせられて方法で具現されることができる。