IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テレフオンアクチーボラゲット エル エム エリクソン(パブル)の特許一覧

特許7313385ビデオコーディングにおけるサブタイルを含むタイルパーティション
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-13
(45)【発行日】2023-07-24
(54)【発明の名称】ビデオコーディングにおけるサブタイルを含むタイルパーティション
(51)【国際特許分類】
   H04N 19/70 20140101AFI20230714BHJP
【FI】
H04N19/70
【請求項の数】 22
(21)【出願番号】P 2020570501
(86)(22)【出願日】2019-06-20
(65)【公表番号】
(43)【公表日】2021-10-14
(86)【国際出願番号】 EP2019066400
(87)【国際公開番号】W WO2019243539
(87)【国際公開日】2019-12-26
【審査請求日】2021-03-05
(31)【優先権主張番号】62/688,301
(32)【優先日】2018-06-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】598036300
【氏名又は名称】テレフオンアクチーボラゲット エルエム エリクソン(パブル)
(74)【代理人】
【識別番号】100109726
【弁理士】
【氏名又は名称】園田 吉隆
(74)【代理人】
【識別番号】100161470
【弁理士】
【氏名又は名称】冨樫 義孝
(74)【代理人】
【識別番号】100194294
【弁理士】
【氏名又は名称】石岡 利康
(74)【代理人】
【識別番号】100194320
【弁理士】
【氏名又は名称】藤井 亮
(72)【発明者】
【氏名】ショバーリ, リキャルド
(72)【発明者】
【氏名】ダムガニアン, ミトラ
(72)【発明者】
【氏名】エンホーン, ジャック
(72)【発明者】
【氏名】ペッテション, マルティン
【審査官】鉢呂 健
(56)【参考文献】
【文献】国際公開第2017/172783(WO,A1)
【文献】SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video,Recommendation ITU-T H.265 (12/2016) High efficiency video coding,ITU-T,2017年03月16日,pp. 83-84, 352,<URL:https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-H.265-201612-S!!PDF-E&type=items>
【文献】SJOBERG, Rickard et al.,Flexible Tiles,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Ljubljana, SI, 10-18 July 2018, [JVET-K0260-v2],JVET-K0260 (version 2),ITU-T,2018年07月14日,<URL:http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET-K0260-v2.zip>: JVET-K0260-v2.docx: pp. 1-10
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ピクチャを復号する方法(30)であって、
複数のコード化セグメントと、前記複数のコード化セグメントに関連付けられたパラメータセットからの情報とを含むビットストリーム(12)を受信する(32)ことと、
前記パラメータセットからの前記情報を使用して、
前記ピクチャを複数のピクチャセグメントに分割する空間パーティション構造であって、
各ピクチャセグメントは、前記複数のコード化セグメントのうちの1つに対応し、1つまたは複数のサブセグメントを含み、
少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含み、
各サブセグメントは、複数のユニットを含み、各ユニットは、前記ユニットのユニットサイズに対応する空間サイズの前記ピクチャの領域に対応する、
空間パーティション構造と、
前記空間パーティション構造のサブセグメントのサブセグメントサイズと、
前記空間パーティション構造の前記ユニットの前記ユニットサイズと、
を導出する(34)ことと、
前記空間パーティション構造に従って、前記ビットストリームで受信された前記複数のコード化セグメントを復号すること(38)であって、前記ピクチャセグメントのうちの所与の1つの第2のユニット(U)についてのイントラ予測モードの導出は、前記ピクチャセグメントのうちの前記所与の1つの第1のユニット(U)についての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立している、前記複数のコード化セグメントを復号すること(38)と
を含む、方法(30)。
【請求項2】
前記第1のユニットの量子化パラメータ値に基づいて、他のピクチャセグメントのユニットの任意の量子化パラメータ値から独立して、前記第2のユニットの量子化パラメータ値を導出すること(36)をさらに含む、請求項1に記載の方法。
【請求項3】
前記空間パーティション構造を導出することは、前記ビットストリームを送るエンコーダが、前記ピクチャを複数のピクチャセグメントに分割するためにフレキシブルパーティショニングを使用しているというインジケーションを受信したこと(62)に応答して、前記空間パーティション構造を導出することを含む、請求項1または2に記載の方法。
【請求項4】
前記空間パーティション構造を導出することは、前記ビットストリームを送るエンコーダがサブセグメントを使用しているというインジケーション(181)を受信したことに応答して、前記空間パーティション構造を導出することを含む、請求項1または2に記載の方法。
【請求項5】
前記ビットストリームにおいて受信された前記複数のコード化セグメントを復号することは、あらかじめ規定された復号順序に従って、各ピクチャセグメントを復号すること(66)を含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
サブセグメントサイズを導出することは、第1のサブセグメントの第1のサブセグメントサイズ、および第2のサブセグメントの第2のサブセグメントサイズを導出することを含み、前記第1のサブセグメントサイズおよび前記第2のサブセグメントサイズが異なる、請求項1から5のいずれか一項に記載の方法。
【請求項7】
サブセグメントサイズに基づいて、セグメントの空間サイズを導出することをさらに含む、請求項1から6のいずれか一項に記載の方法。
【請求項8】
ピクチャを符号化する方法(20)であって、
ピクチャを複数のピクチャセグメントに分割する空間パーティション構造を規定すること(22)であって、
各ピクチャセグメントは、1つまたは複数のサブセグメントを含み、少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含み、
各サブセグメントは、複数のユニットを含み、各ユニットは、前記ピクチャの領域に対応する、
空間パーティション構造を規定すること(22)と、
複数のコード化セグメントを生成するために、前記空間パーティション構造に従って、前記ピクチャセグメントを符号化すること(28)であって、各コード化セグメントは、前記空間パーティション構造の前記ピクチャセグメントのうちの1つに対応し、各コード化セグメントは、前記ピクチャセグメントのうちの所与の1つの第2のユニットについてのイントラ予測モードの導出が、前記ピクチャセグメントの前記所与の1つの第1のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立しているように独立している、前記ピクチャセグメントを符号化すること(28)と、
前記複数のコード化セグメントと、前記ピクチャを前記ピクチャセグメントに分割するために使用される前記空間パーティション構造を示す情報を含む、前記複数のコード化セグメントに関連付けられたパラメータセットとを含むビットストリーム(12)を生成することであって、前記情報は、前記空間パーティション構造のユニットのユニットサイズと、前記空間パーティション構造のサブセグメントのサブセグメントサイズとを示す、ビットストリーム(12)を生成することと、
前記ビットストリームを送信すること(29)と
を含む、方法(20)。
【請求項9】
ビットストリームを生成することは、前記空間パーティション構造がサブセグメントを含むというインジケーション(45)を含むように前記ビットストリームを生成することをさらに含む、請求項8に記載の方法。
【請求項10】
第1のピクチャセグメントの縁部は、2つ以上の隣接するピクチャセグメントの対応する縁部に接する、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記情報は、前記空間パーティション構造の第1のサブセグメントの第1のサブセグメントサイズと、前記空間パーティション構造の第2のサブセグメントの第2のサブセグメントサイズとを示し、前記第1のサブセグメントサイズと前記第2のサブセグメントサイズとは異なる、請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記情報は、前記空間パーティション構造のサブセグメントの高さ、幅、および面積のうちの1つを、前記空間パーティション構造のユニットの高さ、幅、および面積の各々の整数倍として示す、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記情報は、前記空間パーティション構造のすべての前記サブセグメントについての単一のサブセグメントサイズを含む、請求項1から11のいずれか一項に記載の方法。
【請求項14】
前記空間パーティション構造の各サブセグメントは、前記ピクチャの長方形領域および前記ピクチャの正方形領域のうちの1つに対応する、請求項1から6、および8から11のいずれか一項に記載の方法。
【請求項15】
前記空間パーティション構造は、各ピクチャセグメントのコーナーを、ピクチャセグメントごとに、開始コーナーおよび終了コーナーの対応する値を規定するグリッド上に配列することによって、前記ピクチャセグメントを分割する、請求項1から6、および8から11のいずれか一項に記載の方法。
【請求項16】
前記グリッドは、前記空間パーティション構造のサブセグメントに関して規定される、請求項15に記載の方法。
【請求項17】
デコーダ(450)であって、
複数のコード化セグメントと、前記複数のコード化セグメントに関連付けられたパラメータセットからの情報とを含むビットストリームを受信する(32)ように設定された通信回路(535、545)と、
命令(530)を記憶するように設定されたメモリ(540)と、
前記メモリおよび前記通信回路に動作可能に接続され、前記メモリに記憶された前記命令を実行するように設定された処理回路(510)とを備え、それによって、前記デコーダは、
前記パラメータセットからの前記情報を使用して、
ピクチャを複数のピクチャセグメントに分割する空間パーティション構造であって、
各ピクチャセグメントは、前記複数のコード化セグメントのうちの1つに対応し、1つまたは複数のサブセグメントを含み、
少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含み、
各サブセグメントは、複数のユニットを含み、各ユニットは、前記ユニットのユニットサイズに対応する空間サイズの前記ピクチャの領域に対応する、
空間パーティション構造と、
前記空間パーティション構造のサブセグメントのサブセグメントサイズと、
前記空間パーティション構造の前記ユニットの前記ユニットサイズと、
を導出する(34)ことと、
前記空間パーティション構造に従って、前記ビットストリームで受信された前記複数のコード化セグメントを復号すること(38)であって、前記ピクチャセグメントのうちの所与の1つの第1のユニットについてのイントラ予測モードの導出は、前記ピクチャセグメントのうちの前記所与の1つの第2のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立している、前記複数のコード化セグメントを復号すること(38)と
を行うように設定されている、デコーダ(450)。
【請求項18】
請求項2から7、請求項1から7のいずれか一項を引用する場合の10から13、および請求項1から6のいずれか一項を引用する場合の請求項14または15、のいずれか一項に記載の方法を実施するようにさらに設定されている、請求項17に記載のデコーダ。
【請求項19】
デコーダ(450)内の処理回路(510)によって実行されると、前記デコーダに、請求項1から7、請求項1から7のいずれか一項を引用する場合の10から13、および請求項1から6のいずれか一項を引用する場合の請求項14または15、のいずれか一項に記載の方法を実行させる実行可能命令を含む、コンピュータプログラム(530)。
【請求項20】
エンコーダ(400)であって、
命令(520)を記憶するように設定されたメモリ(515)と、
前記メモリに動作可能に接続され、前記メモリに記憶された前記命令を実行するように設定された処理回路(500)であって、それによって、前記エンコーダは、
ピクチャをピクチャセグメントに分割する空間パーティション構造を規定すること(22)であって、各ピクチャセグメントは、1つまたは複数のサブセグメントを含み、少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含み、前記空間パーティション構造の各サブセグメントは、複数のユニットを含み、各ユニットは、前記ピクチャの領域に対応する、空間パーティション構造を規定すること(22)と、
複数のコード化セグメントを生成するために、前記空間パーティション構造に従って、前記ピクチャセグメントを符号化すること(24)であって、各コード化セグメントは、前記空間パーティション構造の前記ピクチャセグメントのうちの1つに対応し、各コード化セグメントは、前記ピクチャセグメントのうちの所与の1つの第2のユニットについての任意のイントラ予測モードの任意の導出が、前記ピクチャセグメントの前記所与の1つの第1のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立しているように独立している、前記ピクチャセグメントを符号化すること(24)と、
前記複数のコード化セグメントと、前記ピクチャを前記ピクチャセグメントに分割するために使用される前記空間パーティション構造を示す情報を含む、前記複数のコード化セグメントに関連付けられたパラメータセットとを含むビットストリームを生成することであって、前記情報は、前記空間パーティション構造のユニットのサイズと、前記空間パーティション構造のサブセグメントのサイズとを示す、ビットストリームを生成することと、
前記ビットストリームを送信(29)することと、
を行うように設定されている、処理回路(500)と
を備える、エンコーダ(400)。
【請求項21】
請求項9、および請求項8または9を引用する場合の請求項10から16、のいずれか一項に記載の方法を実施するようにさらに設定されている、請求項20に記載のエンコーダ。
【請求項22】
エンコーダ内の処理回路によって実行されると、前記エンコーダに、請求項8、9、および請求項8または9を引用する場合の請求項10から16、のいずれか一項に記載の方法を実行させる実行可能命令を含む、コンピュータプログラム(520)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、ピクチャ符号化および復号の技法に関し、より詳細には、サブセグメントを含むピクチャセグメントの符号化および復号に関する。
【背景技術】
【0002】
高効率ビデオコーディング(HEVC)は、空間的予測技法と時間的予測技法の両方を利用する、ITU-Tとムービングピクチャエキスパートグループ(MPEG)の両方によって標準化されたブロックベースのビデオコーデックである。空間的予測は、空間的冗長性を低減し、現在のピクチャの同じフレーム内からのイントラ(I)予測を使用して達成される。時間的予測は、時間的冗長性を低減し、以前に復号された参照ピクチャを使用して、ブロックレベルでインター(P)または双方向インター(B)予測を使用して達成される。しかしながら、特定のタイプの予測技法にかかわらず、「残差」と呼ばれる、元のピクセルデータと予測されたピクセルデータとの間の結果として生じる差は、周波数領域に変換され、量子化される。量子化パラメータ(QP)によってそのレベルが決定される変換された残差を量子化することは、ビットレートとビデオの品質との間のトレードオフの制御を容易にする。
【0003】
次いで、変換され量子化された残差は、必要な予測パラメータとともにデコーダに送信される前にエントロピーコード化される。同じくエントロピー符号化される予測パラメータは、予測モードおよび動きベクトルを含む。受信すると、デコーダは、エントロピー復号、逆量子化、および逆変換を実行して、残差を取得する。次いで、デコーダは、イントラ予測またはインター予測技法を使用して、残差から画像を再構築する。
【0004】
MPEGとITU-Tの両方は、Joint Video Exploratory Team(JVET)内のHEVCの後継に取り組んでいる。このビデオコーデックの名前は、Versatile Video Coding(VCC)である。HEVCビデオコーディング規格は、ピクチャを(たとえば、スライスまたはタイルに)分割するための異なるツールを含む。たとえば、タイルは、ピクチャを空間的に独立した長方形の領域に分割する。しかしながら、パーティショニングは、常に、それぞれ左から右に、および上から下に、ピクチャ全体に及ぶ。ピクチャパラメータセット(PPS)は、コーディングツリーユニットに関して行の太さおよび列の幅を指定するために使用される。
【発明の概要】
【0005】
本明細書の実施形態は、たとえば、ピクチャのコード化セグメントの送信のコストを低減するパーティショニングなど、フレキシブルなパーティショニングを使用したピクチャの符号化および復号に有用である。たとえば、1つまたは複数の実施形態は、パーティション構造の各ピクチャセグメントは、サブセグメントの各々が複数のユニットを含む1つまたは複数のサブセグメントを含むパーティション構造を可能にする。サブセグメントとユニットの両方のサイズを提供することによって、サブセグメントを含むピクチャセグメントのサイズを、より少ないコードワードで表すことができ、それによって、対応するコード化セグメントの送信のコストを節約する。
【0006】
1つまたは複数の実施形態は、ピクチャを復号する方法を含む。この方法は、複数のコード化セグメントと、複数のコード化セグメントに関連付けられたパラメータセットからの情報とを含むビットストリームを受信することを含む。この方法は、ビットストリーム内の情報から、ピクチャを複数のピクチャセグメントに分割するパーティション構造を導出することをさらに含む。各ピクチャセグメントは、複数のコード化セグメントのうちの1つに対応し、1つまたは複数のサブセグメントを含む。さらに、少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含む。パーティション構造の各サブセグメントは、複数のユニットと、複数のユニットの各々とをさらに含み、各ユニットは、ピクチャの領域に対応する。この方法は、ビットストリーム内の情報から、パーティション構造のサブセグメントのサイズと、パーティション構造のユニットのサイズとを導出することをさらに含む。次いで、この方法は、パーティション構造に従って、ビットストリームで受信された複数のコード化セグメントを復号することをさらに含む。ピクチャセグメントのうちの所与の1つの第2のユニットについての任意のイントラ予測モードの導出は、ピクチャセグメントのうちの所与の1つの第1のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立している。
【0007】
本開示の1つまたは複数の実施形態はまた、ピクチャを復号するための方法と併せてまたは別に使用することができるピクチャを符号化する対応する方法も含む。一実施形態では、ピクチャを符号化する方法は、ピクチャをピクチャセグメントに分割するパーティション構造を規定することを含む。パーティション構造の各ピクチャセグメントは、1つまたは複数のサブセグメントを含み、少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含む。パーティション構造の各サブセグメントは、複数のユニットを含み、各ユニットは、ピクチャの領域に対応する。この方法は、複数のコード化セグメントを生成するために、パーティション構造に従って、ピクチャセグメントを符号化することをさらに含む。各コード化セグメントは、パーティション構造のピクチャセグメントのうちの1つに対応する。さらに、各コード化セグメントは、ピクチャセグメントのうちの所与の1つの第2のユニットについての任意のイントラ予測モードの任意の導出が、ピクチャセグメントのうちの所与の1つの第1のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立しているように独立している。この方法は、複数のコード化セグメントと、ピクチャをピクチャセグメントに分割するために使用されるパーティション構造を示す情報とを含むビットストリームを生成することをさらに含む。この情報は、パーティション構造のユニットのサイズと、パーティション構造のサブセグメントのサイズとを示す。
【0008】
本開示の1つまたは複数の実施形態はまた、複数のコード化セグメントと、複数のコード化セグメントに関連付けられたパラメータセットからの情報とを含むビットストリームを受信するように設定されたデコード回路も提供する。デコーダ回路は、ビットストリーム内の情報から、ピクチャを複数のピクチャセグメントに分割するパーティション構造を導出するようにさらに設定され、各ピクチャセグメントは、複数のコード化セグメントのうちの1つに対応し、1つまたは複数のサブセグメントを含み、少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含む。さらに、各サブセグメントは、複数のユニットを含み、各ユニットは、ピクチャの領域に対応する。デコーダ回路は、ビットストリーム内の情報から、パーティション構造のサブセグメントのサブセグメントサイズと、パーティション構造のユニットのユニットサイズとを導出するようにさらに設定される。次いで、デコーダ回路は、パーティション構造に従って、ビットストリームで受信された複数のコード化セグメントを復号するようにさらに設定される。これらの実施形態では、ピクチャセグメントのうちの所与の1つの第2のユニットについてのイントラ予測モードの導出は、ピクチャセグメントのうちの所与の1つの第1のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立している。
【0009】
本開示の1つまたは複数の実施形態はまた、複数のコード化セグメントと、複数のコード化セグメントに関連付けられたパラメータセットからの情報とを含むビットストリームを受信するように設定された通信回路と、命令を記憶するように設定されたメモリと、メモリおよび通信回路に動作可能に接続された処理回路とを備えるデコーダも提供する。処理回路は、メモリに記憶された命令を実行するように設定されており、それによって、デコーダは、ビットストリーム内の情報から、ピクチャを複数のピクチャセグメントに分割するパーティション構造を導出するように設定されており、各ピクチャセグメントは、複数のコード化セグメントのうちの1つに対応し、1つまたは複数のサブセグメントを含み、少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含む。さらに、各サブセグメントは、複数のユニットを含み、各ユニットは、ピクチャの領域に対応する。命令を実行することによって、処理回路は、ビットストリーム内の情報から、パーティション構造のサブセグメントのサブセグメントサイズと、パーティション構造のユニットのユニットサイズとを導出するように、デコーダをさらに設定する。命令を実行することによって、処理回路は、パーティション構造に従って、ビットストリームで受信された複数のコード化セグメントを復号するように、デコーダをさらに設定する。これらの実施形態では、ピクチャセグメントのうちの所与の1つの第2のユニットについてのイントラ予測モードの導出は、ピクチャセグメントのうちの所与の1つの第1のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立している。
【0010】
本開示の1つまたは複数の実施形態は、ピクチャを複数のピクチャセグメントに分割するパーティション構造を規定するように設定されたエンコーダ回路をさらに提供する。各ピクチャセグメントは、1つまたは複数のサブセグメントを含み、パーティション構造の少なくとも1つのピクチャセグメントは、少なくとも2つのサブセグメントを含む。さらに、各サブセグメントは、複数のユニットを含み、各ユニットは、ピクチャの領域に対応する。エンコーダ回路は、複数のコード化セグメントを生成するために、パーティション構造に従って、ピクチャセグメントを符号化するようにさらに設定される。各コード化セグメントは、パーティション構造のピクチャセグメントのうちの1つに対応する。さらに、各コード化セグメントは、ピクチャセグメントのうちの所与の1つの第2のユニットについてのイントラ予測モードの導出が、ピクチャセグメントのうちの所与の1つの第1のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立しているように独立している。エンコーダ回路は、複数のコード化セグメントと、ピクチャをピクチャセグメントに分割し、ビットストリームを送信するために使用されるパーティション構造を示す情報とを含むビットストリームを生成するようにさらに設定される。これらの実施形態では、情報は、パーティション構造のユニットのユニットサイズと、パーティション構造のサブセグメントのサブセグメントサイズとを示す。
【0011】
本開示の1つまたは複数の実施形態は、命令を記憶するように設定されたメモリと、メモリに動作可能に接続された処理回路とを備えるエンコーダをさらに提供する。処理回路は、メモリに記憶された命令を実行するように設定され、それによって、エンコーダは、ピクチャを複数のピクチャセグメントに分割するパーティション構造を規定するように設定される。各ピクチャセグメントは、1つまたは複数のサブセグメントを含み、パーティション構造の少なくとも1つのピクチャセグメントは、1つまたは複数のサブセグメントを含む。さらに、各サブセグメントは、複数のユニットを含み、各ユニットは、ピクチャの領域に対応する。命令を実行することによって、処理回路は、複数のコード化セグメントを生成するために、パーティション構造に従って、ピクチャセグメントを符号化するようにエンコーダをさらに設定する。各コード化セグメントは、パーティション構造のピクチャセグメントのうちの1つに対応する。さらに、各コード化セグメントは、ピクチャセグメントのうちの所与の1つの第2のユニットについてのイントラ予測モードの導出が、ピクチャセグメントのうちの所与の1つの第1のユニットについての導出されたイントラ予測モードに依存し、任意の他のピクチャセグメントのユニットについての任意のイントラ予測モードから独立しているように独立している。命令を実行することによって、処理回路は、複数のコード化セグメントと、ピクチャをピクチャセグメントに分割し、ビットストリームを送信するために使用されるパーティション構造を示す情報とを含むビットストリームを生成するように、エンコーダをさらに設定する。これらの実施形態では、情報は、パーティション構造のユニットのユニットサイズと、パーティション構造のサブセグメントのサブセグメントサイズとを示す。
【図面の簡単な説明】
【0012】
図1】QTBTを使用してCTUをCUにパーティショニングする一例を示す図である。
図2】例示的なタイルパーティショニングを示す図である。
図3A-B】高解像度および低解像度タイルを含む例示的なタイリング構造を示す図である。
図4】HEVCでサポートされていないタイル構造の一例を示す図である。
図5】HEVCでサポートすることができる例示的なタイル構造を示す図である。
図6A】ユニットおよびピクチャセグメントを示す例示的なパーティショニングを示す図である。
図6B】ユニット、サブセグメント、およびピクチャセグメントを示す例示的なパーティショニングを示す図である。
図7】本開示の一実施形態による例示的なビットストリームを示す図である。
図8】本開示の一実施形態による、64個のユニットにパーティショニングされたピクチャを示す図である。
図9】本開示の一実施形態による例示的な3セグメントのパーティション構造を示す図である。
図10】本開示の一実施形態による、図8および図9に示されるパーティション構造を使用してパーティショニングされたピクチャを示す図である。
図11A-C】本開示の一実施形態による、パーティション構造に従ってパーティショニングされたピクチャを示す図であり、図11Aは、ユニットを示し、図11Bは、サブセグメントまたはサブタイルを示し、図11Cは、セグメントまたはタイルを示す図である。
図12A】本開示の第1の実施形態による、フレキシブルタイルを使用してピクチャまたはピクチャの一部を符号化するための方法を示すフロー図である。
図12B】本開示の第1の実施形態による、フレキシブルタイルを使用して符号化されたピクチャまたはピクチャの一部を復号するための方法を示すフロー図である。
図13A】本開示の一実施形態による、エンコーダがフレキシブルタイルを構築し、シグナリングする方法を示すフロー図である。
図13B】本開示の一実施形態による、デコーダがフレキシブルタイルを構文解析し、構築する方法を示すフロー図である。
図14】本開示の一実施形態による、ピクチャをパーティショニングするために10個のタイルが使用される例示的なタイルパーティションを示す図である。
図15】本開示の一実施形態による、2048×1280のサイズを有するピクチャが、26個のタイルにパーティショニングされる例示的なタイルパーティションを示す図である。
図16A】本開示の一実施形態による、ビデオビットストリームのピクチャの符号化表現を復号するためのデコーダにおいて実施される方法を示す図である。
図16B】本開示の一実施形態による、ビデオビットストリームのピクチャの表現を符号化するためのエンコーダにおいて実施される方法を示す図である。
図17A-C】本開示の一実施形態による、図14に示されるピクチャのタイルパーティションおよび対応するctu_statusビットを示す図である。
図18A】本開示の一実施形態による、タイルを構築し、シグナリングするためのエンコーダにおいて実施される方法を示すフロー図である。
図18B】本開示の一実施形態による、エンコーダによって送られたタイルを構文解析し、構築するための、デコーダにおいて実施される方法を示す図である。
図18C】本開示の一実施形態による、タイルサイズをコピーする方法を示す図である。
図19A-B】本開示の一実施形態による、タイルを構築し、シグナリングするために、それぞれエンコーダおよびデコーダによって実施される方法を示すフロー図である。
図20】本開示の一実施形態による、タイルの整数分割を示す図である。
図21A-B】本開示の一実施形態による、タイルを構築し、シグナリングするためにエンコーダによって実施される方法を示す図である。
図21C-D】本開示の一実施形態による、図21A~21Bのエンコーダによって構築され、シグナリングされたタイルを構文解析するためにデコーダによって実施される方法を示す図である。
図22A-C】本開示の一実施形態による、図14のタイル構造に対応する水平および垂直の分割線を示す図である。
図23A】本開示の一実施形態による、所与のタイル構造の水平および垂直の分割線を決定するためにエンコーダで実施される方法を示すフロー図である。
図23B】本開示の一実施形態による、対応する水平および垂直の分割線により表された所与のタイル構造を有するタイルを処理するためにデコーダにおいて実施される方法を示すフロー図である。
図24A-C】本開示の一実施形態による、例示的なタイル構造と、冗長なT字接合を除去する前後のT字接合の対応するセットとを示す図である。
図25A-B】本開示の一実施形態による、例示的なタイリング構造と、T字接合の対応するセットとを示す図である。
図26A】本開示の一実施形態による、T字接合のセットを作成するためにエンコーダで実施される方法を示すフロー図である。
図26B】本開示の一実施形態による、T字接合のセットを作成するためにデコーダにおいて実施される方法を示すフロー図である。
図27A-C】本開示の一実施形態による、例示的なタイリング構造と、開始コーナーの対応する行列と、終了コーナーの行列とを示す図である。
図28A】本開示の一実施形態による、開始コーナー行列および終了コーナー行列を作成するための、エンコーダで実施される方法を示すフロー図である。
図28B】本開示の一実施形態による、開始コーナー行列および終了コーナー行列を処理するための、デコーダで実施される方法を示すフロー図である。
図29】本開示の一実施形態による、異なるパーティション構造の複数の画像を符号化するエンコーダおよび復号するデコーダを示す例示的なシステム図である。
図30】本開示の一実施形態による、例示的なエンコーダの構成要素を示すブロック図である。
図31】本開示の一実施形態による、例示的なエンコーダの機能構成要素を示すブロック図である。
図32】本開示の一実施形態による、例示的なデコーダの構成要素を示すブロック図である。
図33】本開示の一実施形態による、例示的なデコーダの機能構成要素を示すブロック図である。
図34A】本開示の一実施形態による、パーティション構造に従って画像を符号化するエンコーダを示す図である。
図34B】本開示の一実施形態による、パーティション構造に従って画像を復号するデコーダを示す図である。
図35】本開示の一実施形態による、デコーダおよびエンコーダを備えるシステムを示す図である。
図36A-C】本開示の一実施形態による、パーティション構造に従ってパーティショニングされたピクチャを示す図であり、図36Aは、セグメントまたはタイルを示し、図36Bは、サブセグメントまたはサブタイルを示し、図36Cは、ユニットを示す図である。
【発明を実施するための形態】
【0013】
本出願は、2018年6月21日に出願された米国出願第62/688301号の優先権を主張し、その開示は、参照によりその全体が本明細書に組み込まれる。
【0014】
4分木および2分木(QTBT)構造
【0015】
前に述べたように、HEVCは、時間的予測と空間的予測の両方を利用する、ITU-TおよびMPEGによって標準化されたブロックベースのビデオコーデックである。HEVCは、各トップレベルコーディングブロック、すなわち、本明細書でコーディングツリーユニット(CTU)と呼ばれるコーディングブロックパーティショニングにおける最大ブロックが、4分木(QT)構造によってパーティショニングされ得るブロック構造を使用する。このパーティショニングは、本明細書でコーディングユニット(CU)と呼ばれるコーディングブロックパーティションを生成する。次いで、CUは、8×8ブロックサイズまでの4分木構造を有する、より小さい等しいサイズのCUに再帰的にさらにパーティショニングすることができる。
【0016】
Versatile Video Coding(VVC)の現在のバージョンのブロック構造は、HEVCにおけるブロック構造とは異なる。特に、VVCにおけるブロック構造は、4分木+2分木+3分木ブロック構造(QTBT+TT)と呼ばれる。QTBT+TTのCUは、正方形または長方形のいずれかの形状を有することができる。コーディングツリーユニット(CTU)は、最初に、HEVCの場合のように4分木構造によってパーティショニングされる。次いで、コーディングツリーユニットは、コーディングブロック(コーディングユニットまたはCUとも呼ばれる)を形成するために、バイナリ構造において垂直または水平に等しいサイズのパーティションでさらにパーティショニングされる。したがって、ブロックは、正方形または長方形のいずれかの形状を有することができる。
【0017】
4分木および2分木の深さは、ビットストリーム内のエンコーダによって設定され得る。図1には、QTBT+TTを使用してCTUを分割する一例が示されている。TTは、CUが、2つの等しいサイズのパーティションの代わりに3つのパーティションに分割されることを可能にする。これは、ピクチャ内のコンテンツ構造により良く適合するブロック構造を使用する可能性を増大させる。
【0018】
コンテキスト適応型バイナリ算術コーディング(CABAC)
コンテキスト適応型バイナリ算術コーディング(CABAC)は、HEVCおよびVVCで使用されるエントロピーコーディングツールである。CABACは、複雑さを低く保ち、より頻繁に使用されるシンボルのビットの確率のモデリングを可能にするバイナリシンボルを符号化するように設定される。コーディングモードは、一般に、局所的に良好に相関しているので、確率モデルは、局所的なコンテキストに基づいて適応的に選択される。
【0019】
スライス
HEVCにおけるスライスの概念は、ピクチャを独立してコード化されたスライスに分割し、各スライスは、CTUの単位でラスタ走査順序で読み取られる。同じピクチャのスライスに、異なるコーディングタイプを使用することができる。たとえば、スライスは、Iスライス、Pスライス、またはBスライスのいずれかとすることができる。しかしながら、スライスの主な目的は、データが失われた場合に再同期を可能にすることである。
【0020】
タイル
HEVCビデオコーディング規格はまた、ピクチャを長方形の空間的に独立した領域に分割する「タイル」と呼ばれるツールを含む。タイルを使用して、HEVCにおけるピクチャを、任意の所与のタイルが所与の行と所与の列との交点に位置するサンプルの行および列にパーティショニングすることができる。図2は、4行のタイルおよび5列のタイルを使用したタイルパーティショニングの一例を示しており、その結果、そのピクチャについて合計20個のタイルが得られる。図2に見られるように、HEVCにおけるタイルは、常に、CTU境界と整合される。
【0021】
タイル構造は、行の厚さおよび列の幅を指定することによって、ピクチャパラメータセット(PPS)でシグナリングされる。個々の行および列は、異なるサイズを有することができるが、パーティショニングは、常に、それぞれ左から右に、および上から下に、ピクチャ全体に及ぶ。
【0022】
HEVCにおけるタイル構造を指定するために使用されるPPSシンタックスが表1に列挙されている。表1に見られるように、フラグ(すなわち、tiles_enabled_flag)は、タイルが使用されるかどうかを示す。tiles_enabled_flagが設定されている場合、タイルの列(すなわち、num_tile_columns_minus1)および行(すなわち、num_tile_rows_minus1)の数が指定される。uniform_spacing_flagは、列の幅および行の高さが明示的にシグナリングされるかどうか、またはタイル境界を均等にスペーシングするためのあらかじめ規定された方法を使用すべきかどうかを指定するフラグである。明示的なシグナリングが示される場合、列の幅が1つずつシグナリングされ、その後に行の高さが続く。列の幅および行の高さの情報は、CTU単位でシグナリングされる。最後に、フラグloop_filter_across_tiles_enabled_flagは、タイル境界を横切るループ内フィルタがピクチャ内のすべてのタイル境界についてターンオンされるかターンオフされるかを指定する。
【0023】
スライスと同様に、同じピクチャのタイル間には復号依存性はない。これは、イントラ予測、コンテキスト選択、および動きベクトル予測を含む。しかしながら、1つの例外は、一般に、ループ内フィルタリング依存性がタイル間で許容されることである。しかしながら、これらの依存性は、loop_filter_across_tiles_enabled_flagを適切に設定することによって、無効にすることができる。
【0024】
スライスとは対照的に、タイルは、それほど多くのヘッダデータを必要としない。タイル当たりのヘッダオーバヘッドは、スライスヘッダ内に存在し、ピクチャ内のすべてのタイルの開始点を示すビットストリームオフセットのシグナリングを含む。デコーダは、開始点を復号して、コード化ピクチャをコード化タイルに分離して、並列復号のためにコード化タイルを分配することを可能にする。HEVCでは、スライスヘッダにビットストリームオフセットを含めることは、タイルが有効にされるときに必須である。しかしながら、HEVCでは、タイルとスライスとの組合せが制限される。特に、タイル内のすべてのCTUが同じスライスに属するか、またはすべてのCTUが同じタイルに属する。
【0025】
ビットストリームオフセットはまた、タイルの抽出およびタイルのステッチングを可能にして、タイルを出力ストリームに再構成することができる。これは、タイルを時間的に独立にするために、いくつかのエンコーダ側の制約を必要とする。1つの制約は、タイルに対する動き補償が、前のピクチャの空間的に同一場所に配置されたタイルに含まれるサンプルのみを使用するように、動きベクトルを制限する。別の制約は、このプロセスが時間的に独立になるように、時間的動きベクトル予測(TMVP)を制限する。完全な独立性のために、タイル間の境界のデブロッキングは、前に説明したloop_filter_across_tiles_enabled_flagを介して無効にされなければならない。しかしながら、デブロッキングを無効にすることは、タイル間に可視の線を導入する可能性がある。したがって、いくつかの実装は、デブロッキングを無効にし、他の実装は無効にしない。
【0026】
タイルは、時々、ヘッドマウントディスプレイ(HMD)デバイスを使用した消費を意図した360度ビデオに使用されることがある。今日のHMDデバイスを使用するときの視野は、全球の約20%に制限される。これは、全360度ビデオの20%のみがユーザによって消費されることを意味する。典型的には、360度のビデオ球全体がHMDデバイスで利用可能になり、次いで、HMDデバイスは、ユーザのためにレンダリングされる部分を切り取る。その部分、すなわち、ユーザが見る球の部分は、ビューポートと呼ばれる。リソースの周知の最適化は、ユーザにレンダリングされないビデオサンプルを処理するのに費やされるリソースがより少なくなるように、HMDデバイスビデオシステムに頭の動きおよびユーザが見ている方向を認識させることである。リソースは、たとえば、サーバからクライアントへの帯域幅、またはデバイスの復号能力とすることができる。視野が現在可能であるよりも大きい将来のHMDデバイスの場合、非一様なリソース割り当てが依然として有益である。特に、人間視覚システムは、中央視野エリア(約18°の水平視野)においてより高い画質を要求し、一方、周辺領域(快適な水平視野のために約120°以上)ではより低い画質が要求される。したがって、周辺領域と比較して中央視覚エリアにより多くのリソースが割り当てられる人間視覚システムの要求を満たすために、非一様なリソース割り当てが有効である。
【0027】
関心領域(RoI)へのリソースの最適化は、タイルの別の使用事例である。RoIは、コンテンツ内で指定することができ、または、視線追跡などの方法によって抽出することができる。必要なリソースの量を低減するために頭の動きを使用する1つの方法は、タイルを使用することである。この方法は、まず、タイルを使用してビデオシーケンスを複数回符号化する。いくつかの実施形態におけるタイルパーティショニング構造は、これらの符号化の各々について同じであるが、ビデオシーケンスは、異なるビデオ品質で符号化される。これは、ビデオシーケンスのための少なくとも1つの高品質符号化と、ビデオシーケンスのための1つの低品質符号化とを生成する。このことは、特定の時点における各タイルに対して、少なくとも1つの高品質タイル表現および少なくとも1つの低品質タイル表現が存在することを意味する。高品質タイルと低品質タイルとの間の相違は、高品質タイルが低品質タイルよりも高いビットレートで符号化されること、または高品質タイルが低品質タイルよりも高い解像度のものであることとすることができる。
【0028】
図3A図3Bは、低品質タイルよりも高い解像度を有する高品質タイルの一例を示す。特に、図3Aは、デコーダによって復号されたばかりのピクチャを示す。このコンテキストでは、デコーダからの出力を示すピクチャ(すなわち、復号されたピクチャ)は、圧縮された領域において示されるピクチャである。この例では、圧縮ドメイン内の8つのタイルA~Hのすべては、等しい空間サイズのものである。次いで、ピクチャが復号された後、しかし、ピクチャがレンダリングされる前に、タイルA~Hがスケーリングされ、空間的に配列される。レンダリングのために(すなわち、スケーリングおよび再配列の後に)準備されたピクチャは、出力領域において示されるべきピクチャである。図3Bに見られる出力領域は、ユーザにレンダリングまたは提示されるときのピクチャを示す。
【0029】
図3A図3Bに見られるように、タイルB、D、F、およびHは、出力領域においてより高い解像度のものであるので、高品質タイルである。しかしながら、タイルA、C、E、およびGは、スケーリングステップが実際の解像度を減少させるので、低解像度タイルである。
【0030】
タイルがどのように異なる解像度を有するかを示すことに加えて、図3A図3Bはまた、圧縮領域(図3A)内のタイルが、出力領域(図3B)内で順序付けられるのと同じ方法で空間的に順序付けされる必要がないことも示す。タイルが空間的にも時間的にも独立であると仮定すると、圧縮領域におけるタイルの空間的配置は重要ではない。
【0031】
HEVCにおいてタイルを有効にするときにビットコストを増加させる複数の要素が存在する。第1に、タイルにわたる予測が無効にされ、これは、動きベクトルおよびイントラモードがタイル間で予測されないことを意味する。タイルの使用はまた、量子化パラメータ(QP)予測およびコンテキスト選択を無効にする。第2に、CABACは、タイルごとに初期化され、これは、CABAC適応が損なわれることを意味する。第3に、ビットストリームオフセットは、タイルごとにシグナリングされなければならない。第4に、タイルパーティショニング構造は、PPSにおいて指定される必要がある。最後に、CABACは、各タイルの後にフラッシュされ、コード化データは、バイト整列されなければならない。
【0032】
タイルは有用であるが、対処する必要のある考慮事項がいくつかある。たとえば、その現在の形態では、HEVCは、ピクチャ全体に及ぶことを確実にするようにタイルを制限する。しかしながら、これは、タイルの柔軟性を限定する。たとえば、図4は、HEVCの現在の実装によってサポートされていないタイル構造の一例を示す。そのようなタイル構造を実質的にサポートするために、図5に見られるHEVCでのパーティション構造を指定することができる。しかしながら、図5に見られるタイル構造は、より多くのタイル境界を含む。これは、圧縮効率を害する可能性があり、不要なタイリングアーチファクトを引き起こす可能性がある。加えて、タイルが完全に空間的に独立している必要がある場合、その現在の形態のHEVCは、ピクチャのすべてのタイル境界についてのループ内フィルタリング依存性を有効または無効にすることのみを可能にする。したがって、従来のHEVCソリューションでは、フレキシブルタイルパーティションをサポートしないので、不要なループ内フィルタリング制限が発生する。
【0033】
本開示の実施形態は、フレキシブルタイルパーティショニング方法を提供することによって、これらの問題に対処する。1つまたは複数の実施形態が、他のパーティショニングの用途(たとえば、スライスを伴うパーティショニング)に有用であることは、当業者には明らかであろう。したがって、実施形態は、パーティショニングされたピクチャの領域に対応するユニットを含むピクチャセグメントのフレキシブルなパーティショニングを提供する。したがって、これらのピクチャセグメントは、1つまたは複数の実施形態では、タイルとして記載され、パーティション構造はタイル構造と呼ばれるが、本教示は、他のタイプのピクチャセグメント(たとえば、スライス)に適用可能である。
【0034】
いくつかの実施形態は「ユニット」という用語に言及することに留意されたい。ユニットは、たとえば、タイルが1つまたは複数のユニットからなるようなピクチャの長方形エリア(たとえば、コーディングツリーユニットまたはコーディングユニット)である。さらに、いくつかの実施形態は、「サブセグメント」または「サブタイル」または「サブタイルユニット」という用語に互換的に言及する。各サブセグメントはまた、たとえば、タイルが1つまたは複数のサブセグメントからなるようなピクチャの長方形エリア(たとえば、コーディングツリーユニットまたはコーディングユニット)である。したがって、サブセグメントまたはユニットのサイズは、空間サイズと呼ばれることがある。タイルであるピクチャセグメントのコンテキストでは、サブセグメントはサブタイルと呼ばれる。当業者は、サブタイルに適用可能な教示が他のサブセグメントに適用可能であり、したがって、サブタイルおよびサブセグメントという用語は、本明細書において互換的に使用されることを理解されよう。1つまたは複数の実施形態におけるサブセグメントは、複数のユニットを含む。しかしながら、1つまたは複数の実施形態では、サブセグメントは、単一のユニットを含む。これらの場合、ユニットに適用可能な教示は、単一のユニットを含むサブセグメントにも適用可能であることを、当業者は諒解されよう。
【0035】
本明細書で説明する方法は、エンコーダがピクチャをタイルにパーティショニングするためのより多くの自由を提供する。一実施形態では、各タイルは、単一の長方形エリアを含み、各タイルの幅および高さは、ビットストリームでデコーダにシグナリングされる。受信すると、デコーダは、ビットストリームから各タイルの個々の幅および高さの値を復号するように設定される。
【0036】
別の実施形態では、ピクチャは、ユニットに分割され、各ユニットには、ユニットがどの特定のタイルに割り振られるかを識別するタイル識別情報(ID)が割り振られる。さらに、1つまたは複数の実施形態では、ピクチャは、各々が1つまたは複数のユニットを含むサブセグメントに分割される。各サブセグメントには、サブセグメントがどの特定のタイルに割り振られるかを識別するタイルIDが割り振られる。この後者の実施形態は、非長方形タイルを有するフレキシブルタイルパーティション、ならびにチェッカーボードパターンのパーティションをサポートするので有益である。
【0037】
本開示の実施形態は、360度ビデオなど様々な使用事例のために、よりフレキシブルなタイルパーティションの使用を可能にする。さらに、固定タイルパーティションと比較すると、フレキシブルタイルパーティションに関連付けられたビットコストは低い。具体的には、タイルの数は、従来のタイルパーティショニングの使用により多くなり、各タイルは、コストがかかる(たとえば、CABACフラッシュおよび適応リセット、ビットストリームオフセットなどに関連付けられた処理)。しかしながら、本実施形態のフレキシブルタイルパーティショニングは、より少ないタイルを使用し、それによってビットコストを低減する。
【0038】
本実施形態はまた、エンコーダが、たとえば、入力ピクチャを分析し、利用可能なコアの数を等しく満たしながら、ピクチャを(ビットコストを低減するために)可能な限り少ないタイルに分離するタイルパーティショニングを選択することができる並列処理のためのフレキシブルなCPUロードバランシングも可能にする。その上、本開示の実施形態はまた、伝統的なタイルをよりフレキシブルにする従来の方法と比較して、ループ内フィルタに対する制御の向上を促進する。
【0039】
本実施形態は、たとえば、帯域幅または復号能力が主なボトルネックであるマルチビュー(MV)ビデオコーディングなど、要求の厳しい使用事例には、さらに有益である。そのような場合、本実施形態は、より良いリソース割り当てを可能にする。関心領域(RoI)が指定される用途では、本開示の実施形態は、よりフレキシブルなリソース割り当ても提供する。
【0040】
本開示のフレキシブルタイルパーティショニングの実施形態は、従来のタイリング方法よりも大きいタイルを使用する。タイルサイズがより大きいため、本実施形態は、イントラ動きベクトルにより少ない制限をかけることによって、ピクチャの品質にも寄与する。さらに、本開示のフレキシブルタイルパーティショニング方法は、タイル間の不要なパーティショニングラインを除去する。そのようなラインの除去は、タイル間のラインに関するフィルタリングのコストを低減する。
【0041】
本開示の実施形態は、ビデオピクチャのシーケンスからのピクチャを、たとえばHEVCなど、従来の手段によって提供することができるよりもフレキシブルなタイルレイアウトを有するタイルにパーティショニングする。これは、符号化のためにパーティション構造およびタイルを生成するようにエンコーダを設定すること、ならびにパーティション構造およびタイルを復号するようにデコーダを設定することを含む。いくつかの実施形態では、本開示のフレキシブルタイルパーティショニング方法は、従来の形態でのHEVCの処理と共存する。したがって、前に説明したように、ビットストリーム内のtiles_enabled_flagを使用して、伝統的なタイルパーティショニングスキームを使用すべきか、または本実施形態によるフレキシブルタイルパーティショニングスキームを使用すべきかを指定することができる。
【0042】
図6Aは、ピクチャ10が4つのタイルまたは「セグメント」T、T、T、T(まとめて「T」)(黒の実線で示す)にパーティショニングされ、各タイルまたはセグメントT、T、T、Tが16のユニットUを含む一例を示す。これは、ピクチャ10について合計64のユニットUを提供する。図6Bは、セグメントT、T、T、Tが、黒の実線および点線によって示されるように、16個のサブセグメント(たとえば、T1-1、T1-2、T1-3、T1-4)にさらにパーティショニングされるピクチャ10を示す。各サブセグメントは、4つのユニットUを含む。
【0043】
フレキシブルタイル構造は、ビットストリームでシグナリングされる。たとえば、エンコーダは、シーケンスパラメータセット(SPS)またはピクチャパラメータセット(PPS)などのパラメータセットでフレキシブルタイル構造をシグナリングする。しかしながら、当業者が理解するように、本開示は、パラメータセットでフレキシブルタイル構造をシグナリングすることに限定されない。本明細書の実施形態は、タイル構造がPPSでシグナリングされるものとして説明するが、これは、単に説明のためであり、この情報は、他の方法でシグナリングすることができる。
【0044】
一般的な説明
図7は、ピクチャ10に復号されるビットストリーム12を示す。図8は、64のユニットUにパーティショニングされたピクチャ10を示す。図11A図11Cは、図11Bに示されるようなサブセグメント(たとえば、T1-1、T1-2、T1-3、T1-4)も使用する、図11Aに示される64のユニットUを有する別の例示的なピクチャ10を示す。ユニットUの一例は、H.264から知られているマクロブロックである。ユニットUの別の例は、HEVCから知られているCTUである。
【0045】
図7に見られるように、ビットストリーム12は、1つまたは複数のコード化セグメントTと、1つまたは複数のコードワード16、17、18とを含む。1つまたは複数のコードワード16は、コード化セグメントTの各々を復号するために必要なデータを含むビットストリーム内のバイト数またはビット数を指定する情報を含む。1つまたは複数のコードワード17は、ユニットUの空間サイズを指定する情報を搬送する。1つまたは複数のコードワード18は、サブセグメントの空間サイズを指定する情報を搬送する。一例として、ユニットUの空間サイズは、水平方向に64ルーマサンプル、垂直方向に64ルーマサンプルであるが、当業者は諒解されるように、本開示は、ユニットUのこれらのサイズおよび形状に限定されない。本開示の実施形態によれば、不規則形状のユニット(たとえば、正方形として形状されていないユニット)を含む他のユニットサイズおよび形状も可能である。
【0046】
図7図8に見られるように、ピクチャ10は、パーティション構造を使用して、3つのセグメントT、T、Tに空間的にパーティショニングされている。パーティション構造を規定する情報は、ビットストリーム12内の情報から導出された。たとえば、ビットストリーム12からのコード化セグメント14は、ピクチャ10内の対応する復号セグメントのサンプル値を導出するために復号される。加えて、コード化セグメント14のサイズおよび/または位置は、ビットストリーム12内の1つまたは複数のコードワード16から構文解析することができる。前に述べたように、本開示の一実施形態は、1つまたは複数のコードワード16を利用して、コード化セグメント14を復号するのに必要な情報を含むビットストリーム内のバイト数またはビット数を指定する情報を搬送する。しかしながら、代替的に、本開示の実施形態は、1つまたは複数のコードワード16を利用して、ビットストリーム12内のコード化セグメント14の場所または位置を導出するために必要な情報を搬送することができる。
【0047】
図8に見られるように、各セグメントT、T、Tの境界は、ユニットUの境界に整合されている。各セグメントT、T、Tは、整数個のユニットUを含み、各ユニットUは、1つのセグメントTに関連付けられていることを意味する。たとえば、図8に見られるように、2つの最右のセグメントT、Tは、各々16のユニットを含み、一方、最左のセグメントTは、32のユニットを含む。
【0048】
図9は、ピクチャ10が、図8に示されるのと同じパーティション構造Sを使用してパーティショニングされる一実施形態を示す。しかしながら、明快のために、図9は、ユニットUを示していない。図9に見られるように、第1のセグメントTの一方の辺19-1は、2つ以上の近接または隣接するセグメントT、Tの辺19-2、19-3にそれぞれ接する。
【0049】
図10は、図8および図9に示された同じパーティション構造Sを使用してパーティショニングされたピクチャ10を示す。図10に見られるように、ピクチャ10は、3つのセグメントT、T、Tを含む。図10のすべてのセグメントT、T、Tは、1つまたは複数のユニットUを含むが、明快のために、図10は、セグメントTおよびTを、ユニットUのサブセットを含むものとして示している。具体的には、セグメントTは、ユニットUを含み、一方、近接または隣接するセグメントTは、ユニットU、Uを含む。セグメントT、T、Tの各々は、互いに独立している。これは、セグメントT、T、Tの境界が、ユニットUを復号するときのピクチャ境界と同様に扱われることを意味する。これは、たとえば、イントラ予測モードの導出、および量子化パラメータ値の導出など、復号中の要素の導出プロセスに影響を及ぼす。
【0050】
イントラ予測モード(たとえば、イントラ(B)予測モードおよびイントラ(P)予測モード)は、サンプル予測のために現在のピクチャの以前に復号されたサンプルからの予測のみを使用するユニットのために使用され、シグナリングされる。特定のユニットUにおけるイントラ予測モードの導出は、他のユニットUにおける以前に導出されたイントラ予測モードに依存することが一般的である。セグメントが独立している状態で、特定のユニットUにおけるイントラ予測モードの導出は、同じ現在のセグメントTに属するユニットUにおける以前に導出されたイントラ予測モードにのみ依存し、セグメントTなどの異なるセグメントに関連付けられたユニットUなどの任意のユニットにおける任意のイントラ予測モードに依存しない。したがって、図10のパーティション構造Sは、第1のセグメントT内のユニットUにおけるイントラ予測モードを、第2の異なるセグメントT内のユニットU、Uのためのイントラ予測モードの導出のために利用不可能にする。
【0051】
しかしながら、第1のセグメントTにおけるユニットUは、別のユニットにおけるイントラ予測モードの導出のために使用することができるが、他のユニットが同じセグメントTにあった場合にのみ使用することができる。したがって、セグメント境界は、第2のセグメントT内のユニットU、Uのピクチャ境界と同じまたは同様の影響をイントラモード導出に及ぼす。言い換えれば、ピクチャセグメントTの第1のユニットUについてのイントラ予測モードの導出は、ピクチャセグメントTの第2のユニットUについての導出されたイントラ予測モードに依存し得る。
【0052】
量子化パラメータ(QP)値も当技術分野で周知である。たとえば、ユニットUのQP値は、典型的には、以前に導出されたQP値を使用して導出される。当技術分野で知られている1つの導出プロセスは、まず、ビットストリーム12から予測されたQP値を導出し、次いで、デルタQP値を予測されたQP値に追加することである。セグメントT、T、Tは互いに独立しているので、セグメントTのユニットUなどの特定のユニットにおけるQP値の導出は、たとえば、同じセグメントTにあるユニットにおける以前に導出されたQP値にのみ依存することができる。特定の所与のユニットU、UにおけるQP値の導出は、セグメントTにおけるユニットUなど、異なるセグメントにある任意の他のユニットに関連付けられた任意のQP値に依存しない。これは、図10のパーティション構造Sが、第1のセグメントT内のユニットUにおけるQP値を、第2の異なるセグメントT内のユニットU、UについてのQP値の導出のために利用不可能にすることを意味する。
【0053】
いくつかのユニットUにおけるQP値は、別のユニットUにおけるQP値の導出に使用することができるが、他のユニットが同じセグメントT内にある場合にのみ使用することができる。したがって、セグメント境界は、第2のセグメントTにおけるユニットU、Uのピクチャ境界と同じまたは同様の影響をQP値の導出に及ぼす。
【0054】
図11A図11Cは、パーティション構造Sによる、パーティショニングされた同じピクチャ10を示すが、図11Bに示すように、サブセグメントSS~SS16の使用を含む。図11Aは、ユニットUを示す。前に説明したように、ユニットの空間サイズは、ビットストリーム12において、1つまたは複数のコードワード17としてシグナリングされる。図11Bは、サブセグメントSS~SS16を示し、その各々は、1よりも大きい整数個のユニットUを含む。したがって、各サブセグメントSS~SS16は、少なくとも2つのユニットUを含み、各ユニットUは、1つのサブセグメントのみに属する。サブセグメントSS~SS16の空間サイズは、ビットストリーム12において1つまたは複数のコードワード18としてシグナリングされる。サブセグメント(21)の空間サイズは、ユニットで表される。図11Bの例では、サブセグメントの空間サイズは、水平方向に2ユニット、垂直方向に2ユニットである。サブセグメントは、幅および高さが異なるように長方形とすることができることに留意されたい。1つまたは複数のコードワード(24)で搬送される情報は、1つの高さ値および1つの幅値からなることができる。情報は、1つのサブセグメントサイズ(すなわち、値の対)とみなすことができ、または独立した幅および高さの値とみなすことができる。コードワード(24)は、ビットストリーム12からデコーダによって復号され、サブセグメントのサイズを導出するために使用される。
【0055】
図11Cは、ピクチャ10のセグメントT、T、Tおよびパーティション構造Sを示す。各セグメントT、T、Tは、少なくとも1つのユニットUを含む。セグメントT、T、Tは、0よりも大きい整数個のサブセグメントSS~SS16を含む。したがって、各セグメントT、T、Tは、少なくとも1つのサブセグメントSS~SS16を含み、各サブセグメントSS~SS16は、1つのセグメントT、T、Tのみに属する。すべてのセグメントT、T、Tが単一のサブセグメントを含む場合、1つまたは複数の実施形態におけるサブセグメントは、冗長であり、パーティション構造Sの一部としてシグナリングされる情報に含める必要はないことに留意されたい。したがって、サブセグメントは、2つ以上のサブセグメントSS~SS16を含むピクチャ10において、少なくとも1つのセグメントT、T、Tが存在する場合に有用である。したがって、セグメントT、T、Tの空間サイズは、サブセグメントSS~SS16で表され、これは、セグメントT、T、T、および/または空間パーティション構造Sの空間サイズを導出するとき、サブセグメントSS~SS16のサイズが使用されることを意味する。図11A図11Cの例では、2つのセグメントT、Tの空間サイズは、水平方向に2つのサブセグメント、垂直方向に2つのサブセグメント、1つのセグメントTの空間サイズは、水平方向に2つのサブセグメント、垂直方向に4つのサブセグメントである。
【0056】
いくつかの実施形態では、セグメントT、T、Tは、セグメントの幅および高さが異なるように長方形とすることができることに留意されたい。他の実施形態では、セグメントT、T、Tは、非長方形であり、各ユニットUおよび/またはサブセグメントSSを1つのセグメント(たとえば、サブセグメントT)に割り当てることによって表される。そのような割り当ては、たとえば、セグメントT、T、Tのうちのいくつかがチェスボード上の白い正方形を表し、他のセグメントT、T、Tがチェスボード上の黒い正方形を表す「チェスボードセグメント」を表すために使用される。セグメント(たとえば、セグメントT)は、いくつかの実施形態では、タイルまたはスライスと等価とすることができる。サブセグメントは、いくつかの実施形態では、サブタイルと等価とすることができる。
【0057】
第1の実施形態
図9に見られるように、ビデオストリーム内のピクチャ10またはピクチャ10の一部は、空間パーティション構造Sに分割され、パーティション構造Sは、少なくとも3つのセグメントT、T、Tを含む。各セグメントT、T、Tは、ユニットUを含み、セグメントT、T、Tのうちの少なくとも1つは、2つ以上のユニットUを含む。ユニットUの空間サイズは、ビットストリーム12の1つまたは複数のコードワード17でシグナリングされ、そこから復号される。加えて、ビットストリーム12内の少なくとも1つのコード化セグメントTのサイズまたは位置を示す1つまたは複数のコードワード16が、ビットストリーム12から構文解析される。
【0058】
少なくとも1つのセグメントTは、2つ以上の近隣のセグメントT、Tの辺19-2、19-3に接する少なくとも1つの辺19-1を有する。加えて、セグメントT、T、Tは、第1のセグメントT内の任意のユニットUについての任意のイントラ予測モードの導出が、同じく第1のセグメントT内にあるユニットU内の以前に導出されたイントラ予測モードにのみ依存するように、互いに独立している。第1のセグメントT内のユニットUについての任意のイントラ予測モードの導出は、第2の異なるセグメントT内にある任意のユニットU内の任意のイントラ予測モードに依存しない。そのようなセグメントは、本明細書では「フレキシブルタイル」または単に「タイル」と呼ばれ、単一のユニットに関して規定された厳密な列および行として配列されたHEVCタイルとは異なる。すなわち、HEVCでは、ピクチャ内のタイルは、2つ以上の近隣セグメントに接する1つの辺を有していない。むしろ、HEVCにおける所与のタイルの所与の辺は、1つの他の隣接するタイルの一方の辺のみに接する。フレキシブルタイルはまた、フレキシブルサブタイルと同じものであるか、またはより単純にサブタイルとして表されるオプションのサブセグメントを含むこともできる。本開示は、セグメント、フレキシブルタイル、およびタイルという用語を互換的に使用することに留意されたい。しかしながら、これらの実施形態のコンテキスト内で、「フレキシブルタイル」および「タイル」という用語は、セグメントと同じであると規定され、前に説明したように、すべて、HEVCタイルとは異なる。
【0059】
図12Aは、本開示の第1の実施形態による、フレキシブルタイルを使用してピクチャまたはピクチャの一部を符号化するための方法20を示すフロー図である。
【0060】
方法20は、エンコーダで実施され、エンコーダがピクチャのフレキシブルタイル構造を規定することから始まる(ボックス22)。フレキシブルタイル構造は、2つ以上の隣接するフレキシブルタイルに接する少なくとも1つの辺を有する少なくとも1つのフレキシブルタイルを含む。次いで、エンコーダは、フレキシブルタイル構造をどのように構築するかを表すために、少なくとも1つのシンタックス要素を規定する(ボックス24)。少なくとも1つのシンタックス要素は、フレキシブルタイルを表す1つまたは複数のプロパティを含むか、またはシンタックス要素は、フレキシブルタイルのプロパティを導出するための手段を含む。そのようなプロパティは、たとえば、個々のフレキシブルタイルをどのように割り振りおよび/またはアクセスするかを表す識別子、幅、高さ、および位置を含む。次いで、エンコーダは、ビデオビットストリーム内のフレキシブルタイル構造のための少なくとも1つのシンタックス要素をシグナリングし(ボックス26)、フレキシブルタイル構造に従ってピクチャまたはピクチャの一部をビデオビットストリームに符号化する(ボックス28)。フレキシブルタイル構造は、2つ以上の隣接するフレキシブルタイルに接する少なくとも1つの辺を有する少なくとも1つのフレキシブルタイルを含む。
【0061】
図12Bは、本開示の第1の実施形態による、フレキシブルタイルを使用して符号化されたピクチャまたはピクチャの一部を復号するための方法30を示すフロー図である。
【0062】
図12Bに見られるように、方法30は、デコーダがビデオビットストリームを受信し(ボックス32)、エンコーダから受信されたビデオビットストリームからのフレキシブルタイル構造のための少なくとも1つのシンタックス要素を構文解析する(ボックス34)ことから始まる。次いで、デコーダは、少なくとも1つのシンタックス要素からフレキシブルタイル構造を構築し、個々のフレキシブルタイルのプロパティを割り振るか、または導出することができる(ボックス36)。プロパティは、フレキシブルタイルを割り振るおよび/またはフレキシブルタイルにアクセスするために使用することができる識別子、幅、高さ、および位置を含む。次いで、デコーダは、フレキシブルタイル構造に従ってピクチャまたはピクチャの一部を復号する(ボックス38)。前述のように、フレキシブルタイル構造は、2つ以上の隣接するフレキシブルタイルの対応する辺に接する少なくとも1つの辺を有する少なくとも1つのフレキシブルタイルを含む。
【0063】
第2の実施形態-タイルの幅および高さの指定
第1の実施形態では、フレキシブルタイルは、あらかじめ規定された順序で走査され、タイル幅およびタイル高さは、タイルごとに指定される。1つまたは複数の実施形態では、あらかじめ規定された順序は、たとえば、ユニット(たとえば、CTU)に沿ったラスタ走査順序であり、タイルサイズはユニットで指定される。代替的に、あらかじめ規定された順序は、サブセグメントに沿ったラスタ走査順序であり、タイルサイズは、サブセグメントに関して指定される。
【0064】
図13Aは、エンコーダがフレキシブルタイルを構築し、シグナリングする方法40を示すフロー図である。
【0065】
方法40に見られるように、エンコーダは、最初に、ピクチャが1つのタイルを有するか、複数のタイルを有するかを決定する(ボックス42)。ピクチャがタイルを1つのみ有する場合、エンコーダは、ピクチャが単一のタイルのみを有することを示すために、tile_enabled_flag=0に設定し(ボックス44)、プロセスを終了する。そうではなく、ピクチャが2つ以上のフレキシブルタイルを有する場合、エンコーダは、タイルの空のリストを作成する(ボックス46)。任意選択で、この方法は、サブセグメントがタイルのいずれかに使用されるかどうかを決定するステップ(ボックス43)を含む。そうでない場合、この方法は、エンコーダがタイルの空のリストを作成することを続行する(ボックス46)。パーティション構造がサブセグメントを含む場合(ボックス45)、サブタイルの高さおよび/または幅が決定され、ビットストリームでシグナリングされる。サブセグメントの高さおよび/または幅は、あらかじめ規定することができる。あらかじめ規定された走査順序に従って、エンコーダは、フレキシブルタイルの高さおよび幅を識別する情報(たとえば、サブセグメントが使用される場合、ユニットまたはサブセグメントで表される)を含めて、フレキシブルタイルをリストに追加する(ボックス48)。エンコーダは、ピクチャがそれ以上フレキシブルタイルを有する限り、フレキシブルタイルをリストに追加し続ける(ボックス50)。
【0066】
図13Bは、デコーダがフレキシブルタイルを構文解析し、構築する方法60を示すフロー図である。
【0067】
方法60に見られるように、デコーダは、最初に、ピクチャが1つのタイルを有するか、複数のタイルを有するかを決定する(ボックス62)。tile_enabled_flagが、ピクチャが識別された幅および高さを有するフレキシブルタイルを1つのみ有することを示す0に設定された場合、方法は終了する。そうでなければ、リスト内にまだフレキシブルタイルがある間(ボックス64)、デコーダは、あらかじめ規定された走査順序に従って、その幅および長さによって指定されるリスト内の次のタイルを構文解析する(ボックス66)。オプションのサブセグメントがパーティション構造の一部であり、あらかじめ規定されていない場合、デコーダは、任意選択で、ビットストリームからサブタイルの高さおよび/または幅を構文解析する。これは、(たとえば、2つ以上のタイルがあると決定された後)方法13Bの様々な時点で行うことができる。
【0068】
表2は、本開示の1つまたは複数の実施形態で使用するための例示的なシンタックスを識別する。シンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。
【0069】
表2のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグは、1または0の値に設定され得る。1に設定されているとき、このフラグは、PPSを参照する各ピクチャ内にタイルが複数あることを指定する。0に設定されているとき、このフラグは、PPSを参照する各ピクチャ内にタイルが1つしかないことを指定する。
flexible_tiles_enabled_flag:このフラグは、1または0の値に設定され得る。1に設定されているとき、このフラグは、PPSを参照するピクチャをタイルにパーティショニングするためにフレキシブルタイルが使用されることを指定する。flexible_tiles_enabled_flag=0は、PPSを参照するピクチャをタイルにパーティショニングするためにフレキシブルタイルが使用されないことを指定する。
sub-tile_width_minus1 plus 1は、コーディングツリーユニット内のサブタイルユニットの幅を指定する。sub-tile_width_minus1は、0からPicWidthInCtbsY-1の範囲内であるものとする。
sub-tile_height_minus1 plus 1は、コーディングツリーユニット内のサブタイルユニットの高さを指定する。sub-tile_height_minus1は、0からPicHeightInCtbsY-1の範囲内であるものとする。
tile_width_minus1[i] plus 1は、サブタイル幅ユニットの単位でi番目のタイルの幅を指定する。
tile_height_minus1[i] plus 1は、サブタイル高さユニットの単位でi番目のタイルの高さを指定する。
read_more_tiles()は、以下のように指定される。
・タイルに割り振られていないCTUがピクチャ内に少なくとも1つある場合、read_more_tiles()の戻り値は、TRUEに等しい。
・そうでなければ、read_more_tiles()の戻り値は、FALSEに等しい。
【0070】
一実施形態では、デコーダは、PPS内の第1のtile_width_minus1シンタックス要素を構文解析する前に、以下の関数を呼び出す。
【0071】
一実施形態では、デコーダは、PPS内の第1のtile_height_minus1シンタックス要素を構文解析した後、以下の関数を呼び出す。
【0072】
一実施形態では、シンタックス要素tile_width_minus1およびtile_height_minus1は、CTU_tile_assignmentの前に以下の条件のすべてを保持しなければならないように制限される。
[tile_coordinate_y+y][tile_coordinate_x+x]=tile_id:
1.tile_coordinate_y+yは、PicHeightInCtbsY未満でなければならない。
2.tile_coordinate_x+xは、PicWidthInCtbsY未満でなければならない。
3.CTU_tile_assignment[tile_coordinate_y+y][tile_coordinate_x+x]は、「タイル無し」に等しくなければならない。
【0073】
図14は、10個のタイルT…Tがピクチャ10をパーティショニングするために使用される例示的なタイルパーティションを示す。図14の各タイルに見られる数字は、タイル番号(すなわち、整数0、1、2、…)と、それに続くCTUにおけるタイルの幅および高さ(たとえば、4×2)とを表す。上記の表2の例示的なシンタックスを使用すると、タイルパーティションは、合計63によって表される。
【0074】
図15は、2048×1280のサイズを有するピクチャ10が26個のタイルにパーティショニングされる別の例示的なタイルパーティションを示す。図15に見られるように、すべてのタイルが同じサイズおよび形状であるわけではない。むしろ、1つの大きいサイズのタイルTと、複数のより小さいタイルTとがある。図15の大きい長方形タイルTは、2つ以上の小さいタイルTの辺に接する1つの辺を有するので、フレキシブルタイルである。加えて、ピクチャは、32×20=640個のCTUを含み、各々は、64×64のサイズのルーマサンプルを有する。そのようなタイルパーティションは、いくつかのより小さいタイルTがビューポートをカバーするために使用され、単一の大きいタイルTがより低い解像度で全球をカバーする360ビデオストリーミングのために使用される。
【0075】
上記の表2の例示的なシンタックスを使用すると、図15のタイルパーティションは、合計267ビットで表すことができる。tiles_enabled_flag=1の1ビットは、フレキシブルタイルが使用されることを示す。次いで、tile_width_minus1=11(7ビット)およびtile_height_minus1=19(9ビット)を使用して、25個の小さいタイルTが各々10ビットでシグナリングされ、大きいタイルTが16ビットでシグナリングされる。タイルサイズが使用される場合、結果は、1+タイルサイズ(5+5)+25*2+(3+5)=69ビットとなる。
【0076】
図36A図36Cに示されるこの実施形態の変形では、2つ以上のサブタイルサイズが規定される。図36Aは、5つのセグメントまたはタイルT…Tを有する例示的なパーティション構造Sを示す。図36Bは、例示的なパーティション構造Sが、2つの異なるタイプAおよびBの7つのサブセグメントまたはサブタイルSS…SSを有することを示す。図36Cは、例示的なパーティション構造Sが、5つのセグメントまたはタイルT…T、および84のユニットまたはCTUを有することを示す。各サブタイルサイズは、CTUユニットで指定される。
【0077】
タイルごとに、幅および高さは、これらの以前に規定されたサブタイルユニットの1つにおいて指定され、どのサブタイルサイズが使用されるかについての情報が、その特定のタイルの幅および高さとともに送られる。図36A図36Cに示される以下の例では、異なるサイズの2つのサブタイル、すなわち、サブタイルAと名付けられた4×4CTUのうちの1つと、サブタイルBと名付けられた3×3CTUのうちの1つとが使用される。次いで、
タイルTの高さおよび幅は、サブタイルユニットAにおいて1×1として指定される。
タイルTの高さおよび幅は、サブタイルユニットAにおいて1×2として指定される。
タイルTの高さおよび幅は、サブタイルユニットBにおいて1×1として指定される。
タイルTの高さおよび幅は、サブタイルユニットBにおいて1×1として指定される。
タイルTの高さおよび幅は、サブタイルユニットBにおいて1×2として指定される。
【0078】
1つのタイルを2つ以上のサブタイルユニットで指定することができるとき、そのタイル内のより小さいユニットカウントを与えるサブタイルユニットは、そのタイルの幅および高さを指定するためにエンコーダによって選択されることが好ましい。
【0079】
第3の実施形態-サブタイルおよびタイルサイズコピーのためのフラグを使用したタイルの高さおよび幅の指定
好ましい実施形態では、タイルパーティション構造は、任意選択でサブタイルユニットを使用して、タイルの高さおよび幅をシグナリングすることによって搬送される。タイルは、整数個のサブタイルからなり、サブタイルは、CTUのような整数個のコーディングユニットからなる。コーディングユニットまたはサブタイルの空間サイズは、(たとえば、コーディングユニットに関して)ビットストリームでシグナリングされる。
【0080】
たとえば、CTUユニットサイズは、64×64のルーマサンプルのサイズを有するようにビットストリームでシグナリングされる。次いで、サブタイルユニットサイズは、4の幅および2の高さを有するようにシグナリングされる。これは、サブタイルユニットサイズがCTUユニットサイズを使用してシグナリングされるので、サブタイルが256のルーマサンプルの幅および128のルーマサンプルの高さを有することを意味する。次いで、1つのタイルは、2の幅および1の高さを有するようにシグナリングされ、これは、タイルが512のルーマサンプルの幅、および128のルーマサンプルの高さを有することを意味する。サブタイルユニットを使用することは、すべてのタイルの幅が1のCTU幅よりも大きい最大公約数を有するとき、および/またはすべてのタイルの高さが1のCTU高さよりも大きい最大公約数を有するときに有益である。タイルの高さおよび幅をサブタイルで表すことは、ビットストリーム内のより少ないビットを使用して行うことができるより小さい値を使用して行うことができる。
【0081】
さらに、この実施形態では、フラグを使用して、現在のタイルサイズが、最も近い以前にシグナリングされたタイルサイズと同一であるかどうかを指定する。フラグが1の値を有する場合、現在のタイルのタイルサイズが前のタイルからコピーされる。フラグが別の値を有する場合、タイルの高さおよび幅は、コーディングユニットまたはサブタイルの高さおよび幅を使用して明示的にシグナリングされる。以下でより詳細に説明するように、デコーダは、このフラグを復号し、その値に基づいて、現在のタイルサイズが、最も近い以前にシグナリングされたタイルサイズと同一であるかどうかを決定する。
【0082】
この実施形態の1つの変形では、ピクチャ内のタイルの数が最初に復号される。そのとき、サイズが復号される既知の数のタイルにわたるループが存在する。任意選択で、最後のタイルのサイズは、その最後のタイルのサイズがピクチャの残りのエリアによって与えられるので、シグナリングされない。
【0083】
この実施形態の別の変形では、ピクチャ内のタイルの数は、シグナリングされない。代わりに、デコーダは、すべての必要なタイルサイズが復号されたことをデコーダが決定するまで、タイルサイズの復号を続行する。すべての必要なタイルサイズが復号されると、デコーダは、タイルサイズの復号を停止し、ビットストリームからの他のデータの復号を進める。すべての必要なタイルサイズが復号されたかどうかを決定する1つの方法は、ピクチャ内のすべてのCTUが、タイルサイズが復号されたタイル内にあるかどうかを決定することである。すべての必要なタイルサイズが復号されたかどうかを決定する別の方法は、復号されたタイルサイズに対応するタイルがピクチャ全体を一緒にカバーするかどうかを決定することである。
【0084】
この実施形態のまた別の変形では、オプションのコードワードが、タイルが次のタイル位置にコピーされている回数を搬送するようにシグナリングされる。たとえば、第1のタイルサイズは、128×128に等しい。次いで、そのタイルサイズが以下であるかどうかを指定するビットストリーム内に1つまたは複数のコードワードが存在し得る。
1)任意の他のタイルにコピーされない、これは、次のタイルサイズが、幅および高さを使用して明示的にシグナリングされることを意味する、または
2)次のタイルにコピーされる、または
3)次のn個のタイルにコピーされる、ここでは、コピーする回数がシグナリングされる。
【0085】
図16Aに見られるように、デコーダは、以下の態様のうちの1つまたは複数を使用して、ビデオビットストリームのピクチャの符号化表現を復号するように設定される。
【0086】
特に、方法70に見られるように、デコーダは、ピクチャを復号するための特定の空間サイズを導出するためのコード化された要素を受信する(ボックス72)。空間サイズは、ユニットおよび/またはサブタイルのうちの1つである。たとえば、デコーダは、タイルサイズを復号するために使用するためにサブタイル幅およびサブタイル高さを導出し、サブタイル幅および高さは、導出されたユニットサイズの2つの整数として搬送される。代替的に、デコーダは、特定の空間ユニットサイズおよび/またはサブタイルサイズを使用してピクチャを復号するように設定される。デコーダは、ビデオビットストリームから2つ以上のタイルサイズを明示的に復号する(ボックス74)。これらの場合、タイルサイズは、ユニット幅またはサブタイル幅の整数としてビットストリームから導出される幅値と、ユニット高さまたはサブタイル高さの整数としてビットストリームから導出される高さ値とを含む。一実施形態では、デコーダは、ビデオビットストリームから少なくとも1つのタイルサイズを復号し、タイルサイズは、前に復号されたタイルサイズからコピーされた幅値と高さ値とを含む(ボックス76)。一実施形態では、デコーダは、少なくとも1つの現在のタイルについてのフラグを復号するように設定される(ボックス78)。これらの場合、1つの値は、現在のタイルのタイルサイズが前に復号されたタイルサイズからコピーされることを示し、別の値は、タイルサイズがビットストリーム内の情報から明示的に復号されるべきであることを示し得る。一実施形態では、デコーダは、タイルサイズの数を指定するビットストリームからの数値を復号することによって、復号すべきタイルサイズの数を決定する(ボックス80)。一実施形態では、デコーダは、復号すべき追加のタイルサイズがあるかどうかを決定することによって、復号すべきタイルサイズの数を決定する(ボックス82)。特に、これらの場合、デコーダは、ピクチャ内のすべてのCTUが、タイルサイズが復号されたタイル内にあるかどうかを決定することができる。代替的に、デコーダは、復号されたタイルサイズに対応するタイルがピクチャ全体を一緒にカバーするかどうかを決定することができる。デコーダがタイルサイズを復号する特定の方法にかかわらず、この実施形態に従って設定されたデコーダは、ピクチャの符号化された表現を復号するために復号されたタイルサイズを使用する。
【0087】
図16Bに見られるように、エンコーダは、この実施形態に従って、以下の態様のうちの1つまたは複数を使用して、ビデオビットストリームのピクチャの表現を符号化するように設定される。
【0088】
特に、方法90に見られるように、一実施形態では、エンコーダを、少なくとも1つのピクチャを符号化するために使用するために、特定の空間サイズを符号化するように設定することができる(ボックス92)。たとえば、空間サイズは、ユニットまたはサブタイルの空間サイズである。1つまたは複数の実施形態では、エンコーダは、1つのコード化整数サブタイル幅値および/または1つのコード化整数サブタイル高さ値をビットストリームに挿入することによって、タイルサイズを符号化するために使用するために、特定のサブタイル幅および/またはサブタイル高さを符号化する。値は、空間ユニットサイズに関する。一実施形態では、エンコーダは、2つ以上のタイルサイズをビットストリームに明示的に符号化するように設定され得る(ボックス94)。これらの場合、エンコーダは、ユニットまたはサブタイルの幅を示す1つのコード化整数タイル幅値と、ユニットまたはサブタイルの高さを示す1つのコード化整数タイル高さ値とをビットストリームに挿入することによって、各タイルサイズを符号化するように設定され得る。一実施形態では、エンコーダは、タイルサイズを以前に導出されたまたは復号されたタイルサイズに等しくなるように設定することによって、少なくとも1つのタイルサイズを導出するようにも設定され得る(ボックス96)。一実施形態では、エンコーダは、少なくとも1つの現在のタイルのフラグ値を挿入するようにも設定され得る(ボックス98)。これらの実施形態では、1つの値を使用して、現在のタイルのタイルサイズを以前に復号されたタイルサイズからコピーすべきであることをデコーダに指定することができ、またはエンコーダは、デコーダがタイルサイズを明示的に導出することができるようにタイルサイズをビットストリームに明示的に挿入することができる。一実施形態では、エンコーダは、タイルサイズの数を指定する数値をビットストリームに挿入することによってシグナリングされるタイルサイズの数を示すようにも設定され得る。エンコーダが情報を符号化する特定の方法にかかわらず、エンコーダは、少なくとも1つのピクチャをビデオビットストリームに符号化するためにタイルサイズを使用するように設定される。
【0089】
表3は、本開示のこの実施形態で使用するための例示的なシンタックスを識別する。シンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。
【0090】
表3のシンタックス要素の例示的なセマンティクス
tiles_enabled_flag=1は、PPSを参照する各ピクチャ内にタイルが複数あることを指定する。tiles_enabled_flag=0は、PPSを参照する各ピクチャ内にタイルが1つしかないことを指定する。tiles_enabled_flag値が、CVS内でアクティブ化されるすべてのPPSについて同じであることが、ビットストリーム適合の要件である。
flexible_tiles_enabled_flag=1は、PPSを参照するピクチャをタイルにパーティショニングするためにフレキシブルタイルが使用されることを指定する。flexible_tiles_enabled_flag=0は、PPSを参照するピクチャをタイルにパーティショニングするためにフレキシブルタイルが使用されないことを指定する。flexible_tiles_enabled_flag=1である場合、変数tile_idの値および2次元配列CTU_tile_assigmentの値は次のように指定される。
number_of_tiles_in_picture_minus2 plus 2は、ピクチャ内のタイル数を指定する。number_of_tiles_in_picture_minus2は、0からPicSizeInCtbsY-2の範囲内であるものとする。
subtile_width_minus1 plus 1は、コーディングツリーユニット内のサブタイルユニットの幅を指定する。subtile_width_minus1は、0からPicWidthInCtbsY-1の範囲内であるものとする。
subtile_height_minus1 plus 1は、コーディングツリーユニット内のサブタイルユニットの高さを指定する。subtile_height_minus1は、0からPicHeightInCtbsY-1の範囲内であるものとする。
use_previous_tile_size_flag=1は、現在のタイルのサイズが前のタイルのサイズに等しいことを指定する。use_previous_tile_size_flag=0は、現在のタイルのサイズが前のタイルのサイズと等しくないことを指定する。存在しない場合、use_previous_tile_size_flagの値は0に等しいと推定される。
【0091】
use_previous_tile_size_flagが1に等しいとき、配列tile_height_minus1およびtile_width_minus1のi番目の要素の値は、以下のように導出される。
tile_height_minus1[i]=tile_height_minus1[i-1]
tile_width_minus1[i]=tile_width_minus1[i-1]
tile_width_minus1[i] plus 1は、タイルユニット内のi番目のタイルの幅を指定する。
tile_height_minus1[i] plus 1は、タイルユニット内のi番目のタイルの高さを指定する。
【0092】
変数tile_idの値および2次元配列CTU_tile_assigmentの値は、以下のように導出される。
【0093】
値tile_idにCTU_tile_assignment[tile_coordinate_x+ctu_y][tile_coordinate_y+y]を割り振る前に、以下の条件のすべてが真であることが、ビットストリーム適合の要件である。
1.tile_coordinate_y+ctu_yの値は、PicHeightInCtbsY未満であるものとする。
2.tile_coordinate_x+ctu_xの値は、PicWidthInCtbsY未満であるものとする。
3.CTU_tile_assignment[tile_coordinate_x+ctu_x][tile_coordinate_y+ctu_y]の値は、「タイル無し」に等しいものとする。
【0094】
一実施形態では、上記の条件1および2は任意選択である。
【0095】
さらに、変数tile_id、およびtile_height_minus1[i]のセマンティクスで指定された2次元配列CTU_tile_assigmentの値の導出が、iの値ごとに実行される。これは、たとえ以下の場合であっても、変数iの各ループの後に導出が実行されることを意味する。
1.use_previous tile_size_flagが存在しない場合
2.use_previous tile_size_flagが0に等しいとき、および
3.use_previous tile_size_flagが1に等しいとき。
【0096】
同様に、3つのビットストリーム適合条件は、任意のループで行われる任意の割り振りについて真である。
【0097】
一実施形態では、各ループについて、すなわちiの各値について、ブレークステートメントに到達することが必要である。
【0098】
一実施形態では、CTU_tile_assigmentのすべての割り振りの後、CTU_tile_assignment[x][y]は、0からPicWidthInCtbsY-1までの範囲の任意のx、および0からPicHeightInCtbsY-1までの範囲の任意のyについて「タイル無し」に等しくないことが必要である。
【0099】
第4の実施形態-ステータスフラグ
第4の実施形態では、本開示は、所与のユニット、たとえば、ユニットU、またはサブタイル、たとえば、サブタイルSSが、新しいタイルを開始するか、開始しないかを決定するための方法を提供する。たとえば、サブタイルおよび/またはユニットのサイズが規定され、次いで、符号化または復号のためにあらかじめ規定された順序(たとえば、ラスタ走査順序)で走査される。
【0100】
たとえば、一実施形態では、サブタイルは、ユニット(たとえば、CTU)またはユニットの長方形セットと同じサイズであると規定され、次いで、ラスタ走査順序で走査される。ラスタ走査では、走査は、定常のレートで左から右に水平に行われ、次いで、ブランクになり、すぐに左に戻り、そこでオンに戻り、垂直位置が定常的に増加するように次のラインを掃引する。もちろん、当業者は、ラスタ走査順序がこの実施形態および他の実施形態において一例として説明されるとき、他のあらかじめ規定された走査順序を使用することができる(たとえば、水平に右から左に走査する、または最初に垂直に走査する)ことを諒解されよう。
【0101】
特定の走査順序にかかわらず、1つまたは複数の実施形態では、各サブタイルについて、順番にフラグのシーケンスがあり、各フラグは、所与のサブタイルが新しいタイルを開始するかどうかを指定する。1つまたは複数の実施形態では、左上に配置された別のサブタイルが同じタイルに属するとき、所与のサブタイルについてのフラグは送られない。そのような場合、所与のサブタイルと他のサブタイルの両方が同じタイル内に配置されていると推定することができる。本明細書における1つまたは複数の実施形態は、サブタイルを参照して説明される。しかしながら、当業者は、本教示が、所与のサブタイルまたはユニットが新しいタイルを開始するかどうかを指定するために適用可能であることを諒解されよう(たとえば、サブタイルがユニットであるか、またはサブタイルが所与のピクチャのために採用されない場合)。同様に、当業者は、ユニットに関して指定された1つまたは複数の実施形態が、あらかじめ規定された順序でサブタイルを走査することに適用可能であることを諒解されよう。
【0102】
表4は、走査されているサブタイルの位置決めが、サブタイルが新しいタイルを開始することを示すかどうか、およびユニットが新しいタイルを開始するかどうかを示すフラグを設定する値(もしあれば)を示すステータスフラグの例示的な実施形態をグラフィカルに示す。同様のステータスフラグシステムを使用して、所与のユニットが新しいタイルを開始するかどうかを示すことができる。
【0103】
エラー!参照元は見つかりませんでした。に示されるすべてのケースについて、最後の行における曖昧なケース(すなわち、走査されているサブタイルがタイルB内にあるか、タイルC内にあるか、または新しいタイルを開始するか)を除いて、1つのフラグおよび他の以前走査されたサブタイル(すなわち、走査されているサブタイルの左上に配置されたサブタイルが存在する場合、それらのサブタイル)の既知のステータスは、現在走査されているサブタイルの正しいステータスを指定するのに十分である。表4の最後の行に示されるケースにおける曖昧性を除去するために、本開示は、曖昧性除去ビットを導入する。たとえば、一実施形態では、規定された走査順序のすべての曖昧性除去ビットが、曖昧性除去配列に配置される。次いで、配列は、デコーダに明示的にシグナリングされる。
【0104】
表5は、この実施形態で使用するための第1の例示的なシンタックスを提供する。表5に示すシンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。加えて、単に例示のために、サブタイルのサイズは、CTUのサイズに等しい。もちろん、当業者は、サブタイルをいくつかのユニットまたはCTUとすることができ、またはシンタックスがユニットに適用され得ることを理解するであろう。
【0105】
表5のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1に設定されると、PPSを参照する各ピクチャ内にタイルが複数あることを指定する。このフラグが0に設定されると、PPSを参照する各ピクチャ内にタイルが1つしかないことを指定する。
tiles_status_flag_enabled このフラグが1に設定されると、タイリング構造がステータスフラグ方法を使用してシグナリングされることを指定する。このフラグが0に設定されると、タイリング構造がタイルステータスフラグ方法を使用してシグナリングされないことを指定する。
ctu_status[i] これが0に設定されると、copy_id()を使用して、現在のCTUのタイルIDが使用可能な近接するタイルからコピーされることを指定する。これが1に設定されると、set_new_id()を使用して、現在のCTUに新しいタイルIDが設定されることを指定する。
【0106】
表4に見られるように、CTUステータスが未決定のままである事例(たとえば、表4の行2、3、5、6、および8のもの)がいくつかある。これらの場合、ステータスは、表6に見られるシグナリングの詳細によって指定されるように決定することができる。
【0107】
ctu_status_disambiguator_flag:このフラグは、必要なときにCTUのステータスを決定するためにcut_statusとともに使用される曖昧性除去ビットを含む。このビットストリームの長さは、ctu_statusにおける曖昧性除去ビットの数に等しい。ctu_status_disambiguator_flagは、ctu_status_flagの値が0である場合にのみ設定される。これらの場合、disambiguator_bit=0のとき、cut_statusは、左側のユニットからコピーされるものとする。disambiguator_bit=1のとき、ctu_statusは、上のユニットからコピーされるものとする。
exist():この関数は、タイルID(tileIdAboveLeft、tileIdAbove、またはtileIdLeft)を有する近接するブロックについてタイルIDが存在するかどうかを示す。
set_new_id():この関数は、現在のCTUについて新しいタイルIDを設定する。
copy_id():この関数は、表4に提供される詳細に従って、近接するブロックからタイルIDをコピーする。
assign_ctu_to_tile():この関数は、ctu_statusフラグおよびctu_status_disambiguatorフラグを使用して、所与のCTUを明示的なタイルIDに割り振る。この関数はまた、所与のCTUのすぐ左側、所与のCTUのすぐ上、および所与のCTUのすぐ上と左側(すなわち、斜め上)に配置された近接CTUが存在する場合、そのステータスを所与のCTUに割り振る。
read_more_tiles():この関数は、以下のように、ラスタ走査順序など、あらかじめ規定された走査順序で読み取られる。
タイルに割り振られていないCTUがピクチャ内に少なくとも1つある場合、read_more_tiles()の戻り値をTRUEに設定する。
そうでなければ、read_more_tiles()の戻り値をFALSEに設定する。
【0108】
この実施形態の一態様では、新しいタイルがシグナリングされるとき、タイルIDがシグナリングされる。タイルIDは、新しいタイルIDまたは以前に規定されたタイルIDである。このようにタイルIDをシグナリングすることによって、非長方形または不連続のタイルを有するよりフレキシブルなタイル構造が可能になる。
【0109】
ビットカウント
図17A図17Cは、一実施形態によれば、図14に見られるピクチャのタイルパーティション(図17A)のctu_statusビット(図17B)を示す。この実施形態では、空であるセルは、そのCTUのビットがctu_statusでシグナリングされないことを示す。「?」インジケータは、曖昧性除去ビットが必要であることを表す。図17Cは、対応するctu_status曖昧性除去ビットを示す。
【0110】
表7は、この実施形態で使用するための第2の例示的なシンタックスを提供する。表7に示されるシンタックスは、表5に見られる第1の例示的なシンタックスに取って代わり、現在存在するHEVCビデオコーディング仕様の上に実装することができる。さらに、単に例示のために、ユニットのサイズは、CTUのサイズに等しい。
【0111】
表7のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1に設定されると、各ピクチャ内の複数のタイルがPPSを参照することを示す。このフラグが0に設定されると、各ピクチャ内の単一のタイルのみがPPSを参照することを示す。
tile_flag:このフラグは、現在のCTUのタイルIDが、近接するCTUのタイルIDに等しくなるように設定されているか、または新しいタイルを開始するかを示す。
【0112】
tile_flagが0に等しいとき、CTU_tile_assignment[x][y]の値は、以下のように指定される。
CTU_tile_assignment[x][y]=previous_tile;
tile_flagが1に等しいとき、CTU_tile_assignment[x][y]およびtile_idの値は、以下のように指定される。
CTU_tile_assignment[x][y]=tile_id;
tile_id=tile_id+1;
tile_flag1:このフラグは、現在のCTUのタイルIDが、近接するCTUのタイルIDに等しくなるように設定されているか、または新しいタイルを開始するかを示す。
【0113】
tile_flagが1に設定されているとき、CTU_tile_assignment[x][y]およびtile_idの値は、以下のように指定される。
CTU_tile_assignment[x][y]=tile_id;
tile_id=tile_id+1;
tile_flag2:このフラグは、現在のCTUのタイルIDが現在のCTUのすぐ上の、または現在のCTUのすぐ左側のCTUのタイルIDに等しくなるように設定されているかを示す。
【0114】
tile_flag2が0に設定されているとき、CTU_tile_assignment[x][y]の値は、以下のように現在のCTUの左側のCTUの値に設定される。
CTU_tile_assignment[x][y]=CTU_tile_assignment[x][y-1];
tile_flag2が1に設定されているとき、CTU_tile_assignment[x][y]の値は、以下のように現在のCTUのすぐ上のCTUの値に設定される。
CTU_tile_assignment[x][y]=CTU_tile_assignment[x-1][y];
【0115】
第5の実施形態-コピーサイズタイルモード
第4の実施形態では、本開示は、上述の第1の実施形態によって提供されるものと同様のタイルを走査するための方法を提供する。しかしながら、この第5の実施形態は、以下の追加の特徴のうちの1つまたは複数を含む。特に、この実施形態は、以下も可能である。
1.「伝統的なタイルモード」における伝統的なタイルの使用および「フレキシブルタイルモード」におけるフレキシブルタイルの使用。動作するモードの決定は、たとえば、flexible_tiles_enabled_flagなどのフラグを使用してシグナリングされる、および/または
2.サブタイルを使用することができる。サブタイルの粒度を、明示的にシグナリングすることができる。本明細書では、サブタイルのサイズを指定するために、別の単語の粒度が使用される。たとえば、サブタイルのサイズは、xおよびy座標系において、またはユニットサイズに関して指定される。1つまたは複数の実施形態における粒度は、明示的にシグナリングされる。代替的に、粒度は、あらかじめ規定することができる。
3.タイルの特定のサイズ仕様。たとえば、この実施形態は、現在のタイルのための最新のタイルのサイズ、または現在のタイルのすぐ左または上のタイルのサイズを使用して指定することができる。指定されたサイズは、たとえば、モード値をシグナリングすることによって、現在のタイルまたはすべての残りのタイルに適用される。
【0116】
図18Aは、この実施形態による、タイルを構築し、シグナリングするための方法110を示すフロー図である。方法110は、エンコーダによって実施され、ピクチャがタイルを1つのみ有するかどうかをエンコーダが決定することによって始まる(ボックス112)。そうである場合、エンコーダは、方法110を終了する前に、tile_enabled_flag=0に設定する(ボックス114)。しかしながら、ピクチャが複数のタイルを有するとエンコーダが決定した場合、エンコーダは、タイルの空のリストを作成する(ボックス116)。次いで、タイルが残っている間、あらかじめ規定された走査順序に従って(ボックス118)、エンコーダは、copy_tile_size_modeを設定する(ボックス120)。copy_tile_size_modeが0に設定されている場合(ボックス122)、エンコーダは、タイルの高さおよび幅を含めて、タイルをタイルのリストに追加する(ボックス124)。次いで、処理が終了する。任意選択で、パーティション構造は、サブタイルを採用し、サブタイルは、1つまたは複数の実施形態では、たとえば図18Aの方法110に明示的に示されている。サブタイルが使用される場合、フラグを使用して(たとえば、1に設定して)、サブタイルの使用をシグナリングすることができ、粒度を、本明細書で説明するようにシグナリングすることができる。そうでなければ、フラグを0に設定することができ、代わりに、ユニット(たとえばCTU)の粒度が使用される。サブタイルインジケーションおよび粒度は、tile_enabled_flagを設定するシグナリングの前または後にシグナリングすることができる。
【0117】
デコーダに関して、デコーダは、エンコーダによって送られたタイルを構文解析し、構築する。この実施形態では、デコーダは、図18B図18Cに示す方法130に従って、これらの機能を実行する。図18Bに見られるように、デコーダは、tile_enabled_flagが0に設定されているかどうかを決定する(ボックス132)。そうである場合、デコーダは、ピクチャが単一のタイルのみを含んでいることを知り、したがって、方法130は終了する。そうでなければ、デコーダは、flexible_tiles_enabled_flagが1に設定されたかどうかを決定する(ボックス134)。そうでない場合、デコーダは、従来のタイルを使用してその復号機能を実行する(ボックス136)。しかしながら、デコーダが、flexible_tiles_enabled_flagが1に設定されていないと決定した場合、デコーダは、タイルの処理を開始する。任意選択で、デコーダはまた、(上述のインジケーションによるように)サブタイルが採用されるかどうかを決定する。サブタイルが採用される場合、デコーダは、さらに、サブタイルの粒度を決定する。タイルがまだ処理されている間(ボックス138)、デコーダは、copy_tiles_size_mode値を構文解析し(ボックス140)、その値を使用して、現在のタイル(すなわち、現在処理されているタイル)の幅および高さを決定する(たとえば、サブタイルの粒度に関して)。
【0118】
特に、copy_tile_size_modeが0に等しい場合(ボックス142)、デコーダは、あらかじめ規定された走査順序に従ってその幅および長さによって指定される、エンコーダによって作成されたタイルリスト内の次のタイルを構文解析する(ボックス144)。
【0119】
copy_tile_size_modeが1に等しい場合(ボックス146)、デコーダは、最後にシグナリングされたタイルの幅および高さを現在のタイルの幅および高さにコピーする(ボックス148)。
【0120】
図18Cを参照すると、copy_tile_size_modeが2に等しい場合(ボックス150)、デコーダは、左タイルの幅および高さを現在のタイルの幅および高さにコピーする(ボックス152)。
【0121】
copy_tile_size_modeが3に等しい場合(ボックス154)、デコーダは、現在処理されているタイルのすぐ上のタイルの幅および高さを現在処理されているタイルの幅および高さにコピーする(ボックス156)。
【0122】
copy_tile_size_modeが4に等しく、タイルのリストの最後ではない間(ボックス158)、デコーダは、最後にシグナリングされたタイルの幅および高さを現在のタイルの幅および高さにコピーする(ボックス160)。
【0123】
copy_tile_size_modeが5に等しく、タイルのリストの最後ではない間(ボックス162)、デコーダは、タイルの幅および高さを現在のタイルのすぐ左にコピーし、これらの値を現在のタイルの幅および高さにコピーする(ボックス164)。
【0124】
copy_tile_size_modeが6に等しく、タイルのリストの最後ではない間(ボックス166)、デコーダは、現在のタイルのすぐ上のタイルの幅および高さを現在のタイルの幅および高さにコピーする(ボックス168)。
【0125】
表8は、この実施形態で使用するための例示的なシンタックスを提供する。表8に示すシンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。
【0126】
表8のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1であるとき、PPSを参照する各ピクチャに複数のタイルがあることを示す。このフラグが0であるとき、PPSを参照する各ピクチャがタイルを1つしか有していないことを示す。
flexible_tiles_enabled_flag:このフラグが1であるとき、フレキシブルタイルが規定されていることを示す。このフラグが0であるとき、フレキシブルタイルシンタックスを使用せずにタイルが規定されていることを示す。
sub_tiles_flag:このフラグが1に設定されているとき、サブタイルが使用されることを示す。
tile_horizontal_granularity:この値は、コーディングツリーユニットの単位でタイル水平粒度を指定する。
tile_vertical_granularity:この値は、コーディングツリーユニットの単位でタイル垂直粒度を指定する。
copy_tile_size_mode:この値は、現在のタイルサイズに関する決定がどのように行われるべきかを示す。特に:
copy_tile_size_mode=0は、タイルサイズが明示的にシグナリングされることを示す。
copy_tile_size_mode=1は、最後にシグナリングされたサイズが使用されることを示す。
copy_tile_size_mode=2は、現在のタイルの上/左のサンプルの左側のタイルサイズが使用されることを示す。
copy_tile_size_mode=3は、現在のタイルの上/左のサンプルより上のタイルサイズが使用されることを示す。
copy_tile_size_mode=4は、最後にシグナリングされたタイルがすべての残りのタイルに使用されることを示す。
copy_tile_size_mode=5は、現在のタイルの上/左のサンプルの左側のタイルがすべての残りのタイルに使用されることを示す。
copy_tile_size_mode=6は、現在のタイルの上/左のサンプルより上のタイルがすべての残りのタイルに使用されることを示す。
copy_from_last_signaled_tile():これは、最後にシグナリングされたタイルの幅および長さを現在のタイルの幅および長さにコピーする関数である。
copy_from_above_tile():これは、現在のタイルの上のタイルの幅および長さを現在のタイルの幅および長さにコピーする関数である。
copy_from_left_tile():これは、現在のタイルの左側のタイルの幅および長さを現在のタイルの幅および長さにコピーする関数である。
【0127】
第6の実施形態-サブタイルを使用したタイルID
この実施形態では、本開示は、ピクチャをサブタイルにパーティショニングし、次いで、あらかじめ規定された走査順序でサブタイルを走査するための方法を提供する。このプロセス中、サブタイルごとにタイル識別子(タイルid)が指定される。あらかじめ規定された順序は、上述したようにラスタ走査順であり、サブタイルサイズは、1つのCTUユニットのサイズに等しいか、またはサブタイルサイズは、異なるサイズであるように指定される(たとえば、明示的なコードワードを使用して)。もちろん、当業者は、タイトル識別子が、代替または追加として、ユニットに対しても指定され得ることを理解されよう。
【0128】
図19Aおよび図19Bは、タイルを構築し、シグナリングするために、それぞれエンコーダおよびデコーダによって実施される方法を示すフロー図である。特に、図19Aは、エンコーダがタイルを構築し、シグナリングする方法170を提供する。方法170に見られるように、エンコーダは、いくつかの実施形態では、サブタイルが使用されるか、またはユニットが使用されるかについての初期決定を行うことができる(ボックス171)。一実施形態では、エンコーダは、サブタイルサイズがCTUサイズに等しいかどうかをチェックすることによってこの決定を行い、その結果をビットストリーム12内のフラグでシグナリングする。サブタイルが使用される場合、サブタイルの粒度を決定することができる(ボックス172)(たとえば、ビットストリーム12内のCTUに等しくないサブタイルサイズをシグナリングする)。次いで、ピクチャ内のサブタイルごとに(ボックス173)、エンコーダは、ビットストリーム内のサブタイルについてのタイルIDをシグナリングし(ボックス175)、タイルIDをサブタイルに割り振る(ボックス176)。
【0129】
しかしながら、サブタイルが使用されない場合(ボックス171)、方法170は、ピクチャ10内にさらにユニットUが存在するかどうかを確かめる(ボックス175)。そうでない場合、方法170は終了する。しかしながら、ユニットがピクチャ10に残っている限り、方法170は、ユニットが関連付けられるタイルのタイルIDをサブタイルに割り振る。
【0130】
図19Bに見られる方法180は、デコーダにおいて実施される。特に、いくつかの実施形態では、デコーダは、サブタイルが使用されるか、またはユニットが使用されるかについての初期決定を行い得る(ボックス181)。たとえば、一実施形態では、デコーダは、サブタイルサイズがCTUサイズに等しいかどうかを示すビットストリーム12に含まれるフラグに基づいて決定を行う。サブタイルが使用されることをフラグが示す場合、デコーダは、サブタイルの粒度を決定する(ボックス182)。たとえば、ビットストリーム12内の情報が、サブタイルサイズがCTUサイズに等しくないことを示す場合、デコーダは、サブタイルサイズを構文解析してサブタイル粒度を決定する。次いで、ピクチャ内のサブタイルごとに(ボックス183)、エンコーダは、ビットストリーム内のサブタイルについてのタイルIDをシグナリングし(ボックス185)、タイルIDをサブタイルに割り振る(ボックス186)。
【0131】
しかしながら、サブタイルが使用されない場合(ボックス181)、方法180は、ピクチャ10内にさらにユニットUが存在するかどうかを確かめる(ボックス184)。そうでない場合、方法170は終了する。しかしながら、ユニットがピクチャ10に残っている限り、方法180は、エンコーダが、ユニットが関連付けられるタイルのタイルIDをサブタイルに割り振ることを要求する。
【0132】
HEVCビデオコーディング仕様の上にある実施形態5のための例示的なシンタックステーブルおよびセマンティクスの記述は、表9のように見え得る。
【0133】
表9のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1に設定されているとき、PPSを参照する各ピクチャにタイルが複数あることを示す。このフラグが0に設定されているとき、PPSを参照する各ピクチャ内にタイルが1つしかないことを指定する。
sub_tile_size_equal_to_ctu_size_flag:このフラグが1に設定されているとき、サブタイルの高さおよび幅が両方ともCTUの高さおよび幅に等しいことを示す。sub_tile_size_equal_to_ctu_size_flag=0は、サブタイルの高さおよび幅が両方ともCTUの高さおよび幅に等しくないことを指定する。
【0134】
sub_tile_size_equal_to_ctu_size_flag=1であるとき、num_sub_tiles_horizontal、num_sub_tiles_vertical、sub_tile_width_minus1、およびsub_tile_height_minus1は、以下のように指定される。
num_sub_tiles_horizontal=PicWidthInCtbsY
num_sub_tiles_vertical=PicHeightInCtbsY
sub_tile_width_minus1=0
sub_tile_height_minus1=0
sub_tile_width_minus1 plus 1:この値は、コーディングツリーユニットの単位でサブタイル幅を指定する。変数num_sub_tiles_horizontalは、PicWidthInCtbsY/(sub_tile_width_minus1+1)に設定される。
sub_tile_height_minus1 plus 1:この値は、コーディングツリーユニットの単位でサブタイルの高さを指定する。変数num_sub_tiles_verticalは、PicHeightInCtbsY/(sub_tile_height_minus1+1)に設定される。
tile_id[y][x]は、座標yおよびxを有するサブタイルのタイルIDを指定する。
CTU_tile_assignmentの値:CTU_tile_assignmentの値は、たとえば以下のように指定される。
【0135】
本実施形態の代替バージョンでは、sub_tile_size_equal_to_ctu_size_flagは、シンタックスに存在せず、sub_tile_width_minus1およびsub_tile_height_minus1が常に設定される。本実施形態のまた別の代替バージョンでは、sub_tile_size_equal_to_ctu_size_flag、sub_tile_width_minus1、およびsub_tile_height_minus1のいずれもシンタックスに存在せず、サブタイルの高さおよび幅は、CTUの高さおよび幅に設定され、すなわち、sub_tile_width_minus1は0に設定され、sub_tile_height_minus1は0に設定され、num_sub_tiles_horizontalはPicWidthInCtbsYに設定され、num_sub_tiles_verticalはPicHeightInCtbsYに設定される。
【0136】
第7の実施形態 一意のサブタイルについてのコード値を有するサブタイルを使用するタイルID
この実施形態の態様は、一意のまたは独立したサブセグメントを示すために、本明細書で説明する他の実施形態(たとえば、第5の実施形態)に適用することができる。
【0137】
第1に、フレキシブルタイルが有効にされているかどうか、または現在のHEVCタイル構造など、従来のタイル構造が展開されているかどうかを決定するためにフラグが設定される。
【0138】
第2に、この実施形態は、0に等しいコード値など、固定のコード値を使用して独立したタイルをコード化するための方法を規定する。タイルは、サブタイルと同じサイズを有する場合(たとえば、1つのユニットもしくはCTU、または複数のユニットもしくはCTU)、独立していると規定される。この特徴は、所与のピクチャが複数の独立したタイルを含む場合、ビットを有益に節約する。
【0139】
第3に、この実施形態は、固定長コーディングを用いてタイルidのオプションの符号化を可能にする方法を規定する。そのような場合、タイルID値の固定長コーディングが使用されるかどうか、またはタイルID値の可変長コーディングが使用されるかどうかをシグナリングするためにフラグが使用される。
【0140】
当業者は、本開示がこれらの特徴および実施形態に限定されないことを諒解されよう。むしろ、様々な実施形態において、これらの特徴およびそれらがどのように組み合わされるかを変えることが可能である。さらに、すべての特徴が実装される必要はない。たとえば、フレキシブルタイルを示すためにフラグを使用すること、および独立したタイルをコード化する方法は、固定長コーディングでタイルIDを符号化する能力が利用できない場合であっても、一緒に使用することができる。
【0141】
表10は、この実施形態で使用するための例示的なシンタックスを提供する。表10に示すシンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。
【0142】
表10のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1に設定されているとき、PPSを参照する各ピクチャに複数のタイルがあることを示す。このフラグが0に設定されているとき、PPSを参照する各ピクチャ内にタイルが1つしかないことを示す。
flexible_tiles_enabled_flag:このフラグが1に設定されているとき、フレキシブルタイルが規定されていることを示す。このフラグが0に設定されているとき、フレキシブルタイルシンタックスを使用せずにタイルが規定されることを示す。
sub-tile_width:この値は、コーディングツリーユニットの単位でサブタイル幅を指定する。
sub-tile_height:この値は、コーディングツリーユニットの単位でサブタイルの高さを指定する。
use_zero_to_indicate_independent_tile_flag:このフラグが1に設定されているとき、独立したタイルが0に等しいtile_idでコード化されることを示す。独立したタイルは、サブタイル幅(たとえば、CTU)に等しいタイル幅と、サブタイル高さ(たとえば、CTU)に等しいタイル高さとを有するタイルである。このフラグが0に設定されているとき、独立したタイルが従属タイルと同じ方法でコード化されることを示す。
use_fixed_length_code_for_tile_id_flag:このフラグが1に設定されているとき、タイルidが固定長コーディングを使用して符号化されることを示す。このフラグが0に設定されているとき、タイルidが固定長コーディングを使用して符号化されることを示す。
number_of_unique_tile_id:これは、タイルが他のすべてのタイルに依存することを示すためにタイルIDに使用する値である。
tile_id[i][j]:この値は、座標iおよびjを有するサブタイル(たとえば、CTU)のタイルIDを指定する。
【0143】
第8の実施形態7-4分木分離フラグおよびフレキシブル分離フラグを使用したタイルへの分割
本開示の第8の実施形態では、ピクチャは、4分木および/またはフレキシブルタイルスプリッティングを使用してタイルに分割される。CUを分離するためのHEVCプロセスに類似する、4分木を使用して分割するためのこのプロセス。
【0144】
この実施形態の説明を簡単にするために、サブタイルは、CTUサイズに設定される。しかしながら、当業者は、本開示の他の実施形態について、1つまたは複数の実施形態におけるサブタイルサイズが、あらかじめ規定されているか、またはビットストリームで明示的にシグナリングされる(たとえば、CTUの長方形セットをシグナリングする)ことを容易に諒解されたい。
【0145】
加えて、すべてのタイルが、CTUに関して2の因数の幅および高さを有するわけではない。一実施形態では、4分木分離は、高さおよび幅が2の因数でない場合、整数分割を使用する。たとえば、図20に見られるように、所与のタイルTのサイズが5×7CTUである場合、4分木分離は、タイルを、それぞれサイズ2×3、2×4、3×3、および3×4のタイルT、T、T、Tに分割することになる。同様に、水平または垂直の「中間」分離も整数分割を使用する。
【0146】
「中間」分離は、長さNのCTUを有する所与のタイルAについて、Nが1よりも大きい正の整数であり、結果として生じる第1の分離タイルBが長さN/2を有し、第2の分離タイルCが長さN/2+N%2を有するように本明細書で規定され、ここで、「/」は、整数分割を示し、「%」は、モジュロ演算子を示す。タイルの長さは、タイルの幅、タイルの高さのいずれか、またはその両方とすることができる。
【0147】
たとえば、所与のタイルが1×5のサイズを有する場合、そのタイルは、本開示の実施形態によれば、2つのタイル、すなわち、1×2のサイズを有する第1のタイルと、1×3のサイズを有する第2のタイルとに分離され得る。
【0148】
図21A図21Bは、タイルを構築し、シグナリングするためにエンコーダによって実施される方法190を示す。図21Aに見られるように、エンコーダは、最初に、未完成タイルのリスト内の唯一のタイルとしてピクチャ/スライスを設定する(ボックス192)。次いで、エンコーダは、完成タイルの空のリストを作成する(ボックス194)。次いで、エンコーダは、任意の未完成タイルが利用可能であるかどうかを決定するためにチェックする(ボックス196)。そうでない場合、方法190は終了する。そうでなければ、エンコーダは、ラスタ走査順序で次の未完成タイルを取得する(ボックス198)。次いで、エンコーダは、タイルをさらに分離することができるかどうかを決定する(ボックス200)。そうでない場合、エンコーダは、未完成タイルのリストからタイルを除去し(ボックス202)、タイルID、タイル位置、およびタイル寸法を含めて、タイルを完成タイルのリストに追加する(ボックス204)。次いで、エンコーダは、タイルが4分木分離(または、高さもしくは幅がCTUの高さもしくは幅に等しい場合、「中間」水平もしくは垂直分離)に従って分離されるべきかどうかを示すフラグをシグナリングする(ボックス206)。フラグが分離を示す場合、エンコーダは、未完成タイルのリストから現在のタイルを除去し(ボックス208)、未完成タイルのリストに分離タイルを追加し(ボックス210)、その後、任意の他の未完成タイルが利用可能であるかどうかを決定するために戻る(ボックス196)。
【0149】
図21Bに見られるように、フラグが分離を示さない場合、エンコーダは、タイルをさらに分離すべきかどうかを示すフラグをシグナリングする(ボックス212)。タイルが分離されない場合、エンコーダは、任意の他の未完成タイルが利用可能であるかどうかを再度決定する(ボックス196)。しかしながら、タイルをさらに分離すべきである場合、エンコーダは、タイルを垂直方向に分離すべきか水平方向に分離すべきかを示すフラグをシグナリングする(ボックス214)。しかしながら、タイル幅がCTU幅に等しいか、またはタイル高さがCTU高さに等しいとき、垂直/水平分離インジケーションは必要ではないことに留意されたい。
【0150】
次いで、エンコーダは、タイルを分離すべき特定のCTU位置をシグナリングし(ボックス216)、その位置でタイルを分離する(ボックス218)。そのように分離すると、エンコーダは、未完成タイルのリストから現在のタイルを除去し、未完成タイルのリストに分離タイルを追加し(ボックス220)、その後、任意の他の未完成タイルが利用可能であるかどうかを決定するために戻る(ボックス196)。
【0151】
図21C図21Dは、図21A図21Bのエンコーダによって構築され、シグナリングされたタイルを構文解析するためにデコーダによって実施される方法230を示す。図21Cに見られるように、デコーダは、最初に、未完成タイルのリスト内の唯一のタイルとしてピクチャ/スライスを設定する(ボックス232)。次いで、デコーダは、完成タイルの空のリストを作成する(ボックス234)。次いで、デコーダは、任意の未完成タイルが利用可能であるかどうかを決定するためにチェックする(ボックス236)。そうでない場合、方法230は終了する。そうでなければ、デコーダは、ラスタ走査順序で次の未完成タイルを取得する(ボックス238)。次いで、デコーダは、タイルをさらに分離することができるかどうかを決定する(ボックス240)。そうでない場合、デコーダは、未完成タイルのリストからタイルを除去し(ボックス242)、タイルID、タイル位置、およびタイル寸法を含めて、タイルを完成タイルのリストに追加し(ボックス244)、任意の未完成タイルが利用可能であるかどうかをチェックするために戻る。タイルをさらに分離することができる場合、デコーダは、タイルが4分木分離(または、高さもしくは幅がCTUの高さもしくは幅に等しい場合、「中間」水平もしくは垂直分離)に従って分離されるべきかどうかを示すフラグを構文解析する(ボックス246)。フラグがそのような分離を示す場合、デコーダは、未完成タイルのリストから現在のタイルを除去し(ボックス248)、未完成タイルのリストに分離タイルを追加し(ボックス250)、その後、任意の他の未完成タイルが利用可能であるかどうかを決定するために戻る(ボックス236)。
【0152】
図21Dに見られるように、デコーダは、タイルをさらに分離すべきかどうかを決定するために、エンコーダによってシグナリングされたフラグを構文解析する(ボックス252)。タイルがさらに分離されない場合、デコーダは、任意の他の未完成タイルが利用可能であるかどうかを決定するために戻る(ボックス236)。しかしながら、タイルをさらに分離すべきである場合、デコーダは、タイルを垂直方向に分離すべきか水平方向に分離すべきかを示すフラグを構文解析する(ボックス254)。しかしながら、タイル幅がCTU幅に等しいか、またはタイル高さがCTU高さに等しいとき、垂直/水平分離を決定するためにこのフラグを構文解析する必要はないことに留意されたい。
【0153】
次いで、デコーダは、コードワードを構文解析して、タイルを分離すべき特定のCTU位置を決定し(ボックス256)、その位置でタイルを分離し(ボックス258)、その後、任意の他の未完成タイルが利用可能であるかどうかを決定するために戻る(ボックス236)。
【0154】
表11は、この実施形態で使用するための例示的なシンタックスを提供する。表11に示すシンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。
【0155】
表11のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1に設定されると、PPSを参照する各ピクチャに複数のタイルがあることを示す。このフラグが0に設定されると、PPSを参照する各ピクチャにタイルが1つしかないことを示す。
quadtree_split_flag:このフラグが1に設定されると、タイルは、tile_widthがctu_widthよりも大きく、tile_heightがctu_heightよりも大きい場合、4分木を使用して分離され、tile_widthがctu_widthに等しく、tile_heightがctu_heightよりも大きい場合、水平方向に分離され、tile_widthがctu_widthよりも大きく、tile_heightがctu_heightに等しい場合、垂直方向に分離されることを示す。このフラグが0に設定されると、タイルは4分木分離を使用して分離されないことを示す。tile_widthがctu_widthに等しく、tile_heightがctu_heightに等しいとき、ビットストリーム適合性は、quadtree_split_flagの値が0に等しいことを必要とすることに留意されたい。
flexible_split_flag:このフラグが1に設定されると、フレキシブルタイル分離を使用してタイルが分離されることを示す。このフラグが0に設定されると、タイルがさらに分離されないことを示す。
split_in_horizontal_direction_flag:このフラグが1に設定されると、フレキシブル分離が水平方向に行われることを示す。このフラグが0に設定されると、フレキシブル分離が垂直方向に行われることを示す。split_in_horizontal_direction_flagが存在しない場合、フラグ値は、tile_widthがctu_widthに等しく、tile_heightがctu_heightよりも大きい場合、1と推定され、tile_widthがctu_widthよりも大きく、tile_heightがctu_heightに等しい場合、0と推定される。
split_position_minus1:フレキシブル分離の分離位置をCTUの単位で指定する。split_position_minus1は、split_in_horizontal_direction_flagが1に設定されている場合、0からtile_widthー2の範囲、split_in_horizontal_direction_flagが0に等しい場合、0からtile_heightー2の範囲であるものとする。
read next_tile():この関数は、タイルを再帰的に読み取り、現在のタイルについてもはや分離を行わない場合、ラスタ走査順で次のタイルに移動する。以下のいずれかのケースに該当する場合、さらなる分離は必要ない。
1.タイル幅はCTU幅に等しく、タイル高さはCTU高さに等しい、および/または
2.flexible_split_flagは、0に設定されている。
【0156】
タイルがさらに分離されないと決定されたとき、タイルID、そのxおよびy位置、幅および高さを含めて、タイルが、完成タイルのリストに追加される。
split_tile_horizontally():この関数は、現在のタイルを、CTU高さに関して、位置tile_height/2で、タイルAおよびタイルBに水平方向に分離し、分割は整数分割である。
split_tile_vertically():この関数は、現在のタイルを、CTU幅の単位で、位置tile_width/2で、タイルAおよびタイルBに垂直方向に分離し、分割は整数分割である。
split_tile_using_quadtree():この関数は、現在のタイルを、CTU高さに関して、位置tile_height/2で、およびCTU幅に関して、tile_width/2で、タイルA、タイルB、タイルC、およびタイルDに水平方向および垂直方向に分離し、分割は整数分割である。
split_tile_using_flexible_split():この関数は、現在のタイルを、位置split_position_minus1 plus 1で、split_in_horizontal_directionが1に等しい場合、水平方向に、または、split_in_horizontal_direction_flagが0に等しい場合、垂直方向に、タイルAおよびタイルBに分離する。
【0157】
本開示の実施形態によれば、同じタイル構造を、シンタックスの異なる変形で表すことができる。すなわち、分離は、異なる順序とすることができるが、依然として同じ結果を達成することができる。
【0158】
加えて、許容値よりも高いsplit_position_minus1値を割り振ることがしばしば可能である。たとえば、tile_widthが6である場合、タイルの5つの分離位置のいずれかを選択するために3ビットが必要である。したがって、このケースでは、2-5=3個の位置を選択することはできないが、セマンティクスの制約なしに位置を選択することが可能であり得る。一実施形態では、位置の数が2よりも大きい場合、追加の位置は、構文解析における次のフラグをシグナリングするために使用される。少なくとも2つの位置が利用可能である場合、次のquadtree_split_flagは、利用可能であれば、split_in_horizontal_directionが0に等しい場合、split_position_minus1+1=tile_widthである場合、またはsplit_in_horizontal_directionが1に等しい場合、split_position_minus1+1=tile_height場合、0に設定される。次のquadtree_split_flagは、split_in_horizontal_directionが0に等しい場合、split_position_minus1+1=tile_width+1である場合、またはsplit_in_horizontal_directionが1に等しい場合、split_position_minus1+1=tile_height+1の場合、1に設定される。
【0159】
この実施形態では、quadtree_split_flagは、図14のようなピクチャのタイル構造では1に設定されず、これは、すべてのタイル分離終了が2ビットを要することを意味する。いくつかの実施形態では、シンタックス要素の順序は、提案されたタイルシンタックスで提供されるものとは異なり得る。たとえば、flexible_split_flagは、quadtree_split_flagの前に置くことができ、0に等しいquad_tree_split_flagは、タイルのさらなる分離を終了する。この例では、図15のタイル構造は、19+10=29ビットを使用して表すことができ、図14のタイル構造は、73-19=54ビットを使用して表すことができる。一実施形態では、タイル構造を構文解析する前に、quad_tree_split_flagまたはflexible_split_flagを最初に構文解析すべきかどうかを示す追加のフラグをシグナリングすることができる。さらに別の実施形態では、quadtree split_flagは使用されない。むしろ、flexible_split_flagのみが使用される。この態様では、split_in_horizontal_direction_flagの後に、フラグ「split_midways_flag」を使用して、タイルを中間で分離すべきかどうか、またはその位置で分離を行うために位置split_position_minus1を読み取るべきかどうかを指定することができる。
【0160】
第9の実施形態8-分割線
この実施形態では、タイル構造は、タイル間の境界を指定することによって表される。本開示内では、タイル間の境界は、「分割線」とも呼ばれる。
【0161】
この実施形態の一態様では、分割線は、それらの始点および終了点によって表される直線である。開始点および終了点は、分割線に影響を及ぼすことなく交換可能であるので、以下、両者を終了点と呼ぶ。
【0162】
分割線は水平または垂直のいずれかであるので、3つの座標および方向フラグは、各線を一意に表すのに十分である。さらに、この実施形態は、水平分割線のグループをシグナリングするために1つのフラグを使用し、垂直分割線のグループをシグナリングするために1つのフラグを使用する。これにより、総ビットカウントがさらに低減される。
【0163】
たとえば、図14に示す例示的なタイル構造Sは、図22A図22Cに示すように、9つの水平および垂直分割線を使用して表すことができる。特に、図22Aは、この実施形態では、6つの水平線h~hと、3つの垂直線v~vとを有する例示的なタイル構造を示す。図22Bは、6つの水平線成分を示し、図22Cは、3つの垂直線成分を示す。これは、それぞれ、終了点の座標についての3*9=36個のコードワードと、水平および垂直の分割線についての2つのフラグとに等しい。
【0164】
図23Aは、所与のタイル構造についての水平および垂直の分割線を決定するためにエンコーダで実施される方法260を示すフロー図である。単に例示のために、方法260は、図14に見られるピクチャについてのタイリング構造の文脈で説明される。
【0165】
図23Aに見られるように、エンコーダは、tile_enabled_flagの値を決定する(ボックス262)。このフラグが0にセットされている場合、ピクチャが、ピクチャと同じ幅および高さを有するタイルを1つのみ含むことを意味する。したがって、プロセスが終了する。
【0166】
しかしながら、このフラグが0にセットされていない場合、エンコーダは、所望のタイリング構造を形成するすべての水平分割線(AHDL)のリスト(ボックス264)と、所望のタイリング構造を形成するすべての垂直分割線(AVDL)のリスト(ボックス266)とを作成する。AHDLが空でない場合(ボックス268)、エンコーダは、水平分割線をシグナリングし、AHDLをデコーダに送る(ボックス270)。同様に、AVDLが空でない場合(ボックス272)、エンコーダは、垂直分割線をシグナリングし、AVDLをデコーダに送る(ボックス274)。AHDLおよびAVDLを作成し、シグナリングする順序は、本実施形態の一般的な態様に影響を及ぼすことなく逆にされ得る。
【0167】
図23Bは、対応する水平および垂直の分割線により表された所与のタイル構造を有するタイルを処理するためにデコーダにおいて実施される方法280を示すフロー図である。上記のように、デコーダ機能のこの実施形態は、図14に見られるピクチャのタイリング構造の文脈で説明される。しかしながら、これは、説明を容易にするためだけのものである。
【0168】
図23Bに見られるように、デコーダは、最初に、tile_enabled_flagが0に設定されているかどうかを決定する(ボックス282)。このフラグが0にセットされている場合、ピクチャが、ピクチャと同じ幅および高さを有するタイルを1つのみ含むことを意味する。したがって、プロセスが終了する。
【0169】
しかしながら、フラグが0にセットされていない場合、デコーダは、空のcomplete_tile_listを作成し(ボックス284)、AHDLを構文解析し、horizontal_divider_lines(HDL)のリストを作成する(ボックス286)。デコーダはまた、AVDLを構文解析し、vertical_divider_lines(VDL)のリストを作成する(ボックス288)。AHDLおよびAVDLを構文解析する順序は、実施形態の一般的な態様に影響を及ぼすことなく逆にされ得る。
【0170】
次いで、デコーダは、ピクチャ境界、HDLおよびVDLによって作成されたすべてのコーナーおよびそれらの方向を含むcorner_listを作成する(ボックス290)。たとえば、図22の図を参照すると、交点「┼」は、corner_list内の4つの別個のコーナーを指定し、T字接合「├」または「┤」または「┬」または「┴」は、2つの別個のコーナー点を指定する。
【0171】
corner_listが作成され、ポピュレートされると、デコーダは、そのリストを処理する。特に、corner_listが空でない限り(ボックス292)、デコーダは、あらかじめ規定された走査順序で1つまたは複数のコーナーを取得する。特に、デコーダは、走査順序で第1のコーナーを選び、corner_listからタイルを形成する3つの対応するコーナーを見つける(ボックス294)。次いで、デコーダは、タイルをcomplete_tile_listに追加し(ボックス296)、corner_listから使用された4つのコーナーを除去する(ボックス298)。このプロセスは、corner_listが空になるまで続行する。
【0172】
表12は、この実施形態で使用するための例示的なシンタックスを提供する。表12に示すシンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。ピクチャ境界上に位置していない分割線の水平/垂直リスト内の各終了点は、垂直/水平リスト内の1つの分割線の長さ上に位置するはずである(すなわち、別の開始点または終了点ではない)。これは、適切なタイルパーティショニングを保証するのに役立つ。
【0173】
表12のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1に設定されると、PPSを参照する各ピクチャに複数のタイルがあることを示す。このフラグが0に設定されると、PPSを参照する各ピクチャにタイルが1つしかないことを示す。
tile_divider_line_enabled_flag:このフラグが1に設定されると、分割線がタイリング構造を表すために使用されることを示す。このフラグが0に設定されると、分割線がタイリング構造を表すために使用されないことを示す。
horizontal_divider_lines_count:この値は、水平分割線の数を指定する。
vertical_divider_lines_count:この値は、垂直分割線の数を指定する。
horizontal_divider_lines[i]:この値は、すべての水平分割線をリストする。分割線は、その端部の座標によって指定される。このリスト内のすべての分割線は水平であるので、3つの座標は、各分割線を一意に表すのに十分であり、すなわち、単一のy値および2つのx値である。
vertical_divider_lines[i]:この値は、すべての垂直分割線をリストする。分割線は、その端部の座標によって指定される。このリスト内のすべての分割線は垂直であるので、各分割線を一意に表すのに3つの座標で十分である。すなわち、2つのy値と1つのx値である。
corner_list:これは、位置および方向によって表されるすべてのコーナー点のリストである(┌,┐,└,┘)。このリストは、すべてのピクチャ境界ならびにすべての水平および垂直の分割線(それらの交差を含む)を考慮する。
【0174】
この実施形態の一変形形態では、サブタイルが使用され、分割線の終了点の座標がサブタイル座標で与えられる。サブタイルサイズは、あらかじめ規定されている。代替的に、サブタイルサイズは、明示的にシグナリングされる。サブタイル座標を使用することにより、より小さいコードワードを使用して終了点の座標を表すことができるより粗いグリッドが作成されるので、ビットが節約される。
【0175】
この実施形態のまた別の変形形態では、フルグリッドが想定される。次いで、除去すべき分割線の開始点および終了点が指定される。図15に示されるタイリング構造を表すために、この実施形態は、除去されるべき6つの分割線を表し、したがって、パーティション構造を表すために、水平および垂直の分割線のグループについて3×6のコードワード+2つのコードワードが必要とされる。
【0176】
また別の態様では、分割線は、開始点および終了点に加えて屈曲点を有する。屈曲点は、「ジョイント」を表す。本開示によれば、ジョイントは、前の点への終了点として、および線の記述における次の点の開始点として機能する。
【0177】
分割線の複数のセットは、同じタイリング構造をもたらし得る。コーダは、最小数の分割線を最適化する。一態様では、分割線は、共通の部分を有する。別の態様では、分割線は、共通の部分を有さない。
【0178】
また別の態様では、分割線は、一度指定され、次いでグリッド内の所与の位置にコピーされる。
【0179】
第10の実施形態-T字接合
本開示のこの実施形態は、構造内にあり、特定の特性を有する点のセットを使用してタイル構造を説明する。これらの点は、本明細書では「T字接合」と呼ばれる。
【0180】
前に説明したように、タイル構造は、「分割線」とも呼ばれる内部線のセットを含む。各分割線は、分割線が終わる(すなわち、分割線がそれ以上続かない)2つの終了点を有する直線である。いわゆる「T字接合」は、分割線のこれらの終了点の位置で規定される。各分割線は、その分割線と別の垂直な分割線との接合(長方形のタイリング構造のために別の分割線の終了点ではない)で、または第1の分割線に垂直なピクチャの境界との接合で終わるので、各T字接合は、4つの考えられる形状、すなわち┴、┬、┤、および├のうちの1つを有する。したがって、各T字接合は、接合の位置と、4つの形状┴、┬、┤、および├のうちの1つとを使用して完全に表すことができる。各T字接合によって指し示される3つの方向は、本明細書では、そのT字接合の「アーム」と呼ばれる。
【0181】
次いで、ピクチャ10のタイリング構造Sは、各アームがピクチャの境界または別のT字接合位置のいずれかに到達するまで、ピクチャ内のすべてのT字接合の3つのアームすべてを拡張することによって、T字接合のセットから決定することができる。
【0182】
この実施形態の一態様では、T字接合のセットは、冗長なT字接合を除去することによって短縮される。本明細書で説明するように、冗長なT字接合は、ピクチャの境界上に位置し、それらが除去された場合にタイリング構造を変更しないものである。冗長なT字接合を有するタイリング構造Sの一例は、図24A図24Cに見られる。特に、図24Aは、例示的なタイリング構造Sを示す。図24Bは、すべてのT字接合のセットを示し、図24Cは、冗長なT字接合を除去した後のT字接合のセットを示す。冗長性は、1つずつチェックされる。これは、T字接合が冗長であり、したがって、セットから除去される場合、T字接合は、セット内の残りのT字接合についての冗長検査に含まれないことを意味する。
【0183】
図25A図25Bは、例示的なタイリング構造S(図25A)と、その特定のタイリング構造を表す対応するT字接合のセット(図25B)とを示す。
【0184】
図26Aは、前に説明したように、T字接合のセットを作成するためにエンコーダで実施される方法300を示すフロー図である。方法300は、エンコーダがタイル構造を選択し、そのタイル構造に対応する分割線のセットを作成することから始まる(ボックス302)。次いで、エンコーダは、T字接合のセット(STJ)を作成する(ボックス304)。この実施形態では、STJは、各T字接合の位置および向きに関する情報を含む。しかしながら、この実施形態では、これは、様々なプロセスを使用して達成することができるが、エンコーダは、作成されたセット内の分割線の各端部の位置に1つのT字接合を割り振り、分割線が水平であるか垂直であるか、および終了点が左/右または上/下の終了点であるかに基づいて、そのT字接合に適切な方向を割り振る。
【0185】
次いで、エンコーダは、冗長なT字接合を除去する。特に、ピクチャ境界上の各T字接合について(ボックス306)、エンコーダは、STJ内に同じ列番号または行番号を有する別のT字接合があるかどうかを決定し、そうである場合、方向が検査されているT字接合と異なるかどうかを決定する(ボックス308)。そうである場合、エンコーダは、そのT字接合を除去する(ボックス310)。
【0186】
図26Bは、前に説明したように、T字接合のセットを作成するためにデコーダにおいて実施される方法320を示すフロー図である。方法300は、デコーダがT字接合のセットまたはリストを復号することから始まる(ボックス322)。各T字接合は、位置および方向またはタイプを有する。4つの方向/タイプがある。2つのT字接合は、同じ位置を有さず、T字接合は、ピクチャの外側の位置を有さないものとする。タイルパーティション構造を導出する。次いで、デコーダは、各T字接合がその3つのアームすべてから、各アームが別のT字接合またはピクチャ境界に到達するまで延長されるように、T字接合のセットまたはリストからタイルパーティションを導出する(ボックス324)。
【0187】
表13は、この実施形態で使用するための例示的なシンタックスを提供する。表13に示すシンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。
【0188】
表13のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1に設定されると、PPSを参照する各ピクチャに複数のタイルがあることを示す。このフラグが0に設定されると、PPSを参照する各ピクチャにタイルが1つしかないことを示す。
tiles_enabled_flag:このフラグが1に設定されると、PPSを参照する各ピクチャに複数のタイルがあることを示す。このフラグが0に設定されると、PPSを参照する各ピクチャにタイルが1つしかないことを示す。
tile_t_junction_enabled_flag:このフラグが1に設定されると、T字接合がタイリング構造を表すために使用されることを示す。
t_junction_size_minus1 plus one:この値は、シグナリングされるT字接合の数を指定する。
t_junction_new_row_seq:この値は、T字接合の数に等しい長さを有するビットシーケンスである。
t_junction_new_row_seq:この値は1で始まり、T字接合が走査線を変更するたびにトグルする。例示的なケースとして、14のタイル構造の場合、t_junction_new_row_seqは、1110010110に設定される。これを使用すると、前のT字接合と同じ走査線に位置する限り、T字接合についてxとyの両方をシグナリングする必要はない。
t_junction_list:これは、規定された走査順序でのすべてのT字接合(それらの位置および方向を含む)のリストである。
complete_tile_list:これは、すべての完成タイルを保持するリストである。完成タイルは、その4つのコーナーで指定される。complete_tile_listは、ピクチャ内のすべてのユニットを含む1つのタイルで初期化される。
update_complete_tile_list():これは、完成タイルのリストを更新する関数として規定され、以下のように表される。
update_complete_tile_list(){
・t_junction_list[i]の位置および方向を使用して、各アームが別のT字接合またはピクチャ境界に達するまで、t_junction_list[i]のすべてのアームを拡張する。
・各アームの2つの辺のユニットが同じタイルに割り振られている場合、新しく作成されたタイルを追加することによって、完成タイルリストを更新する。
【0189】
この実施形態の変形では、サブタイルが使用され、T字接合の座標がサブタイル座標で与えられる。サブタイルサイズは、あらかじめ規定されている。代替的に、サブタイルサイズは、明示的にシグナリングされる。サブタイル座標を使用することにより、より小さいコードワードを使用してT字接合の座標を表すことができるより粗いグリッドが作成されるので、ビットが節約される。
【0190】
第11の実施形態-疎行列
この実施形態は、タイルの数が、通常、ピクチャ内のブロックの数よりもはるかに少ないという観察に基づいている。この実施形態は、タイリング構造を符号化するためにこのスパース性を活用する。
【0191】
より詳細には、各タイルは、その2つの対向するコーナーの位置で一意に指定することができる。簡単にするために、左上コーナーは、タイルの開始位置と見なされ、右下コーナーは、タイルの終了位置と見なされる。タイルの対応する開始点および終了点の座標は、ピクチャ幅および高さをピクチャユニット(たとえば、サブタイル、ユニット、またはCTU)の幅および高さで割ったものに等しい列および行の数の行列でマークされる。
【0192】
グリッド上の開始コーナー座標に対応する行列は、疎行列であると見なされ、たとえば、圧縮疎行列(CSC)または圧縮疎行(CSR)などの疎行列圧縮方法を使用して圧縮される。同じことが、端部コーナー行列にも当てはまる。疎行列を圧縮する別の可能な方法は、変換係数を圧縮するときに係数有意性または係数符号の行列についてHEVCで行われるのと同じまたは同様の方法で行列を圧縮することである。図27A図27Cは、タイリング構造が開始コーナーの行列および終了コーナーの行列にどのように関連するかを示す。特に、図27Aは、例示的なタイリング構造Sにパーティショニングされたピクチャ10を示す。図27Bは、開始コーナーの行列であり、図27Cは、終了コーナーの行列である。
【0193】
標準的なCSCおよびCSRとの1つの相違点は、開始コーナー行列および終了コーナー行列における非ゼロの値のみが1に等しいことである。したがって、ビットストリームで送られるのは、これらの非ゼロ値の位置のみである。
【0194】
図28Aは、前に説明したように、開始コーナー行列および終了コーナー行列を作成するためにエンコーダで実施される方法330を示すフロー図である。図28Aに見られるように、方法330は、ピクチャがタイルを1つのみ有するかどうかをエンコーダが決定することから始まる(ボックス332)。そうである場合、エンコーダは、tile_enabled_flagを0に設定し(ボックス334)、プロセスは終了する。
【0195】
ピクチャが2つ以上のタイルを有するとエンコーダが決定した場合、エンコーダは、対応する行列内の各タイルの開始点および終了点をマークすることによって、開始コーナー行列および終了コーナー行列を作成する(ボックス336)。次いで、エンコーダは、(たとえば、CSCまたはCSRを使用して)開始コーナービットストリームおよび終了コーナービットストリームを作成し(ボックス338)、sparse_matrix_compression_flagを設定することによって圧縮タイプ(CSCまたはCSR)をシグナリングする(ボックス340)。
【0196】
図28Bは、前に説明したように、開始コーナー行列および終了コーナー行列を処理するためにデコーダで実施される方法350を示すフロー図である。図28Bに見られるように、方法350は、デコーダが、tile_enabled_flagが0に設定されているかどうかを決定することから始まる(ボックス352)。そうである場合、ピクチャは、ピクチャと同じ幅および高さを有する単一のタイルのみを含むので、プロセスは終了する。
【0197】
しかしながら、ピクチャ内に2つ以上のタイルがある場合、デコーダは、タイルの空のリストを作成する(ボックス354)。次いで、デコーダは、ビットストリームからの圧縮された開始コーナーおよび終了コーナーを構文解析し、それらを開始コーナー行列および終了コーナー行列に拡張する(ボックス356)。次いで、開始コーナー行列に規定された開始コーナーがある場合(ボックス358)、デコーダは、ラスタ走査方向の次の開始コーナーの位置を読み取る(ボックス360)。
【0198】
次いで、デコーダは、終了コーナー行列内の対応する終了コーナーを特定し、タイル(たとえば、タイル位置およびタイルID、または、たとえば、タイル位置ならびに幅および高さ)をcomplete_tile_listに追加する(ボックス362)。次いで、デコーダは、行列内の対応する開始コーナーおよび終了コーナーをゼロに設定し、プロセスを繰り返す。
【0199】
サニティチェックとして、デコーダは、以下を決定することができる。
・開始コーナーの数(開始コーナー行列のもの)は、タイルの数に等しい。
・終了コーナーの数(開始コーナー行列のもの)は、タイルの数に等しい。
・開始コーナー行列の第1の要素は、常に1に設定される。
・終了コーナー行列の最後の要素は、常に1に設定される。
【0200】
表14は、この実施形態で使用するための例示的なシンタックスを提供する。表14に示すシンタックスは、現在存在するHEVCビデオコーディング仕様の上に実装することができる。
【0201】
表14のシンタックス要素のセマンティクス
tiles_enabled_flag:このフラグが1に設定されると、PPSを参照する各ピクチャに複数のタイルがあることを示す。このフラグが0に設定されると、PPSを参照する各ピクチャにタイルが1つしかないことを示す。
sparse_matrix_compression_enabled_flag:このフラグが1に設定されると、疎行列がタイリング構造を表すために使用されることを示す。
sparse_matrix_compression_mode:これは、開始コーナー行列および終了コーナー行列にどの疎行列圧縮方法が使用されるかを示す。このモードを0に設定することは、圧縮された疎行(CSR)法が使用されることを示す。
start_corners_stream_1は、start_corners_matrixを築くために使用されている第1の配列である。この配列は、start_corners_stream_1[i]=start_corners_matrixの(i)行目の非ゼロ要素の数として構築される。
tiles_count:この値は、タイルの数を指定する。これはまた、start_corner_matrixおよびend_corner_matrixにおける非ゼロ値の数を与える。
start_corners_stream_2は、start_corners_matrixを築くために使用されている第2の配列である。この配列は、start_corners_matrixの各要素の列インデックス(0~n-1)を含み、したがって、start_corners_matrix内の非ゼロ要素の長さの数である。
end_corners_stream_1は、end_corners_matrixを築くために使用されている第1の配列である。この配列は、end_corners_stream_1[i]=end_corners_matrixの(i)行目の非ゼロ要素の数として構築される。
end_corners_stream_2は、end_corners_matrixを築くために使用されている第2の配列である。この配列は、end_corners_matrixの各要素の列インデックス(0~n-1)を含み、したがって、end_corners_matrix内の非ゼロ要素の長さの数である。
start_corners_matrixは、2つの配列start_corners_stream1およびstart_corners_stream_2によって一意に規定される開始コーナーの行列である。
end_corners_matrixは、2つの配列end_corners_stream1およびend_corners_stream_2によって一意に規定される終了コーナーの行列である。
complete_tile_listは、空のリストとして初期化された完成タイルのリストである。
update_complete_tile_list()は、start_corners_matrixおよびend_corners_matrixからタイルを読み取り、complete_tile_listにタイルを追加する関数である。ラスタ走査方向を左から右、上から下と仮定すると、この関数は以下のように表される。
update_complete_tile_list(){
・start_corners_matrixでラスタ走査方向に最初の1の値を見つける。
・end_corners_matrixで対応する1の値を見つける。
・開始コーナーおよび終了コーナーの座標を使用して、complete_tile_listにタイルを追加する。
・start_corners_matrixで対応する開始コーナーをゼロに設定する。
【0202】
本明細書で説明する1つまたは複数の実施形態によるエンコーダ400およびデコーダ450は、ハードウェアおよび/またはソフトウェアの適切な組合せを使用して実装することができる。したがって、1つまたは複数のプロセッサと、たとえば1つまたは複数のメモリとを備えるエンコーダは、本明細書の実施形態による方法を実行するように設定される。図30は、エンコーダ400の構成要素を示す概略図である。プロセッサ500は、1つまたは複数のメモリ515に記憶されたコンピュータプログラム520に含まれるソフトウェア命令を実行することができる、適切な中央処理ユニット(CPU)、マルチプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)などのうちの1つまたは複数の任意の組合せとすることができる。1つまたは複数のメモリ515は、たとえば、データバッファ、読取り/書込みメモリ(RWM)、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、キャッシュメモリ、フラッシュメモリデバイス、光記憶デバイスなどである。エンコーダは、たとえば、送信機またはトランシーバ550を介してビットストリームを送信するように設定された入力および/または出力回路530を有するインターフェース540を備えることができる。
【0203】
図31に示すように、エンコーダ400は、本明細書で説明する方法を実行するように設定されたユニット、モジュール、または回路を有することができる。たとえば、エンコーダ400は、本明細書で説明されるように、ピクチャをピクチャセグメントに分割するパーティション構造を規定するパーティション規定ユニット600を備える。エンコーダ400はまた、複数のコード化セグメントを生成するためにパーティション構造に従ってピクチャセグメントを符号化する符号化ユニット610と、複数のコード化セグメント、およびピクチャを複数のピクチャセグメントに分割するために使用されるパーティション構造を示す情報を含むビットストリームを生成する生成ユニット620とを備える。
【0204】
さらに、1つまたは複数のプロセッサと、たとえば1つまたは複数のメモリとを備えるデコーダ450は、本明細書の実施形態による方法を実行するように設定される。図32は、デコーダ450の構成要素を示す概略図である。プロセッサ510は、1つまたは複数のメモリ540に記憶されたコンピュータプログラム550に含まれるソフトウェア命令を実行することができる、適切な中央処理ユニット(CPU)、マルチプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)などのうちの1つまたは複数の任意の組合せとすることができる。1つまたは複数のメモリ540は、たとえば、データバッファ、読取りー書込み(RWM)メモリ、または読取り専用(ROM)メモリである。デコーダ450は、たとえば、受信機またはトランシーバ560を介してビットストリームを受信するように設定された入力および/または出力回路535を有するインターフェース545を備える。
【0205】
図33に示すように、デコーダ450は、本明細書で説明する方法を実行するように設定されたユニット、モジュール、または回路を有することができる。たとえば、デコーダ450は、ビットストリームを受信するように設定された受信ユニット630を備える。デコーダ450はまた、ビットストリーム内の情報から、パーティション構造、パーティション構造のサブセグメントのサイズ、およびパーティション構造のユニットのサイズのうちの1つまたは複数を導出するように設定された導出ユニット640と、パーティション構造に従ってビットストリームで受信されたコード化セグメントを復号するように設定された復号ユニット650とを備える。
【0206】
本明細書の実施形態は、図34Aおよび34Bに示されるエンコーダ400およびデコーダ450などの、エンコーダによって規定されるか、またはデコーダによって導出される単一のパーティション構造を参照して説明される。図34Aは、ビットストリーム700を送信する例示的なエンコーダ400を示し、情報は、単一のパーティション構造730を示す。ビットストリーム700は、ユニット710のサイズを示す情報と、サブセグメント720のサイズを示す情報と、セグメント740および別のセグメント750に関する情報とを含む。
【0207】
図34Bは、ビットストリーム700を受信する対応する例示的なデコーダを示し、情報は、単一のパーティション構造730を示す。ビットストリーム700は、ユニット710のサイズを示す情報と、サブセグメント720のサイズを示す情報と、セグメント740および別のセグメント750に関する情報とを含む。
【0208】
もちろん、当業者は、エンコーダ400およびデコーダ450が、図34A図34Bに示されるように別々に、または図29に示されるように一連の画像を交換するために併せて使用され得ることを諒解されよう。
【0209】
一連の画像が交換されるそのような場合、1つまたは複数の実施形態におけるビットストリームは、ピクチャの識別情報のインジケータを含むか、そうでなければ、特定のパーティション構造をピクチャまたは複数のピクチャに関連付ける。図29に示すように、パーティション構造400は、ピクチャセグメント421、422、423のための分割線420を示す。パーティション構造の所与のピクチャセグメントは、1つまたは複数のサブセグメント、たとえば、サブセグメントの境界を形成する分割線410によって形成されるサブセグメントを含む。サブセグメントは、複数のユニットを含むことができる。たとえば、図29に示すように、サブセグメント480は、4つのユニットを含む。第1のピクチャセグメント421の縁部は、隣接するピクチャセグメント422および423の対応する縁部と接する。図29に示すように、エンコーダ400およびデコーダ450は、それぞれ、同じパーティション構造400または異なるパーティション構造430および450を有する複数の画像を符号化および復号する。これらの異なるパーティション構造は、本明細書に記載されるようなフレキシブルなパーティション構造とすることができる。代替または追加として、図29に示すように、異なるパーティション構造は、画像を横切り、サブセグメントを横切らない分割線440および460を有する従来のパーティション構造も含むことができる。
【0210】
図35は、本明細書で説明されるエンコーダ400またはデコーダ450が有用である例示的なシステムまたは方法800を示す。システムは、メディアソース810(たとえば、キャプチャ、レンダラ、またはファイル)を含む。メディアソースは、投影マッピング820に供給され、次いで、タイルエンコーダまたはトランスコーダ、たとえば、本明細書で説明するようにメディアソースの画像をパーティショニングするエンコーダ400に供給される。符号化された情報は、ストレージ830に記憶され、次いでサーバ840に供給される。符号化された情報は、ネットワーク850を介して閲覧デバイス860に送信することができる。たとえば、画像はビデオの1つであり、閲覧デバイス860は、パーティショニングされた画像を復号し、870で画像をレンダリングし、閲覧デバイス860のユーザに対してディスプレイ880上に画像を表示するための、本明細書に記載されるようなデコーダ450を有する。そのような閲覧デバイスは、たとえば、ヘッドマウントディスプレイ(HMD)デバイスまたは任意の表示デバイスとすることができる。
【0211】
1つまたは複数の実施形態は、閲覧デバイス860が、デバイスの特定の注視方向に関連する1つまたは複数の画像を受信する用途に適用可能である。一実施形態では、デバイスは、どのタイルストリームが利用可能であるかを説明する情報と、空間カバレッジおよびビットレートのような各タイルストリームに関する情報とをサーバ840から受信している。閲覧デバイス860の注視方向が捕捉され、閲覧デバイス860は、サーバ840にタイルストリームのサブセットを要求する。閲覧デバイス860は、タイルストリームを受信し、タイルストリームから単一のビットストリームを構成し、ビットストリームをデコーダ880に供給する。閲覧デバイス860は、タイルストリームに関する必要な情報を有し、それがどのように単一のビットストリームを構成したかを知る。したがって、閲覧デバイス860は、復号されたピクチャをレンダリングに適したピクチャに変換することができる。
【0212】
別の実施形態では、閲覧デバイス860の注視方向が捕捉され、サーバ840に送られる。サーバ840は、記憶されたタイルストリームから単一のビットストリームを構成し、そのビットストリームをデコーダ450に送る。復号されたピクチャをレンダリングに適したピクチャに変換するために必要な情報は、ビットストリームとともに送られる。閲覧デバイス860は、デコーダ450を使用してピクチャを復号し、それらを変換し、レンダリングする。任意選択で、閲覧デバイス860またはクライアントは、ストリームがどのビットレートを有するべきかについての要求を連続的に送る。
【0213】
本開示の実施形態は、長方形形状を有するセグメントまたはタイルを含み、各セグメントまたはタイルは、4つの辺または縁部を有することに留意されたい。加えて、各辺または縁部は、他のセグメントまたはタイルまたはピクチャ境界のいずれかに接する。すなわち、ピクチャを、整数個のユニットに等しいサイズに拡張することができる。本開示では、「タイル」は、セグメントの一種であり、「辺」および「縁部」という用語は、交換可能に使用することができる。
【0214】
いくつかの実施形態は、デコーダに関して説明されるが、当業者は、対応するエンコーダを諒解することにも留意されたい。同様に、いくつかの実施形態は、エンコーダに関して説明されるが、当業者は、対応するデコーダを諒解されよう。
【0215】
本明細書で企図される実施形態のいくつかは、添付の図面を参照してより完全に説明される。しかしながら、他の実施形態は、本明細書に開示される主題の範囲内に含まれる。開示された主題は、本明細書に記載された実施形態のみに限定されると解釈されるべきではなく、むしろ、これらの実施形態は、主題の範囲を当業者に伝えるために例として提供される。
図1
図2
図3A
図3B
図4
図5
図6A
図6B
図7
図8
図9
図10
図11A
図11B
図11C
図12A
図12B
図13A
図13B
図14
図15
図16A
図16B
図17A
図17B
図17C
図18A
図18B
図18C
図19A
図19B
図20
図21A
図21B
図21C
図21D
図22A
図22B
図22C
図23A
図23B
図24A
図24B
図24C
図25A
図25B
図26A
図26B
図27A
図27B
図27C
図28A
図28B
図29
図30
図31
図32
図33
図34A
図34B
図35
図36A
図36B
図36C