(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-24
(54)【発明の名称】ポイントクラウドデータの伝送装置とこの伝送装置で行われる方法、及びポイントクラウドデータの受信装置とこの受信装置で行われる方法
(51)【国際特許分類】
G06T 7/55 20170101AFI20240717BHJP
【FI】
G06T7/55
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023580651
(86)(22)【出願日】2022-06-30
(85)【翻訳文提出日】2024-01-30
(86)【国際出願番号】 KR2022009457
(87)【国際公開番号】W WO2023282543
(87)【国際公開日】2023-01-12
(32)【優先日】2021-07-03
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502032105
【氏名又は名称】エルジー エレクトロニクス インコーポレイティド
【氏名又は名称原語表記】LG ELECTRONICS INC.
【住所又は居所原語表記】128, Yeoui-daero, Yeongdeungpo-gu, 07336 Seoul,Republic of Korea
(74)【代理人】
【識別番号】100109841
【氏名又は名称】堅田 健史
(74)【代理人】
【識別番号】230112025
【氏名又は名称】小林 英了
(74)【代理人】
【識別番号】230117802
【氏名又は名称】大野 浩之
(74)【代理人】
【識別番号】100131451
【氏名又は名称】津田 理
(74)【代理人】
【識別番号】100167933
【氏名又は名称】松野 知紘
(74)【代理人】
【識別番号】100184181
【氏名又は名称】野本 裕史
(72)【発明者】
【氏名】ヘンドリー,ヘンドリー
(72)【発明者】
【氏名】ソ,ジョンヨル
(72)【発明者】
【氏名】イ,ジンウォン
(72)【発明者】
【氏名】キム,スンファン
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA09
5L096CA05
5L096DA02
5L096FA74
(57)【要約】
【要約】
ポイントクラウドデータの伝送装置、伝送装置で行われる方法、受信装置、及び受信装置で行われる方法が提供される。本開示によるポイントクラウドデータの受信装置で行われる方法は、前記ポイントクラウドデータを含むG-PCC(geometry-based point cloud compression)ファイルを取得するステップと-前記G-PCCファイルは、前記G-PCCファイル内のサンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報、及び前記時間的レベルに対する情報に基づいて、前記G-PCCファイル内のサンプルの中から対象(target)時間的レベルに属する一つ以上のサンプルを抽出するステップと、を含む、方法であり得る。
【特許請求の範囲】
【請求項1】
ポイントクラウドデータの受信装置で行われる方法であって、
前記ポイントクラウドデータを含むG-PCC(geometry-based point cloud compression)ファイルを取得するステップ-前記G-PCCファイルは、前記G-PCCファイル内のサンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報、及び前記時間的レベルに対する情報を含むステップと;
前記サンプルグループに対する情報及び前記時間的レベルに対する情報に基づいて、前記G-PCCファイル内のサンプルの中から対象(target)時間的レベルに属する一つ以上のサンプルを抽出するステップと;を含んでなる、方法。
【請求項2】
前記時間的レベルに対する情報は、前記時間的レベルの個数を示す個数情報、及び前記時間的レベルを識別するための時間的レベル識別情報を含む、請求項1に記載の方法。
【請求項3】
前記個数情報は、前記G-PCCファイル内のサンプルの時間スケーラビリティ如何を更に示すことを特徴とする、請求項2に記載の方法。
【請求項4】
前記個数情報は、
前記個数情報の値が第1値より大きいことに基づいて前記時間的レベルの個数を示し、
前記個数情報の値が前記第1値以下であることに基づいて前記G-PCCファイル内のサンプルの時間スケーラビリティ有無を示す、請求項3に記載の方法。
【請求項5】
前記サンプルグループに対する情報は、前記G-PCCファイルがマルチプル(multiple)トラックで運搬されることに基づいて、前記マルチプルトラックのうち、前記ポイントクラウドデータのジオメトリ(Geometry)データを運搬するジオメトリトラックに存在する、請求項1に記載の方法。
【請求項6】
アトリビュート(attribute)トラックに存在する一つ以上のサンプルの時間的レベルは、前記ジオメトリトラック内の対応するサンプルの時間的レベルと同一であり、
前記アトリビュートトラックは、前記マルチプルトラックのうち、前記ポイントクラウドデータのアトリビュートデータを運搬するトラックである、請求項5に記載の方法。
【請求項7】
前記時間的レベルに対する情報は、前記時間的レベルのフレームレート(frame rate)を示すフレームレート情報を含み、
前記抽出するステップは、前記G-PCCファイル内のサンプルのうち、対象フレーム速度に対応する一つ以上のサンプルを抽出する、請求項1に記載の方法。
【請求項8】
前記時間的レベルに対する情報は、前記フレームレート情報が存在するか否かを示すフレームレート存在情報を含み、
前記フレームレート情報は、前記フレームレート存在情報が前記フレームレート情報の存在を示すことに基づいて前記時間的レベルに対する情報に含まれる、請求項7に記載の方法。
【請求項9】
前記時間的レベルは、
第1時間的レベル、及び前記第1時間的レベルより大きいレベル値を有する第2時間的レベルを含み、
前記第2時間的レベル内の連続するサンプル間の最小結合時間差(smallest composition time difference)は、前記第1時間的レベル内の連続するサンプル間の最小結合時間差と同一であるか、或いは、前記第1時間的レベル内の連続するサンプル間の最小結合時間差より大きい、請求項7に記載の方法。
【請求項10】
前記時間的レベルに対する情報は、現在トラック(current track)が運搬するコンポーネント(component)のタイプが前記ポイントクラウドデータのアトリビュートであることに基づいて、前記現在トラックが参照するジオメトリトラック内の対応する情報と同じ値を有する、請求項1に記載の方法。
【請求項11】
前記時間的レベルに対する情報は、前記コンポーネントのタイプが前記ポイントクラウドデータのアトリビュートであり且つ前記現在トラックのサンプルエントリ(sample entry)のタイプが所定のサンプルエントリタイプであることに基づいて、前記現在トラックが参照するジオメトリトラック内の対応する情報と同じ値を有する、請求項10に記載の方法。
【請求項12】
前記所定のサンプルエントリタイプは、gpc1サンプルエントリタイプ又はgpcgサンプルエントリタイプのうちの一つ以上を含む、請求項11に記載の方法。
【請求項13】
ポイントクラウドデータの受信装置であって、
メモリと;
少なくとも一つのプロセッサと;を備えてなり、
前記少なくとも一つのプロセッサは、
前記ポイントクラウドデータを含むG-PCC(geometry-based point cloud compression)ファイルを取得し-前記G-PCCファイルは、前記G-PCCファイル内のサンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報、及び前記時間的レベルに対する情報を含むステップ、
前記サンプルグループに対する情報及び前記時間的レベルに対する情報に基づいて、前記G-PCCファイル内のサンプルの中から対象(target)時間的レベルに属する一つ以上のサンプルを抽出するステップを含む、受信装置。
【請求項14】
ポイントクラウドデータの伝送装置で行われる方法であって、
G-PCC(geometry-based point cloud compression)サンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報を生成するステップと、
前記サンプルグループに対する情報、前記時間的レベルに対する情報及び前記ポイントクラウドデータを含めてG-PCCファイルを生成するステップと、を含む、方法。
【請求項15】
ポイントクラウドデータの伝送装置であって、
メモリと;
少なくとも一つのプロセッサと;を備えてなり、
前記少なくとも一つのプロセッサは、
G-PCC(geometry-based point cloud compression)サンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報を生成し、前記サンプルグループに対する情報、前記時間的レベルに対する情報及び前記ポイントクラウドデータを含めてG-PCCファイルを生成する、伝送装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ポイントクラウドコンテンツ(point cloud content)を処理する方法及び装置に関する。
【背景技術】
【0002】
ポイントクラウドコンテンツは、三次元空間を表現する座標系に属した点(ポイント)の集合であるポイントクラウドで表現されるコンテンツである。ポイントクラウドコンテンツは、三次元からなるメディアを表現することができ、VR(virtual reality、仮想現実)、AR(augmented reality、拡張現実)、MR(mixed reality、混合現実)、及び自律走行サービスなどの多様なサービスを提供するために使用される。ポイントクラウドコンテンツを表現するためには、数万個~数十万個のポイントデータが必要であるので、膨大な量のポイントデータを効率よく処理するための方法が求められる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示は、ポイントクラウドデータを効率よく処理するための装置及び方法を提供する。本開示は、遅延時間(latency)及び符号化/復号化複雑度を解決するためのポイントクラウドデータ処理方法及び装置を提供する。
【0004】
また、本開示は、ジオメトリベースのポイントクラウド圧縮データの運搬(carriage)に時間スケーラビリティ(temporal scalability)を支援するための装置及び方法を提供する。
【0005】
また、本開示は、G-PCCビットストリームをファイル内の単一トラックに効率よく保存するか或いは複数のトラックに分割して保存し、これに対するシグナリングを提供する、ポイントクラウドコンテンツサービス提供のための装置及び方法を提供する。
【0006】
また、本開示は、保存されたG-PCCビットストリームに対する効率的な接近を支援することができるようにするためのファイル保存技法を処理する装置及び方法を提案する。
【0007】
本開示で解決しようとする技術的課題は、上述した技術的課題に制限されず、上述していない別の技術的課題は、以降の記載から本開示の属する技術分野における通常の知識を有する者に明確に理解できるであろう。
【課題を解決するための手段】
【0008】
本開示の一実施例によるポイントクラウドデータの受信装置で行われる方法は、前記ポイントクラウドデータを含むG-PCC(Geometry-based point cloud compression)ファイルを取得するステップ-前記G-PCCファイルは、前記G-PCCファイル内のサンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報、及び前記時間的レベルに対する情報を含む-と、前記サンプルグループに対する情報及び前記時間的レベルに対する情報に基づいて、前記G-PCCファイル内のサンプルの中から対象(target)時間的レベルに属する一つ以上のサンプルを抽出するステップと、を含む(備える;構成する;構築する;設定する;包接する;包含する;含有する)ことができる。
【0009】
本開示の他の一実施例によるポイントクラウドデータの受信装置は、メモリと、少なくとも一つのプロセッサと、を含み、前記少なくとも一つのプロセッサは、前記ポイントクラウドデータを含むG-PCC(geometry-based point cloud compression)ファイルを取得し-前記G-PCCファイルは、前記G-PCCファイル内のサンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報、及び前記時間的レベルに対する情報を含む-、前記サンプルグループに対する情報及び前記時間的レベルに対する情報に基づいて、前記G-PCCファイル内のサンプルの中から対象(target)時間的レベルに属する一つ以上のサンプルを抽出することができる。
【0010】
本開示の別の一実施例によるポイントクラウドデータの伝送装置で行われる方法は、G-PCC(geometry-based point cloud compression)サンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報を生成するステップと、前記サンプルグループに対する情報、前記時間的レベルに対する情報及び前記ポイントクラウドデータを含めてG-PCCファイルを生成するステップと、を含むことができる。
【0011】
本開示の別の一実施例によるポイントクラウドデータの伝送装置は、メモリと、少なくとも一つのプロセッサと、を含み、前記少なくとも一つのプロセッサは、G-PCC(geometry-based point cloud compression)サンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報を生成し、前記サンプルグループに対する情報、前記時間的レベルに対する情報及び前記ポイントクラウドデータを含めてG-PCCファイルを生成することができる。
【発明の効果】
【0012】
本開示の実施例による装置及び方法は、高い効率でポイントクラウドデータを処理することができる。
【0013】
本開示の実施例による装置及び方法は、高いクオリティーのポイントクラウドサービスを提供することができる。
【0014】
本開示の実施例による装置及び方法は、VRサービスや自律走行サービスなどの汎用的なサービスを提供するためのポイントクラウドコンテンツを提供することができる。
【0015】
本開示の実施例による装置及び方法は、G-PCCコンポーネントのうちの所望のコンポーネントに効果的にアクセスすることが可能な時間スケーラビリティを提供することができる。
【0016】
本開示の実施例による装置及び方法は、時間スケーラビリティを支援することにより、ネットワーク機能やデコーダ機能などと一致する高い水準でデータを操作することができるので、ポイントクラウドコンテンツ提供システムの性能を向上させることができる。
【0017】
本開示の実施例による装置及び方法は、フレームレート情報をシグナリングするためのビットを減少させてビット効率性を増加させることができる。
【0018】
本開示の実施例による装置及び方法は、再生の複雑性の増加を低下させることにより、滑らかで漸進的な再生を可能にすることができる。
【図面の簡単な説明】
【0019】
【
図1】本開示の実施例によるポイントクラウドコンテンツ提供システムの例示を示すブロック図である。
【
図2】本開示の実施例によるポイントクラウドコンテンツ提供過程の例示を示すブロック図である。
【
図3】本開示の実施例によるポイントクラウドビデオ取得過程の例示を示す。
【
図4】本開示の実施例によるポイントクラウド符号化装置の例示を示す。
【
図5】本開示の実施例によるボクセル(voxel)の例示を示す。
【
図6】本開示の実施例による八分木(octree)及び占有(occupancy)コードの例示を示す。
【
図7】本開示の実施例による隣接ノードパターンの例示を示す。
【
図8】本開示の実施例によるLOD距離値によるポイントの構成に対する例示を示す。
【
図9】本開示の実施例によるLOD別のポイント構成の例示を示す。
【
図10】本開示の実施例によるポイントクラウド復号化装置の例示を示すブロック図である。
【
図11】本開示の実施例によるポイントクラウド復号化装置の他の例示を示すブロック図である。
【
図12】本開示の実施例による伝送装置の他の例示を示すブロック図である。
【
図13】本開示の実施例による受信装置の他の例示を示すブロック図である。
【
図14】本開示の実施例によるポイントクラウドデータ送受信方法/装置と連動可能な構造の例示を示す。
【
図15】本開示の実施例による伝送装置の別の例示を示すブロック図である。
【
図16】本開示の実施例によるバウンディングボックスを三次元ブロックに空間分割した例示を示す。
【
図17】本開示の実施例による受信装置の別の例示を示すブロック図である。
【
図18】本開示の実施例によるビットストリームの構造に対する例示を示す。
【
図19】本開示の実施例によるビットストリーム内の構成間の識別関係に対する例示を示す。
【
図20】本開示の実施例によるビットストリーム内の構成間の参照関係を示す。
【
図21】本開示の実施例によるSPSシンタックス構造に対する例示を示す。
【
図22】本開示の実施例によるアトリビュート(attribute)タイプの指示及びポジションコンポーネント間の対応関係の指示に対する例示を示す。
【
図23】本開示の実施例によるGPSシンタックス構造に対する例示を示す。
【
図24】本開示の実施例によるAPSシンタックス構造に対する例示を示す。
【
図25】本開示の実施例によるアトリビュートコーディングタイプテーブルに対する例示を示す。
【
図26】本開示の実施例によるタイルインベントリシンタックス構造に対する例示を示す。
【
図27-28】本開示の実施例によるジオメトリスライスシンタックス構造に対する例示を示す。
【
図29-30】本開示の実施例によるアトリビュートスライスシンタックス構造に対する例示を示す。
【
図31】本開示の実施例によるメタデータスライスシンタックス構造に対する例示を示す。
【
図32】本開示の実施例によるTLVカプセル化構造に対する例示を示す。
【
図33】本開示の実施例によるTLVカプセル化シンタックス構造及びペイロードタイプに対する例示を示す。
【
図34】本開示の実施例によるシングルトラックを含むファイルに対する例示を示す。
【
図35】本開示の実施例によるマルチプルトラックを含むファイルに対する例示を示す。
【
図36-37】時間スケーラビリティを支援する実施例に対するフローチャートである。
【
図38-39】フレームレート情報のシグナリング及び取得如何を決定する例示に対するフローチャートである。
【
図40-41】重複シグナリング問題を防止することができる実施例に対するフローチャートである。
【発明を実施するための形態】
【0020】
以下、添付図面を参照して、本開示の実施例について、本開示の属する技術分野における通常の知識を有する者が容易に実施し得るように詳細に説明する。しかし、本開示は、様々な異なる形態で実現でき、ここで説明する実施例に限定されない。
【0021】
本開示の実施例を説明するにあたり、公知の構成又は機能についての具体的な説明が本開示の要旨を不明確にするおそれがあると判断される場合には、それについての詳細な説明は省略する。そして、図面において、本開示についての説明と関係ない部分は省略し、同様の部分には同様の図面符号を付した。
【0022】
本開示において、ある構成要素が他の構成要素と「連結」、「結合」又は「接続」されているとするとき、これは、直接的な連結関係だけでなく、それらの間に別の構成要素が存在する間接的な連結関係も含むことができる。また、ある構成要素が他の構成要素を「含む」又は「有する」とするとき、これは、特に反対される記載がない限り、別の構成要素を排除するのではなく、別の構成要素をさらに含むことができることを意味する。
【0023】
本開示において、「第1」、「第2」などの用語は、一つの構成要素を他の構成要素から区別する目的のみで使用され、特に言及されない限り、構成要素間の順序又は重要度などを限定しない。したがって、本開示の範囲内で、一実施例における第1構成要素を他の実施例で第2構成要素と呼んでもよく、これと同様に、一実施例における第2構成要素を他の実施例で第1構成要素と呼んでもよい。
【0024】
本開示において、互いに区別される構成要素は、それぞれの特徴を明確に説明するためのものであり、構成要素が必ずしも分離されることを意味するものではない。つまり、複数の構成要素が統合されて一つのハードウェア又はソフトウェア単位で構成されてもよく、一つの構成要素が分散されて複数のハードウェア又はソフトウェア単位で構成されてもよい。よって、別に言及しなくても、このように統合又は分散された実施例も本開示の範囲に含まれる。
【0025】
本開示において、さまざまな実施例で説明する構成要素が必ず必要不可欠な構成要素を意味するものではなく、一部は選択的な構成要素であり得る。したがって、一実施例で説明する構成要素の部分集合で構成される実施例も本開示の範囲に含まれる。また、様々な実施例で説明する構成要素にさらに他の構成要素を含む実施例も、本開示の範囲に含まれる。
【0026】
本開示は、ポイントクラウド関連データの符号化及び復号化に関するものであって、本開示に使用される用語は、本開示で新たに定義されなり限り、本開示の属する技術分野で通用される通常の意味を有することができる。
【0027】
本開示において、「/」と「、」は「及び/又は」と解釈されることができる。例えば、「A/B」と「A、B」は「A及び/又はB」と解釈されることができる。また、「A/B/C」と「A、B、C」は、「A、B及び/又はCのうちの少なくとも一つ」を意味することができる。
【0028】
本開示において、「又は」は「及び/又は」と解釈されることができる。例えば、「A又はB」は、1)「A」のみを意味するか、2)「B」のみを意味するか、3)「A及びB」を意味することができる。又は、本開示において、「又は」は、「追加的に又は代替的に(additionally or alternatively)」を意味することができる。
【0029】
本開示は、ポイントクラウド関連データの圧縮に関するものである。本開示の多様な方法又は実施例は、MPEG(moving picture experts group)のPCC(point cloud compression又はpoint cloud coding)標準(例えば、G-PCC又はV-PCC標準)又は次世代ビデオ/イメージコーディング標準に適用されることができる。
【0030】
本開示において、「ポイントクラウド」は、三次元空間に位置したポイントの集合を意味することができる。また、本開示において、「ポイントクラウドコンテンツ」は、ポイントクラウドで表現されるコンテンツであって、「ポイントクラウドビデオ/画像」を意味することができる。以下では、「ポイントクラウドビデオ/画像」を「ポイントクラウドビデオ」という。ポイントクラウドビデオは、一つ以上のフレームを含むことができ、一つのフレームは、静止画又はピクチャであり得る。したがって、ポイントクラウドビデオは、ポイントクラウド画像/フレーム/ピクチャを含むことができ、「ポイントクラウド画像」、「ポイントクラウドフレーム」及び「ポイントクラウドピクチャ」のうちのいずれか一つと称されることがある。
【0031】
本開示において、「ポイントクラウドデータ」は、ポイントクラウド内の各ポイントに関連したデータ又は情報などを意味することができる。ポイントクラウドデータは、ジオメトリ(geometry)及び/又はアトリビュート(attribute、属性)を含むことができる。また、ポイントクラウドデータは、メタ(meta)データをさらに含んでもよい。ポイントクラウドデータは、「ポイントクラウドコンテンツデータ」又は「ポイントクラウドビデオデータ」などと称されることがある。また、ポイントクラウドデータは、「ポイントクラウドコンテンツ」、「ポイントクラウドビデオ」、「G-PCCデータ」などと称されることがある。
【0032】
本開示において、ポイントクラウドデータに該当するポイントクラウドオブジェクト(object)は、座標系に基づくボックス形態で示すことができ、この座標系に基づくボックス形態をバウンディングボックス(bounding box)ということができる。すなわち、バウンディングボックスは、ポイントクラウドのポイントを全て入れることが可能な直方体(rectangular cuboid)であってもよく、原本(source)ポイントクラウドフレームが含まれる直方体であってもよい。
【0033】
本開示において、ジオメトリは、各ポイントのポジション(又は、ポジション情報)を含み、このポジションは、三次元座標系(例えば、x軸、y軸及びz軸からなる座標系)を表すパラメータ(例えば、x軸値、y軸値及びz軸値)で表現できる。ジオメトリは、「ジオメトリ情報」と称されることがある。
【0034】
本開示において、アトリビュートは、各ポイントの属性を含むことができ、この属性は、各ポイントのテクスチャ(texture)情報、色相(RGB又はYCbCr)、反射率(reflectance、r)、透明度(transparency)などのうちの一つ以上を含むことができる。アトリビュートは、「アトリビュート情報」と称されることがある。メタデータは、後述する取得過程において取得に関連した多様なデータを含むことができる。
【0035】
ポイントクラウドコンテンツ提供システムの概要
【0036】
図1は、本開示の実施例によるポイントクラウドコンテンツを提供するシステム(以下では、「ポイントクラウドコンテンツ提供システム」という)の例示を示す。
図2は、ポイントクラウドコンテンツ提供システムがポイントクラウドコンテンツを提供する過程の例示を示す。
【0037】
図1に示すように、ポイントクラウドコンテンツ提供システムは、伝送装置(transmission device)10及び受信装置(reception device)20を含むことができる。ポイントクラウドコンテンツ提供システムは、伝送装置10と受信装置20の動作によって、
図2に示されている取得過程(S20)、エンコーディング過程(S21)、伝送過程(S22)、デコーディング過程(S23)、レンダリング過程(S24)及び/又はフィードバック過程(S25)を行うことができる。
【0038】
伝送装置10は、ポイントクラウドコンテンツを提供するために、ポイントクラウドデータを取得し、取得されたポイントクラウドデータ(原本ポイントクラウドデータ)に対する一連の過程(例えば、エンコーディング過程)を経てビットストリームを出力することができる。ここで、ポイントクラウドデータは、エンコーディング過程を経てビットストリーム形式で出力されることができる。実施例によって、伝送装置10は、出力されたビットストリームをファイル又はストリーミング(ストリーミングセグメント)形式でデジタルストレージ媒体又はネットワークを介して受信装置20へ伝送することができる。デジタルストレージ媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの多様なストレージ媒体を含むことができる。受信装置20は、受信されたデータ(例えば、符号化されたポイントクラウドデータ)を再び元来のポイントクラウドデータに加工(例えば、デコーディング又は復元)してレンダリングすることができる。これらの過程によって、ポイントクラウドコンテンツがユーザに提供されることができ、本開示は、これらの一連の過程を効果的に実行するために必要な多様な実施例を提供することができる。
【0039】
図1に示すように、伝送装置10は、取得部11、符号化部12、カプセル化処理部13及び伝送部14を含むことができ、受信装置20は、受信部21、デカプセル化処理部22、復号化部23及びレンダリング部24を含むことができる。
【0040】
取得部11は、キャプチャ、合成又は生成過程などを介してポイントクラウドビデオを取得する過程(S20)を行うことができる。従って、取得部11は、「ポイントクラウドビデオ取得部(point cloud video acquisition)」とも称される。
【0041】
取得過程(S20)によって、多数のポイントに対するポイントクラウドデータ(ジオメトリ及び/又はアトリビュートなど)などが生成できる。また、取得過程(S20)によって、ポイントクラウドビデオの取得に関連したメタデータが生成できる。また、取得過程(S20)によって、ポイントクラウド間の連結情報を示すメッシュ(mesh)データ(例えば、三角形形状のデータ)が生成できる。
【0042】
メタデータは、イニシャルビューイングオリエンテーションメタデータ(Initial viewing orientation metadata)を含むことができる。イニシャルビューイングオリエンテーションメタデータは、ポイントクラウドデータが前を示すデータであるか、それとも後ろを示すデータであるかを指示することができる。メタデータは、ポイントクラウドに対するメタデータである「補助(auxiliary)データ」と称されることがある。
【0043】
取得されたポイントクラウドビデオには、PLY(polygon file format or the stanford triangle format)ファイルが含まれることができる。ポイントクラウドビデオは、一つ以上のフレームを有するので、取得されたポイントクラウドビデオには、一つ以上のPLYファイルが含まれることができる。PLYファイルは、各ポイントのポイントクラウドデータを含むことができる。
【0044】
ポイントクラウドビデオ(又は、ポイントクラウドデータ)の取得のために、取得部11は、深さ(depth、深さ情報)を取得することが可能なカメラ装備と、深さ情報に対応する色相情報を抽出することが可能なRGBカメラとの組み合わせで構成できる。ここで、深さ情報を取得することが可能なカメラ装備は、赤外線パターンプロジェクタと赤外線カメラとの組み合わせであってもよい。また、取得部11は、LiDARで構成されてもよいが、LiDARのレーザーパルスを照射し反射して戻ってくる時間を測定して反射体の位置座標を測定するレーダーシステムを用いることができる。
【0045】
取得部110は、深さ情報から三次元空間上のポイントからなるジオメトリの形態を抽出し、RGB情報から各ポイントの色相や反射などを表現するアトリビュートを抽出することができる。
【0046】
ポイントクラウドビデオ(又は、ポイントクラウドデータ)を抽出(又は、キャプチャ、取得など)する方式としては、中心オブジェクトをキャプチャするインワード-フェーシング(inward-facing)方式と、外部環境をキャプチャするアウトワード-フェーシング(outward-facing)方式があり得る。インワード-フェーシング方式とアウトワード-フェーシング方式に対する例示が
図3に示されている。
図3の(a)は、インワード-フェーシング方式に対する例示であり、
図3の(b)は、アウトワード-フェーシング方式に対する例示である。
【0047】
図3の(a)に示すように、インワード-フェーシング方式は、自律走行のように自動車において現在周辺環境をポイントクラウドコンテンツで構成する場合に使用できる。
図3の(b)に示すように、アウトワード-フェーシング方式は、VR/AR環境でキャラクタ、選手、物、俳優などの核心となるオブジェクトを360度でユーザが自由に見ることが可能なポイントクラウドコンテンツで構成する場合に使用できる。複数台のカメラを介してポイントクラウドコンテンツを構成する場合には、カメラ間のグローバル空間座標系(global coordinate system)を設定するために、コンテンツをキャプチャする前にカメラをキャリブレーションする過程が行われてもよい。キャプチャされたポイントクラウドビデオに基づいて任意のポイントクラウドビデオを合成する方式が活用されてもよい。
【0048】
一方、コンピュータで生成された仮想の空間に対するポイントクラウドビデオを提供しようとする場合には、実際のカメラを介したキャプチャが行われなくてもよい。この場合、キャプチャされたポイントクラウドコンテンツの質を向上させるための後処理が必要であってもよい。例えば、取得過程(S20)でカメラ装備が提供する範囲で最大/最小深さ値を調整することができるが、所望しない領域(例えば、背景)又は所望しない領域のポイントデータを除去する後処理が行われるか、或いは連結された空間を認識して穴(spatial hole)を埋める後処理が行われることもできる。他の例として、空間座標系を共有するカメラから抽出されたポイントクラウドデータを各カメラの位置座標を基準に各ポイントに対するグローバル座標系への変換過程を経て一つのコンテンツに統合する後処理が行われてもよい。これにより、一つの広い範囲のポイントクラウドコンテンツが生成されてもよく、或いはポイントの密度が高いポイントクラウドコンテンツが取得されてもよい。
【0049】
符号化部12は、取得部11から生成されたデータ(ジオメトリ、アトリビュート及び/又はメタデータ及び/又はメッシュデータなど)を一つ以上のビットストリームにエンコードするエンコーディング過程(S21)を行うことができる。従って、符号化部12は、「ポイントクラウドビデオエンコーダ(point cloud video encoder)」とも称される。符号化部12は、取得部11から生成されたデータを直列的又は並列的にエンコードすることができる。
【0050】
符号化部12が行うエンコーディング過程(S21)は、ジオメトリベースのポイントクラウド圧縮(geometry-based point cloud compression、G-PCC)であってもよい。符号化部12は、圧縮及びコーディング効率のために、予測、変換、量子化、エントロピーコーディングなどの一連の手続きを行うことができる。
【0051】
エンコードされたポイントクラウドデータは、ビットストリーム形式で出力できる。G-PCC手続きに基づく場合、符号化部12は、ポイントクラウドデータを後述のようにジオメトリ及びアトリビュートに分けてエンコードすることができる。この場合、出力されるビットストリームは、エンコードされたジオメトリを含むジオメトリビットストリーム、及びエンコードされたアトリビュートを含むアトリビュートビットストリームを含むことができる。また、出力されるビットストリームは、メタデータを含むメタデータビットストリーム、補助データを含む補助ビットストリーム、及びメッシュデータを含むメッシュデータビットストリームのうちの一つ以上をさらに含んでもよい。エンコーディング過程(S21)については、以下でさらに詳細に説明する。エンコードされたポイントクラウドデータを含むビットストリームは、「ポイントクラウドビットストリーム」又は「ポイントクラウドビデオビットストリーム」と呼ばれることもある。
【0052】
カプセル化処理部13は、復号化部12から出力された一つ以上のビットストリームをファイル又はセグメント(segment)などの形式にカプセル化する過程を行うことができる。したがって、カプセル化処理部13は、「ファイル/セグメントカプセル化モジュール(file/segment encapsulation module)」と呼ばれることもある。図面には、カプセル化処理部13が伝送部14との関係で別途のコンポーネント/モジュールからなる例示が表現されているが、実施例によって、カプセル化処理部13は、伝送部14に含まれることもできる。
【0053】
カプセル化処理部13は、当該データをISOBMFF(ISO Base Media File Format)などのファイルフォーマットにカプセル化するか、或いはその他のDASHセグメントなどの形態で処理することができる。実施例によって、カプセル化処理部13は、メタデータをファイルフォーマット上に含ませることができる。メタデータは、例えば、ISOBMFFファイルフォーマット上の多様なレベルのボックス(box)に含まれるか、或いはファイル内で別途のトラック内のデータとして含まれることができる。実施例によって、カプセル化処理部130は、メタデータ自体をファイルにカプセル化することができる。カプセル化処理部13によって処理されるメタデータは、図面には示されていないメタデータ処理部等から伝達されたものであり得る。メタデータ処理部は、符号化部12に含まれてもよく、或いは別途のコンポーネント/モジュールで構成されてもよい。
【0054】
伝送部14は、「カプセル化されたポイントクラウドビットストリーム」にファイルフォーマットによる処理(伝送のための処理)を加える伝送過程(S22)を行うことができる。伝送部14は、ビットストリーム又は当該ビットストリームを含むファイル/セグメントを、デジタルストレージ媒体又はネットワークを介して受信装置20の受信部21へ伝達することができる。したがって、伝送部14は、「送信機(transmitter)」又は「通信モジュール(communication module)」などとも呼ばれる。
【0055】
伝送部14は、任意の伝送プロトコルに従ってポイントクラウドデータの処理を行うことができる。ここで、「任意の伝送プロトコルに従ってポイントクラウドデータを処理すること」は、「伝送のための処理」であり得る。伝送のための処理には、放送網を介した伝達のための処理や、ブロードバンドを介した伝達のための処理などが含まれることができる。実施例によって、伝送部14は、ポイントクラウドデータだけでなく、メタデータ処理部からメタデータの伝達を受け、伝達されたメタデータに伝送のための処理を加えることもできる。実施例によって、伝送のための処理は伝送処理部で行われることもでき、伝送処理部は、伝送部14に含まれるか、或いは伝送部14とは別途のコンポーネント/モジュールで構成できる。
【0056】
受信部21は、伝送装置10が伝送したビットストリーム、又は当該ビットストリームを含むファイル/セグメントを受信することができる。伝送されるチャネルによって、受信部21は、放送網を介して、ビットストリーム又は当該ビットストリームを含むファイル/セグメントを受信することもでき、ブロードバンドを介して、ビットストリーム又は当該ビットストリームを含むファイル/セグメントを受信することもできる。或いは、受信部21は、デジタルストレージ媒体を介して、ビットストリーム、又は当該ビットストリームを含むファイル/セグメントを受信することもできる。
【0057】
受信部21は、受信されたビットストリーム、又は当該ビットストリームを含むファイル/セグメントに対して伝送プロトコルによる処理を行うことができる。受信部21は、伝送装置10で伝送のための処理が行われたことに対応するように、伝送処理(伝送のための処理)の逆過程を行うことができる。受信部21は、受信したデータのうち、エンコードされたポイントクラウドデータをデカプセル化処理部22へ伝達し、メタデータをメタデータパーシング部へ伝達することができる。メタデータは、シグナリングテーブルの形態であり得る。実施例によって、伝送のための処理の逆過程は、受信処理部で行われることができる。受信処理部、デカプセル化処理部22及びメタデータパーシング部のそれぞれは、受信部21に含まれるか或いは受信部21とは別途のコンポーネント/モジュールで構成されることができる。
【0058】
デカプセル化処理部22は、受信部21又は受信処理部から伝達されたファイル形式のポイントクラウドデータ(すなわち、ファイル形式のビットストリーム)をデカプセル化することができる。したがって、デカプセル化処理部22は、「ファイル/セグメントデカプセル化モジュール(file/segment encapsulation module)」とも呼ばれる。
【0059】
デカプセル化処理部22は、ISOBMFFなどによってファイルをデカプセル化することにより、ポイントクラウドビットストリーム乃至メタデータビットストリームを取得することができる。実施例によって、メタデータ(メタデータビットストリーム)は、ポイントクラウドビットストリームに含まれてもよい。取得されたポイントクラウドビットストリームは、復号化部23へ伝達されることができ、取得されたメタデータビットストリームは、メタデータ処理部へ伝達されることができる。メタデータ処理部は、復号化部23に含まれてもよく、或いは別途のコンポーネント/モジュールで構成されてもよい。デカプセル化処理部23が取得するメタデータは、ファイルフォーマット内のボックス或いはトラック形態であってもよい。デカプセル化処理部23は、必要な場合、メタデータ処理部からデカプセル化に必要なメタデータの伝達を受けることもできる。メタデータは、復号化部23へ伝達されてデコーディング過程(S23)に使用されることもでき、或いはレンダリング部24へ伝達されてレンダリング過程(S24)に使用されることもできる。
【0060】
復号化部23は、ビットストリームの入力を受け、符号化部12の動作に対応する動作を行うことにより、ポイントクラウドビットストリーム(エンコードされたポイントクラウドデータ)をデコードするデコーディング過程(S23)を行うことができる。従って、復号化部23は、「ポイントクラウドビデオデコーダ(point cloud video decoder)」とも呼ばれる。
【0061】
復号化部23は、ポイントクラウドデータをジオメトリ及びアトリビュートに分けてデコードすることができる。例えば、復号化部23は、ポイントクラウドビットストリームに含まれたジオメトリビットストリームからジオメトリを復元(デコーディング)することができ、ポイントクラウドビットストリームに含まれたアトリビュートビットストリーム及び復元されたジオメトリに基づいてアトリビュートを復元(デコーディング)することができる。復元されたジオメトリによるポジション情報、及びデコードされたアトリビュートによるアトリビュート(カラー又はテクスチャなど)に基づいて三次元のポイントクラウドビデオ/画像が復元されることができる。デコーディング過程(S23)については、以下でより詳細に説明する。
【0062】
レンダリング部24は、復元されたポイントクラウドビデオをレンダリングするレンダリング過程(S24)を行うことができる。したがって、レンダリング部24は、「レンダラー(renderer)」とも呼ばれる。
【0063】
レンダリング過程(S24)は、3D空間上にポイントクラウドコンテンツをレンダリングし、ディスプレイする過程を意味することができる。レンダリング過程(S24)は、デコーディング過程を介してデコードされたポイントのポジション情報及びアトリビュート情報に基づいて所望のレンダリング方式によってレンダリングすることができる。
【0064】
ポイントクラウドコンテンツのポイントは、一定の厚さを有する頂点、当該頂点位置を中央とする特定の最小サイズを有する立方体、又は頂点位置を中央とする円などでレンダリングされることもできる。ユーザは、VR/ARディスプレイ又は一般ディスプレイなどを介してレンダリングされた結果の全部又は一部領域を見ることができる。レンダリングされたビデオは、ディスプレイ部を介してディスプレイされることができる。ユーザは、VR/ARディスプレイ又は一般ディスプレイなどを介してレンダリングされた結果の全部又は一部領域を見ることができる。
【0065】
フィードバック過程(S25)は、レンダリング過程(S24)又はディスプレイ過程で取得できる多様なフィードバック情報を伝送装置10へ伝達するか、或いは受信装置20内の他の構成へ伝達する過程を含むことができる。フィードバック過程(S25)は、
図1の受信装置20に含まれた構成のうちの一つ以上によって行われるか、或いは
図10及び
図11に表現された構成のうちの一つ以上によって行われることができる。実施例によって、フィードバック過程(S25)は、「フィードバック部」又は「センシング/トラッキング部(sensing/tracking)」によって行われてもよい。
【0066】
フィードバック過程(S25)を介して、ポイントクラウドコンテンツ消費に対するインタラクティビティ(interactivity)が提供できる。実施例によって、フィードバック過程(S25)でヘッドオリエンテーション(head orientation)情報や、ユーザが現在見ている領域を示すビューポート(viewport)情報などがフィードバックできる。実施例によって、ユーザは、VR/AR/MR/自律走行環境上に実現されたものと相互作用することもできるが、この場合、その相互作用に関連した情報がフィードバック過程(S25)で伝送装置10又はサービスプロバイダ側へ伝達されることもできる。実施例によって、フィードバック過程(S25)は行われなくてもよい。
【0067】
ヘッドオリエンテーション情報は、ユーザの頭部の位置、角度、動きなどに対する情報を意味することができる。この情報に基づいて、ユーザが現在ポイントクラウドビデオ内で見ている領域に対する情報、すなわちビューポート(viewport)情報が計算されることができる。
【0068】
ビューポート情報は、現在ユーザがポイントクラウドビデオで見ている領域に対する情報であり得る。視点(viewpoint)は、ユーザがポイントクラウドビデオで見ている箇所であって、ビューポート領域の真ん中の箇所を意味することができる。すなわち、ビューポートは、視点を中心とした領域であるが、その領域が占めるサイズ形態などは、FOV(field of view)によって決定できる。ビューポート情報を用いた視線分析(gaze analysis)によって、ユーザがどの方式でポイントクラウドビデオを消費するか、ポイントクラウドビデオのどの領域をどれほど凝視するかなどが確認できる。視線分析は、受信側(受信装置)で行われて送信側(伝送装置)にフィードバックチャネルを介して伝達されることもできる。VR/AR/MRディスプレイなどの装置は、ユーザの頭部の位置/方向、装置が支援する垂直(vertical)或いは水平(horizontal)FOVなどに基づいてビューポート領域を抽出することができる。
【0069】
実施例によって、フィードバック情報は、送信側(伝送装置)へ伝送されるだけでなく、受信側(受信装置)で消費されることもできる。すなわち、フィードバック情報を用いて受信側(受信装置)のデコーディング過程やレンダリング過程などが行われ得る。
【0070】
例えば、受信装置20は、ヘッドオリエンテーション情報及び/又はビューポート情報を用いて、現在ユーザが見ている領域に対するポイントクラウドビデオだけ優先的にデコーディング及びレンダリングすることもできる。また、受信部21は、全てのポイントクラウドデータを受信するか、或いはオリエンテーション情報及び/又はビューポート情報に基づいて、オリエンテーション情報及び/又はビューポート情報が示すポイントクラウドデータを受信することもできる。また、デカプセル化処理部22は、全てのポイントクラウドデータをデカプセル化するか、或いはオリエンテーション情報及び/又はビューポート情報に基づいてオリエンテーション情報及び/又はビューポート情報が示すポイントクラウドデータをデカプセル化することもできる。また、復号化部23は、全てのポイントクラウドデータをデコードするか、或いはオリエンテーション情報及び/又はビューポート情報に基づいてオリエンテーション情報及び/又はビューポート情報が示すポイントクラウドデータをデコードすることもできる。
【0071】
ポイントクラウド符号化装置の概要
【0072】
図4は、本開示の実施例によるポイントクラウド符号化装置400の例示を示す。
図4のポイントクラウド符号化装置400は、
図1の符号化部12とは構成及び機能において対応することができる。
【0073】
図4に示すように、ポイントクラウド符号化装置400は、座標系変換部405、ジオメトリ量子化部410、八分木分析部415、近似化部420、ジオメトリエンコーディング部425、復元部430、アトリビュート変換部440、RAHT変換部445、LOD生成部450、リフト部455、アトリビュート量子化部460、アトリビュートエンコーディング部465及び/又はカラー変換部435を含むことができる。
【0074】
取得部11によって取得されたポイントクラウドデータは、ネットワークの状況或いはアプリケーションなどによってポイントクラウドコンテンツの質(例えば、無損失-lossless、損失-lossy、near-lossless)を調節するための過程を経ることができる。また、取得されたポイントクラウドコンテンツの各ポイントを損失なしに伝送することもできるが、そのような場合、ポイントクラウドコンテンツのサイズが大きいため、リアルタイムストリーミングが可能でないこともある。したがって、ポイントクラウドコンテンツの円滑な提供のために、最大ターゲットビット率(bitrate)に合わせてポイントクラウドコンテンツを再構成する過程が必要である。
【0075】
ポイントクラウドコンテンツの質を調節するための過程は、ポイントの位置情報(ジオメトリ情報に含まれたポジション情報)又は色相情報(アトリビュート情報に含まれたカラー情報)を再構成する過程と、エンコードする過程などであり得る。ポイントのポジション情報を再構成及びエンコードする過程をジオメトリコーディングと称し、各ポイントに関連したアトリビュート情報を再構成及びエンコードする過程をアトリビュートコーディングと称することがある。
【0076】
ジオメトリコーディングは、ジオメトリ量子化過程、ボクセル化過程、八分木分析過程、近似化過程、ジオメトリエンコーディング過程及び/又は座標系変換過程を含むことができる。また、ジオメトリコーディングは、ジオメトリ復元過程をさらに含んでもよい。アトリビュートコーディングは、色相変換過程、アトリビュート変換過程、予測変換過程、リフト変換過程、RAHT変換過程、アトリビュート量子化過程、アトリビュートエンコーディング過程などを含むことができる。
【0077】
ジオメトリコーディング
【0078】
座標系変換過程は、ポイントのポジションに対する座標系(coordinate)を変換する過程に当該することができる。よって、座標系変換過程は、「transform coordinates」と称されることがある。座標系変換過程は、座標系変換部405によって行われ得る。例えば、座標系変換部405は、ポイントのポジションを、グローバル空間座標系から三次元空間(例えば、X軸、Y軸及びZ軸座標系で表現される三次元空間など)のポジション情報に変換することができる。実施例による三次元空間のポジション情報は、「ジオメトリ情報」と称されることがある。
【0079】
ジオメトリ量子化過程は、ポイントのポジション情報を量子化する過程に該当することができ、ジオメトリ量子化部410によっても行われることができる。例えば、ジオメトリ量子化部410は、ポイントのポジション情報のうち最小の(x、y、z)値を有するポジション情報を探し、各ポイントのポジション情報から最小の(x、y、z)値を有するポジション情報を差し引くことができる。また、ジオメトリ量子化部410は、差し引かれた値に予め設定された量子スケール(quantization scale)値を掛けた後、その結果を近い整数(integer)値に調整(下げたり上げたり)することにより、量子化過程を行うことができる。
【0080】
ボクセル化過程は、量子化過程を介して量子化されたジオメトリ情報を、三次元空間上に存在する特定のボクセル(voxel)にマッチングする過程に該当することができる。ボクセル化過程も、ジオメトリ量子化部410によって行われることができる。ジオメトリ量子化部410は、量子化過程が適用された各ポイントを再構成するために、ポイントのポジション情報に基づいて、八分木(octree)ベースのボクセル化(voxelization)を行うことができる。
【0081】
本開示の実施例によるボクセルの例示が
図5に示されている。ボクセルは、二次元イメージ/ビデオの情報を持っている最小単位であるピクセル(pixel)と同様に、三次元に存在するポイントの情報を保存するための空間を意味することができる。ボクセルは、ボリューム(volume)とピクセル(pixel)とを組み合わせた混成語である。
図5に示されているように、ボクセルは、三次元空間(2depth、2depth、2depth)をそれぞれの軸(x軸、y軸及びz軸)に基づいてユニット(unit=1.0)となるように分けて生じる三次元キュービック(cubic)空間を意味することができる。ボクセルは、ボクセル群(voxel group)との位置関係で空間座標を推定することができ、ピクセルと同様に色相又は反射率情報を持っていることができる。
【0082】
一つのボクセルに一つのポイントしか存在(マッチング)しなくてもよい。すなわち、一つのボクセルに複数のポイントに関連した情報が存在してもよい。或いは、一つのボクセルに含まれた複数のポイントに関連した情報を一つのポイント情報に統合してもよい。このような調節は、選択的に行われることができる。一つのボクセルに一つのポイント情報として統合して表現する場合、ボクセル内に存在するポイントに対するポジション値に基づいてボクセルの中央点のポジション値が設定されてもよく、これに関連したアトリビュート変換過程を行う必要がある。例えば、アトリビュート変換過程は、ボクセルに含まれたポイント又はボクセルの中央点のポジション値と、特定半径内に隣接しているポイントの色相又は反射率の平均値に調整されてもよい。
【0083】
八分木分析部415は、ボクセルの領域/ポジションを効率よく管理するために、八分木を使用することができる。本開示の実施例による八分木の例示が
図6の(a)に示されている。二次元イメージの空間を効率よく管理するために、全体空間をx軸及びy軸を基に分けると、4個の空間が生じ、4個のそれぞれの空間を再びx軸及びy軸を基に分けると、さらにそれぞれの小さい空間に対して4個の空間が生じる。リーフノード(leaf node)がピクセルになるまで領域を分け、領域の大きさ及び位置別に効率よく管理するためにクアッドツリー(quadtree)を資料構造として使用することができる。
【0084】
これと同様に、本開示は、三次元空間を空間の位置及びサイズ別に効率よく管理するために同じ方式を適用することができる。ただし、
図6の(a)の中間に示すように、Z軸が追加されるため、三次元空間をx軸、y軸及びz軸を基に分けると、8個の空間が生じることができる。また、
図6の(a)の右側に示すように、8個のそれぞれの空間を再びx軸、y軸及びz軸を基に分けると、さらにそれぞれの小さい空間に対して8個の空間が生じることができる。
【0085】
八分木分析部415は、リーフノードがボクセルになるまで領域を分け、領域の大きさ及びポジション別に効率よく管理するために8個の子ノード(children node)領域を管理することが可能な八分木(octree)資料構造を用いることができる。
【0086】
八分木を用いて、ポイントのポジションが反映されたボクセルを管理するため、八分木の全体ボリュームは(0、0、0)~(2d、2d、2d)に設定されなければならない。2dは、ポイントクラウドの全体ポイントを取り囲む最も小さいバウンディングボックスを構成する値に設定され、dは、八分木の深さ(depth)となる。d値を求める式は、下記数式1の通りであり、は、量子化過程が適用されたポイントのポジション値である。
【0087】
【0088】
八分木は、占有(occupancy)コードで表現でき、本開示の実施例による占有コードの例示が
図6の(b)に示されている。八分木分析部415は、各ノード内にポイントが含まれていれば、当該ノードの占有コードを1と表現し、ポイントが含まれていなければ、当該ノードの占有コードを0と表現することができる。
【0089】
各ノードは、8個の子ノードに対する占有か否かを示す8bitのビットマップ(bitmap)を有することができる。例えば、
図6の(b)の二番目のデプス(1-depth)に該当するノードの占有コードが00100001であるので、3番目のノードと8番目のノードに対応する空間(ボクセル又は領域)は、少なくとも一つのポイントを含むことができる。また、3番目のノードの子ノード(リーフノード)の占有コードが10000111であるので、当該リーフノードのうち、一番目のリーフノード、六番目のリーフノード、七番目のリーフノード及び八番目のリーフノードに対応する空間は、少なくとも一つのポイントを含むことができる。また、8番目のノードの子ノード(リーフノード)の占有コードが01001111であるので、当該リーフノードのうち、二番目のリーフノード、五番目のリーフノード、六番目のリーフノード、七番目のリーフノード及び八番目のリーフノードに対応する空間が少なくとも一つのポイントを含むことができる。
【0090】
ジオメトリエンコーディング過程は、占有コードに対してエントロピーコーディングを行う過程に該当することができる。ジオメトリエンコーディング過程は、ジオメトリエンコーディング部425によって行われることができる。ジオメトリエンコーディング部425は、占有コードに対するエントロピーコーディングを行うことができる。生成された占有コードは、直ちにエンコードされてもよく、圧縮効率を高めるためにイントラ及びインターコーディング過程を介してエンコードされてもよい。受信装置20は、占有コードを介して八分木を再構成することができる。
【0091】
一方、ポイントが無いか或いは非常に少ない特定領域の場合、全ての領域をボクセル化させることは非効率的であってもよい。すなわち、特定領域にはポイントが殆ど存在しないので、全体八分木を構成する必要がない場合がある。このような場合のために、早期終了(early termination)方案が必要であり得る。
【0092】
ポイントクラウド符号化装置400は、特定領域(リーフノードに当該しない特定領域)に対して、この特定領域に対応するノード(特定ノード)を8つのサブノード(子ノード)に分ける代わりに、当該特定領域に対してのみ直接ポイントの位置を伝送するか、或いは表面モデル(surface model)を用いて特定領域内のポイントのポジションをボクセルに基づいて再構成することができる。
【0093】
特定ノードに対して直接各ポイントの位置を伝送するモードは、直接モード(direct mode)であり得る。ポイントクラウド符号化装置400は、直接モードを可能にするための条件を満たすか否かをチェックすることができる。
【0094】
直接モードを可能にするための条件は、1)直接モード使用オプションが活性化されていなければならない、2)当該特定ノードがリーフノードに該当しない、3)当該特定ノード内に閾値(threshold)以下のポイントが存在しなければならない、及び4)直接伝送しようとするポイントの総数が閾値を超えないことを含むことができる。
【0095】
ポイントクラウド符号化装置400は、これらの条件を全て満たす場合に、当該特定ノードに対して直接ポイントのポジション値をジオメトリエンコーディング部425を介してエントロピーコーディングして伝送することができる。
【0096】
表面モデルを用いて特定領域内のポイントの位置をボクセルに基づいて再構成するモードは、trisoupモードであってもよい。trisoupモードは、近似化部420によって行われてもよい。近似化部420は、八分木の特定レベルを定め、定めた特定レベルからは、表面モデルを用いてノード領域内のポイントの位置をボクセルに基づいて再構成することができる。
【0097】
ポイントクラウド符号化装置400は、trisoupモードを選択的に適用することもできる。具体的には、ポイントクラウド符号化装置400は、trisoupモードの使用時に、trisoupモードが適用されるレベル(特定レベル)を指定することができる。例えば、指定された特定レベルが八分木の深さ(d)と同じであれば、trisoupモードが適用されなくてもよい。すなわち、指定された特定レベルは、八分木の深さ値よりも小さくなければならない。
【0098】
指定された特定レベルのノードの三次元立方体領域をブロック(block)といい、一つのブロックは、一つ以上のボクセルを含むことができる。ブロック又はボクセルは、ブリック(brick)に対応することもできる。各ブロックは、12個のエッジ(edge)を持っていてもよく、近似化部420は、各エッジがポイントを有するボクセル(occupied voxel)に隣接したか否かをチェックすることができる。各エッジは、複数の占有された(occupied)ボクセルに隣接することができる。ボクセルに隣接したエッジの特定位置を頂点(vertex)といい、近似化部420は、一つのエッジに複数の占有されたボクセルが隣接した場合には、当該位置の平均位置を頂点と定めることができる。
【0099】
ポイントクラウド符号化装置400は、頂点が存在する場合に、エッジの始点(x、y、z)、エッジの方向ベクトル(△x、△y、△z)、及び頂点の位置値(エッジ内の相対的位置値)をジオメトリエンコーディング部425を介してエントロピーコーディングすることができる。
【0100】
ジオメトリ復元過程は、八分木及び/又は近似化された八分木を再構成して、復元されたジオメトリを生成する過程に該当することができる。ジオメトリ復元過程は、復元部430によって行われ得る。復元部430は、三角形再構成(triangle reconstruction)、アップサンプリング(up-sampling)、ボクセル化過程などを介してジオメトリ復元過程を行うことができる。
【0101】
【0102】
【0103】
【0104】
【0105】
また、復元部430は、加算された値の最小値を求め、最小値のある軸に沿ってプロジェクション過程を行うことができる。
【0106】
例えば、復元部430は、x要素(element)が最小である場合、各頂点をブロックの中心を基準としてx軸にプロジェクションさせ、(y、z)平面にプロジェクションさせることができる。また、復元部430は、(y、z)平面にプロジェクションさせて導出される値が(ai、bi)であれば、atan2(bi、ai)を介してθ値を求め、θ値を基準に頂点を整列することができる。
【0107】
頂点の数に応じて三角形を再構成する方式は、整列された順序に合わせて下記表1のように組み合わせて三角形を生成することができる。例えば、4個の頂点が存在すれば(n=4)、二つの三角形(1、2、3)、(3、4、1)が構成できる。一番目の三角形1、2、3は、整列された頂点から一番目、二番目及び三番目の頂点で構成されることができ、二番目の三角形3、4、1は、三番目、四番目及び一番目の頂点で構成されることができる。
【0108】
【0109】
復元部430は、三角形のエッジに沿って中間にポイントを追加してボクセル化するためにアップサンプリング過程を行うことができる。復元部430は、アップサンプリング要素値(upsampling factor)とブロックの幅を基準に追加ポイントを生成することができる。これらのポイントは、refined頂点と呼ぶことがある。復元部430は、refined頂点をボクセル化することができ、ポイントクラウド符号化装置400は、ボクセル化された位置値を基準にアトリビュートコーディングを行うことができる。
【0110】
実施例によって、ジオメトリエンコーディング部425は、コンテキスト適応的算術(context adaptive arithmetic)コーディングを適用して圧縮効率を高めることができる。ジオメトリエンコーディング部425は、算術コードを用いて占有コードを直ちにエントロピーコーディングすることができる。実施例によって、ジオメトリエンコーディング部425は、周辺隣接ノードの占有如何に基づいて適応的にエンコーディングを行うか(イントラコーディング)、或いは以前フレームの占有コードに基づいて適応的にエンコーディングを行うこともできる(インターコーディング)。ここで、フレームは、同じ時間に生成されたポイントクラウドデータの集合を意味することができる。イントラコーディングとインターコーディングは、選択的(optional)過程であるので、省略可能である。
【0111】
幾つの隣接ノードを参照するかによって圧縮効率が異なり、ビットが大きくなると、エンコーディング過程が複雑になるが、片寄せにして圧縮効率が高くなることもある。例えば、3-bitコンテキストを有すると、23=8種類に分けてコーディングしなければならないこともある。分けてコーディングを行う部分は、実現の複雑度に影響を与えることができるので、圧縮の効率と複雑度の適正水準を合わせる必要がある。
【0112】
イントラコーディングの場合に、ジオメトリエンコーディング部425は、まず、隣接ノードの占有如何を用いて、隣接ノードパターン(neighbor pattern)値を求めることができる。隣接ノードのパターンに対する例示が
図7に示されている。
【0113】
図7の(a)は、ノードに対応するキューブ(中央に位置したキューブ)、及び当該キューブと少なくとも一つの面を共有する6つのキューブ(隣接ノード)を示す。図示されたノードは、同じデプス(深さ)のノードである。図示された数字は、6個のノードそれぞれに連関した重み(1、2、4、8、16、32など)を示す。各重みは、隣接ノードの位置に応じて順次与えられる。
【0114】
図7の(b)は、隣接ノードパターン値を示す。隣接ノードパターン値は、占有された(ocupied)隣接ノード(ポイントを有する隣接ノード)の重みが掛けられた値の和である。したがって、隣接ノードパターン値は、0から63までの値を有することができる。隣接ノードパターン値が0である場合、当該ノードの隣接ノードのうち、ポイントを有するノード(占有されたノード)がないことを示す。隣接ノードパターン値が63である場合、隣接ノードが全て占有されたノードであることを示す。
図7の(b)において、重み1、2、4、8が与えられた隣接ノードが占有されたノードであるので、隣接ノードパターン値は、1、2、4、8を加えた値15である。
【0115】
ジオメトリエンコーディング部425は、隣接ノードパターン値に応じてコーディングを行うことができる。例えば、隣接ノードパターン値が63である場合、ジオメトリエンコーディング部425は、64種類のコーディングを行うことができる。実施例によって、ジオメトリエンコーディング部425は、隣接ノードパターン値を変更してコーディングの複雑度を減らすことができ、例えば、隣接ノードパターン値の変更は、64を10又は6に変更するテーブルに基づいて行われることができる。
【0116】
アトリビュートコーディング
【0117】
アトリビュートコーディングは、復元された(再構成された)ジオメトリと座標系変換前のジオメトリ(原本ジオメトリ)に基づいてアトリビュート情報をコーディングする過程に該当することができる。アトリビュートは、ジオメトリに従属的であり得るので、アトリビュートコーディングに復元されたジオメトリが活用できる。
【0118】
前述したように、アトリビュートは、色相や反射率などを含むことができる。アトリビュートに含まれた情報又はパラメータに対して同じアトリビュートコーディング方法が適用できる。色相は三つの要素を有し、反射率は一つの要素を有し、要素ごとに独立的に処理できる。
【0119】
アトリビュートコーディングは、色相変換過程、アトリビュート変換過程、予測変換過程、リフト変換過程、RAHT変換過程、アトリビュート量子化過程、アトリビュートエンコーディング過程などを含むことができる。予測変換過程、リフト変換過程、RAHT変換過程は、選択的に使用されるか、或いは一つ又はそれ以上の組み合わせが使用され得る。
【0120】
色相変換過程は、アトリビュート内の色相のフォーマットを他のフォーマットに変換する過程に該当することができる。色相変換過程は、カラー変換部435によって行われることができる。すなわち、カラー変換部435は、アトリビュート内の色相を変換することができる。例えば、カラー変換部435は、アトリビュート内の色相をRGBからYCbCrに変換するコーディング作業を行うことができる。実施例によって、カラー変換部435の動作、すなわち色相変換過程は、アトリビュートに含まれた色相値によって選択的に(optional)適用できる。
【0121】
前述したように、一つのボクセルに一つ又はそれ以上のポイントが存在する場合に、これらを当該ボクセルに対する一つのポイント情報に統合して示すために、ボクセル内に存在するポイントに対する位置値がボクセルの中央点に設定できる。これにより、当該ポイントに連関したアトリビュートの値を変換する過程が必要であり得る。また、trisoupモードが行われた場合にも、アトリビュート変換過程が行われることができる。
【0122】
アトリビュート変換過程は、ジオメトリコーディングが行われていないポジション及び/又は再構成されたジオメトリに基づいてアトリビュートを変換する過程に該当することができる。例えば、アトリビュート変換過程は、ボクセルに含まれたポイントのポジションに基づいて、当該ポジションのポイントが有するアトリビュートを変換する過程に該当することができる。アトリビュート変換過程は、アトリビュート変換部440によって行われ得る。
【0123】
アトリビュート変換部440は、ボクセルの中央位置値と、特定半径内に隣接しているポイント(隣接ポイント)のアトリビュート値との平均値を計算することができる。或いは、アトリビュート変換部440は、中央位置との距離による重みをアトリビュート値に適用し、重みが適用されたアトリビュート値の平均値を計算することもできる。この場合、各ボクセルは、位置と計算されたアトリビュート値とを有する。
【0124】
特定位置又は半径内に存在する隣接ポイントを探索するとき、K-Dツリー又はモールトンコード(moulton code)が活用できる。K-Dツリーは、二分探索木(binary search tree)であって、迅速に最短隣接点探索(nearest neighbor search、NNS)ができるように、ポイントを位置基盤で管理することができる資料構造を支援する。モールトンコードは、全てのポイントに対する三次元位置情報(x、y、z)のビットをミキシングして生成できる。例えば、(x、y、z)値が(5、9、1)である場合、(5、9、1)をビットで表すと、(0101、1001、0001)になり、この値をz、y、xの順にビットインデックスに合わせてミキシングすると、010001000111になり、この値は1095となる。すなわち、1095が(5、9、1)のモールトンコード値となる。モールトンコードを基準にポイントを整列し、depth-first travertex過程を介して最短隣接点探索(NNS)が可能である。
【0125】
アトリビュート変換過程の後、アトリビュートコーディングのための他の変換過程においても、最短隣接点探索(NNS)が要求される場合が存在することができ、このような場合には、K-Dツリー又はモールトンコードが活用できる。
【0126】
予測変換過程は、現在ポイント(予測の対象に該当するポイント)に隣接する一つ以上のポイント(隣接ポイント)のアトリビュート値に基づいて現在ポイントのアトリビュート値を予測する過程に該当することができる。予測変換過程は、LOD(level of detail)生成部450によって行われることができる。
【0127】
予測変換は、LOD変換技法が適用された方法であって、LOD生成部450は、各ポイントのLOD距離値を基準に、各ポイントのLOD値を計算して設定することができる。
【0128】
LOD距離値によるポイントの構成についての一例が
図8に示されている。
図8において、矢印の方向を基準に、一番目の絵は、オリジナルポイントクラウドコンテンツを示し、二番目の絵は、最も低いLODのポイントの分布を示し、七番目の絵は、最も高いLODのポイントの分布を示す。
図8に示すように、最も低いLODのポイントは、疎に(sparse)分布し、最も高いLODのポイントは、密に分布することができる。すなわち、LODが増加するほど、ポイント間の間隔(又は、距離)がさらに短くなることができる。
【0129】
ポイントクラウド内に存在する各ポイントは、LOD別に分離でき、LOD別ポイントの構成は、当該LOD値よりもさらに低いLODに属したポイントを含むことができる。例えば、LODレベル2を有するポイントの構成は、LODレベル1とLODレベル2に属する全てのポイントを含むことができる。
【0130】
LOD別ポイントの構成についての一例が
図9に示されている。
図9の上側の絵は、三次元空間に分布されたポイントクラウドコンテンツ内のポイントの例示(P0~P9)を示す。
図9のオリジナルオーダー(Original order)は、LOD生成前のポイントP0~P9の順序を示し、
図9のLOD基盤オーダー(LOD-based order)は、LODの生成によるポイントの順序を示す。
【0131】
図9に示すように、ポイントは、LOD別に再整列でき、高いLODは、低いLODに属したポイントを含むことができる。例えば、LOD0は、P0、P5、P4及びP2を含むことができ、LOD1は、LOD0のポイントとP1、P6及びP3を含むことができる。また、LOD2は、LOD0のポイント、LOD1のポイント、並びにP9、P8及びP7を含むことができる。
【0132】
LOD生成部450は、予測変換のために、各ポイントに対する予測器(predictor)を生成することができる。従って、N個のポイントが存在する場合には、N個の予測器が生成できる。予測器は、各ポイントに対するLOD値、隣接ポイントに対するインデクシング情報、及び隣接ポイントとの距離値に基づいて重み値(=1/距離)を計算して設定することができる。ここで、隣接ポイントは、現在ポイントからLOD別に設定された距離内に存在するポイントであり得る。
【0133】
また、予測器は、隣接ポイントのアトリビュート値に「設定された重み」を掛け、重みが掛けられたアトリビュート値を平均した値を、現在ポイントの予測されたアトリビュート値に設定することができる。現在ポイントのアトリビュート値から当該現在ポイントの予測されたアトリビュート値を差し引いた残余(Residual)アトリビュート値に対してアトリビュート量子化過程が行われることができる。
【0134】
リフト変換過程は、予測変換過程と同様に、LOD生成過程を介してポイントをディテールレベルの集合で再構成する過程に該当することができる。リフト変換過程は、リフト部455によって行われることができる。リフト変換過程も、各ポイントに対する予測器を生成する過程、及び計算されたLODを予測器に設定する過程、隣接ポイントを登録する過程、及び現在ポイントと隣接ポイントとの距離による重みを設定する過程などを含むことができる。
【0135】
リフト変換過程と予測変換過程との差異点は、リフト変換過程がアトリビュート値に重みを累積適用する方法であることにある。アトリビュート値に重みを累積適用する方法は、次の通りである。
【0136】
1)各ポイントに対する重み値を保存する配列QW(quantization weight)が別途存在することができる。QWの全ての要素の初期値は1.0である。予測器に登録された隣接ノード(隣接ポイント)の予測器インデックスのQW値に現在ポイントの予測器の重みを乗じた値を加える。
【0137】
2)予測されたアトリビュート値を計算するために、ポイントのアトリビュート値に重みを乗じた値を既存のアトリビュート値から差し引く。この過程は、リフト予測(lift prediction)過程と称されることがある。
【0138】
3)「updateweight」と「update」という臨時配列を生成し、配列内の要素を0に初期化する。
【0139】
4)全ての予測器に対して、計算された重みに、QWに保存された重みをさらに乗じて新たな重みを導出し、新たな重みを隣接ノードのインデックスとしてupdateweightに累積合算し、新たな重みを隣接ノードのインデックスのアトリビュート値に乗じた値をupdateに累積合算する。
【0140】
5)全ての予測器に対して、updateのアトリビュート値を予測器インデックスのupdate weightの重み値で割り、その結果を既存のアトリビュート値に合算する。この過程は、リフトアップデート(lift update)過程と称されることがある。
【0141】
6)全ての予測器に対して、リフトアップデート過程を介してアップデートされたアトリビュート値に、リフト予測過程を介してアップデートされた(QWに保存された)重みを乗じ、その結果(乗じて出てきた値)を量子化した後、量子化された値をエントロピーエンコードする。
【0142】
RAHT変換過程は、八分木の下位(lower)レベルにあるノードに連関したアトリビュート情報を用いて、上位レベルにあるノードのアトリビュート情報を予測する方法に該当することができる。すなわち、RATH変換過程は、八分木バックワード(backward)スキャンによるアトリビュート情報イントラコーディング方法に該当することができる。RAHT変換過程は、RAHT変換部445によって行われることができる。
【0143】
RAHT変換部445は、ボクセルで全体領域にスキャンし、各ステップでボクセルをさらに大きいブロックに合算(併合)しながら、ルートノードまでRAHT変換過程を行うことができる。RAHT変換部445は、占有された(occupied)ノードに対してのみRAHT変換過程を行うので、占有されていないemptyノードの場合には、真上の上位レベルのノードを対象にしてRAHT変換過程を行うことができる。
【0144】
【0145】
【0146】
【0147】
【0148】
数式6中、gDC値もhigh-pass係数のように量子化されてエントロピーコーディングできる。
【0149】
アトリビュート量子化過程は、RAHT変換部445、LOD生成部450及び/又はリフト部455から出力されたアトリビュートを量子化する過程に該当することができる。アトリビュート量子化過程は、アトリビュート量子化部460によって行われることができる。アトリビュートエンコーディング過程は、量子化されたアトリビュートをエンコードしてアトリビュートビットストリームを出力する過程に該当することができる。アトリビュートエンコーディング過程は、アトリビュートエンコーディング部465によって行われることができる。
【0150】
例えば、LOD生成部450から現在ポイントの予測されたアトリビュート値が計算された場合、アトリビュート量子化部460は、現在ポイントのアトリビュート値から当該現在ポイントの予測されたアトリビュート値を差し引いた残余(residual)アトリビュート値を量子化することができる。本開示のアトリビュート量子化過程に対する一例は、表2の通りである。
【0151】
【0152】
もし、各ポイントの予測器に隣接ポイントが存在しない場合、アトリビュートエンコーディング部465は、現在ポイントのアトリビュート値(量子化されていないアトリビュート値)を直接エントロピーコーディングすることができる。これとは異なり、現在ポイントの予測器に隣接ポイントが存在する場合に、アトリビュートエンコーディング部465は、量子化された残余アトリビュート値をエントロピーエンコードすることができる。
【0153】
他の例として、リフト部460から、リフトアップデート過程を介してアップデートされたアトリビュート値に、リフト予測過程を介してアップデートされた(QWに保存された)重みを乗じた値が出力される場合、アトリビュート量子化部460は、その結果(乗じて出てきた値)を量子化することができ、アトリビュートエンコーディング部465は、量子化された値をエントロピーエンコードすることができる。
【0154】
ポイントクラウド復号化装置の概要
【0155】
図10は、本開示の一実施例によるポイントクラウド復号化装置1000の例示を示す。
図10のポイントクラウド復号化装置1000は、
図1の復号化部23とは構成及び機能において対応することができる。
【0156】
ポイントクラウド復号化装置1000は、伝送装置10から伝送されたデータ(ビットストリーム)に基づいて、デコーディング過程を行うことができる。デコーディング過程は、ビットストリームを対象に前述したエンコーディング動作に対応する動作を行うことにより、ポイントクラウドビデオを復元(デコーディング)する過程を含むことができる。
【0157】
図10に示すように、デコーディング過程は、ジオメトリデコーディング過程とアトリビュートデコーディング過程を含むことができる。ジオメトリデコーディング過程は、ジオメトリ復号化部1010によって行われることができ、アトリビュートデコーディング過程は、アトリビュート復号化部1020によって行われることができる。すなわち、ポイントクラウド復号化装置1000は、ジオメトリ復号化部1010及びアトリビュート復号化部1020を含むことができる。
【0158】
ジオメトリ復号化部1010は、ジオメトリビットストリームからジオメトリを復元することができ、アトリビュート復号化部1020は、復元されたジオメトリとアトリビュートビットストリームに基づいてアトリビュートを復元することができる。また、ポイントクラウド復号化装置1000は、復元されたジオメトリによるポジション情報、及び復元されたアトリビュートによるアトリビュート情報に基づいて三次元のポイントクラウドビデオ(ポイントクラウドデータ)を復元することができる。
【0159】
図11は、本開示の他の一実施例によるポイントクラウド復号化装置1100の具体的な例示を示す。
図11に示すように、ポイントクラウド復号化装置1100は、ジオメトリデコーディング部1105、八分木合成部1110、近似化合成部1115、ジオメトリ復元部1120、座標系逆変換部1125、アトリビュートデコーディング部1130、アトリビュート逆量子化部1135、RATH変換部1150、LOD生成部1140、逆リフト部1145及び/又はカラー逆変換部1155を含むことができる。
【0160】
ジオメトリデコーディング部1105、八分木合成部1110、近似化合成部1115、ジオメトリ復元部1120、及び座標系逆変換部1150は、ジオメトリデコーディングを行うことができる。ジオメトリデコーディングは、
図1~
図9で説明したジオメトリコーディングの逆過程で行われることができる。ジオメトリデコーディングは、ダイレクトコーディング(direct coding)及びtrisoupジオメトリデコーディング(trisoup geometry decoding)を含むことができる。ダイレクトコーディング及びtrisoupジオメトリデコーディングは、選択的に適用できる。
【0161】
ジオメトリデコーディング部1105は、受信したジオメトリビットストリームを、アリスメティックコーディングに基づいてデコードすることができる。ジオメトリデコーディング部1105の動作は、ジオメトリエンコーディング部435が行う動作の逆過程に対応することができる。
【0162】
八分木合成部1110は、デコードされたジオメトリビットストリームから(又は、デコーディング結果として確保されたジオメトリに関する情報)から占有コードを取得して八分木を生成することができる。八分木合成部1110の動作は、八分木分析部415が行う動作の逆過程に対応することができる。
【0163】
近似化合成部1115は、trisouジオメトリエンコーディングが適用された場合、デコードされたジオメトリ及び/又は生成された八分木に基づいてサーフェス(surface)を合成することができる。
【0164】
ジオメトリ復元部1120は、サーフェス及びデコードされたジオメトリに基づいてジオメトリを復元することができる。ダイレクトコーディングが適用された場合に、ジオメトリ復元部1120は、ダイレクトコーディングが適用されたポイントのポジション情報を直接持ってきて追加することができる。また、trisoupジオメトリエンコーディングが適用された場合に、ジオメトリ復元部1120は、再構成動作、例えば、三角形再構成、アップサンプリング、ボクセル化動作などを行ってジオメトリを復元することができる。復元されたジオメトリは、アトリビュートを含まないポイントクラウドピクチャ又はフレームを含むことができる。
【0165】
座標系逆変換部1150は、復元されたジオメトリに基づいて座標系を変換してポイントのポジションを取得することができる。例えば、座標系逆変換部1150は、ポイントのポジションを三次元空間(例えば、X軸、Y軸及びZ軸座標系で表現される三次元空間など)からグローバル空間座標系の位置情報に逆変換することができる。
【0166】
アトリビュートデコーディング部1130、アトリビュート逆量子化部1135、RATH変換部1230、LOD生成部1140、逆リフト部1145及び/又はカラー逆変換部1250は、アトリビュートデコーディングを行うことができる。アトリビュートデコーディングは、RAHT変換デコーディング、予測変換デコーディング及びリフト変換デコーディングを含むことができる。上述した3種類のデコーディングは、選択的に使用されてもよく、一つ又はそれ以上のデコーディングの組み合わせが使用されてもよい。
【0167】
アトリビュートデコーディング部1130は、アリスメティックコーディングに基づいてアトリビュートビットストリームをデコードすることができる。例えば、各ポイントの予測器に隣接ポイントが存在しないため、現在ポイントのアトリビュート値が直接エントロピーエンコードされた場合に、アトリビュートデコーディング部1130は、現在ポイントのアトリビュート値(量子化されていないアトリビュート値)をデコードすることができる。他の例として、現在ポイントの予測器に隣接ポイントが存在して量子化された残余アトリビュート値がエントロピーエンコードされた場合に、アトリビュートデコーディング部1130は、量子化された残余アトリビュート値をデコードすることができる。
【0168】
アトリビュート逆量子化部1135は、デコードされたアトリビュートビットストリーム又はデコーディングの結果として確保したアトリビュートに対する情報を逆量子化し、逆量子化されたアトリビュート(又は、アトリビュート値)を出力することができる。例えば、アトリビュートデコーディング部1130から量子化された残余アトリビュート値が出力された場合、アトリビュート逆量子化部1135は、量子化された残余アトリビュート値を逆量子化して残余アトリビュート値を出力することができる。逆量子化過程は、ポイントクラウド符号化装置400のアトリビュートエンコーディング如何に基づいて選択的に適用できる。すなわち、各ポイントの予測器に隣接ポイントが存在しないため現在ポイントのアトリビュート値が直接エンコードされた場合に、アトリビュートデコーディング部1130は、量子化されていない現在ポイントのアトリビュート値を出力することができ、アトリビュートエンコーディング過程は、スキップされることができる。本開示のアトリビュート逆量子化過程に対する一例は、表3の通りである。
【0169】
【0170】
RATH変換部1150、LOD生成部1140及び/又は逆リフト部1145は、再構成されたジオメトリ及び逆量子化されたアトリビュートを処理することができる。RATH変換部1150、LOD生成部1140及び/又は逆リフト部1145は、ポイントクラウド符号化装置400のエンコーディング動作に対応するデコーディング動作を選択的に行うことができる。
【0171】
カラー逆変換部1155は、デコードされたアトリビュートに含まれているカラー値(又は、テクスチャ)を逆変換するための逆変換コーディングを行うことができる。カラー逆変換部1155の動作は、カラー変換部435の動作如何に基づいて選択的に行われることができる。
【0172】
図12は、本開示の実施例による伝送装置の他の例示を示す。
図12に示すように、伝送装置は、データ入力部1205、量子化処理部1210、ボクセル化処理部1215、八分木占有(Occupancy)コード生成部1220、表面モデル処理部1225、イントラ/インターコーディング処理部1230、アリスメティック(Arithmetic)コーダ1235、メタデータ処理部1240、色相変換処理部1245、属性変換処理部1250、予測/リフト/RAHT変換処理部1255、アリスメティックコーダ1260及び伝送処理部1265を含むことができる。
【0173】
データ入力部1205の機能は、
図1の取得部11が行う取得過程に対応することができる。すなわち、データ入力部1205は、ポイントクラウドビデオを取得し、多数のポイントに対するポイントクラウドデータを生成することができる。ポイントクラウドデータ内のジオメトリ情報(ポジション情報)は、量子化処理部1210、ボクセル化処理部1215、八分木占有コード生成部1220、表面モデル処理部1225、イントラ/インターコーディング処理部1230、及びアリスメティックコーダ1235を経てジオメトリビットストリーム形式で生成できる。ポイントクラウドデータ内のアトリビュート情報は、色相変換処理部1245、属性変換処理部1250、予測/リフト/RAHT変換処理部1255、及びアリスメティックコーダ1260を経てアトリビュートビットストリーム形式で生成できる。ジオメトリビットストリーム、アトリビュートビットストリーム及び/又はメタデータビットストリームは、伝送処理部1265の処理によって受信装置へ伝送されることができる。
【0174】
具体的に、量子化処理部1210の機能は、
図4のジオメトリ量子化部410が行う量子化過程、及び/又は座標系変換部405の機能に対応することができる。ボクセル化処理部1215の機能は、
図4のジオメトリ量子化部410が行うボクセル化過程に対応することができ、八分木占有コード生成部1220の機能は、
図4の八分木分析部415が行う機能に対応することができる。表面モデル処理部1225の機能は、
図4の近似化部420が行う機能に対応することができ、イントラ/インターコーディング処理部1230の機能及びアリスメティックコーダ1235の機能は、
図4のジオメトリエンコーディング部425が行う機能に対応することができる。メタデータ処理部1240の機能は、
図1で説明されたメタデータ処理部の機能に対応することができる。
【0175】
また、色相変換処理部1245の機能は、
図4のカラー変換部435が行う機能に対応することができ、属性変換処理部1250の機能は、
図4のアトリビュート変換部440が行う機能に対応することができる。予測/リフト/RAHT変換処理部1255の機能は、
図4のRAHT変換部4450、LOD生成部450及びリフト部455が行う機能に対応することができ、アリスメティックコーダ1260の機能は、
図4のアトリビュートエンコーディング部465の機能に対応することができる。伝送処理部1265の機能は、
図1の伝送部14及び/又はカプセル化処理部13が行う機能に対応することができる。
【0176】
図13は、本開示の実施例による受信装置の他の例示を示す。
図13に示すように、受信装置は、受信部1305、受信処理部1310、アリスメティックデコーダ1315、メタデータパーサ1335、占有コード基盤の八分木再構成処理部1320、表面モデル処理部1325、インバース(Inverse)量子化処理部1330、アリスメティックデコーダ1340、インバース量子化処理部1345、予測/リフト/RAHT逆変換処理部1350、色相逆変換処理部1355及びレンダラー1360を含むことができる。
【0177】
受信部1305の機能は、
図1の受信部21が行う機能に対応することができ、受信処理部1310の機能は、
図1のデカプセル化処理部22が行う機能に対応することができる。すなわち、受信部1305は、伝送処理部1265からビットストリームを受信し、受信処理部1310は、デカプセル化処理によってジオメトリビットストリーム、アトリビュートビットストリーム及び/又はメタデータビットストリームを抽出することができる。ジオメトリビットストリームは、アリスメティックデコーダ1315、占有コード基盤の八分木再構成処理部1320、表面モデル処理部1325、及びインバース量子化処理部1330を経て再構成された(復元された)ポジション値(ポジション情報)として生成できる。アトリビュートビットストリームは、アトリビュートデコーダ1340、インバース量子化処理部1345、予測/リフト/RAHT逆変換処理部1350及び色相逆変換処理部1355を経て復元されたアトリビュート値として生成できる。メタデータビットストリームは、メタデータパーサ1335を経て復元されたメタデータ(又は、メタデータ情報)として生成できる。ポジション値、アトリビュート値及び/又はメタデータがレンダラー1360でレンダリングされることにより、ユーザにVR/AR/MR/自律走行などの経験を提供することができる。
【0178】
具体的には、アリスメティックデコーダ1315の機能は、
図11のジオメトリデコーディング部1105が実行する機能に対応することができ、占有コード基盤の八分木再構成処理部1320の機能は、
図11の八分木合成部1110が実行する機能に対応することができる。表面モデル処理部1325の機能は、
図11の近似化合成部が実行する機能に対応することができ、インバース量子化処理部1330の機能は、
図11のジオメトリ復元部1120及び/又は座標系逆変換部1125が実行する機能に対応することができる。メタデータパーサ1335の機能は、
図1で説明したメタデータパーシング部が実行する機能に対応することができる。
【0179】
また、アリスメティックデコーダ1340の機能は、
図11のアトリビュートデコーディング部1130が実行する機能に対応することができ、インバース量子化処理部1345の機能は、
図11のアトリビュート逆量子化部1135の機能に対応することができる。予測/リフト/RAHT逆変換処理部1350の機能は、
図11のRAHT変換部1150、LOD生成部1140及び逆リフト部1145が実行する機能に対応することができ、色相逆変換処理部1355の機能は、
図11のカラー逆変換部1155が実行する機能に対応することができる。
【0180】
図14は、本開示の実施例によるポイントクラウドデータ送受信方法/装置と連動可能な構造の例示を示す。
【0181】
図14の構造は、サーバ(AI Server)、ロボット(Robot)、自律走行車両(Self-Driving Vehicle)、XR装置(XR device)、スマートフォン(Smartphone)、家電(Home Appliance)、及び/又はHMDのうちの少なくとも一つがクラウドネットワーク(Network)に接続された構成を示す。ロボット、自律走行車両、XR装置、スマートフォン又は家電などは、装置と称されることがある。また、XR装置は、実施例によるポイントクラウドデータ装置(PCC)に対応するか、或いはPCC装置と連動することができる。
【0182】
クラウドネットワークは、クラウドコンピューティングインフラの一部を構成するか、或いはクラウドコンピューティングインフラ内に存在するネットワークを意味することができる。ここで、クラウドネットワークは、3Gネットワーク、4G又はLTE(Long Term Evolution)ネットワーク又は5Gネットワークなどを用いて構成できる。
【0183】
サーバは、ロボット、自律走行車両、XR装置、スマートフォン、家電及び/又はHMDのうちの少なくとも一つとクラウドネットワークを介して接続され、接続された装置のプロセシングの少なくとも一部を助けることができる。
【0184】
HMDは、実施例によるXRデバイス及び/又はPCCデバイスが実現できるタイプのうちの一つを示すことができる。実施例によるHMDタイプのデバイスは、コミュニケーションユニット、コントロールユニット、メモリユニット、I/Oユニット、センサユニット、及びパワー供給ユニットなどを含むことができる。
【0185】
<PCC+XR>
【0186】
XR/PCC装置は、PCC及び/又はXR技術が適用されることにより、HMD、車両に備えられたHUD、テレビ、携帯電話、スマートフォン、コンピュータ、ウェアラブルデバイス、家電機器、デジタルサイネージ、車両、固定型ロボット又は移動型ロボットなどで実現されてもよい。
【0187】
XR/PCC装置は、多様なセンサを介して、又は外部装置から取得した三次元ポイントクラウドデータ又はイメージデータを分析して三次元ポイントに対する位置(ジオメトリ)データ及びアトリビュートデータを生成することにより、周辺空間又は現実オブジェクトに対する情報を取得し、出力するXRオブジェクトをレンダリングして出力することができる。例えば、XR/PCC装置は、認識された物体に対する追加情報を含むXRオブジェクトを当該認識された物体に対応させて出力することができる。
【0188】
<PCC+XR+モバイルフォン>
【0189】
XR/PCC装置は、PCC技術が適用されてモバイルフォンなどで実現できる。モバイルフォンは、PCC技術に基づいてポイントクラウドコンテンツをデコードし、ディスプレイすることができる。
【0190】
<PCC+自律走行+XR>
【0191】
自律走行車両は、PCC技術及びXR技術が適用されることにより、移動型ロボット、車両、無人飛行体などで実現できる。XR/PCC技術が適用された自律走行車両は、XR画像を提供する手段を備えた自律走行車両や、XR画像内での制御/相互作用の対象となる自律走行車両などを意味することができる。特に、XR画像内での制御/相互作用の対象となる自律走行車両は、XR装置と区分され、互いに連動することができる。
【0192】
XR/PCC画像を提供する手段を備えた自律走行車両は、カメラを含むセンサからセンサ情報を取得し、取得したセンサ情報に基づいて生成されたXR/PCC画像を出力することができる。例えば、自律走行車両は、HUDを備えてXR/PCC画像を出力することにより、搭乗者に現実オブジェクト又は画面内のオブジェクトに対応するXR/PCCオブジェクトを提供することができる。
【0193】
この時、XR/PCCオブジェクトがHUDに出力される場合には、XR/PCCオブジェクトの少なくとも一部が、搭乗者の視線が向かう実際のオブジェクトにオーバーラップするように出力されることができる。これに対し、XR/PCCオブジェクトが自律走行車両内のディスプレイに出力される場合には、XR/PCCオブジェクトの少なくとも一部が画面内のオブジェクトにオーバーラップするように出力されることができる。例えば、自律走行車両は、車路、他の車両、交通信号機、交通標識板、二輪車、歩行者、建物などのオブジェクトと対応するXR/PCCオブジェクトを出力することができる。
【0194】
実施例によるVR技術、AR技術、MR技術及び/又はPCC技術は、多様なデバイスに適用可能である。すなわち、VR技術は、現実世界のオブジェクトや背景などをCG画像でのみ提供するディスプレイ技術である。これに対し、AR技術は、実際の事物画像上に、仮想で作られたCG画像を一緒に見せる技術を意味する。さらに、MR技術は、現実世界に仮想オブジェクトを混ぜて結合させて見せるという点で、前述したAR技術と類似する。しかし、AR技術では、現実オブジェクトとCG画像とで作られた仮想オブジェクトの区別が明確であり、現実オブジェクトを補完する形態で仮想オブジェクトを使用するのに対し、MR技術では、仮想オブジェクトが現実オブジェクトと同等な性格として見なされるという点で、AR技術とは区別される。より具体的には、例えば、上述したMR技術が適用されたものがホログラムサービスである。VR、AR及びMR技術を統合してXR技術と称されることもある。
【0195】
空間分割
【0196】
ポイントクラウドデータ(すなわち、G-PCCデータ)は、フレーム(ポイントクラウドフレーム)のシーケンスからなるポイントクラウドのボリュメトリックエンコーディング(volumetric encoding)を示すことができる。各ポイントクラウドフレームは、ポイントの数、ポイントのポジション、及びポイントのアトリビュートを含むことができる。ポイントの数、ポイントのポジション、及びポイントのアトリビュートはフレームごとに異なり得る。各ポイントクラウドフレームは、特定タイムインスタンス(particulary time instance)で三次元ポイントの直交座標系(cartesian coordinates)(x、y、z)とゼロ以上のアトリビュートによって明示された三次元ポイントのセットを意味することができる。ここで、三次元ポイントの直交座標系(x、y、z)は、ポジション又はジオメトリであり得る。
【0197】
実施例によって、本開示は、ポイントクラウドデータをエンコード(符号化)する前に、ポイントクラウドデータを一つ以上の三次元ブロックに分割する空間分割過程をさらに行うことができる。三次元ブロックは、ポイントクラウドデータが占有する三次元空間の全部又は一部領域を意味することができる。三次元ブロックは、タイルグループ(tile group)、タイル(tile)、スライス(slice)、コーディングユニット(coding unit、CU)、予測ユニット(prediction unit、PU)、又は変換単位(transform unit、TU)のうちの一つ以上を意味することができる。
【0198】
三次元ブロックに該当するタイルは、ポイントクラウドデータが占有する三次元空間の全部又は一部領域を意味することができる。また、三次元ブロックに該当するスライスも、ポイントクラウドデータが占有する三次元空間の全部又は一部領域を意味することができる。タイルは、一つのタイルに含まれたポイントの個数に基づいて一つ以上のスライスに分割されることができる。タイルは、バウンディングボックス情報を有するスライスのグループであり得る。各タイルのバウンディングボックス情報は、タイルインベントリ(又は、タイルパラメータセット、tile parameter set(TPS))に明示できる。タイルは、バウンディングボックス内の他のタイルとオーバーラップ(overlap)することができる。スライスは、独立してエンコーディングが行われるデータの単位であってもよく、独立してデコーディングが行われるデータの単位であってもよい。つまり、スライスは、独立してエンコーディング又はデコーディングできるポイントのセットであってもよい。実施例によって、スライスは、コーディングされたポイントクラウドフレームの一部又は全体を示すシンタックス要素のシリーズであり得る。各スライスは、当該スライスの属するタイルを識別するためのインデックスを含むことができる。
【0199】
空間分割された三次元ブロックは、それぞれ独立的又は非独立的に処理できる。例えば、空間分割された三次元ブロックは、それぞれ独立的又は非独立的にエンコード又はデコードされてもよく、それぞれ独立的又は非独立的に伝送又は受信されてもよい。また、空間分割された三次元ブロックは、それぞれ独立的又は非独立的に量子化又は逆量子化されてもよく、それぞれ独立的又は非独立的に変換又は逆変換されてもよい。また、空間分割された三次元ブロックは、それぞれ独立的又は非独立的にレンダリングされてもよい。例えば、スライス単位又はタイル単位でエンコーディング又はデコーディングが行われてもよい。また、量子化又は逆量子化がタイル別又はスライス別に異なるように行われてもよく、変換又は逆変換されたタイル別又はスライス別に異なるように行われてもよい。
【0200】
このように、ポイントクラウドデータを一つ以上の三次元ブロックに空間分割し、空間分割された三次元ブロックを独立的又は非独立的に処理すると、三次元ブロックを処理する過程がリアルタイムで行われるとともに、当該過程が低遅延に処理されることができる。また、ポイントクラウドデータが占有する三次元空間上のランダムアクセス(random access)と並列エンコーディング又は並列デコーディングが可能となり、エンコーディング又はデコーディング過程で累積するエラーを防止することもできる。
【0201】
図15は、本開示の実施例による空間分割過程を行う伝送装置1500の例示を示すブロック図である。
図15に示すように、伝送装置1500は、空間分割過程を行う空間分割部1505、シグナリング処理部1510、ジオメトリエンコーダ1515、アトリビュートエンコーダ1520、カプセル化処理部1525及び/又は伝送処理部1530を含むことができる。
【0202】
空間分割部1505は、バウンディングボックス及び/又はサブバウンディングボックスなどに基づいてポイントクラウドデータを一つ以上の三次元ブロックに分割する空間分割過程を行うことができる。空間分割過程を介して、ポイントクラウドデータが一つ以上のタイル及び/又は一つ以上のスライスに分割されることができる。実施例によって、空間分割過程を介して、ポイントクラウドデータが一つ以上のタイルに分割され、分割された各タイルがさらに一つ以上のスライスに分割されることもできる。
【0203】
図16は、バウンディングボックス(すなわち、ポイントクラウドデータ)を一つ以上の三次元ブロックに空間分割した一例を示す。
図16に示すように、ポイントクラウドデータの全体(overall)バウンディングボックスは、三つのタイル、すなわち、タイル#0(tile#0)、タイル#1(tile#1)及びタイル#2(tile#2)に分割されることができる。また、タイル#0は、さらに二つのスライス、すなわちスライス#0(slice#0)及びスライス#1(slice#1)に分割されることができる。また、タイル#1は、さらに二つのスライス、すなわちスライス#2(slice#2)及びスライス#3(slice#3)に分割されることができる。また、タイル#2は、さらにスライス#4(slice#4)に分割されることができる。
【0204】
シグナリング処理部1510は、シグナリング情報を生成及び/又は処理(例えば、エントロピーエンコーディング)してビットストリーム形式で出力することができる。以下では、シグナリング処理部から出力される(シグナリング情報がエンコードされた)ビットストリームを「シグナリングビットストリーム」という。シグナリング情報は、空間分割のための情報又は空間分割に対する情報を含むことができる。すなわち、シグナリング情報は、空間分割部1505で行われた空間分割過程に関連した情報を含むことができる。
【0205】
ポイントクラウドデータが一つ以上の三次元ブロックに分割された場合には、ポイントクラウドデータのうち、特定タイル又は特定スライスに該当する一部のポイントクラウドデータをデコードするための情報が必要であり得る。また、ポイントクラウドデータに対する空間的接近(又は、部分的接近)を支援するために、三次元空間領域に関連した情報が必要であり得る。ここで、空間的接近とは、ポイントクラウドデータ全体で必要な一部のポイントクラウドデータのみをファイルから抽出することを意味することができる。シグナリング情報は、一部のポイントクラウドデータをデコードするための情報、空間的接近を支援するための三次元空間領域に関連した情報などを含むことができる。例えば、シグナリング情報は、三次元バウンディングボックス情報、三次元空間領域情報、タイル情報及び/又はタイルインベントリ情報などを含むことができる。
【0206】
シグナリング情報は、空間分割部1505、ジオメトリエンコーダ1515、アトリビュートエンコーダ1520、伝送処理部1525、及び/又はカプセル化処理部1530から提供されることができる。また、シグナリング処理部1510は、
図17の受信装置1700からフィードバックされるフィードバック情報を空間分割部1505、ジオメトリエンコーダ1515、アトリビュートエンコーダ1520、伝送処理部1525及び/又はカプセル化処理部1530へ提供することができる。
【0207】
シグナリング情報は、トラック内のサンプル、サンプルエントリ、サンプルグループ、トラックグループ又は別途のメタデータトラックなどに保存されてシグナリングされ得る。実施例によって、シグナリング情報は、シーケンスレベルのシグナリングのためのシーケンスパラメータセット(sequence parameter set、SPS)、ジオメトリコーディング情報のシグナリングのためのジオメトリパラメータセット(geometry parameter set、GPS)、アトリビュートコーディング情報のシグナリングのためのアトリビュートパラメータセット(attribute parameter set、APS)、タイルレベルのシグナリングのためのタイルパラメータセット(tile parameter set、TPS)(又は、タイルインベントリ)などの単位でシグナリングされることができる。また、シグナリング情報は、スライスもしくはタイルなどのコーディングユニット単位でシグナリングされることもできる。
【0208】
一方、三次元ブロックのポジション(ポジション情報)は、ジオメトリエンコーダ1515へ出力されることができ、三次元ブロックのアトリビュート(アトリビュート情報)は、アトリビュートエンコーダ1520へ出力されることができる。
【0209】
ジオメトリエンコーダ1515は、ポジション情報に基づいて八分木を構成し、構成された八分木をエンコードしてジオメトリビットストリームを出力することができる。また、ジオメトリエンコーダ1515は、八分木及び/又は近似化された八分木を再構成(復元)してアトリビュートエンコーダ1520へ出力することができる。復元された八分木は、復元されたジオメトリであり得る。ジオメトリエンコーダ1515は、
図4の座標系変換部405、ジオメトリ量子化部410、八分木分析部415、近似化部420、ジオメトリエンコーディング部425及び/又は復元部430が行う動作の全部又は一部を行うことができる。実施例によって、ジオメトリエンコーダ1515は、
図12の量子化処理部1210、ボクセル化処理部1215、八分木占有コード生成部1220、表面モデル処理部1225、イントラ/インターコーディング処理部1230及び/又はアリスメティックコーダ1235が実行する動作の全部又は一部を行うことができる。
【0210】
アトリビュートエンコーダ1520は、復元されたジオメトリに基づいてアトリビュートをエンコードすることにより、アトリビュートビットストリームを出力することができる。アトリビュートエンコーダ1520は、
図4のアトリビュート変換部440、RAHT変換部445、LOD生成部450、リフト部455、アトリビュート量子化部460、アトリビュートエンコーディング部465及び/又はカラー変換部435が実行する動作の全部又は一部を行うことができる。実施例によって、アトリビュートエンコーダ1520は、
図12の属性変換処理部1250、予測/リフト/RAHT変換処理部1255、アリスメティックコーダ1260及び/又は色相変換処理部1245が実行する動作の全部又は一部を行うことができる。
【0211】
カプセル化処理部1525は、入力される一つ以上のビットストリームをファイル又はセグメントなどにカプセル化することができる。例えば、カプセル化処理部1525は、ジオメトリビットストリーム、アトリビュートビットストリーム、シグナリングビットストリームをそれぞれカプセル化することもでき、或いはジオメトリビットストリーム、アトリビュートビットストリーム、シグナリングビットストリームを多重化してカプセル化することができる。実施例によって、カプセル化処理部1525は、TLV(type-length-value)構造のシーケンスで構成されたビットストリーム(G-PCCビットストリーム)をファイルにカプセル化することができる。G-PCCビットストリームを構成するTLV(又は、TLVカプセル化)構造は、ジオメトリビットストリーム、アトリビュートビットストリーム、シグナリングビットストリームなどを含むことができる。実施例によって、G-PCCビットストリームは、カプセル化処理部1525で生成されてもよく、伝送処理部1530で生成されてもよい。TLV構造又はTLVカプセル化構造については、詳細に後述する。実施例によって、カプセル化処理部1525は、
図1のカプセル化処理部13が実行する動作の全部又は一部を行うことができる。
【0212】
伝送処理部1530は、任意の伝送プロトコルに従ってカプセル化されたビットストリーム又はファイル/セグメントなどの処理を行うことができる。伝送処理部1530は、
図1を参照して説明した伝送部14及び伝送処理部、又は
図12の伝送処理部1265が実行する動作の全部又は一部を行うことができる。
【0213】
図17は、本開示の実施例による受信装置1700の例示を示すブロック図である。受信装置1700は、空間分割を実行する伝送装置1500の動作に対応する動作を行うことができる。
図17に示すように、受信装置1700は、受信処理部1705、デカプセル化処理部1710、シグナリング処理部1715、ジオメトリデコーダ1720、アトリビュートエンコーダ1725及び/又は後処理部1730を含むことができる。
【0214】
受信処理部1705は、G-PCCビットストリームがカプセル化されたファイル/セグメント、G-PCCビットストリーム又はビットストリームを受信し、これらを対象に伝送プロトコルによる処理を行うことができる。受信処理部1705は、
図1を参照して説明した受信部21及び受信処理部、又は
図13の受信部1305又は受信処理部1310が実行する動作の全部又は一部を行うことができる。
【0215】
デカプセル化処理部1710は、カプセル化処理部1525が実行する動作の逆過程を行うことにより、G-PCCビットストリームを取得することができる。デカプセル化処理部1710は、ファイル/セグメントをデカプセル化してG-PCCビットストリームを取得することができる。例えば、デカプセル化処理部1710は、シグナリングビットストリームを取得してシグナリング処理部1715へ出力することができ、ジオメトリビットストリームを取得してジオメトリデコーダ1720へ出力することができ、アトリビュートビットストリームを取得してアトリビュートデコーダ1725へ出力することができる。デカプセル化処理部1710は、
図1のデカプセル化処理部22、又は
図13の受信処理部1410が実行する動作の全部又は一部を行うことができる。
【0216】
シグナリング処理部1715は、シグナリング処理部1510が実行する動作の逆過程を行うことにより、シグナリング情報をパーシング及びデコードすることができる。シグナリング処理部1715は、シグナリングビットストリームからシグナリング情報をパーシング及びデコードすることができる。シグナリング処理部1715は、デコードされたシグナリング情報をジオメトリデコーダ1720、アトリビュートデコーダ1720及び/又は後処理部1730へ提供することができる。
【0217】
ジオメトリデコーダ1720は、ジオメトリエンコーダ1515が実行する動作の逆過程を行うことにより、ジオメトリビットストリームからジオメトリを復元することができる。ジオメトリデコーダ1720は、シグナリング情報(ジオメトリに関連したパラメータ)に基づいてジオメトリを復元することができる。復元されたジオメトリは、アトリビュートデコーダ1725へ提供されることができる。
【0218】
アトリビュートデコーダ1725は、アトリビュートエンコーダ1520が実行する動作の逆過程を行うことにより、アトリビュートビットストリームからアトリビュートを復元することができる。アトリビュートデコーダ1725は、シグナリング情報(アトリビュートに関連したパラメータ)と、復元されたジオメトリに基づいてアトリビュートを復元することができる。
【0219】
後処理部1730は、復元されたジオメトリと復元されたアトリビュートに基づいてポイントクラウドデータを復元することができる。ポイントクラウドデータの復元は、復元されたジオメトリと復元されたアトリビュートとを互いにマッチングさせる過程によって行われることができる。実施例によって、後処理部1730は、復元されたポイントクラウドデータがタイル及び/又はスライス単位である場合に、シグナリング情報に基づいて伝送装置1500の空間分割過程の逆過程を行うことにより、ポイントクラウドデータのバウンディングボックスを復元することができる。実施例によって、後処理部1730は、バウンディングボックスが空間分割過程を介して複数のタイル及び/又は複数のスライスに分割された場合に、シグナリング情報に基づいて一部のスライス及び/又は一部のタイルを結合することにより、バウンディングボックスの一部を復元することもできる。ここで、バウンディングボックスの復元に用いられる一部のスライス及び/又は一部のタイルは、空間的接近を所望する三次元空間領域に関連したスライス及び/又は一部のタイルであり得る。
【0220】
ビットストリーム
【0221】
図18は、本開示の実施例によるビットストリームの構造に対する例示を示し、
図19は、本開示の実施例によるビットストリーム内の構成間の識別関係に対する例示を示し、
図20は、本開示の実施例によるビットストリーム内の構成間の参照関係を示す。
【0222】
ジオメトリビットストリーム、アトリビュートビットストリーム、及び/又はシグナリングビットストリームが一つのビットストリーム(又は、G-PCCビットストリーム)で構成される場合、ビットストリームは、一つ以上のサブビットストリームを含むことができる。
【0223】
図18に示すように、ビットストリームは、一つ以上のSPS、一つ以上のGPS、一つ以上のAPS(APS0、APS1)、一つ以上のTPS、及び/又は一つ以上のスライス(slice0、…、slicen)を含むことができる。タイルは、一つ以上のスライスを含むスライスグループであるので、ビットストリームは、一つ以上のタイルを含むことができる。TPSは、各タイルに関する情報(例えば、バウンディングボックスの座標値、高さ及び/又はサイズなどの情報)を含むことができ、各スライスは、ジオメトリビットストリーム(Geom0)及び/又は一つ以上のアトリビュートビットストリーム(Attr0、Attr1)を含むことができる。例えば、スライス0(slice0)は、ジオメトリビットストリーム(Geom00)及び/又は一つ以上のアトリビュートビットストリーム(Attr00、Attr10)を含むことができる。
【0224】
各スライス内のジオメトリビットストリームは、ジオメトリスライスヘッダ(Geom_slice_header)とジオメトリスライスデータ(Geom_slice_data)で構成できる。ジオメトリスライスヘッダは、GPSに含まれたパラメータセットの識別情報(geom_parameter_set_id)、タイル識別子(geom_tile_id)、スライス識別子(geom_slice_id)、及び/又はジオメトリスライスデータ(geom_slice_data)に含まれたデータに関する情報(geomBoxOrigin、geom_box_log2_scale、geom_max_node_size_log2、geom_num_points)などを含むことができる。geomBoxOriginは、当該ジオメトリスライスデータのボックス原点を示すジオメトリボックスオリジン情報であり、geom_box_log2_scaleは、当該ジオメトリスライスデータのログスケールを示す情報であり、geom_max_node_size_log2は、ルートジオメトリ八分木ノードのサイズを示す情報であり、geom_num_pointsは、当該ジオメトリスライスデータのポイントの個数に関連した情報である。ジオメトリスライスデータは、当該スライス内のポイントクラウドデータのジオメトリ情報(又は、ジオメトリデータ)を含むことができる。
【0225】
各スライス内の各アトリビュートビットストリームは、アトリビュートスライスヘッダ(Attr_slice_header)とアトリビュートスライスデータ(Atrr_slice_data)とを含むことができる。アトリビュートスライスヘッダは、当該アトリビュートスライスデータに関する情報を含むことができ、アトリビュートスライスデータは、当該スライス内のポイントクラウドデータのアトリビュート情報(又は、アトリビュートデータ)を含むことができる。一つのスライス内のアトリビュートビットストリームが複数個存在する場合、それぞれは、互いに異なるアトリビュート情報を含むことができる。例えば、一つのアトリビュートビットストリームは、色相に該当するアトリビュート情報を含み、もう一つのアトリビュートビットストリームは、反射率に該当するアトリビュート情報を含むことができる。
【0226】
図19及び
図20に示すように、SPSは、当該SPSを識別するための識別子(seq_parameter_set_id)を含むことができ、GPSは、当該GPSを識別するための識別子(geom_parameter_set_id)と、当該GPSの属する(参照する)アクティブSPS(Active SPS)を指示する識別子(seq_parameter_set_id)とを含むことができる。また、APSは、当該APSを識別するための識別子(attr_parameter_set_id)と、当該APSが参照するアクティブSPSを指し示す識別子(seq_parameter_set_id)とを含むことができる。ジオメトリデータは、ジオメトリスライスヘッダとジオメトリスライスデータとを含み、ジオメトリスライスヘッダは、当該ジオメトリスライスが参照するアクティブGPSの識別子(geom_parameter_set_id)を含むことができる。ジオメトリスライスヘッダは、当該ジオメトリスライスを識別するための識別子(geom_slice_id)、及び/又は当該タイルを識別するための識別子(geom_tile_id)をさらに含んでもよい。アトリビュートデータは、アトリビュートスライスヘッダとアトリビュートスライスデータとを含み、アトリビュートスライスヘッダは、当該アトリビュートスライスで参照するアクティブAPSの識別子(attr_parameter_set_id)と、当該アトリビュートスライスに関連したジオメトリスライスを識別するための識別子(geom_slice_id)とを含むことができる。
【0227】
このような参照関係によって、ジオメトリスライスはGPSを参照し、GPSはSPSを参照することができる。また、SPSは、利用可能な(available)アトリビュートを羅列することができ、羅列されたアトリビュートそれぞれに識別子を割り当て、デコーディング方法を識別することができる。アトリビュートスライスは、識別子によって出力アトリビュートにマッピングされることができ、アトリビュートスライス自体は、先行してデコードされたジオメトリスライスとAPSに対して従属性を有することができる。
【0228】
実施例によって、ポイントクラウドデータのエンコーディングに必要なパラメータは、ポイントクラウドデータのパラメータセット及び/又は当該スライスヘッダに新しく定義できる。例えば、アトリビュートのエンコーディングを行う際には、当該エンコーディングに必要なパラメータがAPSに新たに定義(追加)でき、タイル基盤のエンコーディングを行う際には、当該エンコーディングに必要なパラメータがタイル及び/又はスライスヘッダに新たに定義(追加)できる。
【0229】
SPSシンタックス構造
【0230】
図21は、本開示の実施例によるSPSのシンタックス構造に対する例示を示す。
図21において、SPSのシンタックス構造に表現されたシンタックス要素(又は、フィールド)は、SPSに含まれたシンタックス要素であるか、或いはSPSを介してシグナリングされるシンタックス要素であり得る。
【0231】
main_profile_compatibility_flagは、ビットストリームがメインプロファイルに従うか否かを指示することができる。例えば、main_profile_compatibility_flagの値が第1値(例えば、1)と同じであれば、これは、ビットストリームがメインプロファイルに従うことを示すことができ、main_profile_compatibility_flagの値が第2値(例えば、0)と同じであれば、これは、ビットストリームがメインプロファイル以外のプロファイルに従うことを示すことができる。
【0232】
unique_point_positions_constraint_flagは、現在SPSが参照する各ポイントクラウドフレームにおいて全ての出力ポイントがユニーク(unique)なポジションを有することができるか否かを指示することができる。例えば、unique_point_positions_constraint_flagの値が第1値(例えば、1)と同じであれば、これは、現在SPSが参照する各ポイントクラウドフレームにおいて全ての出力ポイントがユニークなポジションを有しうることを示すことができ、unique_point_positions_constraint_flagの値が第2値(例えば、0)と同じであれば、これは、現在SPSが参照する任意のポイントクラウドフレームにおいて二つ以上の出力ポイントが同じポジション(the same position)を有しうることを示すことができる。また、全てのポイントが各スライスにおいてユニークであっても、フレーム内のスライスと異なるポイントはオーバーラップすることができる。その場合に、unique_point_positions_constraint_flagの値は0に設定されることができる。
【0233】
level_idcは、ビットストリームが従うレベルを示すことができる。sps_seq_parameter_set_idは、他のシンタックス要素によって参照されるSPSに対する識別子を示すことができる。
【0234】
sps_bounding_box_present_flagは、バウンディングボックスがSPSに存在するか否かを指示することができる。例えば、sps_bounding_box_present_flagの値が第1値(例えば、1)と同じであれば、これは、バウンディングボックスがSPSに存在することを示すことができ、sps_bounding_box_present_flagの値が第2値(例えば、0)と同じであれば、これは、バウンディングボックスのサイズが定義されないこと(undefined)を示すことができる。sps_bounding_box_present_flagの値が第1値(例えば、1)である場合には、sps_bounding_box_offset_x、sps_bounding_box_offset_y、sps_bounding_box_offset_z、sps_bounding_box_offset_log2_scale、sps_bounding_box_size_width、sps_bounding_box_size_height、及び/又はsps_bounding_box_size_depthがさらにシグナリングされることができる。
【0235】
sps_bounding_box_offset_xは、直交座標系においてソースバウンディングボックスの量子化されたxオフセットを示すことができ、ソースバウンディングボックスのxオフセットが存在しなければ、sps_bounding_box_offset_xの値は0と推論できる。sps_bounding_box_offset_yは、直交座標系においてソースバウンディングボックスの量子化されたyオフセットを示すことができ、ソースバウンディングボックスのyオフセットが存在しなければ、sps_bounding_box_offset_yの値は0と推論できる。sps_bounding_box_offset_zは、直交座標系においてソースバウンディングボックスの量子化されたzオフセットを示すことができ、ソースバウンディングボックスのzオフセットが存在しなければ、sps_bounding_box_offset_zの値は0と推論できる。sps_bounding_box_offset_log2_scaleは、量子化されたx、y、zソースバウンディングボックスオフセットをスケーリングするためのスケールファクタを示すことができる。sps_bounding_box_size_widthは、直交座標系においてソースバウンディングボックスの幅(又は、横幅)を示すことができ、ソースバウンディングボックスの幅が存在しなければ、sps_bounding_box_size_widthの値は1と推論できる。sps_bounding_box_size_heightは、直交座標系においてソースバウンディングボックスの高さを示すことができ、ソースバウンディングボックスの高さが存在しなければ、sps_bounding_box_size_heightの値は1と推論できる。sps_bounding_box_size_depthは、直交座標系においてソースバウンディングボックスの深さを示すことができ、ソースバウンディングボックスの深さが存在しなければ、sps_bounding_box_size_depthの値は1と推論できる。
【0236】
sps_source_scale_factor_numerator_minus1に1を加えた値は、ソースポイントクラウドのスケールファクタ分子(numerator)を示すことができる。sps_source_scale_factor_denominator_minus1に1を加えた値は、ソースポイントクラウドのスケールファクタ分母(denominator)を示すことができる。sps_num_attribute_setsは、ビットストリーム内のコーディングされたアトリビュートの個数を示すことができる。sps_num_attribute_setsは、0~63の間の値を有しなければならない。
【0237】
sps_num_attribute_setsが指示する「ビットストリーム内のコーディングされたアトリビュートの個数」だけのattribute_dimension_minus1[i]及びattribute_instance_id[i]がさらにシグナリングされることができる。iは、0から「ビットストリーム内のコーディングされたアトリビュートの個数-1」まで1ずつ増加することができる。attribute_dimension_minus1[i]に1を加えた値は、i番目のアトリビュートのコンポーネントの数を示すことができ、attribute_instance_idは、i番目のアトリビュートのインスタンス識別子を示すことができる。
【0238】
attribute_dimension_minus1[i]の値が1より大きい場合に、attribute_bitdepth_minus1[i]、attribute_secondary_bitdepth_minus1[i]、attribute_cicp_colour_primaries[i]、attribute_cicp_transfer_characteristics[i]、attribute_cicp_matrix_coeffs[i]、及び/又はattribute_cicp_video_full_range_flag[i]がさらにシグナリングされることができる。attribute_bitdepth_minus1[i]に1を加えた値は、i番目のアトリビュート信号の第1コンポーネント(又は、1番目のコンポーネント)のためのビット深度(bitdepth)を示すことができる。attribute_secondary_bitdepth_minus1[i]に1を加えた値は、i番目のアトリビュート信号の第2コンポーネント(又は、二番目のコンポーネント)のためのビット深度を示すことができ、attribute_cicp_colour_primaries[i]は、i番目のアトリビュートのカラーアトリビュートソースプライマリの色度(chromaticity coordinates)を示すことができる。attribute_cicp_transfer_characteristics[i]は、i番目のアトリビュートの0乃至1の間のnominal実際値(real-valued)の範囲を有するソース入力リニアオプティカル強度(input linear optical intensity)であって参照光-電子伝達特性関数(reference opto-electronic transfer characteristic function)を指示するか、或いは、出力リニアオプティカル強度(output linear optical intensity)の関数であって参照電子-光伝達特性関数(reference optoelectronic transfer characteristic function)の逆(inverse)を示すことができる。attribute_cicp_matrix_coeffs[i]は、i番目のアトリビュートの緑色、青色及び赤色(又は、Y、Z、Xのプライマリ)からルーマ(luma)とクロマ(chroma)信号を導出するのに使用されたマトリックス係数を説明(describes)することができる。attribute_cicp_video_full_range_flag[i]は、i番目のアトリビュートのE’Y、E’PB及びE’PR又はE’R、E’G及びE’B実際値コンポーネント信号から導出されるブラックレベルと、ルーマ及び彩度信号の範囲を示すことができる。known_attribute_label_flag[i]は、i番目のアトリビュートに対してknow_attribute_label[i]又はattribute_label_four_bytes[i]がシグナリングされるか否かを示すことができる。例えば、known_attribute_label_flag[i]の値が第1値(例えば、1)と同じであれば、これは、i番目のアトリビュートに対してknown_attribute_labelがシグナリングされることを示すことができ、known_attribute_label_flag[i]の値が第2値(例えば、0)と同じであれば、これは、i番目のアトリビュートに対してattribute_label_four_bytes[i]がシグナリングされることを示すことができる。known_attribute_label[i]は、i番目のアトリビュートのタイプを示すことができる。例えば、known_attribute_label[i]の値が第1値(例えば、0)と同じであれば、これは、アトリビュートがカラー(colour)であることを示すことができ、known_attribute_label[i]の値が第2値(例えば、1)と同じであれば、これは、アトリビュートが反射率(reflectance)であることを示すことができ、known_attribute_label[i]の値が第3値(例えば、2)と同じであれば、これは、アトリビュートがフレームインデックス(frame index)であることを示すことができる。attribute_label_four_bytes[i]は、
図22aに示すように、4バイトコードを用いてknownアトリビュートタイプを指示することができる。
【0239】
log2_max_frame_idxは、frame_idxシンタックス変数(variable)をシグナルするために使用されたビットの個数を示すことができる。例えば、log2_max_frame_idxの値に1を加えた値は、frame_idxシンタックス変数をシグナルするために使用されたビットの個数を示すことができる。
図22bに示すように、axis_coding_orderは、X、Y、Z出力軸ラベル(output axis labels)とaxis=0、…、2を有する復元されたポイントクラウドRecPic[pointidx][axis]内の3個のポジションコンポーネント間の対応関係(correspondence)を指示することができる。
【0240】
sps_bypass_stream_enabled_flagは、バイパスコーディングモードがビットストリームを読み取るのに使用されるか否かを指示することができる。例えば、sps_bypass_stream_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、バイパスコーディングモードがビットストリームを読み取るのに使用されることを指示することができる。他の例として、sps_bypass_stream_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、バイパスコーディングモードがビットストリームを読み取るのに使用されないことを指示することができる。sps_extension_flagは、sps_extension_dataシンタックス要素が当該SPSシンタックス構造に存在するか否かを示すことができる。例えば、sps_extension_flagの値が第1値(例えば、1)と同じであれば、これは、sps_extension_dataシンタックス要素が当該SPSシンタックス構造に存在することを示すことができ、sps_extension_flagの値が第2値(例えば、0)と同じであれば、これは、sps_extension_dataシンタックス要素が当該SPSシンタックス構造に存在しないことを示すことができる。sps_extension_flagは、ビットストリームで0と同じでなければならないこともある。sps_extension_flagの値が第1値(例えば、1)と同じである場合に、sps_extension_data_flagがさらにシグナリングされることができる。sps_extension_data_flagは、いずれの値も有することができ、sps_extension_data_flagの存在と値は、プロファイルに対するデコーダ適合性に影響を及ぼさないことができる。
【0241】
GPSシンタックス構造
【0242】
図23は、GPSのシンタックス構造に対する一例を示す。
図23において、GPSのシンタックス構造に表現されたシンタックス要素(又は、フィールド)は、GPSに含まれたシンタックス要素であるか、或いはGPSを介してシグナリングされるシンタックス要素であり得る。
【0243】
gps_geom_parameter_set_idは、他のシンタックス要素によって参照されるGPSの識別子を示すことができ、gps_seq_parameter_set_idは、当該アクティブSPSに対するseq_parameter_set_idの値を示すことができる。gps_box_present_flagは、追加バウンディングボックス情報が、現在GPSを参照するジオメトリスライスヘッダに提供されるか否かを示すことができる。例えば、gps_box_present_flagの値が第1値(例えば、1)と同じであれば、これは、追加バウンディングボックス情報が現在GPSを参照するジオメトリスライスヘッダ内に提供されることを指示することができ、gps_box_present_flagの値が第2値(例えば、0)と同じであれば、これは、追加バウンディングボックス情報が、現在GPSを参照するジオメトリスライスヘッダ内に提供されないことを指示することができる。gps_box_present_flagの値が第1値(例えば、1)と同じであれば、gps_gsh_box_log2_scale_present_flagがさらにシグナリングされることができる。gps_gsh_box_log2_scale_present_flagは、gps_gsh_box_log2_scaleが現在GPSを参照する各ジオメトリスライスヘッダにシグナリングされるか否かを示すことができる。例えば、gps_gsh_box_log2_scale_present_flagの値が第1値(例えば、1)と同じであれば、これは、gps_gsh_box_log2_scaleが現在GPSを参照する各ジオメトリスライスヘッダにシグナリングされることを指示することができる。他の例として、gps_gsh_box_log2_scale_present_flagの値が第2値(例えば、0)と同じであれば、これは、gps_gsh_box_log 2_scaleが現在GPSを参照する各ジオメトリスライスヘッダにシグナリングされず、全てのスライスのための共通スケール(common scale)が現在GPSのgps_gsh_box_log2_scaleにシグナリングされることを指示することができる。gps_gsh_box_log2_scale_present_flagの値が第2値(例えば、0)と同じであれば、gps_gsh_box_log2_scaleがさらにシグナリングされることができる。gps_gsh_box_log2_scaleは、現在GPSを参照する全てのスライスに対するバウンディングボックスオリジンの共通スケールファクタ(common scale factor)を示すことができる。
【0244】
unique_geometry_points_flagは、現在GPSを参照する全てのスライスにおいて、全ての出力ポイントが一つのスライス内で固有のポジション(unique positions)を有するか否かを示すことができる。例えば、unique_geometry_points_flagの値が第1値(例えば、1)と同じであれば、これは、現在GPSを参照する全てのスライスで、全ての出力ポイントが一つのスライス内で固有のポジションを有することを指示することができる。unique_geometry_points_flagの値が第2値(例えば、0)と同一であれば、これは、現在GPSを参照する全てのスライスで、二つ以上の出力ポイントが一つのスライス内で同じポジションを有することができることを指示することができる。
【0245】
geometry_planar_mode_flagは、planar coding modeが活性化されるか否かを指示することができる。例えば、geometry_planar_mode_flagの値が第1値(例えば、1)と同じであれば、これは、planar coding modeが活性化されることを指示することができ、geometry_planar_mode_flagの値が第2値(例えば、0)と同じであれば、これは、planar coding modeが活性化されないことを指示することができる。geometry_planar_mode_flagの値が第1値(例えば、1)である場合に、geom_planar_mode_th_idcm、geom_planar_mode_th[1]、及び/又はgeom_planar_mode_th[2]がさらにシグナリングされることができる。geom_planar_mode_th_idcmは、ダイレクトコーディングモードに対する活性化(activation)閾値を示すことができる。geom_planar_mode_th_idcmの値は、0から127までの範囲内の整数であり得る。geom_planar_mode_th[i]は、0から2までの範囲のiに対して、planar coding modeが効率的である可能性が最も高いi番目の方向に沿ってplanar coding modeに対する活性化閾値を示すことができる。geom_planar_mode_th[i]は、0から127までの範囲内の整数であり得る。
【0246】
geometry_angular_mode_flagは、angular coding modeが活性化されたか否かを指示することができる。例えば、geometry_angular_mode_flagの値が第1値(例えば、1)と同じであれば、これは、angular coding modeが活性化されることを指示し、geometry_angular_mode_flagの値が第2値(例えば、0)と同じであれば、これは、angular coding modeが活性化されないことを指示することができる。geometry_angular_mode_flagの値が第1値(例えば、1)と同じである場合に、lidar_head_position[0]、lidar_head_position[1]、lidar_head_position[2]、number_lasers、planar_buffer_disabled、implicit_qtbt_angular_max_node_min_dim_log2_to_split_z、及び/又はimplicit_qtbt_angular_max_diff_to_split_zがさらにシグナリングされることができる。
【0247】
lidar_head_position[0]、lidar_head_position[1]、及び/又はlidar_head_position[2]は、内部軸を有する座標システムにおいてlidarヘッドの(X、Y、Z)座標を示すことができる。number_lasersは、angular coding modeのために使用されたレーザー(Lasers)の個数を指示することができる。laser_angle[i]及びlaser_correction[i]のそれぞれは、number_lasersが指示する個数だけシグナリングされることができる。ここで、iは、0から’number_lasersの値-1’まで1ずつ増加することができる。laser_angle[i]は、0番目と1番目の内部軸によって定義された水平面に関連したi番目のレーザーの仰角(elevation angle)のタンジェントを示すことができ、laser_correction[i]は、lidar_head_position[2]に関連したi番目のレーザーポジションの訂正を、2番目の内部軸に沿って指示することができる。planar_buffer_disabledは、planarモードでplanar mode flagとplanarポジションをコーディングする過程で、バッファを用いた最も近いノード(closest nodes)トラッキング(tracking)が使用されるか否かを示すことができる。例えば、planar_buffer_disabledの値が第1値(例えば、1)と同じであれば、これは、バッファを用いた最も近いノードトラッキングがplanar modeでplanarモードフラグとplanarポジションをコーディングする過程に使用されないことを示すことができ、planar_buffer_disabledの値が第2値(例えば、0)と同じであれば、これは、バッファを用いた最も近いノードトラッキングがplanar modeでplanarモードフラグとplanarポジションをコーディングする過程に使用されることを示すことができる。planar_buffer_disabledが存在しない場合に、planar_buffer_disabledの値は第2値(例えば、0)と推論できる。implicit_qtbt_angular_max_node_min_dim_log2_to_split_zは、ノードの水平スプリット(horizontal split)が垂直スプリット(vertical split)よりもさらに好まれるノードサイズのlog2値を指示することができる。implicit_qtbt_angular_max_diff_to_split_zは、ノードに許容された垂直対比水平ノードサイズ比率に対するlog2値を示すことができる。implicit_qtbt_angular_max_diff_to_split_zが存在しない場合に、implicit_qtbt_angular_max_diff_to_split_zは0と推論できる。
【0248】
neighbour_context_restriction_flagは、現在ノードのジオメトリノード占有が現在ノードの親ノードの内部に位置した隣接ノードから決定されたコンテキストでコーディングされるか否かを示すことができる。例えば、neighbour_context_restriction_flagの値が第1値(例えば、0)と同じであれば、これは、現在ノードのジオメトリノード占有が現在ノードの親ノードの内部に位置した隣接ノードから決定されたコンテキストでコーディングされることを示すことができ、neighbour_context_restriction_flagの値が第2値(例えば、1)と同じであれば、これは、現在ノードのジオメトリノード占有が現在ノードの親ノードの内部に位置した隣接ノードから決定されたコンテキストでコーディングされないことを示すことができる。inferred_direct_coding_mode_enabled_flagは、direct_mode_flagが当該ジオメトリノードシンタックスに存在するか否かを示すことができる。例えば、inferred_direct_coding_mode_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、direct_mode_flagが当該ジオメトリノードシンタックスに存在することを示すことができ、inferred_direct_coding_mode_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、direct_mode_flagが当該ジオメトリノードシンタックスに存在しないことを示すことができる。
【0249】
bitwise_occupancy_coding_flagは、ジオメトリノード占有が当該シンタックス要素であるoccupancy_mapのビットワイズコンテキスト化(bitwise contextualization)を用いてエンコードされるか否かを示すことができる。例えば、bitwise_occupancy_coding_flagの値が第1値(例えば、1)と同じであれば、これは、ジオメトリノード占有が当該シンタックス要素occupancy_mapのビットワイズコンテキスト化を用いてエンコードされることを示すことができ、bitwise_occupancy_coding_flagの値が第2値(例えば、0)と同じであれば、これは、ジオメトリノード占有が、ディレクトリエンコードされたシンタックス要素であるoccupancy_mapを用いてエンコードされることを示すことができる。adjacent_child_contextualization_enabled_flagは、隣接八分木ノード(neighbouring octree nodes)の隣接した子(adjacent children)がビットワイズ占有コンテキスト化(bitwise occupancy contextualization)のために使用されるか否かを示すことができる。例えば、adjacent_child_contextualization_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、隣接八分木ノードの隣接した子がビットワイズ占有コンテキスト化のために使用されることを示すことができ、adjacent_child_contextualization_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、隣接八分木ノードの子がビットワイズ占有コンテキスト化のために使用されないことを示すことができる。
【0250】
log2_neighbour_avail_boundaryは、デコーディングプロセスで用いられる変数NeighbAvailBoundaryの値を示すことができる。例えば、neighbour_context_restriction_flagの値が第1値(例えば、1)と同じであれば、NeighbAvailabilityMaskが1に設定されることができ、neighbour_context_restriction_flagの値が第2値(例えば、0)と同じであれば、NeighbAvailabilityMaskが1<<log2_neighbour_avail_boundaryに設定されることができる。log2_intra_pred_max_node_sizeは、占有イントラ予測に適した(eligible for)八分木ノードサイズを示すことができる。log2_trisoup_node_sizeは、変数TrisoupNodeSizeを三角形ノードのサイズに指定することができる。
【0251】
geom_scaling_enabled_flagは、ジオメトリポジションのためのスケーリング過程がジオメトリスライスデコーディング過程の間に適用されるか否かを指示することができる。例えば、geom_scaling_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、ジオメトリポジションに対するスケーリング過程がジオメトリスライスデコーディング過程の間に行われることを指示することができ、geom_scaling_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、ジオメトリポジションに対してスケーリングが要求されないことを指示することができる。geom_scaling_enabled_flagの値が第1値(例えば、1)と同じである場合に、geom_base_qpがさらにシグナリングされることができる。geom_base_qpは、ジオメトリポジション量子化パラメータ(geometry position quantization parameter)のベース値(base value)を指示することができる。gps_implicit_geom_partition_flagは、黙示的(implicit)ジオメトリパーティションが当該シーケンス又はスライスに対してイネーブルされるか否かを指示することができる。例えば、gps_implicit_geom_partition_flagの値が第1値(例えば、1)と同じであれば、これは、黙示的ジオメトリパーティションが当該シーケンス又はスライスに対してイネーブルされる(enabled)ことを指示することができ、gps_implicit_geom_partition_flagの値が第2値(例えば、0)と同じであれば、これは、黙示的ジオメトリパーティションが当該シーケンス又はスライスに対してディセーブルされる(disabled)ことを指示することができる。gps_implicit_geom_partition_flagの値が第1値(例えば、1)である場合に、gps_max_num_implicit_qtbt_before_otとgps_min_size_implicit_qtbtとがシグナリングされることができる。gps_max_num_implicit_qtbt_before_otは、OTパーティション前の暗黙的QTとBTパーティションの最大個数を示すことができる。gps_min_size_implicit_qtbtは、黙示的QTとBTパーティションの最小サイズを示すことができる。
【0252】
gps_extension_flagは、gps_extension_dataシンタックス要素が当該GPSシンタックス構造に存在するか否かを示すことができる。例えば、gps_extension_flagの値が第1値(例えば、1)と同じであれば、これは、gps_extension_dataシンタックス要素が当該GPSシンタックスに存在することを指示することができ、gps_extension_flagの値が第2値(例えば、0)であれば、これは、gps_extension_dataシンタックス要素が当該GPSシンタックス構造に存在しないことを指示することができる。gps_extension_flagの値が第1値(例えば、1)と同じである場合に、gps_extension_data_flagがさらにシグナリングされることができる。gps_extension_data_flagは、いずれの値も有することができ、gps_extension_data_flagの存在と値は、プロファイルに対するデコーダ適合性に影響を及ぼさないことができる。
【0253】
APSシンタックス構造
【0254】
図24は、APSのシンタックス構造に対する一例を示す。
図24において、APSのシンタックス構造に表現されたシンタックス要素(又は、フィールド)は、APSに含まれたシンタックス要素であるか、或いはAPSを介してシグナリングされるシンタックス要素であり得る。
【0255】
aps_attr_parameter_set_idは、他のシンタックス要素による参照のためのAPSの識別子を提供することができ、aps_seq_parameter_set_idは、アクティブ(active)SPSに対するsps_seq_parameter_set_idの値を示すことができる。attr_coding_typeは、アトリビュートに対するコーディングタイプを示すことができる。attr_coding_typeの値、及びこれらのそれぞれに割り当てられたアトリビュートコーディングタイプ(coding type)に対するテーブルが
図25に示されている。
図25に示すように、attr_coding_typeの値が第1値(例えば、0)であれば、コーディングタイプは、予測重みリフティング(conducting weight lifting)を指示し、attr_coding_typeの値が第2値(例えば、1)であれば、コーディングタイプはRAHTを指示し、attr_coding_typeの値が第3値(例えば、2)であれば、コーディングタイプは固定重みリフティング(fix weight lifting)を指示することができる。
【0256】
aps_attr_initial_qpは、APSを参照する各スライスに対する変数SliceQpの初期値を示すことができる。aps_attr_initial_qpの値は、4~51の間の範囲内に存在することができる。aps_attr_chroma_qp_offsetは、aps_attr_initial_qpによってシグナリングされた初期量子化パラメータに対するオフセットを示すことができる。aps_slice_qp_delta_present_flagは、ash_attr_qp_delta_lumaシンタックス要素及びash_attr_qp_delta_chromaシンタックス要素が当該アトリビュートスライスヘッダ(ASH)に存在するか否かを示すことができる。例えば、aps_slice_qp_delta_present_flagの値が第1値(例えば、1)と同じであれば、これは、ash_attr_qp_delta_luma及びash_attr_qp_delta_chromaが当該アトリビュートスライスヘッダ(ASH)に存在することを指示することができ、aps_slice_qp_delta_present_flagの値が第2値(例えば、0)と同じであれば、これは、ash_attr_qp_delta_luma及びash_attr_qp_delta_chromaが当該アトリビュートスライスヘッダに存在しないことを指示することができる。
【0257】
attr_coding_typeの値が第1値(例えば、0)であるか或いは第3値(例えば、2)であれば、すなわち、コーディングタイプが予測重みリフティングであるか或いは固定重みリフティングであれば、lifting_num_pred_nearest_neighbours_minus1、lifting_search_range_minus1、及びlifting_neighbour_bias[k]がさらにシグナリングされることができる。lifting_num_pred_nearest_neighbours_minus1に1を加えた値は、予測のために用いられる最も近い隣接(nearest neighbor)の最大個数を示すことができる。変数NumPredNearestNeighboursの値は、lifting_num_pred_nearest_neighbours(lifting_num_pred_nearest_neighbours_minus1に1を加えた値)と同一に設定されることができる。lifting_search_range_minus1に1を加えた値は、「予測のために使用される最も近い隣接の決定」及び「距離基盤LOD(distance-based levels of detail)のビルド(build)」のために使われるサーチ範囲を示すことができる。サーチ範囲を明示するための変数LiftingSearchRangeは、lifting_search_range_minus1フィールドの値に1を加えて求めることができる(LiftingSearchRange=lifting_search_range_minus1+1)。lifting_neighbour_bias[k]は、最も近い隣接誘導過程の一部であって、二つのポイントの間のユークリッド距離(Euclidean distance)の計算においてk番目のコンポーネントを加重するために使用されたバイアスを示すことができる。
【0258】
attr_coding_typeの値が第3値(例えば、2)であれば、すなわち、コーディングタイプが固定重みリフティングを指示すると、lifting_scalability_enabled_flagがさらにシグナリングされることができる。lifting_scalability_enabled_flagは、アトリビュートデコーディング過程が入力ジオメトリポイントに対してpruned八分木デコード(Decode)結果を許容するか否かを指示することができる。例えば、lifting_scalability_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、アトリビュートデコーディング過程が入力ジオメトリポイントに対してpruned八分木デコード結果を許容することを示すことができ、lifting_scalability_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、アトリビュートデコーディング過程が入力ジオメトリポイントに対して完全な八分木デコード結果を要求することを示すことができる。lifting_scalability_enabled_flagの値が第1値(例えば、1)でなければ、lifting_num_detail_level_minus1がさらにシグナリングされることができる。lifting_num_detail_level_minus1は、アトリビュートコーディングのためのLODの個数を示すことができる。LODの個数を明示するための変数LevelDetailCountは、lifting_num_detail_level_minus1の値に1を加えて誘導されることができる(LevelDetailCount=lifting_num_detail_level_minus1+1)。
【0259】
lifting_num_detail_level_minus1の値が1より大きければ、lifting_lod_regular_sampling_enabled_flagがさらにシグナリングされることができる。lifting_lod_regular_sampling_enabled_flagは、LODがレギュラーサンプリング戦略によって作られるか(built)否かを示すことができる。例えば、lifting_lod_regular_sampling_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、LODがレギュラーサンプリング戦略を用いて作られることを指示することができ、lifting_lod_regular_sampling_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、距離基盤サンプリング戦略(distance_based sampling strategy)が代わりに使用されることを指示することができる。
【0260】
lifting_scalability_enabled_flagの値が第1値(例えば、1)でない場合に、LODがレギュラーサンプリング戦略によって作られるか否か(lifting_lod_regular_sampling_enabled_flagの値)に応じて、lifting_sampling_period_minus2[idx]又はlifting_sampling_distance_squared_scale_minus1[idx]がさらにシグナリングされることができる。例えば、lifting_lod_regular_sampling_enabled_flagの値が第1値(例えば、1)と同じである場合には、lifting_sampling_period_minus2[idx]がシグナリングされることができ、lifting_lod_regular_sampling_enabled_flagの値が第2値(例えば、0)と同じである場合には、lifting_sampling_distance_squared_scale_minus1[idx]がシグナリングされることができる。idxの値が0でなければ(idx!=0)、lifting_sampling_distance_squared_offset[idx]がさらにシグナリングされることができる。idxは、0から1ずつ増加することができ、num_detail_level_minus1から1を差し引いた値まで増加することができる。lifting_sampling_period_minus2[idx]に2を加えた値は、LODidxのためのサンプリング周期を示すことができる。lifting_sampling_distance_squared_scale_minus1[idx]に1を加えた値は、LODidxに対するサンプリング距離の自乗の誘導(derivation)のためのスケールファクタ(scaling factor)を示すことができる。lifting_sampling_distance_squared_offset[idx]は、LODidxに対するサンプリング距離の自乗の誘導のためのオフセットを示すことができる。
【0261】
attr_coding_typeの値が第1値(例えば、0)と同じであれば、すなわち、コーディングタイプが予測重みリフティングであれば、lifting_adaptive_prediction_threshold、lifting_intra_lod_prediction_num_layers、lifting_max_num_direct_predictors、及びinter_component_prediction_enabled_flagがシグナリングされることができる。lifting_adaptive_prediction_thresholdは、適応的予測を可能にするための閾値を示すことができる。適応的予測器選択モードをスイッチングするために、閾値を明示する変数AdaptivePredictionThresholdは、lifting_adaptive_prediction_thresholdの値と同一に設定されることができる。lifting_intra_lod_prediction_num_layersは、同じLODレイヤ内のデコードされたポイントが、ターゲットポイントの予測値を生成するために参照することが可能なLODレイヤの数を示すことができる。例えば、lifting_intra_lod_prediction_num_layersの値がLevelDetailCountの値と同じであれば、これは、ターゲットポイントは全てのLODレイヤのための同一LODレイヤ内のデコードされたポイントを参照することができることを示すことができる。lifting_intra_lod_prediction_num_layersの値が0であれば、これは、ターゲットポイントが任意のLODレイヤのための同一LODレイヤ内のデコードされたポイントを参照することができないことを示すことができる。lifting_intra_lod_prediction_num_layersの値は、0乃至LevelDetailCountの間の範囲を有することができる。lifting_max_num_direct_predictorsは、直接予測(direct prediction)のために使用できる予測器(predictor)の最大個数を示すことができる。inter_component_prediction_enabled_flagは、マルチコンポーネントアトリビュートのprimaryコンポーネントがnonprimaryコンポーネントの復元(reconstructed)値を予測するために使用されるか否かを示すことができる。例えば、inter_component_prediction_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、マルチコンポーネントアトリビュートのprimaryコンポーネントがnon-primaryコンポーネントの復元値を予測するために使用されることを示すことができる。他の例として、inter_component_prediction_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、全てのアトリビュートコンポーネントが独立的に復元されることを示すことができる。
【0262】
attr_coding_typeの値が第2値(例えば、1)と同じである場合に、すなわち、アトリビュートコーディングタイプがRAHTであれば、raht_prediction_enabled_flagがシグナリングされることができる。raht_prediction_enabled_flagは、隣接ポイントからの変換加重予測(transform weight prediction)がRAHTデコーディング過程でイネーブルされるか否かを示すことができる。例えば、raht_prediction_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、隣接ポイントからの変換加重予測がRAHTデコーディング過程でイネーブルされることを示すことができ、raht_prediction_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、隣接ポイントからの変換加重予測がRAHTデコーディング過程でディセーブルされることを示すことができる。raht_prediction_enabled_flagの値が第1値(例えば、1)と同じである場合に、raht_prediction_threshold0とraht_prediction_threshold1がさらにシグナリングされることができる。raht_prediction_threshold0は、隣接ポイントからの変換加重予測を終了するための閾値を示すことができる。raht_prediction_threshold1は、隣接ポイントからの変換加重予測をスキップするための閾値を示すことができる。
【0263】
aps_extension_flagは、aps_extension_data_flagシンタックス要素が当該APSシンタックス構造に存在するか否かを示すことができる。例えば、aps_extension_flagの値が第1値(例えば、1)と同じであれば、これは、aps_extension_data_flagシンタックス要素が当該APSシンタックス構造に存在することを指示することができ、aps_extension_flagの値が第2値(例えば、0)と同じであれば、これは、aps_extension_data_flagシンタックス要素が当該APSシンタックス構造に存在しないことを指示することができる。aps_extension_flagの値が第1値(例えば、1)と同じである場合に、aps_extension_data_flagがシグナリングされることができる。aps_extension_data_flagは、いずれの値も有することができ、aps_extension_data_flagの存在と値は、プロファイルに対するデコーダ適合性に影響を及ぼさないことができる。
【0264】
タイルインベントリシンタックス構造
【0265】
図26は、タイルインベントリのシンタックス構造に対する一例を示す。タイルインベントリは、タイルパラメータセット(tile parameter set、TPS)とも称される。
図26において、TPSのシンタックス構造に表現されたシンタックス要素(又は、フィールド)は、TPSに含まれたシンタックス要素であるか、或いはTPSを介してシグナリングされるシンタックス要素であり得る。
【0266】
tile_frame_idxは、タイルインベントリの目的(prupose)を識別するのに使用することができる識別番号(identification number)を含むことができる。tile_seq_parameter_set_idは、アクティブSPSに対するsps_seq_parameter_set_idの値を示すことができる。tile_id_present_flagは、タイルを識別するためのパラメータを示すことができる。例えば、tile_id_present_flagの値が第1値(例えば、1)と同じであれば、これは、タイルがtile_idシンタックス要素の値によって識別されることを示すことができ、tile_id_present_flagの値が第2値(例えば、0)と同じであれば、これは、タイルがそれらのタイルインベントリ内の位置によって識別されることを示すことができる。tile_cntは、タイルインベントリ内に存在するタイルバウンディングボックスの数を示すことができる。tile_bounding_box_bitsは、タイルインベントリに対するバウンディングボックス情報を表現するためのビット深度(bitdepth)を示すことができる。ループ(loop)変数tileIdxが0から(タイルバウンディングボックスの数-1)になるまで1ずつ増加しながら、tile_id、tile_bounding_box_offset_xyz[tile_id][k]、及びtile_bounding_box_size_xyz[tile_id][k]がシグナリングされることができる。tile_idは、tile_inventory内の特定タイルを識別することができる。tile_idは、tile_id_present_flagの値が第1値(例えば、1)である場合にシグナリングされることができ、タイルバウンディングボックスの数だけシグナリングされることができる。tile_idが存在しない場合(シグナリングされない場合)、tile_idの値は、ループ変数tileIdxによって提供されたタイルインベントリ内のタイルのインデックスと類推できる。tile_idの全ての値がタイルインベントリ内で固有でなければならないのは、ビットストリーム適合性の要求事項であり得る。tile_bounding_box_offset_xyz[tileId][k]及びtile_bounding_box_size_xyz[tileId][k]とtile_bounding_box_offset_xyz[tileId][k]は、tileIdと同一のgsh_tile_idによって識別されるスライスを含むバウンディングボックスを指示することができる。tile_bounding_box_offset_xyz[tileId][k]は、TileOrigin[k]に対するタイルバウンディングボックス(x、y、z)原点(origin)座標のk番目のコンポーネントであり得る。tile_bounding_box_size_xyz[tileId][k]は、タイルバウンディングボックスの幅、高さ及び深さのk番目のコンポーネントであり得る。
【0267】
変数kが0から2になるまで1ずつ増加しながら、tile_origin_xyz[k]がシグナリングされることができる。tile_origin_xyz[k]は、直交(cartesian)座標内のタイル原点のk番目のコンポーネントを示すことができる。tile_origin_xyz[k]の値は、sps_bounding_box_offset[k]と同じく強制されることができる。tile_origin_log2_scaleは、tile_origin_xyzの構成要素をスケーリングするためのスケールファクタを示すことができる。tile_origin_log2_scaleの値は、sps_bounding_box_offset_log2_scaleと同じく強制されることができる。k=0、・・・、2に対して、要素TileOrigin[k]を有するアレイ(array)TileOriginは、’TileOrigin[k]=tile_origin_xyz[k]<<tile_origin_log2_scale’のように誘導されることができる。
【0268】
ジオメトリスライスシンタックス構造
【0269】
図27及び
図28は、ジオメトリスライスのシンタックス構造に対する一例を示す。
図27及び
図28に表現されたシンタックス要素(又は、フィールド)は、ジオメトリスライスに含まれたシンタックス要素であるか、或いはジオメトリスライスを介してシグナリングされるシンタックス要素であり得る。
【0270】
伝送装置から受信装置へ伝送されるビットストリームは、一つ以上のスライスを含むことができる。各スライスは、ジオメトリスライス及びアトリビュートスライスを含むことができる。ここで、ジオメトリスライスは、ジオメトリスライスビットストリームであってもよく、アトリビュートスライスは、アトリビュートスライスビットストリームであってもよい。ジオメトリスライスは、ジオメトリスライスヘッダ(geometry slice header、GSH)を含むことができ、アトリビュートスライスは、アトリビュートスライスヘッダ(attribute slice header、ASH)(attribute slice header)を含むことができる。
【0271】
図27aに示すように、ジオメトリスライスビットストリーム(geometry_slice_bitstream())は、ジオメトリスライスヘッダ(geometry_slice_header())とジオメトリスライスデータ(geometry_slice_data())を含むことができる。ジオメトリスライスデータは、ポイントクラウドの一部又は全体に関連したジオメトリ又はジオメトリ関連データを含むことができる。
図27(b)に示すように、ジオメトリスライスヘッダを介してシグナリングされるシンタックス要素は、次の通りである。
【0272】
gsh_geometry_parameter_set_idは、アクティブGPSのgps_geom_parameter_set_idの値を示すことができる。gsh-tile_idは、当該ジオメトリスライスヘッダ(GSH)によって参照される当該タイルの識別子を示すことができる。gsh_slice_idは、他のシンタックス要素による参照のための当該スライスの識別子を示すことができる。frame_idxは、概念的(notional)フレームナンバーカウンター(frame number counter)のlog2_max_frame_idx+1最下位ビット(least significant bits)を示すことができる。frame_idxの値が異なる連続的なスライスは、互いに異なる出力ポイントクラウドフレームの一部を形成することができる。中間フレーム境界マーカーデータ単位を有さず且つframe_idx値が同じである連続的なスライスは、互いに同じ出力ポイントクラウドフレームの一部を形成することができる。gsh_num_pointは、当該スライス内のコーディングされたポイントの最大個数を示すことができる。gsh_num_pointsの値は、スライス内のデコードされたポイントの個数と同じであるかそれより大きくなければならないことがビットストリーム適合性の要求事項であり得る。
【0273】
gps_box_present_flagの値が第1値(例えば、1)と同じである場合に、gsh_box_log2_scale、gsh_box_origin_x、gsh_box_origin_y、及びgsh_box_origin_zがシグナリングされることができる。実施例によって、gsh_box_log2_scaleは、gps_box_present_flagの値が第1値(例えば、1)と同一であるとともに、gps_gsh_box_log2_scale_present_flagの値が第1値(例えば、1)と同じである場合にシグナリングされることもできる。gsh_box_log2_scaleは、当該スライスのためのバウンディングボックスオリジンのスケールファクタを示すことができる。gsh_box_origin_xは、gsh_box_log2_scaleの値によってスケーリングされたバウンディングボックスオリジンのx値を示すことができ、gsh_box_origin_yは、gsh_box_log2_scaleの値によってスケーリングされたバウンディングボックスオリジンのy値を示すことができ、gsh_box_origin_zは、gsh_box_log2_scaleの値によってスケーリングされたバウンディングボックスオリジンのz値を示すことができる。変数slice_origin_x、slice_origin_y、及び/又はslice_origin_zは、次のように誘導されることができる。
【0274】
もし、gps_gsh_box_log2_scale_present_flagの値が第2値(例えば、0)と同じであれば、originScaleは、gsh_box_log2_scaleが同一に設定される。そうではなく、gps_gsh_box_log2_scale_present_flagの値が第1値(例えば、1)と同じであれば、originScaleは、gps_gsh_box_log2_scaleが同一に設定される。もし、gps_box_present_flagの値が第2値(例えば、0)と同じであれば、変数slice_origin_x、slice_origin_y、及びslice_origin_zの値は0と推論できる。そうではなく、gps_box_present_flagの値が第1値(例えば、1)と同じであれば、変数slice_origin_x、slice_origin_y、及びslice_origin_zに対して次の式が適用できる。
【0275】
slice_origin_x=gsh_box_origin_x<<originScale
【0276】
slice_origin_y=gsh_box_origin y<<originScale
【0277】
slice_origin_z=gsh_box_origin_z<<originScale
【0278】
gps_implicit_geom_partition_flagの値が第1値(例えば、1)と同じである場合、gsh_log2_max_nodesize_x、gsh_log2_max_nodesize_y_minus_x、gsh_log2_max_nodesize_z_minus_yがさらにシグナリングされることができる。もし、gps_implicit_geom_partition_flagの値が第2値(例えば、0)と同じであれば、gps_log2_max_nodesizeがシグナリングされることができる。
【0279】
gsh_log2_max_nodesize_xは、x次元でのバウンディングボックスサイズ、すなわち、デコーディング過程で使用されるMaxNodesizeXLog2を次の通りに表すことができる。
【0280】
MaxNodeSizeXLog2=gsh_log2_max_nodesize_x
【0281】
MaxNodeSizeX=1<<MaxNodeSizeXLog2
【0282】
gsh_log2_max_nodesize_y_minus_xは、y次元でのバウンディングボックスサイズ、すなわち、デコーディング過程で使用されるMaxNodesizeYLog2を次の通りに示すことができる。
【0283】
MaxNodeSizeYLog2=gsh_log2_max_nodesize_y_minus_x+MaxNodeSizeXLog2
【0284】
MaxNodeSizeY=1<<MaxNodeSizeYLog2
【0285】
gsh_log2_max_nodesize_z_minus_yは、z次元でのバウンディングボックスサイズ、すなわち、デコーディング過程で使用されるMaxNodesizeZLog2を次の通りに示すことができる。
【0286】
MaxNodeSizeZLog2=gsh_log2_max_nodesize_z_minus_y+MaxNodeSizeYLog2
【0287】
MaxNodeSizeZ=1<<MaxNodeSizeZLog2
【0288】
gsh_log2_max_nodesizeは、gps_implicit_geom_partition_flagの値が第1値(例えば、1)である場合にルートジオメトリ八分木ノードのサイズを示すことができる。変数MaxNodeSizeと変数MaxGeometryOctreeDepthは、次のように誘導できる。
【0289】
MaxNodeSize=1<<gsh_log2_max_nodesize
【0290】
MaxGeometryOctreeDepth=gsh_log2_max_nodesize log2_trisoup_node_size
【0291】
geom_scaling_enabled_flagの値が第1値(例えば、1)と同じである場合に、geom_slice_qp_offsetとgeom_octre_qp_offsets_enabled_flagがシグナリングされることができる。geom_slice_qp_offsetは、ベースジオメトリ量子化パラメータ(geom_base_qp)に対するオフセットを示すことができる。geom_octre_qp_offsets_enabled_flagは、geom_node_qp_offset_eq0_flagが当該ジオメトリノードシンタックスに存在するか否かを示すことができる。例えば、geom_octree_qp_offsets_enabled_flagの値が第1値(例えば、1)と同じであれば、これは、geom_node_qp_offset_eq0_flagが当該ジオメトリノードシンタックスに存在することを示すことができ、geom_octree_qp_offsets_enabled_flagの値が第2値(例えば、0)と同じであれば、これは、geom_node_qp_offset_eq0_flagが当該ジオメトリノードシンタックスに存在しないことを示すことができる。geom_octree_qp_offsets_enabled_flagの値が第1値(例えば、1)と同じである場合に、geom_octree_qp_offsets_depthがシグナリングされることができる。geom_octree_qp_offsets_depthは、geom_node_qp_offset_eq0_flagがジオメトリノードシンタックスに存在する場合にジオメトリ八分木のデプスを示すことができる。
【0292】
図28に示すように、ジオメトリスライスデータを介してシグナリングされるシンタックス要素は、次の通りである。ジオメトリスライスデータは、MaxGeometryOctreeDepthの値だけ繰り返される繰り返し文(第1繰り返し文)を含むことができる。MaxGeometryOctreeDepthは、ジオメトリ八分木の深さの最大値を示すことができる。第1繰り返し文において、depthは、0から(MaxGeometryOctreeDepth-1)になるまで1ずつ増加することができる。第1繰り返し文は、NumNodesAtDetpthの値だけ繰り返される繰り返し文(第2繰り返し文)を含むことができる。NumNodesAtDepth[depth]は、該当深さでデコードされるノードの個数を示すことができる。第2繰り返し文において、nodeidxは、0から(NumNodesAtDepth-)になるまで1ずつ増加することができる。第1繰り返し文と第2繰り返し文を介して、xN=NodeX[depth][nodeIdx]、yN=NodeY[depth][nodeIdx]、zN=NodeZ[depth][nodeIdx]、geometry_node(depth、nodeIdx、xN、yN、zN)がシグナリングされることができる。変数NodeX[depth][nodeIdx]、NodeY[depth][nodeIdx]、NodeZ[depth][nodeIdx]は、与えられた深さでデコーディングの順にIdx-thノードのx、y、z座標(coordinates)を示すことができる。geometry_node(depth、nodeIdx、xN、yN、zN)を介して当該深さのジオメトリビットストリームが伝送されることができる。
【0293】
log2_trisoup_node_sizeの値が0より大きい場合に、geometry_trisoup_data()がさらにシグナリングされることができる。すなわち、トライアングルノードのサイズが0より大きければ、geometry_trisoup_data()を介して、trisoupジオメトリエンコードされたジオメトリビットストリームがシグナリングされることができる。
【0294】
アトリビュートスライスシンタックス構造
【0295】
図29及び
図30は、アトリビュートスライスのシンタックス構造に対する一例を示す。
図29及び
図30に示されたシンタックス要素(又は、フィールド)は、アトリビュートスライスに含まれたシンタックス要素であるか、或いはアトリビュートスライスを介してシグナリングされるシンタックス要素であり得る。
【0296】
図29aに示すように、アトリビュートスライスビットストリーム(attribute_slice_bitstream())は、アトリビュートスライスヘッダ(attribute_slice_header())とアトリビュートスライスデータ(attribute_slice_data())を含むことができる。アトリビュートスライスデータ(attribute_slice_data())は、ポイントクラウドの一部又は全体に関連したアトリビュート又はアトリビュート関連データを含むことができる。
図29bに示すように、アトリビュートスライスヘッダを介してシグナリングされるシンタックス要素は、次の通りである。
【0297】
ash_attr_parameter_set_idは、アクティブAPSのaps_attr_parameter_set_idの値を示すことができる。ash_attr_sps_attr_idxは、アクティブSPS内のアトリビュートセットを示すことができる。ash_attr_geom_slice_idは、アクティブジオメトリスライスヘッダのgsh_slice_idの値を示すことができる。aps_slice_qp_delta_present_flagは、ash_attr_layer_qp_delta_lumaとash_attr_layer_qp_delta_chromaシンタックス要素が現在ASHに存在するか否かを示すことができる。例えば、aps_slice_qp_delta_present_flagの値が第1値(例えば、1)と同じである場合に、これは、ash_attr_layer_qp_delta_lumaとash_attr_layer_qp_delta_chromaが現在ASHに存在することを示すことができ、aps_slice_qp_delta_present_flagの値が第2値(例えば、0)と同じである場合に、これは、ash_attr_layer_qp_delta_lumaとash_attr_layer_qp_delta_chromaが現在ASHに存在しないことを示すことができる。aps_slice_qp_delta_present_flagの値が第1値(例えば、1)と同じである場合に、ash_attr_qp_delta_lumaがシグナリングされることができる。ash_attr_qp_delta_lumaは、アクティブアトリビュートパラメータセット内の初期スライスqpからのルーマデルタ量子化パラメータ(qp)を示すことができる。attribute_dimension_minus1[ash_attr_sps_attr_idx]の値が0より大きい場合に、ash_attr_qp_delta_chromaがシグナリングされることができる。ash_attr_qp_delta_chromaは、アクティブアトリビュートパラメータセット内の初期スライスqpからのクロマデルタ量子化パラメータ(qp)を示すことができる。変数InitialSliceQpYと変数InitialSliceQpCは、次の通りに導出されることができる。
【0298】
InitialSliceQpY=aps_attrattr_initial_qp+ash_attr_qp_delta_luma
【0299】
InitialSliceQpC=aps_attrattr_initial_qp+aps_attr_chroma_qp_offset+ash_attr_qp_delta_chroma
【0300】
ash_attr_layer_qp_delta_present_flagの値が第1値(例えば、1)と同じである場合に、ash_attr_num_layer_qp_minus1がシグナリングされることができる。ash_attr_num_layer_qp_minus1の値に1を加えた値は、ash_attr_qp_delta_lumaとash_attr_qp_delta_chromaがシグナリングされるレイヤの個数を示すことができる。ash_attr_num_layer_qpがシグナリングされなければ、ash_attr_num_layer_qpの値は0と推論できる。レイヤの個数を明示する変数NumLayerQpは、次のようにash_attr_num_layer_qp_minus1の値に1を加えて誘導されることができる。(NumLayerQp=ash_attr_num_layer_qp_minus1+1)。
【0301】
ash_attr_layer_qp_delta_present_flagの値が第1値(例えば、1)と同じである場合に、ash_attr_layer_qp_delta_luma[i]がNumLayerQpの値だけ反復的にシグナリングされることができる。iは0から(NumLayerQp-1)になるまで1ずつ増加することができる。また、iが1ずつ増加する繰り返し過程で、attribute_dimension_minus1[ash_attr_sps_attr_idx]の値が0より大きい場合に、ash_attr_layer_qp_delta_chroma[i]がさらにシグナリングされることができる。ash_attr_layer_qp_delta_lumaは、各レイヤ内のInitialSliceQpyからのルーマデルタ量子化パラメータ(qp)を示すことができる。ash_attr_layer_qp_delta_chromaは、各レイヤ内のInitialSliceQpCからのchroma delta量子化パラメータqpを示すことができる。変数SliceQpY[i]と変数SliceQpC[i]は、次のように導出されることができる。
【0302】
SliceQpY[i]=InitialSliceQpY+ash_attr_layer_qp_delta_luma[i]
【0303】
SliceQpC[i]=InitialSliceQpC+ash_attr_layer_qp_delta_chroma[i]
【0304】
ash_attr_region_qp_delta_present_flagがさらにシグナリングされることができる。ash_attr_region_qp_delta_present_flagの値が第1値(例えば、1)と同じであれば、これは、ash_attr_region_qp_delta、領域(region)バウンディングボックスオリジン、及びサイズが現在のアトリビュートスライスヘッダに存在することを指示することができる。もし、ash_attr_region_qp_delta_present_flagの値が第2値(例えば、0)と同じであれば、これは、ash_attr_region_qp_delta、領域バウンディングボックスオリジン、及びサイズが現在のアトリビュートスライスヘッダに存在しないことを指示することができる。ash_attr_layer_qp_delta_present_flagの値が第1値(例えば、1)と同じである場合に、ash_attr_qp_region_box_origin_x、ash_attr_qp_region_box_origin_y、ash_attr_qp_region_box_origin_z、ash_attr_qp_region_box_width、ash_attr_qp_region_box_height、ash_attr_qp_region_box_depth、及びash_attr_region_qp_deltaがさらにシグナリングされることができる。ash_attr_qp_region_box_origin_xは、slice_origin_xに関連した領域バウンディングボックスのxオフセットを指示することができ、ash_attr_qp_region_box_origin_yは、slice_origin_yに関連した領域バウンディングボックスのyオフセットを指示することができ、ash_attr_qp_region_box_origin_zは、slice_origin_zに関連した領域バウンディングボックスのzオフセットを指示することができる。ash_attr_qp_region_box_size_widthは、領域バウンディングボックスの幅(width)を指示することができ、ash_attr_qp_region_box_size_heightは、領域バウンディングボックスの高さ(height)を指示することができ、ash_attr_qp_region_box_size_depthは、領域バウンディングボックスの深さ(depth)を指示することができる。ash_attr_region_qp_deltaは、ash_attr_qp_region_boxによって指定された領域のSliceQpY[i]及びSliceQpC[i]からのデルタqpを示すことができる。領域ボックスデルタ量子化パラメータを明示する変数RegionboxDeltaQpは、ash_attr_region_qp_deltaの値と同一に設定されることができる。
【0305】
図30に示すように、アトリビュートスライスデータを介してシグナリングされるシンタックス要素は、次の通りである。Zerorunは、predIndex又はresidual前の(優先する)0の個数を指示することができる。predIndex[i]は、アトリビュートのi番目のポイント値をデコードするための予測器インデックス(predictor index)を示すことができる。predIndex[i]の値は、0からmax_num_conductorsの値までの範囲を有することができる。
【0306】
メタデータスライスシンタックス構造
【0307】
図31は、メタデータスライスのシンタックス構造に対する一例を示す。
図31に示されたシンタックス要素(又は、フィールド)は、アトリビュートスライスに含まれたシンタックス要素であるか、或いはアトリビュートスライスを介してシグナリングされるシンタックス要素であり得る。
【0308】
図31の(a)に示すように、メタデータスライスビットストリーム(metadata_slice_bitstream())は、メタデータスライスヘッダ(metadata_slice_header())とメタデータスライスデータ(metadata_slice_data())を含むことができる。
図31の(b)は、メタデータスライスヘッダに対する一例を示し、
図31の(c)は、メタデータスライスデータに対する一例を示す。
【0309】
図31の(b)に示すように、メタデータスライスヘッダを介してシグナリングされるシンタックス要素は、次の通りである。msh_slice_idは、当該メタデータスライスビットストリームを識別するための識別子を示すことができる。msh_geom_slice_idは、当該メタデータスライスでキャリーされるメタデータに関連したジオメトリスライスを識別するための識別子を示すことができる。msh_attr_idは、当該メタデータスライスでキャリーされるメタデータに関連したアトリビュートを識別するための識別子を示すことができる。msh_attr_slice_idは、当該メタデータスライスでキャリーされるメタデータに関連したアトリビュートスライスを識別するための識別子を示すことができる。
図31の(c)に示すように、メタデータビットストリーム(metadata_bitstream())がメタデータスライスデータを介してシグナリングされることができる。
【0310】
TLV構造
【0311】
前述したように、G-PCCビットストリームは、TLV構造のシーケンスからなるポイントクラウドデータのビットストリームを意味することができる。TLV構造は、「TLVカプセル化構造」、「G-PCC TLVカプセル化構造」、又は「G-PCC TLV構造」とも称される。
【0312】
TLVカプセル化構造に対する一例が
図32に示されており、TLVカプセル化のシンタックス構造に対する一例が
図33aに示されており、TLVカプセル化構造のペイロードタイプに対する一例が
図33bに示されている。
図32に示すように、各TLVカプセル化構造は、TLVタイプ(TLV TYPE)、TLV長さ(TLV LENGTH)、及び/又はTLVペイロード(TLV PAYLOAD)で構成できる。TLVタイプは、TLVペイロードのタイプ情報であってもよく、TLV長さは、TLVペイロードの長さ情報であってもよく、TLVペイロードは、ペイロード(又は、ペイロードバイト)であってもよい。
図33aに例示されたTLVカプセル化のシンタックス構造(tlv_encapsulation())を見ると、tlv_typeは、TLVペイロードのタイプ情報を示すことができ、tlv_num_payload_bytesは、TLVペイロードの長さ情報を示すことができる。また、tlv_payload_byte[i]は、TLVペイロードを示すことができる。tlv_payload_byte[i]は、tlv_num_payload_bytesの値だけシグナリングされることができ、iは、0から(tlv_num_payload_bytes-1)になるまで1ずつ増加することができる。
【0313】
TLVペイロードは、SPS、GPS、一つ以上のAPS、タイルインベントリ、ジオメトリスライス、一つ以上のアトリビュートスライス、及び一つ以上のメタデータスライスを含むことができる。実施例によって、各TLVカプセル化構造のTLVペイロードは、TLVペイロードのタイプ情報に応じてSPS、GPS、一つ以上のAPS、タイルインベントリ、ジオメトリスライス、一つ以上のアトリビュートスライス、及び一つ以上のメタデータスライスのうちの一つを含むこともできる。TLVペイロードのタイプ情報を介して、TLVペイロードに含まれるデータが区分されることができる。例えば、
図33bに示すように、tlv_typeの値が0であれば、TLVペイロードに含まれるデータがSPSであることを指示し、tlv_typeの値が1であれば、TLVペイロードに含まれるデータがGPSであることを指示することができる。tlv_typeの値が2であれば、TLVペイロードに含まれるデータがジオメトリスライスであることを指示し、tlv_typeの値が3であれば、TLVペイロードに含まれるデータがAPSであることを指示することができる。tlv_typeの値が4であれば、TLVペイロードに含まれるデータがアトリビュートスライスであることを指示し、tlv_typeの値が5であれば、TLVペイロードに含まれるデータがタイルインベントリ(又はタイルパラメータセット)であることを指示することができる。tlv_typeの値が6であれば、TLVペイロードに含まれるデータがframe boundary markerであることを指示し、tlv_typeの値が7であれば、TLVペイロードに含まれるデータがメタデータスライスであることを指示することができる。TLVカプセル化構造のペイロードは、HEVC(High Efficiency Video Coding)NAL(Network Abstraction Layer)ユニットのフォーマットに従うことができる。
【0314】
TLVペイロード内のSPSに含まれる情報は、
図21のSPSに含まれた情報の一部又は全部を含むことができる。TLVペイロード内のタイルインベントリに含まれる情報は、
図26のタイルインベントリに含まれた情報の一部又は全部を含むことができる。TLVペイロード内のGPSに含まれる情報は、
図23のGPSに含まれた情報の一部又は全部を含むことができる。TLVペイロード内のAPSに含まれる情報は、
図24のAPSに含まれた情報の一部又は全部を含むことができる。TLVペイロード内のジオメトリスライスに含まれる情報は、
図27及び
図28のジオメトリスライスに含まれた情報の一部又は全部を含むことができる。TLVペイロード内のアトリビュートスライスに含まれる情報は、
図29及び
図30のアトリビュートスライスに含まれる情報の全部又は一部を含むことができる。TLVペイロード内のメタデータスライスに含まれる情報は、
図31のメタデータスライスに含まれた情報の全部又は一部を含むことができる。
【0315】
カプセル化/デカプセル化
【0316】
このようなTLVカプセル化構造は、本明細書で言及された伝送部、伝送処理部、カプセル化部で生成できる。TLVカプセル化構造で構成されたG-PCCビットストリームは、そのまま受信装置へ伝送されるか、或いはカプセル化されて受信装置へ伝送されることもできる。例えば、カプセル化処理部1525は、TLVカプセル化構造からなるG-PCCビットストリームをファイル/セグメント形式にカプセル化して伝送することができる。デカプセル化処理部1710は、カプセル化されたファイル/セグメントをデカプセル化してG-PCCビットストリームを取得することができる。
【0317】
実施例によって、G-PCCビットストリームは、ISOBMFF基盤のファイルフォーマットにカプセル化できる。この場合、G-PCCビットストリームは、ISOBMFFファイル内のシングルトラック(track)又はマルチプルトラックに保存できる。ここで、ファイル内のシングルトラック又はマルチプルトラックは、「トラック」又は「G-PCCトラック」とも称される。ISOBMFF基盤のファイルは、コンテナ、コンテナファイル、メディアファイル、G-PCCファイルなどとも称される。具体的に、ファイルは、ftyp、moov、mdatと称することが可能なボックス及び/又は情報などで構成できる。
【0318】
ftypボックス(file type box、ファイルタイプボックス)は、当該ファイルに対するファイルタイプ又はファイル互換性関連情報を提供することができる。受信装置は、ftypボックスを参照して当該ファイルを区分することができる。mdatボックスは、メディアデータボックス(media data box)とも呼び、実際メディアデータを含むことができる。実施例によって、ジオメトリスライス(又は、コーディングされたジオメトリビットストリーム)、ゼロ以上のアトリビュートスライス(又は、コーディングされたアトリビュートビットストリーム)は、ファイル内のmdatボックスのサンプルに含まれることができる。ここで、サンプルは、G-PCCサンプルと称されることがある。moovボックスは、movieボックスとも呼び、当該ファイルのメディアデータに対するメタデータを含むことができる。例えば、moovボックスは、当該メディアデータのデコーディング及び再生に必要な情報を含むことができ、当該ファイルのトラック及びサンプルに関する情報を含むことができる。moovボックスは、全てのメタデータのためのコンテナの役割を果たすことができる。moovボックスは、メタデータ関連ボックスのうちの最上位レイヤのボックスであり得る。
【0319】
実施例によって、moovボックスは、ファイルのトラックに関連した情報を提供するトラック(trak)ボックスを含むことができ、trakボックスは、当該トラックのメディア情報を提供するメディア(mdia)ボックス(mediabox)、及び当該トラックと当該トラックに対応するファイルのサンプルを連結(reference)するためのトラックレファレンスコンテナ(tref)ボックスを含むことができる。メディアボックス(MediaBox)は、当該メディアデータの情報を提供するメディア情報コンテナ(minf)ボックスと、ストリームのタイプを指示するハンドラ(hdlr)ボックス(HandlerBox)とを含むことができる。minfボックスは、mdatボックスのサンプルに関連したメタデータを提供するサンプルテーブル(stbl)ボックスを含むことができる。stblボックスは、使用されたコーディングタイプ(coding type)に対する情報と当該コーディングタイプのために必要な初期情報(initialization information)を提供するサンプルディスクリプション(stsd)ボックスを含むことができる。実施例によって、サンプルディスクリプション(stsd)ボックスは、トラックのためのサンプルエントリ(sample entry)を含むことができる。実施例によって、SPS、GPS、APS、タイルインベントリなどのシグナリング情報(又は、メタデータ)は、ファイル内のmoovボックスのサンプルエントリ又はmdatボックスのサンプルに含まれることができる。
【0320】
G-PCCトラックは、ジオメトリスライス(又は、コーディングされたジオメトリビットストリーム)又はアトリビュートスライス(又は、コーディングされたアトリビュートビットストリーム)、又はジオメトリスライスとアトリビュートスライスの両方をキャリーするボリュメトリックビジュアルトラック(volumetric visual track)と定義されることができる。実施例によって、ボリュメトリックビジュアルトラックは、メディアボックス(MediaBox)のハンドラボックス(HandlerBox)内のボリュメトリックビジュアルメディアハンドラタイプ(volume visual media handler type)’volv’及び/又はメディアボックス(MediaBox)のminfボックス内のボリュメトリックビジュアルメディアヘッダ(volumetric visual media header、vvhd)によって識別できる。minfボックスは、メディア情報コンテナ又はメディア情報ボックスとも称される。minfボックスはメディアボックス(MediaBox)に含まれ、メディアボックス(MediaBox)はトラックボックスに含まれ、トラックボックスはファイルのmoovボックスに含まれることができる。シングルボリュメトリックビジュアルトラック又はマルチプルボリュメトリックビジュアルトラックは、ファイルに存在することができる。
【0321】
ボリュメトリックビジュアルメディアヘッダボックス(VolumetricVisualMediaHeaderBox)
【0322】
ボリュメトリックビジュアルトラックは、メディア情報ボックス(MediaInformationBox)内のボリュメトリックビジュアルメディアヘッダ(vvhd)ボックスを使用することができる。ボリュメトリックビジュアルメディアヘッダボックスは、次のように定義できる。
【0323】
Box Type:’vvhd’
【0324】
Container:MediaInformationBox
【0325】
Mandatory:Yes
【0326】
Quantity:Exactly one
【0327】
ボリュメトリックビジュアルメディアヘッダボックスのシンタックスは、次の通りである。
【0328】
aligned(8) class VolumetricVisualMediaHeaderBox
【0329】
extends FullBox(’vvhd’、version=0,1){
【0330】
}
【0331】
上記のシンタックスにおいて、バージョン(version)は、ボリュメトリビジュアルメディアヘッダボックスのバージョンを示す整数値であり得る。
【0332】
ボリュメトリックビジュアルサンプルエントリ(VolumetricVisualSampleEntry)
【0333】
実施例によって、ボリュメトリックビジュアルトラックは、シグナリング情報の伝送のために、次の通りにボリュメトリックビジュアルサンプルエントリを使用することができる。
【0334】
class VolumetricVisualSampleEntry(codingname) extends SampleEntry(codingname){
【0335】
unsigned int(8)[32] compressorname;
【0336】
//other boxes from derived specifications
【0337】
}
【0338】
上記のシンタックスで、compressornameは、informative目的(purpose)のためのcompressorの名前を示すことができる。実施例によれば、ボリュメトリックビジュアルサンプルエントリ(VolumetricVisualSmapleEntry)が相続を受けるサンプルエントリ(すなわち、VolumetricVisualSmapleEntryの上位クラス)は、GPCCデコーダコンフィギュレーションボックス(GPCCConfigurationBox)を含むことができる。
【0339】
G-PCCデコーダコンフィギュレーションボックス(GPCCConfigurationBox)
【0340】
実施例によって、G-PCCデコーダコンフィギュレーションボックスは、次の通りに、GPCCDecoderConfigurationRecod()を含むことができる。
【0341】
class GPCCConfigurationBox extends Box(’gpcC’){
【0342】
GPCCDecoderConfigurationRecord() GPCCConfig;
【0343】
}
【0344】
実施例によって、GPCCDecoderConfigurationRecord()は、ジオメトリ基盤のポイントクラウドコンテンツのためのG-PCCデコーダコンフィギュレーション情報を提供することができる。GPCCDecoderConfigurationRecord()のシンタックスは、次の通りに定義できる。
【0345】
aligned(8) class GPCCDecoderConfigurationRecord{
【0346】
unsigned int(8) configurationVersion=1;
【0347】
unsigned int(8) profile_idc;
【0348】
unsigned int(24)profile_compatibility_flags
【0349】
unsigned int(8) level_idc;
【0350】
unsigned int(8) numOfSetupUnitArrays;
【0351】
for(i=0;i<numOfSetupUnitArrays;i++){
【0352】
unsigned int(7) SetupUnitType;
【0353】
bit(1)SetupUnit completeness;
【0354】
unsigned int(8) numOfSepupUnit;
【0355】
for(i=0; numOfSepupUnit;i++){
【0356】
tlv_encapsulation setupUnit;
【0357】
}
【0358】
}
【0359】
// additional fields
【0360】
}
【0361】
configuration Versionはバージョンフィールドであり得る。当該レコードに対する互換されない変更事項は、バージョンナンバーの変更によって指示できる。profile_idc、profile_compatibility_flags、level_idcに対する値は、当該レコードによって説明されるビットストリームがデコードされるときに活性化される全てのパラメータセットに対して有効であり得る。profile_idcは、当該コンフィギュレーションレコードに関連したビットストリームが従うプロファイルを指示することができる。profile_idcは、G-PCCの特定プロファイルを指示するためにプロファイルコードを含むことができる。profile_compatibility_flagsの値が1であれば、当該ビットストリームがprofile_idcフィールドによって指示されるプロファイルに従うことを示すことができる。profile_compatibility_flags内の各ビットは、全てのパラメータセットがそのビットをセットするときにのみセットされることができる。level_idcは、プロファイルレベルコードを含むことができる。leve_idcは、全てのパラメータセット内の最も高いティアに対して指示された最も高いレベルと同じであるかそれより高いレベルのケイパビリティレベルを指示することができる。numOfSetupUnitArraysは、setupUnitTyeによって指示されたタイプのG-PCC setupユニットのアレイの個数を示すことができる。すなわち、numOfSetupUnitArraysは、GPCCDecoderConfigurationRecord()に含まれたG-PCC setupユニットのアレイの個数を示すことができる。setupUnitType、setupUnit_completeness、及びnumOfSetupUnitsがGPCCDecoderConfigurationRecord()にさらに含まれることができる。setupUnitType、setupUnit_completeness、及びnumOfSetupUnitsは、numOfSetupUnitArraysの値だけ繰り返される繰り返し文によって含まれ、この繰り返し文は、iが0から(numOfSetupUnitArrays-1)になるまで1ずつ増加しながら繰り返されることができる。setupUnitTypeは、G-PCC setupUnitsのタイプを指示することができる。すなわち、setupUnitTypeの値は、SPS、GPS、APS、又はタイルインベントリを指示する値の一つであり得る。setupUnit_completenessの値が1であれば、与えられたタイプの全てのセットユニットが次のアレイにあり、当該ストリームには何にもないことを指示することができる。また、setupUnit_completenessフィールドの値が0であれば、指示されたタイプの追加セットアップユニットが当該ストリームにあることを指示することができる。numOfSetuUnitsは、setupUnitTypeによって指示されたタイプのG-PCCセットアップユニットの個数を示すことができる。setupUnit(tlv_encapsulation setupUnit)がGPCCDecoderConfigurationRecord()にさらに含まれることができる。setupUnitは、numOfSetupUnitsの値だけ繰り返される繰り返し分によって含まれ、この繰り返し文は、iが0から(numOfSetupUnits-1)になるまで1ずつ増加しながら繰り返されることができる。setupUnitは、setupUnitTypeによって指示されたタイプのセットアップユニット、例えばSPS、GPS、APS、又はタイルインベントリをキャリーするTLVカプセル化構造のインスタンス(instance)であり得る。
【0362】
ボリュメトリックビジュアルトラックは、実際データの伝送のためにボリュメトリックビジュアルサンプル(VolumetricVisualSample)を使用することができる。ボリュメトリックビジュアルサンプルエントリは、サンプルエントリ又はG-PCCサンプルエントリと呼ばれることがあり、ボリュメトリックビジュアルサンプルは、サンプルまたはG-PCCサンプルと呼ばれることがある。シングルボリュメトリックビジュアルトラックは、シングルトラックまたはG-PCCシングルトラックと呼ばれることがあり、マルチプルボリュメトリックビジュアルトラックは、マルチプルトラック又はマルチプルG-PCCトラックと呼ばれることがある。サンプルのグループ化、トラックのグループ化、G-PCCビットストリームのシングルトラックカプセル化、又はG-PCCビットストリームのマルチプルトラックカプセル化などに関連したシグナリング情報、又は空間的接近を支援するためのシグナリング情報がボックスないしフルボックス(FullBox)の形態でサンプルエントリに追加できる。シグナリング情報は、GPCCエントリ情報ボックス(GPCCEntryInfoBox)、GPCCコンポーネントタイプボックス(GPCCComponentTypeBox)、キュービック領域情報ボックス(CubicRegionInfoBox)、3Dバウンディングボックス情報ボックス(3DBoundingBoxInfoBox)、又はタイルインベントリ(TileInventoryBox)の少なくとも一つを含むことができる。
【0363】
GPCCエントリ情報構造
【0364】
G-PCCエントリ情報ボックス(GPCCEntryInfoBox)のシンタックス構造は、次の通りに定義できる。
【0365】
class GPCCEntryInfoBox extends Box(’gpsb’) {
【0366】
GPCCEntryInfoStruct();
【0367】
}
【0368】
上記のシンタックス構造において、’gpsb’のサンプルエントリタイプを有するGPCCEntryInfoBoxは、GPCCEntryInfoStruct()を含むことができる。GPCCEntryInfoStruct()のシンタックスは、次の通りに定義できる。
【0369】
aligned(8) class GPCCEntryInfoStruct {
【0370】
unsigned int(1) main_entry_flag;
【0371】
unsigned int(1) dependent_on;
【0372】
if(dependent_on){ //non-entry
【0373】
unsigned int(16) dependency_id;
【0374】
}
【0375】
}
【0376】
GPCCEntryInfoStruct()は、main_entry_flagとdependent_onを含むことができる。main_entry_flagは、G-PCCビットストリームをデコードするためのエントリポイント(entry point)であるか否かを示すことができる。dependent_onは、そのデコーディングが他のものによって変わるかを指示する(dependent_on indicates its decoding is dependent on others)。もし、dependent_onがサンプルエントリに存在する場合、dependent_onは、トラック内のサンプルのデコーディングが他のトラックに従属するということを指示することができる。dependent_onの値が1であれば、GPCCEntryInfoStruct()は、dependency_idをさらに含むことができる。dependency_idは、関連したデータをデコードするためのトラックの識別子を指示することができる。dependency_idがサンプルエントリに存在する場合、dependency_idは、トラック内のサンプルのデコーディングが従属するG-PCCサブビットストリームをキャリーするトラックの識別子を表すことができる。もし、dependency_idがサンプルグループに存在する場合、dependency_idは、関連したサンプルのデコーディングが従属するG-PCCサブビットストリームをキャリーするサンプルの識別子を表すことができる。
【0377】
G-PCCコンポーネント情報の構造
【0378】
G-PCCコンポーネントタイプボックス(GPCCComponentTypeBox)のシンタックス構造は、次の通りに定義できる。
【0379】
aligned(8) class GPCCComponentTypeBox extends FullBox(’gtyp’、version=0,0){
【0380】
GPCCComponentTypeStruct();
【0381】
}
【0382】
’gtyp’のサンプルエントリタイプを有するGPCCComponentTypeBoxは、GPCCComponentTypeStruct()を含むことができる。GPCCComponentTypeStruct()のシンタックスは、次の通りに定義できる。
【0383】
aligned(8) class GPCCComponentTypeStruct {
【0384】
unsigned int(8) numOfComponents;
【0385】
for(i=0;i<numOfComponents;i++) {
【0386】
unsigned int(8) gpcc_type;
【0387】
if(gpcc_type==4)
【0388】
unsigned int(8)AttrIdx;
【0389】
}
【0390】
// additional fields
【0391】
}
【0392】
numOfComponentsは、当該GPCCComponentTypeStructにシグナリングされたG-PCCコンポーネントの数を指示することができる。gpcc_typeは、numOfComponentsの値だけ繰り返される繰り返し文によってGPCCComponentTypeStructに含まれることができる。この繰り返し文は、iが0から(numOfComponents-1)になるまで1ずつ増加しながら繰り返されることができる。gpcc_typeは、G-PCCコンポーネントのタイプを指示することができる。例えば、gpcc_typeの値が2であれば、ジオメトリコンポーネントを指示し、4であれば、アトリビュートコンポーネントを指示することができる。gpcc_typeの値が4、すなわちアトリビュートコンポーネントを指示する場合、当該繰り返し文は、AttrIdxをさらに含むことができる。AttrIdxは、SPS()でシグナリングされたアトリビュートの識別子を指示することができる。G-PCCコンポーネントタイプボックス(GPCCComponentTypeBox)は、マルチプルトラックのためのサンプルエントリに含まれることができる。G-PCCコンポーネントタイプボックス(GPCCComponentTypeBox)がG-PCCビットストリームの一部または全部をキャリーするトラックのサンプルエントリに存在すると、GPCCComponentTypeStruct()は、各トラックによってキャリーされる一つ以上のG-PCCコンポーネントタイプを指示することができる。GPCCComponentTypeStruct()を含むGPCCComponentTypeBox又はGPCCComponentTypeStruct()は、G-PCCコンポーネント情報と呼ばれることがある。
【0393】
サンプルグループ
【0394】
本開示で言及されたカプセル化処理部は、一つ以上のサンプルをグループ化してサンプルグループを生成することができる。本開示で言及されたカプセル化処理部、メタデータ処理部又はシグナリング処理部は、サンプルグループに連関したシグナリング情報をサンプル、サンプルグループ又はサンプルエントリにシグナリングすることができる。すなわち、サンプルグループに連関したサンプルグループ情報は、サンプル、サンプルグループ又はサンプルエントリに追加されることができる。サンプルグループ情報は、3Dバウンディングボックスサンプルグループ情報、3D領域サンプルグループ情報、3Dタイルサンプルグループ情報、3Dタイルインベントリサンプルグループ情報などであり得る。
【0395】
トラックグループ
【0396】
本開示で言及されたカプセル化処理部は、一つ以上のトラックをグループ化してトラックグループを生成することができる。本開示で言及されたカプセル化処理部、メタデータ処理部又はシグナリング処理部は、トラックグループに連関したグナリング情報をサンプル、トラックグループ又はサンプルエントリにシグナリングすることができる。すなわち、トラックグループに連関したトラックグループ情報は、サンプル、トラックグループ又はサンプルエントリに追加されることができる。トラックグループ情報は、3Dバウンディングボックストラックグループ情報、ポイントクラウドコンポジショントラックグループ情報、空間領域トラックグループ情報、3Dタイルトラックグループ情報、3Dタイルインベントリトラックグループ情報などであり得る。
【0397】
サンプルエントリ
【0398】
図34は、シングルトラックを含むISOBMFF基盤ファイルを説明するための図である。
図34の(a)は、シングルトラックを含むISOBMFF基盤ファイルのレイアウトに対する一例を示し、
図34の(b)は、G-PCCビットストリームがファイルのシングルトラックに保存されるとき、mdatボックスのサンプル構造に対する一例を示す。
図35は、マルチプルトラックを含むISOBMFF基盤ファイルを説明するための図である。
図35の(a)は、マルチプルトラックを含むISOBMFF基盤ファイルのレイアウトに対する一例を示し、
図35の(b)は、G-PCCビットストリームがファイルのシングルトラックに保存されるときのmdatボックスのサンプル構造に対する一例を示す。
【0399】
ファイルのmoovボックスに含まれるstsdボックス(SampleDescriptionBox)は、G-PCCビットストリームを保存するシングルトラックのためのサンプルエントリを含むことができる。SPS、GPS、APS、タイルインベントリが、ファイル内のmoovボックスのサンプルエントリ又はmdatボックスのサンプルに含まれることができる。また、ジオメトリスライス、ゼロ以上のアトリビュートスライスがファイル内のmdatボックスのサンプルに含まれることができる。G-PCCビットストリームがファイルのシングルトラックに保存されるとき、各サンプルは、マルチプルG-PCCコンポーネントを含むことができる。すなわち、各サンプルは、一つ以上のTLVのカプセル化構造で構成されることができる。シングルトラックのサンプルエントリは、次の通りに定義できる。
【0400】
Sample Entry Type: ’gpe1’,’gpeg’
【0401】
Container: SampleDescriptionBox
【0402】
Mandatory: A’gpe1’ or ’gpeg’ sample entry is mandatory
【0403】
Quantity: One or more sample entries may be present
【0404】
サンプルエントリタイプ’gpel’又は’gpeg’は必須的であり、一つ以上のサンプルエントリが存在することができる。G-PCCトラックは、’gpel’又は’gpeg’のサンプルエントリタイプを有するVolumetricVisualSampleEntryを使用することができる。G-PCCトラックのサンプルエントリは、G-PCCデコーダコンフィギュレーションボックス(GPCCConfigurationBox)を含むことができ、G-PCCデコーダコンフィギュレーションボックスは、G-PCCデコーダコンフィギュレーションレコード(GPCCDecoderConfigurationRecord())を含むことができる。GPCCDecoderConfigurationRecord())は、configurationVersion、profile_idc、profile_compatibility_flags、level_idc、numOfSetupUnitArrays、SetupUnitType、completeness、numOfSepupUnit、setupUnitのうちの少なくとも一つを含むことができる。GPCCDecoderConfigurationRecord()に含まれたsetupUnit arrayフィールドは、一つのSPSを含むTLVカプセル化構造を含むことができる。
【0405】
サンプルエントリタイプが’gpe1’である場合、すべてのパラメータセット、例えば、SPS、GPS、APS、タイルインベントリがsetupUnitsのアレイに含まれることができる。サンプルエントリタイプが’gpeg’であれば、上記のpらメータセットは、setupUnitsのアレイ(すなわち、サンプルエントリ)に含まれるか、或いは当該ストリーム(すなわち、サンプル)に含まれることができる。’gpe1’のサンプルエントリタイプを有するG-PCCサンプルエントリ(GPCCSampleEntry)のシンタックスに対する一例は、次の通りである。
【0406】
aligned(8) class GPCCSampleEntry()
【0407】
extends VolumetricVisualSampleEntry(’gpe1’){
【0408】
GPCCConfigurationBox config; //mandatory
【0409】
3DBoundingBoxInfoBox();
【0410】
CubicRegionInfoBox();
【0411】
TileInventoryBox();
【0412】
}
【0413】
’gpe1’のサンプルエントリタイプを有するG-PCCサンプルエントリ(GPCCSampleEntry)は、GPCCConfigurationBox、3DBoundingBoxInfoBox()、CubicRegionInfoBox()、及びTileInventoryBox()を含むことができる。3DBoundingBoxInfoBox()は、当該トラックでキャリーされるサンプルに関連したポイントクラウドデータの3Dバウンディングボックス情報を指示することができる。CubicRegionInfoBox()は、当該トラック内のサンプルでキャリーされるポイントクラウドデータの一つ以上の空間領域情報を指示することができる。TileInventoryBox()は、当該トラック内のサンプルでキャリーされたポイントクラウドデータの3Dタイルインベントリ情報を指示することができる。
【0414】
図34の(b)に示すように、サンプルは、ジオメトリスライスを含むTLVカプセル化構造が含まれることができる。また、サンプルは、一つ以上のパラメータセットを含むTLVカプセル化構造を含むことができる。また、サンプルは、一つ以上のアトリビュートスライスを含むTLVカプセル化構造を含むことができる。
【0415】
図35の(a)に示すように、G-PCCビットストリームがISOBMFF基盤のファイルのマルチプルトラックでキャリーされる場合に、各ジオメトリスライス又はアトリビュートスライスは、個別トラック(indivisual track)にマッピングされることができる。例えば、ジオメトリスライスは、トラック1(track1)にマッピングされることができ、アトリビュートスライスは、トラック2(track2)にマッピングされることができる。ジオメトリスライスをキャリーするトラック(track1)は、ジオメトリトラック又はG-PCCジオメトリトラックと呼ばれることがあり、アトリビュートスライスをキャリーするトラック(track2)は、アトリビュートトラック又はG-PCCアトリビュートトラックと呼ばれることがある、そして、ジオメトリトラックは、ジオメトリスライスをキャリーするボリュメトリックビジュアルトラックとして定義でき、アトリビュートトラックは、アトリビュートスライスをキャリーするボリュメトリックビジュアルトラックとして定義できる。
【0416】
ジオメトリスライスとアトリビュートスライスの両方を含むG-PCCビットストリームの一部をキャリーするトラックを、多重化されたトラック(multilexed track)とも呼ぶ。ジオメトリスライスとアトリビュートスライスが個別トラック(Separate tracks)に保存される場合に、トラック内の各サンプルは、シングルG-PCCコンポーネントのデータをキャリーする少なくとも一つのTLVカプセル化構造を含むことができる。この場合、各サンプルは、ジオメトリとアトリビュートの両方を含まず、かつマルチプルアトリビュートを含まなくてもよい。G-PCCビットストリームのマルチトラックカプセル化は、G-PCCプレーヤがG-PCCコンポーネントのうちの一つを効果的(effectively)にアクセスすることを可能にすることができる。G-PCCビットストリームがマルチプルトラックでキャリーされるとき、G-PCCプレーヤがG-PCCコンポーネントのうちの一つを効果的にアクセスするために、次の条件が満たされる必要がある。
【0417】
a)TLVカプセル化構造からなるG-PCCビットストリームがマルチプルトラックでキャリーされるとき、ジオメトリビットストリーム(又は、ジオメトリスライス)をキャリーするトラックがエントリポイントになる。
【0418】
b)サンプルエントリにおいて、当該トラックに含まれたストリームの役割(role)を指示するために新しいボックスが追加される。新しいボックスは、前述したG-PCCコンポーネントタイプボックス(GPCCComponentTypeBox)であり得る。すなわち、GPCCComponentTypeBoxがマルチプルトラックのためのサンプルエントリに含まれることができる。
【0419】
c)G-PCCジオメトリビットストリームのみを運搬するトラックにおいてG-PCCアトリビュートビットストリームを運搬するトラックとしてトラック参照が導入される。
【0420】
GPCCComponentTypeBoxは、GPCCComponentTypeStruct()を含むことができる。GPCCComponentTypeBoxがG-PCCビットストリームの一部又は全部をキャリーするトラックのサンプルエントリに存在すれば、GPCCComponentTypeStruct()は、各トラックによってキャリアーされる1つ以上のG-PCCコンポーネントのタイプ(例えば、ジオメトリ、アトリビュート)を指示することができる。例えば、GPCCComponentTypeStruct()に含まれたgpcc_typeフィールドの値が2であれば、ジオメトリコンポーネントを指示し、4であれば、アトリビュートコンポーネントを指示することができる。また、gpcc_typeフィールドの値が4、すなわち、アトリビュートコンポーネントを指示すれば、SPS()にシグナリングされたアトリビュートの識別子を指示するAttrIdxフィールドをさらに含むことができる。
【0421】
G-PCCビットストリームがマルチプルトラックでキャリーされる場合に、サンプルエントリのシンタックスは、次の通りに定義できる。
【0422】
Sample Entry Type:’gpe1’、’gpeg’、’gpc1’ or ’gpcg’
【0423】
Container:SampleDescriptionBox
【0424】
Mandatory:’gpc1’、’gpcg’ sample entry is mandatory
【0425】
Quantity:One or more sample entries may be present
【0426】
サンプルエントリタイプ’gpc1’、’gpcg’、’gpc1’又は’gpcg’は必須であり、一つ以上のサンプルエントリが存在することができる。マルチプルトラック(例えば、ジオメトリ又はアトリビュートトラック)は、’gpc1’、’gpcg’、’gpc1’又は’gpcg’のサンプルエントリタイプを有するVolumetricVisualSampleEntryを使用することができる。’gpe1’サンプルエントリにおいて、すべてのパラメータセットは、setupUnitアレイに存在することができる。’gpeg’サンプルエントリにおいて、パラメータセットが当該アレイ又はストリームに存在することができる。’gpe1’又は’gpeg’サンプルエントリにおいて、GPCCComponentTypeBoxが存在しなければならないことがある。’gpc1’サンプルエントリにおいて、SPS、GPS及びタイルインベントリは、G-PCCジオメトリビットストリームを伝達するトラックのSetupUnitアレイに存在することができる。全ての関連APSは、G-PCCアトリピュートビットストリームを伝達するトラックのSetupUnitアレイに存在することができる。’gpcg’サンプルエントリにおいて、SPS、GPS、APS又はタイルインベントリが当該アレイ又はストリームに存在することができる。’gpc1’又は’gpcg’サンプルアレイにおいて、GPCCComponentTypeBoxが存在しなければならないことがある。
【0427】
G-PCCのサンプルエントリのシンタックスに対する一例は、次の通りである。
【0428】
aligned(8) class GPCCSampleEntry()
【0429】
extends VolumetricVisualSampleEntry(codingname) {
【0430】
GPCCConfigurationBox config;//mandatory
【0431】
GPCCComponentTypeBox type;//optional
【0432】
}
【0433】
ベースクラスVolumetricVisualSampleEntryのcompressorname、すなわち、codingnameは、推奨される「\013GPCCコーディング」値と共に使用される圧縮機の名前を指示することができる。「\013GPCCコーディング」において、一番目のバイト(\013で表示される8進数13又は10進数11)は、リメイニングバイトの数であって、残りの文字列(string)のバイト数を示すことができる。congifは、G-PCCデコーダコンフィギュレーション情報を含むことができる。infoは、各トラックでキャリーされるG-PCCコンポーネント情報を表すことができる。infoは、トラックでキャリーされるコンポーネントタイルを示すことができ、また、G-PCCアトリビュートトラックでキャリーされるG-PCCコンポーネントのアトリビュート名、インデックス、及びアトリビュートタイプを示すことができる。
【0434】
サンプルフォーマット
【0435】
G-PCCビットストリームがシングルトラックに保存される場合に、サンプルフォーマットに対するシンタックスは、次の通りである。
【0436】
aligned(8) class GPCCSample
【0437】
{
【0438】
unsigned int GPCCLength=sample_size;//Size of Sample
【0439】
for(i=0;i<GPCCLength;)//to end of the sample
【0440】
{
【0441】
tlv_encapsulation gpcc_unit;
【0442】
i+=(1+4)+gpcc_unit.tlv_num_payload_bytes;
【0443】
}
【0444】
}
【0445】
上記のシンタックスにおいて、各サンプル(GPCCSample)は、シングルポイントクラウドフレームに該当し、同じプレゼンテーションタイム(same presentation time)に属する一つ以上のTLVカプセル化構造で構成されることができる。各TLVカプセル化構造は、シングルタイプのTLVペイロードを含むことができる。これに加えて、一つのサンプルは、独立的(例えば、シンクサンプル)であり得る。GPCCLengthは、当該サンプルの長さを示し、gpcc_unitは、シングルG-PCCコンポーネント(例えば、ジオメトリスライス)を含むTLVカプセル化構造のインスタンスを含むことができる。
【0446】
G-PCCビットストリームがマルチプルトラックに保存される場合に、各サンプルは、単一ポイントクラウドフレームに当該することができ、互いに異なるトラックで同じポイントクラウドフレームに寄与するサンプルは、同じプレゼンテーション時間を有しなければならないことがある。各サンプルは、サンプルエントリのGPCCComponentInfoBoxに表示されたG-PCCコンポーネントの一つ以上のG-PCCユニットと、パラメータセット又はタイルインベントリのうちの一つを運搬する0個以上のG-PCCユニットで構成されなければならない。パラメータセット又はタイルインベントリを含むG-PCCユニットがサンプルに存在する場合、当該F-PCCサンプルは、G-PCCコンポーネントのG-PCCユニットの前に現れなければならない。各サンプルは、アトリビュートデータユニットを含む一つ以上のG-PCCユニット、パラメータセットをキャリーする0個以上のG-PCCユニットを含むことができる。G-PCCビットストリームがマルチプルトラックに保存される場合に、サンプルフォーマットに対するシンタックス及びセマンティックスは、前述したG-PCCビットストリームがシングルトラックに保存される場合に対するシンタックス及びセマンティックスと同一であり得る。
【0447】
サブサンプル
【0448】
受信装置では、ジオメトリスライスが先にデコードされ、デコーディングジオメトリに基づいてアトリビュートスライスがデコードされる必要があるため、各サンプルがマルチプルTLVカプセル化構造で構成される場合に、当該サンプルにおいて各TLVカプセル化構造をアクセスする必要がある。また、一つのサンプルがマルチプルTLVカプセル化構造で構成されると、マルチプルTLVカプセル化構造のそれぞれは、サブサンプルとして保存されることができる。サブサンプルは、G-PCCサブサンプルと呼ばれることがある。例えば、一つのサンプルがパラメータセットを含むパラメータセットTLVカプセル化構造、ジオメトリスライスを含むジオメトリTLVカプセル化構造、及びアトリビュートスライスを含むアトリビュートTLVカプセル化構造を含むならば、パラメータセットTLVカプセル化構造、ジオメトリTLVカプセル化構造、及びアトリビュートTLVカプセル化構造は、それぞれサブサンプルとして保存できる。この場合、当該サンプルにおいて、各G-PCCコンポーネントにアクセスすることを可能にするために、当該サブサンプルでキャリーされるTLVカプセル化構造のタイプが必要であり得る。
【0449】
G-PCCビットストリームがシングルトラックに保存される場合に、G-PCCサブサンプルは、ただ一つのTLVカプセル化構造を含むことができる。一つのSubSampleInformationBoxがmoovボックスのサンプルテーブルボックス(SampleTableBox、stbl)に存在するか、或いはムービーフラグメントボックス(MovieFragmentBox、moof)それぞれのトラックフラグメントボックス(TrackFragmentBox、traf)に存在することができる。もし、SubSampleInformationBoxが存在すれば、TLVカプセル化構造の8ビットタイプ値がSubSampleInformationBox内のサブサンプルエントリの32-bit codec_specific_parameters fieldに含まれることができる。もし、TLVカプセル化構造がアトリビュートペイロードを含むならば、アトリビュートインデックスの6ビット値がSubSampleInformationBox内のサブサンプルエントリの32-bit codec_specific_parameters fieldに含まれることができる。実施例によって、各サブサンプルのタイプは、SubSampleInformationBox内のサブサンプルエントリのcodec_secific_parameters fieldに含まれることができる。実施例によって、各サブサンプルのタイプは、SubSampleInformationBox内のサブサンプルエントリのcodec_specific_parameters fieldをパーシングすることにより識別できる。SubSampleInformaionBoxのcodec_specific_parametersは、次の通りに定義できる。
【0450】
if(flags==0) {
【0451】
unsigned int(8) PayloadType;
【0452】
if(PayloadType==4){//attribute payload
【0453】
unsigned int(6) AttrIdx;
【0454】
bit(18) reserved=0;
【0455】
}
【0456】
else
【0457】
bit(24) reserved=0;
【0458】
} else if(flags==1){
【0459】
unsigned int(1) tile_data;
【0460】
bit(7) reserved=0;
【0461】
if (tile_data)
【0462】
unsigned int(24) tile_id;
【0463】
else
【0464】
bit(24) reserved=0;
【0465】
}
【0466】
上記のサブサンプルシンタックスにおいて、payloadTypeは、当該サブサンプル内のTLVカプセル化構造のtlv_typeを指示することができる。例えば、payloadTypeの値が4であれば、アトリビュートスライス(すなわち、アトリビュートスライス)を指示することができる。attrIdxは、当該サブサンプル内のアトリビュートペイロードを含むTLVカプセル化構造のアトリビュート情報の識別子を指示することができる。attrIdxは、当該サブサンプル内のアトリビュートペイロードを含むTLVカプセル化構造のash_attr_sps_attr_idxと同一であり得る。tile_dataは、サブサンプルが一つのタイル又は他のタイルを含むか否かを示すことができる。tile_dataの値が1であれば、サブサンプルが一つのG-PCCタイルに対応するジオメトリデータユニット又はアトリビュートデータユニットを含むTLVカプセル化構造を含むということを示すことができる。tile_dataの値が0であれば、サブサンプルが各パラメータセット、タイルインベントリ又はフレームバウンダリマーカーを含むTLVカプセル化構造を含むということを示すことができる。tile_idは、サブサンプルがタイルインベントリ内で関連するG-PCCバージョンのインデックスを示すことができる。
【0467】
G-PCCビットストリームがマルチプルトラックに保存される場合に(ISOBMFFにおいて、G-PCCデータのマルチプルトラックカプセル化の場合に)サブサンプルが存在すると、SampleTableBox又は各MovieFragmentBoxのTrackFragmentBoxでフラグ(flag)が1であるSubSampleInformationBoxのみ存在しなければならないことがある。G-PCCビットストリームがマルチプルトラックに保存される場合に、シンタックス要素とセマンティックスは、G-PCCビットストリームがシングルトラックに保存される場合のシンタックス要素とセマンティックにおいてflag==1の場合と同一であり得る。
【0468】
トラック間の参照
【0469】
G-PCCビットストリームがマルチプルトラックでキャリーされる場合に(すなわち、G-PCCジオメトリビットストリームとアトリビュートビットストリームとが互いに異なる(分離された)トラックでキャリーされる場合に)、トラック間を連結するために、トラック参照ツールが使用できる。一つのTrackReferenceTypeBoxesがG-PCCトラックのTrackBox内のTrackReferenceBoxに追加されることができる。TrackReferenceTypeBoxは、G-PCCトラックが参照するトラックを指定するtrack_IDsのアレイを含むことができる。
【0470】
実施例によって、本開示は、G-PCCデータ(以下では、G-PCCビットストリーム、カプセル化されたG-PCCビットストリーム、又はG-PCCファイルということがある)の運搬(carriage)に時間スケーラビリティ(temporal scalability)を支援するための装置及び方法を提供することができる。また、本開示は、G-PCCビットストリームをファイル内の単一トラックに効率よく保存するか、或いは複数のトラックに分割して保存し、これに対するシグナリングを提供するポイントクラウドコンテンツサービス提供のための装置及び方法を提案することができる。また、本開示は、保存されたG-PCCビットストリームに対する効率的な接近を支援することができるようにするためのファイル保存技法を処理する装置及び方法を提案する。
【0471】
時間スケーラビリティ(temporal scalability)
【0472】
時間スケーラビリティは、独立してコーディングされたフレームの一つ以上のサブセットを抽出する可能性を許容する機能を意味することができる。また、時間スケーラビリティは、G-PCCデータを複数の互いに異なる時間的レベル(temporal levels)に区分し、互いに異なる時間的レベルに属する各G-PCCフレームを互いに独立的に処理する機能を意味することができる。時間スケーラビリティが支援されると、G-PCCプレーヤ(又は、本開示の伝送装置及び/又は受信装置)は、G-PCCコンポーネントのうちの所望のコンポーネント(ターゲットコンポーネント)に効果的(effectively)にアクセスすることができる。また、時間スケーラビリティが支援されると、G-PCCフレームが互いに独立的に処理されるので、システムレベルで時間スケーラビリティの支援がより柔軟な時間的サブレイヤリング(sub-layering)で表現されることができる。また、時間スケーラビリティが支援されると、G-PCCデータを処理するシステム(ポイントクラウドコンテンツ提供システム)がネットワーク機能(capability)やデコーダ機能(Capability)などと一致するように高い水準でデータを操作することができるようにするので、ポイントクラウドコンテンツ提供システムの性能を向上させることができる。
【0473】
従来技術の問題点
【0474】
ポイントクラウドコンテンツ提供システム又はG-PCCデータの運搬(carriage)に関連した従来技術は、時間スケーラビリティを支援しなかった。すなわち、従来技術は、G-PCCデータを只一つの時間的レベルによって処理する。したがって、従来技術は、前述した時間スケーラビリティの支援による効果を提供することができない。
【0475】
1.第1実施例
【0476】
時間スケーラビリティを支援する第1実施例についてのフローチャートが
図36~
図39に示されている。
【0477】
図36を参照すると、伝送装置10、1500は、サンプルグループに対する情報を生成することができる(S3610)。後述するように、サンプルグループは、G-PCCファイル内のサンプル(G-PCCサンプル)が一つ以上の時間的レベルに基づいてグループ化されたものであり得る。また、伝送装置10、1500は、G-PCCファイルを生成することができる(S3620)。具体的には、伝送装置10、1500は、ポイントクラウドデータ、サンプルグループに対する情報及び/又は時間的レベルに対する情報を含めてG-PCCファイルを生成することができる。S3610過程とS3620過程は、カプセル化処理部13、カプセル化処理部1525及び/又はシグナリング処理部1510のうちの一つ以上によって行われることができる。伝送装置10、1500は、G-PCCファイルをシグナリングすることができる。
【0478】
図37を参照すると、受信装置20、1700は、G-PCCファイルを取得することができる(S3710)。G-PCCファイルには、ポイントクラウドデータ、サンプルグループに対する情報及び時間的レベルに関する情報が含まれ得る。サンプルグループは、G-PCCファイル内のサンプル(G-PCCサンプル)が一つ以上の時間的レベルに基づいてグループ化されたものであり得る。受信装置20、1700は、G-PCCファイル内のサンプル(G-PCCサンプル)の中から、対象(target)時間的レベルに属する一つ以上のサンプルを抽出することができる(S3720)。具体的には、受信装置20、1700は、サンプルグループに対する情報及び/又は時間的レベルに対する情報に基づいて、対象時間的レベルに属するサンプルをデカプセル化又は抽出することができる。ここで、対象時間的レベルは、所望(desired)の時間的レベルであり得る。実施例によって、S3720過程は、一つ以上の時間的レベルが存在するか否かを判断する過程と、一つ以上の時間的レベルが存在する場合に所望の時間的レベル及び/又は所望のフレームレートが利用可能であるか否かを判断する過程、及び所望の時間的レベル及び/又は所望のフレームレートが利用可能である場合に所望の時間的レベルに属するサンプルグループ内のサンプルを抽出する過程を含むことができる。S3710過程(及び/又はサンプルエントリをパーシングする過程)とS3720過程は、デカプセル化処理部22、デカプセル化処理部1710及び/又はシグナリング処理部1715のうちの一つ以上によって行われることができる。実施例によって、受信装置20、1700は、サンプルグループに対する情報及び/又は時間的レベルに対する情報に基づいてG-PCCファイル内のサンプルの時間的レベルを決定又は判断する過程をS3710過程とS3720過程との間に行うことができる。
【0479】
サンプルグループ化(sample grouping)
【0480】
時間スケーラビリティを支援するための方式としては、サンプルグループ化方式とトラックグループ化方式が存在することができる。サンプルグループ化方式は、G-PCCファイル内のサンプルを時間的レベルによってグループ化する方式であり、トラックグループ化方式は、G-PCCファイル内のトラックを時間的レベルによってグループ化する方式であり得る。以下では、サンプルグループ化方式に基づいて時間スケーラビリティを支援する装置及び方法を中心に本開示について説明する。
【0481】
サンプルグループは、サンプルと、これらに指定された(designated)時間的レベルとを連関させるのに使用できる。すなわち、サンプルグループは、どのサンプルがどの時間的レベルに属するか否かを示すことができる。また、サンプルグループは、一つ以上のサンプルを一つ以上の時間的レベルにグループ化した結果に対する情報であり得る。サンプルグループは、’tele’サンプルグループ、時間的レベルサンプルグループ’tele’とも呼ばれる。
【0482】
サンプルグループに対する情報
【0483】
サンプルグループに対する情報は、サンプルグループ化の結果に対する情報を含むことができる。従って、サンプルグループに対する情報は、サンプルとこれらに指定された時間的レベルとを互いに連関させるのに使用するための情報であり得る。すなわち、サンプルグループに対する情報は、どのサンプルがどの時間的レベルに属するか否かを示すことができ、一つ以上のサンプルを一つ以上の時間的レベルにグループ化した結果に対する情報であり得る。
【0484】
サンプルグループに対する情報は、ジオメトリデータユニットを含むトラックに存在することができる。G-PCCデータがマルチプルトラックで運搬される場合に、サンプルグループに対する情報は、トラック内の各サンプルを指定された時間的レベルにグループ化するためにジオメトリトラックにのみ存在することができる。アトリビュートトラック内のサンプルは、それらに連関したジオメトリトラックとの関係に基づいて推論できる。例えば、アトリビュートトラック内のサンプルは、それらに連関したジオメトリトラック内のサンプルと同じ時間的レベルに属することができる。
【0485】
サンプルグループに対する情報が、G-PCCタイル基盤トラック(tile base track)が参照するG-PCCタイルトラックに存在する場合、サンプルグループに対する情報は、G-PCCタイル基盤トラックが参照する残り(rest)のタイルトラックに存在しなければならないこともある。ここで、G-PCCタイルトラックは、全てのG-PCCコンポーネント又は一つ以上のG-PCCタイルに当該する単一G-PCCコンポーネントを運搬するボリュメトリックビジュアルトラックであり得る。また、G-PCCタイル基盤トラックは、G-PCCタイルトラックに該当する全てのパラメータセット及びタイルインベントリを運搬するボリュメトリックビジュアルトラックであり得る。
【0486】
時間的レベルに対する情報
【0487】
G-PCCファイルで支援する時間スケーラビリティを説明するために時間的レベルに対する情報がシグナリングされることができる。時間的レベルに対する情報は、サンプルグループ(又は、サンプルグループに対する情報)を含むトラックのサンプルエントリに存在することができる。例えば、時間的レベルに対する情報は、GPCCDecoderConfigurationRecord()に存在するか、或いはG-PCCトラックに対するスケーラビリティ情報をシグナリングするG-PCCスケーラビリティ情報ボックス(GCCScalabilityInfoBox)に存在することができる。
【0488】
下記のシンタックス構造に表現されたように、時間的レベルに対する情報は、個数情報(例えば、num_temporal_levels)、時間的レベル識別情報(例えば、level_idc)及び/又はフレームレート(frame rate)に対する情報のうちの一つ以上を含むことができる。また、フレームレートに対する情報は、フレームレート情報(例えば、avg_frame_rate)及び/又はフレームレート存在情報(例えば、avg_frame_rate_present_flag)を含むことができる。
【0489】
aligned(8) class GPCCDecoderConfigurationRecord {
【0490】
unsigned int(8) configurationVersion=1;
【0491】
unsigned int(8) profile_idc;
【0492】
unsigned int(24) profile_compatibility_flags;
【0493】
unsigned int(3) num_temporal_levels;
【0494】
unsigned int(1) avg_frame_rate_present;
【0495】
bit(4) reserved=’1111’b;
【0496】
for(i=0;i==0||i<num_temporal_levels;i++) {
【0497】
unsigned int(8)level_idc[i];
【0498】
if(avg_frame_rate_present)
【0499】
unsigned int(16)avg_frame_rate[i];
【0500】
}
【0501】
unsigned int(8)numOfSetupUnits;
【0502】
for(i=0;i<numOfSetupUnits;i++) {
【0503】
tlv_encapsulation setupUnit;//as defined in ISO/IEC 23090-9
【0504】
}
【0505】
//additional fields
【0506】
}
【0507】
(1)個数情報
【0508】
個数情報は、時間的レベルの個数を示す。例えば、num_temporal_levelsの値が第1値(例えば、1)より大きい場合、num_temporal_levelsの値は、時間的レベルの個数を示すことができる。実施例によって、個数情報は、G-PCCファイル内のサンプルが時間的に拡張可能であるか(temporally scalable)否かをさらに示すことができる。例えば、num_temporal_levelsの値が第1値(例えば、1)と同じである場合に、これは、時間的に拡張可能でない(時間スケーラビリティが支援されない)を示すことができる。他の例として、num_temporal_levelsの値が第1値(例えば、1)より小さい場合に(例えば、0)、これは、時間的に拡張可能であるか否かが分からないことを示すことができる。これをまとめると、num_temporal_levelsの値が第1値(例えば、1)以下である場合に、num_temporal_levelsの値は、時間的に拡張可能であるか否かを示すことができる。
【0509】
(2)時間的レベル識別情報
【0510】
時間的レベル識別情報は、当該トラックに対する時間的レベル識別子(又は、level code)を示す。すなわち、時間的レベル識別情報は、当該トラック内のサンプルの時間的レベル識別子を示すことができる。実施例によって、num_temporal_levelsの値が第1値(例えば、1)以下である場合に、時間的レベル識別情報は、G-PCCファイル内のサンプルのlevel codeを示すことができる。時間的レベル識別情報は、S3620過程で個数情報が指示する時間的レベルの個数だけ生成されることができ、S3710で個数情報が指示する時間的レベルの個数だけ取得されることができる。例えば、iが0から’num_temporal_level-1’まで1ずつ増加しながら時間的レベル識別情報が生成/取得されることができる。
【0511】
(3)フレームレートに対する情報
【0512】
前述したように、フレームレートに対する情報は、フレームレート情報(例えば、avg_frame_rate)及び/又はフレームレート存在情報(例えば、avg_frame_rate_present_flag)を含むことができる。
【0513】
フレームレート情報は、時間的レベルのフレームレートを示すことができる。例えば、フレームレート情報は、時間的レベルのフレームレートをフレーム単位で表すことができ、フレームレート情報が表すフレームレートは、平均フレームレートであり得る。実施例によって、avg_frame_rateの値が第1値(例えば、0)と同じである場合に、これは、特定されない(unspecified)平均フレームレートを示すことができる。フレームレート情報は、個数情報が指示する時間的レベルの個数だけ生成でき、個数情報が指示する時間的レベルの個数だけ取得できる。例えば、iが0から’num_temporal_level-1’まで1ずつ増加しながら、フレームレート情報が生成/取得できる。
【0514】
フレームレート存在情報は、フレームレート情報の存否(すなわち、フレームレート情報がシグナリングされるか否か)を示すことができる。例えば、Avg_frame_rate_present_flagの値が第1値(例えば、1)である場合に、これは、フレームレート情報が存在することを示すことができ、avg_frame_rate_present_flagの値が第2値(例えば、0)である場合に、これは、フレームレート情報が存在しないことを示すことができる。
【0515】
フレームレート情報は、フレームレート存在情報の値を問わずにシグナリングされることができる。実施例によって、フレームレート情報は、フレームレート存在情報の値によってシグナリングの如何が決定されることもできる。
図38及び
図39は、フレームレート情報がフレームレート存在情報の値に応じてシグナリングされるか否かが決定される例示を説明するためのフローチャートである。
【0516】
図38を参照すると、伝送装置10、1500は、フレームレート情報の存否を判断することができる(S3810)。フレームレート情報が存在しない場合に、伝送装置10、1500は、時間的レベルに関する情報にフレームレート存在情報のみを含ませることができる。すなわち、フレームレート情報が存在しない場合に、伝送装置10、1500は、フレームレート存在情報のみをシグナリングすることができる。この場合に、avg_frame_rate_present_flagの値は、第2値(例えば、0)と同じであり得る。これとは異なり、フレームレート情報が存在する場合に、伝送装置10、1500は、時間的レベルに対する情報にフレームレート存在情報とフレームレート情報とを含ませることができる(S3830)。すなわち、フレームレート情報が存在する場合に、伝送装置10、1500は、フレームレート存在情報とフレームレート情報とをシグナリングすることができる。この場合に、avg_frame_rate_present_flagの値は、第1値(例えば、1)と同じであり得る。S3810過程~S3830過程は、カプセル化処理部13、カプセル化処理部1525及び/又はシグナリング処理部1510のうちの一つ以上によって行われることができる。
【0517】
図39を参照すると、受信装置20、1700は、フレームレート存在情報を取得することができる(S3910)。また、受信装置20、1700は、フレームレート存在情報が示す値を判断することができる(S3920)。avg_frame_rate_present_flagの値が第2値(例えば、0)と同じである場合に、受信装置20、1700は、フレームレート情報を取得せず、フレームレートに対する情報を取得する過程を終了することができる。これとは異なり、avg_frame_rate_present_flagの値が第1値(例えば、1)と同じである場合に、受信装置20、1700は、フレームレート情報を取得することができる(S3930)。受信装置20、1700は、G-PCCファイル内のサンプルの中から、対象フレームレートに対応するサンプルを抽出することができる(S3940)。ここで、’対象フレームレートに対応するサンプル’は、対象フレームレートに対応するフレームレートを有する時間的レベル又はトラックであり得る。また、’対象フレームレートに対応するフレームレート’は、対象フレームレートと同じ値のフレームレートだけでなく、対象フレームレートの値未満の値を有するフレームレートも含むことができる。S3910過程~S3940過程は、デカプセル化処理部22、デカプセル化処理部1710及び/又はシグナリング処理部1715のうちの一つ以上によって行われることができる。実施例によって、フレームレート情報に基づいて時間的レベル(又は、トラック)のフレームレートを決定化する過程がS3930過程とS3940過程との間に行われることができる。
【0518】
このように、フレームレート情報をシグナリングするか否かがフレームレート存在情報の値に応じて決定されると、フレームレート情報をシグナリングするためのビットが減少してビット効率性が増加することができる。例えば、特定ファイルパーサ(parser)又はプレーヤ(例えば、受信装置)は、フレームレート情報を使用することができるが、他のファイルパーサ又はプレーヤは、フレームレート情報の使用を所望しなくてもよく、フレームレート情報を使用しなくてもよい。また、G-PCCファイルがフレームレート情報の使用を所望しないか或いはフレームレート情報を使用しないファイルパーサ又はプレーヤによって再生される状況である場合に、フレームレート存在情報の値を第2値(例えば、0)に設定することにより、フレームレート情報をシグナリングするためのビットの効率性が増加することができる。
【0519】
2.第2実施例
【0520】
第2実施例は、第1実施例において’連続するサンプル間の最小結合時間差(smallest composition time difference)’に対する条件を追加した実施例である。
【0521】
G-PCCファイルに対して時間スケーラビリティが使用又は活性化されると、G-PCCビットストリームのコーディングされたフレームが互いに異なる時間的レベルに整列されることができる。また、互いに異なる時間的レベルは、互いに異なるトラックに保存できる。また、フレームレート情報に基づいて各時間的レベル(又は、各トラック)のフレームレートが決定されることができる。
【0522】
例えば、サンプルは、3個の時間的レベル(時間的レベル0、時間的レベル1及び時間的レベル2)に配列され、各時間的レベルは、一つのトラックに保存されることにより、三つのトラック(トラック0、トラック1及びトラック2)が構成されることができる。このような場合に、ファイルパーサ又はプレーヤ(例えば、受信装置)は、トラック0のみを再生する場合のフレームレートがどれ位であるか、或いはトラック0とトラック1を一緒に再生する場合のフレームレートがどれ位であるかを容易に把握することができる。ファイルパーサ又はプレーヤ(例えば、受信装置)は、対象フレームレートが与えられた場合に、再生するトラックを選択することができる。例えば、時間的レベル0はフレームレート30fpsに連関し、時間的レベル1はフレームレート60fpsに連関し、時間的レベル2は120fpsに連関した状態で、対象フレームレートが60fpsであるとすれば、ファイルパーサ又はプレーヤトラック0とトラック1を共に再生しなければならないことを容易に把握することができる。
【0523】
一方、さらに高い時間的レベルを有するサンプル(又は、さらに高い時間的レベルに連関したトラック)がより大きいフレームレートに連関すれば、ファイル再生がさらに高い時間的レベルで進むにつれて、トラックの複雑性と大きさも増加することができる。すなわち、任意の時間的レベルを有するサンプル(又は、任意の時間的レベルに連関したトラック)が直下の時間的レベルを有するトラックに比べて2倍のフレームレート(2倍のフレーム数)を有すると、再生しようとするトラックの時間的レベルが高くなるほど、再生のための複雑性は数倍に増加することができる。
【0524】
したがって、滑らかで漸進的な再生のためには、各トラックのフレームレートの差異に対する制限が必要であり得る。再生のために、如何なるトラックを選択しても、各トラック内の二つの互いに異なるフレーム間の距離(すなわち、結合時間差)が同一でなければならないという制限は、滑らかで漸進的な再生のための理想的な条件に該当することができる。しかし、この条件は、理想的な状況で発生し得るものであるため、理想的な状況が発生しないおそれのある実際的な状況では、滑らかで漸進的な再生のための現実的な制約条件が必要であり得る。
【0525】
本開示は、再生のためのトラックそれぞれの連続するサンプル(フレーム)間の最小結合時間差が互いに同一であり得るという制約条件を提案する。具体的に、時間的レベルが’第1時間的レベル’と’第1時間的レベルより大きいレベル値を有する第2時間的レベル’を含むと仮定すれば、’第2時間的レベル内の連続するサンプル間の最小結合時間差’は、’第1時間的レベル内の連続するサンプル間の最小結合時間差’と同じであるか、或いは’第1時間的レベル内の連続するサンプル間の最小結合時間差’より大きいことができる。すなわち、’第2時間的レベル内の連続するサンプル間の最小結合時間差’は、’第1時間的レベル内の連続するサンプル間の最小結合時間差’以上であり得る。
【0526】
このような制約条件が適用されると、相対的に低い値を有する時間的レベルに比べて相対的に高い値を有する時間的レベルに非常に多い数のフレームが含まれることを防止することができるので、再生のための複雑性の増加が低下して、滑らかで漸進的な再生が可能となる。
【0527】
3.第3実施例
【0528】
第3実施例は、第1実施例及び/又は第2実施例に基づいて、時間的レベルに対する情報の重複シグナリングを防止する実施例である。
【0529】
前述したように、サンプルグループ(又は、サンプルグループに対する情報)は、ジオメトリデータユニットを含むトラックに存在することができ、時間的レベルに対する情報は、サンプルグループ(又は、サンプルグループに対する情報)を含むトラックのサンプルエントリに存在することができる。すなわち、時間的レベルに対する情報は、ジオメトリトラックを含むトラックにのみ存在することができる。また、アトリビュートトラック内のサンプルは、それらに連関したジオメトリトラックとの関係に基づいて推論できる。よって、ジオメトリトラックを含まないトラックに対しても時間的レベルに対する情報をシグナリングすることは、重複シグナリングの問題を発生させることができる。
【0530】
次のシンタックス構造は、第3実施例によるシンタックス構造である。
【0531】
aligned(8) class GPCCDecoderConfigurationRecord {
【0532】
unsigned int(8) configurationVersion=1;
【0533】
unsigned int(8) profile_idc;
【0534】
unsigned int(24) profile_compatibility_flags;
【0535】
unsigned int(1) multiple_temporal_level_tracks_flag;
【0536】
unsigned int(1) frame_rate_present_flag;
【0537】
unsigned int(3) num_temporal_levels;
【0538】
bit(3) reserved = 0;
【0539】
for(i=0; i<num_temporal_levels; i++){
【0540】
unsigned int(8) level_idc;
【0541】
unsigned int(16) temporal_level_id;
【0542】
if (frame_rate_present_flag)
【0543】
unsigned int(16) frame_rate;
【0544】
}
【0545】
unsigned int(8) numOfSetupUnits;
【0546】
for (i=0; i<numOfSetupUnits; i++) {
【0547】
tlv_encapsulation setupUnit; //as defined in ISO/IEC 23090-9
【0548】
}
【0549】
//additional fields
【0550】
}
【0551】
上記のシンタックス構造において、multiple_temporal_level_tracks_flagは、時間的レベルに対する情報に含まれるシンタックス要素であって、G-PCCファイル内にマルチプル時間的レベルトラックが存在するか否かを示すことができる。例えば、multiple_temporal_level_tracks_flagの値が第1値(例えば、1)と同じである場合に、これは、G-PCCビットストリームフレームがマルチプル時間的レベルトラックにグループ化されることを示すことができ、multiple_temporal_level_tracks_flagの値が第2値(例えば、2)と同じである場合に、これは、全ての時間的レベルサンプルが単一のトラックに存在することを示すことができる。’現在トラックが運搬するコンポーネントのタイプ(gpcc_data)がアトリビュートである場合’及び/又は’現在トラックが所定のサンプルエントリタイプ(例えば、’gpc1’及び/又は’gpcg’)を有するトラックである場合’に、multiple_temporal_level_tracks_flagはシグナリングされないことができる。この場合、multiple_temporal_level_tracks_flagの値は、現在トラックが参照するジオメトリトラック内の対応するシンタックス要素(時間的レベルに対する情報)と同一であり得る。
【0552】
frame_rate_present_flagは、フレームレート存在情報であって、その意味は上述した通りである。’現在トラックが運搬するコンポーネントのタイプ(gpcc_data)がアトリビュートである場合’及び/又は’現在トラックが所定のサンプルエントリタイプ(例えば、’gpc1’及び/又は’gpcg’)を有するトラックである場合’に、frame_rate_present_flagはシグナリングされないことができる。この場合、frame_rate_present_flagの値は、現在トラックが参照するジオメトリトラック内の対応するシンタックス要素(時間的レベルに対する情報)と同一であり得る。
【0553】
num_temporal_levelsは、個数情報であって、G-PCCビットストリームフレームがグループ化された時間的レベルの最大個数を示すことができる。時間的レベルに対する情報が利用可能ではないか、或いは全てのフレームが単一の時間的レベルでシグナリングされる場合に、num_temporal_levelsの値は1に設定できる。num_temporal_levelsの最小値は1であり得る。’現在トラックが運搬するコンポーネントのタイプ(gpcc_data)がアトリビュートである場合’及び/又は’現在トラックが所定のサンプルエントリタイプ(例えば、’gpcc1’及び/又は’gpcg’)を有するトラックである場合’に、num_temporal_levelsはシグナリングされないことができる。この場合、num_temporal_levelsの値は、現在トラックが参照するジオメトリトラック内の対応するシンタックス要素(時間的レベルに対する情報)と同一であり得る。
【0554】
図40及び
図41は、重複シグナリングの問題を防止することが可能な方法に対するフローチャートである。
【0555】
図40を参照すると、伝送装置10、1500は、現在トラックが運搬するコンポーネントのタイプ(現在トラックのコンポーネントのタイプ)を判断することができる(S4010)。コンポーネントのタイプは、gpcc_typeの値と下記表4によって判断できる。
【0556】
【0557】
現在トラックが運搬するコンポーネントのタイプがアトリビュート(又は、アトリビュートデータ)である場合に(gpcc_type==4)、伝送装置10、1500は、時間的レベルに対する情報を含ませないことができる(S4020)。すなわち、現在トラックが運搬するコンポーネントのタイプがアトリビュートである場合に、伝送装置10、1500は、時間的レベルに対する情報をシグナリングしないことができる。この場合に、multiple_temporal_level_tracks_flag、frame_rate_present_flag及び/又はframe_rate_present_flagのうちの一つ以上の値は、現在トラックが参照するジオメトリトラック内の対応するシンタックス要素(時間的レベルに対する情報)と同一であり得る。これとは異なり、現在トラックが運搬するコンポーネントのタイプがアトリビュートである場合に、伝送装置10、1500は、時間的レベルに対する情報を含ませることができる(S4030)。すなわち、現在トラックが運搬するコンポーネントのタイプがアトリビュートである場合に、伝送装置10、1500は、時間的レベルに対する情報をシグナリングすることができる。S4010過程~S4030過程は、カプセル化処理部13、カプセル化処理部1525及び/又はシグナリング処理部1510のうちの一つ以上によって行われることができる。
【0558】
実施例によって、S4010過程で、伝送装置10、1500は、現在トラックのサンプルエントリのタイプをさらに判断することができる。現在トラックが運搬するコンポーネントのタイプがアトリビュートであり且つ現在トラックが所定のサンプルエントリタイプ(例えば、’gpc1’及び/又は’gpcg’)を有するトラックである場合に、伝送装置10、1500は、時間的レベルに対する情報を含ませない(シグナリングしない)ことができる(S4020)。この場合、multiple_temporal_level_tracks_flag、frame_rate_present_flag及び/又はframe_rate_present_flagのうちの一つ以上の値は、現在トラックが参照するジオメトリトラック内の対応するシンタックス要素(時間的レベルに対する情報)と同一であり得る。これと異なり、現在トラックが運搬するコンポーネントのタイプがアトリビュートではないか、或いは現在トラックが所定のサンプルエントリタイプ(例えば、’gpc1’及び/又は’gpcg’)を有するトラックではない場合に、伝送装置10、1500は、時間的レベルに対する情報を含ませる(シグナリングする)ことができる(S4030)。
【0559】
図41を参照すると、受信装置20、1700は、現在トラックが運搬するコンポーネントのタイプを判断することができる(S4110)。コンポーネントのタイプは、gpcc_typeの値と前記表4によって判断できる。
【0560】
現在トラックが運搬するコンポーネントのタイプがアトリビュートである場合に、受信装置20、1700は、時間的レベルに関する情報を取得しないことができる(S4120)。この場合、multiple_temporal_level_tracks_flag、frame_rate_present_flag及び/又はframe_rate_present_flagのうちの一つ以上の値は、現在トラックが参照するジオメトリトラック内の対応するシンタックス要素(時間的レベルに対する情報)と同一に設定されることができる。これとは異なり、現在トラックが運搬するコンポーネントのタイプがアトリビュートではない場合に、受信装置20、1700は、時間的レベルに対する情報を取得することができる(S4130)。S4110過程~S4130過程は、デカプセル化処理部22、デカプセル化処理部1710及び/又はシグナリング処理部1715のうちの一つ以上によって行われることができる。
【0561】
実施例によって、S4110過程で、受信装置20、1700は、現在トラックのサンプルエントリのタイプをさらに判断することができる。現在トラックが運搬するコンポーネントのタイプがアトリビュートであり且つ現在トラックが所定のサンプルエントリタイプ(例えば、’gpc1’及び/又は’gpcg’)を有するトラックである場合に、受信装置20、1700は、時間的レベルに対する情報を取得しないことができる(S4120)。この場合に、multiple_temporal_level_tracks_flag、frame_rate_present_flag及び/又はframe_rate_present_flagのうちの一つ以上の値は、現在トラックが参照するジオメトリトラック内の対応するシンタックス要素(時間的レベルに対する情報)と同一に設定されることができる。これとは異なり、現在トラックが運搬するコンポーネントのタイプがアトリビュートではないか、或いは現在トラックが所定のサンプルエントリタイプ(例えば、’gpc1’及び/又は’gpcg’)を有するトラックでない場合に、受信装置20、1700は、時間的レベルに対する情報を取得することができる(S4130)。
【0562】
本開示の範囲は、多様な実施例の方法による動作が装置又はコンピュータ上で実行されるようにするソフトウェア又はマシン-実行可能な命令(例えば、オペレーティングシステム、アプリケーション、ファームウェア(firmware)、プログラムなど)、及びこのようなソフトウェア又は命令などが保存されて装置又はコンピュータ上で実行可能な非一時的コンピュータ可読媒体(non-transitory computer-readable medium)を含む。
【0563】
〔産業上の利用可能性〕
本開示による実施例は、ポイントクラウドコンテンツの提供に利用可能である。また、本開示による実施例は、ポイントクラウドデータの符号化/復号化に利用可能である。
【0564】
〔国際出願時の特許請求の範囲〕
〔1〕
ポイントクラウドデータの受信装置で行われる方法であって、
前記ポイントクラウドデータを含むG-PCC(geometry-based point cloud compression)ファイルを取得するステップ-前記G-PCCファイルは、前記G-PCCファイル内のサンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報、及び前記時間的レベルに対する情報を含むステップと;
前記サンプルグループに対する情報及び前記時間的レベルに対する情報に基づいて、前記G-PCCファイル内のサンプルの中から対象(target)時間的レベルに属する一つ以上のサンプルを抽出するステップと;を含んでなる、方法。
〔2〕
前記時間的レベルに対する情報は、前記時間的レベルの個数を示す個数情報、及び前記時間的レベルを識別するための時間的レベル識別情報を含む、〔1〕に記載の方法。
〔3〕
前記個数情報は、前記G-PCCファイル内のサンプルの時間スケーラビリティ如何を更に示すことを特徴とする、〔2〕に記載の方法。
〔4〕
前記個数情報は、
前記個数情報の値が第1値より大きいことに基づいて前記時間的レベルの個数を示し、
前記個数情報の値が前記第1値以下であることに基づいて前記G-PCCファイル内のサンプルの時間スケーラビリティ有無を示す、〔3〕に記載の方法。
〔5〕
前記サンプルグループに対する情報は、前記G-PCCファイルがマルチプル(multiple)トラックで運搬されることに基づいて、前記マルチプルトラックのうち、前記ポイントクラウドデータのジオメトリ(Geometry)データを運搬するジオメトリトラックに存在する、〔1〕に記載の方法。
〔6〕
アトリビュート(attribute)トラックに存在する一つ以上のサンプルの時間的レベルは、前記ジオメトリトラック内の対応するサンプルの時間的レベルと同一であり、
前記アトリビュートトラックは、前記マルチプルトラックのうち、前記ポイントクラウドデータのアトリビュートデータを運搬するトラックである、〔5〕に記載の方法。
〔7〕
前記時間的レベルに対する情報は、前記時間的レベルのフレームレート(frame rate)を示すフレームレート情報を含み、
前記抽出するステップは、前記G-PCCファイル内のサンプルのうち、対象フレーム速度に対応する一つ以上のサンプルを抽出する、〔1〕に記載の方法。
〔8〕
前記時間的レベルに対する情報は、前記フレームレート情報が存在するか否かを示すフレームレート存在情報を含み、
前記フレームレート情報は、前記フレームレート存在情報が前記フレームレート情報の存在を示すことに基づいて前記時間的レベルに対する情報に含まれる、〔7〕に記載の方法。
〔9〕
前記時間的レベルは、
第1時間的レベル、及び前記第1時間的レベルより大きいレベル値を有する第2時間的レベルを含み、
前記第2時間的レベル内の連続するサンプル間の最小結合時間差(smallest composition time difference)は、前記第1時間的レベル内の連続するサンプル間の最小結合時間差と同一であるか、或いは、前記第1時間的レベル内の連続するサンプル間の最小結合時間差より大きい、〔7〕に記載の方法。
〔10〕
前記時間的レベルに対する情報は、現在トラック(current track)が運搬するコンポーネント(component)のタイプが前記ポイントクラウドデータのアトリビュートであることに基づいて、前記現在トラックが参照するジオメトリトラック内の対応する情報と同じ値を有する、〔1〕に記載の方法。
〔11〕
前記時間的レベルに対する情報は、前記コンポーネントのタイプが前記ポイントクラウドデータのアトリビュートであり且つ前記現在トラックのサンプルエントリ(sample entry)のタイプが所定のサンプルエントリタイプであることに基づいて、前記現在トラックが参照するジオメトリトラック内の対応する情報と同じ値を有する、〔10〕に記載の方法。
〔12〕
前記所定のサンプルエントリタイプは、gpc1サンプルエントリタイプ又はgpcgサンプルエントリタイプのうちの一つ以上を含む、〔11〕に記載の方法。
〔13〕
ポイントクラウドデータの受信装置であって、
メモリと;
少なくとも一つのプロセッサと;を備えてなり、
前記少なくとも一つのプロセッサは、
前記ポイントクラウドデータを含むG-PCC(geometry-based point cloud compression)ファイルを取得し-前記G-PCCファイルは、前記G-PCCファイル内のサンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報、及び前記時間的レベルに対する情報を含むステップ、
前記サンプルグループに対する情報及び前記時間的レベルに対する情報に基づいて、前記G-PCCファイル内のサンプルの中から対象(target)時間的レベルに属する一つ以上のサンプルを抽出するステップを含む、受信装置。
〔14〕
ポイントクラウドデータの伝送装置で行われる方法であって、
G-PCC(geometry-based point cloud compression)サンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報を生成するステップと、
前記サンプルグループに対する情報、前記時間的レベルに対する情報及び前記ポイントクラウドデータを含めてG-PCCファイルを生成するステップと、を含む、方法。
〔15〕
ポイントクラウドデータの伝送装置であって、
メモリと;
少なくとも一つのプロセッサと;を備えてなり、
前記少なくとも一つのプロセッサは、
G-PCC(geometry-based point cloud compression)サンプルが一つ以上の時間的レベルに基づいてグループ化されたサンプルグループに対する情報を生成し、前記サンプルグループに対する情報、前記時間的レベルに対する情報及び前記ポイントクラウドデータを含めてG-PCCファイルを生成する、伝送装置。
【国際調査報告】