(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023072073
(43)【公開日】2023-05-23
(54)【発明の名称】コード化された画像の多様な空間分割のためのエンコーダとデコーダ、符号化方法と復号方法
(51)【国際特許分類】
H04N 19/119 20140101AFI20230516BHJP
H04N 19/157 20140101ALI20230516BHJP
H04N 19/174 20140101ALI20230516BHJP
H04N 19/176 20140101ALI20230516BHJP
H04N 19/70 20140101ALI20230516BHJP
【FI】
H04N19/119
H04N19/157
H04N19/174
H04N19/176
H04N19/70
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2023041762
(22)【出願日】2023-03-16
(62)【分割の表示】P 2021500701の分割
【原出願日】2019-07-09
(31)【優先権主張番号】18182554.8
(32)【優先日】2018-07-09
(33)【優先権主張国・地域又は機関】EP
(71)【出願人】
【識別番号】500341779
【氏名又は名称】フラウンホーファー-ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン
(74)【代理人】
【識別番号】110002952
【氏名又は名称】弁理士法人鷲田国際特許事務所
(72)【発明者】
【氏名】ジョージ・ヴァレリ
(72)【発明者】
【氏名】ヒンツ・トビアス
(72)【発明者】
【氏名】マー・ジャッキー
(72)【発明者】
【氏名】サンチェスデラフエンテ・ヤゴ
(72)【発明者】
【氏名】スクピン・ロバート
(72)【発明者】
【氏名】シエル・トーマス
(72)【発明者】
【氏名】ブランデンバーグ・イェンス
(72)【発明者】
【氏名】リーマン・クリスチャン
(72)【発明者】
【氏名】ヴィーコフスキー・アダム
(72)【発明者】
【氏名】シュヴァルツ・ハイコー
(72)【発明者】
【氏名】マルペ・デトレフ
(72)【発明者】
【氏名】ヴィーガンド・トーマス
(57)【要約】 (修正有)
【課題】ビデオの画像を再構成するための符号化及び復号のための方法を提供する。
【解決手段】画像は複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は、画像内に位置し、複数のコーディング領域のそれぞれは、画像内に位置する複数のコーディングツリーユニットのうちの1つまたは複数のコーディングツリーユニットを含む。2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、コーディング領域の2つまたはそれより多いコーディングツリーユニットのコーディング順序を示す。表示データを使用して、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に従う。2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含む。
【選択図】なし
【特許請求の範囲】
【請求項1】
ピクチャをビットストリームに符号化する装置であって、
複数の第1の符号化エリアを取得するため、1つ以上の水平方向の境界と1つ以上の垂直方向の境界とによって前記ピクチャをパーティションする処理であって、前記複数の第1の符号化エリアの第1の符号化エリアは、前記ピクチャの矩形領域をカバーする符号化ツリーユニット(CTU)の系列を含む、パーティションする処理と、
前記第1の符号化エリア内に含まれる複数の第2の符号化エリアを取得するため、前記第1の符号化エリアを少なくとも1つの追加的な水平方向の境界にさらにパーティションする処理であって、前記複数の第2の符号化エリアの第2の符号化エリアは、前記CTUの系列の矩形部分を含む、さらにパーティションする処理と、
第2の符号化エリア情報の存在を示す第2の矩形符号化エリアフラグを符号化する処理と、
前記第1の符号化エリア内の前記複数の第2の符号化エリアの数と、前記第2の符号化エリア内に垂直方向に配置されるCTUの数として指定される第2の符号化エリア高さとを指示する前記第2の符号化エリア情報を符号化する処理と、
を実行するよう構成される少なくとも1つのプロセッサを有する装置。
【請求項2】
前記1つ以上の水平方向の境界は、前記ピクチャの幅を拡大し、前記ピクチャを1つ以上のタイル行に分割し、
前記1つ以上の垂直方向の境界は、前記ピクチャの高さを拡大し、前記ピクチャを1つ以上のタイル列に分割し、
前記複数の第1の符号化エリアは、複数のタイルを含む、請求項1に記載の装置。
【請求項3】
前記第2の符号化エリアは、前記第1の符号化エリアに対応する前記1つ以上の垂直方向の境界の垂直方向の境界によって、それの左右で拘束され、
前記第2の符号化エリアは、前記少なくとも1つの追加的な水平方向の境界によって、それの上下で拘束される、請求項1に記載の装置。
【請求項4】
前記第2の符号化エリア情報は、ピクチャパラメータセット(PPS)に含まれるシンタックス要素を含む、請求項1に記載の装置。
【請求項5】
ピクチャをビットストリームに符号化する方法であって、
複数の第1の符号化エリアを取得するため、1つ以上の水平方向の境界と1つ以上の垂直方向の境界とによって前記ピクチャをパーティションすることであって、前記複数の第1の符号化エリアの第1の符号化エリアは、前記ピクチャの矩形領域をカバーする符号化ツリーユニット(CTU)の系列を含む、パーティションすることと、
前記第1の符号化エリア内に含まれる複数の第2の符号化エリアを取得するため、前記第1の符号化エリアを少なくとも1つの追加的な水平方向の境界にさらにパーティションする処理であって、前記複数の第2の符号化エリアの第2の符号化エリアは、前記CTUの系列の矩形部分を含む、さらにパーティションすることと、
第2の符号化エリア情報の存在を示す第2の矩形符号化エリアフラグを符号化することと、
前記第1の符号化エリア内の前記複数の第2の符号化エリアの数と、前記第2の符号化エリア内に垂直方向に配置されるCTUの数として指定される第2の符号化エリア高さとを指示する前記第2の符号化エリア情報を符号化することと、
を有する方法。
【請求項6】
前記1つ以上の水平方向の境界は、前記ピクチャの幅を拡大し、前記ピクチャを1つ以上のタイル行に分割し、
前記1つ以上の垂直方向の境界は、前記ピクチャの高さを拡大し、前記ピクチャを1つ以上のタイル列に分割し、
前記複数の第1の符号化エリアは、複数のタイルを含む、請求項5に記載の方法。
【請求項7】
前記第2の符号化エリアは、前記第1の符号化エリアに対応する前記1つ以上の垂直方向の境界の垂直方向の境界によって、それの左右で拘束され、
前記第2の符号化エリアは、前記少なくとも1つの追加的な水平方向の境界によって、それの上下で拘束される、請求項5に記載の方法。
【請求項8】
前記第2の符号化エリア情報は、ピクチャパラメータセット(PPS)に含まれるシンタックス要素を含む、請求項5に記載の方法。
【請求項9】
ピクチャをビットストリームから復号化する装置であって、
複数の第1の符号化エリアを取得するため、前記ピクチャに対応する1つ以上の水平方向の境界と1つ以上の垂直方向の境界とを導出する処理であって、前記複数の第1の符号化エリアの第1の符号化エリアは、前記ピクチャの矩形領域をカバーする符号化ツリーユニット(CTU)の系列を含む、導出する処理と、
第2の符号化エリア情報の存在を示す第2の矩形符号化エリアフラグを復号化する処理と、
前記第1の符号化エリア内に含まれる複数の第2の符号化エリアの数であって、前記複数の第2の符号化エリアの第2の符号化エリアは、前記CTUの系列の矩形部分を含む、複数の第2の符号化エリアの数と、前記第2の符号化エリア内に垂直方向に配置されるCTUの数として指定される第2の符号化エリア高さとを指示する前記第2の符号化エリア情報を復号化する処理と、
前記第1の符号化エリア内に含まれる前記複数の第2の符号化エリアを取得するため、前記第2の符号化エリア情報に基づいて、前記第1の符号化エリアに対応する少なくとも1つの追加的な水平方向の境界を導出する処理と、
を実行するよう構成される少なくとも1つのプロセッサを有する装置。
【請求項10】
前記1つ以上の水平方向の境界は、前記ピクチャの幅を拡大し、前記ピクチャを1つ以上のタイル行に分割し、
前記1つ以上の垂直方向の境界は、前記ピクチャの高さを拡大し、前記ピクチャを1つ以上のタイル列に分割し、
前記複数の第1の符号化エリアは、複数のタイルを含む、請求項9に記載の装置。
【請求項11】
前記第2の符号化エリアは、前記第1の符号化エリアに対応する前記1つ以上の垂直方向の境界の垂直方向の境界によって、それの左右で拘束され、
前記第2の符号化エリアは、前記少なくとも1つの追加的な水平方向の境界によって、それの上下で拘束される、請求項9に記載の装置。
【請求項12】
前記第2の符号化エリア情報は、ピクチャパラメータセット(PPS)に含まれるシンタックス要素を含む、請求項9に記載の装置。
【請求項13】
ピクチャをビットストリームから復号化する方法であって、
複数の第1の符号化エリアを取得するため、前記ピクチャに対応する1つ以上の水平方向の境界と1つ以上の垂直方向の境界とを導出することであって、前記複数の第1の符号化エリアの第1の符号化エリアは、前記ピクチャの矩形領域をカバーする符号化ツリーユニット(CTU)の系列を含む、導出する処理と、
第2の符号化エリア情報の存在を示す第2の矩形符号化エリアフラグを復号化することと、
前記第1の符号化エリア内に含まれる複数の第2の符号化エリアの数であって、前記複数の第2の符号化エリアの第2の符号化エリアは、前記CTUの系列の矩形部分を含む、複数の第2の符号化エリアの数と、前記第2の符号化エリア内に垂直方向に配置されるCTUの数として指定される第2の符号化エリア高さとを指示する前記第2の符号化エリア情報を復号化することと、
前記第1の符号化エリア内に含まれる前記複数の第2の符号化エリアを取得するため、前記第2の符号化エリア情報に基づいて、前記第1の符号化エリアに対応する少なくとも1つの追加的な水平方向の境界を導出することと、
を有する方法。
【請求項14】
前記1つ以上の水平方向の境界は、前記ピクチャの幅を拡大し、前記ピクチャを1つ以上のタイル行に分割し、
前記1つ以上の垂直方向の境界は、前記ピクチャの高さを拡大し、前記ピクチャを1つ以上のタイル列に分割し、
前記複数の第1の符号化エリアは、複数のタイルを含む、請求項13に記載の方法。
【請求項15】
前記第2の符号化エリアは、前記第1の符号化エリアに対応する前記1つ以上の垂直方向の境界の垂直方向の境界によって、それの左右で拘束され、
前記第2の符号化エリアは、前記少なくとも1つの追加的な水平方向の境界によって、それの上下で拘束される、請求項13に記載の方法。
【請求項16】
前記第2の符号化エリア情報は、ピクチャパラメータセット(PPS)に含まれるシンタックス要素を含む、請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ビデオの符号化およびビデオの復号に関し、特に、エンコーダおよびデコーダ、コード化された画像の多様な空間分割のための符号化方法、および復号方法に関する。
【背景技術】
【0002】
H.265/HEVCは、エンコーダおよび/またはデコーダでの並列処理を向上または有効化までもするためのツールをすでに提供しているビデオコーデックである。例えば、HEVCは、互いに独立して符号化されたタイルの配列への画像の細分割を補助する。HEVCで補助される別の概念は、WPPに関連しており、それによれば、連続するCTUラインの処理で何らかの最小CTUオフセットが守られている場合(CTU=コーディングツリーユニット)、画像のCTU行またはCTUラインを左から右に並行して、例えばストライプで処理できる。ただし、ビデオエンコーダおよび/またはビデオデコーダの並列処理機能をさらに効率的に補助するビデオコーデックを手元に用意しておくことが望ましい。
次のセクション「最先端のVCL分割」では、最先端のVCL分割の導入を説明する(VCL=ビデオコーディングレイヤー)。
【0003】
通常、ビデオコーディングでは、画像サンプルのコーディングプロセスでは、予測や変換コーディングなどの共同処理のためにサンプルがいくつかの長方形の領域に分割される、より小さなパーティションが必要である。したがって、画像は、ビデオシーケンスの符号化中に一定である特定のサイズのブロックに分割される。H.264/AVCでは、16x16のサンプルの規格の固定のサイズのブロック、いわゆるマクロブロックが使用されている。最先端のHEVC規格([1]を参照)には、最大サイズ64×64サンプルのコーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)がある。HEVCの詳細な説明では、このような種類のブロックの場合、より一般的な用語であるCTUが使用される。
CTUは、左上のCTUから始まり、画像のCTUを線方向に、右下のCTUまで処理するラスタースキャン順に処理される。
【0004】
コード化されたCTUデータは、スライスと呼ばれる一種のコンテナに編成される。もともと、スライスとは、画像の1つまたは複数の連続したCTUを含むセグメントを意味する。
【0005】
以下のサブセクション「スライスを使用した画像の分割」では、コード化されたデータのセグメンテーションにスライスがどのように使用されるかについて説明する。別の観点からは、全体像を1つの大きなセグメントとして定義することもできるため、従来から、スライスという用語が引き続き適用される。コード化された画像サンプルに加えて、スライスは、いわゆるスライスヘッダーに配置されるスライス自体のコーディングプロセスに関連する追加情報も含む。
【0006】
最先端技術によれば、VCL(ビデオコーディングレイヤー)は、断片化と空間分割の手法も備えている。このような分割は、例えば、以下でより詳細に説明するように、並列化における負荷分散の処理、ネットワーク送信におけるCTUのサイズマッチング、エラーの軽減などの様々な理由でビデオコーティングに適用することができる。
次のサブセクション「スライスを使用した画像の分割」では、スライスを使用した画像の分割について説明する。
【0007】
H.263規格以降、特定のスキャン順序で連続するブロックを表すデータのシーケンスは、スライスと呼ばれるグループに編成できる。通常、例えば予測とエントロピーコーディングの観点から画像の異なるスライスのCTU間の依存関係は禁止されているため、画像内の個々のスライスを個別に再構築できる。
【0008】
図2は、ラスタースキャン順のスライスによる画像セグメンテーションを示している。スライスのサイズは、
図2に示すように、CTU(コーディングツリーユニット)の数と、スライスに属する各コーディングされたCTUのサイズによって決まる。
図2は、50個のCTU、例えば、CTU21、CTU24およびCTU51を含む。
【0009】
次のサブセクション「タイルを使用した画像の分割」では、
図3を参照してタイルを使用した画像の分割について説明する。
図3は、50個のCTU、例えば、CTU23、CTU27およびCTU41を含む。
【0010】
タイルはHEVCで導入された概念であるが、この概念はH.264/AVCに追加されたFlexible Macroblock Ordering(FMO)と非常によく似ている。タイルの概念により、画像をいくつかの長方形の領域に分割できる。
【0011】
したがって、タイルは、
図3に示すように、元の画像を指定された高さと幅でそれぞれ指定された数の行と列に分割した結果である。その結果、HEVCビットストリーム内のタイルには、通常のグリッドを形成する共通の境界が必要である。
次のサブセクション「最先端の分割のユースケースと欠点」では、
図4と
図5を参照して、最先端の分割のユースケースと欠点について説明する。
【0012】
図4は、解像度が等しくないタイルベースの360°ビデオストリーミングを示している。360°ビデオストリーミングでは、ビューポートアダプティブストリーミング技術がタイルベースの360°ビデオストリーミングと呼ばれ、注目を集めている。主な着想は、様々な解像度で複数のタイルで構成される360°のビデオを提供することである。したがって、現在のビューポートに応じて、クライアントは、
図4に示すように、ビューポートに一致するいくつかのタイルを高解像度でダウンロードし、ビューポートの外側にある他のタイルを低解像度でダウンロードする。
【0013】
クライアント側では、受信機はこれらのダウンロードされたタイルを異なる解像度で単一のHEVCビットストリームに結合する。それに対してダウンロードされたタイルは、HEVC構文ではタイルとして記述できなくなる。これは、ダウンロードされたこれらのタイルが全体像で同じ境界を共有しておらず、元のストリームのタイルの粒度が異なるためである。例えば、
図4の低解像度部分の上下の破線を参照されたい。これは、左側の高解像度部分に対応する境界がないため、HEVC構文ではスライス境界としてのみ表現できる。
【0014】
より柔軟な画像分割が有益である別のシナリオは、低遅延の会話型アプリケーションである。画像の分割はまた、復号/符号化の並列化にも使用される。場合によっては、この並列化がリアルタイムの復号/符号化を実現する唯一の方法である。写真に2人が写っているビデオ会議のシナリオを想像することができる。
図5は、柔軟なコーディング領域の分割を示している。
【0015】
おそらく、(コーディングの複雑さに関して)公平な負荷分散を実現するために使用できる優れた画像分割は、
図5に示すものである可能性がある。ただし、このシナリオでは、長方形のタイリンググリッドが必要なため、タイリングには所望の柔軟性がない。
【0016】
セグメンテーション(スライスを使用)の別の主な目的は、エラーの堅牢性である。画像の一部のスライスが失われた場合でも、正常に受信されたスライスの再構成が妨げられることはなく、そのため、部分的に再構成された画像を出力して、次の画像の時間予測プロセスで参照画像としてさらに使用できる。この機能は、エラー率が高い伝送システムや、各画像のコンテンツが非常に重要な伝送システムで非常に重要である。他方、トランスポート層(TCP/IP)でのエラー検出および軽減技術を特徴とし、再送信が成功するまでバッファストールが送信エラーの解決策である送信スキーム、例えばMPEG DASHのようなHTTPを介した動的アダプティブストリーミングも存在する。このようなシナリオでは、追加の依存関係を導入すると、エラーの回復力が損なわれる可能性がある。最先端のスライスとタイルのパーティションは、その点でも柔軟性に欠けている。
【発明の概要】
【発明が解決しようとする課題】
【0017】
本発明の目的は、ビデオの符号化およびビデオの復号のための改善された概念を提供することである。
【0018】
本発明の目的は、請求項1に記載のビデオエンコーダ、請求項57に記載のビデオデコーダ、請求項113に記載のシステム、請求項114に記載のビデオ符号化方法、請求項115に記載のビデオ復号化方法、請求項116に記載のコンピュータプログラム、および請求項117に記載の符号化されたビデオ信号によって解決される。
【課題を解決するための手段】
【0019】
符号化されたビデオ信号を生成することによって画像を符号化するためのビデオエンコーダが提供される。ビデオエンコーダは、ビデオの画像を符号化された画像データに符号化するように構成されたデータエンコーダを含み、データエンコーダはさらに、指示データを生成するように構成されている。さらに、ビデオエンコーダは、符号化された画像データおよび指示データを含む符号化されたビデオ信号を生成するように構成された信号発生器を備える。画像は、複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は、画像内に位置し、複数のコーディング領域のそれぞれは、画像内に位置する複数のコーディングツリーユニットのうちの1つまたは複数のコーディングツリーユニットを含み、データエンコーダは、複数のコーディング領域に依存して画像を符号化するように構成され、データエンコーダは、指示データが複数のコーディング領域に関する情報を含むように指示データを生成するように構成される。複数のコーディング領域のうちの1つまたは複数のコーディング領域は、複数のコーディングツリーユニットのうちの2つまたはそれより多いコーディングツリーユニットを含み、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、前記コーディング領域の2つまたはそれより多いコーディングツリーユニットのコーディング順序を示し、データエンコーダは、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に依存して画像を符号化するように構成され、データエンコーダは、指示データが、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含むように、指示データを生成するように構成される。
【0020】
さらに、ビデオの画像を再構成するために、符号化された画像データおよびビデオの画像の指示データを含む符号化されたビデオ信号を復号するためのビデオデコーダが提供される。ビデオデコーダは、符号化されたビデオ信号を受信するように構成されたインターフェースと、指示データを使用して符号化された画像データを復号することによって、ビデオの画像を再構築するように構成されたデータデコーダとを備える。画像は、複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は、画像内に位置し、複数のコーディング領域のそれぞれは、画像内に位置する複数のコーディングツリーユニットのうちの1つまたは複数のコーディングツリーユニットを含み、データデコーダは、複数のコーディング領域に依存して符号化された画像を復号するように構成され、指示データが複数のコーディング領域に関する情報を含む。複数のコーディング領域のうちの1つまたは複数のコーディング領域は、複数のコーディングツリーユニットのうちの2つまたはそれより多いコーディングツリーユニットを含み、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、前記コーディング領域の2つまたはそれより多いコーディングツリーユニットのコーディング順序を示し、データデコーダは、指示データを使用して、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に従って、符号化された画像データを復号するように構成され、指示データが、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含む。
さらに、符号化されたビデオ信号を生成することによって画像を符号化するための方法が提供される。この方法は、
-ビデオの画像を符号化された画像データに符号化すること、
-指示データを生成すること、および、
-符号化された画像データと指示データを含む符号化されたビデオ信号を生成すること
を含む。
【0021】
画像は、複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は、画像内に位置し、複数のコーディング領域のそれぞれは、画像内に位置する複数のコーディングツリーユニットのうちの1つまたは複数のコーディングツリーユニットを含み、画像の符号化は、複数のコーディング領域に依存して行われ、指示データを生成することは、指示データが複数のコーディング領域に関する情報を含むように行われる。複数のコーディング領域のうちの1つまたは複数のコーディング領域は、複数のコーディングツリーユニットのうちの2つまたはそれより多いコーディングツリーユニットを含み、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、前記コーディング領域の2つまたはそれより多いコーディングツリーユニットのコーディング順序を示し、画像の符号化は、複数のコーディング領域に依存して行われ、指示データを生成することは、指示データが、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含むように行われる。
【0022】
さらに、ビデオの画像を再構成するために、符号化された画像データおよびビデオの画像の指示データを含む符号化されたビデオ信号を復号するための方法が提供される。この方法は、
-符号化されたビデオ信号を受信すること、および
-指示データを使用して符号化された画像データを復号することにより、ビデオの画像を再構築すること
を含む。
【0023】
画像は、複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は、画像内に位置し、複数のコーディング領域のそれぞれは、画像内に位置する複数のコーディングツリーユニットのうちの1つまたは複数のコーディングツリーユニットを含み、指示データを使用して、複数のコーディング領域に依存して符号化された画像データを復号するのを実行し、指示データが複数のコーディング領域に関する情報を含む。複数のコーディング領域のうちの1つまたは複数のコーディング領域は、複数のコーディングツリーユニットのうちの2つまたはそれより多いコーディングツリーユニットを含み、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、前記コーディング領域の2つまたはそれより多いコーディングツリーユニットのコーディング順序を示し、指示データを使用して、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に依存して符号化された画像データを復号するのを実行し、指示データが、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含む。
さらに、コンピュータまたは信号プロセッサで実行されるときに上記の方法の1つを実施するためのコンピュータプログラムが提供される。
【0024】
さらに、符号化されたビデオ信号が符号化された画像データと指示データを含む、画像を符号化する符号化されたビデオ信号が提供され、画像は複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は画像内に位置し、複数のコーディング領域のそれぞれは、画像内に位置する複数のコーディングツリーユニットの1つまたは複数のコーディングツリーユニットを含み、画像は、複数のコーディング領域に依存して符号化され、指示データは、複数のコーディング領域に関する情報を含み、複数のコーディング領域の1つまたは複数のコーディング領域は、複数のコーディングツリーユニットの2つまたはそれより多いコーディングツリーユニットを含み、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、前記コーディング領域の2つまたはそれより多いコーディングツリーユニットについてコーディング順序を示し、画像は、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に依存して符号化され、指示データは、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含む。
以下において、本発明の実施形態は、以下の図を参照してより詳細に説明される。
【図面の簡単な説明】
【0025】
【
図1a】実施形態による、符号化されたビデオ信号を生成することによって画像を符号化するためのビデオエンコーダを示している。
【
図1b】実施形態による、ビデオの画像を再構成するために、符号化された画像データおよびビデオの画像の指示データを含む符号化されたビデオ信号を復号するためのビデオデコーダを示す。
【
図2】ラスタースキャン順のスライスによる画像セグメンテーションを示している。
【
図4】解像度が等しくないタイルベースの360°ビデオストリーミングを示している。
【
図5】柔軟なコーディング領域の分割を示している。
【
図6】実施形態による、1つの暗示的コーディング領域の単一の画像を含むビットストリームを示す。
【
図7】別の実施形態による4つのコーディング領域の単一の画像を含むビットストリームを示している。
【
図8】実施形態による、上部に単一のCA、下部に3つのCAを有する画像の空間的細分化を示している。
【
図9】別の実施形態による5つのコーディング領域を有する画像の空間的細分化を示している。
【
図10】実施形態による、画像の境界CTUを含む1つが非連続CTUからなる、2つのコーディング領域を示している。
【
図11】実施形態によるサブ領域(CTU)レベルでシグナリングするコーディング領域を示している。
【
図12】実施形態による、CTU_dependency_offset_id=1のCTUスキャン順序および空間的参照を示している。
【
図13】別の実施形態による、CTU_dependency_offset_id=2の別のCTUスキャン順序および空間的参照を示している。
【
図14】実施形態による、Z-スキャンCTU順序でのコーディング領域を示している。
【
図15】別の実施形態による、暗示的CTUスキャン方向の導出を示している。
【
図16】実施形態による、異なるCTUスキャン方向でのコーディング領域を示している。
【
図17】実施形態による、領域間予測オプションでの依存的コーディング領域を示している。
【
図18】実施形態による、依存的コーディング領域の並列処理を示している((A)CTUラスタースキャン;(B)CTU対角スキャン)。
【
図19】実施形態による、実行順序およびCA間依存関係を示している((A)依存関係駆動型;(B)ロックステップ)。
【
図20】実施形態による、CA順序に関するCA境界での非ブロック化フィルタプロセスを示している。
【
図21】実施形態による、ハッチングされたフィルタ領域を備えたCA間フィルタリングを採用する非ブロック化フィルタを示す。
【
図22】1つのコーディング領域を伴う単一の画像で構成されるビットストリームを示しているが、CAは複数のトランスポートユニットに断片化されている。
【
図23】複数のコーディング領域の単一の画像で構成されるビットストリームを示しているが、各CAには独自のトランスポートユニットがある。
【
図24】複数のコーディング領域の単一の画像を含むビットストリームを示しているが、各CAは複数のトランスポートユニットに断片化されている。
【
図25】実施形態による、領域に囲まれたブロックの一般化された提示を示している。
【
図26】実施形態による、タイル、ブリック、および長方形のスライスに分割された画像の例を示しており、画像は、4つのタイル、11のブリック、および4つの長方形のスライスに分割されている。
【
図27】実施形態による、階層的に分割される画像を示しており、第1のステップで、水平方向および垂直方向にて、画像の第1の分割が得られ、また、第2のステップで、水平方向のみで、画像の第2の分割を得る。
【
図28】別の実施形態による、階層的に分割される画像を示しており、第1のステップで、水平方向および垂直方向にて、画像の第1の分割が得られ、また、第2のステップで、垂直方向のみで、画像の第2の分割を得る。
【
図29】さらなる実施形態による、階層的に分割される画像を示しており、第1のステップで、水平方向のみで、画像の第1の分割が得られ、また、第2のステップで、垂直方向のみで、画像の第2の分割を得る。
【
図30】なおもさらなる実施形態による、階層的に分割される画像を示しており、第1のステップで、垂直方向のみで、画像の第1の分割が得られ、また、第2のステップで、水平方向のみで、画像の第2の分割を得る。
【発明を実施するための形態】
【0026】
図1aは、実施形態による、符号化されたビデオ信号を生成することによって画像を符号化するためのビデオエンコーダ101を示している。
【0027】
ビデオエンコーダ101は、ビデオの画像を符号化された画像データに符号化するように構成されたデータエンコーダ110を備える。さらに、データエンコーダ110は、指示データを生成するように構成される。
【0028】
さらに、ビデオエンコーダ101は、符号化された画像データおよび指示データを含む符号化されたビデオ信号を生成するように構成された信号発生器120を備える。
【0029】
画像は、複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は、画像内に位置し、複数のコーディング領域のそれぞれは、画像の中に位置する複数のコーディングツリーユニットのうちの1つまたは複数のコーディングツリーユニットを含む。データエンコーダ110は、複数のコーディング領域に依存して画像を符号化するように構成され、データエンコーダ110は、指示データが複数のコーディング領域に関する情報を含むように指示データを生成するように構成される。
【0030】
複数のコーディング領域のうちの1つまたは複数のコーディング領域は、複数のコーディングツリーユニットのうちの2つまたはそれより多いコーディングツリーユニットを含み、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、前記コーディング領域の2つまたはそれより多いコーディングツリーユニットのコーディング順序を示す。データエンコーダ110は、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に依存して画像を符号化するように構成される。さらに、データエンコーダ110は、指示データが、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含むように、指示データを生成するように構成される。
【0031】
図1bは、実施形態による、ビデオの画像を再構成するために、符号化された画像データおよびビデオの画像の指示データを含む符号化されたビデオ信号を復号するためのビデオデコーダ151を示す。
ビデオデコーダ151は、符号化されたビデオ信号を受信するように構成されたインターフェース160を備える。
【0032】
さらに、ビデオデコーダ151は、指示データを使用して符号化された画像データを復号することによってビデオの画像を再構成するように構成されたデータデコーダ170を備える。
【0033】
画像は、複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は、画像内に位置し、複数のコーディング領域のそれぞれは、画像の中に位置する複数のコーディングツリーユニットのうちの1つまたは複数のコーディングツリーユニットを含む。指示データを使用して、データデコーダ170は、複数のコーディング領域に依存して符号化された画像データを復号するように構成され、指示データは、複数のコーディング領域に関する情報を含む。
【0034】
複数のコーディング領域のうちの1つまたは複数のコーディング領域は、複数のコーディングツリーユニットのうちの2つまたはそれより多いコーディングツリーユニットを含み、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、前記コーディング領域の2つまたはそれより多いコーディングツリーユニットのコーディング順序を示す。指示データを使用して、データデコーダ170は、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に依存して符号化された画像データを復号するように構成され、指示データは、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含む。
【0035】
実施形態によれば、
図1bのビデオデコーダ151は、例えば、出力デバイス、例えば、テレビ、コンピュータ、携帯電話などのディスプレイにビデオの画像を出力するように構成され得る。
【0036】
図1cは、実施形態によるシステムを示している。システムは、
図1aによるビデオエンコーダ101を備える。さらに、システムは、
図1bによるビデオデコーダ151を備える。
図1aのビデオエンコーダ101は、符号化されたビデオ信号を生成するように構成される。
図1bのビデオデコーダ151は、符号化されたビデオ信号を復号してビデオの画像を再構成するように構成される。
次のセクション「コーディング領域を使用した多用途の画像分割」では、コーディング領域を使用した多用途の画像分割について説明する。
次のサブセクション「コーディング領域」では、コーディング領域について説明する。
【0037】
タイルなどの現在の最先端の分割スキームを超えて、実施形態は、例えば、コーディング領域(CA)と呼ばれ得る、より柔軟な空間領域定義の概念を提示する。これは、画像を長方形の領域に空間的に分割するための有利な概念である。コーディング領域を使用すると、分割がより柔軟になり、個々の領域に独自の領域固有のコーディング特性を持たせることができる。
【0038】
コーディング領域は、特定の領域の寸法と位置(幅、高さ、位置)、および領域のデータの処理方法によって定義される。シグナリングは、低レベルのコーディングプロセスの仕様の観点から、またはスキャン順序、スキャン方向、スキャン開始などの高レベルのパラメータの観点から実行できる。
【0039】
図6は、実施形態による、1つの暗示的コーディング領域を有する単一の画像を含むビットストリームを示す。(NAL=ネットワーク抽象化レイヤー;NALUH=ネットワーク抽象化レイヤーユニットヘッダー;SH=スライスヘッダー)
図7は、別の実施形態による4つのコーディング領域を有する単一の画像を含むビットストリームを示している。
【0040】
分割が適用されていない場合、暗示的に1つのコーディング領域(CA)を含む画像であり、
図6を参照されたい。これは、事前定義された機能を備えたデフォルトのコーディング領域にすることができる。
図7は、画像を複数のCAに細分化したものを示している。
実施形態では、
図1aのデータエンコーダ110は、例えば、画像を複数のコーディング領域に分割するように構成され得る。
【0041】
図8は、実施形態による、上部に単一のコーディング領域(CA)があり、下部に3つのCAがある画像の空間的細分化を示している。
図8と
図9の各正方形は、コーディングツリーユニット(CTU)を表している。
図8および
図9は、正方形の形状を有するCTUを示しているが、CTUは、例えば、他の例では、長方形または他のいずれかの形状を有し得る。
【0042】
図8および
図9に見られるように、
図8および
図9の各コーディング領域は、画像内で長方形に延びる。さらに、
図8および
図9では、各CTUが画像内で長方形に延びている。
【0043】
したがって、実施形態によれば、複数のコーディング領域の各コーディング領域は、例えば、画像内で長方形に延びることができる。複数のコーディング領域のそれぞれの1つまたは複数のコーディングツリーユニットの各コーディングツリーユニットは、例えば、画像内で長方形に延びることができる。
図9は、別の実施形態による5つのコーディング領域を有する画像の空間的細分化を示している。
CA分割の重要な利点の1つを、以下に示す。
図8と
図9に、新しい分割の概念の2つの例を示す。
【0044】
一部のユースケースでは、タイルでは不可能なCAでの分割を実現でき、CAの分割によって分割が少なくなる。
図3のタイルベースの分割からわかるように、画像の下部に3つの個別の領域(Tile4、Tile5、Tile6)を作成するには、画像の上部に3つの追加領域(Tile1、Tile2、Tile3)を符号化する必要がある。
図8に示すように、コーディング領域を使用すると、上部の領域を1つのコーディング領域CA1として符号化できる。また、CA1、CA2、およびCA3の高さが同じではないため、
図9に示す分割もタイルを介して実現することはできない。
【0045】
実施形態によれば、複数のコーディングツリーユニットのそれぞれは、例えば、画像内の水平な位置および画像内の垂直な位置を有し得る。
図8と
図9は、1~10のCTUの水平な位置と1~5のCTUの垂直な位置を示している。もちろん、そのような実施形態では、位置が1で始まり、1つの水平または垂直な位置から次の位置へのステップが1である必要はない。代わりに、他の開始位置およびCTUからCTUへの他のステップも可能である。垂直な位置に関する1つのCTUから次へのステップのサイズは、水平な位置の1つのCTUから次へのステップのサイズとは異なる場合がある。
図9の新しい分割は、例えば、以下のように特徴付けられ得る。
【0046】
そのような実施形態では、(代替1)複数のコーディング領域の第1のコーディング領域は、例えば、第1の垂直な位置を有する第1のコーディングツリーユニットを含んでよく、これは複数のコーディング領域の異なる第2のコーディング領域の異なる第2のコーディングツリーユニットの第2の垂直な位置と同一であり、また、第1のコーディング領域の第3のコーディングツリーユニットは、第2のコーディング領域の他のいずれのコーディングツリーユニットの垂直な位置とも異なる第3の垂直な位置を有し、第2のコーディング領域の第4のコーディングツリーユニットは、第1のコーディング領域の他のいずれのコーディングツリーユニットの垂直な位置とも異なる第4の垂直な位置を有する。
【0047】
または、(代替2)複数のコーディング領域の第1のコーディング領域は、例えば、第1の水平な位置を有する第1のコーディングツリーユニットを含んでよく、これは複数のコーディング領域の異なる第2のコーディング領域の異なる第2のコーディングツリーユニットの第2の水平な位置と同一であり、また、第1のコーディング領域の第3のコーディングツリーユニットは、第2のコーディング領域の他のいずれのコーディングツリーユニットの水平な位置とも異なる第3の水平な位置を有し、第2のコーディング領域の第4のコーディングツリーユニットは、第1のコーディング領域の他のいずれのコーディングツリーユニットの水平な位置とも異なる第4の水平な位置を有する。
図9は代替案1を満たしている。
【0048】
CA2はCTU91で構成される。CTU91の垂直な位置は3である。CA4のCTU96はまた、垂直な位置3である。CA2のCTU92の垂直な位置は2である。CA4のどのCTUも垂直な位置2ではない(CA4の垂直な位置が3~5の範囲にあるため)。さらに、CA4のCTU97は垂直な位置4である。CA2のどのCTUも垂直な位置4ではない(CA2の垂直な位置は1~3の範囲にあるため)。
対照的に、
図8は代替案1を満たさず、代替案2を満たしていない。
代替案1:
【0049】
CA2、CA3、およびCA4のみが同じ垂直な位置(3~5の範囲)である。CA1には、他のいずれかのコーディング領域と同じ垂直な位置がない。ただし、CA2には、コーディング領域CA3またはCA4の他のいずれかの垂直な位置と異なる垂直な位置はない。CA2、CA4およびCA2、CA3に関して、それぞれCA3およびCA4についても同じことが言える。
代替案2:
CA2、CA3、およびCA4には、同じ水平な位置のCTUはない。
【0050】
対照的に、CA1のCTU 81は、CA2のCTU 86と同じ水平な位置(3)である。さらに、CA2の水平な位置は1~4の範囲にあるため、CA2のCTUのいずれもCA1のCTU82の水平な位置6はない。ただし、CA2のCTUの水平な位置は1~4の範囲であり、CA1のCTUの水平な位置は1~10の範囲であるため、他のいずれかのCA1のCTUの水平な位置と異なるCA2のCTUはない。
同様の理由で、CA1に関してCA3とCA4も同じことが言える。
したがって、
図8の分割は、代替案1を満たさず、代替案2を満たさない。
【0051】
断片化とスキャン順序に関連するいくつかのCAパラメータのシグナリングメカニズムは、副次的サブセクション「コーディング領域の一般的なプロパティ」に示されている。
【0052】
空間的に、コーディング領域は特定の数のCTUをカバーしている。CAの柔軟な配置は、実施形態の一部の特徴の1つである。これにはいくつかのバリエーション、つまり明示的なシグナリングと階層的方法を両方、VCLの外部で使用するのを勧める。また、ビットストリームの断片化が使用されていない場合は、VCL内のシグナリングを使用できる。CA配置の詳細な説明は、副次的サブセクション「コーディング領域のサイズと配置」に設けられている。
【0053】
セグメントの配置に加えて、実施形態は、コーディング領域内のCTUの新しい柔軟な処理またはスキャン順序を提供する。この手法の詳細は、副次的サブセクション「CTUスキャン順序」に示されている。
【0054】
他の発明された機能の1つは、副次的サブセクション「依存的コーディング領域」で説明されるように、単一の画像内で、1つのCAが他のコーディング領域から独立および/または依存することができることである。
【0055】
新しく提案された方法を組み合わせて使用すると、高レベルの並列処理に新しい機会がもたらされる。空間画像領域の並列処理は、副次的サブセクション「コーディング領域の並列処理」で詳述されているように、より効率的な方法で実行できる。
エラーの回復力の態様は、副次的サブセクション「エラーの回復力の態様」で説明されている。
上記の概念の要約:
【0056】
実施形態によれば、複数のコーディング領域の各コーディング領域は、前記コーディング領域の位置、幅、および高さを含む空間特性を示し得、前記コーディング領域の幅および高さは、前記コーディング領域の長方形の延在に依存し、前記コーディング領域の位置は、画像内の前記コーディング領域の位置に依存する。
【0057】
実施形態では、複数のコーディング領域のうちの第1の1つの第1の高さは、例えば、複数のコーディング領域のうちの第2の1つの第2の高さとは異なる場合がある。または、複数のコーディング領域のうちの第1の1つの第1の幅は、複数のコーディング領域のうちの第2の1つの第2の幅とは異なる。
【0058】
実施形態によれば、データエンコーダ110は、例えば、複数のコーディング領域に関する情報が、複数のコーディング領域の各コーディング領域の空間特性に関する情報を含むように、前記指示データを生成するように構成され得る。
【0059】
実施形態では、データエンコーダ110は、例えば、複数のコーディング領域に関する情報が、複数のコーディング領域の各コーディング領域の位置、幅、および高さを含むように、指示データを生成するように構成され得る。
【0060】
実施形態によれば、データエンコーダ110は、例えば、複数のコーディング領域の他のいずれかのコーディング領域の画像部分のイメージデータを符号化することとは独立して、複数のコーディング領域のそれぞれの画像部分のイメージデータを符号化して、符号化された画像データを取得するように構成され得る。
【0061】
実施形態では、データエンコーダ110は、例えば、複数のコーディング領域の各コーディング領域内の画像部分のイメージデータを符号化して、符号化された画像データを取得することによって、画像を符号化するように構成することができる。データエンコーダ110は、例えば、複数のコーディング領域のうちの少なくとも1つのイメージデータを符号化することが複数のコーディング領域のうちの少なくとも別の1つのイメージデータの符号化に依存するように、前記複数のコーディング領域のうちの少なくとも1つの画像部分のイメージデータを符号化するように構成され得る。
【0062】
実施形態では、データエンコーダ110は、例えば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のそれぞれ1つのコーディング順序を決定するように構成され得る。
【0063】
実施形態によれば、データエンコーダ110は、例えば、1つまたは複数のコーディング領域のそれぞれ1つについて、1つまたは複数のコーディング領域のそれぞれ1つに対する2つまたはそれより多いスキャン順序からスキャン順序を選択することによって、コーディング順序を決定するように構成され得る。
【0064】
実施形態では、信号発生器120は、例えば、符号化されたビデオ信号がビットストリームを含み、ビットストリームが符号化された画像データおよび指示データを含むように、符号化されたビデオ信号を生成するように構成され得る。
【0065】
同様に、実施形態によれば、複数のコーディング領域の各コーディング領域は、前記コーディング領域の位置、幅、および高さを含む空間特性を示し得、前記コーディング領域の幅および高さは、前記コーディング領域の長方形の延在に依存し、前記コーディング領域の位置は、画像内の前記コーディング領域の位置に依存する。データデコーダ170は、例えば、複数のコーディング領域の空間特性に依存して、符号化された画像データを復号するように構成され得る。
【0066】
実施形態では、複数のコーディング領域のうちの第1の1つの第1の高さは、例えば、複数のコーディング領域のうちの第2の1つの第2の高さとは異なる場合がある。または複数のコーディング領域のうちの第1の1つの第1の幅は、複数のコーディング領域のうちの第2の1つの第2の幅とは異なる。
【0067】
実施形態によれば、データデコーダ170は、複数のコーディング領域の空間特性に関する指示データ内の情報を使用して、符号化された画像データを復号するように構成され得る。
【0068】
実施形態によれば、データデコーダ170は、例えば、複数のコーディング領域に関する情報が、複数のコーディング領域の各コーディング領域の位置、幅、および高さを含む、複数のコーディング領域の指示データ内の情報を使用して符号化された画像データを復号するように構成され得る。
【0069】
実施形態によれば、データデコーダ170は、例えば、複数のコーディング領域の他のいずれかのコーディング領域の符号化された画像データを復号することとは独立して、複数のコーディング領域のそれぞれの符号化された画像データを復号するように構成され得る。
【0070】
実施形態によれば、データデコーダ170は、例えば、複数のコーディング領域のうちの少なくとも1つの符号化された画像データを復号するように構成でき、複数のコーディング領域のうちの前記少なくとも1つの符号化された画像データを復号することは、複数のコーディング領域のうちの少なくとも別の1つの符号化された画像データの復号に依存する。
【0071】
実施形態によれば、データデコーダ170は、例えば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のそれぞれ1つのコーディング順序を使用して符号化された画像データを復号するように構成され得て、1つまたは複数のコーディング領域のそれぞれ1つの前記コーティング順序は指示データによって示される。
【0072】
実施形態によれば、データデコーダ170は、例えば、1つまたは複数のコーディング領域のそれぞれ1つについて2つまたは複数のスキャン順序からのスキャン順序の指示を使用して符号化された画像データを復号するように構成され得て、指示データは、1つまたは複数のコーディング領域のそれぞれ1つに対するスキャン順序の指示を含み得る。
【0073】
実施形態によれば、インターフェース160は、例えば、ビットストリームを受信するように構成され得、ビットストリームは、符号化された画像データおよび指示データを含む。
次の副次的サブセクション「コーディング領域の一般的なプロパティ」では、コーディング領域の一般的なプロパティについて説明する。
【0074】
コーディング領域に関する一般的な情報は、いわゆるコーディング領域セット(CAS)に集中している。CASは、高レベルのパラメータセットでVCLの外部で解決でき、シーケンス全体またはシーケンスの一部、例えば画像に影響を与える。
x=ビデオ、シーケンス、画像…
【0075】
【0076】
【0077】
coding_area_explicit_positioning_flag 真の場合、coding_area_top_left_CTU_addressがビットストリームに存在し、それ以外の場合はデフォルトの暗示的なCAポジショニングが使用される
num_coding_areas_minus1 ビットストリームでシグナリングされるコーディング領域の数
【0078】
dependent_coding_areas_enabled_flag 真の場合、ビットストリームに続くCAがビットストリームに現れる順序で相互に依存していることを示す。そうでない場合、CAは独立した領域として扱われる。
【0079】
coding_areas_CTU_wise_dependent_flag 真の場合、隣接するCA間のCTUの依存関係がCA処理をインターリーブするCTU単位の処理で処理されることを示す。それ以外の場合、CAは固定された順序で個別に処理される。
【0080】
coding_area_no_slices_flag 真の場合、CAごとに1つのスライスを示す。これは、EOS_flagとCTU_start_addressがビットストリームに存在しないことを意味する。CAは、代わりに、ceil(log2(num_coding_areas_minus1+1))から派生した固定の長さのコードであるCA_idxによってアドレス指定される。それ以外の場合、デフォルトのスライス構文がビットストリームに存在する。
【0081】
coding_area_CTU_scan_flag 真の場合、そのCTUスキャンパラメータがビットストリームに存在することを示す。柔軟なCTUスキャン手法については、副次的サブセクション「CTUスキャンの順序」で説明する。
coding_area_CTU_scan_type_idx スキャンタイプテーブル(ラスタースキャン、対角スキャン)にマップされる。
【0082】
coding_area_CTU_scan_start_left_flag[i] i番目のCAがCTUラインごとに複数のCTUで構成されている場合に存在し、真であれば、CA内の左端のCTUでCTUスキャンを開始することを示す。それ以外の場合、i番目のCAのCTUスキャンは右端のCTUから開始される。
【0083】
coding_area_CTU_scan_start_top_flag[i] i番目のCAがCTU列ごとに複数のCTUで構成されている場合に存在し、真の場合、CA内の上部のCTU行でCTUスキャンを開始するかどうかを示す。それ以外の場合、i番目のCAのCTUスキャンは、CAのCTU底部から始まる。
【0084】
coding_area_CTU_scan_direction_flag[i] i番目のCAが少なくとも2つのCTU行および2つのCTU列を含む場合に存在し、CTUスキャンの開始スキャン方向を示す。真の場合、i番目のCAのスキャン方向が水平方向から始まる。それ以外の場合、スキャンは垂直スキャンである。
上記の概念を要約すると:
【0085】
実施形態では、データエンコーダ110は、例えば、指示データが、例えば、左上のコーディングツリーユニットのアドレスが指定されているかどうかに関する各コーディング領域の情報を含み得るように、指示データを生成するように構成され得る。特定の例は、例えば、coding_area_explicit_positioning_flagであり得る。真の場合、coding_area_top_left_CTU_addressがビットストリームに存在する。それ以外の場合は、デフォルトの暗示的なCAポジショニングが使用される。
【0086】
実施形態によれば、データエンコーダ110は、例えば、指示データが、複数のコーディング領域の数または複数のコーディング領域の数から1を引いた数、または複数のコーディング領域の数から2を引いた数に関する情報を含み得るように、指示データを生成するように構成され得る。特定の例は、例えば、上記のnum_coding_areas_minus1フィールドであり得る。
【0087】
実施形態によれば、データエンコーダ110は、例えば、指示データが、複数のコーディング領域のうちの1つが複数のコーディング領域のうちの別の1つに依存するかどうかを、複数のコーディング領域のうちの前記別の1つに続く複数のコーディング領域のうちの前記1つについて示すように指示データを生成するように構成され得る。特定の例は、例えば、dependent_coding_areas_enabled_flagであり得、これは、真の場合、例えば、ビットストリームに続くCAが、ビットストリームに現れる順序で互いに依存していることを示し得、そうでない場合、CAは、独立した領域として扱われる。
【0088】
実施形態によれば、データエンコーダ110は、例えば、指示データが、複数のスライスのうちの正確に1つのスライスが複数のコーディング領域のうちの正確に1つのコーディング領域に割り当てられているかどうかを示すように、指示データを生成するように構成され得る。特定の例は、例えば、上記のcoding_area_no_slices_flagであり得る。
【0089】
実施形態によれば、データエンコーダ110は、例えば、指示データが複数のコーディング領域の1つまたは複数のコーディングツリーユニットのそれぞれの中でスキャンする方法に関する情報を含むかどうかを指示データが示すように、指示データを生成するように構成され得る。特定の例は、例えば、上記のcoding_area_CTU_scan_flagであり得る。
【0090】
実施形態によれば、データエンコーダ110は、例えば、指示データが、複数のコーディング領域の1つまたは複数のコーディングツリーユニットのそれぞれの中でスキャンする方法を示すように、指示データを生成するように構成され得る。特定の例は、例えば、スキャンタイプテーブルにマップするcoding_area_CTU_scan_type_idxであり得る。スキャンタイプは、例えばラスタースキャン、および/または例えば対角スキャンなどであり得る。
【0091】
実施形態では、データエンコーダ110は、例えば、指示データが複数のコーディング領域のそれぞれについて、コーディング領域が複数のコーディングツリーユニットを含むかどうかを示すように、指示データを生成するように構成され得る。
【0092】
実施形態によれば、データエンコーダ110は、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンが左端のコーディングツリーユニットで開始されるかどうか、またはコーディングツリーユニットスキャンが右端のコーディングツリーユニットで開始されるかどうかを指示データが示すように、指示データを生成するように構成され得る。特定の例は、例えば、上記のcoding_area_CTU_scan_start_left_flag[i]であり得る。
【0093】
実施形態によれば、データエンコーダ110は、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンがコーディング領域の最上部のコーディングツリーユニット行から開始されるかどうか、またはコーディングツリーユニットスキャンは、コーディング領域の一番下のコーディングツリーユニット行から開始されるかどうかを指示データが示すように、指示データを生成するように構成され得る。特定の例は、例えば、上記のcoding_area_CTU_scan_start_top_flag[i]であり得る。
【0094】
実施形態によれば、データエンコーダ110は、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンが水平方向に開始されるか、またはコーディングツリーユニットスキャンが垂直方向に開始されるかを指示データが示すように、指示データを生成するように構成され得る。特定の例は、例えば、coding_area_CTU_scan_direction_flag [i]であり得、これは、例えば、i番目のCAが少なくとも2つのCTU行および2つのCTU列を含み、CTUスキャンの開始スキャン方向を示す場合に存在し得る。i番目のCAのスキャン方向よりも真である場合、例えば、水平方向で開始し得、そうでない場合、スキャンは、例えば、垂直スキャンであり得る。
【0095】
同様に、実施形態によれば、データデコーダ170は、例えば、左上のコーディングツリーユニットのアドレスが指定されているかどうかに関する各コーディング領域の情報を使用して、符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0096】
実施形態によれば、データデコーダ170は、例えば、複数のコーディング領域の数または複数のコーディング領域の数から1を引いた数、または複数のコーディング領域の数から2を引いた数に関する情報を使用する符号化された画像データを復号するように構成され、指示データは、例えば、前記情報を含み得る。
【0097】
実施形態によれば、データデコーダ170は、例えば、複数のコーディング領域のうちの1つが複数のコーディング領域のうちの別の1つに依存するかどうかを複数のコーディング領域のうちの別の1つに続く複数のコーディング領域のうちの1つについて示す情報を使用して、符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0098】
実施形態では、データデコーダ170は、例えば、複数のスライスの正確に1つのスライスが複数のコーディング領域の正確に1つのコーディング領域に割り当てられているかどうかを示す情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0099】
実施形態によれば、データデコーダ170は、例えば、指示データが例えば複数のコーディング領域の1つまたは複数のコーディングツリーユニットのそれぞれの中でスキャンする方法に関する情報を含むかどうかに関する情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0100】
実施形態では、データデコーダ170は、例えば、複数のコーディング領域の1つまたは複数のコーディングツリーユニットのそれぞれの中でスキャンする方法に関する情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0101】
実施形態によれば、データデコーダ170は、例えば、複数のコーディング領域のそれぞれについて、コーディング領域が複数のコーディングツリーユニットを含むかどうかを示す情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0102】
実施形態では、データデコーダ170は、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンが左端のコーディングツリーユニットで開始されるかどうか、またはコーディングツリーユニットスキャンが右端のコーディングツリーユニットで開始されるかどうかを指示する情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0103】
実施形態では、データデコーダ170は、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンがコーディング領域の最上部のコーディングツリーユニット行で開始されるかどうか、またはコーディングツリーユニットスキャンがコーディング領域の最下部のコーディングツリーユニット行で開始されるかどうかを指示する情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0104】
実施形態では、データデコーダ170は、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンが水平方向で開始されるかどうか、またはコーディングツリーユニットスキャンが垂直方向で開始されるかどうかを指示する情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
以下の副次的サブセクション「コーディング領域のサイズおよび配置」では、コーディング領域のサイズおよび配置について説明する。
【0105】
コーディング領域が画像内でどのように配置されているかを示すことが重要である。アプリケーションに依存して、CAのサイズや位置など、画像の分割に所望の柔軟性の影響を与える可能性のある様々なターゲットが追求される。また、レイアウトは、一時的に固定されたCAレイアウトを使用したり、時間の経過と共にコンテンツに応じてレイアウトを調整したりするために、ビットストリームの高レベルのセクションで送信することもできる。
【0106】
例えば、360°ビデオストリーミングのサブセクション「タイルを使用した画像の分割」で提供されている例では、CAは通常CVS(コーディング・ビデオ・シーケンス)全体で一定であり、そのサイズは、例えば
図4に示すように、同じコンテンツの様々な解像度から生成されたパーティションに対応する必要があるだけである。このような場合、CA配置シグナリングの最も適切な場所は、サブ副次的サブセクション「実施形態A」およびサブ副次的サブセクション「実施形態B」で後に説明されているように、高レベルの構文構造(例えば、HEVCのVPS、SPS、PPSを参照)である。
【0107】
ただし、負荷分散のためのサブセクション「タイルを使用した画像の分割」(ビデオ会議のシナリオなど)のような他の例では、画像ごとの動的な分割が望ましい場合がある。さらに、CAに対して選択された初期構成が最適でないことが見出せる場合があり、そのため、分割の(符号化中の)画像内での変更が必要になる場合がある。CAの配置が事前にわからないこのような場合、サブ副次的サブセクション「実施形態C」で説明されているように、VCL(スライスペイロード内のビデオコーディングレイヤー)で、シグナリングが、(パラメータセット内の)高レベルシグナリングよりも優先される。
以下のサブの副次的サブセクション「実施形態A」では、サンプルまたはユニットごとの位置およびサイズのシグナリングが説明されている。
CTU開始アドレスを使用して対応する領域を選択する明示的なCAポジショニング:
【0108】
表2-2
【表3】
図10は、実施形態による、画像境界CTUを含む1つが非連続CTUからなる、2つのコーディング領域を示している。
【0109】
原則として、上記の構文num_coding_areas_minus2は、1つを除くすべてのCAを定義し、最後のCAを前のCAでカバーされていない残りの部分として有することができる。ただし、これにより、
図10に示すようにCAが連続したCTUを含まないことが可能になり、符号化/復号プロセスが幾分複雑になる可能性がある。
【0110】
したがって、このような場合を禁止するために制約を追加し、いくつかの制約を満たすための構文を要求するべきである。例えば、CAの左上、右上、左下および右下のCTUに対応する4つのCTU(CTUa、CTUb、CTUc、CTUd)を所与とし、CTUb_addr-CTUa_addr=CAWidthInNumCTUs_minus1およびCTUc_addr-CTUa_addr=CAHeightInNumCTUs_minus1すると、すべてのCTUおよび次のCTU_addressを有するもののみが、残りのCA CTUx_addr=CTUa_addr+j+k*(CAWidthInNumCTUs_minus1+1)、j=0、CAWidthInNumCTUs_minus1、およびk=0、CAHeightInNumCTUs_minus1に属するものとなる。
【0111】
あるいは、そのような条件を満たすようにCAを示す/制約することできる構文要素(「non_contiguous_remaining_coding_unit_enabled_flag」など)を追加することもできる。したがって、一部のプロファイルでは、非連続CAによって追加される複雑さを防ぐために、そのフラグを有効にしないように義務付けることができる。
【0112】
実施形態によると、データエンコーダ110は、例えば、指示データが、複数のコーディング領域の少なくとも1つが複数のコーディング領域の別の1つを囲むかどうか、または複数のコーディング領域のいずれもコーディング領域の別の1つを囲まないかどうかを示す非連続情報を含むように、指示データを生成するように構成され得る。
図10は特定の例であり、2つのコーディング領域CA1、CA2が示されている。外側のコーディング領域CA1は、内側のコーディング領域CA2を囲む。
【0113】
図10では、CA1はCA2を囲んでいる。non_contiguous_remaining_coding_unit_enabled_flagを使用して、それぞれの指示を提供できる。
【0114】
同様に、実施形態では、データデコーダ170は、例えば、複数のコーディング領域のうちの少なくとも1つが複数のコーディング領域のうちの別の1つを囲むか、または複数のコーディング領域のいずれもコーディング領域のうちの別の1つを囲まないかどうかについて示す非連続情報を使用して、符号化された画像データを復号するように構成され得、指示データは前記情報を含む。
【0115】
上記の表の構文により、最大コーディングユニット(128x128など)の倍数ではないCAを使用した柔軟なシグナリングが可能になる。これは、一部のアプリケーションにとって有益である。ただし、サンプルユニットを使用してCAにシグナリングすると、多くのビットが使用される可能性がある。または、ビットを省くためにCTUでシグナリングを実行することもできる。問題は、CTUの倍数ではないサイズをシグナリングできないことである。以下の提案された構文では、いくつかの追加情報を使用して、この問題を解決できる。
【0116】
【0117】
提案されたシグナリングは、CAの最後のCTU行および列が指定された最大のサイズのCTUを含むかどうか、または最後のCTUがより小さいかを示す。これの方が小さい場合は、CAの最後のCTU行と列のサイズが示される。
【0118】
ただし、CAのサイズが最大CTUサイズの倍数でない場合(つまり、行または列の最後のCTUの方が小さい)、CAには他のCAよりも小さいCTUがある可能性があるため、行または列ごとのCTUの数が異なる画像に至る可能性がある。画像内の予測に使用される変数の格納は通常CTUアドレスでアドレス指定され、行または列ごとのCTUの数が異なると、CTUアドレス指定が実行不可能または複雑になりすぎる可能性があるため、このような不整合が望ましくない場合がある。したがって、CAが完全なCTU(または最大のサイズのCTUのCTU)の前に終了する場合は常に、他の隣接するCAが完全なCTUを構成しない次元(水平または/および垂直)の中で整列されるべきであるという制約を追加するべきである。
【0119】
コーディング領域でカバーされていない最上部のCTU行の左端の位置から再帰的に開始する暗示的なポジショニング。言い換えると、例えば、表2-4に示すようにcoding_area_explicit_positioning_flagが0に設定されている場合、CAの開始アドレスは示されず、幅と高さだけが示され、デコーダは1..(i-1)番目のCAでまだカバーされていない最小のCTUアドレスを探すことにより、i番目のCAの開始アドレスを派生させねばならない。
【0120】
実施形態では、データエンコーダ110は、例えば、コーディング領域について、指示データが、前記コーディング領域の1つまたは複数のコーディングツリーユニットの1つを示す開始アドレスが示されるかどうか、または前記コーディング領域の1つまたは複数のコーディングツリーユニットの前記1つを示す開始アドレスが示されないかどうかを示すように、指示データを生成するように構成され得る。特定の例は、例えば、上記のcoding_area_CTU_start_addressであり得る。
【0121】
同様に、実施形態によれば、データデコーダ170は、例えば、コーディング領域について、前記コーディング領域の1つまたは複数のコーディングツリーユニットの1つを示す開始アドレスが示されるかどうか、または前記コーディング領域の1つまたは複数のコーディングツリーユニットの前記1つを示す開始アドレスが示されないかどうかの指示を使用して、符号化された画像データを復号するように構成され得る。前記コーディング領域の1つまたは複数のコーディングツリーユニットの前記1つを示す開始アドレスが示されない場合、データデコーダ170は、例えば、コーディング領域の幅に依存して、前記コーディング領域のコーディングの高さに依存して、また前記コーディング領域のコーディング領域スキャン方向に依存して、前記コーディング領域の1つまたは複数のコーディングツリーユニットの前記1つを示す開始アドレスを決定するように構成され得る。
【0122】
上記の両方の表の構文は、coding_area_start_address[i]で構成されている。これは、原則としてパーサーの操作を簡素化するが、シグナルサイズから単純に導出できる、ある程度「冗長な」情報である。したがって、両方の表は提示されたものと同じである可能性があるが、その構文要素がなく、アドレスは「コーディング領域でカバーされていない最上部のCTU行の左端の位置」として導出される。
【0123】
より高次の画像解像度の場合、追加のステップサイズは、CAパーティションの幅と高さ、および利用可能な場合は位置コードをスケーリングするのに役立つ場合がある。
【0124】
表2-4
【表5】
最終的なCAの位置とサイズは、次のように導出されるものとする。
【0125】
coding_area_width_in_CTU=coding_area_width_in_units*(coding_area_unit_scaling_factor_minus1+1)
【0126】
coding_area_height_in_CTU=coding_area_height_in_units*(coding_area_unit_scaling_factor_minus1+1)
【0127】
pic_width_in_units=(pic_width_in_CTU+coding_area_unit_scaling_factor_minus1)
/(coding_area_unit_scaling_factor_minus1+1)
coding_area_CTU_start_address=(coding_area_unit_scaling_factor_minus1+1)
【0128】
*((coding_area_start_address_in_units%pic_width_in_units)+(coding_area_CTU_start_address_unit/pic_width_in_units)*picture_width_in_CTU))
【0129】
【0130】
coding_area_scaling_factor_minus1 CAの位置とサイズのパラメーターをスケーリングするために使用されるスケーリング係数
【0131】
coding_area_top_left_CTU_address_in_units[i] CAの左上の境界にあるCTUのアドレス。アドレスはユニットで指定され、CTUアドレスを取得するにはcoding_area_scaling_factor_minus1+1に従ってスケーリングしなければならない。
【0132】
coding_area_width_in_units[i] ユニットでのCAの幅は、CTUでのCA幅を取得するために、coding_area_scaling_factor_minus1+1に従ってスケーリングしなければならない。
【0133】
Coding_area_height_in_units[i] ユニットでのCAの高さは、CTUでのCAの幅を取得するために、coding_area_scaling_factor_minus1+1に従ってスケーリングしなければならない。
上記の概念を要約すると:
【0134】
実施形態では、データエンコーダ110は、例えば、複数のコーディング領域のうちの1つについて、コーディング領域の1つの中の水平方向に配置されたコーディングツリーユニットの数を指定するコーディングツリーユニットのコーディング領域幅を指示データが示すように、指示データを生成するように構成され得る。特定の例は、例えば、上記のcoding_area_width_in_CTUであり得る。
【0135】
実施形態によると、データエンコーダ110は、例えば、複数のコーディング領域のうちの1つについて、コーディング領域の1つの中の垂直方向に配置されたコーディングツリーユニットの数を指定するコーディングツリーユニットのコーディング領域の高さを指示データが示すように、指示データを生成するように構成され得る。特定の例は、例えば、上記のcoding_area_height_in_CTUであり得る。
【0136】
実施形態では、データエンコーダ110は、例えば、複数のコーディング領域のコーディング領域について、前記コーディング領域内の水平方向の最後のコーディングツリーユニットが、水平方向で前記コーディングツリーユニットに先行する前記コーディング領域の別のコーディングツリーユニットよりも小さいかどうかを指示データが示すように、指示データを生成するように構成され得る。
【0137】
特定の実施形態では、前記コーディング領域は、例えば、水平方向の複数の最後のコーディングツリーユニットを含み得、水平方向の前記最後のコーディングツリーユニットは、水平方向の前記複数の最後のコーディングツリーユニットの1つである。前記コーディング領域内の水平方向の前記最後のコーディングツリーユニットが、水平方向の前記最後のコーディングツリーユニットに先行する前記コーディング領域の前記別のコーディングツリーユニットよりも小さい場合、水平方向の複数の最後のコーディングツリーユニットのそれぞれは、例えば、同じ幅を有することができる。
【0138】
実施形態によると、データエンコーダ110は、例えば、複数のコーディング領域のコーディング領域について、前記コーディング領域内の垂直方向の最後のコーディングツリーユニットが、垂直方向で前記コーディングツリーユニットに先行する前記コーディング領域の別のコーディングツリーユニットよりも小さいかどうかを指示データが示すように、指示データを生成するように構成され得る。
【0139】
特定の実施形態では、前記コーディング領域は、例えば、垂直方向の複数の最後のコーディングツリーユニットを含み得、垂直方向の前記最後のコーディングツリーユニットは、垂直方向の前記複数の最後のコーディングツリーユニットの1つである。前記コーディング領域内の垂直方向の前記最後のコーディングツリーユニットが、垂直方向の前記最後のコーディングツリーユニットに先行する前記コーディング領域の前記別のコーディングツリーユニットよりも小さい場合、垂直方向の複数の最後のコーディングツリーユニットのそれぞれは、例えば、同じ高さを有することができる。
【0140】
同様に、実施形態では、データデコーダ170は、例えば、複数のコーディング領域のうちの1つについて、コーディング領域の1つの内部の水平方向に配置されたコーディングツリーユニットの数を指定するコーディングツリーユニットのコーディング領域幅を示す情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0141】
実施形態によると、データデコーダ170は、例えば、複数のコーディング領域のうちの1つについて、コーディング領域の1つの内部の垂直方向に配置されたコーディングツリーユニットの数を指定するコーディングツリーユニットのコーディング領域の高さを示す情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0142】
実施形態では、データデコーダ170は、例えば、複数のコーディング領域のコーディング領域について、前記コーディング領域内の水平方向の最後のコーディングツリーユニットが、水平方向で前記コーディングツリーユニットに先行する前記コーディング領域の別のコーディングツリーユニットよりも小さいかどうかを示す情報を使用して、符号化された画像データを復号するように構成でき、指示データは、例えば、前記情報を含み得る。
【0143】
特定の実施形態では、前記コーディング領域は、例えば、水平方向の複数の最後のコーディングツリーユニットを含み得、水平方向の前記最後のコーディングツリーユニットは、水平方向の前記複数の最後のコーディングツリーユニットの1つである。前記コーディング領域内の水平方向の前記最後のコーディングツリーユニットが、水平方向の前記最後のコーディングツリーユニットに先行する前記コーディング領域の前記別のコーディングツリーユニットよりも小さい場合、水平方向の複数の最後のコーディングツリーユニットのそれぞれは、例えば、同じ幅を有することができる。
【0144】
実施形態によると、データデコーダ170は、例えば、複数のコーディング領域のコーディング領域について、前記コーディング領域内の垂直方向の最後のコーディングツリーユニットが、垂直方向で前記コーディングツリーユニットに先行する前記コーディング領域の別のコーディングツリーユニットよりも小さいかどうかを示す情報を使用して、符号化された画像データを復号するように構成でき、指示データは、例えば、前記情報を含み得る。
【0145】
特定の実施形態では、前記コーディング領域は、例えば、垂直方向の複数の最後のコーディングツリーユニットを含み得、垂直方向の前記最後のコーディングツリーユニットは、垂直方向の前記複数の最後のコーディングツリーユニットの1つである。前記コーディング領域内の垂直方向の前記最後のコーディングツリーユニットが、垂直方向の前記最後のコーディングツリーユニットに先行する前記コーディング領域の前記別のコーディングツリーユニットよりも小さい場合、垂直方向の複数の最後のコーディングツリーユニットのそれぞれは、例えば、同じ高さを有することができる。
以下のサブ副次的サブセクション「実施形態B」では、分割による階層的サブ細分化について説明する。
特に、階層CA分割の2つのバリエーションが提供されている。
【0146】
第1の方法は、スケーリングされたCTUユニットでコーディング領域分割位置値を階層的に送信することである。ここで、分割の粒度はCTUサイズに依存する。
【0147】
【0148】
【0149】
階層型CA分割の第2のバリエーションは、コーディング領域分割位置値を一般的に均一なユニットで送信することである。ユニットの次元は、すでに解析された元の画像サイズを特定の係数でスケーリングすることによって導き出すことができる。これはまた、パラメータセットでシグナリングされる。ここで、分割の粒度は様々であり、エンコーダ側で選択されたユニットのサイズによって異なる。
【0150】
【0151】
【0152】
最終的なCAの位置とサイズは、次のように導出されるものとする。
UnitWidth=pic_width_in_luma_samples/PicWidthInUnits;
UnitHeight=pic_height_in_luma_samples/PicHeightInUnits;
CodingAreaWidth[AreaIdx]=CodingAreaWidthInUnits[AreaIdx]*UnitWidth
CodingAreaHeight[AreaIdx]=CodingAreaHeightInUnits[AreaIdx]*UnitHeight
CodingAreaPosX[AreaIdx]=CodingAreaPosUnitX[AreaIdx]*UnitWidth
CodingAreaPosY[AreaIdx]=CodingAreaPosUnitY[AreaIdx]*UnitHeight
【0153】
coding_area_start_address[AreaIdx]=CodingAreaPosY[AreaIdx]*PicWidthInCtbsY+CodingAreaPosX[AreaIdx]
【0154】
階層型CA分割の利点は、一部の分割シナリオで、この方法でシグナリングに必要なビットが少なくなる可能性があることである。さらに、いくつかの境界が共有されているCAまたはCAのグループ間で何らかの位置合わせを実施する。これは、一部の実装にとって有益な場合がある。
シグナリングは、RAPでのみ可能であり、後続の画像のためにそこから継承されるように制約することができる。
【0155】
レイアウトが再送信されることを示すビットストリームの追加のフラグ。それ以外の場合は、以前に送信されたCAレイアウトのセットから、ビットストリーム送信インデックスによってさらに選択できる以前のCAレイアウトが使用される。
上記を要約すると:
【0156】
実施形態によると、データエンコーダ110は、例えば、複数のコーディング領域の情報が、画像を1回または複数回分割することによって複数のコーディング領域を取得するために画像を1回または複数回分割する方法に関する情報を含むように指示データを生成するように構成できる。
実施形態では、データエンコーダ110は、例えば、指示データが複数のコーディング領域分割位置を示すように指示データを生成するように構成され得る。
【0157】
実施形態によれば、データエンコーダ110は、例えば、指示データが複数のコーディング領域分割位置を順序付けられたシーケンスとして示すように指示データを生成するように構成され得る。
【0158】
実施形態では、データエンコーダ110は、例えば、指示データが複数のコーディング領域分割位置を複数のコーディング領域分割位置値として示すように指示データを生成するように構成でき、複数のコーディング領域分割位置値のそれぞれは、画像の幅に依存するか、または画像の高さに依存する。
【0159】
実施形態によると、データエンコーダ110は、例えば、複数のコーディング領域の情報が、画像を階層的に1回または複数回分割することによって、複数のコーディング領域を取得するために画像を階層的に1回または複数回分割する方法に関する情報を含むように、指示データを生成するように構成できる。
【0160】
同様に、実施形態によると、データデコーダ170は、画像を1回または複数回分割することによって複数のコーディング領域を取得するために画像を1回または複数回分割する方法に関する情報を使用して符号化された画像データを復号するように構成でき、指示データは、例えば、前記情報を含み得る。
【0161】
実施形態では、データデコーダ170は、例えば、複数のコーディング領域分割位置を示す情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0162】
実施形態では、データデコーダ170は、例えば、複数のコーディング領域分割位置を順序付けられたシーケンスとして示す情報を使用して符号化された画像データを復号するように構成され得、指示データは、例えば、前記情報を含み得る。
【0163】
実施形態では、データデコーダ170は、例えば、複数のコーディング領域分割位置を複数のコーディング領域分割位置値として示す情報を使用して符号化された画像データを復号するように構成され、複数のコーディング領域分割位置値のそれぞれは、画像の幅に依存するか、または画像の高さに依存し、指示データは、例えば、前記情報を含み得る。
【0164】
実施形態によると、データデコーダ170は、複数のコーディング領域に関する情報を使用して符号化された画像データを復号するように構成でき、画像を1回または複数回階層的に分割することによって複数のコーディング領域を取得するために画像を階層的に1回または複数回分割する方法に関する情報を含み、指示データは、例えば、前記情報を含み得る。
【0165】
これより、さらなる例が提示される。データエンコーダ110が、例えば、複数のコーディング領域の情報が、画像を1回または複数回分割することによって複数のコーディング領域を取得するために画像を1回または複数回分割する方法に関する情報を含むように指示データを生成するように構成できるものに関する。
【0166】
特に、さらなる例は、データエンコーダ110が、例えば、複数のコーディング領域の情報が、画像を階層的に1回または複数回分割することによって複数のコーディング領域を取得するために画像を階層的に1回または複数回分割する方法に関する情報を含むように指示データを生成するように構成できるものに関して提示されている。
【0167】
また、データデコーダ170は、画像を1回または複数回分割することによって複数のコーディング領域を取得するために画像を1回または複数回分割する方法に関する情報を使用して符号化された画像データを復号するように構成でき、指示データは、例えば、前記情報を含むものに関して、さらなる例が提示されている。
【0168】
特に、さらなる例が提供されており、例えば、いかにしてデータデコーダ170が、複数のコーディング領域に関する情報を使用して符号化された画像データを復号するように構成でき、画像を1回または複数回階層的に分割することによって複数のコーディング領域を取得するために画像を階層的に1回または複数回分割する方法に関する情報を含み、指示データは、例えば、前記情報を含み得る。
【0169】
また、さらなる例が、いかにして符号化されたビデオ信号の指示データが、例えば、画像を1回または複数回分割することによって画像を1回または複数回分割して複数のコーディング領域を取得する方法を示し得るかについて、提示されている。
【0170】
さらに、特に、さらなる例が、画像を階層的に1回または複数回分割することによって、画像を階層的に1回または複数回分割して複数のコーディング領域を取得する方法について、提示されている。
いくつかの実施形態では、データエンコーダ110および/またはデータデコーダ170は、例えば、
-第1のステップで、画像を水平方向と垂直方向に分割して、画像の第1の分割を取得し、
-第2のステップで、画像の第1の分割を水平方向(のみ)に分割して、画像の第2の分割を取得する
ように構成され得る。
【0171】
図27では、画像は、第1のステップで、水平方向および垂直方向に階層的に分割されて、画像の第1の分割(例えば、タイル分割)が得られ(
図27、ステップ1)、また、第2のステップで、画像の第2の分割(例えば、ブリックの分割)を得るための、水平方向のみ分割される(
図27、ステップ2)。
いくつかの他の実施形態では、データエンコーダ110および/またはデータデコーダ170は、例えば、
-第1のステップで、画像を水平方向と垂直方向に分割して、画像の第1の分割を取得し、
-第2のステップで、画像の第1の分割を垂直方向(のみ)に分割して、画像の第2の分割を取得する
ように構成され得る。
【0172】
図28では、画像は、第1のステップで、水平方向および垂直方向に階層的に分割されて、画像の第1の分割(例えば、タイル分割)が得られ(
図28、ステップ1)、また、第2のステップで、画像の第2の分割(例えば、ブリックの分割)を得るための、垂直方向のみ分割される(
図28、ステップ2)。
いくつかのさらなる実施形態では、データエンコーダ110および/またはデータデコーダ170は、例えば、
-第1のステップで、画像を水平方向(のみ)に分割して、画像の第1の分割を取得し、
-第2のステップで、画像の第1の分割を垂直方向(のみ)に分割して、画像の第2の分割を取得する
ように構成され得る。
【0173】
図29では、画像は、第1のステップで、水平方向のみに階層的に分割されて、画像の第1の分割(例えば、タイル分割)が得られ(
図29、ステップ1)、また、第2のステップで、画像の第2の分割(例えば、ブリックの分割)を得るための、垂直方向のみ分割される(
図29、ステップ2)。
いくつかのなおもさらなる実施形態では、データエンコーダ110および/またはデータデコーダ170は、例えば、
-第1のステップで、画像を垂直方向(のみ)に分割して、画像の第1の分割を取得し、
-第2のステップで、画像の第1の分割を水平方向(のみ)に分割して、画像の第2の分割を取得する
ように構成され得る。
【0174】
図30では、画像は、第1のステップで、垂直方向のみに階層的に分割されて、画像の第1の分割(例えば、タイル分割)が得られ(
図30、ステップ1)、また、第2のステップで、画像の第2の分割(例えば、ブリックの分割)を得るための、水平方向のみ分割される(
図30、ステップ2)。
【0175】
実施形態では、画像パラメータセットRBSP構文についての以下のコードにおいて、brick_split_flag[i]およびnum_brick_rows_minus1[i]のパラメータは、画像を階層的に1回または複数回分割して複数のコーディング領域を取得する方法の例示的な方法を実装する。
画像は、例えば、画像、スライス、タイル、ブリック、およびCTUに分割できる。
【0176】
画像は、例えば、1つまたは複数のタイル行および1つまたは複数のタイル列に分割することができる。タイルは、画像の長方形の領域をカバーする一連のCTUである。
タイルは1つまたは複数のブリックに分割され、各ブリックはタイル内の多数のCTUの行数からなる。
複数のブリックに分割されていないタイルは、ブリックとも呼ばれる。ただし、タイルの真のサブセットであるブリックは、タイルとは呼ばれない。
スライスには、画像のタイルの数またはタイルのブリックの数が含まれる。
【0177】
スライスの2つのモード、つまりラスタースキャンスライスモードと長方形スライスモードがサポートされている。ラスタースキャンスライスモードでは、スライスには、画像のタイルラスタースキャン内のタイルのシーケンスが含まれる。長方形スライスモードでは、スライスには、画像の長方形領域を集合的に形成する画像の複数のブリックが含まれる。長方形のスライス内のブリックは、スライスのブリックラスタースキャンの順序になっている。
【0178】
図26は、タイル、ブリック、長方形のスライスに分割された画像の例を示している。それにおいて、画像は4つのタイル(2つのタイル列と2つのタイル行)、11のブリック(左上のタイルには1つのブリック、右上のタイルには5つのブリックが含まれ、左下のタイルには2つのブリックが含まれ、右下のタイルには3つのブリックが含まれる)、および4つの長方形のスライスに分けられている。
【0179】
以下では、brick_split_flag[i]が1に等しい場合、i番目のタイルが2つ以上のブリックに分割されることを指定する。brick_split_flag[i]が0に等しい場合、i番目のタイルが2つ以上のブリックに分割されていないことを指定する。存在しない場合、brick_split_flag[i]の値は、0に等しいと推測される。
【0180】
さらに、以下では、num_brick_rows_minus1[i]+1は、uniform_brick_spacing_flag[i]が0に等しい場合に、i番目のタイルを分割するブリックの数を指定する。存在する場合、num_brick_rows_minus1[i]の値は、1からRowHeight[i]-1までの範囲であるものとする。brick_split_flag[i]が0に等しい場合、num_brick_rows_minus1[i]の値は0に等しいと推測される。それ以外の場合、uniform_brick_spacing_flag[i]が1に等しい場合、num_brick_rows_minus1[i]の値が推測される(例えば、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスに関して下記で指定するように)。
【0181】
したがって、brick_split_flag[i]およびnum_brick_rows_minus1[i]で、画像を階層的に1回または複数回分割して複数のコーディング領域を取得する方法の例示的な方法を実装する。タイルは、例えば、2つまたはそれより多いブリックに分割され得、これは、例えば、いくつかのCTU列からなり得る。
より詳細には、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスは、例えば、以下のように実施され得る。
【0182】
0からnum_tile_columns_minus1までの範囲のiのリストcolWidth[i]は、CTBのユニットでi番目のタイル列の幅を指定して、導出され、uniform_tile_spacing_flagが1に等しい場合、num_tile_columns_minus1の値が次のように推測される。
if(uniform_tile_spacing_flag){
remainingWidthInCtbsY=PicWidthInCtbsY
i=0
while(remainingWidthInCtbsY>(tile_cols_width_minus1+1)){
colWidth[i++]=tile_cols_width_minus1+1
remainingWidthInCtbsY-=(tile_cols_width_minus1+1)
}
colWidth[i]=remainingWidthInCtbsY
num_tile_columns_minus1=i
}else{
colWidth[num_tile_columns_minus1]=PicWidthInCtbsY(6-1)
for(i=0;i<num_tile_columns_minus1;i++){
colWidth[i]=tile_column_width_minus1[i]+1
colWidth[num_tile_columns_minus1]-=colWidth[i]
}
}
【0183】
0からnum_tile_rows_minus1までの範囲のjのリストRowHeight[j]は、CTBのユニットでj番目のタイル行の高さを指定して、導出され、uniform_tile_spacing_flagが1に等しい場合、num_tile_rows_minus1の値が次のように推測される。
if(uniform_tile_spacing_flag){
remainingHeightInCtbsY=PicHeightInCtbsY
i=0
while(remainingHeightInCtbsY>(tile_rows_height_minus1+1)){
RowHeight[i++]=tile_rows_height_minus1+1
remainingHeightInCtbsY-=(tile_rows_height_minus1+1)
}
RowHeight[i]=remainingHeightInCtbsY
num_tile_rows_minus1=i
}else{
RowHeight[num_tile_rows_minus1]=PicHeightInCtbsY(6-2)
for(j=0;j<num_tile_rows_minus1;j++){
RowHeight[j]=tile_row_height_minus1[j]+1
RowHeight[num_tile_rows_minus1]-=RowHeight[j]
}
}
【0184】
0からnum_tile_columns_minus1+1までの範囲のiのリストtileColBd[i]は、CTBのユニットでi番目のタイル列境界の位置を指定して、次のように導出される。
for(tileColBd[0]=0,i=0;i<=num_tile_columns_minus1;i++)
tileColBd[i+1]=tileColBd[i]+colWidth[i](6-3)
【0185】
0からnum_tile_rows_minus1+1までの範囲のjのリストtileRowBd[j]は、CTBのユニットでj番目のタイル行の境界の位置を指定して、次のように導出される。
for(tileRowBd[0]=0,j=0;j<=num_tile_rows_minus1;j++)
tileRowBd[j+1]=tileRowBd[j]+RowHeight[j](6-4)
【0186】
変数NumBricksInPicは、PPSを参照する画像のブリックの数を指定し、0からNumBricksInPic-1の範囲のbrickIdxのリストBrickColBd[brickIdx]、BrickRowBd[brickIdx]、BrickWidth[brickIdx]、およびBrickHeight[brickIdx]は、CTBのユニットでの垂直ブリック境界の位置、CTBのユニットでの水平ブリック境界の位置、CTBのユニットでのブリックの幅、およびCTBのユニットでのブリックの高さを指定して導出され、また、0からNumTilesInPic-1までの範囲の各iについて、uniform_brick_spacing_flag[i]が1に等しい場合、num_brick_rows_minus1[i]の値は次のように推測される。
【0187】
for(brickIdx=0,i=0;i<NumTilesInPic;i++){
tileX=i%(num_tile_columns_minus1+1)
tileY=i/(num_tile_columns_minus1+1)
if(!brick_split_flag[i]){
BrickColBd[brickIdx]=tileColBd[tileX]
BrickRowBd[brickIdx]=tileRowBd[tileY]
BrickWidth[brickIdx]=colWidth[tileX]
BrickHeight[brickIdx]=RowHeight[tileY](6-5)
brickIdx++
}else{
if(uniform_brick_spacing_flag[i]){
remainingHeightInCtbsY=RowHeight[tileY]
j=0
while(remainingHeightInCtbsY>(brick_height_minus1[i]+1)){
rowHeight2[j++]=brick_height_minus1[i]+1
remainingHeightInCtbsY-=(brick_height_minus1[i]+1)
}
rowHeight2[j]=remainingHeightInCtbsY
num_brick_rows_minus1[i]=j
}else{
rowHeight2[num_brick_rows_minus1[i]]=RowHeight[tileY]
for(j=0;j<num_brick_rows_minus1[i];j++){
rowHeight2[j]=brick_row_height_minus1[i][j]+1
rowHeight2[num_brick_rows_minus1[i]]-=rowHeight2[j]
}
}
for(rowBd2[0]=0,j=0;j<=num_brick_rows_minus1[i];j++)
rowBd2[j+1]=rowBd2[j]+rowHeight2[j]
for(j=0;j<num_brick_rows_minus1[i]+1;j++){
BrickColBd[brickIdx]=tileColBd[tileX]
BrickRowBd[brickIdx]=tileRowBd[tileY]+rowBd2[j]
BrickWidth[brickIdx]=colWidth[tileX]
BrickHeight[brickIdx]=rowHeight2[j]
brickIdx++
}
}
}
NumBricksInPic=brickIdx
【0188】
0からPicSizeInCtbsY-1までの範囲のctbAddrRのリストCtbAddrRsToBs[ctbAddrRs]は、画像のCTBラスタースキャンのCTBアドレスからブリックスキャンのCTBアドレスへの変換を指定して、次のように導出される。
for(ctbAddrRs=0;ctbAddrRs<PicSizeInCtbsY;ctbAddrRs++){
tbX=ctbAddrRs%PicWidthInCtbsY
tbY=ctbAddrRs/PicWidthInCtbsY
brickFound=FALSE
for(bkIdx=NumBricksInPic-1,i=0;i<NumBricksInPic-1&&!brickFound;i++){
brickFound=tbX<(BrickColBd[i]+BrickWidth[i])&&
tbY<(BrickRowBd[i]+BrickHeight[i])
if(brickFound)(6-6)
bkIdx=i
}
CtbAddrRsToBs[ctbAddrRs]=0
for(i=0;i<bkIdx;i++)
CtbAddrRsToBs[ctbAddrRs]+=BrickHeight[i]*BrickWidth[i]
CtbAddrRsToBs[ctbAddrRs]+=
(tbY-BrickRowBd[bkIdx])*BrickWidth[bkIdx]+tbX-BrickColBd[bkIdx]
}
【0189】
0からPicSizeInCtbsY-1までの範囲のctbAddrBのリストCtbAddrBsToRs[ctbAddrBs]は、ブリックスキャンのCTBアドレスから画像のCTBラスタースキャンのCTBアドレスへの変換を指定して、次のように導出される。
for(ctbAddrRs=0;ctbAddrRs<PicSizeInCtbsY;ctbAddrRs++)(6-7)
CtbAddrBsToRs[CtbAddrRsToBs[ctbAddrRs]]=ctbAddrRs
【0190】
0からPicSizeInCtbsY-1までの範囲のctbAddrBのリストBrickId[ctbAddrBs]は、ブリックスキャンのCTBアドレスからブリックIDへの変換を指定して、次のように導出される。
for(i=0,i<NumBricksInPic;i++)
for(y=BrickRowBd[i];y<BrickRowBd[i]+BrickHeight[i];y++)(6-8)
for(x=BrickColBd[i];x<BrickColBd[i]+BrickWidth[i];x++)
BrickId[CtbAddrRsToBs[y*PicWidthInCtbsY+x]]=i
【0191】
0からNumBricksInPic-1までの範囲のbrickIdxのリストNumCtusInBrick[brickIdx]は、ブリックインデックスからブリックのCTUの数への変換を指定して、次のように導出される。
for(i=0;i<NumBricksInPic;i++)(6-9)
NumCtusInBrick[i]=BrickWidth[i]*BrickHeight[i]
【0192】
0からNumBricksInPic-1までの範囲のbrickIdxのリストFirstCtbAddrBs[brickIdx]は、ブリックの最初のCTBのブリックスキャンでブリックIDからCTBアドレスへの変換を指定して、次のように導出される。
【0193】
for(ctbAddrBs=0,brickIdx=0,brickStartFlag=1;ctbAddrBs<PicSizeInCtbsY;ctbAddrBs++){
if(brickStartFlag){
FirstCtbAddrBs[brickIdx]=ctbAddrBs(6-10)
brickStartFlag=0
}
brickEndFlag=(ctbAddrBs==PicSizeInCtbsY-1)||
(BrickId[ctbAddrBs+1]!=BrickId[ctbAddrBs])
if(brickEndFlag){
brickIdx++
brickStartFlag=1
}
}
画像パラメータセットRBSP構文
【0194】
【表11】
上記のコードでは、画像パラメータセットRBSPセマンティクスは、例えば次のように定義できる。
【0195】
pps_pic_parameter_set_idは、他の構文要素による参照用にPPSを識別する。pps_pic_parameter_set_idの値は、0から63までの範囲であるものとする。
【0196】
pps_seq_parameter_set_idは、アクティブなSPSのsps_seq_parameter_set_idの値を指定する。pps_seq_parameter_set_idの値は、0から15までの範囲であるものとする。
【0197】
output_flag_present_flagが1の場合、pic_output_flag構文要素がPPSを参照するスライスヘッダーに存在することを示す。output_flag_present_flagが0の場合、pic_output_flag構文要素がPPSを参照するスライスヘッダーに存在しないことを示す。
【0198】
single_tile_in_pic_flagが1の場合、PPSを参照する各画像にタイルが1つしかないことを指定する。0に等しいsingle_tile_in_pic_flagは、PPSを参照する各画像に複数のタイルがあることを指定する。
【0199】
注-タイル内でさらにブリックが分割されない場合、タイル全体がブリックと呼ばれる。画像にさらなるブリックの分割がなくタイルが1つしか含まれていない場合、それは単一のブリックと呼ばれる。
single_tile_in_pic_flagの値は、CVS内でアクティブ化されるすべてのPPSで同じであるものとする。
【0200】
uniform_tile_spacing_flagが1である場合、タイル列の境界と同様にタイル行の境界が画像全体に均一に分散され、構文要素tile_cols_width_minus1およびtile_rows_height_minus1を使用してシグナリングされることを指定する。uniform_tile_spacing_flagが0の場合、タイル列の境界と同様にタイル行の境界が画像全体に均一に分散されてもされなくてもよく、構文要素num_tile_columns_minus1とnum_tile_rows_minus1、および構文要素のペアtile_column_width_minus1[i]とtile_row_height_minus1[i]のリストを使用してシグナリングされる場合とされない場合があることを指定する。
存在しない場合、uniform_tile_spacing_flagの値は1に等しいと推測される。
【0201】
tile_cols_width_minus1+1は、uniform_tile_spacing_flagが1に等しい場合に、画像の右端のタイル列を除くタイル列の幅をCTBのユニットで指定する。tile_cols_width_minus1の値は、0からPicWidthInCtbsY-1までの範囲であるものとする。存在しない場合、tile_cols_width_minus1の値はPicWidthInCtbsY-1に等しいと推測される。
【0202】
tile_rows_height_minus1+1は、uniform_tile_spacing_flagが1に等しい場合に、CTBのユニットで画像の底部のタイル行を除くタイル行の高さを指定する。tile_rows_height_minus1の値は、0からPicHeightInCtbsY-1までの範囲であるものとする。存在しない場合、tile_rows_height_minus1の値はPicHeightInCtbsY-1に等しいと推測される。
【0203】
num_tile_columns_minus1+1は、uniform_tile_spacing_flagが0に等しい場合に、画像を分割するタイル列の数を指定する。num_tile_columns_minus1の値は、0からPicWidthInCtbsY-1までの範囲であるものとする。single_tile_in_pic_flagが1に等しい場合、num_tile_columns_minus1の値は0に等しいと推測される。それ以外の場合、uniform_tile_spacing_flagが1に等しい場合、num_tile_columns_minus1の値が推測される(例えば、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスに関して上記で指定されたように)。
【0204】
num_tile_rows_minus1+1は、uniform_tile_spacing_flagが0に等しい場合に、画像を分割するタイル行の数を指定する。num_tile_rows_minus1の値は、0からPicHeightInCtbsY-1までの範囲であるものとする。single_tile_in_pic_flagが1に等しい場合、num_tile_rows_minus1の値は0に等しいと推測される。それ以外の場合、uniform_tile_spacing_flagが1に等しい場合、num_tile_rows_minus1の値が推測される(例えば、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスに関して以下に指定されているように)。
【0205】
変数NumTilesInPicは、(num_tile_columns_minus1+1)*(num_tile_rows_minus1+1)に等しく設定される。
single_tile_in_pic_flagが0に等しい場合、NumTilesInPicは1より大きくなるものとする。
tile_column_width_minus1[i]+1は、CTBのユニットでi番目のタイル列の幅を指定する。
tile_row_height_minus1[i]+1は、CTBのユニットでi番目のタイル行の高さを指定する。
【0206】
brick_splitting_present_flagが1に等しい場合、PPSを参照する画像の1つまたは複数のタイルを2つ以上のブリックに分割できることを指定する。brick_splitting_present_flagが0の場合、PPSを参照する画像のタイルが2つ以上のブリックに分割されないことを指定する。
【0207】
brick_split_flag[i]が1に等しい場合、i番目のタイルが2つ以上のブリックに分割されることを指定する。brick_split_flag[i]が0に等しい場合、i番目のタイルが2つ以上のブリックに分割されていないことを指定する。存在しない場合、brick_split_flag[i]の値は、0に等しいと推測される。
【0208】
Uniform_brick_spacing_flag[i]が1に等しい場合、水平のブリックの境界がi番目のタイル全体に均一に分散され、構文要素brick_height_minus1[i]を使用してシグナリングされることを指定する。uniform_brick_spacing_flag[i]が0の場合、水平のブリックの境界がi番目のタイル全体に均一に分散される場合またはされない場合があり、構文要素num_brick_rows_minus1[i]と構文要素brick_row_height_minus1[i][j]のリストを使用してシグナリングされる場合またはされない場合があることを指定する。存在しない場合、uniform_brick_spacing_flag[i]の値は1に等しいと推測される。
【0209】
brick_height_minus1[i]+1は、uniform_brick_spacing_flag[i]が1に等しい場合に、CTBのユニットでi番目のタイルの下部のブリックを除くブリック行の高さを指定する。存在する場合、brick_height_minus1の値は0からRowHeight[i]-2までの範囲であるものとする。存在しない場合、brick_height_minus1[i]の値はRowHeight[i]-1に等しいと推測される。
【0210】
num_brick_rows_minus1[i]+1は、uniform_brick_spacing_flag[i]が0に等しい場合に、i番目のタイルを分割するブリックの数を指定する。存在する場合、num_brick_rows_minus1[i]の値は、1からRowHeight[i]-1までの範囲であるものとする。brick_split_flag[i]が0に等しい場合、num_brick_rows_minus1[i]の値は0に等しいと推測される。それ以外の場合、uniform_brick_spacing_flag[i]が1に等しい場合、num_brick_rows_minus1[i]の値が推測される(例えば、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスに関して上記で指定したように)。
【0211】
brick_row_height_minus1[i][j]+1は、uniform_tile_spacing_flagが0に等しい場合、CTBのユニットでi番目のタイルのj番目のブリックの高さを指定する。
【0212】
次の変数が導出され、uniform_tile_spacing_flagが1に等しい場合、num_tile_columns_minus1とnum_tile_rows_minus1の値が推測され、0からNumTilesInPic-1までの範囲の各iについて、uniform_brick_spacing_flag[i]が1に等しい場合、num_brick_rows_minus1[i]の値は、CTBラスターおよびブリックスキャン変換プロセスを呼び出すことによって推測される(例えば、CTBラスタースキャン、タイルスキャン、およびブリックスキャンプロセスに関して上記で指定したように)。
【0213】
-0からnum_tile_rows_minus1までの範囲のjのリストRowHeight[j]。CTBのユニットでj番目のタイル行の高さを指定する。
【0214】
-0からPicSizeInCtbsY-1までの範囲のCtbAddrRsのリストCtbAddrRsToBs[ctbAddrRs]。画像のCTBラスタースキャンのCTBアドレスからブリックスキャンのCTBアドレスへの変換を指定する。
【0215】
-0からPicSizeInCtbsY-1までの範囲のctbAddrBsのリストCtbAddrBsToRs[ctbAddrBs]。ブリックスキャンのCTBアドレスから画像のCTBラスタースキャンのCTBアドレスへの変換を指定する。
【0216】
-0からPicSizeInCtbsY-1までの範囲のctbAddrBsのリストBrickId[ctbAddrBs]。ブリックスキャンのCTBアドレスからブリックIDへの変換を指定する。
【0217】
-0からNumBricksInPic-1までの範囲のbrickIdxのリストNumCtusInBrick[brickIdx]。ブリックインデックスからブリック内のCTUの数への変換を指定する。
【0218】
-0からNumBricksInPic-1までの範囲のbrickIdxのリストFirstCtbAddrBs[brickIdx]。ブリック内の最初のCTBのブリックスキャンでのブリックIDからCTBアドレスへの変換を指定する。
【0219】
single_brick_per_slice_flagが1の場合、このPPSを参照する各スライスに1つのブリックが含まれることを指定する。single_brick_per_slice_flagが0の場合、このPPSを参照するスライスに複数のブリックが含まれる可能性があることを指定する。存在しない場合、single_brick_per_slice_flagの値は1に等しいと推測される。
【0220】
rect_slice_flagが0に等しい場合、各スライス内のブリックがラスタースキャン順序であり、スライス情報がPPSでシグナリングされないことを指定する。1に等しいrect_slice_flagは、各スライス内のブリックが画像の長方形の領域をカバーし、スライス情報がPPSでシグナリングされることを指定する。存在しない場合、rect_slice_flagは1に等しいと推測される。
【0221】
num_slices_in_pic_minus1+1は、PPSを参照する各画像のスライス数を指定する。num_slices_in_pic_minus1の値は、0からNumBricksInPic-1までの範囲であるものとする。存在せず、single_brick_per_slice_flagが1に等しい場合、num_slices_in_pic_minus1の値はNumBricksInPic-1に等しいと推測される。
【0222】
top_left_brick_idx[i]は、i番目のスライスの左上の隅にあるブリックのブリックインデックスを指定する。top_left_brick_idx[i]の値は、jと等しくないいずれかのiのtop_left_brick_idx[j]の値と等しいものとする。存在しない場合、top_left_brick_idx[i]の値はiに等しいと推測される。top_left_brick_idx[i]の構文要素の長さはCeil(Log2(NumBricksInPic)ビットである。
【0223】
bottom_right_brick_idx_delta[i]は、i番目のスライスの右下の隅にあるブリックのブリックインデックスと、top_left_brick_idx[i]の差を指定する。single_brick_per_slice_flagが1に等しい場合、bottom_right_brick_idx_delta[i]の値は0に等しいと推測される。bottom_right_brick_idx_delta[i]の構文要素の長さはCeil(Log2(NumBricksInPic-top_left_brick_idx[i]))ビットである。
スライスには、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続したシーケンスのみが含まれる。
【0224】
i番目のスライスのブリックの数とブリックのスライスへのマッピングを指定する変数NumBricksInSlice[i]とBricksToSliceMap[j]は、次のように導出される。
NumBricksInSlice[i]=0
botRightBkIdx=top_left_brick_idx[i]+bottom_right_brick_idx_delta[i]
for(j=0;j<NumBricksInPic;j++){
if(BrickColBd[j]>=BrickColBd[top_left_brick_idx[i]]&&
BrickColBd[j]<=BrickColBd[botRightBkIdx]&&
BrickRowBd[j]>=BrickRowBd[top_left_brick_idx[i]]&&(7-35)
BrickRowBd[j]<=BrickRowBd[botRightBkIdx]){
NumBricksInSlice[i]++
BricksToSliceMap[j]=i
}
}
【0225】
loop_filter_across_bricks_enabled_flagが1の場合、PPSを参照する画像のブリックの境界を越えてループ内フィルタリング操作を実行できることを指定する。loop_filter_across_bricks_enabled_flagが0の場合、PPSを参照する画像のブリックの境界を越えてループ内フィルタリング操作が実行されないことを指定する。ループ内フィルタリング操作には、非ブロック化フィルタ、サンプル適合オフセットフィルタ、および適合ループフィルタ操作が含まれる。存在しない場合、loop_filter_across_bricks_enabled_flagの値は1に等しいと推測される。
【0226】
loop_filter_across_slices_enabled_flagが1の場合、PPSを参照する画像のスライス境界を越えてループ内フィルタリング操作を実行できることを指定する。loop_filter_across_slice_enabled_flagが0の場合、PPSを参照する画像のスライスの境界を越えてループ内フィルタリング操作が実行されないことを指定する。ループ内フィルタリング操作には、非ブロック化フィルタ、サンプル適合オフセットフィルタ、および適合ループフィルタ操作が含まれる。存在しない場合、loop_filter_across_slices_enabled_flagの値は0に等しいと推測される。
【0227】
signalled_slice_id_flagが1の場合、各スライスのスライスIDがシグナリングされることを指定する。signalled_slice_id_flagが0に等しい場合、スライスIDがシグナリングされないことを指定する。rect_slice_flagが0に等しい場合、signalled_slice_id_flagの値は0に等しいと推測される。
【0228】
signalled_slice_id_length_minus1+1は、存在する場合は構文要素slice_id[i]を表すために使用されるビット数、およびスライスヘッダー内の構文要素slice_addressを指定する。signalled_slice_id_length_minus1の値は、0から15までの範囲であるものとする。存在しない場合、signalled_slice_id_length_minus1の値はCeil(Log2(num_slices_in_pic_minus1+1))-1に等しいと推測される。
【0229】
slice_id[i]は、i番目のスライスのスライスIDを指定する。slice_id[i]の構文要素の長さはsignalled_slice_id_length_minus1+1ビットである。存在しない場合、slice_id[i]の値は、0からnum_slices_in_pic_minus1までの範囲の各iについて、iに等しいと推測される。
【0230】
entropy_coding_sync_enabled_flagが1に等しい場合、PPSを参照する各画像の各ブリックのCTBの行の最初のCTBを含むCTUを復号する前に、コンテキスト変数の特定の同期プロセスが呼び出され、PPSを参照する各画像の各ブリックのCTBの行の最初のCTBを含むCTUを復号した後に、コンテキスト変数の特定のストレージプロセスが呼び出されることを指定する。entropy_coding_sync_enabled_flagが0に等しい場合、例えば、PPSを参照する各画像の各ブリックのCTBの行の最初のCTBを含むCTUを復号する前に、コンテキスト変数の特定の同期プロセスを呼び出す必要がないこと、およびコンテキスト変数の特定のストレージプロセスは、例えば、PPSを参照する各画像の各ブリックのCTBの行の最初のCTBを含むCTUを復号した後に呼び出す必要がある場合があることを指定する。
entropy_coding_sync_enabled_flagの値は、CVS内でアクティブ化されるすべてのPPSで同じであるものとする。
【0231】
cabac_init_present_flagが1に等しい場合、PPSを参照するスライスヘッダーにcabac_init_flagが存在することを指定する。cabac_init_present_flagが0に等しい場合、PPSを参照するスライスヘッダーにcabac_init_flagが存在しないことを指定する。
【0232】
num_ref_idx_default_active_minus1[i]+1は、iが0に等しい場合、num_ref_idx_active_override_flagが0に等しいPまたはBスライスの変数NumRefIdxActive[0]の推定値を指定し、iが1に等しい場合、num_ref_idx_active_override_flagが0に等しいBスライスの場合はNumRefIdxActive[1]の推定値を指定する。num_ref_idx_default_active_minus1[i]の値は、0から14までの範囲であるものとする。
【0233】
rpl1_idx_present_flagが0の場合、ref_pic_list_sps_flag[1]およびref_pic_list_idx[1]がスライスヘッダーに存在しないことを指定する。rpl1_idx_present_flagが1に等しい場合、ref_pic_list_sps_flag[1]およびref_pic_list_idx[1]がスライスヘッダーに存在する可能性があることを指定する。
【0234】
init_qp_minus26+26は、PPSを参照する各スライスのSliceQpYの初期値を指定する。SliceQpYの初期値は、slice_qp_deltaの非ゼロの値が復号されるときにスライスレイヤーで変更される。init_qp_minus26の値は、-(26+QpBdOffsetY)から+37までの範囲であるものとする。
【0235】
transform_skip_enabled_flagが1に等しい場合、transform_skip_flagが変換ユニットの構文に存在する可能性があることを指定する。transform_skip_enabled_flagが0に等しい場合、transform_skip_flagが変換ユニットの構文に存在しないことを指定する。
【0236】
log2_transform_skip_max_size_minus2は、変換スキップに使用される最大のブロックサイズを指定し、0から3の範囲であるものとする。
存在しない場合、log2_transform_skip_max_size_minus2の値は0に等しいと推測される。
変数MaxTsSizeは1に等しく設定される<<(log2_transform_skip_max_size_minus2+2)。
【0237】
cu_qp_delta_enabled_flagが1に等しい場合、cu_qp_delta_subdiv構文要素がPPSに存在し、cu_qp_delta_absが変換ユニット構文に存在する可能性があることを指定する。cu_qp_delta_enabled_flagが0に等しい場合、cu_qp_delta_subdivの構文要素がPPSに存在せず、cu_qp_delta_absが変換ユニット構文に存在しないことを指定する。
【0238】
cu_qp_delta_subdivは、cu_qp_delta_absとcu_qp_delta_sign_flagを伝達するコーディングユニットの最大のcbSubdiv値を指定する。cu_qp_delta_subdivの値の範囲は、次のように指定される。
【0239】
-slice_typeがIに等しい場合、cu_qp_delta_subdivの値は0から2*(log2_ctu_size_minus2-log2_min_qt_size_intra_slice_minus2+MaxMttDepthY)の範囲内であるものとする。
【0240】
-さもなければ(slice_typeがIに等しくない場合、cu_qp_delta_subdivの値は0から2*(log2_ctu_size_minus2-log2_min_qt_size_inter_slice_minus2+MaxMttDepthY)の範囲内であるものとする。
存在しない場合、cu_qp_delta_subdivの値は0に等しいと推測される。
【0241】
[編集(BB):ここでの問題は、MaxMttDepthYがスライスレベルで導出されることである。partition_constraints_override_enabled_flagが1に等しい場合、MaxMttDepthYの値を知るために、スライスヘッダーを解析する必要がある。]
【0242】
pps_cb_qp_offsetおよびpps_cr_qp_offsetは、それぞれQp’CbおよびQp’Crの導出に使用される輝度量子化パラメータQp’Yへのオフセットを指定する。pps_cb_qp_offsetおよびpps_cr_qp_offsetの値は、-12から+12までの範囲であるものとする。ChromaArrayTypeが0に等しい場合、pps_cb_qp_offsetとpps_cr_qp_offsetは復号プロセスで使用されず、デコーダはそれらの値を無視する。
【0243】
pps_slice_chroma_qp_offsets_present_flagが1の場合、slice_cb_qp_offsetおよびslice_cr_qp_offsetの構文要素が関連するスライスヘッダーに存在することを示す。pps_slice_chroma_qp_offsets_present_flagが0の場合、これらの構文要素が、関連するスライスヘッダーに存在しないことを示す。ChromaArrayTypeが0に等しい場合、pps_slice_chroma_qp_offsets_present_flagは0に等しくなるものとする。
【0244】
weighted_pred_flagが0に等しい場合、重み付き予測がPスライスに適用されないことを指定する。weighted_pred_flagが1に等しい場合、重み付き予測がPスライスに適用されることを指定する。
【0245】
weighted_bipred_flagが0に等しい場合、デフォルトの重み付け予測がBスライスに適用されることを指定する。weighted_bipred_flagが1に等しい場合、重み付き予測がBスライスに適用されることを指定する。
【0246】
deblocking_filter_control_present_flagが1に等しい場合、PPSの非ブロック化フィルタ制御の構文要素の存在を指定する。deblocking_filter_control_present_flagが0に等しい場合、PPSに非ブロック化フィルタ制御の構文要素がないことを指定する。
【0247】
deblocking_filter_override_enabled_flagが1に等しい場合、PPSを参照する画像のスライスヘッダーにdeblocking_filter_override_flagが存在することを指定する。deblocking_filter_override_enabled_flagが0に等しい場合、PPSを参照する画像のスライスヘッダーにdeblocking_filter_override_flagがないことを指定する。存在しない場合、deblocking_filter_override_enabled_flagの値は0に等しいと推測される。
【0248】
pps_deblocking_filter_disabled_flagが1の場合、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスには、非ブロック化フィルタの操作が適用されないことを指定する。pps_deblocking_filter_disabled_flagが0の場合、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスに非ブロック化フィルタの操作が適用されることを指定する。存在しない場合、pps_deblocking_filter_disabled_flagの値は0に等しいと推測される。
【0249】
pps_beta_offset_div2およびpps_tc_offset_div2は、デフォルトの非ブロック化パラメーターオフセットが、PPSを参照するスライスのスライスヘッダーに存在する非ブロック化パラメーターオフセットによってオーバーライドされない場合、PPSを参照するスライスに適用されるβおよびtCのデフォルトの非ブロック化パラメーターオフセット(2で除算)を指定する。pps_beta_offset_div2とpps_tc_offset_div2の値は、両方とも-6から6の範囲であるものとする。存在しない場合、pps_beta_offset_div2とpps_tc_offset_div2の値は0に等しいと推測される。
【0250】
pps_loop_filter_across_virtual_boundaries_disabled_flagが1の場合、PPSを参照する画像の仮想境界を越えてループ内フィルタリング操作が無効になることを指定する。pps_loop_filter_across_virtual_boundaries_disabled_flagが0に等しい場合、PPSを参照する画像にループ内フィルタリング操作のそのような無効化が適用されないことを指定する。ループ内フィルタリング操作には、非ブロック化フィルタ、サンプル適合オフセットフィルタ、および適合ループフィルタ操作が含まれる。存在しない場合、pps_loop_filter_across_virtual_boundaries_disabled_flagの値は0に等しいと推測される。
【0251】
pps_num_ver_virtual_boundariesは、PPSに存在するpps_virtual_boundaries_pos_x[i]の構文要素の数を指定する。pps_num_ver_virtual_boundariesが存在しない場合、0に等しいと推測される。
【0252】
pps_virtual_boundaries_pos_x[i]は、PpsVirtualBoundariesPosX[i]の値を計算するために使用される。これは、輝度サンプルのユニットでi番目の垂直仮想境界の位置を指定する。pps_virtual_boundaries_pos_x[i]を表すために使用されるビット数は、Ceil(Log2(pic_width_in_luma_samples)-3)である。pps_virtual_boundaries_pos_x[i]は、1からCeil(pic_width_in_luma_samples÷8)-1までの範囲であるものとする。
垂直仮想境界PpsVirtualBoundariesPosX[i]の位置は、次のように導出される。
PpsVirtualBoundariesPosX[i]=pps_virtual_boundaries_pos_x[i]*8(7-36)
任意の2つの垂直仮想境界間の距離は、CtbSizeY輝度サンプル以上であるものとする。
【0253】
pps_num_hor_virtual_boundariesは、PPSに存在するpps_virtual_boundaries_pos_y[i]の構文要素の数を指定する。pps_num_hor_virtual_boundariesが存在しない場合、0に等しいと推測される。
【0254】
pps_virtual_boundaries_pos_y[i]は、PpsVirtualBoundariesPosY[i]の値を計算するために使用される。これは、輝度サンプルのユニットでi番目の水平仮想境界の位置を指定する。pps_virtual_boundaries_pos_y[i]を表すために使用されるビット数はCeil(Log2(pic_height_in_luma_samples)-3)である。pps_virtual_boundaries_pos_y[i]は、1からCeil(pic_height_in_luma_samples÷8)-1までの範囲であるものとする。
水平仮想境界PpsVirtualBoundariesPosY[i]の位置は、次のように導出される。
PpsVirtualBoundariesPosY[i]=pps_virtual_boundaries_pos_y[i]*8(7-37)
任意の2つの水平仮想境界間の距離は、CtbSizeY輝度サンプル以上であるものとする。
【0255】
pps_extension_flagが0の場合、PPS RBSPの構文構造にpps_extension_data_flag構文要素が存在しないことを指定する。pps_extension_flagが1に等しい場合、PPS RBSPの構文構造にpps_extension_data_flagの構文要素が存在することを指定する。
【0256】
pps_extension_data_flagには任意の値を指定できる。その存在と値は、この仕様のこのバージョンで指定されているプロファイルへのデコーダの適合性には影響しない。この仕様のこのバージョンに準拠するデコーダは、すべてのpps_extension_data_flag構文要素を無視するものとする。
以下のサブ副次的サブセクション「実施形態C」では、低レベル構文でのシグナリングについて説明する。
すでに述べたように、CAのレイアウトを示す別のオプションは、より柔軟な方法でVCL内構文を使用することである。
【0257】
コーディング領域のレイアウトは、2つの新しい構文要素area_line_stop_flagとarea_column_stop_flagの評価によって決定されるが、一方でend_of_slice_flagは使用されない場合がある。
【0258】
area_line_stop_flagは、CTUコーディングプロセスの最後にビットストリームに存在する。対角スキャン順序の次のCTUが、CTUラインに位置し、それに対して前のarea_line_stop_flagが現在のスライスのビットストリームで送信されておらず、それが少なくとも部分的に画像内にある場合がある。area_line_stop_flagが偽の場合、現在のスライス長方形は、現在使用されているCTU列の数で新しいCTU行によって拡張される。area_line_stop_flagが真の場合、スライスの高さは、現在のスライスで現在使用されているCTU行の数に固定される。
【0259】
同様に、area_column_stop_flagは、CTUコーディングプロセスの最後にビットストリームに存在する。対角スキャン順序の次のCTUが新しいCTU列にあり、それに対して前のarea_column_stop_flagが現在のスライスのビットストリームで送信されておらず、それが少なくとも部分的に画像内にある場合である。area_column_stop_flagが偽の場合、スライス長方形は、現在使用されているCTU行の数を含む新しいCTU列によって拡張される。area_column_stop_flagが真の場合、スライス幅は現在のスライスで現在使用されているCTU列の数に固定される。
図11は、実施形態によるサブエリア(CTU)レベルでのコーディング領域のシグナリングを示している。
【0260】
スライスの長方形が決定されると、スライス長方形でカバーされるすべてのCTUが処理されるまで、CTUは特定のスキャン順序で処理される。画像境界で明示的なarea_line_stop_flagとarea_column_stop_flagがそれぞれ欠落しているため、画像境界に隣接するスパンコーディング領域はこれらを超えないように制限されている。これは
図11で確認できる。それにおいて、area_line_stop_flag=1およびarea_column_stop_flag=1が画像の境界の近くに存在しない。
【0261】
CAのサイズと位置、および画像境界に関する以前の知識を使用して、area_line_stop_flag=1とarea_column_stop_flag=1を暗示的に導出することで、シグナリングオーバーヘッドを省けるが、何らかのビットストリーム操作、例えば、「コーディング領域ビットストリーム抽出」や「コーディング領域ビットストリーム集約」を防ぐか、または、これらの場合、少なくともエントロピー符号化データの追加の処理のオーバーヘッドを発生させる。現在、HEVCの場合、エントロピーコード化データをさらに処理することなく、両方のプロセスに対して可能にするモーション制約付きタイルセット(MCTS)が定義されている。ただし、そのようなプロセスによってMCTS(それぞれのCA)境界が画像境界になるか、画像境界がMCTS境界(それぞれのCA)になり、画像境界にはならない。したがって、暗示的導出area_line_stop_flag=1およびarea_column_stop_flag=1は、それが画像の境界であるかどうか、および他のCAがすでに記述されているかどうかに関係なく、常に両方の構文要素の存在を要求することにより、このような機能を有効にすることを許可すべきではない。これは、例えば「implicit_area_line_or_column_enabled_flag」と呼ばれるパラメータセットに構文要素が存在することによってか、MCTSまたは「モーション制約コーディング領域」の存在に依存させることによって、実行できる。
【0262】
上記を要約すると、実施形態によれば、データエンコーダ110は、例えば、複数のコーディング領域の情報が、1つまたは複数のコーディング領域のコーディング領域に対する1つまたは複数の領域列停止フラグを含むように、指示データを生成するように構成され得、1つまたは複数のコーディング領域のコーディング領域の領域列停止フラグが停止値に設定されている場合、前記領域列停止フラグは、例えば、前記コーディング領域の幅を示し得る。または、データエンコーダ110は、例えば、複数のコーディング領域の情報が、1つまたは複数のコーディング領域のコーディング領域に対する1つまたは複数の領域ライン停止フラグを含むように、指示データを生成するように構成され得、1つまたは複数のコーディング領域のコーディング領域の領域ライン停止フラグが停止値に設定され、前記領域ライン停止フラグは、例えば、前記コーディング領域の高さを示し得る。
【0263】
実施形態によれば、データエンコーダ110は、例えば、指示データが明示的シグナリングモードがアクティブであるかどうか、または明示的シグナリングモードが非アクティブであるかどうかを示すように、指示データを生成するように構成され得る。明示的シグナリングモードがアクティブであり、コーディング領域の1つまたは複数のコーディングツリーユニットのコーディングツリーユニットが画像の画像境界に位置する場合、データエンコーダ110は、例えば、指示データが、前記コーディングツリーユニットの領域列停止フラグおよび領域ライン停止フラグのうちの少なくとも1つを含むように、指示データを生成するように構成され得る。明示的シグナリングモードが非アクティブであり、コーディング領域の1つまたは複数のコーディングツリーユニットの前記コーディングツリーユニットが画像の前記画像境界に位置する場合、データエンコーダ110は、例えば、指示データが前記コーディングツリーユニットの領域列停止フラグを含まない、および/または前記コーディングツリーユニットの領域ライン停止フラグを含まないように指示データを生成するように構成され得る。
【0264】
同様に、実施形態では、データデコーダ170は、例えば、複数のコーディング領域に関する情報を使用して符号化された画像データを復号するように構成され得、前記情報は、1つまたは複数のコーディング領域のコーディング領域の1つまたは複数の領域列停止フラグを含み、1つまたは複数のコーディング領域のコーディング領域の領域列停止フラグが停止値に設定されている場合、前記領域列停止フラグは、例えば、前記コーディング領域の幅を示し得る。または、データデコーダ170は、例えば、複数のコーディング領域の情報を使用して符号化された画像データを復号するように構成され得、前記情報は、1つまたは複数のコーディング領域のコーディング領域に対する1つまたは複数の領域ライン停止フラグであり、1つまたは複数のコーディング領域のコーディング領域の領域ライン停止フラグが停止値に設定されている場合、前記領域ライン停止フラグは、例えば、前記コーディング領域の高さを示し得る。
【0265】
実施形態によれば、データデコーダ170は、例えば、明示的シグナリングモードがアクティブであるかどうか、または明示的シグナリングモードが非アクティブであるかどうかを示す指示データ内の指示を使用して、符号化された画像データを復号するように構成され得る。明示的シグナリングモードが非アクティブであり、コーディング領域の1つまたは複数のコーディングツリーユニットのコーディングツリーユニットが画像の前記画像境界に位置する場合、データデコーダ170は、例えば、画像境界画像に依存して、符号化された画像データを復号するように構成され得る。
次の副次的サブセクション「CTUスキャン順序」では、CTUスキャン順序について説明する。
次のサブ副次的サブセクション「ラスタースキャン」では、ラスタースキャンについて説明する。
【0266】
画像が複数のCAに分割されている場合、従来のラスタースキャン方式をCTU処理スキームに適用できる。この方法を使用し、コーディング領域を介して画像全体の分割スキームを認識している場合、画像全体のCTUをライン単位で処理することができる。この種の処理は、HEVCのタイルですでに可能であった。したがって、この場合、CTU処理スキームの柔軟性が維持される。
【0267】
したがって、実施形態によれば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域のコーディング順序は、例えば、ラスタースキャンに依存し得、データエンコーダ110は、例えば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域を符号化するためにラスタースキャンが使用されたことを指示データが示すように、指示データを生成するように構成され得る。
【0268】
同様に、実施形態によれば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域のコーディング順序は、ラスタースキャンに依存でき、データデコーダ170は、ラスタースキャンに依存して符号化された画像データを復号するように構成でき、データデコーダ170は、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域を符号化するためにラスタースキャンが使用されたことを示す情報を受信するように構成でき、指示データは、例えば、前記情報を含み得る。
次のサブ副次的サブセクション「対角スキャン」では、対角スキャンについて説明する。
【0269】
ただし、従来のラスタースキャンの順序では、空間参照の可用性に制限がある。これを改善するために、実施形態では、対角スキャンが追加のCTU処理スキームとして使用される。
【0270】
対角スキャンを導出するために、[2]から、上位CTUラインへの依存関係の一般化された処理を使用する:CTU_dependency_offset_id([2])。
【0271】
CTU
Xref,Yrefに対応するブロックは参照に利用でき、そのときCTU
Xref,Yrefが現在のCTU
Xcur,Ycurの予測に利用でき、そのとき参照が制限されておらず、例えば、別のスライス、タイル、または画像の外側にあり、次の条件が当てはまる。
-WPPの場合:
【数1】
【0272】
【0273】
【0274】
【数5】
ここで、X
ref、Y
ref、X
cur、Y
curはCTUの位置の座標である。
【0275】
上記の上位ネイバーブロックオフセット制限を使用して、CTU処理順序を導出できる。結果として得られる様々なCTUスキャンは、特定の傾斜または角度を持つ対角スキャンの変形であり、傾斜は固定した値により与えられるか、ビットストリームで送信される構文要素によって制御されるか、またはビットストリームにすでに存在している構文要素から派生させる。
図12は、実施形態による、CTU_dependency_offset_id=1のCTUスキャン順序および空間参照を示している。
図13は、別の実施形態による、CTU_dependency_offset_id=2の別のCTUスキャン順序および空間参照を示している。
【0276】
以下の
図12および
図13に示すように、様々なタイプのCTUスキャンを生成できる。デフォルトのスキャン方向は、左から右の対角線下向きに進むものであり、次のアルゴリズム(Matlab(登録商標))によって生成できる。
Slope=CTU_dependency_offset_id-1;
【0277】
A=repmat(1:NumCTUColumns,NumCTURows,1)+repmat((0:NumCTUColumns:(NumCTUColumns*(NumCTURows-1)))’,1,NumCTUColumns)
scan=zeros(1,numel(A));%raster scan idxes
scanXY=zeros(2,numel(A));
idx=1;
x=1;y=1;
while not(all(size(A)==[y x]))
if y<=NumCTURows&&x<=NumCTUColumns
%scan it
scan(idx)=A(y,x);
scanXY(:,idx)=[x,y]’;
idx=idx+1;
else
%ignore it
end
if x>Slope
if y<NumCTURows
x=x-Slope;
y=y+1;
else
x=x+(NumCTURows-1)*Slope+1;
y=1;
end
else
if y==1
x=x+1;
else
if x<=Slope||y==NumCTURows
x=x+(y-1)*Slope+1;
y=1;
end
end
end
end
%scan it
scan(idx)=A(y,x);
scanXY(:,idx)=[x,y]’;
idx=idx+1;
以下に、いくつかのCTU_dependency_offset_id値の例示的なスキャンと空間参照の可用性を示す。
上記を要約すると:
【0278】
実施形態によれば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング領域のコーディング順序は、例えば、角度を示す傾斜に依存するスキャン順序に依存し得る。前記コーディング領域の2つまたはそれより多いコーディングツリーユニットのうちの第1の1つを符号化した後、データエンコーダ110は、例えば、前記コーディング領域のコーディングツリーユニットの第1の1つの位置に依存し、符号化されていない前記コーディング領域の他のコーディングツリーユニットに依存し、また傾斜に依存して、コーディング領域内の2つまたはそれより多いコーディングツリーユニットのうちの第2の1つを決定するように構成され得る。データエンコーダ110は、例えば、2つまたはそれより多いコーディングツリーユニットのうちの前記第2の1つを符号化するように構成され得る。
【0279】
実施形態では、データエンコーダ110は、例えば、コーディング領域内の2つまたはそれより多いコーディングツリーユニットのうちの第2の1つを決定するように構成され、矢印は、開始点および傾斜によって定義され、開始点は、コーディング領域内のコーディングツリーユニットの第1の1つの位置であり得て、2つまたはそれより多いコーディングツリーユニットの第2の1つの位置を指す。
【0280】
実施形態によれば、データエンコーダ110は、例えば、対角スキャンが2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域を符号化するために使用されたことを指示データが示すように、指示データを生成するように構成され得る。
【0281】
同様に、実施形態によれば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング領域のコーディング順序は、例えば、角度を示す傾斜に依存するスキャン順序に依存し得る。指示データは、例えば、コーディング領域の前記情報を含むことができ、それにおいて、コーディング領域の2つまたはそれより多いコーディングツリーユニットのうちの第1の1つを符号化した後、データデコーダ170は、例えば、前記コーディング領域のコーディングツリーユニットの第1の1つの位置に依存し、復号されていない前記コーディング領域の他のコーディングツリーユニットに依存し、また傾斜に依存して、コーディング領域内の2つまたはそれより多いコーディングツリーユニットのうちの第2の1つを決定するように構成され得る。データデコーダ170は、例えば、2つまたはそれより多いコーディングツリーユニットのうちの前記第2の1つを復号するように構成され得る。
【0282】
実施形態によれば、データデコーダ170は、例えば、開始点および傾斜によって定義される矢印のように、コーディング領域内の2つまたはそれより多いコーディングツリーユニットのうちの第2の1つを決定するように構成され得る。開始点は、例えば、コーディング領域内のコーディングツリーユニットの第1の1つの位置であり得、2つまたはそれより多いコーディングツリーユニットの第2の1つの位置を指す。
【0283】
実施形態では、データデコーダ170は、例えば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域を符号化するために対角スキャンが使用されたことを示す情報指示データを受信するように構成され得て、指示データは、例えば、前記情報を含み得る。
次のサブ副次的サブセクション「Z-スキャン」では、Z-スキャンについて説明する。
図14は、実施形態による、Z-スキャンCTU順序でのコーディング領域を示している。
【0284】
このような実施形態では、提案された対角スキャンの代わりに、ZスキャンをCTUスキャン順序に使用することができる。Z-スキャンはHEVCで定義されている。
【0285】
実施形態によれば、5つ以上のコーディングツリーユニットを含むコーディング領域のコーディング順序は、例えば、スキャン順序に依存し得、前記スキャン順序は、第1の角度が0°であることに依存し、第2の角度が135°であることに依存し、また第3の角度が45°であることに依存してよい。
【0286】
前記コーディング領域の第1のコーディングツリーユニットを符号化した後、データエンコーダ110は、例えば、前記コーディングツリー領域の第2のコーディングツリーユニットを決定するように構成され得、その結果、前記コーディング領域内の第1のコーディングツリーユニットの位置で第1の開始点を有する第1の矢印は、事前定義された方向に対して0°である第1の角度を囲み、第1の矢印がコーディング領域内の前記第2のコーディングツリーユニットを指し、データエンコーダ110は、前記コーディング領域の前記第2のコーディングツリーユニットを符号化するよう構成される。
【0287】
前記コーディング領域の第2のコーディングツリーユニットを符号化した後、データエンコーダ110は、例えば、前記コーディングツリー領域の第3のコーディングツリーユニットを決定するように構成され得、その結果、前記コーディング領域内の第2のコーディングツリーユニットの位置で第2の開始点を有する第2の矢印は、前記事前定義された方向に対して135°である第2の角度を囲み、第2の矢印がコーディング領域内の前記第3のコーディングツリーユニットを指し、データエンコーダ110は、前記コーディング領域の前記第3のコーディングツリーユニットを符号化するよう構成される。
【0288】
前記コーディング領域の第3のコーディングツリーユニットを符号化した後、データエンコーダ110は、例えば、前記コーディングツリー領域の第4のコーディングツリーユニットを決定するように構成され得、その結果、前記コーディング領域内の第3のコーディングツリーユニットの位置で第3の開始点を有する第3の矢印は、前記事前定義された方向に対して0°である第1の角度を囲み、第3の矢印がコーディング領域内の前記第4のコーディングツリーユニットを指し、データエンコーダ110は、前記コーディング領域の前記第4のコーディングツリーユニットを符号化するよう構成される。
【0289】
特定の実施形態では、前記コーディング領域の第4のコーディングツリーユニットを符号化した後、データエンコーダ110は、前記コーディングツリー領域の第5のコーディングツリーユニットを決定するように構成され得て、その結果、前記コーディング領域内の第4のコーディングツリーユニットの位置の第4の開始点を有する第4の矢印は、前記事前定義された方向に対して45°である第3の角度を囲み、第4の矢印がコーディング領域内の前記第5のコーディングツリーユニットを指し、データエンコーダ110が、前記コーディング領域の前記第5のコーディングツリーユニットを符号化するように構成される。
【0290】
実施形態では、データエンコーダ110は、例えば、zスキャンが5つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各前記領域を符号化するために使用されたことを指示データが示すように、指示データを生成するように構成され得る。
【0291】
同様に、実施形態によれば、5つ以上のコーディングツリーユニットを含むコーディング領域のコーディング順序は、例えば、スキャン順序に依存し得、前記スキャン順序は、第1の角度が0°であることに依存し、第2の角度が135°であることに依存し、また第3の角度が45°であることに依存してよい。
【0292】
前記コーディング領域の第1のコーディングツリーユニットを復号した後、データデコーダ170は、例えば、前記コーディングツリー領域の第2のコーディングツリーユニットを決定するように構成され得、その結果、前記コーディング領域内の第1のコーディングツリーユニットの位置で第1の開始点を有する第1の矢印は、事前定義された方向に対して0°である第1の角度を囲み、第1の矢印がコーディング領域内の前記第2のコーディングツリーユニットを指し、データデコーダ170は、前記コーディング領域の前記第2のコーディングツリーユニットを復号するよう構成される。
【0293】
前記コーディング領域の第2のコーディングツリーユニットを復号した後、データデコーダ170は、例えば、前記コーディングツリー領域の第3のコーディングツリーユニットを決定するように構成され得、その結果、前記コーディング領域内の第2のコーディングツリーユニットの位置で第2の開始点を有する第2の矢印は、前記事前定義された方向に対して135°である第2の角度を囲み、第2の矢印がコーディング領域内の前記第3のコーディングツリーユニットを指し、データデコーダ170は、前記コーディング領域の前記第3のコーディングツリーユニットを復号するよう構成される。
【0294】
前記コーディング領域の第3のコーディングツリーユニットを復号した後、データデコーダ170は、例えば、前記コーディングツリー領域の第4のコーディングツリーユニットを決定するように構成され得、その結果、前記コーディング領域内の第3のコーディングツリーユニットの位置で第3の開始点を有する第3の矢印は、前記事前定義された方向に対して0°である第1の角度を囲み、第3の矢印がコーディング領域内の前記第4のコーディングツリーユニットを指し、データデコーダ170は、前記コーディング領域の前記第4のコーディングツリーユニットを復号するよう構成される。
【0295】
特定の実施形態では、前記コーディング領域の第4のコーディングツリーユニットを復号した後、データデコーダ170は、前記コーディングツリー領域の第5のコーディングツリーユニットを決定するように構成され得て、その結果、前記コーディング領域内の第4のコーディングツリーユニットの位置の第4の開始点を有する第4の矢印は、前記事前定義された方向に対して45°である第3の角度を囲み、第4の矢印がコーディング領域内の前記第5のコーディングツリーユニットを指し、データデコーダ170が、前記コーディング領域の前記第5のコーディングツリーユニットを復号するように構成される。
【0296】
実施形態によれば、データデコーダ170は、例えば、5つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各前記領域を符号化するためにzスキャンが使用されたことを示す情報を受信するように構成され得て、指示データは、例えば、前記情報を含み得る。
次のサブ副次的サブセクション「スキャン方向」では、スキャン方向について説明する。
【0297】
別の実施形態では、スキャンの方向は柔軟であり得、例えば、右から左の対角線下向き、それぞれ右から左の対角線上向き、または左から右に斜め上向きの範囲である。スキャン方向は、新しい構文要素CTU_scan_directionを使用してビットストリームで送信することも、ビットストリームにすでに存在する構文要素から派生させることもできる。
【0298】
別の実施形態では、スキャン方向は、厳密なスライス順序の制約の下で、coding_area_start_addressによってアドレス指定された第1のスライスCTUの隣接する近傍を評価することによって導き出される。
【0299】
第1のスライスCTUの下部境界に隣接するCTUネイバーがある場合、または第1のスライスCTUが画像の下部CTUラインに位置し、右側に隣接するネイバーがなく、右端のCTU列に位置していない場合、CTUスキャンは右上向きのスキャンである。
【0300】
第1のスライスCTUの下部境界に隣接するCTUネイバーがある場合、または第1のスライスCTUが画像の下部CTUラインに位置し、右側に隣接する隣接があるか、画像の右端の列に位置する場合、CTUスキャンは左上向きのスキャンである。
【0301】
それ以外の場合、第1のスライスCTUの右側にあるCTUネイバーが使用可能な場合、または第1のスライスCTUが画像の右端の列に位置する場合、スキャンは左下に行われる。他のすべての場合、CTUスキャンは右下である。
図15は、別の実施形態による暗示的CTUスキャン方向の導出を示している。
【0302】
そのような別の実施形態では、上記の発明の導出スキームは、潜在的なコーディング領域境界に沿って利用可能なCTUネイバーの数を評価することによってさらに改良される。例えば、第1のスライスCTUは、CTUネイバーの左上の位置にあり、スキャンは右下スキャンまたは下-右スキャンである可能性があり、したがって、垂直方向と水平方向にコーディング領域の境界に沿った、利用可能な可能性のある(CAの次元が不明な場合)CTUネイバーは、個別に合計される。垂直ネイバーの合計が水平CTUネイバーの数を超える場合は、下-右スキャンが使用される。それ以外の場合、スキャンは右下スキャンになる。この導出スキームは、ラスタースキャンを使用した
図15に例示されている。
【0303】
別の実施形態では、上記の発明の導出スキームおよび改良は、CTUスキャンを選択するスライスレベルでインデックスが送信される、可能なスキャンの順序付けられたリストを形成するために使用される。さらに、画像内で異なる対角スキャンを使用する場合は、CTU_dependency_offset_idをスライスヘッダーにコーディングする必要がある。
図16は、実施形態による、異なるCTUスキャン方向のコーディング領域を示している。
特に、
図16は、画像内で様々なスキャン方向を使用する例を示している。
上記を要約すると:
【0304】
実施形態によれば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング領域のコーディング順序は、例えば、1つまたは複数のスキャン方向を含むスキャン順序に依存し得る。前記コーディング領域の第1のコーディングツリーユニットを符号化した後、データエンコーダ110は、例えば、第1のコーディングツリーユニットの位置に依存して、および1つまたは複数のスキャン方向の第1の1つに依存して、前記コーディングツリー領域の第2のコーディングツリーユニットを決定するように構成され得、データエンコーダ110は、前記コーディング領域の前記第2のコーディングツリーユニットを符号化するように構成される。
【0305】
実施形態では、データエンコーダ110は、例えば、指示データが1つまたは複数のスキャン方向を含む前記スキャン順序を示すように、指示データを生成するように構成され得る。
【0306】
実施形態によれば、データエンコーダ110は、例えば、前記コーディング領域の第1のコーディングツリーユニットの隣接する近傍を評価することによって、1つまたは複数のスキャン方向のスキャン方向を導出するように構成され得る。第1のコーディングツリーユニットの下部境界に隣接する2つまたはそれより多いコーディングツリーユニットのコーディングツリーユニットネイバーがある場合、または第1のコーディングツリーユニットが画像の下部のコーディングツリーユニット行に位置し、右に隣接するネイバーがなく、右端のコーディングツリーユニット列に位置していない場合、スキャン方向は、例えば、右上向きのスキャンである可能性がある。第1のコーディングツリーユニットが、その下部境界に隣接する2つまたはそれより多いコーディングツリーユニットのコーディングツリーユニットネイバーがある場合、または第1のコーディングツリーユニットが画像の下部のコーディングツリーユニット行に位置し、右に隣接するネイバーがあるか、画像の右端の列に位置する場合、スキャン方向は、例えば、左上向きのスキャンである可能性がある。第1のコーディングツリーユニットの右側にある2つまたはそれより多いコーディングツリーユニットのコーディングツリーユニットネイバーが利用可能である場合、または第1のコーディングツリーユニットが画像の右端の列に位置する場合、スキャン方向は、例えば、左下向きであり得る。そうでなければ、スキャン方向は、例えば、右下向きである可能性がある。
【0307】
実施形態では、データエンコーダ110は、例えば、指示データが、1つまたは複数のスキャン方向の選択されたスキャン方向を示すインデックスを示すように、指示データを生成するように構成され得る。
【0308】
同様に、実施形態によれば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング領域のコーディング順序は、例えば、1つまたは複数のスキャン方向を含むスキャン順序に依存し得る。前記コーディング領域の第1のコーディングツリーユニットを復号した後、データデコーダ170は、例えば、第1のコーディングツリーユニットの位置に依存して、1つまたは複数のスキャン方向の第1の1つに依存して、前記コーディングツリー領域の第2のコーディングツリーユニットを決定するように構成され得、データデコーダ170は、例えば、前記コーディング領域の前記第2のコーディングツリーユニットを復号するように構成され得る。
【0309】
実施形態では、データデコーダ170は、例えば、1つまたは複数のスキャン方向を含む前記スキャン順序を示す情報を受信するように構成され得、ここで、指示データは、例えば、前記情報を含み得る。
【0310】
実施形態によれば、データデコーダ170は、例えば、前記コーディング領域の第1のコーディングツリーユニットの隣接する近傍を評価することによって、1つまたは複数のスキャン方向のスキャン方向を導出するように構成され得る。第1のコーディングツリーユニットの下部境界に隣接する2つまたはそれより多いコーディングツリーユニットのコーディングツリーユニットネイバーがある場合、または第1のコーディングツリーユニットが画像の下部のコーディングツリーユニット行に位置し、右に隣接するネイバーがなく、右端のコーディングツリーユニット列に位置していない場合、スキャン方向は、例えば、右上向きのスキャンである可能性がある。第1のコーディングツリーユニットが、その下部境界に隣接する2つまたはそれより多いコーディングツリーユニットのコーディングツリーユニットネイバーがある場合、または第1のコーディングツリーユニットが画像の下部のコーディングツリーユニット行に位置し、右に隣接するネイバーがあるか、画像の右端の列に位置する場合、スキャン方向は、例えば、左上向きのスキャンである可能性がある。第1のコーディングツリーユニットの右側にある2つまたはそれより多いコーディングツリーユニットのコーディングツリーユニットネイバーが利用可能である場合、または第1のコーディングツリーユニットが画像の右端の列に位置する場合、スキャン方向は、例えば、左下向きであり得る。そうでなければ、スキャン方向は、例えば、右下向きである可能性がある。
【0311】
実施形態では、データデコーダ170は、例えば、1つまたは複数のスキャン方向の選択されたスキャン方向を示すインデックスを示す情報を受信するように構成され得、指示データは、例えば、前記情報を含み得る。
以下の副次的サブセクション「依存的コーディング領域」では、依存的コーディング領域について説明する。
図17は、実施形態による、領域間予測オプションでの依存的コーディング領域を示している。
【0312】
そのような実施形態では、画像内で、空間予測機能を活用するために、1つのコーディング領域が別のコーディング領域に依存するようにすることができる。この場合、領域の特定の処理順序は、例えば、決定論的動作を容易にするために必要となる場合がある。これは、例えば、依存関係の順序を明示的に決定する各CAの新しい構文要素area_order_idxを使用して、領域の順序をシグナリングすることによって実行できる。または、依存関係の順序は、coding_area_arrangement()構文でシグナリングされるCAの順序から直接導出できる。副次的サブセクション「コーディング領域のサイズと配置」を参照されたい。
【0313】
area_order_idxの値は、次のように解釈できる。つまり、area_order_idx値が高い領域は、area_order_idx値が低い領域に依存するか、またはその逆である。
上記を要約すると:
【0314】
実施形態では、データエンコーダ110は、例えば、複数のコーディング領域の各コーディング領域内の画像のイメージデータを符号化して、符号化された画像データを取得することによって、画像を符号化するように構成することができる。データエンコーダ110は、例えば、複数のコーディング領域のうちの少なくとも1つのイメージデータを符号化することが複数のコーディング領域のうちの少なくとも別の1つのイメージデータの符号化に依存するように、前記複数のコーディング領域のうちの少なくとも1つの画像のイメージデータを符号化するように構成され得る。
【0315】
同様に、実施形態では、データデコーダ170は、例えば、複数のコーディング領域のうちの少なくとも1つの符号化された画像データを復号するように構成でき、複数のコーディング領域のうちの少なくとも1つの符号化された画像データを復号することは、複数のコーディング領域のうちの前記少なくとも別の1つの符号化された画像データの復号に依存する。
以下の副次的サブセクション「コーディング領域の並列処理」では、コーディング領域の並列処理について説明する。
【0316】
コーディング領域は、並列処理の補助も可能である。並列化の明らかな使用例は、複数の非依存的コーディング領域を使用することである。この場合、1つのCAの構成されたCTUを他のいずれかのCAに解析または再構築するための依存関係は禁止されており、別のCAに割り当てられた隣接するCUは参照できないものとして扱われる。この場合、後処理フィルタは、filter_over_ca_boundaries_flagに依存して、個別に、または画像ごとにCAに適用され得る。この構文要素は、HEVCで使用されるloop_filter_across_tiles_enabled_flagと同じように機能する。
図18は、実施形態((A)CTUラスタースキャン;(B)CTU対角スキャン)による依存的コーディング領域の並列処理を示している。
【0317】
依存的コーディング領域の場合、
図18に示す処理スキームを使用して、画像の空間的な依存関係を活用し、領域間の境界で発生する可能性のあるアーティファクトを減らすことができる。CA間依存関係を使用するには、例えば、CTU処理の明確な順序が必要になる場合がある。その結果、隣接するCAからのCTUの信頼性の高い可用性が得られる。
【0318】
CAを処理する順序は、ビットストリームで送信されるCAの順序によって暗示的に指定される場合がある。さらに、CAの順序は、ビットストリームで送信されるシンボルによって明示的に指定することもできる。
2つの主要なCTU実行の概念を
図19に示す。
図19は、実施形態((A)依存関係駆動型;(B)ロックステップ)による実行順序およびCA間依存関係を示している。
以下では、ロックステップパイプラインについて説明する。
【0319】
パイプラインの概念は、ロックステップ実行スキームに従った解析と再構築、および/またはポストフィルタリングを前提としている。グローバルイベントは、各スレッドのCTUの実行ステップを開始するために使用され、各ステップでは、各CAで単一のCTUが処理される。このスキームは、
図19(B)に示すように、利用できないCTU参照を犠牲にして、最大限のスループットを保証する。この場合、第1および第2のCAの直接隣接するCTUが同時に処理されるため、どちらの方向も参照できない。
ただし、厳密なロックステップ実行が適用されると、水色の矢印で示されているように、追加のCA間依存関係が使用可能になる。
以下では、依存関係駆動型の概念について説明する。
【0320】
この概念は、CA間CTUネイバーのローカルの可用性に依存している。参照用に使用できるはずであるが、隣接するネイバーCAの参照CTUが使用できない場合、この特定のCAの実行は、各解析再構築を完遂することで参照CTUが使用可能になるまで停止する。これは、例えば、第1のCAの参照CTUが第5の実行ステップで処理され、第6の実行ステップで最も早く利用可能であるため、第2のCAの処理が第5の実行ステップで停止される
図19(A)にて見ることができる。
【0321】
さらに、並列処理は、依存的CA処理スキームを使用した後処理フィルタの操作に拡張できる。CTU内部境界(CU境界)の場合、デフォルトのフィルタプロセスを適用できる。対照的に、CTU境界は、処理順序の第2のCTUがフィルタリングされるときにフィルタリングされ、そのため、境界でのフィルタ強度を決定でき、またフィルタリング用のサンプルを利用できる。CA交差境界フィルタリングが有効になっている場合、または依存CAの場合、このルールはまたCA交差境界フィルタリングに適用される。CTU境界を超えて到達する非ブロック化フィルタは、隣接するCAでの参照CTUの可用性を考慮して解析と再構築が実行されるときに、アナログの方法で処理される。隣接するCAのCTUが使用可能な場合、事前にフィルタリングされていない領域の部分は、現在のフィルタリングプロセスでフィルタリングされる。
図20は、実施形態による、CA順序に関するCA境界上の非ブロック化フィルタプロセスを示している。
図21は、実施形態による、ハッチングされたフィルタ領域でのCA間フィルタリングを採用する非ブロック化フィルタを示す。
【0322】
図21に示すように、第1の処理ステップでは、第1のCAのCTU(1)のみをフィルタリングできる。このCTUのフィルタリングは、CTUネイバーが使用できないため、内部境界に制限されている。第2の実行ステップでは、第1のCAの第2のCTUが、その内部境界と、第1のCAの第1のCTUへのCTU境界をフィルタリングする。さらに、第2のCAの左下のCTUは、その内部境界と、第1のCAの第1のCTUのCTU境界とオーバーラップするCAをフィルタリングしている。この並列処理の効果の1つは、非ブロック化フィルタの低遅延の操作を可能にすることである。クロスCA境界フィルタリングの非ブロック化は、CA全体が復号される前に開始することができ、それにより、画像領域がさらなる画像のための参照画像を使用することができる前の全体的な処理時間を短縮することができる。
次の副次的サブセクション「エラーの回復力の態様」では、エラーの回復力の態様について説明する。
【0323】
「最先端のVCL分割」のセクションで説明したように、アプリケーションのストレージまたはトランスポートのメカニズムの信頼性が低い場合、エラーの回復力はビデオコーディングの望ましい機能である。ただし、HTTPストリーミングなどの多くのアプリケーションが今日存在し、例えば、パケット損失のあるRTP/UDPストリーミングや、ビットエラーまたはバーストエラーのある一般的なブロードキャストチャネルのように、エラーの回復力が少なくてすむ場合がある。HTTPストリーミングの場合、コード化されたビデオは通常n*GOP単位でセグメント化され、セグメントが欠落していると、それぞれのセグメントが正常に再送信されるまで、受信機側でバッファストールがトリガーされる。後者のシナリオでは、一部のエラー回復機能を失いながらコーディング効率の利益を向上させるために、コーディングされたデータ内にさらに依存関係を導入することが望ましい。例えば、サブの副次的サブセクション「スキャン方向」で説明されている隣接CAに基づくスキャン順序導出の態様では、例えば、現在のCAを正しく復号し得る前に、受信機側の隣接するCAの可用性が必要になる場合がある。したがって、このような手法は、限られたエラーの回復力が許容できる場合にのみ使用するべきである。同様に、副次的サブセクション「依存的コーディング領域」のような依存的コーディング領域に関する態様では、エラーの回復力に影響を与える依存関係、および副次的サブセクション「コーディング領域の並列処理」で説明されている並列化の態様と処理順序が導入される。この点に関する他の最先端技術は、同じトレードオフに対処せねばならない。例えば、HEVC SCCのIBCなどの画像内翻訳補正予測や、現在のブロックからさらに離れており、通常のイントラ予測になる画像内のサンプルを促進する他の予測内技術などである。また、シーケンスレベルでは、エラーの回復力への影響を犠牲にしてコーディング効率を向上させることが知られているさらなる手法がある。例えば、画像を介したCABACコンテキストモデルなどのエントロピーコーディングエンティティの状態の共有などがある。
【0324】
コード化されたビデオの送信を組み込んだシステムでは、コード化されたビデオストリームがもたらすエラーの回復力の程度に関する情報は、様々な方法で利用することができる。例えば、メディア対応のミドルボックスが早期の再送信をトリガーできる、または、エンドデバイスがエラー隠蔽戦略の中から選択でき、例えば、フレームサブセクションのコピーによるフレームレベルのスライスベースのエラー隠蔽や、再送信が成功するまでのバッファリング、またはビットストリームのパーツ(個々のAU、PPSなどに関連付けられたAU、SPSに関連付けられるかまたはCVSを形成するAU)の復号をスキップすることが挙げられる。したがって、ミドルボックスまたはクライアントエンドデバイスに、コード化されたビデオストリームが提供するエラーの回復力の程度を示すことが望ましい。コード化されたビデオシーケンスにおけるエラー隠蔽度の別の使用法は、サービスオペレータが特定のコード化されたストリームが、想定される伝送システムに適しているかどうかを決定することである。例えば、HTTPストリーミング用に符号化されたストリームは、バーストエラーが発生しやすい衛星放送チャネルを介して送信された場合、パフォーマンスが低下する可能性がある。
【0325】
現在、この情報は、無数のパラメータがエラーの回復力を決定するため、最新のコーデックを使用してコード化されたストリームで簡単にアクセスすることはできない。例えば、上記の例の網羅的ではないリストを取り上げる。いくつかの個々のパラメータは、パラメータのセットから派生する場合があり、他のパラメータが、例えば、画像ベースで高レベルの構文解析を必要とする場合がある一方で、他のパラメータは、例えば、低レベルの構文解析を必要とする場合さえある。また、調査されたパラメータのほとんどは、コード化されたビデオシーケンスの残りのエンコーダの決定に関する情報でシグナリングされないが、範囲が制限されている。例えば、分割の決定は、画像から画像へと偶然に起こる可能性がある。破損したストリームには、必要な情報が含まれていない可能性がある。
【0326】
実施形態は、コード化されたビデオシーケンスのエラーの回復力の程度の容易にアクセス可能な指示をもたらす。いくつかの実施形態は、エラーの回復力およびエラー軽減戦略に影響を与える関連ツール上のコード化されたビデオのコーディング制約を提供する。ミドルボックスまたはクライアントエンドデバイスは、ビデオエンコーダが、別様にはエラーの回復力に影響を与える決定スペースから特定のオプションを除外したことを保証するものとして、指示を解釈できる。サービス提供者は、コード化されたストリームがどの伝送システムに適しているかに関する情報を解釈できる。
実施形態では、以下のように、コード化されたビデオの容易にアクセス可能な高レベルの構文における単一のフラグが、例えば、以下のように提供される。
【0327】
【0328】
sps_error_resiliency_enabled_flagは、コード化されたビデオシーケンスのエラーの回復力の状態を示す。sps_error_resiliency_flagが1の場合、CVSでアクティブなSPSが[CodingToolSetC]の使用をアクティブにせず、CVSでアクティブなPPSまたはAUが[CodingToolSetB]の使用をアクティブにしないことを示す。sps_error_resiliency_flagが0の場合、そのような表示はない。
【0329】
あるいは、実施形態は、以下のように、コード化されたビデオの容易にアクセス可能な高レベルの構文におけるエラーの回復力の状態の事前定義されたリストへインデックスを提供する。
【0330】
【表13】
sps_error_resiliency_enabled_idxは、次の表に従って、コード化されたビデオシーケンスのエラーの回復力の状態を示す。
【0331】
【表14】
AU=アクセスユニット;PPS=画像パラメータセット;SPS=シーケンスパラメータセット、CVSコード化ビデオシーケンス
【0332】
ここで、リスト[CodingToolSetA]、[CodingToolSetB]、および[CodingToolsSetC]は次のように定義されている。
【0333】
CodingToolSetAは、画像レベルでエラーの回復力を損なうツールで構成されている。つまり、依存的CAなど、画像の一部が失われた場合に、復号の成功を妨げる画像内に依存関係を導入する。
【0334】
CodingToolSetBは、複数の画像レベル(つまり、PPSのスコープ)でエラーの回復力を損なうツールで構成される。つまり、例えばGOPの最上位の時間層に属する画像など、複数の画像の結合エントロピーコーディングなどの、誤った画像の後にツールを使用して、PPSを参照するいずれかの画像間に依存関係を導入し、PPSを参照する画像の復号を成功させないようにする。
【0335】
CodingToolsSetCは、シーケンスレベル(つまり、SPSのスコープ)でエラーの回復力を損なうツールで構成される。つまり、それらは、ランダムアクセス期間内のすべての画像間に依存関係を導入し、それらが、量子化器スケーリング行列、エントロピーコーディングの初期化など新しいCVSをランダムアクセスポイントが開始するまで、誤った画像に従ってツールを使用してSPSを参照するいずれの画像の復号をも成功させないようにする。
本発明のさらなる実施形態では、指示の異なるモードは、ツールセットをアクティブ化する構文構造にリンクされていない。
【0336】
【0337】
さらに、CodingToolSetBの範囲は、第1の画像からコーディング順に続く画像の分量で範囲を示す追加のシグナリングによって示される。したがって、この実施形態のCodingToolSetBは、複数の画像レベル(それぞれの画像がスコープ表示によって示される)でエラーの回復力を損なうツールを含む、すなわち、それらは、示された画像間に依存関係を導入し、その結果、誤った画像に続くツールセットを使用した画像、例えばGOPなどの最上位の時間層に属する画像など、複数の画像の結合エントロピーコーディングのいずれかの復号の成功を妨げる。
【0338】
上記を要約すると、実施形態によれば、データエンコーダ110は、例えば、指示データが、例えば、コード化されたビデオシーケンスのエラーの回復力に関する情報を含み得るように、指示データを生成するように構成され得る。
【0339】
実施形態では、エラーの回復力に関する情報は、例えば、コード化されたビデオシーケンスのエラーの回復力に関する3つまたはそれより多い異なる状態のうちの1つを示し得る。
【0340】
同様に、実施形態によれば、データデコーダ170は、例えば、コード化されたビデオシーケンスのエラーの回復力を示す情報を受信するように構成され得る。データデコーダ170は、例えば、コード化されたビデオシーケンスのエラーの回復力を示す情報に依存して、コード化された画像データを復号するように構成され得る。
【0341】
実施形態では、エラーの回復力に関する情報は、例えば、コード化されたビデオシーケンスのエラーの回復力に関する3つまたはそれより多い異なる状態のうちの1つを示し得る。
【0342】
特定の実施形態では、3つまたはそれより多い異なる状態の第1の状態は、例えば、アクセスユニットにはエラーの回復力がないことを示し得る。3つまたはそれより多い異なる状態の第2の状態は、例えば、画像のパラメータセットの第1の複数のアクセスユニットにはエラーの回復力がないことを示し得る。3つまたはそれより多い異なる状態の第3の状態は、例えば、シーケンスパラメータセットの第2の複数のアクセスユニットにはエラーの回復力がないことを示し得る。
【0343】
別の特定の実施形態では、エラーの回復力に関する情報は、例えば、コード化されたビデオシーケンスのエラーの回復力に関する4つまたはそれより多い異なる状態のうちの1つを示し得る。4つまたはそれより多い異なる状態の第1の状態は、例えば、エラーの回復力が画像レベルで損なわれ、複数画像レベルで損なわれ、シーケンスレベルで損なわれることを示し得る。4つまたはそれより多い異なる状態の第2の状態は、例えば、エラーの回復力が画像レベルで損なわれ、複数画像レベルで損なわれるが、シーケンスレベルでは損なわれないことを示し得る。4つまたはそれより多い異なる状態の第3の状態は、例えば、エラーの回復力が画像レベルで損なわれるが、エラーの回復力が複数画像レベルで損なわれず、シーケンスレベルで損なわれないことを示し得る。また、4つまたはそれより多い異なる状態の第4の状態は、例えば、エラーの回復力が画像レベルで損なわれず、複数画像レベルで損なわれず、シーケンスレベルで損なわれないことを示し得る。
次のサブセクション「コーディング領域のデータの断片化」では、コーディング領域のデータの断片化について説明する。
タイルと同様に、CAはまたトランスポートレイヤー用に断片化できる。この場合、制限はない。考えられる使用例を
図22、
図23、および
図24に示す。
図22は、1つのコーディング領域の単一の画像で構成されるビットストリームを示しているが、CAは複数のトランスポートユニットに断片化されている。
図23は、複数のコーディング領域の単一の画像で構成されるビットストリームを示しているが、各CAには独自のトランスポートユニットがある。
図24は、複数のコーディング領域の単一の画像を含むビットストリームを示しているが、各CAが複数のトランスポートユニットに断片化されている。
次のサブセクション「サブ領域空間予測子管理のコーディング」では、サブ領域空間予測子管理のコーディングについて説明する。
図25は、実施形態による、領域に囲まれたブロックの一般化された提示を示している。
一般化されたアプローチでは、コーディングブロックは8つの主要な空間領域で囲むことができる。
図25を参照されたい。
次の副次的サブセクション「一般的な予測子の管理」では、一般的な予測子の管理について説明する。
【0344】
8つのネイバー領域すべてから得る候補を、予測候補リストに組み込むことができる。それらは、各々可用性を簡単な方法で選択できる。CTUの場合、例えば、特定のサブブロックの処理順序でサブブロックにさらに分割することで構成でき、特定の可用性シナリオにより、サブブロックの順序を調整できる。例えば、ネイバーAD、D、DC、およびCのみが使用可能な場合、これらのネイバーに隣接するサブブロックを最初に処理するべきである。
【0345】
要約すると、実施形態によれば、データエンコーダ110は、例えば、画像内に位置している複数のコーディングツリーユニットのうちの8つの隣接するコーディングツリーユニットの1つまたは複数のコーディングツリーユニットに依存して、画像内に位置している複数のコーディングツリーユニットのコーディングツリーユニットを符号化するように構成でき、8つの隣接するコーディングツリーユニットは、前記コーディングツリーユニットに隣接している。
【0346】
同様に、実施形態で、データデコーダ170は、例えば、画像内に位置している複数のコーディングツリーユニットのうちの8つの隣接するコーディングツリーユニットの1つまたは複数のコーディングツリーユニットに依存して、画像内に位置している複数のコーディングツリーユニットのコーディングツリーユニットを復号するように構成でき、8つの隣接するコーディングツリーユニットは、前記コーディングツリーユニットに隣接している。
次の副次的サブセクション「ネイバーの空間的適合」では、ネイバーの空間的適合について説明する。
【0347】
いくつかの特定の近傍のシナリオは、対応するネイバーの領域または予測子のいくつかの適合によって、従来のサブブロック処理順序を可能にする。実施形態では、適合は、例えば、対応するネイバーの領域の回転を含み得、必要に応じて、90°ステップずつ段階的にコーディングブロックを含み得る。例えば、図では、ネイバーAD、D、DC、C、およびBCのみが使用可能な場合、これらのネイバーの回転と、必要に応じてコーディングブロックの180°の回転を実行できる。これは、論理的なローテーションや、サンプルや構文要素などのバッファリングされたデータを新しいバッファリングされた状態に変換するようなメモリ操作であってよい。
座標変換には、水平または垂直の反転を含めることもできる。これにより、異なる予測候補の順序に至る。
【0348】
要約すると、実施形態で、データエンコーダ110は、例えば、8つの隣接するコーディングツリーユニットのコーディングツリーユニットを、8つの隣接するコーディングツリーユニットのうちの別の1つにシフトすることによって、画像内に位置する複数のコーディングツリーユニットのコーディングツリーユニットを符号化するように構成され得る。
【0349】
同様に、実施形態によれば、データデコーダ170は、例えば、8つの隣接するコーディングツリーユニットのコーディングツリーユニットを、8つの隣接するコーディングツリーユニットのうちの別の1つにシフトすることによって、画像内に位置する複数のコーディングツリーユニットのコーディングツリーユニットを復号するように構成され得る。
次の副次的サブセクション「使用できないネイバーの置換の概念」では、使用できないネイバーの置き換えの概念について説明する。
【0350】
場合によっては、空間的ネイバーは予測に利用できない。このような場合、導出アルゴリズムが、予測に使用できる、様々なネイバーを使用するか、アルゴリズムが、ビットストリームで明示的に送信された値か以前にコード化されたシンボルまたは再構築された値から導出されたものを用いることで、何らかの種類のフォールバックを使用して、値を導出する。
【0351】
特定の実施形態では、予測に利用できない空間的ネイバーは、例えば、利用可能である場合、現在のブロックの下の空間的近傍からのネイバーによって置き換えられ得る。
それ以外の場合、下に空間予測子がない場合、現在のブロックが利用できる。デフォルトのフォールバックが使用される。
【0352】
以下では、このコンテキストでの「左下拡張」という用語は、現在のブロックの左下のサンプルが現在のCTUの底部のサンプル行にある特別な場合を除く、現在のブロックのすぐ左下にある0の定義に従ったブロックとして定義されている。この特殊なケースでは、現在のブロックの左下拡張ネイバーは、次のCTUラインのCTUの右上のブロックであり、提案されたブロック依存関係オフセットに従って予測に使用できる。
例えば、現在の最先端の標準0のQP予測スキームは、特定のfallBackQPで次の導出スキームを使用する。
A=(isLeftCUavailble ?CULeftQP:fallBackQP)
B=(isAboveCUavailble ?CUAboveQP:fallBackQP)
PredictedQP=(A+B+1)>>1
【0353】
特定の実施形態では、予測スキームは、左CUが応答する場合、左下拡張CUのQPを使用するように拡張される。上記のCUは予測に使用できないが、左下拡張のCUは予測に使用できる。通常のネイバーCUも左下拡張CUも予測に使用できない場合は、代わりにfallBackQPを使用してA、B各々の値を導出する。
【0354】
A=(isLeftCUavailble ?CULeftQP:(isExtendedBelowLeftCUavailble ?CUExtendedBelowLeftQP:fallBackQP))
【0355】
B=(isAboveCUavailble ?CUAboveQP:(isExtendedBelowLeftCUavailble ?CUExtendedBelowLeftQP:fallBackQP))
PredictedQP=(A+B+1)>>1
ただし、この種の予測スキームは普遍的であり、左右のネイバーからの予測データを使用するすべての予測スキームに適用できる。
特に、
derivation of CABAC CTX CU split_flag
derivation of CABAC CTX affine_flag
derivation of CABAC CTX skip_flag
derivation of CABAC CTX imv_flag
derivation of CABAC CTX bt_split_flag
derivation of CABAC CTX intra_nn_flag
【0356】
さらに、発明された予測スキームは、特定の予測子を導出するための規範的な復号プロセスでも使用することができる。例えば、動きベクトル成分と参照インデックスの導出プロセス、または輝度イントラ予測モードの導出プロセスが挙げられる。
【0357】
要約すると、実施形態によれば、前記8つの隣接するコーディングツリーユニットは、第1の近傍であり、データエンコーダ110は、例えば、第2の近傍の別の8つの隣接するコーディングツリーユニットの第3のコーディングツリーユニットを、第1の近傍の8つの隣接するコーディングツリーユニットの第2のコーディングツリーユニットにシフトすることによって、複数のコーディングツリーユニットの前記コーディングツリーユニットを符号化するように構成でき、第1の近傍の8つの隣接するコーディングツリーユニットの前記第2のコーディングツリーユニットが利用できない場合、第2の近傍の前記別の8つの隣接するコーディングツリーユニットが前記第2のコーディングツリーユニットに隣接している。
【0358】
同様に、実施形態では、8つの隣接するコーディングツリーユニットは、例えば、第1の近傍であり得、データデコーダ170は、例えば、第2の近傍の別の8つの隣接するコーディングツリーユニットの第3のコーディングツリーユニットを、第1の近傍の8つの隣接するコーディングツリーユニットの第2のコーディングツリーユニットにシフトすることによって、画像内に位置する複数のコーディングツリーユニットの前記コーディングツリーユニットを復号するように構成でき、第1の近傍の8つの隣接するコーディングツリーユニットの前記第2のコーディングツリーユニットが利用できない場合、第2の近傍の前記別の8つの隣接するコーディングツリーユニットが前記第2のコーディングツリーユニットに隣接している。
【0359】
さらには、符号化されたビデオ信号が符号化された画像データと指示データを含む、画像を符号化する符号化されたビデオ信号が提供され、画像は複数のコーディング領域に分割され、複数のコーディング領域の各コーディング領域は画像内に位置し、複数のコーディング領域のそれぞれは、画像内に位置する複数のコーディングツリーユニットの1つまたは複数のコーディングツリーユニットを含み、画像は、複数のコーディング領域に依存して符号化され、指示データは、複数のコーディング領域に関する情報を含み、複数のコーディング領域の1つまたは複数のコーディング領域は、複数のコーディングツリーユニットの2つまたはそれより多いコーディングツリーユニットを含み、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域は、前記コーディング領域の2つまたはそれより多いコーディングツリーユニットについてコーディング順序を示し、画像は、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に依存して符号化され、指示データは、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域のコーディング順序に関する情報を含む。
【0360】
実施形態によれば、複数のコーディング領域の各コーディング領域は、画像内で長方形に延び、複数のコーディング領域のそれぞれの1つまたは複数のコーディングツリーユニットの各コーディングツリーユニットは、画像内で長方形に延びる。
【0361】
実施形態では、複数のコーディングツリーユニットのそれぞれは、画像内に水平な位置を有し、画像内に垂直な位置を有し、ここで、複数のコーディング領域の第1のコーディング領域は、複数のコーディング領域の異なる第2のコーディング領域の異なる第2のコーディングツリーユニットの第2の垂直な位置と同一である第1の垂直な位置を有する第1のコーディングツリーユニットを含み、第1のコーディング領域の第3のコーディングツリーユニットは、第2のコーディング領域の他のいずれかのコーディングツリーユニットの垂直な位置とは異なる第3の垂直な位置を有し、第2のコーディング領域の第4のコーディングツリーユニットは、第1のコーディング領域の他のいずれかのコーディングツリーユニットの垂直な位置と異なる第4の垂直な位置を有する、または複数のコーディング領域の第1のコーディング領域は、複数のコーディング領域の異なる第2のコーディング領域の異なる第2のコーディングツリーユニットの第2の水平な位置と同一である第1の水平な位置を有する第1のコーディングツリーユニットを含み、第1のコーディング領域の第3のコーディングツリーユニットは、第2のコーディング領域の他のいずれかのコーディングツリーユニットの水平な位置とは異なる第3の水平な位置を有し、第2のコーディング領域の第4のコーディングツリーユニットは、第1のコーディング領域の他のいずれかのコーディングツリーユニットの水平な位置とは異なる第4の水平な位置を有する。
【0362】
実施形態によれば、複数のコーディング領域の各コーディング領域は、前記コーディング領域の位置、幅、および高さを含む空間特性を示し得、前記コーディング領域の幅および高さは、前記コーディング領域の長方形の延在に依存し、前記コーディング領域の位置は、画像内の前記コーディング領域の位置に依存する。
【0363】
複数のコーディング領域のうちの第1の1つの第1の高さは、複数のコーディング領域のうちの第2の1つの第2の高さとは異なる、または複数のコーディング領域のうちの第1の1つの第1の幅は、複数のコーディング領域のうちの第2の1つの第2の幅とは異なり得る。
実施形態によれば、指示は、例えば、複数のコーディング領域の各コーディング領域の空間特性に関する情報を含み得る。
実施形態では、指示データは、例えば、複数のコーディング領域の各コーディング領域の位置、幅、および高さを含み得る。
【0364】
実施形態によれば、複数のコーディング領域のそれぞれの画像部分のイメージデータは、複数のコーディング領域の他のいずれかのコーディング領域の画像部分のイメージデータを符号化することとは独立して符号化され、符号化されたビデオ信号内の符号化された画像データを取得し得る。
【0365】
実施形態では、画像部分は、例えば、複数のコーディング領域の各コーディング領域内の画像部分のイメージデータを符号化して符号化された画像データを取得することにより、画像部分が符号化され、複数のコーディング領域のうちの少なくとも1つの画像部分のイメージデータは、複数のコーディング領域のうちの前記少なくとも1つのイメージデータを符号化することが、複数のコーディング領域のうちの少なくとも別の1つの画像データを符号化することに依存するように、符号化されたビデオ信号内に符号化され得る。
実施形態によれば、符号化されたビデオ信号は、例えば、ビットストリームを含み得、ビットストリームは、符号化された画像データおよび指示データを含む。
【0366】
実施形態では、指示データは、例えば、左上のコーディングツリーユニットのアドレスが指定されているかどうかに関する各コーディング領域の情報を含み得る。
【0367】
実施形態によれば、指示データは、例えば、複数のコーディング領域の数または複数のコーディング領域の数から1を引いた数、または複数のコーディング領域の数から2を引いた数に関する情報を含み得る。
【0368】
実施形態では、指示データは、例えば、複数のコーディング領域のうちの1つが複数のコーディング領域のうちの別の1つに依存するかどうかを、複数のコーディング領域のうちの前記別の1つに続く複数のコーディング領域のうちの前記1つについて示すことができる。
【0369】
実施形態によれば、指示データは、例えば、複数のスライスのうちの正確に1つのスライスが、複数のコーディング領域のうちの正確に1つのコーディング領域に割り当てられているかどうかを示し得る。
【0370】
実施形態では、指示データは、例えば、指示データが、複数のコーディング領域の1つまたは複数のコーディングツリーユニットのそれぞれの中でスキャンする方法に関する情報を含むかどうかを示すことができる。
【0371】
実施形態によれば、指示データは、例えば、複数のコーディング領域の1つまたは複数のコーディングツリーユニットのそれぞれの中でスキャンする方法を示すことができる。
【0372】
実施形態では、指示データは、例えば、複数のコーディング領域のそれぞれについて、コーディング領域が複数のコーディングツリーユニットを含むかどうかを示すことができる。
【0373】
実施形態によれば、指示データは、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンが左端のコーディングツリーユニットで開始されるか、またはコーディングツリーユニットスキャンが右端のコーディングツリーユニットで開始されるかを示すことができる。
【0374】
実施形態では、指示データは、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンがコーディング領域の上部のコーディングツリーユニット行で開始されるかどうか、またはコーディングツリーユニットスキャンがコーディング領域の下部コーディングツリーユニット行で開始されるかを示すことができる。
【0375】
実施形態では、指示データは、例えば、複数のコーディング領域のうちの1つについて、コーディングツリーユニットスキャンが水平方向に開始されるか、またはコーディングツリーユニットスキャンが垂直方向に開始されるかを示すことができる。
【0376】
実施形態によれば、指示データは、例えば、複数のコーディング領域の少なくとも1つが複数のコーディング領域の別の1つを囲むかどうか、または複数のコーディング領域のいずれもコーディング領域の別の1つを囲まないかどうかを示す非連続情報を示すことができる。
【0377】
実施形態によれば、指示データは、例えば、複数のコーディング領域のうちの1つについて、コーディング領域の1つ内に水平方向に配置されたコーディングツリーユニットの数を指定するコーディングツリーユニットのコーディング領域の幅を示すことができる。
【0378】
実施形態では、指示データは、例えば、複数のコーディング領域のうちの1つについて、コーディング領域の1つ内に垂直方向に配置されるいくつかのコーディングツリーユニットを指定するコーディングツリーユニット内のコーディング領域の高さを示すことができる。
【0379】
実施形態によれば、指示データは、例えば、複数のコーディング領域のコーディング領域について、前記コーディング領域内の水平方向の最後のコーディングツリーユニットが、前記コーディングツリーユニットに水平方向に先行する前記コーディング領域の別のコーディングツリーユニットよりも小さいかどうかを示すことができる。
【0380】
特定の実施形態では、前記コーディング領域は、例えば、水平方向の複数の最後のコーディングツリーユニットを含み得、水平方向の前記最後のコーディングツリーユニットは、水平方向の前記複数の最後のコーディングツリーユニットの1つである。前記コーディング領域内の水平方向の前記最後のコーディングツリーユニットが、水平方向の前記最後のコーディングツリーユニットに先行する前記コーディング領域の前記別のコーディングツリーユニットよりも小さい場合、水平方向の複数の最後のコーディングツリーユニットのそれぞれは、例えば、同じ幅を有することができる。
【0381】
実施形態では、指示データは、例えば、複数のコーディング領域のコーディング領域について、前記コーディング領域内の垂直方向の最後のコーディングツリーユニットが、前記コーディングツリーユニットに垂直方向に先行する前記コーディング領域の別のコーディングツリーユニットよりも小さいかどうかを示すことができる。
【0382】
特定の実施形態では、前記コーディング領域は、例えば、垂直方向の複数の最後のコーディングツリーユニットを含み得、垂直方向の前記最後のコーディングツリーユニットは、垂直方向の前記複数の最後のコーディングツリーユニットの1つである。前記コーディング領域内の垂直方向の前記最後のコーディングツリーユニットが、垂直方向の前記最後のコーディングツリーユニットに先行する前記コーディング領域の前記別のコーディングツリーユニットよりも小さい場合、垂直方向の複数の最後のコーディングツリーユニットのそれぞれは、例えば、同じ高さを有することができる。
【0383】
実施形態では、指示データは、コーディング領域について、前記コーディング領域の1つまたは複数のコーディングツリーユニットの1つを示す開始アドレスが示されているかどうか、または前記コーディング領域の1つまたは複数のコーディングツリーユニットの前記1つを示す開始アドレスが示されていないかどうかを示す。
【0384】
実施形態によれば、指示データは、例えば、画像を1回または複数回分割することによって、画像を1回または複数回分割して複数のコーディング領域を取得する方法を示すことができる。
実施形態では、指示データは、例えば、複数のコーディング領域分割位置を示すことができる。
実施形態によれば、指示データは、例えば、複数のコーディング領域分割位置を、順序付けられたシーケンスとして示すことができる。
【0385】
実施形態では、指示データが、例えば、複数のコーディング領域分割位置を複数のコーディング領域分割位置値として示し得、複数のコーディング領域分割位置値のそれぞれは、画像の幅に依存するか、または画像の高さに依存する。
【0386】
実施形態によれば、指示データは、例えば、画像を1回または複数回階層的に分割することによって、画像を1回または複数回階層的に分割して複数のコーディング領域を取得する方法を示すことができる。
【0387】
実施形態では、指示データは、例えば、1つまたは複数のコーディング領域のコーディング領域に対する1つまたは複数の領域列停止フラグを含むことができ、1つまたは複数のコーディング領域のコーディング領域の領域列停止フラグが停止値に設定されている場合、前記領域列停止フラグは、例えば、前記コーディング領域の幅を示し得る。または、指示データは、例えば、1つまたは複数のコーディング領域のコーディング領域に対する1つまたは複数の領域ライン停止フラグを含むことができ、1つまたは複数のコーディング領域のコーディング領域の領域ライン停止フラグが停止値に設定されている場合、前記領域ライン停止フラグは、例えば、前記コーディング領域の高さを示し得る。
【0388】
実施形態によれば、指示データは、例えば、明示的シグナリングモードがアクティブであるかどうか、または明示的シグナリングモードが非アクティブであるかどうかを示すことができる。明示的シグナリングモードがアクティブであり、コーディング領域の1つまたは複数のコーディングツリーユニットのコーディングツリーユニットが画像の画像境界に位置する場合、指示データは、例えば、前記コーディングツリーユニットの領域列停止フラグおよび領域ライン停止フラグの少なくとも1つを含み得る。明示的シグナリングモードが非アクティブであり、コーディング領域の1つまたは複数のコーディングツリーユニットの前記コーディングツリーユニットが画像の前記画像境界に位置する場合、指示データは、前記コーディングツリーユニットの領域列停止フラグを含まない、および/または前記コーディングツリーユニットの領域ライン停止フラグを含まない。
【0389】
実施形態によれば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域のコーディング順序は、ラスタースキャンに依存し、指示データが、例えば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域を符号化するためにラスタースキャンが使用されたことを示すことができる情報を含む。
【0390】
実施形態では、指示データが、例えば、2つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各コーディング領域を符号化するために対角スキャンが使用されたことを示すことができる情報を含む。
【0391】
実施形態では、指示データが、例えば、5つまたはそれより多いコーディングツリーユニットを含む1つまたは複数のコーディング領域の各前記領域を符号化するためにzスキャンが使用されたことを示すことができる。
実施形態では、指示データは、例えば、1つまたは複数のスキャン方向を含むスキャン順序を示し得る。
【0392】
実施形態によれば、例えば、指示データは、例えば、1つまたは複数のスキャン方向の選択されたスキャン方向を示すことができるインデックスを示すことができる。
実施形態では、指示データは、コード化されたビデオシーケンスのエラーの回復力に関する情報を含む。
【0393】
実施形態によれば、エラーの回復力に関する情報は、例えば、コード化されたビデオシーケンスのエラーの回復力に関する3つまたはそれより多い異なる状態のうちの1つを示し得る。
【0394】
実施形態では、3つまたはそれより多い異なる状態の第1の状態は、例えば、アクセスユニットがエラーの回復力がないことを示し得る。3つまたはそれより多い異なる状態の第2の状態は、例えば、画像のパラメータセットの第1の複数のアクセスユニットにはエラーの回復力がないことを示し得る。3つまたはそれより多い異なる状態の第3の状態は、例えば、シーケンスパラメータセットの第2の複数のアクセスユニットにはエラーの回復力がないことを示し得る。
【0395】
別の実施形態では、エラーの回復力に関する情報は、例えば、コード化されたビデオシーケンスのエラーの回復力に関する4つまたはそれより多い異なる状態のうちの1つを示し得る。4つまたはそれより多い異なる状態の第1の状態は、例えば、エラーの回復力が画像レベルで損なわれ、複数画像レベルで損なわれ、シーケンスレベルで損なわれることを示し得る。4つまたはそれより多い異なる状態の第2の状態は、例えば、エラーの回復力が画像レベルで損なわれ、複数画像レベルで損なわれるが、シーケンスレベルでは損なわれないことを示し得る。4つまたはそれより多い異なる状態の第3の状態は、例えば、エラーの回復力が画像レベルで損なわれるが、エラーの回復力が複数画像レベルで損なわれず、シーケンスレベルで損なわれないことを示し得る。また、4つまたはそれより多い異なる状態の第4の状態は、例えば、エラーの回復力が画像レベルで損なわれず、複数画像レベルで損なわれず、シーケンスレベルで損なわれないことを示し得る。
【0396】
いくつかの態様が装置の文脈で説明されたが、これらの態様は、対応する方法の説明も表すことは明らかであり、ブロックまたはデバイスは、方法ステップまたは方法ステップの特徴に対応する。同様に、方法ステップの文脈で説明された態様は、対応する装置の対応するブロックまたはアイテムまたは機能の説明も表す。方法ステップの一部またはすべては、例えば、マイクロプロセッサ、プログラム可能なコンピュータ、または電子回路などのハードウェア装置によって(または使用して)実行することができる。いくつかの実施形態では、最も重要な方法ステップの1つまたは複数は、そのような装置によって実行され得る。
【0397】
特定の実装要件に依存して、本発明の実施形態は、ハードウェアまたはソフトウェアで、または少なくとも部分的にハードウェアで、または少なくとも部分的にソフトウェアで実装することができる。実装は、フロッピーディスク、DVD、ブルーレイ、CD、ROM、PROM、EPROM、EEPROM、フラッシュメモリなどのデジタル記憶媒体を使用して実行でき、電子的に読み取り可能な制御信号が格納されており、それぞれの方法が実行されるように、プログラム可能なコンピュータシステムと協働する(または協働することができる)。したがって、デジタル記憶媒体は、コンピュータ読み取り可能であり得る。
【0398】
本発明によるいくつかの実施形態は、本明細書に記載の方法の1つが実行されるように、プログラム可能なコンピュータシステムと協働することができる電子的に読み取り可能な制御信号を有するデータキャリアを含む。
【0399】
一般に、本発明の実施形態は、プログラムコードを伴うコンピュータプログラム製品として実装することができ、プログラムコードは、コンピュータプログラム製品がコンピュータで実行されるときに方法の1つを実行するように動作する。プログラムコードは、例えば、機械可読キャリアに格納されてもよい。
他の実施形態は、機械可読キャリアに格納された、本明細書に記載された方法の1つを実行するためのコンピュータプログラムを含む。
【0400】
言い換えれば、本発明の方法の実施形態は、したがって、コンピュータプログラムがコンピュータで実行されるときに、本明細書で説明される方法の1つを実行するためのプログラムコードを有するコンピュータプログラムである。
【0401】
したがって、本発明の方法のさらなる実施形態は、記録される本明細書に記載の方法の1つを実行するためのコンピュータプログラムを含むデータキャリア(またはデジタル記憶媒体、またはコンピュータ可読媒体)である。データキャリア、デジタル記憶媒体、または記録された媒体は、通常、有形および/または非一時的である。
【0402】
したがって、本発明の方法のさらなる実施形態は、本明細書で説明される方法の1つを実行するためのコンピュータプログラムを表すデータストリームまたは一連の信号である。データストリームまたは一連の信号は、例えば、インターネットなどのデータ通信接続を介して転送されるように構成されてもよい。
【0403】
さらなる実施形態は、本明細書に記載された方法の1つを実行するように構成または適合された処理手段、例えば、コンピュータまたはプログラマブル論理デバイスを含む。
さらなる実施形態は、本明細書に記載される方法の1つを実行するためのコンピュータプログラムがインストールされているコンピュータを含む。
【0404】
本発明によるさらなる実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムを(例えば、電子的または光学的に)受信機に転送するように構成された装置またはシステムを含む。受信機は、例えば、コンピュータ、モバイルデバイス、メモリデバイスなどであり得る。装置またはシステムは、例えば、コンピュータプログラムを受信機に転送するためのファイルサーバを含み得る。
【0405】
いくつかの実施形態では、プログラマブル論理デバイス(例えば、フィールドプログラマブルゲートアレイ)を使用して、本明細書に記載されている方法の機能の一部またはすべてを実行することができる。いくつかの実施形態では、フィールドプログラマブルゲートアレイは、本明細書で説明される方法の1つを実行するために、マイクロプロセッサと協働し得る。一般に、方法は、好ましくは、任意のハードウェア装置によって実行される。
【0406】
本明細書で説明する装置は、ハードウェア装置を使用して、またはコンピュータを使用して、またはハードウェア装置とコンピュータの組合せを使用して、実装することができる。
【0407】
本明細書で説明する方法は、ハードウェア装置を使用して、またはコンピュータを使用して、またはハードウェア装置とコンピュータの組合せを使用して、実行することができる。
【0408】
上記の実施形態は、本発明の原理を単に例示するものである。本明細書に記載の配置および細部の修正および変形は、当業者には明らかであることが理解される。したがって、本明細書の実施形態の記載および説明として提示される特定の細部によってではなく、直近の特許クレームの範囲によってのみ制限されることが意図されている。
【0409】
参考文献
[1] ISO/IEC, ITU-T. High efficiency video coding. ITU-T Recommendation H.265 | ISO/IEC 23008 10 (HEVC), edition 1, 2013; edition 2, 2014.
【0410】
[2] European Patent Application, Application No. EP 18165249.6; filed on 29 March 2018.