(57)【要約】  ビットストリームから画像をデコードするための方法が提供され、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するためにビットストリームの第１の部分をデコードすることと、ビットストリームの第２の部分をデコードすることとを含む。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすることを含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値をデコードすることと、２）第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定することと、３）第１のセグメントグループアドレスに基づいて第１のセグメントグループに関する第１の空間ロケーションを決定することであって、第１の空間ロケーションが、画像内の第１のセグメントグループのロケーションを表す、第１の空間ロケーションを決定することと、４）第１のセグメントグループに関する少なくとも１つのサンプル値をデコードし、第１の空間ロケーションによって与えられたデコードされた画像におけるロケーションに少なくとも１つのサンプル値を割り振ることとを含む。【選択図】図９
2021528879.tif 000002
【特許請求の範囲】
【請求項１】
ビットストリームから画像をデコードするための方法であって、前記画像が複数のセグメントグループへと区分されており、
セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するために前記ビットストリームの第１の部分をデコードすることと、
前記ビットストリームの第２の部分をデコードすることとを含み、
前記ビットストリームの前記第２の部分が、前記複数のセグメントグループを表すコードワードを含み、
前記ビットストリームの前記第２の部分をデコードすることが、第１のセグメントグループをデコードすることを含み、
前記第１のセグメントグループをデコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値をデコードすることと、
２）前記第１のセグメントグループインデックス値および前記アドレスマッピングに基づいて前記第１のセグメントグループに関する第１のセグメントグループアドレスを決定することと、
３）前記第１のセグメントグループアドレスに基づいて前記第１のセグメントグループに関する第１の空間ロケーションを決定することであって、前記第１の空間ロケーションが、前記画像内の前記第１のセグメントグループのロケーションを表す、第１の空間ロケーションを決定することと、
４）前記第１のセグメントグループに関する少なくとも１つのサンプル値をデコードし、前記第１の空間ロケーションによって与えられた前記デコードされた画像におけるロケーションに前記少なくとも１つのサンプル値を割り振ることとを含む、方法。
【請求項２】
前記アドレスマッピングが、配列および／またはリスト、配列および／またはリストの並行セット、ハッシュマップ、ならびに連想配列のうちの１つまたは複数を含む、請求項１に記載の方法。
【請求項３】
前記アドレスマッピングを形成するために前記ビットストリームの前記第１の部分をデコードすることが、
リスト値の数を示す第１の値を前記ビットストリームからデコードすることと、
リスト値の数を前記ビットストリームからデコードすることによってリストを形成することであって、リスト値の前記数が前記第１の値に等しい、リストを形成することとを含む、請求項１または２に記載の方法。
【請求項４】
前記第１のセグメントグループインデックス値および前記アドレスマッピングに基づいて前記第１のセグメントグループに関する前記第１のセグメントグループアドレスを決定することが、前記第１のセグメントグループインデックス値を使用してルックアップ演算を実行することを含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記アドレスマッピングを形成するために前記ビットストリームの前記第１の部分をデコードすることが、
リスト値の数を示す第１の値を前記ビットストリームからデコードすることと、
キー／値ペアｋおよびｖを表す値の数を前記ビットストリームからデコードすることによって第１のリスト（ＫＥＹ）および第２のリスト（ＶＡＬＵＥ）を形成することであって、キー／値ペアの前記数が、前記第１の値に等しく、前記第１のリストが、前記キー／値ペアの前記キーｋを含み、前記第２のリストが、前記キー／値ペアの前記値ｖを含み、前記第１のリストおよび前記第２のリストの順序付けは、所与のキー／値ペアに関して、前記第１のリストにおける前記所与のキーｋに関するインデックスが前記第２のリストにおける前記所与の値ｖに関するインデックスに対応するようになっている、第１のリスト（ＫＥＹ）および第２のリスト（ＶＡＬＵＥ）を形成することとを含む、請求項１または２に記載の方法。
【請求項６】
前記アドレスマッピングを形成するために前記ビットストリームの前記第１の部分をデコードすることが、
ハッシュ値の数を示す第１の値を前記ビットストリームからデコードすることと、
キー／値ペアｋおよびｖを表す値の数を前記ビットストリームからデコードすることによってハッシュマップを形成することであって、キー／値ペアの前記数が、前記第１の値に等しく、所与のキー／値ペアに関して、前記所与のキーｋに関するインデックスが、前記ハッシュマップによって所与の値ｖにマップされる、ハッシュマップを形成することとを含む、請求項１または２に記載の方法。
【請求項７】
前記第１のセグメントグループインデックス値および前記アドレスマッピングに基づいて前記第１のセグメントグループに関する前記第１のセグメントグループアドレスを決定することが、
インデックス（ｉ）を、前記第１のリストにおける前記インデックスに対応する前記値（ＫＥＹ［ｉ］）が前記第１のセグメントグループインデックス値にマッチするように決定することと、
前記第１のセグメントグループアドレスが、前記第２のリストにおける前記インデックスに対応する前記値（ＶＡＬＵＥ［ｉ］）であると決定することとを含む、請求項５に記載の方法。
【請求項８】
前記第１のセグメントグループインデックス値および前記アドレスマッピングに基づいて前記第１のセグメントグループに関する前記第１のセグメントグループアドレスを決定することが、前記第１のセグメントグループインデックス値を使用してハッシュルックアップ演算を実行することを含む、請求項５または６に記載の方法。
【請求項９】
デコードされるキー／値ペアｋおよびｖを表す前記値が、前記キーｋを表すデルタ値を含み、それによって、前記第１のキー／値ペアに関して、前記キーｋが前記デルタ値によって決定され、その他のキー／値ペアに関して、前記キーｋが、以前に決定されたキー値に前記デルタ値を加えて前記現在のキーｋを生成することによって決定される、請求項５から７のいずれか一項に記載の方法。
【請求項１０】
セグメントグループがタイルグループに対応する、請求項１から９のいずれか一項に記載の方法。
【請求項１１】
セグメントグループがサブピクチャーに対応する、請求項１から１０のいずれか一項に記載の方法。
【請求項１２】
セグメントがスライスに対応する、請求項１から１１のいずれか一項に記載の方法。
【請求項１３】
セグメントグループが、１つまたは複数のセグメントを含む、請求項１から１２のいずれか一項に記載の方法。
【請求項１４】
セグメントグループが、１つのセグメントのみを含む、請求項１から１２のいずれか一項に記載の方法。
【請求項１５】
前記ビットストリームの前記第１の部分が、パラメータセットに含まれ、前記方法がさらに、さらなるセグメントグループをデコードすることを含み、前記アドレスマッピングが、前記さらなるセグメントグループをデコードするために使用される、請求項１から１４のいずれか一項に記載の方法。
【請求項１６】
前記ビットストリームの前記第１の部分が、パラメータセットに含まれ、前記方法がさらに、さらなる画像をデコードすることを含み、前記アドレスマッピングが、前記さらなる画像をデコードするために使用される、請求項１から１５のいずれか一項に記載の方法。
【請求項１７】
ビットストリームから画像をデコードするための方法であって、前記画像が複数のセグメントグループへと区分されており、
セグメントグループインデックス値を、第１のセグメントグループに関してデコードされることになるセグメントの数にマップする、サイズマッピングを形成するために前記ビットストリームの第１の部分をデコードすることと、
前記ビットストリームの第２の部分をデコードすることとを含み、
前記ビットストリームの前記第２の部分が、前記複数のセグメントグループを表すコードワードを含み、
前記ビットストリームの前記第２の部分をデコードすることが、第１のセグメントグループをデコードすることを含み、
前記第１のセグメントグループをデコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値をデコードすることと、
２）前記第１のセグメントグループインデックス値および前記サイズマッピングに基づいて前記第１のセグメントグループに関する第１のサイズを決定することと、
３）前記デコードされた画像を形成するためにセグメントの数をデコードすることであって、セグメントの前記数が前記第１のサイズに等しい、セグメントの数をデコードすることとを含む、方法。
【請求項１８】
前記サイズマッピングが、配列および／またはリスト、配列および／またはリストの並行セット、ハッシュマップ、ならびに連想配列のうちの１つまたは複数を含む、請求項１７に記載の方法。
【請求項１９】
前記サイズマッピングを形成するために前記ビットストリームの前記第１の部分をデコードすることが、
リスト値の数を示す第１の値を前記ビットストリームからデコードすることと、
リスト値の数を前記ビットストリームからデコードすることによってリストを形成することであって、リスト値の前記数が前記第１の値に等しい、リストを形成することとを含む、請求項１７または１８に記載の方法。
【請求項２０】
前記第１のセグメントグループインデックス値および前記サイズマッピングに基づいて前記第１のセグメントグループに関する前記第１のサイズを決定することが、前記第１のセグメントグループインデックス値を使用してルックアップ演算を実行することを含む、請求項１９に記載の方法。
【請求項２１】
セグメントグループがタイルグループに対応する、請求項１７から２０のいずれか一項に記載の方法。
【請求項２２】
セグメントグループがサブピクチャーに対応する、請求項１７から２１のいずれか一項に記載の方法。
【請求項２３】
セグメントがスライスに対応する、請求項１７から２２のいずれか一項に記載の方法。
【請求項２４】
セグメントグループが、１つまたは複数のセグメントを含む、請求項１７から２３のいずれか一項に記載の方法。
【請求項２５】
セグメントグループが、１つのセグメントのみを含む、請求項１７から２３のいずれか一項に記載の方法。
【請求項２６】
画像をビットストリームへとエンコードするための方法であって、前記画像が複数のセグメントグループへと区分されており、
セグメントグループインデックス値を前記複数のセグメントグループに関するセグメントグループアドレスにマップするアドレスマッピングを決定することと、
前記ビットストリームの第１の部分をエンコードすることと、
前記ビットストリームの第２の部分をエンコードすることとを含み、
前記ビットストリームの前記第１の部分をエンコードすることが、セグメントグループインデックス値をセグメントグループアドレスにマップする前記アドレスマッピングを形成するコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、前記複数のセグメントグループを表すコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、第１のセグメントグループをエンコードすることを含み、
前記第１のセグメントグループをエンコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループアドレスから第１のセグメントグループインデックス値を決定することであって、前記アドレスマッピングが、前記第１のセグメントグループインデックス値を前記第１のセグメントグループアドレスにマップする、第１のセグメントグループインデックス値を決定することと、
２）前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値をエンコードすることと、
３）前記第１のセグメントグループに関するサンプル値をエンコードすることとを含む、方法。
【請求項２７】
前記第１のセグメントグループインデックス値をエンコードすることが、前記第１のセグメントグループインデックス値を表す１つまたは複数のコードワードを生成することを含む、請求項２６に記載の方法。
【請求項２８】
画像をビットストリームへとエンコードするための方法であって、前記画像が複数のセグメントグループへと区分されており、
セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを決定することと、
前記ビットストリームの第１の部分をエンコードすることと、
前記ビットストリームの第２の部分をエンコードすることとを含み、
前記ビットストリームの前記第１の部分をエンコードすることが、セグメントグループインデックス値を、前記第１のセグメントグループに関してエンコードされることになるセグメントの数にマップする、前記サイズマッピングを形成するコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、前記複数のセグメントグループを表すコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、第１のセグメントグループをエンコードすることを含み、
前記第１のセグメントグループをエンコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値を決定することであって、前記サイズマッピングが、前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値を第１のサイズにマップし、前記第１のサイズが、前記第１のセグメントグループに関してエンコードされることになるセグメントの数である、第１のセグメントグループインデックス値を決定することと、
２）前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値をエンコードすることと、
３）前記第１のセグメントグループに関するセグメントの数をエンコードすることであって、セグメントの前記数が前記第１のサイズに等しい、セグメントの数をエンコードすることとを含む、方法。
【請求項２９】
前記第１のセグメントグループインデックス値をエンコードすることが、前記第１のセグメントグループインデックス値を表す１つまたは複数のコードワードを生成することを含む、請求項２８に記載の方法。
【請求項３０】
請求項１から２５のいずれか一項を実行するように適合されているデコーダ。
【請求項３１】
請求項２６から２９のいずれか一項を実行するように適合されているエンコーダ。
【請求項３２】
ビットストリームから画像をデコードするためのデコーダであって、前記画像が複数のセグメントグループへと区分されており、
デコーディングユニットおよび決定ユニットを含み、
前記デコーディングユニットが、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するために前記ビットストリームの第１の部分をデコードするように設定されており、
前記デコーディングユニットがさらに、前記ビットストリームの第２の部分をデコードするように設定されており、
前記ビットストリームの前記第２の部分が、前記複数のセグメントグループを表すコードワードを含み、前記ビットストリームの前記第２の部分をデコードすることが、第１のセグメントグループをデコードすることを含み、前記第１のセグメントグループをデコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値を（前記デコーディングユニットによって）デコードすることと、
２）前記第１のセグメントグループインデックス値および前記アドレスマッピングに基づいて前記第１のセグメントグループに関する第１のセグメントグループアドレスを（前記決定ユニットによって）決定することと、
３）前記第１のセグメントグループアドレスに基づいて前記第１のセグメントグループに関する第１の空間ロケーションを（前記決定ユニットによって）決定することであって、前記第１の空間ロケーションが、前記画像内の前記第１のセグメントグループのロケーションを表す、第１の空間ロケーションを（前記決定ユニットによって）決定することと、
４）前記第１のセグメントグループに関する少なくとも１つのサンプル値を（前記デコーディングユニットによって）デコードし、前記第１の空間ロケーションによって与えられた前記デコードされた画像におけるロケーションに前記少なくとも１つのサンプル値を割り振ることとを含む、デコーダ。
【請求項３３】
ビットストリームから画像をデコードするためのデコーダであって、前記画像が複数のセグメントグループへと区分されており、
デコーディングユニットおよび決定ユニットを含み、
前記デコーディングユニットが、セグメントグループインデックス値を、第１のセグメントグループに関してデコードされることになるセグメントの数にマップする、サイズマッピングを形成するために前記ビットストリームの第１の部分をデコードするように設定されており、
前記デコーディングユニットがさらに、前記ビットストリームの第２の部分をデコードするように設定されており、
前記ビットストリームの前記第２の部分が、前記複数のセグメントグループを表すコードワードを含み、前記ビットストリームの前記第２の部分をデコードすることが、第１のセグメントグループをデコードすることを含み、前記第１のセグメントグループをデコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値を（前記デコーディングユニットによって）デコードすることと、
２）前記第１のセグメントグループインデックス値および前記サイズマッピングに基づいて前記第１のセグメントグループに関する第１のサイズを（前記決定ユニットによって）決定することと、
３）前記デコードされた画像を形成するためにセグメントの数を（前記デコーディングユニットによって）デコードすることであって、セグメントの前記数が前記第１のサイズに等しい、セグメントの数を（前記デコーディングユニットによって）デコードすることとを含む、デコーダ。
【請求項３４】
ビットストリームからの画像をエンコードするためのエンコーダであって、前記画像が、複数のセグメントグループへと区分されており、
エンコーディングユニットおよび決定ユニットを含み、
前記決定ユニットが、セグメントグループインデックス値を前記複数のセグメントグループに関するセグメントグループアドレスにマップするアドレスマッピングを決定するように設定されており、
前記エンコーディングユニットが、前記ビットストリームの第１の部分をエンコードするように設定されており、
前記エンコーディングユニットがさらに、前記ビットストリームの第２の部分をエンコードするように設定されており、
前記ビットストリームの前記第１の部分をエンコードすることが、セグメントグループインデックス値をセグメントグループアドレスにマップする前記アドレスマッピングを形成するコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、前記複数のセグメントグループを表すコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、第１のセグメントグループをエンコードすることを含み、前記第１のセグメントグループをエンコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループアドレスから第１のセグメントグループインデックス値を（前記決定ユニットによって）決定することであって、前記アドレスマッピングが、前記第１のセグメントグループインデックス値を前記第１のセグメントグループアドレスにマップする、第１のセグメントグループインデックス値を（前記決定ユニットによって）決定することと、
２）前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値を（前記エンコーディングユニットによって）エンコードすることと、
３）前記第１のセグメントグループに関するサンプル値を（前記エンコーディングユニットによって）エンコードすることとを含む、エンコーダ。
【請求項３５】
画像をビットストリームへとエンコードするためのエンコーダであって、前記画像が、複数のセグメントグループへと区分されており、
エンコーディングユニットおよび決定ユニットを含み、
前記決定ユニットが、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを決定するように設定されており、
前記エンコーディングユニットが、前記ビットストリームの第１の部分をエンコードするように設定されており、
前記エンコーディングユニットがさらに、前記ビットストリームの第２の部分をエンコードするように設定されており、
前記ビットストリームの前記第１の部分をエンコードすることが、セグメントグループインデックス値を、前記第１のセグメントグループに関してエンコードされることになるセグメントの数にマップする、前記サイズマッピングを形成するコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、前記複数のセグメントグループを表すコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、第１のセグメントグループをエンコードすることを含み、前記第１のセグメントグループをエンコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値を（前記決定ユニットによって）決定することであって、前記サイズマッピングが、前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値を第１のサイズにマップし、前記第１のサイズが、前記第１のセグメントグループに関してエンコードされることになるセグメントの数である、第１のセグメントグループインデックス値を（前記決定ユニットによって）決定することと、
２）前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値を（前記エンコーディングユニットによって）エンコードすることと、
３）前記第１のセグメントグループに関するセグメントの数を（前記エンコーディングユニットによって）エンコードすることであって、セグメントの前記数が前記第１のサイズに等しい、セグメントの数を（前記エンコーディングユニットによって）エンコードすることとを含む、エンコーダ。
【請求項３６】
ノードの処理回路によって実行されたときに、請求項１から２９のいずれか一項に記載の方法を前記ノードに実行させる命令を含むコンピュータプログラム。
【請求項３７】
請求項３６に記載のコンピュータプログラムを含むキャリアであって、電子信号、光信号、無線信号、およびコンピュータ可読ストレージメディアのうちの１つであるキャリア。
【発明の詳細な説明】
【技術分野】
【０００１】
ビデオエンコーディングおよびデコーディングに関連した実施形態が開示される。
【背景技術】
【０００２】
高効率ビデオコーディング（ＨＥＶＣ）は、時間的なおよび空間的な予測の両方を利用するＩＴＵ−ＴおよびＭＰＥＧによって標準化されているブロックベースのビデオコーデックである。エンコーダにおいて、最初のピクセルデータと、予測されたピクセルデータとの間における差（残差と呼ばれる）が、周波数ドメインへと変換され、量子化され、次いでエントロピーコーディングされ、その後に予測モードおよびモーションベクトルなどの必要な予測パラメータ（これらの予測パラメータもエントロピーコーディングされる）とともに送信される。変換された残差を量子化することによって、ビットレートと、ビデオの品質との間におけるトレードオフが制御されることが可能である。デコーダは、エントロピーデコーディング、逆量子化、および逆方向変換を実行して、残差を得て、次いでその残差を画面内または画面間予測に加えて、画像を再構築する。
【０００３】
ＭＰＥＧおよびＩＴＵ−Ｔは、共同ビデオ探索チーム（ＪＶＥＴ）内で、ＨＥＶＣに取って代わるものについて作業している。開発中のこのビデオコーデックの名前は、バーサタイルビデオコーディング（ＶＶＣ）である。
【０００４】
ドラフトＶＶＣビデオコーディング標準は、クワッドツリープラスバイナリーツリープラスターナリーツリーブロック構造（ＱＴＢＴ＋ＴＴ）と呼ばれるブロック構造を使用しており、そこでは、それぞれの画像が最初に、コーディングツリーユニット（ＣＴＵ）と呼ばれる正方形のブロックへと区分される。すべてのＣＴＵのサイズは同じであり、区分は、それを制御するいかなるシンタックスも伴わずに行われる。それぞれのＣＴＵは、正方形または長方形の形状を有することが可能であるコーディングユニット（ＣＵ）へとさらに区分される。ＣＴＵは、最初にクワッドツリー構造によって区分され、次いでバイナリー構造において、垂直にまたは水平に、等しいサイズのパーティションを用いてさらに区分されて、ＣＵを形成することが可能である。ブロックは、このように正方形または長方形の形状を有することが可能である。クワッドツリーおよびバイナリーツリーの深さは、ビットストリームにおいてエンコーダによって設定されることが可能である。ＱＴＢＴを使用してＣＴＵを分割することの一例が、図１において示されている。この構造のターナリーツリー（ＴＴ）部分は、ＣＵを２つの等しいサイズのパーティションの代わりに３つのパーティションへと分割する可能性を加え、これによって、画像におけるコンテンツ構造によりよくフィットするブロック構造を使用する可能性が高まる。
【０００５】
ドラフトＶＶＣビデオコーディング標準は、画像を長方形の空間的に独立した領域へと分割するタイルと呼ばれるツールを含む。ドラフトＶＶＣコーディング標準におけるタイルは、ＨＥＶＣにおいて使用されるタイルに非常に似ている。タイルを使用すると、ＶＶＣにおける画像が、サンプルの行および列へと区分されることが可能であり、そこでは１つのタイルが、１つの行と１つの列との交わり部分である。図２は、画像に関して４つのタイル行および５つのタイル列、結果として合計で２０個のタイルを使用するタイル区分の一例を示している。
【０００６】
タイル構造は、行の厚さおよび列の幅を指定することによって画像パラメータセット（ＰＰＳ）においてシグナリングされる。個々の行および列は、別々のサイズを有することが可能であるが、区分は常に、左から右へ、および上から下へそれぞれ、画像全体にわたる。
【０００７】
ドラフトＶＶＣ標準においてタイル構造を指定するために使用されるＰＰＳシンタックスが、テーブル１において列挙されている。最初に、タイルが使用されるか否かを示すｓｉｎｇｌｅ＿ｔｉｌｅ＿ｉｎ＿ｐｉｃ＿ｆｌａｇというフラグがある。このフラグが０に等しく設定される場合には、タイル列およびタイル行の数が指定される。ｕｎｉｆｏｒｍ＿ｔｉｌｅ＿ｓｐａｃｉｎｇ＿ｆｌａｇは、列の幅および行の高さが明示的にシグナリングされるかどうか、またはタイル境界の間隔を均一にするための事前に規定された方法が使用されるべきであるかどうかを指定するフラグである。明示的なシグナリングが示される場合には、列の幅が、順に行の高さを伴ってシグナリングされる。最後に、ｌｏｏｐ＿ｆｉｌｔｅｒ＿ａｃｒｏｓｓ＿ｔｉｌｅｓ＿ｅｎａｂｌｅｄ＿ｆｌａｇは、タイル境界にわたるインループフィルタが画像におけるすべてのタイル境界に関してオンにされるかまたはオフにされるかを指定する。タイルシンタックスはまた、ローバイトシーケンスペイロード（ＲＢＳＰ）トレーリングビットを含む。
【０００８】
2021528879.tif 000003
【０００９】
同じ画像のタイルの間には、デコーディングの依存関係はない。これは、画面内予測、エントロピーコーディングのためのコンテキスト選択、およびモーションベクトル予測を含む。１つの例外は、インループフィルタリングの依存関係がタイル間において一般に認められているということである。
【００１０】
ＶＶＣにおけるコーディングされている画像のビットは、ｔｉｌｅ＿ｇｒｏｕｐ＿ｌａｙｅｒ＿ｒｂｓｐ（）というデータチャンクへと区分され、この場合、それぞれのそのようなチャンクは、それ自体のグループのネットワーク抽象化レイヤ（ＮＡＬ）ユニット内に封入される。このデータチャンクは、タイルグループヘッダおよびタイルグループデータから構成され、タイルグループデータは、整数個のコーディングされている完全なタイルから構成される。テーブル２は、関連したドラフトＶＶＣ仕様標準シンタックスを示している。ｔｉｌｅ＿ｇｒｏｕｐ＿ｈｅａｄｅｒ（）およびｔｉｌｅ＿ｇｒｏｕｐ（）のデータシンタックスが、以降でさらに記述されている。
【００１１】
2021528879.tif 000004
【００１２】
タイルグループヘッダは、ｔｉｌｅ＿ｇｒｏｕｐ＿ｐｉｃ＿ｐａｒａｍｅｔｅｒ＿ｓｅｔ＿ｉｄというシンタックス要素で開始する。この要素は、タイルグループをデコードするためにアクティブ化されて使用されるべきである画像パラメータセット（ＰＰＳ）を指定する（テーブル１を参照されたい）。タイルグループアドレスコードワードは、タイルグループにおける第１のタイルのタイルアドレスを指定する。そのアドレスは、０とｎ−１との間における数としてシグナリングされ、その場合、ｎは画像におけるタイルの数である。一例として図２を使用すると、存在するタイルの数は２０に等しく、それによって、この画像に関する有効なタイルグループアドレス値は、０と１９との間である。タイルアドレスは、タイルをラスタ走査順で指定し、図２の下部において示されている。デコーダが、このアドレス値をデコードし、アクティブなＰＰＳからデコードされたタイル構造情報を使用することによって、デコーダは、画像における第１のタイルの空間座標を導出することが可能である。たとえば、図２におけるタイルがすべて、同じサイズの２５６×２５６のルマサンプルを有すると想定する場合には、８というタイルアドレスは、タイルグループにおける第１のタイルのｙ座標が、ｉｎｔ（８／５）＊２５６＝１＊２５６＝２５６であり、ｘ座標が、ルマサンプルにおける（８％５）＊２５６＝３＊２５６＝７６８であるということを意味する。
【００１３】
タイルグループヘッダにおける次のコードワード、ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１は、タイルグループ内にあるタイルの数を指定する。タイルグループにおいて複数のタイルがある場合には、第１のタイルを除くタイルのエントリーポイントがシグナリングされる。最初に、オフセットのうちのそれぞれをシグナリングするために使用されるビットの数を指定するｏｆｆｓｅｔ＿ｌｅｎ＿ｍｉｎｕｓ１というコードワードがある。次いで、エントリーポイントオフセットコードワードのリスト、ｅｎｔｒｙ＿ｐｏｉｎｔ＿ｏｆｆｓｅｔ＿ｍｉｎｕｓ１がある。これらは、それぞれのタイルを並行してデコードする目的でそれぞれのタイルの開始ポイントを見つけ出すためにデコーダによって使用されることが可能であるビットストリームにおけるバイトオフセットを指定する。これらのオフセットがなければ、デコーダは、ビットストリームにおいてそれぞれのタイルがどこで開始するかを見つけ出すためにタイルデータを解析しなければならないであろう。タイルグループにおける第１のタイルは、タイルグループヘッダのすぐ後に続き、したがって、そのタイルのために送られるバイトオフセットはない。これは、オフセットの数がタイルグループにおけるタイルの数よりも１少ないということを意味している。
【００１４】
2021528879.tif 000005
【００１５】
タイルグループデータは、タイルグループにおけるすべてのＣＴＵを含む。最初に、タイルグループにおけるすべてのタイルにわたるｆｏｒループがある。そのループの内側に、タイルにおけるすべてのＣＴＵにわたるｆｏｒループがある。別々のタイルにおけるＣＴＵの数は異なる場合があるということに留意されたい。なぜなら、タイル行の高さおよびタイル列の幅は等しくなくてもよいからである。エントロピーコーディングの理由のために、それぞれのタイルの終わりに１に設定されたビットがある。それぞれのタイルは、バイトアラインメントを伴って終了し、これは、タイルグループにおけるそれぞれのタイルに関するデータが、ビットストリームにおける偶数バイトアドレス上で開始するということを意味する。これは、エントリーポイントがバイトの数で指定される上で必要である。タイルグループヘッダも、バイトアラインメントを伴って終了するということに留意されたい。
【００１６】
2021528879.tif 000006
【００１７】
タイルに関するヘッダオーバーヘッドは、シグナリングアドレス、タイルグループにおけるタイルの数、バイトアラインメント、およびそれぞれのタイルに関するエントリーポイントオフセットから構成される。ドラフトＶＶＣ標準においては、タイルが有効にされる場合には、タイルグループヘッダにエントリーポイントオフセットを含めることが必須である。
【００１８】
エントリーポイントオフセットはまた、タイルグループまたはタイルを出力ストリームへと再構成するためのそれらのタイルグループまたはタイルの抽出およびスティッチングを簡略化する。これは、タイルグループまたはタイルを時間的に独立させるためのいくらかのエンコーダ側の制約を必要とする。エンコーダの制約のうちの１つとして、モーションベクトルは、タイルグループまたはタイルに関する動き補償が、前の画像の空間的に同一場所に配置されている領域に含まれているサンプルを使用するだけであるように制限される必要がある。別の制約は、このプロセスが、同一場所に配置されていない領域から時間的に独立させられるように時間的動きベクトル予測（ＴＭＶＰ）を制限することである。完全な独立のためには、タイルグループまたはタイルの間におけるインループフィルタリングを無効にすることも必要とされる。
【００１９】
タイルは、ヘッドマウントディスプレイ（ＨＭＤ）デバイスを使用した消費用に意図されている３６０度ビデオの抽出およびスティッチングのために使用される場合がある。今日のＨＭＤデバイスを使用しているときの視界は、全範囲の約２０％に限定され、それは、３６０度ビデオ全体の２０％しかユーザによって消費されていないということを意味している。３６０度ビデオの範囲全体が、ＨＭＤデバイスにとって利用可能にされるということ、およびデバイスは次いで、ユーザのためにレンダリングされる部分を切り取るということが一般的である。その部分は、すなわち、その範囲のどの部分をユーザが見るかは、ビューポートと呼ばれる。リソースのよく知られている最適化は、頭の動きと、ユーザが見ている方向とをＨＭＤデバイスビデオシステムに認識させることであり、それによって、ユーザに対してレンダリングされないビデオサンプルを処理する上で費やされるリソースが少なくなる。ここでのリソースは、サーバからクライアントへの帯域幅またはデバイスのデコーディング能力であることが可能である。現況技術よりも大きな視野を有する将来のＨＭＤデバイスに関しては、不均一なリソース割り当てが、依然として有益であろう。なぜなら、人間の視覚システムは、中央の視覚エリア（約１８°の水平ビュー）においては、より高いイメージ品質を需要し、その一方で周辺領域（快適な水平ビューに関しては、約１２０°以上）におけるイメージ品質上には、より低い需要を置くからである。
【００２０】
関心領域（ＲＯＩ）に対してリソースを最適化することが、タイルに関する別の使用事例である。ＲＯＩが、コンテンツにおいて指定されること、またはアイトラッキングなどの方法によって抽出されることが可能である。
【００２１】
必要とされるリソースの量を低減するために頭の動きを使用する現況技術の一方法が、タイルを使用することである。これは、最初にビデオシーケンスを複数回にわたってエンコードすることによって行われることが可能であり、この場合、タイル区分構造は、すべてのエンコーディングにおいて同じである。エンコーディングは、別々のビデオ品質で行われ、その結果、少なくとも１つの高品質のエンコーディングおよび１つの低品質のエンコーディングがもたらされる。これは、特定の時点におけるそれぞれのタイルロケーションに関して、少なくとも１つの高品質のタイル表示および少なくとも１つの低品質のタイル表示があるということを意味している。高品質のタイルと低品質のタイルとの間における差は、高品質のタイルが、低品質のタイルよりも高いビットレートでエンコードされているということ、または高品質のタイルが、低品質のタイルよりも高い解像度のものであるということであり得る。
【００２２】
図３は、高品質のタイルを有する１つのストリーム３０２、および低品質のタイルを有する別のストリーム３０４へのビデオのエンコーディングの一例を示している。ここでは、それぞれのタイルが自分自身のタイルグループに置かれていると想定する。タイルは、ＶＶＣドラフトにおいては、ラスタ走査順に番号付けられ、それは、ここでは白色のテキストを使用して示されている。これらのタイル番号は、タイルグループアドレスとして使用される。どこをユーザが見ているかに応じて、クライアントは、別々の品質のタイルを要求し、それによって、ユーザが見ている場所に対応するタイルは、高い品質で受信され、ユーザが見ていないタイルは、低い品質で受信される。クライアントは次いで、ビットストリームドメインにおいてタイルをスティッチし、出力ビットストリームをビデオデコーダへフィードする。たとえば、図３は、スティッチング後の出力ストリーム３０６を示しており、そこでは、タイル列３１０および３１６（外側の２つの列）が、低い品質のストリーム３０４からのタイルで構成されており、またそこでは、タイル列３１２および３１６（内側の２つの列）が、高い品質のストリーム３０２からのタイルで構成されている。出力画像の幅は、入力よりも小さいということに留意されたい。その理由は、ユーザが見ている場所の後ろのエリアに関してはタイルがまったく要求されないとここでは想定していることである。
【発明の概要】
【００２３】
スティッチングは、出力ビットストリームがビットストリーム仕様（将来発行されるＶＶＣ仕様など）に準拠しているように行われることが重要であり、それによって、いかなる標準に準拠しているデコーダも、いかなる修正も伴わずに、出力ストリームをデコードするために使用されることが可能である。図３において示されているスティッチングの例がＶＶＣドラフト仕様に準拠しているためには、タイルグループアドレス（タイルグループヘッダにおけるｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓというコードワード）が、スティッチャーによって更新される必要がある。たとえば、出力画像における右下のタイルグループに関するタイルグループアドレスは、１５に等しく設定されなければならず、その一方で、入力された低品質のストリームおよび高品質のストリームにおけるそのタイルに関するタイルグループアドレスは、１９に等しい。
【００２４】
たとえばタイルのスティッチングを改善するために、ビデオをエンコードおよびデコードすることを改善する実施形態が提供されている。本開示はまた、セグメントグループ、セグメント、およびユニットという用語を導入している。本明細書において使用される際には、セグメントという用語は、タイル（ＶＶＣドラフトにおいて使用されているもの）よりも一般的な用語であり、実施形態は、ＨＥＶＣおよびＶＶＣドラフトから知られているタイルパーティションだけでなく、さまざまな種類の画像区分スキームに適用可能であるということに留意されたい。本明細書において使用される際には、これらのドラフトからの「タイル」は、セグメントの一例であるが、セグメントのその他の例もあり得る。
【００２５】
図４において示されているように、ビデオストリームの単一の画像４０２が、さまざまな方法で区分される。たとえば、画像４０２は、ユニット４１０、セグメント４１２、およびセグメントグループ４１４へと区分される。示されているように、画像４０２は、６４個のユニット４１０（図４の上部）、１６個のセグメント４１２（図４の中部）、および８個のセグメントグループ４１４（図４の下部）を含む。示されているように、画像４０２のパーティション構造４１３（破線によって示されている）が、セグメント４１２を規定している。それぞれのセグメント４１２は、複数のユニット４１０を含む。１つのセグメント４１２は、整数個の完全なユニット、または完全なユニットと部分的なユニットとの組合せを含むことが可能である。複数のセグメント４１２が、１つのセグメントグループ４１４を形成している。セグメントグループは、セグメントをラスタ走査順に含むことが可能である。あるいは、セグメントグループは、ともに長方形を形成するセグメントの任意のグループを含むことが可能である。あるいは、セグメントグループは、セグメントの任意のサブセットから構成されることが可能である。
【００２６】
図５において示されているように、画像４０２が、パーティション構造（破線で示されている）によって複数のセグメントへと区分されることが可能であり、ここでは、セグメント５０２および５０４を含めて、示されている４つのセグメントがある。図５はまた、３つのユニット５１０、５１２、および５１４を示しており、これらのユニットのうちの２つ（５１２および５１４）は、現在のセグメント５０４に属しており、それらのユニットのうちの１つ（５１０）は、異なる隣のセグメント５０２に属している。それらのセグメントは、その他のセグメントに対して独立しており、これは、ユニットをデコードする際にセグメント境界が画像境界と同様に取り扱われるということを意味している。これは、たとえば、画面内予測モードの導出、および量子化パラメータ値の導出など、デコーディング中の要素の導出プロセスに影響を与える。
【００２７】
画面内予測モードは、現在の当技術分野においてよく知られており、サンプル予測のために現在の画像の以前にデコードされたサンプルからの予測を使用するだけであるユニットのために使用されシグナリングされる。現在のユニット５１２における画面内予測モードの導出は、その他の隣のユニット５１４における以前に導出された画面内予測モードに依存するということが一般的である。セグメントが独立していることに伴って、現在のユニット５１２における画面内予測モードの導出は、現在のセグメント５０４に属しているユニット５１４における以前に導出された画面内予測モードに依存するだけであることが可能であり、異なるセグメント５０２に属しているいずれのユニット５１０におけるいずれの画面内予測モードにも依存しないことが可能である。
【００２８】
これは、図５におけるパーティション構造が、異なるセグメント５０２におけるユニット５１０における画面内予測モードを、現在のセグメント５０４におけるユニット５１２に関する画面内予測モードの導出のために利用できなくするということを意味している。したがってセグメント境界は、現在のセグメント５０４におけるユニット５１２に関する画像境界と同じ効果を画面内予測モードの導出上に及ぼすことが可能である。異なるセグメント５０２におけるいくつかのユニット５１０におけるモードは、現在のセグメント５０４におけるユニット５１２における画面内予測モードの導出のために使用されていた可能性が当然ある（それらのユニットが、同じセグメントに属していたであろう場合）ということに留意されたい。
【００２９】
本明細書において使用される際には、セグメントは、（いくつかのケースにおいては）タイルまたはスライスと同等であることが可能であり、これらの用語はしたがって、言い換え可能に使用されることが可能である。同様に、セグメントグループは、（いくつかのケースにおいては）タイルグループと同等であることが可能であり、ユニットは、（いくつかのケースにおいては）ＣＴＵと同等であることが可能である。
【００３０】
上で説明されているように、プロセスは、入力として１つまたは複数のビットストリームを取り、それらの１つまたは複数の入力ビットストリームからタイルを選択することによって出力ビットストリームを生成することを希望する場合があり、そのようなプロセスは、スティッチングプロセスと呼ばれる場合がある。既存のビデオエンコーディングおよびデコーディングソリューションに伴う問題は、将来発行されるＶＶＣ仕様などのビットストリーム仕様に準拠している出力ビットストリームを生成するためにタイルグループレイヤのデータがスティッチングプロセスによって修正されることを必要とされる場合があるということである。これは、スティッチングを高度に計算の面で複雑にする。なぜなら、書き直されなければならない毎秒のパケットの数が、非常に多くなる可能性があるからである。たとえば、６０フレーム／秒（ｆｐｓ）のフレームレートを考えていただきたい。この場合、それぞれの画像は、１６個のタイルグループを含む。それぞれのタイルが自分自身のパケットに置かれている場合には、毎秒９６０（＝６０＊１６）個のパケットが書き直されることを必要とする場合がある。
【００３１】
既存のビデオエンコーディングおよびデコーディングソリューションに伴う別の問題は、ビットストリームのタイルグループレイヤ部分を修正することを伴わないビットストリームにおけるタイルの抽出、スティッチング、および／またはリロケーションが可能ではないということである。
【００３２】
実施形態は、現在のタイルアドレスシグナリングをタイルグループヘッダにおけるインデックス値によって置き換えることによって、およびそのようなインデックス値の間におけるマッピングをタイルアドレスに伝達することによって、これらおよびその他の問題を克服する。このマッピングは、たとえばＰＰＳなどのパラメータセットにおいて、伝達されることが可能である。エンコーディング中にスティッチングを念頭においてインデックス値が設定される場合には、それらのインデックス値は、スティッチング中に現状のまま保たれることが可能である（たとえば、異なる品質のものなどのバージョンをエンコードする際に、エンコーダは、インデックス値が別々のバージョンにわたって一意であるという条件を強制することが可能である）。次いでパラメータセットにおけるタイルアドレスへのインデックス値のマッピングを修正するだけで、タイルグループアドレスの変更が行われることが可能である。
【００３３】
ビットストリームのタイルグループレイヤ部分を修正することを伴わないビットストリームにおけるタイルの抽出、スティッチング、および／またはリロケーションを容易にするために、実施形態は、インデックス値と、パラメータセットにおけるタイルグループにおけるタイルの数との間におけるマッピングを提供し、この場合、インデックスは、タイルグループヘッダにおいて送られる。
【００３４】
実施形態の利点は、タイルグループヘッダが現状のまま保たれる一方でパラメータセットのみを書き直すことによってスティッチングが実行されることを可能にすることを含む。上記の６０ｆｐｓの例を取り上げ、パラメータセットがビットストリームにおいて毎秒１回パケットとして送られると想定した場合には、実施形態は、毎秒９６１個のパケットの代わりに毎秒最大で１つのパケットを書き直すことを必要とするであろう。したがって、スティッチングの計算上の複雑さは、著しく低減される。
【００３５】
第１の態様によれば、ビットストリームから画像をデコードするための方法が提供され、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するためにビットストリームの第１の部分をデコードすることと、ビットストリームの第２の部分をデコードすることとを含む。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすることを含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値をデコードすることと、２）第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定することと、３）第１のセグメントグループアドレスに基づいて第１のセグメントグループに関する第１の空間ロケーションを決定することであって、第１の空間ロケーションが、画像内の第１のセグメントグループのロケーションを表す、第１の空間ロケーションを決定することと、４）第１のセグメントグループに関する少なくとも１つのサンプル値をデコードし、第１の空間ロケーションによって与えられたデコードされた画像におけるロケーションに少なくとも１つのサンプル値を割り振ることとを含む。
【００３６】
いくつかの実施形態においては、アドレスマッピングは、配列および／またはリスト、配列および／またはリストの並行セット、ハッシュマップ、ならびに連想配列のうちの１つまたは複数を含む。実施形態においては、アドレスマッピングを形成するためにビットストリームの第１の部分をデコードすることは、リスト値の数を示す第１の値をビットストリームからデコードすることと、リスト値の数をビットストリームからデコードすることによってリストを形成することであって、リスト値の数が第１の値に等しい、リストを形成することとを含む。実施形態においては、第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定することは、第１のセグメントグループインデックス値を使用してルックアップ演算を実行することを含む。
【００３７】
いくつかの実施形態においては、アドレスマッピングを形成するためにビットストリームの第１の部分をデコードすることは、リスト値の数を示す第１の値をビットストリームからデコードすることと、キー／値ペアｋおよびｖを表す値の数をビットストリームからデコードすることによって第１のリスト（ＫＥＹ）および第２のリスト（ＶＡＬＵＥ）を形成することであって、キー／値ペアの数が、第１の値に等しい、第１のリスト（ＫＥＹ）および第２のリスト（ＶＡＬＵＥ）を形成することとを含む。第１のリストは、キーｋを含み、第２のリストは、キー／値ペアの値ｖを含み、第１のリストおよび第２のリストの順序付けが、所与のキー／値ペアに関して、第１のリストにおける所与のキーｋに関するインデックスが第２のリストにおける所与の値ｖに関するインデックスに対応するようになる。実施形態においては、アドレスマッピングを形成するためにビットストリームの第１の部分をデコードすることは、ハッシュ値の数を示す第１の値をビットストリームからデコードすることと、キー／値ペアｋおよびｖを表す値の数をビットストリームからデコードすることによってハッシュマップを形成することであって、キー／値ペアの数が、第１の値に等しく、所与のキー／値ペアに関して、所与のキーｋに関するインデックスが、ハッシュマップによって所与の値ｖにマップされる、ハッシュマップを形成することとを含む。
【００３８】
いくつかの実施形態においては、第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定することは、インデックス（ｉ）を、第１のリストにおけるそのインデックスに対応する値（ＫＥＹ［ｉ］）が第１のセグメントグループインデックス値にマッチするように決定することと、第１のセグメントグループアドレスが、第２のリストにおけるそのインデックスに対応する値（ＶＡＬＵＥ［ｉ］）であると決定することとを含む。いくつかの実施形態においては、第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定することは、第１のセグメントグループインデックス値を使用してハッシュルックアップ演算を実行することを含む。いくつかの実施形態においては、デコードされるキー／値ペアｋおよびｖを表す値は、キーｋを表すデルタ値を含み、それによって、第１のキー／値ペアに関して、キーｋはデルタ値によって決定され、その他のキー／値ペアに関して、キーｋは、以前に決定されたキー値にデルタ値を加えて現在のキーｋを生成することによって決定される。
【００３９】
いくつかの実施形態においては、セグメントグループは、タイルグループ、サブピクチャー、および／またはスライスに対応する。いくつかの実施形態においては、セグメントグループは、１つまたは複数のセグメントを含み、いくつかの実施形態においては、セグメントグループは、１つのセグメントのみを含む。
【００４０】
実施形態においては、セグメントグループは、タイルグループに対応する。実施形態においては、ビットストリームの第１の部分は、パラメータセットに含まれ、この方法はさらに、さらなるセグメントグループをデコードすることを含み、アドレスマッピングは、さらなるセグメントグループをデコードするために使用される。実施形態においては、ビットストリームの第１の部分は、パラメータセットに含まれ、この方法はさらに、さらなる画像をデコードすることを含み、アドレスマッピングは、さらなる画像をデコードするために使用される。
【００４１】
第２の態様によれば、ビットストリームから画像をデコードするための方法が提供され、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値を、第１のセグメントグループに関してデコードされることになるセグメントの数にマップする、サイズマッピングを形成するためにビットストリームの第１の部分をデコードすることと、ビットストリームの第２の部分をデコードすることとを含む。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすることを含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値をデコードすることと、２）第１のセグメントグループインデックス値およびサイズマッピングに基づいて第１のセグメントグループに関する第１のサイズを決定することと、３）デコードされた画像を形成するためにセグメントの数をデコードすることであって、セグメントの数が第１のサイズに等しい、セグメントの数をデコードすることとを含む。
【００４２】
いくつかの実施形態においては、サイズマッピングは、配列および／またはリスト、配列および／またはリストの並行セット、ハッシュマップ、ならびに連想配列のうちの１つまたは複数を含む。実施形態においては、サイズマッピングを形成するためにビットストリームの第１の部分をデコードすることは、リスト値の数を示す第１の値をビットストリームからデコードすることと、リスト値の数をビットストリームからデコードすることによってリストを形成することであって、リスト値の数が第１の値に等しい、リストを形成することとを含む。実施形態においては、第１のセグメントグループインデックス値およびサイズマッピングに基づいて第１のセグメントグループに関する第１のサイズを決定することは、第１のセグメントグループインデックス値を使用してルックアップ演算を実行することを含む。
【００４３】
いくつかの実施形態においては、セグメントグループは、タイルグループ、サブピクチャー、および／またはスライスに対応する。いくつかの実施形態においては、セグメントグループは、１つまたは複数のセグメントを含み、いくつかの実施形態においては、セグメントグループは、１つのセグメントのみを含む。
【００４４】
第３の態様によれば、画像をビットストリームへとエンコードするための方法が提供され、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値を複数のセグメントグループに関するセグメントグループアドレスにマップするアドレスマッピングを決定することと、ビットストリームの第１の部分をエンコードすることと、ビットストリームの第２の部分をエンコードすることとを含む。ビットストリームの第１の部分をエンコードすることは、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、複数のセグメントグループを表すコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、第１のセグメントグループをエンコードすることを含む。第１のセグメントグループをエンコードすることは、１）第１のセグメントグループに関する第１のセグメントグループアドレスから第１のセグメントグループインデックス値を決定することであって、アドレスマッピングが、第１のセグメントグループインデックス値を第１のセグメントグループアドレスにマップする、第１のセグメントグループインデックス値を決定することと、２）第１のセグメントグループに関する第１のセグメントグループインデックス値をエンコードすることと、３）第１のセグメントグループに関するサンプル値をエンコードすることとを含む。
【００４５】
第４の態様によれば、画像をビットストリームへとエンコードするための方法が提供され、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを決定することと、ビットストリームの第１の部分をエンコードすることと、ビットストリームの第２の部分をエンコードすることとを含む。ビットストリームの第１の部分をエンコードすることは、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを形成するコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、複数のセグメントグループを表すコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、第１のセグメントグループをエンコードすることを含む。第１のセグメントグループをエンコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値を決定することであって、サイズマッピングが、第１のセグメントグループに関する第１のセグメントグループインデックス値を第１のサイズにマップし、第１のサイズが、第１のセグメントグループに関してエンコードされることになるセグメントの数である、第１のセグメントグループインデックス値を決定することと、２）第１のセグメントグループに関する第１のセグメントグループインデックス値をエンコードすることと、３）第１のセグメントグループに関するセグメントの数をエンコードすることであって、セグメントの数が第１のサイズに等しい、セグメントの数をエンコードすることとを含む。
【００４６】
いくつかの実施形態においては、第１のセグメントグループインデックス値をエンコードすることは、第１のセグメントグループインデックス値を表す１つまたは複数のコードワードを生成することを含む。
【００４７】
第５の態様によれば、デコーダが、第１または第２の態様の実施形態のうちのいずれか１つを実行するように適合されている。
【００４８】
第６の態様によれば、エンコーダが、第３または第４の態様の実施形態のうちのいずれか１つを実行するように適合されている。
【００４９】
いくつかの実施形態においては、エンコーダおよびデコーダは、同じノードにおいて同一場所に配置されることが可能であり、またはそれらは、互いから離れていることが可能である。実施形態においては、エンコーダおよび／またはデコーダは、ネットワークノードの部分であり、実施形態においては、エンコーダおよび／またはデコーダは、ユーザ機器の部分である。
【００５０】
第７の態様によれば、ビットストリームから画像をデコードするためのデコーダが提供され、その画像は、複数のセグメントグループへと区分される。このデコーダは、デコーディングユニットおよび決定ユニットを含む。デコーディングユニットは、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するためにビットストリームの第１の部分をデコードするように設定されており、ビットストリームの第２の部分をデコードするようにさらに設定されている。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすることを含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値を（デコーディングユニットによって）デコードすることと、２）第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを（決定ユニットによって）決定することと、３）第１のセグメントグループアドレスに基づいて第１のセグメントグループに関する第１の空間ロケーションを（決定ユニットによって）決定することであって、第１の空間ロケーションが、画像内の第１のセグメントグループのロケーションを表す、第１の空間ロケーションを（決定ユニットによって）決定することと、４）第１のセグメントグループに関する少なくとも１つのサンプル値を（デコーディングユニットによって）デコードし、第１の空間ロケーションによって与えられたデコードされた画像におけるロケーションに少なくとも１つのサンプル値を割り振ることとを含む。
【００５１】
第８の態様によれば、ビットストリームから画像をデコードするためのデコーダが提供され、その画像は、複数のセグメントグループへと区分される。このデコーダは、デコーディングユニットおよび決定ユニットを含む。デコーディングユニットは、セグメントグループインデックス値を、第１のセグメントグループに関してデコードされることになるセグメントの数にマップする、サイズマッピングを形成するためにビットストリームの第１の部分をデコードするように設定されており、ビットストリームの第２の部分をデコードするようにさらに設定されている。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすることを含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値を（デコーディングユニットによって）デコードすることと、２）第１のセグメントグループインデックス値およびサイズマッピングに基づいて第１のセグメントグループに関する第１のサイズを（決定ユニットによって）決定することと、３）デコードされた画像を形成するためにセグメントの数を（デコーディングユニットによって）デコードすることであって、セグメントの数が第１のサイズに等しい、セグメントの数を（デコーディングユニットによって）デコードすることとを含む。
【００５２】
第９の態様によれば、ビットストリームからの画像をエンコードするためのエンコーダが提供され、その画像は、複数のセグメントグループへと区分される。エンコーダは、エンコーディングユニットおよび決定ユニットを含む。決定ユニットは、セグメントグループインデックス値を複数のセグメントグループに関するセグメントグループアドレスにマップするアドレスマッピングを決定するように設定されている。エンコーディングユニットは、ビットストリームの第１の部分をエンコードするように設定されており、ビットストリームの第２の部分をエンコードするようにさらに設定されている。ビットストリームの第１の部分をエンコードすることは、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、複数のセグメントグループを表すコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、第１のセグメントグループをエンコードすることを含む。第１のセグメントグループをエンコードすることは、１）第１のセグメントグループに関する第１のセグメントグループアドレスから第１のセグメントグループインデックス値を（決定ユニットによって）決定することであって、アドレスマッピングが、第１のセグメントグループインデックス値を第１のセグメントグループアドレスにマップする、第１のセグメントグループインデックス値を（決定ユニットによって）決定することと、２）第１のセグメントグループに関する第１のセグメントグループインデックス値を（エンコーディングユニットによって）エンコードすることと、３）第１のセグメントグループに関するサンプル値を（エンコーディングユニットによって）エンコードすることとを含む。
【００５３】
第１０の態様によれば、ビットストリームへと画像をエンコードするためのエンコーダが提供され、その画像は、複数のセグメントグループへと区分される。エンコーダは、エンコーディングユニットおよび決定ユニットを含む。決定ユニットは、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを決定するように設定されている。エンコーディングユニットは、ビットストリームの第１の部分をエンコードするように設定されており、ビットストリームの第２の部分をエンコードするようにさらに設定されている。ビットストリームの第１の部分をエンコードすることは、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを形成するコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、複数のセグメントグループを表すコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、第１のセグメントグループをエンコードすることを含む。第１のセグメントグループをエンコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値を（決定ユニットによって）決定することであって、サイズマッピングが、第１のセグメントグループに関する第１のセグメントグループインデックス値を第１のサイズにマップし、第１のサイズが、第１のセグメントグループに関してエンコードされることになるセグメントの数である、第１のセグメントグループインデックス値を（決定ユニットによって）決定することと、２）第１のセグメントグループに関する第１のセグメントグループインデックス値を（エンコーディングユニットによって）エンコードすることと、３）第１のセグメントグループに関するセグメントの数を（エンコーディングユニットによって）エンコードすることであって、セグメントの数が第１のサイズに等しい、セグメントの数を（エンコーディングユニットによって）エンコードすることとを含む。
【００５４】
第１１の態様によれば、ノードの処理回路によって実行されたときに、第１、第２、第３、および第４の態様のうちのいずれか１つの方法をノードに実行させる命令を含むコンピュータプログラムが提供される。
【００５５】
第１２の態様によれば、第１１の態様のいずれの実施形態のコンピュータプログラムを含むキャリアが提供され、このキャリアは、電子信号、光信号、無線信号、およびコンピュータ可読ストレージメディアのうちの１つである。
【００５６】
本明細書に組み込まれていて本明細書の部分を形成している添付の図面が、さまざまな実施形態を示している。
【図面の簡単な説明】
【００５７】
【図１】関連した技術分野によるクワッドツリープラスバイナリーツリープラスターナリーツリーブロック構造を示す図である。
【図２】関連した技術分野による、ラスタ走査順にラベル付けされている４つのタイル行および５つのタイル列を使用したタイル区分の一例を示す図である。
【図３】高品質のストリームおよび低品質のストリームを単一の出力ストリームへとスティッチすることの一例を示す図である。
【図４】一実施形態による、画像を区分することの一例を示す図である。
【図５】一実施形態による、画像を区分することの一例を示す図である。
【図６】一実施形態による、エンコードされているビットストリームをデコードすることの一例を示す図である。
【図７】一実施形態による、２つの入力ストリームを単一の出力ストリームへとスティッチすることの一例を示す図である。
【図８】一実施形態による、セグメントグループインデックスをセグメントグループアドレスにマップするアドレスマッピングの一例を示す図である。
【図９】一実施形態によるプロセスを示すフローチャートである。
【図１０】一実施形態によるプロセスを示すフローチャートである。
【図１１】一実施形態によるプロセスを示すフローチャートである。
【図１２】一実施形態によるプロセスを示すフローチャートである。
【図１３】実施形態によるエンコーダおよびデコーダの機能ユニットを示す図である。
【図１４】実施形態によるエンコーダおよび／またはデコーダのブログ図である。
【発明を実施するための形態】
【００５８】
図６は、ビットストリーム６０２と、ビットストリーム６０２をデコードすることから生じる対応するデコードされた画像４０２とを示している。この例におけるビットストリーム６０２は、パラメータセット６０４と、８つのコーディングされているセグメントグループ６０６とを含み、セグメントグループ６０６はそれぞれ、デコードされた画像４０２におけるセグメントグループ４１４に対応する。すなわち、デコードされた場合には、コーディングされているセグメントグループ６０６は、デコードされた画像４０２におけるセグメントグループ４１４をもたらす。典型的なビットストリームは、複数の画像を含むが、例示のために、この図は、１つの画像のみを示している。
【００５９】
パラメータセット６０４は、セグメントグループアドレス値のリストとしてデコーダによってデコードされるシンタックス要素６１６を含む。そのリストは、セグメントグループアドレス値の配列として実装されることが可能である。この記述においては、配列およびリストという用語は、言い換え可能に使用されることが可能である。パラメータセット６０４はまた、画像４０２がセグメント（たとえば図４において示されているセグメント４１２）へとどのようにして区分されるかを指定するパーティション構造（たとえば図４において示されているパーティション構造４１３）へとデコーダによってデコードされるシンタックス要素６１４を含む。この情報（６１４および６１６）は、いくつかの実施形態においては、（図６において示されているのと）同じパラメータセットの部分であることが可能であり、別々のパラメータセットの部分であることが可能であり、またはその他の何らかの方法でエンコードされることが可能である。たとえば、シンタックス要素６１４および６１６のうちの一方は、シーケンスパラメータセットの部分であることが可能であり、他方は、画像パラメータセットの部分であることが可能である。シンタックス要素６１４および６１６は、ビットストリームにおける任意の場所に配置されることも可能であり、または帯域外で伝達されることさえ可能である。実施形態においては、シンタックス要素６１４および６１６のいずれも、コーディングされているセグメントグループ６０６に置かれていないということが重要であり、たとえばそれによって、個々のコーディングされているセグメントグループ６０６を修正する必要なく、情報が修正されることが可能である。
【００６０】
それぞれのコーディングされているセグメントグループ６０６は、セグメントグループヘッダ６０８およびセグメントグループデータ６０８を含む。セグメントグループデータ６０８は、セグメントグループに属するセグメントに関するサンプル値へとデコードされるコーディングされているビットを含む。本明細書において記述されている実施形態においては、セグメントグループヘッダ６０８は、インデックス値ｉへとデコーダによってデコードされる１つまたは複数のコードワード６１２を含む。インデックス値ｉは、セグメントグループに関するセグメントグループアドレスを導出するためにセグメントグループアドレス値のリストにおけるインデックスとして使用される。デコーダは、セグメントグループにおける第１のセグメントに関する画像における空間ロケーションを決定するためにセグメントグループアドレスを使用する。
【００６１】
パラメータセットにおけるセグメントグループアドレス値のリストと、そのリストへのインデックスとをセグメントグループヘッダにおいて使用することによって、セグメントグループヘッダを修正することなく、セグメントグループのスティッチングが行われることが可能である。これは、間接のレイヤによって、セグメントグループアドレス値が、コーディングされているセグメントグループデータから切り離されるようになるからである。（上述されている）図３における例を使用して、下記のテーブル５は、インデックスとセグメントグループアドレス値との間におけるマッピングがどのように見え得るかを示している。テーブル５における真ん中の列は、ビデオを高品質および低品質へとエンコードする際のインデックスとセグメントグループアドレスとの間における例示的なマッピングを示している。このマッピングは、セグメントグループアドレス値のリストを伝達するシンタックス要素６１６を使用して最初のエンコーディング中にパラメータセット６０４へと書き込まれる。テーブル５における最も右の列は、スティッチング後の出力ビットストリームにおいてインデックスとセグメントグループアドレス値との間におけるマッピングがどのように見え得るかを示している。エンコーディング中にセグメントグループへと書き込まれるインデックスは、現状のまま保たれることが可能であり、セグメントグループアドレス値のリストを伝達するシンタックス要素６１６を使用して、最も右の列において示されているマッピングを含む新たなパラメータセット６０４を書き込むことによって、スティッチングが行われることが可能である。次いで、ｔｉｌｅ＿ｇｒｏｕｐ＿ｌａｙｅｒ＿ｒｂｓｐ（）というチャンクを、修正されていない状態でコピーまたは転送することによって、コーディングされているセグメントグループ６０６のスティッチングが行われることが可能である。
【００６２】
2021528879.tif 000007
【００６３】
ここで記述されているように、アドレスを有するのは、セグメントグループである。いくつかの実施形態においては、アドレスは、代替として、または追加として、それぞれのセグメントグループに関してだけでなく、それぞれのセグメントに関してシグナリングされることが可能である。
【００６４】
いくつかの実施形態によれば、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットデータを書き直すことなく、２つ以上の画像からのセグメントグループを１つの画像へとスティッチすることが可能である。これは、図７において示されており、図７では、最初の画像７０２および７０４のそれぞれのセグメントグループは、パラメータセットにおけるセグメントグループアドレス値への一意のインデックスマッピングを有する。セグメントグループを新たな画像７０６へとスティッチする際に、セグメントグループにおけるインデックスは保存されるが、パラメータセットにおける新たなセグメントグループアドレスにマップされる。
【００６５】
いくつかの例が、次いで記述される。
【００６６】
第１の例は、下記のとおりである。第１の例は、パラメータセットに格納されているセグメントグループアドレスに関する単一のリストを使用することを含む。この実施形態においては、セグメントグループアドレス値は、単一のリスト（本明細書においては、ＬＩＳＴと呼ぶ）としてパラメータセットに格納される。シンタックス要素６１６は、このケースにおいては、ＬＩＳＴのコーディングされている表示であり、ＬＩＳＴにおいていくつのエントリーがあるか、すなわち、ＬＩＳＴの長さを指定する数字Ｎへとデコードされるコードワードから構成されることが可能である。シンタックス要素６１６はさらに、セグメントグループアドレス値を指定するＮの数字へとデコードされる、エントリーごとの１つまたは複数のコードワードから構成される。たとえば、ＬＩＳＴは、セグメントグループアドレス値のシーケンシャル配列としてビットストリームにおいてエンコードされることが可能である。
【００６７】
下記の疑似コードは、どのようにしてＬＩＳＴがビットストリームからデコードされ構築されることが可能であるかを示している。
2021528879.tif 000008
【００６８】
ｄｅｃｏｄｅ＿ｎ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）およびｄｅｃｏｄｅ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）という関数は、次の１つまたは複数のコードワードをビットストリームから読み取り、値を返す。コードワードは、固定長のコードワード、可変長のコードワード、エントロピーエンコードされているコードワード、またはその他の任意のタイプのコードワードであることが可能である。コードワードは、シンタックス要素と呼ばれる場合もある。
【００６９】
次いで、パラメータセットからセグメントグループアドレス値のＬＩＳＴをデコードした後に、セグメントグループがデコードされることが可能である。それぞれのセグメントグループヘッダにおいては、デコーダによってインデックス値ｉへとデコードされる１つまたは複数のコードワード６１２がある。インデックス値ｉは、アドレスがＬＩＳＴ［ｉ］に等しくなるなど、セグメントグループに関するセグメントグループアドレス値を導出するためのＬＩＳＴへのインデックスとして使用される。
【００７０】
上記の例を実施するために、セグメントグループアドレス値がリストに格納されていて、セグメントグループヘッダがそのリストへのインデックスを含む場合には、エンコーダが、画像パラメータセットをエンコードする一環としてセグメントグループアドレス値をエンコードすることが可能である。たとえば、最初にリストのサイズをエンコードすることによって、続いてリストのアドレス値のうちのそれぞれを順にエンコードすることによって、リストがエンコードされることが可能である。さらに、セグメントグループデータをエンコードする際に、エンコーダは、アドレス値リストへのインデックスをセグメントグループヘッダへとエンコードすることが可能であり、この場合、そのインデックスによって表されるアドレス値は、画像内のセグメントグループの空間ロケーションに対応する。リストサイズをエンコードすること、および／またはアドレス値をエンコードすることは、１つまたは複数のコードワードをビットストリームへとエンコードすることを含むことが可能であり、たとえば、エンコーダは、固定幅のエンコーディング、可変幅のエンコーディング、エントロピーベースのエンコーディングなどを使用することが可能である。同様に、リストサイズをデコードすること、および／またはアドレス値をデコードすることは、ビットストリームから１つまたは複数のコードワードをデコードすることを含むことが可能である。
【００７１】
記述されたばかりの様式でエンコードされているビットストリームをデコードする際に、デコーダは、セグメントグループアドレス値リストをデコードすることが可能である。たとえば、デコーダは、ビットストリームからリストのサイズをデコードして、次いで、リストを表すアドレス値のうちのそれぞれをデコードすることが可能である。リストをデコードすることの一環として、デコーダは、たとえば、ＬＩＳＴ［ｅ］＝ｖａｌｕｅによって表されるリストまたは配列データ構造（たとえば）にアドレス値を格納することが可能であり、この場合、ｅは、０〜デコードされたリストのサイズ−１にわたり、ｖａｌｕｅは、デコードされた対応するアドレス値である。アドレス値は、ｅ番目のデコードされたアドレス値がリストにおけるｅ番目のエントリーとして格納されるようにリストに格納されることが可能である（どのようにしてリストがエンコードされているかに基づいて、その他の表示も可能であるが）。デコーダは次いで、画像におけるセグメントグループのうちのそれぞれに関するセグメントグループデータをデコードすることが可能である。現在のセグメントグループをデコードする際に、デコーダは、現在のセグメントグループに対応するセグメントグループヘッダをデコードすることが可能である。セグメントグループヘッダをデコードすることは、ビットストリームから（たとえば１つまたは複数のコードワードから）インデックス値ｉをデコードすることを含むことが可能であり、この場合、インデックス値ｉは、セグメントグループアドレス値リストへのインデックスを表す。いったんインデックス値ｉがデコードされると、デコーダは、現在のセグメントグループに関するアドレス値を、リストにおけるｉ番目のエントリーに関するアドレス値に設定することによって、そのセグメントグループに関するアドレス値を導出することが可能である。たとえば、デコーダは、この値を決定するためにルックアップ演算を実行することが可能である。デコーダは、現在のセグメントグループに関してデコードされている画像における空間ロケーションを決定するために、そのアドレス値を使用することも可能である。これは、現在のセグメントグループにおける第１のセグメントに関してデコードされている画像における空間ロケーションを決定することを含むことが可能である。デコーダは次いで、現在のセグメントグループに関するセグメントデータを、デコードされたサンプル値へとデコードする際に、決定された空間ロケーションを使用することが可能である。たとえば、空間ロケーションは、デコードされたサンプル値を、デコードされた画像における正しいロケーションに格納するためにデコーダによって使用されることが可能である。
【００７２】
下記のテーブル６およびテーブル７は、上述の例に関する例示的なシンタックスを示しており、その後に例示的なセマンティクスが続いている。このシンタックスおよびセマンティクスは、現在のＶＶＣドラフト仕様に対する修正とみなされることを意図されている。現在のＶＶＣドラフト仕様は、ＪＶＥＴ−Ｌ０６８６−ｖ２−ＳｐｅｃＴｅｘｔ．ｄｏｃｘ  ＪＶＥＴ  ｉｎｐｕｔ  ｃｏｎｔｒｉｂｕｔｉｏｎにおいて提供されている。しかしながら、ＶＶＣ標準の使用は、上述の例を適用する上で必須ではなく、それに対する言及は、例示の目的のためである。
【００７３】
2021528879.tif 000009
【００７４】
ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１＋１は、ＰＰＳに関連付けられているタイルグループアドレスの数を指定する。ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１の値は、両端値を含めて０〜ｍａｘＮｂｒＯｆＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓｅｓの範囲にあるものとする。［編集者注：  ｍａｘＮｂｒＯｆＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓｅｓは、たとえば、例示的な数として２０４６に設定されることが可能である。］
【００７５】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］は、ＰＰＳに関連付けられているｉ番目のタイルグループアドレスを指定するために使用される。
【００７６】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の長さは、Ｃｅｉｌ（Ｌｏｇ２（ＮｕｍＴｉｌｅｓＩｎＰｉｃ））ビットであり、この場合、Ｃｅｉｌは、天井演算子を指す。［編集者注：ＮｕｍＴｉｌｅｓＩｎＰｉｃは、画像におけるタイルの数を示す変数である。この数は、パラメータセットにおけるその他のコードワードから導出される。］
【００７７】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【００７８】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の値が、ｉに等しくないｊのいずれの値に関してもｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｊ］の値に等しくならないということが、ビットストリーム適合性の要件である。
【００７９】
2021528879.tif 000010
【００８０】
ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃは、タイルグループにおける第１のタイルのタイルアドレスを指定するために使用される。
【００８１】
ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃの値は、両端値を含めて０〜ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１の範囲にあるものとする。
【００８２】
変数ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓは、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃ］に等しく設定される。
【００８３】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【００８４】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値は、同じコーディングされている画像のその他のいずれのコーディングされているタイルグループＮＡＬユニットのＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値にも等しくならない。
【００８５】
ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１＋１が、タイルグループにおけるタイルの数を指定する。ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。［編集者注：  この記述は、現在のＶＶＣドラフト仕様に存在している。］
【００８６】
第１の例の代替バージョンにおいては、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］に関する最大値の制限は、異なる方法で、たとえば、ＮｕｍＴｉｌｅｓＩｎＰｉｃの倍数など、固定された最大値を使用して、またはビットストリームにおいてシグナリングされて規定される。代替バージョンにおいては、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］というコードワードが、固定長のコードワードの代わりに可変長のコードワードによってシグナリングされる。その可変長のコードワードは、ユニバーサル可変長コード（ＵＶＬＣ）コードワードであることが可能である。
【００８７】
同様に、第１の例の代替バージョンにおいては、ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ＿１に関する最大値の制限は、異なる方法で、たとえば、ＮｕｍＴｉｌｅｓＩｎＰｉｃの倍数として、固定された最大値を使用して、またはビットストリームにおいてシグナリングされて規定される。
【００８８】
第２の例が、次に続く。第２の例は、パラメータセットに格納されているセグメントグループアドレスに関する辞書を使用することを含む。この実施形態においては、セグメントグループアドレス値は、辞書としてパラメータセットに格納されている。その辞書は、適切なデータ構造、たとえばハッシュマップまたは連想配列によって実装されることが可能である。
【００８９】
この例の１つのバージョンにおいては、辞書は、単一のリストとしてエンコードされることが可能であり、この場合、その単一のリストにおけるそれぞれのエントリーは、値のペアから構成され、その場合、そのペアにおける第１の要素は、辞書キー値であり、そのペアにおける第２の要素は、辞書値である（別名、キー／値ペア）。別のバージョンにおいては、２つのリストが使用され、第１のリストは、キーのリストであり、第２のリストは、値のリストである。それらの２つのリストは、リストの並行セットと呼ばれる場合がある。なぜなら、それらは、一方のリストにおけるｉ番目のエントリーが、他方のリストのｉ番目のエントリーに関連付けられているという意味で並行であるからである。それらの２つのリストは、２つの配列、または配列の並行セットとして実装されることが可能である。辞書のその他のエンコーディングおよび表示も可能である。２つのリストを使用するバリエーションは、本明細書においては例示の目的のために記述されている。単一のリストを使用する例に勝るこの例にとっての１つの利点として、複数のストリームをスティッチする際に、この例は、（潜在的に多くの）空のスロット、すなわち、最終的な出力ストリームにおいて使用されないリスト値を有することを回避することが可能である。
【００９０】
シンタックス要素６１６は、この例においては、本明細書においてＫＥＹおよびＶＡＬＵＥと呼ばれる２つのリストのコーディングされている表示である。いくつかの実施形態においては、それらのリストは、同じサイズであり、したがって、そのサイズを表す単一のコードワードで十分である。シンタックス要素６１６はしたがって、リストサイズと、それに続くＫＥＹリストおよびＶＡＬＵＥリストに関する値とから構成されることが可能である。それぞれの値は、固定長、可変長、エントロピーコーディング、またはその他のコーディング技術を使用して、１つまたは複数のコードワードとしてエンコードされることが可能である。一実施形態においては、ＶＡＬＵＥリストまたはＫＥＹリストに関するデコードされたコードワードは、それらがデコードされる順序でそれらのリスト内に置かれ、たとえばそれによって、ＫＥＹに関する第２のデコードされた値は、ＫＥＹにおける第２の要素として置かれる。いくつかの実施形態においては、ＶＡＬＵＥリストに関する順にエンコードされた値の前に、ＫＥＹリストに関する値が順にエンコードされ、その他の実施形態においては、その順序は逆にされ、その他の実施形態においては、ＫＥＹリストおよびＶＡＬＵＥリストの対応する要素は、一緒にエンコードされる。
【００９１】
辞書をデコードすることの例が、以降で提供されている。辞書をビットストリームへとエンコードすることも同様であり、基本的にはデコーディングの逆のオペレーションである。上記の第１の例と同様に、セグメントグループアドレス値情報のエンコーディングおよびデコーディングは、セグメントグループを含むセグメントに関するサンプル値を表すセグメントグループデータのエンコーディングおよびデコーディングとは別に（たとえば、その前に）生じることが可能である。
【００９２】
この例を実施するために、最初にデコーダは、アドレス値情報をデコードすることが可能である。２つのバリエーションが、以降で提示されている。
【００９３】
ＫＥＹに置かれるすべての値が、ＶＡＬＵＥに置かれるあらゆる値の前にデコードされる変形に関しては、下記の疑似コードが、どのようにしてデコーダが機能することが可能であるかを記述している。
2021528879.tif 000011
【００９４】
別の変形においては、ＫＥＹに置かれる値と、ＶＡＬＵＥに置かれる値とが、下記の疑似コードにおいて示されているようにインターリーブされる。
2021528879.tif 000012
【００９５】
ｄｅｃｏｄｅ＿ｎ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）、ｄｅｃｏｄｅ＿ｋｅｙ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）、およびｄｅｃｏｄｅ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）という関数はそれぞれ、次の１つまたは複数のコードワードをビットストリームから読み取り、値を返す。コードワードは、固定長のコードワード、可変長のコードワード、エントロピーエンコードされているコードワード、またはその他の任意のタイプのコードワードであることが可能である。
【００９６】
いったんアドレス値情報がデコードされると、デコーダは次いで、画像におけるセグメントグループのうちのそれぞれに関するセグメントグループデータをデコードすることが可能である。現在のセグメントグループをデコードする際に、デコーダは、現在のセグメントグループに対応するセグメントグループヘッダをデコードすることが可能である。セグメントグループヘッダをデコードすることは、ビットストリームから（たとえば１つまたは複数のコードワードから）インデックス値ｉをデコードすることを含むことが可能であり、この場合、インデックス値ｉは、ＶＡＬＵＥリストへのさらなるインデックスを含むＫＥＹリストへのインデックスを表す。いったんインデックス値ｉがデコードされると、デコーダは、リスト値ＫＥＹ［ｐｏｓ］がインデックス値ｉにマッチするリストＫＥＹにおける位置ｐｏｓを決定して、次いで現在のセグメントグループアドレス値がＶＡＬＵＥ［ｐｏｓ］であると決定することによって、そのセグメントグループに関するアドレス値を導出することが可能である。
【００９７】
キー値に関連付けられている値を、そのキー値を提供することによって取り出すオペレーションは、キー値を使用したルックアップ演算と呼ばれる。この実施形態においては、たとえばキー値としてＫＥＹ［ｋ］を使用することによる、ルックアップ演算は、任意の適切な方法を使用して、たとえばハッシュ関数を採用することによって、またはその他の形で実施されることが可能である。
【００９８】
この例におけるインデックスｉからのセグメントグループアドレスの導出は、図８において示されている。図８は、ＫＥＹリストおよびＶＡＬＵＥリストを有する辞書を含むパラメータセットを示している。図８はまた、２つのセグメントグループヘッダを示しており、１つのセグメントグループヘッダは、インデックスｉ＝４を有しており、別のセグメントグループヘッダは、インデックスｉ＝１を有している。示されているように、インデックスｉ＝４は、第１のセグメントグループヘッダからデコードされる。値４は、第１のセグメントグループのセグメントグループアドレス（ここでは３である）を決定するために使用されるＶＡＬＵＥ［１］＝３に対応するパラメータセット、ＫＥＹ［１］における辞書において見受けられる。第２のセグメントグループにおいては、インデックスｉ＝１がデコードされ、この場合、１は、辞書におけるＫＥＹ［０］に関して見受けられる。対応するＶＡＬＵＥ［０］＝５はしたがって、第２のセグメントグループのセグメントグループアドレス（ここでは５である）を決定するために使用される。これは、図８においては、セグメントグループヘッダから、対応するＫＥＹエントリーへの矢印と、次いで、対応するＫＥＹエントリーから、デコードされた画像における対応するセグメントグループアドレスへの矢印とによって示されている。
【００９９】
あるいは、ＫＥＹリストおよびＶＡＬＵＥリストがデコードされているときに、ハッシュマップＭＡＰが投入されることが可能であり、それによって、リストＫＥＹにおける位置ｐｏｓを有するＫＥＹにおけるそれぞれのキーｋに関して、ＭＡＰ｛ｋ｝＝ｖであり、この場合、ｖ＝ＶＡＬＵＥ［ｐｏｓ］である。このハッシュマップを使用すると、ＭＡＰ｛ｉ｝などのハッシュマップルックアップ演算を実行することによって、インデックスｉからセグメントグループアドレスを決定することが達成されることが可能である。このデータ構造の利点として、このデータ構造は、セグメントグループデータのデコーディング中にセグメントグループアドレスを決定する際にＫＥＹリストの線形探索を回避することが可能である。
【０１００】
この第１の例におけるように、デコーダは、セグメントデータを、デコードされたサンプルへとデコードする際に空間ロケーションを決定するために、セグメントグループアドレスを使用することが可能である。
【０１０１】
テーブル８およびテーブル９は、この例に関する例示的なシンタックスを示しており、その後に例示的なセマンティクスが続いている。このシンタックスおよびセマンティクスは、現在のＶＶＣドラフト仕様に対する修正とみなされることを意図されている。現在のＶＶＣドラフト仕様は、ＪＶＥＴ−Ｌ０６８６−ｖ２−ＳｐｅｃＴｅｘｔ．ｄｏｃｘ  ＪＶＥＴ  ｉｎｐｕｔ  ｃｏｎｔｒｉｂｕｔｉｏｎにおいて提供されている。しかしながら、ＶＶＣ標準の使用は、上述の例を適用する上で必須ではなく、それに対する言及は、例示の目的のためである。
【０１０２】
2021528879.tif 000013
【０１０３】
ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１＋１は、ＰＰＳに関連付けられているタイルアドレスの数を指定する。ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【０１０４】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｉ］は、ＰＰＳに関連付けられているｉ番目のタイルグループｉｄｃを指定するために使用される。
【０１０５】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃは、８＊ＮｕｍＴｉｌｅｓＩｎＰｉｃ以下であるものとする。
【０１０６】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｉ］の値が、ｉに等しくないｊのいずれの値に関してもｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｊ］の値に等しくならないということが、ビットストリーム適合性の要件である。
【０１０７】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］は、ＰＰＳに関連付けられているｉ番目のタイルグループアドレスを指定するために使用される。
【０１０８】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の長さは、Ｃｅｉｌ（Ｌｏｇ２（ＮｕｍＴｉｌｅｓＩｎＰｉｃ））ビットである。
【０１０９】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【０１１０】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の値が、ｉに等しくないｊのいずれの値に関してもｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｊ］の値に等しくならないということが、ビットストリーム適合性の要件である。
【０１１１】
2021528879.tif 000014
【０１１２】
ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃは、タイルグループにおける第１のタイルのタイルアドレスを指定するために使用される。
【０１１３】
変数ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓは、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］に等しく設定され、この場合、ｉは、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｉ］がｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃに等しくなる値である。
【０１１４】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］がｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃに等しくなる、両端値を含めて０〜ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１の範囲にある値ｉがあるということが、ビットストリーム適合性の要件である。
【０１１５】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値は、同じコーディングされている画像のその他のいずれのコーディングされているタイルグループＮＡＬユニットのＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値にも等しくならないということが、ビットストリーム適合性の要件である。
【０１１６】
ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１＋１が、タイルグループにおけるタイルの数を指定する。ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。［編集者注：この記述は、現在のＶＶＣドラフト仕様に存在している。］
【０１１７】
この例の代替バージョンにおいては、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］に関する最大値の制限は、異なる方法で、たとえば、ＮｕｍＴｉｌｅｓＩｎＰｉｃの倍数として、固定された最大値を使用して、またはビットストリームにおいてシグナリングされて規定される。代替バージョンにおいては、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］というコードワードが、固定長のコードワードの代わりに可変長のコードワードによってシグナリングされる。その可変長のコードワードは、ＵＶＬＣコードワードであることが可能である。
【０１１８】
同様に、この例の代替バージョンにおいては、ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ＿１に関する最大値の制限は、異なる方法で、たとえば、ＮｕｍＴｉｌｅｓＩｎＰｉｃの倍数として、固定された最大値を使用して、またはビットストリームにおいてシグナリングされて規定される。
【０１１９】
第３の例が、次に続く。第３の例は、第２の例に類似しており、パラメータセットに格納されているセグメントグループアドレスに関する辞書を使用することを含み、この場合、その辞書は、デルタシグナリングを使用してエンコードおよびデコードされる。
【０１２０】
この例においては、辞書キー値は、ビットストリームへと、またはビットストリームからデルタ値としてエンコードおよびデコードされる。たとえば、リストＫＥＹおよびＶＡＬＵＥのデコーディングは、下記の疑似コードによって記述されることが可能である。
2021528879.tif 000015
【０１２１】
上記の第２の例におけるように、値は、任意の順序でデコードされることが可能であり、上記の疑似コードにおいて記述されている順序に限定されなくてよい。実施形態においては、デコードする値の数は、２＊ｎ（ＫＥＹに関する１つの値、およびＶＡＬＵＥに関する対応する値）であり、それらの値をデコードする順序は静的であり、それによってエンコーダが、あいまいさを伴わずに正しく２つのリストＫＥＹおよびＶＡＬＵＥを伝達することが可能である。
【０１２２】
上記の第２の例に勝るこの例の１つの利点として、この例はビットを保存する。なぜなら、絶対値に比較してデルタ値をシグナリングすることは一般に、ビットの点でより安価であるからである。別の利点として、デルタ値が１以上であるように制限されている場合、そのケースにおいては、それぞれの辞書キー値が、規定によって一意に指定されるであろう。
【０１２３】
テーブル１０およびテーブル１１は、この実施形態に関する例示的なシンタックスを示しており、その後に例示的なセマンティクスが続いている。前述されているように、ＶＶＣ標準の使用は、上述の例を適用する上で必須ではなく、それに対する言及は、例示の目的のためである。
【０１２４】
2021528879.tif 000016
【０１２５】
ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１＋１は、ＰＰＳに関連付けられているタイルアドレスの数を指定する。ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【０１２６】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ＿ｄｅｌｔａ＿ｍｉｎｕｓ１［ｉ］＋１は、ＰＰＳに関連付けられているｉ番目のタイルグループｉｄｃを指定するために使用される。
【０１２７】
変数ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ］は、下記のように導出される。
１．  ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［０］が、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ＿ｄｅｌｔａ＿ｍｉｎｕｓ１［０］に等しく設定される。
２．  ０よりも大きいｉの値に関しては、ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ］が、ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ−１］＋ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ＿ｄｅｌｔａ＿ｍｉｎｕｓ１［ｉ］＋１に等しく設定される。
【０１２８】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１］は、８＊ＮｕｍＴｉｌｅｓＩｎＰｉｃ以下であるものとする。
【０１２９】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］は、ＰＰＳに関連付けられているｉ番目のタイルグループアドレスを指定するために使用される。
【０１３０】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の長さは、Ｃｅｉｌ（Ｌｏｇ２（ＮｕｍＴｉｌｅｓＩｎＰｉｃ））ビットである。
【０１３１】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【０１３２】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の値が、ｉに等しくないｊのいずれの値に関してもｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｊ］の値に等しくならないということが、ビットストリーム適合性の要件である。
【０１３３】
2021528879.tif 000017
【０１３４】
ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃは、タイルグループにおける第１のタイルのタイルアドレスを指定するために使用される。
【０１３５】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓは、ｐｐｓ＿ｔｉｌｅ＿ａｄｄｒｅｓｓ［ｉ］に等しく設定され、この場合、ｉは、ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ］がｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃに等しくなる値である。
【０１３６】
あるいは、変数ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓは、下記のように導出される。
１．  ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃがタイルグループヘッダに存在していない場合には、ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値は、０に等しく設定される。
２．  そうでない場合には、ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓは、ｐｐｓ＿ｔｉｌｅ＿ａｄｄｒｅｓｓ［ｉ］に等しく設定され、この場合、ｉは、ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ］がｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃに等しくなる値である。
【０１３７】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ］がｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃに等しくなる、両端値を含めて０〜ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１の範囲にある値ｉがあるということが、ビットストリーム適合性の要件である。
【０１３８】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値は、同じコーディングされている画像のその他のいずれのコーディングされているタイルグループＮＡＬユニットのＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値にも等しくならないということが、ビットストリーム適合性の要件である。
【０１３９】
ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１＋１が、タイルグループにおけるタイルの数を指定する。ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。［編集者注：  この記述は、現在のＶＶＣドラフト仕様に存在している。］
【０１４０】
この例の代替バージョンにおいては、第１のタイルグループインデックスは、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ＿ｄｅｌｔａ＿ｍｉｎｕｓ１［０］シンタックス要素を使用して設定されず、自分自身のシンタックス要素において明示的に指定される。テーブル１２は、例示的なパラメータセットシンタックスを示しており、その後に代替バージョンに関するセマンティクスが続いている。
【０１４１】
2021528879.tif 000018
【０１４２】
ｐｐｓ＿ｆｉｒｓｔ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃおよびｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ＿ｄｅｌｔａ＿ｍｉｎｕｓ１［ｉ］＋１は、ＰＰＳに関連付けられているｉ番目のタイルグループｉｄｃを指定するために使用される。
【０１４３】
変数ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ］は、下記のように導出される。
１．  ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［０］が、ｐｐｓ＿ｆｉｒｓｔ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃに等しく設定される。
２．  ０よりも大きいｉの値に関しては、ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ］が、ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｉ−１］＋ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ＿ｄｅｌｔａ＿ｍｉｎｕｓ１［ｉ］＋１に等しく設定される。
【０１４４】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓＩｄｃＰＰＳ［ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１］は、２０４６以下であるものとする。
【０１４５】
現在の例のその他の代替バージョンにおいては、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］に関する最大値の制限は、異なる方法で、たとえば、ＮｕｍＴｉｌｅｓＩｎＰｉｃの倍数として、固定された最大値を使用して、またはビットストリームにおいてシグナリングされて規定される。
【０１４６】
同様に、現在の実施形態のその他の代替バージョンにおいては、ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ＿１に関する最大値の制限は、異なる方法で、たとえば、ＮｕｍＴｉｌｅｓＩｎＰｉｃの倍数として、固定された最大値を使用して、またはビットストリームにおいてシグナリングされて規定される。
【０１４７】
代替バージョンにおいては、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］というコードワードが、固定長のコードワードの代わりに可変長のコードワードによってシグナリングされる。その可変長のコードワードは、ＵＶＬＣコードワードであることが可能である。
【０１４８】
第４の例が、次に続く。第４の例は、セグメントグループアドレス値以外の値を格納するためにリストもしくは辞書またはその他の間接のレイヤを使用することを含む。以前の例は、たとえば、ビットストリームにおけるタイルグループのリロケーションを可能にする。ビットストリームのタイルグループレイヤ部分を修正することを伴わないビットストリームにおけるタイルの抽出、スティッチング、またはリロケーションを容易にするために、次いでタイルグループと、タイルグループにおけるタイルの数との間におけるマッピング（たとえばＰＰＳにおける）を紹介する。
【０１４９】
マッピングは、上記の例１〜３と同様に、たとえば、マッピングをエンコードおよびデコードするためのリスト、辞書、またはデルタシグナリングを伴う辞書を使用することによって行われることが可能である。たとえば、上記の例１によれば、アドレス値は、タイルグループにおけるタイルの数を表す値のために代用されることが可能である。例示の目的のために、例２と同様の辞書を使用して、以降のさらなる詳細が提供されている。
【０１５０】
現在のＶＶＣドラフト仕様においては、タイルグループにおけるタイルの数は、ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１というコードワードを使用してシグナリングされる。この例は、その特定のコードワードを使用することを必要とせず、タイルグループ内にあるタイルの数を伝達するいかなる単一のまたは複数のコードワードも適切であろう。ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１を使用することに対する代替シグナリングの一例は、タイルのユニットにおけるタイルグループの高さおよび幅をシグナリングする２つのコードワードを使用することである。タイルグループにおけるタイルの数は次いで、それらの２つのコードワードから導出される２つの値を乗じたものである。
【０１５１】
ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１が使用されると想定すると、ＰＰＳ辞書をデコードするために下記の疑似コードが使用されることが可能である。
2021528879.tif 000019
【０１５２】
ｄｅｃｏｄｅ＿ｎ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）、ｄｅｃｏｄｅ＿ｋｅｙ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）、ｄｅｃｏｄｅ＿ａｄｄｒｅｓｓ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）、およびｄｅｃｏｄｅ＿ｓｉｚｅ＿ｖａｌｕｅ＿ｆｒｏｍ＿ｂｉｔｓｔｒｅａｍ（）という関数はそれぞれ、次の１つまたは複数のコードワードをビットストリームから読み取り、値を返す。コードワードは、固定長のコードワード、可変長のコードワード、エントロピーエンコードされているコードワード、またはその他の任意のタイプのコードワードであることが可能である。
【０１５３】
次いで、それぞれのセグメントグループヘッダにおいては、デコーダによってインデックス値ｉへとデコードされる１つまたは複数のコードワード６１２がある。次いで、リスト値ＫＥＹ［ｋ］がインデックス値ｉと同じになる、リストＫＥＹにおける位置ｋが決定される。アドレス値は次いで、ＡＤＤＲＥＳＳ［ｋ］に等しく設定され、サイズ値は、ＳＩＺＥ［ｋ］に等しく設定される。
【０１５４】
テーブル１３およびテーブル１４は、この実施形態に関する例示的なシンタックスを示しており、その後に例示的なセマンティクスが続いている。このシンタックスおよびセマンティクスは、現在のＶＶＣドラフト仕様に対する修正とみなされることを意図されている。現在のＶＶＣドラフト仕様は、ＪＶＥＴ−Ｌ０６８６−ｖ２−ＳｐｅｃＴｅｘｔ．ｄｏｃｘ  ＪＶＥＴ  ｉｎｐｕｔ  ｃｏｎｔｒｉｂｕｔｉｏｎにおいて提供されている。しかしながら、ＶＶＣ標準の使用は、上述の例を適用する上で必須ではなく、それに対する言及は、例示の目的のためである。
【０１５５】
2021528879.tif 000020
【０１５６】
ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１＋１は、ＰＰＳに関連付けられているタイルアドレスの数を指定する。ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【０１５７】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｉ］は、ＰＰＳに関連付けられているｉ番目のタイルグループｉｄｃを指定するために使用される。
【０１５８】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃは、８＊ＮｕｍＴｉｌｅｓＩｎＰｉｃ以下であるものとする。
【０１５９】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｉ］の値が、ｉに等しくないｊのいずれの値に関してもｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｊ］の値に等しくならないということが、ビットストリーム適合性の要件である。
【０１６０】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］は、ＰＰＳに関連付けられているｉ番目のタイルグループアドレスを指定するために使用される。
【０１６１】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の長さは、Ｃｅｉｌ（Ｌｏｇ２（ＮｕｍＴｉｌｅｓＩｎＰｉｃ））ビットである。
【０１６２】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【０１６３】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］の値が、ｉに等しくないｊのいずれの値に関してもｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｊ］の値に等しくならないということが、ビットストリーム適合性の要件である。
【０１６４】
ｐｐｓ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１［ｉ］＋１は、ＰＰＳに関連付けられているｉ個目のタイルを指定する。ｎｕｍ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１［ｉ］の値は、両端値を含めて０〜ＮｕｍＴｉｌｅｓＩｎＰｉｃ−１の範囲にあるものとする。
【０１６５】
2021528879.tif 000021
【０１６６】
ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃは、タイルグループにおける第１のタイルのタイルアドレス、ならびにタイルグループにおけるタイルの数を指定するために使用される。
【０１６７】
変数ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓは、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］に等しく設定され、この場合、ｉは、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｉ］がｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃに等しくなる値である。
【０１６８】
ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ［ｉ］がｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃに等しくなる、両端値を含めて０〜ｎｕｍ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓｅｓ＿ｍｉｎｕｓ１の範囲にある値ｉがあるということが、ビットストリーム適合性の要件である。
【０１６９】
ＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値は、同じコーディングされている画像のその他のいずれのコーディングされているタイルグループＮＡＬユニットのＴｉｌｅＧｒｏｕｐＡｄｄｒｅｓｓの値にも等しくならないということが、ビットストリーム適合性の要件である。
【０１７０】
変数ＮｕｍＴｉｌｅｓＩｎＴｉｌｅＧｒｏｕｐは、ｐｐｓ＿ｔｉｌｅｓ＿ｉｎ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｍｉｎｕｓ１［ｉ］＋１の値に等しく設定され、この場合、ｉは、ｐｐｓ＿ｔｉｌｅ＿ｇｒｏｕｐ＿ｉｄｃ［ｉ］がｔｉｌｅ＿ｇｒｏｕｐ＿ａｄｄｒｅｓｓ＿ｉｄｃに等しくなる値である。
【０１７１】
辞書においてシグナリングするためのその他の潜在的な値は、それぞれのタイルグループに関するバイトまたはビットカウント、タイルグループにおけるそれぞれのタイルに関するバイトまたはビットカウント、タイルグループにおけるそれぞれのタイルの高さおよび幅などを含む。
【０１７２】
図９は、一実施形態によるプロセスを示すフローチャートである。プロセス９００は、ビットストリームから画像をデコードするための方法であり、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するためにビットストリームの第１の部分をデコードすること（ステップ９０２）と、ビットストリームの第２の部分をデコードすること（ステップ９０４）とを含む。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすること（ステップ９０６）を含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値をデコードすること（ステップ９０８）と、２）第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定すること（ステップ９１０）と、３）第１のセグメントグループアドレスに基づいて第１のセグメントグループに関する第１の空間ロケーションを決定することであって、第１の空間ロケーションが、画像内の第１のセグメントグループのロケーションを表す、第１の空間ロケーションを決定すること（ステップ９１２）と、４）第１のセグメントグループに関する少なくとも１つのサンプル値をデコードし、第１の空間ロケーションによって与えられたデコードされた画像におけるロケーションに少なくとも１つのサンプル値を割り振ること（ステップ９１４）とを含む。
【０１７３】
いくつかの実施形態においては、アドレスマッピングは、配列および／またはリスト、配列および／またはリストの並行セット、ハッシュマップ、ならびに連想配列のうちの１つまたは複数を含む。実施形態においては、アドレスマッピングを形成するためにビットストリームの第１の部分をデコードすることは、リスト値の数を示す第１の値をビットストリームからデコードすることと、リスト値の数をビットストリームからデコードすることによってリストを形成することであって、リスト値の数が第１の値に等しい、リストを形成することとを含む。実施形態においては、第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定することは、第１のセグメントグループインデックス値を使用してルックアップ演算を実行することを含む。
【０１７４】
いくつかの実施形態においては、アドレスマッピングを形成するためにビットストリームの第１の部分をデコードすることは、リスト値の数を示す第１の値をビットストリームからデコードすることと、キー／値ペアｋおよびｖを表す値の数をビットストリームからデコードすることによって第１のリスト（ＫＥＹ）および第２のリスト（ＶＡＬＵＥ）を形成することであって、キー／値ペアの数が、第１の値に等しい、第１のリスト（ＫＥＹ）および第２のリスト（ＶＡＬＵＥ）を形成することとを含む。第１のリストは、キーｋを含み、第２のリストは、キー／値ペアの値ｖを含み、第１のリストおよび第２のリストの順序付けは、所与のキー／値ペアに関して、第１のリストにおける所与のキーｋに関するインデックスが第２のリストにおける所与の値ｖに関するインデックスに対応するようになっている。実施形態においては、アドレスマッピングを形成するためにビットストリームの第１の部分をデコードすることは、ハッシュ値の数を示す第１の値をビットストリームからデコードすることと、キー／値ペアｋおよびｖを表す値の数をビットストリームからデコードすることによってハッシュマップを形成することであって、キー／値ペアの数が、第１の値に等しく、所与のキー／値ペアに関して、所与のキーｋに関するインデックスが、ハッシュマップによって所与の値ｖにマップされる、ハッシュマップを形成することとを含む。
【０１７５】
いくつかの実施形態においては、第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定することは、インデックス（ｉ）を、第１のリストにおけるそのインデックスに対応する値（ＫＥＹ［ｉ］）が第１のセグメントグループインデックス値にマッチするように決定することと、第１のセグメントグループアドレスが、第２のリストにおけるそのインデックスに対応する値（ＶＡＬＵＥ［ｉ］）であると決定することとを含む。いくつかの実施形態においては、第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを決定することは、第１のセグメントグループインデックス値を使用してハッシュルックアップ演算を実行することを含む。いくつかの実施形態においては、デコードされるキー／値ペアｋおよびｖを表す値は、キーｋを表すデルタ値を含み、それによって、第１のキー／値ペアに関して、キーｋはデルタ値によって決定され、その他のキー／値ペアに関して、キーｋは、以前に決定されたキー値にデルタ値を加えて現在のキーｋを生成することによって決定される。
【０１７６】
いくつかの実施形態においては、セグメントグループは、タイルグループ、サブピクチャー、および／またはスライスに対応する。いくつかの実施形態においては、セグメントグループは、１つまたは複数のセグメントを含み、いくつかの実施形態においては、セグメントグループは、１つのセグメントのみを含む。
【０１７７】
実施形態においては、セグメントグループは、タイルグループに対応する。実施形態においては、ビットストリームの第１の部分は、パラメータセットに含まれ、この方法はさらに、さらなるセグメントグループをデコードすることを含み、アドレスマッピングは、さらなるセグメントグループをデコードするために使用される。実施形態においては、ビットストリームの第１の部分は、パラメータセットに含まれ、この方法はさらに、さらなる画像をデコードすることを含み、アドレスマッピングは、さらなる画像をデコードするために使用される。すなわち、画像が、複数のセグメントグループへとエンコードされることが可能であり、その画像のそれぞれのセグメントグループは、パラメータセットにおいて送信された同じアドレスマッピングを使用することによってデコードされることが可能である。さらに、複数の画像が、ストリームの部分としてエンコードされることが可能であり、それぞれのそのような画像もまた、パラメータセットにおいて送信された同じアドレスマッピングを使用することによってデコードされることが可能である。
【０１７８】
図１０は、一実施形態によるプロセスを示すフローチャートである。プロセス１０００は、ビットストリームから画像をデコードするための方法であり、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値を、第１のセグメントグループに関してデコードされることになるセグメントの数にマップする、サイズマッピングを形成するためにビットストリームの第１の部分をデコードすること（ステップ１００２）と、ビットストリームの第２の部分をデコードすること（ステップ１００４）とを含む。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすること（ステップ１００６）を含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値をデコードすること（ステップ１００８）と、２）第１のセグメントグループインデックス値およびサイズマッピングに基づいて第１のセグメントグループに関する第１のサイズを決定すること（ステップ１０１０）と、３）デコードされた画像を形成するためにセグメントの数をデコードすることであって、セグメントの数が第１のサイズに等しい、セグメントの数をデコードすること（ステップ１０１２）とを含む。
【０１７９】
いくつかの実施形態においては、サイズマッピングは、配列および／またはリスト、配列および／またはリストの並行セット、ハッシュマップ、ならびに連想配列のうちの１つまたは複数を含む。実施形態においては、サイズマッピングを形成するためにビットストリームの第１の部分をデコードすることは、リスト値の数を示す第１の値をビットストリームからデコードすることと、リスト値の数をビットストリームからデコードすることによってリストを形成することであって、リスト値の数が第１の値に等しい、リストを形成することとを含む。実施形態においては、第１のセグメントグループインデックス値およびサイズマッピングに基づいて第１のセグメントグループに関する第１のサイズを決定することは、第１のセグメントグループインデックス値を使用してルックアップ演算を実行することを含む。
【０１８０】
いくつかの実施形態においては、セグメントグループは、タイルグループ、サブピクチャー、および／またはスライスに対応する。いくつかの実施形態においては、セグメントグループは、１つまたは複数のセグメントを含み、いくつかの実施形態においては、セグメントグループは、１つのセグメントのみを含む。
【０１８１】
図１１は、一実施形態によるプロセスを示すフローチャートである。プロセス１１００は、画像をビットストリームへとエンコードするための方法であり、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値を複数のセグメントグループに関するセグメントグループアドレスにマップするアドレスマッピングを決定すること（ステップ１１０２）と、ビットストリームの第１の部分をエンコードすること（ステップ１１０４）と、ビットストリームの第２の部分をエンコードすること（ステップ１１０６）とを含む。ビットストリームの第１の部分をエンコードすることは、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、複数のセグメントグループを表すコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、第１のセグメントグループをエンコードすること（ステップ１１０８）を含む。第１のセグメントグループをエンコードすることは、１）第１のセグメントグループに関する第１のセグメントグループアドレスから第１のセグメントグループインデックス値を決定することであって、アドレスマッピングが、第１のセグメントグループインデックス値を第１のセグメントグループアドレスにマップする、第１のセグメントグループインデックス値を決定すること（ステップ１１１０）と、２）第１のセグメントグループに関する第１のセグメントグループインデックス値をエンコードすること（ステップ１１１２）と、３）第１のセグメントグループに関するサンプル値をエンコードすること（ステップ１１１４）とを含む。
【０１８２】
アドレスマッピングは、たとえば、入力としてインデックス値を取って、出力としてアドレス値を返すことによって、インデックス値をアドレス値にマップすることが可能である。たとえば、配列またはリストは、配列またはリストのｉ番目の要素を返すことによって、インデックス値ｉを所与のアドレス値にマップすることが可能であり、同様にハッシュマップは、キーｉに関連付けられている値を返すことによって、インデックス値ｉを所与のアドレスにマップすることが可能である。インデックスを値にマップするその他の方法も可能であり、本明細書において提供されている実施形態によって包含される。
【０１８３】
図１２は、一実施形態によるプロセスを示すフローチャートである。プロセス１２００は、画像をビットストリームへとエンコードするための方法であり、その画像は、複数のセグメントグループへと区分される。この方法は、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを決定すること（ステップ１２０２）と、ビットストリームの第１の部分をエンコードすること（ステップ１２０４）と、ビットストリームの第２の部分をエンコードすること（ステップ１２０６）とを含む。ビットストリームの第１の部分をエンコードすることは、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを形成するコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、複数のセグメントグループを表すコードワードを生成することを含む。ビットストリームの第２の部分をエンコードすることは、第１のセグメントグループをエンコードすること（ステップ１２０８）を含む。第１のセグメントグループをエンコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値を決定することであって、サイズマッピングが、第１のセグメントグループに関する第１のセグメントグループインデックス値を第１のサイズにマップし、第１のサイズが、第１のセグメントグループに関してエンコードされることになるセグメントの数である、第１のセグメントグループインデックス値を決定すること（ステップ１２１０）と、２）第１のセグメントグループに関する第１のセグメントグループインデックス値をエンコードすること（ステップ１２１２）と、３）第１のセグメントグループに関するセグメントの数をエンコードすることであって、セグメントの数が第１のサイズに等しい、セグメントの数をエンコードすること（ステップ１２１４）とを含む。
【０１８４】
いくつかの実施形態においては、第１のセグメントグループインデックス値をエンコードすることは、第１のセグメントグループインデックス値を表す１つまたは複数のコードワードを生成することを含む。
【０１８５】
図１３は、実施形態によるデコーダ１３０２およびエンコーダ１３０４の機能ユニットを示す図である。デコーダ１３０２は、デコーディングユニット１３１０および決定ユニット１３１２を含む。エンコーダ１３０４は、エンコーディングユニット１３１４および決定ユニット１３１６を含む。
【０１８６】
一実施形態においては、デコーディングユニット１３１０は、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するためにビットストリームの第１の部分をデコードするように設定されており、ビットストリームの第２の部分をデコードするようにさらに設定されている。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすることを含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値を（デコーディングユニット１３１０によって）デコードすることと、２）第１のセグメントグループインデックス値およびアドレスマッピングに基づいて第１のセグメントグループに関する第１のセグメントグループアドレスを（決定ユニット１３１２によって）決定することと、３）第１のセグメントグループアドレスに基づいて第１のセグメントグループに関する第１の空間ロケーションを（決定ユニット１３１２によって）決定することであって、第１の空間ロケーションが、画像内の第１のセグメントグループのロケーションを表す、第１の空間ロケーションを（決定ユニット１３１２によって）決定することと、４）第１のセグメントグループに関する少なくとも１つのサンプル値を（デコーディングユニット１３１０によって）デコードし、第１の空間ロケーションによって与えられたデコードされた画像におけるロケーションに少なくとも１つのサンプル値を割り振ることとを含む。
【０１８７】
一実施形態においては、デコーディングユニット１３１０は、セグメントグループインデックス値を、第１のセグメントグループに関してデコードされることになるセグメントの数にマップする、サイズマッピングを形成するためにビットストリームの第１の部分をデコードするように設定されており、ビットストリームの第２の部分をデコードするようにさらに設定されている。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をデコードすることは、第１のセグメントグループをデコードすることを含む。第１のセグメントグループをデコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値を（デコーディングユニット１３１０によって）デコードすることと、２）第１のセグメントグループインデックス値およびサイズマッピングに基づいて第１のセグメントグループに関する第１のサイズを（決定ユニット１３１２によって）決定することと、３）デコードされた画像を形成するためにセグメントの数を（デコーディングユニット１３１０によって）デコードすることであって、セグメントの数が第１のサイズに等しい、セグメントの数を（デコーディングユニット１３１０によって）デコードすることとを含む。
【０１８８】
一実施形態においては、決定ユニット１３１６は、セグメントグループインデックス値を複数のセグメントグループに関するセグメントグループアドレスにマップするアドレスマッピングを決定するように設定されている。エンコーディングユニット１３１４は、ビットストリームの第１の部分をエンコードするように設定されており、ビットストリームの第２の部分をエンコードするようにさらに設定されている。ビットストリームの第１の部分は、セグメントグループインデックス値をセグメントグループアドレスにマップするアドレスマッピングを形成するコードワードを含む。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をエンコードすることは、第１のセグメントグループをエンコードすることを含む。第１のセグメントグループをエンコードすることは、１）第１のセグメントグループに関する第１のセグメントグループアドレスから第１のセグメントグループインデックス値を（決定ユニット１３１６によって）決定することであって、アドレスマッピングが、第１のセグメントグループインデックス値を第１のセグメントグループアドレスにマップする、第１のセグメントグループインデックス値を（決定ユニット１３１６によって）決定することと、２）第１のセグメントグループに関する第１のセグメントグループインデックス値を（エンコーディングユニット１３１４によって）エンコードすることと、３）第１のセグメントグループに関するサンプル値を（エンコーディングユニット１３１４によって）エンコードすることとを含む。
【０１８９】
一実施形態においては、決定ユニット１３１６は、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを決定するように設定されている。エンコーディングユニット１３１４は、ビットストリームの第１の部分をエンコードするように設定されており、ビットストリームの第２の部分をエンコードするようにさらに設定されている。ビットストリームの第１の部分は、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを形成するコードワードを含む。ビットストリームの第２の部分は、複数のセグメントグループを表すコードワードを含む。ビットストリームの第２の部分をエンコードすることは、第１のセグメントグループをエンコードすることを含む。第１のセグメントグループをエンコードすることは、１）第１のセグメントグループに関する第１のセグメントグループインデックス値を（決定ユニット１３１６によって）決定することであって、サイズマッピングが、第１のセグメントグループに関する第１のセグメントグループインデックス値を第１のサイズにマップし、第１のサイズが、第１のセグメントグループに関してエンコードされることになるセグメントの数である、第１のセグメントグループインデックス値を（決定ユニット１３１６によって）決定することと、２）第１のセグメントグループに関する第１のセグメントグループインデックス値を（エンコーディングユニット１３１４によって）エンコードすることと、３）第１のセグメントグループに関するセグメントの数を（エンコーディングユニット１３１４によって）エンコードすることであって、セグメントの数が第１のサイズに等しい、セグメントの数を（エンコーディングユニット１３１４によって）エンコードすることとを含む。
【０１９０】
図１４は、いくつかの実施形態によるノード（たとえば、エンコーダ１３０２および／またはデコーダ１３０４）のブロック図である。図Ｘにおいて示されているように、ノードは、１つまたは複数のプロセッサ（Ｐ）１４５５（たとえば、汎用マイクロプロセッサおよび／または１つもしくは複数のその他のプロセッサ、たとえば、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）など）を含むことが可能である処理回路（ＰＣ）１４０２と、ノードが、ネットワークインターフェース１４４８が接続されているネットワーク１４１０（たとえば、インターネットプロトコル（ＩＰ）ネットワーク）に接続されているその他のノードへデータを送信することおよびそれらのその他のノードからデータを受信することを可能にするための送信機（Ｔｘ）１４４５および受信機（Ｒｘ）１４４７を含むネットワークインターフェース１４４８と、１つもしくは複数の不揮発性ストレージデバイスおよび／または１つもしくは複数の揮発性ストレージデバイスを含むことが可能であるローカルストレージユニット（別名、「データストレージシステム」）１４０８とを含むことが可能である。ＰＣ１４０２がプログラマブルプロセッサを含む実施形態においては、コンピュータプログラム製品（ＣＰＰ）１４４１が提供されることが可能である。ＣＰＰ１４４１は、コンピュータ可読命令（ＣＲＩ）１４４４を含むコンピュータプログラム（ＣＰ）１４４３を格納しているコンピュータ可読メディア（ＣＲＭ）１４４２を含む。ＣＲＭ１０４２は、磁気メディア（たとえば、ハードディスク）、光メディア、メモリデバイス（たとえば、ランダムアクセスメモリ、フラッシュメモリ）等などの非一時的コンピュータ可読メディアであることが可能である。いくつかの実施形態においては、コンピュータプログラム１４４３のＣＲＩ１４４４は、ＰＣ１４０２によって実行されたときに、ＣＲＩが、本明細書において記述されているステップ（たとえば、フローチャートを参照しながら本明細書において記述されているステップ）をノードに実行させるように設定されている。その他の実施形態においては、ノードは、コードに対する必要性を伴わずに、本明細書において記述されているステップを実行するように設定されることが可能である。すなわち、たとえば、ＰＣ１４０２は、単に１つまたは複数のＡＳＩＣから構成されることが可能である。したがって、本明細書において記述されている実施形態の特徴は、ハードウェアおよび／またはソフトウェアで実施されることが可能である。
【０１９１】
本開示のさまざまな実施形態が本明細書において記述されているが、それらは、限定ではなく、単なる例として提示されているということを理解されたい。したがって、本開示の広がりおよび範囲は、上述の例示的な実施形態のうちのいずれによっても限定されるべきではない。その上、上述の要素の、それらのすべての可能なバリエーションでのあらゆる組合せが、本開示によって包含されている。ただし、本明細書において別段の記載がある場合、またはその他の形で文脈によって明らかに矛盾される場合は除く。
【０１９２】
加えて、図面において示されている上述のプロセスは、一連のステップとして示されているが、これは、もっぱら例示のために行われたものである。したがって、いくつかのステップが加えられることが可能であり、いくつかのステップが省略されることが可能であり、ステップの順序がアレンジし直されることが可能であり、いくつかのステップが並行して実行されることが可能であると考えられる。
【図１】
2021528879.tif 000022
【図２】
2021528879.tif 000023
【図３】
2021528879.tif 000024
【図４】
2021528879.tif 000025
【図５】
2021528879.tif 000026
【図６】
2021528879.tif 000027
【図７】
2021528879.tif 000028
【図８】
2021528879.tif 000029
【図９】
2021528879.tif 000030
【図１０】
2021528879.tif 000031
【図１１】
2021528879.tif 000032
【図１２】
2021528879.tif 000033
【図１３】
2021528879.tif 000034
【図１４】
2021528879.tif 000035
【手続補正書】
【提出日】令和2年12月25日(2020.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビットストリームから画像をデコードするための方法であって、前記画像が複数のセグメントグループへと区分されており、
セグメントグループインデックス値を、第１のセグメントグループに関してデコードされることになるセグメントの数にマップする、サイズマッピングを形成するために前記ビットストリームの第１の部分をデコードすることと、
前記ビットストリームの第２の部分をデコードすることとを含み、
前記ビットストリームの前記第２の部分が、前記複数のセグメントグループを表すコードワードを含み、
前記ビットストリームの前記第２の部分をデコードすることが、第１のセグメントグループをデコードすることを含み、
前記第１のセグメントグループをデコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値をデコードすることと、
２）前記第１のセグメントグループインデックス値および前記サイズマッピングに基づいて前記第１のセグメントグループに関する第１のサイズを決定することと、
３）前記デコードされた画像を形成するためにセグメントの数をデコードすることであって、セグメントの前記数が前記第１のサイズに等しい、セグメントの数をデコードすることとを含む、方法。
【請求項２】
前記サイズマッピングが、配列および／またはリスト、ならびに配列および／またはリストの並行セットのうちの１つまたは複数を含む、請求項１に記載の方法。
【請求項３】
前記サイズマッピングを形成するために前記ビットストリームの前記第１の部分をデコードすることが、
リスト値の数を示す第１の値を前記ビットストリームからデコードすることと、
リスト値の数を前記ビットストリームからデコードすることによってリストを形成することであって、リスト値の前記数が前記第１の値に等しい、リストを形成することとを含む、請求項１または２に記載の方法。
【請求項４】
前記第１のセグメントグループインデックス値および前記サイズマッピングに基づいて前記第１のセグメントグループに関する前記第１のサイズを決定することが、前記第１のセグメントグループインデックス値を使用してルックアップ演算を実行することを含む、請求項３に記載の方法。
【請求項５】
セグメントグループがタイルグループに対応する、請求項１から４のいずれか一項に記載の方法。
【請求項６】
セグメントグループがサブピクチャーに対応する、請求項１から５のいずれか一項に記載の方法。
【請求項７】
セグメントがスライスに対応する、請求項１から６のいずれか一項に記載の方法。
【請求項８】
セグメントグループが、１つまたは複数のセグメントを含む、請求項１から７のいずれか一項に記載の方法。
【請求項９】
セグメントグループが、１つのセグメントのみを含む、請求項１から７のいずれか一項に記載の方法。
【請求項１０】
画像をビットストリームへとエンコードするための方法であって、前記画像が複数のセグメントグループへと区分されており、
セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを決定することと、
前記ビットストリームの第１の部分をエンコードすることと、
前記ビットストリームの第２の部分をエンコードすることとを含み、
前記ビットストリームの前記第１の部分をエンコードすることが、セグメントグループインデックス値を、前記第１のセグメントグループに関してエンコードされることになるセグメントの数にマップする、前記サイズマッピングを形成するコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、前記複数のセグメントグループを表すコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、第１のセグメントグループをエンコードすることを含み、
前記第１のセグメントグループをエンコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値を決定することであって、前記サイズマッピングが、前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値を第１のサイズにマップし、前記第１のサイズが、前記第１のセグメントグループに関してエンコードされることになるセグメントの数である、第１のセグメントグループインデックス値を決定することと、
２）前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値をエンコードすることと、
３）前記第１のセグメントグループに関するセグメントの数をエンコードすることであって、セグメントの前記数が前記第１のサイズに等しい、セグメントの数をエンコードすることとを含む、方法。
【請求項１１】
前記第１のセグメントグループインデックス値をエンコードすることが、前記第１のセグメントグループインデックス値を表す１つまたは複数のコードワードを生成することを含む、請求項１０に記載の方法。
【請求項１２】
ビットストリームから画像をデコードするためのデコーダであって、前記画像が複数のセグメントグループへと区分されており、
デコーディングユニットおよび決定ユニットを含み、
前記デコーディングユニットが、セグメントグループインデックス値を、第１のセグメントグループに関してデコードされることになるセグメントの数にマップする、サイズマッピングを形成するために前記ビットストリームの第１の部分をデコードするように設定されており、
前記デコーディングユニットがさらに、前記ビットストリームの第２の部分をデコードするように設定されており、
前記ビットストリームの前記第２の部分が、前記複数のセグメントグループを表すコードワードを含み、前記ビットストリームの前記第２の部分をデコードすることが、第１のセグメントグループをデコードすることを含み、前記第１のセグメントグループをデコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値を（前記デコーディングユニットによって）デコードすることと、
２）前記第１のセグメントグループインデックス値および前記サイズマッピングに基づいて前記第１のセグメントグループに関する第１のサイズを（前記決定ユニットによって）決定することと、
３）前記デコードされた画像を形成するためにセグメントの数を（前記デコーディングユニットによって）デコードすることであって、セグメントの前記数が前記第１のサイズに等しい、セグメントの数を（前記デコーディングユニットによって）デコードすることとを含む、デコーダ。
【請求項１３】
画像をビットストリームへとエンコードするためのエンコーダであって、前記画像が、複数のセグメントグループへと区分されており、
エンコーディングユニットおよび決定ユニットを含み、
前記決定ユニットが、セグメントグループインデックス値を、第１のセグメントグループに関してエンコードされることになるセグメントの数にマップするサイズマッピングを決定するように設定されており、
前記エンコーディングユニットが、前記ビットストリームの第１の部分をエンコードするように設定されており、
前記エンコーディングユニットがさらに、前記ビットストリームの第２の部分をエンコードするように設定されており、
前記ビットストリームの前記第１の部分をエンコードすることが、セグメントグループインデックス値を、前記第１のセグメントグループに関してエンコードされることになるセグメントの数にマップする、前記サイズマッピングを形成するコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、前記複数のセグメントグループを表すコードワードを生成することを含み、
前記ビットストリームの前記第２の部分をエンコードすることが、第１のセグメントグループをエンコードすることを含み、前記第１のセグメントグループをエンコードすることが、
１）前記第１のセグメントグループに関する第１のセグメントグループインデックス値を（前記決定ユニットによって）決定することであって、前記サイズマッピングが、前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値を第１のサイズにマップし、前記第１のサイズが、前記第１のセグメントグループに関してエンコードされることになるセグメントの数である、第１のセグメントグループインデックス値を（前記決定ユニットによって）決定することと、
２）前記第１のセグメントグループに関する前記第１のセグメントグループインデックス値を（前記エンコーディングユニットによって）エンコードすることと、
３）前記第１のセグメントグループに関するセグメントの数を（前記エンコーディングユニットによって）エンコードすることであって、セグメントの前記数が前記第１のサイズに等しい、セグメントの数を（前記エンコーディングユニットによって）エンコードすることとを含む、エンコーダ。
【請求項１４】
ノードの処理回路によって実行されたときに、請求項１から１１のいずれか一項に記載の方法を前記ノードに実行させる命令を含むコンピュータプログラム。
【請求項１５】
請求項１４に記載のコンピュータプログラムを含むキャリアであって、電子信号、光信号、無線信号、およびコンピュータ可読ストレージメディアのうちの１つであるキャリア。
【国際調査報告】
2021528879.tif 000036
2021528879.tif 000037
2021528879.tif 000038
2021528879.tif 000039