本文書は、多様な変更を加えることができ、種々の実施例を有することができ、特定実施例を図面に例示して詳細に説明する。しかしながら、これは、本文書を特定実施例に限定するものではない。本明細書において、常用する用語は、単に特定の実施例を説明するために使われたものであって、本文書の技術的思想を限定する意図で使われるものではない。単数の表現は、文脈上明白に異なる意味ではない限り、複数の表現を含む。本明細書において“含む”または“有する”などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品、または、これらを組合せたものが存在することを指定し、一つまたはそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品、または、これらを組合せたもの等の存在または付加可能性をあらかじめ排除しないと理解しなければならない。
一方、本文書で説明される図面上の各構成は、互いに異なる特徴的な機能に関する説明の便宜のために、独立的に示しものであって、各構成が互いに別個のハードウェアや別個のソフトウェアで具現されるということを意味するものではない。例えば、各構成のうち、二つ以上の構成が結合されて一つの構成をなすこともでき、一つの構成を複数の構成に分けることもできる。各構成が統合及び/または分離された実施例も本文書の本質から外れない限り、本文書の権利範囲に含まれる。
以下、添付図面を参照して、本文書の好ましい実施例をより詳細に説明する。以下、図面上の同じ構成要素に対しては同じ参照符号を使用し、同じ構成要素に対して重複した説明は省略する。
この文書は、ビデオ/映像コーディングに関する。例えば、この文書に開示された方法/実施例は、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標準等)と関連することができる。
この文書ではビデオ/映像コーディングに関する多様な実施例を提示し、他の言及がない限り、前記実施例は、互いに組合せて実行されることもできる。
この文書において、ビデオ(video)は、時間の流れによる一連の映像(image)の集合を意味することができる。ピクチャ(picture)は、一般的に特定時間帯の一つの映像を示す単位を意味し、スライス(slice)/タイル(tile)は、コーディングにおいてピクチャの一部を構成する単位である。スライス/タイルは、一つ以上のCTU(coding tree unit)を含むことができる。一つのピクチャは、一つ以上のスライス/タイルで構成されることができる。一つのピクチャは、一つ以上のタイルグループで構成されることができる。一つのタイルグループは、一つ以上のタイルを含むことができる。
ピクセル(pixel)またはペル(pel)は、一つのピクチャ(または、映像)を構成する最小の単位を意味することができる。また、ピクセルに対応する用語として‘サンプル(sample)’が使われることができる。サンプルは、一般的にピクセルまたはピクセルの値を示すことができ、ルマ(luma)成分のピクセル/ピクセル値のみを示すこともでき、クロマ(chroma)成分のピクセル/ピクセル値のみを示すこともできる。または、サンプルは、空間ドメインでのピクセル値を意味することもでき、このようなピクセル値が周波数ドメインに変換されると、周波数ドメインでの変換係数を意味することもできる。
ユニット(unit)は、映像処理の基本単位を示すことができる。ユニットは、ピクチャの特定領域及び該当領域に関連した情報のうち少なくとも一つを含むことができる。一つのユニットは、一つのルマブロック及び二つのクロマ(例えば、cb、cr)ブロックを含むことができる。ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用して使われることができる。一般的な場合、M×Nブロックは、M個の列及びN個の行からなるサンプル(または、サンプルアレイ)または変換係数(transform coefficient)の集合(または、アレイ)を含むことができる。
この文書において、“/”と“、”は、“及び/または”と解釈される。例えば、“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.”)
追加的に、本文書において“または”は、“及び/または”と解釈される。例えば、“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.”)
図1は、本文書が適用されることができるビデオ/映像コーディングシステムの例を概略的に示す。
図1を参照すると、ビデオ/映像コーディングシステムは、ソースデバイス及び受信デバイスを含むことができる。ソースデバイスは、エンコーディングされたビデオ(video)/映像(image)情報またはデータをファイルまたはストリーミング形態でデジタル格納媒体またはネットワークを介して受信デバイスに伝達できる。
前記ソースデバイスは、ビデオソース、エンコーディング装置、送信部を含むことができる。前記受信デバイスは、受信部、デコーディング装置、及びレンダラを含むことができる。前記エンコーディング装置は、ビデオ/映像エンコーディング装置と呼ばれることができ、前記デコーディング装置は、ビデオ/映像デコーディング装置と呼ばれることができる。送信機は、エンコーディング装置に含まれることができる。受信機は、デコーディング装置に含まれることができる。レンダラは、ディスプレイ部を含むこともでき、ディスプレイ部は、別個のデバイスまたは外部コンポーネントで構成されることもできる。
ビデオソースは、ビデオ/映像のキャプチャ、合成または生成過程などを介してビデオ/映像を取得することができる。ビデオソースは、ビデオ/映像キャプチャデバイス及び/またはビデオ/映像生成デバイスを含むことができる。ビデオ/映像キャプチャデバイスは、例えば、一つ以上のカメラ、以前にキャプチャされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成デバイスは、例えば、コンピュータ、タブレット、及びスマートフォンなどを含むことができ、(電子的に)ビデオ/映像を生成することができる。例えば、コンピュータなどを介して仮想のビデオ/映像が生成されることができ、この場合、関連データが生成される過程としてビデオ/映像キャプチャ過程が代替されることができる。
エンコーディング装置は、入力ビデオ/映像をエンコーディングすることができる。エンコーディング装置は、圧縮及びコーディング効率のために、予測、変換、量子化など、一連の手順を実行することができる。エンコーディングされたデータ(エンコーディングされたビデオ/映像情報)は、ビットストリーム(bitstream)形態で出力されることができる。
送信部は、ビットストリーム形態で出力されたエンコーディングされたビデオ/映像情報またはデータをファイルまたはストリーミング形態でデジタル格納媒体またはネットワークを介して受信デバイスの受信部に伝達できる。デジタル格納媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなど、多様な格納媒体を含むことができる。送信部は、あらかじめ決められたファイルフォーマットを介してメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介した送信のためのエレメントを含むことができる。受信部は、前記ビットストリームを受信/抽出してデコーディング装置に伝達できる。
デコーディング装置は、エンコーディング装置の動作に対応する逆量子化、逆変換、予測など、一連の手順を実行してビデオ/映像をデコーディングすることができる。
レンダラは、デコーディングされたビデオ/映像をレンダリングすることができる。レンダリングされたビデオ/映像は、ディスプレイ部を介してディスプレイされることができる。
図2は、本文書が適用されることができるビデオ/映像エンコーディング装置の構成を概略的に説明する図である。以下、ビデオエンコーディング装置とは、映像エンコーディング装置を含むことができる。
図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を内/外部コンポーネントとしてさらに含むこともできる。
映像分割部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)を誘導する単位である。
ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用して使われることができる。一般的な場合、M×Nブロックは、M個の列とN個の行からなるサンプルまたは変換係数(transform coefficient)の集合を示すことができる。サンプルは、一般的にピクセルまたはピクセルの値を示すことができ、輝度(luma)成分のピクセル/ピクセル値のみを示すこともでき、彩度(chroma)成分のピクセル/ピクセル値のみを示すこともできる。サンプルは、一つのピクチャ(または、映像)をピクセル(pixel)またはペル(pel)に対応する用語として使われることができる。
減算部231は、入力映像信号(原本ブロック、原本サンプルまたは原本サンプルアレイ)から、予測部220から出力された予測信号(予測されたブロック、予測サンプルまたは予測サンプルアレイ)を減算してレジデュアル信号(レジデュアルブロック、レジデュアルサンプルまたはレジデュアルサンプルアレイ)を生成することができ、生成されたレジデュアル信号は、変換部232に送信される。予測部220は、処理対象ブロック(以下、現在ブロックという)に対する予測を実行し、前記現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部220は、現在ブロックまたはCU単位でイントラ予測が適用されるか、または、インター予測が適用されるかを決定することができる。予測部は、各予測モードに対する説明で後述するように、予測モード情報など、予測に関する多様な情報を生成してエントロピーエンコーディング部240に伝達できる。予測に関する情報は、エントロピーエンコーディング部240でエンコーディングされてビットストリーム形態で出力されることができる。
イントラ予測部222は、現在ピクチャ内のサンプルを参照して現在ブロックを予測することができる。前記参照されるサンプルは、予測モードによって前記現在ブロックの隣接(neighbor)に位置することもでき、または、離れて位置することもできる。イントラ予測において、予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。非方向性モードは、例えば、DCモード及びプラナーモード(Planarモード)を含むことができる。方向性モードは、予測方向の細かい程度によって、例えば、33個の方向性予測モードまたは65個の方向性予測モードを含むことができる。ただし、これは例示に過ぎず、設定によって、それ以上またはそれ以下の個数の方向性予測モードが使われることができる。イントラ予測部222は、隣接ブロックに適用された予測モードを利用し、現在ブロックに適用される予測モードを決定することもできる。
インター予測部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)をシグナリングすることで現在ブロックの動きベクトルを指示することができる。
予測部220は、後述する多様な予測方法に基づいて予測信号を生成することができる。例えば、予測部は、一つのブロックに対する予測のために、イントラ予測またはインター予測を適用することができるだけでなく、イントラ予測とインター予測を同時に適用できる。これはcombined inter and intra prediction(CIIP)と呼ばれることができる。また、予測部は、ブロックに対する予測のために、イントラブロックコピー(intra block copy、IBC)を実行することもできる。前記イントラブロックコピーは、例えば、SCC(screen content coding)などのように、ゲームなどのコンテンツ映像/動映像コーディングのために使われることができる。IBCは、基本的に現在ピクチャ内で予測を実行するが、現在ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。即ち、IBCは、本文書で説明されるインター予測技法のうち少なくとも一つを利用することができる。
インター予測部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)を利用して予測信号を生成し、それに基づいて取得される変換を意味する。また、変換過程は、正方形の同じ大きさを有するピクセルブロックに適用されることもでき、正方形でない可変大きさのブロックに適用されることもできる。
量子化部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に含まれることもできる。
量子化部233から出力された量子化された変換係数は、予測信号を生成するために利用されることができる。例えば、量子化された変換係数に逆量子化部234及び逆変換部235を介して逆量子化及び逆変換を適用することによってレジデュアル信号(レジデュアルブロックまたはレジデュアルサンプル)を復元することができる。加算部250は、復元されたレジデュアル信号を予測部220から出力された予測信号に加算することによって復元(reconstructed)信号(復元ピクチャ、復元ブロック、復元サンプルまたは復元サンプルアレイ)が生成されることができる。スキップモードが適用された場合のように、処理対象ブロックに対するレジデュアルがない場合、予測されたブロックが復元ブロックとして使われることができる。生成された復元信号は、現在ピクチャ内の次の処理対象ブロックのイントラ予測のために使われることができ、後述するように、フィルタリングを経て次のピクチャのインター予測のために使われることもできる。
一方、ピクチャエンコーディング及び/または復元過程でLMCS(luma mapping with chroma scaling)が適用されることもできる。
フィルタリング部260は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部260は、復元ピクチャに多様なフィルタリング方法を適用して修正された(modified)復元ピクチャを生成することができ、前記修正された復元ピクチャをメモリ270、具体的に、メモリ270のDPBに格納できる。前記多様なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset、SAO)、適応的ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。フィルタリング部260は、各フィルタリング方法に対する説明で後述するように、フィルタリングに関する多様な情報を生成してエントロピーエンコーディング部240に伝達できる。フィルタリングに関する情報は、エントロピーエンコーディング部240でエンコーディングされてビットストリーム形態で出力されることができる。
メモリ270に送信された修正された復元ピクチャは、インター予測部221で参照ピクチャとして使われることができる。エンコーディング装置は、これを介してインター予測が適用される場合、エンコーディング装置200とデコーディング装置での予測ミスマッチを避けることができ、符号化効率も向上させることができる。
メモリ270のDPBは、修正された復元ピクチャをインター予測部221での参照ピクチャとして使用するために格納できる。メモリ270は、現在ピクチャ内の動き情報が導出された(または、エンコーディングされた)ブロックの動き情報及び/または既に復元されたピクチャ内のブロックの動き情報を格納することができる。前記格納された動き情報は、空間的隣接ブロックの動き情報または時間的隣接ブロックの動き情報として活用するために、インター予測部221に伝達できる。メモリ270は、現在ピクチャ内の復元されたブロックの復元サンプルを格納することができ、イントラ予測部222に伝達できる。
図3は、本文書が適用されることができるビデオ/映像デコーディング装置の構成を概略的に説明する図である。
図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を内/外部コンポーネントとしてさらに含むこともできる。
ビデオ/映像情報を含むビットストリームが入力されると、デコーディング装置300は、図2のエンコーディング装置でビデオ/映像情報が処理されたプロセスに対応して映像を復元することができる。例えば、デコーディング装置300は、前記ビットストリームから取得したブロック分割関連情報に基づいてユニット/ブロックを導出することができる。デコーディング装置300は、エンコーディング装置で適用された処理ユニットを利用してデコーディングを実行することができる。したがって、デコーディングの処理ユニットは、例えば、コーディングユニットであり、コーディングユニットは、コーディングツリーユニットまたは最大コーディングユニットからクアッドツリー構造、バイナリツリー構造及び/またはターナリツリー構造によって分割されることができる。コーディングユニットから一つ以上の変換ユニットが導出されることができる。そして、デコーディング装置300を介してデコーディング及び出力された復元映像信号は、再生装置を介して再生されることができる。
デコーディング装置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のうち少なくとも一つを含むことができる。
逆量子化部321では量子化された変換係数を逆量子化して変換係数を出力することができる。逆量子化部321は、量子化された変換係数を2次元のブロック形態で再整列できる。この場合、前記再整列は、エンコーディング装置で実行された係数スキャン順序に基づいて再整列を実行することができる。逆量子化部321は、量子化パラメータ(例えば、量子化ステップサイズ情報)を利用して量子化された変換係数に対する逆量子化を実行し、変換係数(transform coefficient)を取得することができる。
逆変換部322では変換係数を逆変換してレジデュアル信号(レジデュアルブロック、レジデュアルサンプルアレイ)を取得するようになる。
予測部は、現在ブロックに対する予測を実行し、前記現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部は、エントロピーデコーディング部310から出力された前記予測に関する情報に基づいて前記現在ブロックにイントラ予測が適用されるか、または、インター予測が適用されるかを決定することができ、具体的なイントラ/インター予測モードを決定することができる。
予測部は、後述する多様な予測方法に基づいて予測信号を生成することができる。例えば、予測部は、一つのブロックに対する予測のために、イントラ予測またはインター予測を適用することができるだけでなく、イントラ予測とインター予測を同時に適用できる。これはcombined inter and intra prediction(CIIP)と呼ばれることができる。また、予測部は、ブロックに対する予測のために、イントラブロックコピー(intra block copy、IBC)を実行することもできる。前記イントラブロックコピーは、例えば、SCC(screen content coding)などのように、ゲームなどのコンテンツ映像/動映像コーディングのために使われることができる。IBCは、基本的に現在ピクチャ内で予測を実行するが、現在ピクチャ内で参照ブロックを導出する点でインター予測と類似するように実行されることができる。即ち、IBCは、本文書で説明されるインター予測技法のうち少なくとも一つを利用することができる。
イントラ予測部331は、現在ピクチャ内のサンプルを参照して現在ブロックを予測することができる。前記参照されるサンプルは、予測モードによって前記現在ブロックの隣接(neighbor)に位置することもでき、または、離れて位置することもできる。イントラ予測において、予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。イントラ予測部331は、隣接ブロックに適用された予測モードを利用し、現在ブロックに適用される予測モードを決定することもできる。
インター予測部332は、参照ピクチャ上で動きベクトルにより特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックに対する予測されたブロックを誘導することができる。このとき、インター予測モードで送信される動き情報の量を減らすために、隣接ブロックと現在ブロックとの間の動き情報の相関性に基づいて動き情報をブロック、サブブロックまたはサンプル単位で予測できる。前記動き情報は、動きベクトル及び参照ピクチャインデックスを含むことができる。前記動き情報は、インター予測方向(L0予測、L1予測、Bi予測等)情報をさらに含むことができる。インター予測の場合に、隣接ブロックは、現在ピクチャ内に存在する空間的隣接ブロック(spatial neighboring block)と参照ピクチャに存在する時間的隣接ブロック(temporal neighboring block)を含むことができる。例えば、インター予測部332は、隣接ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて前記現在ブロックの動きベクトル及び/または参照ピクチャインデックスを導出することができる。多様な予測モードに基づいてインター予測が実行されることができ、前記予測に関する情報は、前記現在ブロックに対するインター予測のモードを指示する情報を含むことができる。
加算部340は、取得されたレジデュアル信号を予測部330から出力された予測信号(予測されたブロック、予測サンプルアレイ)に加算することによって復元信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合のように、処理対象ブロックに対するレジデュアルがない場合、予測されたブロックが復元ブロックとして使われることができる。
加算部340は、復元部または復元ブロック生成部と呼ばれることができる。生成された復元信号は、現在ピクチャ内の次の処理対象ブロックのイントラ予測のために使われることができ、後述するように、フィルタリングを経て出力されることもでき、または、次のピクチャのインター予測のために使われることもできる。
一方、ピクチャデコーディング過程でLMCS(luma mapping with chroma scaling)が適用されることもできる。
フィルタリング部350は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部350は、復元ピクチャに多様なフィルタリング方法を適用して修正された(modified)復元ピクチャを生成することができ、前記修正された復元ピクチャをメモリ360、具体的に、メモリ360のDPBに送信できる。前記多様なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。
メモリ360のDPBに格納された(修正された)復元ピクチャは、インター予測部332で参照ピクチャとして使われることができる。メモリ360は、現在ピクチャ内の動き情報が導出された(または、デコーディングされた)ブロックの動き情報及び/または既に復元されたピクチャ内のブロックの動き情報を格納することができる。前記格納された動き情報は、空間的隣接ブロックの動き情報または時間的隣接ブロックの動き情報として活用するために、インター予測部332に伝達できる。メモリ360は、現在ピクチャ内の復元されたブロックの復元サンプルを格納することができ、イントラ予測部331に伝達できる。
本明細書において、デコーディング装置300の予測部330、逆量子化部321、逆変換部322、及びフィルタリング部350などで説明された実施例は、各々、エンコーディング装置200の予測部220、逆量子化部234、逆変換部235、及びフィルタリング部260などにも同じくまたは対応されるように適用されることができる。
前述したように、ビデオコーディングを実行するにあたって、圧縮効率を上げるために予測を実行する。それによって、コーディング対象ブロックである現在ブロックに対する予測サンプルを含む予測されたブロックを生成することができる。ここで、前記予測されたブロックは、空間ドメイン(または、ピクセルドメイン)での予測サンプルを含む。前記予測されたブロックは、エンコーディング装置及びデコーディング装置で同じく導出され、前記エンコーディング装置は、原本ブロックの原本サンプル値自体でない前記原本ブロックと前記予測されたブロックとの間のレジデュアルに対する情報(レジデュアル情報)をデコーディング装置にシグナリングすることで映像コーディング効率を上げることができる。デコーディング装置は、前記レジデュアル情報に基づいてレジデュアルサンプルを含むレジデュアルブロックを導出し、前記レジデュアルブロックと前記予測されたブロックを合わせて復元サンプルを含む復元ブロックを生成することができ、復元ブロックを含む復元ピクチャを生成することができる。
前記レジデュアル情報は、変換及び量子化手順を介して生成されることができる。例えば、エンコーディング装置は、前記原本ブロックと前記予測されたブロックとの間のレジデュアルブロックを導出し、前記レジデュアルブロックに含まれているレジデュアルサンプル(レジデュアルサンプルアレイ)に変換手順を実行して変換係数を導出し、前記変換係数に量子化手順を実行して量子化された変換係数を導出することで、関連したレジデュアル情報を(ビットストリームを介して)デコーディング装置にシグナリングできる。ここで、前記レジデュアル情報は、前記量子化された変換係数の値情報、位置情報、変換技法、変換カーネル、量子化パラメータなどの情報を含むことができる。デコーディング装置は、前記レジデュアル情報に基づいて逆量子化/逆変換手順を実行し、レジデュアルサンプル(または、レジデュアルブロック)を導出することができる。デコーディング装置は、予測されたブロックと前記レジデュアルブロックに基づいて復元ピクチャを生成することができる。また、エンコーディング装置は、以後ピクチャのインター予測のための参照のために、量子化された変換係数を逆量子化/逆変換してレジデュアルブロックを導出し、これに基づいて復元ピクチャを生成することができる。
図4は、本文書による多重変換技法を概略的に示す。
図4を参照すると、変換部は、前述した図2のエンコーディング装置内の変換部に対応されることができ、逆変換部は、前述した図2のエンコーディング装置内の逆変換部または図3のデコーディング装置内の逆変換部に対応されることができる。
変換部は、レジデュアルブロック内のレジデュアルサンプル(レジデュアルサンプルアレイ)に基づいて1次変換を実行して(1次)変換係数を導出することができる(S410)。このような1次変換(primary transform)は、核心変換(core transform)と呼ばれることができる。ここで、前記1次変換は、多重変換選択(Multiple Transform Selection、MTS)に基づくことができ、1次変換で多重変換が適用される場合、多重核心変換と呼ばれることができる。
多重核心変換は、DCT(Discrete Cosine Transform)タイプ2とDST(Discrete Sine Transform)タイプ7、DCTタイプ8、及び/またはDSTタイプ1を追加的に使用して変換する方式を示すことができる。即ち、前記多重核心変換は、前記DCTタイプ2、前記DSTタイプ7、前記DCTタイプ8、及び前記DSTタイプ1の中から選択された複数の変換カーネルに基づいて空間ドメインのレジデュアル信号(または、レジデュアルブロック)を周波数ドメインの変換係数(または、1次変換係数)に変換する変換方法を示すことができる。ここで、前記1次変換係数は、変換部立場で臨時変換係数と呼ばれることができる。
即ち、既存の変換方法が適用される場合、DCTタイプ2に基づいてレジデュアル信号(または、レジデュアルブロック)に対する空間ドメインから周波数ドメインへの変換が適用されて変換係数が生成されることができた。これとは違って、前記多重核心変換が適用される場合、DCTタイプ2、DSTタイプ7、DCTタイプ8、及び/またはDSTタイプ1などに基づいてレジデュアル信号(または、レジデュアルブロック)に対する空間ドメインから周波数ドメインへの変換が適用されて変換係数(または、1次変換係数)が生成されることができる。ここで、DCTタイプ2、DSTタイプ7、DCTタイプ8、及びDSTタイプ1等は、変換タイプ、変換カーネル(kernel)または変換コア(core)と呼ばれることができる。
参考までに、前記DCT/DST変換タイプは、基底関数に基づいて定義されることができ、前記基底関数は、以下の表のように示される。
前記多重核心変換が実行される場合、前記変換カーネルの中から対象ブロックに対する垂直変換カーネル及び水平変換カーネルが選択されることができ、前記垂直変換カーネルに基づいて前記対象ブロックに対する垂直変換が実行され、前記水平変換カーネルに基づいて前記対象ブロックに対する水平変換が実行されることができる。ここで、前記水平変換は、前記対象ブロックの水平成分に対する変換を示すことができ、前記垂直変換は、前記対象ブロックの垂直成分に対する変換を示すことができる。前記垂直変換カーネル/水平変換カーネルは、レジデュアルブロックを含む対象ブロック(CUまたはサブブロック)の予測モード及び/または変換インデックスに基づいて適応的に決定されることができる。
また、一例によると、MTSを適用して1次変換を実行する場合、特定基底関数を所定値に設定し、垂直変換または水平変換である時、どのような基底関数が適用されるかを組合せて変換カーネルに対するマッピング関係を設定することができる。例えば、水平方向変換カーネルをtrTypeHorで表し、垂直方向変換カーネルをtrTypeVerで表す場合、trTypeHorまたはtrTypeVer値0はDCT2に設定され、trTypeHorまたはtrTypeVer値1はDST7に設定され、trTypeHorまたはtrTypeVer値2はDCT8に設定されることができる。
この場合、多数の変換カーネルセットのうちいずれか一つを指示するために、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であることを指示することができる。
変換部は、前記(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)領域に対して適用されることもできる。
具体的に、例えば、4×4入力ブロックが使われる場合、非分離2次変換は、下記のように実行されることができる。
前記4×4入力ブロックXは、以下のように示される。
前記Xをベクトル形態で表す場合、ベクトル
は、以下のように示される。
数式2のように、ベクトル
は、行優先(row-first)順序によって数式1のXの2次元ブロックを1次元ベクトルに再配列する。
この場合、前記2次非分離変換は、以下のように計算されることができる。
ここで、
は変換係数ベクトルを示し、Tは16×16(非分離)変換マトリクスを示す。
前記数式3を介して16×1変換係数ベクトル
が導出されることができ、前記
は、スキャン順序(水平、垂直、対角(diagonal)等)を介して4×4ブロックで再構成(re-organized)されることができる。ただし、前述した計算は、例示に過ぎず、非分離2次変換の計算複雑度を減らすためにHyGT(Hypercube-Givens Transform)などが非分離2次変換の計算のために使われることもできる。
一方、前記非分離2次変換は、モードによって(mode dependent)変換カーネル(または、変換コア、変換タイプ)が選択されることができる。ここで、モードは、イントラ予測モード及び/またはインター予測モードを含むことができる。
前述したように、前記非分離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行列になることができる。
このとき、モードによる変換カーネル選択のために、8×8変換及び4×4変換の両方ともに対して非分離2次変換のための変換セット当たり3個ずつの非分離2次変換カーネルが構成されることができ、変換セットは35個である。即ち、8×8変換に対して35個の変換セットが構成され、4×4変換に対して35個の変換セットが構成されることができる。この場合、8×8変換に対する35個の変換セットには各々3個ずつの8×8変換カーネルが含まれることができ、4×4変換に対する35個の変換セットには各々3個ずつの4×4変換カーネルが含まれることができる。ただし、前記変換のサイズ、前記セットの数、及びセット内の変換カーネルの数は、例示に過ぎず、8×8または4×4以外のサイズが使われることができ、または、n個のセットが構成され、各セット内にk個の変換カーネルが含まれることもできる。
前記変換セットは、NSSTセットと呼ばれることができ、前記NSSTセット内の変換カーネルは、NSSTカーネルと呼ばれることができる。前記変換セットの中から特定セットの選択は、例えば、対象ブロック(CUまたはサブブロック)のイントラ予測モードに基づいて実行されることができる。
参考までに、例えば、イントラ予測モードは、2個の非方向性(non-directinoal、または、非角度性(non-angular))イントラ予測モードと65個の方向性(directional、または、角度性(angular))イントラ予測モードを含むことができる。前記非方向性イントラ予測モードは、0番であるプラナー(planar)イントラ予測モード及び1番であるDCイントラ予測モードを含むことができ、前記方向性イントラ予測モードは、2番乃至66番の65個のイントラ予測モードを含むことができる。ただし、これは例示に過ぎず、本文書はイントラ予測モードの数が異なる場合にも適用されることができる。一方、場合によって、67番イントラ予測モードがさらに使用されることができ、前記67番イントラ予測モードは、LM(linear model)モードを示すことができる。
図5は、65個の予測方向のイントラ方向性モードを例示的に示す。
図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番イントラ予測モードは、左下向対角イントラ予測モードと呼ばれることができる。
この場合、前記35個の変換セットと前記イントラ予測モードとの間のマッピング(mapping)は、例えば、以下の表のように示される。参考までに、対象ブロックにLMモードが適用される場合、前記対象ブロックに対しては2次変換が適用されない。
一方、特定セットが使われることと決定されると、非分離2次変換インデックスを介して前記特定セット内のk個の変換カーネルの中から一つが選択されることができる。エンコーディング装置は、RD(rate-distortion)チェックベースの特定変換カーネルを指す非分離2次変換インデックスを導出することができ、前記非分離2次変換インデックスをデコーディング装置にシグナリングできる。デコーディング装置は、前記非分離2次変換インデックスに基づいて特定セット内のk個の変換カーネルの中から一つを選択することができる。例えば、NSSTインデックス値0は、1番目の非分離2次変換カーネルを指すことができ、NSSTインデックス値1は、2番目の非分離2次変換カーネルを指すことができ、NSSTインデックス値2は、3番目の非分離2次変換カーネルを指すことができる。または、NSSTインデックス値0は、対象ブロックに対して1番目の非分離2次変換が適用されないことを指すことができ、NSSTインデックス値1乃至3は、前記3個の変換カーネルを指すことができる。
再び、図4を参照すると、変換部は、選択された変換カーネルに基づいて前記非分離2次変換を実行し、修正された(2次)変換係数を取得することができる。前記修正された変換係数は、前述したように、量子化部を介して量子化された変換係数として導出されることができ、エンコーディングされてデコーディング装置にシグナリング及びエンコーディング装置内の逆量子化/逆変換部に伝達されることができる。
一方、前述したように2次変換が省略される場合、前記1次(分離)変換の出力である(1次)変換係数は、前述したように、量子化部を介して量子化された変換係数として導出されることができ、エンコーディングされてデコーディング装置にシグナリング及びエンコーディング装置内の逆量子化/逆変換部に伝達されることができる。
逆変換部は、前述した変換部で実行された手順の逆順に一連の手順を実行することができる。逆変換部は、(逆量子化された)変換係数を受信し、2次(逆)変換を実行して(1次)変換係数を導出し(S450)、前記(1次)変換係数に対して1次(逆)変換を実行してレジデュアルブロック(レジデュアルサンプル)を取得することができる(S460)。ここで、前記1次変換係数は、逆変換部立場で修正された(modified)変換係数と呼ばれることができる。エンコーディング装置及びデコーディング装置は、前記レジデュアルブロックと予測されたブロックに基づいて復元ブロックを生成し、これに基づいて復元ピクチャを生成することができることは、前述した通りである。
一方、デコーディング装置は、2次逆変換適用可否決定部(または、2次逆変換の適用可否を決定する要素)と、2次逆変換決定部(または、2次逆変換を決定する要素)をさらに含むことができる。2次逆変換適用可否決定部は、2次逆変換の適用可否を決定することができる。例えば、2次逆変換は、NSSTまたはRSTであり、2次逆変換適用可否決定部は、ビットストリームからパーシングした2次変換フラグに基づいて2次逆変換の適用可否を決定することができる。他の一例としては、2次逆変換適用可否決定部は、レジデュアルブロックの変換係数に基づいて2次逆変換の適用可否を決定することもできる。
2次逆変換決定部は、2次逆変換を決定することができる。このとき、2次逆変換決定部は、イントラ予測モードによって指定されたNSST(または、RST)変換セットに基づいて現在ブロックに適用される2次逆変換を決定することができる。また、一実施例として、1次変換決定方法に依存的に(depend on)2次変換決定方法が決定されることができる。イントラ予測モードによって1次変換と2次変換の多様な組合せが決定されることができる。また、一例として、2次逆変換決定部は、現在ブロックの大きさに基づいて2次逆変換が適用される領域を決定することもできる。
一方、前述したように、2次(逆)変換が省略される場合(逆量子化された)、変換係数を受信して前記1次(分離)逆変換を実行することでレジデュアルブロック(レジデュアルサンプル)を取得することができる。エンコーディング装置及びデコーディング装置は、前記レジデュアルブロックと予測されたブロックに基づいて復元ブロックを生成し、これに基づいて復元ピクチャを生成することができることは、前述した通りである。
一方、本文書では非分離2次変換による計算量とメモリ要求量の低減のために、NSSTの概念で変換マトリクス(カーネル)の大きさが減少されたRST(reduced secondary transform)を適用することができる。
一方、本文書で説明された変換カーネル、変換マトリクス、変換カーネルマトリクスを構成する係数、即ち、カーネル係数またはマトリクス係数は、8ビットで表現されることができる。これはデコーディング装置及びエンコーディング装置で具現されるための一つの条件であり、既存の9ビットまたは10ビットと比較して合理的に受け入れることができる性能低下と共に、変換カーネルを格納するためのメモリ要求量を減らすことができる。また、カーネルマトリクスを8ビットで表現することによって小さい乗算器を使用することができ、最適のソフトウェア具現のために使われるSIMD(Single Instruction Multiple Data)命令にさらに適合できる。
本明細書において、RSTは、簡素化ファクタ(factor)によって大きさが減少された変換マトリクス(transform matrix)に基づいて対象ブロックに対するレジデュアルサンプルに対して実行される変換を意味することができる。簡素化変換を実行する場合、変換マトリクスの大きさ減少によって変換時に要求される演算量が減少されることができる。即ち、RSTは、大きさが大きいブロックの変換または非分離変換時に発生する演算複雑度(complexity)問題を解消するために利用されることができる。
RSTは、減少された変換、減少変換、reduced transform、reduced secondary transform、reduction transform、simplified transform、simple transformなど、多様な用語で呼ばれることもでき、RSTを指す名称は、羅列された例示に限定されるものではない。または、RSTは、主に変換ブロックで0でない係数を含む低周波領域で行われるため、LFNST(Low-Frequency Non-Separable Transform)とも呼ばれる。
一方、2次逆変換がRSTに基づいて行われる場合、エンコーディング装置200の逆変換部235とデコーディング装置300の逆変換部322は、変換係数に対する逆RSTに基づいて修正された変換係数を導出する逆RST部と、修正された変換係数に対する逆1次変換に基づいて前記対象ブロックに対するレジデュアルサンプルを導出する逆1次変換部と、を含むことができる。逆1次変換は、レジデュアルに適用された1次変換の逆変換を意味する。本文書において、変換に基づいて変換係数を導出することは、該当変換を適用して変換係数を導出することを意味することができる。
図6は、本文書の一実施例に係るRSTを説明するための図である。
本明細書において、“対象ブロック”は、コーディングが実行される現在ブロックまたはレジデュアルブロックを意味することができる。
一実施例に係る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値を意味することもできる。
一実施例において、簡素化ファクタまたは簡素化係数は、ビットストリームを介してシグナリングされることができるが、実施例がこれに限定されるものではない。例えば、簡素化ファクタまたは簡素化係数に対する既定義された値が各エンコーディング装置200及びデコーディング装置300に格納されている場合があり、この場合、簡素化ファクタまたは簡素化係数は、別途にシグナリングされない場合もある。
一実施例に係る簡素化変換マトリクスのサイズは、通常の変換マトリクスのサイズN×Nより小さいR×Nであり、以下の数式4のように定義されることができる。
図6の(a)に示すReduced Transformブロック内のマトリクスTは、数式4のマトリクスTR×Nを意味することができる。図6の(a)のように、対象ブロックに対するレジデュアルサンプルに対して簡素化変換マトリクスTR×Nが掛け算される場合、対象ブロックに対する変換係数が導出されることができる。
一実施例において、変換が適用されるブロックのサイズが8×8であり、R=16(即ち、R/N=16/64=1/4)である場合、図6の(a)によるRSTは、以下の数式5のような行列演算で表現されることができる。この場合、メモリと乗算演算が簡素化ファクタにより略1/4に減少されることができる。
本文書における行列演算とは、行列を列ベクトルの左側に置いて行列と列ベクトルを掛け算して列ベクトルを得る演算であると理解されることができる。
数式5において、r1乃至r64は、対象ブロックに対するレジデュアルサンプルを示すことができ、より具体的に、1次変換を適用して生成された変換係数である。数式5の演算結果、対象ブロックに対する変換係数ciが導出されることができ、ciの導出過程は、数式6の通りである。
数式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間の送信効率が増加できる。
変換マトリクスのサイズ観点で検討すると、通常の変換マトリクスのサイズは64×64(N×N)であり、それに対して、簡素化変換マトリクスのサイズは16×64(R×N)に減少するため、通常の変換を実行する時と比較すると、RSTを実行する時、メモリ使用をR/N割合で減少させることができる。また、通常の変換マトリクスを利用する時の乗算演算数N×Nと比較すると、簡素化変換マトリクスを利用する場合、乗算演算数をR/N割合で減少(R×N)させることができる。
一実施例において、エンコーディング装置200の変換部232は、対象ブロックに対するレジデュアルサンプルを1次変換及びRSTベースの2次変換を実行することによって対象ブロックに対する変換係数を導出することができる。このような変換係数は、デコーディング装置300の逆変換部に伝達されることができ、デコーディング装置300の逆変換部322は、変換係数に対する逆RST(reduced secondary transform)に基づいて修正された変換係数を導出し、修正された変換係数に対する逆1次変換に基づいて対象ブロックに対するレジデュアルサンプルを導出することができる。
一実施例に係る逆RSTマトリクスTN×Rのサイズは、通常の逆変換マトリクスのサイズN×Nより小さいN×Rであり、数式4に示す簡素化変換マトリクスTR×Nとトランスポーズ(transpose)関係にある。
図6の(b)に示すReduced Inv.Transformブロック内のマトリクスTtは、逆RSTマトリクスTR×N
Tを意味することができる(上付き文字Tは、トランスポーズを意味する)。図6の(b)のように対象ブロックに対する変換係数に対して逆RSTマトリクスTR×N
Tが掛け算される場合、対象ブロックに対する修正された変換係数または対象ブロックに対するレジデュアルサンプルが導出されることができる。逆RSTマトリクスTR×N
Tは(TR×N)T
N×Rで表現することもできる。
より具体的に、2次逆変換で逆RSTが適用される場合には、対象ブロックに対する変換係数に対して逆RSTマトリクスTR×N
Tが掛け算されると、対象ブロックに対する修正された変換係数が導出されることができる。一方、逆1次変換で逆RSTが適用されることができ、この場合、対象ブロックに対する変換係数に対して逆RSTマトリクスTR×NTが掛け算されると、対象ブロックに対するレジデュアルサンプルが導出されることができる。
一実施例において、逆変換が適用されるブロックのサイズが8×8であり、R=16(即ち、R/N=16/64=1/4である場合)である場合、図6の(b)によるRSTは、以下の数式7のような行列演算で表現されることができる。
数式7において、c1乃至c16は、対象ブロックに対する変換係数を示すことができる。数式7の演算結果、対象ブロックに対する修正された変換係数または対象ブロックに対するレジデュアルサンプルを示すrjが導出されることができ、rjの導出過程は、数式8の通りである。
数式8の演算結果、対象ブロックに対する修正された変換係数または対象ブロックに対するレジデュアルサンプルを示すr1乃至rNが導出されることができる。逆変換マトリクスのサイズ観点で検討すると、通常の逆変換マトリクスのサイズは64×64(N×N)であり、それに対して、簡素化逆変換マトリクスのサイズは64×16(N×R)に減少するため、通常の逆変換を実行する時と比較すると、逆RSTを実行する時、メモリ使用をR/N割合で減少させることができる。また、通常の逆変換マトリクスを利用する時の乗算演算数N×Nと比較すると、簡素化逆変換マトリクスを利用する場合、乗算演算数をR/N割合で減少(N×R)させることができる。
一方、8×8 RSTに対しても、表2のような変換セット構成を適用することができる。即ち、表2での変換セットによって該当8×8 RSTが適用されることができる。一つの変換セットは、画面内の予測モードによって2個または3個の変換(カーネル)で構成されているため、2次変換を適用しない場合まで含んで最大4個の変換の中から一つを選択するように構成されることができる。2次変換を適用しない時の変換は、恒等行列が適用されたと見なされることができる。4個の変換に対して各々0、1、2、3のインデックスを付与するとした時(例えば、0番インデックスを恒等行列、即ち、2次変換を適用しない場合に割り当てることができる)、NSSTインデックスというシンタックスエレメント(syntax element)を変換係数ブロック毎にシグナリングして適用される変換を指定することができる。即ち、NSSTインデックスを介して8×8左上段ブロックに対して、8×8 NSSTを指定することができ、RST構成では8×8 RSTを指定することができる。8×8 NSST及び8×8 RSTは、変換の対象になる対象ブロックのWとHが両方とも8と同じまたは大きい時、該当変換係数ブロック内部に含まれている8×8領域に適用されることができる変換を指し、該当8×8領域は、該当変換係数ブロック内部の左上段8×8領域である。類似するように、4×4 NSST及び4×4 RSTは、対象ブロックのWとHが両方とも4と同じまたは大きい時、該当変換係数ブロック内部に含まれている4×4領域に適用されることができる変換を指し、該当4×4領域は、該当変換係数ブロック内部の左上段4×4領域である。
一方、数式4のような(順方向)8×8 RSTを適用するようになると、16個の有効な変換係数が生成されるため、8×8領域を構成する64個の入力データが16個の出力データに縮小されると見ることができ、2次元領域観点で見ると、1/4ほどの領域にのみ有効な変換係数が満たされるようになる。したがって、順方向8×8 RSTを適用して得た16個の出力データは、例えば、図7のブロックの左上段領域(1番から16番変換係数、即ち、数式6を介して得られるc1、c2、...、c16)に1番から16番方向へ対角方向スキャニング順序によって満たされることができる。
図7は、本文書の一実施例に係る変換係数のスキャニング順序を示す。前述したように、順方向スキャン順序が1番から始まると、逆方向スキャニングは、順方向スキャン順序上に64番目から17番目まで図7に示す矢印方向及び順序に行われることができる。
図7において、左上段4×4領域は、有効な変換係数が満たされるROI(Region Of Interest)領域であり、残りの領域は、空の状態になる。空の領域には0値がデフォルトで満たされることができる。
即ち、順方向変換行列の形態が16×64である8×8 RSTを8×8領域に対して適用した時、出力変換係数は、左上段4×4領域に配置され、出力変換係数が存在しない領域は、図7でのスキャン順序を追って(64番目から17番目まで)0で満たされることができる。
もし、図7のROI領域以外に0でない有効な変換係数が発見された場合、8×8 RSTが適用されないことが確実であるため、該当NSSTインデックスコーディングが省略されることができる。それに対して、図7のROI領域以外で0でない変換係数が発見されない場合(例えば、8×8 RSTが適用される場合、ROI以外の領域への変換係数を0に設定した時)、8×8 RSTが適用された可能性があるため、NSSTインデックスをコーディングすることができる。このような条件的NSSTインデックスコーディングは、0でない変換係数の存在有無をチェックしなければならないため、レジデュアルコーディング(residual coding)過程以後に実行されることができる。
本文書は、本実施例で記述したRST構造から4×4ブロックに適用されることができるRSTの設計及び関連最適化方法を扱っている。当然、一部概念に対しては4×4 RSTだけでなく、8×8 RSTまたは他の形態の変換にも適用されることができる。
図8は、本文書の一実施例に係る逆RST過程を示す流れ図である。
図8に開示された各ステップは、図3に開示されたデコーディング装置300により実行されることができる。より具体的に、S800は、図3に開示された逆量子化部321により実行されることができ、S810及びS820は、図3に開示された逆変換部322により実行されることができる。したがって、図3で前述された内容と重複する具体的な内容は、説明を省略または簡単にする。一方、本文書において、RSTは、順方向に適用される変換を意味し、逆RSTは、インバス方向に適用される変換を意味することができる。
一実施例において、逆RSTによる細部動作は、RSTによる細部動作と順序のみが正反対であり、RSTによる細部動作と逆RSTによる細部動作は、実質的に類似する。したがって、当該技術分野の通常の技術者は、以下で説明される逆RSTに対するS800乃至S820の説明がRSTにも同じくまたは類似するように適用可能であることを容易に理解することができる。
一実施例に係るデコーディング装置300は、対象ブロックに対する量子化された変換係数に対して逆量子化を実行して変換係数を導出することができる(S800)。
一方、デコーディング装置300は、逆1次変換後、逆2次変換前に逆2次変換の適用可否を決定することができる。例えば、逆2次変換は、NSSTまたはRSTである。一例として、デコーディング装置は、ビットストリームからパーシングした2次変換フラグに基づいて逆2次変換の適用可否を決定することができる。他の一例としては、デコーディング装置は、レジデュアルブロックの変換係数に基づいて逆2次変換の適用可否を決定することもできる。
また、デコーディング装置300は、逆2次変換を決定することができる。このとき、デコーディング装置300は、イントラ予測モードによって指定されたNSST(または、RST)変換セットに基づいて現在ブロックに適用される逆2次変換を決定することもできる。また、一実施例として、1次変換決定方法に依存して2次変換決定方法が決定されることができる。例えば、1次変換で変換カーネルとしてDCT-2が適用される場合にのみRSTまたはLFNSTが適用されることと決定されることができる。または、イントラ予測モードによって1次変換と2次変換の多様な組合せが決定されることができる。
また、一例として、デコーディング装置300は、逆2次変換を決定するステップ前に現在ブロックの大きさに基づいて逆2次変換が適用される領域を決定することもできる。
一実施例に係るデコーディング装置300は、変換カーネル(transform kernel)を選択することができる(S810)。より具体的に、デコーディング装置300は、変換インデックス、変換が適用される領域の幅(width)及び高さ(height)、映像デコーディングで利用されるイントラ予測モード、並びに対象ブロックの色相成分(color component)に対する情報のうち少なくとも一つに基づいて変換カーネルを選択することができる。ただし、実施例は、これに限定されるものではなく、例えば、変換カーネルは、既定義されたものであって、変換カーネルを選択するための別途の情報がシグナリングされない場合もある。
一例示において、対象ブロックの色相成分に対する情報は、CIdxを介して指示されることができる。対象ブロックがルマ(luma)ブロックである場合、CIdxは0を指示することができ、対象ブロックがクロマ(chroma)ブロック、例えば、CbブロックまたはCrブロックである場合、CIdxは0でない値(例えば、1)を指示することができる。
一実施例に係るデコーディング装置300は、選択された変換カーネル及び簡素化ファクタ(reduced factor)に基づいて変換係数に対して逆RSTを適用することができる(S820)。
以下では、本文書の一実施例によってイントラ予測モードとブロックの大きさを考慮して2次NSSTセット、即ち、2次変換セットまたは変換セットを決定する方法を提案する。
一実施例として、前述されたイントラ予測モードに基づいて現在変換ブロックに対するセットを構成することによって、変換ブロックに多様な大きさの変換カーネルで構成された変換セットを適用することができる。表3の変換セットを0から3で表示すると、表4の通りである。
表3に示されているインデックス0、2、18、34は、表4の0、1、2、3に各々対応される。表3及び表4において、変換セットは、35個の変換セットでないただ4個の変換セットのみが使われ、これによりメモリ空間が著しく減ることができる。
また、各変換セットに含まれることができる変換カーネルマトリクスの多様な個数は、以下の表のように設定されることができる。
表5は、各変換セットに対して2個の利用可能な(available)変換カーネルが使われ、それによって変換インデックスは0から2までの範囲を有することになる。
表6によると、変換セット0、即ち、イントラ予測モードのうちDCモードとプラナーモードに対する変換セットに対しては2個の利用可能な変換カーネルが使われ、残りの変換セットに対しては各々一つの変換カーネルが使われる。このとき、変換セット1に対する利用可能な変換インデックスは0から2になり、残りの変換セット1乃至3に対する変換インデックスは0から1になる。
表7では各変換セットに対して1個の利用可能な(available)変換カーネルが使われ、それによって変換インデックスは0から1までの範囲を有することになる。
一方、前記表3の変換セットマッピングでは全て4個の変換セットが使われることができ、4個の変換セットは0、1、2、3のインデックスに区分されるように、表4のように再配列されることができる。以下の表8及び表9は、2次変換に使われることができる4個の変換セットを例示的に示しており、表8は、8×8ブロックに適用されることができる変換カーネルマトリクス、表9は、4×4ブロックに適用されることができる変換カーネルマトリクスを提示している。表8及び表9は、変換セット当たり2個の変換カーネルマトリクスで構成されており、表5のように全てのイントラ予測モードに対して2個ずつの変換カーネルマトリクスを適用することができる。
表8に提示された変換カーネルマトリクス例示は、全て128がスケーリング値として掛け算された変換カーネルマトリクスである。表8のマトリクス配列で登場するg_aiNsst8×8[N1][N2][16][64]アレイにおいて、N1は変換セットの数を示し(N1は4または35、インデックス0、1、...、N1-1に区分)、N2は各変換セットを構成する変換カーネルマトリクス数を示し(1または2)、[16][64]は16×64 Reduced Secondary Transform(RST)を示す。
表3及び表4のようにどのような変換セットが1個の変換カーネルマトリクスで構成される場合、表8で該当変換セットに対して1番目または2番目の変換カーネルマトリクスのうちいずれか一つを使用することができる。
該当RSTを適用すると、16個の変換係数が出力されるが、16×64行列のうちm×64部分のみが適用するようになると、m個の変換係数のみが出力されるように構成できる。例えば、m=8にして一番上から8×64行列のみを掛け算して8個の変換係数のみを出力する代わりに、計算量は半分に減らすことができる。最悪の場合(Worst case)の計算量を減らすために、8×8変換ユニット(TU)に対して8×64行列を適用することができる。
このように、8×8領域に適用されることができるm×64変換行列は(m≦16、例えば、表8の変換カーネルマトリクス)、64個のデータの入力を受けてm個の係数を生成する。即ち、数式5に示すように、64個のデータが64×1ベクトルをなすとした時、m×64行列と64×1ベクトルを順序通りに掛け算してm×1ベクトルが生成される。このとき、8×8領域をなす64個のデータを適切に配列して64×1ベクトルを構成することができ、一例として、以下の表10のように8×8領域の各位置に表示されたインデックスの順序通りにデータが配列されることができる。
表10に示すように、2次変換のための8×8領域におけるデータ配列は、行優先方向順序である。これは2次元のデータが2次変換、具体的にRSTまたはLFNSTのために1次元に配列される時の順序を意味し、これはエンコーディング装置で実行される順方向2次変換に適用されることができる。したがって、エンコーディング装置の逆変換部やデコーディング装置の逆変換部で行われる逆方向2次変換では変換の結果生成された変換係数、即ち、1次変換係数は、表10のように2次元に配列されることができる。
一方、画面内の予測モードが図5のように、67個で構成された時、全ての方向性モード(2番~66番)が34番モードを中心にして対称的に構成されている。即ち、(2+n)番モードは、(66-n)番モードと(0≦n≦31)予測方向側面で34番モードを中心にして対称的である。したがって、(2+n)番モード、即ち、2番乃至33番モードに対して64×1入力ベクトルを構成するためのデータ配列順序が表10のように行優先方向である場合、(66-n)番モードに対しては表11のような順序通りに64×1入力ベクトルが構成されることができる。
表11に示すように、2次変換のための8×8領域におけるデータ配列は、列優先方向順序である。これは2次元のデータが2次変換、具体的にRSTまたはLFNSTのために1次元に配列される時の順序を意味し、これはエンコーディング装置で実行される順方向2次変換に適用されることができる。したがって、エンコーディング装置の逆変換部やデコーディング装置の逆変換部で行われる逆方向2次変換では変換の結果生成された変換係数、 即ち、1次変換係数は、表11のように2次元に配列されることができる。
表11は、画面内の予測モードが(66-n)番モード、即ち、35番乃至66番モードに対しては列優先方向順序によって64×1入力ベクトルが構成されることができることを示す。
整理すると、(2+n)番モードに対しては入力データを行優先方向順序によって、(66-n)番モードに(0≦n≦31)対しては入力データを列優先方向順序によって、対称的に配列しながら、表8のような同じ変換カーネルマトリクスを適用することができる。モード別にどのような変換カーネルマトリクスを適用するかに対しては表5乃至表7に例示されている。このとき、イントラ予測モード0番であるプラナーモード、イントラ予測モード1番であるDCモード、イントラ予測モード34番に対しては表10または表11のいずれか一つの配列順序を適用することができる。例えば、イントラ予測モード34番に対しては表10のように入力データを行優先方向順序によって配列できる。
他の一例によって、4×4領域に適用されることができる表9に提示された変換カーネルマトリクス例示は、全て128がスケーリング値として掛け算された変換カーネルマトリクスである。表9のマトリクス配列で登場するg_aiNsst4×4[N1][N2][16][64]アレイにおいて、N1はtransform setの数を示し(N1は4または35、インデックス0、1、...、N1-1に区分)、N2は各変換セットを構成する変換カーネルマトリクス数を示し(1または2)、[16][16]は16×16変換を示す。
表3及び表4のようにどのような変換セットが1個の変換カーネルマトリクスで構成される場合、表9で該当変換セットに対して1番目または2番目の変換カーネルマトリクスのうちいずれか一つを使用することができる。
8×8 RSTの場合と同様に、16×16行列のうちm×16部分のみを使用するようになると、m個の変換係数のみが出力されるように構成できる。例えば、m=8にして一番上から8×16行列のみを掛け算して8個の変換係数のみを出力する代わりに、計算量は半分に減らすことができる。最悪の場合の計算量を減らすために、4×4変換ユニット(TU)に対して8×16行列を適用することができる。
基本的に表9で提示された4×4領域に適用されることができる変換カーネルマトリクスは、4×4 TU、4×M TU、M×4 TUに対して適用され(M>4、4×M TUとM×4 TUの場合、4×4領域に分けて各々指定された変換カーネルマトリクスを適用し、または、最大左上段4×8または8×4領域に対してのみ適用できる)、または、左上段4×4領域に対してのみ適用されることができる。2次変換が左上段4×4領域に対してのみ適用されるように構成されると、表8に提示された8×8領域に適用されることができる変換カーネルマトリクスは、不必要になる。
このように、4×4領域に適用されることができるm×64変換行列は(m≦16、例えば、表9の変換カーネルマトリクス)、16個のデータの入力を受けてm個の係数を生成する。即ち、16個のデータが16×1ベクトルをなすとした時、m×16行列と16×1ベクトルを順序通りに掛け算してm×1ベクトルが生成される。このとき、4×4領域をなす16個のデータを適切に配列して16×1ベクトルを構成することができ、一例として、以下の表12のように4×4領域の各位置に表示されたインデックスの順序通りにデータが配列されることができる。
表12に示すように、2次変換のための4×4領域におけるデータ配列は、行優先方向順序である。これは2次元のデータが2次変換、具体的にRSTまたはLFNSTのために1次元に配列される時の順序を意味し、これはエンコーディング装置で実行される順方向2次変換に適用されることができる。したがって、エンコーディング装置の逆変換部やデコーディング装置の逆変換部で行われる逆方向2次変換では変換の結果生成された変換係数、即ち、1次変換係数は、表12のように2次元に配列されることができる。
一方、画面内の予測モードが図5のように、67個で構成された時、全ての方向性モードが(2番~66番)34番モードを中心にして対称的に構成されている。即ち、(2+n)番モードは、(66-n)番モードと(0≦n≦31)予測方向側面で34番モードを中心にして対称的である。したがって、(2+n)番モード、即ち、2番乃至33番モードに対して16×1入力ベクトルを構成するためのデータ配列順序が表12のように行優先方向である場合、(66-n)番モードに対しては表13のように順序通りに16×1入力ベクトルが構成されることができる。
表13に示すように、2次変換のための4×4領域におけるデータ配列は、列優先方向順序である。これは2次元のデータが2次変換、具体的にRSTまたはLFNSTのために1次元に配列される時の順序を意味し、これはエンコーディング装置で実行される順方向2次変換に適用されることができる。したがって、エンコーディング装置の逆変換部やデコーディング装置の逆変換部で行われる逆方向2次変換では変換の結果生成された変換係数、即ち、1次変換係数は、表13のように2次元に配列されることができる。
表13は、画面内の予測モードが(66-n)番モード、即ち、35番乃至66番モードに対しては列優先方向順序によって16×1入力ベクトルが構成されることができることを示す。
整理すると、(2+n)番モードに対しては入力データを行優先方向順序によって、(66-n)番モードに(0≦n≦31)対しては入力データを列優先方向順序によって、対称的に配列しながら、表9のような同じ変換カーネルマトリクスを適用することができる。モード別にどのような変換カーネルマトリクスを適用するかに対しては表5乃至表7に例示されている。このとき、イントラ予測モード0番であるプラナーモード、イントラ予測モード1番であるDCモード、イントラ予測モード34番に対しては表12または表13のいずれか一つの配列順序を適用することができる。例えば、イントラ予測モード34番に対しては表12のように入力データを行優先方向順序によって配列できる。
一方、本文書の他の実施例によって、8×8領域を構成する64個のデータに対して表8及び表9の最大16×64変換カーネルマトリクスでない、48個のデータのみを選択して最大16×48変換カーネルマトリクスを適用することができる。ここで、“最大”とは、m個の係数を生成することができるm×48変換カーネルマトリクスに対してmの最大値が16ということを意味する。
本実施例に係る16×48変換カーネルマトリクスは、表14のように示すことができる。
8×8領域にm×48変換カーネルマトリクス(m≦16)を適用してRSTを実行する場合、48個のデータの入力を受けてm個の係数を生成することができる。表14は、mが16である場合の変換カーネルマトリクスの一例を示し、48個のデータの入力を受けて16個の係数を生成する。即ち、48個のデータが48×1ベクトルをなすとした時、16×48行列と48×1ベクトルを順序通りに掛け算して16×1ベクトルが生成されることができる。このとき、8×8領域をなす48個のデータを適切に配列して48×1ベクトルを構成することができ、入力データは、以下のような順序に配列されることができる。
RST時、表14のように最大16×48変換カーネルマトリクスを適用して行列演算を実行すると、16個の修正された変換係数が生成され、16個の修正された変換係数は、スキャニング順序によって左上段4×4領域に配置されることができ、右上段4×4領域と左下段4×4領域は0で満たされることができる。表16は、行列演算を介して生成された16個の修正された変換係数の配列順序に対する一例を示している。
表16に示すように、最大16×48変換カーネルマトリクスを適用した時に生成される修正された変換係数は、スキャニング順序によって左上段4×4領域に満たされることができる。このとき、左上段4×4領域内の各位置の数字は、スキャニング順序を示す。通常的に、16×48変換カーネルマトリクスで最も上段の行と48×1入力列ベクトルとの内積演算から生成された係数がスキャニング順序上1番目となる。この場合、下段行に下りる方向とスキャニング順序が一致することができる。例えば、48×1入力列ベクトルと上からn番目の行との内積演算から生成された係数は、スキャニング順序上n番目となる。
最大16×48変換カーネルマトリクスの場合、表16の右下段4×4領域は、2次変換を適用しない領域であるため、元来の入力データ(1次変換係数)がそのまま保存され、右上段4×4領域と左下段4×4領域は0で満たされるようになる。
また、他の実施例によると、表16に提示されたスキャニング順序以外に他のスキャニング順序が適用されることもできる。例えば、スキャニング順序として行優先方向または列優先方向が適用されることができる。
また、表8のような16×64変換カーネルマトリクスを適用しても同じく16個の変換係数が生成されるため、該当16個の変換係数を表16で提示されたスキャニングの順序通りに配置でき、16×64変換カーネルマトリクスを適用する場合は、48個でない64個の入力データを全て使用して行列演算を実行するため、左上段4×4領域を除外した全ての4×4領域に0が満たされる。この場合にも、スキャニング順序は、表16のような対角方向スキャニング順序が適用されることができ、その他に行優先方向または列優先方向のような異なるスキャニング順序が適用されることもできる。
一方、デコーディング装置で実行される逆変換過程として逆RSTまたはLFNSTが実行される場合、逆RSTを適用する入力係数データは、表16の配列順序を追って1次元ベクトルで構成され、1次元ベクトルに該当逆RST行列を左側で掛け算して得られた修正された係数ベクトルを表15の配列順序によって2次元ブロックに配列できる。
デコーディング装置は、変換係数を導出するために、先に受信された変換係数に対する情報を逆方向スキャニング順序、図7の64番から対角方向スキャニング順序によって配列できる。
その後、デコーディング装置の逆変換部322は、表16のスキャニング順序によって1次元に配列された変換係数に変換カーネルマトリクスを適用することができる。即ち、表16のスキャニング順序によって配列された1次元変換係数と表14の変換カーネルマトリクスに基づく変換カーネルマトリクスとの行列演算を介して48個の修正された変換係数を導出することができる。即ち、1次元変換係数は、表14の変換カーネルマトリクスにトランスポーズを行ったマトリクスと行列演算を介して48個の修正された変換係数として導出されることができる
このように導出された48個の修正された変換係数は、逆1次変換のために、表15のように2次元に配列されることができる。
整理すると、変換過程で、8×8領域にRSTまたはLFNSTが適用される場合、8×8領域の変換係数のうち8×8領域の右下段領域を除外した左上段、右上段、左下段領域の48個変換係数と16×48の変換カーネルマトリクスとの行列演算が実行される。行列演算のために、48個の変換係数は、表15のような順序に1次元配列で入力される。このような行列演算が実行されると、16個の修正された変換係数が導出され、修正された変換係数は、8×8領域の左上段領域に表16のような形態で配列されることができる。
その反対に、逆変換過程で、8×8領域に逆RSTまたはLFNSTが適用される場合、8×8領域の変換係数のうち8×8領域の左上段に対応する16個の変換係数は、表16のようなスキャニング順序によって1次元配列形態で入力されて48×16の変換カーネルマトリクスと行列演算されることができる。即ち、このような場合の行列演算は、(48×16行列)*(16×1変換係数ベクトル)=(48×1修正された変換係数ベクトル)で表すことができる。ここで、n×1ベクトルは、n×1行列と同じ意味で解釈されることができるため、n×1列ベクトルで表記されることもできる。また、*は、行列乗算演算を意味する。このような行列演算が実行されると、48個の修正された変換係数が導出されることができ、48個の修正された変換係数は、表15のように8×8領域の右下段領域を除外した左上段、右上段、左下段領域に配列されることができる。
一方、一実施例によって表15に示すように、2次変換のための8×8領域におけるデータ配列は、行優先方向順序である。一方、画面内の予測モードが図5のように、67個で構成された時、全ての方向性モード(2番~66番)が34番モードを中心にして対称的に構成されている。即ち、(2+n)番モードは、(66-n)番モードと(0≦n≦31)予測方向側面で34番モードを中心にして対称的である。したがって、(2+n)番モード、即ち、2番乃至33番モードに対して48×1入力ベクトルを構成するためのデータ配列順序が表15のように行優先方向である場合、(66-n)番モードに対しては表17のように順序通りに48×1入力ベクトルが構成されることができる。
表17に示すように、2次変換のための8×8領域におけるデータ配列は、列優先方向順序である。表17は、画面内の予測モードが(66-n)番モード、即ち、35番乃至66番モードに対しては列優先方向順序によって64×1入力ベクトルが構成されることができることを示す。
整理すると、(2+n)番モードに対しては入力データを行優先方向順序によって、(66-n)番モードに(0≦n≦31)対しては入力データを列優先方向順序によって、対称的に配列しながら、表14のような同じ変換カーネルマトリクスを適用することができる。モード別にどのような変換カーネルマトリクスを適用するかに対しては表5乃至表7に例示されている。
このとき、イントラ予測モード0番であるプラナーモード、イントラ予測モード1番であるDCモード、イントラ予測モード34番に対しては表15または表17のいずれか一つの配列順序を適用することができる。例えば、イントラ予測モード0番であるプラナーモード、イントラ予測モード1番であるDCモード、イントラ予測モード34番に対しては表15の行優先方向順序を適用し、導出された変換係数に対して表16の配列順序を適用することができる。または、イントラ予測モード0番であるプラナーモード、イントラ予測モード1番であるDCモード、イントラ予測モード34番に対しては表17の列優先方向順序を適用し、導出された変換係数に対して表16の配列順序を適用することもできる。
前述したように、2次変換に表14の16×48変換カーネルマトリクスを適用すると、表16のように8×8領域の右上段4×4領域と左下段4×4領域は、0で満たされるようになる。もし、2次変換にm×48変換カーネルマトリクスを適用する場合(m≦16)、右上段4×4領域と左下段4×4領域だけでなく、表16で提示されたスキャニング順序上に(m+1)番目から16番目までも0で満たされることができる。
したがって、スキャニング順序上に(m+1)番目から16番目の位置までまたは右上段4×4領域または左下段4×4領域に一つでも0でない変換係数が存在すると、m×48 2次変換が(m≦16)適用されない場合に該当できる。このような場合には2次変換に対するインデックスなどをシグナリングしない。デコーディング装置は、変換係数を先にパーシングして該当条件(即ち、2次変換で変換係数が0になるべき領域に0でない変換係数が存在する場合)が満たすかどうかをチェックし、満たす場合、該当2次変換に対するインデックスをパーシングせずに0に誘導できる。例えば、m=16である場合に対しては右上段4×4領域または左下段4×4で0でない係数が存在するかどうかをチェックすることによって、2次変換の適用可否及び2次変換に対するインデックスのパーシング可否を判断することができる。
一方、表18は、4×4領域に適用されることができる変換カーネルマトリクスの他の例を示している。
一方、最悪の場合に対する計算量を減らすために、次のような実施例が提案されることができる。本文書において、M個の行とN個の列で構成された行列をM×N行列で表示し、M×N行列は、順方向変換、即ち、エンコーディング装置で変換(RST)を実行する時に適用される変換行列を意味する。したがって、デコーディング装置で実行される逆変換(逆RST)ではM×N行列にトランスポーズを行ったN×M行列が使われることができる。また、以下内容は、8×8領域に対する変換行列としてm×64変換カーネルマトリクスが(m≦16)適用される場合を記述したが、入力ベクトルが48×1であり、m×48変換カーネルマトリクスが(m≦16)適用される場合にも同じく適用されることができる。即ち、16×64(または、m×64)は、16×48に(または、m×48)代替されることができる。
1)幅がWであり、かつ高さがHであるブロック(例えば、変換ユニット)に対してW≧8であり、かつH≧8である場合は、8×8領域に適用されることができる変換カーネルマトリクスをブロックの左上段8×8領域に適用する。W=8であり、かつH=8である場合に対しては16×64行列のうち8×64部分のみを適用することができる。即ち、8個の変換係数が生成されることができる。または、16×48行列のうち8×48部分のみを適用することができる。即ち、8個の変換係数が生成されることができる。
2)幅がWであり、かつ高さがHであるブロック(例えば、変換ユニット)に対してWとHのうち一つが8より小さい場合、即ち、WとHのうち一つが4である場合、4×4領域に適用されることができる変換カーネルマトリクスをブロックの左上段に適用する。W=4であり、かつH=4である場合に対しては16×16行列のうち8×16部分のみを適用することができ、この場合、8個の変換係数が生成される。
もし、(W,H)=(4,8)または(8,4)である場合、左上段4×4領域に対してのみ2次変換を適用する。WまたはHが8より大きい場合、即ち、WまたはHが16と同じまたは大きい、かつ他の一つは4である場合、左上段二つの4×4ブロックまでのみ2次変換を適用する。即ち、最大左上段4×8または8×4領域までのみ4×4のブロック2個に分けられて指定された変換カーネルマトリクスが適用されることができる。
3)幅がWであり、かつ高さがHであるブロック(例えば、変換ユニット)に対し、WとHが両方とも4である場合に対しては2次変換を適用しない。
4)幅がWであり、かつ高さがHであるブロック(例えば、変換ユニット)に対し、2次変換を適用して生成される係数の数を変換ユニットの面積(即ち、変換ユニットを構成する総ピクセル数=W×H)対比1/4以下に維持されるように構成できる。例えば、WとHが両方とも4である場合に対しては4個の変換係数が生成されるように、16×16行列のうち最上位4×16行列を適用することができる。
全体変換ユニット(TU)のうち最大左上段8×8領域に対してのみ2次変換を適用するとした時、4×8変換ユニットまたは8×4変換ユニットに対しては8個以下の係数が生成されなければならないため、左上段4×4領域に対して16×16行列のうち最上位8×16行列を適用するように構成できる。8×8変換ユニットに対しては最大16×64行列(または、16×48行列)まで適用でき(16個まで係数生成可能)、4×NまたはN×4(N≧16)変換ユニットに対しては左上段4×4ブロックに対して16×16行列を適用し、または、左上段に位置した2個の4×4ブロックに対して16×16行列のうち最上位8×16行列を適用することができる。同様の方式で、4×8変換ユニットまたは8×4変換ユニットに対しては、左上段に位置した2個の4×4ブロックに対して16×16行列のうち最上位4×16行列を各々適用して全て8個の変換係数を生成することができる。
5)4×4領域に適用される2次変換の最大大きさを8×16に制限できる。この場合、4×4領域に適用される変換カーネルマトリクスの格納に必要なメモリ量を16×16行列対比半分に減らすことができる。
例えば、表9または表18に提示された全ての変換カーネルマトリクスに対して各々16×16行列のうち最上位8×16行列のみを抽出して最大大きさを8×16に制限でき、実際映像コーディングシステムで変換カーネルマトリクスの該当8×16行列のみを格納するように具現できる。
最大適用可能な変換の大きさが8×16であり、係数一つの生成に必要な最大乗算数を8に制限すると、4×4ブロックの場合、最大8×16行列を適用することができ、4×NブロックやN×4ブロックに対しては(N≧8、N=2n、n≧3)内部を構成する最大左上段2個の4×4ブロックに対して各々最大8×16行列を適用することができる。例えば、4×NブロックやN×4ブロックに対しては(N≧8、N=2n、n≧3)、左上段1個の4×4ブロックに対して8×16行列を適用することができる。
一実施例によって、ルマ成分に適用する2次変換を指定するインデックスをコーディングする時、より具体的に一つの変換セットが2個の変換カーネルマトリクスで構成された場合、2次変換を適用するかどうか、及び適用する場合はどのような変換カーネルマトリクスを適用するかを指定しなければならない。例えば、2次変換を適用しない場合には変換インデックスを0でコーディングし、適用する場合には2個の変換セットに対する変換インデックスを各々1と2でコーディングできる。
この場合、変換インデックスをコーディングする時は、トランケーテッドユーナリ(truncated unary)コーディングを使用することができ、例えば、変換インデックス0、1、2に各々0、10、11の二進コード(binary code)を割り当ててコーディングできる。
また、トランケーテッドユーナリ方式でコーディングされる場合、各bin毎に異なるCABACコンテキストを付与することができ、前述した例示によって変換インデックス0、10、11をコーディングする時、2個のCABACコンテキストを使用することができる。
一方、色差成分に適用する2次変換を指定する変換インデックスをコーディングする時、より具体的に一つの変換セットが2個の変換カーネルマトリクスで構成された場合、ルマ成分に対する2次変換に対する変換インデックスをコーディングする時と類似するように、2次変換を適用するかどうか、及び適用する場合はどのような変換カーネルマトリクスを適用するかを指定しなければならない。例えば、2次変換を適用しない場合には変換インデックスを0でコーディングし、適用する場合には2個の変換セットに対する変換インデックスを各々1と2でコーディングできる。
この場合、変換インデックスをコーディングする時は、トランケーテッドユーナリ(truncated unary)コーディングを使用することができ、例えば、変換インデックス0、1、2に各々0、10、11の二進コード(binary code)を割り当ててコーディングできる。
また、トランケーテッドユーナリ方式でコーディングされる場合、各bin毎に異なるCABACコンテキストを付与することができ、前述した例示によって変換インデックス0、10、11をコーディングする時、2個のCABACコンテキストを使用することができる。
また、一実施例によって、クロマイントラ予測モードによって異なるCABACコンテキストセットを割り当てることができる。例えば、プラナーモードまたはDCモードである場合のような非方向モードと、その他の方向性モードに区分する場合(即ち、2グループに区分する場合)、前述した例示と同様に、0、10、11をコーディングする時、グループ別に(2個のコンテキストで構成された)該当CABACコンテキストセットを割り当てることができる。
このようにクロマイントラ予測モードをいくつかのグループに分割して該当CABACコンテキストセットを割り当てる場合、2次変換に対する変換インデックスコーディング前にクロマイントラ予測モード値を知らなければならない。しかしながら、クロマダイレクトモード(Chroma direct mode、DM)の場合、ルマイントラ予測モード値をそのまま使用するため、ルマ成分に対するイントラ予測モード値も知らなければならない。したがって、色差成分に対する情報をコーディングする時、ルマ成分情報に対するデータ依存性(data dependency)が発生できるため、クロマDMモードである場合、イントラ予測モードに対する情報なしに2次変換に対する変換インデックスコーディングを実行する時、どのような特定グループでマッピングして前述したデータ依存性を除去することができる。例えば、クロマイントラ予測モードがクロマDMモードである場合、プラナーモードまたはDCモードであると見なして該当CABACコンテキストセットを使用して該当変換インデックスコーディングを実行し、または、その他の方向性モードであると見なして該当CABACコンテキストセットを適用することができる。
図9は、本文書の一実施例に係るビデオデコーディング装置の動作を示す流れ図である。
図9に開示された各ステップは、図3に開示されたデコーディング装置300により実行されることができる。より具体的に、S910は、図3に開示されたエントロピーデコーディング部310により実行されることができ、S920は、図3に開示された逆量子化部321により実行されることができ、S930及びS940は、図3に開示された逆変換部322により実行されることができ、S950は、図3に開示された加算部340により実行されることができる。併せて、S910乃至S950による動作は、図4乃至図8で前述された内容のうち一部に基づいたものである。したがって、図3乃至図8で前述された内容と重複する具体的な内容は、説明を省略または簡単にする。
一実施例に係るデコーディング装置300は、ビットストリームから対象ブロックに対する量子化された変換係数を導出することができる(S910)。より具体的に、デコーディング装置300は、ビットストリームから対象ブロックに対する量子化された変換係数に関する情報をデコーディングすることができ、対象ブロックに対する量子化された変換係数に関する情報に基づいて対象ブロックに対する量子化された変換係数を導出することができる。対象ブロックに対する量子化された変換係数に関する情報は、SPS(Sequence Parameter Set)またはスライスヘッダ(slice header)に含まれることができ、簡素化変換(RST)が適用されるかどうかに対する情報、簡素化ファクタに関する情報、簡素化変換を適用する最小変換サイズに対する情報、簡素化変換を適用する最大変換サイズに対する情報、簡素化逆変換サイズ、変換セットに含まれている変換カーネルマトリクスのうちいずれか一つを指示する変換インデックスに対する情報のうち少なくとも一つを含むことができる。
一実施例に係るデコーディング装置300は、対象ブロックに対する量子化された変換係数に対して逆量子化を実行して変換係数を導出することができる(S920)。
導出された変換係数は、4×4ブロック単位で逆方向対角スキャン順序によって配列されることができ、4×4ブロック内の変換係数も逆方向対角スキャン順序によって配列されることができる。即ち、逆量子化が実行された変換係数は、VVCやHEVCのようなビデオコデックで適用されている逆方向スキャン順序を追って配置されることができる。
一実施例に係るデコーディング装置300は、変換係数に対する逆RST(reduced secondary transform)に基づいて修正された変換係数を導出することができる(S930)。
一例示において、逆RSTは、逆RSTマトリクスに基づいて実行されることができ、逆RSTマトリクスは、列の個数が行の個数より少ない非正方形マトリクスである。
一実施例において、S930は、変換インデックスをデコーディングするステップ、変換インデックスに基づいて逆RSTを適用する条件に該当するかどうかを判断するステップ、変換カーネルマトリクスを選択するステップ、及び逆RSTを適用する条件に該当する場合、選択された変換カーネルマトリクス及び/または簡素化ファクタに基づいて変換係数に対して逆RSTを適用するステップを含むことができる。このとき、簡素化逆変換マトリクスのサイズは、簡素化ファクタに基づいて決定されることができる。
一実施例に係るデコーディング装置300は、修正された変換係数に対する逆変換に基づいて対象ブロックに対するレジデュアルサンプルを導出することができる(S940)。
デコーディング装置300は、対象ブロックに対する修正された変換係数に対して逆1次変換を実行することができ、このとき、逆1次変換は、簡素化逆変換が適用されることもでき、通常的な分離変換が使われることもできる。
一実施例に係るデコーディング装置300は、対象ブロックに対するレジデュアルサンプル及び対象ブロックに対する予測サンプルに基づいて復元サンプルを生成することができる(S950)。
S930を参照すると、対象ブロックに対する変換係数に対する逆RSTに基づいて、対象ブロックに対するレジデュアルサンプルが導出されることを確認することができる。逆変換マトリクスのサイズ観点で検討すると、通常の逆変換マトリクスのサイズはN×Nであり、それに対して、逆RSTマトリクスのサイズはN×Rに減少するため、通常の変換を実行する時と比較すると、逆RSTを実行する時、メモリ使用をR/N割合で減少させることができる。また、通常の逆変換マトリクスを利用する時の乗算演算数N×Nと比較すると、逆RSTマトリクスを利用する場合、乗算演算数をR/N割合で減少(N×R)させることができる。併せて、逆RSTを適用する時、R個の変換係数のみをデコーディングすればよいため、通常の逆変換が適用される時、N個の変換係数をデコーディングすべきことと比較する時、対象ブロックに対する変換係数の総個数がN個からR個へ減少してデコーディング効率が増加できる。整理すると、S930によると、逆RSTを介してデコーディング装置300の(逆)変換効率及びデコーディング効率が増加できる。
図10は、本文書の一実施例に係る逆RSTを説明するための制御流れ図である。
デコーディング装置300は、ビットストリームから量子化された変換係数、イントラ予測モード及び変換インデックスに対する情報を受信する(S1000)。
ビットストリームから受信された量子化された変換係数は、図9のS920のように逆量子化を介して変換係数として導出される。
逆量子化された変換係数に逆RSTを適用するために、対象ブロックに適用される変換セットと変換カーネルマトリクスが導出される(S1010)。
一例によると、変換セットは、対象ブロックのイントラ予測モードによるマッピング関係により導出され、一つの変換セットには複数個のイントラ予測モードがマッピングされることができる。また、一つの変換セットの各々は、複数の変換カーネルマトリクスを含むことができる。変換インデックスは、複数の変換カーネルマトリクスのうちいずれか一つを指示することができ、例えば、一つの変換セットが2個の変換カーネルマトリクスで構成される場合、変換インデックスは、二つの変換カーネルマトリクスのうちいずれか一つを指示することができる。
一実施例に係る変換インデックスのシンタックスエレメントは、逆RSTが適用されるかどうか及び変換セットに含まれている変換カーネルマトリクスのうちいずれか一つを指示することができ、変換セットが二つの変換カーネルマトリクスを含む場合、変換インデックスのシンタックスエレメントの値は三つの種類である。
即ち、一実施例によって、変換インデックスに対するシンタックスエレメントの値は、対象ブロックに逆RSTが適用されない場合を指示する0、変換カーネルマトリクスのうち1番目の変換カーネルマトリクスを指示する1、変換カーネルマトリクスのうち2番目変換カーネルマトリクスを指示する2を含むことができる。このような情報は、シンタックス情報として受信され、シンタックス情報は、0と1を含む二進化されたbinストリングとして受信される。
一例に係る変換カーネルマトリクスは、2次変換の縮小または簡素化大きさによって対象ブロックの左上段の特定領域、例えば、8×8領域または4×4領域に適用されることができ、変換カーネルマトリクスを適用して出力される修正された変換係数の大きさ、即ち、変換係数の個数は、変換インデックス、イントラ予測モード、及び2次変換が適用される対象ブロックの大きさに基づいて導出されることができる。
一例によって対象ブロックの一領域、即ち、8×8領域または4×4領域の変換係数に逆2次変換が適用される時、8×8領域または4×4領域内に含まれている変換係数のうち一部にのみ逆2次変換が適用されることができる。逆2次変換のために、8×8領域の変換係数のうち48個の変換係数のみが入力されると、8×8領域に適用される64×m変換カーネルマトリクスは、48×m変換カーネルマトリクスにさらに縮小されることができる。
一例によって、mは16であり、48×16変換カーネルマトリクスは、表14に基づいた変換カーネルマトリクス、即ち、表14の行列にトランスポーズを行った行列である。変換セットが4個であり、変換セットの各々に2個の変換カーネルマトリクスが含まれる場合、逆2次変換が適用されるかどうか及び変換セットに含まれている変換カーネルマトリクスのうちいずれか一つを指示する変換インデックスは、0、1、2値を有することができる。変換インデックスが0である場合、逆2次変換が適用されないことを示すため、変換セットが4個である場合、全て8個の変換カーネルマトリクスが逆2次変換に利用されることができる。
数式7のように逆量子化を介して導出された変換係数の1次元配列が変換カーネルマトリクスとの行列演算を介して2次元配列を有する修正された変換係数として導出されることができる。
本実施例に係る逆変換部322は、対象ブロックの8×8領域のうち左上段4×4領域の変換係数に変換カーネルマトリクスを適用することで、8×8領域のうち左上段4×4領域、右上段4×4領域、及び左下段4×4領域の修正された変換係数を導出することができる(S1020)。
一例によって、8×8領域のうち左上段4×4領域の変換係数と変換カーネルマトリクスの行列演算時、8×8領域のうち左上段4×4領域の変換係数は、表16のように順方向対角スキャニング順序によって1次元配列され、1次元配列の変換係数は、変換カーネルマトリクスとの行列演算後、対象ブロックに適用されるイントラ予測モードによって行優先方向または列優先方向のうちいずれか一つの順序によって表15または表17のように8×8領域のうち左上段4×4領域、右上段4×4領域、及び左下段4×4領域に2次元に配列されることができる。即ち、8×8領域で左上段4×4領域の16個の変換係数に逆2次変換が適用されることができ、変換カーネルマトリクスとの演算を介して8×8領域のうち左上段4×4領域、右上段4×4領域、及び左下段4×4領域の48個の修正された変換係数が導出されることができる。
対象ブロックに適用されることができるイントラ予測モードが65個の方向性モードのうちいずれか一つであり、イントラ予測モードが左上段対角線方向のイントラ予測モード34番モードを中心にして対称であり、対象ブロックに適用されるイントラ予測モードがイントラ予測モード34番モードを基準にして左側方向の2番乃至前記34番モードである場合、修正された変換係数は、行優先方向順序によって2次元配列されることができる。
もし、対象ブロックに適用されるイントラ予測モードがイントラ予測モード34番モードを基準にして右側方向の35番乃至前記66番モードである場合、修正された変換係数は、列優先方向順序によって2次元配列されることができる。
また、対象ブロックに適用されるイントラ予測モードがプラナーモードまたはDCモードである場合、修正された変換係数は、行優先方向順序によって2次元配列されることができる。
逆変換部322は、逆RSTを適用して8×8領域または4×4領域の修正された変換係数を2次元ブロックで生成でき、後続的にこのように生成された2次元ブロックの修正された変換係数に逆1次変換が適用される。
図11は、本文書の一実施例に係るビデオエンコーディング装置の動作を示す流れ図である。
図11に開示された各ステップは、図2に開示されたエンコーディング装置200により実行されることができる。より具体的に、S1110は、図2に開示された予測部220により実行されることができ、S1120は、図2に開示された減算部231により実行されることができ、S1130及びS1140は、図2に開示された変換部232により実行されることができ、S1150は、図2に開示された量子化部233及びエントロピーエンコーディング部240により実行されることができる。併せて、S1110乃至S1150による動作は、図4乃至図8で前述された内容のうち一部を基づいたものである。したがって、図2及び図4乃至図8で前述された内容と重複する具体的な内容は、説明を省略または簡単にする。
一実施例に係るエンコーディング装置200は、対象ブロックに適用されるイントラ予測モードに基づいて予測サンプルを導出することができる(S1110)。
一実施例に係るエンコーディング装置200は、対象ブロックに対するレジデュアルサンプルを導出することができる(S1120)。
一実施例に係るエンコーディング装置200は、レジデュアルサンプルに対する1次変換に基づいて前記対象ブロックに対する変換係数を導出することができる(S1130)。1次変換は、複数の変換カーネルを介して実行されることができ、この場合、イントラ予測モードに基づいて変換カーネルが選択されることができる。
デコーディング装置300は、対象ブロックに対する変換係数に対して2次変換、具体的にNSSTを実行することができ、このとき、NSSTは、簡素化変換(RST)に基づいて実行され、または、RSTに基づかずに実行されることができる。NSSTがRSTに基づいて実行されると、S1140による動作と対応されることができる。
一実施例に係るエンコーディング装置200は、変換係数に対するRSTに基づいて対象ブロックに対する修正された変換係数を導出することができる(S1140)。一例示において、RSTは、簡素化変換マトリクスまたは変換カーネルマトリクスに基づいて実行されることができ、簡素化変換マトリクスは、行の個数が列の個数より少ない非正方形マトリクスである。
一実施例において、S1140は、RSTを適用する条件に該当するかどうかを判断するステップ、前記判断に基づいて変換インデックスを生成及びエンコーディングするステップ、変換カーネルマトリクスを選択するステップ、及びRSTを適用する条件に該当する場合、選択された変換カーネルマトリクス及び/または簡素化ファクタに基づいてレジデュアルサンプルに対してRSTを適用するステップを含むことができる。このとき、簡素化変換カーネルマトリクスのサイズは、簡素化ファクタに基づいて決定されることができる。
一実施例に係るエンコーディング装置200は、対象ブロックに対する修正された変換係数に基づいて量子化を実行して量子化された変換係数を導出し、量子化された変換係数に関する情報をエンコーディングすることができる(S1150)。
より具体的に、エンコーディング装置200は、量子化された変換係数に関する情報を生成し、生成された量子化された変換係数に関する情報をエンコーディングすることができる。
一例示において、量子化された変換係数に関する情報は、RSTが適用されるかどうかに対する情報、簡素化ファクタに関する情報、RSTを適用する最小変換サイズに対する情報、及びRSTを適用する最大変換サイズに対する情報のうち少なくとも一つを含むことができる。
S1140を参照すると、レジデュアルサンプルに対するRSTに基づいて対象ブロックに対する変換係数が導出されることを確認することができる。変換カーネルマトリクスのサイズ観点で検討すると、通常の変換カーネルマトリクスのサイズはN×Nであり、それに対して、簡素化変換マトリクスのサイズはR×Nに減少するため、通常の変換を実行する時と比較すると、RSTを実行する時、メモリ使用をR/N割合で減少させることができる。また、通常の変換カーネルマトリクスを利用する時の乗算演算数N×Nと比較すると、簡素化変換カーネルマトリクスを利用する場合、乗算演算数をR/N割合で減少(R×N)させることができる。併せて、RSTが適用されると、R個の変換係数のみが導出されるため、通常の変換が適用される時のN個の変換係数が導出されることと比較する時、対象ブロックに対する変換係数の総個数がN個からR個へ減少してエンコーディング装置200がデコーディング装置300に送信するデータの量が減少できる。整理すると、S1140によると、RSTを介してエンコーディング装置200の変換効率及びコーディング効率が増加できる。
図12は、本文書の一実施例に係るRSTを説明するための制御流れ図である。
まず、エンコーディング装置200は、対象ブロックに適用されるイントラ予測モードによるマッピング関係に基づいて変換セットを決定することができる(S1200)。
その後、変換部232は、変換セットに含まれている複数の変換カーネルマトリクスのうちいずれか一つを選択することができる(S1210)。
一例によると、変換セットは、対象ブロックのイントラ予測モードによるマッピング関係により導出され、一つの変換セットには複数個のイントラ予測モードがマッピングされることができる。また、一つの変換セットの各々は、複数の変換カーネルマトリクスを含むことができる。一つの変換セットが2個の変換カーネルマトリクスで構成される場合、二つの変換カーネルマトリクスのうちいずれか一つを指示する変換インデックスがエンコーディングされてデコーディング装置にシグナリングされることができる。
レジデュアルサンプルに2回の変換過程が適用される場合、レジデュアルサンプルが1次変換されると、変換係数と呼ばれ、1次変換後、RSTのような2次変換が実行されると、修正された変換係数と呼ばれることができる。
一例によって、対象ブロックの一領域、即ち、8×8領域または4×4領域の変換係数に2次変換が適用される時、8×8領域または4×4領域内に含まれている変換係数のうち一部にのみ2次変換が適用されることができる。例えば、8×8領域の変換係数のうち48個の変換係数にのみ2次変換が適用される場合、8×8領域に適用されるm×64変換カーネルマトリクスは、m×48変換カーネルマトリクスに縮小されることができる。
一例によって、mは16であり、16×48変換カーネルマトリクスは表14である。変換セットが4個であり、変換セットの各々に2個の変換カーネルマトリクスが含まれる場合、逆2次変換が適用されるかどうか及び変換セットに含まれている変換カーネルマトリクスのうちいずれか一つを指示する変換インデックスは、0、1、2値を有することができる。変換インデックスが0である場合、2次変換が適用されないことを示すため、変換セットが4個である場合、全て8個の変換カーネルマトリクスが2次変換に利用されることができる。
変換部232は、変換係数に変換カーネルマトリクスを利用してRSTを実行する時、1次変換を経た2次元配列の変換係数を対象ブロックに適用されるイントラ予測モードに基づいて行優先方向または列優先方向のうちいずれか一つの順序によって1次元に配列できる。具体的に、一例によって、変換部232は、対象ブロックの8×8領域のうち左上段4×4領域、右上段4×4領域、及び左下段4×4領域の変換係数に変換カーネルマトリクスを適用することで、8×8領域のうち左上段4×4領域に対応する修正された変換係数を導出することができる(S1220)。
変換カーネルマトリクスは、2次変換の縮小または簡素化大きさによって、対象ブロックの左上段の特定領域、例えば、8×8領域または4×4領域、または、8×8領域の一部領域に適用されることができ、変換カーネルマトリクスを適用して出力される修正された変換係数の大きさ、即ち、修正された変換係数の個数は、変換カーネルマトリクスの大きさ、イントラ予測モード及び2次変換が適用される対象ブロックの大きさに基づいて導出されることができる。
数式5のように、2次元の変換係数は、変換カーネルマトリクスとの行列演算のために1次元に配列されなければならず、数式6のような演算を介して変換係数の個数より少ない数の修正された変換係数が導出されることができる。
即ち、特定領域の2次元配列の変換係数は、一定な方向順序によって1次元に読み込まれ、変換カーネルマトリクスとの行列演算を介して修正された変換係数として導出される。
一例によって、8×8領域のうち左上段4×4領域の変換係数と変換カーネルマトリクスの行列演算時、8×8領域のうち左上段4×4領域、右上段4×4領域、及び左下段4×4領域の48個の変換係数は、対象ブロックに適用されるイントラ予測モードによって、表15または表17のように行優先方向または列優先方向のうちいずれか一つの順序によって1次元配列されることができ、導出された16個の修正された変換係数は、表16のように8×8領域のうち左上段4×4領域に対角スキャニング方向に配列されることができる。
対象ブロックに適用されることができるイントラ予測モードが65個の方向性モードのうちいずれか一つであり、イントラ予測モードが左上段対角線方向のイントラ予測モード34番モードを中心にして対称であり、対象ブロックに適用されるイントラ予測モードがイントラ予測モード34番モードを基準にして左側方向の2番乃至前記34番モードである場合、8×8領域のうち左上段4×4領域、右上段4×4領域、及び左下段4×4領域の変換係数は、表15のように行優先方向順序によって1次元配列されることができる。
もし、対象ブロックに適用されるイントラ予測モードがイントラ予測モード34番モードを基準にして右側方向の35番乃至前記66番モードである場合、8×8領域のうち左上段4×4領域、右上段4×4領域、及び左下段4×4領域の変換係数は、表17のように列優先方向順序によって1次元配列されることができる。
また、対象ブロックに適用されるイントラ予測モードがプラナーモードまたはDCモードである場合、8×8領域のうち左上段4×4領域、右上段4×4領域、及び左下段4×4領域の変換係数は、行優先方向順序によって1次元配列されることができる。
このようにRSTが実行されると、RSTに対する情報がエントロピーエンコーディング部240でエンコーディングされることができる。
まず、エントロピーエンコーディング部240は、変換セットに含まれている変換カーネルマトリクスのうちいずれか一つを指示する変換インデックスに対するシンタックスエレメントの値を導出し、導出された変換インデックスに対するシンタックスエレメントの値を二進化した後、変換インデックスのbinストリングに対するコンテキスト情報、即ち、コンテキストモデルに基づいてシンタックスエレメントbinストリングのbinをエンコーディングすることができる。
エンコーディングされたシンタックスエレメントbinストリングは、ビットストリームの形態でデコーディング装置300または外部に出力されることができる。
前述した実施例において、方法は、一連のステップまたはブロックで流れ図に基づいて説明されているが、本文書は、ステップの順序に限定されるものではなく、あるステップは、前述と異なるステップと、異なる順序にまたは同時に発生できる。また、当業者であれば、流れ図に示すステップが排他的でなく、他のステップが含まれ、または、流れ図の一つまたはそれ以上のステップが本文書の範囲に影響を及ぼさずに削除可能であることを理解することができる。
前述した本文書による方法は、ソフトウェア形態で具現されることができ、本文書によるエンコーディング装置及び/またはデコーディング装置は、例えば、TV、コンピュータ、スマートフォン、セットトップボックス、ディスプレイ装置などの映像処理を実行する装置に含まれることができる。
本文書において、実施例がソフトウェアで具現される時、前述した方法は、前述した機能を遂行するモジュール(過程、機能など)で具現されることができる。モジュールは、メモリに格納され、プロセッサにより実行されることができる。メモリは、プロセッサの内部または外部にあり、よく知られた多様な手段でプロセッサと連結されることができる。プロセッサは、ASIC(application-specific integrated circuit)、他のチップセット、論理回路及び/またはデータ処理装置を含むことができる。メモリは、ROM(read-only memory)、RAM(random access memory)、フラッシュメモリ、メモリカード、格納媒体及び/または他の格納装置を含むことができる。即ち、本文書で説明した実施例は、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上で具現されて実行されることができる。例えば、各図面で示す機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上で具現されて実行されることができる。
また、本文書が適用されるデコーディング装置及びエンコーディング装置は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ対話装置、ビデオ通信のようなリアルタイム通信装置、モバイルストリーミング装置、格納媒体、カムコーダ、注文型ビデオ(VoD)サービス提供装置、OTTビデオ(Over the top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、画像電話ビデオ装置、及び医療用ビデオ装置などに含まれることができ、ビデオ信号またはデータ信号を処理するために使われることができる。例えば、OTTビデオ(Over the top video)装置として、ゲームコンソール、ブルーレイプレーヤ、インターネット接続TV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recoder)などを含むことができる。
また、本文書が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されることができ、コンピュータが読み取り可能な記録媒体に格納されることができる。また、本文書によるデータ構造を有するマルチメディアデータもコンピュータが読み取り可能な記録媒体に格納されることができる。前記コンピュータが読み取り可能な記録媒体は、コンピュータで読み出すことができるデータが格納される全ての種類の格納装置及び分散格納装置を含む。前記コンピュータが読み取り可能な記録媒体は、例えば、ブルーレイディスク(BD)、汎用直列バス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、及び光学的データ格納装置を含むことができる。また、前記コンピュータが読み取り可能な記録媒体は、搬送波(例えば、インターネットを介した送信)の形態で具現されたメディアを含む。また、エンコーディング方法で生成されたビットストリームは、コンピュータが読み取り可能な記録媒体に格納され、または、有無線通信ネットワークを介して送信されることができる。また、本文書の実施例は、プログラムコードによるコンピュータプログラム製品で具現されることができ、前記プログラムコードは、本文書の実施例によりコンピュータで実行されることができる。前記プログラムコードは、コンピュータにより読み取り可能なキャリア上に格納されることができる。
図13は、本文書が適用されるコンテンツストリーミングシステム構造図を例示的に示す。
また、本文書が適用されるコンテンツストリーミングシステムは、大別して、エンコーディングサーバ、ストリーミングサーバ、ウェブサーバ、メディア格納所、ユーザ装置、及びマルチメディア入力装置を含むことができる。
前記エンコーディングサーバは、スマートフォン、カメラ、カムコーダなどのようなマルチメディア入力装置から入力されたコンテンツをデジタルデータで圧縮してビットストリームを生成し、これを前記ストリーミングサーバに送信する役割をする。他の例として、スマートフォン、カメラ、カムコーダなどのようなマルチメディア入力装置がビットストリームを直接生成する場合、前記エンコーディングサーバは省略されることができる。前記ビットストリームは、本文書が適用されるエンコーディング方法またはビットストリーム生成方法により生成されることができ、前記ストリーミングサーバは、前記ビットストリームを送信または受信する過程で一時的に前記ビットストリームを格納することができる。
前記ストリーミングサーバは、ウェブサーバを介したユーザ要請に基づいてマルチメディアデータをユーザ装置に送信し、前記ウェブサーバは、ユーザにどのようなサービスがあるかを知らせる媒介体役割をする。ユーザが前記ウェブサーバに所望のサービスを要請すると、前記ウェブサーバは、これをストリーミングサーバに伝達し、前記ストリーミングサーバは、ユーザにマルチメディアデータを送信する。このとき、前記コンテンツストリーミングシステムは、別途の制御サーバを含むことができ、この場合、前記制御サーバは、前記コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割をする。
前記ストリーミングサーバは、メディア格納所及び/またはエンコーディングサーバからコンテンツを受信することができる。例えば、前記エンコーディングサーバからコンテンツを受信するようになる場合、前記コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、前記ストリーミングサーバは、前記ビットストリームを一定時間の間格納することができる。
前記ユーザ装置の例として、携帯電話、スマートフォン(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、デスクトップコンピュータ、デジタルサイニジなどがある。前記コンテンツストリーミングシステム内の各サーバは、分散サーバとして運営されることができ、この場合、各サーバで受信するデータは、分散処理されることができる。