(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-21
(45)【発行日】2024-03-29
(54)【発明の名称】変換に基づく画像コーディング方法及びその装置
(51)【国際特許分類】
H04N 19/12 20140101AFI20240322BHJP
H04N 19/157 20140101ALI20240322BHJP
H04N 19/18 20140101ALI20240322BHJP
H04N 19/186 20140101ALI20240322BHJP
H04N 19/60 20140101ALI20240322BHJP
H04N 19/70 20140101ALI20240322BHJP
H04N 19/85 20140101ALI20240322BHJP
【FI】
H04N19/12
H04N19/157
H04N19/18
H04N19/186
H04N19/60
H04N19/70
H04N19/85
(21)【出願番号】P 2022542309
(86)(22)【出願日】2021-01-11
(86)【国際出願番号】 KR2021000339
(87)【国際公開番号】W WO2021141472
(87)【国際公開日】2021-07-15
【審査請求日】2022-07-08
(32)【優先日】2020-01-10
(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)【参考文献】
【文献】国際公開第2018/037737(WO,A1)
【文献】Tomonori Hashimoto, et al.,"Fix on LFNST condition",Document: JVET-Q0133, [online],JVET-Q0133 (version 2),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,2020年01月09日,Pages 1-5,[令和5年7月8日検索], インターネット, <URL: https://jvet-experts.org/doc_end_user/current_document.php?id=8958> and <URL: https://jvet-experts.org/doc_end_user/documents/17_Brussels/wg11/JVET-Q0133-v2.zip>.
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
CSDB(日本国特許庁)
学術文献等データベース(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
デコーディング装置によって実行される画像デコーディング方法において、
ビットストリームから受信された残差情報に基づいて現在のブロックに対する変換係数を導出するステップと、
前記変換係数に対する
逆変換に基づいて前記現在のブロックに対する残差サンプルを導出するステップと、を含み、
前記変換係数を導出するステップは、
低周波非分離変換(LFNST)が適用されるか否か及び前記現在のブロックのツリータイプに基づいて、前記現在のブロックにスケーリングリストが適用されるか否かを判断するステップと、
前記判断するステップに基づいて、前記残差情報から前記現在のブロックに対する前記変換係数を導出するステップと、を含み、
前記現在のブロックのツリータイプがシングルツリーであり、前記現在のブロック
のカラー成分がクロマ要素であることに基づいて、
前記現在のブロックの前記クロマ要素に前記スケーリングリストが適用さ
れ、
前記現在のブロックのツリータイプがデュアルツリークロマであり、前記現在のブロックの前記クロマ要素に前記LFNSTが適用されることに基づいて、前記現在のブロックの前記クロマ要素には前記スケーリングリストが適用されない、画像デコーディング方法。
【請求項2】
前記現在のブロックのツリータイプが前記シングルツリーであり、前記現在のブロックのカラー成分が前記クロマ要素であることに基づいて、前記現在のブロックの前記クロマ要素には前記LFNSTが適用されない、請求項1に記載の画像デコーディング方法。
【請求項3】
前記現在のブロックのツリータイプが前記シングルツリーであり、前記現在のブロックに前記LFNSTが
適用される
ことに基づいて、前記現在のブロックのルマ要素には前記スケーリングリストが適用されない、請求項1に記載の画像デコーディング方法。
【請求項4】
前記LFNSTが
適用されるブロックに対して前記スケーリングリストが利用可能であるか否かを指示するフラグ情報を受信するステップを更に含む、請求項1に記載の画像デコーディング方法。
【請求項5】
前記スケーリングリストが利用可能でないことを前記フラグ情報が示し、LFNSTインデクスが0より大き
く、前記現在のブロックのツリータイプが前記シングルツリーであることに基づいて、前記現在のブロックのルマ要素には前記スケーリングリストが適用されない、請求項4に記載の画像デコーディング方法。
【請求項6】
前記スケーリングリストが利用可能でないことを前記フラグ情報が示し、LFNSTインデクスが0より大き
く、前記現在のブロックのツリータイプがデュアルツリークロマであ
ることに基づいて、前記現在のブロックの前記クロマ要素には前記スケーリングリストが適用されない、請求項4に記載の画像デコーディング方法。
【請求項7】
前記スケーリングリストが利用可能でないことを前記フラグ情報が示し、LFNSTインデクスが0より大き
く、前記現在のブロックのツリータイプがデュアルツリールマであ
ることに基づいて、前記現在のブロックのルマ要素には前記スケーリングリストが適用されない、請求項4に記載の画像デコーディング方法。
【請求項8】
画像エンコーディング装置によって実行される画像エンコーディング方法において、
変換過程に基づいて現在のブロックに対する残差サンプルから前記現在のブロックに対する変換係数を導出するステップと、
前記変換過程に
低周波非分離変換(LFNST)が実行されるか否か及び前記現在のブロックのツリータイプに基づいて、前記現在のブロックにスケーリングリストが適用されるか否かを決定するステップと、
前記決定するステップに基づいて前記変換係数を量子化するステップと、を含み、
前記現在のブロックのツリータイプがシングルツリーであり、前記現在のブロック
のカラー成分がクロマ要素であることに基づいて、
前記現在のブロックの前記クロマ要素に前記スケーリングリストが適用さ
れ、
前記現在のブロックのツリータイプがデュアルツリークロマであり、前記現在のブロックに前記LFNSTが実行されることに基づいて、前記現在のブロックの前記クロマ要素には前記スケーリングリストが適用されない、画像エンコーディング方法。
【請求項9】
前記現在のブロックのツリータイプが前記シングルツリーであり、前記現在のブロックのカラー成分が前記クロマ要素であることに基づいて、前記現在のブロックの前記クロマ要素には前記LFNSTが実行されない、請求項8に記載の画像エンコーディング方法。
【請求項10】
前記現在のブロックのツリータイプが前記シングルツリーであり、前記現在のブロックに前記LFNSTが実行される
ことに基づいて、前記現在のブロックのルマ要素には前記スケーリングリストが適用されない、請求項8に記載の画像エンコーディング方法。
【請求項11】
前記現在のブロックのツリータイプがデュアルツリールマであり、前記現在のブロックに前記LFNSTが実行される
ことに基づいて、
前記現在のブロックのルマ要素には前記スケーリングリストが適用されない、請求項8に記載の画像エンコーディング方法。
【請求項12】
前記LFNSTが
適用されるブロックに対して前記スケーリングリストが利用可能であるか否かを指示するフラグ情報をエンコーディングして出力するステップをさらに含む、請求項8に記載の画像エンコーディング方法。
【請求項13】
前記現在のブロックは変換ブロックを含む、請求項8に記載の画像エンコーディング方法。
【請求項14】
画像情報に対するデータを送信する方法において、
前記画像情報に対するビットストリームを
生成するステップであって、前記ビットストリームは、変換過程に基づいて現在のブロックに対する残差サンプルから前記現在のブロックに対する変換係数を導出し、前記変換過程に
低周波非分離変換(LFNST)が実行されるか否か及び前記現在のブロックのツリータイプに基づいて、前記現在のブロックにスケーリングリストが適用されるか否かを決定し、
前記決定することに基づいて前記変換係数を量子化し、前記量子化された変換係数に関連する残差情報をエンコーディングすることに基づいて生成される、ステップと、
前記ビットストリームを含む前記データを送信するステップと、を含み、
前記現在のブロックのツリータイプがシングルツリーであり、前記現在のブロック
のカラー成分がクロマ要素であることに基づいて、
前記現在のブロックの前記クロマ要素に前記スケーリングリストが適用さ
れ、
前記現在のブロックのツリータイプがデュアルツリークロマであり、前記現在のブロックに前記LFNSTが実行されることに基づいて、前記現在のブロックの前記クロマ要素には前記スケーリングリストが適用されない、データ送信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本文書は、画像コーディング技術に関し、より詳細には、画像コーディングシステムにおいて変換(transform)に基づく画像コーディング方法及びその装置に関する。
【背景技術】
【0002】
近年、4Kまたは8K以上のUHD(Ultra High Definition)画像/ビデオのような高解像度、高品質の画像/ビデオに対する需要が様々な分野で増加している。画像/ビデオデータが高解像度、高品質になるほど、既存の画像/ビデオデータに比べて相対的に送信される情報量またはビット量が増加するので、既存の有無線広帯域回線のような媒体を利用して画像データを送信するか、既存の格納媒体を利用して画像/ビデオデータを格納する場合、送信費用と格納費用が増加する。
【0003】
また、近年、VR(Virtual Reality)、AR(Artificial Realtiy)コンテンツやホログラムなどの実感メディア(Immersive Media)に対する関心及び需要が増加しており、ゲーム画像のように、現実画像と異なる画像特性を有する画像/ビデオに対する放送が増加している。
【0004】
これにより、前記のような様々な特性を有する高解像度高品質の画像/ビデオの情報を効果的に圧縮して送信するか格納し、再生するために高効率の画像/ビデオ圧縮技術が求められる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本文書の技術的課題は画像符号化効率を高める方法及び装置を提供することである。
【0006】
本文書の別の技術的課題は量子化効率を高める方法及び装置を提供することである。
【0007】
本文書のもう1つの技術的課題はシングルツリータイプ時のクロマ要素に対する量子化効率を高める方法及び装置を提供することである。
【課題を解決するための手段】
【0008】
本文書の一実施例によれば、デコーディング装置によって実行される画像デコーディング方法を提供する。前記方法は変換係数にLFNSTを適用して修正された変換係数を導出するステップ、前記修正された変換係数に対する逆1次変換に基づいて前記対象ブロックに対する残差サンプルを導出するステップを含むが、前記変換係数を導出するステップは、LFNSTが適用されるか否か及び前記現在のブロックのツリータイプに基づいて前記現在のブロックにスケーリングリストが適用されるか否かを判断するステップと、判断結果に基づいて残差情報から前記現在のブロックに対する変換係数を導出するステップを含み、前記現在のブロックのツリータイプがシングルツリーであり、クロマ要素であれば、前記スケーリングリストを適用することができる。
【0009】
前記現在のブロックの前記クロマ要素には前記LFNSTが適用されない場合がある。
【0010】
前記現在のブロックのツリータイプがシングルツリーであり、前記現在のブロックにLFNSTが実行されれば、前記現在のブロックのルマ要素に前記スケーリングリストが適用されない場合がある。
【0011】
前記LFNSTが実行されるとき、前記スケーリングリストの可用性を指示するフラグ情報をさらに受信することができる。
【0012】
前記フラグ情報が前記スケーリングリストが可用ではないことを示し、前記LFNSTインデクスが0より大きい場合、前記ルマ要素に前記スケーリングリストが適用されない場合がある。
【0013】
前記フラグ情報が前記スケーリングリストが可用ではないことを示し、前記LFNSTインデクスが0より大きい場合、前記現在のブロックのツリータイプがデュアルツリークロマであれば、前記クロマ要素に前記スケーリングリストが適用されない場合がある。
【0014】
前記フラグ情報が前記スケーリングリストが可用ではないことを示し、前記LFNSTインデクスが0より大きい場合、前記現在のブロックのツリータイプがデュアルツリールマであれば、前記ルマ要素に前記スケーリングリストが適用されない場合がある。
【0015】
本文書の一実施例によれば、エンコーディング装置によって実行される画像エンコーディング方法を提供する。前記方法は変換過程に基づいて現在のブロックに対する残差サンプルから前記現在のブロックに対する変換係数を導出するステップ、前記変換過程においてLFNSTが実行されるか否か及び前記現在のブロックのツリータイプに基づいて前記現在のブロックに前記スケーリングリストが適用されるか否かを決定するステップと、前記決定に基づいて前記変換係数を量子化するステップを含むが、前記現在のブロックのツリータイプがシングルツリーであり、クロマ要素であれば、前記スケーリングリストを適用することができる。
【0016】
本文書のもう1つの一実施例によれば、エンコーディング装置によって実行された画像エンコーディング方法によって生成されたエンコーディングされた画像情報及びビットストリームが含まれた画像データが格納されたデジタル記憶媒体が提供される。
【0017】
本文書のもう1つの一実施例によれば、デコーディング装置によって前記画像デコーディング方法を実行するためのエンコーディングされた画像情報及びビットストリームが含まれた画像データが格納されたデジタル記憶媒体が提供される。
【発明の効果】
【0018】
本文書によれば、全体的な画像/ビデオ圧縮効率を高めることができる。
【0019】
本文書によれば、量子化効率を高めることができる。
【0020】
本文書によれば、変換シングルツリータイプ時のクロマ要素に対する量子化効率を高めることができる。
【0021】
本明細書の具体的な一例を介して得られる効果は、以上で羅列された効果に制限されない。例えば、関連する技術分野における通常の知識を有する者(a person having ordinary skill in the related art)が、本明細書から理解または誘導できる様々な技術的効果が存在し得る。これによって、本明細書の具体的な効果は、本明細書に明示的に記載されているものに制限されず、本明細書の技術的特徴から理解または誘導できる様々な効果を含み得る。
【図面の簡単な説明】
【0022】
【
図1】本文書が適用され得るビデオ/画像エンコード装置の構成を概略的に説明する図である。
【
図2】本文書が適用され得るビデオ/画像デコード装置の構成を概略的に説明する図である。
【
図3】本文書の一実施形態に係る多重変換技法を概略的に示す。
【
図4】65個予測方向のイントラ方向性モードを例示的に示す。
【
図5】本文書の一実施形態に係るRSTを説明するための図である。
【
図6】一例によって順方向1次変換の出力データを1次元ベクトルで配列する順序を示した図である。
【
図7】一例によって順方向2次変換の出力データを2次元ブロックで配列する順序を示した図である。
【
図8】LFNSTが適用されるブロック形状を示した図である。
【
図9】一例によって順方向LFNSTの出力データの配置を示した図である。
【
図10】一例によって4x4のLFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【
図11】一例によって8x8のLFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【
図12】一例による画像のデコーディング方法を説明するための図である。
【
図13】一例による画像のエンコーディング方法を説明するための図である。
【
図14】本文書が適用され得るビデオ/画像コーディングシステムの例を概略的に示す。
【
図15】一例に係る画像のデコーディング方法を説明するための図面である。
【
図16】一例に係る画像のエンコーディング方法を説明するための図面である。
【
図17】本文書が適用されるコンテンツストリーミングシステム構造図を例として示す。
【発明を実施するための形態】
【0023】
本文書は、多様な変更を加えることができ、様々な実施形態を有することができ、特定実施形態を図面に例示して詳細に説明しようとする。しかし、これは本文書を特定実施形態に限定しようとするものではない。本明細書で使用する用語は、単に特定の実施形態を説明するために使われたものであって、本文書の技術的思想を限定しようとする意図で使われるものではない。単数の表現は、コンテキスト上明白に異なる意味ではない限り、複数の表現を含む。本明細書において、「含む」または「有する」などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品、またはこれらを組み合わせたものが存在することを指定するものであり、一つまたはそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品、またはこれらを組み合わせたもの等の存在または付加可能性をあらかじめ排除しないと理解されなければならない。
【0024】
一方、本文書で説明される図面上の各構成は、互いに異なる特徴的な機能に関する説明の便宜のために独立的に図示されたものであって、各構成が互いに別個のハードウェアや別個のソフトウェアで具現されるということを意味するものではない。例えば、各構成のうち、二つ以上の構成が結合されて一つの構成をなすこともでき、一つの構成が複数の構成に分けられることもできる。各構成が統合及び/または分離された実施形態も、本文書の本質から逸脱しない限り、本文書の権利範囲に含まれる。
【0025】
以下、添付図面を参照して、本文書の好ましい実施形態をより詳細に説明する。以下、図面上の同じ構成要素に対しては同じ参照符号を使用し、同じ構成要素に対して重複した説明は省略する。
【0026】
この文書は、ビデオ/画像コーディングに関する。例えば、この文書に開示された方法/実施形態は、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標準等)と関連付けられている。
【0027】
この文書ではビデオ/画像コーディングに関する多様な実施形態を提示し、他の言及がない限り、前記実施形態は互いに組み合わせられて実行されることもできる。
【0028】
この文書において、ビデオ(video)は、時間の流れによる一連の画像(image)の集合を意味することができる。ピクチャ(picture)は、一般的に特定時間帯の一つの画像を示す単位を意味し、スライス(slice)/タイル(tile)は、コーディングにおいてピクチャの一部を構成する単位である。スライス/タイルは、一つ以上のCTU(coding tree unit)を含むことができる。一つのピクチャは、一つ以上のスライス/タイルで構成されることができる。一つのピクチャは、一つ以上のタイルグループで構成されることができる。一つのタイルグループは、一つ以上のタイルを含むことができる。
【0029】
ピクセル(pixel)またはペル(pel)は、一つのピクチャ(または、画像)を構成する最小の単位を意味することができる。また、ピクセルに対応する用語として「サンプル(sample)」が使われることができる。サンプルは、一般的にピクセルまたはピクセルの値を示すことができ、ルマ(luma)成分のピクセル/ピクセル値のみを示すこともでき、クロマ(chroma)成分のピクセル/ピクセル値のみを示すこともできる。または、サンプルは、空間ドメインでのピクセル値を意味することもでき、このようなピクセル値が周波数ドメインに変換されると、周波数ドメインでの変換係数を意味することもできる。
【0030】
ユニット(unit)は、画像処理の基本単位を示すことができる。ユニットは、ピクチャの特定領域及び該当領域に関連した情報のうち少なくとも一つを含むことができる。一つのユニットは、一つのルマブロック及び二つのクロマ(例えば、cb、cr)ブロックを含むことができる。ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用して使われることができる。一般的な場合、M×Nブロックは、M個の列とN個の行からなるサンプル(または、サンプルアレイ)または変換係数(transform coefficient)の集合(または、アレイ)を含むことができる。
【0031】
この文書において、「/」と「、」は、「及び/または」と解釈される。例えば、「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.”)
【0032】
追加的に、本文書において、「または」は、「及び/または」と解釈される。例えば、「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.」)
【0033】
本明細書において、「少なくとも一つの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)」と同じく解釈されることができる。
【0034】
また、本明細書において、「少なくとも一つの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)」を意味することができる。
【0035】
また、本明細書で使われる括弧は、「例えば(for example)」を意味することができる。具体的に、「予測(イントラ予測)」で表示された場合、「予測」の一例として「イントラ予測」が提案されたものである。他の表現としては、本明細書の「予測」は、「イントラ予測」に制限(limit)されるものではなく、「イントラ予測」が「予測」の一例として提案されたものである。また、「予測(即ち、イントラ予測)」で表示された場合にも、「予測」の一例として「イントラ予測」が提案されたものである。
【0036】
本明細書において、一つの図面内で個別的に説明される技術的特徴は、個別的に具現されることもでき、同時に具現されることもできる。
【0037】
図1は、本文書が適用されることができるビデオ/画像コーディングシステムの例を概略的に示す。
【0038】
図1を参照すると、ビデオ/画像コーディングシステムは、ソースデバイス及び受信デバイスを含むことができる。ソースデバイスは、エンコーディングされたビデオ(video)/画像(image)情報またはデータをファイルまたはストリーミング形態でデジタル格納媒体またはネットワークを介して受信デバイスに伝達できる。
【0039】
前記ソースデバイスは、ビデオソース、エンコーディング装置、送信部を含むことができる。前記受信デバイスは、受信部、デコーディング装置、及びレンダラを含むことができる。前記エンコーディング装置は、ビデオ/画像エンコーディング装置と呼ばれることができ、前記デコーディング装置は、ビデオ/画像デコーディング装置と呼ばれることができる。送信機は、エンコーディング装置に含まれることができる。受信機は、デコーディング装置に含まれることができる。レンダラは、ディスプレイ部を含むこともでき、ディスプレイ部は、別個のデバイスまたは外部コンポーネントで構成されることもできる。
【0040】
ビデオソースは、ビデオ/画像のキャプチャ、合成または生成過程などを介してビデオ/画像を取得することができる。ビデオソースは、ビデオ/画像キャプチャデバイス及び/またはビデオ/画像生成デバイスを含むことができる。ビデオ/画像キャプチャデバイスは、例えば、一つ以上のカメラ、以前にキャプチャされたビデオ/画像を含むビデオ/画像アーカイブなどを含むことができる。ビデオ/画像生成デバイスは、例えば、コンピュータ、タブレット、及びスマートフォンなどを含むことができ、(電子的に)ビデオ/画像を生成することができる。例えば、コンピュータなどを介して仮想のビデオ/画像が生成されることができ、この場合、関連データが生成される過程にビデオ/画像キャプチャ過程が代替されることができる。
【0041】
エンコーディング装置は、入力ビデオ/画像をエンコーディングすることができる。エンコーディング装置は、圧縮及びコーディング効率のために、予測、変換、量子化など、一連の手順を実行することができる。エンコーディングされたデータ(エンコーディングされたビデオ/画像情報)は、ビットストリーム(bitstream)形態で出力されることができる。
【0042】
送信部は、ビットストリーム形態で出力されたエンコーディングされたビデオ/画像情報またはデータをファイルまたはストリーミング形態でデジタル格納媒体またはネットワークを介して受信デバイスの受信部に伝達できる。デジタル格納媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなど、多様な格納媒体を含むことができる。送信部は、あらかじめ決められたファイルフォーマットを介してメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介した送信のためのエレメントを含むことができる。受信部は、前記ビットストリームを受信/抽出してデコーディング装置に伝達できる。
【0043】
デコーディング装置は、エンコーディング装置の動作に対応する逆量子化、逆変換、予測など、一連の手順を実行してビデオ/画像をデコーディングすることができる。
【0044】
レンダラは、デコーディングされたビデオ/画像をレンダリングすることができる。レンダリングされたビデオ/画像は、ディスプレイ部を介してディスプレイされることができる。
【0045】
図2は、本文書が適用されることができるビデオ/画像エンコーディング装置の構成を概略的に説明する図である。以下、ビデオエンコーディング装置とは、画像エンコーディング装置を含むことができる。
【0046】
図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)または復元ブロック生成部(recontructged block generator)と呼ばれることができる。前述した画像分割部210、予測部220、レジデュアル処理部230、エントロピーエンコーディング部240、加算部250、及びフィルタリング部260は、実施形態によって一つ以上のハードウェアコンポーネント(例えば、エンコーディングチップセットまたはプロセッサ)により構成されることができる。また、メモリ270は、DPB(decoded picture buffer)を含むことができ、デジタル格納媒体により構成されることもできる。前記ハードウェアコンポーネントは、メモリ270を内/外部コンポーネントとしてさらに含むこともできる。
【0047】
画像分割部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)を誘導する単位である。
【0048】
ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用して使われることができる。一般的な場合、M×Nブロックは、M個の列とN個の行からなるサンプルまたは変換係数(transform coefficient)の集合を示すことができる。サンプルは、一般的にピクセルまたはピクセルの値を示すことができ、輝度(luma)成分のピクセル/ピクセル値のみを示すこともでき、彩度(chroma)成分のピクセル/ピクセル値のみを示すこともできる。サンプルは、一つのピクチャ(または、画像)をピクセル(pixel)またはペル(pel)に対応する用語として使われることができる。
【0049】
減算部231は、入力画像信号(原本ブロック、原本サンプルまたは原本サンプルアレイ)から、予測部220から出力された予測信号(予測されたブロック、予測サンプルまたは予測サンプルアレイ)を減算してレジデュアル信号(レジデュアルブロック、レジデュアルサンプルまたはレジデュアルサンプルアレイ)を生成することができ、生成されたレジデュアル信号は、変換部232に送信される。予測部220は、処理対象ブロック(以下、現在ブロックという)に対する予測を実行し、前記現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部220は、現在ブロックまたはCU単位でイントラ予測が適用されるか、または、インター予測が適用されるかを決定することができる。予測部は、各予測モードに対する説明で後述するように、予測モード情報など、予測に関する多様な情報を生成してエントロピーエンコーディング部240に伝達できる。予測に関する情報は、エントロピーエンコーディング部240でエンコーディングされてビットストリーム形態で出力されることができる。
【0050】
イントラ予測部222は、現在ピクチャ内のサンプルを参照して現在ブロックを予測することができる。前記参照されるサンプルは、予測モードによって、前記現在ブロックの隣接(neighbor)に位置することもでき、または離れて位置することもできる。イントラ予測で、予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。非方向性モードは、例えば、DCモード及びプラナーモード(Planarモード)を含むことができる。方向性モードは、予測方向の細かい程度によって、例えば、33個の方向性予測モードまたは65個の方向性予測モードを含むことができる。ただし、これは例示に過ぎず、設定によってそれ以上またはその以下の個数の方向性予測モードが使われることができる。イントラ予測部222は、隣接ブロックに適用された予測モードを利用して、現在ブロックに適用される予測モードを決定することもできる。
【0051】
インター予測部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)をシグナリングすることで、現在ブロックの動きベクトルを指示することができる。
【0052】
予測部220は、後述する多様な予測方法に基づいて予測信号を生成することができる。例えば、予測部は、一つのブロックに対する予測のために、イントラ予測またはインター予測を適用することができるだけでなく、イントラ予測とインター予測を同時に適用できる。これはcombined inter and intra prediction(CIIP)と呼ばれることができる。また、予測部は、ブロックに対する予測のために、イントラブロックコピー(intra block copy、IBC)を実行することもできる。前記イントラブロックコピーは、例えば、SCC(screen content coding)などのように、ゲームなどのコンテンツ画像/動画像コーディングのために使われることができる。IBCは、基本的に現在ピクチャ内で予測を実行するが、現在ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。即ち、IBCは、本文書で説明されるインター予測技法のうち少なくとも一つを利用することができる。
【0053】
インター予測部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)を利用して予測信号を生成し、それに基づいて取得される変換を意味する。また、変換過程は、正方形の同じ大きさを有するピクセルブロックに適用されることもでき、正方形でない可変大きさのブロックに適用されることもできる。
【0054】
量子化部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に含まれることもできる。
【0055】
量子化部233から出力された量子化された変換係数は、予測信号を生成するために利用されることができる。例えば、量子化された変換係数に逆量子化部234及び逆変換部235を介して逆量子化及び逆変換を適用することによって、レジデュアル信号(レジデュアルブロックまたはレジデュアルサンプル)を復元することができる。加算部250は、復元されたレジデュアル信号を予測部220から出力された予測信号に加えることによって復元(reconstructed)信号(復元ピクチャ、復元ブロック、復元サンプルまたは復元サンプルアレイ)が生成されることができる。スキップモードが適用された場合のように処理対象ブロックに対するレジデュアルがない場合、予測されたブロックが復元ブロックとして使われることができる。生成された復元信号は、現在ピクチャ内の次の処理対象ブロックのイントラ予測のために使われることができ、後述するようにフィルタリングを経て次のピクチャのインター予測のために使われることもできる。
【0056】
一方、ピクチャエンコーディング及び/または復元過程でLMCS(luma mapping with chroma scaling)が適用されることもできる。
【0057】
フィルタリング部260は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部260は、復元ピクチャに多様なフィルタリング方法を適用して修正された(modified)復元ピクチャを生成することができ、前記修正された復元ピクチャをメモリ270、具体的に、メモリ270のDPBに格納することができる。前記多様なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset、SAO)、適応的ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。フィルタリング部260は、各フィルタリング方法に対する説明で後述するように、フィルタリングに関する多様な情報を生成してエントロピーエンコーディング部240に伝達できる。フィルタリング関する情報は、エントロピーエンコーディング部240でエンコーディングされてビットストリーム形態で出力されることができる。
【0058】
メモリ270に送信された修正された復元ピクチャは、インター予測部221で参照ピクチャとして使われることができる。エンコーディング装置は、これを介してインター予測が適用される場合、エンコーディング装置200とデコーディング装置での予測ミスマッチを避けることができ、符号化効率も向上させることができる。
【0059】
メモリ270のDPBは、修正された復元ピクチャをインター予測部221での参照ピクチャとして使用するために格納することができる。メモリ270は、現在ピクチャ内の動き情報が導出された(または、エンコーディングされた)ブロックの動き情報及び/または既に復元されたピクチャ内のブロックの動き情報を格納することができる。前記格納された動き情報は、空間的隣接ブロックの動き情報または時間的隣接ブロックの動き情報として活用するためにインター予測部221に伝達できる。メモリ270は、現在ピクチャ内の復元されたブロックの復元サンプルを格納することができ、イントラ予測部222に伝達できる。
【0060】
図3は、本文書が適用されることができるビデオ/画像デコーディング装置の構成を概略的に説明する図である。
【0061】
図3を参照すると、デコーディング装置300は、エントロピーデコーディング部(entropy decoder)310、レジデュアル処理部(residual processor)320、予測部(predictor)330、加算部(adder)340、フィルタリング部(filter)350、及びメモリ(memoery)360を含んで構成されることができる。予測部330は、インター予測部332及びイントラ予測部331を含むことができる。レジデュアル処理部320は、逆量子化部(dequantizer)321及び逆変換部(inverse transformer)322を含むことができる。前述したエントロピーデコーディング部310、レジデュアル処理部320、予測部330、加算部340、及びフィルタリング部350は、実施形態によって一つのハードウェアコンポーネント(例えば、デコーディングチップセットまたはプロセッサ)により構成されることができる。また、メモリ360は、DPB(decoded picture buffer)を含むことができ、デジタル格納媒体により構成されることもできる。前記ハードウェアコンポーネントは、メモリ360を内/外部コンポーネントとしてさらに含むこともできる。
【0062】
ビデオ/画像情報を含むビットストリームが入力される場合、デコーディング装置300は、
図2のエンコーディング装置でビデオ/画像情報が処理されたプロセスに対応して画像を復元することができる。例えば、デコーディング装置300は、前記ビットストリームから取得したブロック分割関連情報に基づいてユニット/ブロックを導出することができる。デコーディング装置300は、エンコーディング装置で適用された処理ユニットを利用してデコーディングを実行することができる。したがって、デコーディングの処理ユニットは、例えば、コーディングユニットであり、コーディングユニットは、コーディングツリーユニットまたは最大コーディングユニットから、クアッドツリー構造、バイナリツリー構造及び/またはターナリツリー構造によって分割されることができる。コーディングユニットから一つ以上の変換ユニットが導出されることができる。そして、デコーディング装置300を介してデコーディング及び出力された復元画像信号は、再生装置を介して再生されることができる。
【0063】
デコーディング装置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のうち少なくとも一つを含むことができる。
【0064】
逆量子化部321では量子化された変換係数を逆量子化して変換係数を出力することができる。逆量子化部321は、量子化された変換係数を2次元のブロック形態で再整列できる。この場合、前記再整列は、エンコーディング装置で実行された係数スキャン順序に基づいて再整列を実行することができる。逆量子化部321は、量子化パラメータ(例えば、量子化ステップサイズ情報)を利用して量子化された変換係数に対する逆量子化を実行し、変換係数(transform coefficient)を取得することができる。
【0065】
逆変換部322では変換係数を逆変換してレジデュアル信号(レジデュアルブロック、レジデュアルサンプルアレイ)を取得するようになる。
【0066】
予測部は、現在ブロックに対する予測を実行し、前記現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部は、エントロピーデコーディング部310から出力された前記予測に関する情報に基づいて、前記現在ブロックにイントラ予測が適用されるか、または、インター予測が適用されるかを決定することができ、具体的なイントラ/インター予測モードを決定することができる。
【0067】
予測部は、後述する多様な予測方法に基づいて予測信号を生成することができる。例えば、予測部は、一つのブロックに対する予測のためにイントラ予測またはインター予測を適用することができるだけでなく、イントラ予測とインター予測を同時に適用することもできる。これはcombined inter and intra prediction(CIIP)と呼ばれることができる。また、予測部は、ブロックに対する予測のためにイントラブロックコピー(intra block copy、IBC)を実行することもできる。前記イントラブロックコピーは、例えば、SCC(screen content coding)などのように、ゲームなどのコンテンツ画像/動画像コーディングのために使われることができる。IBCは、基本的に現在ピクチャ内で予測を実行するが、現在ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。即ち、IBCは、本文書で説明されるインター予測技法のうち少なくとも一つを利用することができる。
【0068】
イントラ予測部331は、現在ピクチャ内のサンプルを参照して現在ブロックを予測することができる。前記参照されるサンプルは、予測モードによって、前記現在ブロックの隣接(neighbor)に位置することもでき、または離れて位置することもできる。イントラ予測で、予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。イントラ予測部331は、隣接ブロックに適用された予測モードを利用し、現在ブロックに適用される予測モードを決定することもできる。
【0069】
インター予測部332は、参照ピクチャ上で動きベクトルにより特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックに対する予測されたブロックを誘導することができる。このとき、インター予測モードで送信される動き情報の量を減らすために、隣接ブロックと現在ブロックとの間の動き情報の相関性に基づいて動き情報をブロック、サブブロック、またはサンプル単位で予測できる。前記動き情報は、動きベクトル及び参照ピクチャインデックスを含むことができる。前記動き情報は、インター予測方向(L0予測、L1予測、Bi予測等)情報をさらに含むことができる。インター予測の場合、隣接ブロックは、現在ピクチャ内に存在する空間的隣接ブロック(spatial neighboring block)と、参照ピクチャに存在する時間的隣接ブロック(temporal neighboring block)と、を含むことができる。例えば、インター予測部332は、隣接ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて、前記現在ブロックの動きベクトル及び/または参照ピクチャインデックスを導出することができる。多様な予測モードに基づいてインター予測が実行されることができ、前記予測に関する情報は、前記現在ブロックに対するインター予測のモードを指示する情報を含むことができる。
【0070】
加算部340は、取得されたレジデュアル信号を、予測部330から出力された予測信号(予測されたブロック、予測サンプルアレイ)に加えることによって復元信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合のように処理対象ブロックに対するレジデュアルがない場合、予測されたブロックが復元ブロックとして使われることができる。
【0071】
加算部340は、復元部または復元ブロック生成部と呼ばれることができる。生成された復元信号は、現在ピクチャ内の次の処理対象ブロックのイントラ予測のために使われることができ、後述するように、フィルタリングを経て出力されることもでき、または、次のピクチャのインター予測のために使われることもできる。
【0072】
一方、ピクチャデコーディング過程でLMCS(luma mapping with chroma scaling)が適用されることもできる。
【0073】
フィルタリング部350は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部350は、復元ピクチャに多様なフィルタリング方法を適用することで、修正された(modified)復元ピクチャを生成することができ、前記修正された復元ピクチャをメモリ360、具体的に、メモリ360のDPBに送信できる。前記多様なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。
【0074】
メモリ360のDPBに格納された(修正された)復元ピクチャは、インター予測部332で参照ピクチャとして使われることができる。メモリ360は、現在ピクチャ内の動き情報が導出された(または、デコーディングされた)ブロックの動き情報及び/または既に復元されたピクチャ内のブロックの動き情報を格納することができる。前記格納された動き情報は、空間的隣接ブロックの動き情報または時間的隣接ブロックの動き情報として活用するために、インター予測部332に伝達できる。メモリ360は、現在ピクチャ内の復元されたブロックの復元サンプルを格納することができ、イントラ予測部331に伝達できる。
【0075】
本明細書において、デコーディング装置300の予測部330、逆量子化部321、逆変換部322、及びフィルタリング部350などで説明された実施形態は、各々、エンコーディング装置200の予測部220、逆量子化部234、逆変換部235、及びフィルタリング部260などにも同一または対応されるように適用されることができる。
【0076】
前述したように、ビデオコーディングを実行するにあたって、圧縮効率を上げるために予測を実行する。これを介してコーディング対象ブロックである現在ブロックに対する予測サンプルを含む予測されたブロックを生成することができる。ここで、前記予測されたブロックは、空間ドメイン(または、ピクセルドメイン)での予測サンプルを含む。前記予測されたブロックは、エンコーディング装置及びデコーディング装置で同じく導出され、前記エンコーディング装置は、原本ブロックの原本サンプル値自体でない前記原本ブロックと前記予測されたブロックとの間のレジデュアルに対する情報(レジデュアル情報)をデコーディング装置にシグナリングすることで画像コーディング効率を上げることができる。デコーディング装置は、前記レジデュアル情報に基づいてレジデュアルサンプルを含むレジデュアルブロックを導出し、前記レジデュアルブロックと前記予測されたブロックとを合わせて復元サンプルを含む復元ブロックを生成することができ、復元ブロックを含む復元ピクチャを生成することができる。
【0077】
前記レジデュアル情報は、変換及び量子化手順を介して生成されることができる。例えば、エンコーディング装置は、前記原本ブロックと前記予測されたブロックとの間のレジデュアルブロックを導出し、前記レジデュアルブロックに含まれているレジデュアルサンプル(レジデュアルサンプルアレイ)に変換手順を実行して変換係数を導出し、前記変換係数に量子化手順を実行して量子化された変換係数を導出して関連したレジデュアル情報を(ビットストリームを介して)デコーディング装置にシグナリングできる。ここで、前記レジデュアル情報は、前記量子化された変換係数の値情報、位置情報、変換技法、変換カーネル、量子化パラメータなどの情報を含むことができる。デコーディング装置は、前記レジデュアル情報に基づいて逆量子化/逆変換手順を実行してレジデュアルサンプル(または、レジデュアルブロック)を導出することができる。デコーディング装置は、予測されたブロックと前記レジデュアルブロックとに基づいて復元ピクチャを生成することができる。また、エンコーディング装置は、以後ピクチャのインター予測のための参照のために量子化された変換係数を逆量子化/逆変換してレジデュアルブロックを導出し、これに基づいて復元ピクチャを生成することができる。
【0078】
図4は、本文書にかかる多重変換技法を概略的に示す。
【0079】
図4を参照すると、変換部は、前述した
図2のエンコーディング装置内の変換部に対応し得、逆変換部は、前述した
図2のエンコーディング装置内の逆変換部又は
図3のデコーディング装置内の逆変換部に対応し得る。
【0080】
変換部は、レジデュアルブロック内のレジデュアルサンプル(レジデュアルサンプルアレイ)に基づいて1次変換を行って、(1次)変換係数を導出することができる(S410)。このような1次変換(primary transform)は、核心変換(core transform)と指称され得る。ここで、前記1次変換は、多重変換選択(Multiple Transform Selection、MTS)に基づき得、1次変換として多重変換が適用される場合、多重核心変換と指称され得る。
【0081】
多重核心変換は、DCT(Discrete Cosine Transform)タイプ2、DST(Discrete Sine Transform)タイプ7、DCTタイプ8、及び/又はDSTタイプ1をさらに使用して変換する方式を示すことができる。すなわち、前記多重核心変換は、前記DCTタイプ2、前記DSTタイプ7、前記DCTタイプ8、及び前記DSTタイプ1のうち選択された複数の変換カーネルに基づいて、空間ドメインのレジデュアル信号(又はレジデュアルブロック)を周波数ドメインの変換係数(又は1次変換係数)に変換する変換方法を示すことができる。ここで、前記1次変換係数は、変換部の立場で仮の変換係数と呼ばれ得る。
【0082】
言い換えると、既存の変換方法が適用される場合、DCTタイプ2に基づいて、レジデュアル信号(又はレジデュアルブロック)に対する空間ドメインから周波数ドメインへの変換が適用されて、変換係数が生成できた。これと異なり、前記多重核心変換が適用される場合、DCTタイプ2、DSTタイプ7、DCTタイプ8、及び/又はDSTタイプ1等に基づいて、レジデュアル信号(又はレジデュアルブロック)に対する空間ドメインから周波数ドメインへの変換が適用されて、変換係数(又は1次変換係数)が生成できる。ここで、DCTタイプ2、DSTタイプ7、DCTタイプ8、及びDSTタイプ1等は、変換タイプ、変換カーネル(kernel)又は変換コア(core)と呼ばれ得る。このようなDCT/DST変換タイプは、基底関数に基づいて定義されることができる。
【0083】
前記多重核心変換が実行される場合、前記変換カーネルのうち、対象ブロックに対する垂直変換カーネル及び水平変換カーネルが選択でき、前記垂直変換カーネルに基づいて前記対象ブロックに対する垂直変換が実行され、前記水平変換カーネルに基づいて前記対象ブロックに対する水平変換が実行されることができる。ここで、前記水平変換は、前記対象ブロックの水平成分に対する変換を示すことができ、前記垂直変換は、前記対象ブロックの垂直成分に対する変換を示すことができる。前記垂直変換カーネル/水平変換カーネルは、レジデュアルブロックを含む対象ブロック(CU又はサブブロック)の予測モード及び/又は変換インデックスに基づいて、適応的に決定されることができる。
【0084】
また、一例によると、MTSを適用して1次変換を実行する場合、特定の基底関数を所定の値に設定し、垂直変換又は水平変換であるとき、どの基底関数が適用されるか否かを組み合わせて、変換カーネルに対するマッピング関係を設定することができる。例えば、水平方向の変換カーネルをtrTypeHorで示し、垂直方向の変換カーネルをtrTypeVerで示す場合、trTypeHor又はtrTypeVerの値0はDCT2に設定され、trTypeHor又はtrTypeVerの値1はDST7に設定され、trTypeHor又はtrTypeVerの値2はDCT8に設定されることができる。
【0085】
この場合、多数の変換カーネルセットのいずれかを指示するために、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であることを指示することができる。
【0086】
一例によって、MTSのインデックス情報による変換カーネルセットを表で示すと、次の通りである。
【0087】
【0088】
変換部は、前記(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)領域に対して適用されることもできる。
【0089】
具体的に、例えば、4×4の入力ブロックが使用される場合、非分離2次変換は次のように実行されることができる。
【0090】
前記4×4の入力ブロックXは、次のように示されることができる。
【0091】
【0092】
前記Xをベクトルの形態で示す場合、ベクトル
は、次のように示されることができる。
【0093】
【0094】
数式2のように、ベクトル
は、行優先(row-first)の順序によって、数式1におけるXの2次元ブロックを1次元ベクトルに再配列する。
【0095】
この場合、前記2次非分離変換は、次のように計算されることができる。
【0096】
【0097】
ここで、
は、変換係数ベクトルを示し、Tは、16×16の(非分離)変換マトリックスを示す。
【0098】
前記数式3を介して、16×1の変換係数ベクトル
が導出でき、前記
は、スキャン順序(水平、垂直、対角(diagonal)等)を介して、4×4ブロックで再構成(re-organized)できる。但し、前述した計算は例示であって、非分離2次変換の計算複雑度を減らすために、HyGT(Hypercube-Givens Transform)等が非分離2次変換の計算のために使用されることもできる。
【0099】
一方、前記非分離2次変換は、モードベース(mode dependent)として変換カーネル(又は変換コア、変換タイプ)が選択できる。ここで、モードは、イントラ予測モード及び/又はインター予測モードを含むことができる。
【0100】
前述したように、前記非分離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行列になり得る。
【0101】
そのとき、モードベースの変換カーネルの選択のために、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変換カーネルが含まれ得る。
【0102】
但し、前記変換のサイズ、すなわち、変換が適用される領域のサイズは例示として8×8又は4×4以外のサイズが使用され得、前記セットの数はn個、各セット内の変換カーネルの数はk個であり得る。
【0103】
前記変換セットは、NSSTセット又はLFNSTセットと呼ばれ得る。前記変換セットのうちの特定セットの選択は、例えば、現在ブロック(CU又はサブブロック)のイントラ予測モードに基づいて実行されることができる。LFNST(Low-Frequency Non-Separable Transform)は、後述される減少した非分離変換の一例であり得、低周波成分に対する非分離変換を示す。
【0104】
参考までに、例えば、イントラ予測モードは、2個の非方向性(non-directinoal、又は非角度性(non-angular))イントラ予測モードと65個の方向性(directional、又は角度性(angular))イントラ予測モードとを含むことができる。前記非方向性イントラ予測モードは、0番であるプラナー(planar)イントラ予測モード及び1番であるDCイントラ予測モードを含むことができ、前記方向性イントラ予測モードは、2番乃至66番の65個のイントラ予測モードを含むことができる。但し、これは例示であって、本文書は、イントラ予測モードの数が異なる場合にも適用できる。一方、場合に応じて、67番のイントラ予測モードがさらに使用でき、前記67番のイントラ予測モードは、LM(linear model)モードを示すことができる。
【0105】
図5は、65個の予測方向のイントラ方向性モードを例示的に示す。
【0106】
図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次元ブロックのデータMxNに対して、行が列となり、列が行となり、NxMのデータを構成することを意味する。18番のイントラ予測モードと50番のイントラ予測モードとは、それぞれ水平イントラ予測モード(horizontal intra prediction mode)、垂直イントラ予測モード(vertical intra prediction mode)を示し、2番のイントラ予測モードは、左側の参照ピクセルをもって右上側方向と予測するので、右上側対角のイントラ予測モードと呼ばれ得、同じ脈絡で34番のイントラ予測モードは、右下側対角のイントラ予測モード、66番のイントラ予測モードは、左下側対角のイントラ予測モードと呼ばれ得る。
【0107】
一例によって、イントラ予測モードによって、4個の変換セットのマッピング(mapping)は、例えば、次の表のように示され得る。
【0108】
【0109】
表2のように、イントラ予測モードによって4個の変換セットのいずれか、すなわち、lfnstTrSetIdxが0から3、すなわち、4個のいずれかにマッピングされることができる。
【0110】
一方、非分離変換に特定セットが使用されるものと決定されると、非分離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個の変換カーネルを指すことができる。
【0111】
変換部は、選択された変換カーネルに基づいて前記非分離2次変換を実行し、修正された(2次)変換係数を獲得することができる。前記修正された変換係数は、前述したように量子化部を介して量子化された変換係数で導出されることができ、エンコーディングされて、デコーディング装置にシグナリング及びエンコーディング装置内の逆量子化/逆変換部に伝達されることができる。
【0112】
一方、前述したように2次変換が省略される場合、前記1次(分離)変換の出力である(1次)変換係数が、前述したように量子化部を介して量子化された変換係数で導出されることができ、エンコーディングされて、デコーディング装置にシグナリング及びエンコーディング装置内の逆量子化/逆変換部に伝達されることができる。
【0113】
逆変換部は、前述した変換部で実行された手順の逆順で一連の手順を実行することができる。逆変換部は、(逆量子化された)変換係数を受信し、2次(逆)変換を実行して(1次)変換係数を導出し(S450)、前記(1次)変換係数に対して1次(逆)変換を実行し、レジデュアルブロック(レジデュアルサンプル)を獲得することができる(S460)。ここで、前記1次変換係数は、逆変換部の立場で、修正された(modified)変換係数と呼ばれ得る。エンコーディング装置及びデコーディング装置は、前記レジデュアルブロックと予測されたブロックとに基づいて復元ブロックを生成し、これに基づいて復元ピクチャを生成できることは前述した通りである。
【0114】
一方、デコーディング装置は、2次逆変換適用可否決定部(又は2次逆変換の適用可否を決定する要素)と、2次逆変換決定部(又は2次逆変換を決定する要素)をさらに含むことができる。2次逆変換適用可否決定部は、2次逆変換の適用可否を決定することができる。例えば、2次逆変換は、NSST、RST又はLFNSTであり得、2次逆変換適用可否決定部は、ビットストリームからパーシングした2次変換フラグに基づいて、2次逆変換の適用可否を決定することができる。別の一例として、2次逆変換適用可否決定部は、レジデュアルブロックの変換係数に基づいて、2次逆変換の適用可否を決定することもできる。
【0115】
2次逆変換決定部は、2次逆変換を決定することができる。そのとき、2次逆変換決定部は、イントラ予測モードによって指定されたLFNST(NSST又はRST)変換セットに基づいて、現在ブロックに適用される2次逆変換を決定することができる。また、一実施形態として、1次変換決定方法に依存的に(depend on)2次変換決定方法が決定できる。イントラ予測モードによって1次変換と2次変換の多様な組み合わせが決定できる。また、一例として、2次逆変換決定部は、現在ブロックの大きさに基づいて、2次逆変換が適用される領域を決定することもできる。
【0116】
一方、前述したように、2次(逆)変換が省略される場合、(逆量子化された)変換係数を受信し、前記1次(分離)逆変換を実行してレジデュアルブロック(レジデュアルサンプル)を獲得することができる。エンコーディング装置及びデコーディング装置は、前記レジデュアルブロックと予測されたブロックに基づいて復元ブロックを生成し、これに基づいて復元ピクチャを生成できることは前述した通りである。
【0117】
一方、本文書においては、非分離2次変換に伴われる計算量とメモリ要求量の低減のために、NSSTの概念で変換マトリックス(カーネル)の大きさが減少したRST(reduced secondary transform)を適用することができる。
【0118】
一方、本文書で説明された変換カーネル、変換マトリックス、変換カーネルマトリックスを構成する係数、すなわち、カーネル係数又はマトリックス係数は、8ビットで表現され得る。これは、デコーディング装置及びエンコーディング装置で具現するための一つの条件であり得、既存の9ビット又は10ビットと比較し、合理的に受け入れられる性能低下を伴いながら、変換カーネルを格納するためのメモリ要求量を減らすことができる。また、カーネルマトリックスを8ビットで表現することによって、小さい掛け算器を使用でき、最適のソフトウェアの具現のために使用されるSIMD(Single Instruction Multiple Data)命令により好適であり得る。
【0119】
本明細書において、RSTは簡素化ファクター(factor)によって大きさが減少した変換マトリックス(transform matrix)に基づいて、対象ブロックに対するレジデュアルサンプルに対して実行される変換を意味することができる。簡素化変換を実行する場合、変換マトリックスの大きさの減少により、変換時に要求される演算量が減少し得る。すなわち、RSTは、大きさが大きいブロックの変換又は非分離変換時に発生する演算の複雑度(complexity)のイシューを解消するために利用できる。
【0120】
RSTは、減少した変換、減少変換、reduced transform、reduced secondary transform、reduction transform、simplified transform、simple transform等の多様な用語で指称され得、RSTが指称され得る名称は、挙げられた例示に限定されない。或いは、RSTは、主に変換ブロックで0ではない係数を含む低周波領域で行われるので、LFNST(Low-Frequency Non-Separable Transform)と指称されることもある。前記変換インデックスは、LFNSTインデックスと名付けられ得る。
【0121】
一方、2次逆変換がRSTに基づいてなされる場合、エンコーディング装置200の逆変換部235とデコーディング装置300の逆変換部322とは、変換係数に対する逆RSTに基づいて修正された変換係数を導出する逆RST部と、修正された変換係数に対する逆1次変換に基づいて前記対象ブロックに対するレジデュアルサンプルを導出する逆1次変換部とを備えることができる。逆1次変換は、レジデュアルに適用されていた1次変換の逆変換を意味する。本文書において変換に基づいて変換係数を導出することは、当該変換を適用して変換係数を導出することを意味できる。
【0122】
図6は、本文書の一実施形態に係るRSTを説明するための図である。
【0123】
本明細書において、「対象ブロック」は、コーディングが実行される現在ブロック又はレジデュアルブロック又は変換ブロックを意味することができる。
【0124】
一実施形態に係るRSTで、N次元ベクトル(N dimensional vector)が異なる空間に位置したR次元ベクトル(R dimensional vector)にマッピングされ、減少した変換マトリックスが決定でき、ここで、RはNよりも小さい。Nは、変換が適用されるブロックの一辺の長さ(length)の二乗、又は変換が適用されるブロックと対応する変換係数の総個数を意味することができ、簡素化ファクターは、R/N値を意味することができる。簡素化ファクターは、減少したファクター、減少ファクター、reduced factor、reduction factor、simplified factor、simple factor等の多様な用語で指称され得る。一方、Rは、簡素化係数(reduced coefficient)と指称され得るが、場合に応じては、簡素化ファクターがRを意味することもある。また、場合に応じて、簡素化ファクターは、N/R値を意味することもある。
【0125】
一実施形態において、簡素化ファクター又は簡素化係数は、ビットストリームを介してシグナリングできるが、実施形態がこれに限定されるわけではない。例えば、簡素化ファクター又は簡素化係数に対する既に定義された値が各エンコーディング装置200及びデコーディング装置300に格納されていることがあり、この場合、簡素化ファクター又は簡素化係数は、別にシグナリングされないことがある。
【0126】
一実施形態にかかる簡素化変換マトリックスのサイズは、通常の変換マトリックスのサイズNxNよりも小さいRxNであり、下記の数式4のように定義されることができる。
【0127】
【0128】
図6の(a)に示すReduced Transformブロック内のマトリックスTは、数式4のマトリックスT
RxNを意味することができる。
図6の(a)のように、対象ブロックに対するレジデュアルサンプルに対して簡素化変換マトリックスT
RxNが掛けられる場合、対象ブロックに対する変換係数が導出できる。
【0129】
一実施形態において、変換が適用されるブロックのサイズが8x8であり、R=16(すなわち、R/N=16/64=1/4である)である場合、
図6の(a)によるRSTは、下記の数式5のような行列演算で表現され得る。この場合、メモリと掛け算演算が簡素化ファクターにより略1/4と減少し得る。
【0130】
本文書において行列演算とは、行列を列ベクトルの左側に置いて、行列と列ベクトルを掛けて列ベクトルを得る演算で理解できる。
【0131】
【0132】
数式5において、r1乃至r64は、対象ブロックに対するレジデュアルサンプルを示すことができ、より具体的に、1次変換を適用して生成された変換係数であり得る。数式5の演算結果、対象ブロックに対する変換係数ciが導出でき、ciの導出過程は数式6の通りである。
【0133】
【0134】
数式6の演算結果、対象ブロックに対する変換係数c1乃至cRが導出できる。すなわち、R=16である場合、対象ブロックに対する変換係数c1乃至c16が導出できる。もし、RSTではなく、通常の(regular)変換が適用されて、サイズが64x64(NxN)である変換マトリックスが、サイズが64x1(Nx1)であるレジデュアルサンプルに掛けられたら、対象ブロックに対する変換係数が64個(N個)が導出されるかもしれないが、RSTが適用されたため、対象ブロックに対する変換係数が16個(R個)のみ導出される。対象ブロックに対する変換係数の総個数がN個からR個に減少し、エンコーディング装置200がデコーディング装置300に送信するデータの量が減少するので、エンコーディング装置200-デコーディング装置300の間の送信効率が増加し得る。
【0135】
変換マトリックスのサイズの観点から検討すると、通常の変換マトリックスのサイズは64x64(NxN)であるが、簡素化変換マトリックスのサイズは16x64(RxN)と減少するので、通常の変換を実行する時と比較すると、RSTを実行する時にメモリの使用をR/Nの割合で減少させることができる。また、通常の変換マトリックスを用いる際の掛け算演算の数NxNと比較すると、簡素化変換マトリックスを用いると、掛け算演算の数をR/Nの割合で減少(RxN)させることができる。
【0136】
一実施形態において、エンコーディング装置200の変換部232は、対象ブロックに対するレジデュアルサンプルを1次変換及びRSTベースの2次変換を実行することによって、対象ブロックに対する変換係数を導出することができる。このような変換係数は、デコーディング装置300の逆変換部に伝達されることができ、デコーディング装置300の逆変換部322は、変換係数に対する逆RST(reduced secondary transform)に基づいて修正された変換係数を導出し、修正された変換係数に対する逆1次変換に基づいて、対象ブロックに対するレジデュアルサンプルを導出することができる。
【0137】
一実施形態にかかる逆RSTマトリックスTNxRのサイズは、通常の逆変換マトリックスのサイズNxNよりも小さいNxRであり、数式4に示した簡素化変換マトリックスTRxNとトランスポーズ(transpose)の関係にある。
【0138】
図6の(b)に示したReduced Inv. Transformブロック内のマトリックスT
tは、逆RSTマトリックスT
RxN
Tを意味することができる(上付き文字Tはトランスポーズを意味する)。
図6の(b)のように、対象ブロックに対する変換係数に対して逆RSTマトリックスT
RxN
Tが掛けられる場合、対象ブロックに対する修正された変換係数又は対象ブロックに対するレジデュアルサンプルが導出できる。逆RSTマトリックスT
RxN
Tは、(T
RxN)
T
NxRと表現することもある。
【0139】
より具体的に、2次逆変換に逆RSTが適用される場合には、対象ブロックに対する変換係数に対して逆RSTマトリックスTRxN
Tが掛けられると、対象ブロックに対する修正された変換係数が導出できる。一方、逆1次変換に逆RSTが適用でき、この場合、対象ブロックに対する変換係数に対して逆RSTマトリックスTRxNTが掛けられると、対象ブロックに対するレジデュアルサンプルが導出できる。
【0140】
一実施形態において、逆変換が適用されるブロックのサイズが8x8であり、R=16(すなわち、R/N=16/64=1/4である場合)である場合、
図6の(b)によるRSTは、下記の数式7のような行列演算で表現されることができる。
【0141】
【0142】
数式7において、c1乃至c16は、対象ブロックに対する変換係数を示すことができる。数式7の演算結果、対象ブロックに対する修正された変換係数又は対象ブロックに対するレジデュアルサンプルを示すriが導出でき、riの導出過程は、数式8の通りである。
【0143】
【0144】
数式8の演算結果、対象ブロックに対する修正された変換係数又は対象ブロックに対するレジデュアルサンプルを示すr1乃至rNが導出できる。逆変換マトリックスのサイズの観点から検討すると、通常の逆変換マトリックスのサイズは64x64(NxN)であるが、簡素化逆変換マトリックスのサイズは、64x16(NxR)と減少するので、通常の逆変換を実行する時と比較すると、逆RSTを実行する時にメモリの使用をR/Nの割合で減少させることができる。また、通常の逆変換マトリックスを用いる時の掛け算演算の数NxNと比較すると、簡素化逆変換マトリックスを用いると、掛け算演算の数をR/Nの割合で減少(NxR)させることができる。
【0145】
一方、8x8のRSTに対しても、表2のような変換セットの構成を適用することができる。すなわち、表2での変換セットによって当該8x8のRSTが適用できる。一つの変換セットは、画面内の予測モードによって2個又は3個の変換(カーネル)で構成されているので、2次変換を適用しない場合まで含めて、最大4個の変換のうち一つを選択するように構成されることができる。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領域であり得る。
【0146】
一方、本文書の一実施形態にかかり、エンコーディング過程の変換で、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ベクトルを構成することができる。そのとき、最大16x48の変換カーネルマトリックスを適用して行列演算を行うと、16個の修正された変換係数が生成されるが、16個の修正された変換係数は、スキャニング順序に従って左上側の4x4領域に配置されることができ、右上側の4x4領域と左下側の4x4領域は0で満たされ得る。
【0147】
デコーディング過程の逆変換には、前記述べられた変換カーネルマトリックスのトランスポーズされたマトリックスが使用できる。すなわち、デコーディング装置で実行される逆変換過程で逆RST又はLFNSTが実行される場合、逆RSTを適用する入力係数データは、所定の配列順序に従って1次元ベクトルで構成され、1次元ベクトルに当該逆RSTの行列を左側で掛けて得られた修正された係数ベクトルを所定の配列順序に従って2次元ブロックに配列されることができる。
【0148】
整理すると、変換過程で、8x8領域にRST又はLFNSTが適用される場合、8x8領域の変換係数のうち、8x8領域の右下側領域を除いた左上側、右上側、左下側領域の48個の変換係数と、16x48の変換カーネルマトリックスとの行列演算が実行される。行列演算のために、48個の変換係数は1次元の配列に入力される。このような行列演算が行われると、16個の修正された変換係数が導出され、修正された変換係数は、8x8領域の左上側領域に配列されることができる。
【0149】
逆に、逆変換過程で、8x8領域に逆RST又はLFNSTが適用される場合、8x8領域の変換係数のうち、8x8領域の左上側に対応する16個の変換係数は、スキャニング順序に従って、1次元の配列形態で入力されて、48x16の変換カーネルマトリックスと行列演算されることができる。すなわち、このような場合の行列演算は、(48x16行列)*(16x1変換係数ベクトル)=(48x1修正された変換係数ベクトル)で示すことができる。ここで、nx1ベクトルは、nx1行列のような意味で解釈され得るので、nx1列ベクトルで表記されることもある。また、*は、行列の掛け算演算を意味する。このような行列演算が行われると、48個の修正された変換係数が導出でき、48個の修正された変換係数は、8x8領域の右下側領域を除いた左上側、右上側、左下側領域に配列されることができる。
【0150】
一方、2次逆変換がRSTに基づいてなされる場合、エンコーディング装置200の逆変換部235とデコーディング装置300の逆変換部322とは、変換係数に対する逆RSTに基づいて修正された変換係数を導出する逆RST部と、修正された変換係数に対する逆1次変換に基づいて前記対象ブロックに対するレジデュアルサンプルを導出する逆1次変換部とを備えることができる。逆1次変換は、レジデュアルに適用されていた1次変換の逆変換を意味する。本文書において変換に基づいて変換係数を導出することは、当該変換を適用して変換係数を導出することを意味できる。
【0151】
前述された非分離変換、LFNSTについて具体的にみると、次の通りである。LFNSTは、エンコーディング装置による順方向(forward)変換と、デコーディング装置による逆方向(inverse)変換を含むことができる。
【0152】
エンコーディング装置は、順方向1次変換(primary (core) transform)を適用した後、導出された結果(又は結果の一部)を入力として、順方向2次変換(secondary transform)を適用する。
【0153】
【0154】
前記数式9で、xとyは、それぞれ2次変換の入力と出力であり、Gは、2次変換を示す行列であって、変換基底ベクトル(transform basis vector)は列ベクトルで構成される。逆方向LFNSTの場合、変換行列Gの次元(dimension)を[row数×column数]で表記したとき、順方向LFNSTの場合、行列GのトランスポーズをとったことがGTの次元になる。
【0155】
逆方向LFNSTの場合、行列Gの次元は、[48x16]、[48x8]、[16x16]、[16x8]となり、[48x8]行列と[16x8]行列は、それぞれ[48x16]行列と[16x16]行列の左側から8個の変換基底ベクトルをサンプリングした部分行列である。
【0156】
反面、順方向LFNSTの場合、行列GTの次元は、[16x48]、[8x48]、[16x16]、[8x16]となり、[8x48]行列と[8x16]行列は、それぞれ[16x48]行列と[16x16]行列の上方から8個の変換基底ベクトルをサンプリングした部分行列である。
【0157】
従って、順方向LFNSTの場合、入力xとしては[48x1]ベクトル又は[16x1]ベクトルが可能であり、出力yとしては、[16x1]ベクトル又は[8x1]ベクトルが可能である。ビデオコーディング及びデコーディングにおける順方向1次変換の出力は、2次元(2D)データであるので、入力xとして[48x1]ベクトル又は[16x1]ベクトルを構成するために、順方向変換の出力である2Dデータを適切に配列して1次元ベクトルを構成しなければならない。
【0158】
図7は、一例によって、順方向1次変換の出力データを1次元ベクトルに配列する順序を示した図である。
図7の(a)及び(b)の左側図は、[48x1]ベクトルを作るための順序を示し、
図7の(a)及び(b)の右側図は、[16x1]ベクトルを作るための順序を示す。LFNSTの場合、
図7の(a)及び(b)のような順序で2Dデータを順次に配列し、1次元ベクトルxが得られる。
【0159】
このような順方向1次変換の出力データの配列方向は、現在ブロックのイントラ予測モードによって決定されることができる。例えば、現在ブロックのイントラ予測モードが対角線方向を基準に水平方向であると、順方向1次変換の出力データは、
図7の(a)の順に配列されることができ、現在ブロックのイントラ予測モードが対角線方向を基準に垂直方向であると、順方向1次変換の出力データは、
図7の(b)の順に配列されることができる。
【0160】
一例によって、
図7の(a)及び(b)の配列順序(ordering)と異なる配列順序を適用することができ、
図7の(a)及び(b)の配列順序を適用したときと同じ結果(yベクトル)を導出するためには、行列Gの列ベクトルを当該配列順序に合わせて再配列すればよい。すなわち、xベクトルを構成する各要素に対して、常時同じ変換基底ベクトルと掛けられるようにGの列ベクトルを再配置することができる。
【0161】
数式9を介して導出される出力yは、1次元ベクトルであるので、もし順方向2次変換の結果を入力として処理する構成、例えば、量子化又はレジデュアルコーディングを実行する構成が、入力データとして2次元データが必要であれば、数式9の出力yベクトルは再度2Dデータに適切に配置されなければならない。
【0162】
図8は、一例によって順方向2次変換の出力データを2次元ブロックで配列する順序を示した図である。
【0163】
LFNSTの場合、決められたスキャン順序に従って2Dブロックに配置されることができる。
図8の(a)は、出力yが[16x1]ベクトルである場合、2次元ブロックの16個の位置に対角スキャン(diagonal scan)順序に従って出力値が配置されることを示す。
図8の(b)は、出力yが[8x1]ベクトルである場合、2次元ブロックの8個の位置に対角スキャン順序に従って出力値が配置され、残りの8個の位置には0で満たされることを示す。
図8の(b)のXは、0と満たされることを示す。
【0164】
別の例によって、量子化又はレジデュアルコーディング実行する構成により、出力ベクトルyが処理される順序は、既設定された順序に従って実行されることができるため、
図7のように、出力ベクトルyが2Dブロックに配置されないことがある。但し、レジデュアルコーディングの場合、CG(Coefficient Group)のような2Dブロック(例えば、4x4)単位でデータコーディングが実行でき、この場合、
図7の対角スキャン順序のように特定の順序に従ってデータが配列できる。
【0165】
一方、デコーディング装置は、逆方向の変換のために逆量子化過程等を通じて出力された2次元データを既設定されたスキャン順序に従って羅列し、1次元入力ベクトルであるyを構成することができる。入力ベクトルyは、下記数式により入力ベクトルxに出力されることができる。
【0166】
【0167】
逆方向LFNSTの場合、[16x1]ベクトル又は[8x1]ベクトルである入力ベクトルyにG行列を掛けることによって、出力ベクトルxを導出することができる。逆方向LFNSTの場合、出力ベクトルxは[48x1]ベクトル又は[16x1]ベクトルであり得る。
【0168】
出力ベクトルxは、
図7に示した順序に従って、2次元ブロックに配置されて2次元データに配列され、このような2次元データは、逆方向1次変換の入力データ(又は入力データの一部)になる。
【0169】
従って、逆方向2次変換は、全体的に順方向2次変換の過程と反対であり、逆変換の場合、順方向と異なり、逆方向2次変換を先に適用した後、逆方向1次変換を適用することになる。
【0170】
逆方向LFNSTでは、変換行列Gとして[48x16]行列8個と[16x16]行列8個のうち1つが選択できる。[48x16]行列と[16x16]行列のうち、どの行列を適用するか否かは、ブロックの大きさと形状によって決定される。
【0171】
また、8個の行列は、前述した表2のように4個の変換セットから導出されることができ、各変換セットは、2個の行列で構成されることができる。4個の変換セットのうち、どの変換セットを使用するかはイントラ予測モードによって決定され、より具体的に広角イントラ予測モード(Wide Angle Intra Prediction、WAIP)まで考慮して、拡張されたイントラ予測モード値に基づいて変換セットが決定される。選択された変換セットを構成する2個の行列のうち、どの行列を選択するかはインデックスシグナリング(index signaling)を介して導出される。より具体的に、送信されるインデックス値としては、0、1、2が可能であり、0はLFNSTを適用しないことを指示し、1と2はイントラ予測モード値に基づいて選択された変換セットを構成する2個の変換行列の何れかを指示することができる。
【0172】
図9は、本文書の一実施形態に係る広角イントラ予測モードを示した図である。
【0173】
一般的なイントラ予測モード値は、0~66と81~83までの値を有し得、示したように、WAIPにより拡張されたイントラ予測モード値は、-14~83までの値を有し得る。81~83までの値は、CCLM(Cross Compoonent Linear Model)モードを示し、-14~-1までの値と67~80までの値は、WAIP適用により拡張されたイントラ予測モード値を示す。
【0174】
予測の現在ブロックの幅が高さより大きい場合、だいたい上側の参照ピクセルが予測しようとするブロック内部の位置とさらに近い。従って、右上側(top-right)方向に予測することより左下側(bottom-left)方向に予測することがより正確である。逆に、ブロックの高さが幅より大きい場合は、左側の参照ピクセルが予測しようとするブロック内部の位置とだいたい近い。従って、左下側(bottom-left)方向に予測することより右上側(top-right)方向に予測することがより正確である。従って、広角イントラ予測モードのインデックスでリマッピング、すなわち、モードインデックス変換を適用することが有利である。
【0175】
広角イントラ予測が適用される場合、既存のイントラ予測に対する情報がシグナリングされ、前記情報がパーシングされた後、前記情報が前記広角イントラ予測モードのインデックスでリマッピングされることができる。従って、特定のブロック(例えば、特定サイズの非正方形ブロック)に対する総イントラ予測モードの数は変更されなくてもよく、すなわち、総イントラ予測モードの数は67個であり、前記特定のブロックに対するイントラ予測モードのコーディングは変更されなくてもよい。
【0176】
下記の表3は、イントラ予測モードを広角イントラ予測モードでリマッピングして、修正されたイントラモードを導出する過程を示している。
【0177】
【0178】
表3において、最終的にpredModeIntra変数に拡張されたイントラ予測モード値が格納され、ISP_NO_SPLITは、現在VVC標準に採択されたIntra Sub Partitions(ISP)技術によりCUブロックがサブパーティションに分割されないことを示し、cIdx変数値が0、1、2であることは、各々ルマ、Cb、Crコンポーネントである場合を示す。表3で登場するLog2関数は、ベース(base)が2であるログ値をリターンし、Abs関数は絶対値をリターンする。
【0179】
広角イントラ予測モードのマッピング過程(Wide angle intra prediction mode mapping process)の入力値でイントラ予測モードを指示する変数predModeIntra、変換ブロックの高さ及び幅などが用いられ、出力値は修正されたイントラ予測モード(the modified intra prediction mode predModeIntra)になる。変換ブロック又はコーディングブロックの高さ及び幅がイントラ予測モードのリマッピングのための現在ブロックの高さ及び幅になることができる。そのとき、幅と高 の比率を反映する変数whRatioはAbs(Log2(nW/nH))に設定されることができる。
【0180】
正方形ではないブロックに対して、イントラ予測モードは2つの場合に区分されて修正されることができる。
【0181】
まず、(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)]。
【0182】
前記と異なる場合、(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)]。
【0183】
前述した表2は、LFNSTでWAIPにより拡張されたイントラ予測モード値に基づいて、変換セットがどのように選択されるかを示している。
図9のように、14~33までのモードと35~80までのモードは、モード34を中心に予測方向の観点から互いに対称である。例えば、モード14とモード54は、モード34に該当する方向を中心に対称である。従って、互いに対称となる方向に位置するモード同士は同じ変換セットを適用することになり、表2でもこのような対称性が反映されている。
【0184】
但し、モード54に対する順方向LFNST入力データは、モード14に対する順方向LFNST入力データと対称をなすことを仮定する。例えば、モード14とモード54については、各々
図7の(a)と
図7の(b)に示された配列順序に従って、2次元データを1次元データに再配列することになり、
図7の(a)と
図7の(b)に示された順序のパターンは、モード34の指す方向(対角線方向)を中心に対称であることが分かる。
【0185】
一方、前述したように、[48x16]行列と[16x16]行列のうち、どの変換行列をLFNSTに適用するか否かは、変換対象ブロックの大きさと形状により決定される。
【0186】
図10は、LFNSTが適用されるブロックの形状を示した図である。
図10の(a)は4x4ブロックを、(b)は4x8及び8x4ブロックを、(c)はNが16以上である4xN又はNx4ブロックを、(d)は8x8ブロックを、(e)はM≧8、N≧8であり、N>8又はM>8であるMxNブロックを示している。
【0187】
図10で、太い枠を有するブロックが、LFNSTが適用される領域を指す。
図10の(a)及び(b)のブロックについては、左上側(top-left)の4x4領域に対してLFNSTが適用され、
図10の(c)のブロックに対しては、連続して配置された2個の左上側の4x4領域に対して、それぞれLFNSTが適用される。
図10の(a)、(b)、(c)では、4x4領域の単位でLFNSTが適用されるので、このようなLFNSTを以下「4x4のLFNST」と名づけることとし、当該変換行列としては、数式9及び数式10のGに対する行列次元を基準[16x16]又は[16x8]行列が適用できる。
【0188】
より具体的に、
図10の(a)の4x4ブロック(4x4TU又は4x4CU)に対しては[16x8]行列が適用され、
図10の(b)及び(c)におけるブロックに対しては[16x16]行列が適用される。これは、最悪の場合(worst case)に対する計算複雑度をサンプル当たり8掛け算(8 multiplications per sample)に合わせるためである。
【0189】
図10の(d)及び(e)については、左上側の8x8領域に対してLFNSTが適用され、このようなLFNSTを以下「8x8のLFNST」と名付けることとする。当該変換行列としては、[48x16]又は[48x8]行列が適用できる。順方向LFNSTの場合、入力データとして[48x1]ベクトル(数式9のxベクトル)が入力されるので、左上側の8x8領域の全てのサンプル値が順方向LFNSTの入力値として使用されない。すなわち、
図7の(a)の左側順序又は
図7の(b)の左側順序で見るように、右下側(bottom-right)の4x4ブロックはそのまま置いて、残りの3個の4x4ブロックに属したサンプルに基づいて、[48x1]ベクトルを構成することができる。
【0190】
図10の(d)における8x8ブロック(8x8TU又は8x8CU)に[48x8]行列が適用され、
図10の(e)における8x8ブロックに[48x16]行列が適用できる。これもやはり、最悪の場合(worst case)に対する計算複雑度をサンプル当たり8掛け算(8 multiplications per sample)に合わせるためである。
【0191】
ブロックの形状に応じて、これに対応する順方向LFNST(4x4LFNST又は8x8LFNST)が適用されると、8個又は16個の出力データ(数式9におけるyベクトル、[8x1]又は[16x1]ベクトル)が生成され、順方向LFNSTでは、行列GTの特性上、出力データの数が入力データの数よりも等しいか少なくなる。
【0192】
図11は、一例によって順方向LFNSTの出力データの配置を示した図面であり、ブロック形状に沿って順方向LFNSTの出力データが配置されるブロックを示す。
【0193】
図11に示したブロックの左上側に陰影で処理された領域が順方向LFNSTの出力データが位置する領域に当該し、0で表記された位置は0値で満たされるサンプルを示し、残りの領域は、順方向LFNSTにより変更されない領域を示す。LFNSTにより変更されない領域には、順方向1次変換の出力データが変更されずにそのまま存在する。
【0194】
前述したように、ブロックの形状に応じて適用される変換行列の次元が変わるので、出力データの数も変わる。
図11のように、順方向LFNSTの出力データが左上側4x4ブロックを全て満たさないこともある。
図11の(a)及び(d)の場合、太い線で表示されたブロック又はブロック内部の一部領域には、それぞれ[16x8]行列と[48x8]行列が適用されて、順方向LFNSTの出力で[8x1]ベクトルが生成される。すなわち、
図8の(b)に示したスキャン順序に従って、8個の出力データのみ
図11の(a)及び(d)のように満たされ、残りの8個の位置に対しては0が満たされることができる。
図10の(d)のLFNSTの適用ブロックの場合、
図11の(d)のように左上側の4x4ブロックに隣接した右上側及び左下側の2個の4x4ブロックも0値で満たされる。
【0195】
前記のように、基本的にLFNSTインデックスをシグナリングし、LFNSTの適用可否、及び適用する変換行列を指定することになる。
図11に示したように、LFNSTが適用される場合、順方向LFNSTの出力データの数が入力データの数よりも等しいか少ないことがあるため、0値で満たされる領域が次のように発生する。
【0196】
1)
図11の(a)のように、左上側の4x4ブロック内にスキャン順序上8番目以降の位置、すなわち、9番目から16番目までのサンプル
【0197】
2)
図11の(d)及び(e)のように、[16×48]行列又は[8×48]行列が適用されて左上側の4×4ブロックに隣接した2つの4×4ブロック又はスキャン順序上の2番目と3番目の4×4ブロック
【0198】
従って、前記1)と2)の領域をチェックし、0ではない(non-zero)データが存在することになると、LFNSTが適用されていないことが確実であるため、当該LFNSTインデックスのシグナリングを省略することができるようになる。
【0199】
一方、採択されたLFNSTについて、次のような単純化方法が適用できる。
【0200】
(i)一例によって、順方向LFNSTに対する出力データの数を最大16個に限定することができる。
【0201】
図10の(c)の場合、左上側に隣接した2個の4x4領域に各々4x4のLFNSTが適用され、このとき、最大32個のLFNST出力データが生成できる。もし、順方向LFNSTに対する出力データの数を最大16に限定すると、4xN/Nx4 (N≧16)ブロック(TU又はCU)に対しても左上側に存在する1個の4x4領域に対してのみ4x4のLFNSTを適用し、
図10の全てのブロックに対してLFNSTを一度だけ適用できる。これを通じて、画像コーディングに対する実現が単純になる。
【0202】
図12は、一例によって順方向LFNSTに対する出力データの数を最大16個に限定したことを示す。
図12のように、Nが16以上である4xN又はNx4ブロックで最左上側4x4領域に対してLFNSTが適用されると、順方向LFNSTの出力データは16個になる。
【0203】
(ii)一例によって、LFNSTが適用されない領域に対してさらにゼロアウト(zero-out)を適用することができる。本文書において、ゼロアウトは特定の領域に属した全ての位置の値を0値で満たすことを意味し得る。すなわち、LFNSTにより変更されず、順方向1次変換の結果を維持している領域に対してもゼロアウトを適用することができる。前述したように、LFNSTは4x4のLFNSTと8x8のLFNSTとに区分されるので、次のように2種類((ii)-(A)及び(ii)-(B))にゼロアウトを区分することができる。
【0204】
(ii)-(A)4x4のLFNSTが適用されるとき、4x4のLFNSTが適用されない領域をゼロアウトすることができる。
図13は、一例によって、4x4のLFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【0205】
図13のように、4x4のLFNSTが適用されるブロックに対して、すなわち、
図11の(a)、(b)及び(c)のブロックに対してLFNSTが適用されない領域まですべて0で満たされ得る。
【0206】
一方、
図13の(d)は、
図12のように順方向LFNSTの出力データの数の最大値を16に限定した場合、4x4のLFNSTが適用されない残りのブロックに対してゼロアウトを実行したことを示す。
【0207】
(ii)-(B)8x8のLFNSTが適用されるとき、8x8のLFNSTが適用されない領域をゼロアウトすることができる。
図14は、一例によって、8x8のLFNSTが適用されるブロックにおけるゼロアウトを示す図である。
【0208】
図14のように、8x8のLFNSTが適用されるブロックに対して、すなわち、
図11の(d)及び(e)のブロックに対してLFNSTが適用されない領域まですべて0で満たされ得る。
【0209】
(iii)前記(ii)で提示したゼロアウトによりLFNSTが適用されるとき、0で満たされる領域が変わり得る。従って、前記(ii)で提案されたゼロアウトによって、0ではないデータが存在するかどうかを
図11のLFNSTの場合よりも広い領域に対してチェックすることができる。
【0210】
例えば、(ii)-(B)を適用する場合、
図11の(d)及び(e)で0値で満たされる領域に追加し、
図14でさらに0で満たされた領域まで0ではないデータが存在するかどうかをチェックした後、0ではないデータが存在しない場合にのみLFNSTインデックスに対するシグナリングを実行することができる。
【0211】
もちろん、前記(ii)で提案されたゼロアウトを適用しても、既存のLFNSTインデックスのシグナリングと同様に0ではないデータが存在するかどうかをチェックすることができる。すなわち、
図11に0で満たされたブロックに対して0ではないデータが存在するかどうかをチェックし、LFNSTインデックスのシグナリングを適用することができる。このような場合、エンコーディング装置にのみゼロアウトを実行し、デコーディング装置では当該ゼロアウトを仮定せず、すなわち、
図11で明示的に0で表記された領域に対してのみ0ではないデータが存在するかどうかのみチェックし、LFNSTインデックスのパーシングを実行することができる。
【0212】
前記LFNSTに対する単純化方法((i)、(ii)-(A)、(ii)-(B)、(iii))の組み合わせを適用した様々な実施形態を導出することができる。もちろん、前記単純化方法に対する組み合わせは、下記の実施形態に限定されず、任意の組み合わせをLFNSTに適用できる。
【0213】
実施形態
【0214】
- 順方向LFNSTに対する出力データの数を最大16個に限定→(i)
【0215】
- 4x4のLFNSTが適用されるとき、4x4のLFNSTが適用されない領域をすべてゼロアウト→(ii)-(A)
【0216】
- 8x8のLFNSTが適用されるとき、8x8のLFNSTが適用されない領域をすべてゼロアウト→(ii)-(B)
【0217】
- 既存の0値で満たされる領域と追加的なゼロアウト((ii)-(A)、(ii)-(B))により0で満たされる領域に対しても0ではないデータが存在するかどうかをチェックした後、0ではないデータが存在しない場合にのみLFNSTインデキシングのシグナリング→(iii)
【0218】
前記実施形態の場合、LFNSTが適用されるとき、0ではない出力データが存在し得る領域が左上側4x4領域の内部に制限される。より詳細には、
図13の(a)と
図14の(a)の場合、スキャン順序上、8番目の位置が0ではないデータが存在し得る最後の位置になり、
図13の(b)及び(d)と
図14の(b)の場合、スキャン順序上、16番目の位置(すなわち、左上側4x4ブロックの右下側縁の位置)が0ではないデータが存在し得る最後の位置になる。
【0219】
従って、LFNSTが適用されたとき、レジデュアルコーディング過程が許容されない位置(最も最後の位置を越えた位置で)で0ではないデータが存在するか否かをチェックした後、LFNSTインデックスのシグナリング可否が決定できる。
【0220】
(ii)で提案されたゼロアウト方式の場合、1次変換とLFNSTの両方ともを適用したときに最終的に発生するデータの数が減少するため、全体変換過程を行うときに要求される計算量を減らすことができる。すなわち、LFNSTが適用される場合、LFNSTが適用されない領域に存在する順方向1次変換出力データに対してもゼロアウトを適用するため、順方向1次変換を行うときからゼロアウトとなる領域に対するデータを生成する必要がない。従って、当該データ生成に要求される演算量を節約することができる。(ii)で提案されたゼロアウト方式の追加的な効果をまとめると、以下のようである。
【0221】
第1に、前記のように全体変換過程の実行に必要な計算量が低減する。
【0222】
特に、(ii)-(B)を適用する場合、最悪の場合に対する計算量が減少して変換の過程を軽量化することができる。敷衍すると、一般的に大きなサイズの1次変換実行に大量の演算が要求されるが、(ii)-(B)を適用すると、順方向LFNST実行結果として導出されるデータの数を16個以下に減らすことができ、全体ブロック(TUまたはCU)サイズが大きくなるほど、変換演算量低減効果はさらに増加する。
【0223】
第2に、変換過程全体に必要な演算量が減少して変換実行に必要な電力消費を削減することができる。
【0224】
第3に、変換過程に伴う遅延時間(latency)を減少させる。
【0225】
LFNSTのような2次変換は既存の1次変換に計算量を追加することになるので、変換実行に伴う全体遅延時間を増加させる。特に、イントラ予測の場合、予測過程で隣接ブロックの復元データが使用されるので、エンコーディング時に2次変換による遅延時間の増加が復元(reconstruction)までの遅延時間の増加につながり、イントラ予測エンコーディングの全体的な遅延時間の増加につながる可能性がある。
【0226】
しかしながら、(ii)で提示したゼロアウトを適用すると、LFNST適用時に1次変換実行の遅延時間を大幅に減らすことができるため、変換実行全体に対する遅延時間はそのまま維持されるか低減することになり、エンコーディング装置をより簡単に実現することができる。
【0227】
一方、従来のイントラ予測は、現在符号化しようとするブロックを1つの符号化単位とみなして分割なしに符号化を行っていた。しかしながら、ISP(Intra Sub-Paritions)コーディングは、現在符号化しようとするブロックを水平方向又は垂直方向に分割してイントラ予測符号化を行うことを意味する。このとき、分割されたブロック単位で符号化/復号化を行って復元されたブロックを生成し、復元されたブロックは次の分割されたブロックの参照ブロックとして使用される。一例によって、ISPコーディング時に1つのコーディングブロックが2つ又は4つのサブブロックに分割されてコーディングされてもよく、ISPにおいて1つのサブブロックは隣接する左側又は隣接する上側に位置するサブブロックの復元されたピクセル値を参照してイントラ予測が行われる。以下、使用される「コーディング」は、エンコーディング装置において行われるエンコーディングとデコーディング装置で行われるデコーディングを全て含む概念として使用される。
【0228】
一方、以下ではLFNSTインデックスとMTSインデックスのシグナリングについて見てみる。
【0229】
一例に係るLFNSTインデクスとMTSインデクスのシグナリングに関連する符号化装置シンタックステーブルは次の表の通りである。
【0230】
【0231】
前記表の主な変数の意味は次の通りである。
【0232】
1.cbWidth,cbHeight:現在の符号化ブロック(Coding Block)の幅と高さ
【0233】
2.log2TbWidth,log2TbHeight:現在の変換ブロック(Transform Block)の幅と高さに対するベース-2のログ値、ゼロアウトが反映され0ではない係数(non-zero coefficient)が存在できる左上セクションに縮小することができる。
【0234】
3.sps_lfnst_enabled_flag:LFNSTの適用可否(enable)を示すフラグとして、フラグ値が0であれば、LFNSTが適用不可能であることを示し、フラグ値が1であれば、LFNSTが適用可能であることを示す。シーケンスパラメータセット(Sequence Parameter Set;SPS)に定義されている。
【0235】
4.CuPredMode[chType][x0][y0]:変数chTypeと(x0,y0)位置に対応する予測モード、chTypeは0と1値を持ち、0はルマ要素を示し1はクロマ要素を示す。(x0,y0)位置はピクチャ上での位置を示しCuPredMode[chType][x0][y0]値としてはMODE_INTRA(イントラ予測)とMODE_INTER(インター予測)が可能である。
【0236】
5.IntraSubPartitionsSplitType:現在の符号化装置に、あるISP分割が適用されたかを示し、ISP_NO_SPLITは符号化装置がパーティションブロックに分割されなかったことを示す。
【0237】
6.intra_mip_flag[x0][y0]:(x0,y0)位置に対する内容は前記4番の通りである。intra_mip_flagはMIP(Matrix-based Intra Prediction)予測モードが適用されたか否かを示すフラグである。フラグ値が0であれば、MIPが適用不可能であることを示し、フラグ値が1であれば、MIPが適用されることを示す。
【0238】
7.cIdx:0値はルマを示し、1値と2値はそれぞれクロマ要素であるCb、Crを示す。
【0239】
8.tree Type:シングルツリー(single-tree)とデュアルツリー(dual-tree)などを指す(SINGLE_TREE:シングルツリー、DUAL_TREE_LUMA:ルマ要素に対するデュアルツリー、DUAL_TREE_CHROMA:クロマ要素に対するデュアルツリー)
【0240】
9.lfnst_idx[x0][y0]:パーシングしたいLFNSTインデクスシンタックス要素である。パーシングされない場合は、0値と推測できる。すなわち、デフォルト値が0に設定されLFNSTを適用しないことを示す。
【0241】
前記説明されたシンタックス要素に対する説明は以下の表に示したシンタックス要素に適用される。
【0242】
表4において、transform_skip_flag[x0][y0][0]==0であることはルマ要素に対して変換スキップの有無によってlfnstインデクスがシグナリングの有無を判断する1つの条件になる。
【0243】
これに、一例にしたがって、ルマ要素に対する変換スキップフラグとクロマ要素に対するLFNSTインデクスシグナリング間の依存性を除去し、LFNST適用に係る最悪の場合の遅延(the worst-case delay)を解消するために以下のような符号化装置シンタックステーブルを提案する。
【0244】
【0245】
表5のような実施例では、ルマ要素に対するLFNSTインデクスのシグナリングはデュアルツリータイプとシングルツリー分割モード全てに対してルマ要素に対する変換スキップフラグにのみ依存する。デュアルツリーモードの場合、クロマ要素に対するLFNSTインデクスはクロマ要素に対する変換スキップフラグにのみ依存してシグナリングされる。シングルツリー分割モードでは、最悪の場合に対する遅延を軽減させるためにクロマ要素に対してLFNSTが適用されない。
【0246】
表5に示した変数LfnstTransformNotSkipFlagは現在のブロックのツリータイプ及びカラー成分に対する変換スキップフラグ値によって設定され、その値が1である場合にのみ、LFNSTインデクスがシグナリングされる。
【0247】
変数LfnstTransformNotSkipFlagはツリータイプがデュアルツリークロマではなければ(tree Type!=DUAL_TREE_CHROMA)、つまりツリータイプがシングルツリーであるかデュアルツリールマであれば、ルマ要素に対する変換スキップフラグ値が0であるとき、1に設定され(tree Type!=DUAL_TREE_CHROMA?transform_skip_flag[x0][y0][0]==0:(transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0))、ツリータイプがデュアルツリークロマであれば、クロマCb要素に変換スキップフラグ値(transform_skip_flag[x0][y0][1])が0であるかクロマCr要素に変換スキップフラグ値(transform_skip_flag[x0][y0][1])が0であるとき、(tree Type!=DUAL_TREE_CHROMA?transform_skip_flag[x0][y0][0]==0:(transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0))、1に設定される。
【0248】
本文書において、「x?y:z」演算子はxが真実(TRUE)であれば、xはyになり、xがそれ以外(otherwise)であれば、xはzになることを示す(if x is TRUE、evaluates to the value of y;otherwise,evaluates to the value of z)。
【0249】
表5を考慮した変換過程に対する仕様テキストは以下の通りである。
【0250】
【0251】
表4の変数LfnstZeroOutSigCoeffFlagはLFNSTが適用されるとき、ゼロアウトになる位置に有効係数が存在すれば、0であり、そうでない場合は、1になる。変数LfnstZeroOutSigCoeffFlagは以後、表11に示したいくつかの条件によって設定される。
【0252】
変数LfnstZeroOutSigCoeffFlagは現在のブロックの左上第1セクションを除いた第2セクションに有効係数が存在するか否かを示したもので、この値は最初1に設定され、第2セクションに有効係数が存在すれば、その値は0に変更される。最初設定された変数LfnstZeroOutSigCoeffFlag値が1に維持されてこそLFNSTインデクスがパーシングできる。変数LfnstZeroOutSigCoeffFlag値が1であるか否かを判断及び導出するとき、現在のブロックのルマ要素または、クロマ要素全てにLFNSTが適用されるため、現在のブロックのカラーインデクスは判断されない。
【0253】
一例によって、表4の変数LfnstDcOnlyは該当するCBF(Coded Block Flag、該当するブロック内に有効係数が1つでも存在すれば1、または、0)値が1である変換ブロックに対して最後の有効係数が全てDC位置(左上位置)に位置すれば1になり、そうでない場合は0になる。より具体的にはデュアルツリールマである場合には最後の有効係数の位置をルマ変換ブロック1つに対してチェックし、デュアルツリークロマである場合にはCbに対する変換ブロックとCrに対する変換ブロック全てに対して最後の有効係数の位置をチェックする。シングルツリーの場合にはルマ、Cb、Crに対する変換ブロックに対して最後の有効係数位置をチェックすることができる。
【0254】
その一方で、他の例に係るLFNSTインデクスをシグナリングする符号化装置のシンタックステーブルは次の通りである。
【0255】
【0256】
表7において、transform_skip_flag[x0][y0][cIdx]変数はcIdxが指示する要素に対する符号化ブロック(Coding Block)に変換スキップが適用されるか否かを示す。cIdxは0、1、2の値を持ち、0はルマ要素を指し、1と2はそれぞれCb要素とCr要素を指す。transform_skip_flag[x0][y0][cIdx]値が1であれば、変換スキップを適用することを示し、0であれば、変換スキップを適用しないことを示す。
【0257】
表7において、LfnstNotSkipFlag変数は現在の符号化装置を構成する全ての要素に対して(全ての符号化ブロックに対して)変換スキップが適用されない場合にのみ、1に設定されそれ以外の場合は0に設定され、LfnstNotSkipFlagが1である場合にのみ、LFNSTインデクス(表7において、lfnst_idx)をシグナリングすることができる。
【0258】
現在の符号化装置がシングルツリー構造に符号化される場合(表7において、tree TypeがSINGLE_TREEである場合)該当する全ての要素はY、Cb、Crに構成され、現在の符号化装置がルマに対する分離ツリー(separate tree)構造に符号化される場合(表7において、tree TypeがDUAL_TREE_LUMAである場合)該当する全ての要素はYのみで構成され、現在の符号化装置がChromaに対する分離ツリー構造に符号化される場合(表7において、tree TypeがDUAL_TREE_CHROMAである場合)該当する全ての要素はCbとCrで構成される。
【0259】
つまり、現在の符号化装置を構成する要素のうち、1つでも変換スキップで符号化される場合にはLFNSTインデクスをシグナリングせず、該当するLFNSTインデクス値は0と推測できる。すなわち、LFNSTを適用しない。
【0260】
表7の通り、構成要素(Y、Cb、Cr)のうち、1つでも変換スキップで符号化される場合LFNSTが適用されないように制限する構造では、シングルツリーの通り、いくつかの要素(Y、Cb、Cr)が連続して符号化されパーシング途中に、ある要素が変換スキップとして決定される場合(例えば、CbとCrに対して変換スキップとして決定される場合)、LFNSTインデクス値がパーシングできるまで変換スキップで符号化される該当する要素に対して追加して該当する変換係数をバッファリング(buffering)しないように構成することもできる。
【0261】
例えば、ある要素が変換スキップで符号化されることが判明すれば、LFNSTが適用されないことが確実になるため、逆量子化(inverse quantization)、逆変換(inverse transform)などが直ちに実行される。
【0262】
表7の代わりに表8のようなシンタックステーブルでより簡潔に記述することもできる。
【0263】
【0264】
もし、シングルツリーであるとき、ルマ要素に対する変換スキップ有無のみをチェックしてLFNSTインデクスのシグナリング有無を決定する場合、以下のような符号化装置に対するシンタックステーブルを構成することができる。
【0265】
【0266】
表9でのLfnstNotSkipFlagは分離ツリーである場合、表7または、表8と同じく決定され(すなわち、ルマ分離ツリーである場合、ルマ要素に対して変換スキップが適用されない場合、1に設定され、そうでない場合、0に設定され、クロマ分離ツリーである場合、Cb要素とCr要素に対して全て変換スキップが適用されない場合、1に設定され、そうでない場合0で設定される)、シングルツリーの場合、ルマ要素に対してのみ変換スキップが適用されない場合、1に設定され、そうでない場合、0で設定される表9の代わりに表10のようなシンタックステーブルを適用することもできる。
【0267】
【0268】
その一方で、シングルツリーの場合、ルマ要素に対してのみLFNSTを適用するときLFNSTインデクスシグナリング条件を決定する実施例は次の通りである。
【0269】
表4、表5の符号化装置シンタックステーブルと表7、表8、表9、表10において、LFNSTインデクスをシグナリングする条件にLfnstDcOnly変数とLfnstZeroOutSigCoeffFlag変数が用いられている。基本的に、表7の通り、LfnstDcOnly変数とLfnstZeroOutSigCoeffFlag変数は全て1に初期化され、表11のように残差符号化に対するシンタックステーブルにおいて、該当する2つの変数値が0に更新される。参考までに、ある要素が(Yまたは、Cbまたは、Crになる。)変換スキップに符号化されれば、表11の残差符号化が呼び出される代わり他のシンタックステーブル(transform_ts_coding)が呼び出され、LfnstDcOnly変数とLfnstZeroOutSigCoeffFlag変数は該当する要素に対するLFNSTインデクスパーシングが実行されるときは、更新されない。
【0270】
【0271】
【0272】
表11において、lastSubBlockは最後の有効係数(last non-zero coefficient)が位置するサブブロック(sub-block,Coefficient Group(CG))のスキャン順序上の位置を示す。0はDC要素が含まれたサブブロックを指し、0より大きい場合はDC要素が含まれたサブブロックではない。
【0273】
lastScanPosは最後の有効係数が1つのサブブロック内部において、スキャン順序上どの位置にあるかを示す。1つのサブブロックが16個の位置で構成されていれば、0から15までの値が可能である。
【0274】
LastSignificantCoeffX、LastSignificantCoeffYは最後の有効係数が変換ブロック内に位置するx座標とy座標を示す。x座標は0から始まり、左側において、右側に増加し、y座標は0から始まり、上から下に増加する。2つの変数の値が両方0であれば、最後の有効係数がDCに位置することを意味する。
【0275】
表5の実施例に対して基本的に表11が適用されLfnstDcOnly変数値とLfnstZeroOutSigCoeffFlag変数値が決定され、表11が適用されシングルツリーに符号化される場合、全ての要素に対して表11において、提示する残差符号化が呼び出される。例えば、Y、Cb、Cr要素全てが変換スキップに符号化されない場合、全ての要素ごとに残差符号化が実行される。
【0276】
したがって、表11が適用されシングルツリーに符号化される場合、1つの要素でもDC位置(該当する変換ブロックの左上位置)以外の位置に最後の0ではない係数が位置すれば、LfnstDcOnly変数が0値に更新され、1つの要素でも最後の0ではない係数の位置がLFNSTが適用されたときの変換係数が位置できないセクションに位置すれば、(すなわち、現在VVC標準において、4x4変換ブロックまたは、8x8変換ブロックである場合、順方向の変換係数スキャン順序によって1番目から8番目まで位置以外のセクションに位置するか、それ以外のLFNSTが適用できる変換ブロックである場合、左上4x4セクション以外のセクションに位置する場合)LfnstZeroOutSigCoeffFlag変数値は0値に更新される。表5の符号化装置シンタックステーブルと表7、表8、表9、表10において、提示した通り、LfnstZeroOutSigCoeffFlag変数値が1である場合に対してのみ、LFNSTインデクスがシグナリングされ、ISPモードではなければ、LfnstDcOnly変数値が0である場合に対してのみLFNSTインデクスがシグナリングされる。
【0277】
しかし、シングルツリーにおいて、ルマ要素に対してのみLFNSTを適用する場合、LFNSTが適用されない要素(クロマ要素、Cbまたは、Cr)に対する残差符号化を実行するときはLfnstDcOnly変数とLfnstZeroOutSigCoeffFlag変数を更新しないように制限することができる。LFNSTが適用されない要素に対する変換係数配置または、分布が、LFNSTインデクスのシグナリング有無を、すなわち、LFNSTが適用されるか否かを決定することは論理的に合わない場合があるためである。
【0278】
表12はシングルツリーの場合、ルマ要素に対してのみLfnstDcOnly変数とLfnstZeroOutSigCoeffFlag変数を更新するように制限する。シングルツリーではない場合には、表11と同様に全ての要素に対してLfnstDcOnly変数とLfnstZeroOutSigCoeffFlag変数を更新することができる。
【0279】
【0280】
【0281】
表12に提示された残差符号化では、表11に比べてtree Typeがパラメータに追加されたため、変換装置に対するシンタックステーブルは表13の通り修正される。
【0282】
【0283】
表5の内容を基本にして、一部の内容を表7から表10の実施例に置き換えるか、表11または、表12の内容を適用することができる。表7から表10と表11または、表12を基準に次のように可能な組み合わせを構成することができる。
【0284】
1.表7(または、表8)+表11
【0285】
2.表7(または、表8)+表12
【0286】
3.表9(または、表10)+表11
【0287】
4.表9(または、表10)+表12
【0288】
以下では、シングルツリーの場合、ルマ要素に対してのみLFNSTを適用するとき、クロマ要素に対するスケーリングリスト(Scaling List)の適用方法に対して見てみよう。
【0289】
現在VVC WDでは、scaling_matrix_for_lfnst_disabled_flagというシンタックス要素が定義されているが、scaling_matrix_for_lfnst_disabled_flagが1であれば、LFNSTが適用されるとき、スケーリングリストを適用せず、0であれば、LFNSTが適用されるとき、スケーリングリストを適用することができる。
【0290】
ここで、スケーリングリストは変換ブロックでの変換係数の位置ごとに特定加重値(weight値)を指定する行列として変換係数ごとに該当する加重値を掛けて、逆量子化、または、量子化を実行できるようにして、変換係数の重要度に応じて差分して逆量子化、または、量子化を適用できるようにする。
【0291】
シングルツリーの場合、表5の実施例の通りルマ要素に対してのみLFNSTが適用でき、シングルツリーに符号化されてscaling_matrix_for_lfnst_disabled_flag値が1でありLFNSTが適用される場合ルマ要素に対してはスケーリングリストを適用しない。このとき、LFNSTが適用されないクロマ要素に対してはスケーリングリストを適用することができる。
【0292】
表14は前記のような場合を実装することができる逆量子と過程(scaling process)の一例を示している。
【0293】
【0294】
【0295】
【0296】
【0297】
表14において、tree Typeは現在処理する変換ブロックが属した符号化装置がどのツリータイプを持っているか示し、SINGLE_TREE、DUAL_TREE_LUMA、DUAL_TREE_CHROMAは各シングルツリー、ルマに対する分離ツリー、クロマに対する分離ツリー(デュアルツリークロマ)を示す。
【0298】
本実施例では、シングルツリーであるとき、ルマ要素に対してのみLFNSTが適用されるため、scaling_matrix_for_lfnst_disabled_flag値が1でありLFNSTが適用されるとき、(lfnst_idx[xTbY][yTbY]値が0より大きいとき)ルマ要素(cIdx値が0であるときに該当する)に対してはスケーリングリストを適用しない。
【0299】
その一方で、クロマ要素(cIdx値が0より大きい場合)に対しては他の条件をさらにチェックして(例えば、transform_skip_flag[xTbY][yTbY][cIdx]をチェック)スケーリングリストが適用されるか否かを決定することができる。
【0300】
分離ツリーである場合には、シングルツリーでのルマ要素の場合と同様に、scaling_matrix_for_lfnst_disabled_flag値が1でありLFNSTが適用されるとき、(lfnst_idx[xTbY][yTbY]値が0より大きいとき)ルマ及びクロマ要素に対してスケーリングリストを適用しない。
【0301】
または、分離ツリーである場合にはシングルツリーでのクロマ要素の場合と同様に、他の条件をさらにチェックして(例えば、transform_skip_flag[xTbY][yTbY][cIdx]をチェック)スケーリングリストの適用有無を決定することができる。
【0302】
したがって、scaling_matrix_for_lfnst_disabled_flag値が1であり、シングルツリーにおいてルマ要素に対してのみLFNSTが適用できる場合、ルマ要素にはスケーリングリストが適用されず、クロマ要素にはスケーリングリストが適用される。
【0303】
一例によって、表14と前記実施例の組み合わせ(表5の内容を基本にして、一部の内容を表7から表10の実施例に置き換えるか、表11または、表12の内容を適用する組み合わせ)が適用される。
【0304】
この場合、表6の「Transform process for scaled transform coefficients」に対する仕様テキストの通りシングルツリーの場合にはルマ要素に対してのみLFNSTを適用するように構成することができる。
【0305】
以下の図面は本明細書の具体的な一例を説明するために作成された。図面に記載された具体的な装置の名称や具体的な信号/メッセージ/フィールドの名称は例として提示されたことであるため、本明細書の技術的な特徴が以下の図面に用いられた具体的な名称に制限されない。
【0306】
図15は本文書の一実施例に係るビデオデコーディング装置の動作を示すフロー図である。
【0307】
図15に開示された各ステップは
図4から
図14において、前述の内容のうち、一部に基づいたものである。したがって、
図3から
図14において、前述の内容と重複する具体的な内容は説明を省略したり簡単にすることにする。
【0308】
一実施例に係るデコーディング装置300は、ビットストリームからLFNSTが実行されるとき、スケーリングリストの可用性を指示するフラグ情報、現在のブロックに対するLFNSTインデクス及び残差情報を受信することができる(S1510)。
【0309】
より具体的に、デコーディング装置300はビットストリームから現在のブロックに対する量子化された変換係数に関する情報をデコーディングすることができ、現在のブロックに対する量子化された変換係数に関する情報に基づいて対象ブロックに対する量子化された変換係数を導出することができる。対象ブロックに対する量子化された変換係数に関する情報はSPS(Sequence Parameter Set)または、スライスヘッダ(slice header)に含むことができ、簡略化変換(RST)が適用されるか否かに対する情報、簡略化要因に関する情報、簡略化変換を適用する最小変換サイズに対する情報、簡略化変換を適用する最大変換サイズに対する情報、簡略化逆変換サイズ、変換セットに含まれた変換カーネル行列のうち、いずれか1つを指示する変換インデクスに対する情報のうち、少なくとも1つを含むことができる。
【0310】
また、デコーディング装置は現在のブロックに対するイントラ予測モードに対する情報及び現在のブロックにISPが適用されるか否かに対する情報をさらに受信することができる。デコーディング装置はISP符号化または、ISPモードを適用するか否かを指示するフラグ情報を受信及びパーシングすることで現在のブロックが所定の数のサブパーティション変換ブロックに分割されるか否かを導出することができる。ここで、現在のブロックは符号化ブロックである。また、デコーディング装置は現在のブロックがどの方向で分割されるかを指示するフラグ情報を介して分割されるサブパーティションブロックのサイズ及び数を導出することができる。
【0311】
LFNSTインデクスは逆2次非分離にLFNSTが適用されるとき、LFNST行列を指定するための値として0から2の値を持つ。例えば、LFNSTインデクス値0は現在のブロックにLFNSTが適用されないことを示し、LFNSTインデクス値1は1番目のLFNST行列を、LFNSTインデクス値2は2番目のLFNST行列を指示することができる。
【0312】
ISPに関連する情報及びLFNSTインデクスは符号化装置レベルにおいて、受信される。
【0313】
デコーディング装置が受信するLFNSTが実行されるとき、スケーリングリストの可用性を指示するフラグ情報はscaling_matrix_for_lfnst_disabled_flagまたは、sps_scaling_matrix_for_lfnst_disabled_flagで示すことができ、シーケンスパラメータセットにおいてシグナリングされる。このフラグ値が1であれば、LFNSTが適用されるとき、スケーリングリストを適用せず、0であれば、LFNSTが適用されるとき、スケーリングリストを適用できることを示す。スケーリングリストは変換ブロックでの変換係数の位置ごとに特定加重値(weight値)を指定する行列として変換係数ごとに該当する加重値を乗算して、逆量子化、または、量子化を実行できるようにして、変換係数の重要度によって差分して逆量子化、または、量子化を適用できるようにする。
【0314】
デコーディング装置300は、現在のブロックに対する変換係数に対して逆量子化を実行するためにLFNSTが適用されるか否か及び現在のブロックのツリータイプに基づいて現在のブロックにスケーリングリストが適用されるか否かを判断することができる(S1520)。
【0315】
スケーリングリストが適用されるか否かは前記フラグ情報及びLFNSTインデクス値に基づいて判断される。
【0316】
現在のブロックのツリータイプがシングルツリーであれば、現在のブロックのカラー成分はルマ要素、クロマCbを指示する第1クロマ要素、クロマCrを指示する第2クロマ要素を含むことができ、現在のブロックのツリータイプがデュアルツリールマであれば、現在のブロックはルマ要素を含むことができる。現在のブロックのツリータイプがデュアルツリークロマであれば、現在のブロックのカラー成分は第1クロマ要素及び第2クロマ要素を含むことができる。
【0317】
ここで、現在のブロックは変換単位である変換ブロックであり、現在のブロックのツリータイプがシングルツリーであれば、ルマ要素に対する変換ブロック、第1クロマ要素に対する変換ブロック、第2クロマ要素に対する変換ブロックを含むことができる。また、現在のブロックのツリータイプがデュアルツリールマであれば、ルマ要素に対する変換ブロック、現在のブロックのツリータイプがデュアルツリークロマであれば、第1クロマ要素及び第2クロマ要素に対する変換ブロックを含むことができる。
【0318】
一例によって、現在のブロックがシングルツリーの場合、ルマ要素に対してのみLFNSTが適用でき、シングルツリーに符号化されてscaling_matrix_for_lfnst_disabled_flag値が1であり、LFNSTが適用される場合、ルマ要素に対してはスケーリングリストを適用しない。しかし、LFNSTが適用されないクロマ要素に対しては、スケーリングリストを適用することができる。
【0319】
まとめると、スケーリングリストに対するフラグ情報がスケーリングリストが可用ではないことを示し、LFNSTインデクスが0より大きい場合(すなわち、LFNSTが適用される場合)、現在のブロックのツリータイプがシングルツリーであり、ルマ要素であれば、スケーリングリストを適用せず、現在のブロックのツリータイプがシングルツリーであり、クロマ要素であれば、スケーリングリストを適用することができる。
【0320】
一例によって、フラグ情報がスケーリングリストが可用ではないことを示し、LFNSTインデクスが0より大きい場合、現在のブロックのツリータイプがデュアルツリークロマであれば、現在のブロックにLFNSTが適用できるためクロマ要素にスケーリングリストが適用されない。
【0321】
一例によって、フラグ情報がスケーリングリストが可用ではないことを示し、LFNSTインデクスが0より大きい場合、現在のブロックのツリータイプがデュアルツリールマであれば、現在のブロックにLFNSTが適用できるため、ルマ要素にスケーリングリストが適用されない。
【0322】
以後、デコーディング装置は判断結果に基づいて残差情報から現在のブロックに対する変換係数を導出する(S1530)。
【0323】
導出された変換係数は4x4ブロック単位に逆方向対角スキャン順序によって配列でき、4x4ブロック内の変換係数も逆方向対角スキャン順序によって配列される。すなわち、逆量子化が実行された変換係数はVVCやHEVCでのようなビデオコーデックにおいて、適用される逆方向スキャン順序にしたがって配置される。
【0324】
デコーディング装置はLFNSTインデクス及びLFNSTのためのLFNST行列に基づいて、つまり、LFNSTを適用して変換係数から修正された変換係数を導出することができる(S1540)。
【0325】
LFNSTは変換対象になる係数を垂直または、水平方向に分離して変換する1次変換と異なって係数を特定方向に分離せずに変換を適用する非分離変換である。このような非分離変換はブロック全体セクションではない低周波セクションにのみ順方向変換を適用する低周波非分離変換である。
【0326】
デコーディング装置はLFNSTを適用するために様々な変数を導出することができ、現在のブロックのツリータイプ及びサイズなどに基づいてLFNST適用されるか否かを判断することができる。
【0327】
デコーディング装置は現在のブロックのDC要素以外の位置に有効係数が存在するか否かを示す第1変数(変数LfnstDcOnly)及び現在のブロックの左上の第1セクションを除いた第2セクションに前記変換係数が存在するか否かを示す第2変数(変数LfnstZeroOutSigCoeffFlag)を導出することができる。
【0328】
このような第1変数及び第2変数は最初1に設定され、現在のブロックのDC要素以外の位置に有効係数が存在すれば、第1変数は0に更新され、第2セクションに変換係数が存在すれば、第2変数は0に更新される。
【0329】
第1変数は0に更新され、第2変数は1に維持する場合、現在のブロックにLFNSTが適用される。
【0330】
その一方で、イントラサブパーティション(ISP)モードが適用できるルマブロックの場合、変数LfnstDcOnlyの導出なしにLFNSTインデクスをパーシングすることができる。
【0331】
具体的に見ると、ISPモードが適用され、ルマ要素に対する変換スキップフラグ、つまり、transform_skip_flag[x0][y0][0]値が0である場合、現在のブロックのツリータイプがシングルツリーまたは、ルマに対するデュアルツリーであるときは変数LfnstDcOnly値に関係なく、LFNSTインデクスがシグナリングされる。
【0332】
その一方で、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値と推測することができる。
【0333】
第2変数はLFNST適用時、ゼロアウトが実行されたことを示す変数LfnstZeroOutSigCoeffFlagである。第2変数は最初1に設定され、第2セクションに有効係数が存在すれば、0に変更される。
【0334】
変数LfnstZeroOutSigCoeffFlagは最後の0ではない係数が存在するサブブロックのインデクスが0より大きくて変換ブロックの幅及び高さが全て4と同じかまたは大きいか、0ではない最後の係数が存在するサブブロック内部での0ではない係数の最後の位置が7より大きくて、変換ブロックのサイズが4x4または、8x8である場合、0に導出される。サブブロックというのは残差符号化において符号化単位に用いられる4x4ブロックを意味するもので、CG(Coefficient Group)とも呼べる。サブブロックのインデクスが0だというのは左上4x4サブブロックを指す。
【0335】
すなわち、変換ブロックにおいて、LFNST変換係数が存在できる左上セクション以外のセクションにおいて、0ではない係数が導出されるか、4x4ブロック及び8x8ブロックに対してスキャン順序上8番目の位置から離れて0ではない係数が存在すれば、変数LfnstZeroOutSigCoeffFlagは0で設定される。
【0336】
デコーディング装置はイントラ予測モード情報から導出されたイントラ予測モードに基づいてLFNST行列を含むLFNSTセットを決定し、LFNSTセット及びLFNSTインデクスに基づいて複数のLFNST行列のうち、いずれか1つを選択することができる。
【0337】
このとき、現在のブロックにおいて分割されたサブパーティション変換ブロックには同じLFNSTセット及び同じLFNSTインデクスが適用される。すなわち、サブパーティション変換ブロックには同じイントラ予測モードが適用されるため、イントラ予測モードに基づいて決定されるLFNSTセットも全てのサブパーティション変換ブロックと同様に適用される。また、LFNSTインデクスは符号化装置レベルにおいて、シグナリングされるため、現在のブロックにおいて分割されたサブパーティション変換ブロックには同じLFNST行列が適用される。
【0338】
その一方で、上述した通り、変換の対象になる変換ブロックのイントラ予測モードによって変換セットが決定され、逆LFNSTはLFNSTインデクスによって指示される変換セットに含まれている変換カーネル行列、つまり、LFNST行列のうち、いずれか1つに基づいて実行される。逆LFNSTに適用される行列は逆LFNST行列または、LFNST行列に称し、このような行列は順方向LFNSTに用いられる行列とトランスフォース関係にあれば、名称はどの名称でも関係ない。
【0339】
一例示において、逆LFNST行列は列の数が行の数より少ない非正方行列である。
【0340】
デコーディング装置は修正された変換係数に対する1次逆変換に基づいて現在のブロックに対する残差サンプルを導出することができる(S1550)。
【0341】
このとき、逆1次変換は通常の分離変換が使用され、上述したMTSが使用される場合もある。
【0342】
その後、デコーディング装置300は、現在のブロックに対する残差サンプル及び現在のブロックに対する予測サンプルに基づいて復元サンプルを生成することができる。
【0343】
以下の図面は本明細書の具体的な一例を説明するために作成された。図面に記載された具体的な装置の名称や具体的な信号/メッセージ/フィールドの名称は例として提示されたことであるため、本明細書の技術的な特徴が以下の図面に用いられた具体的な名称に限られない。
【0344】
図16は本文書の一実施例に係るビデオエンコーディング装置の動作を示すフロー図である。
【0345】
図16に開示された各ステップは
図4から
図14において、前述の内容のうち、一部に基づいたものである。したがって、
図2及び
図4から
図14において、前述の内容と重複する具体的な内容は説明を省略したり簡単にすることにする。
【0346】
一実施例に係るエンコーディング装置200は、現在のブロックに適用されるイントラ予測モードに基づいて現在のブロックに対する予測サンプルを導出することができる。
【0347】
エンコーディング装置は現在のブロックにISPが適用される場合、サブパーティション変換ブロック別に予測を実行することができる。
【0348】
エンコーディング装置は現在のブロック、つまり、符号化ブロックにISP符号化または、ISPモードを適用するか否かを判断することができ、判断結果によって現在のブロックがどの方向で分割されるかを決定し、分割されるサブブロックのサイズ及び数を導出することができる。
【0349】
現在のブロックにおいて分割されたサブパーティション変換ブロックには同じイントラ予測モードが適用され、エンコーディング装置はサブパーティション変換ブロック別に予測サンプルを導出することができる。すなわち、エンコーディング装置はサブパーティション変換ブロックの分割形態によって、例えば、水平(Horizontal)または、垂直(Verticial)、左から右へ、または、上から下へ順次イントラ予測を実行する。一番左または、一番上のサブブロックに対しては通常のイントラ予測方法のように既に符号化された符号化ブロックの復元ピクセルを参照するようになる。また、後続の内部のサブパーティション変換ブロックの各辺に対して以前サブパーティション変換ブロックと隣接しない場合は、該当する辺に隣接した参照ピクセルを導出するために、通常のイントラ予測方法のように既に符号化された隣接した符号化ブロックの復元ピクセルを参照する。
【0350】
エンコーディング装置200は、予測サンプルに基づいて現在のブロックに対する残差サンプルを導出することができる(S1610)。
【0351】
エンコーディング装置200は、残差サンプルにLFNSTまたは、MTSのうち、少なくとも1つを適用して現在のブロックに対する変換係数を導出し、変換係数を所定のスキャン順序によって配列することができる。
【0352】
エンコーディング装置は残差サンプルに対する1次変換及び/または、2次変換のような変換過程に基づいて現在のブロックに対する変換係数を導出することができ、現在のブロックのツリータイプがシングルツリーであり、ルマ要素であれば、LFNSTが適用可能で、現在のブロックのツリータイプがシングルツリーでありクロマ要素であれば、LFNSTを適用しない場合がある(S1620)。
【0353】
1次変換はMTSの通り、複数の変換カーネルを介して実行でき、この場合、イントラ予測モードに基づいて変換カーネルが選択される。
【0354】
エンコーディング装置200は現在のブロックに対する変換係数に対して2次変換、または、非分離変換、具体的にLFNSTを実行するか否かを決定し、変換係数にLFNSTを適用して修正された変換係数を導出することができる。
【0355】
LFNSTは変換対象になる係数を垂直、または、水平方向に分離して変換する1次変換と異なって係数を特定方向に分離せずに変換を適用する非分離変換である。このような非分離変換は変換対象になる対象ブロック全体ではない低周波セクションにのみ変換を適用する低周波非分離変換である。
【0356】
エンコーディング装置はLFNSTを適用するために様々な変数を導出することができ、現在のブロックのツリータイプ及びサイズなどに基づいてLFNST適用されるか否かを判断することができる。
【0357】
エンコーディング装置は現在のブロックのDC要素以外の位置に有効係数が存在するか否かを示す第1変数(変数LfnstDcOnly)及び現在のブロックの左上の第1セクションを除いた第2セクションに前記変換係数が存在するか否かを示す第2変数(変数LfnstZeroOutSigCoeffFlag)を導出することができる。
【0358】
このような第1変数及び第2変数は最初1に設定され、現在のブロックのDC要素以外の位置に有効係数が存在すれば、第1変数は0に更新され、第2セクションに変換係数が存在すれば、第2変数は0に更新される。
【0359】
第1変数は0に更新され、第2変数は1に維持される場合現在のブロックにLFNSTが適用される。
【0360】
その一方で、イントラサブパーティション(ISP)モードが適用できるルマブロックの場合、変数LfnstDcOnlyの導出なしにLFNSTを適用することができる。
【0361】
具体的に見ると、ISPモードが適用され、ルマ要素に対する変換スキップフラグ、つまり、transform_skip_flag[x0][y0][0]値が0である場合、現在のブロックのツリータイプがシングルツリー、または、ルマに対するデュアルツリーであるときは変数LfnstDcOnly値に関係なくLFNSTが適用される。
【0362】
その一方で、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を適用しない場合がある。
【0363】
第2変数はLFNST適用時、ゼロアウトが実行されたことを示す変数LfnstZeroOutSigCoeffFlagである。第2変数は最初1に設定され、第2セクションに有効係数が存在すれば、0に変更される。
【0364】
変数LfnstZeroOutSigCoeffFlagは最後の0ではない係数が存在するサブブロックのインデクスが0より大きくて変換ブロックの幅及び高さが全て4と同じかまたは大きいか、0ではない最後の係数が存在するサブブロック内部での0ではない係数の最後の位置が7より大きくて、変換ブロックの位置が4x4、または、8x8である場合、0に導出される。サブブロックというのは残差符号化において符号化単位に用いられる4x4ブロックを意味するもので、CG(Coefficient Group)とも呼べる。サブブロックのインデクスが0だというのは左上4x4サブブロックを指す。
【0365】
すなわち、変換ブロックにおいて、LFNST変換係数が存在できる左上セクション以外のセクションにおいて、0ではない係数が導出されるか、4x4ブロック及び8x8ブロックに対してスキャン順序上8番目の位置から離れて0ではない係数が存在すれば、変数LfnstZeroOutSigCoeffFlagは0で設定される
【0366】
エンコーディング装置はイントラ予測モード情報から導出されたイントラ予測モードに基づいてLFNST行列を含むLFNSTセットを決定し、複数のLFNST行列のうち、いずれか1つを選択することができる。
【0367】
このとき、現在のブロックにおいて分割されたサブパーティション変換ブロックには同じLFNSTセット及び同じLFNSTインデクスが適用される。すなわち、サブパーティション変換ブロックには同じイントラ予測モードが適用されるため、イントラ予測モードに基づいて決定されるLFNSTセットも全てのサブパーティション変換ブロックと同様に適用される。また、LFNSTインデクスは符号化装置レベルにおいて、シグナリングされるため、現在のブロックにおいて分割されたサブパーティション変換ブロックには同じLFNST行列が適用される。
【0368】
その一方で、上述した通り、変換の対象になる変換ブロックのイントラ予測モードによって変換セットが決定され、LFNSTはLFNST変換セットに含まれている変換カーネル行列、つまり、LFNST行列のうち、いずれか1つに基づいて実行される。LFNSTに適用される行列はLFNST行列と称し、このような行列は逆方向LFNSTに用いられる行列とトランスフォース関係にあれば、名称はどの名称でも関係ない。
【0369】
一例示において、LFNST行列は行の数が列の数より少ない非正方行列である。
【0370】
エンコーディング装置は変換過程にLFNSTが実行されるか否か及び現在のブロックのツリータイプに基づいて現在のブロックにスケーリングリストが適用されるか否かを決定することができる(S1630)。
【0371】
スケーリングリストは変換ブロックでの変換係数の位置ごとに特定加重値(weight値)を指定する行列として変換係数ごとに該当する加重値を乗算して、逆量子化、または、量子化を実行できるようにして、変換係数の重要度によって差分して逆量子化、または、量子化を適用できるようにする。
【0372】
一例によって、エンコーディング装置は現在のブロックのツリータイプがシングルツリーでありルマ要素であれば、スケーリングリスト適用せず、現在のブロックのツリータイプがシングルツリーであり、クロマ要素であれば、スケーリングリストを適用することができる。
【0373】
現在のブロックのツリータイプがシングルツリーであれば、現在のブロックのカラー成分はルマ要素、クロマCbを指示する第1クロマ要素、クロマCrを指示する第2クロマ要素を含むことができ、現在のブロックのツリータイプがデュアルツリールマであれば、現在のブロックはルマ要素を含むことができる。現在のブロックのツリータイプがデュアルツリークロマであれば、現在のブロックのカラー成分は第1クロマ要素及び第2クロマ要素を含むことができる。
【0374】
ここで、現在のブロックは変換単位である変換ブロックであり、現在のブロックのツリータイプがシングルツリーであれば、ルマ要素に対する変換ブロック、第1クロマ要素に対する変換ブロック、第2クロマ要素に対する変換ブロックを含むことができる。また、現在のブロックのツリータイプがデュアルツリールマであれば、ルマ要素に対する変換ブロック、現在のブロックのツリータイプがデュアルツリークロマであれば、第1クロマ要素及び第2クロマ要素に対する変換ブロックを含むことができる。
【0375】
一例によって、エンコーディング装置は現在のブロックがシングルツリーの場合、ルマ要素に対してのみLFNSTを適用することができ、LFNSTが適用される場合、ルマ要素に対してはスケーリングリストを適用しない。しかし、LFNSTが適用されないクロマ要素に対してはスケーリングリストを適用することができる。
【0376】
まとめると、エンコーディング装置はLFNSTインデクスが0より大きい場合(すなわち、LFNSTが適用される場合)、現在のブロックのツリータイプがシングルツリーであり、ルマ要素であれば、スケーリングリストを適用せず、現在のブロックのツリータイプがシングルツリーであり、クロマ要素であれば、スケーリングリストを適用することができる。
【0377】
一例によって、エンコーディング装置はLFNSTインデクスが0より大きい場合、現在のブロックのツリータイプがデュアルツリークロマであれば、現在のブロックにLFNSTが適用できるためクロマ要素にスケーリングリストを適用しない。
【0378】
一例によって、エンコーディング装置はLFNSTインデクスが0より大きい場合、現在のブロックのツリータイプがデュアルツリールマであれば、現在のブロックにLFNSTが適用できるため、ルマ要素にスケーリングリストを適用しない。
【0379】
エンコーディング装置は前記決定、つまり、現在のブロックにスケーリングリストが適用されるか否かに基づいて変換係数を量子化することができる(S1640)。
【0380】
すなわち、エンコーディング装置はLFNSTが適用されない変換ブロックに対してはスケーリングリストを用いて変換係数を量子化し、LFNSTが適用される変換ブロックに対してはスケーリングリストの使わず、変換係数を量子化することができる。
【0381】
エンコーディング装置は残差情報及びLFNSTが実行されるとき、スケーリングリストの可用性を指示するフラグ情報をエンコーディングして出力することができる(S1650)。
【0382】
LFNSTが実行されるとき、スケーリングリストの可用性を指示する前記フラグ情報はscaling_matrix_for_lfnst_disabled_flagまたは、sps_scaling_matrix_for_lfnst_disabled_flagに示すことができ、シーケンスパラメータセットにおいてシグナリングされる。このフラグ値が1であれば、LFNSTが適用されるとき、スケーリングリストを適用せず、0であれば、LFNSTが適用されるとき、スケーリングリストを適用できることを示す。
【0383】
エンコーディング装置はLFNSTインデクスが0より大きくて、現在のブロックがシングルツリーであれば、ルマ要素に対してLFNSTが適用されるため、フラグ値を1にエンコーディングすることができる。
【0384】
ただし、エンコーディング装置はLFNSTインデクスが0より大きくて、現在のブロックがシングルツリーであるとき、クロマ要素に対してはLFNSTが適用されないため、スケーリングリストが適用されるように画像情報を構成することができる。
【0385】
エンコーディング装置はLFNSTインデクスが0より大きくて、現在のブロックのツリータイプがデュアルツリークロマであれば、現在のブロックにLFNSTが適用できるためクロマ要素にスケーリングリストが適用されないようにフラグ値を1にエンコーディングすることができる。
【0386】
一例によって、エンコーディング装置はLFNSTインデクスが0より大きくて、現在のブロックのツリータイプがデュアルツリールマであれば、現在のブロックにLFNSTが適用できるため、ルマ要素にスケーリングリストが適用されないようにフラグ値を1にエンコーディングすることができる。
【0387】
エンコーディング装置は現在のブロックに対する修正された変換係数に基づいて量子化を実行して量子化された変換係数を導出し、LFNSTインデクスをエンコーディングすることができる。
【0388】
エンコーディング装置は、量子化された変換係数に対する情報を含むレジデュアル情報を生成することができる。レジデュアル情報は、前述した変換関連情報/シンタックス要素を含むことができる。エンコーディング装置は、レジデュアル情報を含む画像/ビデオ情報をエンコーディングしてビットストリームの形態で出力することができる。
【0389】
より具体的に、エンコーディング装置100は、量子化された変換係数に関する情報を生成し、生成された量子化された変換係数に関する情報をエンコーディングすることができる。
【0390】
本実施形態に係るLFNSTインデックスのシンタックス要素は、(逆)LFNSTが適用されるかどうか、及びLFNSTセットに含まれたLFNSTマトリックスのいずれかを指示し得、LFNSTセットが2つの変換カーネルマトリックスを含む場合、LFNSTインデックスのシンタックス要素の値は3つであり得る。
【0391】
一例によって、現在ブロックに対する分割ツリー構造がデュアルツリータイプであると、ルマブロック及びクロマブロックの各々に対してLFNSTインデックスがエンコーディングできる。
【0392】
一実施形態によって、変換インデックスに対するシンタックス要素値は、現在ブロックに(逆)LFNSTが適用されない場合を指示する0、LFNSTマトリックスのうち1番目のLFNSTマトリックスを指示する1、LFNSTマトリックスのうち2番目のLFNSTマトリックスを指示する2として導出されることができる。
【0393】
本文書において、量子化/逆量子化及び/又は変換/逆変換の少なくとも1つは省略され得る。前記量子化/逆量子化が省略される場合、前記量子化された変換係数は、変換係数と呼ばれ得る。前記変換/逆変換が省略される場合、前記変換係数は、係数又はレジデュアル係数と呼ばれることもあり、又は表現の統一性のために変換係数と依然として呼ばれることもある。
【0394】
また、本文書において、量子化された変換係数及び変換係数は、それぞれ変換係数及びスケーリングされた(scaled)変換係数と指称され得る。この場合、レジデュアル情報は、変換係数に関する情報を含むことができ、前記変換係数に関する情報は、レジデュアルコーディングシンタックスを介してシグナリングされることができる。前記レジデュアル情報(又は前記変換係数に関する情報)に基づいて変換係数が導出でき、前記変換係数に対する逆変換(スケーリング)を介してスケーリングされた変換係数が導出できる。前記スケーリングされた変換係数に対する逆変換(変換)に基づいて、レジデュアルサンプルが導出できる。これは、本文書の別の部分でも同様に適用/表現できる。
【0395】
前述した実施例において、方法は、一連のステップ又はブロックとしてフローチャートに基づいて説明されているが、本文書は、ステップの順序に限定されるわけではなく、あるステップは、前述したところと異なるステップと異なる順序で、又は同時に発生し得る。また、当業者であれば、フローチャートに示されているステップが排他的ではなく、別のステップが含まれるか、フローチャートの一つ又はそれ以上のステップが本文書の範囲に影響を与えずに削除され得ることを理解することができる。
【0396】
前述した本文書に係る方法は、ソフトウェアの形態で具現されることができ、本文書に係るエンコード装置及び/又はデコード装置は、例えば、TV、コンピュータ、スマートフォン、セットトップボックス、ディスプレイ装置等の画像処理を行う装置に含まれ得る。
【0397】
本文書において、実施例がソフトウェアで具現されるとき、前述した方法は、前述した機能を行うモジュール(過程、機能等)で具現されることができる。モジュールはメモリに格納され、プロセッサにより実行されることができる。メモリは、プロセッサの内部又は外部にあってもよく、よく知られている様々な手段でプロセッサと連結されてもよい。プロセッサは、ASIC(application-specific integrated circuit)、他のチップセット、論理回路及び/又はデータ処理装置を含むことができる。メモリは、ROM(read-only memory)、RAM(random access memory)、フラッシュメモリ、メモリカード、格納媒体及び/又は他の格納装置を含むことができる。即ち、本文書で説明した実施例は、プロセッサ、マイクロプロセッサ、コントローラ又はチップ上で具現されて実行されることができる。例えば、各図面で示している機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラ又はチップ上で具現されて実行されることができる。
【0398】
また、本文書が適用されるデコード装置及びエンコード装置は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ対話装置、ビデオ通信のようなリアルタイム通信装置、モバイルストリーミング装置、格納媒体、カムコーダ、オーダーメイド型ビデオ(VoD)サービス提供装置、OTTビデオ(Over the top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、画像電話ビデオ装置、及び医療用ビデオ装置等に含まれ得、ビデオ信号又はデータ信号を処理するために使用され得る。例えば、OTTビデオ(Over the top video)装置としては、ゲームコンソール、ブルーレイプレーヤー、インターネットアクセスTV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recoder)等を含み得る。
【0399】
また、本文書が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されることができ、コンピュータが読み取ることができる記録媒体に格納されることができる。本文書に係るデータ構造を有するマルチメディアデータもまた、コンピュータが読み取ることができる記録媒体に格納されることができる。前記コンピュータが読み取ることができる記録媒体は、コンピュータで読み取ることができるデータが格納される全ての種類の格納装置及び分散格納装置を含む。前記コンピュータが読み取ることができる記録媒体は、例えば、ブルーレイディスク(BD)、汎用直列バス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピディスク、及び光学的データ格納装置を含み得る。また、前記コンピュータが読み取ることができる記録媒体は、搬送波(例えば、インターネットを介した送信)の形態で具現されたメディアを含む。また、エンコード方法で生成されたビットストリームが、コンピュータが読み取ることができる記録媒体に格納されるか、有無線通信ネットワークを介して送信されることができる。また、本文書の実施形態は、プログラムコードによるコンピュータプログラム製品で具現されることができ、前記プログラムコードは、本文書の実施形態によってコンピュータで実行されることができる。前記プログラムコードは、コンピュータによって読み取り可能なキャリア上に格納されることができる。
【0400】
図17は、本文書が適用されるコンテンツストリーミングシステムの構造図を例示的に示す。
【0401】
また、本文書が適用されるコンテンツストリーミングシステムは、大きくエンコーディングサーバ、ストリーミングサーバ、ウェブサーバ、メディアストレージ、ユーザ装置、及びマルチメディア入力装置を含むことができる。
【0402】
前記エンコーディングサーバは、スマートフォン、カメラ、カムコーダ等のようなマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これを前記ストリーミングサーバに送信する役割をする。別の例として、スマートフォン、カメラ、カムコーダなどのようなマルチメディア入力装置がビットストリームを直接生成する場合、前記エンコーディングサーバは省略され得る。前記ビットストリームは、本文書が適用されるエンコーディング方法又はビットストリームの生成方法により生成されることができ、前記ストリーミングサーバは、前記ビットストリームを送信又は受信する過程で、一時的に前記ビットストリームを格納することができる。
【0403】
前記ストリーミングサーバは、ウェブサーバを介したユーザの要請に基づいてマルチメディアデータをユーザ装置に送信し、前記ウェブサーバは、ユーザにどのようなサービスがあるかを知らせる媒介体の役割をする。ユーザが前記ウェブサーバに所望のサービスを要請すると、前記ウェブサーバは、これをストリーミングサーバに伝達し、前記ストリーミングサーバは、ユーザにマルチメディアデータを送信する。そのとき、前記コンテンツストリーミングシステムは、別の制御サーバを含むことができ、この場合、前記制御サーバは、前記コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割をする。
【0404】
前記ストリーミングサーバは、メディアストレージ及び/又はエンコーディングサーバからコンテンツを受信することができる。例えば、前記エンコーディングサーバからコンテンツを受信することになる場合、前記コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、前記ストリーミングサーバは、前記ビットストリームを一定時間格納することができる。
【0405】
前記ユーザ装置の例としては、携帯電話、スマートフォン(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、デスクトップコンピュータ、デジタルサイニジなどがあり得る。前記コンテンツストリーミングシステム内の各サーバは、分散サーバとして運営されることができ、この場合、各サーバで受信するデータは、分散処理されることができる。
【0406】
本明細書に記載された請求項は、多様な方式で組み合わせることができる。例えば、本明細書の方法請求項の技術的特徴が組み合わせられて装置として具現されることができ、本明細書の装置請求項の技術的特徴が組み合わせられて方法として具現されることができる。また、本明細書の方法請求項の技術的特徴と装置請求項の技術的特徴とが組み合わせられて装置として具現されることができ、本明細書の方法請求項の技術的特徴と装置請求項の技術的特徴とが組み合わせられて方法として具現されることができる。