(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-22
(45)【発行日】2022-12-01
(54)【発明の名称】ピクチャにおける均一なセグメントスプリットを使用したビデオコーディングのための方法および装置
(51)【国際特許分類】
H04N 19/70 20140101AFI20221124BHJP
【FI】
H04N19/70
(21)【出願番号】P 2021534612
(86)(22)【出願日】2019-12-19
(86)【国際出願番号】 SE2019051323
(87)【国際公開番号】W WO2020130925
(87)【国際公開日】2020-06-25
【審査請求日】2021-09-03
(32)【優先日】2018-12-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】598036300
【氏名又は名称】テレフオンアクチーボラゲット エルエム エリクソン(パブル)
(74)【代理人】
【識別番号】100109726
【氏名又は名称】園田 吉隆
(74)【代理人】
【識別番号】100161470
【氏名又は名称】冨樫 義孝
(74)【代理人】
【識別番号】100194294
【氏名又は名称】石岡 利康
(74)【代理人】
【識別番号】100194320
【氏名又は名称】藤井 亮
(74)【代理人】
【識別番号】100150670
【氏名又は名称】小梶 晴美
(72)【発明者】
【氏名】ダムガニアン, ミトラ
(72)【発明者】
【氏名】ショバーリ, リキャルド
(72)【発明者】
【氏名】ペッテション, マルティン
【審査官】富樫 明
(56)【参考文献】
【文献】国際公開第2015/053287(WO,A1)
【文献】Yukinobu Yasugi et al.,AHG12: Flexible Tile Partitioning,JVET-K0155-v1,2018年07月
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
ビットストリームから、いくつかのユニット(8)を含むピクチャ(10)を復号するための方法(700)であって、前記ピクチャがパーティション構造(13)によっていくつかの空間セグメント(11)に区分され、空間セグメントの数は2以上であり、前記方法は、
前記ビットストリーム中の1つまたは複数のコードワードを復号すること(710)と、
前記1つまたは複数のコードワードに基づいて、前記パーティション構造が均一であることを決定すること(720)と、
前記1つまたは複数のコードワードに基づいて空間セグメントの前記数を決定すること(730)と、
セグメントユニットサイズを決定すること(740)と、
前記1つまたは複数のコードワードから、前記ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出すること(750)と
を含み、
前記ピクチャ中の空間セグメントについての前記サイズおよび/またはロケーションを導出することが、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、
セグメント化されるべき前記第1の次元または方向における残っているセグメントユニットの数が前記第1のループ内で計算される、方法(700)。
【請求項2】
空間セグメントの前記数にわたる前記第1のループが、前記第1の次元または方向におけるセグメントサイズに等しいサイズをもつ空間セグメントの数にわたる第1のループを含む、請求項1に記載の方法。
【請求項3】
前記サイズおよび/またはロケーションを導出することが、前記第1の次元または方向以外の第2の次元または方向における空間セグメントの数にわたる第2のループをさらに含み、セグメント化されるべき前記第2の次元または方向における残っているセグメントユニットの数が前記第2のループ内で計算される、請求項1または2に記載の方法。
【請求項4】
前記第1の次元または方向におけるセグメントサイズが行中のセグメントの幅であり、前記第2の次元または方向におけるセグメントサイズが列中のセグメントの高さであるか、または、
前記第1の次元または方向におけるセグメントサイズが列中のセグメントの高さであり、前記第2の次元または方向におけるセグメントサイズが行中のセグメントの幅である、請求項3に記載の方法。
【請求項5】
空間セグメントの前記数にわたる前記第2のループが、前記第2の次元または方向におけるセグメントサイズに等しいサイズをもつ空間セグメントの数にわたる第2のループを含む、請求項3または4に記載の方法。
【請求項6】
前記第1の次元または方向が水平の次元または方向であり、前記第2の次元または方向が垂直の次元または方向であるか、または
前記第1の次元または方向が垂直の次元または方向であり、前記第2の次元または方向が水平の次元または方向である、請求項3から5のいずれか一項に記載の方法。
【請求項7】
行中の前記セグメントの幅または列中の前記セグメントの高さが、指定された順序に従う、請求項1から6のいずれか一項に記載の方法。
【請求項8】
ピクチャの行中の前記セグメントの幅または列中の前記セグメントの高さが、前記セグメントの前記幅または高さのための指定されたデフォルト順序に従う、請求項1から
7のいずれか一項に記載の方法。
【請求項9】
前記セグメントユニットサイズがコーディングツリーユニットのサイズに等しい、請求項1から
8のいずれか一項に記載の方法。
【請求項10】
前記セグメントユニットサイズがコーディングツリーユニットのサイズよりも大きい、請求項1から
8のいずれか一項に記載の方法。
【請求項11】
セグメントがタイルである、請求項1から
10のいずれか一項に記載の方法。
【請求項12】
前記セグメント(11)が他のセグメント(11)に対して独立しており、したがって、現在セグメント(15)中の任意のユニット(16)のための任意のイントラ予測モードの前記導出は、前記現在セグメント(15)に属するユニット(17)における前に導出されたイントラ予測モードのみに依存し、異なるセグメント(14)に属するいかなるユニット(18)におけるいかなるイントラ予測モードにも依存しない、請求項1から
11のいずれか一項に記載の方法。
【請求項13】
いくつかのユニット(8)を含むピクチャ(10)をビットストリームに符号化するための方法(800)であって、前記ピクチャが均一なパーティション構造(13)によっていくつかの空間セグメント(11)に区分され、空間セグメントの数は2以上であり、前記方法は、
1つまたは複数のコードワードを前記ビットストリームに符号化することによって、前記パーティション構造(13)が均一であるという情報を符号化すること(810)と、
1つまたは複数のコードワードを前記ビットストリームに符号化することによって、空間セグメントの前記数を符号化すること(820)と、
セグメントユニットサイズを決定すること(830)と、
前記ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出し、それらのサイズおよび/またはロケーションを前記ビットストリームに符号化すること(840)と
を含み、
前記ピクチャ中の空間セグメントについての前記サイズおよび/またはロケーションを導出することが、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、
セグメント化されるべき前記第1の次元または方向における残っているセグメントユニットの数が前記第1のループ内で計算される、方法(800)。
【請求項14】
空間セグメントの前記数にわたる前記第1のループが、第1の次元または方向におけるセグメントサイズに等しいサイズをもつ空間セグメントの数にわたる第1のループを含む、請求項
13に記載の方法。
【請求項15】
前記サイズおよび/またはロケーションを導出することが、前記第1の次元または方向以外の第2の次元または方向における空間セグメントの数にわたる第2のループを含み、セグメント化されるべき前記第2の次元または方向における残っているセグメントユニットの数が前記第2のループ内で計算される、請求項
13または
14に記載の方法。
【請求項16】
前記第1の次元または方向におけるセグメントサイズが行中のセグメントの幅であり、前記第2の次元または方向におけるセグメントサイズが列中のセグメントの高さであるか、または、
前記第1の次元または方向におけるセグメントサイズが列中のセグメントの高さであり、前記第2の次元または方向におけるセグメントサイズが行中のセグメントの幅である、請求項
15に記載の方法。
【請求項17】
空間セグメントの前記数にわたる前記第2のループが、前記第2の次元または方向におけるセグメントサイズに等しいサイズをもつ空間セグメントの数にわたる第2のループを含む、請求項
15または
16に記載の方法。
【請求項18】
前記第1の次元または方向が水平の次元または方向であり、前記第2の次元または方向が垂直の次元または方向であるか、または
前記第1の次元または方向が垂直の次元または方向であり、前記第2の次元または方向が水平の次元または方向である、請求項
15から
17のいずれか一項に記載の方法。
【請求項19】
セグメントがタイルである、請求項
13から
18のいずれか一項に記載の方法。
【請求項20】
命令(1144)を含むコンピュータプログラム(1143)であって、前記命令(1144)が処理回路(1102)によって実行されたとき、前記処理回路(1102)に請求項1から
19のいずれか一項に記載の方法を実行させる、コンピュータプログラム(1143)。
【請求項21】
ピクチャ(10)を復号するための復号装置(1100)であって、前記復号装置(1100)は、
コンピュータ可読記憶媒体(1142)と、
前記コンピュータ可読記憶媒体に結合された処理回路(1102)と
を備え、前記処理回路は、前記復号装置(1100)に請求項1から
12のいずれか一項に記載の方法を実行させるように設定された、復号装置(1100)。
【請求項22】
ピクチャ(10)を符号化するための符号化装置(1100)であって、前記符号化装置(1100)は、
コンピュータ可読記憶媒体(1142)と、
前記コンピュータ可読記憶媒体に結合された処理回路(1102)と
を備え、前記処理回路は、前記符号化装置(1100)に請求項
13から
19のいずれか一項に記載の方法を実行させるように設定された、符号化装置(1100)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はビデオエンコーディングおよびデコーディングに関する。
【背景技術】
【0002】
HEVCおよび次世代ビデオコーディング
高効率ビデオコーディング(HEVC)、別名H.265は、時間予測と空間予測の両方を利用する、ITU-TおよびMPEGによって標準化されたブロックベースのビデオコーデックである。空間予測は、現在ピクチャ内からのイントラ(I)予測を使用して達成される。時間予測は、前に復号された参照ピクチャからのブロックレベルのインター(P)予測または双方向インター(B)予測を使用して達成される。残差(residual)と呼ばれる、元のピクセルデータと予測ピクセルデータとの間の差は、周波数領域に変換され、量子化され、次いで、予測モードおよび動きベクトルなど、同じくエントロピーコーディングされる必要な予測パラメータと一緒に送信される前に、エントロピーコーディングされる。変換された残差を量子化することによって、ビデオのビットレートと品質との間のトレードオフが制御され得る。量子化のレベルは量子化パラメータ(QP)によって決定される。デコーダは、残差を取得するために、エントロピー復号、逆量子化、および逆方向変換(inverse transformation)を実行する。デコーダは、次いで、ピクチャを再構成するためにイントラ予測またはインター予測に残差を加算する。
【0003】
MPEGおよびITU-Tは、ジョイントビデオエクスプロラトリーチーム(JVET)内でHEVCの後継に関する作業を行っている。開発中のこのビデオコーデックの名称はVCCである。
【0004】
スライス
HEVCにおけるスライスの概念は、ピクチャを個々にコーディングされたスライスに分割し、ここで各スライスは、コーディングツリーユニット(CTU)のユニット中でラスタ走査順序で読み取られる。異なるコーディングタイプが同じピクチャのスライスのために使用され得、すなわち、スライスは、Iスライス、PスライスまたはBスライスのいずれかであり得る。スライスの主要な目的は、データ損失の場合に再同期を可能にすることである。
【0005】
タイル
HEVCビデオコーディング規格は、ピクチャを矩形の空間的に独立した領域に分割する、タイルと呼ばれるツールを含む。タイルを使用すると、HEVCにおけるピクチャは、タイルが行と列との交差部である、サンプルの行と列とに区分され得る。HEVCにおけるタイルはCTU境界と常に整合させられる。
【0006】
図1は、ピクチャについて合計20個のタイルを生じる、4つのタイル行と5つのタイル列とを使用するタイル区分の例を示す。
【0007】
タイル構造は、行の厚さと列の幅とを指定することによってピクチャパラメータセット(PPS)中でシグナリングされる。個々の行および列は異なるサイズを有することができるが、区分は、それぞれ左から右におよび上部から下部に、常にピクチャ全体にわたって行われる。同じピクチャのタイル間の復号依存性はない。このことは、イントラ予測と、エントロピーコーディングのためのコンテキスト選択と、動きベクトル予測とを含む。1つの例外は、インループ(in-loop)フィルタ処理依存性が一般にタイル間で許容されることである。
【0008】
HEVCにおけるタイル構造を指定するために使用されるPPSシンタックスは、以下の表1に記載されている。フラグ、たとえばtiles_enabled_flagは、タイルが使用されるか否かを示す。フラグが設定された場合、タイル列およびタイル行の数が指定される。uniform_spacing_flagは、列幅および行高さが明示的にシグナリングされるかどうか、またはタイル境界線を均等に離間させるための事前規定された方法が使用されるべきであるかどうかを指定するフラグである。明示的なシグナリングが示された場合、列幅は1つずつシグナリングされ、その後行高さが1つずつシグナリングされる。そのような列幅および行高さはCTUユニット中でシグナリングされる。loop_filter_across_tiles_enabled_flagフラグは、タイル境界を横断するインループフィルタが、ピクチャ中のすべてのタイル境界についてオンまたはオフにされるかどうかを指定する。
【0009】
HEVCにおけるタイル構造を指定するためのセマンティクスについて、以下でさらに詳細に説明する。
【0010】
1に等しいtiles_enabled_flagは、PPSを参照する各ピクチャ中に2つ以上のタイルがあることを指定する。0に等しいtiles_enabled_flagは、PPSを参照する各ピクチャ中にただ1つのタイルがあることを指定する。
【0011】
num_tile_columns_minus1+1は、ピクチャを区分するタイル列の数を指定する。num_tile_columns_minus1は、両端値を含む、0からPicWidthInCtbsY-1の範囲内であるとする。存在しないとき、num_tile_columns_minus1の値は0に等しいと推論される。
【0012】
num_tile_rows_minus1+1は、ピクチャを区分するタイル行の数を指定する。num_tile_rows_minus1は、両端値を含む、0からPicHeightInCtbsY-1の範囲内であるとする。存在しないとき、num_tile_rows_minus1の値は0に等しいと推論される。
【0013】
tiles_enabled_flagが1に等しいとき、num_tile_columns_minus1とnum_tile_rows_minus1の両方が0に等しくならないとする。
【0014】
1に等しいuniform_spacing_flagは、タイル列境界、および同様にタイル行境界がピクチャにわたって均一に分配されることを指定する。0に等しいuniform_spacing_flagは、タイル列境界、および同様にタイル行境界がピクチャにわたって均一に分配されないが、シンタックス要素column_width_minus1[i]およびrow_height_minus1[i]を使用して明示的にシグナリングされることを指定する。存在しないとき、uniform_spacing_flagの値は1に等しいと推論される。
【0015】
column_width_minus1[i]+1はCTBのユニット中のi番目のタイル列の幅を指定する。
【0016】
row_height_minus1[i]+1はCTBのユニット中のi番目のタイル行の高さを指定する。
【0017】
1に等しいloop_filter_across_tiles_enabled_flagは、インループフィルタ処理演算が、PPSを参照するピクチャ中のタイル境界を横断して実行され得ることを指定する。0に等しいloop_filter_across_tiles_enabled_flagは、インループフィルタ処理演算が、PPSを参照するピクチャ中のタイル境界を横断して実行されないことを指定する。インループフィルタ処理演算は、デブロッキングフィルタ演算と、サンプル適応オフセットフィルタ(sample adaptive offset filter)演算とを含む。存在しないとき、loop_filter_across_tiles_enabled_flagの値は1に等しいと推論される。
【0018】
VVCは、HEVCの場合と同様に、旧来のスライスを使用しないことが予想される。代わりに、タイルは、VRストリーミングを含む、ビデオサービスからの空間ランダムアクセスの需要の増加により、VVCにおいてより大きい役割を果たすことが予想される。
【0019】
タイルグループの概念は、最近のJVET会議において、現在のVVCドラフト中に含められることが承認された。タイルグループは、各タイルのオーバーヘッドを低減するように複数のタイルをグループ化するために使用される。
【0020】
HEVCにおける均一なタイル区分
HEVCタイル区分では、すべてのタイル境界がCTUグリッドと整合させられる必要がある。そのことは、すべてのタイルが完全なCTUからなり、タイル中で許容される不完全なCTUのみが、ピクチャの右縁部または下縁部に位置するタイルであることを意味する。HEVCにおいて、1に等しいシンタックス要素uniform_spacing_flagは、タイル列境界、および同様にタイル行境界がピクチャにわたって均一に分配されることを指定する。しかしながら、この均一性はCTU細分性(granularity)によって制限される。HEVCにおいて、両端値を含む、0からnum_tile_columns_minus1にわたるiについてのリストcolWidth[i]は、コーディングツリーブロック(coding tree block)(CTB)のユニット中のi番目のタイル列の幅を指定し、以下の式(A)のように導出される。
【0021】
同様の式(B)は、タイル行の高さ(rowHeight[i])を決定するために使用される。
【0022】
フレキシブルタイルスプリッティング(flexible tile splitting)
JVET-K0155と、その後のJVET-L0359において導入されたフレキシブルタイルスプリッティングは、ピクチャを区分タイルにスプリットする機能を与え、ここで、各タイルの幅または高さは、CTUサイズよりも微細なユニットサイズの倍数である。フレキシブルタイルスプリッティングは、(ピクチャの右縁部および下縁部のみではなく)タイルごとの右縁部および下縁部における不完全なCTUの使用を許容する。
図2A~
図2Bは、タイルユニットサイズがCTUサイズの1/4である、JVET-L0359の場合と同様にフレキシブルタイルスプリッティングを使用する2×2タイルセグメンテーションについての例を与える。
【0023】
図2A~
図2Bでは、タイルは太い黒線によって示されており、CTUは薄い黒線によって示されている。
図2Aは、ピクチャ中に20個のCTUがあるHEVC方法を示す。
図2Bは、ピクチャ中に24個のCTUがあり、タイルユニットサイズが、破線グレー線によって示されている、CTUサイズの1/4に等しい、JVET-L0359における提案された方法を示す。
【0024】
フレキシブルタイルスプリッティングは、負荷分散や、CTUサイズの倍数でないことが望ましいフェイスサイズをもつ360°ビデオなどの適用例のために有用であり得る。
【0025】
本開示に関連がある、JVET-L0359からのシンタックスおよびセマンティクスを以下に記載し、ここで、イタリック体の部分は、L0359において提案された、追加されたテキストである。
【0026】
tile_unit_size_idcは、ルーマサンプル(luma sample)中のタイルユニットブロックのサイズを指定する。変数TileUnitSizeY、変数PicWidthInTileUnitsYおよび変数PicHeightInTileUnitsYは以下のように導出される。
【0027】
num_tile_columns_minus1+1は、タイルユニットブロックのユニット中のピクチャを区分するタイル列の数を指定する。num_tile_columns_minus1は、両端値を含む、0からPicWidthInTileUnitsY-1の範囲内とする。存在しないとき、num_tile_columns_minus1の値は0に等しいと推論される。
【0028】
num_tile_rows_minus1+1は、タイルユニットブロックのユニット中のピクチャを区分するタイル行の数を指定する。num_tile_rows_minus1は、両端値を含む、0からPicHeightInTileUnitsY-1の範囲内とする。存在しないとき、num_tile_rows_minus1の値は0に等しいと推論される。
【0029】
変数NumTilesInPicは以下のように導出される。
【0030】
両端値を含む、0からnum_tile_columns_minus1にわたるiについてのリストcolWidth[i]は、タイルユニットブロックのユニット中のi番目のタイル列の幅を指定し、以下のように導出される。
【0031】
両端値を含む、0からnum_tile_rows_minus1にわたるjについてのリストrowHeight[j]は、タイルユニットブロックのユニット中のj番目のタイル行の高さを指定し、以下のように導出される。
【0032】
両端値を含む、0からnum_tile_columns_minus1+1にわたるiについてのリストTileColX[i]は、ルーマサンプルのユニット中のi番目のタイル列の左上ルーマサンプルのXロケーションを指定し、以下のように導出される。
【0033】
両端値を含む、0からnum_tile_rows_minus1+1にわたるjについてのリストTileRowY[j]は、ルーマサンプルのユニット中のj番目のタイル行の左上ルーマサンプルのYロケーションを指定し、以下のように導出される。
【0034】
セグメントグループ、セグメントおよびユニット
次に、セグメントグループ、セグメント、およびユニットについて説明する。本開示における実施形態は、異なる種類のピクチャ区分方式に適用され得、HEVCおよびVVCドラフトから知られているタイルパーティションに限られないので、セグメントという用語は、タイルよりも一般的な用語として使用される。本開示において、タイルはセグメントの一実施形態であるが、セグメントの他の実施形態もあり得る。
【0035】
図3は、ビデオストリームのピクチャ10と、ユニット8、セグメント11およびセグメントグループ12へのピクチャの例示的な区分とを示す。
図3(a)は、64個のユニット8からなるピクチャ10を示す。
図3(b)は、16個のセグメント11からなる、同じピクチャ10のセグメントパーティション構造13を示す。パーティション構造13は一点鎖線によって示されている。各セグメント11はいくつかのユニットからなる。セグメントは、整数個の完全なユニット、または完全なユニットと部分ユニットとの組合せのいずれかからなることができる。いくつかのセグメントがセグメントグループを形成する。
図3(c)は、8個のセグメントグループからなる、同じピクチャ10のセグメントグループ区分を示す。セグメントグループはラスタ走査順序のセグメントからなり得る。代替的に、セグメントグループは、一緒に矩形を形成する、セグメントの任意のグループからなり得る。代替的に、セグメントグループはセグメントの任意のサブセットからなり得る。
【0036】
図4は、一点鎖線が、ピクチャ10を4つのセグメントに分割するパーティション構造を示す、ピクチャ10を示す。
図4はまた、3つのユニット16、17、18を示す。図に示されているように、2つのユニット16、17は1つの現在セグメント15に属し、1つのユニット18は異なる隣接セグメント14に属する。セグメントは他のセグメントに対して独立しており、そのことは、ユニットを復号するときに、セグメント境界がピクチャ境界と同様に処理されることを意味する。このことは、たとえば、イントラ予測モードの導出および量子化パラメータ値の導出など、復号中の要素の導出プロセスに影響を及ぼす。
【0037】
イントラモードは、現在の技術においてよく知られており、サンプル予測のための現在ピクチャの前に復号されたサンプルからの予測のみを使用するユニットのために使用され、シグナリングされる。現在ユニット16におけるイントラ予測モードの導出は、他の隣接ユニット17における前に導出されたイントラ予測モードに依存することが一般的である。セグメントが独立しているので、現在ユニット16におけるイントラ予測モードの導出は、現在セグメント15に属するユニット17における前に導出されたイントラ予測モードのみに依存することがあり、異なるセグメント14に属するいかなるユニット18におけるいかなるイントラ予測モードにも依存することがない。
【0038】
このことは、
図4におけるパーティション構造が、異なるセグメント14中のユニット18におけるイントラ予測モードを、現在セグメント15中のユニット16のためのイントラ予測モードの導出のために利用不可能にすることを意味する。異なるセグメント中のあるユニット18と現在セグメント15中のユニット16とが同じセグメントに属していたのであれば、異なるセグメント中のあるユニット18におけるモードは、現在セグメント15中のユニット16におけるイントラ予測モードの導出のために多分に使用されていたであろうことに留意されたい。代わりに、セグメント境界は、現在セグメント15中のユニット16のためのピクチャ境界と同じ効果をイントラモード導出に対して有し得る。
【0039】
本開示の文脈では、セグメントはタイルまたはスライスであり得、セグメントグループはタイルグループであり得る。本開示において、「タイル」と「セグメント」という用語は互換的に使用され得る。いくつかの実施形態では、ユニットはCTUと等価であり得る。
【発明の概要】
【0040】
HEVC式(A)およびHEVC式(B)によると、タイル列幅(および行高さ)は
の形態で2つの項を互いから減算することによって計算され、ここで、iは非負整数であり、kは、PicWidthInCtbsYに等しい分子と、num_tile_columns_minus1+1に等しい分母とをもつ有理数である。kが整数でないときの、そのような計算の出力は、kおよびiの値に応じて
に等しくなり得る。この固有の特徴は、タイル列幅サイズおよびタイル行高さサイズに1個のCTUほど大きい変動を引き起こす。本開示の文脈では、そのような変動はタイルサイズリップル(tile size ripple)と呼ばれる(いくつかの例について以下の表2参照)。このリップルのパターンは一定でなく、kの値を与える、CTUにおけるピクチャの幅ならびにタイル列およびタイル行の数と、iによって決定されるタイルグリッド上のタイルの配置とに依存する。1に等しいuniform_spacing_flagをもつHEVCタイル区分を使用するタイル列幅におけるリップルのいくつかの例が表2に示されている。同じ例はタイル行高さにも適用され得る。
【0041】
表2は、1に等しいuniform_spacing_flagと、PicWidthInCtbsYおよびnum_tile_columns_minus1についての所与の値とをもつHEVCタイル区分を使用して計算されたタイル列幅を示す。colWidth[i]の値におけるリップルは可視である。
【0042】
最後のタイルサイズにおけるこの不一致は、最後のタイルサイズ値を予測するために入力値およびコードの詳細を調査する必要があるので、望ましくない。リップル問題は水平方向と垂直方向の両方において起こり得る。このことは、詳細を検査することなしに、タイルグリッド中の特定のタイルの正しい水平サイズおよび垂直サイズを決定することをより困難にする。
【0043】
別の問題は、タイルの均一な離間のためのHEVCの現在の実装において、ピクチャ中のタイルのいくつかの行または列が削除された場合、ピクチャの残っている一部の内側のタイル境界が新しいリップルパターンに応じて移動し得ることである。このことは、タイル抽出プロセスにおけるタイルサイズおよびアドレスを再計算することを必要とする。表500として
図5に示された例は、uniform_spacing_flagが1に等しいとき、いくつかのタイルが元のピクチャから抽出された場合、HEVC均一タイル間隔(uniform tile spacing)においてタイル列境界、したがってタイルサイズがどのように変化し得るかを示す。元のピクチャ中のタイル境界と比較して、いくつかのタイル列を削除した場合に変化するタイル境界は太線で示されている。
【0044】
図5における表500は、HEVC均一タイル間隔を使用するタイル境界を示す。内部タイル境界は、元のピクチャと、元のピクチャからいくつかのタイルを削除した後との間で変化する。元のピクチャについてのパラメータは以下のように設定されている。uniform_spacing_flag=1、PicWidthInCtbsY=10、num_tile_columns_minus1=3、num_tile_rows_minus1=1。
【0045】
JVET-L0359は、(ピクチャの右縁部および下縁部のみではなく)タイルごとの右縁部および下縁部において不完全なCTUを使用する可能性を与えることによって、より微細なタイルユニットサイズ細分性を可能にする、フレキシブルタイルスプリッティングを提案する。
図2は、タイルユニットサイズがCTUサイズの1/4であり、uniform_spacing_flagが1に等しい、JVET-L0359の場合と同様にフレキシブルタイルスプリッティングを使用する、2×2タイルセグメンテーションについての例を与える。
【0046】
JVET-L0359において提案されているように、uniform_spacing_flagが1に等しい場合、タイル列の幅は以下の式を使用して決定される。
【0047】
同様の式が、タイル行の高さ(rowHeight[i])を決定するために使用される。
【0048】
上記の実装形態は、JVET-L0359提案についてもリップル問題が存在することを示す。CTU細分性よりも微細な細分性をもつタイルサイズを規定する可能性がもたらされたことにより、ここで説明するように、一貫性のないタイルサイズのまた別のアーティファクトがもたらされる。L0359において提案されたアルゴリズムを使用すると、タイルユニットサイズが、たとえば1/2または1/4に変化したとき、タイル区分は、いくつかのピクチャ幅およびタイルユニットサイズ値について一貫したままではない。理由は、L0359における均一タイルスプリッティングについての提案された式は、異なるタイルユニットサイズを許容するが、タイルグリッド中のわずかにより大きいまたはより小さいタイルの構成を正則化しないことである。以下の表3は、ピクチャサイズが固定され、タイルユニットサイズが変更される、たとえば、L0359において提案されたフレキシブルタイルスプリッティングを使用して1/2または1/4に分割されるケースについてのいくつかの例を示す。最後のタイル列幅は、より大きいタイル幅がピクチャの左側にあるときもあり、ピクチャの右側にあるときもあるようなタイルユニットサイズの変更の結果として、反転する。この予測不可能性は望ましくない。
【0049】
表3は、uniform_spacing_flagが1に設定されたときに、L0359の場合と同様にフレキシブルタイルスプリッティングを使用して計算されたタイル列幅を示す。
【0050】
タイルサイズに対する丸め効果の不一致を編成するためのルールにより、コードおよび入力値の詳細な調査の必要なしに、最後のタイルサイズを決定することが容易になると結論することができる。タイルサイズリップルを正則化するためのシステマティックな手法はまた、元のピクチャと、元のピクチャからのタイルのサブセットとについての一貫したタイル区分結果を与える。
【0051】
分割の制限された細分性に応じて、セグメントサイズが厳密になることができないとき、好ましいオーダーをもつセグメントのサイズでリップルを正則化する実施形態が本明細書で提案されている。提案された実施形態では、丸め効果に応じて、わずかに小さいサイズまたはわずかに大きいサイズをもつタイルが好ましい構成を有する。一実施形態では、左から右の走査方向におけるタイル幅は同じにとどまるか、または減少するのみである。本明細書で開示する、提案された実施形態は、タイルグリッド中のタイル列幅および/またはタイル行高さ、または個々のタイルの幅および高さに適用され得る。一実施形態では、(所与の細分性および丸め効果により)わずかに大きいサイズをもつタイルはピクチャの左上部に位置し、わずかに小さいサイズをもつタイルはピクチャの右下部に位置する。
【0052】
一態様では、ビットストリームからピクチャを復号するための方法が提供される。ピクチャはいくつかのユニットを含み、ピクチャはパーティション構造によっていくつかの空間セグメントに区分され、空間セグメントの数は2以上である。一実施形態では、本方法は、ビットストリーム中の1つまたは複数のコードワードを復号することを含む。本方法はまた、1つまたは複数のコードワードに基づいて、パーティション構造が均一であることを決定することを含む。本方法はまた、1つまたは複数のコードワードに基づいて空間セグメントの数を決定することを含む。本方法はまた、セグメントユニットサイズを決定することを含む。本方法はまた、1つまたは複数のコードワードから、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することを含む。ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出するステップは、第1の次元または方向における空間セグメントの数にわたる第1のループを含む。さらに、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数は第1のループ内で計算される。
【0053】
一態様では、いくつかのユニットを含むピクチャをビットストリームに符号化するための方法が提供される。ピクチャは、均一なパーティション構造によっていくつかの空間セグメントに区分され、空間セグメントの数は2以上である。本方法は、1つまたは複数のコードワードをビットストリームに符号化することによって、パーティション構造が均一であるという情報を符号化することを含む。本方法はまた、1つまたは複数のコードワードをビットストリームに符号化することによって、空間セグメントの数を符号化することを含む。本方法はまた、セグメントユニットサイズを決定することを含む。本方法はまた、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出し、それらのサイズおよび/またはロケーションをビットストリームに符号化することを含む。ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出するステップは、第1の次元または方向における空間セグメントの数にわたる第1のループを含む。さらに、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数は第1のループ内で計算される。
【0054】
一態様では、ピクチャを符号化するための方法が提供され、本方法は、ピクチャをいくつかの均一な空間セグメントに分割するパーティション構造を規定することであって、各空間セグメントが少なくとも1つのユニットを含み、セグメントサイズの導出が、第1の次元または方向における空間セグメントの数にわたる第1のループ、および第2の次元または方向における空間セグメントの数にわたる第2のループ中で実行され、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数が第1のループ内で計算され、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数が第2のループ内で計算される、パーティション構造を規定することを含む。本方法はまた、複数のコーディングされた空間セグメントを生成するためのパーティション構造に従って、複数の空間セグメントを符号化することであって、各々のコーディングされた空間セグメントがパーティション構造の空間セグメントのうちの1つに対応し、各々のコーディングされた空間セグメントは独立しており、したがって、第1の空間セグメントの第1のユニットのための任意のイントラ予測モードの導出は、第1の空間セグメントの第2のユニットのための導出されたイントラ予測モードに依存し、パーティション構造の他の空間セグメントのユニットのためのいかなるイントラ予測モードとも無関係である、複数の空間セグメントを符号化することを含む。本方法は、複数のコーディングされた空間セグメントと、ピクチャを複数の空間セグメントに分割するために使用される均一なパーティション構造を示す情報とを含む、ビットストリームを生成することをさらに含む。
【0055】
一態様では、処理回路によって実行されたとき、処理回路に本明細書で開示する方法のうちのいずれか1つを実行させる命令を含む、コンピュータプログラムが提供される。一態様では、コンピュータプログラムを含んでいるキャリアも提供される。キャリアは、電子信号、光信号、無線信号、およびコンピュータ可読記憶媒体のうちの1つである。
【0056】
別の態様では、ビットストリームからピクチャを復号するための復号装置が提供される。ピクチャはいくつかのユニットを含み、ピクチャはパーティション構造によっていくつかの空間セグメントに区分され、空間セグメントの数は2以上である。本復号装置は、ビットストリーム中の1つまたは複数のコードワードを復号するように設定される。本復号装置はまた、1つまたは複数のコードワードに基づいて、パーティション構造が均一であることを決定するように設定される。本復号装置はまた、1つまたは複数のコードワードに基づいて空間セグメントの数を決定するように設定される。本復号装置はまた、セグメントユニットサイズを決定するように設定される。本復号装置はまた、1つまたは複数のコードワードから、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出するように設定される。ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することは、第1の次元または方向における空間セグメントの数にわたる第1のループを含む。さらに、本復号装置は、第1のループ内で、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数を計算するように設定される。いくつかの実施形態では、本復号装置は、コンピュータ可読記憶媒体と、コンピュータ可読記憶媒体に結合された処理回路とを含み、処理回路は、本復号装置に本明細書で開示するいずれかの復号方法を実行させるように設定される。
【0057】
別の態様では、ピクチャをビットストリームに符号化するための符号化装置が提供される。ピクチャはいくつかのユニットを含み、ピクチャは均一なパーティション構造によっていくつかの空間セグメントに区分され、空間セグメントの数は2以上である。本符号化装置は、1つまたは複数のコードワードをビットストリームに符号化することによって、パーティション構造が均一であるという情報を符号化するように設定される。本符号化装置はまた、1つまたは複数のコードワードをビットストリームに符号化することによって空間セグメントの数を符号化するように設定される。本符号化装置はまた、セグメントユニットサイズを決定するように設定される。本符号化装置は、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出し、それらのサイズおよび/またはロケーションをビットストリームに符号化するようにさらに設定される。ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することは、第1の次元または方向における空間セグメントの数にわたる第1のループを含む。さらに、本符号化装置は、第1のループ内で、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数を計算するようにさらに設定される。
【0058】
別の態様では、ピクチャを符号化するための符号化装置が提供され、本符号化装置は、ピクチャをいくつかの均一な空間セグメントに分割するパーティション構造を規定するように設定され、各空間セグメントは少なくとも1つのユニットを含み、セグメントサイズの導出は、第1の次元または方向における空間セグメントの数にわたる第1のループおよび第2の次元または方向における空間セグメントの数にわたる第2のループ中で実行され、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数は第1のループ内で計算され、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数は第2のループ内で計算される。本符号化装置はまた、複数のコーディングされた空間セグメントを生成するためのパーティション構造に従って、複数の空間セグメントを符号化するように設定され、各々のコーディングされた空間セグメントはパーティション構造の空間セグメントのうちの1つに対応し、各々のコーディングされた空間セグメントは独立しており、したがって、第1の空間セグメントの第1のユニットのための任意のイントラ予測モードの導出は、第1の空間セグメントの第2のユニットのための導出されたイントラ予測モードに依存し、パーティション構造の他の空間セグメントのユニットのためのいかなるイントラ予測モードとも無関係である。本符号化装置は、複数のコーディングされた空間セグメントと、ピクチャを複数の空間セグメントに分割するために使用される均一なパーティション構造を示す情報とを含む、ビットストリームを生成するようにさらに設定される。
【0059】
別の態様では、ピクチャを符号化するための符号化装置が提供され、本符号化装置は、コンピュータ可読記憶媒体と、コンピュータ可読記憶媒体に結合された処理回路とを備える。処理回路は、本符号化装置に本明細書で開示する符号化方法のうちのいずれか1つを実行させるように設定される。
【0060】
本開示の実施形態は、現在タイルの幅を前のタイルとは無関係に保つが、残っている数のタイルに区分されることになる(列または行における)残っている数のユニット上でのみである。結果として、タイルの均一な離間のための実施形態は、タイルが抽出された場合に、抽出されたおよび残っているタイルについてタイル区分をそのままに保つ。これにより、ピクチャスプリットまたはタイル抽出の場合にタイルサイズを再計算する必要がなくなる。タイルの均一な離間のためのHEVCの現在の実装では、ピクチャ中のタイルのいくつかの行または列が削除された場合、リップルパターンが変化することがあり、ピクチャの残っている一部の内側のタイル境界が新しいリップルパターンに応じて移動することがある。
【0061】
一貫性は、実施形態の別の利点である。タイルの均一な離間のための実施形態は、入力パラメータまたはコードの詳細な調査なしに、タイルサイズ(たとえばタイル列幅およびタイル行高さ)を編成し、タイルサイズの最終構成についてのルールを与える。たとえば、一実施形態では、タイルユニットにおけるピクチャ幅/高さがタイル列/行の数によって割り切れないとき、より大きいサイズに丸められたすべてのタイルはピクチャの左/上部に見つけられる。実施形態はまた、タイルユニットサイズの変更の場合、均一タイル間隔におけるタイルサイズのリップルを調整する。
【0062】
提案された方法はまた、HEVC、およびJVET-L0359において提案されたフレキシブルタイルスプリットと比較して、複雑さを低減する。提案された方法は、乗算を有さず、タイル列の幅とタイル行の高さとを決定するための繰り返し当たり1回のみの除算を有するが、HEVC方法は、繰り返し当たり2回の乗算と2回の除算とを使用する。
【0063】
本明細書に組み込まれ、本明細書の一部を形成する添付の図面は、様々な実施形態を示す。
【図面の簡単な説明】
【0064】
【
図1】一実施形態による、タイル区分の例を示す図である。
【
図2A】HEVCタイル区分を使用したタイルセグメンテーションを示す図である。
【
図2B】フレキシブルタイルスプリッティングを使用したタイルセグメンテーションを示す図である。
【
図3】ビデオストリームのピクチャと、例示的な区分とを示す図である。
【
図4】いくつかの実施形態による、ピクチャを示す図である。
【
図5】いくつかの実施形態による、テーブルを示す図である。
【
図6】いくつかの実施形態による、テーブルを示す図である。
【
図7】一実施形態による、プロセスを示すフローチャートを示す図である。
【
図8】一実施形態による、プロセスを示すフローチャートを示す図である。
【
図9】一実施形態による、デコーダの機能ユニットを示すダイヤグラムである。
【
図10】一実施形態による、エンコーダの機能ユニットを示すダイヤグラムである。
【
図11】いくつかの実施形態による、装置のブロック図である。
【
図12】一実施形態による、プロセスを示すフローチャートを示す図である。
【発明を実施するための形態】
【0065】
実施形態について説明するために、以下の用語を使用した。
【0066】
算術演算子「/」は、0に向かう結果の切り捨てがある、整数除算のために使用される。たとえば、7/4および-7/-4は切り捨てられて1になり、-7/4および7/-4は切り捨てられて-1になる。
【0067】
算術演算子「÷」は、切り捨てまたは丸めが意図されない、数式における除算のために使用される。
【0068】
Ceil(x)は、xよりも大きいかまたはそれに等しい、最も小さい整数を与える。
【0069】
Floor(x)は、xよりも小さいかまたはそれに等しい、最も大きい整数を与える。
【0070】
「タイル列幅」という用語と「タイル幅」という用語は互換的に使用され、そのことは、実施形態が、タイル列幅がタイルグリッド中で計算されているとき、または(たとえばタイルグリッドがない場合)タイル幅が個々に計算されているときに適用され得ることを意味する。
【0071】
「タイル行高さ」という用語と「タイル高さ」という用語は互換的に使用され、そのことは、実施形態が、タイル行高さがタイルグリッド中で計算されているとき、または(たとえばタイルグリッドがない場合)タイル高さが個々に計算されているときに適用され得ることを意味する。
【0072】
uniform_spacing_flag=1についてのタイルの幅(および同等に高さ)を規定するための実施形態は以下の4つの要素を有する。
【0073】
(1)各タイルの幅を規定するためのループにおいて、タイルの幅は、タイルにまだ割り振られていない行におけるユニットサイズの数を意味する、利用可能な残っているユニットサイズを使用して規定される。
【0074】
(2)残っているユニットサイズの数は、次いで、行における残っているタイルの数によって除算される。
【0075】
(3)得られたタイルサイズは、タイルの幅を整えるための所与のルールに従って、より大きいまたはより小さい整数(Ceil()関数またはFloor()関数)に向かって丸められる。
【0076】
(4)各タイルの幅を規定するためのループの繰り返しごとに、残っているユニットサイズ(たとえばCTU)の数を再計算するための随意の要素。
【0077】
同じ要素は、タイルの高さを規定することに適用される。
【0078】
本明細書で開示する、実施形態は、ビットストリームからのピクチャ10を復号するためのデコーダ方法について説明しており、本方法は、ビットストリームからのピクチャ中のセグメント(たとえば、ピクチャ中のすべてのセグメント)についてのサイズおよび/またはロケーションを導出することを含み、ピクチャ10はいくつかのユニット8からなり、パーティション構造13は、ピクチャを少なくとも2つのセグメント11に区分し、デコーダは、ビットストリーム中の1つまたは複数のコードワードを復号することによって、空間セグメンテーションが均一であることを決定し、デコーダは、ビットストリーム中の1つまたは複数のコードワードを復号することによって、空間セグメントの数を決定し、デコーダはタイルユニットサイズを決定し、セグメントを均一な幅または高さに区分することは、空間セグメントの数とは無関係な固定のリップルパターンに従い、セグメントサイズの導出は、セグメントの数にわたるループ中で行われ、ループ内部で、セグメント化されるべき残っているタイルユニットの数が計算される。残っているセグメントの数もループ内で計算され得る。
【0079】
一例では、実施形態は、以下のHEVCのライン
を以下のラインと置き換える。
【0080】
提案された方法はまた、HEVC、およびJVET-L0359において提案されたフレキシブルタイルスプリットと比較して、複雑さを低減する。提案された方法は、乗算を有さず、タイル列の幅とタイル行の高さとを決定するための繰り返し当たり1回のみの除算を有するが、HEVC方法は、繰り返し当たり2回の乗算と2回の除算とを使用する。
【0081】
実施形態1.単調リップル
一実施形態では、行中のセグメントの幅または列中のセグメントの高さは、事前規定された走査方向に従う昇順でもなく、降順でもない。セグメントはピクチャ中のタイルであり得、したがって、タイルサイズは走査方向において単調である(上昇もせず、下降もしない)。たとえば、タイル幅が左から右の走査方向において上昇しないことは、タイルの幅が、第1のタイルの左側に空間的に位置する同じ行上の別のタイルの幅よりも大きくならないことを意味する。
【0082】
第1の実施形態では、HEVCの上の上昇しないタイル列幅(左から右への走査方向)およびタイル行高さ(上から下への走査方向)について、以下のHEVC関数
は、以下の関数と置き換えられる。
【0083】
colWidthリストおよびrowHeightリスト中の得られた値はルーマコーディングツリーブロックの単位である。たとえば、CTUサイズが128×128に等しい場合、値は128個のルーマサンプルの単位であり、したがって、2の値は256個のルーマサンプルを意味する。
【0084】
colWidthリストおよびrowHeightリストは、次いで、ピクチャ中のブロックの走査順序を決定するためにデコーダによって使用される。ブロックデータが復号されるとき、ブロックの空間位置はcolWidthリストおよびrowHeightリスト中の値に基づく。デコーダは、colWidthおよびrowHeightの値を使用して、タイル走査アドレスからラスタ走査アドレスへの変換リスト、およびその逆の変換リストを構築し得る。デコーダは、次いで、ブロックの空間位置を決定するために復号中に変換リストを使用し得る。HEVCでは、変換リストが使用され、CtbAddrRsToTsおよびCtbAddrTsToRsと呼ばれる。
【0085】
図6は、HEVCのためのタイルサイズ割振りと第1の実施形態の上記の例示的な実装形態とを比較する表600を示す。表600に示されているように、実施形態では、タイル列がピクチャの左側もしくは右側または両側から削除されたとき、タイル境界は元のピクチャと同じに保たれる。丸め効果は、タイル列幅を決定するために、タイルにわたるループの繰り返しごとに、Ceil()関数を使用し、残っているタイルユニットの数を再計算して、すべての場合において、ピクチャの左側にわずかに広いタイルを置くように定められる。
【0086】
表600は、内部タイル境界がそのままに保たれる間、HEVC均一タイル間隔を使用して元のピクチャからいくつかのタイル列を削除した後に内部タイル境界がどのように変化するかを示す。元のピクチャについてのパラメータは以下のように設定されている。uniform_spacing_flag=1、PicWidthInCtbsY=10、num_tile_columns_minus1=3、num_tile_rows_minus1=1。
【0087】
以下は、CTUサイズよりも小さいタイルサイズ細分性をサポートする、JVET-L0359において提案された式の上に構築された、第1の実施形態の別の例である。以下の式変更はJVET-L0359の上に提案されており、
タイル行高さについて同等に、以下の変更が提案されている。
【0088】
colWidthリストおよびrowHeightリスト中の得られた値はルーマタイルユニットの単位である。たとえば、タイルユニットサイズが32×32に等しい場合、値は32個のルーマサンプルの単位であり、したがって、2の値は64個のルーマサンプルを意味する。
【0089】
表4は、異なるピクチャ幅値について、JVET-L0359と一実施形態との間でタイルの幅についての結果を比較している。JVET-L0359についての結果は、タイルユニットサイズが変化したときに、タイル列の幅(colWidth[i])の不一致を示すが、その実施形態は、わずかに大きいタイルにピクチャの左側に置かれるように一貫して優先度を付けるので、その実施形態は、タイルユニットサイズが変化したときに、タイル列の一貫した幅(colWidth[i])を与える。
【0090】
表4は、第1の実施形態と比較してJVET-L0359の場合と同様にフレキシブルタイルスプリッティングを使用して、uniform_spacing_flag=1、num_tile_columns_minus1=1のときに計算されたタイル列幅を示す。
【0091】
第1の実施形態では、デコーダは以下のステップのすべてまたはサブセットを実行し得る。
【0092】
1.ビットストリーム中の1つまたは複数のシンタックス要素から、1つまたは複数のピクチャが2つ以上のセグメントに区分されるという情報を復号する。シンタックスは、好ましくは、ピクチャパラメータセット中に位置する。シンタックスは、セグメント行の数を示す数Rと、セグメント列の数を示す数Cとを指定し得る。
【0093】
2.ビットストリーム中の1つまたは複数のシンタックス要素から、空間セグメンテーションが均一であるという情報を復号する。シンタックスは、好ましくは、ピクチャパラメータセット中に位置する。シンタックスは、空間セグメンテーションが均一であるか否かを指定する1ビットフラグからなり得る。
【0094】
3.1つまたは複数のシンタックス要素から、または事前規定されたセグメントユニットサイズを使用することによって、セグメントユニットサイズSを決定する。事前規定されたユニットサイズが使用される場合、事前規定されたユニットサイズは、CTUのサイズ、または1つの次元におけるCTUのサイズに等しくなり得る。たとえば、CTUサイズが128×128に等しい場合、セグメントユニットサイズSは128(または128×128)に等しくなり得る。
【0095】
4.セグメントユニットの数におけるピクチャのサイズを計算する。計算は、水平サイズ(HS)が、セグメントユニットサイズSによって除算された、ルーマサンプル中のピクチャ幅に等しく設定されるように、ピクチャの高さと幅とについて別個に行われ得る。垂直サイズ(VS)は、セグメントユニットサイズによって除算された、ルーマサンプル中のピクチャ高さに等しく設定され得る。
【0096】
5.ピクチャ中のセグメントの数およびセグメントユニットサイズSからセグメント(たとえば、すべてのセグメント)の幅および高さを導出する。導出は、まだセグメント化されていないセグメントの数と、セグメントユニットの数におけるまだセグメント化されていないピクチャのサイズとがループの各繰り返しにおいて更新される、セグメントの数にわたるループ中で行われる。
【0097】
導出は2つの別個のループ中で行われ得る。
a.以下のサブステップによって、タイルユニットの数におけるピクチャ幅およびセグメント列の数Cからセグメント列幅を導出する。
i.まだセグメント化されていないピクチャ幅(A)を値HSに等しく設定する。
ii.まだセグメント化されていないセグメント列の数(B)を値Cに等しく設定する。
iii.繰り返し当たり1つの幅値が導出され、まだセグメント化されていないセグメント列の数(B)とまだセグメント化されていないピクチャ幅(A)の両方が各繰り返し中に更新される、ループ中で列幅を導出する。繰り返しはC回実行され得る。
1.導出された列幅WはCeil(A÷B)に等しく設定され得る。
2.変数Aは、次いで、A-Wに更新され得、変数BはB-1に更新され得る。
b.以下のサブステップによって、タイルユニットの数におけるピクチャ高さおよびセグメント列の数Rからセグメント行高さを導出する。
i.まだセグメント化されていないピクチャ高さ(A)を値VSに等しく設定する。
ii.まだセグメント化されていないセグメント行の数(B)を値Rに等しく設定する。
iii.繰り返し当たり1つの高さ値が導出され、まだセグメント化されていないセグメント行の数(B)とまだセグメント化されていないピクチャ高さ(A)の両方が各繰り返し中に更新される、ループ中で行高さを導出する。繰り返しはR回実行され得る。
1.導出された行高さHはCeil(A÷B)に等しく設定され得る。
2.変数Aは、次いで、A-Hに更新され得、変数BはB-1に更新され得る。
【0098】
6.導出されたセグメント幅および導出されたセグメント高さを使用して、現在ブロックについての空間ロケーションを導出する。
【0099】
7.導出された空間ロケーションを使用して現在ブロックを復号する。現在ブロックのための復号されたサンプル値を、導出された空間ロケーションに対応するメモリ位置におけるメモリに記憶する。
【0100】
この実施形態の変形態では、関数Ceil()は、水平方向のみもしくは垂直方向のみ、または両方の方向において関数Floor()によって置き換えられ得る。
【0101】
この実施形態の変形態では、フラグは2つの関数Ceil()とFloor()との間で選定し得る。いくつかの実施形態では、水平方向および垂直方向のための2つの独立したフラグがあり得る。
【0102】
実施形態2.指定された順序
第2の実施形態では、行中のセグメントの幅または列中のセグメントの高さは、指定された順序に従う。この指定された順序は、ビットのシーケンスの形態のテンプレートパターンを使用してビットストリーム中でシグナリングされ得る。セグメントはピクチャ中のタイルであり得、したがって、この実施形態では、タイルサイズに関する好ましいリップルの形状が指定される。たとえば、すべてのわずかに広いタイルはピクチャの左側にある。このことは、タイル幅(または高さ)を指定するためにタイルにわたるループの繰り返しごとにCeil()関数またはFloor()関数を指定する、ビットのシーケンスの形態で表現される、テンプレートパターンによって行われ得る。テンプレートビットシーケンス中で、関数Ceil()は1によって表され得、関数Floor()は0によって表され得る。例として、テンプレート110は、タイルサイズを指定するためのループの、最初の2つのタイル中でCeil()関数を指定し、第3の繰り返し中で関数Floor()を指定するであろう。タイルの数がテンプレートビットシーケンスの長さよりも大きい場合、パターンは周期的に繰り返され得る。
【0103】
実施形態3.バイナリタイルスプリット(binary tile split)
第3の実施形態では、セグメント幅または高さの明示的な順序付けをもつバイナリセグメントスプリットがピクチャの幅または高さに適用される。セグメントはピクチャ中のタイルであり得、したがって、ピクチャを均一なタイルサイズをもつ2n個のタイルに区分するために、バイナリ区分が使用される。(第2の実施形態の場合と同様の)事前規定されたリップルパターンが、この実施形態と組み合わせて使用され得る。バイナリ区分は、アルゴリズムが、指定された数のセグメントに到達するまで、または規定された数のステップまでのみ、階層的に継続し得、セグメント分割の残りは他の方法によって実行される。例として、合計サイズが第1のステップにおいて2によって除算され、そこで、より小さいまたはより大きいセグメントを左側または右側に割り当てるように指定される。後続のステップの各々において、左側セグメントと右側セグメントの各々は、次のバイナリ区分レベル、およびより小さいまたはより大きい可能性があるセグメントの位置についての指定されたルールを使用して、2つの部分に分割される。
【0104】
実施形態4.リップルのデフォルト順序付け
第4の実施形態では、ピクチャの行中のセグメントの幅または列中のセグメントの高さは、セグメントの幅または高さのための指定されたデフォルト順序に従う。セグメントはピクチャ中のタイルであり得、したがって、セグメントサイズにおけるリップルを管理するためのデフォルトの好ましい順序付けが規定される。デフォルトリップルパターンはビットストリーム中でシグナリングされ得る。この実施形態の変形態では、デフォルトパターンは上書きされ得る。この実施形態の別の変形態では、フラグは、デフォルト順序付けが使用されているか、または別の指定された順序付けが使用されているかを指定することができる。
【0105】
図7は、一実施形態による、プロセス700を示すフローチャートである。プロセス700は、ビットストリームから、いくつかのユニット8を含むピクチャ10を復号するための方法であり、ピクチャはパーティション構造13によって少なくとも2つの空間セグメント11に区分される。プロセス700はステップ710において開始し得る。ステップ710は、ビットストリーム中の1つまたは複数のコードワードを復号することを含む。ステップ720は、1つまたは複数のコードワードに基づいて、パーティション構造が均一であることを決定することを含む。ステップ730は、1つまたは複数のコードワードに基づいて空間セグメントの数を決定することを含む。ステップ740は、セグメントユニットサイズを決定することを含む。ステップ750は、1つまたは複数のコードワードから、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することを含む。一実施形態では、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することは、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数は第1のループ内で計算される。いくつかの実施形態では、第1の次元における残っているセグメントの数は第1のループ内で計算される。
【0106】
いくつかの実施形態では、セグメントサイズおよび/またはロケーションの導出は、第1の次元または方向以外の第2の次元または方向における空間セグメントの数にわたる第2のループを含み、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数は第2のループ内で計算される。いくつかの実施形態では、第2の次元または方向における残っているセグメントの数は、第2のループ内で計算される。
【0107】
いくつかの実施形態では、第1の次元または方向は水平の次元または方向であり、第2の次元または方向は垂直の次元または方向である。
【0108】
いくつかの実施形態では、行中のセグメントの幅または列中のセグメントの高さは、指定された順序に従う。
【0109】
いくつかの実施形態では、行中のセグメントの幅または列中のセグメントの高さは昇順でもなく、降順でもない。
【0110】
いくつかの実施形態では、セグメント幅または高さの明示的な順序付けをもつバイナリセグメントスプリットがピクチャの幅または高さに適用される。
【0111】
いくつかの実施形態では、ピクチャの行中のセグメントの幅または列中のセグメントの高さは、セグメントの幅または高さのための指定されたデフォルト順序に従う。
【0112】
いくつかの実施形態では、セグメントユニットサイズはコーディングツリーユニット(CTU)のサイズに等しい。
【0113】
いくつかの実施形態では、セグメントユニットサイズはコーディングツリーユニット(CTU)のサイズよりも小さい。いくつかの実施形態では、セグメントユニットサイズはCTUのサイズよりも大きい。いくつかの実施形態では、セグメントがタイルである。
【0114】
いくつかの実施形態では、サイズを導出することは、
A=PicWidthInSegmentUnits
B=NumberOfSegmentColumns
for(i=0;i<NumberOfSegmentColumns;i++){
Sizes[i]=Round(A÷B)
A=A-Sizes[i]
B=B-1
}
としてリストSizes[]を導出することを含み、
ここで、NumberOfSegmentColumnsはセグメント列の数であり、PicWidthInSegmentUnitsはセグメントユニットにおけるピクチャの幅であり、Round()はFloor()関数またはCeil()関数のいずれかであり、÷は切り捨てまたは丸めなしの除算である。
【0115】
いくつかの実施形態では、サイズを導出することは、
A=PicHeightInSegmentUnits
B=NumberOfSegmentRows
for(i=0;i<NumberOfSegmentRows;i++){
Sizes[i]=Round(A÷B)
A=A-Sizes[i]
B=B-1
}
としてリストSizes[]を導出することを含み、
ここで、NumberOfSegmentRowsはセグメント行の数であり、PicHeightInSegmentUnitsはセグメントユニットにおけるピクチャの高さであり、Round()はFloor()関数またはCeil()関数のいずれかであり、÷は切り捨てまたは丸めなしの除算である。
【0116】
いくつかの実施形態では、セグメント11は他のセグメント11に対して独立しており、したがって、現在セグメント15中の任意のユニット16のための任意のイントラ予測モードの導出は、現在セグメント15に属するユニット17における前に導出されたイントラ予測モードのみに依存し、異なるセグメント14に属するいかなるユニット18におけるいかなるイントラ予測モードにも依存しない。
【0117】
いくつかの実施形態では、本方法は、空間セグメントの数とは無関係な固定のリップルパターンに従う、セグメントを均一な幅または高さに区分するさらなるステップを含む。
【0118】
図8は、一実施形態による、プロセス800を示すフローチャートである。プロセス800は、いくつかのユニット8を含むピクチャ10をビットストリームに符号化するための方法であり、ピクチャは、均一なパーティション構造13によって少なくとも2つの空間セグメント11に区分される。本方法は、1つまたは複数のコードワードをビットストリームに符号化することによって、パーティション構造13が均一であるという情報を符号化すること(ステップ810)と、1つまたは複数のコードワードをビットストリームに符号化することによって空間セグメントの数を符号化すること(ステップ820)と、セグメントユニットサイズを決定すること(ステップ830)と、ピクチャ中のすべての空間セグメントについてのサイズおよび/またはロケーションを導出し、それらのサイズおよび/またはロケーションをビットストリームに符号化すること(ステップ840)とを含み、セグメントサイズの導出は、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数は第1のループ内で計算される。いくつかの実施形態では、第1の次元または方向における残っているセグメントの数も第1のループ内で計算される。
【0119】
いくつかの実施形態では、セグメントサイズおよび/またはロケーションの導出は、第1の次元または方向以外の第2の次元または方向における空間セグメントの数にわたる第2のループを含み、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数は第2のループ内で計算される。いくつかの実施形態では、第2の次元または方向における残っているセグメントの数も第2のループ内で計算される。
【0120】
いくつかの実施形態では、第1の次元または方向は水平の次元または方向であり、第2の次元または方向は垂直の次元または方向である。
【0121】
図9は、いくつかの実施形態による、デコーダ902の機能ユニットを示すダイヤグラムである。
図9に示されているように、デコーダ902は、ビットストリーム中の1つまたは複数のコードワードを復号するための復号ユニット904と、1つまたは複数のコードワードに基づいて、パーティション構造が均一であることを決定するための第1の決定ユニット906と、1つまたは複数のコードワードに基づいて空間セグメントの数を決定するための第2の決定ユニット908と、セグメントユニットサイズを決定するための第3の決定ユニット910と、1つまたは複数のコードワードから、ピクチャ中のすべての空間セグメントについてのサイズおよび/またはロケーションを導出するための導出ユニット912とを含み、セグメントサイズおよび/またはロケーションの導出は、第1の次元における空間セグメントの数にわたる第1のループと、第2の次元における空間セグメントの数にわたる第2のループとを含み、セグメント化されるべき第1の次元における残っているセグメントユニットの数は第1のループ内で計算され、セグメント化されるべき第2の次元における残っているセグメントユニットの数、および第2の次元における残っているセグメントの数は第2のループ内で計算される。いくつかの実施形態では、第1の次元における残っているセグメントの数も第1のループ内で計算され、第2の次元における残っているセグメントの数も第2のループ内で計算される。
【0122】
図10は、いくつかの実施形態による、エンコーダ1002の機能ユニットを示すダイヤグラムである。
図10に示されているように、エンコーダ1002は、1つまたは複数のコードワードをビットストリームに符号化することによって、パーティション構造13が均一であるという情報を符号化するための第1の符号化ユニット1004と、1つまたは複数のコードワードをビットストリームに符号化することによって空間セグメントの数を符号化するための第2の符号化ユニット1006と、セグメントユニットサイズを決定するための決定ユニット1008と、ピクチャ中のすべての空間セグメントについてのサイズおよび/またはロケーションを導出し、それらのサイズおよび/またはロケーションをビットストリームに符号化するための導出ユニット1010とを含み、セグメントサイズの導出は、第1の次元における空間セグメントの数にわたる第1のループと、第2の次元における空間セグメントの数にわたる第2のループとを含み、セグメント化されるべき、第1の次元における残っているセグメントユニットの数は、第1のループ内で計算され、セグメント化されるべき、第2の次元における残っているセグメントユニットの数は、第2のループ内で計算される。
【0123】
いくつかの実施形態では、エンコーダは、ピクチャをいくつかの均一な空間セグメントに分割することであって、各空間セグメントは少なくとも1つのユニットを含み、セグメントサイズの導出は、第1の次元における空間セグメントの数にわたる第1のループ、および第2の次元における空間セグメントの数にわたる第2のループ中で実行され、セグメント化されるべき、第1の次元における残っているセグメントユニットの数は、第1のループ内で計算され、セグメント化されるべき、第2の次元における残っているセグメントユニットの数は、第2のループ内で計算される、ピクチャをいくつかの均一な空間セグメントに分割することと、複数のコーディングされた空間セグメントを生成するためのパーティション構造に従って複数の空間セグメントを符号化することであって、各々のコーディングされた空間セグメントはパーティション構造の空間セグメントのうちの1つに対応し、各々のコーディングされた空間セグメントは独立しており、したがって、第1の空間セグメントの第1のユニットのための任意のイントラ予測モードの導出は、第1の空間セグメントの第2のユニットのための導出されたイントラ予測モードに依存し、パーティション構造の他の空間セグメントのユニットのためのいかなるイントラ予測モードとも無関係である、複数の空間セグメントを符号化することと、複数のコーディングされた空間セグメントと、ピクチャを複数の空間セグメントに分割するために使用される均一なパーティション構造を示す情報とを含むビットストリームを生成することとを行う、パーティション構造を規定するように設定される。
【0124】
図11は、いくつかの実施形態による、デコーダ902および/またはエンコーダ1002を実装するための装置1100のブロック図である。装置1100がデコーダ902を実装するとき、装置1100は「復号装置1100」と呼ばれることがあり、装置1100がエンコーダ1002を実装するとき、装置1100は「符号化装置1100」と呼ばれることがある。
図11に示されているように、装置1100(別名「ノード」)は、1つまたは複数のプロセッサ(P)1155(たとえば、汎用マイクロプロセッサ、および/または特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、1つまたは複数の他のプロセッサ)を含み得る、処理回路(PC)1102と、装置1100が、ネットワークインターフェース1148が接続されたネットワーク1110(たとえばインターネットプロトコル(IP)ネットワーク)に接続された他のノードにデータを送信し、それらのノードからデータを受信することを可能にするための送信機(Tx)1145と受信機(Rx)1147とを含む、ネットワークインターフェース1148と、1つまたは複数の不揮発性記憶デバイスおよび/または1つまたは複数の揮発性記憶デバイスを含み得る、ローカルストレージユニット(別名、「データ記憶システム」)1108とを備え得る。PC1102がプログラマブルプロセッサを含む実施形態では、コンピュータプログラム製品(CPP)1141が提供され得る。CPP1141は、コンピュータ可読命令(CRI)1144を含むコンピュータプログラム(CP)1143を記憶するコンピュータ可読媒体(CRM)1142を含む。CRM1142は、磁気媒体(たとえばハードディスク)、光媒体、メモリデバイス(たとえば、ランダムアクセスメモリ、フラッシュメモリ)など、非一時的コンピュータ可読媒体であり得る。いくつかの実施形態では、コンピュータプログラム1143のCRI1144は、PC1102によって実行されたとき、CRIが装置1100に本明細書で説明されたステップ(たとえば、フローチャートを参照して本明細書で説明されたステップ)を実行させるように設定される。他の実施形態では、装置1100は、コードの必要なしに、本明細書で説明されるステップを実行するように設定され得る。すなわち、たとえば、PC1102は1つまたは複数のASICのみからなり得る。したがって、本明細書で説明された実施形態の特徴はハードウェアおよび/またはソフトウェアにおいて実装され得る。
【0125】
様々な実施形態の概要
A1a.ビットストリームから、いくつかのユニット8を含むピクチャ10を復号するための方法700であって、ピクチャはパーティション構造13によっていくつかの空間セグメント11に区分され、空間セグメントの数は2以上であり、本方法は、ビットストリーム中の1つまたは複数のコードワードを復号すること710と、1つまたは複数のコードワードに基づいて、パーティション構造が均一であることを決定すること720と、1つまたは複数のコードワードに基づいて空間セグメントの数を決定すること730と、セグメントユニットサイズを決定すること740と、1つまたは複数のコードワードから、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出すること750とを含み、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することが、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数が第1のループ内で計算される、方法700。
【0126】
Alb.空間セグメントの数にわたる第1のループが、第1の次元または方向におけるセグメントサイズに等しいサイズをもつ空間セグメントの数にわたる第1のループを含む、実施形態A1aに記載の方法。
【0127】
A2a.サイズおよび/またはロケーションを導出することが、第1の次元または方向以外の第2の次元または方向における空間セグメントの数にわたる第2のループをさらに含み、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数が第2のループ内で計算される、実施形態A1aまたはA1bに記載の方法。
【0128】
A2b.第1の次元または方向におけるセグメントサイズが行中のセグメントの幅であり、第2の次元または方向におけるセグメントサイズが列中のセグメントの高さであるか、または、第1の次元または方向におけるセグメントサイズが列中のセグメントの高さであり、第2の次元または方向におけるセグメントサイズが行中のセグメントの幅である、実施形態A2aに記載の方法。
【0129】
A2c.空間セグメントの数にわたる第2のループが、第2の次元または方向におけるセグメントサイズに等しいサイズをもつ空間セグメントの数にわたる第2のループを含む、実施形態A2aまたはA2bに記載の方法。
【0130】
A3.第1の次元または方向が水平の次元または方向であり、第2の次元または方向が垂直の次元または方向であるか、または第1の次元または方向が垂直の次元または方向であり、第2の次元または方向が水平の次元または方向である、実施形態A2a、A2bまたはA2cに記載の方法。
【0131】
A4.行中のセグメントの幅または列中のセグメントの高さが、指定された順序に従う、実施形態A1aからA3のいずれか1つに記載の方法。
【0132】
A5.行中のセグメントの幅または列中のセグメントの高さが昇順でもなく、降順でもない、実施形態A1aからA4のいずれか1つに記載の方法。
【0133】
A6.セグメント幅または高さの明示的な順序付けをもつバイナリセグメントスプリットがピクチャの幅または高さに適用される、実施形態A1aからA5のいずれか1つに記載の方法。
【0134】
A7.ピクチャの行中のセグメントの幅または列中のセグメントの高さが、セグメントの幅または高さのための指定されたデフォルト順序に従う、実施形態A1aからA6のいずれか1つに記載の方法。
【0135】
A8.セグメントユニットサイズがコーディングツリーユニット(CTU)のサイズに等しい、実施形態A1aからA7のいずれか1つに記載の方法。
【0136】
A9.セグメントユニットサイズがコーディングツリーユニット(CTU)のサイズよりも小さい、実施形態A1aからA7のいずれか1つに記載の方法。
【0137】
A10.セグメントユニットサイズがCTUのサイズよりも大きい、実施形態A1aからA7のいずれか1つに記載の方法。
【0138】
A11.セグメントがタイルである、実施形態A1aからA10のいずれか1つに記載の方法。
【0139】
A12.サイズを導出することは、
A=PicWidthInSegmentUnits
B=NumberOfSegmentColumns
for(i=0;i<NumberOfSegmentColumns;i++){
Sizes[i]=Round(A÷B)
A=A-Sizes[i]
B=B-1
}
としてリストSizes[]を導出することを含み、
ここで、NumberOfSegmentColumnsはセグメント列の数であり、PicWidthInSegmentUnitsはセグメントユニットにおけるピクチャの幅であり、Round()はFloor()関数またはCeil()関数のいずれかであり、÷は切り捨てまたは丸めなしの除算である、実施形態A1aからA11のいずれか1つに記載の方法。
【0140】
A13.サイズを導出することは、
A=PicHeightInSegmentUnits
B=NumberOfSegmentRows
for(i=0;i<NumberOfSegmentRows;i++){
Sizes[i]=Round(A÷B)
A=A-Sizes[i]
B=B-1
}
としてリストSizes[]を導出することを含み、
ここで、NumberOfSegmentRowsはセグメント行の数であり、PicHeightInSegmentUnitsはセグメントユニットにおけるピクチャの高さであり、Round()はFloor()関数またはCeil()関数のいずれかであり、÷は切り捨てまたは丸めなしの除算である、実施形態A1aからA12のいずれか1つに記載の方法。
【0141】
A14.セグメント11が他のセグメント11に対して独立しており、したがって、現在セグメント15中の任意のユニット16のための任意のイントラ予測モードの導出は、現在セグメント15に属するユニット17における前に導出されたイントラ予測モードのみに依存し、異なるセグメント14に属するいかなるユニット18におけるいかなるイントラ予測モードにも依存しない、実施形態A1aからA13のいずれか1つに記載の方法。
【0142】
A15.本方法は、空間セグメントの数とは無関係な固定のリップルパターンに従う、セグメントを均一な幅または高さに区分することをさらに含む、実施形態A1aからA14のいずれか1つに記載の方法。
【0143】
A16.第2の次元または方向における残っているセグメントの数が第2のループ内で計算される、実施形態A2aからA15のいずれか1つに記載の方法。
【0144】
A17.第1の次元または方向における残っているセグメントの数が第1のループ内で計算される、実施形態A1aからA16のいずれか1つに記載の方法。
【0145】
B1a.いくつかのユニット8を含むピクチャ10をビットストリームに符号化するための方法800であって、ピクチャは均一なパーティション構造13によっていくつかの空間セグメント11に区分され、空間セグメントの数は2以上であり、本方法は、1つまたは複数のコードワードをビットストリームに符号化することによって、パーティション構造13が均一であるという情報を符号化すること810と、1つまたは複数のコードワードをビットストリームに符号化することによって、空間セグメントの数を符号化すること820と、セグメントユニットサイズを決定すること830と、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出し、それらのサイズおよび/またはロケーションをビットストリームに符号化すること840とを含み、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することは、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数が第1のループ内で計算される、方法800。
【0146】
B1b.空間セグメントの数にわたる第1のループが、第1の次元または方向におけるセグメントサイズに等しいサイズをもつ空間セグメントの数にわたる第1のループを含む、実施形態B1aに記載の方法。
【0147】
B2a.セグメントサイズおよび/またはロケーションの導出が、第1の次元または方向以外の第2の次元または方向における空間セグメントの数にわたる第2のループを含み、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数が第2のループ内で計算される、実施形態B1aまたはB1bに記載の方法。
【0148】
B2b.第1の次元または方向におけるセグメントサイズが行中のセグメントの幅であり、第2の次元または方向におけるセグメントサイズが列中のセグメントの高さであるか、または、第1の次元または方向におけるセグメントサイズが列中のセグメントの高さであり、第2の次元または方向におけるセグメントサイズが行中のセグメントの幅である、実施形態B2aに記載の方法。
【0149】
B2c.空間セグメントの数にわたる第2のループが、第2の次元または方向におけるセグメントサイズに等しいサイズをもつ空間セグメントの数にわたる第2のループを含む、実施形態B2aまたはB2bに記載の方法。
【0150】
B3.第1の次元または方向が水平の次元または方向であり、第2の次元または方向が垂直の次元または方向であるか、または第1の次元または方向が垂直の次元または方向であり、第2の次元または方向が水平の次元または方向である、実施形態B2a、B2bまたはB2cに記載の方法。
【0151】
B4.第2の次元または方向における残っているセグメントの数が第2のループ内で計算される、実施形態B2a、B2b、B2CまたはB3に記載の方法。
【0152】
B5.第1の次元または方向における残っているセグメントの数が第1のループ内で計算される、実施形態B1aからB4のいずれか1つに記載の方法。
【0153】
C1.ピクチャ10を符号化するための方法1200であって、本方法は、ピクチャ10をいくつかの均一な空間セグメントに分割するパーティション構造を規定すること1210であって、各空間セグメントが少なくとも1つのユニットを含み、セグメントサイズの導出が、第1の次元または方向における空間セグメントの数にわたる第1のループ、および第2の次元または方向における空間セグメントの数にわたる第2のループ中で実行され、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数が第1のループ内で計算され、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数が第2のループ内で計算される、パーティション構造を規定すること1210と、複数のコーディングされた空間セグメントを生成するためのパーティション構造に従って、複数の空間セグメントを符号化すること1220であって、各々のコーディングされた空間セグメントがパーティション構造の空間セグメントのうちの1つに対応し、各々のコーディングされた空間セグメントは独立しており、したがって、第1の空間セグメントの第1のユニットのための任意のイントラ予測モードの導出は、第1の空間セグメントの第2のユニットのための導出されたイントラ予測モードに依存し、パーティション構造の他の空間セグメントのユニットのためのいかなるイントラ予測モードとも無関係である、複数の空間セグメントを符号化すること1220と、複数のコーディングされた空間セグメントと、ピクチャを複数の空間セグメントに分割するために使用される均一なパーティション構造を示す情報とを含む、ビットストリームを生成すること1230とを含む、方法1200。
【0154】
D1.処理回路1102によって実行されたとき、処理回路1102に実施形態A1aからC1のいずれか1つに記載の方法を実行させる命令1144を含む、コンピュータプログラム1143。
【0155】
D2.実施形態D1に記載のコンピュータプログラムを含んでいるキャリアであって、本キャリアは、電子信号、光信号、無線信号、およびコンピュータ可読記憶媒体1142のうちの1つである、キャリア。
【0156】
E1.ビットストリームから、いくつかのユニット8を含むピクチャ10を復号するための復号装置1100であって、ピクチャはパーティション構造13によっていくつかの空間セグメント11に区分され、空間セグメントの数は2以上であり、本復号装置1100は、ビットストリーム中の1つまたは複数のコードワードを復号することと、1つまたは複数のコードワードに基づいて、パーティション構造が均一であることを決定することと、1つまたは複数のコードワードに基づいて空間セグメントの数を決定することと、セグメントユニットサイズを決定することと、1つまたは複数のコードワードから、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することとを行うように設定され、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することは、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、本復号装置は、第1のループ内で、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数を計算するように設定された、復号装置1100。
【0157】
E2.本復号装置1100は、実施形態A2からA17のいずれか1つに記載の方法を実行するようにさらに設定された、実施形態E1に記載の復号装置1100。
【0158】
F1.ピクチャ10を復号するための復号装置1100であって、本復号装置1100は、コンピュータ可読記憶媒体1142と、コンピュータ可読記憶媒体に結合された処理回路1102とを備え、処理回路は、本復号装置1100に実施形態A1aからA17のいずれか1つに記載の方法を実行させるように設定された、復号装置1100。
【0159】
G1.いくつかのユニット8を含むピクチャ10をビットストリームに符号化するための符号化装置1100であって、ピクチャは均一なパーティション構造13によっていくつかの空間セグメント11に区分され、空間セグメントの数は2以上であり、本符号化装置1100は、1つまたは複数のコードワードをビットストリームに符号化することによって、パーティション構造13が均一であるという情報を符号化することと、1つまたは複数のコードワードをビットストリームに符号化することによって空間セグメントの数を符号化することと、セグメントユニットサイズを決定することと、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出し、それらのサイズおよび/またはロケーションをビットストリームに符号化することとを行うように設定され、ピクチャ中の空間セグメントについてのサイズおよび/またはロケーションを導出することは、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、本符号化装置は、第1のループ内で、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数を計算するようにさらに設定された、符号化装置1100。
【0160】
G2.本符号化装置1100は、実施形態B2からB5のいずれか1つに記載の方法を実行するようにさらに設定された、実施形態G1に記載の符号化装置1100。
【0161】
H1.ピクチャ10を符号化するための符号化装置1100であって、本符号化装置1100は、ピクチャをいくつかの均一な空間セグメントに分割するパーティション構造を規定することであって、各空間セグメントが少なくとも1つのユニットを含み、セグメントサイズの導出が、第1の次元または方向における空間セグメントの数にわたる第1のループ、および第2の次元または方向における空間セグメントの数にわたる第2のループ中で実行され、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数が第1のループ内で計算され、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数が第2のループ内で計算される、パーティション構造を規定することと、複数のコーディングされた空間セグメントを生成するためのパーティション構造に従って、複数の空間セグメントを符号化することであって、各々のコーディングされた空間セグメントがパーティション構造の空間セグメントのうちの1つに対応し、各々のコーディングされた空間セグメントは独立しており、したがって、第1の空間セグメントの第1のユニットのための任意のイントラ予測モードの導出は、第1の空間セグメントの第2のユニットのための導出されたイントラ予測モードに依存し、パーティション構造の他の空間セグメントのユニットのためのいかなるイントラ予測モードとも無関係である、複数の空間セグメントを符号化することと、複数のコーディングされた空間セグメントと、ピクチャを複数の空間セグメントに分割するために使用される均一なパーティション構造を示す情報とを含む、ビットストリームを生成することとを行うように設定された、符号化装置1100。
【0162】
I1.ピクチャ10を符号化するための符号化装置1100であって、本符号化装置1100は、コンピュータ可読記憶媒体1142と、コンピュータ可読記憶媒体に結合された処理回路1102とを備え、処理回路は、本符号化装置1100に実施形態B1からB5のいずれか1つまたは実施形態C1に記載の方法を実行させるように設定された、符号化装置1100。
【0163】
PA1.ビットストリームから、いくつかのユニット8を含むピクチャ10を復号するための方法であって、ピクチャはパーティション構造13によって少なくとも2つの空間セグメント11に区分され、本方法は、ビットストリーム中の1つまたは複数のコードワードを復号することと、1つまたは複数のコードワードに基づいて、パーティション構造が均一であることを決定することと、1つまたは複数のコードワードに基づいて空間セグメントの数を決定することと、セグメントユニットサイズを決定することと、1つまたは複数のコードワードから、ピクチャ中のすべての空間セグメントについてのサイズおよび/またはロケーションを導出することとを含み、セグメントサイズおよび/またはロケーションの導出は、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数、および第1の次元または方向における残っているセグメントの数が第1のループ内で計算される、方法。
【0164】
PA2.セグメントサイズおよび/またはロケーションの導出が、第1の次元または方向以外の第2の次元または方向における空間セグメントの数にわたる第2のループを含み、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数、および第2の次元または方向における残っているセグメントの数が第2のループ内で計算される、実施形態PA1に記載の方法。
【0165】
PA3.第1の次元または方向が水平の次元または方向であり、第2の次元または方向が垂直の次元または方向である、実施形態PA2に記載の方法。
【0166】
PA4.行中のセグメントの幅または列中のセグメントの高さが、指定された順序に従う、実施形態PA1からPA3のいずれか1つに記載の方法。
【0167】
PA5.行中のセグメントの幅または列中のセグメントの高さが昇順でもなく、降順でもない、実施形態PA1からPA3のいずれか1つに記載の方法。
【0168】
PA6.セグメント幅または高さの明示的な順序付けをもつバイナリセグメントスプリットがピクチャの幅または高さに適用される、実施形態PA1からPA3のいずれか1つに記載の方法。
【0169】
PA7.ピクチャの行中のセグメントの幅または列中のセグメントの高さが、セグメントの幅または高さのための指定されたデフォルト順序に従う、実施形態PA1からPA3のいずれか1つに記載の方法。
【0170】
PA8.セグメントユニットサイズがコーディングツリーユニット(CTU)のサイズに等しい、実施形態PA1からPA7のいずれか1つに記載の方法。
【0171】
PA9.セグメントユニットサイズがコーディングツリーユニット(CTU)のサイズよりも小さい、実施形態PA1からPA8のいずれか1つに記載の方法。
【0172】
PA10.セグメントユニットサイズがCTUのサイズよりも大きい、実施形態PA1からPA8のいずれか1つに記載の方法。
【0173】
PA11.任意のセグメントがタイルである、実施形態PA1からPA10のいずれか1つに記載の方法。
【0174】
PA12.サイズを導出することは、
A=PicWidthInTileUnits
B=NumberOfSegmentColumns
for(i=0;i<NumberOfSegmentColumns;i++){
Sizes[i]=Round(A÷B)
A=A-Sizes[i]
B=B-1
}
としてリストSizes[]を導出することを含み、
ここで、NumberOfSegmentColumnsはセグメント列の数であり、PicWidthInTileUnitsはタイルユニットにおけるピクチャの幅であり、Round()はFloor()関数またはCeil()関数のいずれかであり、÷は切り捨てまたは丸めなしの除算である、実施形態PA1からPA11のいずれか1つに記載の方法。
【0175】
PA13.サイズを導出することは、
A=PicHeightInTileUnits
B=NumberOfSegmentRows
for(i=0;i<NumberOfSegmentRows;i++){
Sizes[i]=Round(A÷B)
A=A-Sizes[i]
B=B-1
}
としてリストSizes[]を導出することを含み、
ここで、NumberOfSegmentRowsはセグメント行の数であり、PicHeightInTileUnitsはタイルユニットにおけるピクチャの高さであり、Round()はFloor()関数またはCeil()関数のいずれかであり、÷は切り捨てまたは丸めなしの除算である、実施形態PA1からPA12のいずれか1つに記載の方法。
【0176】
PA14.セグメント11は他のセグメント11に対して独立しており、したがって、現在セグメント15中の任意のユニット16のための任意のイントラ予測モードの導出は、現在セグメント15に属するユニット17における前に導出されたイントラ予測モードのみに依存し、異なるセグメント14に属するいかなるユニット18におけるいかなるイントラ予測モードにも依存しない、実施形態PA1からPA13のいずれか1つに記載の方法。
【0177】
PA15.本方法は、空間セグメントの数とは無関係な固定のリップルパターンに従う、セグメントを均一な幅または高さに区分することをさらに含む、実施形態PA1からPA14のいずれか1つに記載の方法。
【0178】
PB1.いくつかのユニット8を含むピクチャ10をビットストリームに符号化するための方法であって、ピクチャは均一なパーティション構造13によって少なくとも2つの空間セグメント11に区分され、本方法は、1つまたは複数のコードワードをビットストリームに符号化することによって、パーティション構造13が均一であるという情報を符号化することと、1つまたは複数のコードワードをビットストリームに符号化することによって空間セグメントの数を符号化することと、セグメントユニットサイズを決定することと、ピクチャ中のすべての空間セグメントについてのサイズおよび/またはロケーションを導出し、それらのサイズおよび/またはロケーションをビットストリームに符号化することとを含み、セグメントサイズの導出は、第1の次元または方向における空間セグメントの数にわたる第1のループを含み、セグメント化されるべき第1の次元または方向における残っているセグメントユニットの数、および第1の次元または方向における残っているセグメントの数が第1のループ内で計算される、方法。
【0179】
PB2.セグメントサイズおよび/またはロケーションの導出が、第1の次元または方向以外の第2の次元または方向における空間セグメントの数にわたる第2のループを含み、セグメント化されるべき第2の次元または方向における残っているセグメントユニットの数、および第2の次元または方向における残っているセグメントの数が第2のループ内で計算される、実施形態PB1に記載の方法。
【0180】
PB3.第1の次元または方向が水平の次元または方向であり、第2の次元または方向が垂直の次元または方向である、実施形態PB2に記載の方法。
【0181】
PC1.ピクチャをいくつかの均一な空間セグメントに分割するパーティション構造を規定することであって、各空間セグメントが少なくとも1つのユニットを含み、セグメントサイズの導出は、第1の次元における空間セグメントの数にわたる第1のループ、および第2の次元における空間セグメントの数にわたる第2のループ中で実行され、セグメント化されるべき第1の次元における残っているセグメントユニットの数、および第1の次元における残っているセグメントの数が第1のループ内で計算され、セグメント化されるべき第2の次元における残っているセグメントユニットの数、および第2の次元における残っているセグメントの数が第2のループ内で計算される、パーティション構造を規定することと、複数のコーディングされた空間セグメントを生成するためのパーティション構造に従って、複数の空間セグメントを符号化することであって、各々のコーディングされた空間セグメントがパーティション構造の空間セグメントのうちの1つに対応し、各々のコーディングされた空間セグメントは独立しており、したがって、第1の空間セグメントの第1のユニットのための任意のイントラ予測モードの導出は、第1の空間セグメントの第2のユニットのための導出されたイントラ予測モードに依存し、パーティション構造の他の空間セグメントのユニットのためのいかなるイントラ予測モードとも無関係である、複数の空間セグメントを符号化することと、複数のコーディングされた空間セグメントと、ピクチャを複数の空間セグメントに分割するために使用される均一なパーティション構造を示す情報とを含む、ビットストリームを生成することとを行うように設定された、エンコーダ回路。
【0182】
様々な実施形態について本明細書(もしあれば、付属書類を含む)で説明したが、それらの実施形態は限定ではなく、例としてのみ提示されていることを理解されたい。したがって、本開示の広さおよび範囲は、上記で説明した例示的な実施形態のいずれかによって限定されるべきでない。その上、上記で説明した要素のすべての可能な変形形態におけるそれらの要素の任意の組合せは、本明細書で別段に示されていない限り、またはさもなければ、文脈によって明らかに否定されない限り、本開示によって包含される。
【0183】
さらに、上記で説明され、図面に示されたプロセスはステップのシーケンスとして示されているが、このことは例示のために行われたに過ぎない。したがって、いくつかのステップは追加され得、いくつかのステップは省略され得、ステップの順序は並べ替えられ得、いくつかのステップは並行して実行され得ることが企図される。