(57)【要約】  本発明のビデオ復号化方法は、現在のブロックでマージ候補リストを生成することと、前記マージ候補リストに含まれる複数のマージ候補のいずれか１つを指定することと、前記指定されたマージ候補の第１アフィンシードベクトルおよび第２アフィンシードベクトルに基づいて、前記現在のブロックの第１アフィンシードベクトルおよび第２アフィンシードベクトルを導出することと、前記現在のブロックの前記第１アフィンシードベクトルおよび前記第２アフィンシードベクトルを使用して、前記現在のブロックのサブブロックのアフィンベクトルを導出することと、前記アフィンベクトルに基づいて、前記サブブロックの動き補償予測を実行することと、を含む。
2022501896.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ復号化方法であって、
残差係数が非ゼロであるか否かを示す非ゼロフラグをビットストリームから解析することと、
前記非ゼロフラグが、前記残差係数が非ゼロではないことを示す場合、前記ビットストリームから絶対値情報解析することであって、前記絶対値情報は前記残差係数の絶対値を決定するために使用される、ことと、
前記絶対値情報に基づいて、前記残差係数の絶対値を決定することと、を含み、
前記絶対値情報は、前記残差係数が第１値を超えるか否かを示す残差係数比較フラグを含み、
前記残差係数が前記第１値を超える場合にのみ、前記ビットストリームからパリティフラグをさらに解析する、前記ビデオ復号化方法。
【請求項２】
前記パリティフラグは、前記残差係数の値が偶数であるか奇数であるかを示す、
請求項１に記載のビデオ復号化方法。
【請求項３】
前記残差係数が前記第１値を超える場合、第１調整残余係数比較フラグをさらに解析し、前記第１調整残余係数比較フラグは、前記残差係数を１ビット右にシフトして導出られた調整残余係数が第２値を超えるか否かを示す、
請求項２に記載のビデオ復号化方法。
【請求項４】
前記調整残余係数が第２値以下である場合、前記パリティフラグの値に従って、前記残差係数が２Ｎまたは２Ｎ＋１（Ｎは前記第２値である）であると決定する、
請求項３に記載のビデオ復号化方法。
【請求項５】
前記調整残余係数が前記第２値を超える場合、第２調整残余係数比較フラグをさらに解析し、前記第２調整残余係数比較フラグは、前記調整残余係数が第３値を超えるか否かを示す、
請求項３に記載のビデオ復号化方法。
【請求項６】
前記調整残余係数が前記第２値を超える場合、残差値情報をさらに解析し、
前記残差値情報は、前記調整残余係数から前記第２値を差し引いた値である、
請求項３に記載のビデオ復号化方法。
【請求項７】
ビデオ符号化方法であって、
残差係数が非ゼロであるか否かを示す非ゼロフラグを符号化することと、
前記残差係数が非ゼロではない場合、絶対値情報を符号化することであって、前記絶対値情報は前記残差係数の絶対値を決定するために使用される、ことと、を含み、
前記絶対値情報は、前記残差係数が第１値を超えるか否かを示す残差係数比較フラグを含み、
前記残差係数が前記第１値を超える場合にのみ、前記残差係数のパリティフラグをさらに符号化する、前記ビデオ符号化方法。
【請求項８】
前記パリティフラグは、前記残差係数の値が偶数であるか奇数であるかを示す、
請求項７に記載のビデオ符号化方法。
【請求項９】
前記残差係数が前記第１値を超える場合、第１調整残余係数比較フラグをさらに符号化し、前記第１調整残余係数比較フラグは、前記残差係数を１ビット右にシフトして導出された調整残余係数が第２値を超えるか否かを示す、
請求項８に記載のビデオ符号化方法。
【請求項１０】
前記調整残余係数が前記第２値以下である場合、前記パリティフラグの値に従って、前記残差係数が２Ｎまたは２Ｎ＋１であると決定する、
請求項９に記載のビデオ符号化方法。
【請求項１１】
前記調整残余係数が前記第２値を超える場合、第２調整残余係数比較フラグをさらに符号化し、前記第２調整残余係数比較フラグは、前記調整残余係数が第３値を超えるか否かを示す、
請求項９に記載のビデオ符号化方法。
【請求項１２】
前記調整残余係数が前記第２値を超える場合、残差値情報をさらに符号化し、
前記残差値情報は、前記調整残余係数から前記第２値を差し引いた値である、
請求項９に記載のビデオ符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ信号符号化／復号化方法およびそのための機器に関するものである。
【背景技術】
【０００２】
ディスプレイパネルがますます大きくなる傾向に伴い、ますます高い品質のビデオサービスが求められている。高解像度ビデオサービスの最大の問題は、データ量の大幅な増加である。この問題を解決するために、ビデオ圧縮率を向上させるための研究が活発に進められている。代表的な例として、２００９年に、ＭＰＥＧ（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）とＩＴＵ−Ｔ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ−Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ）傘下のＶＣＥＧ（Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）は、ＪＣＴ−ＶＣ（Ｊｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）を設立した。ＪＣＴ−ＶＣは、Ｈ．２６４  ／  ＡＶＣに比べて約２倍の圧縮性能を有するビデオ圧縮規格であるＨＥＶＣ（Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）を提案し２０１３年１月２５日に承認された。高解像度ビデオサービスの急速な発展に伴い、ＨＥＶＣの性能は徐々にその限界を露呈した。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、ビデオ信号を符号化／復号化するときに、残差係数を符号化／復号化する方法およびその方法のための機器を提供することを目的とする。
【０００４】
本発明は、ビデオ信号を符号化／復号化するときに、残差係数の大きさを閾値と比較するフラグを使用して、残差係数を符号化／復号化する方法およびその方法のための機器を提供することを目的とする。
【０００５】
本発明は、ビデオ信号を符号化／復号化するときに、残差係数が偶数であるか奇数あるかを示すフラグを使用して、残差係数を符号化／復号化する方法およびその方法のための機器を提供することを目的とする。
【０００６】
本発明で解決しようとする技術的課題は、上記の技術的課題に限定されず、本発明が属する技術分野の当業者は、以下の説明を介して、本発明で言及されていない他の技術的課題を明確に理解することができる。
【課題を解決するための手段】
【０００７】
本発明のビデオ信号復号化方法は、残差係数が非ゼロであるか否かを示す非ゼロフラグをビットストリームから解析することと、前記非ゼロフラグが、前記残差係数が非ゼロではないことを示す場合、前記ビットストリームから絶対値情報解析することであって、前記絶対値情報は前記残差係数の絶対値を決定するために使用される、ことと、前記絶対値情報に基づいて、前記残差係数の絶対値を決定することと、を含む。ここで、前記絶対値情報は、前記残差係数が第１値を超えるか否かを示す残差係数比較フラグを含み得、前記残差係数が第１値を超える場合にのみ、前記ビットストリームからパリティフラグをさらに解析する。
【０００８】
本発明のビデオ信号符号化方法は、残差係数が非ゼロであるか否かを示す非ゼロフラグを符号化することと、前記残差係数が非ゼロではない場合、絶対値情報を符号化することとを含み得、前記絶対値情報は前記残差係数の絶対値を決定するために使用される。前記絶対値情報は、前記残差係数が第１値を超えるか否かを示す残差係数比較フラグを含み得、前記残差係数が第１値を超える場合にのみ、前記残差係数のパリティフラグをさらに符号化する。
【０００９】
本発明のビデオ信号復号化／符号化方法では、前記パリティフラグは、前記残差係数の値が偶数であるか奇数であるかを示し得る。
【００１０】
本発明のビデオ信号復号化／符号化方法では、前記残差係数が前記第１値を超える場合、第１調整残余係数比較フラグをさらに解析することができ、前記第１調整残余係数比較フラグは、前記残差係数を１ビット右にシフトして導出された調整残余係数が第２値を超えるか否かを示す。
【００１１】
本発明のビデオ信号復号化／符号化方法では、前記調整残余係数が第２値以下である場合、前記パリティフラグの値に従って、前記残差係数が２Ｎまたは２Ｎ＋１であると決定することができる。
【００１２】
本発明のビデオ信号復号化／符号化方法では、前記調整残余係数が前記第２値を超える場合、第２調整残余係数比較フラグをさらに解析することができ、前記第２調整残余係数比較フラグは、前記調整残余係数が第３値を超えるか否かを示す。
【００１３】
本発明のビデオ信号復号化／符号化方法では、前記調整残余係数が前記第２値を超える場合、残差値情報をさらに解析することができ、前記残差値情報は、前記調整残余係数から前記第２値を差し引いた値である。
【００１４】
本発明について上記の簡単に要約された特徴は、後述する本発明の詳細な説明の例示的な実施形態に過ぎず、本発明の範囲を限定するものではない。
【発明の効果】
【００１５】
本発明によれば、残差係数を効率的に符号化／復号化することができる。
【００１６】
本発明によれば、残差係数の大きさを閾値と比較するフラグを使用することにより、残差係数を効率的に符号化／復号化することができる。
【００１７】
本発明によれば、残差係数が偶数であるか奇数であるかを示すフラグを使用することにより、残差係数を効率的に符号化／復号化することができる。
【００１８】
本発明で得られる効果は、上記の効果に限定されず、本発明が属する技術分野の当業者は、以下の説明を介して、本発明で言及されていない他の効果を明確に理解することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施例に係るビデオ符号化器（ｅｎｃｏｄｅｒ）のブロック図である。
【図２】本発明の実施例に係るビデオ復号化器（ｄｅｃｏｄｅｒ）のブロック図である。
【図３】本発明の実施例に係る基本符号化ツリーユニットを示す図である。
【図４】符号化ブロックの様々な分割形態を示す図である。
【図５】符号化ツリーユニットの分割例を示す図である。
【図６】プリセットされたサイズの符号化ツリーユニットより小さいサイズのブロックが画像境界に現れる例を示す図である。
【図７】非定型境界の境界ブロックに対して四分木分割を実行する例を示す図である。
【図８】画像境界に隣接するブロックに対して四分木分割を実行する例を示す図である。
【図９】画像境界に隣接するブロックの分割パターンを示す図である。
【図１０】画像境界に隣接するブロックの符号化パターンを示す図である。
【図１１】本発明の実施例によるインター予測方法のフローチャートである。
【図１２】マージモードで現在のブロックの動き情報を導出するプロセスのフローチャートである。
【図１３】マージ候補を導出するための候補ブロックを示す図である。
【図１４】参照サンプルの位置を示す図である。
【図１５】マージ候補を導出するための候補ブロックを示す図である。
【図１６】参照サンプルの位置を変更する例を示す図である。
【図１７】参照サンプルの位置を変更する例を示す図である。
【図１８】インター領域動き情報テーブルの更新例を説明するための図である。
【図１９】インター領域マージ候補テーブルの更新例を示す図である。
【図２０】記憶されたインター領域マージ候補のインデックスが更新される例を示す図である。
【図２１】代表サブブロックの位置を示す図である。
【図２２】インター予測モードごとにインター領域動き情報テーブルを生成する例を示す図である。
【図２３】長期動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加する例を示す図である。
【図２４】マージ候補の一部のみに対して冗長検査を実行する例を示す図である。
【図２５】特定のマージ候補について冗長検査を省略する例を示す図である。
【図２６】現在のブロックと同じ並列マージ領域に含まれる候補ブロックがマージ候補として使用できないように設定される例を示す図である。
【図２７】一時動き情報テーブルを示す図である。
【図２８】インター領域動き情報テーブルと一時動き情報テーブルをマージする例を示す図である。
【図２９】本発明の実施例によるイントラ予測方法のフローチャートである。
【図３０】各参照サンプルラインに含まれる参照サンプルを示す図である。
【図３１】イントラ予測モードを示す図である。
【図３２】参照サンプルを一列に配列する一次元配列の例を示す図である。
【図３３】参照サンプルを一列に配列する一次元配列の例を示す図である。
【図３４】方向性イントラ予測モードとｘ軸に平行な直線との間に形成される角度を示す図である。
【図３５】現在のブロックが非正方形である場合に予測サンプルを取得する例を示す図である。
【図３６】広角イントラ予測モードを示す図である。
【図３７】ＰＤＰＣの適用を示す図である。
【図３８】二次変換が実行されるサブブロックを示す図である。
【図３９】二次変換が実行されるサブブロックを示す図である。
【図４０】現在のブロックの変換タイプを決定する例を説明するための図である。
【図４１】残差係数を符号化する方法のフローチャートである。
【図４２】異なる走査順序で残差係数の配列順序を示す図である。
【図４３】異なる走査順序で残差係数の配列順序を示す図である。
【図４４】最後の非ゼロ係数の位置を符号化する例を示す図である。
【図４５】残差係数の絶対値を符号化するプロセスのフローチャートである。
【図４６】残差係数の絶対値を符号化するプロセスのフローチャートである。
【図４７】残差係数の絶対値を符号化するプロセスのフローチャートである。
【図４８】ブロック強度を決定するプロセスのフローチャートである。
【図４９】事前定義されたフィルタ候補を示す図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して、本発明の実施例を詳細に説明する。
【００２１】
ビデオの符号化及び復号化は、ブロック単位で行われる。例えば、符号化ブロック、変換ブロック、または予測ブロックについて、変換、量子化、予測、インループフィルタリング、または復元などの符号化／復号化処理を実行することができる。
【００２２】
以下、符号化／復号化されるブロックを「現在のブロック」と呼ぶ。例えば、現在の符号化／復号化処理プロセスに応じて、現在のブロックは、符号化ブロック、変換ブロック、または予測ブロックを示すことができる。
【００２３】
さらに、本明細書で使用される用語「ユニット」は、特定の符号化／復号化プロセスを実行するための基本ユニットを表し、「ブロック」は、所定の大きさのサンプルアレイを示すものと理解することができる。別の説明がない限り、「ブロック」と「ユニット」は、同等の意味で使用することができる。例えば、後述される実施例では、符号化ブロックと符号化ユニットは、相互同等の意味を持つものと理解することができる。
【００２４】
図１は、本発明の実施例に係るビデオ符号化器（ｅｎｃｏｄｅｒ）のブロック図である。
【００２５】
図１を参照すると、ビデオ符号化機器１００は、画像分割部１１０、予測部１２０、１２５、変換部１３０、量子化部１３５、再並べ替え部１６０、エントロピー符号化部１６５、逆量子化部１４０、逆変換部１４５、フィルタ部１５０、およびメモリ１５５を含み得る。
【００２６】
図１に示される各構成要素は，ビデオ符号化機器における異なる特徴的な機能を示すために、独立して図示したものであり、各構成要素が別個のハードウェアまたは単一のソフトウェア構成要素から構成されることを意味するものではない。つまり、各構成要素について、説明の便宜のために、少なくとも２つの構成要素が１つの構成要素に組み合わされるか、または１つの構成要素が複数の構成要素に分割されて機能を実行することができ、本発明の本質から逸脱しない限り、これらの各構成要素を統合する実施例と各構成要素を分離する実施例も、本発明の保護範囲に含まれる。
【００２７】
また、構成要素の一部は、本発明の本質的な機能を実行するために必要な構成要素ではなく、単に性能を向上させるためのオプションの構造要素であり得る。本発明は、単に性能を向上させるための構成要素以外の、本発明の本質を実現するために必要な構成要素のみを含み得、単に性能を向上させるための構成要素以外の必要な構造要素のみを含構造も、本発明の保護範囲に含まれる。
【００２８】
画像分割部１１０は、入力された画像を少なくとも１つの処理ユニットに分割することができる。この場合、処理ユニットは、予測ユニット（ＰＵ：Ｐｒｅｄｉｃｔｉｏｎ  Ｕｎｉｔ）であってもよいし、変換ユニット（ＴＵ：Ｔｒａｎｓｆｏｒｍ  Ｕｎｉｔ）であってもよいし、符号化ユニット（ＣＵ：Ｃｏｄｉｎｇ  Ｕｎｉｔ）であってもよい。画像分割部１１０は、１つの画像を複数の符号化ユニット、予測ユニット、および変換ユニットの組み合わせに分割し、所定の標準（コスト関数など）に基づいて、１つの符号化ユニット、予測ユニット、および変換ユニットの組み合わせを選択して、画像を符号化することができる。
【００２９】
例えば、１つの画像を複数の符号化ユニットに分割することができる。画像を符号化ユニットに分割するためには、四分木構造（Ｑｕａｄ  Ｔｒｅｅ  Ｓｔｒｕｃｔｕｒｅ）のような再帰ツリー構造を使用でき、１つのビデオまたは最大符号化ユニット（ｌａｒｇｅｓｔ  ｃｏｄｉｎｇ  ｕｎｉｔ）をルート（ｒｏｏｔ）として使用して、他の符号化ユニットに分割される符号化ユニットは、分割された符号化ユニットの数のサブノートを持って分割されることができる。特定の制限に応じてこれ以上分割されない符号化ユニットは、リーフノードとなる。つまり、１つの符号化ユニットに対して正方形分割のみが可能であると仮定した場合、１つの符号化ユニットは、最大４つの他の符号化ユニットに分割されることができる。
【００３０】
以下、本発明の実施例では、符号化ユニットは、符号化を実行するユニットを意味してもよいし、復号化を実行するユニットを意味してもよい。
【００３１】
１つの符号化ユニット内の予測ユニットを同じサイズの正方形および長方形のうちの少なくとも１つに分割することができ、または、１つの符号化ユニット内で分割された予測ユニットのいずれかの予測ユニットが別の１つの予測ユニットと異なる形状および／またはサイズを有するように分割することができる。
【００３２】
符号化ユニットに基づいてイントラ予測を実行する予測ユニットが最小の符号化ユニットでない場合、複数の予測ユニットＮ×Ｎに分割することなくイントラ予測を実行することができる。
【００３３】
予測部１２０、１２５は、インター予測を実行するインター予測部１２０およびイントラ予測を実行するイントラ予測部１２５を含むことができる。予測ユニットに対して、インター予測を実行するかイントラ予測を実行するかを決定し、各予測方法に基づいて具体的な情報（例えば、イントラ予測モード、動きベクトル、参照画像など）を決定できる。この場合、予測を実行する処理ユニットは、予測方法および具体的な内容を決定する処理ユニットとは異なる場合がある。例えば、予測ユニットによって予測方法と予測モードなどを決定でき、変換ユニットによって予測を実行することができる。生成された予測ブロックと元のブロックとの間の残差値（残差ブロック）を変換部１３０に入力することができる。また、予測に使用される予測モード情報、動きベクトル情報などは、残差値と一緒にエントロピー符号化部１６５で符号化されて復号化器に伝送されることができる。特定の符号化モードを使用する場合、予測ユニット１２０および１２５によって予測されたブロックを生成せずに、元のブロックを直接符号化して復号化器に伝送することもできる。
【００３４】
インター予測部１２０は、現在の画像の前の画像またはそれ以降の画像のうちの少なくとも１つの画像の情報に基づいて、予測ユニットを予測することができ、場合によっては、現在の画像内の符号化された領域の一部の情報に基づいて予測ユニットを予測することもできる。インター予測部１２０は、参照画像補間部、動き予測部、および動き補償部を含み得る。
【００３５】
参照画像補間部は、メモリ１５５から参照画像情報を受け取り、参照画像から整数画素以下の画素情報を生成することができる。輝度画素の場合、１／４画素単位で整数画素以下の画素情報を生成するために、異なるフィルタ係数を持つＤＣＴベースの８タップ補間フィルタ（ＤＣＴ−ｂａｓｅｄ  Ｉｎｔｅｒｐｏｌａｔｉｏｎ  Ｆｉｌｔｅｒ）を使用できる。彩度信号の場合、１／８画素単位で整数画素以下の画素情報を生成するために、異なるフィルタ係数を持つＤＣＴベースの４タップ補間フィルタ（ＤＣＴ−ｂａｓｅｄ  Ｉｎｔｅｒｐｏｌａｔｉｏｎ  Ｆｉｌｔｅｒ）を使用できる。
【００３６】
動き予測部は、参照画像補間部によって補間された参照画像に基づいて動き予測を実行することができる。動きベクトルを計算するための方法については、完全検索ベースのブロックマッチングアルゴリズム（ＦＢＭＡ：Ｆｕｌｌ  ｓｅａｒｃｈ−ｂａｓｅｄ  Ｂｌｏｃｋ  Ｍａｔｃｈｉｎｇ  Ａｌｇｏｒｉｔｈｍ）、３ステップ検索法（ＴＳＳ：Ｔｈｒｅｅ  Ｓｔｅｐ  Ｓｅａｒｃｈ）、新しい３ステップ検索法（ＮＴＳ：Ｎｅｗ  Ｔｈｒｅｅ−Ｓｔｅｐ  Ｓｅａｒｃｈ  Ａｌｇｏｒｉｔｈｍ）など、様々な方法可能である。動きベクトルは、補間された画素に基づき１／２画素または１／４画素を単位とする動きベクトル値を持つことができる。動き予測部で異なる動き予測方法を採用することによって現在の予測ユニットを予測することができる。動き予測方法については、スキップ（Ｓｋｉｐ）方法、マージ（Ｍｅｒｇｅ）方法、アドバンスド動きベクトル予測（ＡＭＶＰ：Ａｄｖａｎｃｅｄ  Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ  Ｐｒｅｄｉｃｔｉｏｎ）方法、イントラブロックコピー（Ｉｎｔｒａ  Ｂｌｏｃｋ  Ｃｏｐｙ）方法など、様々な方法が使用可能である。
【００３７】
イントラ予測部１２５は、現在の画像内の画素情報である現在のブロック周辺の参照画素情報に基づいて、予測ユニットを生成することができる。現在の予測ユニットの隣接ブロックが、インター予測が行われたブロックであり、参照画素がインター予測が行われた画素である場合、インター予測が行われたブロックに含まれる参照画素を、周辺のイントラ予測が行われたブロックの参照画素情報として使用することができる。つまり、参照画素が使用可能ではない場合、使用可能な参照画素のうちの少なくとも１つの参照画素を使用して、使用できない参照画素情報を置き換えることができる。
【００３８】
イントラ予測では、予測モードは、予測方向に応じて参照画素情報を使用する方向性予測モードと、予測を実行するときに方向情報を使用しない非方向性モードとを有し得る。輝度情報を予測するためのモードと、彩度情報を予測するためのモードが異なることができ、彩度情報を予測するために、輝度情報を予測するために使用されるイントラ予測モード情報または予測された輝度信号情報を活用することができる。
【００３９】
イントラ予測を実行する場合、予測ユニットのサイズが変換ユニットのサイズと同じである場合、予測ユニットの左側に存在する画素、左上に存在する画素および上側に存在する画素に基づいて、予測ユニットに対してイントラ予測を実行できる。ただし、イントラ予測を実行する場合、予測ユニットのサイズが変換ユニットのサイズと異なる場合、変換ユニットに基づく参照画素を使用してイントラ予測を実行することができる。また、最小符号化ユニットにのみ、Ｎ×Ｎ分割のイントラ予測を使用することができる。
【００４０】
イントラ予測方法は、予測モードに応じて、適応イントラスムージング（ＡＩＳ：Ａｄａｐｔｉｖｅ  Ｉｎｔｒａ  Ｓｍｏｏｔｈｉｎｇ）フィルタを参照画素に適用した後、予測ブロックを生成することができる。参照画素に適用されるＡＩＳフィルタのタイプは異なる場合がある。イントラ予測方法を実行するために、現在の予測ユニットの周辺に存在する予測ユニットのイントラ予測モードから、現在の予測ユニットのイントラ予測モードを予測することができる。周辺予測ユニットから予測されたモード情報を使用して、現在の予測ユニットの予測モードを予測する場合、現在の予測ユニットと周辺予測ユニットのイントラ予測モードが同じである場合、所定のフラグ情報を使用して、現在の予測ユニットと周辺予測ユニットの予測モードが同じであることを示す情報を伝送することができ、現在の予測ユニットと周辺予測ユニットの予測モードが異なる場合、エントロピー符号化を実行して、現在のブロックの予測モード情報を符号化することができる。
【００４１】
また、予測部１２０、１２５で生成された予測ユニットに基づいて予測を行った予測単位と予測ユニットの元のブロックとの間の差である残差値情報を含む残差ブロックを生成することができる。生成された残差ブロックを変換部１３０に入力することができる。
【００４２】
変換部１３０は、離散コサイン変換（ＤＣＴ）、離散正弦変換（ＤＳＴ）、またはＫ−Ｌ変換（ＫＬＴ）などの変換方法を使用して、元のブロック、および予測部１２０、１２５で生成された予測ユニットの残差係数情報を含む残差ブロックを変換することができる。残差ブロックを変換するためにＤＣＴを適用するか、ＤＳＴを適用するか、またはＫＬＴを適用するかは、残差ブロックを生成するために使用される予測ユニットのイントラ予測モード情報に従って決定することができる。
【００４３】
量子化部１３５は、変換部１３０で周波数領域に変換された値を量子化することができる。量子化係数は、ブロックまたはビデオの重要度に応じて変換できる。量子化部１３５で算出された値を、逆量子化部１４０と再並べ替え部１６０に提供することができる。
【００４４】
再並べ替え部１６０は、量子化された残差値に対して係数値の並べ替えを実行することができる。
【００４５】
再並べ替え部１６０、係数走査（Ｃｏｅｆｆｉｃｉｅｎｔ  Ｓｃａｎｎｉｎｇ）方法により、２次元のブロック形状係数を１次元のベクトル形に変更することができる。例えば、再並べ替え部１６０は、ジグザグ走査（Ｚｉｇ−Ｚａｇ  Ｓｃａｎ）方法を使用して、ＤＣ係数から高周波数領域の係数まで走査して、それを１次元ベクトル形に変更することができる。変換ユニットのサイズおよびイントラ予測モードに従って、ジグザグ走査の代わりに、２次元ブロック形状係数を列方向に走査する垂直走査と２次元ブロック形状係数を行方向に走査する水平走査を使用することもできる。つまり、変換ユニットのサイズおよびイントラ予測モードに従って、ジグザグ走査、垂直方向走査、および水平方向走査のうちのどの走査方法を使用するかを決定することができる。
【００４６】
エントロピー符号化部１６５は、再並べ替え部１６０によって算出された値に基づいて、エントロピー符号化を実行することができる。例えば、エントロピー符号化については、指数ゴロンブ（Ｅｘｐｏｎｅｎｔｉａｌ  Ｇｏｌｏｍｂ）符号化、コンテキスト適応型可変長符号化（ＣＡＶＬＣ：Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）、コンテキスト適応型バイナリ算術符号化（ＣＡＢＡＣ：Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）などの様々な符号化方法が使用可能である。
【００４７】
エントロピー符号化部１６５は、再並べ替え部１６０と予測部１２０、１２５からの符号化ユニットの残差値係数情報およびブロックタイプ情報、予測モード情報、分割ユニット情報、予測ユニット情報および伝送ユニット情報、動きベクトル情報、参照フレーム情報、ブロックの補間情報、フィルタリング情報などの様々な情報を符号化することができる。
【００４８】
エントロピー符号化部１６５で、再並べ替え部１６０から入力された符号化ユニットの係数値に対してエントロピー符号化を実行することができる。
【００４９】
逆量子化部１４０および逆変換部１４５は、量子化部１３５で量子化された複数の値を逆量子化し、変換部１３０で変換された値を逆変換する。逆量子化部１４０および逆変換部１４５で生成された残差値は、予測部１２０、１２５に含まれる動き予測部、動き補償部、およびイントラ予測部によって予測された予測ユニットとマージして、復元ブロック（Ｒｅｃｏｎｓｔｒｕｃｔｅｄ  Ｂｌｏｃｋ）を生成することができる。
【００５０】
フィルタ部１５０は、デブロッキングフィルタ、オフセット補正部、適応ループフィルタ（ＡＬＦ：Ａｄａｐｔｉｖｅ  Ｌｏｏｐ  Ｆｉｌｔｅｒ）のうちの少なくとも１つを含み得る。
【００５１】
デブロッキングフィルタは、復元された画像でブロック間の境界に生じたブロック歪みを除去することができる。デブロッキングを行うか否かを判断するために、ブロックに含まれるいくつかの列または行に含まれる画素に基づいて、現在のブロックにデブロッキングフィルタを適用するか否かを決定できる。ブロックにデブロッキングフィルタを適用する場合、必要なデブロッキングフィルタリング強度に応じて、強いフィルタ（Ｓｔｒｏｎｇ  Ｆｉｌｔｅｒ）または弱いフィルタ（Ｗｅａｋ  Ｆｉｌｔｅｒ）を適用できる。また、デブロッキングフィルタを使用する過程で、垂直フィルタリングと水平フィルタリングを実行する場合、水平方向フィルタリングと垂直方向フィルタリングを並行処理することができる。
【００５２】
オフセット補正部は、デブロッキングされたビデオに対して、画素単位で元のビデオとのオフセットを補正することができる。特定の画像に対するオフセット補正を実行するために、ビデオに含まれる画素を一定数の領域に分割した後、オフセットを実行する領域を決定し、対応する領域にオフセットを適用する方法、または各画素のエッジ情報を考慮してオフセットを適用する方法を使用することができる。
【００５３】
適応ループフィルタ（ＡＬＦ：Ａｄａｐｔｉｖｅ  Ｌｏｏｐ  Ｆｉｌｔｅｒｉｎｇ）は、フィルタリングされた復元画像と元のビデオを比較した値に基づいて実行されることができる。ビデオに含まれる画素を所定のグループに分割した後、対応するグループに使用される１つのフィルタを決定することにより、グループごとに差別的にフィルタリングを行うことができる。ＡＬＦを適用するか否かに関する情報および輝度信号は、符号化ユニット（ＣＵ：Ｃｏｄｉｎｇ  Ｕｎｉｔ）で伝送でき、それぞれのブロックに応じて適用されるＡＬＦフィルタの形状とフィルタ係数は異なる可能性がある。また、適用対象のブロックの特性に関係なく、同じタイプ（固定タイプ）のＡＬＦフィルタを適用することもできる。
【００５４】
メモリ１５５は、フィルタ部１５０によって算出された復元ブロックまたは画像を記憶することができ、インター予測を実行するときに、記憶された復元ブロックまたは画像を予測部１２０、１２５に提供することができる。
【００５５】
図２は、本発明の実施例に係るビデオ復号化器（ｄｅｃｏｄｅｒ）のブロック図である。
【００５６】
図２を参照すると、ビデオ復号化器２００は、エントロピー復号化部２１０、再並べ替え部２１５、逆量子化部２２０、逆変換部２２５、予測部２３０、予測部２３５、フィルタ部２４０、およびメモリ２４５を含み得る。
【００５７】
ビデオビットストリームをビデオ符号化器に入力する場合、入力されたビットストリームは、ビデオ符号化器と逆のステップで復号化することができる。
【００５８】
エントロピー復号化部２１０は、ビデオ符号化器のエントロピー符号化部でエントロピー符号化を実行するステップとは逆のステップでエントロピー復号化を実行することができる。例えば、ビデオ符号化器で実行される方法に対応して、指数ゴロンブ（Ｅｘｐｏｎｅｎｔｉａｌ  Ｇｏｌｏｍｂ）符号化、コンテキスト適応型可変長符号化（ＣＡＶＬＣ：Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）、コンテキスト適応型バイナリ算術符号化（ＣＡＢＡＣ：Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）などの様々な方法が適用可能である。
【００５９】
エントロピー復号化部２１０は、符号化器によって実行されるイントラ予測およびインター予測に関する情報を復号化することができる。
【００６０】
再並べ替え部２１５は、エントロピー復号化部２１０でエントロピー復号化されたビットストリームを符号化部で並べ替える方法に基づいて、並べ替えを実行することができる。１次元ベクトルの形で表される複数の係数を、再度２次元のブロック形状の係数に復元して並べ替えることができる。再並べ替え部２１５は、符号化部で実行される係数走査に関する情報を受け取り、対応する符号化部によって実行される走査順序に基づいて、逆走査の方法によって並べ替えを実行することができる。
【００６１】
逆量子化部２２０は、符号化器によって提供される量子化パラメータと並べ替えられたブロックの係数値に基づいて逆量子化を実行することができる。
【００６２】
ビデオ符号化器によって実行された量子化結果について、逆変換部２２５は、変換部によって実行される変換、すなわち、ＤＣＴ、ＤＳＴ、およびＫＬＴに対して逆変換（すなわち、逆ＤＣＴ、逆ＤＳＴ、および逆ＫＬＴ）を実行することができる。逆変換は、ビデオ符号化器で決定された伝送ユニットに基づいて実行することができる。ビデオ復号化器の逆変換部２２５において、予測方法、現在のブロックのサイズおよび予測方向などの複数の情報に基づいて変換方法（例えば、ＤＣＴ、ＤＳＴ、ＫＬＴ）を選択的に実行することができる。
【００６３】
予測部２３０、２３５は、エントロピー復号化部２１０によって提供される予測ブロックの生成に関する情報、およびメモリ２４５によって提供される以前に復号化されたブロックまたは画像に関する情報に基づいて予測ブロックを生成することができる。
【００６４】
前述したように、ビデオ符号化器での動作と同様な方式でイントラ予測実行する場合、予測ユニットのサイズと変換ユニットのサイズが同じである場合、予測ユニットの左側に存在する画素、左上に存在する画素、上側に存在する画素に基づいて予測ユニットに対してイントラ予測を実行し、イントラ予測を実行する際の予測ユニットのサイズと変換ユニットのサイズが異なる場合、変換ユニットに基づく参照画素を使用してイントラ予測を実行することができる。また、最小符号化ユニットにのみ、Ｎ×Ｎ分割のイントラ予測を使用することができる。
【００６５】
予測部２３０、２３５は、予測ユニット判別部、インター予測部、およびイントラ予測部を含むことができる。予測ユニット判別部は、エントロピー復号化部２１０から入力された予測ユニット情報、イントラ予測方法の予測モード情報、インター予測方法の動き予測関連情報などの様々な情報を受け取り、現在の符号化ユニットに従って予測ユニットを分類することにより、予測ユニットがインター予測を実行するか、イントラ予測を実行するかを判別することができる。インター予測部２３０は、ビデオ符号化器によって提供される現在の予測ユニットのインター予測に必要な情報を使用して、現在の予測ユニットが属する現在の画像の前の画像または以降の画像のうちの少なくとも１つの画像に含まれる情報に基づいて、現在の予測ユニットに対してインター予測を実行することができる。あるいは、現在の予測ユニットが属する現在の画像内で復元された領域の一部の情報に基づいて、インター予測を実行することもできる。
【００６６】
インター予測を実行するために、符号化ユニットに基づいて対応する符号化ユニットに含まれる予測ユニットの動き予測方法がスキップモード（Ｓｋｉｐ  Ｍｏｄｅ）、マージモード（Ｍｅｒｇｅ  Ｍｏｄｅ）、アドバンスド動きベクトル予測モード（ＡＭＶＰ  Ｍｏｄｅ）、イントラブロックコピーモードのうちのどのモードであるかを判断することができる。
【００６７】
イントラ予測部２３５は、現在の画像内の画素情報に基づいて予測ブロックを生成することができる。予測ユニットがイントラ予測を行った予測ユニットである場合、ビデオ符号化器によって提供される予測ユニットのイントラ予測モード情報に基づいてイントラ予測を実行することができる。イントラ予測部２３５は、適応イントラスムージング（ＡＩＳ：Ａｄａｐｔｉｖｅ  Ｉｎｔｒａ  Ｓｍｏｏｔｈｉｎｇ）フィルタ、参照画素補間部、およびＤＣフィルタを含み得る。ＡＩＳフィルタは、現在のブロックの参照画素に対してフィルタリングを実行する要素であり、現在の予測ユニットの予測モードに従ってフィルタを適用するか否かを決定することができる。ビデオ符号化器によって提供される予測ユニットの予測モードおよびＡＩＳフィルタ情報を使用して、現在のブロックの参照画素に対してＡＩＳフィルタリングを実行することができる。現在のブロックの予測モードがＡＩＳフィルタリングを実行しないモードである場合、ＡＩＳフィルタを適用しないことができる。
【００６８】
予測ユニットの予測モードが、補間された参照画素の画素値に基づいてイントラ予測を実行する予測ユニットである場合、参照画素補間部は、参照画素を補間することによって整数値または分数値の画素単位の参照画素を生成することができる。現在の予測ユニットの予測モードが、参照画素を補間することなく予測ブロックを生成する予測モードである場合、参照画素を補間しなくてもよい。現在のブロックの予測モードがＤＣモードである場合、ＤＣフィルタは、フィルタリングにより予測ブロックを生成することができる。
【００６９】
復元されたブロックまたは画像をフィルタ部２４０に提供することができる。フィルタ部２４０は、デブロッキングフィルタ、オフセット補正部、およびＡＬＦを含み得る。
【００７０】
ビデオ符号化器から、ブロックまたは画像にデブロッキングフィルタを適用するか否かに関する情報、およびデブロッキングフィルタを適用するときに強いフィルタリングを適用するか弱いフィルタリングを適用するかに関する情報を受信することができる。ビデオ復号化器のデブロッキングフィルタから、ビデオ符号化器によって提供されるデブロッキングフィルタの関連情報を受信でき、ビデオ復号化器で、対応するブロックに対してデブロッキングフィルタリングを実行することができる。
【００７１】
オフセット補正部は、符号化ときにビデオに使用されるオフセット補正のタイプおよびオフセット量情報などに基づいて、復元されたビデオに対してオフセット補正を実行することができる。
【００７２】
符号化器によって提供される、ＡＬＦを適用するか否かに関する情報、ＡＬＦ係数情報などに基づいて、ＡＬＦを符号化ユニットに適用することができる。このようなＡＬＦ情報は、特定のパラメータセットに含まれることによって提供できる。
【００７３】
メモリ２４５は、復元された画像またはブロックを記憶し、前記画像またはブロックを参照画像または参照ブロックとして使用でき、復元された画像を出力部に提供することができる。
【００７４】
図３は、本発明の実施例に係る基本符号化ツリーユニットを示す図である。
【００７５】
最大サイズの符号化ブロックを符号化ツリーブロックとして定義することができる。１つの画像は、複数の符号化ツリーユニット（ＣＴＵ：Ｃｏｄｉｎｇ  Ｔｒｅｅ  Ｕｎｉｔ）に分割されることができる。符号化ツリーユニットは、最大サイズの符号化ユニットであり、最大符号化ユニット（ＬＣＵ：Ｌａｒｇｅｓｔ  Ｃｏｄｉｎｇ  Ｕｎｉｔ）と呼ばれることもできる。図３は、１つの画像が複数の符号化ツリーユニットに分割された例を示す。
【００７６】
符号化ツリーユニットのサイズは、画像レベルまたはシーケンスレベルで定義できる。このため、符号化ツリーユニットのサイズを示す情報は、画像パラメータセットまたはシーケンスパラメータセットを介してシグナリングできる。
【００７７】
例えば、シーケンス内の画像全体の符号化ツリーユニットのサイズを１２８×１２８に設定できる。あるいは、画像レベルで１２８×１２８または２５６×２５６のいずれかを符号化ツリーユニットのサイズとして決定できる。例えば、第１画像では符号化ツリーユニットのサイズが１２８×１２８に設定され、第２画像では符号化ツリーユニットのサイズが２５６×２５６に設定されることができる。
【００７８】
符号化ツリーユニットを分割することによって符号化ブロックを生成することができる。符号化ブロックは、符号化／復号化処理を実行するための基本ユニットを表す。例えば、異なる符号化ブロックに従って予測または変換を実行でき、または異なる符号化ブロックに従って予測符号化モードを決定することができる。ここで、予測符号化モードは予測画像を生成する方法を表す。例えば、予測符号化モードは、画面内予測（Ｉｎｔｒａ  Ｐｒｅｄｉｃｔｉｏｎ、イントラ予測）、画面間予測（Ｉｎｔｅｒ  Ｐｒｅｄｉｃｔｉｏｎ、インター予測）、現在の画像参照（ＣＰＲ：Ｃｕｒｒｅｎｔ  Ｐｉｃｔｕｒｅ  Ｒｅｆｅｒｅｎｃｉｎｇ、またはイントラブロックコピー（ＩＢＣ：Ｉｎｔｒａ  Ｂｌｏｃｋ  Ｃｏｐｙ））または複合予測（Ｃｏｍｂｉｎｅｄ  Ｐｒｅｄｉｃｔｉｏｎ）を含み得る。符号化ブロックについては、イントラ予測、インター予測、現在の画像参照または複合予測のうちの少なくとも１つの予測符号化モードを使用して、符号化ブロックに関する予測ブロックを生成することができる。
【００７９】
現在のブロックの予測符号化モードを示す情報は、ビットストリームを介してシグナリングできる。例えば、前記情報は、予測符号化モードがイントラモードであるか、またはインター予測モードであるかを示す１ビットのフラグであり得る。現在のブロックの予測符号化モードがインター予測モードであると決定された場合にのみ、現在の画像参照または複合予測を使用できる。
【００８０】
現在の画像参照は、現在の画像を参照画像に設定し、現在の画像内の符号化／復号化された領域から、現在のブロックの予測ブロックを取得するために使用される。ここで、現在の画像は、現在のブロックを含む画像を意味する。現在の画像参照を現在のブロックに適用するか否かを示す情報は、ビットストリームを介してシグナリングできる。例えば、前記情報は１ビットのフラグであり得る。前記フラグがｔｒｕｅである場合、現在のブロックの予測符号化モードを現在の画像参照として決定でき、前記フラグが偽である場合、現在のブロックの予測モードをインター予測として決定できる。
【００８１】
あるいは、参照画像インデックスに基づいて現在のブロックの予測符号化モードを決定できる。例えば、参照画像インデックスが現在の画像を指す場合、現在のブロックの予測符号化モードを現在の画像参照として決定できる。参照画像インデックスが、現在の画像ではなく他の画像を指す場合、現在のブロックの予測符号化モードをインター予測として決定できる。つまり、現在の画像参照は、現在の画像内の符号化／復号化された領域の情報を使用する予測方法であり、インター予測は、符号化／復号化された他の画像の情報を使用する予測方法である。
【００８２】
複合予測は、イントラ予測、インター予測、および現在の画像参照のうちの２つ以上を組み合わせた符号化モードを示す。例えば、複合予測を適用する場合、イントラ予測、インター予測、または現在の画像参照のいずれかに基づいて、第１予測ブロックを生成し、他の１つに基づいて、第２予測ブロックを生成することができる。第１予測ブロックおよび第２予測ブロックを生成する場合、第１予測ブロックおよび第２予測ブロックの平均演算または加重合演算を介して、最終予測ブロックを生成できる。複合予測を適用するか否かを示す情報は、ビットストリームを介してシグナリングできる。前記情報は１ビットのフラグであり得る。
【００８３】
図４は、符号化ブロックの様々な分割形態を示す図である。
【００８４】
四分木分割、二分木分割、または三分木分割に基づいて、符号化ブロックを複数の符号化ブロックに分割することができる。四分木分割、二分木分割、または三分木分割に基づいて、分割された符号化ブロックを再び複数の符号化ブロックに分割することもできる。
【００８５】
四分木分割は、現在のブロックを４つのブロックに分割する分割手法を指す。四分木分割の結果として、現在のブロックを４つの正方形のパーティションに分割できる（図４（ａ）の「ＳＰＬＩＴ＿ＱＴ」を参照）。
【００８６】
二分木分割は、現在のブロックを２つのブロックに分割する分割手法を指す。垂直方向に沿って（すなわち、現在のブロックを横切る垂直線を使用する）現在のブロックを２つのブロックに分割することを垂直方向二分木分割と呼ぶことができ、水平方向に沿って（すなわち、現在のブロック横切る水平線を使用する）現在のブロックを２つのブロックに分割することを水平方向二分木分割と呼ぶことができる。二分木分割により、現在のブロックを２つの非正方形のパーティションに分割することができる。図４（ｂ）の「ＳＰＬＩＴ＿ＢＴ＿ＶＥＲ」は、垂直方向二分木分割結果を示し、図４（ｃ）の「ＳＰＬＩＴ＿ＢＴ＿ＨＯＲ」は、水平方向二分木分割結果を示す。
【００８７】
三分木分割は、現在のブロックを３つのブロックに分割する分割手法を指す。垂直方向に沿って（すなわち、現在のブロックを横切る２つの垂直線を使用する）現在のブロックを３つのブロックに分割することを垂直方向三分木分割と呼ぶことができ、水平方向に沿って（すなわち、現在のブロック横切る２つの水平線を使用する）現在のブロックを３つのブロックに分割することを水平方向三分木分割と呼ぶことができる。三分木分割により、現在のブロックを３つの非正方形のパーティションに分割できる。この場合、現在のブロックの中央に位置するパーティションの幅／高さは、他のパーティションの幅／高さの２倍であり得る。図４（ｄ）の「ＳＰＬＩＴ＿ＴＴ＿ＶＥＲ」は、垂直方向三分木分割結果を示し、図４（ｅ）の「ＳＰＬＩＴ＿ＴＴ＿ＨＯＲ」は、水平方向三分木分割結果を示す。
【００８８】
符号化ツリーユニットの分割回数を分割深さ（Ｐａｒｔｉｔｉｏｎｉｎｇ  Ｄｅｐｔｈ）として定義できる。シーケンスまたは画像レベルにより符号化ツリーユニットの最大分割深さを決定できる。これにより、符号化ツリーユニットの最大分割深さは、異なるシーケンスまたは画像によって異なることができる。
【００８９】
あるいは、複数の分割手法のそれぞれの最大分割深さを個別に決定することができる。例えば、四分木分割が許可される最大分割深さは、二分木分割および／または三分木分割が許可される最大分割深さとは異なることができる。
【００９０】
符号化器は、現在のブロックの分割形状または分割深さのうちの少なくとも１つを示す情報を、ビットストリームを介してシグナリングすることができる。復号化器は、ビットストリームから解析された情報に基づいて、符号化ツリーユニットの分割形状および分割深さを決定することができる。
【００９１】
図５は、符号化ツリーユニットの分割例を示す図である。
【００９２】
四分木分割、二分木分割、および／または三分木分割などの分割手法を使用して、符号化ブロックを分割することを多分木分割（Ｍｕｌｔｉ  Ｔｒｅｅ  Ｐａｒｔｉｔｉｏｎｉｎｇ）と呼ぶことができる。
【００９３】
多分木分割を符号化ブロックに適用することによって生成される複数の符号化ブロックを下位符号化ブロックと呼ぶことができる。符号化ブロックの分割深さがｋである場合、複数の下位符号化ブロックの分割深さをｋ＋１に設定する。
【００９４】
一方、分割深さがｋ＋１である複数の符号化ブロックについて、分割深さがｋである符号化ブロックを上位符号化ブロックと呼ぶことができる。
【００９５】
上位符号化ブロックの分割形状または隣接符号化ブロックの分割タイプのうちの少なくとも１つに基づいて、現在の符号化ブロックの分割タイプを決定できる。ここで、隣接符号化ブロックは、現在の符号化ブロックに隣接し、当該隣接符号化ブロックは、現在の符号化ブロックの上部隣接ブロック、左側隣接ブロックまたは左上隅に隣接する隣接ブロックのうちの少なくとも１つを含み得る。ここで、分割タイプは、四分木分割するか否か、二分木分割するか否か、二分木の分割方向、三分木分割するか否か、または三分木の分割方向のうちの少なくとも１つを含み得る。
【００９６】
符号化ブロックの分割形状を決定するために、符号化ブロックが分割されるか否かを示す情報が、ビットストリームを介してシグナリングできる。前記情報が１ビットのフラグ「ｓｐｌｉｔ＿ｃｕ＿ｆｌａｇ」であり、現在の記フラグがｔｒｕｅである場合、多分木分割手法によって符号化ブロックを分割することができる。
【００９７】
「ｓｐｌｉｔ＿ｃｕ＿ｆｌａｇ」がｔｒｕｅである場合、符号化ブロックが四分木分割されるか否かを示す情報が、ビットストリームを介してシグナリングできる。前記情報が１ビットのフラグ「ｓｐｌｉｔ＿ｑｔ＿ｆｌａｇ」であり、前記フラグがｔｒｕｅである場合、符号化ブロックは、４つのブロックに分割されることができる。
【００９８】
例えば、図５に示される例では、符号化ツリーユニットが四分木分割により分割深さが１である４つの符号化ブロックが生成されることが示される。また、四分木分割の結果として生成された４つの符号化ブロックのうちの最初の符号化ブロックおよび４番目の符号化ブロックに再び四分木分割が適用されることが示される。その結果、分割深さが２である４つの符号化ブロックを生成できる。
【００９９】
また、分割深さが２である符号化ブロックに再び四分木分割を適用することによって、分割深さが３である符号化ブロックを生成できる。
【０１００】
符号化ブロックに四分木分割が適用されない場合、符号化ブロックのサイズ、符号化ブロックが画像境界に位置するか否か、最大分割深さまたは隣接ブロックの分割形状のうちの少なくとも１つを考慮して、前記符号化ブロックに対して二分木分割を実行するか三分木分割を実行するかを決定できる。前記符号化ブロックに対して二分木分割または三分木分割を実行すると決定した場合、分割方向を示す情報が、ビットストリームを介してシグナリングできる。前記情報は１ビットのフラグ「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｖｅｒｔｉｃａｌ＿ｆｌａｇ」であり得る。前記フラグに基づいて、分割方向が垂直方向であるか水平方向であるかを決定できる。さらに二分木分割または三分木分割のどちらが前記符号化ブロックに適用されるかを示す情報が、ビットストリームを介してシグナリングできる。前記情報は１ビットのフラグ「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｂｉｎａｒｙ＿ｆｌａｇ」であり得る。前記フラグに基づいて、前記符号化ブロックに二分木分割を適用するか三分木分割を適用するかを決定できる。
【０１０１】
例えば、図５に示される例では、分割深さが１である符号化ブロックに垂直方向二分木分割が適用され、前記分割結果として生成された符号化ブロックのうち、左側の符号化ブロックに垂直方向三分木分割が適用され、右側の符号化ブロックに垂直方向二分木分割が適用されることが示される。
【０１０２】
画像を符号化ツリーユニットに分割する場合、画像の右境界または下境界に隣接する領域に、事前定義されたサイズより小さいサイズのブロックが存在することができる。前記ブロックが符号化ツリーユニットである場合、画像の右境界または下境界に、事前定義されたサイズよい小さいサイズの符号化ツリーユニットが生成されることができる。この場合、シーケンスパラメータセットまたは画像パラメータセットを介してシグナリングされる情報に基づいて、符号化ツリーユニットのサイズを決定できる。
【０１０３】
図６は、プリセットされたサイズの符号化ツリーユニットより小さいサイズのブロックが画像境界に現れる例を示す図である。
【０１０４】
図６に示される例のように、１２９２×１０８０サイズの画像を１２８×１２８サイズの符号化ツリーユニットに分割する場合、画像の右境界および下境界に１２８×１２８未満のサイズのブロックが存在することになる。後述される実施例では、画像境界で生成される事前定義されたサイズ未満の符号化ツリーユニットのブロックは非定型境界の境界ブロックと呼ばれる。
【０１０５】
非定型境界の境界ブロックについては、事前定義された分割方法のみを許可することができる。ここで、事前定義された分割方法は、四分木分割、三分木分割、または二分木分割のうちの少なくとも１つを含み得る。
【０１０６】
例えば、非定型境界の境界ブロックについては、四分木分割のみを許可することができる。この場合、画像境界のブロックが最小四分木分割サイズになるまで、四分木分割を繰り返すことができる。ここで、符号化器および復号化器で最小四分木分割サイズを事前定義することができる。あるいは、最小四分木分割サイズを示す情報が、ビットストリームを介してシグナリングできる。
【０１０７】
図７は、非定型境界の境界ブロックに対して四分木分割を実行する例を示す図である。説明の便宜のために、最小四分木分割のサイズが４×４であると仮定する。
【０１０８】
非定型境界の境界ブロックに対する分割は、正方形のブロックに基づいて実行できる。前記正方形のブロックは、非定型境界の境界ブロックの幅または高さの大きい方に基づいて導出できる。例えば、前記参照値より大きく、前記参照値に最も近い２のべき級数は、正方形のブロックの１辺の長さと見なすことができる。例えば、図７に示される１２×２０ブロックは、３２×３２ブロックに属するものと見なされ、３２×３２の分割結果を１２×２０ブロックに適用することができる。
【０１０９】
１２×２０のブロックに対して四分木分割を実行する場合、前記ブロックは、１２×１６サイズのブロックおよび１２×４サイズのブロックに分割されることができる。それらのそれぞれに対して再び四分木分割を実行する場合、１２×１６ブロックは２つの８×８ブロックと、２つの４×８ブロックに分割され、１２×４サイズのブロックは、８×４サイズのブロックと４×４サイズのブロックに分割される。
【０１１０】
画像境界に位置する４×８ブロックに対して再び四分木分割を実行し、その結果、２つの４×４サイズのブロックを生成できる。同様に、画像境界に位置する８×４ブロックに対して再び四分木分割を実行し、その結果、２つの４×４サイズのブロックを生成できる。
【０１１１】
あるいは、ブロックの幅または高さのうちの少なくとも１つが、最小四分木分割サイズと同じかそれよりも小さい場合、二分木分割を実行することもできる。ここで、最小四分木分割サイズは、最小四分木分割幅または最小四分木分割高さを示すことができる。例えば、最小四分木分割サイズが４×４である場合、最小四分木分割幅と最小四分木分割高さは４であり得る。
【０１１２】
この場合、ブロックの幅が最小四分木分割サイズと同じかそれよりも小さい場合、垂直方向二分木分割を実行でき、ブロックの高さが最小四分木分割高さと同じかそれよりも小さい場合、水平方向二分木分割を実行できる。
【０１１３】
一方、ブロックの幅または高さが最小四分木分割サイズよりも大きい場合、四分木分割を実行できる。例えば、ブロックの右上の位置と左下の位置が画像を脱し、ブロックの幅または高さが最小四分木分割サイズよりも大きい場合、対応するブロックに四分木分割を適用できる。
【０１１４】
図８は、画像の右境界と下境界に同時に隣接するブロックに対して四分木分割を実行する例を示す図である。説明の便宜のために、最小四分木分割のサイズが４×４であると仮定する。
【０１１５】
図８に示される例では、１２×２０サイズのブロックを含む３２×３２サイズのブロックに対して四分木分割を実行する場合、４つの１６×１６サイズのブロックが生成される。これらのテクスチャデータを含む２つの１６×１６サイズのブロックに対して、再び四分木分割を実行できる。その結果、ｘ軸座標およびｙ軸座が、画像境界を抜け出し、４×４サイズのテクスチャデータを含む８×８サイズのブロックを生成することができる。前記８×８サイズのブロックの幅および高さが最小四分木分割サイズより大きいため、前記ブロックに対して四分木分割を実行することができる。
【０１１６】
１２×２０のブロックに対して四分木分割を実行する場合、前記ブロックは、１２×１６サイズのブロックおよび１２×４サイズのブロックに分割されることができる。それらのそれぞれに対して再び四分木分割を実行する場合、１２×１６ブロックは２つの８×８ブロックと、２つの４×８ブロックに分割され、１２×４サイズのブロックは、８×４サイズのブロックと４×４サイズのブロックに分割される。
【０１１７】
画像境界に位置する４×８ブロックの幅は、最小四分木分割サイズと同じであるため、４×８ブロックに対して二分木分割を実行できる。具体的には、４×８ブロックを含む正方形ブロック（すなわち、８×８）に基づいて、垂直方向二分木分割を実行できる。
【０１１８】
また、画像境界に位置する８×４ブロックの幅は、最小四分木分割サイズと同じであるため、８×４ブロックに対して二分木分割を実行できる。具体的には、４×８ブロックを含む正方形ブロック（すなわち、８×８）に基づいて、水平方向二分木分割を実行できる。
【０１１９】
前記分割結果は、８×４サイズのブロック、４×４サイズのブロック、および４×８サイズのブロックが画像境界に隣接配置することができる。
【０１２０】
あるいは、ブロックの幅または高さのうちの少なくとも１つが閾値より小さいか等しい場合二分木分割を実行し、そうでない場合、四分木分割を実行できる。ここで、閾値は、最小四分木分割サイズに基づいて導出できる。例えば、最小四分木分割サイズがｍｉｎＱＴｓｉｚｅである場合、閾値を「ｍｉｎＱＴｓｉｚｅ＜＜１」に設定できる。あるいは、閾値を決定するための情報が、ビットストリームを介してシグナリングできる。
【０１２１】
図９は、画像境界に隣接するブロックの分割パターンを示す図である。説明の便宜のために、最小四分木分割のサイズが４×４であると仮定する。閾値は８に設定できる。
【０１２２】
先ず、１２×２０ブロックに対して四分木分割を実行する。その結果、前記ブロックは１２×１６サイズのブロックおよび１２×４サイズのブロックに分割できる。１２×１６サイズのブロックの幅および高さの両方が閾値を超えるため、前記ブロックに対して四分木分割を適用することができる。これにより、前記ブロックは２つの８×８ブロックと２つの４×８ブロックに分割できる。
【０１２３】
１２×４サイズのブロックの幅は閾値を超える。これにより、前記１２×４サイズのブロックに対して四分木分割を適用することができる。その結果、前記ブロックは８×４サイズのブロックと４×４サイズのブロックに分割できる。
【０１２４】
その後、画像境界に位置する４×８サイズのブロックと８×４サイズのブロックの幅と高さの両方が、閾値より小さいか等しいため、これらのブロックに対して二分木分割を適用することができる。
【０１２５】
上述した例とは逆に、ブロックの幅または高さのうちの少なくとも１つが閾値を超える場合、二分木分割を実行でき、そうでない場合、四分木分割を実行できる。
【０１２６】
あるいは、非定型境界の境界ブロックに対して、四分木分割のみを適用するか、または二分木分割のみを適用することができる。例えば、画像境界に位置するブロックが最小サイズを持つまで四分木分割を繰り返して実行するか、または、画像境界に位置するブロックが最小サイズを持つまで二分木分割を繰り返して実行することができる。
【０１２７】
非定型境界の境界ブロックを符号化ユニットとして指定し、非定型境界の境界ブロックについては、スキップモードを固定的に適用するか、または変換係数すべて０に設定することができる。これにより、非定型境界の境界ブロックに０以外の変換係数が存在する否かを示す符号化ブロックフラグ（ＣＢＦ：Ｃｏｄｅｄ  Ｂｌｏｃｋ  Ｆｌａｇ）の値が０に設定できる。スキップモードで符号化された符号化ユニットまたは変換係数が０に設定された符号化ユニットは、境界ゼロ符号化ユニットと呼ぶことができる。
【０１２８】
あるいは、非定型境界の境界ブロックを分割して生成された符号化ブロックの幅または高さのうちの少なくとも１つを閾値と比較して、前記符号化ユニットを境界ゼロ符号化ユニットに設定するか否かを決定することができる。例えば、符号化ブロックの幅または高さのうちの少なくとも１つが閾値未満の符号化ブロックをスキップモードで符号化するか、または前記符号化ブロックの変換係数を０に設定することができる。
【０１２９】
図１０は、画像境界に隣接するブロックの符号化パターンを示す図である。閾値が８であると仮定する。
【０１３０】
非定型境界の境界ブロックを分割して生成された符号化ブロックのうち、幅または高さのうちの少なくとも１つが閾値未満である符号化ブロックを境界ゼロ符号化ユニットとして設定できる。
【０１３１】
例えば、図１０に示される例では、４×１６サイズの符号化ブロック、８×４サイズの符号化ブロック、および４×４サイズの符号化ブロックを境界ゼロ符号化ユニットとして設定できる。これにより、スキップモードで前記ブロックを符号化するか、または前記ブロックの変換係数を０に設定できる。
【０１３２】
幅と高さが閾値より大きいか等しい符号化ブロックについては、スキップモードを適用するか変換係数を０に設定するかを選択的に決定することができる。このため、前記符号化ブロックにスキップモードを適用するか否かを示すフラグ、または変換係数を０に設定するか否かを示すフラグを符号化してシグナリングすることができる。
【０１３３】
あるいは、二分木分割で生成された符号化ユニットのみが境界ゼロ符号化ユニットとして設定できることを許可することができる。あるいは、四分木分割で生成された符号化ユニットのみが境界ゼロ符号化ユニットとして設定できることを許可することができる。
【０１３４】
インター予測は、前の画像の情報を使用して、現在のブロックを予測する予測符号化モードである。例えば、前の画像内の現在のブロックと同じ位置のブロック（以下、同等位置ブロック（Ｃｏｌｌｏｃａｔｅｄ  ｂｌｏｃｋ）と呼ぶ）を現在のブロックの予測ブロックとして設定できる。以下、現在のブロックと同じ位置のブロックに基づいて生成された予測ブロックを同等位置予測ブロック（Ｃｏｌｌｏｃａｔｅｄ  Ｐｒｅｄｉｃｔｉｏｎ  Ｂｌｏｃｋ）と呼ぶ。
【０１３５】
一方、前の画像に存在したオブジェクトが現在の画像の別の位置に移動した場合、オブジェクトの動きを使用して、現在のブロックを効果的に予測できる。例えば、前の画像と現在の画像を比較することにより、オブジェクトの移動方向とサイズを知ることができる場合、オブジェクトの動き情報を考慮して、現在のブロックの予測ブロック（または予測画像）を生成することができる。以下、動き情報を使用して生成された予測ブロックを動き予測ブロックと呼ぶことができる。
【０１３６】
現在のブロックから予測ブロックを差し引くことによって、残差ブロック（ｒｅｓｉｄｕａｌ  ｂｌｏｃｋ）を生成することができる。この場合、オブジェクトの動きが存在する場合、同等位置予測ブロックの代わりに動き予測ブロックを使用することにより、残差ブロックのエネルギを削減し、これにより、残差ブロックの圧縮性能を向上させることができる。
【０１３７】
前述したように、動き情報を使用して予測ブロックを生成することを、動き補償予測を呼ぶことができる。ほとんどのインター予測では、動き補償予測に基づいて予測ブロックを生成することができる。
【０１３８】
動き情報は、動きベクトル、参照画像インデックス、予測方向または双方向重み値インデックスのうちの少なくとも１つを含み得る。動きベクトルは、オブジェクトの移動方向とサイズを表す。参照画像インデックスは、参照画像リストに含まれる複数の参照画像のうちの現在のブロックの参照画像を指定する。予測方向は、一方向Ｌ０予測、一方向Ｌ１予測、または双方向予測（Ｌ０予測およびＬ１予測）のいずれかを指す。現在のブロックの予測方向に従って、Ｌ０方向の動き情報またはＬ１方向の動き情報のうちの少なくとも１つを使用することができる。双方向重み値インデックスは、Ｌ０予測ブロックに適用される重み値およびＬ１予測ブロックに適用される重み値を指定する。
【０１３９】
図１１は、本発明の実施例によるインター予測方法のフローチャートである。
【０１４０】
図１１を参照すると、インター予測方法は、現在のブロックのインター予測モードを決定することと（Ｓ１１０１）、決定されたインター予測モードに従って、現在のブロックの動き情報取得することと（Ｓ１１０２）、取得された動き情報に基づいて、現在のブロックの動き補償予測を実行することと（Ｓ１１０３）を含む。
【０１４１】
ここで、インター予測モードは、現在のブロックの動き情報を決定するための様々な手法を表し、並進（Ｔｒａｎｓｌａｔｉｏｎ）動き情報を使用するインター予測モードと、アフィン（Ａｆｆｉｎｅ）動き情報を使用するインター予測モードを含み得る。例えば、並進動き情報を使用するインター予測モードは、マージモードおよび高レベル動きベクトル予測モードを含み得、アフィン動き情報を使用するインター予測モードは、アフィンマージモードおよびアフィン動きベクトル予測モードを含み得る。インター予測モードに従って、現在のブロックに隣接する隣接ブロックまたはビットストリームから解析された情報に基づいて、現在のブロックの動き情報を決定できる。
【０１４２】
以下、並進動き情報を用いたインター予測方法について詳細に説明する。
【０１４３】
現在のブロックの他のブロックの動き情報から、現在のブロックの動き情報を導出することができる。ここで、他のブロックは、現在のブロックよりも先にインター予測で符号化／復号化されたブロックであり得る。現在のブロックの動き情報を他のブロックの動き情報と同じに設定したことをマージモードと定義することができる。また、他のブロックの動きベクトルを現在のブロックの動きベクトルの予測値に設定したことを動きベクトル予測モードと定義することができる。
【０１４４】
図１２は、マージモードで現在のブロックの動き情報を導出するプロセスのフローチャートである。
【０１４５】
現在のブロックのマージ候補を導出することができる（Ｓ１２０１）。現在のブロックのマージ候補は、現在のブロックよりも先にインター予測で符号化／復号化されたブロックから導出されることができる。
【０１４６】
図１３は、マージ候補を導出するための候補ブロックを示す図である。
【０１４７】
候補ブロックは、現在のブロックに隣接するサンプルを含む隣接ブロック、または現在のブロックに隣接しないサンプルを含む非隣接ブロックのうちの少なくとも１つを含み得る。以下、候補ブロックを決定するために使用されるサンプルを参照サンプルとして指定する。また、現在のブロックに隣接する参照サンプルを隣接参照サンプルと呼び、現在のブロックに隣接しない参照サンプルを非隣接参照サンプルと呼ぶ。
【０１４８】
隣接参照サンプルは、現在のブロックの最左側列の隣接列に含まれるか、または現在のブロックの最上行の隣接行に含まれることができる。例えば、現在のブロックの左上のサンプルの座標が（０、０）である場合、（−１、Ｈ−１）の位置の参照サンプルをブロック、（Ｗ−１、−１）位置の参照サンプルを含むブロック、（Ｗ、−１）の位置の参照サンプルを含むブロック、（−１、Ｈ）の位置の参照サンプルを含むブロック、または（−１、−１）の位置の参照サンプルを含むブロックのうちの少なくとも１つを候補ブロックとして使用することができる。図面を参照すると、インデックス０〜４の隣接ブロックを候補ブロックとして使用できる。
【０１４９】
非隣接参照サンプルは、現在のブロックに隣接する参照サンプルとのｘ軸距離またはｙ軸距離のうちの少なくとも１が事前定義された値を持つサンプルを示す。例えば、左側参照サンプルとのｘ軸距離が事前定義された値である参照サンプルを含むブロック、上部参照サンプルとのｙ軸距離が事前定義された値である非隣接サンプルのブロック、または左上参照サンプルとのｘ軸距離とｙ軸距離が事前定義された値である非隣接サンプルであるブロックのうちの少なくとも１を候補ブロックとして使用できる。事前定義された値は４、８、１２、１６などの整数であり得る。図面を参照すると、インデックス５〜２６のブロックのうちの少なくとも１つを候補ブロックとして使用できる。
【０１５０】
隣接参照サンプルと同一垂直線、水平線、または対角線上に位置しないサンプルを非隣接参照サンプルとして設定できる。
【０１５１】
図１４は、参照サンプルの位置を示す図である。
【０１５２】
図１４に示される例のように、上部非隣接参照サンプルのｘ座標は、上部隣接参照サンプルのｘ座標とは異なるように設定できる。例えば、上部隣接参照サンプルの位置が（Ｗ−１、−１）である場合、ｙ軸に沿って上部隣接参照サンプルからＮ離れた上部非隣接参照サンプルの位置を（（Ｗ／２）−１、−１−Ｎ）に設定でき、ｙ軸に沿って上部隣接参照サンプルから２Ｎ離れた上部非隣接参照サンプルの位置を（０、−１−２Ｎ）に設定できる。つまり、非隣接参照サンプルの位置は、隣接参照サンプルの位置と隣接参照サンプルとの距離に基づいて決定されることができる。
【０１５３】
以下、候補ブロックのうちの隣接参照サンプルを含む候補ブロックを隣接ブロックと呼び、非隣接参照サンプルを含むブロックを非隣接ブロックと呼ぶ。
【０１５４】
現在のブロックと候補ブロックとの間の距離が閾値より大きいか等しい場合、前記候補ブロックをマージ候補として使用できないものに設定できる。前記閾値は、符号化ツリーユニットのサイズに基づいて決定できる。例えば、前記閾値を符号化ツリーユニットの高さ（ｃｔｕ＿ｈｅｉｇｈｔ）に設定でき、または符号化ツリーユニットの高さからオフセット値を加算または減算することによって得られた値（例えば、ｃｔｕ＿ｈｅｉｇｈｔ±Ｎ）に設定できる。オフセット値Ｎは符号化器と復号化器で事前定義された値であり、４、８、１６、３２またはｃｔｕ＿ｈｅｉｇｈｔに設定できる。
【０１５５】
現在のブロックのｙ軸座標と候補ブロックに含まれるサンプルのｙ軸座標との間の差が閾値を超える場合、候補ブロックをマージ候補として使用できないと決定できる。
【０１５６】
あるいは、現在のブロックと同じ符号化ツリーユニットに属しない候補ブロックを、マージ候補として使用できないものに設定できる。例えば、参照サンプルが現在のブロックに属する符号化ツリーユニットの上部境界を超えない場合、参照サンプルを含む候補ブロックをマージ候補として使用できないものに設定できる。
【０１５７】
現在のブロックの上部境界が符号化ツリーユニットの上部境界と隣接する場合、複数の候補ブロックがマージ候補として使用できないものに設定され、これにより、現在のブロックの符号化／復号化効率が低下する。上記の問題を解決するために、候補ブロックを設定することにより、現在のブロックの上方に位置する候補ブロックの数が現在のブロックの左側の候補ブロックの数よりも多くなるように設定できる。
【０１５８】
図１５は、マージ候補を導出するための候補ブロックを示す図である。
【０１５９】
図１５に示される例のように、現在のブロックの上部Ｎ個のブロック列に属する上部ブロックと、現在のブロックの左側Ｍ個のブロック列に属する左側ブロックを候補ブロックに設定できる。この場合、ＭをＮより大きく設定することにより、左側候補ブロックの数を上部候補ブロックの数より大きく設定することができる。
【０１６０】
例えば、現在のブロック内の参照サンプルのｙ軸座標と、候補ブロックとして使用できる上部ブロックのｙ軸座標との間の差を、現在のブロックの高さのＮ倍を超えないように設定できる。また、現在のブロック内の参照サンプルのｘ軸座標と、候補ブロックとして使用できる左側ブロックのｘ軸座標との間の差を、現在のブロックの幅のＭ倍を超えないように設定できる。
【０１６１】
例えば、図１５に示される例では、現在のブロックの上部の２つのブロック列に属するブロックと、現在のブロックの左側の５つのブロック列に属するブロックが候補ブロックに設定されることを示す。
【０１６２】
別の例として、候補ブロックが現在のブロックと同じ符号化ツリーユニットに属しない場合、前記候補ブロックの代わりに、現在のブロックと同じ符号化ツリーユニットに属するブロック、または前記符号化ツリーユニットの境界に隣接する参照サンプルを含むブロックを使用してマージ候補を導出することができる。
【０１６３】
図１６は、参照サンプルの位置を変更する例を示す図である。
【０１６４】
参照サンプルが現在のブロックとは異なる符号化ツリーユニットに含まれ、前記参照サンプルが前記符号化ツリーユニット境界に隣接しない場合、前記参照サンプルの代わりに、前記符号化ツリーユニットの境界に隣接する参照サンプルを使用して候補ブロックを決定することができる。
【０１６５】
例えば、図１６（ａ）と図１６（ｂ）に示される例では、現在のブロックの上部境界と符号化ツリーユニットの上部境界が接する場合、現在のブロックの上部の参照サンプルは、現在のブロックとは異なる符号化ツリーユニットに属することになる。符号化ツリーユニットの上部境界に隣接するサンプルを使用して、現在のブロックとは異なる符号化ツリーユニットに属する参照サンプルのうち、符号化ツリーユニットの上部境界に隣接しない参照サンプルを置き換えることができる。
【０１６６】
例えば、図１６（ａ）に示される例のように、位置６の参照サンプルが、符号化ツリーユニットの上部境界の位置６’のサンプルに置き換えられ、図１６（ｂ）に示される例のように、位置１５の参照サンプルが、符号化ツリーユニットの上部境界の位置１５’のサンプルに置き換えられる。この場合、置換サンプルのｙ座標は、符号化ツリーユニットの隣接位置に変更でき、置換サンプルのｘ座標を参照サンプルと同じに設定できる。例えば、位置６’のサンプルは、位置６のサンプルと同じｘ座標を有し得、位置１５’のサンプルは、位置１５のサンプルと同じｘ座標を有し得る。
【０１６７】
あるいは、参照サンプルのｘ座標からオフセット値を加算または減算して得られた値を、置換サンプルのｘ座標として設定できる。例えば、現在のブロックの上部の隣接参照サンプルと、非隣接参照サンプルのｘ座標が同じである場合、参照サンプルのｘ座標からオフセット値を加算または減算して得られた値を、置換サンプルのｘ座標として設定できる。これは、非隣接参照サンプルを置換する置換サンプルが他の非隣接参照サンプルまたは隣接参照サンプルと同じ位置になることを防止するためである。
【０１６８】
図１７は、参照サンプルの位置を変更する例を示す図である。
【０１６９】
符号化ツリーユニットの境界に位置するサンプルを使用して、現在のブロックとは異なる符号化ツリーユニットに含まれかつ符号化ツリーユニットの境界に隣接しない参照サンプルを置き換える場合、参照サンプルのｘ座標からオフセット値を加算または減算して得られた値を、置換サンプルのｘ座標として設定できる。
【０１７０】
例えば、図１７に示される例では、位置６の参照サンプルと位置１５の参照サンプルは、それぞれ、符号化ツリーユニットの上部境界に隣接する行と同じｙ座標を有する、位置６’のサンプルおよび位置１５’のサンプルに置き換えることができる。この場合、位置６’のサンプルのｘ座標は、位置６の参照サンプルのｘ座標からＷ／２を差し引いた値に設定でき、位置１５’のサンプルのｘ座標は、位置１５の参照サンプルのｘ座標からＷ−１を差し引いた値に設定できる。
【０１７１】
図１６および図１７に示される例とは異なり、現在のブロックの最上部の行の上に位置する行のｙ座標、または符号化ツリーユニットの上部境界のｙ座標を、置換サンプルのｙ座標に設定することもできる。
【０１７２】
図示されていないが、符号化ツリーユニットの左境界に基づいて、参照サンプルを置換するサンプルを決定することができる。例えば、参照サンプルが現在のブロックと同じ符号化ツリーユニットに含まれず、符号化ツリーユニットの左境界に隣接しない場合、前記参照サンプルを符号化ツリーユニットの左境界に隣接するサンプルに置き換えることができる。この場合、置換サンプルは、参照サンプルと同じｙ座標を有し得るか、または参照サンプルのｙ座標からオフセット値を加算または減算して得られたｙ座標を有し得る。
【０１７３】
その後、置換サンプルを含むブロックを候補ブロックに設定し、前記候補ブロックに基づいて現在のブロックのマージ候補を導出することができる。
【０１７４】
現在のブロックとは異なる画像に含まれる時間的隣接するブロックからマージ候補を導出することもできる。例えば、同等位置画像に含まれる同等位置ブロックからマージ候補を導出することができる。
【０１７５】
マージ候補の動き情報を候補ブロックの動き情報と同じように設定できる。例えば、候補ブロックの動きベクトル、参照画像インデックス、予測方向または双方向重み値インデックスのうちの少なくとも１つをマージ候補の動き情報に設定できる。
【０１７６】
マージ候補を含むマージ候補リストを生成できる（Ｓ１２０２）。前記マージ候補は、現在のブロックに隣接する隣接ブロックから導出された隣接マージ候補と、非隣接ブロックから導出された非隣接マージ候補に分類することができる。
【０１７７】
所定の順序応じて、マージ候補リスト内の複数のマージ候補のインデックスを割り当てることができる。例えば、隣接マージ候補に割り当てられるインデックスは、非隣接マージ候補に割り当てられるインデックスより小さい値を持つことができる。あるいは、図１３または図１５に示される各ブロックのインデックスに基づいて、各マージ候補にインデックスを割り当てることができる。
【０１７８】
マージ候補リストに複数のマージ候補が含まれる場合、前記複数のマージ候補のうちの少なくとも１つを選択することができる（Ｓ１２０３）。この場合、現在のブロックの動き情報が隣接マージ候補から導出されるか否かを示す情報が、ビットストリームを介してシグナリングできる。前記情報は１ビットのフラグであり得る。例えば、現在のブロックの動き情報が隣接マージ候補から導出されるか否かを示す構文要素ｉｓＡｄｊａｎｃｅｎｔＭｅｒｇｅＦｌａｇが、ビットストリームを介してシグナリングできる。構文要素ｉｓＡｄｊａｎｃｅｎｔＭｅｒｇｅＦｌａｇの値が１である場合、現在のブロックの動き情報は、隣接マージ候補に基づいて導出できる。一方、構文要素ｉｓＡｄｊａｎｃｅｎｔＭｅｒｇｅＦｌａｇの値が０である場合、現在のブロックの動き情報は、非隣接マージ候補に基づいて導出できる。
【０１７９】
表１は、構文要素ｉｓＡｄｊａｎｃｅｎｔＭｅｒｇｅＦｌａｇを含む構文テーブルを示す。
【表１】
2022501896.tif 000003
2022501896.tif 000004
【０１８０】
複数のマージ候補のいずれかを指定するための情報が、ビットストリームを介してシグナリングできる。例えば、マージ候補リストに含まれるマージ候補のいずれかのインデックスを示す情報が、ビットストリームを介してシグナリングできる。
【０１８１】
ｉｓＡｄｊａｃｅｎｔＭｅｒｇｅｆｌａｇが１である場合、隣接マージ候補のいずれかを決定するための構文要素ｍｅｒｇｅ＿ｉｄｘがシグナリングできる。構文要素ｍｅｒｇｅ＿ｉｄｘの最大値を、隣接マージ候補の数から１を差し引いた値に設定できる。
【０１８２】
ｉｓＡｄｊａｃｅｎｔＭｅｒｇｅｆｌａｇが０である場合、非隣接マージ候補のいずれかを決定するための構文要素ＮＡ＿ｍｅｒｇｅ＿ｉｄｘがシグナリングできる。構文要素ＮＡ＿ｍｅｒｇｅ＿ｉｄｘは、非隣接マージ候補のインデックスから隣接マージ候補の数を減算して得られた値を示す。復号化器は、ＮＡ＿ｍｅｒｇｅ＿ｉｄｘによって決定されたインデックスに隣接マージ候補の数を追加することにより、非隣接マージ候補を選択することができる。
【０１８３】
マージ候補リストに含まれるマージ候補の数が最大値未満である場合、インター領域動き情報テーブルに含まれるマージ候補をマージ候補リストに追加することができる。インター領域動き情報テーブルは、現在のブロックの前に符号化／復号化されたブロックに基づいて導出されたマージ候補を含み得る。
【０１８４】
インター領域動き情報テーブルは、現在の画像内のインター予測に基づいて符号化／復号化されたブロックから導出されたマージ候補を含む。例えば、インター領域動き情報テーブルに含まれるマージ候補の動き情報は、インター予測に基づいて符号化／復号化されたブロックの動き情報と同じであるように設定できる。ここで、動き情報は、動きベクトル、参照画像インデックス、予測方向または双方向重み値インデックスのうちの少なくとも１つを含み得る。
【０１８５】
説明の便宜のために、インター領域動き情報テーブルに含まれるマージ候補をインター領域マージ候補と呼ぶ。
【０１８６】
符号化器および復号化器で、インター領域動き情報テーブルに含めることができるマージ候補の最大数を事前定義することができる。例えば、インター領域動き情報テーブルに含めることができるマージ候補の最大数は、１、２、３、４、５、６、７、８またはそれ以上（例えば、１６など）であり得る。
【０１８７】
あるいは、インター領域動き情報テーブルのマージ候補の最大数を示す情報が、ビットストリームを介してシグナリングできる。前記情報は、シーケンスレベル、画像レベルまたはスライスレベルでシグナリングされることができる。
【０１８８】
あるいは、画像のサイズ、スライスのサイズまたは符号化ツリーユニットのサイズに従って、インター領域動き情報テーブルの最大マージ候補数を決定できる。
【０１８９】
インター領域動き情報テーブルは、画像、スライス、タイル、ブリック、符号化ツリーユニットまたは符号化ツリーユニットライン（行または列）の単位で初期化できる。例えば、スライスが初期化される場合、インター領域動き情報テーブルも初期化され、インター領域動き情報テーブルは、何のマージ候補も含まない可能性がある。
【０１９０】
あるいは、インター領域動き情報テーブルを初期化するか否かを示す情報が、ビットストリームを介してシグナリングできる。前記情報は、スライスレベル、タイルレベル、ブリックレベルまたはブロックレベルでシグナリングされることができる。前記情報がインター領域動き情報テーブルを初期化することを指示するまで、構成されたインター領域動き情報テーブルを使用することができる。
【０１９１】
あるいは、画像パラメータセットまたはスライスヘッダを介して与インター領域マージ候補に関する情報がシグナリングされることができる。スライスが初期化されても、インター領域動き情報テーブルは、初期インター領域マージ候補を含み得る。これにより、スライス内の最初の符号化／復号化されるブロックにも、インター領域マージ候補を使用することができる。
【０１９２】
符号化／復号化順序に従って、ブロックを符号化／復号化し、符号化／復号化順序に従って、インター予測に基づいて符号化／復号化された複数のブロックをインター領域マージ候補として順次設定することができる。
【０１９３】
図１８は、インター領域動き情報テーブルの更新例を説明するための図である。
【０１９４】
現在のブロックに対してインター予測を実行する場合（Ｓ１８０１）、現在のブロックに基づいてインター領域マージ候補を導出することができる（Ｓ１８０２）。インター領域マージ候補の動き情報は、現在のブロックの動き情報と同じように設定することができる。
【０１９５】
インター領域動き情報テーブルが空の状態である場合（Ｓ１８０３）、現在のブロックに基づいて導出されたインター領域マージ候補をインター領域動き情報テーブルに追加することができる（Ｓ１８０４）。
【０１９６】
インター領域動き情報テーブルが既に前記インター領域マージ候補を含んでいる場合（Ｓ１８０３）、現在のブロックの動き情報（または現在のブロックに基づいて導出されたインター領域マージ候補）に対して冗長検査を実行することができる（Ｓ１８０５）。冗長検査は、インター領域動き情報テーブルに記憶されたインター領域マージ候補の動き情報と、現在のブロックの動き情報が同じであるか否かを決定するために使用される。インター領域動き情報テーブルに記憶されたすべてのインター領域マージ候補をオブジェクトとして、冗長検査を実行することが。あるいは、インター領域動き情報テーブルに記憶されたインター領域マージ候補のうち、インデックスが閾値以上または閾値以下であるインター領域マージ候補をオブジェクトとして、冗長検査を実行することができる。
【０１９７】
現在のブロックの動き情報と同じ動き情報を持つインター領域マージ候補を含まない場合、現在のブロックに基づいて導出されたインター領域マージ候補をインター領域動き情報テーブルに追加することができる（Ｓ１８０８）。インター領域マージ候補の動き情報（例えば、動きベクトルおよび／または参照画像インデックスなど）が同じであるか否かに基づいて、インター領域マージ候補が同じであるか否かを決定できる。
【０１９８】
この場合、インター領域動き情報テーブルに既に最大数のインター領域マージ候補が記憶されている場合（Ｓ１８０６）、最も古いインター領域マージ候補を削除し（Ｓ１８０７）、現在のブロックに基づいて導出されたインター領域マージ候補をインター領域動き情報テーブルに追加することができる（Ｓ１８０８）。
【０１９９】
各インデックスに従って、複数のインター領域マージ候補を識別することができる。現在のブロックから導出されたインター領域マージ候補をインター領域動き情報テーブルに追加する場合、前記インター領域マージ候補に最も低いインデックス（０など）を割り当て、記憶されたインター領域マージ候補のインデックスを１ずつ増加させることができる。この場合、インター領域動き情報テーブルに既に最大数のインター領域マージ候補が記憶されている場合、インデックスが最大のインター領域マージ候補を除去する。
【０２００】
あるいは、現在のブロックから導出されたインター領域マージ候補をインター領域動き情報テーブルに追加する場合、前記インター領域マージ候補に最大のインデックスを割り当てることができる。例えば、インター領域動き情報テーブルに記憶されたインター領域マージ候補の数が最大値未満である場合、記憶されたインター領域マージ候補の数と同じ値のインデックスを前記インター領域マージ候補に割り当てることができる。あるいは、インター領域動き情報テーブルに記憶されたインター領域マージ候補の数が最大値に等しい場合、最大値から１を差し引いたインデックスを前記インター領域マージ候補に割り当てることができる。また、インデックスが最も小さいインター領域マージ候補を除去し、残りの記憶された複数のインター領域マージ候補のインデックスを１ずつ減少させる。
【０２０１】
図１９は、インター領域マージ候補テーブルの更新例を示す図である。
【０２０２】
現在のブロックから導出されたインター領域マージ候補をインター領域マージ候補テーブルに追加し、前記インター領域マージ候補に最大のインデックスを割り当てると仮定する。さらに、インター領域マージ候補テーブルには、既に最大数のインター領域マージ候補が記憶されていると仮定する。
【０２０３】
現在のブロックから導出されたインター領域マージ候補ＨｍｖｐＣａｎｄ［ｎ＋１］をインター領域マージ候補テーブルＨｍｖｐＣａｎｄＬｉｓｔに追加する場合、記憶されたインター領域マージ候補から、インデックスが最も小さいインター領域マージ候補ＨｍｖｐＣａｎｄ［０］を削除し、複数の剩余インター領域マージ候補のインデックスを１ずつ減少させることができる。また、現在のブロックから導出されたインター領域マージ候補ＨｍｖｐＣａｎｄ［ｎ＋１］のインデックスを最大値（図１９に示される例ではｎである）に設定できる。
【０２０４】
現在のブロックに基づいて導出されたインター領域マージ候補と同じであるインター領域マージ候補が記憶されている場合（Ｓ１８０５）、現在のブロックに基づいて導出されたインター領域マージ候補をインター領域動き情報テーブルに追加しないことができる（Ｓ１８０９）。
【０２０５】
あるいは、現在のブロックに基づいて導出されたインター領域マージ候補をインター領域動き情報テーブルに追加しつつ、前記インター領域マージ候補と同じ記憶されたインター領域マージ候補を削除することもできる。この場合、記憶されたインター領域マージ候補のインデックスが新たに更新されることと同じ効果が生じる。
【０２０６】
図２０は、記憶されたインター領域マージ候補のインデックスが更新される例を示す図である。
【０２０７】
現在のブロックに基づいて導出されたインター領域マージ候補ｍｖＣａｎｄと同じである記憶されたインター領域マージ候補のインデックスがｈＩｄｘである場合、前記記憶されたインター領域マージ候補を削除し、インデックスがｈＩｄｘを超えるインター領域マージ候補のインデックスを１ずつ減少させることができる。例えば、図２０に示される例では、ｍｖＣａｎｄと同じＨｍｖｐＣａｎｄ［２］がインター領域動き情報テーブルＨｖｍｐＣａｎｄＬｉｓｔから削除され、ＨｍｖｐＣａｎｄ［３］からＨｍｖｐＣａｎｄ［ｎ］までのインデックスが１ずつ減少することを示す。
【０２０８】
さらに、現在のブロックに基づいて導出されたインター領域マージ候補ｍｖＣａｎｄをインター領域動き情報テーブルの最後に追加することができる。
【０２０９】
あるいは、現在のブロックに基づいて導出されたインター領域マージ候補と同じである記憶されたインター領域マージ候補のインデックスを更新することができる。例えば、記憶されたインター領域マージ候補のインデックスを最小値または最大値に変更することができる。
【０２１０】
所定の領域に含まれるブロックの動き情報を、インター領域動き情報テーブルに追加できないものに設定できる。例えば、並列マージ領域に含まれるブロックの動き情報に基づいて導出されたインター領域マージ候補をインター領域動き情報テーブルに追加しないことができる。並列マージ領域に含まれるブロックの符号化／復号化順序が指定されていないため、他のブロックに対してインター予測を実行する場合、前記ブロックのいずれかの動き情報を使用することは不適切である。これにより、並列マージ領域に含まれるブロックに基づいて導出されたインター領域マージ候補をインター領域動き情報テーブルに追加しないことができる。
【０２１１】
サブブロックユニットを用いて動き補償予測を実行する場合、現在のブロックに含まれる複数のサブブロックのうちの代表的なサブブロックの動き情報に基づいてインター領域マージ候補を導出することができる。例えば、現在のブロックについて、サブブロックマージ候補が使用される場合、サブブロックのうちの代表的なサブブロックの動き情報に基づいてインター領域マージ候補を導出することができる。
【０２１２】
サブブロックの動きベクトルは、次の順序で導出されることができる。先ず、現在のブロックのマージ候補リストに含まれるマージ候補のいずれかを選択し、選択されたマージ候補の動きベクトルに基づいて初期シフトベクトル（ｓｈＶｅｃｔｏｒ）を導出することができる。さらに、符号化ブロック内の各サブブロックの参照サンプル（例えば、左上のサンプルまたは中間位置のサンプル）の位置（ｘＳｂ、ｙＳｂ）に初期シフトベクトルを加算して、参照サンプルの位置が（ｘＣｏｌＳｂ、ｙＣｏｌＳｂ）であるシフトサブブロックを導出することができる。下記式１は、シフトサブブロックを導出するための数式を示す。
【数１】
2022501896.tif 000005
【０２１３】
次に、（ｘＣｏｌＳｂ、ｙＣｏｌＳｂ）を含むサブブロックの中心位置に対応する同等位置ブロックの動きベクトルを、（ｘＳｂ、ｙＳｂ）を含むサブブロックの動きベクトルに設定する。
【０２１４】
代表的なサブブロックは、現在のブロックを含む左上のサンプルまたは中央サンプルを含むサブブロックを意味することができる。
【０２１５】
図２１は、代表サブブロックの位置を示す図である。
【０２１６】
図２１（ａ）は、現在のブロックの左上に位置するサブブロックが代表サブブロックに設定された例を示し、図２１（ｂ）は、現在のブロックの中央に位置するサブブロックが代表サブブロックに設定された例を示す。サブブロック単位で動き補償予測が実行された場合、現在のブロックの左上のサンプルを含むサブブロックまたは現在のブロックの中央サンプルを含むサブブロックの動きベクトルに基づいて、現在のブロックのインター領域マージ候補を導出することができる。
【０２１７】
現在のブロックのインター予測モードに基づいて、現在のブロックをインター領域マージ候補として使用するか否かを決定することもできる。例えば、アフィン動きモデルに基づいて符号化／復号化されたブロックをインター領域マージ候補として使用できないものに設定できる。これにより、現在のブロックがインター予測で符号化／復号化されていても、現在のブロックのインター予測モードがアフィン予測モードである場合、現在のブロックに基づいてインター領域動き情報テーブルを更新しない。
【０２１８】
あるいは、アフィン動きモデルに基づいて符号化／復号化されたブロックに含まれるサブブロックのうちの少なくとも１つのサブブロックベクトルに基づいて、インター領域マージ候補を導出することができる。例えば、現在のブロックの左上に位置するサブブロック、中央に位置するサブブロックまたは右上に位置するサブブロックを使用して、インター領域マージ候補を導出することができる。あるいは、複数のサブブロックのサブブロックベクトルの平均値をインター領域マージ候補の動きベクトルに設定できる。
【０２１９】
あるいは、アフィン動きモデルに基づいて符号化／復号化されたブロックのアフィンシードベクトルの平均値に基づいて、インター領域マージ候補を導出することができる。例えば、現在のブロックの第１アフィンシードベクトル、第２アフィンシードベクトル、または第３アフィンシードベクトルのうちの少なくとも１つの平均値をインター領域マージ候補の動きベクトルに設定できる。
【０２２０】
あるいは、インター予測モードごとにインター領域動き情報テーブルを構成することができる。例えば、イントラブロックコピーによって符号化／復号化されたブロックのためのインター領域動き情報テーブル、並進動きモデルに基づいて符号化／復号化されたブロックのためのインター領域動き情報テーブル、またはアフィン動きモデルに基づいて符号化／復号化されたブロックのためのインター領域動き情報テーブルのうちの少なくとも１つを定義することができる。現在のブロックのインター予測モードに従って、複数のインター領域動き情報テーブルのいずれかを選択することができる。
【０２２１】
図２２は、インター予測モードごとにインター領域動き情報テーブルを生成する例を示す図である。
【０２２２】
非アフィン動きモデルに基づいてブロックを符号化／復号化する場合、前記ブロックに基づいて導出されたインター領域マージ候補ｍｖＣａｎｄをインター領域非アフィン動き情報テーブルＨｍｖｐＣａｎｄＬｉｓｔに追加することができる。一方、アフィン動きモデルに基づいてブロックを符号化／復号化する場合、前記ブロックに基づいて導出されたインター領域マージ候補ｍｖＡｆＣａｎｄをインター領域アフィン動き情報テーブルＨｍｖｐＡｆＣａｎｄＬｉｓｔに追加することができる。
【０２２３】
ブロックのアフィンシードベクトルは、アフィン動きモデルに基づいて符号化／復号化されたブロックから導出されるインター領域マージ候補に記憶されることができる。これにより、前記インター領域マージ候補を、現在のブロックのアフィンシードベクトルを導出するためのマージ候補として使用することができる。
【０２２４】
説明したインター領域動き情報テーブルに加えて、別のインター領域動き情報テーブルを定義することもできる。上記説明したインター領域動き情報テーブル（以下、第１インター領域動き情報テーブルと呼ぶ）加えて、長期動き情報テーブル（以下、第２インター領域動き情報テーブルと呼ぶ）を定義することもできる。ここで、長期動き情報テーブルは長期マージ候補を含む。
【０２２５】
第１インター領域動き情報テーブルおよび第２インター領域動き情報テーブルがすべて空である場合、まず、インター領域マージ候補を第２インター領域動き情報テーブルに追加することができる。第２インター領域動き情報テーブルに使用可能なインター領域マージ候補の数が最大数に達した後にのみ、第１インター領域動き情報テーブルにインター領域マージ候補を追加することができる。
【０２２６】
あるいは、１つのインター領域マージ候補を、第２インター領域動き情報テーブルと第１インター領域動き情報テーブルの両方に追加することもできる。
【０２２７】
この場合、構成済みの第２インター領域動き情報テーブルをもはや更新しないことができる。あるいは、復号化領域がスライスの所定の比率以上である場合、第２インター領域動き情報テーブルを更新することができる。あるいは、Ｎ個の符号化ツリーユニットラインごとに、第２インター領域動き情報テーブルを更新することができる。
【０２２８】
一方、インター予測で符号化／復号化されたブロックが生成されるたびに、第１インター領域動き情報テーブルを更新することができる。ただし、第２インター領域動き情報テーブルに追加されるインター領域マージ候補は、第１インター領域動き情報テーブルを更新するために使用されないように設定することもできる。
【０２２９】
第１インター領域動き情報テーブルまたは第２インター領域動き情報テーブルのいずれかを選択するための情報が、ビットストリームを介してシグナリングできる。マージ候補リストに含まれるマージ候補の数が最大値未満である場合、前記情報で指示される、インター領域動き情報テーブルに含まれるマージ候補をマージ候補リストに追加することができる。
【０２３０】
あるいは、現在のブロックのサイズ、形状、インター予測モード、双方向予測するか否か、動きベクトルをリファインするか否か、または三角分割するか否かに基づいて、インター領域動き情報テーブルを選択することができる。
【０２３１】
あるいは、第１インター領域動き情報テーブルに含まれるインター領域マージ候補を追加しても、マージ候補リストに含まれるマージ候補の数が最大マージ数を超えない場合、第２インター領域動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加することができる。
【０２３２】
図２３は、長期動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加する例を示す図である。
【０２３３】
マージ候補リストに含まれるマージ候補の数が最大数未満である場合、第１インター領域動き情報テーブルＨｍｖｐＣａｎｄＬｉｓｔに含まれるインター領域マージ候補をマージ候補リストに追加することができる。第１インター領域動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加しても、マージ候補リストに含まれるマージ候補の数が最大数未満である場合、長期動き情報テーブルＨｍｖｐＬＴＣａｎｄＬｉｓｔに含まれるインター領域マージ候補をマージ候補リストに追加することができる。
【０２３４】
表２は、長期動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加するプロセスを示す。
【表２】
2022501896.tif 000006
【０２３５】
インター領域マージ候補が動き情報に加えて追加情報を含むように設定することができる。例えば、インター領域マージ候補のブロックのサイズ、形状、またはブロックの分割情報を追加保存することができる。現在のブロックのマージ候補リストを構成する場合、インター領域マージ候補のうち、サイズ、形状または分割情報が現在のブロックと同じまたは類似するインター領域マージ候補のみを使用するか、またはサイズ、形状または分割情報が現在のブロックと同じまたは類似するインター領域マージ候補を、マージ候補リストに優先的に追加することができる。
【０２３６】
あるいは、ブロックサイズ、形状、または分割情報ごとに、インター領域動き情報テーブルを生成することができる。複数のインター領域動き情報テーブルのうち、現在のブロックの形状、サイズまたは分割情報に対応するインター領域動き情報テーブルを使用して、現在のブロックのマージ候補リストを生成することができる。
【０２３７】
あるいは、動きベクトルの解像度ごとに、インター領域動き情報テーブルを生成することができる。例えば、現在のブロックの動きベクトルが１／４画素の解像度を持つ場合、現在のブロックから導出されたインター領域マージ候補をインター予測領域４分の１画素動き情報リストに追加することができる。現在のブロックの動きベクトルが１つの整数画素の解像度を持つ場合、現在のブロックから導出されたインター領域マージ候補をインター予測領域整数画素動き情報リストに追加することができる。現在のブロックの動きベクトルが４つの整数画素の解像度を持つ場合、現在のブロックから導出されたインター領域マージ候補をインター予測領域４の整数画素動き情報リストに追加することができる。符号化／復号化オブジェクトブロックの動きベクトル解像度に応じて、複数のインター動き情報リストのいずれかを選択することができる。
【０２３８】
マージオフセットベクトル符号化方法を現在のブロックに適用する場合、現在のブロックに基づいて導出されたインター領域マージ候補をインター領域動き情報テーブルＨｍｖｐＣａｎｄＬｉｓｔに追加する代わりに、インター予測領域マージオフセット動き情報テーブルＨｍｖｐＨＭＶＤＣａｎｄＬｉｓｔに追加することができる。この場合、前記インター領域マージ候補は、現在のブロックの動きベクトルオフセット情報を含み得る。ＨｍｖｐＨＭＶＤＣａｎｄＬｉｓｔは、マージオフセットベクトル符号化方法が適用されたブロックのオフセットを導出するために使用されることができる。
【０２３９】
現在のブロックのマージ候補リストに含まれるマージ候補の数が最大値でない場合、インター領域動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加することができる。上記の追加プロセスは、インデックスの昇順または降順で実行される。例えば、インデックスが最大のインター領域マージ候補からマージ候補リストに追加することができる。
【０２４０】
インター領域動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加する場合、インター領域マージ候補とマージ候補リストに記憶された複数のマージ候補との間の冗長検査を実行することができる。
【０２４１】
例えば、表３は、インター領域マージ候補をマージ候補リストに追加するプロセスを示す。
【表３】
2022501896.tif 000007
【０２４２】
インター領域動き情報テーブルに含まれるインター領域マージ候補の一部に対してのみ、冗長検査を実行することもできる。例えば、インデックスが閾値以上または閾値以下であるインター領域マージ候補に対してのみ、冗長検査を実行することができる。
【０２４３】
あるいは、マージ候補リストに記憶されたマージ候補の一部に対してのみ、冗長検査を実行することができる。例えば、インデックスが閾値以上または閾値以下であるマージ候補または特定の位置のブロックから導出されたマージ候補に対してのみ、冗長検査を実行することができる。ここで、特定の位置は、現在のブロックの左側隣接ブロック、上部隣接ブロック、右上隣接ブロックまたは左下隣接ブロックのうちの少なくとも１つを含み得る。
【０２４４】
図２４は、マージ候補の一部のみに対して冗長検査を実行する例を示す図である。
【０２４５】
インター領域マージ候補ＨｍｖｐＣａｎｄ［ｊ］をマージ候補リストに追加する場合、インター領域マージ候補について、インデックスが最大の２つのマージ候補ｍｅｒｇｅＣａｎｄＬｉｓｔ［ＮｕｍＭｅｒｇｅ−２］とｍｅｒｇｅＣａｎｄＬｉｓｔ［ＮｕｍＭｅｒｇｅ−１］との冗長検査を実行することができる。ここで、ＮｕｍＭｅｒｇｅは、使用可能な空間マージ候補と時間マージ候補の数を示す。
【０２４６】
第１インター領域マージ候補と同じマージ候補を見つかった場合、第２インター領域マージ候補に対して冗長検査を実行する場合、前記第１インター領域マージ候補と同じマージ候補との冗長検査を省略することができる。
【０２４７】
図２５は、特定のマージ候補について冗長検査を省略する例を示す図である。
【０２４８】
インデックスがｉであるインター領域マージ候補ＨｍｖｐＣａｎｄ［ｉ］をマージ候補リストに追加する場合、前記インター領域マージ候補とマージ候補リストに記憶されたマージ候補との間の冗長検査を実行することができる。この場合、インター領域マージ候補ＨｍｖｐＣａｎｄ［ｉ］と同じマージ候補ｍｅｒｇｅＣａｎｄＬｉｓｔ［ｊ］を見つかった場合、インター領域マージ候補ＨｍｖｐＣａｎｄ［ｉ］をマージ候補リストに追加せずに、インデックスがｉ−１であるインター領域マージ候補ＨｍｖｐＣａｎｄ［ｉ−１］とマージ候補との間の冗長検査を実行することができる。この場合、インター領域マージ候補ＨｍｖｐＣａｎｄ［ｉ−１］とマージ候補ｍｅｒｇｅＣａｎｄＬｉｓｔ［ｊ］との間の冗長検査を省略することができる。
【０２４９】
例えば、図２５に示される例では、ＨｍｖｐＣａｎｄ［ｉ］とｍｅｒｇｅＣａｎｄＬｉｓｔ［２］が同じであると判断された。これにより、ＨｍｖｐＣａｎｄ［ｉ］は、マージ候補リストに追加されず、ＨｍｖｐＣａｎｄ［ｉ−１］に対する冗長検査を実行することができる。この場合、ＨｖｍｐＣａｎｄ［ｉ−１］とｍｅｒｇｅＣａｎｄＬｉｓｔ［２］との間の冗長検査を省略することができる。
【０２５０】
現在のブロックマージ候補リストに含まれるマージ候補の数が最大値未満である場合、インター領域マージ候補に加えて、ペアワイズ（ｐａｉｒｗｉｓｅ）マージ候補またはゼロマージ候補のうちの少なくとも１つを含むこともできる。ペアワイズマージ候補とは、２つ以上のマージ候補の動きベクトルの平均値を動きベクトルとしたマージ候補を指し、ゼロマージ候補とは、動きベクトルが０であるマージ候補を指す。
【０２５１】
現在のブロックのマージ候補リストは、以下の順序でマージ候補を追加することができる。
【０２５２】
空間マージ候補−時間マージ候補−インター領域マージ候補−（インター予測アフィンマージ候補）−ペアワイズマージ候補−零マージ候補
空間マージ候補とは、隣接ブロックまたは非隣接ブロックのうちの少なくとも１つから導出されたマージ候補を指し、時間マージ候補とは、前の参照画像から導出されたマージ候補を指す。インター予測アフィンマージ候補とは、アフィン動きモデルで符号化／復号化されたブロックから導出されたインター領域マージ候補を指す。
【０２５３】
高レベル動きベクトル予測モードでもインター領域動き情報テーブルを使用することができる。例えば、現在のブロックの動きベクトル予測候補リストに含まれる動きベクトル予測候補の数が最大値未満である場合、インター領域動き情報テーブルに含まれるインター領域マージ候補を、現在のブロックの動きベクトル予測候補として設定することができる。具体的には、インター領域マージ候補の動きベクトルを動きベクトル予測候補として設定することができる。
【０２５４】
現在のブロックの動きベクトル予測候補リストに含まれる動きベクトル予測候補のいずれかが選択される場合、選択された候補を、現在のブロックの動きベクトル予測者として設定することができる。その後、現在のブロックの動きベクトル残差値を復号化した後、動きベクトル予測値と動きベクトル残差値を加算することによって、現在のブロックの動きベクトルを取得することができる。
【０２５５】
現在のブロックの動きベクトル予測候補リストは、以下の順序で構成できる。
【０２５６】
空間動きベクトル予測候補−時間動きベクトル予測候補−インター復号化領域マージ候補−（インター復号化領域アフィンマージ候補）−ゼロ動きベクトル予測候補
空間動きベクトル予測候補とは、隣接ブロックまたは非隣接ブロックのうちの少なくとも１つから導出された動きベクトル予測候補を指し、時間動きベクトル予測候補とは、前の参照画像から導出された動きベクトル予測候補を指す。インター予測アフィンマージ候補とは、アフィン動きモデルで符号化／復号化されたブロックから導出されたインター予測動きベクトル予測候補を指す。ゼロ動きベクトル予測候補とは、動きベクトルの値が０である候補を指す。
【０２５７】
符号化ブロックよりも大きいサイズのマージ処理領域を指定することができる。マージ処理領域に含まれる符号化ブロックは、順次符号化／復号化せずに、並列処理することができる。ここで、順次符号化／復号化されないのは、符号化／復号化順序を指定しないことを意味する。これにより、マージ処理領域に含まれるブロックの符号化／復号化プロセスを独立して処理することができる。あるいは、マージ処理領域に含まれるブロックは、マージ候補を共有することができる。ここで、マージ候補は、マージ処理領域に基づいて導出されることができる。
【０２５８】
上述した特徴に応じて、マージ処理領域を並列処理領域、マージ共有領域（ＳＭＲ：Ｓｈａｒｅｄ  Ｍｅｒｇｅ  Ｒｅｇｉｏｎ）、またはマージ推定領域（ＭＥＲ：Ｍｅｒｇｅ  Ｅｓｔｉｍａｔｉｏｎ  Ｒｅｇｉｏｎ）と呼ぶこともできる。
【０２５９】
現在のブロックのマージ候補は、符号化ブロックに基づいて導出されることができる。ただし、現在のブロックが現在のブロックよりも大きいサイズの並列マージ領域に含まれている場合、現在のブロックと同じ並列マージ領域に含まれる候補ブロックを、マージ候補として使用できないものに設定することができる。
【０２６０】
図２６は、現在のブロックと同じ並列マージ領域に含まれる候補ブロックがマージ候補として使用できないように設定される例を示す図である。
【０２６１】
図２６（ａ）に示される例では、ＣＵ５を符号化／復号化する場合、ＣＵ５に隣接する参照サンプルを含むブロックを候補ブロックとして設定することができる。この場合、ＣＵ５と同じ並列マージ領域に含まれる候補ブロックＸ３とＸ４を、ＣＵ５のマージ候補として使用できないものに設定することができる。一方、ＣＵ５と同じ並列マージ領域に含まれない候補ブロックＸ０、Ｘ１、およびＸ２を、マージ候補として使用できるものに設定することができる。
【０２６２】
図２６（ｂ）に示される例では、ＣＵ８を符号化／復号化する場合、ＣＵ８に隣接する参照サンプルを含むブロックを候補ブロックとして設定することができる。この場合、ＣＵ８と同じ並列マージ領域に含まれる候補ブロックＸ６、Ｘ７、およびＸ８を、マージ候補として使用できないものに設定することができる。一方、ＣＵ５と同じ並列マージ領域に含まれない候補ブロックＸ５とＸ９を、マージ候補として使用できるものに設定することができる。
【０２６３】
並列マージ領域は、正方形または非正方形であり得る。並列マージ領域を決定するための情報が、ビットストリームを介してシグナリングできる。前記情報は、並列マージ領域の形状を示す情報および並列マージ領域のサイズを示す情報のうちの少なくとも１つを含み得る。並列マージ領域が非正方形である場合、並列マージ領域のサイズを示す情報、並列マージ領域の幅および／または高さを示す情報、または並列マージ領域の幅と高さの比率を示す情報のうちの少なくとも１つが、ビットストリームを介してシグナリングできる。
【０２６４】
並列マージ領域のサイズは、ビットストリームを介してシグナリングされる情報、画像解像度、スライスのサイズまたはタイルのサイズのうちの少なくとも１つに基づいて決定されることができる。
【０２６５】
並列マージ領域に含まれるブロックに対して動き補償予測を実行する場合、動き補償予測が行われたブロックの動き情報に基づいて導出されたインター領域マージ候補をインター予測動き情報テーブルに追加することができる。
【０２６６】
ただし、並列マージ領域に含まれるブロックから導出されたインター領域マージ候補をインター領域動き情報テーブルに追加する場合、上記ブロックより実在の符号化／復号化が遅れて並列マージ領域内の他のブロックを符号化／復号化する場合、上記のブロックから導出されたインター領域マージ候補を使用する場合がある。つまり、並列マージ領域に含まれるブロックを符号化／復号化する際のブロック間の依存関係を排除する必要があるが、並列マージ領域に含まれる別のブロックの動き情報を使用して動き予測補償を実行する場合がある。このような問題を解決するために、並列マージ領域に含まれるブロックに対する符号化／復号化が完了しても、符号化／復号化が完了したブロックの動き情報をインター領域動き情報テーブルに追加しないことができる。
【０２６７】
あるいは、並列マージ領域に含まれるブロックに対して動き補償予測を実行する場合、前記ブロックから導出されたインター領域マージ候補を事前定義された順序でインター領域動き情報テーブルに追加することができる。ここで、事前定義された順序は、並列マージ領域または符号化ツリーユニット内の符号化ブロックの走査順序に基づいて決定できる。前記走査順序は、ラスター走査、水平走査、垂直走査、またはジグザグ走査のうちの少なくとも１つであり得る。あるいは、事前定義された順序は、各ブロックの動き情報または同じ動き情報を有するブロックの数に基づいて決定されることができる。
【０２６８】
あるいは、一方向の動き情報を含むインター領域マージ候補を、双方向動き情報を含むインター領域マージ候補よりも先にインター予測領域マージリストに追加することができる。これとは逆に、双方向動き情報を含むインター領域マージ候補を、一方向動き情報を含むインター領域マージ候補よりも先にインター領域マージ候補テーブルに追加することができる。
【０２６９】
あるいは、並列マージ領域または符号化ツリーユニット内の使用頻度が高い順または使用頻度の低い順に従って、インター領域マージ候補をインター領域動き情報テーブルに追加することができる。
【０２７０】
現在のブロックが並列マージ領域に含まれており、現在のブロックのマージ候補リストに含まれるマージ候補の数が最大数未満である場合、インター領域動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加することができる。この場合、現在のブロックと同じ並列マージ領域に含まれるブロックから導出されたインター領域マージ候補を、現在のブロックのマージ候補リストに追加しないように設定することができる。
【０２７１】
あるいは、現在のブロックが並列マージ領域に含まれる場合、インター領域動き情報テーブルに含まれるインター領域マージ候補を使用しないように設定することができる。つまり、現在のブロックのマージ候補リストに含まれるマージ候補の数が最大数未満であっても、インター領域動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加しないことができる。
【０２７２】
並列マージ領域または符号化ツリーユニットのインター領域動き情報テーブルを構成することができる。前記インター領域動き情報テーブルは、並列マージ領域に含まれるブロックの動き情報を一時的に記憶する役割を果たす。一般的なインター領域動き情報テーブルと、並列マージ領域または符号化ツリーユニットのためのインター領域動き情報テーブルを区別するために、並列マージ領域または符号化ツリーユニットのためのインター領域動き情報テーブルを一時動き情報テーブルと呼ぶ。さらに、一時動き情報テーブルに記憶されたインター領域マージ候補を一時マージ候補と呼ぶ。
【０２７３】
図２７は、一時動き情報テーブルを示す図である。
【０２７４】
符号化ツリーユニットまたは並列マージ領域のための一時動き情報テーブルを構成することができる。符号化ツリーユニットまたは並列マージ領域に含まれる現在のブロックの動き補償予測が行われた場合、前記ブロックの動き情報をインター領域動き情報テーブルＨｍｖｐＣａｎｄＬｉｓｔに追加しないことができる。代わりに、前記ブロックから導出された一時マージ候補を一時動き情報テーブルＨｍｖｐＭＥＲＣａｎｄＬｉｓｔに追加することができる。つまり、一時動き情報テーブルに追加された一時マージ候補をインター領域動き情報テーブルに追加しないことができる。これにより、インター領域動き情報テーブルは、現在のブロックを含む符号化ツリーユニットまたは並列マージ領域に含まれるブロックの動き情報に基づいて導出されたインター領域マージ候補を含まない可能性がある。
【０２７５】
一時動き情報テーブルが包含できるマージ候補の最大数を、インター領域動き情報テーブルが包含できるマージ候補の最大数と同じように設定することができる。あるいは、一時動き情報テーブルが包含できるマージ候補の最大数は、符号化ツリーユニットまたは並列マージ領域のサイズに従って決定できる。
【０２７６】
符号化ツリーユニットまたは並列マージ領域に含まれる現在のブロックが、前記符号化ツリーユニットまたは前記並列マージ領域の一時動き情報テーブルを使用しないように設定することができる。つまり、現在のブロックのマージ候補リストに含まれるマージ候補の数が最大値未満である場合、インター領域動き情報テーブルに含まれるインター領域マージ候補をマージ候補リストに追加し、一時動き情報テーブルに含まれる一時マージ候補をマージ候補リストに追加しないことができる。これにより、現在のブロックと同じ符号化ツリーユニットまたは並列マージ領域に含まれる他のブロックの動き情報を現在のブロックの動き補償予測に使用しないことができる。
【０２７７】
符号化ツリーユニットまたは並列マージ領域に含まれるすべてのブロックの符号化／復号化が完了すると、インター領域動き情報テーブルと一時動き情報テーブルをマージすることができる。
【０２７８】
図２８は、インター予測動き情報テーブルと一時動き情報テーブルをマージする例を示す図である。
【０２７９】
符号化ツリーユニットまたは並列マージ領域に含まれるすべてのブロックの符号化／復号化が完了すると、図２８に示されるように、一時動き情報テーブルに含まれる一時マージ候補をインター領域動き情報テーブルに更新できる。
【０２８０】
この場合、一時動き情報テーブルに含まれる一時マージ候補は、一時動き情報テーブルに挿入された順序（すなわち、インデックス値の昇順または降順）に従ってレーム間動き情報テーブルに追加されることができる。
【０２８１】
別の例として、事前定義された順序に従って、一時動き情報テーブルに含まれる一時マージ候補をインター領域動き情報テーブルに追加することができる。
【０２８２】
ここで、事前定義された順序は、並列マージ領域または符号化ツリーユニット内の符号化ブロックの走査順序に基づいて決定できる。前記走査順序は、ラスター走査、水平走査、垂直走査、またはジグザグ走査のうちの少なくとも１つであり得る。あるいは、事前定義された順序は、各ブロックの動き情報または同じ動き情報を有するブロックの数に基づいて決定されることができる。
【０２８３】
あるいは、一方向の動き情報を含む一時マージ候補を、双方向の動き情報の一時マージ候補よりも先にインター予測マージリストに追加することができる。一方、双方向の動き情報を含む一時マージ候補を、一方向の動き情報を含む一時マージ候補よりも先にインター領域マージ候補リストに追加することができる。
【０２８４】
あるいは、並列マージ領域または符号化ツリーユニット内の使用頻度が高い順または使用頻度の低い順に従って、一時マージ候補をインター領域動き情報テーブルに追加することができる。
【０２８５】
一時動き情報テーブルに含まれる一時マージ候補をインター領域動き情報テーブルに追加する場合、一時マージ候補に対して冗長検査を実行することができる。例えば、一時動き情報テーブルに含まれる一時マージ候補と同じインター領域マージ候補がインター領域動き情報テーブルに記憶されている場合、一時マージ候補をインター領域動き情報テーブルに追加しないことができる。この場合、インター領域動き情報テーブルに含まれるインター領域マージ候補の一部に対して冗長検査を実行することができる。例えば、インデックスが閾値より大きいか等しいインター領域マージ候補に対して冗長検査を実行することができる。例えば、一時マージ候補が、インデックスが事前定義された値より大きいか等しいインター領域マージ候補と同一である場合、一時マージ候補をインター領域動き情報テーブルに追加しないことができる。
【０２８６】
イントラ予測は、現在のブロック周辺の符号化／復号化が完了した復元サンプルを使用して、現在のブロックを予測することである。この場合、現在のブロックのイントラ予測は、インループフィルタが適用される前の復元サンプルを使用することができる。
【０２８７】
イントラ予測技術は、行列（Ｍａｔｒｉｘ）に基づくイントラ予測および周辺復元サンプルとの方向性を考慮した一般的なイントラ予測を含む。現在のブロックのイントラ予測技術を示す情報は、ビットストリームを介してシグナルリングできる。前記情報は１ビットのフラグであり得る。あるいは、現在のブロックの位置、サイズ、形状、または隣接ブロックのイントラ予測技術のうちの少なくとも１つに基づいて、現在のブロックのイントラ予測技術を決定できる。例えば、現在のブロックが画像境界をまたがって存在する場合、現在のブロックを、現在のブロックを行列に基づくイントラ予測が適用されないように設定することができる。
【０２８８】
行列に基づくイントラ予測は、符号化器と復号化器に記憶された行列と、現在のブロック周辺の復元サンプルとの間の行列積に基づいて、現在のブロックの予測ブロックを取得する方法である。記憶された複数の行列のいずれかを指定するための情報が、ビットストリームを介してシグナリングできる。復号化器は、前記情報および現在のブロックのサイズに基づいて、現在のブロックのイントラ予測に使用される行列を決定することができる。
【０２８９】
一般的なイントラ予測は、非方向性イントラ予測モードまたは方向性イントラ予測モードに基づいて、現在のブロックに関する予測ブロックを取得する方法である。以下、図面を参照して、一般的なイントラ予測に基づいてイントラ予測を実行するプロセスについて詳細に説明する。
【０２９０】
図２９は、本発明の実施例によるイントラ予測方法のフローチャートである。
【０２９１】
現在のブロックの参照サンプルラインを決定できる（Ｓ２９０１）。参照サンプルラインとは、現在のブロックの上部および／または左側からＫ番目離れたラインに含まれる参照サンプルの集合を指す。現在のブロックの周辺の符号化／復号化が完了した復元サンプルから参照サンプルを導出することができる。
【０２９２】
複数の参照サンプルライン内の現在のブロックの参照サンプルラインを識別するためのインデックス情報が、ビットストリームを介してシグナルリングできる。複数の参照サンプルラインは、現在のブロックの上部および／または左側の１行／列目、２行／列目、３行／列目または４行／列目のうちの少なくとも１つを含み得る。表４は、各参照サンプルラインのそれぞれに割り当てられるインデックスを示す。表４では、１行／列目、２行／列目、および４行／列目が参照サンプルラインの候補として使用されると想定する。
【表４】
2022501896.tif 000008
【０２９３】
現在のブロックの位置、サイズ、形状、または隣接ブロックの予測符号化モードのうちの少なくとも１つに基づいて、現在のブロックの参照サンプルラインを決定できる。例えば、現在のブロックが、画像、タイル、スライスまたは符号化ツリーユニットの境界に接する場合、第１参照サンプルラインを現在のブロックの参照サンプルラインとして決定できる。
【０２９４】
参照サンプルラインは、現在のブロックの上部に位置する上部参照サンプル、および現在のブロック左側に位置する左側参照サンプルを含み得る。現在のブロックの周辺の復元サンプルから、上部参照サンプルおよび左側参照サンプルを導出することができる。前記復元サンプルは、インループフィルタが適用される前の状態であることができる。
【０２９５】
図３０は、各参照サンプルラインに含まれる参照サンプルを示す図である。
【０２９６】
現在のブロックのイントラ予測モードに従って、参照サンプルラインに属する参照サンプルのうちの少なくとも１つを使用して、予測サンプルを取得することができる。
【０２９７】
次に、現在のブロックのイントラ予測モードを決定することができる（Ｓ２９０２）。現在のブロックのイントラ予測モードの場合、非方向性イントラ予測モードまたは方向性イントラ予測モードのうちの少なくとも１つを、現在のブロックのイントラ予測モードとして決定することができる。非方向性イントラ予測モードは、Ｐｌａｎａｒ（ｐｌａｎｅｒ）およびＤＣを含み、方向性イントラ予測モードは、左下下対角方向から右上対角方向に３３個または６５個のモードを含む。
【０２９８】
図３１は、イントラ予測モードを示す図である。
【０２９９】
図３１（ａ）は、３５個のイントラ予測モードを示し、図３１（ｂ）は、６７個のイントラ予測モードを示す。
【０３００】
図３１に示されるものよりも多いまたは少ない数のイントラ予測モードを定義することができる。
【０３０１】
現在のブロックに隣接する隣接ブロックのイントラ予測モードに基づいて、最も可能なモード（ＭＰＭ：Ｍｏｓｔ  Ｐｒｏｂａｂｌｅ  Ｍｏｄｅ）を設定することができる。ここで、隣接ブロックは、現在のブロックの左側に隣接する左側隣接ブロック、および現在のブロックの上部に隣接する上部隣接ブロックを含み得る。現在のブロックの左上のサンプルの座標が（０、０）である場合、左側隣接ブロックは、（−１、０）、（−１、Ｈ−１）または（−１、（Ｈ−１）／２）位置のサンプルを含み得る。ここで、Ｈは現在のブロックの高さを表す。上部隣接ブロックは、（０、−１）、（Ｗ−１、−１）または（（Ｗ−１）／２、−１）位置のサンプルを含み得る。ここで、Ｗは現在のブロックの幅を表す。
【０３０２】
一般的なイントラ予測で隣接ブロックを符号化する場合、隣接ブロックのイントラ予測モードに基づいてＭＰＭを導出することができる。具体的には、左側隣接ブロックのイントラ予測モードを変数ｃａｎｄＩｎｔｒａＰｒｅｄＭｏｄｅＡに設定し、上部隣接ブロックのイントラ予測モードを変数ｃａｎｄＩｎｔｒａＰｒｅｄＭｏｄｅＢに設定することができる。
【０３０３】
この場合、隣接ブロックが使用不可能な場合（例えば、隣接ブロックがまだ符号化／復号化されていない場合、または隣接ブロックの位置が画像境界から離れている場合）、隣接ブロックが行列に基づいたイントラ予測で符号化され、かつ隣接ブロックがインター予測で符号化された場合または隣接ブロックが現在のブロックとは異なる符号化ツリーユニットに含まれる場合、隣接ブロックのイントラ予測モードに基づいて導出された変数ｃａｎｄＩｎｔｒａＰｒｅｄＭｏｄｅＸ（ここで、ＸはＡまたはＢである）をデフォルトモードとして設定することができる。ここで、デフォルトモードは、Ｐｌａｎａｒモード、ＤＣモード、垂直方向モードまたは水平方向モードのうちの少なくとも１を含み得る。
【０３０４】
あるいは、行列に基づくイントラ予測で隣接ブロックを符号化する場合、行列のいずれかを指定するためのインデックス値に対応するイントラ予測モードをｃａｎｄＩｎｔｒａＰｒｅｄＭｏｄｅＸに設定することができる。そのために、行列を指定するためのインデックス値とイントラ予測モードのマッピング関係を示すルックアップテーブルを、事前に符号化器および復号化器に記憶することができる。
【０３０５】
変数ｃａｎｄＩｎｔｒａＰｒｅｄＭｏｄｅＡおよび変数ｃａｎｄＩｎｔｒａＰｒｅｄＭｏｄｅＢに基づいてＭＰＭを導出することができる。符号化器および復号化器でＭＰＭリストに含まれるＭＰＭの数を事前定義することができる。例えば、ＭＰＭの数は、３、４、５または６であり得る。あるいは、ＭＰＭの数を示す情報が、ビットストリームを介してシグナリングできる。あるいは、隣接ブロックの予測符号化モード、現在のブロックのサイズまたは形状のうちの少なくとも１つに基づいて、ＭＰＭの数を決定することができる。
【０３０６】
後述される実施例では、ＭＰＭの数が３であると仮定し、この３つのＭＰＭをＭＰＭ［０］、ＭＰＭ［１］およびＭＰＭ［２］と呼ぶ。ＭＰＭの数が３を超える場合、ＭＰＭは、後述される実施例で説明する３つのＭＰＭを含み得る。
【０３０７】
ｃａｎｄＩｎｔｒａＰｒｅｄＡとｃａｎｄＩｎｔｒａＰｒｅｄＢが等しく、ｃａｎｄＩｎｔｒａＰｒｅｄＡがＰｌａｎａｒモードまたはＤＣモードである場合、ＭＰＭ［０］とＭＰＭ［１］をそれぞれＰｌａｎａｒモードとＤＣモードに設定することができる。ＭＰＭ［２］を、垂直イントラ予測モード、水平イントラ予測モードまたは対角方向イントラ予測モードに設置することができる。対角方向イントラ予測モードは、左下対角方向のイントラ予測モード、左上方向イントラ予測モードまたは右上方向イントラ予測モードであり得る。
【０３０８】
ｃａｎｄＩｎｔｒａＰｒｅｄＡとｃａｎｄＩｎｔｒａＰｒｅｄＢが等しく、ｃａｎｄＩｎｔｒａＰｒｅｄＡが方向性イントラ予測モードである場合、ＭＰＭ［０］はｃａｎｄＩｎｔｒａＰｒｅｄＡと同じように設定することができる。ＭＰＭ［１］およびＭＰＭ［２］を、ｃａｎｄＩｎｔｒａＰｒｅｄＡと同様のイントラ予測モードとして設定することができる。ｃａｎｄＩｎｔｒａＰｒｅｄＡと同様のイントラ予測モードは、ｃａｎｄＩｎｔｒａＰｒｅｄＡのインデックス差値が±１または±２であるイントラ予測モードであり得る。モジュロ演算（％）とオフセット量を使用して、ｃａｎｄＩｎｔｒａＰｒｅｄＡと同様のイントラ予測モードを導出することができる。
【０３０９】
ｃａｎｄＩｎｔｒａＰｒｅｄＡとｃａｎｄＩｎｔｒａＰｒｅｄＢが異なる場合、ＭＰＭ［０］をｃａｎｄＩｎｔｒａＰｒｅｄＡと同じように設定し、ＭＰＭ［１］をｃａｎｄＩｎｔｒａＰｒｅｄＢと同じように設定することができる。この場合、ｃａｎｄＩｎｔｒａＰｒｅｄＡとｃａｎｄＩｎｔｒａＰｒｅｄＢの両方が非方向性イントラ予測モードである場合、ＭＰＭ［２］を垂直イントラ予測モード、水平イントラ予測モードまたは対角方向イントラ予測モードに設定することができる。あるいは、ｃａｎｄＩｎｔｒａＰｒｅｄＡおよびｃａｎｄＩｎｔｒａＰｒｅｄＢのうちの少なくとも１つが方向性イントラ予測モードである場合、ＭＰＭ［２］を、Ｐｌａｎａｒ、ＤＣ、またはｃａｎｄＩｎｔｒａＰｒｅｄＡまたはｃａｎｄＩｎｔｒａＰｒｅｄＢのうちのより大きな値を持つものにオフセット値を加算または減算することによって導出されたイントラ予測モードに設定することができる。ここで、オフセット値は１または２であり得る。
【０３１０】
複数のＭＰＭを含むＭＰＭリストを生成でき、現在のブロックのイントラ予測モードと同じＭＰＭがＭＰＭリストに含まれているか否かを示す情報がビットストリームを介してシグナルリングすることができる。前記情報は１ビットフラグであり、ＭＰＭフラグを呼ぶことができる。ＭＰＭフラグが、現在のブロックと同じＭＰＭがＭＰＭリストに含まれていることを示す場合、ＭＰＭのいずれかを識別するためのインデックス情報がビットストリームを介してシグナルリングすることができる。前記インデックス情報によって指定されたＭＰＭを、現在のブロックのイントラ予測モードに設定することができる。ＭＰＭフラグが、現在のブロックと同じＭＰＭがＭＰＭリストに含まれていないことを示す場合、ＭＰＭを除く残りのイントラ予測モードのいずれかを指示する残差モード情報が、ビットストリームを介してシグナルリングすることができる。残差モード情報は、ＭＰＭを除く残りのイントラ予測モードにインデックスを再び割り当てる場合、現在のブロックのイントラ予測モードに対応するインデックス値を示す。復号化器は、ＭＰＭを昇順にソートしかつ残差モード情報をＭＰＭと比較して、現在のブロックのイントラ予測モードを決定することができる。例えば、残差モード情報がＭＰＭより小さいか等しい場合、残差モード情報に１を加算して、現在のブロックのイントラ予測モードを導出することができる。
【０３１１】
デフォルトモードをＭＰＭに設定する代わりに、現在のブロックのイントラ予測モードがデフォルトモードであるか否かを示す情報を、ビットストリームを介してシグナルリングすることができる。前記情報は１ビットフラグであり、前記フラグをデフォルトモードフラグと呼ぶことができる。ＭＰＭフラグが現在のブロックと同じＭＰＭがＭＰＭリストに含まれていることを示す場合にのみ、デフォルトモードフラグをシグナルリングすることができる。前述したように、デフォルトモードは、Ｐｌａｎａｒ、ＤＣ、垂直方向モードまたは水平方向モードのうちの少なくとも１つを含み得る。例えば、Ｐｌａｎａｒがデフォルトモードに設定された場合、デフォルトモードフラグは、現在のブロックのイントラ予測モードがＰｌａｎａｒであるか否かを指示することができる。デフォルトモードフラグが、現在のブロックのイントラ予測モードがデフォルトモードでないことを指示する場合、インデックス情報によって指示されるＭＰＭのいずれかを、現在のブロックのイントラ予測モードとして設定することができる。
【０３１２】
複数のイントラ予測モードをデフォルトモードに設定する場合、デフォルトモードのいずれかを指示するインデックス情報がシグナルリングすることができる。現在のブロックのイントラ予測モードを、前記インデックス情報によって示されるデフォルトモードとして設定することができる。
【０３１３】
現在のブロックの参照サンプルラインのインデックスがでない場合、デフォルトモードを使用できないように設定することができる。これにより、参照サンプルラインのインデックスが０でない場合、デフォルトモードフラグをシグナルリングせずに、前記デフォルトモードフラグの値を事前定義された値（すなわち、ｆａｌｓｅ）に設定することができる。
【０３１４】
現在のブロックのイントラ予測モードが決定された場合、決定されたイントラ予測モードに基づいて、現在のブロックの予測サンプルを取得することができる（Ｓ２９０３）。
【０３１５】
ＤＣモードが選択された場合、参照サンプルの平均値に基づいて、現在のブロックに関する予測サンプルを生成することができる。具体的には、参照サンプルの平均値に基づいて、予測ブロック内全体のサンプルの値を生成することができる。現在のブロックの上部に位置する上部参照サンプルおよび現在のブロックの左側に位置する左側参照サンプルのうちの少なくとも１つを使用して、平均値を導出することができる。
【０３１６】
現在のブロックの形状に従って、平均値を導出するために使用される参照サンプルの数または範囲が異なる場合がある。例えば、現在のブロックが幅が高さより大きい非正方形ブロックである場合、上部参照サンプルのみを使用して、平均値を計算することができる。一方、現在のブロックが幅が高さより小さい非正方形ブロックである場合、左側参照サンプルのみを使用して、平均値を計算することができる。つまり、現在のブロックの幅と高さが異なる場合、長さがより長い方に隣接する参照サンプルのみを使用して、平均値を計算することができる。あるいは、現在のブロックの幅と高さの比率に基づいて、上部参照サンプルのみを使用して平均値を計算するか否か、または左側参照サンプルのみを使用して平均値を計算するか否かを決定することができる。
【０３１７】
Ｐｌａｎａｒモードを選択した場合、水平方向予測サンプルと垂直方向予測サンプルを使用して、予測サンプルを取得することができる。ここで、予測サンプルと同じ水平線上に位置する左側参照サンプルと右側参照サンプルに基づいて、水平方向予測サンプルを取得し、予測サンプルと同じ垂直線上に位置する上部参照サンプルと下部参照サンプルを使用して、垂直方向予測サンプルを取得する。ここで、現在のブロックの右上隅に隣接する参照サンプルをコピーして、右側参照サンプルを生成でき、現在のブロックの左下隅に隣接する参照サンプルをコピーして、下部参照サンプルを生成できる。左側参照サンプルと右側参照サンプルの加重合演算に基づいて、水平方向予測サンプルを取得でき、上部参照サンプルと下部参照サンプルの加重合演算に基づいて、垂直方向予測サンプルを取得できる。この場合、予測サンプルの位置に基づいて、各参照サンプルに付与される重み値を決定できる。水平方向予測サンプルと垂直方向予測サンプルの平均演算または加重合演算に基づいて、予測サンプルを取得することができる。加重合演算を実行する場合、予測サンプルの位置に基づいて、水平方向予測サンプルと垂直方向予測サンプルに付与される重み値を決定することができる。
【０３１８】
方向性予測モードが選択された場合、選択された方向性予測モードの予測方向（または予測角度）を表すパラメータを決定することができる。下記表５は、各イントラ予測モードのイントラ予測パラメータｉｎｔｒａＰｒｅｄＡｎｇを示す。
【表５】
2022501896.tif 000009
【０３１９】
表５は、３５個のイントラ予測モードが定義されたときに、インデックスが２〜３４のいずれかである各イントラ予測モードのイントラ方向パラメータを示す。３３個よりも多くの方向性イントラ予測モードが定義された場合、表５をより細分化して、各方向性イントラ予測モードのイントラ方向パラメータを設定することができる。
【０３２０】
現在のブロックの上部参照サンプルおよび左側参照サンプルを一列に配列した後、イントラ方向パラメータの値に基づいて、予測サンプルを取得することができる。この場合、イントラ方向パラメータの値が負の数である場合、左側参照サンプルと上部参照サンプルを一列に配列することができる。
【０３２１】
図３２および図３３は、参照サンプルを一列に配列する一次元配列の例を示す図である。
【０３２２】
図３２は、参照サンプルを垂直方向に配列する垂直方向一次元配列の例を示し、図３３は、参照サンプルを水平方向に配列する水平方向一次元配列の例を示す。３５個のイントラ予測モードが定義された場合を想定して、図３２および図３３の実施例を説明する。
【０３２３】
イントラ予測モードインデックスが１１〜１８のいずれかである場合、上部参照サンプルを反時計回りに回転した水平方向一次元配列を適用し、レーム内予測モードインデックスが１９〜２５のいずれかである場合、左側参照サンプルを時計回りに回転した垂直方向一次元配列を適用することができる。参照サンプルを一列に配列する場合、イントラ予測モードの角度を考慮することができる。
【０３２４】
イントラ方向パラメータに基づいて、参照サンプル決定パラメータを決定することができる。参照サンプル決定パラメータは、参照サンプルを指定するための参照サンプルインデックスおよび参照サンプルに適用される重み値を決定するための重み値パラメータを含み得る。
【０３２５】
参照サンプルインデックスｉＩｄｘと重みパラメータｉｆａｃｔは、それぞれ下記の式２および式３を介して取得することができる。
【数２】
2022501896.tif 000010
【数３】
2022501896.tif 000011
【０３２６】
式２および式３において、Ｐａｎｇはイントラ方向パラメータを表す。参照サンプルインデックスｉＩｄｘによって指定された参照サンプルは、整数画素（Ｉｎｔｅｇｅｒ  ｐｅｌ）に該当する。
【０３２７】
予測サンプルを導出する宇ために、少なくとも１つ以上の参照サンプルを指定することができる。具体的には、予測モードの傾きを考慮して、予測サンプルを導出するために使用される参照サンプルの位置を指定することができる。例えば、参照サンプルインデックスｉＩｄｘを使用して、予測サンプルを導出するために使用される参照サンプルを指定することができる。
【０３２８】
この場合、イントラ予測モードの傾きが１つの参照サンプルによって表されない場合、複数の参照サンプルを補間して予測サンプルを生成することができる。例えば、イントラ予測モードの傾きが、予測サンプルと第１参照サンプルとの間の傾きと、予測サンプルと第２参照サンプルとの間の傾きの間の値である場合、第１参照サンプルと第２参照サンプルを補間して予測サンプルを取得することができる。つまり、イントラ予測角度に従う角線（Ａｎｇｕｌａｒ  Ｌｉｎｅ）が整数画素に位置する参照サンプルを通過しない場合、前記角線が通過する位置の左右または上下に隣接する参照サンプルを補間して、予測サンプルを取得することができる。
【０３２９】
下記式４は、参照サンプルに基づいて予測サンプルを取得する例を示す。
【数４】
2022501896.tif 000012
【０３３０】
式４において、Ｐは予測サンプルを表し、Ｒｅｆ＿１Ｄは、一次元配列された参照サンプルのいずれかを表す。この場合、予測サンプルの位置（ｘ、ｙ）と参照サンプルインデックスｉＩｄｘに基づいて参照サンプルの位置を決定することができる。
【０３３１】
イントラ予測モードの傾きが１つの参照サンプルで表現可能な場合、重み値パラメータｉｆａｃｔを０に設定することができる。したがって、式４は、下記式５のように簡略化できる。
【数５】
2022501896.tif 000013
【０３３２】
複数のイントラ予測モードに基づいて、現在のブロックに対してイントラ予測を実行することができる。例えば、予測サンプルごとにイントラ予測モードを導出し、各予測サンプルに割り当てられたイントラ予測モードに基づいて、予測サンプルを導出することができる。
【０３３３】
あるいは、領域ごとにイントラ予測モードを導出し、各領域に割り当てられたイントラ予測モードに基づいて、各領域に対してイントラ予測を実行することができる。ここで、前記領域は、少なくとも１つのサンプルを含み得る。現在のブロックのサイズ、形状、またはイントラ予測モードのうちの少なくとも１つに基づいて、前記領域のサイズまたは形状のうちの少なくとも１つを適応的に決定することができる。あるいは、符号化器と復号化器では、現在のブロックのサイズや形状に関係なく、領域のサイズまたは形状のうちの少なくとも１つを事前定義することができる。
【０３３４】
あるいは、複数のイントラ予測のそれぞれに基づいてイントラ予測を実行し、複数回のイントラ予測を介して取得された複数の予測サンプルの平均演算または加重合演算に基づいて、最終的な予測サンプルを導出することができる。例えば、第１イントラ予測モードに基づいてイントラ予測を実行して、第１予測サンプルを取得し、第２イントラ予測モードに基づいてイントラ予測を実行して、第２予測サンプルを取得することができる。その後、第１予測サンプルと第２予測サンプルとの間の平均演算または加重合演算に基づいて、最終的な予測サンプルを取得することができる。この場合、第１イントラ予測モードが非方向性／方向性予測モードであるか否か、第２イントラ予測モードが非方向性／方向性予測モードであるか否か、または隣接ブロックのイントラ予測モードのうちの少なくとも１つを考慮して、第１予測サンプルと第２予測サンプルのそれぞれに割り当てられる重み値を決定することができる。
【０３３５】
複数のイントラ予測モードは、非方向性イントラ予測モードと方向性予測モードの組み合わせ、方向性予測モードの組み合わせ、または非方向性予測モードの組み合わせであり得る。
【０３３６】
図３４は、方向性イントラ予測モードとｘ軸に平行な直線との間に形成される角度を示す図である。
【０３３７】
図３４に示されるように、方向性予測モードは、左下対角方向から右上対角方向の間に存在することができる。ｘ軸と方向性予測モードが形成する角度で説明すれば、方向性予測モードは、４５度（左下対角方向）から、−１３５度（右上対角方向）の間に存在することができる。
【０３３８】
現在のブロックが非正方形の形である場合、現在のブロックのイントラ予測モードに基づいて、イントラ予測角度に従う角線上に位置する参照サンプルのうち、予測サンプルに近い参照サンプルではなく、参照サンプルからより離れた位置にある参照サンプルを使用して、予測サンプルを導出する。
【０３３９】
図３５は、現在のブロックが非正方形である場合に予測サンプルを取得する例を示す図である。
【０３４０】
例えば、図３５（ａ）に示されるように、現在のブロックが幅が高さより大きい非正方形であり、現在のブロックのイントラ予測モードが、０度から４５度の間の角度を有する方向性イントラ予測モードであると仮定する。この場合、現在のブロックの右側の列付近の予測サンプルＡを導出する場合、前記角度に従う角度モード上に位置する参照サンプルのうち、前記予測サンプルに近い上部参照サンプルＴの代わりに、前記予測サンプルから遠く離れた左側参照サンプルＬを使用する場合が発生する可能性がある。
【０３４１】
別の例として、図３５（ｂ）に示されるように、現在のブロックが、高さが幅より大きい非正方形であり、現在のブロックのイントラ予測モードが、−９０度から−１３５度の間の角度を有する方向性イントラ予測モードであると仮定する。この場合、現在のブロックの下段付近の予測サンプルＡを導出する場合、前記角度に従う角度モード上に位置する参照サンプルのうち、前記予測サンプルに近い左側参照サンプルＬの代わりに、前記予測サンプルから遠く離れた上部参照サンプルＴを使用する場合が発生する可能性がある。
【０３４２】
上記の問題を解決するためには、現在のブロックが非正方形である場合、現在のブロックのイントラ予測モードを逆方向のイントラ予測モードに置き換えることができる。これにより、非正方形ブロックについては、図３１に示される方向性予測モードよりも大きいまたは小さい角度を有する方向性予測モードを使用することができる。このような方向性イントラ予測モードを広角イントラ予測モードと定義することができる。広角イントラ予測モードは、４５度から−１３５度範囲に属さない方向性イントラ予測モードを示す。
【０３４３】
図３６は、広角イントラ予測モードを示す図である。
【０３４４】
図３６に示される例では、インデックスが−１〜−１４であるイントラ予測モードおよびインデックスが６７〜８０であるイントラ予測モードが広角イントラ予測モードを示す。
【０３４５】
図３６では、４５度より大きい角度を有する１４個の広角イントラ予測モード（−１から−１４）および−１３５度より小さい角度を有する１４個の広角イントラ予測モード（６７から８０）が図示されたが、これよりも大きいまたは少ない数の広角イントラ予測モードを定義することができる。
【０３４６】
広角イントラ予測モードを使用する場合、上部参照サンプルの長さを２Ｗ＋１に設定し、左側参照サンプルの長さを２Ｈ＋１に設定することができる。
【０３４７】
広角イントラ予測モードを使用する場合、参照サンプルＴを使用して、図３５（ａ）に示されるサンプルＡを予測し、参照サンプルＬを使用して、図３５（ｂ）に示されるサンプルＡを予測することができる。
【０３４８】
既存のイントラ予測モードと、Ｎ個の広角イントラ予測モードを加え、合計６７＋Ｎ個のイントラ予測モードを使用することができる。例えば、表６は、２０個の広角イントラ予測モードを定義した場合、イントラ予測モードのイントラ方向パラメータを示す。
【表６】
2022501896.tif 000014
【０３４９】
イントラ方向パラメータは、現在のブロックのサイズ、形状、または参照サンプルラインのうちの少なくとも１つに基づいて異なるように設定することができる。例えば、現在のブロックが正方形である場合と、現在のブロックが非正方形である場合において、特定のイントラ予測モードのイントラ方向パラメータが異なることができる。例えば、イントラ予測モード１５のイントラ方向パラメータｉｎｔｒａＰｒｅｄＡｎｇｌｅは、現在のブロックが非正方形である場合よりも、現在のブロックが正方形である場合の方が、より大きな値を有することができる。
【０３５０】
あるいは、イントラ予測モード７５のイントラ方向パラメータｉｎｔｒａＰｒｅｄＡｎｇｌｅは、現在のブロックの参照サンプルラインのインデックスが０である場合よりも、現在のブロックの参照サンプルラインのインデックスが１以上である場合の方が、より大きな値を有することができる。
【０３５１】
現在のブロックが非正方形であり、ステップＳ２９０２で取得された現在のブロックのイントラ予測モードが変換範囲に属する場合、現在のブロックのイントラ予測モードを広角イントラ予測モードに変換することができる。現在のブロックのサイズ、形状、または比率のうちの少なくとも１つに基づいて、前記変換範囲を決定することができる。ここで、前記比率は、現在のブロックの幅と高さの間の比率を示すことができる。
【０３５２】
現在のブロックが幅が高さより大きい非正方形である場合、変換範囲を、右上対角方向のイントラ予測モードインデックス（例えば、６６）から（右上対角方向であるイントラ予測モードのインデックス−Ｎ）に設定することができる。ここで、Ｎは現在のブロックの比率に基づいて決定できる。現在のブロックのイントラ予測モードが変換範囲に属する場合、前記イントラ予測モードを広角イントラ予測モードに変換することができる。前記イントラ予測モードから事前定義された値を差し引くことによって前記変換を実行でき、前記事前定義された値は、広角イントラ予測モードを除くイントラ予測モードの総数（例えば、６７）であり得る。
【０３５３】
前記実施例に基づき、６６番から５３番の間のイントラ予測モードを、それぞれ−１番から−１４番の間の広角イントラ予測モードに変換することができる。
【０３５４】
現在のブロックが、高さが幅より大きい非正方形である場合、変換範囲を、左下対角方向のイントラ予測モードインデックス（例えば、２）から（左下対角方向のイントラ予測モードのインデックス＋Ｍ）に設定することができる。ここで、Ｍは、現在のブロックの比率に基づいて決定できる。現在のブロックのイントラ予測モードが変換範囲に属する場合、前記イントラ予測モードを広角イントラ予測モードに変換することができる。前記イントラ予測モードに事前定義された値を追加することによって前記変換を実行でき、事前定義された値は、広角イントラ予測モードを除く方向性イントラ予測モードの総数（例えば、６５）であり得る。
【０３５５】
前記実施例に基づき、２番から１５番の間のイントラ予測モードを、それぞれ６７番から８０番の間の広角イントラ予測モードに変換することができる。
【０３５６】
以下、変換範囲に属するイントラ予測モードを広角イントラ代替予測モードと呼ぶ。
【０３５７】
変換範囲は、現在のブロックの比率に基づいて決定できる。例えば、表７および表８はそれぞれ、広角イントラ予測モードを除く３５個のイントラ予測モードが定義された場合と６７個のイントラ予測モードが定義された場合の変換範囲を示す。
【表７】
2022501896.tif 000015
【表８】
2022501896.tif 000016
【０３５８】
表７および表８に示されるように、現在のブロックの比率に応じて、変換範囲に含まれる広角イントラ代替予測モードの数が異なることができる。
【０３５９】
既存のイントラ予測モードに加えて、広角イントラ予測モードを使用することにより、広角イントラ予測モードを符号化するのに必要なリソースが増加するため、符号化効率が低下する可能性がある。これにより、広角イントラ予測モードをそのまま符号化する代わりに、広角イントラ予測モードに関する代替イントラ予測モードを符号化することにより、符号化効率を向上させることができる。
【０３６０】
例えば、６７番の広角イントラ予測モードを使用して現在のブロックを符号化する場合、６７番の広角代替イントラ予測モードである２番を、現在のブロックのイントラ予測モードで符号化することができる。さらに、−１番の広角イントラ予測モードを使用して、現在のブロックを符号化する場合、−１番の広角代替イントラ予測モードである６６番を、現在のブロックのイントラ予測モードで符号化することができる。
【０３６１】
復号化器は、現在のブロックのイントラ予測モードを復号化し、復号化されたイントラ予測モードが変換範囲に含まれるか否かを決定することができる。復号化されたイントラ予測モードが広角代替イントラ予測モードである場合、イントラ予測モードを広角イントラ予測モードに変換することができる。
【０３６２】
あるいは、広角イントラ予測モードで現在のブロックを符号化する場合、広角イントラ予測モードを直接符号化することもできる。
【０３６３】
イントラ予測モードの符号化は、前記ＭＰＭリストに基づいて実現されることができる。具体的には、以広角イントラ予測モードで隣接ブロックを符号化する場合、広角イントラ予測モードに対応する広角代替イントラ予測モードに基づいてＭＰＭを設定することができる。例えば、広角イントラ予測モードで隣接ブロックを符号化する場合、変数ｃａｎｄＩｎｔｒａＰｒｅｄＸ（ＸはＡまたはＢである）を広角代替イントラ予測モードとして設定することができる。
【０３６４】
イントラ予測を実行した結果として予測ブロックが生成されると、予測ブロックに含まれる各予測サンプルの位置に基づき予測サンプルを更新することができる。上記のような更新方法をサンプル位置に基づくイントラ加重予測方法（または位置依存の予測の組み合わせ（ＰＤＰＣ：Ｐｏｓｉｔｉｏｎ  Ｄｅｐｅｎｄｅｎｔ  Ｐｒｅｄｉｃｔｉｏｎ  Ｃｏｍｂｉｎａｔｉｏｎ））と呼ぶことができる。
【０３６５】
現在のブロックのイントラ予測モード、現在のブロックの参照サンプルライン、現在のブロックのサイズ、またはカラー成分を考慮して、ＰＤＰＣを使用するか否かを決定することができる。例えば、現在のブロックのイントラ予測モードがＰｌａｎａｒモード、ＤＣモード、垂直方向モード、水平方向モード、垂直方向よりもインデックス値が小さいモード、または水平方向よりもインデックス値が大きいモードのうちの少なくとも１つである場合、ＰＤＰＣを使用することができる。あるいは、現在のブロックの幅または高さのうちの少なくとも１つが４を超える場合にのみ、ＰＤＰＣを使用することができる。あるいは、現在のブロックの参照画像ラインのインデックスが０である場合にのみ、ＰＤＰＣを使用することができる。あるいは、現在のブロックの参照画像ラインのインデックスが事前定義された値より大きいか等しい場合にのみ、ＰＤＰＣを使用することができる。あるいは、輝度成分に対してのみ、ＰＤＰＣを使用することができる。あるいは、前記列挙された条件のうちの２つ以上を満たすか否かに応じて、ＰＤＰＣを使用するか否かを決定することができる。
【０３６６】
別の例として、ＰＤＰＣが適用されるか否かを示す情報が、ビットストリームを介してシグナリングできる。
【０３６７】
イントラ予測サンプルを介して予測サンプルを取得する場合、取得された予測サンプルの位置に基づいて、前記予測サンプルを補正するために使用される参照サンプルを決定できる。説明の便宜のために、後述される実施例では、予測サンプルを補正するために使用される参照サンプルをＰＤＰＣ参照サンプルと呼ぶ。さらに、イントラ予測を介して取得された予測サンプルを第１予測サンプルと呼び、第１予測サンプルを補正して取得された予測サンプルを第２予測サンプルと呼ぶ。
【０３６８】
図３７は、ＰＤＰＣの適用を示す図である。
【０３６９】
少なくとも１つのＰＤＰＣ参照サンプルを使用して、第１予測サンプルを補正することができる。ＰＤＰＣ参照サンプルは、現在のブロックの左上隅に隣接する参照サンプル、現在のブロックの上部に位置する上部参照サンプル、または現在のブロック左側に位置する左側参照サンプルのうちの少なくとも１つを含み得る。
【０３７０】
現在のブロックの参照サンプルラインに属する参照サンプルのうちの少なくとも１つをＰＤＰＣ参照サンプルとして設定することができる。あるいは、現在のブロックの参照サンプルラインとは関係なく、インデックス０の参照サンプルラインに属する参照サンプルのうちの少なくとも１つをＰＤＰＣ参照サンプルとして設定することができる。例えば、インデックス１またはインデックス２の参照サンプルラインに含まれる参照サンプルを使用して第１予測サンプルを取得した場合でも、インデックス０の参照サンプルラインに含まれる参照サンプルを使用して第２予測サンプルを取得することができる。
【０３７１】
現在のブロックのイントラ予測モード、現在のブロックのサイズ、現在のブロックの形状、または第１予測サンプルの位置のうちの少なくとも１つを考慮して、第１予測サンプルを補正するために使用されるＰＤＰＣ参照サンプルの数または位置を決定することができる。
【０３７２】
例えば、現在のブロックのイントラ予測モードがＰｌａｎａｒモードまたはＤＣモードである場合、上部参照サンプルおよび左側参照サンプルを使用して、第２予測サンプルを取得することができる。この場合、上部参照サンプルは、第１予測サンプルに垂直な参照サンプル（例えば、ｘ座標が同じ参照サンプル）であり得、左側参照サンプルは、第１予測サンプルに水平な参照サンプル（例えば、ｙ座標が同じ参照サンプル）であり得る。
【０３７３】
現在のブロックのイントラ予測モードが水平イントラ予測モードである場合、上部参照サンプルを使用して、第２予測サンプルを取得することができる。この場合、上部参照サンプルは、第１予測サンプルに垂直な参照サンプルであり得る。
【０３７４】
現在のブロックのイントラ予測モードが垂直イントラ予測モードである場合、左側参照サンプルを使用して、第２予測サンプルを取得することができる。この場合、左側参照サンプルは、第１予測サンプルに水平な参照サンプルであり得る。
【０３７５】
現在のブロックのイントラ予測モードが左下対角方向イントラ予測モードまたは右上対角方向のイントラ予測モードである場合、左上参照サンプル、上部参照サンプル、および左側参照サンプルに基づいて、第２予測サンプルを取得することができる。左上参照サンプルは、現在のブロックの左上隅に隣接する参照サンプル（例えば、（−１、−１）位置の参照サンプル）であり得る。上部参照サンプルは、第１予測サンプルの右上対角方向に位置する参照サンプルであり得、左側参照サンプルは、第１予測サンプルの左下対角方向に位置する参照サンプルであり得る。
【０３７６】
要約すると、第１予測サンプルの位置が（ｘ、ｙ）である場合、Ｒ（−１、−１）を左上参照サンプルとして設定し、Ｒ（ｘ＋ｙ＋１、−１）またはＲ（ｘ、−１）を上部参照サンプルとして設定することができる。また、Ｒ（−１、ｘ＋ｙ＋１）またはＲ（−１、ｙ）を左側参照サンプルとして設定することができる。
【０３７７】
別の例として、現在のブロックの形状、または広角イントラモードが適用されたか否かのうちの少なくとも１を考慮して、左側参照サンプルまたは上部参照サンプルの位置を決定することができる。
【０３７８】
具体的には、現在のブロックのイントラ予測モードが広角イントラ予測モードである場合、第１予測サンプルの対角方向に位置する参照サンプルから、オフセット値程度離れた参照サンプルをＰＤＰＣ参照サンプルとして設定することができる。例えば、上部参照サンプルＲ（ｘ＋ｙ＋ｋ＋１、−１）と左側参照サンプルＲ（−１、ｘ＋ｙ−ｋ＋１）をＰＤＰＣ参照サンプルとして設定することができる。
【０３７９】
この場合、広角イントラ予測モードに基づいてオフセット値ｋを決定することができる。式６と式７は、広角イントラ予測モードに基づいてオフセット値を導出する例を示す。
【数６】
2022501896.tif 000017
【数７】
2022501896.tif 000018
【０３８０】
第１予測サンプルとＰＤＰＣ参照サンプルとの間の加重合演算に基づいて、第２予測サンプルを決定することができる。例えば、下記式８に基づいて第２予測サンプルを取得することができる。
【数８】
2022501896.tif 000019
【０３８１】
式８において、ＲＬは左側参照サンプルを表し、ＲＴは上部参照サンプルを表し、ＲＴＬは左上参照サンプルを表す。ｐｒｅｄ（ｘ、ｙ）は（ｘ、ｙ）位置の予測サンプルを表す。ｗＬは左側参照サンプルに割り当てられる重み値を表し、ｗＴは上部参照サンプルに割り当てられる重み値を表し、ｗＴＬは左上参照サンプルに割り当てられる重み値を表す。第１予測サンプルに割り当てられる重み値は、最大値から参照サンプルに割り当てられる重み値を差し引くことによって導出することができる。説明の便宜のために、ＰＤＰＣ参照サンプルに割り当てられる重み値をＰＤＰＣ重み値と呼ぶ。
【０３８２】
現在のブロックのイントラ予測モードまたは第１予測サンプルの位置のうちの少なくとも１つに基づいて、各参照サンプルに割り当てられる重み値を決定することができる。
【０３８３】
例えば、ｗＬ、ｗＴまたはｗＴＬのうちの少なくとも１つと、予測サンプルのｘ軸座標値またはｙ軸座標値のうちの少なくとも１つは、比例関係または反比例関係にあり得る。あるいは、ｗＬ、ｗＴまたはｗＴＬのうちの少なくとも１つと、現在のブロックの幅または高さのうちの少なくとも１つは、比例関係または反比例関係にあり得る。
【０３８４】
現在のブロックのイントラ予測モードがＤＣモードである場合、ＰＤＰＣ重み値は、下記式９に示されるように決定できる。
【数９】
2022501896.tif 000020
【０３８５】
式９において、ｘおよびｙは、第１予測サンプルの位置を表す。
【０３８６】
式９において、現在のブロックの幅または高さに基づいて、ビットシフト演算に使用される変数ｓｈｉｆｔを決定できる。例えば、下記式１０または式１１に基づいて変数ｓｈｉｆｔを導出することができる。
【数１０】
2022501896.tif 000021
【数１１】
2022501896.tif 000022
【０３８７】
あるいは、現在のブロックのイントラ方向パラメータを考慮して、変数ｓｈｉｆｔを導出することができる。
【０３８８】
変数ｓｈｉｆｔを導出するために使用されるパラメータの数や種類は、現在のブロックのイントラ予測モードに応じて異なるように決定することができる。例えば、現在のブロックのイントラ予測モードがＰｌａｎａｒモード、ＤＣモード、垂直方向モード、または水平方向モードである場合、式１０または式１１に示されるように、現在のブロックの幅と高さを使用して変数ｓｈｉｆｔを導出することができる。現在のブロックのイントラ予測モードが、垂直方向のイントラ予測モードよりも大きいインデックスを有するイントラ予測モードである場合、現在のブロックの高さとイントラ方向パラメータを使用して、変数ｓｈｉｆｔを導出することができる。現在のブロックのイントラ予測モードが、水平方向のイントラ予測モードよりも小さいインデックスを有するイントラ予測モードである場合、現在のブロックの幅とイントラ方向パラメータを使用して、変数ｓｈｉｆｔを導出することができる。
【０３８９】
現在のブロックのイントラ予測モードがＰｌａｎａｒモードである場合、ｗＴＬの値を０に設定することができる。下記式１２に基づいてｗＬとｗＴを導出することができる。
【数１２】
2022501896.tif 000023
【０３９０】
現在のブロックのイントラ予測モードが水平イントラ予測モードである場合、ｗＴを０に設定し、ｗＴＬとｗＬを同じに設定することができる。一方、現在のブロックのイントラ予測モードが垂直イントラ予測モードである場合、ｗＬを０に設定し、ｗＴＬとｗＴを同じに設定することができる。
【０３９１】
現在のブロックのイントラ予測モードが、垂直方向のイントラ予測モードより大きいインデックス値を有する、右上方向に向かうイントラ予測モードである場合、下記式１３のように、ＰＤＰＣ重み値を導出することができる。
【数１３】
2022501896.tif 000024
【０３９２】
一方、現在のブロックのイントラ予測モードが、水平方向のイントラ予測モードより小さいインデックス値を有する、左下方向に向かうイントラ予測モードである場合、下記式１４のように、ＰＤＰＣ重み値を導出することができる。
【数１４】
2022501896.tif 000025
【０３９３】
上述した実施例のように、予測サンプルの位置ｘとｙに基づいて、ＰＤＰＣ重み値を決定することができる。
【０３９４】
別の例として、サブブロック単位で各ＰＤＰＣ参照サンプルに割り当てられる重み値を決定することもできる。サブブロックに含まれる予測サンプルは、同じＰＤＰＣ重み値を共有することができる。
【０３９５】
符号化器と復号化器で、重み値を決定するために使用される基本単位であるサブブロックのサイズを事前定義することができる。例えば、２×２サイズまたは４×４サイズの各サブブロックについて、重み値を決定することができる。
【０３９６】
あるいは、現在のブロックのサイズまたは形状に応じて、サブブロックのサイズ、形状、または数を決定することができる。例えば、符号化ブロックのサイズとは関係なく、符号化ブロックを４つのサブブロックに分割することができる。あるいは、符号化ブロックのサイズに基づいて、符号化ブロックを４つまたは１６つのサブブロックに分割することができる。
【０３９７】
あるいは、現在のブロックのイントラ予測モードに基づいて、サブブロックのサイズ、形状、または数を決定することもできる。例えば、現在のブロックのイントラ予測モードが水平方向モードである場合、Ｎ個の列（またはＮ個の行）を１つのサブブロックとして設定し、逆に、現在のブロックのイントラ予測モードが垂直方向モードである場合、Ｎ個の行（またはＮ行の列）を１つのサブブロックとして設定することができる。
【０３９８】
式１５〜１７は、２×２サイズのサブブロックのＰＤＰＣ重み値を決定する例を示す。式１５は、現在のブロックのイントラ予測モードがＤＣモードである場合の例を示す。
【数１５】
2022501896.tif 000026
【０３９９】
式１５において、Ｋは、サブブロックのサイズまたはイントラ予測モードに基づいて決定される値であり得る。
【０４００】
式１６は、現在のブロックのイントラ予測モードが、垂直方向のイントラ予測モードより大きいインデックス値を有する、右上方向に向かうイントラ予測モードである場合の例を示す。
【数１６】
2022501896.tif 000027
【０４０１】
式１７は、現在のブロックのイントラ予測モードが、水平方向のイントラ予測モードより小さいインデックス値を有する左下方向に向かうイントラ予測モードである場合の例を示す。
【数１７】
2022501896.tif 000028
【０４０２】
式１５〜１７において、ｘ及びｙは、サブブロック内の参照サンプルの位置を示す。参照サンプルは、サブブロックの左上に位置するサンプル、サブブロックの中央に位置するサンプル、またはサブブロックの右下に位置するサンプルのいずれかであり得る。
【０４０３】
式１８〜２０は、４×４サイズのサブブロックのＰＤＰＣ重み値を決定する例を示す。式１８は、現在のブロックのイントラ予測モードがＤＣモードである場合の例を示す。
【数１８】
2022501896.tif 000029
【０４０４】
式１９は、現在のブロックのイントラ予測モードが、垂直方向のイントラ予測モードより大きいインデックス値を有する、右上方向に向かうイントラ予測モードである場合の例を示す。
【数１９】
2022501896.tif 000030
【０４０５】
式２０は、現在のブロックのイントラ予測モードが、水平方向のイントラ予測モードより小さいインデックス値を有する左下方向に向かうイントラ予測モードである場合の例を示す。
【数２０】
2022501896.tif 000031
【０４０６】
上述した実施例では、第１予測サンプルまたはサブブロックに含まれる予測サンプルの位置を考慮して、ＰＤＰＣ重み値を決定することについて説明した。現在のブロックの形状をさらに考慮して、ＰＤＰＣ重み値を決定することもできる。
【０４０７】
例えば、ＤＣモードの場合、現在のブロックが幅が高さより大きい非正方形であるか、または高さが幅により大きい非正方形であるかに応じて、ＰＤＰＣ重み値の導出方法が異なることができる。
【０４０８】
式２１は、現在のブロックが幅が高さより大きい非正方形である場合、ＰＤＰＣ重み値を導出する例を示し、式２２は、現在のブロックが、高さが幅より大きい非正方形の場合、ＰＤＰＣ重み値を導出する例を示す。
【数２１】
2022501896.tif 000032
【数２２】
2022501896.tif 000033
【０４０９】
現在のブロックが非正方形である場合、広角イントラ予測モードを使用して、現在のブロックを予測することができる。このように、広角イントラ予測モードが適用される場合にも、ＰＤＰＣを適用して、第１予測サンプルを更新することができる。
【０４１０】
現在のブロックに広角イントラ予測が適用される場合、符号化ブロックの形状を考慮して、ＰＤＰＣ重み値を決定することができる。
【０４１１】
例えば、現在のブロックが幅が高さより大きい非正方形である場合、第１予測サンプルの位置に基づいて、第１予測サンプルの左下に位置する左側参照サンプルよりも、第１予測サンプルの右上に位置する上部参照サンプルの方が、第１予測サンプルにより近い場合が発生する。これにより、第１予測サンプルを補正する場合、上部参照サンプルに適用される重み値を、左側参照サンプルに適用される重み値よりも大きな値を有するように設定することができる。
【０４１２】
一方、現在のブロックが、高さが幅より大きい非正方形である場合、第１予測サンプルの位置に基づいて、第１予測サンプルの右上に位置する上部参照サンプルによりも、第１予測サンプルの左下に位置する左側参照サンプルの方が、第１予測サンプルにより近い場合が発生する。これにより、第１予測サンプルを補正する場合、左側参照サンプルに適用される重み値を、上部参照サンプルに適用される重み値よりも大きな値を有するように設定することができる。
【０４１３】
式２３は、現在のブロックのイントラ予測モードが、インデックスが６６より大きい広角イントラ予測モードである場合、ＰＤＰＣ重み値を導出する例を示す。
【数２３】
2022501896.tif 000034
【０４１４】
式２４は、現在のブロックのイントラ予測モードが、インデックスが０より小さい広角イントラ予測モードである場合、ＰＤＰＣ重み値を導出する例を示す。
【数２４】
2022501896.tif 000035
【０４１５】
現在のブロックの比率に基づいてＰＤＰＣ重み値を決定することもできる。現在のブロックの比率は、現在のブロックの幅と高さの比率を示し、下記式２５のように定義することができる。
【数２５】
2022501896.tif 000036
【０４１６】
現在のブロックのイントラ予測モードに基づいて、ＰＤＰＣ重み値を導出する方法を可変的に決定することができる。
【０４１７】
例えば、式２６および式２７は、現在のブロックのイントラ予測モードがＤＣモードである場合、ＰＤＰＣ重み値を導出する例を示す。具体的には、式２６は、現在のブロックが幅が高さより大きい非正方形である場合の例であり、式２７は、現在のブロックが、高さが幅よりも大きい非正方形である場合の例である。
【数２６】
2022501896.tif 000037
【数２７】
2022501896.tif 000038
【０４１８】
式２８は、現在のブロックのイントラ予測モードが、インデックスが６６より大きい広角イントラ予測モードである場合、ＰＤＰＣ重み値を導出する例を示す。
【数２８】
2022501896.tif 000039
【０４１９】
式２９は、現在のブロックのイントラ予測モードが、インデックスが０より小さい広角イントラ予測モードである場合、ＰＤＰＣ重み値を導出する例を示す。
【数２９】
2022501896.tif 000040
【０４２０】
元画像から予測画像を差分して、導出された残差画像を導出することができる。この場合、残差画像を周波数領域にする場合、周波数成分のうちの高周波数成分を除去しても、ビデオの品質を大幅に低下させることはない。これにより、高周波数成分の値小さく変更し、高周波数成分の値を０に設定すると、明らかな視覚的歪みを発生させることなく、圧縮効率を向上させることができる効果がある。上記の特性を反映して、現在のブロックを変換して、残差画像を２次元周波数成分に分解することができる。前記変換は、離散余弦変換（ＤＣＴ：Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）または離散正弦変換（ＤＳＴ：Ｄｉｓｃｒｅｔｅ  Ｓｉｎｅ  Ｔｒａｎｆｏｒｍ）などの変換方法を使用して行うことができる。
【０４２１】
ＤＣＴは余弦変換を使用して、残差画像を２次元周波数成分に分解（または変換）するものであり、ＤＳＴは使用正弦変換を使用して、残差画像を２次元周波数成分に分解（または変換）するものである。残差画像の変換結果、周波数成分は基本画像で表現することができる。例えば、Ｎ×Ｎサイズのブロックに対してＤＣＴ変換を実行する場合、Ｎ２個の基本パターン成分を取得することができる。変換により、Ｎ×Ｎサイズのブロックに含まれる各基本パターン成分のサイズを取得することができる。使用された変換技術に基づいて、基本パターン成分のサイズをＤＣＴ係数またはＤＳＴ係数と呼ぶことができる。
【０４２２】
変換技術ＤＣＴは、主に、０以外の低周波数成分が多く分布された画像を変換するために使用される。変換技術ＤＳＴは、主に、高周波数成分が多く分布された画像に使用される。
【０４２３】
ＤＣＴまたはＤＳＴ以外の変換技術を使用して、残差画像を変換することもできる。
【０４２４】
以下、残差画像を２次元周波数成分に変換することを２次元画像変換と呼ぶ。さらに、変換結果によって得られた基本パターン成分のサイズを変換係数と呼ぶ。例えば、変換係数は、ＤＣＴ係数またはＤＳＴ係数を指し得る。後述される一次変換と二次変換を同時に適用する場合、変換係数は、二次変換の結果によって生成される基本パターン成分のサイズを表すことができる。
【０４２５】
ブロック単位で変換技術を決定することができる。現在のブロックの予測符号化モード、現在のブロックのサイズ、または現在のブロックの形状のうちの少なくとも１つに基づいて、変換技術を決定することができる。例えば、イントラ予測モードで現在のブロックを符号化し、現在のブロックのサイズがＮ×Ｎよりも小さい場合、変換技術ＤＳＴを使用して変換を実行できる。一方、上記の条件を満たしない場合、変換技術ＤＣＴを使用して変換を実行できる。
【０４２６】
残差画像において、一部のブロックに対して２次元画像変換を実行しないこともできる。２次元画像変換を実行しないことを変換スキップ（Ｔｒａｎｓｆｏｒｍ  Ｓｋｉｐ）と呼ぶことができる。変換スキップが適用される場合、変換が実行されていない残差値に量子化を適用することができる。
【０４２７】
ＤＣＴまたはＤＳＴを使用して、現在のブロックを変換した後、変換された現在のブロックを再変換することができる。この場合、ＤＣＴまたはＤＳＴに基づく変換を一次変換として定義でき、一次変換が適用されたブロックを再変換することを二次変換として定義できる。
【０４２８】
一次変換は、複数の変換コア候補のいずれかを使用して実行することができる。例えば、ＤＣＴ２、ＤＣＴ８、またはＤＣＴ７のいずれかを使用して、一次変換を実行することができる。
【０４２９】
水平方向と垂直方向について、異なる変換コアを使用することもできる。水平方向の変換コアと垂直方向の変換コアの組み合わせを示す情報が、ビットストリームを介してシグナリングされることもできる。
【０４３０】
一次変換および二次変換の実行単位が異なる場合がある。例えば、８×８ブロックに対して一次変換を実行し、変換された８×８ブロックのうち４×４サイズのサブブロックに対して二次変換を実行できる。この場合、二次変換が実行されない残りの領域の変換係数を０に設定することもできる。
【０４３１】
あるいは、４×４ブロックに対して一次変換を実行し、変換された４×４ブロックを含む８×８サイズの領域に対して二次変換を実行することもできる。
【０４３２】
二次変換を実行するか否かを示す情報が、ビットストリームを介してシグナリングできる。
【０４３３】
あるいは、水平方向変換コアと垂直方向変換コアが同じであるか否かに基づいて、二次変換を実行する否かを決定することができる。例えば、水平方向変換コアと垂直方向変換コアが同一である場合にのみ、二次変換を実行することができる。あるいは、水平方向変換コアと垂直方向変換コアが異なる場合にのみ、二次変換を実行することができる。
【０４３４】
あるいは、水平方向の変換と垂直方向の変換が事前定義された変換コアを使用する場合にのみ、二次変換が可能になることができる。例えば、水平方向の変換と垂直方向の変換にＤＣＴ２変換コアが使用される場合に、二次変換が可能になることができる。
【０４３５】
あるいは、現在のブロックの非ゼロ変換係数の数に基づいて、二次変換を実行するか否かを決定できる。例えば、現在のブロックの非ゼロ変換係数が閾値より小さいか等しい場合、二次変換を使用しないように設定し、現在のブロックの非ゼロ変換係数が閾値を超える場合、二次変換を使用するように設定することができる。現在のブロックがイントラ予測で符号化される場合にのみ、二次変換を使用するように設定することもできる。
【０４３６】
現在のブロックの形状に基づいて、二次変換を実行するサブブロックのサイズや形状を決定することができる。
【０４３７】
図３８および図３９は、二次変換が実行されるサブブロックを示す図である。
【０４３８】
現在のブロックが正方形である場合、一次変換を実行した後、現在のブロックの左上のＮ×Ｎサイズのサブブロックに対して二次変換を実行することができる。例えば、現在のブロックが８×８サイズの符号化ブロックである場合、現在のブロックに対して一次変換を実行した後、現在のブロックの左上の４×４サイズのサブブロックに対して二次変換を実行することができる（図３８参照）。
【０４３９】
現在のブロックが幅が高さよりも４倍以上大きい非正方形である場合、一次変換を実行した後、現在のブロックの左上の（ｋＮ）×（４ｋＮ）サイズのサブブロックに対して二次変換を実行することができる。例えば、現在のブロックが１６×４サイズの非正方形である場合、現在のブロックに対して一次変換を実行した後、現在のブロックの左上の２×８サイズのサブブロックに対して二次変換を実行することができる（図３９（ａ）参照）。
【０４４０】
現在のブロックが、高さが幅よりも４倍以上大きい非正方形である場合、一次変換を実行した後、現在のブロックの左上の（４ｋＮ）×（ｋＮ）サイズのサブブロックに対して二次変換を実行することができる。例えば、現在のブロックが１６×４サイズの非正方形である場合、現在のブロックに対して一次変換を実行した後、現在のブロックの左上の２×８サイズのサブブロックに対して二次変換を実行することができる（図３９（ｂ）参照）。
【０４４１】
復号化器では、二次変換の逆変換（第２逆変換）を実行し、その実行結果に対して、一次変換の逆変換（第１逆変換）を実行することができる。第２逆変換と第１逆変換の実行結果、現在のブロックの残差信号を取得することができる。
【０４４２】
量子化は、ブロックのエネルギを低減するために使用され、量子化プロセスは、変換係数を特定の定数で除算するプロセスを含む。前記定数は、量子化パラメータによって導出でき、量子化パラメータは、１〜６３の値として定義できる。
【０４４３】
符号化器で変換と量子化を実行する場合、復号化器は、逆量子化と逆変換を介して残差ブロックを取得することができる。復号化器では、予測ブロックと残差ブロックを加算して、現在のブロックの復元ブロックを取得することができる。
【０４４４】
現在のブロックの変換タイプを示す情報が、ビットストリームを介してシグナルリングできる。前記情報は、水平方向の変換タイプと垂直方向の変換タイプの組み合わせのうちの１つを示すインデックス情報ｔｕ＿ｍｔｓ＿ｉｄｘであり得る。
【０４４５】
インデックス情報ｔｕ＿ｍｔｓ＿ｉｄｘによって指定された変換タイプの候補に基づいて、垂直方向の変換コアと水平方向の変換コアを決定することができる。表９および表１０は、ｔｕ＿ｍｔｓ＿ｉｄｘによる変換タイプの組み合わせを示す。
【表９】
2022501896.tif 000041
【表１０】
2022501896.tif 000042
【０４４６】
変換タイプは、ＤＣＴ２、ＤＳＴ７、ＤＣＴ８、または変換スキップのいずれかとして決定できる。あるいは、変換スキップを除き、変換コアのみを使用して、変換タイプの組み合わせの候補を構成することもできる。
【０４４７】
表９を使用する場合、ｔｕ＿ｍｔｓ＿ｉｄｘが０である場合、水平方向と垂直方向に変換スキップを適用することができる。ｔｕ＿ｍｔｓ＿ｉｄｘが１である場合、水平方向と垂直方向にＤＣＴ２を適用することができる。ｔｕ＿ｍｔｓ＿ｉｄｘが３である場合、水平方向にＤＣＴ８を適用し、垂直方向にＤＣＴ７を適用することができる。
【０４４８】
表１０を使用する場合、ｔｕ＿ｍｔｓ＿ｉｄｘが０である場合、水平方向と垂直方向にＤＣＴ２を適用することができる。ｔｕ＿ｍｔｓ＿ｉｄｘが１である場合、水平方向と垂直方向に変換スキップを適用することができる。若ｔｕ＿ｍｔｓ＿ｉｄｘが３である場合、水平方向にＤＣＴ８を適用し、垂直方向にＤＣＴ７を適用することができる。
【０４４９】
現在のブロックのサイズ、形状、または非ゼロ係数の数のうちの少なくとも１つに基づいて、インデックス情報を符号化するか否かを決定することができる。例えば、非ゼロ係数の数が閾値より小さいか等しい場合、インデックス情報をシグナルリングせずに、デフォルトの変換タイプを現在のブロックに適用することができる。ここで、デフォルトの変換タイプはＤＳＴ７であり得る。あるいは、現在のブロックのサイズ、形状、またはイントラ予測モードに応じて、デフォルトモードが異なることができる。
【０４５０】
現在のブロックのサイズまたは形状に基づいて閾値を決定することができる。例えば、現在のブロックのサイズが３２×３２より小さいか等しい場合、閾値を２に設定し、現在のブロックのサイズが３２×３２を超える場合（例えば、現在のブロックが、３２×６４サイズまたは６４×３２サイズの符号化ブロックである場合）、閾値を４に設定することができる。
【０４５１】
複数のルックアップテーブルを事前に符号化器／復号化器に記憶できる。複数のルックアップテーブルにおいて、変換タイプの組み合わせ候補に割り当てられるインデックス値、変換タイプの組み合わせ候補の種類、または変換タイプの組み合わせ候補の数のうちの少なくとも１つが異なってもよい。
【０４５２】
現在のブロックのサイズ、形状、予測符号化モード、イントラ予測モード、二次変換を適用するか否か、または変換スキップを隣接ブロックに適用するか否かのうちの少なくとも１に基づいて、現在のブロックのルックアップテーブルを選択することができる。
【０４５３】
例えば、現在のブロックのサイズが４×４より小さいか等しい場合、またはインター予測で現在のブロックを符号化する場合、表９のルックアップテーブルを使用し、現在のブロックのサイズが４×４を超える場合、またはブロック内予測で現在のブロックを符号化する場合、表１０のルックアップテーブルを使用することができる。
【０４５４】
あるいは、複数のルックアップテーブルのいずれかを示す情報が、ビットストリームを介してシグナリングできる。復号化器は、前記情報に基づいて、現在のブロックのルックアップテーブルを選択することができる。
【０４５５】
別の例として、現在のブロックのサイズ、形状、予測符号化モード、イントラ予測モード、二次変換を適用するか否か、または変換スキップを隣接ブロックに適用するか否かのうちの少なくとも１つに基づいて、変換タイプの組み合わせ候補に割り当てられるインデックスを適応的に決定することができる。例えば、現在のブロックのサイズが４×４である場合、変換スキップに割り当てられるインデックス値が、現在のブロックのサイズが４×４を超える場合に変換スキップに割り当てられるインデックス値より小さいことができる。具体的には、現在のブロックのサイズが４×４である場合、変換スキップにインデックス０を割り当て、現在のブロックが４×４より大きいかつ１６×１６以下である場合、変換スキップに０よりも大きいインデックス（例えば、インデックス１）を割り当てることができる。現在のブロックが１６×１６を超える場合、変換スキップのインデックスに最大値（例えば、５）を割り当てることができる。
【０４５６】
あるいは、現在のブロックがインター予測で符号化された場合、変換スキップにインデックス０を割り当てることができる。現在のブロックがイントラ予測で符号化された場合、変換スキップに０よりも大きいインデックス（例えば、インデックス１）を割り当てることができる。
【０４５７】
あるいは、現在のブロックがインター予測で符号化された４×４サイズのブロックである場合、変換スキップにインデックス０を割り当てることができる。一方、現在のブロックがインター予測で符号化されていないか、または現在のブロックが４×４を超える場合、変換スキップに０より大きいインデックス（例えば、インデックス１）を割り当てることができる。
【０４５８】
表９および表１０に列挙された変換タイプの組み合わせ候補とは異なる変換タイプの組み合わせ候補を定義して使用することもできる。例えば、水平方向変換または垂直方向変換の一方に変換スキップを適用し、ＤＣＴ７、ＤＣＴ８またはＤＳＴ２などの変換コアが適用される変換タイプの組み合わせ候補を他方に使用することができる。この場合、現在のブロックのサイズ（例えば、幅および／または高さ）、形状、予測符号化モード、またはイントラ予測モードのうちの少なくとも１つに基づいて、水平方向または垂直方向の変換タイプ候補として変換スキップを使用するか否かを決定することができる。
【０４５９】
あるいは、特定の変換タイプ候補が使用できるか否かを示す情報が、ビットストリームを介してシグナリングできる。例えば、水平方向と垂直方向の変換スキップを、変換タイプの候補として使用できるか否かを示すフラグがシグナリングされることができる。前記フラグに基づいて、複数の変換タイプの組み合わせ候補に特定の変換タイプの組み合わせ候補が含まれるか否かを決定することができる。
【０４６０】
あるいは、特定の変換タイプの候補が現在のブロックに適用されるか否かを示す情報が、ビットストリームを介してシグナリングできる。例えば、水平方向と垂直方向にＤＣＴ２を適用するか否かを示すフラグｃｕ＿ｍｔｓ＿ｆｌａｇがシグナリングされることができる。ｃｕ＿ｍｔｓ＿ｆｌａｇの値が１である場合、ＤＣＴ２を垂直方向と水平方向の変換コアとして設定することができる。ｃｕ＿ｍｔｓ＿ｆｌａｇの値が０である場合、ＤＣＴ８またはＤＳＴ７を垂直方向と水平方向の変換コアとして設定することができる。あるいは、ｃｕ＿ｍｔｓ＿ｆｌａｇの値が０である場合、複数の変換タイプの組み合わせ候補のいずれかを指定する情報ｔｕ＿ｍｔｓ＿ｉｄｘをシグナリングすることができる。
【０４６１】
現在のブロックが幅が高さより大きい非正方形または高さが幅より大きい非正方形である場合、ｃｕ＿ｍｔｓ＿ｆｌａｇの符号化を省略し、ｃｕ＿ｍｔｓ＿ｆｌａｇの値が０であると見なすこともできる。
【０４６２】
現在のブロックのサイズ、形状、またはイントラ予測モードに応じて、使用可能な変換タイプの組み合わせ候補の数を異なるように設定することができる。例えば、現在のブロックが正方形である場合、３つ以上の変換タイプの組み合わせ候補を使用し、現在のブロックが非正方形である場合、２つの変換タイプの組み合わせ候補を使用することができる。あるいは、現在のブロックが正方形である場合、変換タイプの組み合わせ候補のうち、水平方向の変換タイプと垂直方向の変換タイプが異なる変換タイプの組み合わせ候補のみを使用することができる。
【０４６３】
現在のブロックが使用できる変換タイプの組み合わせ候補が３つ以上である場合、変換タイプの組み合わせ候補のうちの１つを指示するインデックス情報ｔｕ＿ｍｔｓ＿ｉｄｘをシグナリングすることができる。一方、現在のブロックが使用できる変換タイプの組み合わせ候補が２つである場合、変換タイプの組み合わせ候補のいずれかを指示するフラグｍｔｓ＿ｆｌａｇをシグナリングすることができる。次の表１１は、現在のブロックの形状による変換タイプの組み合わせ候補を指定するための情報を符号化するプロセスを示す。
【表１１】
2022501896.tif 000043
【０４６４】
現在のブロックの形状に応じて、変換タイプの組み合わせ候補のインデックスを再配置（または再並べ替え）することができる。例えば、現在のブロックが正方形である場合に変換タイプの組み合わせ候補に割り当てられるインデックスと、現在のブロックが非正方形である場合に変換タイプの組み合わせ候補に割り当てられるインデックスが異なることができる。例えば、現在のブロックが正方形である場合、次の表１２に基づいて、変換タイプの組み合わせを選択し、現在のブロックが非正方形である場合、次の表１３に基づいて、変換タイプの組み合わせを選択することができる。
【表１２】
2022501896.tif 000044
【表１３】
2022501896.tif 000045
【０４６５】
現在のブロックの水平方向非ゼロ係数の数または垂直方向非ゼロ係数の数に基づいて、変換タイプを決定することができる。ここで、水平方向非ゼロ係数の数は、１×Ｎ（ここで、Ｎは現在のブロックの幅である）に含まれる非ゼロ係数の数を示し、垂直方向非ゼロ係数の数は、Ｎ×１（ここで、Ｎは現在のブロックの高さである）に含まれる非ゼロ係数の数を示す。水平方向非ゼロ係数の最大値が閾値より小さいか等しい場合、水平方向に一次変換タイプを適用し、水平方向非ゼロ係数の最大値が閾値を超える場合、水平方向に二次変換タイプを適用することができる。垂直方向非ゼロ係数の最大値が閾値より小さいか等しい場合、垂直方向に一次変換タイプを適用し、垂直方向非ゼロ係数の最大値が閾値を超える場合、垂直方向に二次変換タイプを適用することができる。
【０４６６】
図４０は、現在のブロックの変換タイプを決定する例を説明するための図である。
【０４６７】
例えば、イントラ予測で現在のブロックを符号化し、現在のブロックの水平方向非ゼロ係数の最大値が２より小さいか等しい場合（図４０（ａ）参照）、ＤＳＴ７と水平方向の変換タイプとして決定することができる。
【０４６８】
イントラ予測で現在のブロックを符号化し、現在のブロックの垂直方向非ゼロ係数の最大値が２を超える場合（図４０（ｂ）を参照）、ＤＣＴ２またはＤＣＴ８を垂直方向の変換タイプとして決定することができる。
【０４６９】
残差係数を変換ユニットまたはサブ変換ユニットで符号化することができる。ここで、残差係数とは、変換によって生成された変換係数、変換スキップによって生成された変換スキップ係数または前記変換係数または係数を量子化して生成された量子化された係数を指す。
【０４７０】
変換ユニットは、一次変換または二次変換が実行されたブロックを示すことができる。サブ変換ユニットは、変換ユニットより小さいブロックを示す。例えば、サブ変換ユニットは、４×４、２×８または８×２サイズのブロックであり得る。
【０４７１】
現在のブロックのサイズまたは形状に基づいて、サブ変換ユニットのサイズまたは形状のうちの少なくとも１つを決定することができる。例えば、現在のブロックが幅が高さより大きい非正方形である場合、サブ変換ユニットも、幅が高さより大きい非正方形（例えば、８×２）に設定し、現在のブロックが、高さが幅より大きい非正方形である場合、サブ変換ユニットも、高さが幅より大きい非正方形（例えば、２×８）に設定することができる。現在のブロックが正方形である場合、サブ変換ユニットも、正方形（例えば、４×４）に設定することができる。
【０４７２】
現在のブロックが複数のサブ変換ユニットを含む場合、サブ変換ユニットを順次符号化／復号化することができる。算術符号化（Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）などのエントロピー符号化を使用して、残差係数を符号化することができる。以下、図面を参照して、残差係数の符号化／復号化方法について詳細に説明する。
【０４７３】
図４１は、残差係数を符号化する方法のフローチャートである。
【０４７４】
本実施例では、現在のブロックが１つ以上のサブ変換ユニットを含むと仮定する。さらに、サブ変換ユニットのサイズが４×４であると仮定する。ただし、サブ変換ユニットのサイズがこれと異なる場合、またはサブ変換ユニットの形状がこれと異なる場合にも、本実施例をそのまま適用することができる。
【０４７５】
現在のブロックに非ゼロ係数が存在するか否かを決定することができる（Ｓ４１０１）。非ゼロ係数は、絶対値が０を超える残差係数を示す。現在のブロックに非ゼロ係数が存在するか否かを示す情報を符号化してシグナリングすることができる。例えば、前記情報は、１ビットのフラグＣＢＦ（Ｃｏｄｅｄ  Ｂｌｏｃｋ  Ｆｌａｇ）であり得る。
【０４７６】
現在のブロックに非ゼロ係数が存在する場合、各サブ変換ユニットに非ゼロ係数が存在するか否かを決定することができる（Ｓ４１０２）。各サブ変換ユニットに非ゼロ係数が存在するか否かを示す情報を符号化してシグナリングすることができる。例えば、前記情報は、１ビットのフラグ、符号化サブブロックフラグ（ＣＳＢＦ：Ｃｏｄｅｄ  ＳｕｂＢｌｏｃｋ  Ｆｌａｇ）であり得る。サブ変換ユニットは、選択された走査順序に従って符号化できる。
【０４７７】
サブ変換ユニットに非ゼロ係数がある場合、サブ変換ユニットの残差係数を符号化するためには、サブ変換ユニット内の残差係数を一次元的に配列することができる（Ｓ４１０３）。残差係数は、選択された走査順序に従って一次元的に配列されることができる。
【０４７８】
走査順序は、対角走査、水平走査、垂直走査、またはこれらの逆走査のうちの少なくとも１つを含み得る。
【０４７９】
図４２および図４３は、異なる走査順序における残差係数の配列順序を示す図である。
【０４８０】
図４２（ａ）から図４２（ｃ）は、対角走査（Ｄｉａｇｏｎａｌ  Ｓｃａｎ）、水平走査（Ｈｏｒｉｚｏｎｔａｌ  Ｓｃａｎ）、および垂直走査（Ｖｅｒｔｉｃａｌ  Ｓｃａｎ）を示し、図４３（ａ）から図４３（ｃ）は、これらの逆走査を示す。
【０４８１】
選択された走査順序に従って、残差係数を一次元的に配列することができる。
【０４８２】
現在のブロックのサイズ、形状、イントラ予測モード、一次変換に使用される変換コアまたは二次変換を適用するか否かのうちの少なくとも１つを考慮して、走査順序を決定することができる。例えば、現在のブロックが幅が高さより大きい非正方形である場合、逆水平走査を使用して残差係数を符号化することができる。一方、現在のブロックが、高さが幅より大きい非正方形である場合、逆垂直走査を使用して残差係数を符号化することができる。
【０４８３】
あるいは、複数の走査順序のそれぞれのレート歪みの最適化（ＲＤＯ：Ｒａｔｅ  Ｄｉｓｔｏｒｔｉｏｎ  Ｏｐｔｉｍｉｚａｔｉｏｎ）を計算し、ＲＤＯが最も低い走査順序を、現在のブロックの走査順序として決定することができる。この場合、現在のブロックの走査順序を示す情報を符号化してシグナリングすることができる。
【０４８４】
変換スキップ係数を符号化する場合に使用できる走査順序候補と、変換係数を符号化する場合に使用できる走査順序候補が異なることができる。例えば、変換係数を符号化する場合に使用できる走査順序候補の逆方向を、変換スキップ係数を符号化場合に使用できる走査順序候補として設定することができる。
【０４８５】
例えば、変換係数が逆対角走査、逆水平走査または逆垂直走査のいずれかを使用して符号化される場合、変換スキップ係数は、対角走査、水平走査または垂直走査のいずれかを使用して符号化できる。
【０４８６】
その後、変換ブロック内の走査順序が最後に位置する非ゼロ係数の位置を符号化することができる（Ｓ４１０３）。最後の非ゼロ係数のｘ軸位置およびｙ軸位置をそれぞれ符号化することができる。
【０４８７】
図４４は、最後の非ゼロ系数の位置を符号化する例を示す図である。
【０４８８】
図４４に示されるように、対角走査の場合、変換ブロックの右上隅に位置する残差係数を最後の非ゼロ係数として設定することができる。前記残差係数のｘ軸座標ＬａｓｔＸは３であり、ｙ軸座標ＬａｓｔＹは０である。ＬａｓｔＸは、プレフィックス部分ｌａｓｔ＿ｓｉｇ＿ｃｏｅｆｆ＿ｘ＿ｐｒｅｆｉｘとサフィックス部分ｌａｓｔ＿ｓｉｇ＿ｃｏｅｆｆ＿ｘ＿ｓｕｆｆｉｘに分離されて符号化されることができる。ＬａｓｔＹも、プレフィックス部分ｌａｓｔ＿ｓｉｇ＿ｃｏｅｆｆ＿ｙ＿ｐｒｅｆｉｘとサフィックス部分ｌａｓｔ＿ｓｉｇ＿ｃｏｅｆｆ＿ｙ＿ｓｕｆｆｉｘに分離されて符号化されることができる。
【０４８９】
最後の非ゼロ係数の位置を決定した場合、最後の非ゼロ係数よりも走査順序が先立つ各残差係数について、残差係数が非ゼロ係数であるか否かを示す情報を符号化することができる（Ｓ４１０４）。前記情報は、１ビットのフラグ、ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇであり得る。残差係数が０である場合、非ゼロ係数フラグｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇの値を０に設定し、残差係数が１である場合、非ゼロ係数フラグｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇの値を１に設定することができる。最後の非ゼロ係数については、非ゼロ係数フラグｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇの符号化を省略することができる。非ゼロ係数フラグｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇの符号化を省略する場合、前記残差係数は０ではないと見なされる。
【０４９０】
変換スキップ係数については、最後の非ゼロ係数の位置に関する情報を符号化しないことができる。この場合、ブロック内のすべての変換スキップ係数について、非ゼロ係数フラグｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇを符号化することができる。
【０４９１】
あるいは、最後の非ゼロ係数の位置の情報が符号化されるか否かを示す情報を符号化してシグナリングすることができる。前記情報は、１ビットのフラグであり得る。復号化器は、前記フラグの値に基づいて、最後の非ゼロ係数の位置に関する情報を復号化するか否かを決定することができる。最後の非ゼロ係数の位置が復号化されない場合、すべての変換スキップ係数について、非ゼロ係数のフラグを復号化することができる。一方、最後の非ゼロ係数の位置が復号化される場合、最後の非ゼロ係数よりも走査順序が先立つ各変換スキップ係数について、変換スキップ係数が非ゼロ係数であるか否かを示す情報を符号化することができる。
【０４９２】
変換係数または変換スキップ係数のＤＣ成分は、ゼロに設定されないことができる。ここで、ＤＣ成分は、走査順序が最後に位置するサンプルまたはブロックの左上に位置するサンプルを示し得る。ＤＣ成分については、残差係数が非ゼロ係数フラグｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇの符号化を省略することができる。非ゼロ係数フラグｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇの符号化を省略する場合、前記残差係数は０ではないと見なされる。
【０４９３】
残差係数が０でない場合、残差係数の絶対値を示す情報および残差係数の符号を示す情報を符号化することができる（Ｓ４１０５）。残差係数の絶対値を示す情報の符号化プロセスについては、図４５を参照して、より詳細に説明する。
【０４９４】
最後の非ゼロ係数の後のすべての残差係数と、現在のブロックに含まれるサブ変換ユニットのそれぞれについて、残差係数の符号化を順次実行することができる（Ｓ４１０６、Ｓ４１０７）。
【０４９５】
図４５は、残差係数の絶対値を符号化するプロセスのフローチャートである。
【０４９６】
残差係数の絶対値が０を超える場合、残差係数または残差係数が偶数であるか奇数であるかを示す情報を符号化することができる（Ｓ４５０１）。ここで、残差係数は、残差係数の絶対値から１を差し引いた値として定義することができる。前記情報は、１ビットのパリティフラグであり得る。例えば、構文要素ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値が０であることは、残差係数または残余係数が偶数であることを示し、構文要素ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値が１であることは、残差係数または残余係数が奇数であることを示す。当構文要素ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値は、下記式３０に基づいて決定できる。
【数３０】
2022501896.tif 000046
【０４９７】
式３０において、Ｔｃｏｅｆｆは残差係数を表し、ａｂｓ（）は絶対値関数を表す。
【０４９８】
残差係数または残余係数を２で除算するか、または残差係数または残余係数にビットシフト演算を適用して、調整残余係数を導出することができる（Ｓ４５０２）。具体的には、残差係数を２で除算した商を調整残余係数として設定するか、または残余係数を右に１シフトした値を調整残余係数として設定することができる。
【０４９９】
例えば、下記式３１に基づいて調整残余係数を導出することができる。
【数３１】
2022501896.tif 000047
【０５００】
式３１において、ＲｅＲｅｍＬｅｖｅｌは調整残余係数を表し、ＲｅｍＬｅｖｅｌは残余係数を表す。
【０５０１】
その後、調整残余係数のサイズを示す情報を符号化することができる。調整残余係数のサイズを示す情報は、調整残余係数がＮより大きいか否かを示す情報を含み得る。ここで、Ｎは１、２、３、４などの整数であり得る。
【０５０２】
例えば、調整残余係数の値が１より大きいか否かを示す情報を符号化することができる（Ｓ４５０３）。前記情報は、１ビットのフラグｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇであり得る。
【０５０３】
残差係数が０または１である場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を０に設定できる。つまり、残差係数が１または２である場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を０に設定できる。この場合、残差係数が０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを０に設定し、残差係数が１である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを１に設定することができる。
【０５０４】
調整残余係数が２以上である場合（Ｓ４５０４）、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を１に設定し、調整残余係数の値が２より大きいか否かを示す情報を符号化することができる（Ｓ４５０５）。前記情報は、１ビットのフラグｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇであり得る。
【０５０５】
残差係数が１または２である場合、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの値を０に設定できる。つまり、残差係数が３または４である場合、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの値を０に設定できる。この場合、残差係数が２である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを０に設定し、残差係数が３である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを１に設定することができる。
【０５０６】
調整残余係数が２を超える場合、調整残余係数から２を差し引いた残差値情報を符号化することができる（Ｓ４５０６）。つまり、残差係数の絶対値から５を差し引いた後、前記結果値を２で除算したものを残差値情報として符号化することができる。
【０５０７】
図示されていないが、調整残余係数が３を超えるか否かを示すフラグ（例えば、ｒｅｍ＿ａｂｓ＿ｇｔ３＿ｆｌａｇ）または調整残余係数が４を超えるか否かを示すフラグ（ｒｅｍ＿ａｂｓ＿ｇｔ４＿ｆｌａｇ）などをさらに使用して、残差係数を符号化することができる。この場合、調整残余係数から最大値を差し引いた値を残差値として設定できる。最大値は、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇのうち最大Ｎ値を示す。
【０５０８】
調整残余係数の値を指定値と比較するフラグの代わりに、調整係数または残差係数の絶対値を指定値と比較するフラグを使用することもできる。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの代わりに、残差係数の絶対値が２を超えるか否かを示すｇｒ２＿ｆｌａｇを使用し、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの代わりに、残差係数の絶対値が４を超えるか否かを示すｇｒ４＿ｆｌａｇを使用することができる。
【０５０９】
表１４は、構文要素を使用して、残差係数を符号化するプロセスを簡略的に示したものである。
【表１４】
2022501896.tif 000048
【０５１０】
上述した例のように、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇおよび少なくとも１つのｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇ（ここで、Ｎは１、２、３、４などの整数である）を使用して、残差係数を符号化することができる。
【０５１１】
ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇは、残差係数が２Ｎを超えるか否かを示す。２Ｎ−１または２Ｎの残差係数については、ｒｅｍ＿ａｂｓ＿ｇｔ（Ｎ−１）＿ｆｌａｇをｔｒｕｅに設定し、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇをｆａｌｓｅに設定する。また、２Ｎ−１の残差係数については、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値を０に設定し、２Ｎの残差係数については、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値を１に設定することができる。つまり、２Ｎ以下の残差係数について、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇとｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを使用して符号化することができる。
【０５１２】
残差係数が２ＭＡＸ＋１以上の残差係数について、２ＭＡＸとの差値を２で除算した残差値情報を符号化することができる。ここで、ＭＡＸはＮの最大値を示す。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇとｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇを使用する場合、ＭＡＸは２であり得る。
【０５１３】
復号化器も、図４５に示される順序に応じて残差係数を復号化することができる。具体的には、復号化器は、最後の非ゼロ係数の位置を決定し、最後の非ゼロ係数よりも走査順序が先立つ各残差係数について、ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇを復号化することができる。
【０５１４】
ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇがｔｒｕｅである場合、前記残差係数のｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを復号化することができる。さらに、前記残差係数のｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇを復号化することができる。この場合、ｒｅｍ＿ａｂｓ＿ｇｔ（Ｎ−１）＿ｆｌａｇの値に基づいて、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇをさらに復号化することができる。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ（Ｎ−１）＿ｆｌａｇの値が１である場合、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇを復号化することができる。例えば、残差係数のｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値が１である場合、前記残差係数のｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇをさらに解析することができる。ｒｅｍ＿ａｂｓ＿ｇｔ（ＭＡＸ）＿ｆｌａｇの値が１である場合、残差値情報を復号化することができる。
【０５１５】
残差係数のｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇの値が０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値に基づいて、残差係数の値を２Ｎ−１または２Ｎに決定することができる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが０である場合、残差係数を２Ｎ−１に設定し、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが１である場合、残差係数を２Ｎに設定できる。
【０５１６】
例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇが０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値に基づいて、残差係数の絶対値を１または２に設定できる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が０である場合、残差係数の絶対値は１になり、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が１である場合、残差係数の絶対値は２になる。
【０５１７】
例えば、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇが０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値に基づいて、残差係数の絶対値を３または４に設定できる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が０である場合、残差係数の絶対値は３になり、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が１である場合、残差係数の絶対値は４になる。
【０５１８】
残差値情報を復号化する場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値に基づいて、残差係数を２（ＭＡＸ＋Ｒ）−１または２（ＭＡＸ＋Ｒ）に設定できる。ここで、Ｒは残差値情報で示される値を示す。例えば、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが０である場合、残差係数を２（ＭＡＸ＋Ｒ）−１に設定し、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが１である場合、残差係数を２（ＭＡＸ＋Ｒ）に設定できる。例えば、ＭＡＸが２である場合、下記式３２に基づいて残差係数を導出することができる。
【数３２】
2022501896.tif 000049
【０５１９】
図４５に示される例に基づいて、残差係数を符号化する場合、すべての非ゼロ係数のパリティフラグを符号化する必要がある。例えば、残差係数が１である場合にも、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇとｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇを符号化する必要がある。上記のような符号化方法は、絶対値が１である残差係数を符号化するのに必要なビット数を増加させるという問題を引き起こす。このような問題を回避するために、残差係数が１を超えるか否かを示す情報を先に符号化した後、残差係数が１を超える場合に、パリティフラグを符号化することができる。
【０５２０】
図４６は、残差係数の絶対値を符号化するプロセスのフローチャートである。
【０５２１】
非ゼロ残差係数については、残差係数の絶対値が１を超えるか否かを示す情報ｇｒ１＿ｆｌａｇを符号化することができる（Ｓ４６０１）。残差係数が１である場合、ｇｒ１＿ｆｌａｇを０に設定し、残差係数が１を超える場合、ｇｒ１＿ｆｌａｇを１に設定できる。
【０５２２】
残差係数の絶対値が１を超える場合、残差係数または残余係数是が偶数であるか奇数であるかを示すパリティフラグを符号化することができる（Ｓ４６０２、Ｓ４６０３）。ここで、残差係数を、残差係数から２を差し引いた値に設定できる。例えば、下記式３３に基づいてｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを導出することができる。
【数３３】
2022501896.tif 000050
【０５２３】
残差係数または残余係数を２で除算するか、または残差係数または残余係数を右に１ビットシフトして調整残余係数を導出し、調整残余係数が１を超えるか否かを示す情報を符号化することができる（Ｓ４６０４）。例えば、ｇｒ１＿ｆｌａｇが１である残差係数については、調整残余係数が１を超えるか否かを示すｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇを符号化することができる。
【０５２４】
残差係数が０または１である場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を０に設定できる。つまり、残差係数が２または３である場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を０に設定できる。この場合、調整残余係数が０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを０に設定し、残差係数が１である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを１に設定できる。
【０５２５】
調整残余係数が２以上である場合（Ｓ４６０５）、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を１に設定し、調整残余係数が２を超えるか否かを示す情報を符号化することができる（Ｓ４６０６）。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇが１である残差係数については、調整残余係数が２を超えるか否かを示すｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇを符号化することができる。
【０５２６】
残差係数が２または３である場合、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの値を１に設定できる。つまり、残差係数が４または５である場合、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの値を０に設定できる。この場合、残差係数が２である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを０に設定し、残差係数が３である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを１に設定することができる。
【０５２７】
調整残余係数が２を超える場合（Ｓ４６０７）、調整残余係数から２を差し引いた残差値情報を符号化することができる（Ｓ４６０８）。つまり、残差係数の絶対値から６を差し引いた後、その結果値を２で除算したものを残差値情報として符号化することができる。
【０５２８】
調整残余係数が３を超えるが否かを示すフラグ（例えば、ｒｅｍ＿ａｂｓ＿ｇｔ３＿ｆｌａｇ）または調整残余係数が４を超えるか否かを示すフラグ（ｒｅｍ＿ａｂｓ＿ｇｔ４＿ｆｌａｇ）などをさらに使用して、残差係数を符号化することができる。この場合、調整残余係数から最大値を差し引いた値を残差値として設定できる。最大値は、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇのうち最大Ｎ値を示す。
【０５２９】
調整残余係数の値を指定値と比較するフラグの代わりに、調整係数または残差係数の絶対値を指定値と比較するフラグを使用することもできる。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの代わりに、残差係数の絶対値が３を超えるか否かを示すｇｒ３＿ｆｌａｇを使用し、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの代わりに、残差係数の絶対値が５を超えるか否かを示すｇｒ５＿ｆｌａｇを使用することができる。
【０５３０】
表１５は、構文要素を使用して、残差係数を符号化するプロセスを簡略的に示したものである。
【表１５】
2022501896.tif 000051
【０５３１】
復号化器も、図４６に示される順序に応じて残差係数を復号化することができる。具体的には、復号化器は、最後の非ゼロ係数の位置を決定し、最後の非ゼロ係数よりも走査順序が先立つ各残差係数について、ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇを復号化することができる。
【０５３２】
ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇがｔｒｕｅである場合、前記残差係数のｇｒ１＿ｆｌａｇを復号化することができる。ｇｒ１＿ｆｌａｇが０である場合、前記残差係数の絶対値を１に決定し、ｇｒ１＿ｆｌａｇが１である場合、前記残差係数のｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを復号化することができる。その後、前記残差係数のｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇを復号化することができる。この場合、ｒｅｍ＿ａｂｓ＿ｇｔ（Ｎ−１）＿ｆｌａｇの値に基づいて、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇをさらに復号化することができる。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ（Ｎ−１）＿ｆｌａｇの値が１である場合、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇを復号化することができる。例えば、残差係数のｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値が１である場合、前記残差係数のｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇをさらに解析することができる。ｒｅｍ＿ａｂｓ＿ｇｔ（ＭＡＸ）＿ｆｌａｇの値が１である場合、残差値情報を復号化することができる。
【０５３３】
残差係数のｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇの値が０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値に基づいて、残差係数の値を２Ｎ−１または２Ｎに決定することができる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが０である場合、残差係数を２Ｎに設定し、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが１である場合、残差係数を２Ｎ＋１に設定できる。
【０５３４】
例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇが０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値に基づいて、残差係数の絶対値を２または３に設定できる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が０である場合、残差係数の絶対値は２になり、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が１である場合、残差係数の絶対値は３になる。
【０５３５】
例えば、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇが０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値に基づいて、残差係数の絶対値を４または５に設定できる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が０である場合、残差係数の絶対値は４になり、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が１である場合、残差係数の絶対値は５になる。
【０５３６】
残差値情報を復号化する場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値に基づいて、残差係数を２（ＭＡＸ＋Ｒ）または２（ＭＡＸ＋Ｒ）＋１に設定できる。ここで、Ｒは残差値情報の値を示す。例えば、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが０である場合、残差係数を２（ＭＡＸ＋Ｒ）に設定し、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが１である場合、残差係数を２（ＭＡＸ＋Ｒ）＋１に設定できる。
【０５３７】
別の例として、残差係数の値が２を超える場合にのみ、パリティフラグを符号化することができる。例えば、残差係数の値が１を超えるか否かを示す情報および残差係数の値が２を超えるか否かを示す情報を符号化した後、残差係数の値が２を超えると決定した場合、前記残差係数についてパリティフラグを符号化することができる。
【０５３８】
図４７は、残差係数の絶対値を符号化するプロセスのフローチャートである。
【０５３９】
非ゼロ残差係数については、残差係数の絶対値が１を超えるか否かを示す情報ｇｒ１＿ｆｌａｇを符号化することができる（Ｓ４７０１）。残差係数が１である場合、ｇｒ１＿ｆｌａｇを０に設定し、残差係数が１を超える場合、ｇｒ１＿ｆｌａｇを１に設定できる。
【０５４０】
絶対値が１を超える残差係数については、残差係数の絶対値が２を超えるか否かを示す情報ｇｒ２＿ｆｌａｇを符号化することができる（Ｓ４７０２、Ｓ４７０３）。残差係数が２である場合、ｇｒ２＿ｆｌａｇを０に設定し、残差係数が２を超える場合、ｇｒ２＿ｆｌａｇを１に設定できる。
【０５４１】
絶対値が２を超える場合、残差係数または残余係数是が偶数であるか奇数であるかを示すパリティフラグを符号化することができる（Ｓ４７０４、Ｓ４７０５）。ここで、残差係数を、残差係数から３を差し引いた値に設定できる。例えば、下記式３４に基づいてｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを導出することができる。
【数３４】
2022501896.tif 000052
【０５４２】
残差係数または残余係数を２で除算するか、または残差係数または残余係数を右に１ビットシフトして調整残余係数を導出し、調整残余係数が１を超えるか否かを示す情報を符号化することができる。例えば、ｇｒ１＿ｆｌａｇが１である残差係数については、調整残余係数が１を超えるか否かを示すｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇを符号化することができる（Ｓ４７０６）。
【０５４３】
残差係数が０または１である場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を０に設定できる。つまり、残差係数が３または４である場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を０に設定できる。この場合、調整残余係数が０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを０に設定し、残差係数が１である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを１に設定できる。
【０５４４】
調整残余係数が２以上である場合（Ｓ４７０７）、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値を１に設定し、調整残余係数が２を超えるか否かを示す情報を符号化することができる（Ｓ４７０８）。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇが１である残差係数については、調整残余係数が２を超えるか否かを示すｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇを符号化することができる。
【０５４５】
残差係数が２または３である場合、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの値を１に設定できる。つまり、残差係数が５または６である場合、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの値を０に設定できる。この場合、残差係数が２である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを０に設定し、残差係数が３である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを１に設定することができる。
【０５４６】
調整残余係数が２を超える場合、調整残余係数から２を差し引いた残差値を符号化することができる（Ｓ４７０９、Ｓ４７１０）。つまり、残差係数の絶対値から７を差し引いた後、その結果値を２で除算したものを残差値として符号化することができる。
【０５４７】
調整残余係数が３を超えるが否かを示すフラグ（例えば、ｒｅｍ＿ａｂｓ＿ｇｔ３＿ｆｌａｇ）または調整残余係数が４を超えるか否かを示すフラグ（ｒｅｍ＿ａｂｓ＿ｇｔ４＿ｆｌａｇ）などをさらに使用して、残差係数を符号化することができる。この場合、調整残余係数から最大値を差し引いた値を残差値として設定できる。最大値は、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇのうち最大Ｎ値を示す。
【０５４８】
調整残余係数の値を指定値と比較するフラグの代わりに、調整係数または残差係数の絶対値を指定値と比較するフラグを使用することもできる。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの代わりに、残差係数の絶対値が４を超えるか否かを示すｇｒ４＿ｆｌａｇを使用し、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの代わりに、残差係数の絶対値が６を超えるか否かを示すｇｒ６＿ｆｌａｇを使用することができる。
【０５４９】
復号化器も、図４７に示される順序と同じ順序で、残差係数を復号化することができる。具体的には、復号化器は、最後の非ゼロ係数の位置を決定し、最後の非ゼロ係数よりも走査順序が先立つ各残差係数について、ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇを復号化することができる。
【０５５０】
ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇがｔｒｕｅである場合、前記残差係数のｇｒ１＿ｆｌａｇを復号化することができる。ｇｒ１＿ｆｌａｇが０である場合、前記残差係数の絶対値を１に決定し、ｇｒ１＿ｆｌａｇが１である場合、ｇｒ２＿ｆｌａｇを復号化することができる。ｇｒ２＿ｆｌａｇが０である場合、前記残差係数の絶対値を２に決定し、ｇｒ２＿ｆｌａｇが１である場合、前記残差係数のｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇを復号化することができる。その後、前記残差係数のｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇを復号化することができる。この場合、ｒｅｍ＿ａｂｓ＿ｇｔ（Ｎ−１）＿ｆｌａｇの値に基づいて、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇをさらに復号化することができる。例えば、ｒｅｍ＿ａｂｓ＿ｇｔ（Ｎ−１）＿ｆｌａｇの値が１である場合、ｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇを復号化することができる。例えば、残差係数のｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの値が１である場合、前記残差係数のｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇをさらに解析することができる。ｒｅｍ＿ａｂｓ＿ｇｔ（ＭＡＸ）＿ｆｌａｇの値が１である場合、残差値情報を復号化することができる。
【０５５１】
残差係数のｒｅｍ＿ａｂｓ＿ｇｔＮ＿ｆｌａｇの値が０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値に基づいて、残差係数の値を２Ｎ＋１または２（Ｎ＋１）に決定することができる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが０である場合、残差係数を２Ｎ＋１に設定し、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが１である場合、残差係数を２（Ｎ＋１）に設定できる。
【０５５２】
例えば、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇが０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値に基づいて、残差係数の絶対値を３または４に設定できる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が０である場合、残差係数の絶対値は３になり、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が１である場合、残差係数の絶対値は４になる。
【０５５３】
例えば、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇが０である場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値に基づいて、残差係数の絶対値を５または６に設定できる。具体的には、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が０である場合、残差係数の絶対値は５になり、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇ値が１である場合、残差係数の絶対値は６になる。
【０５５４】
残差値情報を復号化する場合、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇの値に基づいて、残差係数を２（ＭＡＸ＋Ｒ）または２（ＭＡＸ＋Ｒ）＋１に設定できる。ここで、Ｒは残差値情報の値を示す。例えば、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが０である場合、残差係数を２（ＭＡＸ＋Ｒ）に設定し、ｐａｒ＿ｌｅｖｅｌ＿ｆｌａｇが１である場合、残差係数を２（ＭＡＸ＋Ｒ）＋１に設定できる。
【０５５５】
現在のブロックのサイズ、形状、変換スキップするか否か、変換コア、非ゼロ係数の数、または最後の非ゼロ係数の位置のうちの少なくとも１に基づいて、調整残余係数を指定値と比較する比較フラグの数または種類のうちの少なくとも１を決定することができる。例えば、変換係数を符号化する場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇのみを使用することができる。一方、変換スキップ係数を符号化する場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇとｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇを使用することができる。
【０５５６】
あるいは、４×４サイズのサブ変換ユニット内では、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの数を最大８に設定し、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの数を最大１に設定できる。あるいは、非ゼロ係数フラグの数が（１６−Ｎ）である場合、ｒｅｍ＿ａｂｓ＿ｇｔ１＿ｆｌａｇの数を最大８＋（Ｎ／２）に設定し、ｒｅｍ＿ａｂｓ＿ｇｔ２＿ｆｌａｇの数を最大１＋（Ｎ−（Ｎ／２））に設定できる。
【０５５７】
現在のブロックの復元ブロックを取得した場合、インループフィルタリング（Ｉｎ−ｌｏｏｐ  ｆｉｌｔｅｒｉｎｇ）を介して量子化と符号化プロセスで生成される情報の損失を減らすことができる。インループフィルタは、デブロッキングフィルタ（Ｄｅｂｌｏｃｋｉｎｇ  ｆｉｌｔｅｒ）、サンプル適応オフセットフィルタ（ＳＡＯ：Ｓａｍｐｌｅ  Ａｄａｐｔｉｖｅ  Ｏｆｆｓｅｔ  ｆｉｌｔｅｒ）または適応ループフィルタ（ＡＬＦ：Ａｄａｐｔｉｖｅ  Ｌｏｏｐ  Ｆｉｌｔｅｒ）のうちの少なくとも１つを含み得る。以下、インループフィルタが適用される前の復元ブロックを第１復元ブロックと呼び、インループフィルタが適用された後の復元ブロックを第２復元ブロックと呼ぶ。
【０５５８】
デブロッキングフィルタ、ＳＡＯまたはＡＬＦのうちの少なくとも１つを第１復元ブロックに適用して、第２復元ブロックを取得することができる。この場合、デブロッキングフィルタが適用された後にＳＡＯまたはＡＬＦを適用することができる。
【０５５９】
デブロッキングフィルタは、量子化がブロック単位で実行されるときにブロックの境界で生じる画質の低下（ブロッキングアーティファクト、Ｂｌｏｃｋｉｎｇ  Ａｒｔｉｆａｃｔ）を軽減するために使用される。デブロッキングフィルタを適用するためには、第１復元ブロックと隣接する復元ブロックとの間のブロッキング強度（ＢＳ：Ｂｌｏｃｋｉｎｇ  Ｓｔｒｅｎｇｔｈ）を決定することができる。
【０５６０】
図４８は、ブロック強度を決定するプロセスのフローチャートである。
【０５６１】
図４８に示される例では、Ｐは第１復元ブロックを表し、Ｑは隣接する復元ブロックを表す。ここで、隣接復元ブロックは、現在のブロックの左側または上部に隣接するブロックであり得る。
【０５６２】
図４８に示される例では、ＰとＱの予測符号化モード、非ゼロ変換係数が含まれるか否か、同じ参照画像を使用してインター予測が実行されるか否か、または動きベクトルの差値が閾値以上であるか否かを考慮して、ブロック強度を決定することを示す。
【０５６３】
ブロック強度に基づいて、デブロッキングフィルタを適用する否かを決定することができる。例えば、ブロック強度が０である場合、フィルタリングが実行されない場合がある。
【０５６４】
ＳＡＯは、周波数領域で量子化を実行するときに生じるリンギングアーティファクト（Ｒｉｎｇｉｎｇ  Ａｒｔｉｆａｃｔ）を軽減するために使用される。第１復元画像のパターンを考慮して決定されるオフセットを加算または減算することによって、ＳＡＯを実行することができる。オフセットの決定方法は、エッジオフセット（ＥＯ：Ｅｄｇｅ  Ｏｆｆｓｅｔ）またはバンドオフセット（Ｂａｎｄ  Ｏｆｆｓｅｔ）を含む。ＥＯは、周辺画素のパターンに基づいて、現在のサンプルのオフセットを決定する方法を示す。ＢＯは、領域内の同様の輝度値を持つ画素のグループに対して共通のオフセットを適用する方法を示す。具体的には、画素輝度を３２個の均等な区間に分けて、同様の輝度値を持つ画素を１つのグループとして設定することができる。例えば、３２個のバンドのうち、隣接する４つのバンドを１つのグループに設定し、４つのバンドに属するサンプルに同じオフセット値を適用することができる。
【０５６５】
ＡＬＦは、第１復元画像またはデブロッキングフィルタが適用された復元画像に、事前定義されたサイズ／形状のフィルタを適用して第２復元画像を生成する方法である。下記式３５は、ＡＬＦの適用例を示す。
【数３５】
2022501896.tif 000053
【０５６６】
画像、符号化ツリーユニット、符号化ブロック、予測ブロックまたは変換ブロック単位で、事前定義されたフィルタ候補のいずれかを選択することができる。各フィルタ候補のサイズまたは形状のいずれかが異なることができる。
【０５６７】
図４９は、事前定義されたフィルタ候補を示す図である。
【０５６８】
図４９に示される例では、５×５、７×７、および９×９サイズの菱形のうちの少なくとも１つを選択することができる。
【０５６９】
彩度成分については、５×５サイズの菱形のみを使用することができる。
【０５７０】
復号化プロセスまたは符号化プロセスに焦点を合わせて説明された実施例を、符号化プロセスまたは復号化プロセスに適用することは、本発明の範囲に含まれるものである。所定の順序で説明された実施例を、説明された順序とは異なる順序で変更したものも、本発明の範囲に含まれる。
【０５７１】
上述した実施例は、一連のステップまたはフローチャートに基づいて説明されたが、これは本発明の時系列的順序を限定するものではなく、前記ステップは、必要に応じて同時に実行するか、または他の順序で実行することができる。また、上述した実施例では、ブロック図を構成する各構成要素（例えば、ユニット、モジュールなど）は、ハードウェア装置またはソフトウェアによって実装されることができ、複数の構成要素を組み合わせて、単一のハードウェア装置またはソフトウェアとして実装できる。上述した実施例は、様々なコンピュータ構成要素をによって実行できるプログラム命令の形で実装でき、前記プログラム命令は、コンピュータ可読記憶媒体に記憶できる。前記コンピュータ可読記憶媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含むことができる。コンピュータ可読記憶媒体の例には、ハードディスク、フロッピーディスクおよび磁気テープなどの磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤなどの光学記憶媒体、フロプティカルディスク（ｆｌｏｐｔｉｃａｌ  ｄｉｓｋ）などの磁気−光媒体（ｍａｇｎｅｔｏ−ｏｐｔｉｃａｌ  ｍｅｄｉａ）、およびＲＯＭ、ＲＡＭ、フラッシュメモリなど、プログラム命令を記憶および実行するように特別に構成されるハードウェア装置が含まれることができる。前記ハードウェア装置は、本発明に係る処理を実行するための１つまたは複数のソフトウェアモジュールとして動作するように構成されることができ、その逆も同様である。
【産業上の利用可能性】
【０５７２】
本発明は、ビデオを符号化／復号化する電子機器に適用されることができる。
【図１】
2022501896.tif 000054
【図２】
2022501896.tif 000055
【図３】
2022501896.tif 000056
【図４】
2022501896.tif 000057
【図５】
2022501896.tif 000058
【図６】
2022501896.tif 000059
【図７】
2022501896.tif 000060
【図８】
2022501896.tif 000061
【図９】
2022501896.tif 000062
【図１０】
2022501896.tif 000063
【図１１】
2022501896.tif 000064
【図１２】
2022501896.tif 000065
【図１３】
2022501896.tif 000066
【図１４】
2022501896.tif 000067
【図１５】
2022501896.tif 000068
【図１６】
2022501896.tif 000069
【図１７】
2022501896.tif 000070
【図１８】
2022501896.tif 000071
【図１９】
2022501896.tif 000072
【図２０】
2022501896.tif 000073
【図２１】
2022501896.tif 000074
【図２２】
2022501896.tif 000075
【図２３】
2022501896.tif 000076
【図２４】
2022501896.tif 000077
【図２５】
2022501896.tif 000078
【図２６】
2022501896.tif 000079
【図２７】
2022501896.tif 000080
【図２８】
2022501896.tif 000081
【図２９】
2022501896.tif 000082
【図３０】
2022501896.tif 000083
【図３１（ａ）】
2022501896.tif 000084
【図３１（ｂ）】
2022501896.tif 000085
【図３２】
2022501896.tif 000086
【図３３】
2022501896.tif 000087
【図３４】
2022501896.tif 000088
【図３５】
2022501896.tif 000089
【図３６】
2022501896.tif 000090
【図３７】
2022501896.tif 000091
【図３８】
2022501896.tif 000092
【図３９】
2022501896.tif 000093
【図４０】
2022501896.tif 000094
【図４１】
2022501896.tif 000095
【図４２】
2022501896.tif 000096
【図４３】
2022501896.tif 000097
【図４４】
2022501896.tif 000098
【図４５】
2022501896.tif 000099
【図４６】
2022501896.tif 000100
【図４７】
2022501896.tif 000101
【図４８】
2022501896.tif 000102
【図４９】
2022501896.tif 000103
【国際調査報告】
2022501896.tif 000104
2022501896.tif 000105
2022501896.tif 000106
2022501896.tif 000107