本文書は、多様な変更を加えることができ、様々な実施形態を有することができるため、特定の実施形態を図面に例示し詳細に説明しようとする。しかしながら、これは、本文書を特定の実施形態に限定しようとするものではない。本明細書において常用する用語は、特定の実施形態を説明するために使用されたもので、本文書の技術的思想を限定しようとする意図として使用されるものではない。単数の表現は、文脈上明白に異なって意味しない限り、複数の表現を含む。本明細書において“含む”または“有する”などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品またはこれらを組み合わせたことが存在することを指定しようとするものであり、一つもしくは複数の他の特徴や数字、ステップ、動作、構成要素、部品またはこれらを組み合わせたものの存在もしくは付加可能性を予め排除しないものとして理解されなければならない。
一方、本文書において説明される図面上の各構成は、互いに異なる特徴的な機能に関する説明の便宜のために独立して示されたものであり、各構成が互いに別のハードウェアまたは別のソフトウェアにより具現されることを意味しない。例えば、各構成のうち、二つ以上の構成が合わせられて一つの構成をなすこともでき、一つの構成が複数の構成に分けられることもできる。各構成が統合および/または分離された実施形態も本文書の本質から逸脱しない限り、本文書の権利範囲に含まれる。
この文書において“/”と“、”は、“および/または”と解釈される。例えば、“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.”)
この文書は、ビデオ/映像コーディングに関する。例えば、この文書において開示された方法/実施形態は、VVC(Versatile Video Coding)標準、EVC(Essential Video Coding)標準、AV1(AOMedia Video 1)標準、AVS2(2nd Generation of Audio Video coding Standard)または次世代ビデオ/映像コーディング標準(例えば、H.267 or H.268など)に開示される方法に適用されることができる。
この文書では、ビデオ/映像コーディングに関する多様な実施形態を提示し、他の言及がない限り、上記実施形態は、互いに組合わせられて行われることもできる。
この文書において、ビデオ(video)は、時間の流れによる一連の映像(image)の集合を意味できる。ピクチャ(picture)は、一般に特定の時間帯の一つの映像を表す単位を意味し、スライス(slice)/タイル(tile)は、コーディングにおいてピクチャの一部を構成する単位である。スライス/タイルは、一つまたは複数のCTU(Coding Tree Unit)を含むことができる。一つのピクチャは、一つまたは複数のスライス/タイルで構成されることができる。一つのピクチャは、一つまたは複数のタイルグループで構成されることができる。一つのタイルグループは、一つまたは複数のタイルを含むことができる。ブリックは、ピクチャ内のタイル以内のCTU行の四角領域を表すことができる(a brick may represent a rectangular region of CTU rows within a tile in a picture)。タイルは、多数のブリックでパーティショニングされることができ、各ブリックは、上記タイル内の一つまたは複数のCTU行から構成されることができる(A tile maybe partitioned into multiple bricks、each of which consisting of one or more CTU rows within the tile)。多数のブリックでパーティショニングされないタイルは、またブリックと呼ばれることができる(A tile that is not partitioned into multiple bricks may be also referred to as a brick)。ブリックスキャンは、ピクチャをパーティショニングするCTUの特定のシーケンシャルオーダリングを表すことができ、上記CTUは、ブリック内においてCTUラスタスキャンで整列されることができ、タイル内のブリックは、上記タイルの上記ブリックのラスタスキャンで連続的に整列されることができ、そしてピクチャ内のタイルは、上記ピクチャの上記タイルのラスタスキャンで連続的に整列されることができる(A brick scan is a specific sequential ordering of CTUs partitioning a picture in which the CTUs are ordered consecutively in CTU raster scan in a brick, bricks within a tile are ordered consecutively in a raster scan of the bricks of the tile, and tiles in a picture are ordered consecutively in a raster scan of the tiles of the picture)。タイルは、特定タイル列および特定タイル列以内のCTUの四角領域である(A tile is a rectangular region of CTUs within a particular tile column and a particular tile row in a picture)。上記タイル列は、CTUの四角領域で、上記四角領域は、上記ピクチャの高さと同じ高さを有し、幅は、ピクチャパラメータセット内のシンタックス要素によって明示されることができる(The tile column is a rectangular region of CTUs having a height equal to the height of the picture and a width specified by syntax elements in the picture parameter set)。上記タイル行は、CTUの四角領域で、上記四角領域は、ピクチャパラメータセット内のシンタックス要素によって明示される幅を有し、高さは、上記ピクチャの高さと同一でありうる(The tile row is a rectangular region of CTUs having a height specified by syntax elements in the picture parameter set and a width equal to the width of the picture)。タイルスキャンは、ピクチャをパーティショニングするCTUの特定のシーケンシャル(順次的)オーダリングを表すことができ、上記CTUは、タイル内のCTUラスタスキャンで連続的に整列されることができ、ピクチャ内のタイルは、上記ピクチャの上記タイルのラスタスキャンで連続的に整列されることができる(A tile scan is a specific sequential ordering of CTUs partitioning a picture in which the CTUs are ordered consecutively in CTU raster scan in a tile whereas tiles in a picture are ordered consecutively in a raster scan of the tiles of the picture)。スライスは、ピクチャの整数個のブリックを含むことができ、上記整数個のブリックは、一つのNALユニットに含まれることができる(A slice includes an integer number of bricks of a picture that may be exclusively contained in a single NAL unit)。スライスは、多数の完全なタイルで構成されることができ、または一つのタイルの完全なブリックの連続するシーケンスでもありうる(A slice may consists of either a number of complete tiles or only a consecutive sequence of complete bricks of one tile)。この文書においてタイルグループとスライスとは混用されうる。例えば、本文書においてtile group/tile group headerは、slice/slice headerと呼ばれることができる。
ピクセル(pixel)またはペル(pel)は、一つのピクチャ(または映像)を構成する最小の単位を意味できる。また、ピクセルに対応する用語として「サンプル(sample)」が使用されることができる。サンプルは、一般にピクセルまたはピクセルの値を表すことができ、ルマ(luma)成分のピクセル/ピクセル値だけを表すこともでき、クロマ(chroma)成分のピクセル/ピクセル値だけを表すこともできる。あるいは、サンプルは、空間領域(ドメイン)におけるピクセル値を意味することもでき、このようなピクセル値が周波数領域に変換されると、周波数領域における変換係数を意味することもできる。
ユニット(unit)は、映像処理の基本単位を表すことができる。ユニットは、ピクチャの特定領域および該当領域に関連する情報のうちの少なくとも一つを含むことができる。一つのユニットは、一つのルマブロックおよび二つのクロマ(例えば、cb、cr)ブロックを含むことができる。ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用されることができる。一般的な場合、MxNブロックは、M個の列およびN個の行からなるサンプル(もしくはサンプルアレイ)または変換係数(transform coefficient)の集合(もしくはアレイ)を含むことができる。
以下、添付した図面を参照して、本文書の好ましい実施形態をさらに詳細に説明する。以下、図面上の同じ構成要素については、同じ参照符号を使用し、同じ構成要素について重なった説明は、省略する。
図1は、本文書の実施形態に適用されることができるビデオ/映像コーディングシステムの例を概略的に示す。
図1を参照すると、ビデオ/映像コーディングシステムは、第1装置(ソースデバイス)および第2装置(受信デバイス)を含むことができる。ソースデバイスは、エンコードされたビデオ(video)/映像(image)情報またはデータをファイルまたはストリーミング形態でデジタル記憶媒体またはネットワークを介して受信デバイスに伝達できる。
上記ソースデバイスは、ビデオソース、エンコード装置、転送部を含むことができる。上記受信デバイスは、受信部、デコード装置およびレンダラを含むことができる。上記エンコード装置は、ビデオ/映像エンコード装置と呼ばれることができ、上記デコード装置は、ビデオ/映像デコード装置と呼ばれることができる。送信器は、エンコード装置に含まれることができる。受信器は、デコード装置に含まれることができる。レンダラは、ディスプレイ部を含むこともでき、ディスプレイ部は、別のデバイスまたは外部コンポーネントで構成されることもできる。
ビデオソースは、ビデオ/映像のキャプチャ、合成または生成過程などを介してビデオ/映像を獲得できる。ビデオソースは、ビデオ/映像キャプチャデバイスおよび/またはビデオ/映像生成デバイスを含むことができる。ビデオ/映像キャプチャデバイスは、例えば、一つまたは複数のカメラ、以前にキャプチャされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成デバイスは、例えばコンピュータ、タブレットおよびスマートフォンなどを含むことができ、(電子的に)ビデオ/映像を生成できる。例えば、コンピュータなどを介して仮想(仮像)のビデオ/映像が生成されることができ、この場合、関連データが生成される過程でビデオ/映像キャプチャ過程に代えることができる。
エンコード装置は、入力ビデオ/映像をエンコードできる。エンコード装置は、圧縮およびコーディング効率のために予測、変換、量子化などの一連の手順を行うことができる。エンコードされたデータ(エンコードされたビデオ/映像情報)は、ビットストリーム(bit stream)形態で出力されることができる。
転送部は、ビットストリーム形態で出力されたエンコードされたビデオ/映像情報またはデータをファイルまたはストリーミング形態でデジタル記憶媒体またはネットワークを介して受信デバイスの受信部に伝達できる。デジタル記憶媒体は、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)または復元ブロック生成部(reconstructed 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)などの用語と混用されることができる。一般的な場合、MxNブロックは、M個の列およびN個の行からなるサンプルまたは変換係数(transform coefficient)の集合を表すことができる。サンプルは、一般にピクセルまたはピクセルの値を表すこともでき、輝度(luma)成分のピクセル/ピクセル値だけを表すこともでき、彩度(chroma)成分のピクセル/ピクセル値だけを表すこともできる。サンプルは、一つのピクチャ(または映像)をピクセル(pixel)またはペル(pel)に対応する用語として使用されることができる。
エンコード装置200は、入力映像信号(オリジナル(原本)ブロック、オリジナルサンプルアレイ)においてインター予測部221またはイントラ予測部222から出力された予測信号(予測されたブロック、予測サンプルアレイ)を減算して、残差信号(residual signal、残差(残余)ブロック、残差サンプルアレイ)を生成でき、生成された残差信号は、変換部232に転送される。この場合、図示のようにエンコーダ200内で入力映像信号(オリジナルブロック、オリジナルサンプルアレイ)において予測信号(予測ブロック、予測サンプルアレイ)を減算するユニットは、減算部231と呼ばれることができる。予測部は、処理対象ブロック(以下、現ブロックという)に対する予測を行い、上記現ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成できる。予測部は、現ブロックもしくは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)予測モードに基づくこともでき、またはパレットモード(palette mode)に基づくこともできる。上記IBC予測モードまたはパレットモードは、例えばSCC(Screen Content Coding)などのように、ゲームなどのコンテンツ映像/動画コーディングのために使用されることができる。IBCは、基本的に現ピクチャ内で予測を行うが、現ピクチャ内で参照ブロックを導き出す点において、インター予測に類似して行われることができる。すなわち、IBCは、本文書において説明されるインター予測技法のうちの少なくとも一つを利用できる。パレットモードは、イントラコーディングまたはイントラ予測の一例と見なされることができる。パレットモードが適用される場合、パレットテーブルおよびパレットインデックスに関する情報に基づいて、ピクチャ内のサンプル値をシグナリングできる。
上記予測部(インター予測部221および/または上記イントラ予測部222を含む)を介して生成された予測信号は、復元信号を生成するために利用されるか、または残差信号を生成するために利用されることができる。変換部232は、残差信号に変換技法を適用して、変換係数(transform coefficients)を生成できる。例えば、変換技法は、DCT(Discrete Cosine Transform)、DST(Discrete Sine Transform)、KLT(Karhunen-Loeve 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を介して逆量子化および逆変換を適用することによって、残差信号(残差ブロックまたは残差サンプル)を復元できる。加算部155は、復元された残差信号をインター予測部221またはイントラ予測部222から出力された予測信号に加えることによって、復元(reconstructed)信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)が生成されることができる。スキップモードが適用された場合のように、処理対象ブロックに対する残差がない場合、予測されたブロックが復元ブロックとして使用されることができる。加算部250は、復元部または復元ブロック生成部と呼ばれることができる。生成された復元信号は、現ピクチャ内の次の処理対象ブロックのイントラ予測のために使用されることができ、後述するように、フィルタリングを経て次のピクチャのインター予測のために使用されることもできる。
一方、ピクチャエンコードおよび/または復元過程でLMCS(Luma Mapping with Chroma Scaling)が適用されることもできる。
フィルタリング部260は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部260は、復元ピクチャに多様なフィルタリング方法を適用して、修正された(modified)復元ピクチャを生成でき、上記修正された復元ピクチャを、メモリ270、具体的にはメモリ270のDPBに記憶することができる。上記多様なフィルタリング方法は、例えば、デブロックフィルタリング、サンプル適応オフセット(sample adaptive offset)、適応ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。フィルタリング部260は、各フィルタリング方法に関する説明において後述するように、フィルタリングに関する多様な情報を生成して、エントロピエンコード部240に伝達できる。フィルタリングに関する情報は、エントロピエンコード部240においてエンコードされて、ビットストリーム形態で出力されることができる。
メモリ270に転送された修正された復元ピクチャは、インター予測部221において参照ピクチャとして使用されることができる。エンコード装置は、これを介してインター予測が適用される場合、エンコード装置100とデコード装置とにおける予測ミスマッチを避けることができ、符号化効率も向上させることができる。
メモリ270DPBは、修正された復元ピクチャをインター予測部221における参照ピクチャとして使用するために記憶することができる。メモリ270は、現ピクチャ内の動き情報が導き出された(またはエンコードされた)ブロックの動き情報および/または既に復元されたピクチャ内のブロックの動き情報を記憶することができる。上記記憶された動き情報は、空間的周辺ブロックの動き情報または時間的周辺ブロックの動き情報として活用するために、インター予測部221に伝達できる。メモリ270は、現ピクチャ内の復元されたブロックの復元サンプルを記憶することができ、イントラ予測部222に伝達できる。
図3は、本文書の実施形態に適用されることができるビデオ/映像デコード装置の構成を概略的に説明する図である。
図3を参照すると、デコード装置300は、エントロピデコード部(entropy decoder)310、残差処理部(residual processor)320、予測部(predictor)330、加算部(adder)340、フィルタリング部(filter)350およびメモリ(memory)360を含んで構成されることができる。予測部330は、インター予測部331およびイントラ予測部332を含むことができる。残差処理部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エントロピデコード方法は、ビットストリームにおいて各シンタックス要素に該当するビンを受信し、デコード対象シンタックス要素情報、周辺およびデコード対象ブロックのデコード情報または以前のステップにおいてデコードされたシンボル/ビンの情報を利用してコンテキスト(文脈)(context)モデルを決定し、決定されたコンテキストモデルに応じてビン(bin)の発生確率を予測して、ビンの算術デコード(arithmetic decoding)を行って、各構文要素の値に該当するシンボルを生成できる。このとき、CABACエントロピデコード方法は、コンテキストモデル決定後に次のシンボル/ビンのコンテキストモデルのためにデコードされたシンボル/ビンの情報を利用して、コンテキストモデルをアップデートできる。エントロピデコード部310においてデコードされた情報のうち、予測に関する情報は、予測部(インター予測部332およびイントラ予測部331)に提供され、エントロピデコード部310においてエントロピデコードが行われた残差値、すなわち量子化された変換係数および関連パラメータ情報は、残差処理部320に入力されることができる。残差処理部320は、残差信号(残差ブロック、残差サンプル、残差サンプルアレイ)を導き出すことができる。また、エントロピデコード部310においてデコードされた情報のうち、フィルタリングに関する情報は、フィルタリング部350に提供されることができる。一方、エンコード装置から出力された信号を受信する受信部(図示せず)は、デコード装置300の内/外部エレメントとしてさらに構成されることができ、または、受信部は、エントロピデコード部310の構成要素でもありうる。一方、本文書によるデコード装置は、ビデオ/映像/ピクチャデコード装置と呼ばれることができ、上記デコード装置は、情報デコーダ(ビデオ/映像/ピクチャ情報デコーダ)およびサンプルデコーダ(ビデオ/映像/ピクチャサンプルデコーダ)に区分することもできる。上記情報デコーダは、上記エントロピデコード部310を含むことができ、上記サンプルデコーダは、上記逆量子化部321、逆変換部322、加算部340、フィルタリング部350、メモリ360、インター予測部332およびイントラ予測部331のうちの少なくとも一つを含むことができる。
逆量子化部321では、量子化された変換係数を逆量子化して変換係数を出力できる。逆量子化部321は、量子化された変換係数を2次元のブロック形態で再整列できる。この場合、上記再整列は、エンコード装置において行われた係数スキャン順序に基づいて再整列を行うことができる。逆量子化部321は、量子化パラメータ(例えば、量子化ステップサイズ情報)を利用して、量子化された変換係数に対する逆量子化を行い、変換係数(transform coefficient)を獲得できる。
逆変換部322では、変換係数を逆変換して残差信号(残差ブロック、残差サンプルアレイ)を獲得する。
予測部は、現ブロックに対する予測を行い、上記現ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成できる。予測部は、エントロピデコード部310から出力された上記予測に関する情報に基づいて、上記現ブロックにイントラ予測が適用されるかどうか、またはインター予測が適用されるかどうかを決定でき、具体的なイントラ/インター予測モードを決定できる。
予測部320は、後述する多様な予測方法に基づいて予測信号を生成できる。例えば、予測部は、一つのブロックに対する予測のために、イントラ予測またはインター予測を適用できるだけでなく、イントラ予測とインター予測とを同時に適用できる。これは、Combined Inter and Intra Prediction(CIIP)と呼ばれることができる。また、予測部は、ブロックに対する予測のためにイントラブロックコピー(Intra Block Copy、IBC)予測モードに基づくこともでき、またはパレットモード(palette mode)に基づくこともできる。上記IBC予測モードまたはパレットモードは、例えばSCC(Screen Content Coding)などのように、ゲームなどのコンテンツ映像/動画コーディングのために使用されることができる。IBCは、基本的に現ピクチャ内で予測を行うが、現ピクチャ内で参照ブロックを導き出す点において、インター予測と同様に行われることができる。すなわち、IBCは、本文書において説明されるインター予測技法のうちの少なくとも一つを利用できる。パレットモードは、イントラコーディングまたはイントラ予測の一例と見なすことができる。パレットモードが適用される場合、パレットテーブルおよびパレットインデックスに関する情報が上記ビデオ/映像情報に含まれてシグナリングされることができる。
イントラ予測部331は、現ピクチャ内のサンプルを参照して現ブロックを予測できる。上記参照されるサンプルは、予測モードに応じて上記現ブロックの周辺(neighbor)に位置したり、または離れて位置することもできる。イントラ予測における予測モードは、複数の非方向性モードおよび複数の方向性モードを含むことができる。イントラ予測部331は、周辺ブロックに適用された予測モードを利用して、現ブロックに適用される予測モードを決定することもできる。
インター予測部332は、参照ピクチャ上において動きベクトルにより特定される参照ブロック(参照サンプルアレイ)に基づいて、現ブロックに対する予測されたブロックを導出できる。このとき、インター予測モードにおいて転送される動き情報の量を減らすために、周辺ブロックと現ブロックとの間の動き情報の相関性に基づいて、動き情報をブロック、サブブロックまたはサンプル単位で予測できる。上記動き情報は、動きベクトルおよび参照ピクチャインデックスを含むことができる。上記動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)に関する情報をさらに含むことができる。インター予測の場合に、周辺ブロックは、現ピクチャ内に存在する空間的周辺ブロック(spatial neighboring block)と参照ピクチャに存在する時間的周辺ブロック(temporal neighboring block)とを含むことができる。例えば、インター予測部332は、周辺ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて上記現ブロックの動きベクトルおよび/または参照ピクチャインデックスを導き出すことができる。多様な予測モードに基づいてインター予測が行われることができ、上記予測に関する情報は、上記現ブロックに対するインター予測のモードを指示する情報を含むことができる。
加算部340は、獲得された残差信号を予測部(インター予測部332および/またはイントラ予測部331を含む)から出力された予測信号(予測されたブロック、予測サンプルアレイ)に加えることによって、復元信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成できる。スキップモードが適用された場合のように、処理対象ブロックに対する残差がない場合、予測されたブロックが復元ブロックとして使用されることができる。
加算部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に伝達できる。
本明細書において、エンコード装置100のフィルタリング部260、インター予測部221およびイントラ予測部222において説明された実施形態は、各々デコード装置300のフィルタリング部350、インター予測部332およびイントラ予測部331にも同一または対応するように適用されることができる。
上述したように、ビデオコーディングを行うにおいて、圧縮効率を上げるために予測を行う。これによりコーディング対象ブロックである現ブロックに対する予測サンプルを含む予測されたブロックを生成できる。ここで、上記予測されたブロックは、空間領域(またはピクセル領域)における予測サンプルを含む。上記予測されたブロックは、エンコード装置とデコード装置とで同様に導き出され、上記エンコード装置は、オリジナルブロックのオリジナルサンプル値自体ではなく、上記オリジナルブロックと上記予測されたブロックとの間の残差に関する情報(残差情報)をデコード装置にシグナリングすることによって、映像コーディング効率を上げることができる。デコード装置は、上記残差情報に基づいて残差サンプルを含む残差ブロックを導き出し、上記残差ブロックと上記予測されたブロックとを合せて、復元サンプルを含む復元ブロックを生成でき、復元ブロックを含む復元ピクチャを生成できる。
上記残差情報は、変換および量子化手順を介して生成されることができる。例えば、エンコード装置は、上記オリジナルブロックと上記予測されたブロックとの間の残差ブロックを導き出し、上記残差ブロックに含まれる残差サンプル(残差サンプルアレイ)に変換手順を行って変換係数を導き出し、上記変換係数に量子化手順を行って、量子化された変換係数を導き出して、関連する残差情報を(ビットストリームを介して)デコード装置にシグナリングできる。ここで、上記残差情報は、上記量子化された変換係数の値情報、位置情報、変換技法、変換カーネル、量子化パラメータなどの情報を含むことができる。デコード装置は、上記残差情報に基づいて逆量子化/逆変換手順を行い、残差サンプル(または残差ブロック)を導き出すことができる。デコード装置は、予測されたブロックおよび上記残差ブロックに基づいて復元ピクチャを生成できる。エンコード装置は、また、以後のピクチャのインター予測のための参照のために、量子化された変換係数を逆量子化/逆変換して残差ブロックを導き出し、これに基づいて復元ピクチャを生成できる。
一方、上述したように、現ブロックに対する予測を行うにおいて、イントラ予測またはインター予測を適用できる。以下、現ブロックにインター予測を適用する場合について説明する。
エンコード/デコード装置の予測部(より具体的にはインター予測部)は、ブロック単位でインター予測を行って予測サンプルを導き出すことができる。インター予測は、現ピクチャ以外のピクチャ(1つまたは複数)のデータ要素(例えば、サンプル値、または動き情報など)に依存した方法で導き出される予測を表すことができる。現ブロックにインター予測が適用される場合、参照ピクチャインデックスが指す参照ピクチャ上において動きベクトルにより特定される参照ブロック(参照サンプルアレイ)に基づいて、現ブロックに対する予測されたブロック(予測サンプルアレイ)を導出できる。このとき、インター予測モードにおいて転送される動き情報の量を減らすために、周辺ブロックと現ブロックとの間の動き情報の相関性に基づいて、動き情報をブロック、サブブロックまたはサンプル単位で予測できる。動き情報は、動きベクトルおよび参照ピクチャインデックスを含むことができる。動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)情報をさらに含むことができる。インター予測が適用される場合に、周辺ブロックは、現ピクチャ内に存在する空間的周辺ブロック(spatial neighboring block)と参照ピクチャに存在する時間的周辺ブロック(temporal neighboring block)とを含むことができる。上記参照ブロックを含む参照ピクチャと上記時間的周辺ブロックを含む参照ピクチャとは、同一であってもよく、異なってもよい。上記時間的周辺ブロックは、コロケート参照ブロック(collocated reference block)、コロケートCU(colCU)などの名前で呼ばれることができ、上記時間的周辺ブロックを含む参照ピクチャは、コロケートピクチャ(collocated picture、colPic)と呼ばれることもできる。例えば、現ブロックの周辺ブロックに基づいて、動き情報候補リストが構成されることができ、現ブロックの動きベクトルおよび/または参照ピクチャインデックスを導き出すために、どのような候補が選択(使用)されるかを指示するフラグまたはインデックス情報がシグナリングされることができる。多様な予測モードに基づいてインター予測が行われることができ、例えばスキップモードおよびマージモードの場合に、現ブロックの動き情報は、選択された周辺ブロックの動き情報と同一でありうる。スキップモードの場合、マージモードとは異なり、残差信号が転送されないことができる。動き情報予測(Motion Vector Prediction、MVP)モードの場合、選択された周辺ブロックの動きベクトルを動きベクトル予測子(motion vector predictor)として利用し、動きベクトル差分(motion vector difference)は、シグナリングされることができる。この場合、上記動きベクトル予測子および動きベクトル差分の合計を利用して、現ブロックの動きベクトルを導き出すことができる。
上記動き情報は、インター予測タイプ(L0予測、L1予測、Bi予測など)に応じてL0動き情報および/またはL1動き情報を含むことができる。L0方向の動きベクトルは、L0動きベクトルまたはMVL0と呼ばれることができ、L1方向の動きベクトルは、L1動きベクトルまたはMVL1と呼ばれることができる。L0動きベクトルに基づいた予測は、L0予測と呼ばれることができ、L1動きベクトルに基づいた予測は、L1予測と呼ばれることができ、L0動きベクトルおよびL1動きベクトルともに基づいた予測は、対(Bi)予測と呼ばれることができる。ここで、L0動きベクトルは、参照ピクチャリストL0(L0)に関連する動きベクトルを表すことができ、L1動きベクトルは、参照ピクチャリストL1(L1)に関連する動きベクトルを表すことができる。参照ピクチャリストL0は、現ピクチャより出力順序における以前のピクチャを参照ピクチャとして含むことができ、参照ピクチャリストL1は、現ピクチャより出力順序における以後のピクチャを含むことができる。以前のピクチャは、順方向(参照)ピクチャと呼ばれることができ、以後のピクチャは、逆方向(参照)ピクチャと呼ばれることができる。参照ピクチャリストL0は、現ピクチャより出力順序における以後のピクチャを参照ピクチャとしてさらに含むことができる。この場合、参照ピクチャリストL0内で以前のピクチャがまずインデックスされ、以後のピクチャは、その次にインデックスされることができる。参照ピクチャリストL1は、現ピクチャより出力順序における以前のピクチャを参照ピクチャとしてさらに含むことができる。この場合、参照ピクチャリストL1内で以後ピクチャがまずインデックスされ、以前ピクチャは、その次にインデックスされることができる。ここで、出力順序は、ピクチャ順序カウント(Picture Order Count;POC)の順序(order)に対応することができる。
上述したlist0(L0)予測、list1(L1)予測、または対予測(bi-prediction)が現ブロック(現コーディングユニット)に使用されるかどうかを表す情報がシグナリングされることができる。上記情報は、動き予測方向情報、インター予測方向情報またはインター予測指示情報と呼ばれることができ、例えばinter_pred_idcシンタックス要素の形態で構成/エンコード/シグナリングされることができる。すなわち、inter_pred_idcシンタックス要素は、上述したlist0(L0)予測、list1(L1)予測、または対予測(bi-prediction)が現ブロック(現コーディングユニット)に使用されるかどうかを表すことができる。本文書では、説明の便宜のために、inter_pred_idcシンタックス要素が指すインター予測タイプ(L0予測、L1予測、またはBI予測)は、動き予測方向として表されることができる。L0予測は、pred_L0、L1予測は、pred_L1、対予測は、pred_BIで表されることができる。例えば、inter_pred_idcシンタックス要素の値に応じて、次の表1のような予測タイプを表すことができる。
また、現ブロックにインター予測を適用するにおいて、多様なインター予測モードが使用されることができる。例えば、マージモード、スキップモード、MVP(Motion Vector Prediction)モード、アフィン(Affine)モード、HMVP(Historical motion Vector Prediction)モードなど、多様なモードが使用されることができる。DMVR(Decoder side Motion Vector Refinement)モード、AMVR(Adaptive Motion Vector Resolution)モード、Bi-directional Optical Flow(BDOF)などが付随的なモードとしてさらに使用されることができる。アフィンモードは、アフィン動き予測(affine motion prediction)モードと呼ばれることができる。MVPモードは、AMVP(Advanced Motion Vector Prediction)モードと呼ばれることもできる。本文書において一部のモードおよび/または一部のモードに応じて導き出された動き情報候補は、他のモードの動き情報関連候補のうちの一つとして含まれることができる。
現ブロックのインター予測モードを指す予測モード情報がエンコード装置からデコード装置にシグナリングされることができる。このとき、予測モード情報は、ビットストリームに含まれてデコード装置に受信されることができる。予測モード情報は、多数の候補モードのうちの一つを指示するインデックス情報を含むことができる。あるいは、フラグ情報の階層的シグナリングを介してインター予測モードを指示することもできる。この場合、予測モード情報は、一つまたは複数のフラグを含むことができる。例えば、スキップフラグをシグナリングしてスキップモードを適用するかどうかを指示し、スキップモードが適用されない場合に、マージフラグをシグナリングしてマージモードを適用するかどうかを指示し、マージモードが適用されない場合に、MVPモードが適用されることを指示するか、追加的な区分のためのフラグをさらにシグナリングすることもできる。アフィンモードは、独立したモードでシグナリングされ、またはマージモードもしくはMVPモードなどに従属するモードでシグナリングされることができる。例えば、アフィンモードは、アフィンマージモードおよびアフィンMVPモードを含むことができる。
また、現ブロックにインター予測を適用するにおいて、現ブロックの動き情報を利用できる。エンコード装置は、動き推定(motion estimation)手順を介して現ブロックに対する最適な動き情報を導き出すことができる。例えば、エンコード装置は、現ブロックに対するオリジナルピクチャ内のオリジナルブロックを利用して、相関性の高い類似の参照ブロックを参照ピクチャ内の決まった探索範囲内で分数(端数の)ピクセル単位で探索でき、これにより動き情報を導き出すことができる。ブロックの類似性は、位相(phase)ベース(基盤)サンプル値の差に基づいて導き出すことができる。例えば、ブロックの類似性は、現ブロック(または現ブロックのテンプレート)と参照ブロック(または参照ブロックのテンプレート)との間のSAD(Sum of Absolute Differences)に基づいて計算されることができる。この場合、サーチスペース(探索領域)内のSADが最も小さな参照ブロックに基づいて動き情報を導き出すことができる。導き出された動き情報は、インター予測モードに基づいて様々な方法によってデコード装置にシグナリングされることができる。
上記のように、インター予測モードに応じて導き出された動き情報に基づいて、現ブロックに対する予測されたブロックを導き出すことができる。予測されたブロックは、現ブロックの予測サンプル(予測サンプルアレイ)を含むことができる。現ブロックの動きベクトル(MV)が分数サンプル単位を指す場合、補間(interpolation)手順が行われることができ、これによって参照ピクチャ内で分数サンプル単位の参照サンプルに基づいて、現ブロックの予測サンプルが導き出されることができる。現ブロックにアフィン(Affine)インター予測が適用される場合、サンプル/サブブロック単位のMVに基づいて予測サンプルを生成できる。対予測が適用される場合、L0予測(すなわち、参照ピクチャリストL0内の参照ピクチャおよびMVL0を利用した予測)に基づいて導き出された予測サンプルとL1予測(すなわち、参照ピクチャリストL1内の参照ピクチャおよびMVL1を利用した予測)に基づいて導き出された予測サンプルとの(位相に応じた)重み付き和または重み付き平均を介して導き出された予測サンプルが、現ブロックの予測サンプルとして利用されることができる。対予測が適用される場合、L0予測に利用された参照ピクチャとL1予測に利用された参照ピクチャとが現ピクチャを基準に互いに異なる時間的方向に位置する場合(すなわち、対予測でかつ両方向予測に該当する場合)、をtrue対予測と呼ぶことができる。
導き出された予測サンプルに基づいて復元サンプルおよび復元ピクチャが生成されることができ、以後インループフィルタリングなどの手順が行われうることは、前述した通りである。
図4は、インター予測に基づいたビデオ/映像エンコード方法の一例を示し、図5は、エンコード装置内のインター予測部を概略的に示した一例である。図5のエンコード装置内のインター予測部は、上述した図2のエンコード装置200のインター予測部221にも同一または対応するように適用されることができる。
図4および図5を参照すると、エンコード装置は、現ブロックに対するインター予測を行う(S400)。エンコード装置は、現ブロックのインター予測モードおよび動き情報を導き出し、現ブロックの予測サンプルを生成できる。ここで、インター予測モード決定、動き情報導出および予測サンプル生成手順は、同時に行われることもでき、ある一つの手順が他の手順よりまず行われることもできる。
例えば、エンコード装置のインター予測部221は、予測モード決定部221_1、動き情報導出部221_2、予測サンプル導出部221_3を含むことができ、予測モード決定部221_1において上記現ブロックに対する予測モードを決定し、動き情報導出部221_2において上記現ブロックの動き情報を導き出し、予測サンプル導出部221_3において上記現ブロックの予測サンプルを導き出すことができる。例えば、エンコード装置のインター予測部221は、動き推定(motion estimation)を介して参照ピクチャの一定領域(サーチ領域)内で現ブロックと類似のブロックをサーチし、現ブロックとの差が最小または一定基準以下である参照ブロックを導き出すことができる。これに基づいて参照ブロックが位置する参照ピクチャを指す参照ピクチャインデックスを導き出し、参照ブロックと現ブロックとの位置差に基づいて動きベクトルを導き出すことができる。エンコード装置は、多様な予測モードのうち、現ブロックに対して適用されるモードを決定できる。エンコード装置は、多様な予測モードに対するRD costを比較し、現ブロックに対する最適な予測モードを決定できる。
例えば、エンコード装置は、現ブロックにスキップモードまたはマージモードが適用される場合、マージ候補リストを構成し、マージ候補リストに含まれるマージ候補が指す参照ブロックのうち、現ブロックとの差が最小または一定基準以下である参照ブロックを導き出すことができる。この場合、導き出された参照ブロックと関連するマージ候補が選択され、選択されたマージ候補を指すマージインデックス情報が生成されてデコード装置へシグナリングされることができる。選択されたマージ候補の動き情報を利用して、現ブロックの動き情報が導き出されることができる。
他の例として、エンコード装置は、現ブロックに(A)MVPモードが適用される場合、(A)MVP候補リストを構成し、(A)MVP候補リストに含まれるmvp(motion vector predictor)候補のうち、選択されたmvp候補の動きベクトルを現ブロックのmvpとして利用できる。この場合、例えば、上述した動き推定によって導き出された参照ブロックを指す動きベクトルが、現ブロックの動きベクトルとして利用されることができ、mvp候補のうち、現ブロックの動きベクトルとの差が最も小さな動きベクトルを有するmvp候補が、選択されたmvp候補になることができる。現ブロックの動きベクトルからmvpを引いた差分であるMVD(Motion Vector Difference)が導き出されることができる。この場合、MVDに関する情報がデコード装置へシグナリングされることができる。また、(A)MVPモードが適用される場合、参照ピクチャインデックスの値は、参照ピクチャインデックス情報で構成されて、別にデコード装置へシグナリングされることができる。
エンコード装置は、予測サンプルに基づいて残差サンプルを導き出すことができる(S410)。エンコード装置は、現ブロックのオリジナルサンプルと予測サンプルとの比較により、残差サンプルを導き出すことができる。
エンコード装置は、予測情報および残差情報を含む映像情報をエンコードする(S420)。エンコード装置は、エンコードされた映像情報をビットストリーム形態で出力できる。予測情報は、予測手順に関連する情報として予測モード情報(例えば、skip flag、merge flag or mode indexなど)および動き情報に関する情報を含むことができる。動き情報に関する情報は、動きベクトルを導き出すための情報である候補選択情報(例えば、merge index、mvp flag or mvp index)を含むことができる。また、動き情報に関する情報は、上述したMVDに関する情報および/または参照ピクチャインデックス情報を含むことができる。また、動き情報に関する情報は、L0予測、L1予測、または対(bi)予測が適用されるかどうかを表す情報を含むことができる。残差情報は、残差サンプルに関する情報である。残差情報は、残差サンプルに対する量子化された変換係数に関する情報を含むことができる。
出力されたビットストリームは、(デジタル)記憶媒体に記憶されてデコード装置に伝達されることができ、または、ネットワークを介してデコード装置に伝達されることができる。
また、上述したように、エンコード装置は、参照サンプルおよび残差サンプルに基づいて復元ピクチャ(復元サンプルおよび復元ブロック含む)を生成できる。これは、デコード装置において行われるのと同じ予測結果をエンコード装置から導き出すためであり、これによりコーディング効率を上げることができるためである。したがって、エンコード装置は、復元ピクチャ(または復元サンプル、復元ブロック)をメモリに記憶し、インター予測のための参照ピクチャとして活用できる。復元ピクチャにインループフィルタリング手順などがさらに適用されうることは、上述した通りである。
図6は、インター予測に基づいたビデオ/映像デコード方法の一例を示し、図7は、デコード装置内のインター予測部を概略的に示した一例である。図7のデコード装置内のインター予測部は、上述した図3のデコード装置300のインター予測部332にも同一または対応するように適用されることができる。
図6および図7を参照すると、デコード装置は、上記エンコード装置において行われた動作と対応する動作を行うことができる。デコード装置は、受信した予測情報に基づいて現ブロックに予測を行い、予測サンプルを導き出すことができる。
具体的には、デコード装置は、受信した予測情報に基づいて現ブロックに対する予測モードを決定できる(S600)。デコード装置は、予測情報内の予測モード情報に基づいて、現ブロックにどのようなインター予測モードが適用されるかを決定できる。
例えば、merge flagに基づいて現ブロックにマージモードが適用されるか、または(A)MVPモードが決定されるかを決定できる。あるいは、mode indexに基づいて多様なインター予測モード候補のうちの一つを選択できる。インター予測モード候補は、スキップモード、マージモードおよび/または(A)MVPモードを含むことができ、または前述した多様なインター予測モードを含むことができる。
デコード装置は、決定されたインター予測モードに基づいて現ブロックの動き情報を導き出す(S610)。例えば、デコード装置は、現ブロックにスキップモードまたはマージモードが適用される場合、マージ候補リストを構成し、マージ候補リストに含まれるマージ候補のうちの一つのマージ候補を選択できる。ここで選択は、上述した選択情報(merge index)に基づいて行われることができる。選択されたマージ候補の動き情報を利用して、現ブロックの動き情報が導き出されることができる。選択されたマージ候補の動き情報が現ブロックの動き情報として利用されることができる。
他の例として、デコード装置は、現ブロックに(A)MVPモードが適用される場合、(A)MVP候補リストを構成し、(A)MVP候補リストに含まれるmvp(motion vector predictor)候補のうち、選択されたmvp候補の動きベクトルを現ブロックのmvpとして利用できる。ここで、選択は、上述した選択情報(mvp flag or mvp index)に基づいて行われることができる。この場合、上記MVDに関する情報に基づいて現ブロックのMVDを導き出すことができ、現ブロックのmvpおよびMVDに基づいて現ブロックの動きベクトルを導き出すことができる。また、参照ピクチャインデックス情報に基づいて、現ブロックの参照ピクチャインデックスを導き出すことができる。現ブロックに関する参照ピクチャリスト内で参照ピクチャインデックスが指すピクチャが、現ブロックのインター予測のために参照される参照ピクチャとして導き出されることができる。
一方、候補リスト構成なしで現ブロックの動き情報が導き出されることができ、この場合、予測モードにおいて開始された手順に従って現ブロックの動き情報が導き出されることができる。この場合、上述したような候補リスト構成は省略できる。
デコード装置は、現ブロックの動き情報に基づいて現ブロックに対する予測サンプルを生成できる(S620)。この場合、現ブロックの参照ピクチャインデックスに基づいて参照ピクチャを導き出し、現ブロックの動きベクトルが参照ピクチャ上において指す参照ブロックのサンプルを利用して、現ブロックの予測サンプルを導き出すことができる。このとき、場合によって現ブロックの予測サンプルのうち、全てまたは一部に対する予測サンプルフィルタリング手順がさらに行われることができる。
例えば、デコード装置のインター予測部332は、予測モード決定部332_1、動き情報導出部332_2、予測サンプル導出部332_3を含むことができ、予測モード決定部332_1において受信した予測モード情報に基づいて、現ブロックに対する予測モードを決定し、動き情報導出部332_2から受信した動き情報に関する情報に基づいて、現ブロックの動き情報(動きベクトルおよび/または参照ピクチャインデックスなど)を導き出し、予測サンプル導出部332_3が現ブロックの予測サンプルを導き出すことができる。
デコード装置は、受信した残差情報に基づいて現ブロックに対する残差サンプルを生成する(S630)。デコード装置は、予測サンプルおよび残差サンプルに基づいて、現ブロックに対する復元サンプルを生成し、これに基づいて復元ピクチャを生成できる(S640)。以後、復元ピクチャにインループフィルタリング手順などがさらに適用されうることは、上述の通りである。
上述したように、インター予測手順は、インター予測モード決定ステップ、決定された予測モードに応じる動き情報導出ステップ、導き出された動き情報に基づいた予測遂行(予測サンプル生成)ステップを含むことができる。インター予測手順は、上述したように、エンコード装置およびデコード装置において行われることができる。
一方、スキップモードおよび/またはマージモードは、MVD(Motion Vector Difference)なしで周辺ブロックの動きベクトルに基づいて現ブロックの動きを予測するので、動き予測において限界を示す。スキップモードおよび/またはマージモードの限界を改善するために、DMVR(Decoder-side Motion Vector Refinement)、BDOF(Bi-Directional Optical Flow)モードなどを適用して、動きベクトルをリファイン(refine)できる。DMVR、BDOFモードは、現ブロックにtrue対予測が適用される場合に使用されることができる。
図8は、true対予測においてDMVR(Decoder-side Motion Vector Refinement)を行う過程の一実施形態を説明する図である。
DMVRは、デコーダ側において周辺ブロックの動き情報をリファイン(refinement)して動き予測を行う方法である。DMVRが適用される場合、デコーダは、マージ(merge)/スキップ(skip)モードにおいて周辺ブロックの動き情報を利用して生成されたテンプレート(template)に基づいて、cost比較を介してリファインされた動き情報を導出できる。この場合、付加的なシグナリング情報なしで動き予測の精密度を高め圧縮性能を向上させることができる。
本文書において、説明の便宜のためにデコード装置を中心に説明するが、本文書の実施形態によるDMVRは、エンコード装置でも同じ方法で行われることができる。
図8を参照すると、デコード装置は、list0およびlist1方向の初期動きベクトル(または動き情報)(例えば、MV0およびMV1)により識別される予測ブロック(すなわち、参照ブロック)を導き出し、導き出された予測ブロックの重み付き和(例えば、平均)でテンプレート(またはbilateral template)を生成できる(step1)。ここで、初期動きベクトル(MV0およびMV1)は、マージ/スキップモードにおいて周辺ブロックの動き情報を利用して導出された動きベクトルを表すことができる。
そして、デコード装置は、テンプレートマッチング(template matching)動作を介してテンプレートと参照ピクチャのサンプル領域との間の差分値を最小にする動きベクトル(例えば、MV0’およびMV1’)を導出できる(step2)。ここで、サンプル領域は、参照ピクチャ内で初期予測ブロックの周辺領域を表し、サンプル領域は、周辺領域、参照領域、サーチスペース、探索範囲、サーチスペースなどと呼ばれることができる。テンプレートマッチング動作は、テンプレートと参照ピクチャのサンプル領域との間のcost測定値を計算する動作を含むことができる。例えば、cost測定には、SAD(Sum of Absolute Differences)が利用されることができる。一例として、cost関数として正規化されたSADが使用されることができる。このとき、matching costは、SAD(T-mean(T)、2*P[x]-2*mean(P[x]))で与えられることができる。ここで、Tは、テンプレートを表し、P[x」は、サーチスペース内のブロックを表す。そして、2個の参照ピクチャの各々に対して最小テンプレートcostを算出する動きベクトルは、更新された動きベクトル(初期動きベクトルを代える)として考慮されることができる。図8に示すように、デコード装置は、更新された動きベクトルMV0‘およびMV1’を利用して、最終両方向予測結果(すなわち、最終両方向予測ブロック)を生成できる。一実施形態として、更新された(または新しい)動きベクトル導出のためのmulti-iterationが最終両方向予測結果の獲得に使用されることができる。
一実施形態において、デコード装置は、初期動き補償予測(すなわち、従来のマージ/スキップモードを介した動き補償予測)の精度を向上させるために、DMVRプロセスを呼び出すことができる。例えば、デコード装置は、現ブロックの予測モードがマージモードまたはスキップモードで、現ブロックにディスプレイ順序において現ピクチャを基準に両方向の参照ピクチャが反対方向にある両方向対予測が適用される場合、DMVRプロセスを行うことができる。
図9は、SAD(Sum of Absolute Differences)を使用してDMVR(Decoder-side Motion Vector Refinement)を行う過程の一実施形態を説明する図である。
上述したように、デコード装置は、DMVRを行うにおいて、SADを利用してmatching costを測定できる。一実施形態として、図9では、テンプレートを生成せずに二つの参照ピクチャ内の予測サンプル間のMRSAD(Mean Sum of Absolute Difference)を計算して、動きベクトルをリファインする方法を説明する。すなわち、図9の方法は、MRSADを利用する両方向マッチング(bilateral matching)の一実施形態を示す。
図9を参照すると、デコード装置は、list0(L0)方向の動きベクトル(MV0)により指示される画素(サンプル)の隣接画素をL0参照ピクチャ上において導き出し、list1(L1)方向の動きベクトル(MV1)により指示される画素(サンプル)の隣接画素をL1参照ピクチャ上において導き出すことができる。そして、デコード装置は、L0参照ピクチャ上において導き出された隣接画素を指示する動きベクトルにより識別されるL0予測ブロック(すなわち、L0参照ブロック)と、L1参照ピクチャ上において導き出された隣接画素を指示する動きベクトルにより識別されるL1予測ブロック(すなわち、L1参照ブロック)と、の間のMRSADを計算して、matching costを測定できる。このとき、デコード装置は、最小costを有する探索ポイント(地点)(すなわち、L0予測ブロックとL1予測ブロックとの間の最小SADを有するサーチスペース)をリファインされた動きベクトル対として選択できる。すなわち、リファインされた動きベクトル対は、L0参照ピクチャにおいて最小costを有する画素位置(L0予測ブロック)を指すリファインされたL0動きベクトルと、L1参照ピクチャにおいて最小costを有する画素位置(L1予測ブロック)を指すリファインされたL1動きベクトルと、を含むことができる。
実施形態として、matching costを計算するにおいて、参照ピクチャのサーチスペースが設定された後に、単方向予測は、regular 8 tap DCTIF interpolation filterを使用して行われることができる。また、一例として、MRSAD計算は、16ビット精密度が使用されることができ、内部バッファを考慮してMRSAD計算以前にクリッピングおよび/または四捨五入演算が適用されないことができる。
上述したように、現ブロックにtrue対予測が適用される場合、対予測信号をリファインするためにBDOFが使用されることができる。BDOF(Bi-Directional Optical Flow)は、現ブロックに対予測が適用される場合、改善された動き情報を計算し、これに基づいて予測サンプルを生成するために使用されることができる。例えば、BDOFは、4x4サブブロック(sub-block)レベルにおいて適用されることができる。すなわち、BDOFは、現ブロック内の4x4サブブロック単位で行われることができる。あるいは、BDOFは、ルマ成分に対してのみ適用されることができる。あるいは、BDOFは、クロマ成分に対してのみ適用されることもでき、ルマ成分およびクロマ成分に対して適用されることもできる。
BDOFモードは、その名称が表すようにオブジェクトの動きがsmoothであると仮定するオプティカルフロー(光学流れ)(optical flow)の概念をベースとする。4x4サブブロックの各々に対して、L0およびL1予測サンプル間の差値を最小にすることによって、動きリファインメント(vx,vy)が計算されることができる。そして、動きリファインメントは、4x4サブブロックにおいて対予測サンプル値を調整するために使用されることができる。
さらに具体的には、BDOFを適用して予測信号をリファインすることにおいて、まず、L0予測サンプルおよびL1予測サンプルの水平および垂直階調(グラジエント)(gradient)を計算できる。このとき、水平および垂直階調は、予測サンプル(i,j)の周辺に位置する2個の周辺サンプル間の差に基づいて計算されることができ、次の式1のように計算されることができる。
式中、
は、水平階調であり、
は、垂直階調である。また、
は、リストk(k=0,1)において予測サンプルの座標(i,j)における予測値である。
次に、水平および垂直階調のauto-correlationおよびcross-correlationを次の式2および式3のように計算できる。
式中、
は、4x4サブブロック周辺の6x6ウィンドウである。
次に、動きリファインメント(vx,vy)がauto-correlationおよびcross-correlationを利用して計算され、次の式4のように計算されることができる。
式中、
であり、
であり、
であり、
は、床関数(floor function)である。
次に、上記階調および動きリファインメントに基づいて、次の式5のようにBDOF予測サンプルのリファインメントのためのb(x,y)が計算されることができる。
そして、最後に、BDOF予測サンプル(すなわち、BDOFを適用してリファインされた予測サンプル値)が次の式6のように計算されることができる。
一方、上述したDMVRとBDOFとは、true対予測を適用する場合(このとき、true対予測は、現ブロックのピクチャを基準に他の方向の参照ピクチャにおいて動き予測/補償する場合を表す)、動き情報をリファインして予測を行う技術として、ピクチャ内のオブジェクトの動きが一定速度、一定の方向になされる場合を仮定しているという点で類似の概念のリファインメント技術であることが分かる。ただし、true対予測が行われる場合、DMVRを適用するための条件とBDOFを適用するための条件とが異なるので、各技術別に繰り返して複数回の条件チェックを行う過程を経なければならない。そのため、本文書では、現ブロックに適用される予測モードを決定するにおいて、条件チェックを行う過程を改善することで、デコーダの複雑度および性能面において効率を向上させることができる方法を提案する。
次の表2は、従来のtrue対予測時にDMVRを適用するための条件を表したものである。以下に羅列した条件を全部満たすときにDMVRを適用できる。
上記表2を参照すると、1)SPS(Sequence Parameter Set)シンタックスにおいてシグナリングされるフラグ情報(例えば、sps_dmvr_enabled_flag)に基づいて、DMVRを適用するかどうかを決定できる。ここで、フラグ情報(例えば、sps_dmvr_enabled_flag)は、true対予測ベースDMVRが可能(可用)(enable)であるかどうかを表すことができる。例えば、sps_dmvr_enabled_flagが1である場合(すなわち、true対予測ベースDMVRが可能な場合)、DMVR可能条件を満たすと判断できる。
2)マージモード/スキップモードを使用してインター予測を行うかを表すフラグ情報(例えば、merge_flag)に基づいて、DMVRを適用するかどうかを決定できる。例えば、merge_flagが1である場合(すなわち、マージモード/スキップモードを使用してインター予測を行う場合)、マージモード/スキップモードを適用するかどうかの条件を満たすと判断できる。
3)MMVD(Merge mode with Motion Vector Difference)モードを使用してインター予測を行うかどうかを表すフラグ情報(例えば、mmvd_flag)に基づいて、DMVRを適用するかどうかを決定できる。例えば、mmvd_flagが0である場合(すなわち、MMVDモードを使用しない場合)、MMVDモードを適用するかどうかの条件を満たすと判断できる。
4)両方向予測(対予測)を使用するかどうかに基づいてDMVRを適用するかどうかを決定できる。ここで、両方向予測は、現ピクチャを基準に互いに異なる方向に存在する参照ピクチャに基づいて行われるインター予測を表すことができる。例えば、predFlagL0[0][0]=1であり、predFlagL0[1][1]=1の場合、両方向予測が適用されると判断でき、両方向予測条件を満たすと判断できる。
5)true対予測で現ピクチャと両方向の参照ピクチャとの間の距離が互いに同じであるかどうかに基づいて、DMVRを適用するかどうかを決定できる。すなわち、現ピクチャとL0参照ピクチャ(すなわち、参照ピクチャリストL0内の参照ピクチャ)との間の距離と、現ピクチャとL1参照ピクチャ(すなわち、参照ピクチャリストL1内の参照ピクチャ)との間の距離と、が互いに同じであるかどうかを判断できる。例えば、DiffPicOrderCnt(currPic,RefPicList0[refIdxL0])-DiffPicOrderCnt(currPic,RefPicList1[refIdxL1])=0の場合、true対予測で、現ピクチャと両方向の参照ピクチャとの間の距離が互いに同一であると判断して、両方向の参照ピクチャ距離が同じであるかどうかの条件を満たすと判断できる。
6)現ブロックの長さ(Height)が閾値(臨界値)(threshold)より大きいかどうかに基づいて、DMVRを適用するかどうかを決定できる。例えば、現ブロックの長さが8以上の場合、現ブロックの大きさ(長さ)の条件を満たすと判断できる。
7)現ブロックの大きさが閾値(threshold)より大きいかどうかに基づいて、DMVRを適用するかどうかを決定できる。例えば、現ブロックの大きさ、すなわち長さ(Height)*幅(Width)が64以上の場合、現ブロックの大きさ(長さ*幅)の条件を満たすと判断できる。
デコード装置は、上記表2の条件1)ないし7)を満たすかどうかによってDMVRを適用するかどうかを決定できる。すなわち、デコード装置は、上記表2の条件1)ないし7)が全部満たされる場合に、DMVRを適用してtrue対予測を行うことができ、上記表2の条件のうちの一つでも満たされない場合にDMVRを適用しない。
次の表3は、従来のtrue対予測時にBDOFを適用するための条件を表したものである。以下に羅列した条件を全部満たすときにBDOFを適用できる。
上記表3を参照すると、1)SPS(Sequence Parameter Set)シンタックスにおいてシグナリングされるフラグ情報(例えば、sps_bdof_enabled_flag)に基づいて、BDOFを適用するかどうかを決定できる。ここで、フラグ情報(例えば、sps_bdof_enabled_flag)は、true対予測ベースBDOFが可能(enable)であるかどうかを表すことができる。例えば、sps_bdof_enabled_flagが1である場合(すなわち、true対予測ベースBDOFが可能な場合)、BDOF可能条件を満たすと判断できる。
2)両方向予測を使用しているかどうかに基づいて、BDOFを適用するかどうかを決定できる。ここで、両方向予測は、現ピクチャを基準に互いに異なる方向に存在する参照ピクチャに基づいて行われるインター予測を表すことができる。例えば、predFlagL0およびpredFlagL1が全部1の場合、両方向予測が適用されると判断でき、両方向予測条件を満たすと判断できる。
3)true対予測であるかどうかに基づいて、BDOFを適用するかどうかを決定できる。すなわち、現ピクチャを基準にL0参照ピクチャ(すなわち、参照ピクチャリストL0内の参照ピクチャ)とL1参照ピクチャ(すなわち、参照ピクチャリストL1内の参照ピクチャ)とが時間的に互いに異なる方向に位置するかどうかを判断できる。例えば、DiffPicOrderCnt(currPic、refPicList0[refIdxL0])*DiffPicOrderCnt(currPic、refPicList1[refIdxL1])が0より小さい場合、現ピクチャを基準に両方向の参照ピクチャが互いに異なる方向に位置すると判断して、true対予測であるかどうかの条件を満たすと判断できる。
4)アフィンモードが使用されるかどうかに基づいて、BDOFを適用するかどうかを決定できる。ここで、アフィンモードが使用されるかどうかは、MotionModelIdcを導出することによって判断できる。例えば、導出されたMotionModelIdcが0である場合、アフィンモードが使用されないと判断でき、この場合、アフィンモードを適用するかどうかの条件を満たすと判断できる。
5)マージモードにおけるインター予測がサブブロック単位で行われるかどうかを表すフラグ情報(例えば、merge_subblock_flag)に基づいて、BDOFを適用するかどうかを決定できる。例えば、merge_subblock_flagが0である場合(すなわち、サブブロック単位でマージモードが適用されない場合)、サブブロックベースマージモードであるかどうかの条件を満たすと判断できる。
6)GBiが存在しているかどうかに基づいて、BDOFを適用するかどうかを決定できる。ここで、GBiが存在しているかどうかは、GBiインデックス情報(例えば、GbiIdx)に基づいて判断できる。例えば、GbiIdxが0である場合(すなわち、GbiIdxがデフォルトの場合)、GBiであるかの条件を満たすと判断できる。
7)現ブロックがルマ(Luma)成分を含むルマブロックであるかどうかに基づいて、BDOFを適用するかどうかを決定できる。例えば、ルマブロックであるかを表すインデックス(例えば、cIdx)が0である場合(すなわち、ルマブロックである場合)、ルマブロックであるかどうかの条件を満たすと判断できる。
デコード装置は、上記表3の条件1)ないし7)を満たすかどうかによって、BDOFを適用するかどうかを決定できる。すなわち、デコード装置は、上記表3の条件1)ないし7)が全部満たされる場合にBDOFを適用して、true対予測を行うことができ、上記表3の条件のうちの一つでも満たされない場合にBDOFを適用しない。
ここで、上述したGBiは、L0予測およびL1予測に他の重み付け(weight)を適用できる一般的な対予測(generalized bi-prediction)を表すことができ、例えばGbiIdxを使用して表すことができる。GbiIdxは、対予測である場合に存在でき、対予測重み付けインデックス(bi-prediction weight index)を表すことができる。本文書における動き情報は、GbiIdxをさらに含むことができる。例えば、GbiIdxは、マージモードの場合に周辺ブロックから導き出されることができ、またはMVPモードの場合、GbiIdxシンタックス要素(例えば、gbi_idx)を介してエンコード装置からデコード装置へシグナリングされることができる。一例として、GbiIdxは、L1予測に適用される重み付けwを指示でき、この場合、L0予測には、(1-w)の重み付けが適用されることができる。他の例として、GbiIdxは、L0予測に適用される重み付けwを指示でき、この場合、L1予測には、(1-w)の重み付けが適用されることができる。GbiIdxが指す重み付けは、多様に構成されることができ、例えば次の表4および表5のように構成されることができる。
上記表4および上記表5を参照すると、w1の重み付けは、L1予測に適用される重み付けを表すことができ、GbiIdx値を介してL1予測に適用される重み付けw1を指示できる。例えば、表4の実施形態によれば、GbiIdxの値が0を表す場合、L1予測には、1/2の重み付けを適用し、L0予測には、(1-w1)の値である1/2の重み付けを適用できる。実施形態によって、w1の重み付けは、L0予測に適用される重み付けを表すこともでき、この場合、GbiIdx値を介してL0予測に適用される重み付けw1を指示できる。
上述したように、DMVRとBDOFとの適用条件は、一部は同一で、一部は似ているか、または異なる。従来の方式では、条件が同じ場合にも、各技術別に条件チェックを行うようになるので、対予測遂行のための複雑度が増加するようになる。そのため、本文書では、対予測のときにDMVRおよびBDOFを適用するための効率的な条件を提案する。
マージ/スキップモードは、AMVPモードと比較すると相対的に動き精度が低いので、DMVR方法を利用して動き情報をリファインすることが性能面において効果的である。しかしながら、BDOFモードは、DMVRとは異なり、マージ/スキップモードだけでなくAMVPモードのときにも適用されるが、このようにAMVPモードにおいてBDOFを適用する場合、性能に比べてBDOF遂行のための複雑度が増加できる。したがって、本実施形態では、DMVRと同様にBDOFの場合も、マージ/スキップモードにおいて適用する方式を提案する。
この場合、本文書において提案する一実施形態として、BDOFの適用条件は、次の表6に提示された条件を含むことができる。
上記表6を参照すると、マージモード/スキップモードを使用してインター予測を行うかどうかを表すフラグ情報(例えば、merge_flag)に基づいて、BDOFを適用するかどうかを決定できる。例えば、merge_flagが1である場合(すなわち、マージモード/スキップモードを使用してインター予測を行う場合)、マージモード/スキップモードを適用するかどうかの条件を満たすと判断できる。したがって、DMVRと同様にBDOFの場合も、マージ/スキップモードのときに適用されることができる。
すなわち、本実施形態では、上記マージ/スキップモードの場合に適用する条件と共に、BDOFが可能な場合に適用する条件、両方向予測の場合に適用する条件、true対予測の場合に適用する条件、アフィン予測でない場合に適用する条件、サブブロックベースマージモードでない場合に適用する条件、GBiインデックスがデフォルトの場合に適用する条件、ルマブロックの場合に適用する条件に基づいてBDOFを適用するかどうかを判断できる。
したがって、デコード装置は、上記表6に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表6に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表6の条件は、エンコード装置でも適用されることができ、エンコード装置では、(true対予測が)デコード装置と対応する方法で行われることができる。
上記表6において羅列した条件に基づいて、true対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、本実施形態において羅列した条件のうち、上記表2および表3において説明した条件と同じ場合には、具体的な動作または意味が同様に適用されるので、各条件に対する具体的な説明を省略する。また、後述する実施形態でも重複する内容は省略する。
エンコード/デコード装置の場合、多様なハードウェアを使用して構成されることができ、性能に対する複雑度の割合の選好が異なりうる。そのため、本実施形態では、マージ/スキップモードだけでなくAMVPモードでもDMVRを適用して、動き情報をリファインできる方式を提案する。
この場合、本文書において提案する一実施形態として、DMVRの適用条件は、次の表7に提示された条件を含むことができる。
上記表7を参照すると、マージモード/スキップモードを使用してインター予測を行うかどうかを表すフラグ情報(例えば、merge_flag)に基づいて、DMVRを適用するかどうかを決定する過程が省略されることができる。このように、マージモード/スキップモードを適用するかどうかの条件を省略することによって、マージモード/スキップモードの場合だけでなく、AMVPモードでもDMVRを適用できる。
上記表7によれば、DMVRが可能な場合に適用する条件、MMVDモードが使用されない場合に適用する条件、両方向予測の場合に適用する条件、現ピクチャと両方向参照ピクチャとの距離が互いに同じtrue対予測の場合に適用する条件、現ブロックの長さが8以上の場合に適用する条件、現ブロックの大きさ(長さ*幅)が64以上の場合に適用する条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表7に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表7に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表7の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表7において羅列した条件に基づいて、true対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、本文書の一実施形態として、DMVRおよびBDOFは、全て一般的なマージ(normal merge)モードに適用されることができる。すなわち、ATMVP(Advanced Temporal Motion Vector Prediction)モードではなく、アフィンモードではなく、CPRでない場合、DMVRおよびBDOFを適用できる。この場合、DMVRの適用条件は、次の表8に提示された条件を含むことができる。
上記表8を参照すると、アフィンモードが使用されない場合に適用する条件(例えば、MotionModelIdcが0である場合)、サブブロックベースマージモードでない場合に適用する条件(例えば、merge_subblock_flagが0である場合)を満たすかどうかを判断することで、DMVRを一般的なマージモードの場合に限り適用できる。
また、本実施形態では、上記アフィンモードが可能か否かの条件、サブブロックベースのマージモードが可能か否かの条件と共に、DMVRが可能な場合に適用する条件、マージモード/スキップモードの場合に適用する条件、MMVDモードが使用されない場合に適用する条件、両方向予測の場合に適用する条件、現ピクチャと両方向参照ピクチャとの距離が互いに同じtrue対予測の場合に適用する条件、現ブロックの長さが8以上の場合に適用する条件、現ブロックの大きさ(長さ*幅)が64以上の場合に適用する条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表8に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表8に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表8の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表8の適用条件のうち、サブブロックベースのマージモード適用が可能か否かの条件(例えば、merge_subblock_flag)は、従来のDMVR適用条件のうち、重複する条件を含んでいる。したがって、本文書の一実施形態として、サブブロックベースのマージモード適用が可能か否かの条件(例えば、merge_subblock_flag)と重複する条件を除去できる。この場合、次の表9に提案されるように該当条件が除去されることができる。
上記表9を参照すると、サブブロックベースマージモードは、現ブロックの大きさが8X8以上の場合に適用されることができる。したがって、サブブロックベースマージモード適用が可能か否かの条件(例えば、merge_subblock_flag=0)は、現ブロックの大きさと関連する条件を含んでいるので、従来のDMVRの適用条件のうち、現ブロックの大きさと関連する条件(例えば、CbHeight、CbHeight*CbWidth)を除外することができる。例えば、現ブロックの長さが8以上であるかどうかの条件、現ブロックの長さ*幅が64以上であるかどうかの条件は省略し、上記表9に羅列した残りの条件を利用してDMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表9に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表9に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表9の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表8または上記表9において羅列した条件に基づいて、true対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
本文書の一実施形態として、低複雑度において動きベクトルの精度を高めるために、ブロックの大きさが小さい場合には、DMVRおよびBDOFなどのリファイン技術を適用しないことができる。従来の方式では、現ブロックが8X8より大きいか、または同じブロックの場合にリファイン技術を適用しているが、このうち、DMVRの場合、現ブロックの大きさが大きいときに16X16単位で分けて リファインを適用するので、16X16より小さなブロックに対しては、DMVRを適用しないことができる。この場合、DMVRの適用条件は、次の表10に提示された条件を含むことができる。
上記表10を参照すると、現ブロックの大きさと関連する条件(例えば、CbHeight、CbWidth)を変更することによって、16X16より小さなブロックに対してDMVRを適用しないようにすることができる。例えば、現ブロックの長さ(例えば、CbHeight)が16以上の場合に適用する条件と現ブロックの幅(例えば、CbWidth)が16以上の場合に適用する条件とを使用することができる。このような現ブロックの大きさと関連する適用条件を満たした場合(すなわち、現ブロックの大きさが16X16以上の場合)DMVRを適用し、上記のような現ブロックの大きさと関連する適用条件を満たさない場合(すなわち、現ブロックの大きさが16X16より小さい場合)DMVRを適用しないことができる。
また、本実施形態では、現ブロックの大きさと関連する条件(例えば、CbHeight、CbWidth)と共に、上記表10において羅列した残りの適用条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表10に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表10に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表10の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
本文書の一実施形態として、現ブロックが16X16より小さなブロックの場合、DMVRだけでなくBDOFを適用しないことができる。この場合、BDOFの適用条件は、次の表11に提示された条件を含むことができる。
上記表11を参照すると、現ブロックの大きさと関連する条件(例えば、CbHeight、CbWidth)を変更することによって、16X16より小さなブロックに対してBDOFを適用しないようにすることができる。例えば、現ブロックの長さ(例えば、CbHeight)が16以上の場合に適用する条件と現ブロックの幅(例えば、CbWidth)が16以上の場合に適用する条件とを使用することができる。このような現ブロックの大きさと関連する適用条件を満たす場合(すなわち、現ブロックの大きさが16X16以上の場合)BDOFを適用し、上記のような現ブロックの大きさと関連する適用条件を満たさない場合(すなわち、現ブロックの大きさが16X16より小さい場合)、BDOFを適用しないことができる。
また、本実施形態では、現ブロックの大きさと関連する条件(例えば、CbHeight、CbWidth)と共に、上記表11において羅列した残りの適用条件に基づいて、BDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表11に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表11に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表11の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表10または上記表11において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
上述したように、DMVRは、現ピクチャと両方向の参照ピクチャとの間の距離が互いに同じ場合に適用するのに対し、BDOFは、現ピクチャと両方向の参照ピクチャとの間の距離が異なっても、true対予測である場合、常に適用される。したがって、本文書では、コーディング効率を上げるために、上記両方向の参照ピクチャ距離と関連する条件をDMVRとBDOFとに統一して適用できる方式を提案する。
本文書の一実施形態として、BDOFの適用条件は、次の表12に提示された条件を含むことができる。
上記表12を参照すると、BDOFの適用条件のうち、参照ピクチャ距離と関連する条件(例えば、DiffPicOrderCnt)を変更することによって、DMVRとBDOFとに該当条件を同様に適用できる。例えば、DiffPicOrderCnt(currPic、RefPicList0[refIdxL0])-DiffPicOrderCnt(currPic、RefPicList1[refIdxL1])が0であるかどうかを判断することで、現ピクチャとL0参照ピクチャ(すなわち、参照ピクチャリストL0内の参照ピクチャ)との間の距離と、現ピクチャとL1参照ピクチャ(すなわち、参照ピクチャリストL1内の参照ピクチャ)との間の距離と、が互いに同じであるかどうかを決定できる。すなわち、現ピクチャと両方向の参照ピクチャとの間の距離が互いに同じ場合に限ってBDOFを適用できる。このように、true対予測であり、かつ両方向の参照ピクチャ距離が同じという条件が追加されることによって、BDOF適用範囲が制限されるので、デコードの複雑度を低減できる。
また、本実施形態では、参照ピクチャ距離と関連する条件(例えば、DiffPicOrderCnt)と共に、上記表12において羅列した残りの適用条件に基づいてBDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表12に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表12に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表12の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
本文書の一実施形態として、DMVRの適用条件は、次の表13に提示された条件を含むことができる。
上記表13を参照すると、DMVRの適用条件のうち、参照ピクチャ距離と関連する条件(例えば、DiffPicOrderCnt)を変更することによって、DMVRとBDOFとに該当条件を同様に適用できる。例えば、DiffPicOrderCnt(currPic、refPicList0[refIdxL0])*DiffPicOrderCnt(currPic、refPicList1[refIdxL1])が0より小さいかどうかを判断することで、現ピクチャを基準に両方向の参照ピクチャ(すなわち、L0参照ピクチャおよびL1参照ピクチャ)が互いに異なる方向に位置するtrue対予測であるかどうかを決定できる。すなわち、現ピクチャと両方向の参照ピクチャとの間の距離が同一でなくても、true対予測である場合には、常にDMVRを適用できる。このように、true対予測が可能か否かという条件が適用されることによって、両方向の参照ピクチャ距離が異なる場合にも、デコードの複雑度を考慮して、導出された動きベクトルは、スケーリング(scaling)しないで使用することができる。
また、本実施形態では、参照ピクチャ距離と関連する条件(例えば、DiffPicOrderCnt)と共に、上記表13において羅列した残りの適用条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表13に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表13に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表13の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表12または上記表13において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、各参照ブロックは、光の変化などにより重み付き和(weighted sum)で動き補償を行う場合が発生し得る。このとき、GBiまたはLIC(Local Illumination Compensation)でその現象を把握できるので、GBiまたはLIC条件を考慮してDMVRおよびBDOFの適用条件を決めることができる。
本文書の一実施形態として、GBiおよびLIC条件を考慮してDMVRを適用するかどうかを決定する方式を提案する。この場合、DMVRの適用条件は、次の表14に提示された条件を含むことができる。
上記表14を参照すると、GBi条件(例えば、GbiIdx)およびLIC条件(例えば、LICFlag)を追加して、DMVRを適用するかどうかを決定できる。例えば、GbiIdxが0である場合(すなわち、GbiIdxがデフォルトの場合)、GBiが可能か否かの条件を満たすと決め、LICFlagが0である場合(すなわち、LICが存在する場合)、LICが可能か否かの条件を満たすと決めることができる。
また、本実施形態では、GBi条件(例えば、GbiIdx)およびLIC条件(例えば、LICFlag)と共に、上記表14に羅列した残りの適用条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表14に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表14に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表14の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
本文書の一実施形態として、GBiおよびLIC条件を考慮してBDOFを適用するかどうかを決定する方式を提案する。この場合、BDOFの適用条件は、次の表15に提示された条件を含むことができる。
上記表15によれば、従来のGBi条件(例えば、GbiIdx)と共にLIC条件(例えば、LICFlag)を追加して、BDOFを適用するかどうかを決定できる。例えば、GbiIdxが0である場合(すなわち、GbiIdxがデフォルトの場合)、GBiが可能か否かの条件を満たすと決め、LICFlagが0である場合(すなわち、LICが存在する場合)、LICが可能か否かの条件を満たすと決めることができる。
したがって、本実施形態では、GBi条件(例えば、GbiIdx)およびLIC条件(例えば、LICFlag)と共に、上記表15に羅列した残りの適用条件に基づいてBDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表15に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表15に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表15の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表14または上記表15において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、DMVRおよびBDOFは、デコード装置においてリファインメント過程を介して動き情報を導出するので、デコード複雑度の問題が発生する。したがって、本文書では、マージインデックスを使用してDMVRおよびBDOFを適用するかどうかを決定できるようにすることによって、デコード複雑度を減らすことができる方法を提案する。このとき、DMVRおよびBDOFは、全部制約的な範囲内で動きベクトルのリファインを行うので、動きベクトルが不正確な場合、リファインの効果が減ることができる。したがって、本文書では、リファインの効率を考慮してマージインデックスが表す値が小さい場合においてのみ制限的に適用できる方式を提案する。
ここで、マージインデックスは、エンコード装置からデコード装置へシグナリングされるシンタックス要素でありうる。例えば、エンコード/デコード装置は、現ブロックにマージモード/スキップモードが適用される場合、現ブロックの周辺ブロックに基づいてマージ候補リストを構成できる。このとき、エンコード装置は、RD(Rate-Distortion)costに基づいて、マージ候補リストに含まれるマージ候補のうちの最適なマージ候補を選択し、選択されたマージ候補を指すマージインデックス情報をデコード装置へシグナリングすることができる。デコード装置は、マージ候補リストおよびマージインデックス情報に基づいて、現ブロックに適用されるマージ候補を選択できる。
本文書の一実施形態として、マージインデックスを使用してDMVRを適用するかどうかを決定する方法は、次の表16に提示された条件を含むことができる。
上記表16を参照すると、マージインデックス条件(例えば、merge_idx)を追加して、DMVRを適用するかどうかを決定できる。例えば、マージインデックス(例えば、merge_idx)が2より小さい場合、マージインデックス条件を満たすと決めることができる。ここで、マージインデックスの値(threshold)を2に設定したが、これは、一つの例に過ぎず、コーディング効率によって、該当値は変更されることができる。
したがって、本実施形態では、マージインデックス条件(例えば、merge_idx)と共に、上記表16に羅列した残りの適用条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表16に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表16に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表165の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
本文書の一実施形態として、マージインデックスを使用してBDOFを適用するかどうかを決定する方法は、次の表17に提示された条件を含むことができる。
上記表17を参照すると、マージモード/スキップモードが可能か否かの条件(例えば、merge_flag)およびマージインデックス条件(例えば、merge_idx)を追加して、BDOFを適用するかどうかを決定できる。例えば、merge_flagが1で(すなわち、マージモード/スキップモードを使用してインター予測を行う場合)merge_idxが2以上であるケースに該当しなければ、マージインデックスの値が小さい場合においてのみ、制限的にBDOFを適用する条件を満たすと決めることができる。換言すれば、merge_flagが1で(すなわち、マージモード/スキップモードを使用してインター予測を行う場合)merge_idxが2より小さい場合、マージインデックス条件を満たすと判断しBDOFを適用できる。ここで、マージインデックスの値(threshold)を2に設定したが、これは、一つの例に過ぎず、コーディング効率によって、該当値は変更されることができる。
すなわち、本実施形態では、マージモード/スキップモードが可能か否かの条件(例えば、merge_flag)、マージインデックス条件(例えば、merge_idx)と共に、上記表17に羅列した残りの適用条件に基づいて、BDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表17に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表17に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表17の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表16または上記表17において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、マージ/スキップモードにおいてMMVDを介して動き情報をリファインできるが、この場合、デコーダの複雑度が増加するので、MMVDが適用されるときにDMVRを行わないようにしている。しかしながら、MMVDを考慮しないで適用される場合、性能向上を考慮してMMVD条件がなくてもDMVRを適用できる。この場合、本文書の一実施形態によれば、DMVRの適用条件は、次の表18に提示された条件を含むことができる。
上記表18を参照すると、従来のDMVRの適用条件のうち、MMVDモード適用が可能か否かの条件(例えば、mmvd_flag)を除外することができる。すなわち、mmvd_flagが0である場合(すなわち、MMVDモードを使用しない場合)であるかどうかを判断する過程を省略し、上記表17に羅列した条件に基づいてDMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、(MMVDモード適用が可能か否かの条件(例えば、mmvd_flag)を除いた)上記表18に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表18に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表18の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
また、上述した表18の実施形態と反対に、マージ/スキップモードにおいてMMVDを介して動き情報をリファインするとき、デコーダの複雑度を考慮してBDOFを行うかどうかを決定できる。したがって、本文書では、MMVD条件を考慮してBDOFを適用するかどうかを決定する方法を提案する。この場合、本文書の一実施形態によれば、BDOFの適用条件は、次の表19に提示された条件を含むことができる。
上記表19を参照すると、MMVDモード適用が可能か否かの条件(例えば、mmvd_flag)を追加することによって、MMVDを介して動き情報をリファインする場合、BDOFを適用しないことができる。例えば、mmvd_flagが0である場合(すなわち、MMVDモードを使用しない場合)、MMVDモードを適用するかどうかの条件を満たすと判断できる。
したがって、本実施形態では、MMVDモードの適用が可能か否かの条件(例えば、mmvd_flag)と共に、上記表19に羅列した残りの適用条件に基づいて、BDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表19に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表19に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表19の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表18または上記表19において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、AMVPモードであるとき、AMVR(Adaptive Motion Vector Resolution)技術が適用されることができる。このとき、動きベクトルの解像度(resolution)が大きい場合、すなわち、整数サンプル単位の丸め(ラウンディング)(integer-pel rounding)、4サンプル単位の丸め(4 integer-pel rounding)を有する場合、制限された領域内でリファインを行うBDOFの場合、このような技術を適用するのに適合しないことができる。したがって、本文書では、AMVR条件に応じてBDOFの遂行を決定できる方式を提案する。この場合、本文書の一実施形態によれば、BDOFの適用条件は、次の表20に提示された条件を含むことができる。
上記表20を参照すると、AMVR条件(例えば、amvr_flag)を追加してBDOFを適用するかどうかを決定できる。ここで、amvr_flagは、動きベクトル差(MVD)の解像度を表す情報でありうる。例えば、amvr_flagが0である場合、MVDの解像度が1/4サンプル(quarter-luma-sample)単位で導出されるのを表し、amvr_flagが0でない場合、整数サンプル(integer-luma-sample)単位または4サンプル(four-luma-sample)単位で導出されることを表すことができる。あるいは、その反対の場合に決められることもできる。実施形態によって、上記表20に提示されたように、amvr_flagが0でない場合、BDOFが適用される条件を設定できる。換言すれば、amvr_flagが0である場合、BDOFが適用されないように制限できる。
したがって、本実施形態では、AMVR条件(例えば、amvr_flag)と共に、上記表20に羅列した残りの条件に基づいて、BDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表20に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表20に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表20の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
一方、上述したようなDMVRおよびBDOFは、SPS(Sequence Parameter Set)シンタックスにおいて各々シグナリングされることができる。次の表21は、SPSシンタックスを介してシグナリングされる、DMVRが可能であるかどうかとBDOFが可能であるかどうかとを表すシンタックス要素の一例を示す。
上記表21を参照すると、SPSシンタックスにおいてsps_dmvr_enabled_flagをシグナリングでき、このシンタックス要素に基づいてtrue対予測ベースDMVRが可能(enable)であるかどうかを表すことができる。例えば、sps_dmvr_enabled_flagが1である場合、true対予測ベースDMVRが可能であることを表し、sps_dmvr_enabled_flagが0である場合、true対予測ベースDMVRが可能でないことを表すことができる。
また、SPSシンタックスにおいてsps_bdof_enabled_flagをシグナリングでき、このシンタックス要素に基づいてtrue対予測ベースBDOFが可能(enable)であるかどうかを表すことができる。例えば、sps_bdof_enabled_flagが1である場合、true対予測ベースBDOFが可能であることを表し、sps_bdof_enabled_flagが0である場合、true対予測ベースBDOFが可能でないことを表すことができる。
上記表21のように、DMVRが可能か否かを表すシンタックス要素(例えば、sps_dmvr_enabled_flag)とBDOFが可能か否かを表すシンタックス要素(例えば、sps_bdof_enabled_flag)とを利用して、DMVRおよびBDOFの適用条件をチェックできる。
図10は、DMVRおよびBDOFの適用条件をチェックして、デコード過程を行う方法を示す一例である。
図10の方法は、上記表21のようにDMVRが可能か否かを表すシンタックス要素(例えば、sps_dmvr_enabled_flag)とBDOFが可能か否かを表すシンタックス要素(例えば、sps_bdof_enabled_flag)とを利用する場合に適用されることができる。
図10を参照すると、デコード装置は、現ブロックに対する動き情報(例えば、動きベクトル、参照ピクチャインデックスなど)を導出できる(S1000)。
デコード装置は、DMVRの適用条件をチェックできる(S1010)。このとき、DMVRが可能か否かを表すシンタックス要素(例えば、sps_dmvr_enabled_flag)に基づいてDMVRの適用条件をチェックできる。例えば、DMVRが可能な場合(例えば、sps_dmvr_enabled_flagが1である場合)にDMVRの適用条件をチェックできる。
デコード装置は、DMVRの適用条件を満たすかどうかによって、DMVR過程を適用するかどうかを判断できる(S1020)。
DMVRの適用条件を全部満たす場合、デコード装置は、DMVR過程を適用してリファインされた動き情報を導き出すことができる(S1030)。DMVRの適用条件のうちの一つまたは複数を満たさない場合、デコード装置は、DMVR過程を適用しないことができる。
デコード装置は、DMVRを適用した場合に導き出されたリファインされた動き情報またはDMVRを適用しない場合に導き出された(リファインされない)動き情報に基づいて、現ブロックの予測サンプルを導出できる(S1040)。
そして、デコード装置は、BDOFの適用条件をチェックできる(S1050)。このとき、BDOFが可能か否かを表すシンタックス要素(例えば、sps_bdof_enabled_flag)に基づいて、BDOFの適用条件をチェックできる。例えば、BDOFが可能な場合(例えば、sps_bdof_enabled_flagが1である場合)にBDOFの適用条件をチェックできる。
BDOFの適用条件を全部満たした場合、デコード装置は、BDOF過程を適用して予測サンプルに対してリファインを行うことができる(S1070)。BDOFの適用条件のうちの一つまたは複数を満たさない場合、デコード装置は、BDOF過程を適用しないことができる。
デコード装置は、現ブロックに対する残差サンプルを導出し(S1080)、上記残差サンプルおよび上記BDOFを適用した場合に導き出されたリファインされた予測サンプルまたはBDOFを適用しない場合に導き出された(リファインされない)予測サンプルに基づいて復元されたサンプルを導出できる(S1090)。
本文書では、上述したように、DMVRとBDOFとを適用するにおいて相互間の適用条件を一致(harmonization)させてコーディング効率を向上させ、複雑度を減少させることができる多様な実施形態を提案する。このような本文書の実施形態によるDMVRおよびBDOFの適用条件をチェックしてデコード過程に適用するにおいて、各々の条件を別にチェックして適用することもできるが、コーディング効率を向上させるために一度に適用条件をチェックすることができる。すなわち、本文書では、DMVRとBDOFとの適用条件を一度に統合してチェックできる方式を提案する。
本文書の一実施形態として、SPS(Sequence Parameter Set)シンタックスにおいてデコード装置におけるリファイン適用が可能か否かを表す情報(例えば、sps_refinement_enabled_flag)をシグナリングすることで、DMVR/BDOFの適用条件チェック過程を行うことができる。次の表22は、SPSシンタックスを介してシグナリングされるデコード装置におけるリファイン適用が可能か否かを表すシンタックス要素(例えば、sps_refinement_enabled_flag)の一例を示す。
上記表22を参照すると、SPSシンタックスにおいてsps_refinement_enabled_flagをシグナリングでき、このシンタックス要素に基づいて、デコード装置におけるリファイン適用が可能であるかどうかを表すことができる。例えば、sps_refinement_enabled_flagが存在するとき(すなわち、sps_refinement_enabled_flagがtrueの場合)、デコード装置におけるリファイン適用が可能であると判断されることができる。この場合、デコード装置は、DMVRが可能(enable)であるかどうかを表すsps_dmvr_enabled_flagシンタックス要素およびBDOFが可能(enable)であるかどうかを表すsps_bdof_enabled_flagシンタックス要素を獲得して、DMVRおよびBDOFの適用条件を判断できる。
図11および図12は、DMVRおよびBDOFの適用条件をチェックしてデコード過程を行う方法を示す他の例である。
図11の方法および図12の方法は、上記表22のようにデコード装置におけるリファイン適用が可能であるかどうかを表すシンタックス要素(例えば、sps_refinement_enabled_flag)を利用する場合に適用されることができる。また、図11および図12において、上述した図10と重複する内容については説明を省略する。
図11を参照すると、上記図10の過程と比較して、DMVRおよびBDOFの適用条件を各々チェックせずに、前端において一度にチェックすることが分かる。一実施形態として、図11のステップS1110において、デコード装置は、リファイン適用条件をチェックできる。このとき、リファイン適用条件チェックは、上記表22のようなsps_refinement_enabled_flagに基づいて行われることができる。例えば、sps_refinement_enabled_flagが1である場合、DMVRが可能(enable)であるかどうかを表すsps_dmvr_enabled_flagシンタックス要素またはBDOFが可能(enable)であるかどうかを表すsps_bdof_enabled_flagシンタックス要素を獲得し、これに基づいてDMVRおよびBDOFの適用条件をチェックできる。
また、図12を参照すると、上記図10の過程と比較して、DMVRおよびBDOFの適用条件を各々チェックせずに、前端において一度にチェックするものの、他の条件に対しては、簡単なチェック過程(BDOFの適用条件)を行うことができる。一実施形態として、図12のステップS1210において、デコード装置は、リファイン適用条件をチェックできる。以後、図12のステップS1250において、デコード装置は、上記リファイン適用条件と異なる条件を有するBDOFの適用条件に対して、追加的に簡単にチェックを行うことができる。
一方、現ブロックの長さ(Height)または大きさ(Height*Width)が特定の長さまたは特定の大きさより小さい場合、動き補償(Motion Compensation)のためのmultiplication/additionの計算割合が増加するようになる。したがって、本文書の一実施形態では、worst caseを減らすために、DMVRの適用条件のように、小さな長さまたは小さな大きさのブロックに対してBDOFの適用を制限できる。この場合、BDOFの適用条件は、次の表23に提示された条件を含むことができる。
上記表23を参照すると、現ブロックの大きさと関連する条件(例えば、CbHeight、CbWidth)を追加することによって、特定の大きさより小さなブロックに対してBDOFを適用しないようにすることができる。例えば、現ブロックの長さ(例えば、CbHeight)が8以上の場合に適用する条件と、現ブロックの大きさ(例えば、CbHeight*CbWidth)が64以上の場合に適用する条件を使用することができる。このような現ブロックの大きさと関連する適用条件を満たす場合(すなわち、現ブロックの長さが8以上で現ブロックの長さ*幅が64以上の場合)、BDOFを適用し、上記のような現ブロックの大きさと関連する適用条件を満たさない場合、BDOFを適用しないことができる。
また、本実施形態では、現ブロックの大きさと関連する条件(例えば、CbHeight、CbHeight*CbWidth)と共に、上記表23において羅列した残りの適用条件に基づいて、BDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表23に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表23に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表23の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
一方、現ブロックにMMVDが適用される場合、MMVDに関する情報(例えば、mmvdindex)に基づいて動き情報を導出できる。ここで、MMVDに関する情報は、ベース(base)MVのインデックス、距離インデックス(distance index)、方向インデックス(direction index)などを含むことができる。特に、距離インデックス(より具体的には、mmvd_distance_index[xCb][yCb])は、ベースMVとの距離を表すために用いられるが、例えば、距離インデックス0ないし7は、各々{1/4、1/2、1、2、4、8、16、32}などで表すことができる。DMVRおよびBDOFにおいて動き情報のリファインメントを決定するにおいて、隣接ピクセル(隣接サンプル)を考慮してリファインメントが可能か否かを決定するが、このとき、隣接ピクセルとベースMVとの距離が遠い場合、距離インデックスの値も大きくなる。このような場合、隣接ピクセルを考慮することがDMVRおよびBDOFの性能向上に役立つことが困難である。したがって、本文書では、距離インデックス(より具体的には、mmvd_distance_index[xCb][yCb])値に応じて、DMVRおよびBDOFを適用するかどうかを決定できる方式を提案する。
本文書の一実施形態として、距離インデックスを考慮してDMVRを適用するかどうかを決定でき、この場合、DMVRの適用条件は、次の表24に提示された条件を含むことができる。
上記表24を参照すると、DMVRの適用条件のうち、MMVDと関連する条件(例えば、mmvd_flag)を変更することによって、MMVDモードのときに制限的にDMVRを適用できる。例えば、mmvd_flagが1でmmvd_distance_indexが4より大きい場合、MMVDの距離インデックス条件を満たすと決めることができる。したがって、MMVDモードが適用されるときに距離インデックス(例えば、mmvd_distance_index[xCb][yCb])値に応じてDMVRを適用するかどうかを決定できる。
ここで、mmvd_distance_indexのための閾値(threshold)を4に設定したが、これは、一つの例に過ぎず、性能およびコーディング効率に応じて多様な数値に変更されることができる。
したがって、本実施形態では、MMVD適用が可能か否かの条件(例えば、mmvd_flag)、MMVDの距離インデックスの条件(例えば、mmvd_distance_index)と共に、上記表24に羅列した残りの適用条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表24に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表24に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表24の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
また、本文書の一実施形態として、距離インデックスを考慮してBDOFを適用するかどうかを決定でき、この場合、BDOFの適用条件は、次の表25に提示された条件を含むことができる。
上記表25を参照すると、マージモード/スキップモードが可能か否かの条件(例えば、merge_flag)、MMVDと関連する条件(例えば、mmvd_flag、mmvd_distance_index)を追加することによって、MMVDモードのときに制限的にBDOFを適用できる。例えば、merge_flagが存在しないか(すなわち、merge_flagが1でない場合)、またはmerge_flagが1でmmvd_flagが1でmmvd_distance_indexが4より大きい場合、MMVDモードのときに制限的にBDOFを適用する条件を満たすと決めることができる。したがって、MMVDモードが適用されるときに距離インデックス(例えば、mmvd_distance_index[xCb][yCb])値に応じてBDOFを適用するかどうかを決定できる。
ここで、mmvd_distance_indexのための閾値(threshold)を4に設定したが、これは、一つの例に過ぎず、性能およびコーディング効率に応じて多様な数値に変更できる。
したがって、本実施形態では、マージモード/スキップモードが可能か否かの条件(例えば、merge_flag)、MMVDと関連する条件(例えば、mmvd_flag、mmvd_distance_index)と共に、上記表25に羅列した残りの適用条件に基づいて、BDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表25に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表25に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表25の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表24または上記表25において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、上述したように、現ブロックにイントラ予測とインター予測とを同時に行うCIIP(Combined Intra-Inter Prediction)モードが適用されることができる。この場合、インター予測が行われた予測ブロック(インターブロック)は、イントラ予測方法と結合(combine)されて最終的に予測サンプル値が生成されるので、予測精度が向上することができる。しかしながら、DMVRおよびBDOFは、インターブロックに対してリファインする技術であるから、複雑度対性能においてCIIPモードの適用が必要でないことができる。したがって、本文書では、CIIPを考慮してDMVRおよびBDOFを適用するかどうかを決定できる方式を提案する。
本文書の一実施形態として、CIIPを考慮してDMVRを適用するかどうかを決定でき、この場合、DMVRの適用条件は、次の表26に提示された条件を含むことができる。
上記表26を参照すると、CIIPモード適用が可能か否かの条件(例えば、ciip_flag)を追加することによって、CIIP適用が可能か否かによってDMVRを制限的に適用できる。例えば、ciip_flagが0である場合(すなわち、CIIPモードが適用されない場合)、CIIPモードを適用するかどうかの条件を満たすと判断してDMVRを適用できる。
したがって、本実施形態では、CIIPモード適用が可能か否かの条件(例えば、ciip_flag)と共に、上記表26に羅列した残りの適用条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表26に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表26に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表26の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
また、本文書の一実施形態として、CIIPを考慮してBDOFを適用するかどうかを決定でき、この場合、BDOFの適用条件は、次の表27に提示された条件を含むことができる。
上記表27を参照すると、CIIPモード適用が可能か否かの条件(例えば、ciip_flag)を追加することによって、CIIP適用が可能か否かによってBDOFを制限的に適用できる。例えば、ciip_flagが0である場合(すなわち、CIIPモードが適用されない場合)、CIIPモードを適用するかどうかの条件を満たすと判断してBDOFを適用できる。
したがって、本実施形態では、CIIPモード適用が可能か否かの条件(例えば、ciip_flag)と共に、上記表27に羅列した残りの適用条件に基づいてBDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表27に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表27に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表27の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表26または上記表27において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
上述した本文書の実施形態による表6ないし表27において羅列した方法は、組み合わせて適用されることができる。すなわち、リファイン適用条件をチェックすることによって、DMVRおよびBDOFを適用するかどうかを判断でき、次の表28のような条件を適用できる。
上記表28を参照すると、DMVRまたはBDOFが適用されるときに両方向予測の場合に適用する条件、現ピクチャと両方向参照ピクチャとの距離が互いに同じtrue対予測の場合に適用する条件、MMVDモードが使用されない場合に適用する条件、アフィン予測でない場合に適用する条件、サブブロックベースマージモードでない場合に適用する条件、GBiインデックスがデフォルトの場合に適用する条件を利用できる。すなわち、上記条件を満たすかどうかによってDMVRまたはBDOFを適用するかどうかを判断できる。
また、上述したようにDMVRのためにマージモードであるかどうかを判断するか、またはBDOFのためにルマブロックであるかどうかを判断するなどの条件が追加されることができる。
上記表28において羅列した適用条件は、一つの例であり、前述した実施形態(上記表6ないし表27の実施形態)において羅列した多様な条件を組み合わせて使用されうることは自明である。
一方、DMVRでは、デコード複雑度を考慮してMRSAD(Mean-Removed SAD)関数の代わりに、SAD関数をコスト関数として採択している。しかしながら、GBiインデックスがデフォルト(例えば、GbiIdxが0である場合)でない場合、二つの参照ブロックが互いに異なる重み付け(weighting factor)を有することができるから、SADを使用するDMVRは好ましくないことがある。したがって、GBiインデックスを考慮してDMVRの条件が固定されることがある。実験結果によれば、VTM4.0(VVC Test Model)と比較して、100%エンコードおよびデコードランタイム(run-time)で0.00%RD-rateの変化が現れた。
VVC(Versatile Video Coding)の場合、DMVR過程は、次の表29に羅列した条件が全部満たされるときに行われることができる。
現在のDMVRは、後に重み付き平均が導出される参照ブロックのSADを比較して、マッチングしないブロックを検索できる。本文書では、二つの参照ブロックが互いに異なる重み付けを有することができるから、このような場合を考慮してDMVRの条件を決めることができる。本文書の一実施形態によれば、GBiインデックスがデフォルトでないブロックに対しては、DMVRを行わないようにすることができる。この場合、DMVRの適用条件は、次の表30の通りでありうる。
上記表30のように、GBiインデックス(例えば、GbiIdx)の値が0である場合、DMVRを行う条件を追加できる。換言すれば、GBiインデックス(例えば、GbiIdx)の値が0でない場合には、二つの参照ブロック(すなわち、L0予測のため参照される参照ブロックおよびL1予測のため参照される参照ブロック)に互いに異なる重み付けが適用されるから、この場合、DMVRを行わないように制限できる。
一方、BDOFは、現ブロック(すなわち、現コーディングユニット;現CU)がtrue対予測条件を満たす場合に行われる。オプティカルフローの数式(optical flow equation)は、一定の速度(すなわち、運動量)で動くオブジェクトの動きを予測するために設計されたという点を考慮するとき、現在のtrue対予測条件は、BDOFを適用するための最適な条件ではない。したがって、参照ピクチャの距離を考慮してBDOFの条件が固定されることができる。実験結果によれば、VTM4.0(VVC Test Model)と比較して、100%エンコードおよびデコードランタイム(run-time)で0.01%RD-rateの変化が現れた。
図13は、BDOFの概念を説明するために示す図である。
上述したように、BDOFは、オプティカルフローの概念を使用して動き補償(motion compensation)の性能を向上させるように設計された。BDOFによれば、図13に示すように、オブジェクトが一定の速度(一定の動き)で動き、また、オブジェクトが動く間に各ピクセルの輝度は変わらないと仮定することができる。このような仮定をする場合、オプティカルフローの数式は、次の式7のように表すことができる。
上述したように、現CUがtrue対予測条件を満たす場合にBDOFが行われる。しかしながら、このtrue対予測条件は、オブジェクトが一定の速度で動く場合を意味するのではない。したがって、本文書では、オブジェクトが一定の動きを有する場合に、BDOFを適用できるようにする方式を提案し、動き補償の性能を向上させることができるようにする。
本文書の一実施形態によれば、上記式7においてδtとして現ピクチャを基準にL0参照ピクチャ(図13のReference0)との距離とL1参照ピクチャ(図13のReference1)との距離とが互いに同じ場合、BDOFを適用できる。この場合、BDOFの適用条件は、次の表31のように変更されることができる。
上記表31を参照すると、BDOFの適用条件のうち、参照ピクチャ距離と関連する条件(例えば、DiffPicOrderCnt)を変更することによって、一定の動き速度を有した場合に限定してBDOFを適用できる。例えば、DiffPicOrderCnt(currPic、RefPicList[0][refIdxL0])とDiffPicOrderCnt(RefPicList[1][refIdxL1]、currPic)とが同一であるかどうかを判断することで、現ピクチャとL0参照ピクチャ(すなわち、参照ピクチャリストL0内の参照ピクチャ)との間の距離と、現ピクチャとL1参照ピクチャ(すなわち、参照ピクチャリストL1内の参照ピクチャ)との間の距離と、が互いに同じであるかどうかを判断できる。すなわち、現ピクチャを基準にL0参照ピクチャとの距離とL1参照ピクチャとの距離とが互いに同じ場合に限って、BDOFを適用できる。このように、現ピクチャを基準に両方向の参照ピクチャ距離が同じという条件が使用されることによって、true対予測であり、かつ一定速度で動いているオブジェクトを含んでいるブロックであるかどうかを判別できる。このような条件を満たすブロックに対してBDOFを適用することによって、より向上した動き情報リファインメントの結果を得ることができる。
また、本実施形態では、参照ピクチャ距離と関連する条件(例えば、DiffPicOrderCnt)と共に、上記表31において羅列した残りの適用条件に基づいてBDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表31に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表31に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表31の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
一方、本文書は、ブロックの大きさに応じてBDOFを適用するかどうかを決定する方式を提案する。次の表32は、本文書の一実施形態によるブロックの大きさの制限を適用条件として含む場合を表す。
上記表32を参照すると、BDOFを適用するにおいて、現ブロックの長さ(例えば、CbHeight)が8以上の場合、現ブロックの大きさ(長さ*幅)(例えば、CbHeight*CbWidth)が64以上の場合を条件として追加できる。
したがって、本実施形態では、現ブロックの長さが8以上である条件、現ブロックの長さ*幅が64以上である条件と共に、上記表32に羅列した残りの適用条件に基づいてBDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表32に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表32に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表32の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
本文書において前述されたDMVR過程は、次の表32のようなスペック(spec)によって具現されることができる。次の表33は、本文書の一実施形態としてSADに基づく動きベクトルリファインメント過程の一例を示す。
一方、上述したように、DMVRでは、デコード複雑度を考慮してMRSAD(Mean-Removed SAD)関数の代わりにSAD関数をコスト関数として採択している。しかしながら、GBiインデックスがデフォルト(例えば、GbiIdxが0である場合)ではなく、明示的重み付き予測(explicit weighted prediction)による重み付けフラグ(weighting flag)が0でない場合、SADを使用するDMVRは、好ましくないことがある。したがって、GBiインデックスと明示的重み付き予測の重み付けフラグとを考慮して、DMVRの条件が固定されることができる。また、BDOFにも同じ条件が適用されることができる。実験結果によれば、VTM4.0(VVC Test Model)と比較して、100%エンコードおよびデコードランタイム(run-time)で0.00%RD-rateの変化が現れた。
現在のDMVRは、後に重み付き平均が導出される参照ブロックのSADを比較して、マッチングしないブロックを検索できる。本文書では、二つの参照ブロックが互いに異なる重み付けを有することができるから、このような場合を考慮してDMVRの条件を決めることができる。本文書の一実施形態によれば、GBiインデックスがデフォルトでないブロックに対しては、DMVRを行わないようにすることができる。また、明示的重み付き予測による重み付けフラグが0でないブロックに対しては、DMVRを行わないようにすることができる。
本文書の一実施形態では、重み付き対予測が可能か否かを考慮してDMVRを適用するかどうかを決定できる方式を提案する。この場合、DMVRの適用条件は、次の表34に提示された条件を含むことができる。
上記表34を参照すると、L0予測およびL1予測に対して明示的に重み付け適用が可能か否かを表す条件(例えば、luma_weight_l0_flag、luma_weight_l1_flag)、L0予測およびL1予測に適用される重み付けを表すインデックス条件(例えば、GbiIdx)を追加することによって、重み付き対予測が可能か否かによってDMVRを適用するかどうかを決定できる。
例えば、L0予測に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、luma_weight_l0_flag)およびL1予測に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、luma_weight_l1_flag)に基づいて、現ブロックに明示的重み付き予測が適用されるかどうかを判断できる。すなわち、luma_weight_l0_flagの値が0でluma_weight_l1_flagの値が0である場合、制限的にDMVRを適用できる。換言すれば、L0およびL1予測に対して明示的に重み付き予測を適用しない場合、DMVRを適用すると決定できる。
また、L0予測およびL1予測に適用される重み付けを表す対予測重み付けインデックス(例えば、GbiIdx)の値に基づいて、現ブロックに互いに異なる重み付けを使用する対予測(すなわち、L0予測およびL1予測)が適用されるかどうかを判断できる。すなわち、対予測重み付けインデックス(例えば、GbiIdx)の値が0である場合は、上記表4の実施形態において説明したように、L0予測およびL1予測に互いに異なる重み付けが適用されないデフォルトの場合でありうる。したがって、対予測重み付けインデックス(例えば、GbiIdx)の値が0のとき、制限的にDMVRを適用できる。
実施形態によって、L0およびL1予測に対して明示的に重み付き予測を適用しない場合(luma_weight_l0_flagの値が0でluma_weight_l1_flagの値が0である場合)、対予測重み付けインデックス(例えば、GbiIdx)情報をさらに獲得して、対予測重み付けインデックス(例えば、GbiIdx)の値が0であるかどうかを判断できる。
本実施形態においては、L0予測およびL1予測に対して明示的に重み付け適用が可能か否かを表す条件(例えば、luma_weight_l0_flag、luma_weight_l1_flag)、L0予測およびL1予測に適用される重み付けを表すインデックス条件(例えば、GbiIdx)と共に、上記表34に羅列した残りの条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表34に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表34に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表34の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
一方、BDOFの場合、GBiインデックスは考慮されているが、明示的重み付き予測の重み付けフラグは、考慮されていない。したがって、本文書では、BDOFに対しても、GBiインデックスおよび明示的重み付き予測の重み付けフラグを考慮して適用するかどうかを決定する方式を提案する。
本文書の一実施形態として、重み付き対予測が可能か否かを考慮してBDOFを適用するかどうかを決定できるようにし、この場合、BDOFの適用条件は、次の表35に提示された条件を含むことができる。
上記表35を参照すると、L0予測およびL1予測に対して明示的に重み付け適用が可能か否かを表す条件(例えば、luma_weight_l0_flag、luma_weight_l1_flag)を追加することによって、重み付き対予測が可能か否かによってBDOFを適用するかどうかを決定できる。
例えば、L0予測に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、luma_weight_l0_flag)およびL1予測に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、luma_weight_l1_flag)に基づいて、現ブロックに明示的重み付き予測が適用されるかどうかを判断できる。すなわち、luma_weight_l0_flagの値が0でluma_weight_l1_flagの値が0である場合、制限的にBDOFを適用できる。換言すれば、L0およびL1予測に対して明示的に重み付き予測を適用しない場合、BDOFを適用すると決定できる。
本実施形態においては、L0予測およびL1予測に対して明示的に重み付け適用が可能か否かを表す条件(例えば、luma_weight_l0_flag、luma_weight_l1_flag)と共に、上記表35に羅列した残りの条件に基づいて、BDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表35に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表35に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表35の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表34または上記表35において羅列した条件に基づいて、true対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
上述したように、GBiインデックスだけでなく明示的重み付き予測の重み付き因子(weight factor)を考慮して、DMVRおよびBDOFを適用するかどうかを判断できる。このとき、明示的重み付き予測の適用が可能か否かを判断するために、luma_weight_lX_flag(ここで、Xは、0または1)を利用して、ルマ成分に対して重み付き予測が可能か否かを考慮したが、クロマ成分に対しても重み付き予測が可能か否かを考慮することができる。したがって、本文書では、ルマ成分の重み付き因子だけでなく、クロマ成分の重み付き因子を共に考慮してDMVRおよびBDOFを適用するかどうかを判断する方式を提案する。
本文書の一実施形態として、現ブロックのルマ成分およびクロマ成分に対して明示的重み付き予測の重み付き因子を考慮して、DMVRを適用するかどうかを決定でき、この場合、DMVRの適用条件は、次の表36に提示された条件を含むことができる。
上記表36を参照すると、L0予測のルマ成分(ルマ予測値)およびL1予測のルマ成分(ルマ予測値)に対して明示的に重み付け適用が可能か否かを表す条件(例えば、luma_weight_l0_flag、luma_weight_l1_flag)、L0予測のクロマ成分(クロマ予測値)およびL1予測のクロマ成分(クロマ予測値)に対して明示的に重み付け適用が可能か否かを表す条件(例えば、chroma_weight_l0_flag、chroma_weight_l1_flag)、L0予測およびL1予測に適用される重み付けを表すインデックス条件(例えば、GbiIdx)を追加することによって、ルマおよびクロマ成分の両方に対して重み付け(すなわち、重み付き因子)が明示的に適用されない場合に限って、制限的にDMVRを適用するようにすることができる。
例えば、L0予測のルマ成分(ルマ予測値)に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、luma_weight_l0_flag)およびL1予測のルマ成分(ルマ予測値)に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、luma_weight_l1_flag)に基づいて、現ブロックのルマ成分に対して明示的重み付き予測の重み付き因子が適用されるかどうかを判断できる。
また、L0予測のクロマ成分(クロマ予測値)に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、chroma_weight_l0_flag)およびL1予測のクロマ成分(クロマ予測値)に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、chroma_weight_l1_flag)に基づいて、現ブロックのクロマ成分に対して明示的重み付き予測の重み付き因子が適用されるかどうかを判断できる。
すなわち、luma_weight_l0_flagの値が0でluma_weight_l1_flagの値が0である場合、ルマ成分に対して明示的に重み付き因子が存在しないと判断でき、chroma_weight_l0_flagの値が0でchroma_weight_l1_flagの値が0である場合、クロマ成分に対して明示的に重み付き因子が存在しないと判断できる。このようにルマ成分およびクロマ成分ともに対して明示的重み付き因子が存在しない場合、制限的にDMVRを適用できる。
また、L0予測およびL1予測に適用される重み付けを表す対予測重み付けインデックス(例えば、GbiIdx)の値に基づいて、現ブロックに互いに異なる重み付けを使用する対予測(すなわち、L0予測およびL1予測)が適用されるかどうかを判断できる。すなわち、対予測重み付けインデックス(例えば、GbiIdx)の値が0である場合は、上記表4の実施形態において説明したように、L0予測およびL1予測に互いに異なる重み付けが適用されないデフォルトの場合でありうる。したがって、対予測重み付けインデックス(例えば、GbiIdx)の値が0のとき、制限的にDMVRを適用できる。
実施形態によって、ルマ成分のL0およびL1予測に対して明示的に重み付き予測を適用しない場合(luma_weight_l0_flagの値が0でluma_weight_l1_flagの値が0である場合)、ならびにクロマ成分のL0およびL1予測に対して明示的に重み付き予測を適用しない場合(chroma_weight_l0_flagの値が0でchroma_weight_l1_flagの値が0である場合)、対予測重み付けインデックス(例えば、GbiIdx)情報をさらに獲得して、対予測重み付けインデックス(例えば、GbiIdx)の値が0であるかどうかを判断できる。
本実施形態においては、ルマ成分のL0予測およびL1予測に対して明示的に重み付け適用が可能か否かを表す条件(例えば、luma_weight_l0_flag、luma_weight_l1_flag)、クロマ成分のL0予測およびL1予測に対して明示的に重み付け適用が可能か否かを表す条件(例えば、chroma_weight_l0_flag、chroma_weight_l1_flag)、L0予測およびL1予測に適用される重み付けを表すインデックス条件(例えば、GbiIdx)と共に、上記表36に羅列した残りの条件に基づいて、DMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表36に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表36に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表36の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
また、本文書の一実施形態として、現ブロックのルマ成分およびクロマ成分に対して、明示的重み付き予測の重み付き因子を考慮して、BDOFを適用するかどうかを決定でき、この場合、BDOFの適用条件は、次の表37に提示された条件を含むことができる。
上記表37を参照すると、L0予測のルマ成分(ルマ予測値)およびL1予測のルマ成分(ルマ予測値)に対して明示的に重み付け適用が可能か否かを表す条件(例えば、luma_weight_l0_flag、luma_weight_l1_flag)、L0予測のクロマ成分(クロマ予測値)およびL1予測のクロマ成分(クロマ予測値)に対して明示的に重み付け適用が可能か否かを表す条件(例えば、chroma_weight_l0_flag、chroma_weight_l1_flag)を追加することによって、ルマおよびクロマ成分の両方に対して重み付け(すなわち、重み付き因子)が明示的に適用されない場合に限って、制限的にBDOFを適用するようにすることができる。
例えば、L0予測のルマ成分(ルマ予測値)に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、luma_weight_l0_flag)の値が0で、L1予測のルマ成分(ルマ予測値)に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、luma_weight_l1_flag)の値が0である場合、現ブロックのルマ成分に対するL0予測およびL1予測の重み付き因子が明示的に存在しないと判断できる。
また、L0予測のクロマ成分(クロマ予測値)に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、chroma_weight_l0_flag)の値が0で、L1予測のクロマ成分(クロマ予測値)に対して明示的に重み付けを適用するかどうかを表すフラグ情報(例えば、chroma_weight_l1_flag)の値が0である場合、現ブロックのクロマ成分に対するL0予測およびL1予測の重み付き因子が明示的に存在しないと判断できる。
このようにルマ成分およびクロマ成分の両方に対してL0予測およびL1予測のときの重み付き因子が存在しない場合、制限的にBDOFを適用できる。
本実施形態においては、ルマ成分のL0予測およびL1予測に対して明示的に重み付け適用が可能か否かを表す条件(例えば、luma_weight_l0_flag、luma_weight_l1_flag)、クロマ成分のL0予測およびL1予測に対して明示的に重み付け適用が可能か否かを表す条件(例えば、chroma_weight_l0_flag、chroma_weight_l1_flag)と共に、上記表37に羅列した残りの条件に基づいて、BDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表37に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表37に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表37の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表36または上記表37において羅列した条件に基づいて、true対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、上述したように、本文書の実施形態によれば、明示的重み付き予測を考慮してDMVRおよびBDOFを適用するかどうかを判断できる。このとき、明示的重み付き予測の適用が可能か否かを判断するために、スライスの種類を考慮することができる。したがって、本文書では、スライスの種類とそれに応じた重み付き予測の適用が可能か否かを考慮して、DMVRおよびBDOFを適用するかどうかを判断する方式を提案する。
本文書の一実施形態として、現在スライスの種類に応じて重み付き予測の適用が可能か否かを表すフラグ情報を利用して、DMVRおよびBDOFを適用するかどうかを判断できる。ここで、現在スライスの種類に応じて重み付き予測の適用が可能か否かを表すフラグ情報は、PPS(Picture Parameter Set)またはSPS(Sequence Parameter Set)シンタックスを介してエンコード装置からデコード装置へシグナリングされることができる。一例として、次の表38は、PPSシンタックスを介してシグナリングされる上記フラグ情報を示す。
上記表38を参照すると、weighted_pred_flagおよびweighted_bipred_flagがエンコード装置からデコード装置へシグナリングされることができる。ここで、weighted_pred_flagは、重み付き予測がPスライスに適用されるかどうかを表す情報で、weighted_bipred_flagは、重み付き予測がBスライスに適用されるかどうかを表す情報でありうる。
例えば、weighted_pred_flagの値が0である場合、重み付き予測がPスライスに適用されないことを表し、weighted_pred_flagの値が1である場合、重み付き予測がPスライスに適用されることを表すことができる。また、weighted_bipred_flagの値が0である場合、重み付き予測がBスライスに適用されないことを表し、weighted_bipred_flagの値が1である場合、重み付き予測がBスライスに適用されることを表すことができる。
ここで、Pスライス(Predictive slice)とは、一つの動きベクトルおよび参照ピクチャインデックスを利用したインター予測(端)に基づいてデコードされるスライスを意味できる。Bスライス(bi-predictive slice)とは、一つまたは複数、例えば二つの動きベクトルおよび参照ピクチャインデックスを利用したインター予測に基づいてデコードされるスライスを意味できる。
本文書の一実施形態として、重み付き予測がPスライスに適用されるかどうかを表すフラグ情報(例えば、weighted_pred_flag)および重み付き予測がBスライスに適用されるかどうかを表すフラグ情報(例えば、weighted_bipred_flag)に基づいて、DMVRを適用するかどうかを決定でき、この場合、DMVRの適用条件は、次の表39に提示された条件を含むことができる。
上記表39を参照すると、重み付き予測がPスライスに適用されるかどうかを表す条件(例えば、weighted_pred_flag)、重み付き予測がBスライスに適用されるかどうかを表す条件(例えば、weighted_bipred_flag)、L0予測およびL1予測に適用される重み付けを表すインデックス条件(例えば、GbiIdx)を追加することによって、PスライスおよびBスライスに対して重み付き予測が適用されない場合に限って、制限的にDMVRを適用するようにすることができる。
例えば、weighted_pred_flagの値が1であり、かつPスライスでない場合、またweighted_bipred_flagの値が1であり、かつBスライスでない場合、DMVRを適用できる。換言すれば、Pスライスに重み付き予測が適用されないでBスライスに重み付き予測が適用されない場合、DMVRを適用すると判断できる。
また、L0予測およびL1予測に適用される重み付けを表す対予測重み付けインデックス(例えば、GbiIdx)の値に基づいて、現ブロックに互いに異なる重み付けを使用する対予測(すなわち、L0予測およびL1予測)が適用されるかどうかを判断できる。すなわち、対予測重み付けインデックス(例えば、GbiIdx)の値が0である場合は、上記表4の実施形態において説明したように、L0予測とL1予測とに互いに異なる重み付けが適用されないデフォルトの場合でありうる。したがって、対予測重み付けインデックス(例えば、GbiIdx)の値が0のとき、制限的にDMVRを適用できる。
本実施形態では、重み付き予測がPスライスに適用されるかどうかを表す条件(例えば、weighted_pred_flag)、重み付き予測がBスライスに適用されるかどうかを表す条件(例えば、weighted_bipred_flag)、L0予測およびL1予測に適用される重み付けを表すインデックス条件(例えば、GbiIdx)と共に、上記表39に羅列した残りの条件に基づいてDMVRを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表39に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表39に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表39の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
また、本文書の一実施形態として、重み付き予測がPスライスに適用されるかどうかを表すフラグ情報(例えば、weighted_pred_flag)および重み付き予測がBスライスに適用されるかどうかを表すフラグ情報(例えば、weighted_bipred_flag)に基づいて、BDOFを適用するかどうかを決定でき、この場合、BDOFの適用条件は、次の表40に提示された条件を含むことができる。
上記表40を参照すると、重み付き予測がPスライスに適用されるかどうかを表す条件(例えば、weighted_pred_flag)、重み付き予測がBスライスに適用されるかどうかを表す条件(例えば、weighted_bipred_flag)を追加することによって、PスライスおよびBスライスに対して重み付き予測が適用されない場合に限って、制限的にBDOFを適用するようにすることができる。
例えば、weighted_pred_flagの値が1であり、かつPスライスでない場合、またweighted_bipred_flagの値が1であり、かつBスライスでない場合、BDOFを適用できる。換言すれば、Pスライスに重み付き予測が適用されないで、Bスライスに重み付き予測が適用されない場合、BDOFを適用すると判断できる。
本実施形態では、重み付き予測がPスライスに適用されるかどうかを表す条件(例えば、weighted_pred_flag)、重み付き予測がBスライスに適用されるかどうかを表す条件(例えば、weighted_bipred_flag)と共に、上記表40に羅列した残りの条件に基づいてBDOFを適用するかどうかを判断できる。
すなわち、デコード装置は、上記表40に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表40に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表40の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表39または上記表40において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
一方、ブロックサイズによって対予測(bi-prediction)または単予測(uni-prediction)を行うかどうかを決定できる。例えば、現ブロックのサイズが小さい場合(例えば、4x8または8x4の大きさのブロック)には、単予測だけが可能なように制限し、現ブロックのサイズが大きい場合には、対予測を可能にすることができる。このようにブロックサイズが小さい場合、単予測だけを行うように制限する場合、対予測である場合に行われるDMVRおよびBDOFもやはり、単予測時に制限されるブロックサイズを考慮しなければならない。例えば、現ブロックの大きさが4x8または8x4の場合、単予測だけが可能なように制限する場合、現ブロックの高さまたは幅のうちの少なくとも一つが4より大きい場合に対予測が行われることができる。したがって、本文書では、対予測または単予測のときに適用されるブロックサイズを考慮して、DMVRおよびBDOFを適用する方式を提案する。
本文書の一実施形態として、現ブロックの高さ(および/または幅)を考慮してBDOFを適用するかどうかを決定する方式を提案する。この場合、BDOFの適用条件は、次の表41に提示された条件を含むことができる。
上記表41を参照すると、現ブロックの高さ(および/または幅)と関連する条件(例えば、cbHeight)を変更することによって、特定の大きさより大きなブロックに対してのみ制限的にBDOFを適用できる。例えば、現ブロックの高さ(例えば、CbHeight)が4より大きい場合に、BDOFを適用する条件を使用することができる。あるいは、現ブロックの幅(例えば、CbWidth)が4より大きい場合に、BDOFを適用する条件を使用することもできる。このような現ブロックの大きさ(例えば、CbHeightまたはCbWidth)と関連する条件を満たす場合(すなわち、現ブロックの高さが4より大きい場合)BDOFを適用し、上記のような現ブロックの大きさと関連する条件を満たさない場合(すなわち、現ブロックの高さが4以下である場合)BDOFを適用しないことができる。
また、本実施形態では、現ブロックの大きさと関連する条件(例えば、CbHeight、CbWidth)と共に、上記表41において羅列した残りの条件に基づいてBDOFを適用するかどうかを判断できる。このとき、上記表41に羅列した条件を満たすかどうかによってbdofFlagを導出できる。このとき、上記表41に羅列した条件を全部満たした場合、bdofFlagの値は、1(True)として導出され、そうでない場合、bdofFlagの値は、0(False)として導出されることができる。ここで、bdofFlagは、現ブロックに対するBDOFを適用するかどうかを表すフラグ情報でありうる。
すなわち、デコード装置は、上記表41に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、BDOFを適用してtrue対予測を行うことができる。上記表41に羅列した条件のうちの一つでも満たされない場合、デコード装置は、BDOFを適用しないことができる。このような上記表41の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
また、本文書の一実施形態として、現ブロックの高さ(および/または幅)を考慮して、DMVRを適用するかどうかを決定する方式を提案する。この場合、DMVRの適用条件は、次の表42に提示された条件を含むことができる。
上記表42を参照すると、現ブロックの高さ(および/または幅)と関連する条件(例えば、cbHeight)を変更することによって、特定の大きさより大きなブロックに対してのみ制限的にDMVRを適用できる。例えば、現ブロックの高さ(例えば、CbHeight)が4より大きい場合に、DMVRを適用する条件を使用することができる。あるいは、現ブロックの幅(例えば、CbWidth)が4より大きい場合に、DMVRを適用する条件を使用することもできる。このような現ブロックの大きさ(例えば、CbHeightまたはCbWidth)と関連する条件を満たす場合(すなわち、現ブロックの高さが4より大きい場合)DMVRを適用し、上記のような現ブロックの大きさと関連する条件を満たさない場合(すなわち、現ブロックの高さが4以下である場合)、DMVRを適用しないことができる。
また、本実施形態では、現ブロックの大きさと関連する条件(例えば、CbHeight、CbWidth)と共に、上記表42において羅列した残りの条件に基づいてDMVRを適用するかどうかを判断できる。このとき、上記表42に羅列した条件を満たすかどうかによって、dmvrFlagを導出できる。このとき、上記表42に羅列した条件を全部満たした場合、dmvrFlagの値は、1(True)として導出され、そうでない場合、dmvrFlagの値は、0(False)として導出されることができる。ここで、dmvrFlagは、現ブロックに対するDMVRを適用するかどうかを表すフラグ情報でありうる。
すなわち、デコード装置は、上記表42に羅列したすべての条件が満たされるかどうかを決定し、すべての条件が満たされる場合、DMVRを適用してtrue対予測を行うことができる。上記表42に羅列した条件のうちの一つでも満たされない場合、デコード装置は、DMVRを適用しないことができる。このような上記表42の条件は、エンコード装置でも適用されることができ、エンコード装置では、デコード装置と対応する方法で行われることができる。
上記表41または上記表42において羅列した条件に基づいてtrue対予測を行う方法は、DMVRとBDOFとに独立して適用されることができ、またはDMVRとBDOFとのために同一条件で適用されることができる。
本文書は、上述した表2ないし表42の適用条件に基づいてDMVRの適用が可能か否かを表すDMVRフラグ情報およびBDOFの適用が可能か否かを表すBDOFフラグ情報を導出できる。
例えば、DMVRの適用条件(例えば、表2ないし表42の適用条件のうちの少なくとも一つまたは適用条件の組み合せ)に基づいて、DMVRフラグ情報(例えば、dmvrFlag)を導出できる。このとき、dmvrFlagの値が1(またはtrue)である場合、DMVRが適用されることを指示し、dmvrFlagの値が0(またはfalse)である場合、DMVRが適用されないことを指示できる。また、BDOFの適用条件(例えば、表2ないし表42の適用条件のうちの少なくとも一つまたは適用条件などの組み合せ)に基づいて、BDOFフラグ情報(例えば、bdofFlag)を導出できる。このとき、bdofFlagの値が1(またはtrue)である場合、BDOFが適用されることを指示し、bdofFlagの値が0(またはfalse)である場合、BDOFが適用されないことを指示できる。
図14は、本文書の一実施形態によるエンコード装置によって行われることができるエンコード方法を概略的に示すフローチャートである。
図14に開示された方法は、図2において開示されたエンコード装置200によって行われることができる。具体的には、図14のステップS1400~S1430は、図2に開示された予測部220およびインター予測部221によって行われることができ、図14のステップS1440は、図2に開示された残差処理部230によって行われることができ、図14のステップS1450は、図2に開示されたエントロピエンコード部240によって行われることができる。また、図14において開示された方法は、本文書において詳説した実施形態を含むことができる。したがって、図14では、上述した実施形態と重複する内容について具体的な説明を省略するか、または簡単にすることにする。
図14を参照すると、エンコード装置は、現ブロックのL0動きベクトルおよびL1動きベクトルを導き出すことができる(S1400)。
一実施形態として、現ブロックに対してインター予測を行う場合、エンコード装置は、現ブロックの動き情報(動きベクトル、参照ピクチャインデックスなど)を導き出すことができる。例えば、エンコード装置は、動き推定(motion estimation)を介して参照ピクチャの一定領域(サーチ領域)内で現ブロックと類似のブロックをサーチし、現ブロックとの差が最小または一定基準以下である参照ブロックを導き出すことができる。これに基づいて参照ブロックが位置する参照ピクチャを指す参照ピクチャインデックスを導き出し、参照ブロックと現ブロックとの位置差に基づいて動きベクトルを導き出すことができる。
また、エンコード装置は、多様な予測モードのうち、現ブロックに対して適用されるインター予測モードを決定できる。エンコード装置は、多様な予測モードに対するRD costを比較し、現ブロックに対する最適な予測モードを決定できる。
例えば、エンコード装置は、現ブロックに対する最適な予測モードとしてマージモードを適用するかどうかを判断できる。エンコード装置は、現ブロックにマージモードを適用する場合、現ブロックの周辺ブロックに基づいてマージ候補リストを構成し、マージインデックス情報を生成できる。具体的には、マージ候補リストに含まれるマージ候補が指す参照ブロック(すなわち、周辺ブロック)のうち、現ブロックとの差が最小または一定基準以下である参照ブロックを導き出すことができる。この場合、導き出された参照ブロックと関連するマージ候補が選択され、選択されたマージ候補を指すマージインデックス情報が生成されてデコード装置へシグナリングされることができる。選択されたマージ候補の動き情報を利用して、現ブロックの動き情報が導き出されることができる。
ここで、動き情報は、動きベクトル、参照ピクチャインデックスなどの情報を含むことができ、インター予測タイプ(L0予測、L1予測、Bi予測など)によってL0動き情報および/またはL1動き情報を含むことができる。現ブロックに対予測(Bi予測)が適用される場合、動き情報は、L0方向の動きベクトル(L0動きベクトル)およびL1方向の動きベクトル(L1動きベクトル)を含むことができる。また、動き情報は、L0参照ピクチャインデックスおよびL0参照ピクチャリスト内でL0参照ピクチャインデックスにより指示されるL0参照ピクチャと、L1参照ピクチャインデックスおよびL1参照ピクチャリスト内でL1参照ピクチャインデックスにより指示されるL1参照ピクチャと、を含むことができる。
すなわち、エンコード装置は、マージモードが適用される場合、現ブロックの周辺ブロックのうち、マージインデックス情報により指示される周辺ブロックのL0動きベクトルおよびL1動きベクトルを導き出し、これを現ブロックのL0およびL1動きベクトルとして使用することができる。
エンコード装置は、現ブロックに対してDMVRを適用するかどうかを表すDMVRフラグ情報に基づいて、現ブロックに対してDMVRを適用し、L0動きベクトルおよびL1動きベクトルに基づいて、リファインされたL0動きベクトルおよびリファインされたL1動きベクトルを導き出すことができる(S1410)。
このとき、エンコード装置は、コーディング効率、複雑度、予測性能などを考慮して現ブロックに対してDMVRを適用するかどうかを決定できる。すなわち、エンコード装置は、現ブロックに対して予め設定されたDMVRの適用条件を満たすかどうかに基づいて、現ブロックにDMVRを適用できる。ここで、予め設定されたDMVRの適用条件は、上記表2ないし表42において説明した多様な適用条件のうちの一部(もしくは全て)または特定の組み合せで構成されることができる。また、エンコード装置は、予め設定されたDMVRの適用条件を満たすかどうかによって、DMVRフラグ情報を導出できる。DMVRフラグ情報は、現ブロックに対してDMVRを適用するかどうかを表す情報(例えば、上述したdmvrFlag)でありうる。
一実施形態として、予め設定されたDMVRの適用条件は、L0ルマ重み付き予測フラグ情報およびL1ルマ重み付き予測フラグ情報の値が全部0であるという条件を含むことができる。
この場合、エンコード装置は、L0ルマ重み付き予測フラグ情報(例えば、luma_weight_l0_flag)およびL1ルマ重み付き予測フラグ情報(例えば、luma_weight_l1_flag)の値が全部0である場合を満たすとき、現ブロックに対してDMVRを適用することを表す値にDMVRフラグ情報を導出できる。例えば、luma_weight_l0_flagおよびluma_weight_l1_flagが全部0である場合、DMVRフラグ情報は、現ブロックにDMVRを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合、DMVRフラグ情報は、現ブロックにDMVRを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
ここで、L0ルマ重み付き予測フラグ情報は、現ブロックのルマ成分に対するL0予測の重み付きファクタ(weight factor)が存在しているかどうかを指示する情報で、L1ルマ重み付き予測フラグ情報は、現ブロックのルマ成分に対するL1予測の重み付きファクタが存在しているかどうかを指示する情報でありうる。例えば、L0ルマ重み付き予測フラグ情報の値が0である場合は、L0予測のルマ成分に対して重み付きファクタが存在しないことを表し、L0ルマ重み付き予測フラグ情報の値が1である場合は、L0予測のルマ成分に対して重み付きファクタが存在することを表すことができる。また、L1ルマ重み付き予測フラグ情報の値が0である場合は、L1予測のルマ成分に対して重み付きファクタが存在しないことを表し、L1ルマ重み付き予測フラグ情報の値が1である場合は、L1予測のルマ成分に対して重み付きファクタが存在することを表すことができる。
また、一実施形態として、予め設定されたDMVRの適用条件は、現ブロックの対予測重み付けインデックス(bi-prediction weight index)情報の値が0である条件を含むことができる。
このとき、エンコード装置は、対予測重み付けインデックス情報(例えば、GbiIdx)の値が0である場合を満たすとき、現ブロックに対してDMVRを適用することを表す値にDMVRフラグ情報を導出できる。例えば、GbiIdxが0である場合、DMVRフラグ情報は、現ブロックにDMVRを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合、DMVRフラグ情報は、現ブロックにDMVRを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
ここで、対予測重み付けインデックス情報(例えば、GbiIdx)の値が0である場合は、L0予測とL1予測とに互いに異なる重み付けを適用しないデフォルトの場合でありうる。一例として、上記表4に表れたように、対予測重み付けインデックス情報の値が0である場合、L0予測およびL1予測に各々1/2重み付けを適用する場合でありうる。
また、一実施形態として、予め設定されたDMVRの適用条件は、現ブロックにインター予測とイントラ予測とが結合された予測モード(CIIPモード)が適用されない場合であるという条件を含むことができる。
このとき、エンコード装置は、現ブロックにインター予測とイントラ予測とが結合された予測モードが適用されない場合(例えば、ciip_flagが0である場合)を満たすとき、現ブロックに対してDMVRを適用することを表す値としてDMVRフラグ情報を導出できる。例えば、ciip_flagが0である場合、DMVRフラグ情報は、現ブロックにDMVRを適用することを表す値(例えば、1またはtrue)として導出されることができる。ciip_flagが1である場合、DMVRフラグ情報は、現ブロックにDMVRを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたDMVRの適用条件は、現ブロックの大きさが16X16以上である条件を含むことができる。換言すれば、現ブロックの高さが16以上で現ブロックの幅が16以上の場合を意味できる。
この場合、エンコード装置は、現ブロックの大きさが16X16以上である場合を満たすとき、現ブロックに対してDMVRを適用することを表す値にDMVRフラグ情報を導出できる。(the encoding apparatus may derive the DMVR flag information to a value indicating that the DMVR is applied to the current block.)例えば、現ブロックの大きさが16X16以上である場合、DMVRフラグ情報は、現ブロックにDMVRを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合(すなわち、現ブロックの大きさが16X16より小さい場合)、DMVRフラグ情報は、現ブロックにDMVRを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、実施形態によって、予め設定されたDMVRの適用条件は、DMVRベースインター対予測(inter bi-prediction)が可能な(enable)場合の条件、現ブロックにL0参照ピクチャおよびL1参照ピクチャに基づいて行われる対予測(bi-prediction)が適用される場合の条件、現ピクチャとL0参照ピクチャとの間の第1POC(Picture Order Count)差と現ピクチャとL1参照ピクチャとの間の第2POC差とが同じ場合の条件、現ブロックにマージモードが適用される場合の条件、現ブロックにMMVD(Merge Mode With Motion Vector Difference)モードが適用されない場合の条件などを含むことができる。
すなわち、DMVRの適用条件は、上述した条件のうちの少なくとも一つを含んで決まることができ、このように決まったDMVR適用条件に基づいてDMVRフラグ情報が導出されることができる。このとき、DMVR適用条件として一つまたは複数の条件を含んで決まった場合、エンコード装置は、予め設定されたDMVR適用条件を全部満たした場合、DMVRフラグ情報の値をtrueまたは1として導出して、現ブロックにDMVRを適用すると判断できる。そうでなくて予め設定されたDMVR適用条件のうちの一つでも満たさない場合、DMVRフラグ情報の値をfalseまたは0として導出できる。
ここで、DMVRフラグ情報を導出するにおいて、上記羅列したDMVR適用条件は、一つの例に過ぎず、前述した表2ないし表42の条件を多様に組み合わせて使用することができる。
DMVRフラグ情報が現ブロックに対してDMVRを適用することを表す場合(例えば、DMVRフラグ情報がtrueまたは1の値として導出された場合)、エンコード装置は、現ブロックに対してDMVRを適用して、L0動きベクトルおよびL1動きベクトルに基づいて、リファインされたL0動きベクトルおよびリファインされたL1動きベクトルを導き出すことができる。
一実施形態として、エンコード装置は、L0動きベクトルに基づいて導き出されるL0参照ピクチャ内の参照サンプルとL1動きベクトルに基づいて導き出されるL1参照ピクチャ内の参照サンプルとを利用して、最小SAD(Sum of Absolute Differences)を計算できる。そして、エンコード装置は、最小SADに対応するサンプル位置に基づいて、L0動きベクトルに対するリファインされたL0動きベクトルとL1動きベクトルに対するリファインされたL1動きベクトルとを導き出すことができる。
ここで、L0参照ピクチャは、L0参照ピクチャリスト内に含まれる参照ピクチャのうち、L0参照ピクチャインデックスにより指示される参照ピクチャであり、L1参照ピクチャは、L1参照ピクチャリスト内に含まれる参照ピクチャのうち、L1参照ピクチャインデックスにより指示される参照ピクチャでありうる。
また、リファインされたL0動きベクトルは、L0参照ピクチャにおいて最小SADに対応するサンプル位置を指す動きベクトルでありえ、リファインされたL1動きベクトルは、L1参照ピクチャにおいて最小SADに対応するサンプル位置を指す動きベクトルでありうる。DMVRを適用してリファインされた動きベクトルを導き出す過程は、図8および図9において詳細に説明したので、ここでは説明を省略する。
エンコード装置は、リファインされたL0動きベクトルに基づいて現ブロックのL0予測サンプル、およびリファインされたL1動きベクトルに基づいて現ブロックのL1予測サンプル、を導き出すことができる(S1420)。
ここで、L0予測サンプルは、L0参照ピクチャにおいてリファインされたL0動きベクトルにより指示される参照サンプルに基づいて導き出され、L1予測サンプルは、L1参照ピクチャからリファインされたL1動きベクトルにより指示される参照サンプルに基づいて導き出されることができる。
エンコード装置は、現ブロックに対してBDOFを適用するかどうかを表すBDOFフラグ情報に基づいて現ブロックに対してBDOFを適用し、L0予測サンプルおよびL1予測サンプルに基づいて現ブロックに対する予測サンプルを導き出すことができる(S1430)。
このとき、予測サンプルを導き出すにおいて、エンコード装置は、コーディング効率、複雑度、予測性能などを考慮して、現ブロックに対してBDOFを適用するかどうかを決定できる。すなわち、エンコード装置は、現ブロックに対して予め設定されたBDOFの適用条件を満たすかどうかに基づいて、現ブロックにBDOFを適用できる。ここで、予め設定されたBDOFの適用条件は、上記表2ないし表42において説明した多様な適用条件のうちの一部(もしくは全て)または特定の組み合せで構成されることができる。また、エンコード装置は、予め設定されたBDOFの適用条件を満たすかどうかによって、BDOFフラグ情報を導出できる。BDOFフラグ情報は、現ブロックに対してBDOFを適用するかどうかを表す情報(例えば、上述したbdofFlag)でありうる。
一実施形態として、予め設定されたBDOFの適用条件は、L0ルマ重み付き予測フラグ情報およびL1ルマ重み付き予測フラグ情報の値が全部0であるという条件を含むことができる。
このとき、エンコード装置は、L0ルマ重み付き予測フラグ情報(例えば、luma_weight_l0_flag)およびL1ルマ重み付き予測フラグ情報(例えば、luma_weight_l1_flag)の値が全部0である場合を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、luma_weight_l0_flagおよびluma_weight_l1_flagが全部0である場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたBDOFの適用条件は、現ブロックの大きさが16X16以上である条件を含むことができる。換言すれば、現ブロックの高さが16以上で現ブロックの幅が16以上の場合を意味できる。
この場合、エンコード装置は、現ブロックの大きさが16X16以上である場合を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、現ブロックの大きさが16X16以上の場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合(すなわち、現ブロックの大きさが16X16より小さい場合)、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたBDOFの適用条件は、現ブロックの高さ(Height)が8以上である条件を含むことができる。
この場合、エンコード装置は、現ブロックの高さが8以上である場合を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、現ブロックの高さが8以上の場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合(すなわち、現ブロックの高さが8より小さい場合)、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたBDOFの適用条件は、現ピクチャとL0参照ピクチャとの間の第1POC(Picture Order Count)差と現ピクチャとL1参照ピクチャとの間の第2POC差とが同じ場合の条件を含むことができる。
このとき、エンコード装置は、第1POC差(例えば、DiffPicOrderCnt(currPic、RefPicList0[refIdxL0]))と第2POC差(例えば、DiffPicOrderCnt(currPic、RefPicList1[refIdxL1]))とが同じである場合を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、DiffPicOrderCnt(currPic、RefPicList0[refIdxL0])-DiffPicOrderCnt(currPic、RefPicList1[refIdxL1])が0である場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたBDOFの適用条件は、現ブロックにインター予測とイントラ予測とが結合された予測モード(CIIPモード)が適用されない場合の条件を含むことができる。
このとき、エンコード装置は、現ブロックにインター予測とイントラ予測とが結合された予測モードが適用されない場合(例えば、ciip_flagが0である場合)を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、ciip_flagが0である場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。ciip_flagが1である場合、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、実施形態によって、予め設定されたBDOFの適用条件は、BDOFベースインター予測が可能な(enable)場合の条件、現ブロックにL0参照ピクチャおよびL1参照ピクチャに基づいて行われる対予測(bi-prediction)が適用される場合の条件、現ブロックの対予測重み付けインデックス(bi-prediction weight index)情報の値が0の条件、現ブロックにアフィンモードが適用されない場合の条件、現ブロックにサブブロックベースマージモードが適用されない場合の条件、現ブロックがルマ成分である条件などを含むことができる。
すなわち、BDOF適用条件は、上述した条件のうちの少なくとも一つを含んで決まることができ、このように決まったBDOF適用条件に基づいてBDOFフラグ情報が導出されることができる。このとき、BDOF適用条件として一つまたは複数の条件を含んで決まった場合、エンコード装置は、予め設定されたBDOF適用条件を全部満たした場合、BDOFフラグ情報の値をtrueまたは1として導出して、現ブロックにBDOFを適用すると判断できる。そうでなくて予め設定されたBDOF適用条件のうちの一つでも満たさない場合、BDOFフラグ情報の値をfalseまたは0として導出できる。
ここで、BDOFフラグ情報を導出するにおいて、上記羅列したBDOF適用条件は、一つの例に過ぎず、前述した表2ないし表42の条件を多様に組み合わせて使用することができる。
BDOFフラグ情報が現ブロックにBDOFを適用することを表す場合(例えば、BDOFフラグ情報がtrueまたは1値として導出された場合)、エンコード装置は、現ブロックに対してBDOFを適用して、予測サンプルを導き出すことができる。
一実施形態として、エンコード装置は、リファインされたL0動きベクトルに基づいて導き出されるL0予測サンプルに対する第1階調(gradient)とリファインされたL1動きベクトルに基づいて導き出されるL1予測サンプルに対する第2階調(gradient)とを計算できる。そして、エンコード装置は、L0予測サンプル、L1予測サンプル、第1階調、第2階調に基づいて、現ブロックに対する予測サンプルを最終的に導き出すことができる。一例として、BDOFを適用して予測サンプルを導き出す過程は、上述した式1ないし式6のような計算を利用できる。
エンコード装置は、予測サンプルに基づいて現ブロックに対する残差サンプルを導き出し(S1440)、残差サンプルに関する情報を含む映像情報をエンコードできる(S1450)。
すなわち、エンコード装置は、現ブロックに対するオリジナルサンプルと現ブロックの予測サンプルとに基づいて、残差サンプルを導き出すことができる。そして、エンコード装置は、残差サンプルに関する情報を生成できる。ここで、残差サンプルに関する情報は、残差サンプルに変換および量子化を行って導き出された量子化された変換係数の値情報、位置情報、変換技法、変換カーネル、量子化パラメータなどの情報を含むことができる。
エンコード装置は、残差サンプルに関する情報をエンコードしてビットストリームで出力し、これをネットワークまたは記憶媒体を介してデコード装置に転送できる。
また、エンコード装置は、上述したステップS1400ないしS1450から導き出された映像情報をエンコードして、ビットストリームで出力できる。例えば、マージフラグ情報、マージインデックス情報、L0参照ピクチャインデックス、L1参照ピクチャインデックス、L0ルマ重み付き予測フラグ情報、L1ルマ重み付き予測フラグ情報、対予測重み付けインデックス情報などが映像情報に含まれてエンコードされることができ、このようなエンコードされた映像情報は、デコード装置へシグナリングされることができる。
図15は、本文書の一実施形態によってデコード装置によって行われることができるデコード方法を概略的に示すフローチャートである。
図15に開示された方法は、図3において開示されたデコード装置300によって行われることができる。具体的には、図15のステップS1500~S1530は、図3に開示された予測部330およびインター予測部332によって行われることができ、図15のステップS1540は、図3に開示された加算部340によって行われることができる。また、図15において開示された方法は、本文書において詳説した実施形態を含むことができる。したがって、図15では、上述した実施形態と重複する内容に関して具体的な説明を省略するか、または簡単にすることにする。
図15を参照すると、デコード装置は、現ブロックのL0動きベクトルおよびL1動きベクトルを導き出すことができる(S1500)。
図15に開示された方法は、図3において開示されたデコード装置300によって行われることができる。具体的には、図15のステップS1500~S1530は、図3に開示された予測部330およびインター予測部332によって行われることができ、図15のステップS1540は、図3に開示された加算部340によって行われることができる。また、図15において開示された方法は、本文書において詳説した実施形態を含むことができる。したがって、図15では、上述した実施形態と重複する内容に関して、具体的な説明を省略するか、または簡単にすることにする。
図15を参照すると、デコード装置は、現ブロックのL0動きベクトルおよびL1動きベクトルを導き出すことができる(S1500)。
一実施形態として、デコード装置は、エンコード装置からシグナリングされる予測情報に基づいて、現ブロックに対する予測モードを決定できる。そして、デコード装置は、予測モードに基づいて現ブロックの動き情報(動きベクトル、参照ピクチャインデックスなど)を導き出すことができる。ここで、予測モードは、スキップモード、マージモード、(A)MVPモードなどを含むことができる。
例えば、デコード装置は、現ブロックにマージモードが適用される場合、現ブロックの周辺ブロックに基づいてマージ候補リストを構成し、マージ候補リストに含まれるマージ候補のうちの一つのマージ候補を選択できる。このとき、上述したマージインデックス情報(merge index)に基づいて、マージ候補リストから一つのマージ候補が選択されることができる。デコード装置は、選択されたマージ候補の動き情報を利用して、現ブロックの動き情報を導き出すことができる。すなわち、マージ候補リストに含まれるマージ候補のうち、マージインデックスにより選択されたマージ候補の動き情報が現ブロックの動き情報として利用されることができる。
ここで、動き情報は、動きベクトル、参照ピクチャインデックスなどの情報を含むことができ、インター予測タイプ(L0予測、L1予測、Bi予測など)によってL0動き情報および/またはL1動き情報を含むことができる。現ブロックに対予測(Bi予測)が適用される場合、動き情報は、L0方向の動きベクトル(L0動きベクトル)およびL1方向の動きベクトル(L1動きベクトル)を含むことができる。また、動き情報は、L0参照ピクチャインデックスおよびL0参照ピクチャリスト内でL0参照ピクチャインデックスにより指示されるL0参照ピクチャと、L1参照ピクチャインデックスおよびL1参照ピクチャリスト内でL1参照ピクチャインデックスにより指示されるL1参照ピクチャと、を含むことができる。
すなわち、デコード装置は、現ブロックの予測モード情報(例えば、マージモードであるかどうかを指示するマージフラグ(merge_flag))に基づいて、現ブロックにマージモードが適用されるかどうかを判断できる。マージフラグに基づいて現ブロックにマージモードが適用される場合、デコード装置は、マージインデックス情報を獲得できる。そして、デコード装置は、マージ候補リストに含まれる周辺ブロックのうち、マージインデックス情報により指示される周辺ブロックのL0動きベクトルおよびL1動きベクトルを導き出し、これを現ブロックのL0およびL1動きベクトルとして使用することができる。
デコード装置は、現ブロックに対してDMVRを適用するかどうかを表すDMVRフラグ情報に基づいて、現ブロックに対してDMVRを適用して、L0動きベクトルおよびL1動きベクトルに基づいて、リファインされたL0動きベクトルおよびリファインされたL1動きベクトルを導き出すことができる(S1510)。
このとき、デコード装置は、コーディング効率、複雑度、予測性能などを考慮して、現ブロックに対してDMVRを適用するかどうかを決定できる。すなわち、デコード装置は、現ブロックに対して予め設定されたDMVRの適用条件を満たすかどうかに基づいて、現ブロックにDMVRを適用できる。ここで、予め設定されたDMVRの適用条件は、上記表2ないし表42において説明した多様な適用条件のうちの一部(もしくは全て)または特定の組み合せで構成されることができる。また、デコード装置は、予め設定されたDMVRの適用条件を満たすかどうかによって、DMVRフラグ情報を導出できる。DMVRフラグ情報は、現ブロックに対してDMVRを適用するかどうかを表す情報(例えば、上述したdmvrFlag)でありうる。
一実施形態として、予め設定されたDMVRの適用条件は、L0ルマ重み付き予測フラグ情報およびL1ルマ重み付き予測フラグ情報の値が全部0であるという条件を含むことができる。
この場合、デコード装置は、L0ルマ重み付き予測フラグ情報(例えば、luma_weight_l0_flag)およびL1ルマ重み付き予測フラグ情報(例えば、luma_weight_l1_flag)の値が全部0である場合を満たすとき、現ブロックに対してDMVRを適用することを表す値にDMVRフラグ情報を導出できる。例えば、luma_weight_l0_flagおよびluma_weight_l1_flagが全部0である場合、DMVRフラグ情報は、現ブロックにDMVRを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合、DMVRフラグ情報は、現ブロックにDMVRを適用しないことを表す値(例えば、0またはfalse)として導出できる。
ここで、L0ルマ重み付き予測フラグ情報は、現ブロックのルマ成分に対するL0予測の重み付きファクタ(weight factor)が存在しているかどうかを指示する情報であり、L1ルマ重み付き予測フラグ情報は、現ブロックのルマ成分に対するL1予測の重み付きファクタが存在しているかどうかを指示する情報でありうる。例えば、L0ルマ重み付き予測フラグ情報の値が0である場合は、L0予測のルマ成分に対して重み付きファクタが存在しないことを表し、L0ルマ重み付き予測フラグ情報の値が1である場合は、L0予測のルマ成分に対して重み付きファクタが存在することを表すことができる。また、L1ルマ重み付き予測フラグ情報の値が0である場合は、L1予測のルマ成分に対して重み付きファクタが存在しないことを表し、L1ルマ重み付き予測フラグ情報の値が1である場合は、L1予測のルマ成分に対して重み付きファクタが存在することを表すことができる。
また、一実施形態として、予め設定されたDMVRの適用条件は、現ブロックの対予測重み付けインデックス(bi-prediction weight index)情報の値が0である条件を含むことができる。
このとき、デコード装置は、対予測重み付けインデックス情報(例えば、GbiIdx)の値が0である場合を満たすとき、現ブロックに対してDMVRを適用することを表す値にDMVRフラグ情報を導出できる。例えば、GbiIdxが0である場合、DMVRフラグ情報は、現ブロックにDMVRを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合、DMVRフラグ情報は、現ブロックにDMVRを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
ここで、対予測重み付けインデックス情報(例えば、GbiIdx)の値が0である場合は、L0予測とL1予測とに互いに異なる重み付けを適用しないデフォルトの場合でありうる。一例として、上記表4に表れたように、対予測重み付けインデックス情報の値が0である場合、L0予測およびL1予測に各々1/2重み付けを適用する場合でありうる。
また、一実施形態として、予め設定されたDMVRの適用条件は、現ブロックにインター予測とイントラ予測とが結合された予測モード(CIIPモード)が適用されない場合であるという条件を含むことができる。
このとき、デコード装置は、現ブロックにインター予測とイントラ予測とが結合された予測モードが適用されない場合(例えば、ciip_flagが0である場合)を満たすとき、現ブロックに対してDMVRを適用することを表す値にDMVRフラグ情報を導出できる。例えば、ciip_flagが0である場合、DMVRフラグ情報は、現ブロックにDMVRを適用することを表す値(例えば、1またはtrue)として導出されることができる。ciip_flagが1である場合、DMVRフラグ情報は、現ブロックにDMVRを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたDMVRの適用条件は、現ブロックの大きさが16X16以上である条件を含むことができる。換言すれば、現ブロックの高さが16以上で現ブロックの幅が16以上の場合を意味できる。
この場合、デコード装置は、現ブロックの大きさが16X16以上である場合を満たすとき、現ブロックに対してDMVRを適用することを表す値にDMVRフラグ情報を導出できる。例えば、現ブロックの大きさが16X16以上の場合、DMVRフラグ情報は、現ブロックにDMVRを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合(すなわち、現ブロックの大きさが16X16より小さい場合)、DMVRフラグ情報は、現ブロックにDMVRを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、実施形態によって、予め設定されたDMVRの適用条件は、DMVRベースインター対予測(inter-bi-prediction)が可能な(enable)場合の条件、現ブロックにL0参照ピクチャおよびL1参照ピクチャに基づいて行われる対予測(bi-prediction)が適用される場合の条件、現ピクチャとL0参照ピクチャとの間の第1POC(Picture Order Count)差と現ピクチャとL1参照ピクチャとの間の第2POC差とが同じ場合の条件、現ブロックにマージモードが適用される場合の条件、現ブロックにMMVD(Merge Mode With Motion Vector Difference)モードが適用されない場合の条件などを含むことができる。
すなわち、DMVRの適用条件は、上述した条件のうちの少なくとも一つを含んで決まることができ、このように決まったDMVR適用条件に基づいてDMVRフラグ情報が導出されることができる。このとき、DMVR適用条件として一つまたは複数の条件を含んで決まった場合、デコード装置は、予め設定されたDMVR適用条件を全部満たした場合、DMVRフラグ情報の値をtrueまたは1として導出して、現ブロックにDMVRを適用すると判断できる。そうでなくて予め設定されたDMVR適用条件のうちの一つでも満たされない場合、DMVRフラグ情報の値をfalseまたは0として導出できる。
ここで、DMVRフラグ情報を導出するにおいて、上記羅列したDMVR適用条件は、一つの例に過ぎず、前述した表2ないし表42の条件を多様に組み合わせて使用することができる。
DMVRフラグ情報が現ブロックに対してDMVRを適用することを表す場合(例えば、DMVRフラグ情報がtrueまたは1値として導出された場合)、デコード装置は、現ブロックに対してDMVRを適用して、L0動きベクトルおよびL1動きベクトルに基づいて、リファインされたL0動きベクトルおよびリファインされたL1動きベクトルを導き出すことができる。
一実施形態として、デコード装置は、L0動きベクトルに基づいて導き出されるL0参照ピクチャ内の参照サンプルとL1動きベクトルに基づいて導き出されるL1参照ピクチャ内の参照サンプルとを利用して、最小SAD(Sum Of Absolute Differences)を計算できる。そして、デコード装置は、最小SADに対応するサンプル位置に基づいて、L0動きベクトルに対するリファインされたL0動きベクトルとL1動きベクトルに対するリファインされたL1動きベクトルとを導き出すことができる。
ここで、L0参照ピクチャは、L0参照ピクチャリスト内に含まれる参照ピクチャのうち、L0参照ピクチャインデックスにより指示される参照ピクチャであり、L1参照ピクチャは、L1参照ピクチャリスト内に含まれる参照ピクチャのうち、L1参照ピクチャインデックスにより指示される参照ピクチャでありうる。
また、リファインされたL0動きベクトルは、L0参照ピクチャにおいて最小SADに対応するサンプル位置を指す動きベクトルでありえ、リファインされたL1動きベクトルは、L1参照ピクチャにおいて最小SADに対応するサンプル位置を指す動きベクトルでありうる。DMVRを適用してリファインされた動きベクトルを導き出す過程は、図8および図9において詳細に説明したので、ここでは説明を省略する。
デコード装置は、リファインされたL0動きベクトルに基づいて現ブロックのL0予測サンプルと、リファインされたL1動きベクトルに基づいて現ブロックのL1予測サンプルと、を導き出すことができる(S1520)。
ここで、L0予測サンプルは、L0参照ピクチャにおいてリファインされたL0動きベクトルにより指示される参照サンプルに基づいて導き出され、L1予測サンプルは、L1参照ピクチャにおいてリファインされたL1動きベクトルにより指示される参照サンプルに基づいて導き出されることができる。
デコード装置は、現ブロックに対してBDOFを適用するかどうかを表すBDOFフラグ情報に基づいて、現ブロックに対してBDOFを適用して、L0予測サンプルおよびL1予測サンプルに基づいて現ブロックに対する予測サンプルを導き出すことができる(S1530)。
このとき、予測サンプルを導き出すにおいて、デコード装置は、コーディング効率、複雑度、予測性能などを考慮して、現ブロックに対してBDOFを適用するかどうかを決定できる。すなわち、デコード装置は、現ブロックに対して予め設定されたBDOFの適用条件を満たすかどうかに基づいて、現ブロックにBDOFを適用できる。ここで、予め設定されたBDOFの適用条件は、上記表2ないし表42において説明した多様な適用条件のうちの一部(もしくは全て)または特定の組み合せで構成されることができる。また、デコード装置は、予め設定されたBDOFの適用条件を満たすかどうかによって、BDOFフラグ情報を導出できる。BDOFフラグ情報は、現ブロックに対してBDOFを適用するかどうかを表す情報(例えば、上述したbdofFlag)でありうる。
一実施形態として、予め設定されたBDOFの適用条件は、L0ルマ重み付き予測フラグ情報およびL1ルマ重み付き予測フラグ情報の値が全部0であるという条件を含むことができる。
このとき、デコード装置は、L0ルマ重み付き予測フラグ情報(例えば、luma_weight_l0_flag)およびL1ルマ重み付き予測フラグ情報(例えば、luma_weight_l1_flag)の値が全部0である場合を満たすとき場合、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、luma_weight_l0_flagおよびluma_weight_l1_flagが全部0である場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたBDOFの適用条件は、現ブロックの大きさが16X16以上である条件を含むことができる。換言すれば、現ブロックの高さが16以上で、現ブロックの幅が16以上の場合を意味できる。
この場合、デコード装置は、現ブロックの大きさが16X16以上である場合を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、現ブロックの大きさが16X16以上の場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合(すなわち、現ブロックの大きさが16X16より小さい場合)、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたBDOFの適用条件は、現ブロックの高さ(Height)が8以上である条件を含むことができる。
この場合、デコード装置は、現ブロックの高さが8以上である場合を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、現ブロックの高さが8以上の場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合(すなわち、現ブロックの高さが8より小さい場合)、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたBDOFの適用条件は、現ピクチャとL0参照ピクチャとの間の第1POC(Picture Order Count)差と現ピクチャとL1参照ピクチャとの間の第2POC差とが同じ場合の条件を含むことができる。
このとき、デコード装置は、第1POC差(例えば、DiffPicOrderCnt(currPic、RefPicList0[refIdxL0]))と第2POC差(例えば、DiffPicOrderCnt(currPic、RefPicList1[refIdxL1]))とが同じである場合を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、DiffPicOrderCnt(currPic、RefPicList0[refIdxL0])-DiffPicOrderCnt(currPic、RefPicList1[refIdxL1])が0である場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。そうでない場合、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、一実施形態として、予め設定されたBDOFの適用条件は、現ブロックにインター予測とイントラ予測とが結合された予測モード(CIIPモード)が適用されない場合の条件を含むことができる。
このとき、デコード装置は、現ブロックにインター予測とイントラ予測とが結合された予測モードが適用されない場合(例えば、ciip_flagが0である場合)を満たすとき、現ブロックに対してBDOFを適用することを表す値にBDOFフラグ情報を導出できる。例えば、ciip_flagが0である場合、BDOFフラグ情報は、現ブロックにBDOFを適用することを表す値(例えば、1またはtrue)として導出されることができる。ciip_flagが1である場合、BDOFフラグ情報は、現ブロックにBDOFを適用しないことを表す値(例えば、0またはfalse)として導出されることができる。
また、実施形態によって、予め設定されたBDOFの適用条件は、BDOFベースインター予測が可能な(enable)場合の条件、現ブロックにL0参照ピクチャおよびL1参照ピクチャに基づいて行われる対予測(bi-prediction)が適用される場合の条件、現ブロックの対予測重み付けインデックス(bi-prediction weight index)情報の値が0の条件、現ブロックにアフィンモードが適用されない場合の条件、現ブロックにサブブロックベースマージモードが適用されない場合の条件、現ブロックがルマ成分である条件などを含むことができる。
すなわち、BDOF適用条件は、上述した条件のうちの少なくとも一つを含んで決まることができ、このように決まったBDOF適用条件に基づいてBDOFフラグ情報が導出されることができる。このとき、BDOF適用条件として一つまたは複数の条件を含んで決まった場合、デコード装置は、予め設定されたBDOF適用条件を全部満たした場合、BDOFフラグ情報の値をtrueまたは1として導出して、現ブロックにBDOFを適用すると判断できる。そうでなく予め設定されたBDOF適用条件のうちの一つでも満たされない場合、BDOFフラグ情報の値をfalseまたは0として導出できる。
ここで、BDOFフラグ情報を導出するにおいて、上記羅列したBDOF適用条件は、一つの例に過ぎず、前述した表2ないし表42の条件を多様に組み合わせて使用することができる。
BDOFフラグ情報が現ブロックにBDOFを適用することを表す場合(例えば、BDOFフラグ情報がtrueまたは1値として導出された場合)、デコード装置は、現ブロックに対してBDOFを適用して、予測サンプルを導き出すことができる。
一実施形態として、デコード装置は、リファインされたL0動きベクトルに基づいて導き出されるL0予測サンプルに対する第1階調(gradient)とリファインされたL1動きベクトルに基づいて導き出されるL1予測サンプルに対する第2階調(gradient)とを計算できる。そして、デコード装置は、L0予測サンプル、L1予測サンプル、第1階調、第2階調に基づいて、現ブロックに対する予測サンプルを最終的に導き出すことができる。一例として、BDOFを適用して予測サンプルを導き出す過程は、上述した式1ないし式6のような計算を利用できる。
デコード装置は、予測サンプルに基づいて現ブロックに対する復元サンプルを生成できる(S1540)。
一実施形態として、デコード装置は、予測モードに応じて予測サンプルをまさに復元サンプルとして利用することもでき、または上記予測サンプルに残差サンプルを足して復元サンプルを生成することもできる。
デコード装置は、現ブロックに対する残差サンプルが存在する場合、現ブロックに対する残差に関する情報を受信することができる。残差に関する情報は、残差サンプルに関する変換係数を含むことができる。デコード装置は、残差情報に基づいて現ブロックに対する残差サンプル(または残差サンプルアレイ)を導き出すことができる。デコード装置は、予測サンプルおよび残差サンプルに基づいて復元サンプルを生成でき、上記復元サンプルに基づいて復元ブロックまたは復元ピクチャを導き出すことができる。
上述した実施形態において、方法は、一連のステップまたはブロックでフローチャートに基づいて説明されているが、本文書の実施形態は、ステップの順序に限定されるものではなく、あるステップは、上述したものと異なるステップおよび異なる順序でまたは同時に発生し得る。また、当業者であれば、フローチャートに示されたステップが排他的でなく、他のステップが含まれるか、またはフローチャートの一つもしくはそれ以上のステップは、本文書の範囲に影響を及ぼさずに削除されうることを理解できるはずである。
上述した本文書による方法は、ソフトウェア形態により具現されることができ、本文書によるエンコード装置および/またはデコード装置は、例えばTV、コンピュータ、スマートフォン、セットトップボックス、ディスプレイ装置などの映像処理を行う装置に含まれることができる。
本文書において実施形態がソフトウェアにより具現されるとき、上述した方法は、上述した機能を行うモジュール(過程、機能など)により具現されることができる。モジュールは、メモリに記憶され、プロセッサにより実行されることができる。メモリは、プロセッサの内部または外部にあることができ、周知の多様な手段によりプロセッサと接続されることができる。プロセッサは、ASIC(Application-Specific Integrated Circuit)、他のチップセット、論理回路および/またはデータ処理装置を含むことができる。メモリは、ROM(Read-Only Memory)、RAM(Random Access Memory)、フラッシュメモリ、メモリカード、記憶媒体および/または他の記憶装置を含むことができる。すなわち、本文書において説明した実施形態は、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上において具現されて行われることができる。例えば、各図において示した機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上において具現されて行われることができる。この場合、具現のための情報(例えば、information on instructions)またはアルゴリズムがデジタル記憶媒体に記憶されることができる。
また、本文書が適用されるデコード装置およびエンコード装置は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ対話装置、ビデオ通信などのリアルタイム通信装置、モバイルストリーミング装置、記憶媒体、カムコーダ、ビデオオンデマンド(VoD)サービス提供装置、OTTビデオ(Over The Top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、VR(Virtual Reality)装置、AR(Augmented Reality)装置、画像電話ビデオ装置、運送手段端末(例えば、車両(自律走行車両を含む)端末、飛行機端末、船舶端末など)および医療用ビデオ装置などに含まれることができ、ビデオ信号またはデータ信号を処理するために使用されることができる。例えば、OTTビデオ(Over The Top video)装置には、ゲームコンソール、ブルーレイプレーヤ、インターネット接続TV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recorder)などを含むことができる。
また、本文書が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されることができ、コンピュータが読み取り可能な記録媒体に記憶されることができる。本文書によるデータ構造を有するマルチメディアデータもまたコンピュータが読み取り可能な記録媒体に記憶されることができる。上記コンピュータが読み取り可能な記録媒体は、コンピュータで読み出すことができるデータが記憶されるすべての種類の記憶装置および分散記憶装置を含む。上記コンピュータが読み取り可能な記録媒体は、例えば、ブルーレイディスク(BD)、ユニバーサルシリアルバス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピ(登録商標)ディスクおよび光学データ記憶装置を含むことができる。また、上記コンピュータが読み取り可能な記録媒体は、搬送波(例えば、インターネットを介した転送)の形態により具現されたメディアを含む。また、エンコード方法で生成されたビットストリームは、コンピュータが読み取り可能な記録媒体に記憶されるか、または有無線通信ネットワークを介して転送されることができる。
また、本文書の実施形態は、プログラムコードによるコンピュータプログラム製品により具現されることができ、上記プログラムコードは、本文書の実施形態によりコンピュータにおいて行われることができる。上記プログラムコードは、コンピュータにより読み取り可能なキャリア上に記憶されることができる。
図16は、本文書に開示された実施形態が適用されることができるコンテンツストリーミングシステムの例を示す。
図16を参照すると、本文書の実施形態に適用されるコンテンツストリーミングシステムは、概してエンコードサーバ、ストリーミングサーバ、ウェブサーバ、メディア記憶装置(格納所)、ユーザ装置およびマルチメディア入力装置を含むことができる。
上記エンコードサーバは、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これを上記ストリーミングサーバに転送する役割を担う。他の例として、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置がビットストリームを直接生成する場合、上記エンコードサーバは、省略されることができる。
上記ビットストリームは、本文書の実施形態に適用されるエンコード方法またはビットストリーム生成方法により生成されることができ、上記ストリーミングサーバは、上記ビットストリームを転送または受信する過程において一時的に上記ビットストリームを記憶することができる。
上記ストリーミングサーバは、ウェブサーバを介したユーザリクエスト(要請)に基づいて、マルチメディアデータをユーザ装置に転送し、上記ウェブサーバは、ユーザにいかなるサービスがあるかを知らせる媒介体として機能する。ユーザが上記ウェブサーバに望みのサービスをリクエストすると、上記ウェブサーバは、これをストリーミングサーバに伝達し、上記ストリーミングサーバは、ユーザにマルチメディアデータを転送する。このとき、上記コンテンツストリーミングシステムは、別の制御サーバを含むことができ、この場合、上記制御サーバは、上記コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割を担う。
上記ストリーミングサーバは、メディア記憶装置および/またはエンコードサーバからコンテンツを受信することができる。例えば、上記エンコードサーバからコンテンツを受信する場合、上記コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、上記ストリーミングサーバは、上記ビットストリームを一定時間の間記憶することができる。
上記ユーザ装置の例には、携帯電話、スマートフォン(smart phone)、ノート型パソコン(laptop)、デジタル放送用端末機、PDA(Personal Digital Assistants)、PMP(Portable Multimedia Player)、ナビゲーション、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ultrabook)、ウェアラブルデバイス(wearable device、例えば、ウォッチ型端末機(smart watch)、グラス型端末機(smart glass)、HMD(Head Mounted Display))、デジタルTV、デスクトップコンピュータ、デジタルサイネージなどがありうる。
上記コンテンツストリーミングシステム内の各サーバは、分散サーバとして運用されることができ、この場合、各サーバにおいて受信するデータは、分散処理されることができる。
一方、本文書の実施形態が適用されるデコード装置およびエンコード装置は、デジタル機器(digital device)に含まれることができる。「デジタル機器(digital device)」とは、例えば、データ、コンテンツ、サービスなどを、転送、受信、処理および出力のうちの少なくとも一つを遂行可能なすべてのデジタル機器を含む。ここで、デジタル機器がデータ、コンテンツ、サービスなどを処理することは、データ、コンテンツ、サービスなどをエンコードおよび/またはデコードする動作を含む。このようなデジタル機器は、有/無線ネットワーク(wire/wireless network)を介して他のデジタル機器、外部サーバ(external server)などとペアリングまたは接続(pairing or connecting)(以下、ペアリング)されてデータを送受信し、必要によって変換(converting)する。
デジタル機器は、例えば、ネットワークTV(network TV)、HBBTV(Hybrid Broadcast Broadband TV)、スマートTV(Smart TV)、IPTV(Internet Protocol TeleVision)、PC(Personal Computer)などの固定機器(standing device)と、PDA(Personal Digital Assistant)、スマートフォン(Smart Phone)、タブレットPC(Tablet PC)、ノート型パソコン、VR/AR機器などのモバイル機器(mobile device or handheld device)と、を全部含む。また、上記デジタル機器は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ対話装置、ビデオ通信などのリアルタイム通信装置、モバイルストリーミング装置、記憶媒体、カムコーダ、ビデオオンデマンド(VoD)サービス提供装置、OTTビデオ(Over The Top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、VR(Virtual Reality)装置、AR(Augmented Reality)装置、画像電話ビデオ装置、運送手段端末(例えば、車両(自律走行車両を含む)端末、飛行機端末、船舶端末など)および医療用ビデオ装置などを含むことができる。
一方、本文書において述べられる「有/無線ネットワーク」とは、デジタル機器間またはデジタル機器と外部サーバとの間における相互接続および/またはデータ送受信のために多様な通信規格またはプロトコルをサポートする通信ネットワークを通称する。このような有/無線ネットワークは、規格により現在または今後サポートされる通信ネットワークとそのための通信プロトコルとを全部含むことができるため、例えば、USB(Universal Serial Bus)、CVBS(Composite Video Banking Sync)、コンポーネント、S-ビデオ(アナログ)、DVI(Digital Visual Interface)、HDMI(High Definition Multimedia Interface)(登録商標)、RGB、D-SUBなどの有線接続のための通信規格またはプロトコルと、ブルートゥース(Bluetooth)(登録商標)、RFID(Radio Frequency IDentification)、赤外線通信(IrDA、infrared Data Association)、UWB(Ultra WideBand)、ジグビ(ZigBee)、DLNA(Digital Living Network Alliance)(登録商標)、WLAN(Wireless LAN)(Wi-Fi)、Wibro(Wireless broadband)、Wimax(World Interoperability for Microwave Access)、HSDPA(High Speed Downlink Packet Access)、LTE(Long Term Evolution)、Wi-Fiダイレクト(Direct)などの無線接続のための通信規格によって形成されることができる。
以下、本文書においてただデジタル機器と命名する場合には、文脈によって固定機器もしくはモバイル機器を意味するか、または両方を全部含む意味でもありうる。
一方、デジタル機器は、例えば、放送受信器能、コンピュータ機能またはサポート、少なくとも一つの外部入力(external input)をサポートするインテリジェント(知能型)機器として、上述した有/無線ネットワークを介して電子メール(e-mail)、ウェブブラウジング(web browsing)、バンキング(banking)、ゲーム(game)、アプリケーション(application)などをサポートできる。また、上記デジタル機器は、手操作(手記)方式の入力装置、タッチスクリーン(touch screen)、空間リモコンなど、少なくとも一つの入力または制御手段(以下、入力手段)をサポートするためのインターフェース(interface)を具備できる。デジタル機器は、標準化された汎用OS(Operating System)を利用できる。例えば、デジタル機器は、汎用のOSカーネル(kernel)上で、多様なアプリケーション(application)の追加(adding)、削除(deleting)、修正(amending)、アップデート(updating)などを行うことができ、これによってさらにユーザフレンドリ(親和的)な(user-friendly)環境を構成して提供できる。
一方、本文書において述べられる外部入力は、外部入力機器すなわち、上述したデジタル機器と有/無線で接続されてそれを通じて関連データを送/受信して処理可能なすべての入力手段またはデジタル機器を含む。ここで、上記外部入力は、例えば、HDMI(High Definition Multimedia Interface)(登録商標)、プレーステーション(PlayStation)またはエックスボックス(X-Box)などのゲーム機器、スマートフォン、タブレットPC、プリンタ器、スマートTVなどのデジタル機器を全部含む。
また、本文書において述べられる「サーバ(server)」とは、クライアント(client)、すなわち、上述したデジタル機器にデータを供給するすべてのデジタル機器またはシステムを含む意味であり、プロセッサ(processor)と呼ばれることもある。このようなサーバには、例えば、ウェブページまたはウェブコンテンツを提供するポータルサーバ(portal server)、広告データ(advertising data)を提供する広告サーバ(advertising server)、コンテンツを提供するコンテンツサーバ(content server)、SNS(Social Network Service)サービスを提供するSNSサーバ(SNS server)、製造業者から提供するサービスサーバ(service server or manufacturing server)などが含まれることができる。
その他、本文書において述べられる「チャネル(channel)」とは、データを送受信するための経路(path)、手段(means)などを意味し、放送チャネル(チャンネル)(broadcasting channel)を例とすることができる。ここで、放送チャネルは、デジタル放送の活性化によって物理チャネル(physical channel)、仮想チャネル(virtual channel)、論理チャネル(logical channel)などの用語で表現される。放送チャネルは、放送網と呼ばれることができる。このように、放送チャネルは、放送局から提供される放送コンテンツを提供または受信器からアクセス(接近)するためのチャネルのことをいい、上記放送コンテンツは、主にリアルタイムの放送(real-time broadcasting)に基づくから、ライブチャネル(live channel)とも呼ぶ。ただし、最近では、放送のための媒体(medium)がより多様化してリアルタイム放送の他に非リアルタイム(non-real time)放送も活性化されているから、ライブチャネルは、ただリアルタイム放送だけでなく、場合によっては、非リアルタイム放送を含んだ放送チャネル全体を意味する用語として理解されうる。
本文書では、上述した放送チャネルの他に、チャネルと関連して「任意チャネル(arbitrary channel)」をさらに定義する。上記任意チャネルは、放送チャネルと共にEPG(Electronic Program Guide)のようなサービスガイド(service guide)と共に提供されることもでき、任意チャネルだけでサービスガイド、GUI(Graphic User Interface)またはOSD画面(On-Screen Display screen)が構成/提供されることもできる。
一方、送受信器間で予め約束されたチャネル番号(ナンバ)を有する放送チャネルと異なり、任意チャネルは、受信器から任意に割り当てるチャネルであって、上記放送チャネルを表現するためのチャネル番号とは基本的に重複しないチャネル番号が割り当てられる。例えば、受信器は、特定の放送チャネルをチューニングすると、チューニングされたチャネルを介して放送コンテンツおよびそのためのシグナリング情報(signaling information)を転送する放送信号を受信する。ここで、受信器は、上記シグナリング情報からチャネル情報をパージング(parsing)し、パージングされたチャネル情報に基づいてチャネルブラウザ(channel browser)、EPGなどを構成してユーザに提供する。ユーザは、入力手段を介してチャネル切替(転換)リクエストを行うと、受信器は、それに対応する方式である。
このように、放送チャネルは、送受信端間で予め約束された内容であるから、任意チャネルを放送チャネルと重複して割り当てる場合には、ユーザの混同を招くか、または混同の可能性が存在するので、前述したように重複して割り当てないことが好ましい。一方、上記のように、任意のチャネル番号を放送チャネル番号と重複して割り当てなくても、ユーザのチャネルサーフィン過程で依然として混同の恐れがあるから、これを考慮して任意のチャネル番号を割り当てることが求められる。なぜなら、本文書の実施形態による任意チャネルもやはり、従来の放送チャネルと同様に入力手段を介したユーザのチャネル切替リクエストによって同じ方式で対応して、放送チャネルのようにアクセスされるように具現できるからである。したがって、任意チャネル番号は、ユーザの任意チャネルアクセスの便宜と、放送チャネル番号との区分または識別の便宜と、のために、放送チャネルのように数字形態でない任意チャネル-1、任意チャネル-2などのように文字が併記された形態で定義し表示できる。一方、この場合、たとえ、任意チャネル番号の表示は、任意チャネル-1のように文字が併記された形態であっても、受信器内部では、上記放送チャネルの番号のように数字形態で認識し具現されることができる。その他に、任意チャネル番号は、放送チャネルのように数字形態で提供されることもでき、動画チャネル-1、タイトル-1、ビデオ-1などのように放送チャネルと区分可能な多様な方式でチャネル番号を定義し表示することもできる。
デジタル機器は、ウェブサービス(web service)のためにウェブブラウザ(web browser)を実行して、多様な形態のウェブページ(webpage)をユーザに提供する。ここで、上記ウェブページには、動画(video content)が含まれるウェブページも含まれるが、本文書の実施形態では、動画をウェブページから別にまたは独立して分離して処理する。そして、上記分離される動画には、前述した任意チャネル番号を割り当て、サービスガイドなどを介して提供し、ユーザがサービスガイドまたは放送チャネル視聴過程でチャネル切替リクエストによって出力されるように具現できる。その他に、ウェブサービスの他にも、放送コンテンツ、ゲーム、アプリケーションなどのサービスに対しても、所定のコンテンツ、イメージ、オーディオ、項目などを上記放送コンテンツ、ゲーム、アプリケーション自体から独立して分離処理し、その再生、処理などのために任意チャネル番号を割り当て、上述したように具現できる。
図17は、デジタル機器を含んだサービスシステム(service system)の一例を概略的に示した図である。
デジタル機器を含んだサービスシステムは、コンテンツプロバイダ(提供者)(Content Provider;CP)1710、サービスプロバイダ(Service Provider;SP)1720、ネットワークプロバイダ(Network Provider;NP)1730およびHNED(Home Network End User)(Customer)1740を含む。ここで、HNED1740は、例えば、クライアント1700、すなわち、デジタル機器である。コンテンツプロバイダ1710は、各種コンテンツを製作して提供する。このようなコンテンツプロバイダ1710として、図17に示すように、地上波放送送出者(terrestrial broadcaster)、ケーブル放送事業者(cable SO(System Operator))またはMSO(Multiple SO)、衛星放送送出者(satellite broadcaster)、多様なインターネット放送送出者(Internet broadcaster)、個人コンテンツプロバイダ等(Private CPs)などを例示できる。一方、コンテンツプロバイダ1710は、放送コンテンツの他にも多様なアプリケーションなどを提供する。
サービスプロバイダ1720は、コンテンツプロバイダ1710が提供するコンテンツをサービスパッケージ化してHNED1740に提供する。例えば、図17のサービスプロバイダ20は、第1地上波放送、第2地上波放送、ケーブルMSO、衛星放送、多様なインターネット放送、アプリケーションなどをパッケージ化してHNED1740に提供する。
サービスプロバイダ1720は、ユニキャスト(uni-cast)またはマルチキャスト(multi-cast)方式でクライアント1700にサービスを提供する。一方、サービスプロバイダ1720は、データを、予め登録された多数のクライアント1700に一度に転送できるが、このために、IGMP(Internet Group Management Protocol)プロトコルなどを利用できる。
上述したコンテンツプロバイダ1710とサービスプロバイダ1720とは、同じエンティティ(same or single entity)でありうる。例えば、コンテンツプロバイダ1710が製作したコンテンツをサービスパッケージ化してHNED1740に提供することによって、サービスプロバイダ1720の機能も共に行うか、またはその反対でありうる。
ネットワークプロバイダ1730は、コンテンツプロバイダ1710および/またはサービスプロバイダ1720とクライアント1700との間のデータ交換のためのネットワーク網を提供する。
クライアント1700は、ホームネットワークを構築してデータを送受信できる。
一方、サービスシステム内のコンテンツプロバイダ1710および/またはサービスプロバイダ1720は、転送されるコンテンツの保護のために条件付きアクセス(制限受信)(conditional access)またはコンテンツ保護(Content Protection)手段を利用できる。この場合、クライアント1700は、上記条件付きアクセスまたはコンテンツ保護に対応して、ケーブルカード(Cable CARD)(POD:Point of Deployment)、DCAS(Downloadable CAS)などの処理手段を利用できる。
その他に、クライアント1700もネットワーク網(または通信網)を介して、双方向サービスを利用できる。このような場合、むしろクライアント1700がコンテンツプロバイダの機能を行うこともでき、従来のサービスプロバイダ1720は、これを受信してさらに他のクライアントに転送することもできる。
図18は、デジタル機器の一実施形態を説明するために示す構成ブロック図である。ここで、図18は、例えば、図17のクライアント1700に該当でき、前述したデジタル機器を意味する。
デジタル機器1800は、ネットワークインターフェース部(Network Interface)1801、TCP/IPマネージャ(TCP/IP Manager)1802、サービス配送(伝達)マネージャ(Service Delivery Manager)1803、SIデコーダ1804、逆多重化部(Demux)1805、オーディオデコーダ(Audio Decoder)1806、ビデオデコーダ(Video Decoder)1807、ディスプレイ部(Display A/V and OSD Module)1808、サービス制御マネージャ(Service Control Manager)1809、サービスディスカバリマネージャ(Service Discovery Manager)1810、SI&メタデータデータベース(SI & Meta data DB)1811、メタデータマネージャ(Metadata Manager)1812、サービスマネージャ1813、UIマネージャ1814などを含んで構成される。
ネットワークインターフェース部1801は、ネットワーク網を介してIPパケット(Internet Protocol (IP) packets)を受信または転送する。すなわち、ネットワークインターフェース部1801は、ネットワーク網を介してサービスプロバイダ1720からサービス、コンテンツなどを受信する。
TCP/IPマネージャ1802は、デジタル機器1800で受信されるIPパケットとデジタル機器1800が転送するIPパケットとに対して、すなわち、送信元(ソース)(source)と送信先(目的地)(destination)との間のパケット伝達に関与する。そして、TCP/IPマネージャ1802は、受信したパケット(1つまたは複数)を適切なプロトコルに対応するように分類し、サービス配送マネージャ1805、サービスディスカバリマネージャ1810、サービス制御マネージャ1809、メタデータマネージャ1812などに分類されたパケット(1つまたは複数)を出力する。サービス配送マネージャ1803は、受信されるサービスデータの制御を担当する。例えば、サービス配送マネージャ1803は、リアルタイムストリーミング(real-time streaming)データを制御する場合には、RTP/RTCPを使用することができる。上記リアルタイムストリーミングデータをRTPを使用して転送する場合、サービス配送マネージャ1803は、上記受信したデータパケットをRTPに応じてパージング(parsing)して逆多重化部1805に転送するか、またはサービスマネージャ1813の制御によって、SI&メタデータデータベース1811に記憶する。そして、サービス配送マネージャ203は、RTCPを利用して上記ネットワーク受信情報をサービスを提供するサーバ側にフィードバック(feedback)する。逆多重化部1805は、受信したパケットをオーディオ、ビデオ、SI(System Information)データなどで逆多重化して、各々オーディオ/ビデオデコーダ1806/1807、SIデコーダ1804に転送する。
SIデコーダ1804は、例えば、PSI(Program Specific Information)、PSIP(Program and System Information Protocol)、DVB-SI(Digital Video Broadcasting-Service Information)などのサービス情報をデコードする。
また、SIデコーダ1804は、デコードされたサービス情報を、例えば、SI&メタデータデータベース1811に記憶する。このように記憶されたサービス情報は、例えば、ユーザのリクエストなどにより該当構成により読み出されて利用されることができる。
オーディオ/ビデオデコーダ1806/1807は、逆多重化部1805において逆多重化された各オーディオデータおよびビデオデータをデコードする。このようにデコードされたオーディオデータおよびビデオデータは、ディスプレイ部1808を介してユーザに提供される。
アプリケーションマネージャは、例えば、UIマネージャ1814およびサービスマネージャ1813を含んで構成されることができる。アプリケーションマネージャは、デジタル機器1800の全般的な状態を管理しユーザインタフェースを提供し、他のマネージャを管理できる。
UIマネージャ1814は、ユーザのためのGUI(Graphic User Interface)をOSD(On Screen Display)などを利用して提供し、ユーザからキー入力を受けて、上記入力に応じる機器動作を行う。例えば、UIマネージャ1814は、ユーザからチャネル選択に関するキー入力を受けると、上記キー入力信号をサービスマネージャ1813に転送する。
サービスマネージャ1813は、サービス配送マネージャ1803、サービスディスカバリマネージャ1810、サービス制御マネージャ1809、メタデータマネージャ1812など、サービスと関連するマネージャを制御する。
また、サービスマネージャ1813は、チャネルマップ(channel map)を作り、ユーザインタフェースマネージャ1814から受信したキー入力に応じて、上記チャネルマップを利用してチャネルを選択する。そして、上記サービスマネージャ1813は、SIデコーダ1804からチャネルのサービス情報が転送されて、選択されたチャネルのオーディオ/ビデオPID(Packet IDentifier)を逆多重化部1805に設定する。このように設定されるPIDは、上述した逆多重化過程に利用される。したがって、逆多重化部1805は、上記PIDを利用してオーディオデータ、ビデオデータおよびSIデータをフィルタリング(filtering)する。
サービスディスカバリマネージャ1810は、サービスを提供するサービスプロバイダを選択するのに必要な情報を提供する。上記サービスマネージャ1813からチャネル選択に関する信号を受信すると、サービスディスカバリマネージャ1810は、上記情報を利用してサービスを探索する。
サービス制御マネージャ1809は、サービスの選択および制御を担当する。例えば、サービス制御マネージャ1809は、ユーザが従来の放送方式のような生放送(live broadcasting)サービスを選択する場合、IGMPまたはRTSPなどを使用し、VOD(Video on Demand)のようなサービスを選択する場合には、RTSPを使用してサービスの選択、制御を行う。上記RTSPプロトコルは、リアルタイムストリーミングに対してトリックモード(trick mode)を提供できる。また、サービス制御マネージャ209は、IMS(IP Multimedia Subsystem)、SIP(Session Initiation Protocol)を利用して、IMSゲートウェイ1850を介したセッションを初期化し管理できる。上記プロトコルは、一実施形態であり、具現例によって他のプロトコルを使用することもできる。
メタデータマネージャ1812は、サービスと関連するメタデータを管理し、上記メタデータをSI&メタデータデータベース1811に記憶する。
SI&メタデータデータベース1811は、SIデコーダ1804がデコードしたサービス情報、メタデータマネージャ1812が管理するメタデータおよびサービスディスカバリマネージャ1810が提供するサービスプロバイダを選択するのに必要な情報を記憶する。また、SI&メタデータデータベース1811は、システムに対するセットアップデータなどを記憶することができる。
SI&メタデータデータベース1811は、非揮発性メモリ(Non-Volatile RAM:NVRAM)またはフラッシュメモリ(flash memory)などを使用して具現されることもできる。
一方、IMSゲートウェイ1850は、IMSベースのIPTVサービスにアクセスするために必要な機能を集めておいたゲートウェイである。
図19は、デジタル機器の他の実施形態を説明するために示す構成ブロック図である。特に、図19は、デジタル機器の他の実施形態としてモバイル機器の構成ブロック図を例示したものである。
図19を参照すると、モバイル機器1900は、無線通信部1910、A/V(Audio/Video)入力部1920、ユーザ入力部1930、センシング部1940、出力部1950、メモリ1960、インターフェース部1970、制御部1980および電源供給部1990などを含むことができる。図19に示す構成要素は必須のものではないから、それより多くの構成要素を有するか、またはそれより少ない構成要素を有するモバイル機器が具現されることができる。
無線通信部1910は、モバイル機器1900と無線通信システムとの間、またはモバイル機器とモバイル機器が位置するネットワークとの間の無線通信を可能にする一つまたは複数のモジュールを含むことができる。例えば、無線通信部1910は、放送受信モジュール1911、移動通信モジュール1912、無線インターネットモジュール1913、近距離通信モジュール1914および位置情報モジュール1915などを含むことができる。
放送受信モジュール1911は、放送チャネルを介して外部の放送管理サーバから放送信号および/または放送に関連する情報を受信する。ここで、放送チャネルは、衛星チャネル、地上波チャネルを含むことができる。上記放送管理サーバは、放送信号および/もしくは放送関連情報を生成して転送するサーバ、または予め生成された放送信号および/もしくは放送関連情報を提供されて端末機に転送するサーバを意味できる。上記放送信号は、TV放送信号、ラジオ放送信号、データ放送信号を含むだけでなく、TV放送信号またはラジオ放送信号にデータ放送信号が結合した形態の放送信号も含むことができる。
放送関連情報は、放送チャネル、放送プログラムまたは放送サービスプロバイダに関連する情報を意味できる。上記放送関連情報は、移動通信網を介しても提供されいることができる。このような場合には、上記移動通信モジュール1912により受信されることができる。
放送関連情報は、多様な形態、例えば、EPG(Electronic Program Guide)またはESG(Electronic Service Guide)などの形態で存在できる。
放送受信モジュール1911は、例えば、ATSC、DVB-T(Digital Video Broadcasting-Terrestrial)、DVB-S(Satellite)、MediaFLO(Media Forward Link Only)、DVB-H(Handheld)、ISDB-T(Integrated Services Digital Broadcast-Terrestrial)など、デジタル放送システムを利用してデジタル放送信号を受信することができる。もちろん、放送受信モジュール1911は、上述したデジタル放送システムだけでなく、他の放送システムに適合するように構成されることもできる。
放送受信モジュール1911を介して受信した放送信号および/または放送関連情報は、メモリ1960に記憶されることができる。
移動通信モジュール1912は、移動通信網において、基地局、外部端末、サーバのうちの少なくとも一つと無線信号を送受信する。無線信号は、音声信号、画像通話信号または文字/マルチメディアメッセージ送受信に応じる多様な形態のデータを含むことができる。
無線インターネットモジュール1913は、無線インターネット接続のためのモジュールを含んで、モバイル機器1900に内装されるか、または外装されることができる。無線インターネット技術には、WLAN(Wireless LAN)(Wi-Fi)、Wibro(Wireless broadband)、Wimax(World interoperability for Microwave Access)、HSDPA(High Speed Downlink Packet Access)などが利用されることができる。
近距離通信モジュール1914は、近距離通信のためのモジュールのことをいう。近距離通信(short range communication)技術に、ブルートゥース(Bluetooth)(登録商標)、RFID(Radio Frequency IDentification)、赤外線通信(IrDA、Infrared Data Association)、UWB(Ultra Wideband)、ZigBee、RS-232、RS-485などが利用されることができる。
位置情報モジュール315は、モバイル機器1900の位置情報獲得のためのモジュールであって、GPS(Global Position System)モジュールを例とすることができる。
A/V入力部1920は、オーディオおよび/またはビデオ信号入力のためのもので、これには、カメラ1921およびマイク1922などが含まれることができる。カメラ1921は、画像通話モードまたは撮影モードにおいてイメージセンサにより得られる静止画または動画などの画像フレームを処理する。処理された画像フレームは、ディスプレイ部1951に表示されることができる。
カメラ1921において処理された画像フレームは、メモリ1960に記憶されるか、無線通信部1910を介して外部に転送されることができる。カメラ1921は、使用環境によって2つ以上が備えられることができる。
マイク1922は、通話モードまたは録音モード、音声認識モードなどにおいてマイクロフォン(Microphone)により外部の音響信号を受けて、電気的な音声データとして処理する。処理された音声データは、通話モードの場合、移動通信モジュール1912)を介して移動通信基地局に送信可能な形態に変換されて出力されることができる。マイク1922では、外部の音響信号を受け取る過程で発生する雑音(noise)を除去するための多様な雑音除去アルゴリズムが具現されることができる。
ユーザ入力部1930は、ユーザが端末機の動作制御のための入力データを発生させる。ユーザ入力部1930は、キーパッド(key pad)、ドームスイッチ(dome switch)、タッチパッド(静圧/静電)、ジョグホイール(jog wheel)、ジョグスイッチ(jog switch)などで構成されることができる。
センシング部1940は、モバイル機器1900の開閉状態、モバイル機器1900の位置、ユーザ接触の有無、モバイル機器の方位、モバイル機器の加速/減速などのモバイル機器300の現在の状態を感知して、モバイル機器1900の動作制御のためのセンシング信号を発生させる。例えば、モバイル機器1900が移動されるか、または傾いた場合、モバイル機器の位置または勾配などをセンシングできる。また、電源供給部1990の電源供給が可能か否か、インターフェース部1970の外部機器結合が可能か否かなどもセンシングすることができる。一方、センシング部1940は、NFC(Near Field Communication)を含んだ近接センサ1941を含むことができる。
出力部1950は、視覚、聴覚または触覚などと関連する出力を発生させるためのもので、ディスプレイ部1951、音響出力モジュール1952、アラーム部1953、およびハプティックモジュール1954などが含まれることができる。
ディスプレイ部1951は、モバイル機器1900において処理される情報を表示(出力)する。例えば、モバイル機器が通話モードの場合、通話と関連するUI(User Interface)またはGUI(Graphic User Interface)を表示する。モバイル機器1900が画像通話モードまたは撮影モードの場合には、撮影および/または受信した映像またはUI、GUIを表示する。
ディスプレイ部1951は、液晶ディスプレイ(Liquid Crystal Display、LCD)、薄膜トランジスタ液晶ディスプレイ(Thin Film Transistor-Liquid Crystal Display、TFT LCD)、有機発光ダイオード(Organic Light-Emitting Diode、OLED)、フレキシブルディスプレイ(flexible display)、3次元ディスプレイ(3D display)のうちの少なくとも一つを含むことができる。
これらのうちの一部のディスプレイは、それを通じて外部を見ることができるように透明型または光透過型で構成されることができる。これは、透明ディスプレイと呼ばれることができるが、上記透明ディスプレイの代表的な例には、TOLED(Transparent OLED)などがある。ディスプレイ部1951の後方構造もまた、光透過型構造で構成されることができる。このような構造によって、ユーザは、端末機本体(ボディー)のディスプレイ部1951が占める領域を介して、端末機本体(body)の後方に位置する事物を見ることができる。
モバイル機器1900の具現形態によって、ディスプレイ部1951が2個以上存在できる。例えば、モバイル機器1900には、複数のディスプレイ部が一つの面において離隔されるかまたは一体に配置されることができ、また、互いに異なる面において各々配置されることもできる。
ディスプレイ部1951とタッチ動作を感知するセンサ(以下、タッチセンサという)とが相互に階層構造をなす場合(以下、タッチスクリーンという)に、ディスプレイ部1951は、出力装置の他に入力装置としても使用されることができる。タッチセンサは、例えば、タッチフィルム、タッチシート、タッチパッドなどの形態を有することができる。
タッチセンサは、ディスプレイ部1951の特定部位に加えられた圧力またはディスプレイ部1951の特定部位に発生する静電容量などの変化を電気的な入力信号に変換するよう構成されることができる。タッチセンサは、タッチされる位置および面積だけでなく、タッチ時の圧力までも検出できるように構成されることができる。
タッチセンサに対するタッチ入力があると、それに対応する信号(1つまたは複数)は、タッチ制御器に送られる。タッチ制御器は、その信号(1つまたは複数)を処理した後、対応するデータを制御部1980に転送する。これによって、制御部1980は、ディスプレイ部1951のどの領域がタッチされたかが分かるようになる。
タッチスクリーンにより取り囲まれるモバイル機器の内部領域または上記タッチスクリーンの近くに、近接センサ1941が配置されることができる。上記近接センサは、所定の検出面に接近する物体、または近辺に存在する物体の有無を、電子系の力または赤外線を利用して、機械的接触なしで検出するセンサのことを言う。近接センサは、接触式センサより、その寿命が長く、その活用度も高い。
上記近接センサの例には、透過型光電センサ、直接反射型光電センサ、ミラー反射型光電センサ、高周波発振型近接センサ、静電容量型近接センサ、磁気型近接センサ、赤外線近接センサなどがある。上記タッチスクリーンが静電式の場合には、上記ポインタの近接による電界の変化で上記ポインタの近接を検出するよう構成される。この場合、上記タッチスクリーン(タッチセンサ)は、近接センサに分類されることができる。
以下、説明の便宜のために、上記タッチスクリーン上にポインタが接触されずに近接されて、上記ポインタが上記タッチスクリーン上に位置することが認識されるようにする行為を「近接タッチ(proximity touch)」と称し、上記タッチスクリーン上にポインタが実際に接触される行為を「接触タッチ(contact touch)」と称す。上記タッチスクリーン上にポインタで近接タッチされる位置とは、上記ポインタが近接タッチされるときに上記ポインタが上記タッチスクリーンに対して垂直に対応する位置を意味する。
上記近接センサは、近接タッチと、近接タッチパターン(例えば、近接タッチ距離、近接タッチ方向、近接タッチ速度、近接タッチ時間、近接タッチ位置、近接タッチ移動状態など)を感知する。上記感知された近接タッチ動作および近接タッチパターンに相応する情報は、タッチスクリーン上に出力されることができる。
音響出力モジュール1952は、呼信号受信、通話モードもしくは録音モード、音声認識モード、放送受信モードなどにおいて、無線通信部1910から受信されるか、またはメモリ1960に記憶されたオーディオデータを出力できる。音響出力モジュール1952は、モバイル機器1900において行われる機能(例えば、呼信号受信音、メッセージ受信音など)と関連する音響信号を出力することもある。このような音響出力モジュール1952には、レシーバ(receiver)、スピーカ(speaker)、ブザー(buzzer)などが含まれることができる。
アラーム部1953は、モバイル機器1900のイベント発生を知らせるための信号を出力する。モバイル機器から発生するイベントの例には、呼信号受信、メッセージ受信、キー信号入力、タッチ入力などがある。アラーム部1953は、ビデオ信号またはオーディオ信号の他に他の形態、例えば振動でイベント発生を知らせるための信号を出力することもできる。
上記ビデオ信号またはオーディオ信号は、ディスプレイ部1951または音声出力モジュール1952を介しても出力されうるから、これら1951、1952は、アラーム部1953の一部として分類されることができる。
ハプティックモジュール(haptic module)1954は、ユーザが感じることができる多様な触覚効果を発生させる。ハプティックモジュール1954が発生させる触覚効果の代表的な例には、振動がある。ハプティックモジュール1954が発生する振動の強度およびパターンなどは制御可能である。例えば、互いに異なる振動を合成して出力するか、または順次出力することもできる。
ハプティックモジュール1954は、振動の他にも、接触皮膚面に対して垂直運動するピン配列、噴射口または吸入口を介した空気の噴射力または吸込力、皮膚表面に対する擦れ、電極(electrode)の接触、静電気などの磁極による効果と、吸熱または発熱可能な素子を利用した冷温感の再現による効果など、多様な触覚効果を発生させることができる。
ハプティックモジュール1954は、直接的な接触を介して触覚効果を伝達できるだけでなく、ユーザが手指または腕などの筋感覚を介して触覚効果を感じることができるように具現することもできる。ハプティックモジュール1954は、モバイル機器1900の構成態様によって2個以上が備えられることができる。
メモリ1960は、制御部1980の動作のためのプログラムを記憶することができ、入/出力されるデータ(例えば、電話帳(フォンブック)、メッセージ、静止画、動画など)を一時記憶することができる。上記メモリ1960は、上記タッチスクリーン上のタッチ入力時に出力される多様なパターンの振動および音響に関するデータを記憶することができる。
メモリ1960は、フラッシュメモリタイプ(flash memory type)、ハードディスクタイプ(hard disk type)、マルチメディアカードマイクロタイプ(multimedia card micro type)、カードタイプのメモリ(例えば、SDまたはXDメモリなど)、ラム(Random Access Memory、RAM)、SRAM(Static Random Access Memory)、ロム(Read-Only Memory、ROM)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、PROM(Programmable Read-Only Memory)、磁気メモリ、磁気ディスク、光ディスクのうちの少なくとも一つのタイプの記憶媒体を含むことができる。モバイル機器1900は、インターネット(internet)上において上記メモリ1960の記憶機能を行うウェブストレージ(web storage)と関連して動作することもできる。
インターフェース部1970は、モバイル機器1900に接続するすべての外部機器との通信路の役割を担う。インターフェース部1970は、外部機器からデータを転送されるか、または電源の供給を受けてモバイル機器1900の内部の各構成要素に伝達するか、またはモバイル機器1900の内部のデータが外部機器に転送されるようにする。例えば、有/無線ヘッドセットポート、外部充電器ポート、有/無線データポート、メモリカード(memory card)ポート、識別モジュールが備えられた装置を接続するポート、オーディオI/O(Input/Output)ポート、ビデオI/Oポート、イヤホンポートなどがインターフェース部1970に含まれることができる。
識別モジュールは、モバイル機器1900の使用権限を認証するための各種情報を記憶したチップとして、ユーザ認証モジュール(User Identify Module、UIM)、加入者認証モジュール(Subscriber Identify Module、SIM)、汎用ユーザ認証モジュール(Universal Subscriber Identity Module、USIM)などを含むことができる。識別モジュールが備えられた装置(以下、識別装置)は、スマートカード(smart card)形式で製作されることができる。したがって、識別装置は、ポートを介して端末機1900に接続されることができる。
インターフェース部1970は、移動端末機1900が外部クレードル(cradle)に接続されるとき、上記クレードルからの電源が上記移動端末機1900に供給される通信路になるか、またはユーザにより上記クレードルから入力される各種の命令信号が上記移動端末機に伝達される通信路になることができる。クレードルから入力される各種命令信号または上記電源は、移動端末機が上記クレードルに正確に装着されたことを認知するための信号として動作されうる。
制御部1980は、通常、モバイル機器の全般的な動作を制御する。例えば、音声通話、データ通信、画像通話などのための関連する制御および処理を行う。制御部380は、マルチメディア再生のためのマルチメディアモジュール1981を具備することもできる。マルチメディアモジュール1981は、制御部1980内に具現されることもでき、制御部1980と別に具現されることもできる。制御部1980、特にマルチメディアモジュール1981は、前述したエンコード装置および/またはデコード装置を含むことができる。
制御部1980は、タッチスクリーン上において行なわれる筆記入力または絵描き入力を各々文字およびイメージとして認識できるパターン認識処理を行うことができる。
電源供給部1990は、制御部1980の制御により外部の電源、内部の電源を受け取って、各構成要素の動作に必要な電源を供給する。
ここに説明される多様な実施形態は、例えば、ソフトウェア、ハードウェアまたはこれらの組合わせられたものを利用して、コンピュータまたはこれと類似の装置で読み出すことのできる記録媒体内で具現されることができる。
ハードウェアによる具現によれば、ここに説明される実施形態は、ASICs(Application Specific Integrated Circuits)、DSPs(Digital Signal Processors)、DSPDs(Digital Signal Processing Devices)、PLDs(Programmable Logic Devices)、FPGAs(field programmable gate arrays、プロセッサ、制御器、マイクロコントローラ(micro-controllers)、マイクロプロセッサ(microprocessors)、その他、機能を行うための電気的なユニットのうちの少なくとも一つを利用して具現されることができる。一部の場合に、本明細書において説明される実施形態が制御部1980自体で具現されることができる。
ソフトウェアによる具現によれば、本明細書において説明される手順および機能などの実施形態は、別のソフトウェアモジュールにより具現されることができる。ソフトウェアモジュールの各々は、本明細書において説明される一つまたは複数の機能および作動を行うことができる。適切なプログラム言語で作成されたソフトウェアアプリケーションによりソフトウェアコードが具現されることができる。ここで、ソフトウェアコードは、メモリ1960に記憶され、制御部1980により実行されることができる。
図20は、本文書の実施形態(1つまたは複数)が活用されることができる3次元映像/ビデオサービス提供のためのアーキテクチャを概略的に示す。これは、360度またはomnidirectionalビデオ/イメージ処理システムを示すことができる。また、これは、例えば拡張現実(XR:eXtended Reality)サポート機器において具現されることができる。すなわち、上記システムは、ユーザに仮想現実を提供する方式を提供できる。
拡張現実は、仮想現実(VR:Virtual Reality)、増強現実(AR:Augmented Reality)、混合現実(MR:Mixed Reality)を総称する。VR技術は、現実世界の客体または背景などをCG映像だけで提供し、AR技術は、実際の事物の映像の上に仮想で作られたCG映像を共に提供し、MR技術は、現実世界に仮想客体を混ぜて結合させて提供するコンピュータグラフィック技術である。
MR技術は、現実客体と仮想客体とを共に見せるという点でAR技術と似ている。しかしながら、AR技術では、仮想客体が現実客体を補完する形態で使用されることに対し、MR技術では、仮想客体と現実客体とが同等な性格で使用されるという点に差異がある。
XR技術は、HMD(Head-Mount Display)、HUD(Head-Up Display)、携帯電話、タブレットPC、ラップトップ、デスクトップ、TV、デジタル署名(サイニジ)などに適用されることができ、XR技術が適用された装置をXR装置(XR Device)と称することができる。XR装置は、後述する第1デジタル装置および/または第2デジタル装置を含むことができる。
360度コンテンツは、VRを具現、提供するためのコンテンツ全般を意味し、360度ビデオおよび/または360度オーディオを含むことができる。360度ビデオは、VRを提供するために必要な、同時にすべての方向(360度またはそれ以下)にキャプチャされるか、または再生される、ビデオまたはイメージコンテンツを意味できる。以下、360ビデオとは、360度ビデオを意味できる。360度オーディオもやはり、VRを提供するためのオーディオコンテンツとして、音響発生地点が3次元の特定空間上に位置すると認知できる、空間的(Spatial)オーディオコンテンツを意味できる。360度コンテンツは、生成、処理されてユーザに転送されることができ、ユーザは、360度コンテンツを利用してVR経験を消費できる。360度ビデオは、全方向(omnidirectional)ビデオと呼ばれることができ、360度イメージは、全方向イメージと呼ばれることができる。また、以下、360ビデオに基づいて説明し、本文書の実施形態(1つまたは複数)は、VRに限定されず、AR、MRなどのビデオ/映像コンテンツに対する処理を含むことができる。360度ビデオは、3Dモデルに応じて多様な形態の3D空間上に現されるビデオまたはイメージを意味でき、例えば360度ビデオは、球形面(Spherical surface)上に現されることができる。
本方法は、特に360度ビデオを効果的に提供する方式を提案する。360度ビデオを提供するために、まず、一つまたは複数のカメラを介して360度ビデオがキャプチャされうる。キャプチャされた360度ビデオは、一連の過程を経て転送され、受信側では、受信したデータを再度本来の360度ビデオで加工してレンダリングできる。これによって360度ビデオがユーザに提供されることができる。
具体的には、360度ビデオ提供のための全体の過程は、キャプチャ過程(process)、準備過程、転送過程、処理(プロセシング)過程、レンダリング過程および/またはフィードバック過程を含むことができる。
キャプチャ過程は、一つまたは複数のカメラを介して複数の視点各々に対するイメージまたはビデオをキャプチャする過程を意味できる。キャプチャ過程により示された図20の(2010)のようなイメージ/ビデオデータが生成されることができる。図示の図20の(2010)の各平面は、各視点に対するイメージ/ビデオを意味できる。このキャプチャされた複数のイメージ/ビデオをロー(生)(raw)データということができる。キャプチャ過程においてキャプチャと関連するメタデータが生成されることができる。
このキャプチャのために、VRのための特殊カメラが使用されることができる。実施形態によって、コンピュータで生成された仮想の空間に対する360度ビデオを提供しようとする場合、実際のカメラを介したキャプチャが行われない場合がありうる。この場合、単に関連データが生成される過程によって該当キャプチャ過程が置き替えられることができる。
準備過程は、キャプチャされたイメージ/ビデオおよびキャプチャ過程で発生したメタデータを処理する過程でありうる。キャプチャされたイメージ/ビデオは、この準備過程で、ステッチング過程、プロジェクション過程、リージョン別パッキング過程(Region-wise Packing)および/またはエンコード過程などを経ることができる。
まず、各々のイメージ/ビデオがステッチング(Stitching)過程を経ることができる。ステッチング過程は、各々のキャプチャされたイメージ/ビデオを接続して、一つのパノラマイメージ/ビデオまたは球形のイメージ/ビデオを作る過程でありうる。
この後、ステッチングされたイメージ/ビデオは、プロジェクション(Projection)過程を経ることができる。プロジェクション過程で、ステッチングされたイメージ/ビデオは、2Dイメージ上にプロジェクションされることができる。この2Dイメージは、文脈によって2Dイメージフレームと呼ばれることができる。2Dイメージでプロジェクションすることを2Dイメージにマッピングすると表現することもできる。プロジェクションされたイメージ/ビデオデータは、図示の図20の(2020)のような2Dイメージの形態になることができる。
2Dイメージ上にプロジェクションされたビデオデータは、ビデオコーディング効率などを高めるために、リージョン別パッキング過程(Region-wise Packing)を経ることができる。リージョン別パッキングとは、2Dイメージ上にプロジェクションされたビデオデータをリージョン(Region)別に分けて処理を加える過程を意味できる。ここで、リージョン(Region)とは、360度ビデオデータがプロジェクションされた2Dイメージが分けられた領域を意味できる。このリージョンは、実施形態によって、2Dイメージを均等に分けて区分されるか、任意に分けられて区分されることができる。また、実施形態によって、リージョンは、プロジェクションスキームによって区分されることもできる。リージョン別パッキング過程は、オプション(選択的)(optional)過程で、準備過程で省略されることができる。
実施形態によって、この処理過程は、ビデオコーディング効率を上げるために、各リージョンを回転するか、または2Dイメージ上において再配列する過程を含むことができる。例えば、リージョンを回転してリージョンの特定の辺が互いに近接して位置するようにすることによって、コーディングのときの効率が高まるようにすることができる。
実施形態によって、この処理過程は、360度ビデオ上の領域別に解像度(レゾリューション)(resolution)を異ならせる(差動化する)ために、特定リージョンに対する解像度を高めるか、または低くする過程を含むことができる。例えば、360度ビデオ上において相対的により重要な領域に該当するリージョンは、他のリージョンより解像度を高くすることができる。2Dイメージ上にプロジェクションされたビデオデータまたはリージョン別にパッキングされたビデオデータは、ビデオコーデックを介したエンコード過程を経ることができる。
実施形態によって、準備過程は、付加的に編集(エディティング)(editing)過程などをさらに含むことができる。この編集過程でプロジェクション前後のイメージ/ビデオデータに対する編集などがさらに行われることができる。準備過程でも同様に、ステッチング/プロジェクション/エンコード/編集などに関するメタデータが生成されることができる。また、2Dイメージ上にプロジェクションされたビデオデータの初期視点(時点)、あるいはROI(Region of Interest)などに関するメタデータが生成されることができる。
転送過程は、準備過程を経たイメージ/ビデオデータおよびメタデータを処理して転送する過程でありうる。転送のために任意の転送プロトコルに応じる処理が行われることができる。転送のための処理を終えたデータは、放送網および/またはブロードバンドを介して伝達されることができる。このデータは、オンデマンド(On Demand)方式で受信側に伝達されることもできる。受信側では、多様な経路を介して該当データを受信することができる。
処理過程は、受信したデータをデコードし、プロジェクションされているイメージ/ビデオデータを3Dモデル上に再プロジェクション(Re-projection)する過程を意味できる。この過程において2Dイメージ上にプロジェクションされているイメージ/ビデオデータが3D空間上に再プロジェクションされることができる。この過程を文脈によってマッピング、プロジェクションと呼ぶこともできる。このとき、マッピングされる3D空間は、3Dモデルによって他の形態を有することができる。例えば、3Dモデルには、球形(Sphere)、キューブ(Cube)、シリンダ(Cylinder)またはピラミッド(Pyramid)がありうる。
実施形態によって、処理過程は、付加的に編集(editing)過程、アップスケーリング(up scaling)過程などをさらに含むことができる。この編集過程において、再プロジェクション前後のイメージ/ビデオデータに対する編集などがさらに行われることができる。イメージ/ビデオデータが縮小されている場合、アップスケーリング過程でサンプルのアップスケーリングを介してその大きさを拡大できる。必要な場合、ダウンスケーリングを介してサイズを縮小する作業が行われることもできる。
レンダリング過程は、3D空間上に再プロジェクションされたイメージ/ビデオデータをレンダリングして表示する過程を意味できる。表現によって再プロジェクションとレンダリングとを合わせて3Dモデル上にレンダリングすると表現することもできる。3Dモデル上に再プロジェクションされた(または3Dモデル上にレンダリングされた)イメージ/ビデオは、図示の図20の(2030)のような形態を有することができる。図示の図20の(2030)は、球形(Sphere)の3Dモデルに再プロジェクションされた場合である。ユーザは、VRディスプレイなどを介してレンダリングされたイメージ/ビデオの一部の領域を見ることができる。このとき、ユーザが見ることになる領域は、図示の図20の(2040)のような形態でありうる。
フィードバック過程は、ディスプレイ過程で獲得されうる多様なフィードバック情報を送信側に伝達する過程を意味できる。フィードバック過程を介して360度ビデオの消費においてインタラクティビティ(Interactivity)が提供されることができる。実施形態によって、フィードバック過程でヘッドオリエンテーション(Head Orientation)情報、ユーザが現在見ている領域を表すビューポート(Viewport)情報などが送信側に伝達されることができる。実施形態によって、ユーザは、VR環境上に具現されたものと相互作用することもできるので、この場合、その相互作用と関連する情報がフィードバック過程で送信側またはサービスプロバイダ側に伝達されることもありうる。実施形態によって、フィードバック過程は行われないこともありうる。
ヘッドオリエンテーション情報は、ユーザの頭の位置、角度、動きなどに関する情報を意味できる。この情報に基づいて、ユーザが現在360度ビデオ内で見ている領域に関する情報、すなわちビューポート情報が計算されることができる。
ビューポート情報は、現在ユーザが360度ビデオで見ている領域に関する情報でありうる。これによりゲイズ分析(Gaze Analysis)が行われて、ユーザがどのような方式で360度ビデオを消費しているか、360度ビデオのどの領域をどれくらい凝視しているかなどを確認することもできる。ゲイズ分析は、受信側で行われて送信側へフィードバックチャネルを介して伝達されうる。VRディスプレイなどの装置は、ユーザの頭の位置/方向、装置がサポートする垂直(vertical)あるいは水平(horizontal)FOV(Field Of View)情報などに基づいて、ビューポート領域を抽出できる。
一方、サブピクチャに基づいて360度ビデオ/イメージが処理されることができる。2Dイメージを含むプロジェクティドピクチャまたはパックドピクチャは、サブピクチャで区分されることができ、サブピクチャ単位で処理が行われることができる。例えば、ユーザビューポートなどによって特定サブピクチャ(1つもしくは複数)に対して高い解像度を与えることもでき、または特定サブピクチャ(1つもしくは複数)だけをエンコードして、受信装置(デコード装置側)にシグナリングすることもできる。この場合、サブピクチャビットストリームを、デコード装置は、受信して、上記特定サブピクチャ(1つまたは複数)を復元/デコードし、ユーザビューポートに従ってレンダリングできる。
実施形態によって、前述したフィードバック情報は、送信側に伝達されるだけでなく、受信側で消費されることもできる。すなわち、前述したフィードバック情報を利用して、受信側のデコード、再プロジェクション、レンダリング過程などが行われることができる。例えば、ヘッドオリエンテーション情報および/またはビューポート情報を利用して、現在ユーザが見ている領域に対する360度ビデオだけを優先的にデコードおよびレンダリングすることもできる。
ここで、ビューポート(viewport)またはビューポート領域とは、ユーザが360度ビデオで見ている領域を意味できる。視点(viewpoint)は、ユーザが360度ビデオで見ているポイント(地点)であって、ビューポート領域の真中のポイントを意味できる。すなわち、ビューポートは、視点を中心とした領域であるが、その領域が占める大きさや形態などは、FOV(Field Of View)により決定されることができる。
前述した360度ビデオの提供のための全体アーキテクチャ内で、キャプチャ/プロジェクション/エンコード/転送/デコード/再プロジェクション/レンダリングの一連の過程を経るようになるイメージ/ビデオデータを、360度ビデオデータと呼ぶことができる。360度ビデオデータという用語は、また、このようなイメージ/ビデオデータと関連するメタデータまたはシグナリング情報を含む概念として使用されることができる。
上述したオーディオまたはビデオなどのメディアデータを記憶し転送するために、定形化したメディアファイルフォーマットが定義されることができる。実施形態によって、メディアファイルは、ISO BMFF(ISO Base Media File Format)に基づいたファイルフォーマットを有することができる。
図21は、本方法が適用されることができる第1デジタル装置の構成を概略的に説明する図である。上記第1デジタル装置は、VR/ARコンテンツなどの3次元映像/ビデオサービス提供のための送信側に該当できる。上記第1デジタル装置は、本文書において詳説したエンコード装置を含むことができる。上記エンコード装置は、上記データエンコーダに含まれるか、または対応できる。
第1デジタル装置は、前述した準備過程もしくは転送過程に関連する動作を行うことができる。第1デジタル装置は、データ入力部、ステッチャ(Stitcher)、プロジェクション処理部、リージョン別パッキング処理部(図示せず)、メタデータ処理部、(送信側)フィードバック処理部、データエンコーダ、カプセル化(インキャプサレイション)処理部、転送処理部および/または転送部を内/外部エレメントとして含むことができる。
データ入力部は、キャプチャされた各視点別イメージ/ビデオを受け取ることができる。この視点別イメージ/ビデオは、一つまたは複数のカメラによりキャプチャされたイメージ/ビデオでありうる。また、データ入力部は、キャプチャ過程で発生したメタデータを受け取ることができる。データ入力部は、入力された視点別イメージ/ビデオをステッチャに伝達し、キャプチャ過程のメタデータをシグナリング処理部に伝達できる。
ステッチャは、キャプチャされた視点別イメージ/ビデオに対するステッチング作業を行うことができる。ステッチャは、ステッチングされた360度ビデオデータをプロジェクション処理部に伝達できる。ステッチャは、必要な場合、メタデータ処理部から必要なメタデータを伝達されて、ステッチング作業に利用できる。ステッチャは、ステッチング過程で発生するメタデータをメタデータ処理部に伝達できる。ステッチング過程のメタデータには、ステッチングが行われたかどうか、ステッチングタイプなどの情報がありうる。
プロジェクション処理部は、ステッチングされた360度ビデオデータを2Dイメージ上にプロジェクションできる。プロジェクション処理部は、多様なスキーム(scheme)に従ってプロジェクションを行うことができるが、これについては後述する。プロジェクション処理部は、各視点別360度ビデオデータの該当デプス(depth)を考慮してマッピングを行うことができる。プロジェクション処理部は、必要な場合、メタデータ処理部からプロジェクションに必要なメタデータを伝達されて、プロジェクション作業に利用できる。プロジェクション処理部は、プロジェクション過程で発生するメタデータをメタデータ処理部に伝達できる。プロジェクション処理部のメタデータには、プロジェクションスキームの種類などがありうる。
リージョン別パッキング処理部(図示せず)は、前述したリージョン別パッキング過程を行うことができる。すなわち、リージョン別パッキング処理部は、プロジェクションされた360度ビデオデータをリージョン別に分け、各リージョンを回転、再配列するか、または各リージョンの解像度を変更するなどの処理を行うことができる。前述したように、リージョン別パッキング過程は、オプション(optional)過程であり、リージョン別パッキンが行われない場合、リージョン別パッキング処理部は省略できる。リージョン別パッキング処理部は、必要な場合、メタデータ処理部からリージョン別パッキンに必要なメタデータを受け取ってリージョン別パッキン作業に利用できる。リージョン別パッキング処理部は、リージョン別パッキング過程で発生したメタデータをメタデータ処理部に伝達できる。リージョン別パッキング処理部のメタデータには、各リージョンの回転程度、サイズなどがありうる。
前述したステッチャ、プロジェクション処理部および/またはリージョン別パッキング処理部は、実施形態によって、一つのハードウェアコンポーネントで行われることもできる。
メタデータ処理部は、キャプチャ過程、ステッチング過程、プロジェクション過程、リージョン別パッキング過程、エンコード過程、カプセル化過程および/または転送のための処理過程で発生し得るメタデータを処理できる。メタデータ処理部は、このようなメタデータを利用して360度ビデオ関連メタデータを生成できる。実施形態によって、メタデータ処理部は、360度ビデオ関連メタデータをシグナリングテーブルの形態で生成することができる。シグナリングコンテキストによって、360度ビデオ関連メタデータは、メタデータまたは360度ビデオ関連シグナリング情報と呼ばれることもできる。また、メタデータ処理部は、獲得または生成したメタデータを、必要によって第1デジタル装置の内部エレメントに伝達できる。メタデータ処理部は、360度ビデオ関連メタデータが受信側に転送されうるように、データエンコーダ、カプセル化処理部および/または転送処理部に伝達できる。
データエンコーダは、2Dイメージ上にプロジェクションされた360度ビデオデータおよび/またはリージョン別パッキングされた360度ビデオデータをエンコードできる。360度ビデオデータは、多様なフォーマットでエンコードされることができる。上記2Dイメージ上にプロジェクションされた360度ビデオデータおよび/またはリージョン別パッキングされた360度ビデオデータは、エンコード装置の入力である(2Dベース)入力ピクチャに該当できる。この場合、本文書の実施形態において提案した方法に基づいて、一つまたは一連の入力ピクチャがエンコードされて、ビットストリーム形態で出力されることができる。上記ビットストリームは、360度ビデオデータに含まれることができる。
カプセル化処理部は、360度ビデオデータおよび/または360度ビデオ関連メタデータをファイルなどの形態でカプセル化できる。ここで360度ビデオ関連メタデータは、前述したメタデータ処理部から受け取ったものでありうる。カプセル化処理部は、該当データをISOBMFF、CFFなどのファイルフォーマットでカプセル化するか、その他のDASHセグメントなどの形態で処理できる。カプセル化処理部は、実施形態によって、360度ビデオ関連メタデータをファイルフォーマット上に含めることができる。360度ビデオ関連メタデータは、例えば、ISOBMFFファイルフォーマット上の多様なレベルのボックス(box)に含まれるか、またはファイル内で別のトラック内のデータとして含まれることができる。実施形態によって、カプセル化処理部は、360度ビデオ関連メタデータ自体をファイルでカプセル化できる。転送処理部は、ファイルフォーマットによってカプセル化された360度ビデオデータに転送のための処理を加えることができる。転送処理部は、任意の転送プロトコルに従って360度ビデオデータを処理できる。転送のための処理には、放送網を介した伝達のための処理、ブロードバンドを介した伝達のための処理を含むことができる。実施形態によって、転送処理部は、360度ビデオデータだけでなく、メタデータ処理部から360度ビデオ関連メタデータを受け取って、これに転送のための処理を加えることもできる。
転送部は、転送処理された360度ビデオデータおよび/または360度ビデオ関連メタデータを放送網および/またはブロードバンドを介して転送できる。転送部は、放送網を介した転送のためのエレメントおよび/またはブロードバンドを介した転送のためのエレメントを含むことができる。
本方法による第1デジタル装置の一実施形態によれば、第1デジタル装置は、データ記憶部(図示せず)を内/外部エレメントとしてさらに含むことができる。データ記憶部は、エンコードされた360度ビデオデータおよび/または360度ビデオ関連メタデータを転送処理部に伝達する前に記憶していることができる。このデータが記憶される形態は、ISOBMFFなどのファイル形態でありうる。リアルタイムで360度ビデオを転送する場合には、データ記憶部が要らないこともありうるが、オンデマンド、NRT(Non Real Time)、ブロードバンドなどを介して伝達する場合には、カプセル化された360データがデータ記憶部に一定期間記憶されてから転送されることもできる。
本方法による第1デジタル装置の他の実施形態によれば、第1デジタル装置は、(送信側)フィードバック処理部および/またはネットワークインターフェース(図示せず)を内/外部エレメントとしてさらに含むことができる。ネットワークインターフェースは、本方法による第2デジタル装置からフィードバック情報を受け取り、これを送信側フィードバック処理部に伝達できる。送信側フィードバック処理部は、フィードバック情報をステッチャ、プロジェクション処理部、リージョン別パッキング処理部、データエンコーダ、カプセル化処理部、メタデータ処理部および/または転送処理部に伝達できる。実施形態によって、フィードバック情報は、メタデータ処理部に一応伝達された後、再度各内部エレメントに伝達されることができる。フィードバック情報を受け取った内部エレメントは、以後の360度ビデオデータの処理にフィードバック情報を反映できる。
本方法による第1デジタル装置のさらに他の実施形態によれば、リージョン別パッキング処理部は、各リージョンを回転して2Dイメージ上にマッピングできる。このとき、各リージョンは、互いに異なる方向、互いに異なる角度で回転されて2Dイメージ上にマッピングされることができる。リージョンの回転は、360度ビデオデータが球形の面上においてプロジェクション前に隣接した部分、ステッチングされた部分などを考慮して行われることができる。リージョンの回転に関する情報、すなわち回転方向、角度などは、360度ビデオ関連メタデータによりシグナリングされうる。本発明による第1デジタル装置のさらに他の実施形態によれば、データエンコーダは、各リージョン別に異なってエンコードを行うことができる。データエンコーダは、特定リージョンでは、高い品質(クォリティー)で、他のリージョンでは、低い品質でエンコードを行うことができる。送信側フィードバック処理部は、360度ビデオ受信装置から受け取ったフィードバック情報をデータエンコーダに伝達して、データエンコーダがリージョン別に異なった(差動化された)エンコード方法を使用するようにすることができる。例えば、送信側フィードバック処理部は、受信側から受け取ったビューポート情報をデータエンコーダに伝達できる。データエンコーダは、ビューポート情報が指示する領域を含むリージョンに対して、他のリージョンよりさらに高い品質(UHDなど)でエンコードを行うことができる。
本方法による第1デジタル装置のさらに他の実施形態によれば、転送処理部は、各リージョン別に異なって、転送のための処理を行うことができる。転送処理部は、リージョン別に他の転送パラメータ(変調次数(モジュレーションオーダー)、符号化率(コードレート)など)を適用して、各リージョン別に伝達されるデータのロバスト(頑強)性(robustness)を異なるようにすることができる。
このとき、送信側フィードバック処理部は、第2デジタル装置から受け取ったフィードバック情報を転送処理部に伝達して、転送処理部がリージョン別に異なる(差動化される)転送処理を行うようにすることができる。例えば、送信側フィードバック処理部は、受信側から受け取ったビューポート情報を転送処理部に伝達できる。転送処理部は、該当ビューポート情報が指示する領域を含むリージョンに対して、他のリージョンよりさらに高いロバスト性を有するように転送処理を行うことができる。
前述した本方法による第1デジタル装置の内/外部エレメントは、ハードウェアにより具現されるハードウェアエレメントでありうる。実施形態によって、内/外部エレメントは、変更、省略されるか、または他のエレメントに代替、統合されることができる。実施形態によって、付加エレメントが第1デジタル装置に追加されることもできる。
図22は、本方法が適用されることができる第2デジタル装置の構成を概略的に説明する図である。上記第2デジタル装置は、VR/ARコンテンツなどの3次元映像/ビデオサービス提供のための受信側に該当できる。上記第2デジタル装置は、本文書において詳説したデコード装置を含むことができる。上記デコード装置は、上記データデコーダに含まれるか、または対応できる。
本方法による第2デジタル装置は、前述した処理過程および/またはレンダリング過程に関連する動作を行うことができる。第2デジタル装置は、受信部、受信処理部、デカプセル化(ディーキャプサレイション)処理部、データデコーダ、メタデータパーサ、(受信側)フィードバック処理部、再プロジェクション処理部および/またはレンダラを内/外部エレメントとして含むことができる。一方、シグナリングパーサは、メタデータパーサと呼ばれることができる。
受信部は、本方法による第1デジタル装置が転送した360度ビデオデータを受信することができる。転送されるチャネルに応じて、受信部は、放送網を介して360度ビデオデータを受信することもでき、ブロードバンドなどの通信網を介して360度ビデオデータを受信することもできる。
受信処理部は、受信した360度ビデオデータに対して転送プロトコルに応じる処理を行うことができる。転送側から転送のための処理が行われたことに対応するように、受信処理部は、前述した転送処理部の逆過程を行うことができる。受信処理部は、獲得した360度ビデオデータをデカプセル化処理部に伝達し、獲得した360度ビデオ関連メタデータをメタデータパーサに伝達できる。受信処理部が獲得する360度ビデオ関連メタデータは、シグナリングテーブルの形態でありうる。
デカプセル化処理部は、受信処理部から受け取ったファイル形態の360度ビデオデータをデカプセル化できる。デカプセル化処理部は、ISOBMFFなどに応じるファイルをデカプセル化して、360度ビデオデータまたは360度ビデオ関連メタデータを獲得できる。獲得された360度ビデオデータは、データデコーダに、獲得された360度ビデオ関連メタデータは、メタデータパーサに伝達できる。デカプセル化処理部が獲得する360度ビデオ関連メタデータは、ファイルフォーマット内のボックスまたはトラック形態でありうる。デカプセル化処理部は、必要な場合、メタデータパーサからデカプセル化に必要なメタデータを受け取ることもできる。
データデコーダは、360度ビデオデータに対するデコードを行うことができる。データデコーダは、360度ビデオデータから映像/ビデオ関連ビットストリームを獲得し、上記ビットストリームをデコードして一つまたは一連の(2D)ピクチャをデコード/復元できる。
データデコーダは、メタデータパーサからデコードに必要なメタデータを受け取ることもできる。データデコード過程で獲得された360度ビデオ関連メタデータは、メタデータパーサに伝達されることもできる。
メタデータパーサは、360度ビデオ関連メタデータに対するパージング/デコードを行うことができる。メタデータパーサは、獲得したメタデータをデータデカプセル化処理部、データデコーダ、再プロジェクション処理部および/またはレンダラに伝達できる。
再プロジェクション処理部は、360度ビデオデータに関するデコードされた/復元された2Dピクチャ(1つまたは複数)に対して再プロジェクションを行うことができる。再プロジェクション処理部は、2Dピクチャ(1つまたは複数)を3D空間に再プロジェクションできる。3D空間は、使用される3Dモデルに応じて異なる形態を有することができる。再プロジェクション処理部は、メタデータパーサから再プロジェクションに必要なメタデータを受け取ることもできる。例えば、再プロジェクション処理部は、使用される3Dモデルのタイプおよびその詳細情報に関する情報をメタデータパーサから受け取ることができる。実施形態によって、再プロジェクション処理部は、再プロジェクションに必要なメタデータを利用して、3D空間上の特定領域に該当する360度ビデオデータ(に対するデコードされた/復元されたピクチャの領域)だけを3D空間に再プロジェクションすることもできる。
レンダラは、再プロジェクションされた360度ビデオ(または映像)をレンダリングできる。前述したように、360度ビデオが3D空間上にレンダリングされると表現することもできるので、このように二つの過程が一度に起きる場合、再プロジェクション処理部とレンダラとは統合されて、レンダラでこの過程が全部進行することができる。実施形態によって、レンダラは、ユーザの視点情報によって、ユーザが見ている部分だけをレンダリングすることもできる。
ユーザは、VRディスプレイなどを介してレンダリングされた360度ビデオの一部領域を見ることができる。VRディスプレイは、360度ビデオを再生する装置として、第2デジタル装置に含まれることもでき(tethered)、別の装置として第2デジタル装置に接続されることもできる(un-tethered)。
本方法による第2デジタル装置の一実施形態によれば、第2デジタル装置は、(受信側)フィードバック処理部および/またはネットワークインターフェース(図示せず)を内/外部エレメントとしてさらに含むことができる。受信側フィードバック処理部は、レンダラ、再プロジェクション処理部、データデコーダ、デカプセル化処理部および/またはVRディスプレイからフィードバック情報を獲得して処理できる。フィードバック情報は、ビューポート情報、ヘッドオリエンテーション情報、ゲイズ(Gaze)情報などを含むことができる。ネットワークインターフェースは、フィードバック情報を受信側フィードバック処理部から受け取り、これを第1デジタル装置に転送できる。
前述したように、フィードバック情報は、送信側に伝達されることだけでなく、受信側で消費されることもできる。受信側フィードバック処理部は、獲得したフィードバック情報を第2デジタル装置の内部エレメントに伝達して、レンダリングなどの過程に反映されるようにすることができる。受信側フィードバック処理部は、フィードバック情報をレンダラ、再プロジェクション処理部、データデコーダおよび/またはデカプセル化処理部に伝達できる。例えば、レンダラは、フィードバック情報を活用してユーザが見ている領域を優先的にレンダリングできる。また、デカプセル化処理部、データデコーダなどは、ユーザが見ている領域もしくは見ることになる領域を優先的にデカプセル化、デコードできる。
前述した本方法による第2デジタル装置の内/外部エレメントは、ハードウェアにより具現されるハードウェアエレメントでありうる。実施形態によって、内/外部エレメントは、変更、省略されるか、または他のエレメントに代替、統合されることができる。実施形態によって、付加エレメントが第2デジタル装置に追加されることができる。
前述したXR装置は、多様なセンサを介してまたは外部装置から獲得した3次元ポイントクラウドデータまたはイメージデータを分析して、3次元ポイントに対する位置データおよび属性データを生成することによって、周辺空間または現実客体に関する情報を獲得し、出力するXR客体をレンダリングして出力できる。例えば、XR装置は、認識された物体に関する追加情報を含むXR客体を該当の認識された物体に対応させて出力できる。
XR装置は、ネットワークを介して自律走行車両を遠隔接続および/または遠隔調整することもできる。この場合、自律走行車両は、XR装置を使用するユーザと視界または画面を共有し、上記ユーザの制御/相互作用に基づいて駆動部を制御することによって、動作を行うか、または走行できる。このとき、自律走行車両は、ユーザの動作または音声発話に応じる相互作用の意図情報を獲得し、獲得した意図情報に基づいて応答を決定して動作を行うことができる。
XR技術が適用された自律走行車両は、XR映像を提供する手段を備えた自律走行車両、またはXR映像内における制御/相互作用の対象になる自律走行車両などを意味できる。特に、XR映像内における制御/相互作用の対象になる自律走行車両は、XR装置と区分され、互いに連動できる。
XR映像を提供する手段を備えた自律走行車両は、カメラを含むセンサからセンサ情報を獲得し、獲得したセンサ情報に基づいて生成されたXR映像を出力できる。例えば、自律走行車両は、HUDを具備してXR映像を出力することによって、搭乗者に現実客体または画面中の客体に対応するXR客体を提供できる。
このとき、XR客体がHUDに出力される場合には、XR客体の少なくとも一部が搭乗者の視線が向かう実際の客体にオーバーラップするように出力されることができる。反面、XR客体が自律走行車両の内部に備えられるディスプレイに出力される場合には、XR客体の少なくとも一部が画面中の客体にオーバーラップするように出力されることができる。例えば、自律走行車両は、車路、他車両、信号灯、交通表示板、二輪車、歩行者、建物などの客体と対応するXR客体を出力できる。
XR映像内における制御/相互作用の対象になる自律走行車両は、カメラを含むセンサからセンサ情報を獲得すると、自律走行車両またはXR装置は、センサ情報に基づいたXR映像を生成し、XR装置は、生成されたXR映像を出力できる。そして、このような自律走行車両は、XR装置などの外部装置を介して入力される制御信号またはユーザの相互作用に基づいて動作できる。
XR装置は、自律走行車両の内部に備えられてユーザに別のXRコンテンツを提供することもでき、または自律走行車両の内/外部の映像をユーザに提供することもできる。
XR装置は、その他にもエンターテイメント、運動、教育、交通、医療、電子商取引、製造、国防など多様なサービスに使用されることができる。例えば、映画、テーマパーク、スポーツなどをXR装置を介して体験および/または観覧でき、医療用実習、火災現場など、危険な環境における訓練などをサポートできる。また、XR装置を介して位置認識および地図生成(SLAM)技術を活用したARウェイズ(AR Ways)など、道探しサービスを提供でき、また、仮想のショッピングモールに接続して物をショッピングし購買することもできる。