本文書は様々な変更を加えることができ、様々な実施例を有し得るところ、特定実施例を図面に例示して詳細に説明する。ただし、これは、本文書の実施例を特定実施例に限定しようとするものではない。本明細書で常用する用語は特定の実施例を説明するために使われるだけで、本文書の技術的思想を限定する意図で使われるものではない。単数の表現は、文脈において別に断らない限り、複数の表現をも含む。本明細書において、「含む」又は「有する」などの用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品又はそれらを組み合わせたものが存在することを指定するためのものであり、1つ又はそれ以上の他の特徴、数字、段階、動作、構成要素、部品又はそれらを組み合わせたものの存在又は付加の可能性をあらかじめ排除しないものとして理解されるべきである。
一方、本文書で説明される図面上の各構成は、それぞれ異なる特徴的な機能に関する説明の便宜のために独立して示すものであり、各構成が互いに別個のハードウェアや別個のソフトウェアとして具現されるということを意味するものではない。例えば、各構成のうち2つ以上の構成が合わせられて一つの構成をなしてもよく、一つの構成が複数の構成に分けられてもよい。各構成が統合及び/又は分離された実施例も、本文書の本質から逸脱しない限り、本文書の権利範囲に含まれる。
以下、添付の図面を参照して、本文書の好ましい実施例をより詳細に説明する。以下、図面上の同一の構成要素には同一の参照符号を付し、同一の構成要素について重複する説明は省略する。
図1には、本文書の実施例が適用可能なビデオ/映像コーディングシステムの例を概略的に示す。
図1を参照すると、ビデオ/映像コーディングシステムは、第1装置(ソースデバイス)及び第2装置(受信デバイス)を含むことができる。ソースデバイスは、エンコードされたビデオ(video)/映像(image)情報又はデータをファイル又はストリーミングの形態でデジタル記憶媒体又はネットワークを介して受信デバイスに伝達することができる。
前記ソースデバイスは、ビデオソース、エンコーディング装置、送信部を含むことができる。前記受信デバイスは、受信部、デコーディング装置及びレンダラーを含むことができる。前記エンコーディング装置はビデオ/映像エンコーディング装置と呼ばれてもよく、前記デコーディング装置はビデオ/映像デコーディング装置と呼ばれてもよい。送信機はエンコーディング装置に含まれてよい。受信機はデコーディング装置に含まれてよい。レンダラーはディスプレイ部を含むこともでき、ディスプレイ部は別個のデバイス又は外部コンポーネントとして構成されてもよい。
ビデオソースは、ビデオ/映像のキャプチャー、合成又は生成過程などによってビデオ/映像を取得できる。ビデオソースは、ビデオ/映像キャプチャーデバイス及び/又はビデオ/映像生成デバイスを含むことができる。ビデオ/映像キャプチャーデバイスは、例えば、1つ以上のカメラ、以前にキャプチャーされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成デバイスは、例えば、コンピュータ、タブレット及びスマートフォンなどを含むことができ、(電子的に)ビデオ/映像を生成することができる。例えば、コンピュータなどによって仮想のビデオ/映像が生成されてよく、この場合、関連データが生成される過程でビデオ/映像のキャプチャー過程に代えてよい。
エンコーディング装置は、入力ビデオ/映像をエンコードすることができる。エンコーディング装置は、圧縮及びコーディング効率のために予測、変換、量子化などの一連の手順を行うことができる。エンコードされたデータ(エンコードされたビデオ/映像情報)は、ビットストリーム(bitstream)の形態で出力されてよい。
送信部は、ビットストリームの形態で出力されたエンコードされたビデオ/映像情報又はデータをファイル又はストリーミングの形態で、デジタル記憶媒体又はネットワークを介して受信デバイスの受信部に伝達することができる。デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含むことができる。送信部は、あらかじめ定められたファイルフォーマットによってメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介した伝送のためのエレメントを含むことができる。受信部は、前記ビットストリームを受信/抽出してデコーディング装置に伝達できる。
デコーディング装置は、エンコーディング装置の動作に対応する逆量子化、逆変換、予測などの一連の手順を行ってビデオ/映像をデコードすることができる。
レンダラーは、デコードされたビデオ/映像をレンダーすることができる。レンダーされたビデオ/映像は、ディスプレイ部でディスプレイされてよい。
この文書は、ビデオ/映像コーディングに関する。例えば、この文書に開示の方法/実施例は、VVC(versatile video coding)標準、EVC(essential video coding)標準、AV1(AOMedia Video1)標準、AVS2(2nd generation of audio video coding standard)又は次世代ビデオ/映像コーディング標準(例えば、H.267又はH.268など)に開示される方法に適用されてよい。
この文書ではビデオ/映像コーディングに関する様々な実施例を提示し、特に言及がない限り、前記実施例は互いに組み合わせられて行われてもよい。
この文書において、ビデオ(video)は、時間の流れによる一連の映像(image)の集合を意味できる。ピクチャー(picture)は一般に、特定時間帯の1つの映像を表す単位を意味し、サブピクチャー(subpicture)/スライス(slice)/タイル(tile)は、コーディングにおいてピクチャーの一部を構成する単位である。サブピクチャー/スライス/タイルは、1つ以上のCTU(coding tree unit)を含むことができる。1つのピクチャーは1つ以上のサブピクチャー/スライス/タイルで構成されてよい。1つのピクチャーは1つ以上のタイルグループで構成されてよい。1つのタイルグループは1つ以上のタイルを含むことができる。ブリックは、ピクチャーのタイル内でCTU行の四角領域を表すことができる。タイルは、複数のブリックにパーティショニングされてよく、各ブリックは、前記タイル内で1つ以上のCTU行で構成されてよい。複数のブリックにパーティショニングされていないタイルもブリックと呼ぶことができる。ブリックスキャンは、ピクチャーをパーティショニングするCTUの特定の順次的オーダーリングを表すことができ、これらのCTUはブリック内でCTUラスタースキャンで整列されてよく、タイル内のブリックは、前記タイルの前記ブリックのラスタースキャンで連続して整列されてよく、そしてピクチャー内のタイルは、前記ピクチャーの前記タイルのラスタースキャンで連続して整列されてよい。また、サブピクチャーは、ピクチャー内の1つ以上のスライスの四角領域を表すことができる。すなわち、サブピクチャーは、ピクチャーの長方形の領域をまとめてカバーする1つ以上のスライスを含むことができる。タイルは、ピクチャーにおいて特定タイル行及び特定タイル列以内のCTUの四角領域である。前記タイル列はCTUの四角領域であり、前記四角領域は、前記ピクチャーの高さと同じ高さを有し、幅はピクチャーパラメータセット内のシンタックス要素によって明示されてよい。前記タイル行はCTUの四角領域であり、前記四角領域は、ピクチャーパラメータセット内のシンタックス要素によって明示される幅を有し、高さは前記ピクチャーの高さと同一であってよい。タイルスキャンは、ピクチャーをパーティショニングするCTUの特定の順次的オーダーリングを表すことができ、前記CTUは、タイル内にCTUラスタースキャンで連続して整列されてよく、ピクチャー内のタイルは、前記ピクチャーの前記タイルのラスタースキャンで連続して整列されてよい。スライスは、ピクチャーの整数個のブリックを含むことができ、前記整数個のブリックは単一NALユニットに含まれてよい。スライスは、複数の完全なタイルで構成されてよく、又は1つのタイルの完全なブリックの連続したシーケンスであってよい。この文書においてタイルグループとスライスは同じ意味で使われてよい。例えば、本文書においてタイルグループ/タイルグループヘッダーはスライス/スライスヘッダーと呼ばれてよい。
ピクセル(pixel)又はPEL(pel)は、1つのピクチャー(又は、映像)を構成する最小の単位を意味できる。また、ピクセルに対応する用語として「サンプル(sample)」が使われてよい。サンプルは一般に、ピクセル又はピクセルの値を表すことができ、ルマ(luma)成分のピクセル/ピクセル値のみを表してもよく、クロマ(chroma)成分のピクセル/ピクセル値のみを表してもよい。
ユニット(unit)は、映像処理の基本単位を表すことができる。ユニットは、ピクチャーの特定領域及び当該領域に関連した情報のうち少なくとも一つを含むことができる。1つのユニットは、1つのルマブロック及び2つのクロマ(ex.cb,cr)ブロックを含むことができる。ユニットは、場合によってブロック(block)又は領域(area)などの用語と同じ意味で使われてよい。一般の場合、MxNブロックは、M個の列とN個の行からなるサンプル(又は、サンプルアレイ)又は変換係数(transform coefficient)の集合(又は、アレイ)を含むことができる。
本明細書において、「A又はB(A or B)」は、「Aのみ」、「Bのみ」又は「AとBの両方」を意味できる。言い換えると、本明細書において「A又はB(A or B)」は「A及び/又はB(A and/or B)」と解釈できる。例えば、本明細書において「A、B又はC(A,B or C)」は、「Aのみ」、「Bのみ」、「Cのみ」、又は「A、B及びCの任意の全ての組合せ(any combination of A,B and C)」を意味できる。
本明細書で使われるスラッシュ(/)やコンマ(comma)は、「及び/又は(and/or)」を意味できる。例えば、「A/B」は「A及び/又はB」を意味できる。したがって、「A/B」は、「Aのみ」、「Bのみ」、又は「AとBの両方」を意味できる。例えば、「A、B、C」は「A、B又はC」を意味できる。
本明細書において「A及びBのうち少なくとも一つ(at least one of A and B)」は、「Aのみ」、「Bのみ」又は「AとBの両方」を意味できる。また、本明細書において「A又はBのうち少なくとも一つ(at least one of A or B)」や「A及び/又はBのうち少なくとも一つ(at least one of A and/or B)」という表現は、「A及びBのうち少なくとも一つ(at least one of A and B)」と同一に解釈されてよい。
また、本明細書において「A、B及びCのうち少なくとも一つ(at least one of A,B and C)」は、「Aのみ」、「Bのみ」、「Cのみ」、又は「A、B及びCの任意の全ての組合せ(any combination of A,B and C)」を意味できる。また、「A、B又はCのうち少なくとも一つ(at least one of A,B or C)」や「A、B及び/又はCのうち少なくとも一つ(at least one of A,B and/or C)」は、「A、B及びCのうち少なくとも一つ(at least one of A,B and C)」を意味できる。
また、本明細書で使われる括弧は、「例えば(for example)」を意味できる。具体的には、「予測(イントラ予測)」と表示された場合に、「予測」の一例として「イントラ予測」が提案されたものであってよい。言い換えると、本明細書における「予測」は「イントラ予測」に制限(limit)されず、「イントラ予測」が「予測」の一例として提案されたものであろう。また、「予測(すなわち、イントラ予測)」と表示された場合にも、「予測」の一例として「イントラ予測」が提案されたものであろう。
本明細書において、1つの図面で個別に説明される技術的特徴は、個別に具現されてもよく、同時に具現されてもよい。
以下の図面は、本明細書の具体的な一例を説明するために作成されたものである。図面に記載された具体的な装置の名称又は具体的な信号/メッセージ/フィールドの名称は例示的に提示されたものであり、本明細書の技術的特徴は、以下の図面における具体的な名称に制限されない。
図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)、量子化部(quantizer233)、逆量子化部(dequantizer,234)、逆変換部(inverse transformer,235)を含むことができる。レジデュアル処理部230は、減算部(subtractor,231)をさらに含むことができる。加算部250は、復元部(reconstructor)又は復元ブロック生成部(recontructged block generator)と呼ばれてもよい。上述した映像分割部210、予測部220、レジデュアル処理部230、エントロピーエンコーディング部240、加算部250及びフィルタリング部260は、実施例によって1つ以上のハードウェアコンポーネント(例えば、エンコーダチップセット又はプロセッサ)によって構成されてよい。また、メモリ270は、DPB(decoded picture buffer)を含むことができ、デジタル記憶媒体によって構成されてもよい。前記ハードウェアコンポーネントは、メモリ270を内/外部コンポーネントとしてさらに含むこともできる。
映像分割部210は、エンコーディング装置200に入力された入力映像(又は、ピクチャー、フレーム)を1つ以上の処理ユニット(processing unit)に分割することができる。一例として、前記処理ユニットは、コーディングユニット(coding unit,CU)と呼ぶことができる。この場合、コーディングユニットは、コーディングツリーユニット(coding tree unit,CTU)又は最大コーディングユニット(largest coding unit,LCU)からQTBTTT(Quad-tree binary-tree ternary-tree)構造によって再帰的に(recursively)分割されてよい。例えば、1つのコーディングユニットは、クアッドツリー構造、バイナリツリー構造、及び/又はタナーリー構造に基づいて下位(deeper)デプスの複数のコーディングユニットに分割されてよい。この場合、例えば、クアッドツリー構造が先に適用され、バイナリツリー構造及び/又はタナーリー構造が後で適用されてよい。又は、バイナリツリー構造が先に適用されてもよい。それ以上分割されない最終コーディングユニットに基づいて、本文書によるコーディング手順が行われてよい。この場合、映像特性によるコーディング効率などに基づいて、最大コーディングユニットが直ちに最終コーディングユニットとして用いられてよく、又は、必要によってコーディングユニットは再帰的に(recursively)さらに下位デプスのコーディングユニットに分割され、最適のサイズのコーディングユニットが最終コーディングユニットとして用いられてよい。ここで、コーディング手順とは、後述する予測、変換、及び復元などの手順を含むことができる。他の例として、前記処理ユニットは、予測ユニット(PU:Prediction Unit)又は変換ユニット(TU:Transform Unit)をさらに含むことができる。この場合、前記予測ユニット及び前記変換ユニットはそれぞれ、上述した最終コーディングユニットから分割又はパーティショニングされてよい。前記予測ユニットはサンプル予測の単位であってよく、前記変換ユニットは、変換係数を誘導する単位及び/又は変換係数からレジデュアル信号(residual signal)を誘導する単位であってよい。
ユニットは、場合によって、ブロック(block)又は領域(area)などの用語と同じ意味で使われてよい。一般の場合、MxNブロックは、M個の列とN個の行からなるサンプル又は変換係数(transform coefficient)の集合を表すことができる。サンプルは一般に、ピクセル又はピクセルの値を表すことができ、輝度(luma)成分のピクセル/ピクセル値のみを表すこともでき、彩度(chroma)成分のピクセル/ピクセル値のみを表すこともできる。サンプルは、ピクセル(pixel)又はペル(pel)に対する1つのピクチャー(又は、映像)に対応する用語として使われてよい。
エンコーディング装置200は、入力映像信号(原本ブロック、原本サンプルアレイ)から、インター予測部221又はイントラ予測部222から出力された予測信号(予測ブロック、予測サンプルアレイ)を減算してレジデュアル信号(residual signal;残余ブロック、残余サンプルアレイ)を生成でき、生成されたレジデュアル信号は変換部232に伝送される。この場合、図示のようにエンコーディング装置200において、入力映像信号(原本ブロック、原本サンプルアレイ)から予測信号(予測ブロック、予測サンプルアレイ)を減算するユニットは減算部231と呼ばれてよい。予測部は、処理対象ブロック(以下、現在ブロックという。)に対する予測を行い、前記現在ブロックに対する予測サンプルを含む予測ブロック(predicted block)を生成できる。予測部は、現在ブロック又はCU単位でイントラ予測が適用されるか又はインター予測が適用されるかを決定できる。予測部は、各予測モードに関する説明で後述するように、予測モード情報などの予測に関する様々な情報を生成してエントロピーエンコーディング部240に伝達できる。予測に関する情報は、エントロピーエンコーディング部240でエンコードされてビットストリームの形態で出力されてよい。
イントラ予測部222は、現在ピクチャー内のサンプルを参照して現在ブロックを予測できる。前記参照されるサンプルは、予測モードによって、前記現在ブロックの周辺(neighbor)に位置してよく、離れて位置してもよい。イントラ予測において予測モードは複数の非方向性モードと複数の方向性モードを含むことができる。非方向性モードは、例えば、DCモード及びプレーナーモード(Planar mode)を含むことができる。方向性モードは、予測方向の細密な程度によって、例えば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は、後述する様々な予測方法に基づいて予測信号を生成できる。例えば、予測部は、1つのブロックに対する予測のためにイントラ予測又はインター予測を適用できる他に、イントラ予測とインター予測を同時に適用することもできる。これをCIIP(combined inter and intra prediction)と呼ぶことができる。また、予測部は、ブロックに対する予測のためにイントラブロックコピー(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で逆量子化及び逆変換を適用することによって、レジデュアル信号(レジデュアルブロック又はレジデュアルサンプル)を復元することができる。加算部250は、復元されたレジデュアル信号を、インター予測部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で参照ピクチャーとして用いられてよい。エンコーディング装置は、これによってインター予測が適用される場合に、エンコーディング装置200とデコーディング装置300での予測ミスマッチを避けることができ、符号化効率も向上させることができる。
メモリ270のDPBは、修正された復元ピクチャーをインター予測部221での参照ピクチャーとして使用するために記憶することができる。メモリ270は、現在ピクチャー内動き情報が導出された(又は、エンコードされた)ブロックの動き情報及び/又は既に復元されたピクチャー内ブロックの動き情報を記憶することができる。前記記憶された動き情報は、空間的周辺ブロックの動き情報又は時間的周辺ブロックの動き情報として活用するためにインター予測部221に伝達することができる。メモリ270は、現在ピクチャー内復元されたブロックの復元サンプルを記憶することができ、イントラ予測部222に伝達することができる。
図3は、本文書の実施例が適用可能なビデオ/映像デコーディング装置の構成を概略的に説明する図である。
図3を参照すると、デコーディング装置300は、エントロピーデコーディング部(entropy decoder,310)、レジデュアル処理部(residual processor,320)、予測部(predictor,330)、加算部(adder,340)、フィルタリング部(filter,350)及びメモリ(memory,360)を含んで構成されてよい。予測部330は、インター予測部331及びイントラ予測部332を含むことができる。レジデュアル処理部320は、逆量子化部(dequantizer,321)及び逆変換部(inverse transformer,322)を含むことができる。上述したエントロピーデコーディング部310、レジデュアル処理部320、予測部330、加算部340及びフィルタリング部350は、実施例によって、一つのハードウェアコンポーネント(例えば、デコーダチップセット又はプロセッサ)によって構成されてもよい。また、メモリ360は、DPB(decoded picture buffer)を含むことができ、デジタル記憶媒体によって構成されてもよい。前記ハードウェアコンポーネントは、メモリ360を内/外部コンポーネントとしてさらに含むこともできる。
ビデオ/映像情報を含むビットストリームが入力されると、デコーディング装置300は、図2のエンコーディング装置でビデオ/映像情報が処理されたプロセスに対応して映像を復元することができる。例えば、デコーディング装置300は、前記ビットストリームから取得したブロック分割関連情報に基づいてユニット/ブロックを導出することができる。デコーディング装置300は、エンコーディング装置で適用された処理ユニットを用いてデコーディングを行うことができる。したがって、デコーディングの処理ユニットは、例えばコーディングユニットであってよく、コーディングユニットは、コーディングツリーユニット又は最大コーディングユニットから、クアッドツリー構造、バイナリツリー構造及び/又はタナーリーツリー構造をしたがって分割されてよい。コーディングユニットから1つ以上の変換ユニットが導出されてよい。そして、デコーディング装置300でデコーディング及び出力された復元映像信号は、再生装置で再生されてよい。
デコーディング装置300は、図2のエンコーディング装置から出力された信号をビットストリームの形態で受信することができ、受信された信号は、エントロピーデコーディング部310でデコードされてよい。例えば、エントロピーデコーディング部310は、前記ビットストリームをパーシングし、映像復元(又は、ピクチャー復元)に必要な情報(例えば、ビデオ/映像情報)を導出することができる。前記ビデオ/映像情報は、アダプテーションパラメータセット(APS)、ピクチャーパラメータセット(PPS)、シーケンスパラメータセット(SPS)又はビデオパラメータセット(VPS)などの様々なパラメータセットに関する情報をさらに含むことができる。また、前記ビデオ/映像情報は、一般制限情報(general constraint information)をさらに含むことができる。デコーディング装置は、前記パラメータセットに関する情報及び/又は前記一般制限情報にさらに基づいてピクチャーをデコードすることができる。本文書で後述されるシグナリング/受信される情報及び/又はシンタックス要素は、前記デコーディング手順によってデコードされ、前記ビットストリームから取得されてよい。例えば、エントロピーデコーディング部310は、指数ゴロム符号化、CAVLC又はCABACなどのコーディング方法に基づいてビットストリーム内情報をデコードし、映像復元に必要なシンタックスエレメントの値、レジデュアルに関する変換係数の量子化された値を出力することができる。より詳細には、CABACエントロピーデコーディング方法は、ビットストリームから各構文要素に該当するビン(bin)を受信し、デコーディング対象構文要素情報、周辺及びデコーディング対象ブロックのデコーディング情報、或いは以前段階でデコードされたシンボル/ビンの情報を用いて文脈(context)モデルを決定し、決定された文脈モデルによってビン(bin)の発生確率を予測してビンの算術デコーディング(arithmetic decoding)を行い、各構文要素の値に該当するシンボルを生成することができる。このとき、CABACエントロピーデコーディング方法は、文脈モデル決定後に、次のシンボル/ビンの文脈モデルのためにデコードされたシンボル/ビンの情報を用いて文脈モデルをアップデートすることができる。エントロピーデコーディング部310でデコードされた情報のうち予測に関する情報は予測部330(インター予測部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は、後述する様々な予測方法に基づいて予測信号を生成できる。例えば、予測部は、一つのブロックに対する予測のためにイントラ予測又はインター予測を適用できる他に、イントラ予測とインター予測を同時に適用することもできる。これをCIIP(combined inter and intra prediction)モードと呼ぶことができる。また、予測部は、ブロックに対する予測のために、イントラブロックコピー(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は、現在ピクチャー内の動き情報が導出された(又は、デコードされた)ブロックの動き情報、及び/又は既に復元されたピクチャー内のブロックの動き情報を記憶することができる。該記憶された動き情報は、空間的周辺ブロックの動き情報又は時間的周辺ブロックの動き情報として活用するためにインター予測部260に伝達できる。メモリ360は、現在ピクチャー内の復元されたブロックの復元サンプルを記憶でき、イントラ予測部331に伝達することができる。
本明細書において、エンコーディング装置200のフィルタリング部260、インター予測部221及びイントラ予測部222で説明された実施例は、それぞれ、デコーディング装置300のフィルタリング部350、インター予測部332及びイントラ予測部331にも同一に又は対応するように適用されてよい。
本文書において、量子化/逆量子化及び/又は変換/逆変換のうち少なくとも一つは省略されてよい。前記量子化/逆量子化が省略される場合に、前記量子化された変換係数は、変換係数と呼ぶことができる。前記変換/逆変換が省略される場合に、前記変換係数は、係数又はレジデュアル係数と呼ぶこともでき、又は表現の統一性のために変換係数と相変らず呼ぶこともできる。
また、本文書において、量子化された変換係数及び変換係数はそれぞれ、変換係数及びスケーリングされた(scaled)変換係数と呼ぶことができる。この場合、レジデュアル情報は、変換係数に関する情報を含むことができ、前記変換係数に関する情報は、レジデュアルコーディングシンタックスによってシグナルされてよい。前記レジデュアル情報(又は、前記変換係数に関する情報)に基づいて変換係数が導出されてよく、前記変換係数に対する逆変換(スケーリング)によってスケーリングされた変換係数が導出されてよい。前記スケーリングされた変換係数に対する逆変換(変換)に基づいてレジデュアルサンプルが導出されてよい。これは、本文書の他の部分でも、同一に適用/表現されてよい。
上述の内容のように、エンコーディング装置は、例えば、指数ゴロム(exponential Golomb)、CAVLC(context-adaptive variable length coding)、CABAC(context-adaptive binary arithmetic coding)などのような様々なエンコーディング方法を行うことができる。また、デコーディング装置は、指数ゴロム符号化、CAVLC又はCABACなどのコーディング方法に基づいてビットストリーム内情報をデコードし、映像復元に必要なシンタックスエレメントの値、レジデュアルに関する変換係数の量子化された値を出力することができる。
例えば、上述したコーディング方法は、後述する内容のように行われてよい。
図4には、シンタックスエレメント(syntax element)をエンコードするためのCABAC(context-adaptive binary arithmetic coding)を例示的に示す。例えば、CABACの符号化過程では、エンコーディング装置は、入力信号が二進値でないシンタックスエレメントである場合には、前記入力信号の値を二進化(binarization)して入力信号を二進値として変換できる。また、前記入力信号が既に二進値である場合(すなわち、前記入力信号の値が二進値である場合)には、二進化が行われずにバイパス(bypass)されてよい。ここで、二進値を構成するそれぞれの二進数0又は1をビン(bin)と呼ぶことができる。例えば、二進化された後の二進ストリングが110である場合に、1、1、0のそれぞれを1つのビンと呼ぶ。1つのシンタックスエレメントに対する前記ビンは、前記シンタックスエレメントの値を示すことができる。
その後、前記シンタックスエレメントの二進化されたビンは、正規(regular)符号化エンジン又はバイパス符号化エンジンに入力されてよい。エンコーディング装置の正規符号化エンジンは、当該ビンに対して確率値を反映するコンテクストモデル(context model)を割り当てることができ、割り当てられたコンテクストモデルに基づいて当該ビンをエンコードできる。エンコーディング装置の前記正規符号化エンジンは、各ビンに対するエンコーディングを行った後に当該ビンに対するコンテクストモデルを更新できる。上述の内容のようにエンコードされるビンは、文脈符号化ビン(context-coded bin)と称することができる。
一方、前記シンタックスエレメントの二進化されたビンが前記バイパス符号化エンジンに入力される場合には、次のようにコードされてよい。例えば、エンコーディング装置のバイパス符号化エンジンは、入力されたビンに対して確率を推定する手順と、符号化後に前記ビンに適用した確率モデルを更新する手順を省略する。バイパスエンコーディングが適用される場合に、エンコーディング装置は、コンテクストモデルを割り当てる代わりに均一な確率分布を適用することにより、入力されるビンをエンコードでき、これにより、エンコーディング速度を向上させることができる。上述の内容のようにエンコードされるビンは、バイパスビン(bypass bin)と称することができる。
エントロピーデコーディングは、上述したエントロピーエンコーディングにおける過程を逆順で行う過程を表すことができる。
例えば、シンタックスエレメントがコンテクストモデルに基づいてデコードされる場合に、デコーディング装置は、ビットストリームによって前記シンタックスエレメントに該当するビンを受信することができ、前記シンタックスエレメントとデコーディング対象ブロック又は周辺ブロックのデコーディング情報或いは以前段階でデコードされたシンボル/ビンの情報を用いてコンテクストモデル(context model)を決定でき、決定されたコンテクストモデルによって前記受信したビン(bin)の発生確率を予測してビンの算術デコーディング(arithmetic decoding)を行い、前記シンタックスエレメントの値を導出することができる。その後、次にデコードされるビンのコンテクストモデルが前記決定されたコンテクストモデルにアップデートされてよい。
また、例えば、シンタックスエレメントがバイパスデコードされる場合に、デコーディング装置は、ビットストリームを用いて前記シンタックスエレメントに該当するビンを受信でき、均一な確率分布を適用することによって、入力されるビンをデコードすることができる。この場合、デコーディング装置は、シンタックスエレメントのコンテクストモデルを導出する手順と、デコーディング後に前記ビンに適用したコンテクストモデルを更新する手順を省略することができる。
上述したように、レジデュアルサンプルは、変換、量子化過程を経て量子化された変換係数として導出されてよい。量子化された変換係数は、変換係数と呼ぶこともできる。この場合、ブロック内変換係数はレジデュアル情報の形態でシグナルされてよい。前記レジデュアル情報は、レジデュアルコーディングシンタックスを含むことができる。すなわち、エンコーディング装置は、レジデュアル情報でレジデュアルコーディングシンタックスを構成し、これをエンコードしてビットストリームの形態で出力でき、デコーディング装置は、ビットストリームからレジデュアルコーディングシンタックスをデコードしてレジデュアル(量子化された)変換係数を導出することができる。前記レジデュアルコーディングシンタックスは、後述するように、当該ブロックに対して変換が適用された否か、ブロック内最後の有効変換係数の位置、サブブロック内有効変換係数が存在するか否か、有効変換係数のサイズ/符号などを示すシンタックスエレメント(syntax elements)を含むことができる。
例えば、レジデュアルデータエンコーディング/デコーディングと関連したシンタックスエレメントは、次表のように表すことができる。
transform_skip_flagは、関連しているブロック(associated block)に変換が省略されるか否かを示す。前記transform_skip_flagは、変換スキップフラグのシンタックスエレメントであってよい。前記関連したブロックは、CB(coding block)又はTB(Transform block)であってよい。変換(及び量子化)及びレジデュアルコーディング手順に関して、CBとTBは同じ意味で使われてよい。例えば、CBに対してレジデュアルサンプルが導出され、前記レジデュアルサンプルに対する変換及び量子化によって(量子化された)変換係数が導出され得ることは上述の通りであり、レジデュアルコーディング手順によって前記(量子化された)変換係数の位置、サイズ、符号などを効率的に示す情報(例えば、シンタックスエレメント)が生成され、シグナルされてよい。量子化された変換係数は、簡単に変換係数と呼ぶことができる。一般に、CBが最大TBよりも大きくない場合に、CBのサイズはTBのサイズと同一であってよく、この場合、変換(及び量子化)及びレジデュアルコードされる対象ブロックは、CB又はTBと呼ぶことができる。一方、CBが最大TBよりも大きい場合には、変換(及び量子化)及びレジデュアルコードされる対象ブロックをTBと呼ぶことができる。以下、レジデュアルコーディングに関連したシンタックス要素が変換ブロック(TB)単位でシグナルされるとして説明するが、これは例示であり、前記TBはコーディングブロック(CB)と同じ意味で使われてよいことは上述した通りである。
一方、前記変換スキップフラグがシグナルされた後にシグナルされるシンタックスエレメントは、後述する表2及び/又は表3に開示されたシンタックスエレメントと同一であってよく、前記シンタックスエレメントに関する具体的な説明は、後述する通りである。
本実施例によれば、表1に示すように、変換スキップフラグのシンタックスエレメントtransform_skip_flagの値によって、レジデュアルコーディングが分岐されてよい。すなわち、変換スキップフラグの値に基づいて(変換スキップであるか否かに基づいて)、レジデュアルコーディングのために互いに異なるシンタックスエレメントが用いられてよい。変換スキップが適用されない場合(すなわち、変換が適用された場合)に用いられるレジデュアルコーディングは、レギュラーレジデュアルコーディング(Regular Residual Coding,RRC)と呼ぶことができ、変換スキップが適用される場合(すなわち、変換が適用されていない場合)のレジデュアルコーディングは、変換スキップレジデュアルコーディング(Transform Skip Residual Coding,TSRC)と呼ぶことができる。また、前記レギュラーレジデュアルコーディングは、一般のレジデュアルコーディング(general residual coding)と呼ぶこともできる。また、前記レギュラーレジデュアルコーディングは、レギュラーレジデュアルコーディングシンタックス構造と呼ぶことができ、前記変換スキップレジデュアルコーディングは、変換スキップレジデュアルコーディングシンタックス構造と呼ぶことができる。前記表2は、transform_skip_flagの値が0の場合、すなわち、変換が適用された場合のレジデュアルコーディングのシンタックスエレメントを表すことができ、表3は、transform_skip_flagの値が1の場合、すなわち、変換が適用されていない場合のレジデュアルコーディングのシンタックスエレメントを表すことができる。
具体的に、例えば、変換ブロックの変換をスキップするか否かを示す変換スキップフラグがパースされてよく、前記変換スキップフラグが1か否かが判断されてよい。前記変換スキップフラグの値が0である場合、表2に示すように、変換ブロックのレジデュアル係数に対するシンタックスエレメントlast_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gtx_flag、par_level_flag、abs_remainder、coeff_sign_flag及び/又はdec_abs_levelがパースされてよく、前記シンタックスエレメントに基づいて前記レジデュアル係数が導出されてよい。この場合、前記シンタックスエレメントは順次にパースされてもよく、パーシング順序が変更されてもよい。また、前記abs_level_gtx_flagは、abs_level_gt1_flag及び/又はabs_level_gt3_flagを表すことができる。例えば、abs_level_gtx_flag[n][0]は、第1変換係数レベルフラグ(abs_level_gt1_flag)の一例示であってよく、前記abs_level_gtx_flag[n][1]は、第2変換係数レベルフラグ(abs_level_gt3_flag)の一例示であってよい。
上記表2を参照すると、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_remainder、coeff_sign_flag、及び/又はdec_abs_levelがエンコード/デコードされてよい。一方、前記sb_coded_flagは、coded_sub_block_flagと表すこともできる。
一実施例において、エンコーディング装置は、シンタックスエレメントlast_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix及びlast_sig_coeff_y_suffixに基づいて、変換ブロック内の最後の0でない変換係数の(x,y)位置情報をエンコードすることができる。より具体的には、前記last_sig_coeff_x_prefixは、変換ブロック内スキャン順序(scanning order)における最後の(last)有効係数(significant coefficient)の列位置(column position)のプレフィックス(prefix)を表し、前記last_sig_coeff_y_prefixは、前記変換ブロック内前記スキャン順序(scanning order)における最後の(last)有効係数(significant coefficient)の行位置(row position)のプレフィックス(prefix)を表し、前記last_sig_coeff_x_suffixは、前記変換ブロック内前記スキャン順序(scanning order)における最後の(last)有効係数(significant coefficient)の列位置(column position)のサフィックス(suffix)を表し、前記last_sig_coeff_y_suffixは、前記変換ブロック内前記スキャン順序(scanning order)における最後の(last)有効係数(significant coefficient)の行位置(row position)のサフィックス(suffix)を表す。ここで、有効係数は、前記0でない係数(non-zero coefficient)を表すことができる。また、前記スキャン順序は、右上向き対角スキャン順序であってよい。又は、前記スキャン順序は、水平スキャン順序、又は垂直スキャン順序であってよい。前記スキャン順序は、対象ブロック(CB、又はTBを含むCB)にイントラ/インター予測が適用されるか否か及び/又は具体的なイントラ/インター予測モードに基づいて決定されてよい。
その後、エンコーディング装置は、前記変換ブロックを4x4サブブロック(sub-block)に分割した後、各4x4サブブロックごとに1ビットのシンタックス要素coded_sub_block_flagを用いて、現在サブブロック内に0でない係数が存在するか否かを示すことができる。
coded_sub_block_flagの値が0であれば、それ以上伝送する情報がないので、エンコーディング装置は現在サブブロックに対する符号化過程を終了できる。逆に、coded_sub_block_flagの値が1であれば、エンコーディング装置は、sig_coeff_flagに対する符号化過程を引き続き行うことができる。最後の0でない係数を含むサブブロックは、coded_sub_block_flagに対する符号化が不要であり、変換ブロックのDC情報を含んでいるサブブロックは0でない係数を含む確率が高いので、coded_sub_block_flagは符号化されず、その値が1であると仮定されてよい。
仮に、coded_sub_block_flagの値が1であることから、現在サブブロック内に0でない係数が存在すると判断されると、エンコーディング装置は、逆にスキャンされた順序によって、二進値を有するsig_coeff_flagをエンコードすることができる。エンコーディング装置は、スキャン順序によって、それぞれの変換係数に対する1ビットシンタックスエレメントsig_coeff_flagをエンコードすることができる。仮に現在スキャン位置での変換係数の値が0でなければ、sig_coeff_flagの値は1になり得る。ここで、最後の0でない係数を含んでいるサブブロックの場合、最後の0でない係数に対してはsig_coeff_flagがエンコードされる必要がないので、前記サブブロックに対する符号化過程が省略されてよい。sig_coeff_flagが1である場合にのみレベル情報符号化が行われてよく、レベル情報符号化過程には4個のシンタックスエレメントが用いられてよい。より具体的には、各sig_coeff_flag[xC][yC]は、現在TB内の各変換係数位置(xC,yC)における当該変換係数のレベル(値)が0でない(non-zero)か否かを示すことができる。一実施例において、前記sig_coeff_flagは、量子化された変換係数が0でない有効係数であるか否かを示す有効係数フラグのシンタックスエレメントの一例示に当該し得る。
sig_coeff_flagに対する符号化後の残ったレベル値は、次式のように導出されてよい。すなわち、符号化しなければならないレベル値を示すシンタックス要素remAbsLevelは、次式のように導出されてよい。
ここで、coeffは、実際変換係数値を意味する。
また、abs_level_gt1_flagは、当該スキャニング位置(n)でのremAbsLevelが1よりも大きいか否かを示すことができる。例えば、abs_level_gt1_flagの値が0であれば、当該位置の変換係数の絶対値(absolute value)は1であってよい。また、前記abs_level_gt1_flagの値が1であれば、後で符号化しなければならないレベル値を示す前記remAbsLevelは、次の式のようにアップデートされてよい。
また、上述の式2に記載されたremAbsLevelのleast significant coefficient(LSB)値は、par_level_flagによって次の式3のようにエンコードされてよい。
ここで、par_level_flag[n]は、スキャニング位置nでの変換係数レベル(値)のパリティ(parity)を示すことができる。
par_leve_flagエンコーディング後にエンコードしなければならない変換係数レベル値remAbsLevelは、次の式のようにアップデートされてよい。
abs_level_gt3_flagは、当該スキャニング位置(n)でのremAbsLevelが3よりも大きいか否かを示すことができる。abs_level_gt3_flagが1である場合にのみ、abs_remainderに対するエンコーディングが行われてよい。実際変換係数値であるcoeffと各シンタックス要素との関係は、次の式の通りでよい。
また、次の表は、上述の式5と関連した例示を表す。
ここで、|coeff|は、変換係数レベル(値)を表し、変換係数に対するAbsLevelと表示されてもよい。また、各係数の符号は、1ビットシンボルであるcoeff_sign_flagを用いてエンコードされてよい。
また、例えば、前記変換スキップフラグの値が1であれば、表3に示すように、変換ブロックのレジデュアル係数に対するシンタックスエレメントsb_coded_flag、sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag、par_level_flag及び/又はabs_remainderがパースされてよく、前記シンタックスエレメントに基づいて前記レジデュアル係数が導出されてよい。この場合、前記シンタックスエレメントは順次にパースされてもよく、パーシング順序が変更されてもよい。また、前記abs_level_gtx_flagは、abs_level_gt1_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag及び/又はabs_level_gt9_flagを表すことができる。例えば、abs_level_gtx_flag[n][j]は、スキャニング位置nで変換係数の絶対値又はレベル(値)が(j<<1)+1よりも大きいか否かを示すフラグであってよい。前記(j<<1)+1は、場合によって、第1臨界値、第2臨界値などの所定の臨界値に代替されてもよい。
一方、CABACは、高い性能を提供するが、処理量(throughput)性能がよくないという短所がある。これは、CABACの正規符号化エンジンに起因するものであり、正規符号化(すなわち、CABACの正規符号化エンジンを用いたエンコーディング)は、以前ビン(bin)の符号化によってアップデートされた確率状態と範囲を用いるため、高いデータ依存性を示し、確率区間を読んで現在状態を判断することに長い時間がかかることがある。CABACの処理量問題は、文脈符号化ビン(context-coded bin)の数を制限することによって解決できる。例えば、上記表2のように、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagを表現するために用いられたビンの和が、当該ブロックのサイズによる個数に制限されてよい。また、例えば、上記表3のように、sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flagを表現するために用いられたビンの和が、当該ブロックのサイズによる個数に制限されてよい。一例として、当該ブロックが4x4サイズのブロックである場合に、前記sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag又はsig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flagに対するビンの和は、32個(又は、例えば28個)に制限されてよく、当該ブロックが2x2サイズのブロックである場合に、前記sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagに対するビンの和は、8個(又は、例えば7個)に制限されてよい。前記ビンの制限された個数は、remBinsPass1又はRemCcbsで示すことができる。又は、一例として、より高いCABAC処理量のために、コンテクスト符号化ビン(context coded bin)の個数がコーディング対象CGを含むブロック(CB又はTB)に対して制限されてよい。言い換えると、コンテクスト符号化ビンの個数がブロック(CB又はTB)単位で制限されてよい。例えば、現在ブロックのサイズが16x16であれば、現在CGに関係なく、現在ブロックに対するコンテクスト符号化ビンの個数が前記現在ブロックのピクセル個数の1.75倍、すなわち、448個に制限されてよい。
この場合、エンコーディング装置は、文脈要素の符号化に、制限された個数の文脈符号化ビンを全て使用した場合は、残りの係数を、コンテクストコーディングを用いずに後述の前記係数に対する二進化方法によって二進化し、バイパスコーディングを行うことができる。言い換えると、例えば、4x4 CGに対してコードされたコンテクスト符号化ビン(context coded bin)の数が32(又は、例えば28)、又は2x2 CGに対してコードされたコンテクスト符号化ビンの数が8(又は、例えば7)になる場合には、それ以上コンテクスト符号化ビンにコードされるsig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagはコードされなくてよく、直ちにdec_abs_levelにコードされてよい。又は、例えば、4x4ブロックに対してコードされたコンテクスト符号化ビン(context coded bin)の数が全体ブロックのピクセル個数の1.75倍、すなわち、28に制限される場合に、それ以上コンテクスト符号化ビンにコードされるsig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagはコードされなくてよく、後述の表5のように直ちにdec_abs_levelにコードされてよい。
dec_abs_levelに基づいて|coeff|値が導出されてよい。この場合、変換係数値である|coeff|は、次式のように導出されてよい。
また、前記coeff_sign_flagは、当該スキャニング位置(n)での変換係数レベルの符号(sign)を示すことができる。すなわち、前記coeff_sign_flagは、当該スキャニング位置(n)での変換係数の符号(sign)を示すことができる。
図5は、4x4ブロック内変換係数の例示を示す図である。
図5の4x4ブロックは、量子化された係数の一例を表す。図5に示すブロックは、4x4変換ブロックであるか、又は8x8、16x16、32x32、64x64変換ブロックの4x4サブブロックであってよい。図5の4x4ブロックは、ルマブロック又はクロマブロックを表すことができる。
一方、上述の内容のように、エンコーディング装置は、入力信号が二進値でないシンタックスエレメントである場合には、前記入力信号の値を二進化(binarization)して入力信号を二進値に変換できる。また、デコーディング装置は、前記シンタックスエレメントをデコードし、前記シンタックスエレメントの二進化された値(すなわち、二進化されたビン)を導出することができ、前記二進化された値を逆二進化して前記シンタックスエレメントの値を導出することができる。前記二進化過程は、後述するトランケイテッドライス(Truncated Rice,TR)二進化プロセス(binarization process)、k次Exp-Golomb(k-th order Exp-Golomb,EGk)二進化プロセス(binarization process)、k次リミテッドExp-Golomb(Limited k-th order Exp-Golomb,Limited EGk)、又は固定長(Fixed-length,FL)二進化プロセス(binarization process)などで行われてよい。また、逆二進化過程は、前記TR二進化プロセス、前記EGk二進化プロセス又は前記FL二進化プロセスに基づいて行われて前記シンタックスエレメントの値を導出する過程を表すことができる。
例えば、前記TR二進化プロセスは次のように行われてよい。
前記TR二進化プロセスの入力(input)は、TR二進化に対する要請とシンタックスエレメントに対するcMax及びcRiceParamであってよい。また、前記TR二進化プロセスの出力(output)は、ビンストリングに対応する値symbolValに対するTR二進化であってよい。
具体的に、一例として、シンタックスエレメントに対する接尾辞(suffix)ビンストリングが存在する場合には、前記シンタックスエレメントに対するTRビンストリングは、接頭辞(prefix)ビンストリングと接尾辞ビンストリングとの結合(concatenation)であってよく、前記接尾辞ビンストリングが存在しない場合には、前記シンタックスエレメントに対する前記TRビンストリングは前記接頭辞ビンストリングであってよい。例えば、前記接頭辞ビンストリングは後述のように導出されてよい。
前記シンタックスエレメントに対する前記symbolValの接頭辞値(prefix value)は、次式のように導出されてよい。
ここで、prefixValは、前記symbolValの接頭辞値を表すことができる。前記シンタックスエレメントの前記TRビンストリングの接頭辞(すなわち、接頭辞ビンストリング)は、後述のように導出されてよい。
例えば、前記prefixValがcMax>>cRiceParamよりも小さな場合に、接頭辞ビンストリングは、binIdxによってインデクシングされる(indexed)長さprefixVal+1のビットストリング(bit string)であってよい。すなわち、前記prefixValがcMax>>cRiceParamよりも小さい場合に、前記接頭辞ビンストリングは、binIdxが示すprefixVal+1ビット数のビットストリングであってよい。prefixValよりも小さいbinIdxに対するビンは、1と同一であってよい。また、prefixValと同じbinIdxに対するビンは、0と同一であってよい。
例えば、前記prefixValに対する単項二進化(unary binarization)で導出されるビンストリングは、次表の通りでよい。
一方、前記prefixValがcMax>>cRiceParamよりも小さくない場合に、前記接頭辞ビンストリングは、長さがcMax>>cRiceParamであり、全てのビンが1であるビットストリングであってよい。
また、cMaxがsymbolValよりも大きく、cRiceParamが0よりも大きい場合に、TRビンストリングの接尾辞ビンストリングが存在してよい。例えば、前記接尾辞ビンストリングは後述のように導出されてよい。
前記シンタックスエレメントに対する前記symbolValの接尾辞値(suffix value)は、次式のように導出されてよい。
ここで、suffixValは、前記symbolValの接尾辞値を表すことができる。
TRビンストリングの接尾辞(すなわち、接尾辞ビンストリング)は、cMax値が(1<<cRiceParam)-1であるsuffixValに対するFL二進化プロセスに基づいて導出されてよい。
一方、入力パラメータであるcRiceParamの値が0であれば、前記TR二進化は正確にトランケイテッド単項二進化(truncated unary binarization)であってよく、常にデコードされるシンタックスエレメントの可能な最大値と同じcMax値が用いられてよい。
また、例えば、前記EGk二進化プロセスは、次のように行われてよい。ue(v)でコードされたシンタックスエレメントは、Exp-Golombコードされたシンタックスエレメントであってよい。
一例として、0次Exp-Golomb(0-th order Exp-Golomb,EG0)二進化プロセスは、次のように行われてよい。
前記シンタックスエレメントに対するパーシングプロセス(parsing process)は、ビットストリームの現在位置から始まって1番目のノンゼロ(non-zero)ビットを含むビットを読んで0のような先行ビット数を数えること(counting)から始まってよい。前記過程を次表のように表すことができる。
また、変数codeNumは、次式のように導出されてよい。
ここで、read_bits(leadingZeroBits)から返された値、すなわち、read_bits(leadingZeroBits)が示す値は、最初に記録された最も重要なビット(most significant bit)に対する符号なし整数(unsigned integer)の二進表現(binary representation)と解釈できる。
ビットストリングを「接頭辞(prefix)」ビットと「接尾辞(suffix)」ビットとに分離したExp-Golombコードの構造は、次表のように表すことができる。
「接頭辞」ビットは、leadingZeroBits計算のために上述の内容のようにパースされたビットであってよく、表8で、ビットストリングの0又は1で表示されてよい。すなわち、上記表8の0又は1で表示されたビットストリングは、接頭辞ビットストリングを表すことができる。「接尾辞」ビットは、codeNumの計算でパースされるビットであってよく、上記表8でxiで表示されてよい。すなわち、上記表8のxiで表示されたビットストリングは、接尾辞ビットストリングを表すことができる。ここで、iは、0からLeadingZeroBits-1の範囲の値であってよい。また、各xiは、0又は1と同一であってよい。
前記codeNumに割り当てられるビットストリングは、次表の通りでよい。
シンタックスエレメントのディスクリプタ(descriptor)がue(v)である場合に、すなわち、シンタックスエレメントがue(v)でコードされた場合に、前記シンタックスエレメントの値はcodeNumと同一であってよい。
また、例えば、前記EGk二進化プロセスは次のように行われてよい。
前記EGk二進化プロセスの入力(input)は、EGk二進化に対する要請であってよい。また、前記EGk二進化プロセスの出力(output)は、ビンストリングに対応する値symbolValに対するEGk二進化であってよい。
symbolValに対するEGk二進化プロセスのビットストリングは、次のように導出されてよい。
上記表10を参照すると、put(X)の各コール(each call)を用いて二進値Xをビンストリングの末尾に追加することができる。ここで、Xは0又は1であってよい。
また、例えば、前記リミテッドEGk二進化プロセスは次のように行われてよい。
前記リミテッドEGk二進化プロセスの入力(input)は、リミテッドEGk二進化に対する要請及びライスパラメータriceParam、最大値の二進対数を表す変数であるlog2TransformRange及び最大接頭辞拡張長を表す変数であるmaxPreExtLenであってよい。また、前記リミテッドEGk二進化プロセスの出力(output)は、ビンストリングに対応する値symbolValに対するリミテッドEGk二進化であってよい。
symbolValに対するリミテッドEGk二進化プロセスのビットストリングは、次のように導出されてよい。
また、例えば、前記FL二進化プロセスは次のように行われてよい。
前記FL二進化プロセスの入力(input)は、FL二進化に対する要請及び前記シンタックスエレメントに対するcMaxであってよい。また、前記FL二進化プロセスの出力(output)は、ビンストリングに対応する値symbolValに対するFL二進化であってよい。
FL二進化は、シンボル値symbolValの固定長であるビット数を有するビットストリングを用いて構成されてよい。ここで、前記固定長ビットは、符号ない整数ビットストリング(unsigned integer bit string)であってよい。すなわち、FL二進化によってシンボル値symbolValに対するビットストリングが導出されてよく、前記ビットストリングのビット長(すなわち、ビット数)は、固定長であってよい。
例えば、前記固定長は、次式のように導出されてよい。
FL二進化に対するビンのインデクシングは、最上位ビットから最下位ビットの順序で増加する値を使用する方式であってよい。例えば、前記最上位ビットと関連したビンインデックスは、binIdx=0であってよい。
一方、例えば、前記レジデュアル情報のうちシンタックスエレメントabs_remainderに対する二進化プロセスは、次のように行われてよい。
前記abs_remainderに対する二進化プロセスの入力は、シンタックスエレメントabs_remainder[n]の二進化に対する要請、色相成分(colour component)cIdx、ルマ位置(x0,y0)であってよい。前記ルマ位置(x0,y0)は、ピクチャーの左上端ルマサンプルを基準とする現在ルマ変換ブロックの左上端サンプルを示すことができる。
前記abs_remainderに対する二進化プロセスの出力(output)は、前記abs_remainderの二進化(すなわち、前記abs_remainderの二進化されたビンストリング)であってよい。前記二進化プロセスによって前記abs_remainderに対する使用可能ビンストリングが導出されてよい。
前記abs_remainder[n]に対するライスパラメータcRiceParamは、前記色相成分cIdx及びルマ位置(x0,y0)、現在係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数であるlog2TbWidth、及び変換ブロックの高さの二進対数であるlog2TbHeightを入力として行われるライスパラメータ導出過程によって導出されてよい。前記ライスパラメータ導出過程に関する具体的な説明は後述する。
また、例えば、現在コードされるabs_remainder[n]に対するcMaxは、前記ライスパラメータcRiceParamに基づいて導出されてよい。前記cMaxは次式のように導出されてよい。
一方、前記abs_remainderに対する二進化、すなわち、前記abs_remainderに対するビンストリングは、接尾辞(suffix)ビンストリングが存在する場合には、接頭辞(prefix)ビンストリングと接尾辞ビンストリングとの結合(concatenation)であってよい。また、前記接尾辞ビンストリングが存在しない場合には、前記abs_remainderに対する前記ビンストリングは前記接頭辞ビンストリングであってよい。
例えば、前記接頭辞ビンストリングは後述のように導出されてよい。
前記abs_remainder[n]の接頭辞値(prefix value)prefixValは、次式のように導出されてよい。
前記abs_remainder[n]の前記ビンストリングの接頭辞(すなわち、接頭辞ビンストリング)は、前記cMax及び前記cRiceParamを入力として用いる前記prefixValに対するTR二進化プロセスによって導出されてよい。
前記接頭辞ビンストリングが、全てのビットが1であり、ビット長が6であるビットストリングと同一であれば、前記abs_remainder[n]の前記ビンストリングの接尾辞ビンストリングが存在してよく、後述のように導出されてよい。
前記abs_remainder[n]に対するライスパラメータ導出過程は、次の通りでよい。
前記ライスパラメータ導出過程の入力は、色相成分インデックス(colour component index)cIdx、ルマ位置(x0,y0)、現在係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数(binary logarithm)であるlog2TbWidth及び変換ブロックの高さの二進対数インlog2TbHeightであってよい。前記ルマ位置(x0,y0)は、ピクチャーの左上端ルマサンプルを基準とする現在ルマ変換ブロックの左上端サンプルを示すことができる。また、前記ライスパラメータ導出過程の出力は、前記ライスパラメータcRiceParamであってよい。
例えば、与えられたコンポーネントインデックスcIdx、前記左上端ルマ位置(x0,y0)を有する変換ブロックに対する配列AbsLevel[x][y]に基づき、変数locSumAbsは、次の表に表された疑似コード(pseudo code)のように導出されてよい。
その後、与えられた変数locSumAbsに基づき、前記ライスパラメータcRiceParamは、次表のように導出されてよい。
また、例えば、abs_remainder[n]に対するライスパラメータ導出過程においてbaseLevelは4に設定されてよい。
又は、例えば、現在ブロックの変換をスキップするか否かに基づいて前記ライスパラメータcRiceParamが決定されてよい。すなわち、現在CGを含む現在TBに対し変換が適用されない場合に、言い換えると、前記現在CGを含む前記現在TBに対して変換スキップ(transform skip)が適用される場合に、前記ライスパラメータcRiceParamは1と導出されてよい。
また、前記abs_remainderの接尾辞値(suffix value)suffixValは、次式のように導出されてよい。
前記abs_remainderの前記ビンストリングの接尾辞ビンストリングは、kがcRiceParam+1に設定され、riceParamはcRiceParamに設定され、log2TransformRangeは15に設定され、maxPreExtLenは11に設定される前記suffixValに対するリミテッドEGk二進化プロセスによって導出されてよい。
一方、例えば、前記レジデュアル情報のうちシンタックスエレメントdec_abs_levelに対する二進化プロセスは、次のように行われてよい。
前記dec_abs_levelに対する二進化プロセスの入力は、シンタックスエレメントdec_abs_level[n]の二進化に対する要請、色相成分(colour component)cIdx、ルマ位置(x0,y0)、現在係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数(binary logarithm)であるlog2TbWidth及び変換ブロックの高さの二進対数であるlog2TbHeightであってよい。前記ルマ位置(x0,y0)は、ピクチャーの左上端ルマサンプルを基準とする現在ルマ変換ブロックの左上端サンプルを示すことができる。
前記dec_abs_levelに対する二進化プロセスの出力(output)は、前記dec_abs_levelの二進化(すなわち、前記dec_abs_levelの二進化されたビンストリング)であってよい。前記二進化プロセスによって前記dec_abs_levelに対する使用可能ビンストリングが導出されてよい。
前記dec_abs_level[n]に対するライスパラメータcRiceParamは、前記色相成分cIdx及びルマ位置(x0,y0)、現在係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数であるlog2TbWidth及び変換ブロックの高さの二進対数であるlog2TbHeightを入力として行われるライスパラメータ導出過程によって導出されてよい。前記ライスパラメータ導出過程に関する具体的な説明は後述する。
また、例えば、前記dec_abs_level[n]に対するcMaxは、前記ライスパラメータcRiceParamに基づいて導出されてよい。前記cMaxは次式のように導出されてよい。
一方、前記dec_abs_level[n]に対する二進化、すなわち、前記dec_abs_level[n]に対するビンストリングは、接尾辞(suffix)ビンストリングが存在する場合には、接頭辞(prefix)ビンストリングと接尾辞ビンストリングとの結合(concatenation)であってよい。また、前記接尾辞ビンストリングが存在しない場合には、前記dec_abs_level[n]に対する前記ビンストリングは前記接頭辞ビンストリングであってよい。
例えば、前記接頭辞ビンストリングは後述のように導出されてよい。
前記dec_abs_level[n]の接頭辞値(prefix value)prefixValは、次式のように導出されてよい。
前記dec_abs_level[n]の前記ビンストリングの接頭辞(すなわち、接頭辞ビンストリング)は、前記cMax及び前記cRiceParamを入力として用いる前記prefixValに対するTR二進化プロセスによって導出されてよい。
前記接頭辞ビンストリングが、全てのビットが1であり、ビット長が6であるビットストリングと同一であれば、前記dec_abs_level[n]の前記ビンストリングの接尾辞ビンストリングが存在してよく、後述のように導出されてよい。
前記dec_abs_level[n]に対するライスパラメータ導出過程は、次の通りでよい。
前記ライスパラメータ導出過程の入力は、色相成分インデックス(colour component index)cIdx、ルマ位置(x0,y0)、現在係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数(binary logarithm)であるlog2TbWidth及び変換ブロックの高さの二進対数インlog2TbHeightであってよい。前記ルマ位置(x0,y0)は、ピクチャーの左上端ルマサンプルを基準とする現在ルマ変換ブロックの左上端サンプルを示すことができる。また、前記ライスパラメータ導出過程の出力は、前記ライスパラメータcRiceParamであってよい。
例えば、与えられたコンポーネントインデックスcIdx、前記左上端ルマ位置(x0,y0)を有する変換ブロックに対する配列AbsLevel[x][y]に基づき、変数locSumAbsは、次の表に表された疑似コード(pseudo code)のように導出されてよい。
その後、与えられた変数locSumAbsに基づき、前記ライスパラメータcRiceParamは次表のように導出されてよい。
また、例えば、dec_abs_level[n]に対するライスパラメータ導出過程において、baseLevelは0に設定されてよく、前記ZeroPos[n]は次の数式のように導出されてよい。
また、前記dec_abs_level[n]の接尾辞値(suffix value)suffixValは、次式のように導出されてよい。
前記dec_abs_level[n]の前記ビンストリングの接尾辞ビンストリングは、kがcRiceParam+1に設定され、truncSuffixLenは15に設定され、maxPreExtLenは11に設定される前記suffixValに対するリミテッドEGk二進化プロセスによって導出されてよい。
一方、上述したRRCとTSRCは、次のような相違を有し得る。
- 例えば、TSRCにおいて、シンタックスエレメントabs_remainder[]に対するライスパラメータは1と導出されてよい。RRCにおいて、シンタックスエレメントabs_remainder[]のライスパラメータcRiceParamは、上述の内容のように、前記lastAbsRemainder及び前記lastRiceParamに基づいて導出されてよいが、TSRCにおけるシンタックスエレメントabs_remainder[]のライスパラメータcRiceParamは、1と導出されてよい。すなわち、例えば、現在ブロック(例えば、現在TB)に対して変換スキップ(transform skip)が適用される場合に、前記現在ブロックに対するTSRCのabs_remainder[]に対するライスパラメータcRiceParamは1と導出されてよい。
- また、例えば、表3及び表4を参照すると、RRCではabs_level_gtx_flag[n][0]及び/又はabs_level_gtx_flag[n][1]がシグナルされてよいが、TSRCではabs_level_gtx_flag[n][0]、abs_level_gtx_flag[n][1]、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]及びabs_level_gtx_flag[n][4]KAシグナルされてよい。ここで、前記abs_level_gtx_flag[n][0]は、abs_level_gt1_flag又は第1係数レベルフラグとして表すことができ、前記abs_level_gtx_flag[n][1]は、abs_level_gt3_flag又は第2係数レベルフラグとして表すことができ、前記abs_level_gtx_flag[n][2]は、abs_level_gt5_flag又は第3係数レベルフラグとして表すことができ、前記abs_level_gtx_flag[n][3]は、abs_level_gt7_flag又は第4係数レベルフラグとして表すことができ、前記abs_level_gtx_flag[n][4]は、abs_level_gt9_flag又は第5係数レベルフラグとして表すことができる。具体的には、前記第1係数レベルフラグは、係数レベルが第1臨界値(例えば、1)よりも大きいか否かに対するフラグ、前記第2係数レベルフラグは、係数レベルが第2臨界値(例えば、3)よりも大きいか否かに対するフラグ、前記第3係数レベルフラグは、係数レベルが第3臨界値(例えば、5)よりも大きいか否かに対するフラグ、前記第4係数レベルフラグは、係数レベルが第4臨界値(例えば、7)よりも大きいか否かに対するフラグ、前記第5係数レベルフラグは、係数レベルが第5臨界値(例えば、9)よりも大きいか否かに対するフラグであってよい。上述の内容のように、TSRCはRRCと比較して、abs_level_gtx_flag[n][0]、abs_level_gtx_flag[n][1]に加えて、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]及びabs_level_gtx_flag[n][4]をさらに含むことができる。
- また、例えば、RRCにおいてシンタックスエレメントcoeff_sign_flagはバイパスコードされてよいが、TSRCでは、シンタックスエレメントcoeff_sign_flagはバイパスコーディング又はコンテクストコードされてよい。
- また、例えば、現在ブロックに対する文脈符号化ビンが尽きた場合に、RRCではシンタックスエレメントdec_abs_levelとしてコードされてよいが、TSRCでは、シンタックスエレメントabs_remainderとしてコードされてよい。
- また、例えば、RRCの変換係数パーシング順序は、最後の0でない係数を基準に右下端-左上端方向の約束された順序でパースされてよいが、TSRCでは左上端-右下端方向の約束された順序でパースされてよく、最後の0でない係数の位置は省略されてよい。
- また、例えば、RRCでは、従属量子化(Dependent Quantization,DQ)又はサインデータハイディング(Sign Data Hiding,SDH)方法が適用されることがあるが、TSRCは、従属量子化及びサインデータハイディング方法が用いられなくてよい。
また、レジデュアルコーディングと関連してサインデータハイディング(Sign Data Hiding,SDH)方法を提案することができる。前記サインデータハイディング方法は次の通りでよい。
変換係数を導出するとき、変換係数の符号は、1ビット(bit)のサインフラグ(上述したシンタックスエレメントcoeff_sign_flag)に基づいて導出されてよい。これと関連して、SDHは、コーディング効率を向上させるために、サブブロック/係数グループ(Coefficient Group,CG)内の最初の有効変換係数に対するcoeff_sign_flagの明示的シグナリングを省略する技術を表すことができる。ここで、前記最初の有効変換係数に対するcoeff_sign_flagの値は、当該サブブロック/係数グループ内の前記有効変換係数の絶対レベル(すなわち、絶対値)の和に基づいて導出されてよい。すなわち、前記最初の有効変換係数の符号(sign)は、当該サブブロック/係数グループ内の有効変換係数に対する絶対レベルの和に基づいて導出されてよい。一方、有効変換係数は、(絶対)値が0でない変換係数(non-zero transform coefficient)を意味できる。例えば、前記有効変換係数に対する絶対レベルの和が偶数(even)である場合に、前記最初の有効変換係数に対するcoeff_sign_flagの値は1と導出されてよく、前記有効変換係数に対する絶対レベルの和が奇数(odd)である場合に、前記最初の有効変換係数に対するcoeff_sign_flagの値は0と導出されてよい。言い換えると、例えば、前記有効変換係数に対する絶対レベルの和が偶数(even)である場合に、前記最初の有効変換係数に対する符号は負数(negative value)と導出されてよく、前記有効変換係数に対する絶対レベルの和が奇数(odd)である場合に、前記最初の有効変換係数に対する符号は正数(positive value)と導出されてよい。又は、例えば、前記有効変換係数に対する絶対レベルの和が偶数(even)である場合に、前記最初の有効変換係数に対するcoeff_sign_flagの値は0と導出されてよく、前記有効変換係数に対する絶対レベルの和が奇数(odd)である場合に、前記最初の有効変換係数に対するcoeff_sign_flagの値は1と導出されてよい。言い換えると、例えば、前記有効変換係数に対する絶対レベルの和が偶数(even)である場合に、前記最初の有効変換係数に対する符号は正数(positive value)と導出されてよく、前記有効変換係数に対する絶対レベルの和が奇数(odd)である場合に、前記最初の有効変換係数に対する符号は負数(negative value)と導出されてよい。
例えば、レジデュアルシンタックスにおける前記SDHは、次表のように表すことができる。
表16を参照すると、変数signHiddenFlagは、前記SDHが適用されるか否かを示すことができる。前記変数signHiddenFlagは、signHiddenと呼ぶこともできる。例えば、変数signHiddenFlagの値が0である場合に、変数signHiddenFlagは、前記SDHが適用されないことを示すことができ、変数signHiddenFlagの値が1である場合に、変数signHiddenFlagは、前記SDHが適用されることを示すことができる。例えば、変数signHiddenFlagの値は、シグナルされるフラグ情報(例えば、sh_sign_data_hiding_used_flag又はpic_sign_data_hiding_enabled_flag又はsps_sign_data_hiding_enabled_flag)に基づいて設定されてよい。また、例えば、変数signHiddenFlagの値は、lastSigScanPosSb及びfirstSigScanPosSbに基づいて設定されてよい。ここで、lastSigScanPosSbは、スキャン順序によって当該サブブロック/係数グループ内で探索される最後の有効変換係数位置を示すことができ、firstSigScanPosSbは、スキャン順序によって当該サブブロック/係数グループ内で探索される最初の有効変換係数位置を示すことができる。一般に、lastSigScanPosSbは、firstSigScanPosSbよりも相対的に高周波成分領域に位置してよい。したがって、lastSigScanPosSb-firstSigScanPosSbが所定の臨界値よりも大きい場合に、前記signHidden値は1と導出されてよく(すなわち、SDH適用)、その他の場合に、前記signHidden値は0と導出されてよい(すなわち、SDH微積用)。ここで、例えば、表35を参照すると、前記臨界値は3に設定されてよい。
また、表16を参照すると、signHiddenFlagの値が0(すなわち、!signHiddenFlag)であっても、現在係数がスキャン順序による(サブ)ブロック内最初有効係数でない場合(すなわち、n!=firstSigScanPosSb)に、前記現在係数に対するcoeff_sign_flag[n]は明示的にシグナルされてよい。
また、表16を参照すると、signHiddenFlagの値が1であり、仮に現在係数がスキャン順序による(サブ)ブロック内最初有効係数であれば(すなわち、n=first SigScanPosSb)、前記現在係数に対するcoeff_sign_flag[n]の明示的シグナリングは省略されてよい。この場合、前記現在係数(すなわち、最初有効係数)に対するcoeff_sign_flag[n]の値は、次のように導出されてよい。例えば、前記最初有効係数に対するcoeff_sign_flag[n]の値は、当該(サブ)ブロック内前記有効係数に対するcoeff_sign_flag[n]値に基づいて導出されてよい。一例として、前記有効係数に対するcoeff_sign_flag[n]値の和が偶数であれば、前記最初有効係数に対するcoeff_sign_flag[n]は1と導出されてよく、前記最初有効係数を除く前記残りの有効係数に対するcoeff_sign_flag[n]値の和が奇数であれば、前記最初有効係数に対するcoeff_sign_flag[n]は0と導出されてよい。又は、他の例として、前記有効係数に対するcoeff_sign_flag[n]値の和が偶数であれば、前記最初有効係数に対するcoeff_sign_flag[n]は0と導出されてよく、前記有効係数に対するcoeff_sign_flag[n]値の和が奇数であれば、前記最初有効係数に対するcoeff_sign_flag[n]は1と導出されてよい。
一方、ハイレベルシンタックス(VPS、SPS、PPS、スライスヘッダーシンタックスなど)又はローレベルシンタックス(スライスデータシンタックス、コーディングユニットシンタックス、変換ユニットシンタックスなど)において上述のサインデータハイディングが活性化され、前記sh_ts_residual_coding_disabled_flagが1である場合に、RRCのサインデータハイディング過程が無損失コーディングにおいて用いらることがある。このため、エンコーディング装置での誤った設定によって無損失コーディングが不可能になることがある。又は、無損失コーディングではなく損失コーディング(loss coding)(すなわち、非可逆的なコーディング方法)が適用され、変換スキップが適用されたレジデュアル信号がRRCでコードされながら同時にBDPCMが適用される場合に、BDPCMは、レジデュアル間の差分(difference)によってレジデュアル値が0になる区間が、一般の場合に比べて多く発生するにもかかわらず、SDH適用条件に符合してSDHが行われることにより、コーディング損失が発生することがある。具体的には、例えば、CG内の0番位置と15番位置に有効変換係数(ノンゼロレジデュアルデータ)がそれぞれ存在し、前記CG内の残り位置の変換係数の値は0である場合に、上述したSDH適用条件によって前記CGにSDHが適用されてよく、したがって、前記CGの最初の有効変換係数に対するサインデータ(すなわち、サインフラグのコーディング)は省略されてよい。したがって、この場合、サインデータの省略のために、量子化段階で前記CGの只2つのレジデュアルデータのパリティが調節されることがあるところ、むしろSDHが適用されない場合に比べてよりコーディング損失が発生することがある。このような事例は、BDPCMが適用されないブロックでも発生し得るが、BDPCMの特性上、周辺レジデュアルとの差分を用いてレベルを下げてしまうため、SDHを適用する上で不都合がより頻繁に発生することがある。
そこで、本文書は、SDHとsh_ts_residual_coding_disabled_flag=1である場合のレジデュアルコーディング(すなわち、現在スライス内の変換スキップブロックのレジデュアルサンプルをRRCでコーディング)が共に用いられ、意図せぬコーディング損失を引き起こしたり誤動作することを防止するために、上述した2つの技術間の従属性/制約を設定する実施例を提案する。
一方、上述したように、レジデュアルデータコーディング方法は、レギュラーレジデュアルコーディング(Regular Residual Coding,RRC)と変換スキップレジデュアルコーディング(Transform Skip Residual Coding,TSRC)が存在してよい。
上述した2つの方法のうち、現在ブロックに対するレジデュアルデータコーディング方法は、表1に示すように、transform_skip_flagとsh_ts_residual_coding_disabled_flagの値に基づいて決定されてよい。ここで、シンタックスエレメントsh_ts_residual_coding_disabled_flagは、前記TSRCが使用可能であるか否かを示すことができる。したがって、前記transform_skip_flagが、変換スキップされることを示す場合にも、sh_ts_residual_coding_disabled_flagが前記TSRCが使用可能でないことを示すと、変換スキップブロックに対してRRCによるシンタックスエレメントがシグナルされてよい。すなわち、transform_skip_flagの値が0であるか、sh_ts_residual_coding_disabled_flagの値が1である場合に、RRCが用いられてよく、その他の場合にはTSRCが用いられてよい。
本文書は、一実施例として、sh_ts_residual_coding_disabled_flagがpic_sign_data_hiding_enabled_flagに従属する方法を提案する。例えば、本実施例において提案するシンタックスエレメントは次表の通りでよい。
ここで、例えば、前記pic_sign_data_hiding_enabled_flagは、サインデータハイディングが使用可能であるか否かに対するフラグであってよい。例えば、pic_sign_data_hiding_enabled_flagは、サインデータハイディングが使用可能であるか否かを示すことができる。すなわち、例えば、pic_sign_data_hiding_enabled_flagは、シーケンス(sequence)又はピクチャーヘッダー(すなわち、ピクチャーヘッダー構造(picture_header_structure()))に対するピクチャーのブロックに対してサインデータハイディングが使用可能であるか否かを示すことができる。例えば、pic_sign_data_hiding_enabled_flagは、現在スライスに対してサインデータハイディングが用いられるか否かを示すサインデータハイディング使用フラグが存在できるか否かを示すことができる。例えば、値が1である前記pic_sign_data_hiding_enabled_flagは、前記サインデータハイディングが使用可能であることを示すことができ、値が0である前記pic_sign_data_hiding_enabled_flagは、前記サインデータハイディングが使用可能でないことを示すことができる。例えば、値が1である前記pic_sign_data_hiding_enabled_flagは、前記サインデータハイディングが適用されたサインフラグが存在できることを示すことができ、値が0である前記pic_sign_data_hiding_enabled_flagは、前記サインデータハイディングが適用されたサインフラグが存在しないことを示すことができる。
上記表17によれば、サインデータハイディングが使用可能でない場合にのみ、sh_ts_residual_coding_disabled_flagがシグナルされてよい。また、サインデータハイディングが使用可能である場合に、sh_ts_residual_coding_disabled_flagは、シグナルされなくてよく、sh_ts_residual_coding_disabled_flagの値は、0(現在スライス内の変換スキップブロックのレジデュアルサンプルをTSRCシンタックスでコーディング)又は1(現在スライス内の変換スキップブロックのレジデュアルサンプルをRRCシンタックスでコーディング)と見なされて(infer)よい。
ここで、例えば、前記pic_sign_data_hiding_enabled_flagは、ピクチャーヘッダーシンタックス又はスライスヘッダーシンタックスとしてシグナルされてよい。例えば、前記pic_sign_data_hiding_enabled_flagが前記ピクチャーヘッダーシンタックス以外のシンタックスとしてシグナルされる場合には、他の名称と呼ばれてよい。例えば、前記pic_sign_data_hiding_enabled_flagは、slice_sign_data_hiding_enabled_flagと呼ぶこともできる。また、sh_ts_residual_coding_disabled_flagは、スライスヘッダーシンタックスとしてシグナルされてよく、又はスライスヘッダーシンタックスではなく他のハイレベルシンタックス(High Level Syntax,HLS)(例えば、SPSシンタックス/VPSシンタックス/PPSシンタックス/PHシンタックス/DPSシンタックスなど)又はローレベル(CU/TU)でシグナルされてもよい。シグナルされるシンタックスの上/下位関係又はシンタックス上の位置に関係なく、SDHが使用可能であるか否かによってレジデュアルコーディング方法が決定される場合には本実施例に符合するものと解釈されてよい。
一方、既存のイメージ/ビデオコーディングによれば、ハイレベルシンタックス(SPSシンタックス/VPSシンタックス/PPSシンタックス/DPSシンタックス/ピクチャーヘッダーシンタックス(picture header syntax)/スライスヘッダーシンタックスなど)又はローレベル(CU/TU)で前記SDHが活性化され、sh_ts_residual_coding_disabled_flagが1である場合に、上述したRRCでのSDHが無損失コーディングに対して用いられることがあり、このため、エンコーディング装置での誤った設定によって無損失コーディングが不可能になることがある。そこで、本文書は、SDHとsh_ts_residual_coding_disabled_flag=1である場合におけるレジデュアルコーディング(すなわち、現在スライス内の変換スキップブロックのレジデュアルサンプルをRRCでコーディング)が共に用いられ、意図せぬコーディング損失を引き起こしたり誤動作することを防止するために、transform_skip_flagの値が1である場合に、変換係数のレベルをコードする際にSDHが用いらないようにする実施例を提案する。前記提案された実施例に係るレジデュアルコーディングシンタックスは、次表の通りでよい。
上記表18を参照すると、前記SDHが適用されるか否かを示す変数signHiddenがtransform_skip_flagの値に基づいて導出されてよい。例えば、transform_skip_flagの値が1である場合に、signHiddenの値は0と導出されてよい。すなわち、例えば、transform_skip_flagの値が1である場合に、現在ブロックの変換係数の符号を導出する際にSDHが適用されなくてよい。
また、本文書は、SDHとsh_ts_residual_coding_disabled_flag=1である場合におけるレジデュアルコーディング(すなわち、現在スライス内の変換スキップブロックのレジデュアルサンプルをRRCでコーディング)が共に用いられ、意図せぬコーディング損失を引き起こしたり誤動作することを防止するために、BdpcmFlagの値が1である場合に、変換係数のレベルをコードする際にSDHが用いられないようにする実施例を提案する。前記提案された実施例に係るレジデュアルコーディングシンタックスは、次表の通りでよい。
上記表19を参照すると、前記SDHが適用されるか否かを示す変数signHiddenが前記BDPCMが適用されるか否かを示す変数BdpcmFlagの値に基づいて導出されてよい。例えば、BdpcmFlagの値が1である場合に、signHiddenの値は0と導出されてよい。すなわち、例えば、BdpcmFlagの値が1である場合(現在ブロックに対してBDPCMが適用される場合)に、現在ブロックの変換係数の符号を導出する際にSDHが適用されなくてよい。
表19を参照すると、BdpcmFlagが1であると、損失コーディングが適用される場合にはTSRCに対するSDHは許容されるが、BDPCMが適用される場合にはSDHが用いられなくてよい。
また、本文書は、上述したシンタックスエレメントsh_ts_residual_coding_disabled_flagのシグナリングと関連した様々な実施例を提案する。
例えば、上述したように、sh_ts_residual_coding_disabled_flagは、TSRCが使用可能でないか否かを定義するシンタックスエレメントであり、よって、変換スキップブロックが用いられない場合にはシグナルされなくてもよい。すなわち、変換スキップブロックを使用するか否かに対するシンタックスエレメントが、変換スキップブロックが用いられることを示す場合にのみ、前記sh_ts_residual_coding_disabled_flagをシグナリングすることが有意味であり得る。
そこで、本文書は、sps_transform_skip_enabled_flagが1である場合にのみ、sh_ts_residual_coding_disabled_flagをシグナリングする実施例を提案する。本実施例に係るシンタックスは次表の通りである。
表20を参照すると、sps_transform_skip_enabled_flagが1である場合、sh_ts_residual_coding_disabled_flagがシグナルされてよく、sps_transform_skip_enabled_flagが0である場合、sh_ts_residual_coding_disabled_flagがシグナルされなくてよい。ここで、例えば、前記sps_transform_skip_enabled_flagは、変換スキップブロックが用いられるか否かを示すことができる。すなわち、例えば、前記sps_transform_skip_enabled_flagは、変換スキップが使用可能であるか否かを示すことができる。例えば、前記sps_transform_skip_enabled_flagの値が1である場合、前記sps_transform_skip_enabled_flagは、変換ユニットシンタックス(transform unit syntax)に変換スキップフラグ(transform_skip_flag)が存在できることを示すことができ、前記sps_transform_skip_enabled_flagの値が0である場合、前記sps_transform_skip_enabled_flagは、変換ユニットシンタックスに変換スキップフラグが存在しないことを示すことができる。一方、sh_ts_residual_coding_disabled_flagがシグナルされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。また、上述したsps_transform_skip_enabled_flagは、SPSでシグナルされてよく、又はSPSではなく他のハイレベルシンタックス(VPS、PPS、ピクチャーヘッダーシンタックス、スライスヘッダーシンタックスなど)又はローレベルシンタックス(スライスデータシンタックス(slice data syntax)、コーディングユニットシンタックス(coding unit syntax)、変換ユニットシンタックス(tansform unit syntax)など)でシグナルされてよい。また、sh_ts_residual_coding_disabled_flagよりも先にシグナルされてよい。
また、本文書は、sh_ts_residual_coding_disabled_flagのシグナリングと関連して上述の実施例を組み合わせた実施例を提案する。例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表21を参照すると、sps_transform_skip_enabled_flagが1であり、pic_sign_data_hiding_enabled_flagが0である場合、sh_ts_residual_coding_disabled_flagがシグナルされてよく、それ以外の場合にはsh_ts_residual_coding_disabled_flagがシグナルされなくてよい。一方、sh_ts_residual_coding_disabled_flagがシグナルされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。
又は、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表22を参照すると、pic_sign_data_hiding_enabled_flagが0である又はsps_transform_skip_enabled_flagが1である場合、sh_ts_residual_coding_disabled_flagがシグナルされてよく、それ以外の場合にはsh_ts_residual_coding_disabled_flagがシグナルされなくてよい。一方、sh_ts_residual_coding_disabled_flagがシグナルされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。
また、例えば、本実施例によれば、シンタックスエレメントph_dep_quant_enabled_flag及びsh_ts_residual_coding_disabled_flagを同一のハイレベルシンタックス又はローレベルシンタックスでシグナリングする方案が提案されてよい。例えば、上記表22を参照すると、ph_dep_quant_enabled_flag及びsh_ts_residual_coding_disabled_flagが両方ともピクチャーヘッダーシンタックスでシグナルされてよい。この場合、前記sh_ts_residual_coding_disabled_flagは、ph_ts_residual_coding_disabled_flagと呼ぶことができる。一方、前記ph_dep_quant_enabled_flagは、従属量子化(dependent quantization)が使用可能であるか否かに対するフラグであってよい。例えば、ph_dep_quant_enabled_flagは、従属量子化(dependent quantization)が使用可能であるか否かを示すことができる。すなわち、例えば、ph_dep_quant_enabled_flagは、シーケンス(sequence)内ピクチャーのブロックに対して従属量子化が使用可能であるか否かを示すことができる。例えば、ph_dep_quant_enabled_flagは、現在スライスに対して従属量子化が用いられるか否かを示す従属量子化使用フラグが存在できるか否かを示すことができる。例えば、値が1である前記ph_dep_quant_enabled_flagは、前記従属量子化が使用可能であることを示すことができ、値が0である前記ph_dep_quant_enabled_flagは、前記従属量子化が使用可能でないことを示すことができる。また、例えば、前記ph_dep_quant_enabled_flagは、シグナルされるシンタックスによってsh_dep_quant_enabled_flagと呼ぶことができる。
又は、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表23を参照すると、pic_sign_data_hiding_enabled_flagが0であり、sps_transform_skip_enabled_flagが1である場合、sh_ts_residual_coding_disabled_flagがシグナルされてよく、それ以外の場合にはsh_ts_residual_coding_disabled_flagがシグナルされなくてよい。一方、sh_ts_residual_coding_disabled_flagがシグナルされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。また、例えば、上記表23を参照すると、ph_dep_quant_enabled_flag及びsh_ts_residual_coding_disabled_flagが両方ともピクチャーヘッダーシンタックスでシグナルされてよい。この場合、前記sh_ts_residual_coding_disabled_flagは、ph_ts_residual_coding_disabled_flagと呼ぶことができる。
また、本文書は、上述したシンタックスエレメントph_dep_quant_enabled_flag、pic_sign_data_hiding_enabled_flag及び/又はsh_ts_residual_coding_disabled_flagを同一のハイレベルシンタックス(VPS、SPS,PPS、ピクチャーヘッダー(picture header)、スライスヘッダー(slice header)など)又はローレベルシンタックス(スライスデータ(slice data)、コーディングユニット(coding unit)、変換ユニット(tansform unit)など)でシグナリングする実施例を提案する。
例えば、次表のように、pic_sign_data_hiding_enabled_flag及びsh_ts_residual_coding_disabled_flagが両方ともピクチャーヘッダーシンタックスでシグナルされる実施例が提案されてよい。
この場合、前記sh_ts_residual_coding_disabled_flagは、ph_ts_residual_coding_disabled_flagと呼ぶことができる。
本実施例によれば、同一のHLSでSDHが使用可能であるか否かを示すシンタックスエレメント(すなわち、pic_sign_data_hiding_enabled_flag)の値が0である場合にのみ、変換スキップブロックのためのレジデュアルコーディング(すなわち、TSRC)が使用可能であるか否かを示すシンタックスエレメント(すなわち、sh_ts_residual_coding_disabled_flag)がシグナルされてよい。例えば、表24を参照すると、pic_sign_data_hiding_enabled_flagは、ピクチャーヘッダーシンタックスでシグナルされてよく、pic_sign_data_hiding_enabled_flagの値が0である場合、ph_ts_residual_coding_disabled_flagがピクチャーヘッダーシンタックスでシグナルされてよい。一方、例えば、pic_sign_data_hiding_enabled_flagの値が1である場合、ph_ts_residual_coding_disabled_flagは、シグナルされなくてよい。sh_ts_residual_coding_disabled_flagがシグナルされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。また、sps_sign_data_hiding_enabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagがピクチャーヘッダーシンタックスでシグナルされてよい。
上記表24による実施例は一例にすぎず、両シンタックスエレメントは、ピクチャーヘッダー(picture header)ではなく他のハイレベルシンタックス(VPS、SPS、PPS、スライスヘッダーなど)又はローレベルシンタックス(スライスデータ、コーディングユニット、変換ユニットなど)でシグナルされてもよい。
又は、例えば、次表のように、変換スキップブロックのためのレジデュアルコーディング(すなわち、TSRC)が使用可能であるか否かを示すシンタックスエレメントの値が0である場合(すなわち、TSRCが使用可能である場合)にのみ、SDHが使用可能であるか否かを示すシンタックスエレメントがシグナルされる実施例が提案されてよい。
表25を参照すると、ph_ts_residual_coding_disabled_flagの値が0である場合、pic_sign_data_hiding_enabled_flagがピクチャーヘッダーシンタックスでシグナルされてよい。一方、例えば、ph_ts_residual_coding_disabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagは、シグナルされなくてよい。また、例えば、pic_sign_data_hiding_enabled_flagがシグナルされない場合、pic_sign_data_hiding_enabled_flagは、デコーディング装置で0と見なされてよい(infer)。
上記表25による実施例は一例にすぎず、両シンタックスエレメントは、ピクチャーヘッダー(picture header)ではなく他のハイレベルシンタックス(VPS、SPS、PPS、スライスヘッダーなど)又はローレベルシンタックス(スライスデータ、コーディングユニット、変換ユニットなど)でシグナルされてもよい。
又は、例えば、ph_ts_residual_coding_disabled_flagに基づいてpic_sign_data_hiding_enabled_flag及び/又はph_dep_quant_enabled_flagを制約する方案が提案されてよい。
例えば、次表のように、ph_ts_residual_coding_disabled_flagの値が0である場合にのみ、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagがシグナルされる実施例が提案されてよい。
表26を参照すると、ph_ts_residual_coding_disabled_flagの値が0である場合、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagがピクチャーヘッダーシンタックスでシグナルされてよい。一方、例えば、ph_ts_residual_coding_disabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagは、シグナルされなくてよい。また、例えば、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagがシグナルされない場合、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagは、デコーディング装置で0と見なされてよい(infer)。
また、例えば、上記表26を参照すると、ph_ts_residual_coding_disabled_flag、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagが両方ともピクチャーヘッダーシンタックスでシグナルされてよい。
また、本文書は、sh_ts_residual_coding_disabled_flagのシグナリングと関連して上述の実施例を組み合わせた実施例を提案する。例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表27を参照すると、pic_sign_data_hiding_enabled_flagが0である又はsps_transform_skip_enabled_flagが1である場合、ph_ts_residual_coding_disabled_flagがシグナルされてよく、それ以外の場合にはph_ts_residual_coding_disabled_flagがシグナルされなくてよい。一方、ph_ts_residual_coding_disabled_flagがシグナルされない場合、ph_ts_residual_coding_disabled_flagは、デコーディング装置で0と見なされてよい(infer)。また、sps_sign_data_hiding_enabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagがピクチャーヘッダーシンタックスでシグナルされてよい。
又は、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表28を参照すると、pic_sign_data_hiding_enabled_flagが0であり、sps_transform_skip_enabled_flagが1である場合、ph_ts_residual_coding_disabled_flagがシグナルされてよく、それ以外の場合にはph_ts_residual_coding_disabled_flagがシグナルされなくてよい。一方、ph_ts_residual_coding_disabled_flagがシグナルされない場合、ph_ts_residual_coding_disabled_flagは、デコーディング装置で0と見なされてよい(infer)。また、sps_sign_data_hiding_enabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagがピクチャーヘッダーシンタックスでシグナルされてよい。
又は、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表29を参照すると、sps_transform_skip_enabled_flagが1である場合、ph_ts_residual_coding_disabled_flagがシグナルされてよく、それ以外の場合にはph_ts_residual_coding_disabled_flagがシグナルされなくてよい。また、表29を参照すると、ph_ts_residual_coding_disabled_flagが0である場合、pic_sign_data_hiding_enabled_flagがシグナルされてよく、それ以外の場合にはpic_sign_data_hiding_enabled_flagがシグナルされなくてよい。一方、ph_ts_residual_coding_disabled_flagがシグナルされない場合、ph_ts_residual_coding_disabled_flagは、デコーディング装置で0と見なされてよい(infer)。また、pic_sign_data_hiding_enabled_flagがシグナルされない場合、pic_sign_data_hiding_enabled_flagは、デコーディング装置で0と見なされてよい(infer)。
又は、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表30を参照すると、sps_transform_skip_enabled_flagが1である場合、ph_ts_residual_coding_disabled_flagがシグナルされてよく、それ以外の場合にはph_ts_residual_coding_disabled_flagがシグナルされなくてよい。また、表30を参照すると、ph_ts_residual_coding_disabled_flagが0である場合、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagがシグナルされてよく、それ以外の場合にはpic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagがシグナルされなくてよい。一方、ph_ts_residual_coding_disabled_flagがシグナルされない場合、ph_ts_residual_coding_disabled_flagは、デコーディング装置で0と見なされてよい(infer)。また、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagがシグナルされない場合、pic_sign_data_hiding_enabled_flag及びph_dep_quant_enabled_flagは、デコーディング装置で0と見なされてよい(infer)。
一方、上述したように、本文書に開示のシンタックステーブル内の情報(シンタックスエレメント)は、映像/ビデオ情報に含まれてよく、エンコーディング装置で構成/エンコードされ、ビットストリームの形態でデコーディング装置に伝達されてよい。デコーディング装置は、当該シンタックステーブル内の情報(シンタックスエレメント)をパース/デコードすることができる。デコーディング装置は、デコードされた情報に基づいてブロック/映像/ビデオ復元手順を行うことができる。
図6には、本文書に係るエンコーディング装置による映像エンコーディング方法を概略的に示す。図6で開示された方法は、図2で開示されたエンコーディング装置によって行われてよい。具体的に、例えば、図6のS600~S630は、前記エンコーディング装置のエントロピーエンコーディング部によって行われてよい。また、たとえ図示してはいないが、変換スキップブロックに対する予測サンプルを導出する過程は、前記エンコーディング装置の予測部によって行われてよく、前記変換スキップブロックに対する原本サンプルと予測サンプルに基づいて前記変換スキップブロックに対するレジデュアルサンプルを導出する過程は、前記エンコーディング装置の減算部によって行われてよく、前記変換スキップブロックに対するレジデュアルサンプルと予測サンプルに基づいて前記変換スキップブロックに対する復元サンプル及び復元ピクチャーを生成する過程は、前記エンコーディング装置の加算部によって行われてよい。
エンコーディング装置は、現在スライスに対してサインデータハイディング(sign data hiding)が使用可能であるか否かに対するサインデータハイディング可用フラグをエンコードする(S600)。エンコーディング装置は、現在スライスに対してサインデータハイディング(sign data hiding)が使用可能であるか否かに対するサインデータハイディング可用フラグをエンコードすることができる。映像情報は、サインデータハイディング可用フラグを含むことができる。例えば、エンコーディング装置は、シーケンス(sequence)内ピクチャーのブロックに対してサインデータハイディングが使用可能であるか決定でき、サインデータハイディングが使用可能であるか否かに対するサインデータハイディング可用フラグをエンコードすることができる。例えば、前記サインデータハイディング可用フラグは、サインデータハイディングが使用可能であるか否かに対するフラグであってよい。例えば、サインデータハイディング可用フラグは、サインデータハイディングが使用可能であるか否かを示すことができる。すなわち、例えば、サインデータハイディング可用フラグは、シーケンス(sequence)内ピクチャーのブロックに対してサインデータハイディングが使用可能であるか否かを示すことができる。例えば、サインデータハイディング可用フラグは、現在スライスに対してサインデータハイディングが用いられるか否かを示すサインデータハイディング使用フラグが存在できるか否かを示すことができる。例えば、値が1である前記サインデータハイディング可用フラグは、前記サインデータハイディングが使用可能であることを示すことができ、値が0である前記サインデータハイディング可用フラグは、前記サインデータハイディングが使用可能でないことを示すことができる。例えば、値が1である前記サインデータハイディング可用フラグは、前記サインデータハイディングが適用されたサインフラグが存在できることを示すことができ、値が0である前記サインデータハイディング可用フラグは、前記サインデータハイディングが適用されたサインフラグが存在しないことを示すことができる。また、例えば、前記サインデータハイディング可用フラグは、SPS(Sequence Parameter Set)シンタックスでシグナルされてよい。又は、例えば、前記サインデータハイディング可用フラグは、ピクチャーヘッダーシンタックス又はスライスヘッダーシンタックスでシグナルされてよい。前記サインデータハイディング可用フラグのシンタックスエレメントは、上述したsps_sign_data_hiding_enabled_flagであってよい。
エンコーディング装置は、前記サインデータハイディング可用フラグに基づいて、TSRC(Transform Skip Residual Coding)が前記現在スライスの変換スキップブロック(transform skip block)に対して使用可能であるか否かに対するTSRC可用フラグをエンコードする(S610)。映像情報は、TSRC可用フラグを含むことができる。
例えば、エンコーディング装置は、前記サインデータハイディング可用フラグに基づいて前記TSRC可用フラグをエンコードすることができる。例えば、前記TSRC可用フラグは、値が0である前記サインデータハイディング可用フラグに基づいてエンコードされてよい。すなわち、例えば、前記サインデータハイディング可用フラグの値が0である場合(すなわち、前記サインデータハイディング可用フラグがサインデータハイディングが使用可能でないことを示す場合)、前記TSRC可用フラグはエンコードされてよい。言い換えると、例えば、前記サインデータハイディング可用フラグの値が0である場合(すなわち、前記サインデータハイディング可用フラグがサインデータハイディングが使用可能でないことを示す場合)、前記TSRC可用フラグはシグナルされてよい。また、例えば、前記サインデータハイディング可用フラグの値が1である場合、前記TSRC可用フラグはエンコードされなくてよく、デコーディング装置で前記TSRC可用フラグの値は0と導出されてよい。すなわち、例えば、前記サインデータハイディング可用フラグの値が1である場合、前記TSRC可用フラグはシグナルされなくてよく、デコーディング装置で前記TSRC可用フラグの値は0と導出されてよい。
ここで、例えば、前記TSRC可用フラグは、TSRCが使用可能であるか否かに対するフラグであってよい。すなわち、例えば、前記TSRC可用フラグは、スライス内ブロックに対してTSRCが使用可能であるか否かを示すフラグであってよい。言い換えると、例えば、前記TSRC可用フラグは、スライス内変換スキップブロックに対してTSRCが使用可能であるか否かを示すフラグであってよい。ここで、ブロックは、コーディングブロック(Coding Block,CB)又は変換ブロック(Transform Block,TB)であってよい。例えば、値が1である前記TSRC可用フラグは、前記TSRCが使用可能でないことを示すことができ、値が0である前記TSRC可用フラグは、前記TSRCが使用可能であることを示すことができる。また、例えば、前記TSRC可用フラグは、スライスヘッダー(Slice Header)シンタックスでシグナルされてよい。前記TSRC可用フラグのシンタックスエレメントは、上述したsh_ts_residual_coding_disabled_flagであってよい。前記TSRC可用フラグは、TSRC非可用フラグと呼ぶこともできる。
一方、例えば、エンコーディング装置は、シーケンス(sequence)内ピクチャーのブロックに対して従属量子化が使用可能であるか否か決定でき、従属量子化が使用可能であるか否かに対する従属量子化可用フラグをエンコードすることができる。映像情報は、前記従属量子化可用フラグを含むことができる。例えば、前記従属量子化可用フラグは、従属量子化(dependent quantization)が使用可能であるか否かに対するフラグであってよい。例えば、従属量子化可用フラグは、従属量子化(dependent quantization)が使用可能であるか否かを示すことができる。すなわち、例えば、従属量子化可用フラグは、シーケンス(sequence)内ピクチャーのブロックに対して従属量子化が使用可能であるか否かを示すことができる。例えば、従属量子化可用フラグは、現在スライスに対して従属量子化が用いられるか否かを示す従属量子化使用フラグが存在できるか否かを示すことができる。例えば、値が1である前記従属量子化可用フラグは、前記従属量子化が使用可能であることを示すことができ、値が0である前記従属量子化可用フラグは、前記従属量子化が使用可能でないことを示すことができる。また、例えば、前記従属量子化可用フラグは、SPSシンタックス又はスライスヘッダーシンタックスなどでシグナルされてよい。前記従属量子化可用フラグのシンタックスエレメントは、上述したsps_dep_quant_enabled_flagであってよい。
また、例えば、エンコーディング装置は、前記現在スライスに対して変換スキップ(transform skip)が使用可能であるか否かに対する変換スキップ可用フラグをエンコードすることができる。映像情報は、変換スキップ可用フラグを含むことができる。例えば、エンコーディング装置は、シーケンス(sequence)内ピクチャーのブロックに対して変換スキップが使用可能であるか決定でき、変換スキップ(transform skip)が使用可能であるか否かに対する変換スキップ可用フラグをエンコードすることができる。例えば、前記変換スキップ可用フラグは、変換スキップ(transform skip)が使用可能であるか否かに対するフラグであってよい。例えば、変換スキップ可用フラグは、変換スキップ(transform skip)が使用可能であるか否かを示すことができる。すなわち、例えば、変換スキップ可用フラグは、シーケンス(sequence)内ピクチャーのブロックに対して変換スキップが使用可能であるか否かを示すことができる。例えば、変換スキップ可用フラグは、変換スキップフラグが存在できるか否かを示すことができる。例えば、値が1である前記変換スキップ可用フラグは、前記変換スキップが使用可能であることを示すことができ、値が0である前記変換スキップ可用フラグは、前記変換スキップが使用可能でないことを示すことができる。すなわち、例えば、値が1である前記変換スキップ可用フラグは、前記変換スキップフラグが存在できることを示すことができ、値が0である前記変換スキップ可用フラグは、前記変換スキップフラグが存在しないことを示すことができる。また、例えば、前記変換スキップ可用フラグは、SPS(Sequence Parameter Set)シンタックスでシグナルされてよい。前記変換スキップ可用フラグのシンタックスエレメントは、上述したsps_transform_skip_enabled_flagであってよい。
また、例えば、前記TSRC可用フラグは、前記サインデータハイディング可用フラグ及び/又は前記変換スキップ可用フラグに基づいてエンコードされてよい。例えば、前記TSRC可用フラグは、値が0である前記サインデータハイディング可用フラグ及び値が1である前記変換スキップ可用フラグに基づいてエンコードされてよい。すなわち、例えば、前記サインデータハイディング可用フラグの値が0であり(すなわち、前記サインデータハイディング可用フラグがサインデータハイディングが使用可能でないことを示し)、前記変換スキップ可用フラグの値が1である(すなわち、前記変換スキップ可用フラグが前記変換スキップが使用可能であることを示す)場合に、前記TSRC可用フラグはエンコード(又は、シグナル)されてよい。また、例えば、前記変換スキップ可用フラグの値が0である場合、前記TSRC可用フラグはエンコードされなくてよく、前記TSRC可用フラグの値は0と導出されてよい。すなわち、例えば、前記変換スキップ可用フラグの値が0である場合、前記TSRC可用フラグはシグナルされなくてよく、前記TSRC可用フラグの値は0と導出されてよい。
エンコーディング装置は、前記TSRC可用フラグに基づいて前記変換スキップブロックに対するレジデュアル情報をエンコードする(S620)。エンコーディング装置は、前記TSRC可用フラグに基づいて前記変換スキップブロックに対するレジデュアル情報をエンコードすることができる。
例えば、エンコーディング装置は、前記TSRC可用フラグに基づいて前記変換スキップブロックに対するレジデュアルコーディングシンタックスを決定できる。例えば、エンコーディング装置は、前記TSRC可用フラグに基づいて前記変換スキップブロックに対するレジデュアルコーディングシンタックスを、レギュラーレジデュアルコーディング(Regular Residual Coding,RRC)シンタックス及び変換スキップレジデュアルコーディング(Tranform Skip Residual Coding,TSRC)シンタックスのうち一つと決定できる。RRCシンタックスはRRCによるシンタックスを表すことができ、TSRCシンタックスはTSRCによるシンタックスを表すことができる。
例えば、値が1である前記TSRC可用フラグに基づいて、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスはレギュラーレジデュアルコーディング(Regular Residual Coding,RRC)シンタックスと決定されてよい。この場合、例えば、前記変換スキップブロックの変換をスキップするか否かに対する変換スキップフラグがエンコードされてよく、前記変換スキップフラグの値は1であってよい。例えば、前記映像情報は、前記変換スキップブロックに対する変換スキップフラグを含むことができる。前記変換スキップフラグは、前記変換スキップブロックの変換がスキップされるか否かを示すことができる。すなわち、前記変換スキップフラグは、前記変換スキップブロックの変換係数に変換が適用されたか否かを示すことができる。前記変換スキップフラグを示すシンタックスエレメントは、上述したtransform_skip_flagであってよい。例えば、前記変換スキップフラグの値が1である場合、前記変換スキップフラグは、前記変換スキップブロックに変換が適用されないこと(すなわち、変換スキップされること)を示すことができ、前記変換スキップフラグの値が0である場合、前記変換スキップフラグは、前記変換スキップブロックに変換が適用されることを示すことができる。例えば、前記現在スライス内ブロックが変換スキップブロックである場合、前記ブロックに対する変換スキップフラグの値が1であってよい。
また、例えば、値が0である前記TSRC可用フラグに基づいて、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスは、変換スキップレジデュアルコーディング(Transform Skip Residual Coding,TSRC)シンタックスと決定されてよい。また、例えば、前記変換スキップブロックの変換をスキップするか否かに対する変換スキップフラグがエンコードされてよく、値が1である前記変換スキップフラグ及び値が0である前記TSRC可用フラグに基づいて、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスは、変換スキップレジデュアルコーディング(Transform Skip Residual Coding,TSRC)シンタックスと決定されてよい。また、例えば、ブロックの変換をスキップするか否かに対する変換スキップフラグがエンコードされてよく、値が0である前記変換スキップフラグ及び値が0である前記TSRC可用フラグに基づいて、前記ブロックに対する前記レジデュアルコーディングシンタックスは、レギュラーレジデュアルコーディング(Regular Residual Coding,RRC)シンタックスと決定されてよい。
その後、例えば、エンコーディング装置は、前記変換スキップブロックに対する前記決定されたレジデュアルコーディングシンタックスのレジデュアル情報をエンコードすることができる。エンコーディング装置は、前記変換スキップブロックに対するレジデュアルサンプルを導出することができ、前記変換スキップブロックの前記レジデュアルサンプルに対する前記決定されたレジデュアルコーディングシンタックスのレジデュアル情報をエンコードすることができる。例えば、値が1である前記TSRC可用フラグに基づいて、前記変換スキップブロックに対するレギュラーレジデュアルコーディング(Regular Residual Coding,RRC)シンタックスのレジデュアル情報がエンコードされてよく、値が0である前記TSRC可用フラグに基づいて、前記変換スキップブロックに対するTSRCシンタックスのレジデュアル情報がエンコードされてよい。前記映像情報はレジデュアル情報を含むことができる。
例えば、エンコーディング装置は、前記変換スキップブロックにインター予測を行うか又はイントラ予測を行うかを決定でき、具体的なインター予測モード又は具体的なイントラ予測モードをRDコストに基づいて決定できる。決定されたモードによってエンコーディング装置は、前記変換スキップブロックに対する予測サンプルを導出することができ、前記変換スキップブロックに対する原本サンプルと前記予測サンプルの減算によって前記変換スキップブロックに対するレジデュアルサンプルを導出することができる。
その後、例えば、エンコーディング装置は、前記レジデュアルサンプルに基づいて前記変換スキップブロックの変換係数を導出することができる。例えば、エンコーディング装置は、前記変換スキップブロックに対して変換が適用されるか否かを決定できる。すなわち、エンコーディング装置は、前記変換スキップブロックの前記レジデュアルサンプルに対して変換が適用されるか否かを決定できる。エンコーディング装置は、コーディング効率を考慮して、前記変換スキップブロックに対して変換が適用されるか否かを決定できる。例えば、エンコーディング装置は、前記変換スキップブロックに対して変換が適用されないと決定できる。一方、前記変換が適用されないブロックは、変換スキップブロックと呼ぶこともできる。
前記変換スキップブロックに対して変換が適用されない場合、すなわち、前記レジデュアルサンプルに対して変換が適用されない場合、エンコーディング装置は、前記導出されたレジデュアルサンプルを前記変換スキップブロックの変換係数として導出することができる。また、前記変換スキップブロックに対して変換が適用される場合、すなわち、前記レジデュアルサンプルに対して変換が適用される場合、エンコーディング装置は、前記レジデュアルサンプルに対する変換を行って前記変換スキップブロックの変換係数を導出することができる。前記変換スキップブロックは、複数のサブブロック又は係数グループ(Coefficient Group,CG)を含むことができる。また、前記変換スキップブロックのサブブロックのサイズは、4x4サイズ又は2x2サイズであってよい。すなわち、前記変換スキップブロックの前記サブブロックは、最大で16個のノンゼロ(non-zero)変換係数又は最大で4個のノンゼロ変換係数を含むことができる。ここで、前記変換スキップブロックは、コーディングブロック(Coding Block,CB)又は変換ブロック(Transform Block,TB)であってよい。また、変換係数(transform coefficient)は、レジデュアル係数(residual coefficient)と呼ぶこともできる。
例えば、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスが前記RRCシンタックスと決定された場合、エンコーディング装置は、前記変換スキップブロックに対する前記RRCシンタックスのレジデュアル情報をエンコードすることができる。例えば、前記RRCシンタックスの前記レジデュアル情報は、上記表2に開示されたシンタックスエレメントを含むことができる。
例えば、前記RRCシンタックスの前記レジデュアル情報は、変換スキップブロックの変換係数に対するシンタックスエレメントを含むことができる。ここで、変換係数(transform coefficient)は、レジデュアル係数(residual coefficient)と呼ぶこともできる。
例えば、前記シンタックスエレメントは、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flag、abs_remainder、dec_abs_level、及び/又はcoeff_sign_flagなどのシンタックスエレメント(syntax elements)を含むことができる。
具体的に、例えば、前記シンタックスエレメントは、前記変換スキップブロックのレジデュアル係数配列(array)において最後のノンゼロ(non-zero)変換係数の位置を示す位置情報を含むことができる。すなわち、前記シンタックスエレメントは、前記変換スキップブロックのスキャニング順序(scanning order)における最後のノンゼロ(non-zero)変換係数の位置を示す位置情報を含むことができる。前記位置情報は、前記最後のノンゼロ変換係数の列位置(column position)のプレフィックス(prefix)を示す情報、前記最後のノンゼロ変換係数の行位置(row position)のプレフィックス(prefix)を示す情報、前記最後のノンゼロ変換係数の列位置(column position)のサフィックス(suffix)を示す情報、前記最後のノンゼロ変換係数の行位置(row position)のサフィックス(suffix)を示す情報を含むことができる。前記位置情報に対するシンタックスエレメントは、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffixであってよい。一方、ノンゼロ変換係数は、有効係数(significant coefficient)と呼ぶこともできる。
また、例えば、前記シンタックスエレメントは、前記変換スキップブロックのサブブロックがノンゼロ変換係数を含むか否かを示す符号化(coded)サブブロックフラグ、前記変換スキップブロックの変換係数がノンゼロ(non-zero)変換係数か否かを示す有効係数フラグ、前記変換係数に対する係数レベルが第1臨界値よりも大きいか否かに対する第1係数レベルフラグ、前記係数レベルのパリティ(parity)に対するパリティレベルフラグ、及び/又は前記変換係数の前記係数レベルが第2臨界値よりも大きいか否かに対する第2係数レベルフラグを含むことができる。ここで、前記符号化(coded)サブブロックフラグはsb_coded_flag又はcoded_sub_block_flagであってよく、前記有効係数フラグはsig_coeff_flagであってよく、前記第1係数レベルフラグはabs_level_gt1_flag又はabs_level_gtx_flagであってよく、前記パリティレベルフラグはpar_level_flagであってよく、前記第2係数レベルフラグはabs_level_gt3_flag又はabs_level_gtx_flagであってよい。
また、例えば、前記シンタックスエレメントは、前記変換スキップブロックの変換係数の値に対する係数値関連情報を含むことができる。前記係数値関連情報はabs_remainder及び/又はdec_abs_levelであってよい。
また、例えば、前記シンタックスエレメントは、前記変換係数の符号(sign)を示すサインフラグを含むことができる。前記サインフラグはcoeff_sign_flagであってよい。
一方、例えば、前記変換スキップブロックに対して前記サインデータハイディングが適用される場合、前記変換スキップブロック内現在CG(coefficient group)の最初の有効変換係数のサインフラグは、エンコード及びシグナルされなくてよい。すなわち、例えば、前記変換スキップブロックに対して前記サインデータハイディングが適用される場合、前記シンタックスエレメントは、前記最初の有効変換係数の符号(sign)を示すサインフラグを含まなくてよい。一方、例えば、前記変換スキップブロックに対して前記サインデータハイディングが適用されるか否かは、前記サインデータハイディング可用フラグ及び/又は前記変換スキップブロックの現在CGの最初の有効変換係数位置及び最後の有効変換係数位置に基づいて導出されてよい。例えば、前記サインデータハイディング可用フラグの値が1であり、前記最後の有効変換係数位置から前記最初の有効変換係数位置を引いた値が3よりも大きい場合(すなわち、前記サインデータハイディング可用フラグの値が1であり、前記現在CG内有効変換係数の個数が3よりも大きい場合)に、前記変換スキップブロックの前記現在CGに対して前記サインデータハイディングが適用されてよい。
また、例えば、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスが前記TSRCシンタックスと決定された場合、エンコーディング装置は、前記変換スキップブロックに対する前記TSRCシンタックスのレジデュアル情報をエンコードすることができる。例えば、前記TSRCシンタックスの前記レジデュアル情報は、上記表3に開示されたシンタックスエレメントを含むことができる。
例えば、前記TSRCシンタックスの前記レジデュアル情報は、変換スキップブロックの変換係数に対するシンタックスエレメントを含むことができる。ここで、変換係数(transform coefficient)は、レジデュアル係数(residual coefficient)と呼ぶこともできる。
例えば、前記シンタックスエレメントは、変換係数に対するコンテクストコードされたシンタックスエレメント及び/又はバイパスコードされたシンタックスエレメントを含むことができる。前記シンタックスエレメントは、sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flag及び/又はabs_remainderなどのシンタックスエレメント(syntax elements)を含むことができる。
例えば、前記変換係数に対するコンテクストコードされた前記シンタックスエレメントは、前記変換係数がノンゼロ(non-zero)変換係数か否かを示す有効係数フラグ、前記変換係数に対する符号(sign)を示すサインフラグ、前記変換係数に対する係数レベルが第1臨界値よりも大きいか否かに対する第1係数レベルフラグ、及び/又は前記変換係数に対する係数レベルのパリティ(parity)に対するパリティレベルフラグを含むことができる。また、例えば、前記コンテクストコードされたシンタックスエレメントは、前記変換係数の前記係数レベルが第2臨界値よりも大きいか否かに対する第2係数レベルフラグ、前記変換係数の前記係数レベルが第3臨界値よりも大きいか否かに対する第3係数レベルフラグ、前記変換係数の前記係数レベルが第4臨界値よりも大きいか否かに対する第4係数レベルフラグ、及び/又は前記変換係数の前記係数レベルが第5臨界値よりも大きいか否かに対する第5係数レベルフラグを含むことができる。ここで、前記有効係数フラグはsig_coeff_flagであってよく、前記サインフラグはcoeff_sign_flagであってよく、前記第1係数レベルフラグはabs_level_gt1_flagであってよく、前記パリティレベルフラグはpar_level_flagであってよい。また、前記第2係数レベルフラグはabs_level_gt3_flag又はabs_level_gtx_flagであってよく、前記第3係数レベルフラグはabs_level_gt5_flag又はabs_level_gtx_flagであってよく、前記第4係数レベルフラグはabs_level_gt7_flag又はabs_level_gtx_flagであってよく、前記第5係数レベルフラグはabs_level_gt9_flag又はabs_level_gtx_flagであってよい。
また、例えば、前記変換係数に対するバイパスコードされた前記シンタックスエレメントは、前記変換係数の値(又は、係数レベル)に対する係数レベル情報及び/又は前記変換係数に対する符号(sign)を示すサインフラグを含むことができる。前記係数レベル情報はabs_remainder及び/又はdec_abs_levelであってよく、前記サインフラグはceff_sign_flagであってよい。
エンコーディング装置は、前記サインデータハイディング可用フラグ、前記TSRC可用フラグ及び前記レジデュアル情報を含むビットストリームを生成する(S630)。例えば、エンコーディング装置は、前記サインデータハイディング可用フラグ、前記TSRC可用フラグ及び前記レジデュアル情報を含む映像情報をビットストリームとして出力できる。前記ビットストリームは、前記サインデータハイディング可用フラグ、前記TSRC可用フラグ及び前記レジデュアル情報を含むことができる。また、前記ビットストリームは、前記従属量子化可用フラグ及び/又は前記変換スキップ可用フラグをさらに含むことができる。
一方、前記映像情報は、前記変換スキップブロックに対する予測関連情報を含むことができる。前記予測関連情報は、前記変換スキップブロックに行われるインター予測モード又はイントラ予測モードに対する予測モード情報を含むことができる。
一方、前記ビットストリームは、ネットワーク又は(デジタル)記憶媒体を介してデコーディング装置に送信されてよい。ここで、ネットワークは、放送網及び/又は通信網などを含むことができ、デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含むことができる。
図7には、本文書に係る映像エンコーディング方法を行うエンコーディング装置を概略的に示す。図6で開示された方法は、図7で開示されたエンコーディング装置によって行われてよい。具体的には、例えば、図7の前記エンコーディング装置のエントロピーエンコーディング部は、図6のS600~S630を行うことができる。また、たとえ図示してはいないが、前記変換スキップブロックに対する予測サンプルを導出する過程は、前記エンコーディング装置の予測部によって行われてよく、前記変換スキップブロックに対する原本サンプルと予測サンプルに基づいて前記変換スキップブロックに対するレジデュアルサンプルを導出する過程は、前記エンコーディング装置の減算部によって行われてよく、前記変換スキップブロックに対するレジデュアルサンプルと予測サンプルに基づいて前記変換スキップブロックに対する復元サンプル及び復元ピクチャーを生成する過程は、前記エンコーディング装置の加算部によって行われてよい。
図8には、本文書に係るデコーディング装置による映像デコーディング方法を概略的に示す。図8で開示された方法は、図3で開示されたデコーディング装置によって行われてよい。具体的には、例えば、図8のS800~S820は前記デコーディング装置のエントロピーデコーディング部によって行われてよく、図8のS830は前記デコーディング装置のレジデュアル処理部によって行われてよく、S840は前記デコーディング装置の加算部によって行われてよい。また、たとえ図示してはいないが、変換スキップブロックに対する予測情報を受信する過程は、前記デコーディング装置のエントロピーデコーディング部によって行われてよく、変換スキップブロックの予測サンプルを導出する過程は、前記デコーディング装置の予測部によって行われてよい。
デコーディング装置は、現在スライスに対してサインデータハイディング(sign data hiding)が使用可能であるか否かに対するサインデータハイディング可用フラグを取得する(S800)。デコーディング装置は、ビットストリームを用いて前記サインデータハイディング可用フラグを含む映像情報を取得することができる。映像情報は、前記サインデータハイディング可用フラグを含むことができる。例えば、前記サインデータハイディング可用フラグは、サインデータハイディング(sign data hiding)が使用可能であるか否かに対するフラグであってよい。例えば、サインデータハイディング可用フラグは、サインデータハイディングが使用可能であるか否かを示すことができる。すなわち、例えば、サインデータハイディング可用フラグは、シーケンス(sequence)内ピクチャーのブロックに対してサインデータハイディングが使用可能であるか否かを示すことができる。例えば、サインデータハイディング可用フラグは、現在スライスに対してサインデータハイディングが用いられるか否かを示すサインデータハイディング使用フラグが存在できるか否かを示すことができる。例えば、値が1である前記サインデータハイディング可用フラグは、前記サインデータハイディングが使用可能であることを示すことができ、値が0である前記サインデータハイディング可用フラグは、前記サインデータハイディングが使用可能でないことを示すことができる。例えば、値が1である前記サインデータハイディング可用フラグは、前記サインデータハイディングが適用されたサインフラグが存在できることを示すことができ、値が0である前記サインデータハイディング可用フラグは、前記サインデータハイディングが適用されたサインフラグが存在しないことを示すことができる。また、例えば、前記サインデータハイディング可用フラグは、SPS(Sequence Parameter Set)シンタックスでシグナルされてよい。又は、例えば、前記サインデータハイディング可用フラグは、ピクチャーヘッダーシンタックス又はスライスヘッダーシンタックスでシグナルされてよい。前記サインデータハイディング可用フラグのシンタックスエレメントは、上述したsps_sign_data_hiding_enabled_flagであってよい。
デコーディング装置は、TSRC(Transform Skip Residual Coding)が前記現在スライスの変換スキップブロック(transform skip block)に対して使用可能であるか否かに対するTSRC可用フラグを取得する(S810)。映像情報は、TSRC可用フラグを含むことができる。
例えば、デコーディング装置は、前記サインデータハイディング可用フラグに基づいて前記TSRC可用フラグを取得できる。例えば、前記TSRC可用フラグは、値が0である前記サインデータハイディング可用フラグに基づいて取得されてよい。すなわち、例えば、前記サインデータハイディング可用フラグの値が0である場合(すなわち、前記サインデータハイディング可用フラグがサインデータハイディングが使用可能でないことを示す場合)に、前記TSRC可用フラグは取得されてよい。言い換えると、例えば、前記サインデータハイディング可用フラグの値が0である場合(すなわち、前記サインデータハイディング可用フラグがサインデータハイディングが使用可能でないことを示す場合)に、前記TSRC可用フラグはシグナルされてよい。また、例えば、前記サインデータハイディング可用フラグの値が1である場合、前記TSRC可用フラグは取得されなくてよく、前記TSRC可用フラグの値は0と導出されてよい。すなわち、例えば、前記サインデータハイディング可用フラグの値が1である場合に、前記TSRC可用フラグはシグナルされなくてよく、前記TSRC可用フラグの値は0と導出されてよい。
ここで、例えば、前記TSRC可用フラグは、TSRCが使用可能であるか否かに対するフラグであってよい。すなわち、例えば、前記TSRC可用フラグは、スライス内ブロックに対してTSRCが使用可能であるか否かを示すフラグであってよい。言い換えると、例えば、前記TSRC可用フラグは、スライス内変換スキップブロックに対してTSRCが使用可能であるか否かを示すフラグであってよい。ここで、ブロックは、コーディングブロック(Coding Block,CB)又は変換ブロック(Transform Block,TB)であってよい。例えば、値が1である前記TSRC可用フラグは、前記TSRCが使用可能でないことを示すことができ、値が0である前記TSRC可用フラグは、前記TSRCが使用可能であることを示すことができる。また、例えば、前記TSRC可用フラグは、スライスヘッダー(Slice Header)シンタックスでシグナルされてよい。前記TSRC可用フラグのシンタックスエレメントは、上述したsh_ts_residual_coding_disabled_flagであってよい。前記TSRC可用フラグは、TSRC非可用フラグと呼ぶこともできる。
一方、例えば、デコーディング装置は従属量子化可用フラグを取得できる。デコーディング装置は、ビットストリームを用いて、前記従属量子化可用フラグを含む映像情報を取得できる。映像情報は、前記従属量子化可用フラグを含むことができる。例えば、前記従属量子化可用フラグは、従属量子化(dependent quantization)が使用可能であるか否かに対するフラグであってよい。例えば、従属量子化可用フラグは、従属量子化(dependent quantization)が使用可能であるか否かを示すことができる。すなわち、例えば、従属量子化可用フラグは、シーケンス(sequence)内ピクチャーのブロックに対して従属量子化が使用可能であるか否かを示すことができる。例えば、従属量子化可用フラグは、現在スライスに対して従属量子化が用いられるか否かを示す従属量子化使用フラグが存在できるか否かを示すことができる。例えば、値が1である前記従属量子化可用フラグは、前記従属量子化が使用可能であることを示すことができ、値が0である前記従属量子化可用フラグは、前記従属量子化が使用可能でないことを示すことができる。また、例えば、前記従属量子化可用フラグは、SPSシンタックス又はスライスヘッダーシンタックスなどでシグナルされてよい。前記従属量子化可用フラグのシンタックスエレメントは、上述したsps_dep_quant_enabled_flagであってよい。
また、例えば、デコーディング装置は、変換スキップ可用フラグを取得できる。デコーディング装置はビットストリームを用いて前記変換スキップ可用フラグを含む映像情報を取得できる。映像情報は、前記変換スキップ可用フラグを含むことができる。例えば、前記変換スキップ可用フラグは、変換スキップ(transform skip)が使用可能であるか否かに対するフラグであってよい。例えば、変換スキップ可用フラグは、変換スキップ(transform skip)が使用可能であるか否かを示すことができる。すなわち、例えば、変換スキップ可用フラグは、シーケンス(sequence)内ピクチャーのブロックに対して変換スキップが使用可能であるか否かを示すことができる。例えば、変換スキップ可用フラグは、変換スキップフラグが存在できるか否かを示すことができる。例えば、値が1である前記変換スキップ可用フラグは、前記変換スキップが使用可能であることを示すことができ、値が0である前記変換スキップ可用フラグは、前記変換スキップが使用可能でないことを示すことができる。すなわち、例えば、値が1である前記変換スキップ可用フラグは、前記変換スキップフラグが存在できることを示すことができ、値が0である前記変換スキップ可用フラグは、前記変換スキップフラグが存在しないことを示すことができる。また、例えば、前記変換スキップ可用フラグは、SPS(Sequence Parameter Set)シンタックスでシグナルされてよい。前記変換スキップ可用フラグのシンタックスエレメントは、上述したsps_transform_skip_enabled_flagであってよい。
また、例えば、前記TSRC可用フラグは、前記サインデータハイディング可用フラグ及び/又は前記変換スキップ可用フラグに基づいて取得されてよい。例えば、前記TSRC可用フラグは、値が0である前記サインデータハイディング可用フラグ及び値が1である前記変換スキップ可用フラグに基づいて取得されてよい。すなわち、例えば、前記サインデータハイディング可用フラグの値が0であり(すなわち、前記サインデータハイディング可用フラグが、サインデータハイディングが使用可能でないことを示し)、前記変換スキップ可用フラグの値が1である場合(すなわち、前記変換スキップ可用フラグが、前記変換スキップが使用可能であることを示す場合)に、前記TSRC可用フラグは取得(又は、シグナル)されてよい。また、例えば、前記変換スキップ可用フラグの値が0である場合、前記TSRC可用フラグは取得されなくてよく、前記TSRC可用フラグの値は0と導出されてよい。すなわち、例えば、前記変換スキップ可用フラグの値が0である場合、前記TSRC可用フラグはシグナルされなくてよく、前記TSRC可用フラグの値は0と導出されてよい。
デコーディング装置は、前記TSRC可用フラグに基づいて、前記変換スキップブロックに対するレジデュアルコーディング情報を取得する(S820)。デコーディング装置は、前記TSRC可用フラグに基づいて、前記変換スキップブロックに対するレジデュアル情報を取得できる。
例えば、デコーディング装置は、前記TSRC可用フラグに基づいて現在スライス内前記変換スキップブロックに対するレジデュアルコーディングシンタックスを決定できる。例えば、デコーディング装置は、前記TSRC可用フラグに基づいて、前記変換スキップブロックに対するレジデュアルコーディングシンタックスを、レギュラーレジデュアルコーディング(Regular Residual Coding,RRC)シンタックス及び変換スキップレジデュアルコーディング(Tranform Skip Residual Coding,TSRC)シンタックスのうち一つと決定できる。RRCシンタックスはRRCによるシンタックスを表すことができ、TSRCシンタックスはTSRCによるシンタックスを表すことができる。
例えば、値が1である前記TSRC可用フラグに基づいて、前記現在スライス内前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスはレギュラーレジデュアルコーディング(Regular Residual Coding,RRC)シンタックスと決定されてよい。この場合、例えば、値が1である前記変換スキップ可用フラグに基づいて、前記変換スキップブロックの変換をスキップするか否かに対する変換スキップフラグが取得されてよく、前記変換スキップフラグの値は1であってよい。例えば、前記映像情報は、前記変換スキップブロックに対する変換スキップフラグを含むことができる。前記変換スキップフラグは、前記変換スキップブロックの変換をスキップするか否かを示すことができる。すなわち、前記変換スキップフラグは、前記変換スキップブロックの変換係数に変換が適用されたか否かを示すことができる。前記変換スキップフラグを表すシンタックスエレメントは、上述したtransform_skip_flagであってよい。例えば、前記変換スキップフラグの値が1である場合、前記変換スキップフラグは、前記変換スキップブロックに変換が適用されないこと(すなわち、変換スキップされること)を示すことができ、前記変換スキップフラグの値が0である場合、前記変換スキップフラグは、前記変換スキップブロックに変換が適用されることを示すことができる。例えば、前記変換スキップブロックに対する変換スキップフラグの値が1であってよい。
また、例えば、値が0である前記TSRC可用フラグに基づいて、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスは、変換スキップレジデュアルコーディング(Transform Skip Residual Coding,TSRC)シンタックスと決定されてよい。また、例えば、前記変換スキップブロックの変換をスキップするか否かに対する変換スキップフラグが取得されてよく、値が1である前記変換スキップフラグ及び値が0である前記TSRC可用フラグに基づいて、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスは、変換スキップレジデュアルコーディング(Transform Skip Residual Coding,TSRC)シンタックスと決定されてよい。また、例えば、現在ブロックの変換をスキップするか否かに対する変換スキップフラグが取得されてよく、値が0である前記変換スキップフラグ及び値が0である前記TSRC可用フラグに基づいて、前記現在ブロックに対する前記レジデュアルコーディングシンタックスはレギュラーレジデュアルコーディング(Regular Residual Coding,RRC)シンタックスと決定されてよい。
その後、例えば、デコーディング装置は、前記変換スキップブロックに対する前記決定されたレジデュアルコーディングシンタックスのレジデュアル情報を取得できる。例えば、値が1である前記TSRC可用フラグに基づいてレギュラーレジデュアルコーディング(Regular Residual Coding,RRC)シンタックスのレジデュアル情報が取得されてよく、値が0である前記TSRC可用フラグに基づいてTSRCシンタックスのレジデュアル情報が取得されてよい。前記映像情報はレジデュアル情報を含むことができる。
例えば、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスが前記RRCシンタックスと決定された場合、デコーディング装置は、前記変換スキップブロックに対する前記RRCシンタックスのレジデュアル情報を取得できる。例えば、前記RRCシンタックスの前記レジデュアル情報は、上記表2に開示されたシンタックスエレメントを含むことができる。
例えば、前記RRCシンタックスの前記レジデュアル情報は、前記変換スキップブロックの変換係数に対するシンタックスエレメントを含むことができる。ここで、変換係数(transform coefficient)は、レジデュアル係数(residual coefficient)と呼ぶこともできる。
例えば、前記シンタックスエレメントは、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flag、abs_remainder、dec_abs_level、及び/又はcoeff_sign_flagなどのシンタックスエレメント(syntax elements)を含むことができる。
具体的には、例えば、前記シンタックスエレメントは、前記変換スキップブロックのレジデュアル係数配列(array)において最後のノンゼロ(non-zero)変換係数の位置を示す位置情報を含むことができる。すなわち、前記シンタックスエレメントは、前記変換スキップブロックのスキャニング順序(scanning order)における最後のノンゼロ(non-zero)変換係数の位置を示す位置情報を含むことができる。前記位置情報は、前記最後のノンゼロ変換係数の列位置(column position)のプレフィックス(prefix)を示す情報、前記最後のノンゼロ変換係数の行位置(row position)のプレフィックス(prefix)を示す情報、前記最後のノンゼロ変換係数の列位置(column position)のサフィックス(suffix)を示す情報、前記最後のノンゼロ変換係数の行位置(row position)のサフィックス(suffix)を示す情報を含むことができる。前記位置情報に対するシンタックスエレメントは、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffixであってよい。一方、ノンゼロ変換係数は、有効係数(significant coefficient)と呼ぶこともできる。
また、例えば、前記シンタックスエレメントは、前記変換スキップブロックのサブブロックがノンゼロ変換係数を含むか否かを示す符号化サブブロックフラグ、前記変換スキップブロックの変換係数がノンゼロ(non-zero)変換係数か否かを示す有効係数フラグ、前記変換係数に対する係数レベルが第1臨界値よりも大きいか否かに対する第1係数レベルフラグ、前記係数レベルのパリティ(parity)に対するパリティレベルフラグ、及び/又は前記変換係数の前記係数レベルが第2臨界値よりも大きいか否かに対する第2係数レベルフラグを含むことができる。ここで、前記符号化サブブロックフラグはsb_coded_flag又はcoded_sub_block_flagであってよく、前記有効係数フラグはsig_coeff_flagであってよく、前記第1係数レベルフラグはabs_level_gt1_flag又はabs_level_gtx_flagであってよく、前記パリティレベルフラグはpar_level_flagであってよく、前記第2係数レベルフラグはabs_level_gt3_flag又はabs_level_gtx_flagであってよい。
また、例えば、前記シンタックスエレメントは、前記変換スキップブロックの変換係数の値に対する係数値関連情報を含むことができる。前記係数値関連情報はabs_remainder及び/又はdec_abs_levelであってよい。
また、例えば、前記シンタックスエレメントは、前記変換係数の符号(sign)を示すサインフラグを含むことができる。前記サインフラグはcoeff_sign_flagであってよい。
一方、例えば、前記変換スキップブロックに対して前記サインデータハイディングが適用される場合、前記変換スキップブロック内現在CG(coefficient group)の最初の有効変換係数のサインフラグはシグナルされなくてよい。すなわち、例えば、前記変換スキップブロックに対して前記サインデータハイディングが適用される場合、前記シンタックスエレメントは、前記最初の有効変換係数の符号(sign)を示すサインフラグを含まなくてよい。一方、例えば、前記変換スキップブロックに対して前記サインデータハイディングが適用されるか否かは、前記サインデータハイディング可用フラグ及び/又は前記現在CGの最初の有効変換係数位置及び最後の有効変換係数位置に基づいて導出されてよい。例えば、前記サインデータハイディング可用フラグの値が1であり、前記最後の有効変換係数位置から前記最初の有効変換係数位置を引いた値が3よりも大きい場合(すなわち、前記サインデータハイディング可用フラグの値が1であり、前記現在CG内有効変換係数の個数が3よりも大きい場合)に、前記変換スキップブロックの前記現在CGに対して前記サインデータハイディングが適用されてよい。
また、例えば、前記変換スキップブロックに対する前記レジデュアルコーディングシンタックスが前記TSRCシンタックスと決定された場合、デコーディング装置は、前記変換スキップブロックに対する前記TSRCシンタックスのレジデュアル情報を取得できる。例えば、前記TSRCシンタックスの前記レジデュアル情報は、上記表3に開示されたシンタックスエレメントを含むことができる。
例えば、前記TSRCシンタックスの前記レジデュアル情報は、前記変換スキップブロックの変換係数に対するシンタックスエレメントを含むことができる。ここで、変換係数(transform coefficient)は、レジデュアル係数(residual coefficient)と呼ぶこともできる。
例えば、前記シンタックスエレメントは、変換係数に対するコンテクストコードされたシンタックスエレメント及び/又はバイパスコードされたシンタックスエレメントを含むことができる。前記シンタックスエレメントは、sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flag及び/又はabs_remainderなどのシンタックスエレメント(syntax elements)を含むことができる。
例えば、前記変換係数に対するコンテクストコードされた前記シンタックスエレメントは、前記変換係数がノンゼロ(non-zero)変換係数か否かを示す有効係数フラグ、前記変換係数に対する符号(sign)を示すサインフラグ、前記変換係数に対する係数レベルが第1臨界値よりも大きいか否かに対する第1係数レベルフラグ及び/又は前記変換係数に対する係数レベルのパリティ(parity)に対するパリティレベルフラグを含むことができる。また、例えば、前記コンテクストコードされたシンタックスエレメントは、前記変換係数の前記係数レベルが第2臨界値よりも大きいか否かに対する第2係数レベルフラグ、前記変換係数の前記係数レベルが第3臨界値よりも大きいか否かに対する第3係数レベルフラグ、前記変換係数の前記係数レベルが第4臨界値よりも大きいか否かに対する第4係数レベルフラグ及び/又は前記変換係数の前記係数レベルが第5臨界値よりも大きいか否かに対する第5係数レベルフラグを含むことができる。ここで、前記有効係数フラグはsig_coeff_flagであってよく、前記サインフラグはceff_sign_flagであってよく、前記第1係数レベルフラグはabs_level_gt1_flagであってよく、前記パリティレベルフラグはpar_level_flagであってよい。また、前記第2係数レベルフラグはabs_level_gt3_flag又はabs_level_gtx_flagであってよく、前記第3係数レベルフラグはabs_level_gt5_flag又はabs_level_gtx_flagであってよく、前記第4係数レベルフラグはabs_level_gt7_flag又はabs_level_gtx_flagであってよく、前記第5係数レベルフラグはabs_level_gt9_flag又はabs_level_gtx_flagであってよい。
また、例えば、前記変換係数に対するバイパスコードされた前記シンタックスエレメントは、前記変換係数の値(又は、係数レベル)に対する係数レベル情報及び/又は前記変換係数に対する符号(sign)を示すサインフラグを含むことができる。前記係数レベル情報はabs_remainder及び/又はdec_abs_levelであってよく、前記サインフラグはcoeff_sign_flagであってよい。
デコーディング装置は、前記レジデュアルコーディング情報に基づいて前記変換スキップブロックに対するレジデュアルサンプルを導出する(S830)。例えば、デコーディング装置は、前記レジデュアル情報に基づいて前記変換スキップブロックの変換係数を導出することができ、前記変換係数に基づいて前記変換スキップブロックのレジデュアルサンプルを導出することができる。
例えば、デコーディング装置は、前記レジデュアル情報のシンタックスエレメントに基づいて前記変換スキップブロックの変換係数を導出することができる。その後、デコーディング装置は、前記変換係数に基づいて前記変換スキップブロックのレジデュアルサンプルを導出することができる。一例として、前記変換スキップフラグに基づいて、前記変換スキップブロックに対して変換が適用されないことと導出された場合、すなわち、前記変換スキップフラグの値が1である場合、デコーディング装置は、前記変換係数を前記変換スキップブロックの前記レジデュアルサンプルとして導出することができる。又は、例えば、前記変換スキップフラグに基づいて、前記変換スキップブロックに対して変換が適用されないことと導出された場合、すなわち、前記変換スキップフラグの値が1である場合、デコーディング装置は、前記変換係数を逆量子化して前記変換スキップブロックの前記レジデュアルサンプルを導出することができる。又は、例えば、前記変換スキップフラグに基づいて、前記現在スライス内ブロックに対して変換が適用されたことと導出された場合、すなわち、前記ブロックに対する変換スキップフラグの値が0である場合、デコーディング装置は、前記変換係数を逆変換して前記ブロックの前記レジデュアルサンプルを導出することができる。又は、例えば、前記変換スキップフラグに基づいて前記ブロックに対して変換が適用されたことと導出された場合、すなわち、前記変換スキップフラグの値が0である場合、デコーディング装置は、前記変換係数を逆量子化し、逆量子化された変換係数を逆変換して、前記現在ブロックの前記レジデュアルサンプルを導出することができる。
一方、例えば、前記変換スキップブロックに対して前記サインデータハイディングが適用される場合に、前記変換スキップブロック内前記現在CGの最初の有効変換係数の符号(sign)は、前記現在CG内有効変換係数の絶対値の和に基づいて導出されてよい。例えば、前記有効変換係数の絶対値の和が偶数(even)である場合、前記最初の有効変換係数の符号は正数(positive value)として導出されてよく、前記有効変換係数の絶対値の和が奇数(odd)である場合、前記最初の有効変換係数の符号は負数(negative value)として導出されてよい。
デコーディング装置は、前記レジデュアルサンプルに基づいて復元ピクチャーを生成する(S840)。例えば、デコーディング装置は、前記レジデュアルサンプルに基づいて前記現在スライス内変換スキップブロックの復元サンプル及び/又は復元ピクチャーを生成できる。例えば、デコーディング装置は、ビットストリームを用いて受信した予測情報に基づいて前記変換スキップブロックに対するインター予測モード又はイントラ予測モードを行って予測サンプルを導出することができ、前記予測サンプルと前記レジデュアルサンプルとの加算によって前記復元サンプルを生成できる。
その後、必要によって、主観的/客観的画質を向上させるために、デブロッキングフィルタリング、SAO及び/又はALF手順のようなインループフィルタリング手順が前記復元ピクチャーに適用されてよいことは、上述した通りである。
図9には、本文書に係る映像デコーディング方法を行うデコーディング装置を概略的に示す。図8で開示された方法は、図9で開示されたデコーディング装置によって行われてよい。具体的には、例えば、図9の前記デコーディング装置のエントロピーデコーディング部は、図8のS800~S820を行うことができ、図9の前記デコーディング装置のレジデュアル処理部は、図8のS830を行うことができ、図9の前記デコーディング装置の加算部は、図8のS840を行うことができる。また、たとえ図示してはいないが、変換スキップブロックに対する予測情報を受信する過程は、図9の前記デコーディング装置のエントロピーデコーディング部によって行われてよく、現在ブロックの予測サンプルを導出する過程は、図9の前記デコーディング装置の予測部によって行われてよい。
上述した本文書によれば、レジデュアルコーディングの効率を上げることができる。
また、本文書によれば、サインデータハイディング可用フラグに従属してTSRC可用フラグをシグナルすることができ、これにより、TSRCが使用可能でない変換スキップブロックに対してサインデータハイディングが用いられないようにすることによってコーディング効率を向上させ、コードされるビット量を減らしてレジデュアルコーディング効率の全般を向上させることができる。
また、本文書によれば、変換スキップ可用フラグ及びサインデータハイディング可用フラグに従属してTSRC可用フラグをシグナルすることができ、これにより、TSRCが使用可能でない変換スキップブロックに対してサインデータハイディングが用いられないようにすることによってコーディング効率を向上させ、コードされるビット量を減らしてレジデュアルコーディング効率の全般を向上させることができる。
上述した実施例において、方法は、一連の段階又はブロックであり、順序図に基づいて説明されているが、本文書は、段階の順序に限定されるものではなく、ある段階は、上述したのと異なる段階と異なる順序で又は同時に発生してもよい。また、当業者であれば、順序図に示された段階が排他的でなく、他の段階が含まれたり順序図の1つ又はそれ以上の段階が本文書の範囲に影響を及ぼさずに削除されてもよいことが理解できよう。
本文書で説明した実施例は、プロセッサ、マイクロプロセッサ、コントローラ又はチップ上で)具現され行われてよい。例えば、各図に示した機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラ又はチップ上で具現されて行われてよい。この場合、具現のための情報(例えば、information on instructions)又はアルゴリズムがデジタル記憶媒体に記憶されてよい。
また、本文書の実施例が適用されるデコーディング装置及びエンコーディング装置は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ会話装置、ビデオ通信のような実時間通信装置、モバイルストリーミング装置、記憶媒体、キャムコーダ、注文型ビデオ(VoD)サービス提供装置、OTTビデオ(Over the top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、画像電話ビデオ装置、運送手段端末(例えば、車両端末、飛行機端末、船舶端末など)及び医療用ビデオ装置などに含まれてよく、ビデオ信号又はデータ信号を処理するために用いられてよい。例えば、OTTビデオ(Over the top video)装置としては、ゲームコンソール、ブルーレイプレーヤー、インターネット接続TV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recorder)などを含むことができる。
また、本文書の実施例が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されてよく、コンピュータ可読記録媒体に記憶されてよい。本文書によるデータ構造を有するマルチメディアデータも、コンピュータ可読記録媒体に記憶されてよい。前記コンピュータ可読記録媒体は、コンピュータで読み取り可能なデータが記憶されるあらゆる種類の記憶装置及び分散記憶装置を含む。前記コンピュータ可読記録媒体は、例えば、ブルーレイディスク(BD)、汎用直列バス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピーディスク及び光学的データ記憶装置を含むことができる。また、前記コンピュータ可読記録媒体は、搬送波(例えば、インターネットを介した送信)の形態で具現されたメディアを含む。また、エンコーディング方法で生成されたビットストリームがコンピュータ可読記録媒体に記憶されてもよく、有無線通信ネットワークを通じて送信されてもよい。
また、本文書の実施例は、プログラムコードによるコンピュータプログラム製品として具現されてよく、前記プログラムコードは、本文書の実施例によってコンピュータで実行されてよい。前記プログラムコードは、コンピュータで読み取り可能なキャリア上に記憶されてよい。
図10は、本文書の実施例が適用されるコンテンツストリーミングシステムを例示する構造図である。
本文書の実施例が適用されるコンテンツストリーミングシステムは、大きく、エンコーディングサーバー、ストリーミングサーバー、ウェブサーバー、メディアストレージ、ユーザ装置及びマルチメディア入力装置を含むことができる。
前記エンコーディングサーバーは、スマートフォン、カメラ、キャムコーダなどのようなマルチメディア入力装置から入力されたコンテンツをデジタルデータとして圧縮してビットストリームを生成し、これを前記ストリーミングサーバーに送信する役割を担う。他の例として、スマートフォン、カメラ、キャムコーダなどのようなマルチメディア入力装置がビットストリームを直接生成する場合に、前記エンコーディングサーバーは省略されてよい。
前記ビットストリームは、本文書の実施例が適用されるエンコーディング方法又はビットストリーム生成方法によって生成されてよく、前記ストリーミングサーバーは、前記ビットストリームを送信又は受信する過程で一時的に前記ビットストリームを記憶することができる。
前記ストリーミングサーバーは、ウェブサーバーを介したユーザ要請に基づいてマルチメディアデータをユーザ装置に送信し、前記ウェブサーバーはユーザにどのようなサービスがあるかを知らせる媒介体として働く。ユーザ所望のサービスを前記ウェブサーバーに要請すれば、前記ウェブサーバーはそれをストリーミングサーバーに伝達し、前記ストリーミングサーバーはユーザにマルチメディアデータを送信する。このとき、前記コンテンツストリーミングシステムは別個の制御サーバーを含むことができ、この場合、前記制御サーバーは前記コンテンツストリーミングシステムにおける各装置間の命令/応答を制御する役割を担う。
前記ストリーミングサーバーは、メディアストレージ及び/又はエンコーディングサーバーからコンテンツを受信することができる。例えば、前記エンコーディングサーバーからコンテンツを受信する場合に、前記コンテンツを実時間で受信することができる。この場合、円滑なストリーミングサービスを提供するために、前記ストリーミングサーバーは前記ビットストリームを一定時間記憶することができる。
前記ユーザ装置の例としては、携帯電話、スマートフォン(smart phone)、ノートパソコン(laptop computer)、デジタル放送用端末機、PDA(personal digital assistants)、PMP(portable multimedia player)、ナビゲーション、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ultrabook)、ウェアラブルデバイス(wearable device;例えば、ウォッチ型端末機(smartwatch)、グラス型端末機(smart glass)、HMD(head mounted display))、デジタルTV、デスクトップコンピュータ、デジタルサイネージなどを挙げることができる。前記コンテンツストリーミングシステム内の各サーバーは、分散サーバーとして運営されてよく、この場合、各サーバーで受信するデータは分散処理されてよい。
本明細書に記載された請求項は様々な方式で組み合わせられてよい。例えば、本明細書の方法請求項の技術的特徴が組み合わせられて装置として具現されてよく、本明細書の装置請求項の技術的特徴が組み合わせられて方法として具現されてよい。また、本明細書の方法請求項の技術的特徴と装置請求項の技術的特徴が組み合わせられて装置として具現されてよく、本明細書の方法請求項の技術的特徴と装置請求項の技術的特徴が組み合わせられて方法として具現されてよい。