(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024159914
(43)【公開日】2024-11-08
(54)【発明の名称】ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置およびポイントクラウドデータ受信方法
(51)【国際特許分類】
H04N 19/70 20140101AFI20241031BHJP
H04N 19/597 20140101ALI20241031BHJP
H04N 21/235 20110101ALI20241031BHJP
H04N 21/236 20110101ALI20241031BHJP
【FI】
H04N19/70
H04N19/597
H04N21/235
H04N21/236
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2024140997
(22)【出願日】2024-08-22
(62)【分割の表示】P 2023183920の分割
【原出願日】2020-10-07
(31)【優先権主張番号】62/911,939
(32)【優先日】2019-10-07
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/959,130
(32)【優先日】2020-01-09
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/990,434
(32)【優先日】2020-03-16
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502032105
【氏名又は名称】エルジー エレクトロニクス インコーポレイティド
【氏名又は名称原語表記】LG ELECTRONICS INC.
【住所又は居所原語表記】128, Yeoui-daero, Yeongdeungpo-gu, 07336 Seoul,Republic of Korea
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100165191
【弁理士】
【氏名又は名称】河合 章
(74)【代理人】
【識別番号】100114018
【弁理士】
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100159259
【弁理士】
【氏名又は名称】竹本 実
(72)【発明者】
【氏名】オ ソチン
(72)【発明者】
【氏名】パク ユソン
(57)【要約】
【課題】ポイントクラウドデータ送信方法の提供。
【解決手段】実施例によるポイントクラウドデータ送信方法は、ポイントクラウドデータを符号化するステップ、およびポイントクラウドデータとシグナリング情報を含むビットストリームを送信するステップを含む。実施例によるポイントクラウドデータ受信方法は、ポイントクラウドデータとシグナリング情報を含むビットストリームを受信するステップ、ポイントクラウドデータを復号するステップ、および復号されたポイントクラウドデータをレンダリングするステップを含む。
【選択図】
図43
【特許請求の範囲】
【請求項1】
ポイントクラウドデータを符号化する方法であって、
前記ポイントクラウドデータを符号化するステップと、
前記符号化されたポイントクラウドデータを含むビットストリームをファイル内にカプセル化するステップと、を含み、
前記符号化されたポイントクラウドデータは、符号化されたジオメトリデータ、符号化された特質データ及び符号化された占有マップデータを含み、
前記ファイルは、複数のトラックを含み、
前記複数のトラックのそれぞれは、サンプルエントリーとサンプルとを含み、
前記複数のトラックの少なくとも1つの中のサンプルは、前記符号化されたジオメトリデータ、前記符号化された特質データ及び前記符号化された占有マップデータの1つを含み、
前記ファイルは、シグナリング情報をさらに含み、
前記シグナリング情報は、前記ポイントクラウドデータのためのビューポートに関する情報を含み、
前記ビューポートに関する情報は、少なくとも、初期ビューポートに関する情報、又は時間経過とともに変化する動的ビューポートに関する情報を含み、
前記複数のトラックの1つのトラックは、タイムド-メタデータトラックであり、
前記タイムド-メタデータトラックのサンプルエントリータイプは、前記タイムド-メタデータトラックが前記ビューポートに関する情報用であることを示すための値を有し、
前記初期ビューポートに関する情報は、前記タイムド-メタデータトラックのサンプルエントリーを介して伝送され、
前記動的ビューポートに関する情報は、前記タイムド-メタデータトラックのサンプルを介して伝送される、方法。
【請求項2】
前記ポイントクラウドデータは、V-PCC(video based point cloud compression)方式によって符号化される、請求項1に記載の方法。
【請求項3】
前記ビューポートに関する情報は、カメラの位置情報を含む、請求項1に記載の方法。
【請求項4】
前記ビューポートに関する情報は、前記カメラの方向情報をさらに含む、請求項3に記載の方法。
【請求項5】
前記ビューポートに関する情報は、ビューポートを生成するための水平FOV(field of view)情報と垂直FOV情報をさらに含む、請求項3に記載の方法。
【請求項6】
ポイントクラウドデータを符号化するための装置であって、
前記ポイントクラウドデータを符号化するためのエンコーダと、
前記符号化されたポイントクラウドデータを含むビットストリームをファイル内にカプセル化するためのカプセル化部と、を備え、
前記符号化されたポイントクラウドデータは、符号化されたジオメトリデータ、符号化された特質データ及び符号化された占有マップデータを含み、
前記ファイルは、複数のトラックを含み、
前記複数のトラックのそれぞれは、サンプルエントリーとサンプルとを含み、
前記複数のトラックの少なくとも1つの中のサンプルは、前記符号化されたジオメトリデータ、前記符号化された特質データ及び前記符号化された占有マップデータの1つを含み、
前記ファイルは、シグナリング情報をさらに含み、
前記シグナリング情報は、前記ポイントクラウドデータのためのビューポートに関する情報を含み、
前記ビューポートに関する情報は、少なくとも、初期ビューポートに関する情報、又は時間経過とともに変化する動的ビューポートに関する情報を含み、
前記複数のトラックの1つのトラックは、タイムド-メタデータトラックであり、
前記タイムド-メタデータトラックのサンプルエントリータイプは、前記タイムド-メタデータトラックが前記ビューポートに関する情報用であることを示すための値を有し、
前記初期ビューポートに関する情報は、前記タイムド-メタデータトラックのサンプルエントリーを介して伝送され、
前記動的ビューポートに関する情報は、前記タイムド-メタデータトラックのサンプルを介して伝送される、装置。
【請求項7】
前記ポイントクラウドデータは、V-PCC(video based point cloud compression)方式によって符号化される、請求項6に記載の装置。
【請求項8】
前記ビューポートに関する情報は、カメラの位置情報を含む、請求項6に記載の装置。
【請求項9】
前記ビューポートに関する情報は、前記カメラの方向情報をさらに含む、請求項8に記載の装置。
【請求項10】
前記ビューポートに関する情報は、ビューポートを生成するための水平FOV(field of view)情報と垂直FOV情報をさらに含む、請求項8に記載の装置。
【請求項11】
ポイントクラウドデータを復号する方法であって、
ファイルを符号化されたポイントクラウドデータを含むビットストリームにデカプセル化するステップであって、
前記符号化されたポイントクラウドデータは、符号化されたジオメトリデータ、符号化された特質データ及び符号化された占有マップデータを含み、
前記ファイルは、複数のトラックを含み、
前記複数のトラックのそれぞれは、サンプルエントリーとサンプルとを含み、
前記複数のトラックの少なくとも1つの中のサンプルは、前記符号化されたジオメトリデータ、前記符号化された特質データ及び前記符号化された占有マップデータの1つを含み、
前記ファイルは、シグナリング情報をさらに含み、
前記シグナリング情報は、前記ポイントクラウドデータのためのビューポートに関する情報を含む、ステップと、
前記符号化されたポイントクラウドデータを復号するステップと、を含み、
前記ビューポートに関する情報は、少なくとも、初期ビューポートに関する情報、又は時間経過とともに変化する動的ビューポートに関する情報を含み、
前記複数のトラックの1つのトラックは、タイムド-メタデータトラックであり、
前記タイムド-メタデータトラックのサンプルエントリータイプは、前記タイムド-メタデータトラックが前記ビューポートに関する情報用であることを示すための値を有し、
前記初期ビューポートに関する情報は、前記タイムド-メタデータトラックのサンプルエントリーを介して伝送され、
前記動的ビューポートに関する情報は、前記タイムド-メタデータトラックのサンプルを介して伝送される、方法。
【請求項12】
前記ビューポートに関する情報は、カメラの位置情報を含む、請求項11に記載の方法。
【請求項13】
前記ビューポートに関する情報は、前記カメラの方向情報をさらに含む、請求項12に記載の方法。
【請求項14】
前記ビューポートに関する情報は、ビューポートを生成するための水平FOV(field of view)情報と垂直FOV情報をさらに含む、請求項12に記載の方法。
【請求項15】
前記ビューポートに関する情報に基づいて、前記復号されたポイントクラウドデータをレンダリングするステップをさらに含む、請求項11に記載の方法。
【請求項16】
ポイントクラウドデータを復号するための装置であって、
ファイルを符号化されたポイントクラウドデータを含むビットストリームにデカプセル化するためのデカプセル化部であって、
前記符号化されたポイントクラウドデータは、符号化されたジオメトリデータ、符号化された特質データ及び符号化された占有マップデータを含み、
前記ファイルは、複数のトラックを含み、
前記複数のトラックのそれぞれは、サンプルエントリーとサンプルとを含み、
前記複数のトラックの少なくとも1つの中のサンプルは、前記符号化されたジオメトリデータ、前記符号化された特質データ及び前記符号化された占有マップデータの1つを含み、
前記ファイルは、シグナリング情報をさらに含み、
前記シグナリング情報は、前記ポイントクラウドデータのためのビューポートに関する情報を含む、デカプセル化部と、
前記符号化されたポイントクラウドデータを復号するためのデコーダと、を備え、
前記ビューポートに関する情報は、少なくとも、初期ビューポートに関する情報、又は時間経過とともに変化する動的ビューポートに関する情報を含み、
前記複数のトラックの1つのトラックは、タイムド-メタデータトラックであり、
前記タイムド-メタデータトラックのサンプルエントリータイプは、前記タイムド-メタデータトラックが前記ビューポートに関する情報用であることを示すための値を有し、
前記初期ビューポートに関する情報は、前記タイムド-メタデータトラックのサンプルエントリーを介して伝送され、
前記動的ビューポートに関する情報は、前記タイムド-メタデータトラックのサンプルを介して伝送される、装置。
【請求項17】
前記ビューポートに関する情報は、カメラの位置情報を含む、請求項16に記載の装置。
【請求項18】
前記ビューポートに関する情報は、前記カメラの方向情報をさらに含む、請求項17に記載の装置。
【請求項19】
前記ビューポートに関する情報は、ビューポートを生成するための水平FOV(field of view)情報と垂直FOV情報をさらに含む、請求項17に記載の装置。
【請求項20】
前記ビューポートに関する情報に基づいて、前記復号されたポイントクラウドデータをレンダリングするレンダラーをさらに備える、請求項16に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
実施例はユーザにVR(Virtual Reality、仮想現実)、AR(Augmented Reality、増強現実)、MR(Mixed Reality、複合現実)および自律走行サービスなどの様々なサービスを提供するために、ポイントクラウド(Point Cloud)コンテンツを提供する方案を提供する。
【背景技術】
【0002】
ポイントクラウドは3D空間上のポイントの集合である。3D空間上のポイントの量が多く、ポイントクラウドデータの生成が困難であるという問題点がある。
【0003】
ポイントクラウドのデータの送受信のためには、大量の処理量が求められるという問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
実施例に係る技術的課題は、上記した問題点を解決するために、ポイントクラウドを効率的に送受信するためのポイントクラウドデータ送信装置、送信方法、ポイントクラウドデータ受信装置および受信方法を提供することにある。
【0005】
実施例に係る技術的課題は、遅延時間(latency)および符号化/復号の複雑度を解決するためのポイントクラウドデータ送信装置、送信方法、ポイントクラウドデータ受信装置および受信方法を提供することにある。
【0006】
実施例に係る技術的課題は、ポイントクラウドデータのビューポートに関する情報をシグナルすることで、ユーザに最適化されたポイントクラウドコンテンツを提供するためのポイントクラウドデータ送信装置、送信方法、ポイントクラウドデータ受信装置および受信方法を提供することにある。
【0007】
実施例に係る技術的課題は、V-PCCビットストリーム内のデータ処理およびレンダリングのためのビューポート情報、推薦(recommended)ビューポート情報、初期(initial)ビューイングオリエンテーション(即ち、視点)情報をビットストリーム内へ送信できるようにして、ユーザに最適化されたポイントクラウドコンテンツを提供するためのポイントクラウドデータ送信装置、送信方法、ポイントクラウドデータ受信装置および受信方法を提供することにある。
【0008】
但し、上述した技術的課題のみに制限されず、本文書の全ての内容に基づいて当業者が導き出される他の技術的課題にも実施例の権利範囲を拡張することができる。
【課題を解決するための手段】
【0009】
上述した目的および他の利点を達成するために、実施例に係るポイントクラウドデータ送信方法は、ポイントクラウドデータを符号化するステップ、および前記ポイントクラウドデータとシグナリング情報を含むビットストリームを送信するステップを含んでもよい。
【0010】
実施例によれば、前記ポイントクラウドデータは、ビデオベースポイントクラウド圧縮(V-PCC)方式によって符号化されるジオメトリデータ、特質データ、占有マップデータを含んでもよい。
【0011】
実施例によれば、前記シグナリング情報は、カメラまたはユーザの位置およびオリエンテーションに応じて決められるビューポートのためのビューポートに関する情報を含んでもよい。
【0012】
実施例によれば、前記ビューポートに関する情報は、前記カメラまたはユーザの3D空間上の座標情報、前記カメラまたはユーザが見ている方向を示す方向ベクトル情報、前記カメラまたはユーザの上方を示す上ベクトル情報、前記カメラまたはユーザの右側を示す右ベクトル情報のうちの少なくとも1つを含んでもよい。
【0013】
実施例によれば、前記ビューポートに関する情報は、前記ビューポートを生成するための水平フィールドオブビュー(FOV)情報と垂直FOV情報をさらに含んでもよい。
【0014】
実施例によれば、ポイントクラウドデータ送信装置は、ポイントクラウドデータを符号化するエンコーダ、および前記ポイントクラウドデータとシグナリング情報を含むビットストリームを送信する送信部を含んでもよい。
【0015】
実施例によれば、前記ポイントクラウドデータは、ビデオベースポイントクラウド圧縮(V-PCC)方式によって符号化されるジオメトリデータ、特質データ、占有マップデータを含んでもよい。
【0016】
実施例によれば、前記シグナリング情報は、カメラまたはユーザの位置およびオリエンテーションに応じて決められるビューポートのためのビューポートに関する情報を含んでもよい。
【0017】
実施例によれば、前記ビューポートに関する情報は、前記カメラまたはユーザの3D空間上の座標情報、前記カメラまたはユーザが見ている方向を示す方向ベクトル情報、前記カメラまたはユーザの上方を示す上ベクトル情報、前記カメラまたはユーザの右側を示す右ベクトル情報のうちの少なくとも1つを含んでもよい。
【0018】
実施例によれば、前記ビューポートに関する情報は、前記ビューポートを生成するための水平FOV情報と垂直FOV情報をさらに含んでもよい。
【0019】
実施例によれば、ポイントクラウドデータ受信方法は、ポイントクラウドデータとシグナリング情報を含むビットストリームを受信するステップ、前記ポイントクラウドデータを復号するステップ、および前記復号されたポイントクラウドデータをレンダリングするステップを含んでもよい。
【0020】
実施例によれば、前記シグナリング情報は、カメラまたはユーザの位置およびオリエンテーションに応じて決められるビューポートのためのビューポートに関する情報を含んでもよい。
【0021】
実施例によれば、前記ビューポートに関する情報は、前記カメラまたはユーザの3D空間上の座標情報、前記カメラまたはユーザが見ている方向を示す方向ベクトル情報、前記カメラまたはユーザの上方を示す上ベクトル情報、前記カメラまたはユーザの右側を示す右ベクトル情報のうちの少なくとも1つを含んでもよい。
【0022】
実施例によれば、前記ビューポートに関する情報は、前記ビューポートを生成するための水平FOV情報と垂直FOV情報をさらに含んでもよい。
【0023】
実施例によれば、前記復号されたポイントクラウドデータは、前記ビューポートに関する情報に基づいてレンダリングされてもよい。
【0024】
実施例によれば、ポイントクラウドデータ受信装置は、ポイントクラウドデータとシグナリング情報を含むビットストリームを受信する受信部、前記ポイントクラウドデータを復号するデコーダ、および前記復号されたポイントクラウドデータをレンダリングするレンダラーを含んでもよい。
【0025】
実施例によれば、前記シグナリング情報は、カメラまたはユーザの位置およびオリエンテーションに応じて決められるビューポートのためのビューポートに関する情報を含んでもよい。
【0026】
実施例によれば、前記ビューポートに関する情報は、前記カメラまたはユーザの3D空間上の座標情報、前記カメラまたはユーザが見ている方向を示す方向ベクトル情報、前記カメラまたはユーザの上方を示す上ベクトル情報、前記カメラまたはユーザの右側を示す右ベクトル情報のうちの少なくとも1つを含んでもよい。
【0027】
実施例によれば、前記ビューポートに関する情報は、前記ビューポートを生成するための水平FOV情報と垂直FOV情報をさらに含んでもよい。
【0028】
実施例によれば、前記レンダラーは、前記復号されたポイントクラウドデータを前記ビューポートに関する情報に基づいてレンダリングしてもよい。
【発明の効果】
【0029】
実施例によるポイントクラウドデータ送信方法、送信装置、ポイントクラウドデータ受信方法、受信装置は、良質のポイントクラウドサービスを提供することができる。
【0030】
実施例によるポイントクラウドデータ送信方法、送信装置、ポイントクラウドデータ受信方法、受信装置は、様々なビデオコーデック方式を達成することができる。
【0031】
実施例によるポイントクラウドデータ送信方法、送信装置、ポイントクラウドデータ受信方法、受信装置は、自立走行サービスなどの汎用的なポイントクラウドコンテンツを提供することができる。
【0032】
実施例によるポイントクラウドデータ送信方法、送信装置、ポイントクラウドデータ受信方法、受信装置は、V-PCCビットストリームを構成し、ファイルを送信および受信して格納できるようにすることで、最適なポイントクラウドコンテンツサービスを提供することができる。
【0033】
実施例によるポイントクラウドデータ送信方法、送信装置、ポイントクラウドデータ受信方法、受信装置は、V-PCCビットストリーム内のデータ処理およびレンダリングのためのメタデータをV-PCCビットストリーム内に含ませて送信および受信できるようにすることで、最適なポイントクラウドコンテンツサービスを提供することができる。
【0034】
実施例によるポイントクラウドデータ送信方法、送信装置、ポイントクラウドデータ受信方法、受信装置は、プレーヤーなどにおいてユーザビューポートなどによってポイントクラウド客体/コンテンツの空間もしくは部分のアクセスを可能にすることで、ユーザのビューポートによってポイントクラウドビットストリームに効率的に接近して処理できるという効果を提供することができる。
【0035】
実施例によるポイントクラウドデータ送信方法、送信装置、ポイントクラウドデータ受信方法、受信装置は、ポイントクラウドコンテンツへの部分アクセスおよび/または空間アクセスのためのバウンディングボックスおよびそのためのシグナリング情報を提供することで、受信側においてプレーヤーまたはユーザ環境を考慮して、ポイントクラウドコンテンツを様々にアクセスできるという効果を提供することができる。
【0036】
実施例によるポイントクラウドデータ送信方法および送信装置は、ユーザのビューポートに応じてポイントクラウドコンテンツの空間または部分のアクセスを支援するためのポイントクラウドコンテンツの3D領域情報と、これに関連するビデオまたはアトラスフレーム上の2D領域に関連するメタデータを提供することができる。
【0037】
実施例によるポイントクラウドデータ送信方法および送信装置は、ポイントクラウドビットストリーム内のポイントクラウドの3D領域情報と、これに関連するビデオまたはアトラスフレーム上の2D領域に関連する情報シグナリングなどを処理することができる。
【0038】
実施例によるポイントクラウドデータ受信方法および受信装置は、ファイル内のポイントクラウドの3D領域情報と、これに関連するビデオまたはアトラスフレーム上の2D領域に関連する情報の格納およびシグナリングなどに基づいて、ポイントクラウドコンテンツに効率的にアクセスすることができる。
【0039】
実施例によるポイントクラウドデータ受信方法および受信装置は、ファイル内イメージアイテムに関連するポイントクラウドの3D領域情報と、これに関連するビデオまたはアトラスフレーム上の2D領域に関連する情報に基づいて、ユーザ環境を考慮したポイントクラウドコンテンツを提供することができる。
【図面の簡単な説明】
【0040】
図面は実施例をさらに理解するために添付され、実施例に関する説明と共に実施例を示す。
【0041】
【
図1】実施例によるポイントクラウドコンテンツを提供するための送信/受信システム構造の一例を示す。
【
図2】実施例によるポイントクラウドデータのキャプチャーの一例を示す。
【
図3】実施例によるポイントクラウドおよびジオメトリ、テクスチャイメージの一例を示す。
【
図4】実施例によるV-PCC符号化処理の一例を示す。
【
図5】実施例によるサーフェス(Surface)の接平面(tangent plane)および法線ベクトル(normal vector)の一例を示す。
【
図6】実施例によるポイントクラウドのバウンディングボックス(bounding box)の一例を示す。
【
図7】実施例による占有マップ(occupancy map)の個別パッチ(patch)の位置決めの一例を示す。
【
図8】実施例によるノーマル(normal)、タンジェント(tangent)、バイタンジェント(bitangent)軸の関係の一例を示す。
【
図9】実施例によるプロジェクションモードの最小モードおよび最大モードの構成の一例を示す。
【
図11】実施例による隣接点のカラー(color)値を用いた復色(recoloring)の一例を示す。
【
図12】実施例によるプッシュ-プルバックグラウンドフィリング(push-pull background filling)の一例を示す。
【
図13】実施例による4*4サイズのブロック(block)に対して可能なトラバーサルオーダー(traversal order)の一例を示す。
【
図14】実施例によるベストトラバーサルオーダーの一例を示す。
【
図15】実施例による2Dビデオ/イメージエンコーダ(2D video/image Encoder)の一例を示す。
【
図16】実施例によるV-PCC復号プロセス(decoding process)の一例を示す。
【
図17】実施例による2Dビデオ/イメージデコーダ(2D Video/Image Decoder)の一例を示す。
【
図18】実施例による送信装置の動作の流れの一例を示す。
【
図19】実施例による受信装置の動作の流れの一例を示す。
【
図20】実施例によるV-PCCベースのポイントクラウドデータの格納およびストリーミングのためのアーキテクチャの一例を示す。
【
図21】実施例によるポイントクラウドデータの格納および送信装置の構成の一例を示す。
【
図22】実施例によるポイントクラウドデータ受信装置の構成の一例を示す。
【
図23】実施例によるポイントクラウドデータの送受信方法/装置と連動可能な構造の一例を示す。
【
図24】実施例によるV-PCCビットストリーム構造の一例を示す。
【
図25】実施例によるマルチプルトラックV-PCCファイルの構造を視覚化した図である。
【
図26】実施例によるデータタイプ(data_type)に割り当てられるPCCデータのトラックタイプの一例を示す。
【
図27】実施例による特質タイプ(attribute_type)に割り当てられる特質タイプの一例を示す。
【
図28】実施例によるプロファイルティアレベル(profile_tier_level)()のシンタックス構造の一例を示す。
【
図29】実施例による参照されたトラック内のPCCデータタイプの一例を示す。
【
図32】実施例によるパットフレームを含む複数のタイルに分割する一例を示す。
【
図33】実施例による各V-PCCユニットのシンタックス構造の一例を示す。
【
図34】実施例によるV-PCCユニットヘッダのシンタックス構造の一例を示す。
【
図35】実施例によるvpcc_unit_typeフィールドに割り当てられるV-PCCユニットタイプの一例を示す。
【
図36】実施例によるpcm_separate_video_data(bitCount)のシンタックス構造の一例を示す。
【
図37】実施例によるV-PCCユニットペイロードのシンタックス構造の一例を示す。
【
図38】実施例によるV-PCCユニットペイロードに含まれるシーケンスパラメータセット()のシンタックス構造の一例を示す。
【
図39】実施例によるパッチデータグループのシンタックス構造の一例を示す。
【
図40】実施例によるパッチデータグループのpdg_unit_typeフィールドに割り当てられたパッチデータグループのタイプの一例を示す。
【
図41】実施例によるパッチデータグループユニットペイロードのシンタックス構造の一例を示す。
【
図42】実施例によるSupplemental Enhancement Information(SEI)メッセージ(sei_message())のシンタックス構造の一例を示す。
【
図43】本明細書の他の実施例によるV-PCCビットストリーム構造の一例を示す。
【
図44】実施例によるV-PCCビットストリーム内のサンプルストリームV-PCCユニットによって伝送されるデータの一例を示す。
【
図45】実施例によるV-PCCビットストリームに含まれるサンプルストリームV-PCCヘッダのシンタックス構造の一例を示す。
【
図46】実施例によるサンプルストリームV-PCCユニットのシンタックス構造の一例を示す。
【
図47】実施例によるV-PCCユニットのシンタックス構造の一例を示す。
【
図48】実施例によるV-PCCユニットヘッダのシンタックス構造の一例を示す。
【
図49】実施例によるvuh_unit_typeフィールドに割り当てられるV-PCCユニットのタイプの一例を示す。
【
図50】実施例によるV-PCCユニットペイロード(vpcc_unit_payload())のシンタックス構造の一例を示す。
【
図51】実施例によるアトラスサブストリーム構造の一例を示す。
【
図52】実施例によるアトラスサブストリームに含まれるサンプルストリームNALヘッダ(sample_stream_nal_header())のシンタックス構造の一例を示す。
【
図53】実施例によるサンプルストリームNALユニットのシンタックス構造の一例を示す。
【
図54】実施例によるSEIメッセージペイロード(sei_payload())のシンタックス構造の一例を示す。
【
図55】実施例によるV-PCCサンプルエントリー構造の一例を示す。
【
図56】実施例による仮想カメラとViewInfoStruct情報を用いてビューを生成する一例を示す。
【
図57】実施例によるObjectRenderingInfoStruct()情報を用いてビューを生成する一例を示す。
【
図58】実施例によるnon-timed V-PCCデータをカプセル化する構造の一例を示す。
【
図59】実施例による視錘台(viewing frustum)内のポイントクラウドデータの空間部分がビューポート上において実際にディスプレイされる一例を示す。
【
図60】実施例による視錘台のトップビュー(top view)の一例を示す。
【
図61】実施例による視錘台のサイドビュー(side view)の一例を示す。
【
図62】実施例によるポイントクラウドデータ送信方法の流れを示す。
【
図63】実施例によるポイントクラウドデータ受信方法の流れを示す。
【発明を実施するための形態】
【0042】
以下、添付図面を参照しながら望ましい実施例について具体的に説明する。添付図面を参照した以下の詳細な説明は、実施例によって具現可能な実施例のみを示すというよりは、望ましい実施例を説明するためのものである。以下の詳細な説明は実施例に対する徹底な理解を提供するために細部事項を含む。しかし、かかる細部事項がなくても実施例を実行できることは当業者にとって明らかである。
【0043】
実施例で使用するほとんどの用語は該当分野において広く使用される一般的なものであるが、一部は出願人によって任意に選択されたものであり、その意味は必要によって以下に詳しく説明する。よって、実施例は用語の単純な名称や意味ではなく、用語が意図する意味に基づいて理解されるべきである。
【0044】
図1は、実施例によるポイントクラウドコンテンツを提供するための送信/受信システム構造の一例を示す。
【0045】
本文書では、ユーザに、VR(Virtual Reality、仮想現実)、AR(Augmented Reality、増強現実)、MR(Mixed Reality、混合現実)、および自立走行サービスなどの様々なサービスを提供するために、ポイントクラウドコンテンツを提供する方案を提供する。実施例によるポイントクラウドコンテンツは、客体をポイントによって表現したデータを示し、ポイントクラウド、ポイントクラウドデータ、ポイントクラウドビデオデータ、ポイントクラウドイメージデータなどと呼ぶことがある。
【0046】
実施例によるポイントクラウドデータ送信装置(Transmission device)10000は、ポイントクラウドビデオ取得部(Point Cloud Video Acquisition unit)10001、ポイントクラウドビデオエンコーダ(Point Cloud Video Encoder)10002、ファイル/セグメントカプセル化部10003および/または送信機(Transmitter(or Communication module))10004を含む。実施例による送信装置は、ポイントクラウドビデオ(または、ポイントクラウドコンテンツ)を確保して処理し、送信することができる。実施例によって、送信装置は、固定局(fixed station)、BTS(base transceiver system)、ネットワーク、AI(Artificial Intelligence)機器および/またはシステム、ロボット、AR/VR/XR機器および/またはサーバーなどを含んでもよい。また、実施例によって、送信装置10000は、無線接続技術(例えば、5G NR(New RAT)、LTE(Long Term Evolution))を用いて、基地局および/または他の無線機器と通信を行う機器、ロボット、車両、AR/VR/XR機器、携帯機器、家電、IoT(Internet of Thing)機器、AI機器/サーバーなどを含んでもよい。
【0047】
実施例によるポイントクラウドビデオ取得部(Point Cloud Video Acquisition unit)10001は、ポイントクラウドビデオのキャプチャー、合成または生成プロセスなどによってポイントクラウドビデオを取得する。
【0048】
実施例によるポイントクラウドビデオエンコーダ(Point Cloud Video Encoder)10002は、ポイントクラウドビデオ取得部10001で取得したポイントクラウドビデオデータを符号化する。実施例によって、ポイントクラウドビデオエンコーダ10002は、ポイントクラウドエンコーダ、ポイントクラウドデータエンコーダ、エンコーダなどと呼ばれる。また、実施例によるポイントクラウド圧縮コーティング(符号化)は、上述した実施例に限らない。ポイントクラウドビデオエンコーダは、符号化されたポイントクラウドビデオデータを含むビットストリームを出力することができる。ビットストリームは、符号化されたポイントクラウドビデオデータのみならず、ポイントクラウドビデオデータの符号化に関連するシグナリング情報を含んでもよい。
【0049】
実施例によるポイントクラウドビデオエンコーダ10002は、G-PCC(Geometry-based Point Cloud Compression)符号化方式および/またはV-PCC(Video-based Point Cloud Compression)符号化方式の両方をいずれも支援できる。また、ポイントクラウドビデオエンコーダ10002は、ポイントクラウド(ポイントクラウドデータまたはポイントの全てを称する)および/またはポイントクラウドに関するシグナリングデータを符号化することができる。
【0050】
実施例によるファイル/セグメントカプセル化部(File/Segment Encapsulation module)10003は、ポイントクラウドデータをファイルおよび/またはセグメントの形式でカプセル化する。実施例によるポイントクラウドデータ送信方法/装置は、ポイントクラウドデータをファイルおよび/またはセグメントの形式で送信することができる。
【0051】
実施例による送信機(Transmitter(or Communication module))10004は、符号化されたポイントクラウドビデオデータをビットストリームの形式で送信する。実施例によって、ファイルまたはセグメントは、ネットワークを介して受信装置へ送信されるか、またはデジタル記憶媒体(例えば、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなど)に格納される。実施例による送信機は、受信装置(または、受信機(Receiver)と4G、5G、6Gなどのネットワークを介して有/無線通信を行うが可能である。また、送信機は、ネットワークシステム(例えば、4G、5G、6Gなどの通信ネットワークシステム)に応じて必要なデータ処理の動作を行うことができる。また、送信装置は、オンデマンド(On Demand)の方式によってカプセル化されたデータを送信することもできる。
【0052】
実施例によるポイントクラウドデータ受信装置(Reception device)10005は、受信機(Receiver)10006、ファイル/セグメントデカプセル化部10007、ポイントクラウドビデオデコーダ(Point Cloud video Decoder)10008、および/またはレンダラー(Renderer)10009を含む。実施例によって、受信装置は、無線接続技術(例えば、5G NR(New RAT)、LTE(Long Term Evolution))を用いて、基地局および/または他の無線機器と通信を行う機器、ロボット、車両、AR/VR/XR機器、携帯機器、家電、IoT(Internet of Thing)機器、AI機器/サーバーなどを含んでもよい。
【0053】
実施例による受信機(Receiver)10006は、ポイントクラウドビデオデータを含むビットストリームを受信する。実施例によって、受信機10006は、フィードバック情報(Feedback Information)をポイントクラウドデータ送信装置10000に送信することができる。
【0054】
ファイル/セグメントデカプセル化部(File/Segment Decapsulation module)10007は、ポイントクラウドデータを含むファイルおよび/またはセグメントをデカプセル化する。
【0055】
ポイントクラウドビデオデコーダ(Point Cloud video Decoder)10008は、受信したポイントクラウドビデオデータを復号する。
【0056】
レンダラー(Renderer)10009は、復号されたポイントクラウドビデオデータをレンダリングする。実施例によって、レンダラー10009は、受信端側で取得したフィードバック情報をポイントクラウドビデオデコーダ10008に送信できる。実施例によるポイントクラウドビデオデータは、フィードバック情報を受信機10006に送信することができる。実施例によれば、ポイントクラウド送信装置が受信したフィードバック情報は、ポイントクラウドビデオエンコーダ10002に提供されてもよい。
【0057】
図面において点線で示した矢印は、受信装置10005で取得したフィードバック情報(feedback information)の送信経路を示す。フィードバック情報は、ポイントクラウドコンテンツを消費するユーザとの相互作用を反映するための情報であって、ユーザの情報(例えば、ヘッドオリエンテーション情報、ビューポート情報など)を含む。特に、ポイントクラウドコンテンツがユーザとの相互作用が必要なサービス(例えば、自律走行サービスなど)のためのものである場合、フィードバック情報は、コンテンツ送信側(例えば、送信装置10000)および/またはサービス供給者に伝送されることができる。実施例によっては、フィードバック情報は送信装置10000だけではなく受信装置10005で使用されることもあり、提供されないこともある。
【0058】
実施例によるヘッドオリエンテーション情報は、ユーザの頭の位置、方向、角度、動きなどに関する情報である。実施例による受信装置10005は、ヘッドオリエンテーション情報に基づいてビューポート情報を算出することができる。ビューポート情報はユーザが見ているポイントクラウドビデオの領域に関する情報である。視点(viewpoint or orientation)は、ユーザがポイントクラウドビデオを見ている点であり、ビューポート領域の真ん中を意味する。即ち、ビューポートは視点を中心とする領域であり、領域のサイズ、形態などはFOV(Field Of View)により決定される。換言すれば、仮想カメラまたはユーザの位置と視点(viewpoint or orientation)に応じてビューポートが決定され、ポイントクラウドデータはビューポート情報に基づいて上述したビューポートでレンダリングされる。従って、受信装置10005は、ヘッドオリエンテーション情報の他に、装置が支援する垂直(vertical)或いは水平(horizontal)FOVなどに基づいてビューポート情報を抽出することができる。また受信装置10005はゲイズ分析(Gaze Analysis)などを行って、ユーザのポイントクラウド消費方式、ユーザが凝視するポイントクラウドビデオ領域、凝視時間などを確認する。実施例によれば、受信装置10005はゲイズ分析の結果を含むフィードバック情報を送信装置10000に送信することができる。実施例によるフィードバック情報はレンダリングおよび/またはディスプレイプロセスで得られる。実施例によるフィードバック情報は、受信装置10005に含まれた一つ又はそれ以上のセンサにより確保される。また実施例によれば、フィードバック情報は、レンダラー10009または別の外部エレメント(またはデバイス、コンポーネントなど)により確保される。
図1に示された点線はレンダラー10009で確保したフィードバック情報の伝送プロセスを示す。ポイントクラウドコンテンツ提供システムはフィードバック情報に基づいてポイントクラウドデータを処理(符号化/復号)する。従って、ポイントクラウドビデオデータデコーダ10008はフィードバック情報に基づいて復号の動作を行うことができる。また受信装置10005はフィードバック情報を送信装置に送信することができる。送信装置(またはポイントクラウドビデオデータエンコーダ10002)はフィードバック情報に基づいて符号化の動作を行うことができる。従って、ポイントクラウドコンテンツ提供システムは、全てのポイントクラウドデータを処理(符号化/復号)せず、フィードバック情報に基づいて必要なデータ(例えば、ユーザのヘッド位置に対応するポイントクラウドデータ)を効率的に処理して、ユーザにポイントクラウドコンテンツを提供することができる。
【0059】
実施例において、送信装置10000はエンコーダ、送信デバイス、送信機などと呼ばれ、受信装置10005はデコーダ、受信デバイス、受信機などと呼ばれる。
【0060】
実施例による
図1のポイントクラウドコンテンツ提供システムで処理される(取得/符号化/送信/復号/レンダリングの一連のプロセスで処理される)ポイントクラウドデータは、ポイントクラウドコンテンツデータまたはポイントクラウドビデオデータとも呼ばれる。実施例によれば、ポイントクラウドコンテンツデータはポイントクラウドデータに関連するメタデータまたはシグナリング情報を含む概念として使用することができる。
【0061】
図1に示したポイントクラウドコンテンツ提供システムの要素は、ハードウェア、ソフトウェア、プロセッサおよび/またはそれらの組み合わせなどで具現できる。
【0062】
実施例は、ユーザにVR(Virtual Reality、仮想現実)、AR(Augmented Reality、増強現実)、MR(Mixed Reality、混合現実)、および自立走行サービスなどの様々なサービスを提供するために、ポイントクラウド(Point Cloud)コンテンツを提供することができる。
【0063】
ポイントクラウドコンテンツサービスを提供するために、まず、ポイントクラウドビデオを取得する。取得したポイントクラウドビデオは、一連のプロセスを経て受信側へ送信され、受信側で受信したデータを再び元のポイントクラウドビデオに加工してレンダリングする。これによって、ポイントクラウドビデオをユーザに提供することができる。実施例は、これらの一連のプロセスを効果的に行うために必要な方案を提供する。
【0064】
ポイントクラウドコンテンツサービスを提供するための全体のプロセス(ポイントクラウドデータ送信方法および/またはポイントクラウドデータ受信方法)は、取得プロセス、符号化プロセス、送信プロセス、復号プロセス、レンダリングプロセスおよび/またはフィードバックプロセスを含む。
【0065】
実施例によれば、ポイントクラウドコンテンツ(または、ポイントクラウドデータ)を提供するプロセスは、ポイントクラウド圧縮(Point Cloud Compression)プロセスとも呼ぶ。実施例によれば、ポイントクラウド圧縮プロセスは、ビデオベースポイントクラウド圧縮(Video-based Point Cloud Compression、以下、V-PCCと呼ぶ)プロセスを意味する。
【0066】
実施例によるポイントクラウドデータ送信装置およびポイントクラウドデータ受信装置の各要素は、ハードウェア、ソフトウェア、プロセッサおよび/またはそれらの組み合わせなどを意味する。
【0067】
ポイントクラウド圧縮システムは、送信デバイスおよび受信デバイスを含むことができる。実施例によれば、送信デバイスは、エンコーダ、送信装置、送信機、ポイントクラウド送信装置などと呼ばれる。実施例によれば、受信デバイスは、デコーダ、受信装置、受信機、ポイントクラウド受信装置などと呼ばれる。送信デバイスはポイントクラウドビデオを符号化してビットストリームを出力することができ、これをファイルまたはストリーミング(ストリーミングセグメント)の形式でデジタル記憶媒体またはネットワークを介して受信デバイスへ伝送することができる。デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなど様々な記憶媒体を含む。
【0068】
送信デバイスは、
図1のように、ポイントクラウドビデオ取得部、ポイントクラウドビデオエンコーダ、ファイル/セグメントカプセル化部、送信部(または、送信機)を含むことができる。受信デバイスは、
図1のように、概略に受信部、ファイル/セグメントデカプセル化部、ポイントクラウドビデオデコーダおよびレンダラーを含むことができる。エンコーダは、ポイントクラウドビデオ/映像/ピクチャー/フレーム符号化装置とも呼ばれ、デコーダは、ポイントクラウドビデオ/映像/ピクチャー/フレーム復号装置とも呼ばれる。レンダラーは、ディスプレイ部を含んでもよく、レンダラーおよび/またはディスプレイ部は別のデバイスまたは外部コンポーネントとして構成されてもよい。送信デバイスおよび受信デバイスは、フィードバックプロセスのための別の内部または外部のモジュール/ユニット/コンポーネントをさらに含んでもよい。実施例による送信デバイスおよび受信デバイスに含まれた各要素は、ハードウェア、ソフトウェアおよび/またはプロセッサで構成できる。
【0069】
実施例による受信デバイスの動作は、送信デバイスの動作の逆プロセスに従う。
【0070】
ポイントクラウドビデオ取得部は、ポイントクラウドビデオのキャプチャー、合成又は生成プロセスなどを通じてポイントクラウドビデオを取得するプロセスを行う。取得プロセスによって、多数のポイントに対する3D位置(x、y、z)/特質(色、反射率、透明度など)データ、例えば、PLY(Polygon File format or the Stanford Triangle format)ファイルなどが生成される。複数のフレームを有するビデオの場合、1つ以上のファイルを取得することができる。キャプチャープロセスにおいてポイントクラウドに関連するメタデータ(例えば、キャプチャーに関するメタデータなど)が生成される。
【0071】
実施例によるポイントクラウドデータ送信装置は、ポイントクラウドデータを符号化するエンコーダ、およびポイントクラウドデータを(または含むビットストリーム)送信する送信機を含んでもよい。
【0072】
実施例によるポイントクラウドデータ受信装置は、ポイントクラウドデータを含むビットストリームを受信する受信部、ポイントクラウドデータを復号するデコーダ、およびポイントクラウドデータをレンダリングするレンダラーを含む。
【0073】
実施例による方法/装置は、ポイントクラウドデータ送信装置および/またはポイントクラウドデータ受信装置を示す。
【0074】
図2は、実施例によるポイントクラウドデータのキャプチャーの一例を示す。
【0075】
実施例によるポイントクラウドデータ(またはポイントクラウドビデオデータ)は、カメラなどによって取得される。実施例によるキャプチャーの方法は、例えば、内向き方式(inward-facing)および/または外向き方式(outward-facing)がある。
【0076】
実施例による内向き方式は、ポイントクラウドデータの客体(Object)を1つまたは1つ以上のカメラが客体の外側から内側へ撮影して取得するキャプチャー方式である。
【0077】
実施例による外向き方式は、ポイントクラウドデータの客体を1つまたは1つ以上のカメラが客体の内側から外側へ撮影して取得する方式である。例えば、実施例によればカメラが4つある。
【0078】
実施例によるポイントクラウドデータまたはポイントクラウドコンテンツは、様々な形式の3D空間上に表現される客体/環境のビデオまたは停止映像である。実施例によれば、ポイントクラウドコンテンツは客体(objectなど)に対するビデオ/オーディオ/イメージなどを含む。
【0079】
ポイントクラウドコンテンツキャプチャーのための装備としては、深さ(depth)が取得可能なカメラ装備(赤外線パターンプロジェクターと赤外線カメラとの組み合わせ)と深さ情報に対応する色情報が抽出可能なRGBカメラの組み合わせによって構成される。または、深さ情報はレーザパルスを打ち、反射して戻る時間を測定して、反射体の位置座標を測定するレーダーシステムを用いるライダー(LiDAR)によって深さ情報を抽出することができる。深さ情報より3D空間上の点で構成されたジオメトリ(geometry)の形式を抽出し、RGB情報より各点の色/反射を表現する特質(attribute)を抽出することができる。ポイントクラウドコンテンツは点に対する位置(x、y、z)、色(YCbCrまたはRGB)または反射率(r)情報で構成されてもよい。ポイントクラウドコンテンツは、外部環境をキャプチャーする外向き方式 (outward-facing)と、中心客体をキャプチャーする内向き方式(inward-facing)とがある。VR/AR環境において客体(例えば、キャラクター、選手、物、俳優などの核心となる客体)を360°にユーザが自由に見られるポイントクラウドコンテンツとして構成する場合、キャプチャーカメラの構成は内向き方式を用いる。また、自立走行のように自動車において現在の周辺環境をポイントクラウドコンテンツとして構成する場合、キャプチャーカメラの構成は外向き方式を用いる。複数のカメラによってポイントクラウドコンテンツがキャプチャーされるため、カメラ間のグローバル空間座標系(global coordinate system)を設定するためにコンテンツをキャプチャーする前にカメラの校正プロセスが必要となることもある。
【0080】
ポイントクラウドコンテンツは、様々な形態の3D空間上に示される客体/環境のビデオまたは停止映像である。
【0081】
その他に、ポイントクラウドコンテンツの取得方法は、キャプチャーされたポイントクラウドビデオに基づいて任意のポイントクラウドビデオが合成できる。または、コンピューターで生成された仮想の空間に対するポイントクラウドビデオを提供しようとする場合、実際にカメラによるキャプチャーが行われないことがある。この場合、単に、関連データが生成されるプロセスによって該当キャプチャープロセスが代替できる。
【0082】
キャプチャーされたポイントクラウドビデオは、コンテンツの質を向上させるための後処理が必要である。映像キャプチャープロセスにおいてカメラ装備が提供する範囲内で最大/最小の深さ値が調整できるが、その後にも所望しない領域のポイントデータが含まれることがあり、所望しない領域(例えば、背景)を除去するか、または連結された空間を認識して穴(spatial hole)を埋める後処理を行ってもよい。また、空間座標系を共有するカメラから抽出されたポイントクラウドは、校正プロセスによって取得した各カメラの位置座標を基準として、各ポイントに対するグローバル座標系への変換プロセスにより、1つのコンテンツに統合できる。これにより、1つの広い範囲のポイントクラウドコンテンツを生成することもでき、またはポイントの密度の高いポイントクラウドコンテンツを取得することもできる。
【0083】
ポイントクラウドビデオエンコーダ10002は、入力されるポイントクラウドビデオを1つ以上のビデオストリームに符号化することができる。1つのポイントクラウドビデオは、複数のフレームを含んでもよく、1つのフレームは停止映像/ピクチャーに対応する。本文書において、ポイントクラウドビデオとは、ポイントクラウド映像/フレーム/ピクチャー/ビデオ/オーディオ/イメージなどを含み、ポイントクラウドビデオはポイントクラウド映像/フレーム/ピクチャーと混用できる。ポイントクラウドビデオエンコーダ10002は、ビデオベースポイントクラウド圧縮(V-PCC)の手続きを行う。ポイントクラウドビデオエンコーダ10002は、圧縮およびコーティングの効率のために、予測、変換、量子化、エントロピー符号化などの一連の手続きを行う。符号化されたデータ(符号化されたビデオ/映像情報)は、ビットストリーム(bitstream)の形態で出力される。V-PCC手続きに基づく場合、ポイントクラウドビデオエンコーダ10002は ポイントクラウドビデオを、後述のように、ジオメトリビデオ、特質(attribute)ビデオ、占有(occupancy)マップビデオ、また付加情報(auxiliary information)に分けて符号化する。ジオメトリビデオはジオメトリイメージを含み、特質(attribute)ビデオは特質イメージを含み、占有(occupancy)マップビデオは占有マップイメージを含む。付加情報(または、付加データという)は付加パッチ情報(auxiliary patch information)を含む。特質ビデオ/イメージはテクスチャビデオ/イメージを含む。
【0084】
カプセル化部(file/segment encapsulation module)10003は、符号化されたポイントクラウドビデオデータおよび/またはポイントクラウドビデオ関連メタデータをファイルなどの形式でカプセル化することができる。ここで、ポイントクラウドビデオ関連メタデータは、メタデータ処理部などから伝送されてもよい。メタデータ処理部は、ポイントクラウドビデオエンコーダ10002に含まれてもよく、または別のコンポーネント/モジュールで構成されてもよい。カプセル化部10003は、該当データをISOBMFFなどのファイルフォーマットでカプセル化してもよく、その他のDASHセグメントなどの形式で処理してもよい。カプセル化部10003は、実施例によれば、ポイントクラウドビデオ関連メタデータをファイルフォーマット上に含ませてもよい。ポイントクラウドビデオ関連メタデータは、例えば、ISOBMFFファイルフォーマット上の多様なレベルのボックス(box)に含まれるか、又はファイル内で別のトラックに含まれる。実施例によれば、カプセル化部10003は、ポイントクラウドビデオ関連メタデータそのものをファイルでカプセル化することができる。送信処理部はファイルフォーマットによってカプセル化されたポイントクラウドビデオデータに送信のための処理を加えてもよい。送信処理部は、送信部10004に含まれてもよく、または別のコンポーネント/モジュールで構成されてもよい。送信処理部は、任意の送信プロトコルに従ってポイントクラウドビデオデータを処理する。送信のための処理には、放送網を介して伝送するための処理、ブロードバンドを介して伝送するための処理を含む。実施例による送信処理部は、ポイントクラウドビデオデータのみならず、メタデータ処理部からポイントクラウドビデオ関連メタデータが伝送され、これに送信するための処理を加える。
【0085】
送信部10004は、ビットストリームの形式で出力された符号化されたビデオ/映像情報またはデータをファイルまたはストリーミングの形式でデジタル記憶媒体またはネットワークを介して受信デバイスの受信機10006へ伝送する。デジタル記憶媒体にはUSB、SD、CD、DVD、ブルーレイ、HDD、SSDなどが含まれる。送信部は所定のファイルフォーマットによってメディアファイルを生成するための要素を含み、放送/通信ネットワークを介した送信のための要素を含む。受信部はビットストリームを抽出して復号装置に伝送する。
【0086】
受信機10006は、本発明によるポイントクラウドビデオ送信装置が送信したポイントクラウドビデオデータを受信する。送信されるチャンネルに応じて、受信部は、放送網を介してポイントクラウドビデオデータを受信してもよく、ブロードバンドを介してポイントクラウドビデオデータを受信してもよい。またはデジタル記憶媒体を介してポイントクラウドビデオデータを受信してもよい。
【0087】
受信処理部は、受信したポイントクラウドビデオデータに対して送信プロトコルに従う処理を行う。受信処理部は受信機10006に含まれてもよく、または別のコンポーネント/モジュールで構成されてもよい。送信側で送信のための処理が行われることに対応するように、受信処理部は上述した送信処理部の逆プロセスを行う。受信処理部は取得したポイントクラウドビデオデータはデカプセル化部10007に伝送し、取得したポイントクラウドビデオ関連メタデータはメタデータ処理部(未図示)に伝送する。受信処理部が取得するポイントクラウドビデオ関連メタデータはシグナリングテーブルの形式であってもよい。
【0088】
デカプセル化部(file/segment decapsulation module)10007は、受信処理部から伝送されたファイル形式のポイントクラウドビデオデータをデカプセル化する。デカプセル化処理部10007は、ISOBMFFなどによるファイルをデカプセル化し、ポイントクラウドビデオビットストリームないしポイントクラウドビデオ関連メタデータ(メタデータビットストリーム)を取得する。取得したポイントクラウドビデオビットストリームは、ポイントクラウドビデオデコーダ10008に伝送し、取得したポイントクラウドビデオ関連メタデータ(メタデータビットストリーム)はメタデータ処理部(未図示)に伝送する。ポイントクラウドビデオビットストリームはメタデータ(メタデータビットストリーム)を含んでもよい。メタデータ処理部はポイントクラウドビデオデコーダ10008に含まれてもよく、または別のコンポーネント/モジュールで構成されてもよい。デカプセル化処理部10007が取得するポイントクラウドビデオ関連メタデータは、ファイルフォーマット内のボックスまたはトラックの形式であってもよい。デカプセル化処理部10007は、必要な場合、メタデータ処理部からデカプセル化に必要なメタデータが伝送される。ポイントクラウドビデオ関連メタデータは、ポイントクラウドビデオデコーダ10008に伝送されてポイントクラウドビデオ復号の手続きに用いられてもよく、またはレンダラー10009に伝送されてポイントクラウドビデオレンダリングの手続きに用いられてもよい。
【0089】
ポイントクラウドビデオデコーダ10008は、ビットストリームが入力され、ポイントクラウドビデオエンコーダの動作に対応する動作を行い、ビデオ/映像を復号することができる。この場合、ポイントクラウドビデオデコーダ10008は、ポイントクラウドビデオを、後述のように、ジオメトリビデオ、特質(attribute)ビデオ、占有(occupancy)マップビデオ、また付加情報(auxiliary information)に分けて復号する。ジオメトリビデオはジオメトリイメージを含み、特質(attribute)ビデオは特質イメージを含み、占有(occupancy)マップビデオは占有マップイメージを含む。付加情報は付加パッチ情報(auxiliary patch information)を含む。特質ビデオ/イメージはテクスチャビデオ/イメージを含む。
【0090】
復号されたジオメトリイメージと占有マップおよび付加パッチ情報を用いて、3Dジオメトリが復元され、その後平滑化プロセスを経てもよい。平滑化された3Dジオメトリにテクスチャイメージを用いてカラー値を与えることで、カラーポイントクラウド映像/ピクチャーが復元される。レンダラー10009は、復元されたジオメトリ、カラー ポイントクラウド映像/ピクチャーをレンダリングする。レンダリングされたビデオ/映像は、ディスプレイ部(未図示)によってディスプレイされる。ユーザはVR/ARディスプレイまたは一般のディスプレイなどによってレンダリングされた結果の全部または一部の領域を見る。
【0091】
フィードバックプロセスは、レンダリング/ディスプレイのプロセスにおいて取得可能な様々なフィードバック情報を送信側に伝送するか、受信側のデコーダに伝送するプロセスを含んでもよい。フィードバックプロセスにより、ポイントクラウドビデオの消費において相互作用(interactivity)が提供される。実施例によれば、フィードバックプロセスにおいてヘッドオリエンテーション(Head Orientation)情報、ユーザが現在見ている領域を示すビューポート(Viewport)情報などが伝送される。実施例によれば、ユーザは、VR/AR/MR/自立走行環境上に具現されたものと相互作用できるが、この場合、その相互作用に関連する情報がフィードバックプロセスで送信側ないしサービス供給者側に伝送されることがある。実施例によってフィードバックプロセスは行わなくてもよい。
【0092】
ヘッドオリエンテーション情報は、ユーザの頭の位置、角度、動きなどに関する情報である。この情報に基づいて、ユーザがポイントクラウドビデオ内で現在見ている領域の情報、即ち、ビューポート情報が算出される。
【0093】
ビューポート情報は、ユーザがポイントクラウドビデオで現在見ている領域の情報である。これにより、ゲイズ分析(Gaze Analysis)が行われ、ユーザがどんな方式でポイントクラウドビデオを消費するか、ポイントクラウドビデオのどの領域をどのくらい凝視するかなどを確認することもできる。ゲイズ分析は、受信側で行われて送信側にフィードバックチャンネルを介して伝送される。VR/AR/MRディスプレイなどの装置は、ユーザの頭の位置/方向、装置が支援する垂直(vertical)または水平(horizontal)FOVなどに基づいてビューポート領域を抽出する。
【0094】
実施例によれば、上述したフィードバック情報は送信側に伝送されるだけではなく、受信側で消費されてもよい。即ち、上述したフィードバック情報を用いて受信側の復号、レンダリングのプロセスなどが行われる。例えば、ヘッドオリエンテーション情報および/またはビューポート情報を用いて、ユーザが現在見ている領域に対するポイントクラウドビデオのみを優先して復号およびレンダリングする。
【0095】
ここで、ビューポート(viewport)ないしビューポート領域とは、ユーザがポイントクラウドビデオで見ている領域である。視点(viewpoint)はユーザがポイントクラウドビデオで見ている地点であって、ビューポート領域の真ん中を意味する。即ち、ビューポートは視点を中心とした領域であり、その領域が占めるサイズ、形態などはFOV(Field Of View)により決定される。
【0096】
本明細書は、上述のように、ポイントクラウドビデオ圧縮に関する。例えば、この明細書に開示の方法/実施例は、MPEG(Moving Picture Experts Group)のPCC(point cloud compression or point cloud coding)標準または次世代ビデオ/イメージコーティング標準に適用される。
【0097】
本明細書においてピクチャー(picture)/フレーム(frame)は、一般に特定の時間帯の1つの映像を示す単位を意味する。
【0098】
ピクセル(pixel)またはペル(pel)は1つのピクチャー(または映像)を構成する最小の単位を意味する。また、ピクセルに対応する用語として「サンプル(sample)」が用いられる。サンプルは、一般に、ピクセルまたはピクセルの値を示し、輝度(luma)成分のピクセル/ピクセル値のみを示してもよく、彩度(chroma)成分のピクセル/ピクセル値のみを示してもよく、または深さ(depth)成分のピクセル/ピクセル値のみを示してもよい。
【0099】
ユニット(unit)は映像処理の基本単位を示す。ユニットはピクチャーの特定の領域およびその領域に関する情報のうちの少なくとも1つを含む。ユニットは、場合によって、ブロック(block)または領域(area)またはモジュールなどの用語と混用する。一般の場合、MxNブロックは、M個の列とN個の行からなるサンプル(またはサンプルアレイ)または変換係数(transform coefficient)の集合(またはアレイ)を含む。
【0100】
図3は、実施例によるポイントクラウドおよびジオメトリ、テクスチャイメージの一例を示す。
【0101】
実施例によるポイントクラウドは、後述する
図4のV-PCC符号化プロセスに入力され、ジオメトリイメージ、テクスチャイメージが生成される。実施例によれば、ポイントクラウドはポイントクラウドデータと同一の意味で使用される。
【0102】
図3において、左側の図はポイントクラウドであって、3D空間上にポイントクラウド客体が位置し、これをバウンディングボックスなどで表現するポイントクラウドを示す。
図3の中間の図はジオメトリイメージを示し、右側の図はテキスチャーイメージ(ノン-パッド)を示す。本明細書は、ジオメトリイメージをジオメトリパッチフレーム/ピクチャーまたはジオメトリフレーム/ピクチャーとも呼ぶ。またテクスチャイメージを特質パッチフレーム/ピクチャーまたは特質フレーム/ピクチャーとも呼ぶ。
【0103】
ビデオベースポイントクラウド圧縮(Video-based Point Cloud Compression、V-PCC)は、HEVC(Efficiency Video Coding)、VVC(Versatile Video Coding)などの2Dビデオコーデック(video codec)に基づいて3Dポイントクラウドデータを圧縮する方法である。V-PCC圧縮プロセスにおいて、以下のようなデータおよび情報が生成される。
【0104】
占有マップ(occupancy map):ポイントクラウドを成す点をパッチに分けて2D平面にマップするとき、2D平面の該当位置におけるデータの存否を0または1の値で知らせる2進マップ(binary map)を示す。占有マップ(occupancy map)はアトラスに対応する2Dアレイを示し、占有マップの値はアトラス内の各サンプル位置が3Dポイントに対応するか否かを示す。アトラス(ATLAS)とは、各ポイントクラウドフレームに対する2Dパッチに関する情報を含む対象を意味する。例えば、アトラスはパッチの2D配置およびサイズ、3Dポイント内の対応する3D領域の位置、プロジェクションプラン、LOD(Level of Detail)パラメータなどがある。
【0105】
パッチ(patch):ポイントクラウドを構成する点の集合であり、同じパッチに属する点は3D空間上で互いに隣接し、2Dイメージへのマッピングプロセスにおいて6面の境界ボックス平面のうち同じ方向にマップされることを示す。
【0106】
ジオメトリイメージ(geometry image):ポイントクラウドを成す各点の位置情報(geometry)をパッチ単位で表現する深さマップの形式のイメージを示す。ジオメトリイメージは1チャンネルのピクセル値で構成される。ジオメトリ(geometry)はポイントクラウドフレームに連関する座標のセットを示す。
【0107】
テキスチャー イメージ(texture image):ポイントクラウドを成す各点の色情報をパッチ単位で表現するイメージを示す。テクスチャイメージは複数のチャンネルのピクセル値(e.g. 3チャンネルR、G、B)で構成される。テキスチャーは特質に含まれる。実施例によれば、テキスチャーおよび/または特質は同一の対象および/または包含関係として解釈される。
【0108】
付加パッチ情報(auxiliary patch info):個別のパッチからポイントクラウドを再構成するために必要なメタデータを示す。付加パッチ情報は、パッチの2D/3D空間における位置、サイズなどに関する情報を含む。
【0109】
実施例によるポイントクラウドデータ、例えば、V-PCCコンポーネントは、アトラス、占有マップ、ジオメトリ、特質などを含む。
【0110】
アトラス(atlas)は、2Dバウンディングボックスの集合を示す。パッチのグループ、例えば、直方形(rectangular)フレームにプロジェクトされたパッチである。また、3D空間において3Dバウンディングボックスに対応し、ポイントクラウドのサブセットを示す(atlas represents a collection of 2D bounding boxes, i.e. patches, projected into a rectangular frame that correspond to a 3-dimensional bounding box in 3D space, which may represent a subset of a point cloud).この場合、パッチは平面プロジェクション(planar projection)内の長方形領域(rectangular region)に該当するアトラス内の長方形領域(rectangular region)を示す。また、パッチデータは、2Dから3Dまでアトラスに含まれるパッチの変換(transformation)が必要なデータを示す。これに加えて、パッチデータグループはアトラスとも呼ぶ。
【0111】
特質(attribute)は、ポイントクラウド内の各ポイントに連関するスカラー(scalar)またはベクトル(vector)を示し、例えば、カラー(colour)、反射率(reflectance)、面法線(surface normal)、タイムスタンプ(time stamps)、マテリアルID(material ID)などがある。
【0112】
実施例によるポイントクラウドデータは、V-PCC(Video-based Point Cloud Compression)方式によるPCCデータを示す。ポイントクラウドデータは複数のコンポーネントを含む。例えば、占有マップ、パッチ、ジオメトリおよび/またはテキスチャーなどを含む。
【0113】
図4は、実施例によるポイントクラウドビデオエンコーダの一例を示す。
【0114】
図4は、占有マップ(occupancy map)、ジオメトリイメージ(geometry image)、テクスチャイメージ(texture image)、付加パッチ情報(auxiliary patch information)を生成して圧縮するためのV-PCC符号化プロセス(encoding process)を示す。
図4のV-PCC符号化プロセスは、
図1のポイントクラウドビデオエンコーダ10002によって処理される。
図4の各構成要素は、ソフトウェア、ハードウェア、プロセッサおよび/またはそれらの組み合わせによって行われる。
【0115】
パッチ生成部(patch generation、またはパッチゼネレーション部)14000は、ポイントクラウドフレーム(ポイントクラウドデータを含むビットストリームの形式であってもよい)を受信する。パッチ生成部40000は、ポイントクラウドデータからパッチを生成する。また、パッチの生成に関する情報を含むパッチ情報を生成する。
【0116】
パッチパッキング(patch packing、またはパッチパッキング部)40001は1つまたは1つ以上のパッチをパックする。また、パッチパッキングに関する情報を含む占有マップを生成する。
【0117】
ジオメトリイメージ生成部(geometry image generationまたはジオメトリイメージゼネレーション部)40002は、ポイントクラウドデータ、パッチ情報(または、付加パッチ情報)、および/または占有マップ情報に基づいてジオメトリイメージを生成する。ジオメトリイメージは、ポイントクラウドデータに関するジオメトリを含むデータ(即ち、ポイントの3D座標値)をいい、ジオメトリフレームとも呼ぶ。
【0118】
テクスチャイメージ生成(texture image generationまたはテキスチャーイメージゼネレーション部)40003は、ポイントクラウドデータ、パッチ、パックされたパッチ、パッチ情報(または付加パッチ情報)、および/または平滑化したジオメトリに基づいてテクスチャイメージを生成する。テクスチャイメージは、特質フレームとも呼ぶ。また、再構成された(reconstructed)ジオメトリイメージをパッチ情報に基づいて平滑化(番号)が平滑化処理をして生成された平滑化ジオメトリにさらに基づいて、テクスチャイメージを生成することができる。
【0119】
平滑化(smoothingまたは平滑化部)40004は、イメージデータに含まれたエラーを緩和または除去する。例えば、再構成された(reconstructed)ジオメトリイメージをパッチ情報に基づいて平滑化処理、即ち、データ間エラーを誘発するような部分を柔らかにフィルタリングして平滑化したジオメトリを生成することができる。平滑化したジオメトリは、テクスチャイメージ生成部40003へ出力される。
【0120】
付加パッチ情報圧縮(auxiliary patch info compressionまたは付加パッチ情報圧縮部)40005は、パッチ生成プロセスで生成されたパッチ情報に関する付加(auxiliary)パッチ情報を圧縮する。また、付加パッチ情報圧縮部40005で圧縮された付加パッチ情報はマルチプルクサ40013へ伝送される。ジオメトリイメージ生成40002は、ジオメトリイメージを生成するとき、付加パッチ情報を用いる。
【0121】
イメージパッド(image paddingまたはイメージパッド部)40006、40007は、ジオメトリイメージおよびテクスチャイメージをそれぞれパッドする。即ち、パッドデータがジオメトリイメージおよびテクスチャイメージにパッドされる。
【0122】
グループ拡張(group dilationまたはグループ拡張部)40008は、イメージパッドと同様に、テクスチャイメージにデータを付加する。付加パッチ情報がテクスチャイメージに挿入される。
【0123】
ビデオ圧縮(video compressionまたはビデオ圧縮部)40009、40010、40011は、パッドされたジオメトリイメージ、パッドされたテクスチャイメージおよび/または占有マップをそれぞれ圧縮する。換言すれば、ビデオ圧縮部40009、40010、40011は、入力されるジオメトリフレーム、特質フレームおよび/または占有マップフレームをそれぞれ圧縮し、ジオメトリのビデオビットストリーム、テクスチャイメージのビデオビットストリーム、占有マップのビデオビットストリームに出力する。ビデオ圧縮はジオメトリ情報、テキスチャー情報、占有情報などを符号化する。
【0124】
エントロピー圧縮(entropy compressionまたはエントロピー圧縮部)40012は、占有マップをエントロピー方式に基づいて圧縮する。
【0125】
実施例によれば、ポイントクラウドデータがロスレス(lossless)した場合および/またはロッシー(lossy)した場合、占有マップフレームに対してエントロピー圧縮および/またはビデオ圧縮が行われる。
【0126】
マルチプルクサ(multiplexer)40013は、各圧縮部で圧縮されたジオメトリのビデオビットストリーム、圧縮されたテクスチャイメージのビデオビットストリーム、圧縮された占有マップのビデオビットストリーム、圧縮された付加パッチ情報のビットストリームを1つのビットストリームにマルチプルクスする。
【0127】
上述したブロックは省略してもよく、類似または同一の機能を有するブロックによって置き換えられてもよい。また、
図4に示された各ブロックは、プロセッサ、ソフトウェア、ハードウェアのうちの少なくとも1つとして動作する。
【0128】
以下、実施例による
図4の各々のプロセスの詳細な動作を示す。
【0129】
パッチ生成(Patch generation)40000
【0130】
パッチ生成のプロセスは、ポイントクラウドを2Dイメージにマップ(mapping)するために、マッピングを行う単位であるパッチでポイントクラウドを分割するプロセスを意味する。パッチ生成のプロセスは、以下のようにノーマル(normal)値の計算、セグメント(segmentation)、パッチ(patch)分割の3つのステップに分けられる。
【0131】
図5を参照して、正規値の計算プロセスを具体的に説明する。
【0132】
図5は、実施例によるサーフェス(Surface)の接平面(tangent plane)および法線ベクトル(normal vector)の一例を示す。
【0133】
図5のサーフェスは、
図4のV-PCC符号化プロセスのパッチ生成のプロセス40000において以下のように用いられる。
【0134】
パッチ生成に関連して法線(Normal)計算
【0135】
ポイントクラウドを成す各点(例えば、ポイント)は、固有の方向を有しているが、これは法線という3Dのベクトルで示される。K-D treeなどを用いて求められる各点の隣接点(neighbors)を用いて、
図5のようなポイントクラウドのサーフェスを成す各点の接平面(tangent plane)および法線ベクトル(normal vector)を求める。隣接点を探すプロセスにおけるサーチ範囲(search range)はユーザによって定義される。
【0136】
接平面:サーフェスの一点を通り、サーフェス上の曲線に対する接線を完全に含んでいる平面を示す。
【0137】
図6は、実施例によるポイントクラウドのバウンディングボックス(bounding box)の一例を示す。
【0138】
実施例によるバウンディングボックスとは、ポイントクラウドデータを3D空間上で六面体に基づいて分割する単位のボックスである。
【0139】
実施例による方法/装置、例えば、パッチ生成4000がポイントクラウドデータからパッチを生成するプロセスにおいてバウンディングボックスを用いる。
【0140】
バウンディングボックスは、ポイントクラウドデータの対象となるポイントクラウド客体を3D空間上の六面体に基づいて各々の六面体の平面にプロジェクトするプロセスにおいて用いる。バウンディングボックスは、
図1のポイントクラウドビデオ取得部10001、ポイントクラウドビデオエンコーダ10002によって生成、処理される。また、バウンディングボックスに基づいて、
図4のV-PCC符号化プロセスのパッチ生成40000、パッチパッキング40001、ジオメトリイメージ生成40002、テクスチャイメージ生成40003が行われる。
【0141】
パッチ生成に関連して分割(Segmentation)
【0142】
分割(Segmentation)は、初期分割(initial segmentation)と改善分割(refine segmentation)との2つのプロセスからなる。
【0143】
実施例によるポイントクラウドビデオエンコーダ10002は、ポイントをバウンディングボックスの一面にプロジェクトする。具体的に、ポイントクラウドを成す各点は、
図6のように、ポイントクラウドを囲む6つのバウンディングボックス(bounding box)の面の一面にプロジェクトされるが、初期分割(initial segmentation)は、各点がプロジェクトされるバウンディングボックスの平面のうちの1つを決定するプロセスである。
【0144】
6つの各平面と対応する正規(normal)値である
は、以下のように定義される。
【0145】
(1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0), (-1.0, 0.0, 0.0), (0.0, -1.0, 0.0), (0.0, 0.0, -1.0).
【0146】
以下の数式のように、上述した正規値の計算プロセスから得た各点の正規値(
)と
の外積(dot product)が最大の面をその面のプロジェクション平面と決定する。即ち、ポイントの法線と最も類似する方向の法線を有する平面がそのポイントのプロジェクション平面と決定される。
【0147】
【0148】
決定された平面は、0~5のうちのいずれか1つのインデックス(index)形式の値(cluster index)として識別される。
【0149】
改善分割(Refine segmentation)は、上述した初期分割(initial segmentation)のプロセスで決定されたポイントクラウドを成す各点のプロジェクション平面を隣接点のプロジェクション平面を考慮して改善するプロセスである。このプロセスでは、上述した初期分割プロセスにおいてプロジェクション平面を決定するために考慮した各点のノーマルとバウンディングボックスの各平面のノーマル値との類似度を成すscore normalと共に、現在点のプロジェクション平面と隣接点のプロジェクション平面との一致度を示すスコア平滑化score smoothとが同時に考慮される。
【0150】
Score smoothはscore normalに対して加重値を与えることで考慮することができ、このとき、加重値はユーザによって定義される。改善分割は繰り返し的に行われ、繰り返し回数もユーザに定義される。
【0151】
パッチ生成に関連してパッチ分割(segment patches)
【0152】
パッチ分割は、上述した初期/改善分割のプロセスで得たポイントクラウドを成す各点のプロジェクション平面情報に基づいて、全体のポイントクラウドを隣接した点の集合であるパッチに分けるプロセスである。パッチ分割は、以下のようなステップからなる。
【0153】
(1) K-D treeなどを用いてポイントクラウドを成す各点の隣接点を算出する。最大の隣接点の数はユーザによって定義される。
【0154】
(2) 隣接点が現在の点と同一平面にプロジェクトされる場合(同一のクラスターインデックス(cluster index)値を有する場合)、現在の点とその隣接点を1つのパッチに抽出する。
【0155】
(3) 抽出したパッチのジオメトリ値を算出する。
【0156】
(4) 抽出されない点が無くなるまで(2)~(3)のプロセスを繰り返す。
【0157】
パッチ分割のプロセスを通じて、各パッチのサイズおよび各パッチの占有マップ、ジオメトリイメージ、テクスチャイメージなどが決定される。
【0158】
図7は、実施例による占有マップ(occupancy map)の個別パッチ(patch)の位置決めの一例を示す。
【0159】
実施例によるポイントクラウドエンコーダ10002は、パッチパッキングおよび占有マップを生成することができる。
【0160】
パッチパッキングおよび占有マップの生成(Patch packing & Occupancy map generation)40001
【0161】
本プロセスは、以前に分割されたパッチを1つの2Dイメージにマップするために、個別パッチの2Dイメージ内における位置を決定するプロセスである。占有マップ(Occupancy map)は2Dイメージの1つであって、その位置におけるデータの存否を0または1の値で知らせる2進マップ(binary map)である。占有マップは、ブロックからなり、ブロックのサイズに応じて解像度が決定されるが、一例としてブロックのサイズが1*1である場合、ピクセル(pixel)単位の解像度を有する。ブロックのサイズ(occupancy packing block size)はユーザによって決定される。
【0162】
占有マップ内において個別パッチの位置を決定するプロセスは、以下のようである。
【0163】
(1) 全体の占有マップの値をいずれも0に設定する。
【0164】
(2) 占有マップ平面に存在する水平座標が[0、occupancySizeU-patch.sizeU0)、垂直座標が[0、occupancySizeV-patch.sizeV0)の範囲にある点(u、 v)にパッチを位置させる。
【0165】
(3) パッチ平面に存在する水平座標が[0、patch.sizeU0)、垂直座標が[0、patch.sizeV0)の範囲にある点(x、y)を現在点として設定する。
【0166】
(4) 点(x、y)に対して、パッチ占有マップの(x、y)座標値が1であり(パッチ内の該当地点にデータが存在し)、全体の占有マップの(u+x、v+y)座標値が1(以前のパッチにより占有マップが満たされた場合)、ラスタ順に(x、y)位置を変更して、(3)~(4)のプロセスを繰り返す。そうではない場合、(6)のプロセスを行う。
【0167】
(5) ラスタ順に(u、v)位置を変更して(3)~(5)のプロセスを繰り返す。
【0168】
(6) (u、v)を該当パッチの位置に決定し、パッチの占有マップデータを全体の占有マップの該当部分に割り当てる(copy)。
【0169】
(7) 次のパッチに対して(2)~(6)のプロセスを繰り返す。
【0170】
占有サイズU(occupancySizeU):占有マップの幅(width)を示し、単位は占有パッキングサイズブロック(occupancy packing block size)である。
【0171】
占有サイズV(occupancySizeV):占有マップの高さ(height)を示し、単位は占有パッキングブロックサイズである。
【0172】
パッチサイズU0(patch.sizeU0):占有マップの幅を示し、単位は占有パッキングブロックサイズである。
【0173】
パッチサイズV0(patch.sizeV0):占有マップの高さを示し、単位は占有パッキングブロックサイズである。
【0174】
例えば、
図7のように、占有パッキングサイズブロックに該当するボックス内パッチサイズを有するパッチに対応するボックスが存在し、ボックス内ポイント(x、y)が位置してもよい。
【0175】
図8は、実施例によるノーマル(normal)、タンジェント(tangent)、バイタンジェント(bitangent)軸の関係の一例を示す。
【0176】
実施例によるポイントクラウドビデオエンコーダ10002は、 ジオメトリイメージを生成することができる。ジオメトリイメージとは、ポイントクラウドのジオメトリ情報を含むイメージデータを意味する。ジオメトリイメージの生成プロセスは、
図8のパッチの3つの軸(ノーマル、タンジェント、バイタンジェント)を用いる。
【0177】
ジオメトリイメージの生成(Geometry image generation)40002
【0178】
本プロセスでは、個別パッチのジオメトリイメージを構成する深さ(depth)値を決定し、上述したパッチパッキング(patch packing)のプロセスで決定されたパッチの位置に基づいて全体のジオメトリイメージを生成する。個別パットのジオメトリイメージを構成する深さ値を決定するプロセスは以下のように構成される。
【0179】
(1) 個別パッチの位置、サイズに関するパラメータを算出する。パラメータは以下のような情報を含む。パッチの位置はパッチ情報に含まれることを一実施例とする。
【0180】
ノーマル(normal)軸を示すインデックス:ノーマルは上述したパッチ生成のプロセスで求められ、タンジェント軸はノーマルと直角の軸のうちパッチイメージの水平(u)軸と一致する軸であり、バイタンジェント軸はノーマルと直角の軸のうちパッチイメージの垂直(v)軸と一致する軸であって、3つの軸は、
図8のように示される。
【0181】
図9は、実施例によるプロジェクションモードの最小モードおよび最大モード構成の一例を示す。
【0182】
実施例によるポイントクラウドビデオエンコーダ10002は、ジオメトリイメージを生成するために、パッチに基づくプロジェクションを行い、実施例によるプロジェクションのモードは最小モードおよび最大モードがある。
【0183】
パッチの3D空間座標:パッチを囲む最小サイズのバウンディングボックスによって算出される。例えば、パッチの3D空間座標にパッチのタンジェント方向最小値(patch 3D shift tangent axis)、パッチのバイタンジェント方向最小値(patch 3D shift bitangent axis)、パッチのノーマル方向最小値(patch 3D shift normal axis)などが含まれる。
【0184】
パッチの2Dサイズ:パッチが2Dイメージでパックされるときの水平、垂直方向サイズを示す。水平方向サイズ(patch 2D size u)はバウンディングボックスのタンジェント方向の最大値と最小値との差であり、垂直方向サイズ(patch 2D size v)はバウンディングボックスのバイタンジェント方向の最大値と最小値との差である。
【0185】
(2) パッチのプロジェクションモード(projection mode)を決定する。プロジェクションモードは、最小モード(min mode)と最大モード(max mode)のいずれか1つである。パッチのジオメトリ情報は、深さ値で示されるが、パッチのノーマル方向にパッチを成す各点をプロジェクトするとき、深さ値の最大値で構成されるイメージと最小値で構成されるイメージの2つのレイヤ(layer)のイメージが生成される。
【0186】
2つのレイヤのイメージd0とd1を生成するのに、最小モードである場合、
図9のように最小深さがd0に構成され、最小深さからサーフェス厚さ(surface thickness)以内に存在する最大深さがd1に構成される。
【0187】
例えば、ポイントクラウドが、
図9のように2Dに位置する場合、複数のポイントを含む複数のパッチがあってもよい。
図9のように、同じ陰影で示されたポイントが同一のパッチに属することを示す。空欄で示されたポイントのパッチをプロジェクトするプロセスを示す。
【0188】
空欄で示されたポイントを左側/右側にプロジェクトする場合、左側を基準として深さを0、1、2、..6、7、8、9のように1つずつ増加しながら右側にポイントの深さの算出のための数字を表記する。
【0189】
プロジェクションモード(Projection mode)は、ユーザの定義によって、すべてのポイントクラウドに同一の方法が適用されてもよく、フレームまたはパッチごとに異なる方法が適用されてもよい。フレームまたはパッチごとに異なるプロジェクションモードが適用される場合、圧縮効率を高めたり、消失点(missed point)が最小化できるプロジェクションモードが適応的に選ばれる。
【0190】
(3) 個別点の深さ値を算出する。
【0191】
最小モードである場合、各点のノーマル軸の最小値にパッチのノーマル方向最小値(patch 3D shift normal axis)から(1)のプロセスで算出されたパッチのノーマル方向最小値(patch 3D shift normal axis)を引いた値であるdepth0でd0イメージを構成する。同一の位置にdepth0とサーフェス厚さ以内の範囲にその他の深さ値が存在する場合、この値をdepth1に設定する。存在しない場合は、depth0の値をdepth1にも割り当てる。Depth1の値でd1イメージを構成する。
【0192】
例えば、d0のポイントの深さ決定において最小値が算出される(4 2 4 4 0 6 0 0 9 9 0 8 0)。また、d1のポイントの深さを決定することにおいて2つ以上のポイントのうち大きい値が算出されるか、1つのポイントだけがある場合はその値が算出される(4 4 4 4 6 6 6 8 9 9 8 8 9)。また、パッチのポイントが符号化、再構成(reconstruct)されるプロセスにおいて一部のポイントが損失される(例えば、図では8つのポイントが損失)。
【0193】
最大モードである場合、各点のノーマル軸の最大値にパッチのノーマル方向最小値(patch 3D shift normal axis)から(1)のプロセスで算出されたパッチのノーマル方向最小値(patch 3D shift normal axis)を引いた値であるdepth0でd0イメージを構成する。同一の位置にdepth0とサーフェス厚さ以内の範囲にその他の深さ値が存在する場合、この値をdepth1に設定する。存在しない場合、depth0の値をdepth1にも割り当てる。Depth1の値でd1イメージを構成する。
【0194】
例えば、d0のポイントの深さ決定において最大値が算出される(4 4 4 4 6 6 6 8 9 9 8 8 9)。また、d1のポイントの深さを決定することにおいて2つ以上のポイントのうち小さい値が算出されるか、1つのポイントだけがある場合はその値が算出される(4 2 4 4 5 6 0 6 9 9 0 8 0)。また、パッチのポイントが符号化、再構成(reconstruct)されるプロセスにおいて一部のポイントが損失される(例えば、図では6つのポイントが損失)。
【0195】
上述したプロセスから生成された個別パッチのジオメトリイメージを、上述したパッチパッキングプロセスを通じて生成された個別パッチの位置情報を用いて、全体のジオメトリイメージに配置させることで、全体のジオメトリイメージを生成することができる。
【0196】
生成された全体のジオメトリイメージのd1レイヤは、様々な方法によって符号化される。第一は、以前に生成したd1イメージの深さ値をそのまま符号化する方法(absolute d1 encoding method)である。第二は、以前に生成したd1イメージの深さ値とd0イメージの深さ値との差を符号化する方法(differential encoding method)である。
【0197】
このようなd0、d1の2つのレイヤの深さ値を用いた符号化の方法は、2つの深さの間にそのその他の点が存在する場合、その点のジオメトリ情報を符号化するプロセスで失うため、無損失圧縮(lossless coding)のために、Enhanced-Delta-Depth(EDD)codeを用してもよい。
【0198】
図10を参照して、EDD codeを具体的に説明する。
【0199】
【0200】
ポイントクラウドビデオエンコーダ10002および/またはV-PCC符号化の一部/全部のプロセス(例えば、ビデオ圧縮40009)などは、EODコードに基づいてポイントのジオメトリ情報を符号化することができる。
【0201】
EDD codeは、
図10のように、d1を含みサーフェス厚さの範囲内の全ての点の位置を2進で符号化する方法である。一例として、
図10の左側から二番目の列に含まれる点の場合、D0の上方に一番目、四番目の位置に点が存在し、二番目と三番目の位置は空いているため、0b1001(=9)のEDD codeで示される。D0と共にEDD codeを符号化して送信すると、受信端ではすべての点のジオメトリ情報を損失なく復元することができる。
【0202】
例えば、基準点上にポイントが存在すれば1であり、ポイントが存在しなければ0となり、4つのビットに基づいてコードが表現される。
【0203】
平滑化(Smoothing)40004
【0204】
平滑化は、圧縮プロセスから生じる画質の劣化によりパット境界面で発生し得る不連続性を除去する作業であり、以下のようなプロセスにより、ポイントクラウドビデオエンコーダ10002または平滑化部40004で行われる。
【0205】
(1) ジオメトリイメージよりポイントクラウドを再生成(reconstruction)する。本プロセスは、上述したジオメトリイメージ生成の逆過程といえる。例えば、符号化の逆過程が再生成である。
【0206】
(2) K-D treeなどを用いて再生成されたポイントクラウドを構成する各点の隣接点を算出する。
【0207】
(3) 各点に対して、その点がパッチ境界面に位置するか否かを判断する。一例として、現在点とは異なるプロジェクション平面(cluster index)を有する隣接点が存在する場合、その点はパッチの境界面に位置していると判断できる。
【0208】
(4) パッチ境界面が存在する場合、その点を隣接点の重心(隣接点の平均x、y、z座標に位置)へ移動させる。即ち、ジオメトリ値を変更する。存在しない場合には以前のジオメトリ値を維持する。
【0209】
図11は、実施例による隣接点のカラー(color)値を用いた復色(recoloring)の一例を示す。
【0210】
実施例によるポイントクラウドビデオエンコーダ10002またはテクスチャイメージ生成40003は、復色に基づいてテクスチャイメージを生成することができる。
【0211】
テクスチャイメージ生成(Texture image generation)40003
【0212】
テクスチャイメージ生成のプロセスは、上述したジオメトリイメージ生成のプロセスと同様に、個別パッチのテクスチャイメージを生成し、これらを決められた位置に配置することで、全体のテクスチャイメージを生成するプロセスからなる。ただし、個別パッチのテクスチャイメージを生成するプロセスにおいて、ジオメトリ生成のための深さ値に代わってその位置に対応するポイントクラウドを構成する点のカラー値(e.g. R、G、B)を有するイメージが生成される。
【0213】
ポイントクラウドを構成する各点のカラー値を求めるプロセスにおいて、上述した平滑化のプロセスを経たジオメトリが用いられる。平滑化されたポイントクラウドはオリジナルポイントクラウドにおいて一部点の位置が移動した状態である可能性があるため、変更された位置に適するカラーを探す復色のプロセスが必要となる。復色は隣接点のカラー値を用いて行われる。一例として、
図11のように、新たなカラー値は最隣接点のカラー値と隣接点のカラー値を考慮して算出できる。
【0214】
例えば、
図11を参照すれば、復色はポイントに対する最も近いオリジナルポイントの特質情報の平均および/またはポイントに対する最も近いオリジナル位置の特質情報の平均に基づいて変更された位置の適するカラー値を算出する。
【0215】
テクスチャイメージもまた、d0/d1の2つのレイヤで生成されるジオメトリイメージのように、t0/t1の2つのレイヤで生成される。
【0216】
付加パッチ情報圧縮(Auxiliary patch info compression)40005
【0217】
実施例によるポイントクラウドビデオエンコーダ10002または付加パッチ情報圧縮部40005は、付加パッチ情報(ポイントクラウドに関する付加的な情報)を圧縮することができる。
【0218】
付加パッチ情報圧縮部40005は、上述したパッチ生成、パッチパッキング、ジオメトリ生成のプロセスなどで生成した付加パッチ情報を圧縮する。付加パッチ情報には以下のようなパラメータが含まれる:
【0219】
プロジェクション(projection)平面(normal)を識別するインデックス(cluster index)
【0220】
パッチの3D空間位置:パッチのタンジェント方向最小値(patch 3D shift tangent axis)、パッチのバイタンジェント方向最小値(patch 3D shift bitangent axis)、パッチのノーマル方向最小値(patch 3D shift normal axis)
【0221】
パッチの2D空間位置、サイズ:水平方向サイズ(patch 2D size u)、垂直方向サイズ(patch 2D size v)、水平方向最小値(patch 2D shift u)、垂直方向最小値(patch 2D shift u)
【0222】
各々のブロックとパッチのマッピング情報:候補インデックス(candidate index)(上述したパッチの2D空間位置、サイズ情報に基づいてパッチを順に位置させた場合、1つのブロックに重複して複数のパッチがマップされることがある。このとき、マップされるパッチが候補リストを構成し、このリストの何番目のパッチのデータが該当ブロックに存在するかを示すインデックス)、local patch index(フレームに存在する全体のパッチのうちの1つを示すインデックス)。表1は、candidate listとlocal patch indexを用いたブロックとパッチのマッチングプロセスを示す疑似コード(pseudo code)である。
【0223】
候補リストの最大数はユーザによって定義される。
【0224】
【0225】
図12は、実施例によるプッシュ-プルバックグラウンドフィリング(push-pull background filling)の一例を示す。
【0226】
イメージパディングおよびグループ拡張(Image padding and group dilation)40006、40007、40008
【0227】
実施例によるイメージパッダは、プッシュ-プルバックグラウンドフィリング方式に基づいてパッチ領域以外の空間を意味のない付加的なデータで満たすことができる。
【0228】
イメージパディング40006、40007は、圧縮効率の向上を目的として、パッチ領域以外の空間を意味のないデータで満たすプロセスである。イメージパディングのために、パッチ内部の境界面側に該当する列または行のピクセル値がコピーされて空き空間を満たす方法が用いられる。または、
図12のように、パッドされないイメージの解像度を段階的に減らし、再び解像度が高めるプロセスにおいて低い解像度のイメージからのピクセル値で空き空間を満たすプッシュプルバックグラウンドフィリング(push-pull background filling)方法が用いられてもよい。
【0229】
グループ拡張(Group dilation)40008は、d0/d1、t0/t1の2つのレイヤからなるジオメトリ、テクスチャイメージの空き空間を満たす方法であって、上述したイメージパディングによって算出された2つのレイヤの空き空間の値を、2つのレイヤの同一位置に対する値の平均値で満たすプロセスである。
【0230】
図13は、実施例による4*4サイズのブロック(block)に対して可能なトラバーサルオーダー(traversal order)の一例を示す。
【0231】
占有マップ圧縮(Occupancy map compression)40012、40011
【0232】
実施例による占有マップ圧縮は、上述した占有マップを圧縮するプロセスであって、損失(lossy)圧縮のためのビデオ圧縮(video compression)と無損失(lossless)圧縮のためのエントロピー圧縮(entropy compression)との2つの方法がある。ビデオ圧縮は後述する。
【0233】
エントロピー圧縮のプロセスは、以下のように行われる。
【0234】
(1) 占有マップを構成する各々のブロックに対して、すべてのブロックが満たされた場合に1を符号化し、次のブロックに同じプロセスを繰り返す。そうではない場合には0を符号化し、(2)~(5)のプロセスを行う。
【0235】
(2) ブロックの満たされたピクセルに対してランレングス符号化(run-length coding)を行うためのbest traversal orderを決定する。
図13は、4*4サイズのブロックに対して可能な4つのtraversal orderを一例として示す。
【0236】
図14は、実施例によるベストトラバーサルオーダーの一例を示す。
【0237】
上述のように、実施例によるエントロピー圧縮部40012は、
図14のように、トラバーサルオーダー方式に基づいてブロックをコーティング(符号化)することができる。
【0238】
例えば、可能なトラバーサルオーダーのうち、最小のラン(run)数を有するbest traversal orderを選択し、そのインデックスを符号化する。一例として、上述した
図13の3番目のトラバーサルオーダーを選択する場合であり、この場合、run数は2と最小化でき、これをベストトラバーサルオーダー(best traversal order)として選択する。
【0239】
run数を符号化する。
図14の例では、2つのrunが存在することから、2を符号化する。
【0240】
(4) 1番目のrunの占有(occupancy)を符号化する。
図14の例では、1番目のrunが満たされていないピクセルに該当するため、0を符号化する。
【0241】
(5) 個別runに対する(runの数分だけの)長さ(length)を符号化する。
図14の例では、1番目のrunと2番目のrunの長さである6と10を順次に符号化する。
【0242】
ビデオ圧縮(Video compression)40009、40010、40011
【0243】
実施例によるビデオ圧縮部(40009、40010、40011)は、HEVC、VVCなどの2Dビデオコーデック(video codec)などを用いて、上述したプロセスで生成されたジオメトリイメージ、テクスチャイメージ、占有マップイメージなどのシーケンスを符号化する。
【0244】
図15は、実施例による2Dビデオ/イメージエンコーダ(2D video/image Encoder)の一例を示し、符号化装置とも呼ぶ。
【0245】
図15は、上述したビデオ圧縮部(Video compression unit)40009、40010、40011が適用される実施例であって、ビデオ/映像信号の符号化が行われる2Dビデオ/イメージエンコーダ15000の概略なブロック図を示す。2Dビデオ/イメージエンコーダ15000は、上述したポイントクラウドビデオエンコーダ10002に含まれるか、または内部/外部のコンポーネントからなる。
図15の各構成要素は、ソフトウェア、ハードウェア、プロセッサおよび/またはそれらの組み合わせに対応する。
【0246】
ここで、入力イメージは、上述したジオメトリイメージ、テクスチャイメージ(特質イメージ)、占有マップイメージの1つであってもよい。
図15の2Dビデオ/イメージエンコーダがビデオ圧縮部40009に適用される場合、2Dビデオ/イメージエンコーダ15000に入力されるイメージはパッドされたジオメトリイメージであり、2Dビデオ/イメージエンコーダ15000から出力されるビットストリームは圧縮されたジオメトリイメージのビットストリームである。
図15の2Dビデオ/イメージエンコーダがビデオ圧縮部40010に適用される場合、2Dビデオ/イメージエンコーダ15000に入力されるイメージはパッドされたテクスチャイメージであり、2Dビデオ/イメージエンコーダ15000から出力されるビットストリームは圧縮されたテクスチャイメージのビットストリームである。
図15の2Dビデオ/イメージエンコーダがビデオ圧縮部40011に適用される場合、2Dビデオ/イメージエンコーダ15000に入力されるイメージは占有マップイメージであり、2Dビデオ/イメージエンコーダ15000から出力されるビットストリームは圧縮された占有マップイメージのビットストリームである。
【0247】
インター予測部15090およびイントラ予測部15100を合わせて予測部と呼ぶ。即ち、予測部は、インター予測部15090およびイントラ予測部15100を含む。変換部15030、量子化部15040、逆量子化部15050、逆変換部15060を合わせて、残余(residual)処理部とも呼ぶ。残余処理部は、減算部15020をさらに含んでもよい。
図15の映像分割部15010、減算部15020、変換部15030、量子化部15040、逆量子化部15050、逆変換部15060、加算部155、フィルタリング部15070、インター予測部15090、イントラ予測部15100およびエントロピー符号化部15110は、実施例によれば、1つのハードウェアコンポーネント(例えば、エンコーダまたはプロセッサ)で構成される。また、メモリ15080は、DPB(decoded picture buffer)を含み、デジタル記憶媒体で構成される。
【0248】
映像分割部15010は、符号化装置15000に入力された入力映像(または、ピクチャー、フレーム)を1つ以上の処理ユニット(processing unit)に分割する。一例として、処理ユニットは、コーディングユニット(coding unit、CU)とも呼ぶ。この場合、コーディングユニットは、コーディングツリーユニット(coding tree unit、CTU)または最大コーディングユニット(largest coding unit、LCU)からQTBT(Quad-tree binary-tree)構造によって再帰的に(recursively)分割される。例えば、1つのコーディングユニット、Quad-tree構造および/またはbinary-tree構造に基づいて下位(deeper)深さの複数のコーディングユニットに分割される。この場合、例えば、先にQuad-treeが適用されて、その後にbinary-treeが適用されてもよい。または、binary-treeが先に適用されてもよい。これ以上分割されない最終コーディングユニットに基づいて、本明細書によるコーディング手続きが行われてもよい。この場合、映像の特性に応じたコーディング効率などに基づいて、最大のコーディングユニットが最終符号化ユニットとして用いられてもよく、または必要に応じてコーディングユニットは再帰的に(recursively)より下位深さのコーディングユニットに分割されて、最適なサイズのコーディングユニットが最終コーディングユニットとして用いられる。ここで、コーディング手続きとは、後述する予測、変換、および復元などの手続きを含む。その他の例として、処理ユニットは予測ユニット(PU:Prediction Unit)または変換ユニット(TU:Transform Unit)をさらに含んでもよい。この場合、予測ユニットおよび変換ユニットのそれぞれは、上述した最終コーディングユニットから分割またはパーティショニングされる。予測ユニットはサンプル予測の単位であり、変換ユニットは変換係数を誘導する単位および/または変換係数から残余信号(residual signal)を誘導する単位である。
【0249】
ユニットは、場合によって、ブロック(block)または領域(area)またはモジュールなどの用語と混用する。一般の場合、MxNブロックは、M個の列とN個の行からなるサンプルまたは変換係数(transform coefficient)の集合を示す。サンプルは、一般にピクセルまたはピクセルの値を示し、輝度(luma)成分のピクセル/ピクセル値だけを示してもよく、彩度(chroma)成分のピクセル/ピクセル値だけを示してもよい。サンプルは1つのピクチャー(または、映像)をピクセル(pixel)またはペル(pel)に対応する用語として使用する。
【0250】
符号化装置15000の減算部15020は、入力映像信号(オリジナルブロック、オリジナルさんブルアレイ)においてインター予測部15090またはイントラ予測部15100から出力された予測信号(予測されたブロック、予測サンプルアレイ)を減算して、残余信号(residual signal、残余ブロック、残余サンプルアレイ)を生成し、生成した残余信号は変換部15030へ送信される。この場合、図示のように、符号化装置15000内で入力映像信号(オリジナルブロック、オリジナルサンプルアレイ)において予測信号(予測ブロック、予測サンプルアレイ)を減算するユニットは減算部15020と呼ぶことができる。予測部は処理対象ブロック(以下、現在ブロックという)に対する予測を行い、現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成する。予測部は現在ブロックまたはCU単位でイントラ予測を適用するか、またはインター予測を適用するかを決定する。予測部は、各々の予測モードに関して後述するように、予測モード情報などの予測に関する様々な情報を生成してエントロピー符号化部15110に伝送する。予測に関する情報はエントロピー符号化部15110で符号化されてビットストリームの形式で出力される。
【0251】
予測部のイントラ予測部15100は、現在ピクチャー内のサンプルを参照して現在ブロックを予測する。参照されるサンプルは、予測モードに応じて現在ブロックに隣接(neighbor)して位置するか、または離れて位置する。イントラ予測において予測モードは複数の非方向性モードと複数の方向性モードを含む。非方向性モードは、例えばDCモードおよび平面モード(Planarモード)を含む。方向性モードは、予測方向の精密度に応じて、例えば33つの方向性予測モードまたは65つの方向性予測モードを含む。ただし、これは例示であって、設定によってその以上またはその以下の方向性予測モードが用いられる。イントラ予測部15100の隣接ブロックに適用された予測モードを用いて、現在ブロックに適用される予測モードを決定してもよい。
【0252】
予測部のインター予測部15090は、参照ピクチャー上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックに対する予測されたブロックを導く。このとき、インター予測モードで送信される動き情報の量を減らすために、隣接ブロックと現在ブロックとの動き情報の相関性に基づいて動き情報をブロック、サブブロックまたはサンプル単位で予測する。動き情報は、動きベクトルおよび参照ピクチャーインデックスを含む。動き情報はインター予測方向(L0予測、L1予測、Bi予測など)情報をさらに含む。インター予測の場合、隣接ブロックは現在ピクチャー内に存在する空間的隣接ブロック(spatial neighboring block)と参照ピクチャーに存在する時間的隣接ブロック(temporal neighboring block)を含む。参照ブロックを含む参照ピクチャーと時間的隣接ブロックを含む参照ピクチャーは同一であってもよく、異なってもよい。時間的隣接ブロックは、同一位置参照ブロック(collocated reference block)、同一位置CU(colCU)などと呼ばれ、時間的隣接ブロックを含む参照ピクチャーは、同一位置ピクチャー(collocated picture、colPic)とも呼ばれる。例えば、インター予測部15090は隣接ブロックに基づいて動き情報の候補リストを構成し、現在ブロックの動きベクトルおよび/または参照ピクチャーインデックスを導出するためにいずれの候補が使用されるかを指示する情報を生成する。様々な予測モードに基づいてインター予測が行われ、例えばスキップモードとマージモードの場合、インター予測部15090は、隣接ブロックの動き情報を現在ブロックの動き情報として用いる。スキップモードの場合、マージモードとは異なり、残余信号が送信されないことがある。動き情報予測(motion vector prediction、MVP)モードの場合、隣接ブロックの動きベクトルを動きベクトル予測者(motion vector predictor)として用いて、動きベクトル差分(motion vector difference)をシグナリングすることで現在ブロックの動きベクトルを指示する。
【0253】
インター予測部15090またはイントラ予測部15100によって生成された予測信号は、復元信号の生成のために用いられるか、残余信号の生成のために用いられる。
【0254】
変換部15030は残余信号に変換方法を適用して変換係数(transform coefficients)を生成する。例えば、変換方法は、DCT(Discrete Cosine Transform)、DST(Discrete Sine Transform)、KLT(Karhunen-Loeve Transform)、GBT(Graph-Based Transform)、またはCNT(Conditionally Non-linear Transform)のうち少なくとも1つを含む。ここで、GBTはピクセル間の関係情報をグラフで表現するとき、このグラフから得られた変換を意味する。CNTは以前に復元されたすべてのピクセル(all previously reconstructed pixel)を用いて予測信号を生成し、それに基づいて取得される変換を意味する。また、変換プロセスは、正方形の同一サイズのピクセルブロックに適用されてもよく、正方形ではない可変サイズのブロックに適用されてもよい。
【0255】
量子化部15040は、変換係数を量子化してエントロピー符号化部15110に送信し、エントロピー符号化部15110は量子化した信号(量子化した変換係数に関する情報)を符号化してビットストリームに出力する。量子化した変換係数に関する情報は残余情報と呼ぶ。量子化部15040は係数スキャン順(scan order)に基づいてブロック形態の量子化変換係数を1次元ベクトル形に再整列し、1次元ベクトル形の量子化変換係数に基づいて量子化した変換係数に関する情報を生成することもできる。
【0256】
エントロピー符号化部15110は、例えば、指数ゴロム(exponential Golomb)、CAVLC(context-adaptive variable length coding)、CABAC(context-adaptive binary arithmetic coding)などのような様々な符号化方法を行う。エントロピー符号化部15110は、量子化した変換係数の他にビデオ/イメージの復元に必要な情報(例えば、シンタックス要素(syntax elements)の値など)を共にまたは別として符号化する。符号化した情報(ex. 符号化したビデオ/映像情報)はビットストリームの形式でNAL(network abstraction layer)ユニットの単位で送信または格納される。
【0257】
ビットストリームはネットワークを介して送信されてもよく、デジタル記憶媒体に記憶されてもよい。ここで、ネットワークは放送網および/または通信網などを含み、デジタル記憶媒体はUSB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含む。エントロピー符号化部15110から出力された信号を送信する送信部(未図示)および/または記憶する記憶部(未図示)が符号化装置15000の内部/外部要素として構成されてもよく、または送信部はエントロピー符号化部15110に含まれてもよい。
【0258】
量子化部15040から出力された量子化した変換係数は、予測信号を生成するために用いられる。例えば、量子化した変換係数に逆量子化部15040および逆変換部15060によって逆量子化および逆変換を適用することで、残余信号(残余ブロックまたは残余サンプル)を復元する。加算部15200は復元された残余信号をインター予測部15090またはイントラ予測部15100から出力された予測信号に加えることで、復元(reconstructed)信号(復元ピクチャー、復元ブロック、復元サンプルアレイ)を生成する。スキップモードが適用された場合のように、処理対象ブロックに対する残余がない場合、予測されたブロックが復元ブロックとして用いられる。加算部15200は復元部または復元ブロック生成部と呼ばれる。生成された復元信号は現在ピクチャー内の次の処理対象ブロックのイントラ予測のために用いられてもよく、後述のようにフィルタリングを経て次のピクチャーのインター予測のために用いられてもよい。
【0259】
フィルタリング部15070は、加算部15200から出力される復元信号にフィルタリングを適用して、主観的/客観的な画質を向上させることができる。例えば、フィルタリング部15070は、復元ピクチャーに様々なフィルタリング方法を適用して修正した(modified)復元ピクチャーを生成し、修正した復元ピクチャーをメモリ15080、具体的にメモリ15080のDPBに格納する。様々なフィルタリング方法には、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルター(adaptive loop filter)、双方向フィルター(bilateral filter)などがある。フィルタリング部15070は、後述する各々のフィルタリング方法のように、フィルタリングに関する様々な情報を生成してエントロピー符号化部15110へ伝送する。フィルタリングに関する情報はエントロピー符号化部15110で符号化されてビットストリームの形式で出力される。
【0260】
メモリ15080に格納された修正した(modified)復元ピクチャーは、インター予測部15090において参照ピクチャーとして用いられる。符号化装置はこれによってインター予測が適用される場合、符号化装置15000および復号装置における予測ミスマッチを避けることができ、符号化の効率を向上させることもできる。
【0261】
メモリ15080のDPBは、修正した復元ピクチャーをインター予測部15090における参照ピクチャーとして用いるために格納する。メモリ15080は、現在ピクチャー内の動き情報が導出された(または符号化された)ブロックの動き情報および/または既に復元したピクチャー内のブロックの動き情報を格納する。格納した動き情報は空間的隣接ブロックの動き情報または時間的隣接ブロックの動き情報として活用するためにインター予測部15090に伝送する。メモリ15080は現在ピクチャー内において復元したブロックの復元サンプルを格納して、イントラ予測部15100へ伝送する。
【0262】
なお、上述した予測、変換、量子化の手続きのうちの少なくとも1つが省略されてもよい。例えば、PCM(pulse code modulation)が適用されるブロックに対しては、予測、変換、量子化の手続きを省略し、オリジナルサンプルの値をそのまま符号化してビットストリームに出力してもよい。
【0263】
図16は、実施例によるV-PCC復号プロセス(decoding process)の一例を示す。
【0264】
V-PCC復号プロセスまたはV-PCCデコーダは、
図4のV-PCC符号化プロセス(またはエンコーダ)の逆プロセスとなる。
図16の各構成要素は、ソフトウェア、ハードウェア、プロセッサ、および/またはそれらの組み合わせに対応する。
【0265】
デマルチプルクサ(demultiplexer)16000は、圧縮されたビットストリームをデマルチプルクスして圧縮されたテクスチャイメージ、圧縮されたジオメトリイメージ、圧縮された占有マップイメージ、圧縮された付加パッチ情報をそれぞれ出力する。
【0266】
ビデオ復元(video decompressionまたはビデオ復元部)16001、16002は、圧縮されたテクスチャイメージおよび圧縮されたジオメトリイメージのそれぞれを復元する。
【0267】
占有マップ復元(occupancy map decompressionまたは占有マップ復元部)16003は、圧縮された占有マップイメージを復元する。
【0268】
付加パッチ情報復元(auxiliary patch information decompressionまたは付加パッチ情報復元部)16004は、圧縮された付加パッチ情報を復元する。
【0269】
ジオメトリ再構成(geometry reconstructionまたはジオメトリ再構成部)16005は、復元されたジオメトリイメージ、復元された占有マップ、および/または復元された付加パッチ情報に基づいてジオメトリ情報を復元(再構成)する。例えば、符号化プロセスにおいて変更したジオメトリを再構成する。
【0270】
平滑化(smoothingまたは平滑化部)16006は、再構成されたジオメトリに対して平滑化を適用する。例えば、平滑化フィルタリングが適用される。
【0271】
テキスチャー再構成(texture reconstructionまたはテキスチャー再構成部)16007は、復元されたテクスチャイメージおよび/または平滑化されたジオメトリからテキスチャーを再構成する。
【0272】
カラー平滑化(color smoothingまたはカラー平滑化部)16008は、再構成されたテキスチャーからカラー値を平滑化する。例えば、平滑化フィルタリングが適用される。
【0273】
その結果、再構成されたポイントクラウドデータが生成される。
【0274】
図16は、圧縮された占有マップ、ジオメトリイメージ、テクスチャイメージ、付加パッチ情報を復元(または復号)してポイントクラウドを再構成するためのV-PCCの復号プロセスを示す。
【0275】
図16に示された各ユニットは、プロセッサ、ソフトウェア、ハードウェアのうちの少なくとも1つとして動作する。実施例による
図16の各ユニットの詳細な動作は以下のようである。
【0276】
ビデオ復元(Video decompression)16001、16002
【0277】
上述したビデオ圧縮の逆プロセスであって、HEVC、VVCなどの2Dビデオコーデックを用いて、上記プロセスで生成されたジオメトリイメージのビットストリーム、圧縮されたテクスチャイメージのビットストリームおよび/または圧縮された占有マップイメージのビットストリームをビデオ圧縮するプロセスを逆にして復号するプロセスである。
【0278】
図17は、実施例による2Dビデオ/イメージデコーダ(2D Video/Image Decoder)の一例を示し、復号装置とも呼ぶ。
【0279】
2Dビデオ/イメージデコーダは、
図15の2Dビデオ/イメージエンコーダの逆過程となる。
【0280】
図17の2Dビデオ/イメージデコーダは、
図16のビデオ復元部(Video decompression unit)16001、16002の実施例であって、ビデオ/映像信号の復号が行われる2D video/image decoder17000の概略なブロック図を示す。2Dビデオ/イメージデコーダ17000は、上述したポイントクラウドビデオデコーダ10008に含まれてもよく、内部/外部コンポーネントとして構成されてもよい。
図17の各構成要素は、ソフトウェア、ハードウェア、プロセッサ よび/またはそれらの組み合わせに対応する。
【0281】
ここで、入力ビットストリームは、ジオメトリイメージのビットストリーム、テクスチャイメージ(attribute(s) image)のビットストリーム、占有マップイメージのビットストリームの1つである。
図17の2Dビデオ/イメージデコーダがビデオ復元部16001に適用される場合、2Dビデオ/イメージデコーダに入力されるビットストリームは圧縮されたテクスチャイメージのビットストリームであり、2Dビデオ/イメージデコーダから出力される復元イメージは復元されたテクスチャイメージである。
図17の2Dビデオ/イメージデコーダがビデオ復元部16002に適用される場合、2Dビデオ/イメージデコーダに入力されるビットストリームは圧縮されたジオメトリイメージのビットストリームであり、2Dビデオ/イメージデコーダから出力される復元イメージは復元されたジオメトリイメージである。
図17の2Dビデオ/イメージデコーダは圧縮された占有マップイメージのビットストリームが入力されて復元される。復元映像(または出力映像、復号された映像)は、上述したジオメトリイメージ、テクスチャイメージ(attribute(s) image)、占有マップイメージに対する復元映像を示す。
【0282】
図17を参照すれば、インター予測部17070およびイントラ予測部17080を合わせて予測部と呼ぶ。即ち、予測部はインター予測部17070およびイントラ予測部17080を含む。逆量子化部17020、逆変換部17030を合わせて残余処理部と呼ぶ。即ち、残余処理部は逆量子化部17020、逆変換部17030を含む。
図17のエントロピー復号部17010、逆量子化部17020、逆変換部17030、加算部17040、フィルタリング部17050、インター予測部17070およびイントラ予測部17080は、実施例によれば、1つのハードウェアコンポーネント(例えば、デコーダまたはプロセッサ)によって構成される。また、メモリ17060はDPB(decoded picture buffer)を含んでもよく、デジタル記憶媒体によって構成されてもよい。
【0283】
ビデオ/映像情報を含むビットストリームが入力されると、復号装置17000は、
図15の符号化装置においてビデオ/映像情報が処理されたプロセスに対応して映像を復元する。例えば、復号装置17000は、符号化装置で適用された処理ユニットを用いて復号を行う。よって、復号の処理ユニットは、例えば、コーディングユニットであり、コーディングユニットはコーディングツリーユニットまたは最大コーディングユニットからQuad-tree構造および/またはbinary-tree構造によって分割される。また、復号装置17000によって復号されて出力された復元映像信号は再生装置で再生される。
【0284】
復号装置17000は、符号化装置から出力された信号をビットストリームの形式で受信し、受信した信号はエントロピー復号部17010で復号される。例えば、エントロピー復号部17010はビットストリームをパーシングして映像復元(またはピクチャー復元)に必要な情報(ex.ビデオ/映像情報)を導出する。例えば、エントロピー復号部17010は指数ゴロム符号化、CAVLC又はCABACなどのコーディング方法に基づいてビットストリーム内の情報を復号し、映像復元に必要なシンタックス要素の値、残余に関する変換係数の量子化された値を出力する。より詳細に、CABACエントロピー復号方法は、ビットストリームにおいて各構文要素に該当するビンを受信し、復号対象構文要素情報と隣接および復号対象ブロックの復号情報または前のステップで復号されたシンボル/ビンの情報を用いて文脈(context)モデルを決定して、決定した文脈モデルに応じてビン(bin)の発生確率を予測し、ビンの算術復号(arithmetic decoding)を行って、各構文要素の値に該当するシンボルを生成する。このとき、CABACエントロピー復号方法は、文脈モデルを決定した後、次のシンボル/ビンの文脈モデルのために復号されたシンボル/ビンの情報を用いて文脈モデルをアップデートする。エントロピー復号部17010で復号された情報のうち予測に関する情報は、予測部(インター予測部17070およびイントラ予測部17080)に提供され、エントロピー復号部17010でエントロピー復号が行われた残余値、即ち量子化された変換係数および関連パラメータ情報は、逆量子化部17020へ入力される。また、エントロピー復号部17010で復号された情報のうちフィルタリングに関する情報は、フィルタリング部17050へ提供される。一方、符号化装置から出力された信号を受信する受信部(未図示)が復号装置17000の内部/外部要素としてさらに構成されてもよく、受信部はエントロピー復号部17010の構成要素であってもよい。
【0285】
逆量子化部17020では量子化された変換係数を量子化して変換係数を出力する。逆量子化部17020は量子化された変換係数を2次元のブロック形に再整列する。この場合、符号化装置で行われた係数スキャン順に基づいて再整列を行う。逆量子化部17020は量子化パラメータ(例えば、量子化ステップサイズ情報)を用いて量子化された変換係数に対する逆量子化を行い、変換係数(transform coefficient)を取得する。
【0286】
逆変換部17030では変換係数を逆変換して残余信号(残余ブロック、残余サンプルアレイ)を取得する。
【0287】
予測部は現在ブロックに対する予測を行い、現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成する。予測部はエントロピー復号部17010から出力された予測に関する情報に基づいて現在ブロックにイントラ予測が適用されるか、またはインター予測が適用されるかを決定して、具体的なイントラ/インター予測モードを決定する。
【0288】
予測部のイントラ予測部17080は、現在ピクチャー内のサンプルを参照して現在ブロックを予測する。参照されるサンプルは予測モードに応じて、現在のブロックに隣接(neighbor)して位置してもよく、または離れて位置してもよい。イントラ予測において予測モードは複数の非方向性モードと複数の方向性モードとを含む。イントラ予測部17080は隣接ブロックに適用された予測モードを用いて、現在ブロックに適用される予測モードを決定する。
【0289】
予測部のインター予測部17070は、参照ピクチャー上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックに対する予測されたブロックを導く。このとき、インター予測モードにおいて送信される動き情報の量を減らすために隣接ブロックと現在ブロックとの動き情報の相関性に基づいて動き情報をブロック、サブブロックまたはサンプル単位で予測する。動き情報は動きベクトルおよび参照ピクチャーインデックスを含む。動き情報はインター予測方法(L0予測、L1予測、Bi予測など)情報をさらに含む。インター予測の場合、隣接ブロックは現在ピクチャー内に存在する空間的隣接ブロック(spatial neighboring block)と参照ピクチャーに存在する時間的隣接ブロック(temporal neighboring block)を含む。例えば、インター予測部17070は隣接ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて現在ブロックの動きベクトルおよび/または参照ピクチャーインデックスを導出する。様々な予測モードに基づいてインター予測が行われ、予測に関する情報は現在ブロックに対するインター予測のモードを指示する情報を含む。
【0290】
加算部17040は逆変換部17030で取得した残余信号をインター予測部17070またはイントラ予測部17080から出力された予測信号(予測されたブロック、予測サンプルアレイ)に加えることで復元信号(復元ピクチャー、復元ブロック、復元サンプルアレイ)を生成する。スキップモードが適用された場合のように、処理対象ブロックに対する残余がない場合、予測されたブロックが復元ブロックとして用いられる。
【0291】
加算部17040は復元部または復元ブロック生成部と呼ぶ。生成された復元信号は現在ピクチャー内の次の処理対象ブロックのイントラ予測のために用いられてもよく、後述のように、フィルタリングを経て次のピクチャーのインター予測のためにも用いられてもよい。
【0292】
フィルタリング部17050は加算部17040から出力される復元信号にフィルタリングを適用して主観的/客観的な画質を向上させる。例えば、フィルタリング部17050は復元ピクチャーに様々なフィルタリング方法を適用して、修正された(modified)復元ピクチャーを生成し、修正された復元ピクチャーをメモリ17060、具体的にメモリ17060のDPBに送信する。様々なフィルタリング方法には、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルター(adaptive loop filter)、双方向フィルター(bilateral filter)などが含む。
【0293】
メモリ17060のDPBに格納された(修正された)復元ピクチャーは、インター予測部17070において参照ピクチャーとして使用される。メモリ17060は、現在ピクチャー内の動き情報が導出された(または復号された)ブロックの動き情報および/または既に復元されたピクチャー内のブロックの動き情報を格納する。格納された動き情報は空間的隣接ブロックの動き情報または時間的隣接ブロックの動き情報として活用するために、インター予測部17070へ伝送する。メモリ17060は現在ピクチャー内の復元されたブロックの復元サンプルを格納して、イントラ予測部17080へ伝送する。
【0294】
本明細書において、
図15の符号化装置15000のフィルタリング部15070、インター予測部15090およびイントラ予測部15100で説明した実施例は、復号装置17000のフィルタリング部17050、インター予測部17070およびイントラ予測部17080にも同一又は対応する方法が適用できる。
【0295】
一方、上述した予測、逆変換、逆量子化の手続きのうちの少なくとも1つが省略されてもよい。例えば、PCM(pulse code modulation)が適用されるブロックに対しては、予測、逆変換、逆量子化の手続きを省略して、復号されたサンプルの値をそのまま復元映像のサンプルとして使用する。
【0296】
占有マップ復元(Occupancy map decompression)16003
【0297】
上述した占有マップ圧縮の逆過程であり、圧縮された占有マップビットストリームを復号して占有マップを復元するプロセスである。
【0298】
付加パッチ情報復元(Auxiliary patch info decompression)16004
【0299】
上述した付加パッチ情報圧縮の逆過程であり、圧縮された付加パッチ情報ビットストリームを復号して付加パッチ情報を復元するプロセスである。
【0300】
ジオメトリ再構成(Geometry reconstruction)16005
【0301】
上述したジオメトリイメージ生成の逆過程である。まず、復元された占有マップと付加パッチ情報に含まれるパッチの2D位置/サイズ情報およびブロックとパッチとのマッピング情報を用いてジオメトリイメージからパッチを抽出する。この後、抽出したパッチのジオメトリイメージと付加パッチ情報に含まれるパッチの3D位置情報を用いて、ポイントクラウドを3D空間上に復元する。1つのパッチ内に存在する任意の点(u、v)に該当するジオメトリ値をg(u、v)といい、パッチの3D空間上の位置のnormal軸、tangent軸、bitangent軸の座標値を(δ0、s0、r0)とするとき、点(u、v)にマップされる3D空間上の位置のnormal軸、tangent軸、bitangent軸の座標値であるδ(u、v)、s(u、v)、r(u、v)は、以下のように示される。
【0302】
δ(u,v) = δ0 + g(u、v)
【0303】
s(u,v) = s0 + u
【0304】
r(u,v) = r0 + v
【0305】
平滑化(Smoothing)16006
【0306】
上述した符号化プロセスにおける平滑化と同様であり、圧縮プロセスで発生する画質の劣化によりパッチ境界面から生じ得る不連続性を除去するためのプロセスである。
【0307】
テキスチャー再構成(Texture reconstruction)16007
【0308】
平滑化されたポイントクラウドを構成する各点にカラー値を与えてカラーポイントクラウドを復元するプロセスである。上述したジオラマ再構成のプロセスで再構成されたジオメトリイメージとポイントクラウドのマッピング情報を用いて、2D空間でジオメトリイメージと同一位置のテキスチャーイメージピクセルに該当するカラー値を、3D空間で同一位置に対応するポイントクラウドの点に付与することで行われる。
【0309】
カラー平滑化(Color smoothing)16008
【0310】
上述したジオメトリ平滑化のプロセスと類似し、圧縮プロセスから発生する画質の劣化によってパッチ境界面から生じ得るカラー値の不連続性を除去するためのプロセスである。カラー平滑化は、以下のように行われる。
【0311】
(1) K-D treeなどを用いて復元されたカラーポイントクラウドを構成する各点の隣接点を算出する。上述したジオメトリ平滑化のプロセスで算出された隣接点情報をそのまま用いてもよい。
【0312】
(2) 各点に対して、その点がパッチ境界面に位置しているか否かを判断する。上述したジオメトリ平滑化のプロセスで算出された境界面情報をそのまま用いてもよい。
【0313】
(3) 境界面に存在する点の隣接点に対して、カラー値の分布を調べて平滑化を行うかどうかを判断する。一例として、輝度値のエントロピーが境界値(threshold local entry)以下である場合(類似する輝度値が多い場合)、エッジ部分ではないと判断して平滑化を行う。平滑化の方法としては、隣接点の平均値でその点のカラー値を置き換える方法がある。
【0314】
図18は、実施例によるV-PCCベースのポイントクラウドデータの圧縮および送信のための送信装置の動作の流れの一例を示す。
【0315】
実施例による送信装置は、
図1の送信装置、
図4の符号化プロセス、
図15の2Dビデオ/イメージエンコーダに対応するか、それらの動作の一部/全部を行ってもよい。送信装置の各構成要素は、ソフトウェア、ハードウェア、プロセッサおよび/またはそれらの組み合わせに対応する。
【0316】
V-PCCを用いたポイントクラウドデータの圧縮および送信のための送信端の動作は図に示めすようである。
【0317】
実施例によるポイントクラウドデータ送信装置は、送信装置、送信システムなどと呼ばれる。
【0318】
パッチ生成部18000は、ポイントクラウドデータが入力されて、ポイントクラウド(point cloud)の2Dイメージマッピングのためのパッチ(patch)を生成する。パッチ生成の結果物としてパッチ情報および/または付加パッチ情報が生成され、生成されたパッチ情報および/または付加パッチ情報は、ジオメトリイメージ(geometry image)生成、テクスチャイメージ(texture image)生成、平滑化(smoothing)または平滑化のためのジオメトリ復元プロセスに用いられる。
【0319】
パッチパッキング部18001は、パッチ生成部18000で生成されたパッチを2Dイメージ内にマップするパッチパッキングのプロセスを行う。例えば、1つまたは1つ以上のパッチがパックされる。パッチパッキングの結果物として占有マップ(occupancy map)が生成され、占有マップはジオメトリイメージ生成、ジオメトリイメージパーディング、テクスチャイメージパーディング、および/または平滑化のためのジオメトリ復元プロセスに用いられる。
【0320】
ジオメトリイメージ生成部18002は、ポイントクラウドデータ、パッチ情報(または付加パッチ情報)、および/または占有マップを用いてジオメトリイメージを生成する。生成したジオメトリイメージは、符号化前処理部18003で前処理した後、ビデオ符号化部18006で1つのビットストリーム(bitstream)に符号化される。
【0321】
符号化前処理部18003は、イメージパディングを含む。即ち、生成されたジオメトリイメージと生成されたテクスチャイメージの一部空間が意味のないデータでパッドされる。符号化前処理部18003は生成されたテクスチャイメージまたはイメージパディングが行われたテクスチャイメージに対するグループ拡張(group dilation)のプロセスをさらに含んでもよい。
【0322】
ジオメトリ復元部18010は、ビデオ符号化部18006で符号化されたジオメトリビットストリーム、付加パッチ情報、および/または占有マップを用いて3Dジオメトリイメージを再構成(reconstruction)する。
【0323】
平滑化部18009は、付加パッチ情報に基づいてジオメトリ復元部18010で再構成されて出力される3Dジオメトリイメージを平滑化してテクスチャイメージ生成部18004に出力する。
【0324】
テクスチャイメージ生成部18004は、平滑化された3Dジオメトリ、ポイントクラウドデータ、パッチ(またはパックされたパッチ)、パッチ情報(または付加パッチ情報)および/または占有マップを用いてテクスチャイメージを生成する。生成されたテクスチャイメージは符号化前処理部18003で前処理された後、ビデオ符号化部18006で1つのビデオビットストリームに符号化される。
【0325】
メタデータ符号化部18005は、付加パッチ情報を1つのメタデータビットストリームに符号化する。
【0326】
ビデオ符号化部18006は、符号化前処理部18003から出力されるジオメトリイメージとテクスチャイメージを各々のビデオビットストリームで符号化し、占有マップを1つのビデオビットストリームに符号化する。ビデオ符号化部18006は各々の入力イメージに対して、
図15の2Dビデオ/イメージエンコーダをそれぞれ適用して符号化することを一実施例とする。
【0327】
多重化部18007は、ビデオ符号化部18006から出力されるジオメトリのビデオビットストリーム、テクスチャイメージのビデオビットストリーム、占有マップのビデオビットストリームとメタデータ符号化部18005から出力されるメタデータ(付加パッチ情報を含む)ビットストリームを1つのビットストリームに多重化する。
【0328】
送信部18008は、多重化部18007から出力されるビットストリームを受信端に送信する。または、多重化部18007と送信部18008との間にファイル/セグメントカプセル化部をさらに備え、多重化部18007から出力されるビットストリームをファイルおよび/またはセグメントの形式でカプセル化して送信部18008へ出力してもよい。
【0329】
図18のパッチ生成部18000、パッチパッキング部18001、ジオメトリイメージ生成部18002、テクスチャイメージ生成部18004、メタデータ符号化部18005、平滑化部18009は、
図4のパッチ生成部40000、パッチパッキング部40001、ジオメトリイメージ生成部40002、テクスチャイメージ生成部40003、付加パッチ情報圧縮部40005、平滑化部40004のそれぞれに対応する。また、
図18の符号化前処理部18003は、
図4のイメージパディング部40006、40007およびグループ拡張部40008を含んでもよく、
図18のビデオ符号化部18006は、
図4のビデオ圧縮部40009、40010、40011および/またはエントロピー圧縮部40012を含んでもよい。従って、
図18で説明しない部分は、
図4乃至
図15の説明を参照すればよい。上述したブロックは省略してもよく、類似または同一の機能を有するブロックによって代替されてもよい。また、
図18に示された各ブロックは、プロセッサ、ソフトウェア、ハードウェアのうちの少なくとも1つとして動作することができる。あるいは、生成されたジオメトリ、テクスチャイメージ、占有マップのビデオビットストリームと付加パッチ情報メタデータビットストリームは1つ以上のトラックデータでファイルが生成されるか、セグメントでカプセル化されて送信部から受信端に送信される。
【0330】
受信装置の動作プロセス
【0331】
図19は、実施例によるV-PCCベースのポイントクラウドデータの受信および復元のための受信装置の動作の流れの一例を示す。
【0332】
実施例による受信装置は、
図1の受信装置、
図16の復号プロセス、
図17の2Dビデオ/イメージエンコーダに対応するか、それらの動作の一部/全部を行う。受信装置の各構成要素は、ソフトウェア、ハードウェア、プロセッサおよび/またはそれらの組み合わせに対応する。
【0333】
V-PCCを用いたポイントクラウドデータの受信および復元のための受信端の動作プロセスは図面に従う。V-PCC受信端の動作は、
図18のV-PCC送信端の動作の逆過程である。
【0334】
実施例によるポイントクラウドデータ受信装置は、受信装置、受信システムなどと呼ばれる。
【0335】
受信部はポイントクラウドのビットストリーム(即ち、compressed bitstream)を受信し、逆多重化部19000は受信されたポイントクラウドビットストリームからテクスチャイメージのビットストリーム、ジオメトリイメージのビットストリーム、占有マップイメージのビットストリーム、およびメタデータ(即ち、付加パッチ情報)のビットストリームを逆多重化する。逆多重化されたテクスチャイメージのビットストリーム、ジオメトリイメージのビットストリーム、および占有マップイメージのビットストリームはビデオ復号部19001へ出力され、メタデータのビットストリームはメタデータ復号部19002へ出力される。
【0336】
図18の送信装置にファイル/セグメントカプセル化部を備える場合には、
図19の受信装置の受信部と逆多重化部19000との間にファイル/セグメントデカプセル化部を備えることを一実施例とする。この場合、送信装置では、ポイントクラウドビットストリームがファイルおよび/またはセグメントの形式でカプセル化されて送信され、受信装置では、ポイントクラウドビットストリームを含むファイルおよび/またはセグメントを受信してデカプセル化することを一実施例とする。
【0337】
ビデオ復号部19001は、ジオメトリイメージのビットストリーム、テクスチャイメージのビットストリーム、占有マップイメージのビットストリームをジオメトリイメージ、テクスチャイメージ、占有マップイメージにそれぞれ復号する。ビデオ復号部19001は、それぞれの入力ビットストリームに対して、
図17の2Dビデオ/イメージデコーダをそれぞれ適用して復号することを一実施例とする。メタデータ復号部19002は、メタデータのビットストリームを付加パッチ情報に復号し、ジオメトリ復元部19003へ出力する。
【0338】
ジオメトリ復元部19003は、ビデオ復号部19001とメタデータ復号部19002から出力されるジオメトリイメージ、占有マップ、および/または付加パッチ情報に基づいて、3Dジオメトリを復元(再構成)する。
【0339】
平滑化部19004は、ジオメトリ復元部19003において再構成された3Dジオメトリを平滑化する。
【0340】
テキスチャー復元部19005は、ビデオ復号部19001から出力されるテクスチャイメージおよび/または平滑化された3Dジオメトリを用いてテキスチャーを復元する。即ち、テキスチャー復元部19005は、テクスチャイメージを用いて平滑化された3Dジオメトリにカラー値を割り当ててカラーポイントクラウド映像/ピクチャーを復元する。その後、客観的/主観的な視覚品質を向上させるために、カラー平滑化部19006において、カラーポイントクラウド映像/ピクチャーに対してカラー平滑化(color smoothing)をさらに行う。これにより導出された修正された(modified)ポイントクラウド映像/ピクチャーは、ポイントクラウドレンダラー(19007)のレンダリングプロセス後にユーザに見せられる。なお、カラー平滑化プロセスは、場合によっては省略してもよい。
【0341】
上述したブロックは、省略してもよく、類似または同一の機能を有するブロックに置き換えてもよい。また、
図19に示された各ブロックは、プロセッサ、ソフトウェア、ハードウェアの少なくとも1つとして動作することができる。
【0342】
図20は、実施例によるV-PCCベースのポイントクラウドデータの格納およびストリーミングのためのアーキテクチャの一例を示す。
【0343】
図20のシステムの一部/全部は、
図1の送受信装置、
図4の符号化プロセス、
図15の2Dビデオ/イメージエンコーダ、
図16の復号プロセス、
図18の送信装置、および/または
図19の受信装置などの一部/全部を含む。図面の各構成要素は、ソフトウェア、ハードウェア、プロセッサおよびそれらの組み合わせに対応する。
【0344】
図20は、ビデオベースポイントクラウド圧縮(V-PCC)に基づいて圧縮されるポイントクラウドデータを格納またはストリーミングするための全体的なアーキテクチャを示す。ポイントクラウドデータの格納およびストリーミングのプロセスは、取得プロセス、符号化プロセス、送信プロセス、復号プロセス、レンダリングプロセスおよび/またはフィードバックプロセスを含むことができる。
【0345】
実施例は、ポイントクラウドメディア/コンテンツ/データを効率的に提供する方法を提案する。
【0346】
ポイントクラウド取得部20000は、ポイントクラウドメディア/コンテンツ/データを効率的に提供するために、まず、ポイントクラウドビデオを取得する。例えば、1つ以上のカメラによって、ポイントクラウドのキャプチャー、合成または生成プロセスなどを通じたポイントクラウドデータを取得することができる。この取得プロセスにより、各ポイントの3D位置(x、y、z位置値などで示され、以下、ジオメトリと呼ぶ)、各ポイントの特質(色、反射率、透明度など)を含むポイントクラウドビデオを取得することができる。また、取得したポイントクラウドビデオはこれを含む、例えば、PLY(Polygon File format or the Stanford Triangle format)ファイルなどで生成することができる。複数のフレームを有するポイントクラウドデータの場合、1つ以上のファイルを取得することができる。このプロセスにおいてポイントクラウド関連メタデータ(例えば、キャプチャーなどに関連するメタデータなど)を生成することができる。
【0347】
キャプチャーしたポイントクラウドビデオは、コンテンツの品質を向上させるための後処理が必要となる場合がある。映像キャプチャーのプロセスにおいて、カメラ装備が提供する範囲内で最大/最小の深さ値を調整してもよいが、調整後にも所望しない領域のポイントデータが含まれることがあるため、所望しない領域(例えば、背景)を除去したり、連結された空間を認識して穴(spatial hole)を埋める後処理を行ってもよい。また、空間座標系を共有するカメラから抽出されたポイントクラウドは校正によって取得された各カメラの位置座標を基準として、各ポイントに対するグローバル座標系への変換プロセスにより1つのコンテンツに統合してもよい。これにより、ポイントの密度の高いポイントクラウドビデオを取得することができる。
【0348】
ポイントクラウド前処理部(point cloud pre-processing unit)20001は、ポイントクラウドビデオを1つ以上のピクチャー(picture)/フレーム(frame)に生成することができる。ここで、ピクチャー(picture)/フレーム(frame)は、一般に特定の時間帯の1つの映像を示す単位を意味する。また、ポイントクラウド前処理部20001は、ポイントクラウドビデオを構成する点を1つ以上のパッチに分けて2D平面にマップする際に、2D平面のその位置にデータが存在するか否かを0または1の値で知らせる2進マップ(binary map)である占有マップピクチャー/フレームを生成することができる。ここで、パッチは、ポイントクラウドを構成する点の集合であって、同じパッチに属する点は3D空間上において互いに隣接し、2Dイメージへのマッピングプロセスにおいて6面のバウンディングボックスの平面のうち同じ方向にマップされる点の集合である。また、ポイントクラウド前処理部20001は、ポイントクラウドビデオを成す各点の位置情報(geometry)をパッチ単位で表す深さマップ形式のピクチャー/フレームであるジオメトリピクチャー/フレームを生成することができる。また、ポイントクラウド前処理部20001は、ポイントクラウドビデオを成す各点の色情報をパッチ単位で表すピクチャー/フレームであるテクスチャピクチャー/フレームを生成することができる。このプロセスにおいて、個別パッチからポイントクラウドを再構成するために必要なメタデータを生成することができ、このメタデータは、各パッチの2D/3D空間における位置、サイズなどのパッチに関する情報(付加情報または付加パッチ情報という)を含む。このようなピクチャー/フレームが時間順に連続して生成され、ビデオストリームまたはメタデータストリームを構成することができる。
【0349】
ポイントクラウドビデオエンコーダ20002は、ポイントクラウドビデオに関連する1つ以上のビデオストリームに符号化することができる。1つのビデオは複数のフレームを含み、1つのフレームは停止映像/ピクチャーに対応する。本明細書において、ポイントクラウドビデオとは、ポイントクラウド映像/フレーム/ピクチャーを含み、ポイントクラウドビデオはポイントクラウド映像/フレーム/ピクチャーと混用することがある。ポイントクラウドビデオエンコーダ20002は、ビデオベースポイントクラウド圧縮(V-PCC)の手続きを行う。ポイントクラウドビデオエンコーダ20002は、圧縮およびコーティングの効率のために、予測、変換、量子化、エントロピーコーティングなどの一連の手続きを行うことができる。符号化されたデータ(符号化されたビデオ/映像情報)は、ビットストリーム(bitstream)形式で出力される。V-PCC手続きに基づく場合、ポイントクラウドビデオエンコーダ20002は、後述のように、ポイントクラウドビデオをジオメトリビデオ、特質(attribute)ビデオ、占有(occupancy)マップビデオ、またメタデータ、例えば、パッチに関する情報に分けて符号化することができる。ジオメトリビデオはジオメトリイメージを含んでもよく、特質(attribute)ビデオは特質イメージを含んでもよく、占有(occupancy)マップビデオは占有マップイメージを含んでもよい。付加情報であるパッチデータは、パッチに関する情報を含んでもよい。特質ビデオ/イメージは、テクスチャビデオ/イメージを含んでもよい。
【0350】
ポイントクラウドイメージエンコーダ20003は、ポイントクラウドビデオに関連する1つ以上のイメージに符号化することができる。ポイントクラウドイメージエンコー20003は、ビデオベースポイントクラウド圧縮(V-PCC)の手続きを行う。ポイントクラウドイメージエンコーダ20003は、圧縮およびコーティングの効率のために、予測、変換、量子化、エントロピーコーティングなどの一連の手続きを行うことができる。符号化されたイメージは、ビットストリーム(bitstream)形式で出力される。V-PCC手続きに基づく場合、ポイントクラウドイメージエンコーダ20003は、後述のように、ポイントクラウドイメージをジオメトリイメージ、特質(attribute)イメージ、占有(occupancy)マップイメージ、またメタデータ、例えば、パッチに関する情報に分けて符号化することができる。
【0351】
実施例によれば、ポイントクラウドビデオエンコーダ20002、ポイントクラウドイメージエンコーダ20003、ポイントクラウドビデオデコーダ20006、ポイントクラウドイメージデコーダ20008は、上述のように、1つのエンコーダ/デコーダによって行われてもよく、図面のように、別の経路によって行われてもよい。
【0352】
カプセル化部(file/segment encapsulation unit)20004は、符号化されたポイントクラウドデータおよび/またはポイントクラウドに関連するメタデータをファイルまたはストリーミングのためのセグメントなどの形式でカプセル化することができる。ここで、ポイントクラウドに関連するメタデータは、メタデータ処理部(未図示)などから伝送されてもよい。メタデータ処理部は、ポイントクラウドビデオ/イメージエンコーダ20002、20003に含まれてもよく、別のコンポーネント/モジュールで構成されてもよい。カプセル化部20004は、そのビデオ/イメージ/メタデータを含む1つのビットストリームまたは個別のビットストリームをISOBMFFなどのファイルフォーマットでカプセル化するか、DASHセグメントなどの形式で処理する。カプセル化部20004は、実施例によれば、ポイントクラウドに関連するメタデータをファイルフォーマット上に含ませることができる。ポイントクラウドメタデータは、例えば、ISOBMFFファイルフォーマット上の様々なレベルのボックス(box)に含まれるか、ファイル内において別のトラック内のデータに含まれる。実施例によれば、カプセル化部20004は、ポイントクラウド関連メタデータそのものをファイルにカプセル化することができる。
【0353】
実施例によるカプセル化部20004は、1つのビットストリームまたは個別のビットストリームをファイルにおいて1つまたは複数のトラックに分割格納し、そのためのシグナリング情報も共にカプセル化する。また、ビットストリーム上に含まれているパッチ(またはアトラス)ストリームをファイル内のトラックに格納し、関連するシグナリング情報を格納してもよい。さらに、ビットストリーム上に存在するSEIメッセージをファイル内のトラックに格納し、関連するシグナリング情報を格納してもよい。
【0354】
送信処理部(未図示)は、ファイルフォーマットに応じてカプセル化されたポイントクラウドデータに送信のための処理を施してもよい。送信処理部は、送信部(未図示)に含まれてもよく、別のコンポーネント/モジュールで構成されてもよい。送信処理部は、任意の送信プロトコルに従ってポイントクラウドデータを処理することができる。送信のための処理には、放送網を介する伝送のための処理、ブロードバンドを介する伝送のための処理を含んでもよい。実施例によれば、送信処理部は、ポイントクラウドデータだけではなく、メタデータ処理部からポイントクラウド関連メタデータが伝送され、これに送信のための処理を施してもよい。
【0355】
送信部は、ポイントクラウドビットストリームまたはそのビットストリームを含むファイル/セグメントをデジタル記憶媒体またはネットワークを介して受信装置の受信部(未図示)へ伝送することができる。送信のために、任意の送信プロトコルによる処理を行ってもよい。送信のために処理されたデータは、放送網および/またはブロードバンドを介して伝送される。このデータは、オンデマンド(On Demand)方式で受信側に伝送される。デジタル記憶媒体には、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々なものが含まれる。送信部は、所定のファイルフォーマットでメディアファイルを生成するための要素を含み、放送/通信ネットワークを介する送信のための要素を含んでもよい。受信部は、ビットストリームを抽出して復号装置に送信する。
【0356】
受信部は、本明細書によるポイントクラウドデータ送信装置が送信したポイントクラウドデータを受信することができる。送信されるチャンネルに応じて、受信部は、放送網を介してポイントクラウドデータを受信してもよく、ブロードバンドを介してポイントクラウドデータを受信してもよい。または、デジタル記憶媒体によってポイントクラウドビデオデータを受信してもよい。受信部は、受信したデータを復号し、これをユーザのビューポートなどに応じてレンダリングしてもよい。
【0357】
受信処理部(未図示)は、受信されたポイントクラウドビデオデータに対して送信プロトコルによる処理を行うことができる。受信処理部は、受信部に含まれてもよく、別のコンポーネント/モジュールで構成されてもよい。送信側で送信のための処理が行われたことに対応して、受信処理部は、上述した送信処理部の逆過程を行う。受信処理部は、取得したポイントクラウドビデオをデカプセル化部20005へ伝送し、取得したポイントクラウドに関連するメタデータはメタデータ処理部(未図示)へ伝送する。
【0358】
デカプセル化部(file/segment decapsulation unit)20005は、受信処理部から送信されたファイル形式のポイントクラウドデータをデカプセル化することができる。デカプセル化部20005は、ISOBMFFなどによるファイルをデカプセル化し、ポイントクラウドビットストリームまたはポイントクラウド関連メタデータ(または、別のメタデータビットストリーム)を取得することができる。取得したポイントクラウドビットストリームは、ポイントクラウドビデオデコーダ20006およびポイントクラウドイメージデコーダ2008に伝送され、取得したポイントクラウド関連メタデータ(またはメタデータビットストリーム)は、メタデータ処理部(未図示)に伝送される。ポイントクラウドビットストリームは、メタデータ(メタデータビットストリーム)を含んでもよい。メタデータ処理部は、ポイントクラウドビデオデコーダ20006に含まれてもよく、別のコンポーネント/モジュールで構成されてもよい。デカプセル化部20005が取得するポイントクラウド関連メタデータは、ファイルフォーマット内のボックスまたはトラック形式であってもよい。デカプセル化部20005は、必要のある場合、メタデータ処理部からデカプセル化に必要なメタデータが伝送されることがある。ポイントクラウド関連メタデータは、ポイントクラウドビデオデコーダ20006および/またはポイントクラウドイメージデコーダ20008に伝送されてポイントクラウド復号に用いられてもよく、またはレンダラー20009に伝送されてポイントクラウドレンダリングに用いられてもよい。
【0359】
ポイントクラウドビデオデコーダ20006は、ビットストリームを受信してポイントクラウドビデオエンコーダ20002の動作に対応する逆過程を行うことでビデオ/映像を復号することができる。この場合、ポイントクラウドビデオデコーダ20006は、後述のように、ポイントクラウドビデオをジオメトリビデオ、特質(attribute)ビデオ、占有(occupancy)マップビデオ、また付加パッチ情報(auxiliary patch information)に分けて復号することができる。ジオメトリビデオはジオメトリイメージを含んでもよく、特質(attribute)ビデオは特質イメージを含んでもよく、占有(occupancy)マップビデオは占有マップイメージを含んでもよい。付加情報は、付加パッチ情報(auxiliary patch information)を含んでもよい。特質ビデオ/イメージはテクスチャビデオ/イメージを含んでもよい。
【0360】
ポイントクラウドイメージデコーダ20008は、ビットストリームを受信し、ポイントクラウドイメージエンコーダ20003の動作に対応する逆過程を行う。この場合、ポイントクラウドイメージデコーダ20008は、ポイントクラウドイメージをジオメトリイメージ、特質(attribute)イメージ、占有(occupancy)マップイメージ、またメタデータ、例えば、付加パッチ情報(auxiliary patch information)に分けて復号することができる。
【0361】
復号されたジオメトリビデオ/イメージと占有マップおよび付加パッチ情報を用いて3Dジオメトリが復元され、その後に平滑化処理を行う。平滑化された3Dジオメトリに、テクスチャビデオ/イメージを用いてカラー値を割り当てることで、カラーポイントクラウド映像/ピクチャーが復元される。レンダラー20009は、復元されたジオメトリ、カラーポイントクラウド映像/ピクチャーをレンダリングすることができる。レンダリングされたビデオ/映像は、ディスプレイ部でディスプレイされる。ユーザは、VR/ARディスプレイ又は一般のディスプレイなどによってレンダリングされた結果の全部または一部の領域を見ることができる。
【0362】
センシング/トラッキング部(Sensing/Tracking)20007は、ユーザまたは受信側からオリエンテーション情報および/またはユーザビューポート情報を取得して受信部および/または送信部に送信する。オリエンテーション情報は、ユーザの頭の位置、角度、動きなどに関する情報を示したり、ユーザが見ている装置の位置、角度、動きなどに関する情報を示すことができる。この情報に基づいて、現在ユーザが3D空間で見ている領域に関する情報、即ちビューポート情報を算出することができる。
【0363】
ビューポート情報は、現在ユーザが3D空間において装置またはHMDなどを介して見ている領域に関する情報であってもよい。ディスプレイなどの装置は、オリエンテーション情報、装置が支援する垂直(vertical)または水平(horizontal)FOVなどに基づいてビューポート領域を抽出することができる。オリエンテーションまたはビューポート情報は、受信側で抽出または算出することができる。受信側で分析したオリエンテーションまたはビューポート情報は、フィードバックチャンネルを介して送信側へ伝送されてもよい。
【0364】
受信部は、センシング/トラッキング部20007によって取得されたオリエンテーション情報および/またはユーザが現在見ている領域を示すビューポート情報を使用して特定の領域、即ちオリエンテーション情報および/またはビューポート情報が示す領域のメディアデータだけを効率的にファイルから抽出または復号することができる。また、送信部は、センシング/トラッキング部20007によって取得されたオリエンテーション情報および/またはビューポート情報を使用して特定の領域、即ちオリエンテーション情報および/またはビューポート情報が示す領域のメディアデータだけを効率的に符号化したり、ファイルを生成および送信することができる。
【0365】
レンダラー20009は、3D空間上に復号されたポイントクラウドデータをレンダリングすることができる。レンダリングされたビデオ/映像は、ディスプレイ部を介してディスプレイされる。ユーザは、VR/ARディスプレイまたは一般のディスプレイなどを介してレンダリングされた結果の全部または一部の領域を見ることができる。
【0366】
フィードバックプロセスは、レンダリング/ディスプレイのプロセスから取得し得る様々なフィードバック情報を送信側に送信するか、または受信側のデコーダに送信することを含んでもよい。フィードバックプロセスによって、ポイントクラウドデータの消費において相互作用(interactivity)を提供することができる。実施例によれば、フィードバックプロセスにおいて、ヘッドオリエンテーション(Head Orientation)情報、ユーザが現在見ている領域を示すビューポート(Viewport)情報などを伝送することができる。実施例によれば、ユーザは、VR/AR/MR/自立走行環境において具現されたものと相互作用することができるが、この場合、相互作用に関する情報をフィードバックプロセスにおいて送信側およびサービス供給者側に伝送することもできる。実施例によれば、フィードバックプロセスは省略してもよい。
【0367】
実施例によれば、上述したフィードバック情報は、送信側に伝送されるだけではなく、受信側で消費することもできる。即ち、上述したフィードバック情報を用いて受信側のデカプセル化処理、復号、レンダリングプロセスなどを行ってもよい。例えば、オリエンテーション情報および/またはビューポート情報を用いて、ユーザが現在見ている領域に対するポイントクラウドデータを優先してデカプセル化、復号およびレンダリングしてもよい。
【0368】
図21は、実施例によるポイントクラウドデータの格納および送信装置の構成の一例を示す。
【0369】
図21は、実施例によるポイントクラウドシステムを示し、システムの一部/全部は、
図1の送受信装置、
図4の符号化プロセス、
図15の2Dビデオ/イメージエンコーダ、
図16の復号プロセス、
図18の送信装置および/または
図19の受信装置などの一部/全部を含むことができる。また、
図20のシステムの一部/全部に含まれるか、対応することができる。
【0370】
実施例によるポイントクラウドデータ送信装置は、図面のように構成される。送信装置の各構成要素は、モジュール/ユニット/コンポーネント/ハードウェア/ソフトウェア/プロセッサなどであってもよい。
【0371】
ポイントクラウドのジオメトリ、特質、付加データ(または付加情報)、メッシュデータなどは、それぞれ独立したストリームで構成されるか、またはファイルにおいてそれぞれ異なるトラックに格納されてもよい。さらに、別のセグメントに含まれてもよい。
【0372】
ポイントクラウド取得部(Point Cloud Acquisition unit)21000は、ポイントクラウドを取得する。例えば、1つ以上のカメラを介してポイントクラウドのキャプチャー、合成または生成プロセスなどによりポイントクラウドデータを取得することができる。このような取得プロセスにより、各ポイントの3D位置(x、y、z位置値などで示され、以下、これをジオメトリと呼ぶ)、各ポイントの特質(色、反射率、透明度など)を含むポイントクラウドデータを取得することができ、これを含む、例えば、PLY(Polygon File format or the Stanford Triangle format)ファイルなどで生成することができる。複数のフレームを有するポイントクラウドデータの場合、1つ以上のファイルを取得することができる。このプロセスにおいて、ポイントクラウド関連メタデータ(例えば、キャプチャーなどに関連するメタデータなど)を生成することができる。パッチ生成部(Patch Generation unit)21001は、ポイントクラウドデータからパッチを生成する。パッチ生成部21001は、ポイントクラウドデータまたはポイントクラウドビデオを1つ以上のピクチャー(picture)/フレーム(frame)で生成する。一般に、ピクチャー(picture)/フレーム(frame)は、特定の時間帯の1つの映像を示す単位を意味してもよい。ポイントクラウドビデオを構成する点を1つ以上のパッチ(ポイントクラウドを構成する点の集合であり、同じパッチに属する点は3D空間において互いに隣接しており、2Dイメージへのマッピングプロセスにおいて6面のバウンディングボックス平面のうち同じ方向にマップされる点の集合)に分けて2D平面にマップする際、2D平面のその位置にデータが存在するか否かを0または1の値で知らせる2進マップ(binary map)である占有(occupancy)マップピクチャー/フレームを生成することができる。また、ポイントクラウドビデオを成す各点の位置情報(geometry)をパッチ単位で表す深さマップ形式のピクチャー/フレームであるジオメトリピクチャー/フレームを生成することができる。ポイントクラウドビデオを成す各点の色情報をパッチ単位で表すピクチャー/フレームであるテクスチャピクチャー/フレームを生成することができる。このプロセスにおいて、個別パッチからポイントクラウドを再構成するために必要なメタデータを生成することができ、このメタデータは、各パッチの2D/3D空間における位置、サイズなどパッチに関する情報を含んでもよい。このようなピクチャー/フレームが時間順に連続して生成され、ビデオストリームまたはメタデータストリームを構成することができる。
【0373】
また、パッチは、2Dイメージマッピングのために使用してもよい。例えば、ポイントクラウドデータが立方体の各面にプロジェクトされてもよい。 パッチ生成後、生成されたパッチに基づいて、ジオメトリイメージ、1つまたは1つ以上の特質イメージ、占有マップ、付加データおよび/またはメッシュデータなどを生成することができる。
【0374】
ポイントクラウド前処理部20001または制御部(controller)(未図示)によって、ジオメトリイメージ生成(Geometry Image Generation)、特質イメージ生成(Attribute Image Generation)、占有マップ生成(Occupancy Map Generation)、付加データ生成(Auxiliary Data Generation) および/またはメッシュデータ生成(Mesh Data Generation)が行われる。ポイントクラウド前処理部20001は、パッチ生成部21001、ジオメトリイメージ生成部21002、特質イメージ生成部21003、占有マップ生成部21004、付加データ生成部21005、およびメッシュデータ生成部21006を含むことを一実施例とする。
【0375】
ジオメトリイメージ生成部(Geometry Image Generation unit)21002は、パッチ生成の結果物に基づいてジオメトリイメージを生成する。ジオメトリは、3D空間上のポイントを示す。パッチに基づいてパッチの2Dイメージパッキングに関連する情報を含む占有マップ、付加データ(または付加情報といい、パッチデータを含む)および/またはメッシュデータなどを使用して、ジオメトリイメージを生成する。ジオメトリイメージは、パッチ生成後に生成されたパッチの深さ(e.g.、近さ、遠さ)などの情報に関連する。
【0376】
特質イメージ生成部(Attribute Image Generation unit)21003は、特質イメージを生成する。例えば、特質はテキスチャー(Texture)を示すことができる。テキスチャーは、各ポイントに対応するカラー値であってもよい。実施例によれば、テキスチャーを含む複数(N個)の特質(色、反射率など)イメージを生成することができる。複数の特質は、マテリアル(材質に関する情報)、反射率などを含むことができる。また、実施例によれば、特質は、同じテキスチャーでも視覚、光によってカラーが変わる情報をさらに含んでもよい。
【0377】
占有マップ生成部(Occupancy Map Generation unit)21004は、パッチから占有マップを生成する。占有マップは、そのジオメトリまたは特質イメージなどのピクセルにデータの存否を示す情報を含む。
【0378】
付加データ生成部(Auxiliary Data Generation unit)21005は、パッチに関する情報を含む付加データ(または付加パッチ情報という)を生成する。即ち、付加データは、ポイントクラウド客体のパッチに関するメタデータを示す。例えば、パッチに対する法線(normal)ベクトルなどの情報を示すことができる。具体的に、実施例によれば、付加データは、パッチからポイントクラウドを再構成するために必要な情報を含む(例えば、パッチの2D/3D空間上の位置、サイズなどに関する情報、プロジェクション平面(normal)識別情報、パッチマッピング情報など)。
【0379】
メッシュデータ生成部(Mesh Data Generation unit)21006は、パッチからメッシュデータを生成する。メッシュは、隣接したポイント間の連結情報を示す。例えば、三角形のデータを示してもよい。例えば、実施例によるメッシュデータは、各ポイント間の接続(connectivity)情報を意味する。
【0380】
ポイントクラウド前処理部20001または制御部は、パッチ生成、ジオメトリイメージ生成、特質イメージ生成、占有マップ生成、付加データ生成、メッシュデータ生成に関連するメタデータ(Metadata)を生成する。
【0381】
ポイントクラウド送信装置は、ポイントクラウド前処理部20001で生成された結果物に対応して、ビデオ符号化および/またはイメージ符号化を行う。ポイントクラウド送信装置は、ポイントクラウドビデオデータだけではなく、ポイントクラウドイメージデータを生成することができる。実施例によれば、ポイントクラウドデータは、ビデオ データのみを、イメージデータのみを、および/またはビデオデータおよびイメージデータの両方を含んでもよい。
【0382】
ビデオ符号化部21007は、ジオメトリビデオ圧縮、特質ビデオ圧縮、占有マップビデオ圧縮、付加データ圧縮および/またはメッシュデータ圧縮を行う。ビデオ符号化部21007は、符号化された各々のビデオデータを含むビデオトリームを生成する。
【0383】
具体的に、ジオメトリビデオ圧縮は、ポイントクラウドジオメトリビデオデータを符号化する。特質ビデオ圧縮は、ポイントクラウドの特質ビデオデータを符号化する。付加データ圧縮は、ポイントクラウドビデオデータに関連する付加データを符号化する。メッシュデータ圧縮(Mesh data compression)は、ポイントクラウドビデオデータのメッシュデータを符号化する。ポイントクラウドビデオ符号化部の各動作は、並列に行われる。
【0384】
イメージ符号化部21008は、ジオメトリイメージ圧縮、特質イメージ圧縮、占有マップイメージ圧縮、付加データ圧縮および/またはメッシュデータ圧縮を行う。イメージ符号化部は、符号化された各々のイメージデータを含むイメージを生成する。
【0385】
具体的に、ジオメトリイメージ圧縮は、ポイントクラウドジオメトリイメージデータを符号化する。特質イメージ圧縮は、ポイントクラウドの特質イメージデータを符号化する。付加データ圧縮は、ポイントクラウドイメージデータに関連する付加データを符号化する。メッシュデータ圧縮(Mesh data compression)は、ポイントクラウドイメージデータに関連するメッシュデータを符号化する。ポイントクラウドイメージ符号化部の各動作は、並列に行われる。
【0386】
ビデオ符号化部21007および/またはイメージ符号化部21008は、ポイントクラウド前処理部20001からメタデータを受信することができる。ビデオ符号化部21007および/またはイメージ符号化部21008は、メタデータに基づいて各々の符号化プロセスを行うことができる。
【0387】
ファイル/セグメントカプセル化部(File/Segment Encapsulation)21009は、ビデオストリームおよび/またはイメージをファイルおよび/またはセグメント形式にカプセル化する。ファイル/セグメントカプセル化部21009は、ビデオトラックカプセル化、メタデータトラックカプセル化および/またはイメージカプセル化を行う。
【0388】
ビデオトラックカプセル化は、1つまたは1つ以上のビデオストリームを1つまたは1つ以上のトラックカプセル化することができる。
【0389】
メタデータトラックカプセル化は、ビデオストリームおよび/またはイメージに関連するメタデータを1つまたは1つ以上のトラックにカプセル化することができる。メタデータは、ポイントクラウドデータのコンテンツに関連するデータを含む。例えば、初期ビューイングオリエンテーションメタデータ(Initial Viewing Orientation Metadata)を含む。実施例によれば、メタデータは、メタデータトラックにカプセル化されてもよく、ビデオトラックまたはイメージトラックに共にカプセル化されてもよい。
【0390】
イメージカプセル化は、1つまたは1つ以上のイメージを1つまたは1つ以上のトラックまたはアイテムにカプセル化することができる。
【0391】
例えば、実施例によれば、4つのビデオストリームと2つのイメージがカプセル化部に入力される場合、4つのビデオストリームおよび2つのイメージを1つのファイル内にカプセル化する。
【0392】
ファイル/セグメントカプセル化部21009は、ポイントクラウド前処理部20001からメタデータを受信することができる。ファイル/セグメントカプセル化部21009は、メタデータに基づいてカプセル化を行うことができる。
【0393】
ファイル/セグメントカプセル化によって生成されたファイルおよび/またはセグメントは、ポイントクラウド送信装置または送信部によって送信される。例えば、DASHベースのプロトコルに基づいてセグメントが送信(Delivery)できる。
【0394】
送信部(Delivery)は、ポイントクラウドビットストリームまたはそのビットストリームを含むファイル/セグメントをデジタル記憶媒体またはネットワークを介して受信装置の受信部に伝送することができる。送信のために、任意の送信プロトコルによる処理を行う。送信のための処理を終えたデータは、放送網および/またはブロードバンドを介して伝送することができる。このデータは、オンデマンド(On Demand)方式で受信側へ伝送してもよい。デジタル記憶媒体には、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体がある。
【0395】
実施例によるカプセル化部21009は、1つのビットストリームまたは個別のビットストリームをファイル内に1つまたは複数のトラックに分割格納し、そのためのシグナリング情報も共にカプセル化することができる。また、ビットストリーム上に含まれているパッチ(またはアトラス)ストリームをファイル内のトラックに格納し、関連するシグナリング情報を格納することができる。さらに、ビットストリーム上に存在するSEIメッセージをファイル内のトラックに格納し、関連するシグナリング情報を格納することができる。
【0396】
送信部は、所定のファイルフォーマットでメディアファイルを生成するための要素を含むことができ、放送/通信ネットワークを介する送信のための要素を含むことができる。送信部は、受信部からオリエンテーション情報および/またはビューポート情報を受信する。送信部は、取得したオリエンテーション情報および/またはビューポート情報(またはユーザが選択した情報)をポイントクラウド前処理部20001、ビデオ符号化部21007、イメージ符号化部21008、ファイル/セグメントカプセル化部21009および/またはポイントクラウド符号化部に伝送することができる。オリエンテーション情報および/またはビューポート情報に基づいて、ポイントクラウド符号化部はすべてのポイントクラウドデータを符号化するか、またはオリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータを符号化することができる。オリエンテーション情報および/またはビューポート情報に基づいて、ファイル/セグメントカプセル化部はすべてのポイントクラウドデータをカプセル化するか、またはオリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータをカプセル化することができる。オリエンテーション情報および/またはビューポート情報に基づいて、送信部はすべてのポイントクラウドデータを送信するか、またはオリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータを送信することができる。
【0397】
例えば、ポイントクラウド前処理部20001は、すべてのポイントクラウドデータに対して上述した動作を行ってもよく、オリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータに対して動作を行ってもよい。ビデオ符号化部21007および/またはイメージ符号化部21008は、すべてのポイントクラウドデータに対して上述した動作を行ってもよく、オリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータに対して上述した動作を行わってもよい。ファイル/セグメントカプセル化部21009は、すべてのポイントクラウドデータに対して上述した動作を行ってもよく、オリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータに対して上述した動作を行ってもよい。送信部は、すべてのポイントクラウドデータに対して上述した動作を行ってもよく、オリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータに対して上述した動作を行ってもよい。
【0398】
図22は、実施例によるポイントクラウドデータ受信装置の構成の一例を示す。
【0399】
図22は、実施例によるポイントクラウドシステムを示し、システムの一部/全部は、
図1の送受信装置、
図4の符号化プロセス、
図15の2Dビデオ/イメージエンコーダ、
図16の復号プロセス、
図18の送信装置、および/または
図19の受信装置などの一部/全部を含むことができる。また、
図20および
図21のシステムの一部/全部に包含または対応されることができる。
【0400】
受信装置の各構成は、モジュール/ユニット/コンポーネント/ハードウェア/ソフトウェア/プロセッサなどであってもよい。送信クライアント(Delivery Client)22006は、実施例によるポイントクラウドデータ送信装置が送信したポイントクラウドデータ、ポイントクラウドビットストリームまたはそのビットストリームを含むファイル/セグメントを受信することができる。送信されるチャンネルに応じて、受信装置は、放送網を介してポイントクラウドデータを受信してもよく、ブロードバンドを介してポイントクラウドデータを受信してもよい。または、デジタル記憶媒体によってポイントクラウドデータを受信してもよい。受信装置は、受信したデータを復号し、これをユーザのビューポートなどに従ってレンダリングするプロセスを含んでもよい。送信クライアント22006(または受信処理部という)は、受信されたポイントクラウドデータに対して送信プロトコルに従う処理を行うことができる。受信処理部は受信部に含まれてもよく、別のコンポーネント/モジュールで構成されてもよい。送信側で行った送信のための処理に対応して、受信処理部は、上述した送信処理部の逆過程を行う。受信処理部は、取得したポイントクラウドデータをファイル/セグメントデカプセル化部22000に伝送し、取得したポイントクラウド関連メタデータはメタデータ処理部(未図示)に伝送することができる。
【0401】
センシング/トラッキング部(Sensing/Tracking)22005は、オリエンテーション情報および/またはビューポート情報を取得する。センシング/トラッキング部22005は、取得したオリエンテーション情報および/またはビューポート情報を送信クライアント22006、ファイル/セグメントデカプセル化部22000、ポイントクラウド復号部22001、22002、ポイントクラウドプロセシング部22003に伝送することができる。
【0402】
送信クライアント22006は、オリエンテーション情報および/またはビューポート情報に基づいて、すべてのポイントクラウドデータを受信してもよく、オリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータを受信してもよい。ファイル/セグメントデカプセル化部22000は、オリエンテーション情報および/またはビューポート情報に基づいて、すべてのポイントクラウドデータをデカプセル化するか、またはオリエンテーション 情報および/またはビューポート情報が示すポイントクラウドデータをデカプセル化することができる。ポイントクラウド復号部(ビデオ復号部22001および/またはイメージ復号部22002)は、オリエンテーション情報および/またはビューポート情報に基づいて、すべてのポイントクラウドデータを復号するか、またはオリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータを復号することができる。ポイントクラウドプロセシング部22003は、すべてのポイントクラウドデータを処理するか、またはオリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータを処理することができる。
【0403】
ファイル/セグメントデカプセル化部(File/Segment decapsulation unit)22000は、ビデオトラックデカプセル化(Video Track Decapsulation)、メタデータトラックデカプセル化(Metadata Track Decapsulation)および/またはイメージデカプセル化(Image Decapsulation)を行う。ファイル/セグメントデカプセル化部22000は、受信処理部が伝送したファイル形式のポイントクラウドデータをデカプセル化することができる。ファイル/セグメントデカプセル化部22000は、ISOBMFFなどによるファイルまたはセグメントをデカプセル化し、ポイントクラウドビットストリームおよびポイントクラウド関連メタデータ(または別のメタデータビットストリーム)を取得することができる。取得したポイントクラウドビットストリームは、ポイントクラウド復号部22001、22002)に伝送し、取得したポイントクラウド関連メタデータ(またはメタデータビットストリーム)は、メタデータ処理部(未図示)に伝送することができる。ポイントクラウドビットストリームは、メタデータ(メタデータビットストリーム)を含んでもよい。メタデータ処理部は、ポイントクラウドビデオデコーダに含まれてもよく、別のコンポーネント/モジュールで構成されてもよい。ファイル/セグメントデカプセル化部22000が取得するポイントクラウド関連メタデータは、ファイルフォーマット内のボックスまたはトラックの形態であってもよい。ファイル/セグメントデカプセル化部22000は、必要のある場合、メタデータ処理部からデカプセル化に必要なメタデータが伝送されてもよい。ポイントクラウド関連メタデータは、ポイントクラウド復号部22001、22002に伝送されて、ポイントクラウド復号に用いられてもよく、ポイントクラウドレンダリング部22004に伝送されて、ポイントクラウドレンダリングに用いられてもよい。ファイル/セグメントデカプセル化部22000は、ポイントクラウドデータに関連するメタデータを生成することができる。
【0404】
ファイル/セグメントデカプセル化部22000内のビデオトラックデカプセル化(Video Track Decapsulation)は、ファイルおよび/またはセグメントに含まれたビデオトラックをデカプセル化する。ジオメトリビデオ、特質ビデオ、占有マップ、付加データおよび/またはメッシュデータを含むビデオストリームをデカプセル化する。
【0405】
ファイル/セグメントデカプセル化部22000内のメタデータトラックデカプセル化(Metadata Track Decapsulation)は、ポイントクラウドデータに関連するメタデータおよび/または付加データなどを含むビットストリームをデカプセル化する。
【0406】
ファイル/セグメントデカプセル化部22000内のイメージデカプセル化(Image Decapsulation)は、ジオメトリイメージ、特質イメージ、占有マップ、付加データおよび/またはメッシュデータを含むイメージをデカプセル化する。
【0407】
実施例によるデカプセル化部22000は、1つのビットストリームまたは個別のビットストリームをファイル内の1つまたは複数のトラックに基づいて分割パーシング(デカプセル化)し、そのためのシグナリング情報も共にデカプセル化する。また、ビットストリーム上に含まれているパッチ(またはアトラス)ストリームをファイル内のトラックに基づいてデカプセル化し、関連するシグナリング情報をパーシングすることができる。さらに、ビットストリーム上に存在するSEIメッセージをファイル内のトラックに基づいてデカプセル化し、関連するシグナリング情報を共に取得することができる。
【0408】
ビデオ復号部(Video Decoding unit)22001は、ジオメトリビデオ復元、特質ビデオ復元、占有マップ復元、付加データ復元および/またはメッシュデータ復元を行う。ビデオ復号部は、実施例によるポイントクラウド送信装置のビデオ符号化付加を行うプロセスに対応して、ジオメトリビデオ、特質ビデオ、付加データおよび/またはメッシュデータを復号する。
【0409】
イメージ復号部(Image Decoding)22002は、ジオメトリイメージ復元、特質イメージ復元、占有マップ復元、付加データ復元および/またはメッシュデータ復元を行う。イメージ復号部は、実施例によるポイントクラウド送信装置のイメージ符号化部が行うプロセスに対応して、ジオメトリイメージ、特質イメージ、付加データおよび/またはメッシュデータを復号する。
【0410】
実施例によるビデオ復号部22001、イメージ復号部22002は、上述のように、1つのビデオ/イメージデコーダによって処理されてもよく、図のように別のパスで行われてもよい。
【0411】
ビデオ復号部22001および/またはイメージ復号部22002は、ビデオデータおよび/またはイメージデータに関連するメタデータを生成することができる。
【0412】
ポイントクラウドプロセシング部(Point Cloud Processing unit)22003は、ジオメトリ再構成(Geometry Reconstruction)および/または特質再構成(Attribute Reconstruction)を行う。
【0413】
ジオメトリ再構成は、復号されたビデオデータおよび/または復号されたイメージデータから、占有マップ、付加データおよび/またはメッシュデータに基づいて、ジオメトリビデオおよび/またはジオメトリイメージを復元する。
【0414】
特質再構成は、復号された特質ビデオおよび/または復号された特質イメージから、占有マップ、付加データおよび/またはメッシュデータに基づいて、特質ビデオおよび/または特質イメージを復元する。実施例によれば、例えば、特質はテキスチャーであることがある。実施例によれば、特質は複数の特質情報を意味してもよい。複数の特質がある場合、実施例によるポイントクラウドプロセシング部22003は、複数の特質再構成を行う。
【0415】
ポイントクラウドプロセシング部22003は、ビデオ復号部22001、イメージ復号部22002および/またはファイル/セグメントデカプセル化部22000からメタデータを受信して、メタデータに基づいてポイントクラウドを処理することができる。
【0416】
ポイントクラウドレンダリング部(Point Cloud Rendering unit)22004は、再構成されたポイントクラウドをレンダリングする。ポイントクラウドレンダリング部22004は、ビデオ復号部22001、イメージ復号部22002および/またはファイル/セグメントデカプセル化部22000からメタデータを受信し、メタデータに基づいてポイントクラウドをレンダリングすることができる。
【0417】
ディスプレイは、レンダリングされた結果を実際のディスプレイ装置上にディスプレイする。
【0418】
実施例による方法/装置によれば、
図20ないし
図22に示されているように、送信側ではポイントクラウドデータをビットストリームに符号化し、ファイルおよび/またはセグメント形式でカプセル化して送信し、受信側ではファイルおよび/またはセグメント形式をポイントクラウドを含むビットストリームにデカプセル化し、ポイントクラウドデータに復号することができる。例えば、実施例によるポイントクラウドデータ送信装置は、ポイントクラウドデータをファイルに基づいてカプセル化し、このとき、ファイルには、ポイントクラウドに関するパラメータを含むV-PCCトラック、ジオメトリを含むジオメトリトラック、特質を含む特質トラックおよび占有マップを含む占有トラックが含まれてもよい。
【0419】
また、実施例によるポイントクラウドデータ受信装置は、ファイルに基づいてポイントクラウドデータをデカプセル化し、このとき、ファイルには、ポイントクラウドに関するパラメータを含むV-PCCトラック、ジオメトリを含むジオメトリトラック、特質を含む特質トラックおよび占有マップを含む占有トラックが含まれてもよい。
【0420】
上述したカプセル化の動作は、
図20のファイル/セグメントカプセル化部20004、
図21のファイル/セグメントカプセル化部21009などによって行われてもよく、上述したデカプセル化の動作は、
図20のファイル/セグメントデカプセル化部20005、
図22のファイル/セグメントデカプセル化部22000などによって行われてもよい。
【0421】
図23は、実施例によるポイントクラウドデータの送受信方法/装置と連動可能な構造の一例を示す。
【0422】
実施例による構造では、AI(Ariticial Intelligence)サーバー23600、ロボット23100、自立走行車両23200、XR装置23300、スマートフォン23400、家電23500および/またはHMD23700のうちの少なくとも1つ以上がクラウドネットワーク23000と接続する。ここで、ロボット23100、自立走行車両23200、XR装置23300、スマートフォン23400または家電23500などを装置と呼ぶことができる。また、XR装置23300は、実施例によるポイントクラウド圧縮データ(PCC)装置に対応するか、PCC装置と連動してもよい。
【0423】
クラウドネットワーク23000は、クラウドコンピューティングインフラの一部を構成するか、クラウドコンピューティングインフラ内に存在するネットワークを意味してもよい。ここで、クラウドネットワーク23000は、3Gネットワーク、4GまたはLTE(Long Term Evolution)ネットワークまたは5Gネットワークなどを用いて構成されてもよい。
【0424】
AIサーバー23600は、ロボット23100、自立走行車両23200、XR装置23300、スマートフォン23400、家電23500および/またはHMD23700のうちの少なくとも1つ以上とクラウドネットワーク23000を介いて接続され、接続された装置23100~23700のプロセシングの少なくとも一部を補助することができる。
【0425】
HMD(Head-Mount Display)23700は、実施例によるXR装置23300および/またはPCC装置が具現できるタイプの1つを示す。実施例によるHMDタイプの装置は、コミュニケーションユニット、コントロールユニット、メモリユニット、I/Oユニット、センサユニット、またパワー供給ユニットなどを含む。
【0426】
以下、上記技術が適用される装置23100~23500の様々な実施例について説明する。ここで、
図23に示された装置23100~23500は、上述した実施例によるポイントクラウドデータの送受信装置と連動/結合することができる。
【0427】
<PCC+XR>
【0428】
XR/PCC装置23300は、PCCおよび/またはXR(AR+VR)技術が適用され、HMD(Head-Mount Display)、車両に備えられたHUD(Head-Up Display)、TV、携帯電話、スマートフォン、コンピューター、ウェアラブルデバイス、家電機器、デジタル看板、車両、固定型ロボットや移動型ロボットなどで具現されることもできる。
【0429】
XR/PCC装置23300は、様々なセンサにより又は外部装置から取得した3Dポイントクラウドデータまたはイメージデータを分析して3Dポイントに対する位置データ及び特質データを生成することで周辺空間又は現実客体に関する情報を得て、出力するXR客体をレンダリングして出力することができる。例えば、XR/PCC装置23300は認識された物体に関する付加情報を含むXR客体を該当認識された物体に対応して出力することができる。
【0430】
<PCC+自立走行+XR>
【0431】
自律走行車両23200はPCC技術及びXR技術が適用されて、移動型ロボット、車両、無人飛行体などで具現される。
【0432】
XR/PCC技術が適用された自律走行車両23200は、XR映像を提供する手段を備えた自律走行車両やXR映像内での制御/相互作用の対象となる自律走行車両などを意味してもよい。特に、XR映像内での制御/相互作用の対象となる自律走行車両23200はXR装置23300とは区分され、互いに連動できる。
【0433】
XR/PCC映像を提供する手段を備えた自律走行車両23200は、カメラを含むセンサからセンサ情報を取得し、取得したセンサ情報に基づいて生成されたXR/PCC映像を出力する。例えば、自律走行車両23200はHUDを備えてXR/PCC映像を出力することで、搭乗者に現実客体又は画面内の客体に対応するXR/PCC客体を提供することができる。
【0434】
このとき、XR/PCC客体がHUDに出力される場合には、XR/PCC客体の少なくとも一部が搭乗者の視線が向く実際の客体にオーバーラップされるように出力されることがある。一方、XR/PCC客体が自律走行車両23200内に備えられるディスプレイに出力される場合には、XR/PCC客体の少なくとも一部が画面内の客体にオーバーラップされるように出力されることがある。例えば、自律走行車両23200は車路、他の車両、信号灯、交通表示板、二輪車、歩行者、建物などのような客体に対応するXR/PCC客体を出力することができる。
【0435】
実施例によるVR(Virtual Reality)技術、AR(Augmented Reality)技術、MR(Mixed Reality)技術及び/又はPCC(Point Cloud Compression)技術は、様々なデバイスに適用可能である。
【0436】
即ち、VR技術は現実の客体や背景などをCG映像のみで提供するディスプレイ技術である。一方、AR技術は実際物事の映像上に仮想のCG映像を共に見せる技術である。また、MR技術は、現実世界に仮想客体を混ぜて見せるという点では上述したAR技術と類似する。しかし、AR技術では現実の客体とCG映像からなる仮想の客体との区別が明らかであり、現実客体を補完する形式で仮想の客体を使用する反面、MR技術では仮想の客体と現実の客体とが同等な性格と見なされるという点でAR技術とは区別される。より具体的には、例えば、上記MR技術が適用されたことがホログラムサービスである。
【0437】
ただし、最近にはVR、AR、MR技術を明確に区別するよりは、XR(extended Reality)技術と呼んでいる。よって、本発明の実施例はVR、AR、MR、XR技術のいずれにも適用可能である。かかる技術はPCC、V-PCC、G-PCC技術ベースの符号化/復号が適用される。
【0438】
実施例によるPCC方法/装置は自律走行サービスを提供する車両23200に適用できる。
【0439】
自律走行サービスを提供する自立走行車両23200はPCC装置と有無線通信可能に接続される。
【0440】
実施例によるポイントクラウド圧縮データ(PCC)送受信装置は、自立走行車両23200と有無線通信可能に接続された場合、自律走行サービスと共に提供できるAR/VR/PCCサービス関連コンテンツデータを受信/処理して自立走行車両23200に送信することができる。また、ポイントクラウドデータ送受信装置が自立走行車両23200に搭載された場合は、ポイントクラウド送受信装置は、ユーザインターフェース装置で入力されたユーザ入力信号によってAR/VR/PCCサービス関連コンテンツデータを受信/処理してユーザに提供することができる。実施例による車両又はユーザインターフェース装置はユーザ入力信号を受信することができる。実施例によるユーザ入力信号は自律走行サービスを指示する信号を含んでもよい。
【0441】
上述のように、
図1、
図4、
図18、
図20または
図21に示すV-PCCベースポイントクラウドビデオエンコーダは、3Dポイントクラウドデータ(またはコンテンツ)を2D空間にプロジェクション(projection)させてパッチを生成する。2D空間に生成されたパッチは、位置情報を示すジオメトリイメージ(これをジオメトリフレームまたはジオメトリパッチフレームという)と、色情報を示すテクスチャイメージ(これを特質フレームまたは特質パッチフレームという)とに区分して生成する。ジオメトリイメージとテクスチャイメージは、各々のフレーム別にビデオ圧縮されて、ジオメトリイメージのビデオビットストリーム(またはジオメトリビットストリームという)と、テクスチャイメージのビデオビットストリーム(または特質ビットストリームという)とに出力される。また、受信側で2Dパッチを復号するために必要な各パッチプロジェクション平面情報およびパッチサイズ情報を含む付加パッチ情報(またはパッチ情報やメタデータという)もビデオ圧縮されて、付加パッチ情報のビットストリームに出力される。これに加えて、各ピクセルに対するポイントの存否を0または1に示す占有マップ(occupancy map)は、ロスレス(lossless)モードかロッシー(lossy)モードかに応じて、エントロピー圧縮またはビデオ圧縮され、占有マップのビデオビットストリーム(または占有マップビットストリームという)に出力される。圧縮されたジオメトリビットストリーム、圧縮された特質ビットストリーム、圧縮された付加パッチ情報ビットストリーム、また圧縮された占有マップビットストリームは、V-PCCビットストリームの構造として多重化される。
【0442】
実施例によれば、V-PCCビットストリームは、そのまま受信側に送信されてもよく、または
図1、
図18、
図20または
図21のファイル/セグメントカプセル化部においてファイル/セグメントの形式でカプセル化されて受信装置へ送信されてもよく、デジタル記憶媒体(例えば、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなど)に格納されてもよい。本明細書においてファイルは、ISOBMFFファイルフォーマットであることを一実施例とする。
【0443】
実施例によれば、V-PCCビットストリームは、ファイルのマルチプルトラックを介して送信されてもよく、1つのシングルトラックを介して送信されてもよい。詳細は後述する。
【0444】
図24は、実施例によるV-PCCビットストリーム構造の一例を示す。
図24のV-PCCビットストリームは、
図1、
図4、
図18、
図20または
図21のV-PCCベースポイントクラウドビデオエンコーダから出力されることを一実施例とする。
【0445】
V-PCCビットストリームは、1つ以上のV-PCCユニットからなる。即ち、V-PCCビットストリームは、V-PCCユニットの集合である。各々のV-PCCユニットは、V-PCCユニットヘッダとV-PCCユニットペイロードとからなる。本明細書は、V-PCCユニットヘッダによってそのV-PCCユニットペイロードに含まれるデータを区分し、そのためにV-PCCユニットヘッダは、そのV-PCCユニットのタイプを指示するタイプ情報を含む。各々のV-PCCユニットペイロードは、そのV-PCCユニットヘッダのタイプ情報に従って、ジオメトリビデオデータ(即ち、圧縮されたジオメトリビットストリーム)、特質ビデオデータ(即ち、圧縮された特質ビットストリーム)、占有ビデオデータ(即ち、圧縮された占有マップビットストリーム)、パッチデータグループ(Patch Data Group、PDG)、シーケンスパラメータセット(Sequence Parameter Set、SPS)のうちの少なくとも1つを含むことができる。パッチデータグループはアトラス(atlas)とも呼ぶ。本明細書において、アトラスをパッチデータグループに置き換えることができる。
【0446】
少なくともジオメトリビデオデータ、特質ビデオデータ、また占有マップビデオデータ(または占有ビデオデータという)を含むV-PCCユニットペイロードは、適宜なビデオデコーダ(appropriate video decoder)によって復号されるビデオデータユニット(例えば、HEVC NALユニット)に該当する。
【0447】
ジオメトリビデオデータ、特質ビデオデータ、また占有マップビデオデータは、符号化されたポイントクラウドのジオメトリ、特質、占有マップコンポーネントのための2Dビデオ符号化情報と呼び、パッチデータグループ(またはアトラス)は、ノン-ビデオ(non-video)符号化された情報と呼ぶことにする。パッチデータグループは、付加パッチ情報を含む。シーケンスパラメータセットは、ビットストリームの全体的な符号化情報を含み、構成およびメタデータ情報(configuration and metadata information)と呼ぶこともある。上記シーケンスパラメータセットとパッチデータグループは、シグナリング情報と呼んでもよく、ポイントクラウドビデオエンコーダ内のメタデータ処理部で生成されてもよく、またはポイントクラウドビデオエンコーダ内の別のコンポーネント/モジュールで生成されてもよい。また、本明細書において、シーケンスパラメータセットとパッチデータグループは、初期化情報と呼び、ジオメトリビデオデータ、特質ビデオデータ、占有マップビデオデータは、ポイントクラウドデータと呼ぶ。
【0448】
一実施例として、V-PCCユニットヘッダのタイプ情報がパッチデータグループ(VPCC-PDG)を指示する場合、そのV-PCCユニットペイロードは、パッチデータグループを含むことができ、逆に、V-PCCユニットペイロードがパッチデータグループを含む場合は、そのV-PCCユニットヘッダのタイプ情報がこれを識別することができる。これは設計者の選択事項であるため、本明細書は上記実施例に限らない。また、その他のV-PCCユニットも同一または類似に適用される。
【0449】
パッチデータグループは、パッチデータグループユニット()フォーマットでV-PCCユニットペイロードに含まれる。パッチデータグループは、1つ以上のパッチタイルグループ(patch tile group)の情報と、パッチシーケンスパラメータセット、パッチフレームパラメータセット、パッチフレームジオメトリパラメータセット、ジオメトリパッチパラメータセット、パッチフレーム特質パラメータセット、特質パッチパラメータセットのうちの少なくとも1つを含むことができる。
【0450】
一方、ポイントクラウドデータの対象となるパッチフレーム(またはポイントクラウド客体という)は、1つ以上のタイル(one or multiple tiles)に分割されてもよい。実施例によるタイルは、3D空間上で一定の領域を示してもよく、2D平面上で一定の領域を示してもよい。また、タイルは、1つのバウンディングボックス内の直六面体(rectangular cuboid)またはサブ-バウンディングボックスまたはパッチフレームの一部となることがある。本明細書において、パッチフレーム(またはポイントクラウド客体)を1つ以上のタイルに分割することは、
図1のポイントクラウドビデオエンコーダ、
図18のパッチ生成部、
図20のポイントクラウド前処理部、または
図21のパッチ生成部で行われてもよく、別のコンポーネント/モジュールで行われてもよい。
【0451】
実施例によれば、
図24のような構造のV-PCCビットストリームは、そのまま受信側へ送信されてもよく、ファイル/セグメント形式でカプセル化されて受信側へ送信されてもよい。
【0452】
本明細書において、V-PCCビットストリームは、ファイルフォーマットでカプセル化して送信することを一実施例とする。例えば、V-PCCビットストリームは、ISOBMFF(ISO Base Media File Format)ベースのファイルフォーマットでカプセル化することができる。
【0453】
V-PCCビットストリームをファイルにカプセル化することは、
図1のファイル/セグメントカプセル化部10003、
図18の送信部18008、
図20のファイル/セグメントカプセル化部20004、または
図21のファイル/セグメントカプセル化部21009で行うことを一実施例とする。ファイルをV-PCCビットストリームにデカプセル化することは、
図1のファイル/セグメントデカプセル化部10007、
図19の受信部、
図20のファイル/セグメントデカプセル化部20005、または
図22のファイル/セグメントデカプセル化部22000で行うことを一実施例とする。
【0454】
図25は、実施例によるマルチプルトラックV-PCCファイル構造を視覚化した図である。即ち、マルチプルトラック(multiple tracks)を含むISOBMFFベースのファイルのレイアウト(layout)の一例を示す。
【0455】
実施例によるISOBMFFベースのファイルは、コンテナ、コンテナファイル、メディアファイル、V-PCCファイルなどと呼んでもよい。具体的に、ファイルは、ftyp、meta、moov、mdatと呼ぶボックスおよび/または情報などで構成されてもよい。
【0456】
ftypボックス(ファイルタイプボックス)は、そのファイルに対するファイルタイプまたはファイル互換性に関連する情報を提供することができる。受信側では、ftypボックスを参照してそのファイルを区分することができる。
【0457】
metaボックスは、vpcg{0、1、2、3}ボックス(V-PCCグループボックス、以下に詳細に説明する)を含むことができる。
【0458】
mdatボックスは、メディアデータボックスともいい、ビデオコードされたジオメトリビットストリーム、ビデオコードされた特質ビットストリーム、ビデオコードされた占有マップビットストリーム、パッチデータグループビットストリームを含むことができる。
【0459】
moovボックスは、movieボックスともいい、そのファイルのメディアデータ(例えば、ジオメトリビットストリーム、特質ビットストリーム、占有マップビットストリームなど)に対するメタデータを含むことができる。例えば、そのメディアデータの復号および再生に必要な情報を含むことができ、そのファイルのサンプルに関する情報を含むことができる。moovボックスはすべてのメタデータのためのコンテナの役割を果たすことができる。moovボックスは、メタデータ関連ボックスのうち最上位レイヤのボックスであることがある。実施例によれば、moovボックスはファイル内に1つだけ存在する。
【0460】
図25のようなISOBMFFコンテナ構造において、V-PCCビットストリームに含まれるV-PCCユニットはそれらのタイプに基づいてファイル内の個別トラック(individual tracks)にマップされることを一実施例とする。
【0461】
図25のようなレイアウトに基づき、V-PCCビットストリームのためのISOBMFFコンテナは、以下を含むことができる。
【0462】
1) V-PCCトラックを含むことができる。V-PCCトラックは、シーケンスパラメータセットおよびノン-ビデオ符号化情報を含むV-PCCユニット(例えば、V-PCCユニットヘッダ内のそのV-PCCユニットのタイプを指示するタイプ情報がシーケンスパラメータセットまたはパッチデータグループを指示)のペイロードを伝送するサンプルを含む。V-PCCトラックはまた、ビデオ圧縮情報を含むV-PCCユニット(例えば、V-PCCユニットヘッダ内のタイプ情報がジオメトリビデオデータ、特質ビデオデータ、または占有マップビデオデータを指示)のペイロードを伝送(carry)するサンプルを含むその他のトラックに対するトラックレファレンスを提供することができる。
【0463】
2) ジオメトリビデオデータのための1つ以上の制限されたビデオスキームトラック(one or more restricted video scheme tracks)を含むことができる。このトラックに含まれるサンプルは、ジオメトリビデオデータのためのビデオコードされたエレメンタリストリームのためのNALユニットを含む。この場合、V-PCCユニットヘッダ内のタイプ情報は、ジオメトリビデオデータを指示し、上記NALユニットはジオメトリビデオデータを伝送(carry)するペイロードに対応する。
【0464】
3) 特質ビデオデータのための1つ以上の制限されたビデオスキームトラックを含むことができる。このトラックに含まれるサンプルは、特質ビデオデータのためのビデオコードされたエレメンタリストリームのためのNALユニットを含む。この場合、V-PCCユニットヘッダ内のタイプ情報は、特質ビデオデータを指示し、上記NALユニットは特質ビデオデータを伝送するペイロードに対応する。
【0465】
4) 占有マップビデオデータのための1つの制限されたビデオスキームトラックを含むことができる。このトラックに含まれるサンプルは、占有マップビデオデータのためのビデオコードされたエレメンタリストリームのためのNALユニットを含む。この場合、V-PCCユニットヘッダ内のタイプ情報は、占有マップビデオデータを指示し、上記NALユニットは占有マップビデオデータを伝送するペイロードに対応する。
【0466】
実施例によれば、ジオメトリビデオデータ、特質ビデオデータ、占有マップビデオデータのためのビデオコードされたエレメンタリストリームを含むトラックをコンポーネントトラックと呼ぶことにする。
【0467】
かかるコンポーネントトラックに含まれるエレメンタリストリーム(elementary streams)の間の同期化は、ISOBMFFトラックタイミング構造(ムービーフラグメント(movie fragments)内stts、ctts、cslg、または等価メカニズム(equivalent mechanisms)によって処理(handle)されることを一実施例とする。異なるビデオ符号化コンポーネントトラック(different video encoded component tracks)およびV-PCCトラックを横切る同一のポイントクラウドフレームに寄与するサンプルは、同一のコンポジションタイム(same composition time)を有することができる。
【0468】
このサンプルに対して使用されるV-PCCパラメータセットは、そのフレームのコンポジションタイムと同一であるか、以前の復号タイムを有することができる。
【0469】
V-PCCコンテンツを伝送するISOBMFFファイルは、V-PCC定義ブランドで区分することができる。V-PCCコンテンツのトラックは、V-PCC特定のグループ化4CC値('vpcg')を有するファイル-レベルのEntityToGroupBoxであるVPCCGroupBox内にグループ化できる。VPCCGroupBoxはコンテナ内のV-PCCコンテンツに接近するためのエントリーポイントとして提供されることができ、V-PCCコンテンツを特定する初期メタデータを含むことができる。EntityToGroupBoxであるVPCCGroupBoxは、MetaBoxボックスまたはMoovボックスに含まれることができる。
【0470】
エンティティグループ(entity group)は、トラックをグループ化するアイテムのグループである。エンティティグループ内のエンティティは、グループ化タイプによって指示される特定の特性(particular characteristic)を共有するか、特定の関係(particular relationship)を有することができる。
【0471】
エンティティグループはGroupsListBox内で指示される。GroupsListBoxは、ファイルレベルMetaBoxボックス、Movie-レベルMetaBoxボックス、トラック-レベルMetaBoxボックスの少なくとも1に含まれる。file-level MetaBoxのGroupsListBoxで特定されるエンティティグループは、トラックまたはファイル-レベルアイテム(file-level items)を参照する。movie-level MetaBoxのGroupsListBoxで特定されるエンティティグループは、Movieレベルアイテム(movie-level items)を参照する。track-level MetaBoxのGroupsListBox内で特定されるエンティティグループは、そのトラックのトラックレベルアイテム(track-level items)を参照する。
【0472】
GroupsListBoxは、以下のようにEntityToGroupBoxesを含み、各々は1つのエンティティグループを特定する。
【0473】
Groups List box
【0474】
Box Type: 'grpl'
【0475】
Container: MetaBox that is not contained in AdditionalMetadataContainerBox
【0476】
Mandatory: No
【0477】
Quantity: Zero or One
【0478】
GroupsListBoxは、そのファイルのために特定される(specified)エンティティグループを含む。このボックスはフルボックスのセットを含む。それぞれは定義されたグループ化タイプを示す4-キャラクターコードを有するEntityToGroupBoxと呼ばれる。
【0479】
GroupsListBoxは、AdditionalMetadataContainerBox内に存在しなし。
【0480】
GroupsListBoxがファイルレベルメタボックス(file-level MetaBox)内に存在する場合、以下のようにTrackHeaderBox内のトラックID値と同一のファイルレベルメタボックスにおけるItemInfoBox内にアイテムID値がないことがある。
【0481】
aligned(8) class GroupsListBox extends Box('grpl') {
【0482】
}
【0483】
Box Type: As specified below with the grouping_type value for the EntityToGroupBox
【0484】
Container: GroupsListBox
【0485】
Mandatory: No
【0486】
Quantity: One or more
【0487】
EntityToGroupBoxはエンティティグループを特定する。
【0488】
ボックスタイプ(grouping_type)は、エンティティグループのグループ化タイプを示す。各grouping_typeコードは、グループ化を説明するセマンティクス(semantics)に関連する。以下、grouping_type valueについて説明する:
【0489】
'altr':このグループ化にマップされるアイテムおよびトラックは互いに置き換えることができ、それらのうちのただ1つは、プレイ(マップされたアイテムおよびトラックがプレゼンテーションの一部となる場合、例えば、ディスプレイ可能なアイテムまたはトラック)されるか、その他の方法(other means)(マップされたアイテムまたはトラックがプレゼンテーションの一部ではない場合、例えば、メタデータ)によって処理できる。プレーヤーは、エンティティID値(entity_id)のリストから第1のエンティティを選択し、処理することができる。例えば、プレゼンテーションの一部であるマップされたアイテムおよびトラックに対して復号およびプレイする。またアプリケーションのニーズに適合する。エンティティID値は、タイプ 'altr'の1つのグループ化のみにマップされる。エンティティの代替グループ(alternate group)は、タイプ‘altr’の同一のエンティティグループにマップされるアイテムおよびトラックからなる。
【0490】
ノート:EntityToGroupBoxはgrouping_typeに特定な拡張を含む。
【0491】
aligned(8) class EntityToGroupBox(grouping_type、version、flags) extends FullBox(grouping_type、version、flags) {
【0492】
unsigned int(32) group_id;
【0493】
unsigned int(32) num_entities_in_group;
【0494】
for(i=0; i<num_entities_in_group; i++)
【0495】
unsigned int(32) entity_id;
【0496】
}
【0497】
実施例によるグループID(group_id)は、他のEntityToGroupBoxのグループID(group_id)、GroupsListBoxを含む階層レベル(file、movie、またはtrack)のアイテムId(item_ID)値またはトラックID(track_ID)値(GroupsListBoxがファイルレベルに含まれる場合)と同一ではない特定のグループ化に割り当てられるノン-ネガティブ整数(non-negative integer)である。
【0498】
実施例によるnum_entities_in_groupは、このエンティティグループにマップされるエンティティID(entity_id)値の数を示す。
【0499】
実施例によるentity_idは、エンティティID(entity_id)と同一のアイテムID(item_ID)を有するアイテムがGroupsListBoxを含む階層レベル(file、movieまたはtrack)内に存在する場合、エンティティIDと同一のトラックID(track_ID)を有するトラックが存在し、GroupsListBoxがファイルレベルに含まれる場合にアイテムで解決される(is resolved to an item、when an item with item_ID equal to entity_id is present in the hierarchy level (file、movie or track) that contains the GroupsListBox、or to a track、when a track with track_ID equal to entity_id is present and the GroupsListBox is contained in the file level)。
【0500】
以下、V-PCCグループボックスについて説明する。
【0501】
Box Type: 'vpcg'
【0502】
Container: GroupListBox
【0503】
Mandatory: Yes
【0504】
Quantity: One or more
【0505】
上記V-PCCグループボックスは、GroupsListBoxに含まれ、V-PCCコンテンツを含むトラックのリストを提供する(This box is included in GroupsListBox and provides a list of the tracks that comprise a V-PCC content)。
【0506】
V-PCCコンテンツ特定情報、例えば、特質タイプとレイヤを関連トラックにマップするような情報はこのボックスにリストされる。この情報はV-PCCコンテンツを最初に理解するために便利な方法を提供する(V-PCC content specific information、such as mapping of the attribute types and layers to the related tracks、are listed in this box. This information provides a convenient way to have an initial understanding of the V-PCC content)。様々なクライアント機能を支援するV-PCCコンテンツの柔軟な構成のために、符号化されたV-PCCコンポーネントのマルチプルバージョンがこのボックスにリストされる。V-PCCで定義されたプロファイル、階層、およびレベル情報も以下のようにこのボックスにおいて伝送される。
【0507】
aligned(8) class VPCCGroupBox() extends EntityToGroupBox(‘vpcg’、version、flags) {
【0508】
for (i=0;i<num_entities_in_group;i++){
【0509】
unsigned int(4) data_type;
【0510】
unsigned int(4) attribute_type;
【0511】
unsigned int(1) multiple_layer_present_flag;
【0512】
unsigned int(4) layer_count_munus1;
【0513】
for (i=0;i<layer_count_minus1+1;i++){
【0514】
unsigned int(4) layer_id;
【0515】
}
【0516】
unsigned int(32) entity_id;
【0517】
}
【0518】
unsigned int(4) CC_layer_count_minus1;
【0519】
vpcc_profile_tier_level()
【0520】
}
【0521】
実施例によるdata_typeは、参照されたトラック内のPCCデータのトラックタイプを示す。
【0522】
図26は、実施例によるデータタイプ(data_type)に割り当てられるPCCデータのトラックタイプの一例を示すテーブルである。例えば、data_typeの値が1であるとV-PCCトラックを、2であるとジオメトリビデオトラックを、3であるとは特質ビデオトラックを、4であると占有マップビデオトラックを指示することができる。
【0523】
実施例によるmultiple_layer_present_flagは、シングルジオメトリまたは特質レイヤまたはマルチプルジオメトリまたは特質レイヤが関連エンティティ(またはトラック)に伝送されるか否かを指示する。例えば、multiple_layer_present_flagが0の場合は、シングルジオメトリまたは特質レイヤが関連エンティティ(またはトラック)に伝送されることを指示し、1である場合は、マルチプルジオメトリまたは特質レイヤに関連エンティティ(またはトラック)に伝送されることを指示することができる。実施例によるV-PCCトラック(即ち、data_typeがV-PCCトラックを指示)はその値が0のmultiple_layer_present_flagを有する。また他の例として、上記data_typeがジオメトリビデオトラックを指示する場合、multiple_layer_present_flagの値が0である場合は上記ジオメトリビデオトラックはシングルジオメトリレイヤを伝送し、multiple_layer_present_flagの値が1である場合は上記ジオメトリビデオトラックはマルチプルジオメトリレイヤを伝送することを指示することができる。また他の例として、上記data_typeが特質ビデオトラックを指示する場合、multiple_layer_present_flagの値が0である場合は上記特質ビデオトラックはシングル特質レイヤを伝送し、multiple_layer_present_flagの値が1である場合は上記特質ビデオトラックはマルチプル特質レイヤを伝送することを指示することができる。
【0524】
実施例によるlayer_count_minus1 plus 1は、関連エンティティ(またはトラック)に伝送されるジオメトリおよび/または特質レイヤの数を指示する。実施例によるV-PCCトラックはその値が0であるlayer_count_minus1を有する。例えば、上記data_typeがジオメトリビデオトラックを指示する場合、layer_count_minus1 plus 1はジオメトリビデオトラックに伝送されるジオメトリレイヤの数を指示することができる。また他の例として、上記data_typeが特質ビデオトラックを指示する場合、layer_count_minus1 plus 1は特質ビデオトラックに伝送される特質レイヤの数を指示することができる。
【0525】
実施例によるlayer_idは、関連エンティティ(またはトラック)内のジオメトリおよび/または特質レイヤのレイヤ識別者(layer identifier)を示す。実施例によるV-PCCトラックは、その値が0であるlayer_idを有する。V-PCCコンポーネントトラックタイプのためのlayer_id値のセットは、増加順に整列され、0から始まる連続するセットの整数である。例えば、上記data_typeがジオメトリビデオトラックを指示する場合、layer_idはジオメトリレイヤのレイヤ識別者を指示することができる。また他の例として、上記data_typeが特質ビデオトラックを指示する場合、layer_idは特質レイヤのレイヤ識別者を指示することができる。
【0526】
実施例によるpcc_layer_count_munus1 plus 1は、ポイントクラウドストリームのジオメトリコンポーネントおよび/または特質コンポーネントを符号化するために使用されたレイヤの数を示す。例えば、上記data_typeがジオメトリビデオトラックを指示する場合、pcc_layer_count_munus1 plus 1はポイントクラウドストリームのジオメトリコンポーネントを符号化するために使用されたレイヤの数を指示することができる。また他の例として、上記data_typeが特質ビデオトラックを指示する場合、pcc_layer_count_munus1 plus 1はポイントクラウドストリームの特質コンポーネントを符号化するために使用されたレイヤの数を指示することができる。
【0527】
実施例によるattribute_typeは、参照されたエンティティ(またはトラック)内に伝送される特質ビデオデータの特質タイプを示す。
【0528】
図27は、 実施例によれば、attribute_typeに割り当てられた特質タイプの一例を示す。例えば、attribute_typeの値が0である場合はテキスチャーを、1である場合はマテリアルIDを、2である場合は透明度を、3である場合は反射率を、4である場合はノーマルを指示することができる。
【0529】
実施例によるentity_idは、関連するアイテムまたはトラックのための識別者を示す。entity_idと同一のitem_IDを有するアイテムがGroupsListBoxを含む階層レベル(ファイル、ムービーまたはトラック)内に存在する場合はアイテムで解決される。または、entity_idと同一のtrack_IDを有するトラックが存在し、GroupsListBoxがファイルレベルに含まれる場合はトラックで解決される。
【0530】
vpcc_profile_tier_level()は、シーケンスパラメータセット(sequence_parameter_set())に特定されたprofile_tier_level()と同様である。
【0531】
図28は、実施例によるプロファイルティアレベル(profile_tier_level)()のシンタックス構造の一例を示す。
【0532】
ptl_tier_flagフィールドは、V-PCCコンテンツを符号化するために使用されるコーデックプロファイルティアを示す。
【0533】
ptl_profile_idcフィールドは、コードされたポイントクラウドシーケンスが従うプロファイル情報を示す。
【0534】
ptl_level_idcフィールドは、コードされたポイントクラウドシーケンスが従うコーデックプロファイルのレベルを示す。
【0535】
以下、V-PCCトラックについて説明する。
【0536】
各々のV-PCCコンテンツのエントリーポイントはユニークなV-PCCトラックで表現できる。ISOBMFFファイルはマルチプルV-PCCコンテンツを含むことができ、よってマルチプルV-PCCトラックは上記ファイル内に存在する。V-PCCトラックは、メディアボックスのハンドラボックス内のボリュームビジュアルメディアボハンドラタイプ‘volm’ハンドラタイプによって識別される。
【0537】
Box Type: 'vohd'
【0538】
Container: MediaInformationBox
【0539】
Mandatory: Yes
【0540】
Quantity: Exactly one
【0541】
Volumetric tracks use the VolumetricMediaHeaderBox in the MediaInformationBox
【0542】
aligned(8) class VolumetricMediaHeaderBox extends FullBox('vohd'、version = 0、1) {
【0543】
// if we don't need anything here、then use Null Media Header
【0544】
}
【0545】
//random access point for the patch stream
【0546】
V-PCCトラックのためのランダムアクセスポイントは、空のデコーダバッファ(empty decoder buffer)内のIパッチフレームを伝送するサンプルであってもよい。V-PCCトラックのためのランダムアクセスポイントを指示するために、syncsampleBoxが存在する。このシンクサンプルはIパッチフレームを伝送するシンクサンプルを示す。
【0547】
トラックフラグメントを含むトラック内の一部のサンプルが非シンクサンプルであるが、トラックフラグメント内のサンプルのflag sample_is_non_sync_sampleが有効(valid)であり、そのサンプルを説明し、しかもSyncSampleBoxが存在しない場合でも、上記SyncSampleBoxはSampleTableBox内に存在する(The SyncSampleBox should be present in the SampleTableBox if some samples in the track、including any track fragments、are non sync samples、but the flag sample_is_non_sync_sample of samples in track fragments is valid and describes the samples、even if the SyncSampleBox is not present)。トラックがフラグメントされず、SyncSampleBoxが存在しない場合には、トラック内のすべてのサンプルはシンクサンプルである。
【0548】
Box Type: 'stbl'
【0549】
Container: MediaInformationBox
【0550】
Mandatory: Yes
【0551】
Quantity: Exactly one
【0552】
aligned(8) class SampleTableBox extends Box('stbl') {
【0553】
}
【0554】
Box Type: 'stss'
【0555】
Container: SampleTableBox
【0556】
Mandatory: No
【0557】
Quantity: Zero or one
【0558】
このボックスはストリーム内シンクサンプルのコンパクトマーキング(compact marking)を提供する。このテーブルは厳しくサンプル番号(sample number)の昇順に配列される。SyncSampleBoxが存在しない場合にはすべてのサンプルはシンクサンプルである。
【0559】
aligned(8) class SyncSampleBox
【0560】
extends FullBox('stss'、version = 0、0) {
【0561】
unsigned int(32) entry_count;
【0562】
int i;
【0563】
for (i=0; i < entry_count; i++) {
【0564】
unsigned int(32) sample_number;
【0565】
}
【0566】
}
【0567】
versionは整数であり、このボックスのバージョンを示す。
【0568】
entry_countは整数であり、以下のテーブルのエントリーの数を提供(give)する。entry_countの値が0である場合は、そのストリーム内シンクサンプルはなく、以下のテーブルは空(empty)である。
【0569】
sample_numberは、ストリーム内の各シンクサンプル別に、そのサンプル番号を提供する。特に、sample_numberはV-PCCトラック内Iパッチフレームを伝送する各シンクサンプル別に、そのサンプル番号を提供する(sample_number gives、for each sync sample carrying I-patch frame in the V-PCC track、its sample number)。
【0570】
以下、V-PCCトラックサンプルエントリーについて説明する。
【0571】
Sample Entry Type: 'vpc1'
【0572】
Container: SampleDescriptionBox ('stsd')
【0573】
Mandatory: A 'vpc1' sample entry is mandatory
【0574】
Quantity: one or more
【0575】
トラックサンプルエントリータイプ'vpc1'が使用される。V-PCCトラックサンプルエントリーは、以下の定義のように、VPCC Configuration Boxを含む。これは、定義のように、VPCCDecoderConfigurationRecordを含む。オプションのBitRateBoxがV-PCCビデオストリームのビットレート情報をシグナルするためにV-PCCトラックサンプルエントリーに存在することがある。
【0576】
aligned(8) class VPCCDecoderConfigurationRecord {
【0577】
unsigned int(8) configurationVersion = 1;
【0578】
unsigned int(8) numOfSequenceParameterSets;
【0579】
for (i=0; i<numOfSequenceParameterSets; i++) {
【0580】
sequence_parameter_set();
【0581】
}
【0582】
// additional fields
【0583】
}
【0584】
class VPCCConfigurationBox extends Box('vpcc') {
【0585】
VPCCDecoderConfigurationRecord() VPCCConfig;
【0586】
}
【0587】
aligned(8) class VPCCSampleEntry() extends VolumetricSampleEntry ('vpc1') {
【0588】
VPCCConfigurationBox config;
【0589】
}
【0590】
class VolumetricSampleEntry(codingname) extends SampleEntry (codingname){
【0591】
}
【0592】
configurationVersionはバージョンフィールドである。そのレコードに対する非互換性変更(Incompatible changes to the record)は、バージョン番号の変更によって指示される。
【0593】
numOfSequenceParameterSetsはデコーダConfigurationレコードにシグナルされたV-PCCシーケンスパラメータセットの数を示す。
【0594】
ベースクラスVisualSampleEntry内コンプレッサ名は、推奨される値“\012VPCC Coding”において使用されたコンプレッサの名前を示す。
【0595】
V-PCC明細(specification)はVPCC_SPSユニットのマルチプルインスタンス(1~15までids 内)を許容する。従って、VPCCSampleEntryはマルチプルsequence_parameter_setユニットペイロードを含む。
【0596】
以下、V-PCCサンプルフォーマットについて説明する。
【0597】
V-PCCトラック内の各サンプルはシングルポイントクラウドフレームに対応する。
【0598】
様々なコンポーネントトラック内においてこのフレームに対応するサンプルは、V-PCCトラック内フレームのためのV-PCCトラックサンプルと同一のコンポジションタイムを有する。
【0599】
各V-PCCサンプルは、そのV-PCCユニットヘッダ内タイプ情報がパッチデータグループ(PDG)を指示する1つのV-PCCユニットペイロードのみを含む。このV-PCCユニットペイロードは、
図24のように、1つ以上のパッチタイルグループユニットペイロードを含む。
【0600】
aligned(8) class vpcc_unit_payload_struct {
【0601】
vpcc_unit_payload();
【0602】
}
【0603】
aligned(8) class VPCCSample {
【0604】
vpcc_unit_payload_struct();
【0605】
}
【0606】
vpcc_unit_payload()は、そのV-PCCユニットヘッダ内のタイプ情報がパッチデータグループ(PDG)を指示するV-PCCユニットのペイロードであり、1つのpatch_data_group_unit()インスタンスを含む。
【0607】
V-PCCトラックに対して、Iパッチフレームを伝送するサンプルはシンクサンプルとして定義される。
【0608】
以下、V-PCCトラック参照について説明する。
【0609】
V-PCCトラックをコンポーネントビデオトラックにリンクするために、ISOBMFF規格のトラック参照ツールを使用する。3つのTrackReferenceTypeBoxesがV-PCCトラックのトラックボックス内のTrackReferenceBoxに各コンポーネント別に1回追加される。
【0610】
TrackReferenceTypeBoxは、V-PCCトラックを参照するビデオトラックを指定する(designating)track_IDsのアレイを含む。
【0611】
TrackReferenceTypeBoxのreference_typeはそのコンポーネント(即ち、ジオメトリ、特質、または占有マップ)のタイプを識別する。新しいトラック参照タイプの4CCには'pcca'、'pccg'、'pcco'などがある。
【0612】
'pcca'タイプにおいて、参照された(referenced)トラックはビデオコードされた特質V-PCCコンポーネントを含む。
【0613】
'pccg'タイプにおいて、参照されたトラックはビデオコードされたジオメトリV-PCCコンポーネントを含む。
【0614】
'pcco'タイプにおいて、参照されたトラックはビデオコードされた占有マップV-PCCコンポーネントを含む。
【0615】
以下、ビデオ符号化されたV-PCCコンポーネントトラック(video encoded V-PCC component tracks)について説明する。
【0616】
プレーヤー側でポイントクラウドを再構成せず、特質、ジオメトリまたは占有マップトラックから復号されたフレームをディスプレイすることは意味がないため、制限されたビデオスキームタイプがそのビデオ-コードされたトラックのために定義される。V-PCCビデオトラックは4CC識別者'pccv'を含む。この4CC識別者'pccv'が、制限されたサンプルエントリーのRestrictedSchemeInfoBoxのSchemeTypeBoxのscheme_type fieldに含まれる。
【0617】
制限されたビデオサンプルエントリータイプ'resv'のためのV-PCCビデオスキームの使用は、復号されたピクチャーがポイントクラウドの特質、ジオメトリ、または占有マップデータを含むことを示す。
【0618】
V-PCCビデオスキームの使用は、RestrictedSchemeInfoBoxのSchemeTypeBoxにおいて'pccv'(ビデオベースポイントクラウドビデオ)と同一のscheme_typeによって表現される。
【0619】
このボックスは、このトラックのV-PCC特定情報を示すボックスを含むコンテナである。VPCCVideoBoxは、トラック内のすべてのサンプルに適用可能なPCC特定パラメータを提供する。
【0620】
Box Type: 'pccv'
【0621】
Container: SchemeInformationBox
【0622】
Mandatory: Yes、when scheme_type is equal to 'pccv'
【0623】
Quantity: Zero or one
【0624】
aligned(8) class VPCCVideoBox extends FullBox(’vpcc’、0、0) {
【0625】
unsigned int(4) data_type;
【0626】
unsigned int(4) attribute_count;
【0627】
for(int i=0; i<attribute_count+1;i++) {
【0628】
unsigned int(4) attribute_type;
【0629】
}
【0630】
unsigned int(1) multiple_layer_present_flag;
【0631】
unsigned int(4) layer_count_minus1;
【0632】
for (i = 0 ; i< layer_count_minus1+1 ; i++) {
【0633】
unsigned int(4) layer_id;
【0634】
}
【0635】
}
【0636】
data_typeは、該当トラックに含まれたビデオサンプルが包含するデータタイプを示す。
【0637】
図29は、実施例による参照されたトラック内PCCデーのタイプの一例を示す。例えば、data_typeの値が1である場合はV-PCCトラックを、2である場合はジオメトリビデオトラックを、3である場合は特質ビデオトラックを、4である場合は占有マップビデオトラックを指示する。
【0638】
multiple_layer_present_flagは、シングルジオメトリまたは特質レイヤまたはマルチプルジオメトリまたは特質レイヤがこのトラックに伝送されるか否かを指示する。例えば、multiple_layer_present_flagが0であればシングルジオメトリまたは特質レイヤがこのトラックに伝送されることを指示し、1であればマルチプルジオメトリまたは特質レイヤがこのトラックに伝送されることを指示する。また他の例として、上記data_typeがジオメトリビデオトラックを指示する場合、multiple_layer_present_flagの値が0であれば、上記ジオメトリビデオトラックはシングルジオメトリレイヤを伝送し、multiple_layer_present_flagの値が1であれば、上記ジオメトリビデオトラックはマルチプルジオメトリレイヤを伝送することを指示する。また他の例として、上記data_typeが特質ビデオトラックを指示する場合、multiple_layer_present_flagの値が0であれば、上記特質ビデオトラックはシングル特質レイヤを伝送し、multiple_layer_present_flagの値が1であれば、上記特質ビデオトラックはマルチプル特質レイヤを伝送することを指示する。
【0639】
layer_count_minus1 plus 1は、このトラックに伝送されるジオメトリおよび/または特質レイヤの数を指示する。例えば、上記data_typeがジオメトリビデオトラックを指示する場合、layer_count_minus1 plus 1はジオメトリビデオトラックに伝送されるジオメトリレイヤの数を指示する。また他の例として、上記data_typeが特質ビデオトラックを指示する場合、layer_count_minus1 plus 1は特質ビデオトラックに伝送される特質レイヤの数を指示する。
【0640】
layer_idは、このトラック内サンプルに関連するジオメトリおよび/または特質レイヤのレイヤ識別者(layer identifier)を示す。例えば、上記data_typeがジオメトリビデオトラックを指示する場合、layer_idはジオメトリレイヤのレイヤ識別者を指示する。また他の例として、上記data_typeが特質ビデオトラックを指示する場合、layer_idは特質レイヤのレイヤ識別者を指示する。attribute_countは、該当トラックに含まれたポイントクラウドストリームの特質データの数を示すことができる。1つのトラックに1つ以上の特質データが含まれてもよい。この場合、上記data_typeは特質ビデオトラックを指示することを一実施例とする。
【0641】
attribute_typeは、該当トラックに伝送される特質ビデオデータの特質タイプを示す。
【0642】
図30は、実施例による特質タイプの一例を示す。例えば、attribute_typeフィールドの値が0であればテキスチャーを、1であればマテリアルIDを、2であれば透明度を、3であれば反射率を、4であればノーマルを示す。
【0643】
VPCCVideoBox内に存在するフィールド値がアイテムに関連するシグナリングに含まれる場合、該当アイテム(イメージ)に対する上記情報を示すことができる。
【0644】
以下、特質サンプルグループ化(attribute sample grouping)について説明する。
【0645】
トラックがポイントクラウドの特質データを含む場合、1つ以上の特質タイプのデータを含むことができる。この場合、以下のように、該当トラックに含まれたサンプルが包含するデータ特質タイプをシグナリングすることができる。
【0646】
class PCCAttributeSampleGroupEntry extends VisualSampleGroupEntry('pcca') {
【0647】
unsigned int(4) attribute_type;
【0648】
}
【0649】
attribute_typeは、該当トラック内の関連するサンプルに伝送される特質ビデオデータの特質タイプを示す。
【0650】
図31は、実施例による特質タイプの一例を示す。例えば、attribute_typeフィールドの値が0であればテキスチャーを、1であればマテリアルIDを、2であれば透明度 を、3であれば反射率を、4であればノーマルを示す。
【0651】
以下、レイヤサンプルグループ化について説明する。
【0652】
トラックのポイントクラウドの同一のデータタイプ(例えば、ジオメトリデータ、特質データ)の1つ以上のレイヤと関連するデータを含むことができる。この場合、以下のように、該当トラックに含まれたサンプルが包含するデータのレイヤ関連情報をシグナリングすることができる。
【0653】
class PCCLayerSampleGroupEntry extends VisualSampleGroupEntry('pccl') {
【0654】
unsigned int(4) pcc_layer_count_minus1;
【0655】
unsigned int(4) layer_id;
【0656】
}
【0657】
pcc_layer_count_minus1 plus 1は、ポイントクラウドストリームのジオメトリと特質コンポーネントを符号化するために使用されたレイヤの数を示す。
【0658】
layer_idは該当トラック内の関連したサンプルのためのレイヤ識別者を示す。
【0659】
以下、レイヤトラッキンググループ化について説明する。
【0660】
V-PCCの観点より、ジオメトリに加えて、すべての他のタイプの情報(占有とパッチ情報以外)は、同一数のレイヤを有してもよい。また、同一レイヤインデックスがタグ(tag)されたすべての情報(ジオメトリ/特質)は互いに関係する。即ち、同一レイヤインデックスがタグされた情報は、3D空間において同様に再構成されたポイントを参照する。
【0661】
レイヤインデックスMを有する特質を再構成するために、インデックスMを有するジオメトリレイヤも利用される(be available)。もし、ある理由によってそのジオメトリレイヤが無くなる場合、両方は互いに‘linked’であるため、その特質情報は必要ない。
【0662】
レンダリングの観点より、その情報は‘augmenting’再構成されたポイントクラウドとみなされる。これは一部のレイヤを捨てることで(by discarding some layers)、合理的な再構成(reasonable reconstruction)が得られることを意味する。しかし、レイヤ0は廃棄(discard)しないことを一実施例とする。
【0663】
同一のレイヤに属するトラックは、track_group_type ’pccl'に対して同一値のtrack_group_idを有し、1つのレイヤからのトラックのtrack_group_idは、相違するレイヤからのトラックのtrack_group_idとは異なることを一実施例とする。
【0664】
基本的に(by default)、このトラックグループ化がファイル内のトラック(any track)に対して指示されない場合、そのファイルは一レイヤのみのためのコンテンツを含むものとみなされる。
【0665】
aligned(8) class PCCLayerTrackGroupBox extends TrackGroupTypeBox('pccl') {
【0666】
unsigned int(4) pcc_layer_count_minus1;
【0667】
unsigned int(4) layer_id;
【0668】
}
【0669】
pcc_layer_count_minus1 plus 1は、ポイントクラウドストリームのジオメトリおよび/または特質コンポーネントを符号化するために使用されたレイヤの数を示す。
【0670】
layer_idは、該当トラックに伝送される関連pccデータ(例えば、ジオメトリおよび/または特質)レイヤのためのレイヤ識別者を示す。
【0671】
これは、
図20のプレーヤーまたは
図1、
図19、
図20、あるいは
図22のレンダラーに、同一のトラックグループに属するトラックのデータは同一レイヤのポイントクラウドを復元するのに使用されることを知らせることができる。
【0672】
今までの説明のように、本明細書は、クライアント/プレーヤーが、必要に応じて、特質非ストリームを選択して使用できるようにするためのシグナリング情報をV-PCCトラックと特質トラックのうちの少なくとも1つにシグナリングしている。
【0673】
また、本明細書は、V-PCCトラック内サンプルのうちランダムアクセスポイントに関連するシグナリング情報をV-PCCトラックと特質トラックのうちの少なくとも1つにシグナリングしている。
【0674】
よって、クライアント/プレーヤーは、ランダムアクセスポイントに関連するシグナリング情報を取得し、シグナリング情報に基づいて必要な特質ビットストリームを取得して使用することができるため、効率的でより早いデータ処理が可能となる。
【0675】
また、本明細書は、ファイル内ジオメトリおよび/または特質ビデオデータがマルチプルレイヤからなる場合、共に使用されるトラックグループ化情報をV-PCCトラックと該当ビデオトラック(即ち、ジオメトリトラックまたは特質トラック)のうちの少なくとも1つにシグナリングしている。
【0676】
また、本明細書は、1つのトラックにジオメトリおよび/または特質ビデオデータがマルチプルレイヤとして構成される場合、これに対するサンプルグループ化情報をV-PCCトラックと該当ビデオトラック(即ち、ジオメトリトラックまたは特質トラック)のうちの少なくとも1つにシグナリングしている。
【0677】
また、本明細書は、1つのトラックに複数の特質ビデオデータが含まれる場合、これに対するサンプルグループ化情報をV-PCCトラックと特質トラックのうちの少なくとも1つにシグナリングしている。
【0678】
一方、ポイントクラウドデータの対象となるパッチフレーム(またはポイントクラウド客体またはアトラスフレームという)は、上述のように、1つ以上のタイル(one or multiple tiles)に分割されてもよい。実施例によるタイルは、3D空間上で一定の領域を示してもよく、2D平面上で一定の領域を示してもよい。また、タイルは1つのバウンディングボックス内の直六面体(rectangular cuboid)またはサブ-バウンディングボックスまたはパッチフレームの一部になってもよい。本明細書において、パッチフレーム(またはポイントクラウド客体)を1つ以上のタイルに分割することは、
図1のポイントクラウドビデオエンコーダ、
図18のパッチ生成部、
図20のポイントクラウド前処理部、または
図21のパッチ生成部において行われてもよく、別のコンポーネント/モジュールで行われてもよい。
【0679】
図32は、パッチフレームの1つ以上をロー方向に分割して、1つ以上をカラム方向に分割し、1つのパッチフレームを複数のタイルに分割する例を示す。1つのタイルは1つのパッチフレーム内の直方形領域(rectangular region)であり、タイルグループはパッチフレーム内の複数のタイル(a number of tiles)を含むことができる。本明細書は、タイルグループはパッチフレームの直方形(または四角形)領域を集合的に(collectively)形成するパッチフレームの複数のタイルを含む。特に、
図32のパッチフレームは24つのタイル(=カラム方向の6つのタイル*ロー方向の4つのタイル)に分割され、9つの直方形(または四角形)パッチタイルグループに分割された例を示す。
【0680】
このとき、
図24のPCCユニットヘッダのタイプ情報が少なくとも1つ以上のパッチを含むパッチデータグループ(VPCC-PDG)を指示する場合、該当V-PCCユニットペイロードはパッチデータグループを含み、逆に、V-PCCユニットペイロードがパッチデータグループを含む場合、該当V-PCCユニットヘッダのタイプ情報がこれを識別することができる。
【0681】
このパッチデータグループは、1つ以上のパッチタイルグループ(patch tile group)の情報とパッチシーケンスパラメータセット(patch sequence parameter set)、パッチフレームパラメータセット、パッチフレームジオメトリパラメータセット、ジオメトリパッチパラメータセット、パッチフレーム特質パラメータセット、特質パッチパラメータセットのうちの少なくとも1つを含んでもよい。
【0682】
図33は、実施例による各V-PCCユニットのシンタックス構造の一例を示す。各V-PCCユニットは、V-PCCユニットヘッダとV-PCCユニットペイロードとからなる。
図33のV-PCCユニットは、より多いデータを含むことができ、この場合、trailing_zero_8bitsフィールドをさらに含むことができる。実施例によるtrailing_zero_8bitsフィールドは0x00に該当するバイトである。
【0683】
図34は、実施例によるV-PCCユニットヘッダのシンタックス構造の一例を示す。
図34のV-PCCユニットヘッダ(vpcc_unit_header())は、vpcc_unit_typeフィールドを含むことを一実施例とする。vpcc_unit_typeフィールドは、該当V-PCCユニットのタイプを指示する。
【0684】
図35は、実施例によるvpcc_unit_typeフィールドに割り当てられるV-PCCユニットのタイプを一例を示す。
【0685】
図35を参照すれば、vpcc_unit_typeフィールドの値が0であれば、該当V-PCCユニットのV-PCCユニットペイロードに含まれるデータはシーケンスパラメータセット(VPCC_SPS)であることを指示し、1であればパッチデータグループ(VPCC_PDG)であることを指示し、2であれば占有ビデオデータ(VPCC_OVD)であることを指示し、3であれば特質ビデオデータ(VPCC_AVD)であることを指示し、4であればジオメトリビデオデータ(VPCC_GVD)であることを指示することを一実施例とする。
【0686】
vpcc_unit_typeフィールドに割り当てられる値の意味、手順、削除、追加などは当業者によって容易に変更可能であるため、本発明は上記実施例に限らない。
【0687】
このとき、V-PCCユニットペイロードは、HEVC NALユニットのフォーマットに従う。即ち、vpcc_unit_typeフィールド値による占有、ジオメトリまた特質ビデオデータV-PCCユニットペイロードは、その占有、ジオメトリ、また特質パラメータセットV-PCCユニットにおいて特定された(specified)ビデオデコーダによって復号可能なビデオデータユニット(例えば、HEVC NALユニット)に該当する。
【0688】
vpcc_unit_typeフィールドが特質ビデオデータ(VPCC_AVD)またはジオメトリビデオデータ(VPCC_GVD)または占有ビデオデータ(VPCC_OVD)またはパッチデータグループ(VPCC_PDG)を指示する場合、該当V-PCCユニットヘッダはvpcc_sequence_parameter_set_idフィールドをさらに含むことを一実施例とする。
【0689】
このvpcc_sequence_parameter_set_idフィールドは、アクティブシーケンスパラメータセット(VPCC SPS)の識別者(即ち、sps_sequence_parameter_set_id)を示す(specify)。sps_sequence_parameter_set_idフィールドの値は0~15の範囲内であってもよい。
【0690】
vpcc_unit_typeフィールドが特質ビデオデータ(VPCC_AVD)を指示する場合、V-PCCユニットヘッダは、vpcc_attribute_indexフィールドとvpcc_attribute_dimension_indexフィールドをさらに含むことを一実施例とする。
【0691】
このvpcc_attribute_indexフィールドは、特質ビデオデータユニットに伝送(carry)される特質ビデオデータのインデックスを示す。このvpcc_attribute_indexフィールドの値は0から(ai_attribute_count‐1)までの範囲内であってもよい。
【0692】
このvpcc_attribute_dimension_indexフィールドは、特質ビデオデータユニットに伝送(carry)される特質ディメンジョングループのインデックスを示す。このvpcc_attribute_dimension_indexフィールドの値は0~127の範囲内であってもよい。
【0693】
図34のV-PCCユニットヘッダのsps_multiple_layer_streams_present_flagフィールドは、vpcc_layer_indexフィールドとpcm_separate_video_data(11)フィールドを含むか否かを指示する。
【0694】
例えば、vpcc_unit_typeフィールドの値が特質ビデオデータ(VPCC_AVD)を指示し、sps_multiple_layer_streams_present_flagフィールドの値がtrue(例、0)であれば、該当V-PCCユニットヘッダにvpcc_layer_indexフィールドとpcm_separate_video_data(11)フィールドをさらに含む。即ち、sps_multiple_layer_streams_present_flagフィールドの値がtrueであれば、特質ビデオデータまたはジオメトリビデオデータのためのマルチプルレイヤが存在することを意味する。この場合、現在レイヤのインデックスを示すフィールド(例、vpcc_layer_index)が必要である。
【0695】
このvpcc_layer_indexフィールドは、特質ビデオデータの現在レイヤのインデックスを示す。vpcc_layer_indexフィールドは0~15の間の値を有する。
【0696】
例えば、vpcc_unit_typeフィールドの値が特質ビデオデータ(VPCC_AVD)を指示し、sps_multiple_layer_streams_present_flagフィールドの値がfalse(例、1)であれば、該当V-PCCユニットヘッダにpcm_separate_video_data(15)フィールドをさらに含む。即ち、sps_multiple_layer_streams_present_flagフィールドの値がfalseであれば、特質ビデオデータおよび/またはジオメトリビデオデータのためのマルチプルレイヤが存在しないことを意味する。この場合、現在レイヤのインデックスを示すフィールドは不要である。
【0697】
例えば、vpcc_unit_typeフィールドの値がジオメトリビデオデータ(VPCC_GVD)を指示し、sps_multiple_layer_streams_present_flagフィールドの値がtrue(例、0)であれば、該当V-PCCユニットヘッダにvpcc_layer_indexフィールドとpcm_separate_video_data(18)フィールドをさらに含む。
【0698】
vpcc_layer_indexフィールドは、ジオメトリビデオデータの現在レイヤのインデックスを示す。vpcc_layer_indexフィールドは0から15の間の値を有する。
【0699】
例えば、vpcc_unit_typeフィールドの値がジオメトリビデオデータ(VPCC_GVD)を指示し、sps_multiple_layer_streams_present_flagフィールドの値がfalse(例、1)であれば、該当V-PCCユニットヘッダにpcm_separate_video_data(22)フィールドをさらに含む。
【0700】
例えば、vpcc_unit_typeフィールドの値が占有ビデオデータ(VPCC_OVD)を指示するか、パッチデータグループ(VPCC_PDG)を指示する場合、該当V-PCCユニットヘッダにvpcc_reserved_zero_23bitsフィールドをさらに含み、そうではない場合は、vpcc_reserved_zero_27bitsフィールドをさらに含む。
【0701】
一方、
図34のV-PCCユニットヘッダは、vpcc_pcm_video_flagフィールドをさらに含んでもよい。
【0702】
例えば、このvpcc_pcm_video_flagフィールドの値が1であれば、関連するジオメトリビデオデータユニットまたは特質ビデオデータユニットは、PCM(Pulse Code Modulation)コードされたポイント(points)のみを含むことを指示することができる。別の例として、vpcc_pcm_video_flagフィールドの値が0であれば、関連するジオメトリビデオデータユニットまたは特質ビデオデータユニットは、non-PCMコードされたポイントを含むことを指示することができる。vpcc_pcm_video_flagフィールドが存在しない場合は、そのフィールド値は0であることが推論できる。
【0703】
図36は、実施例によるV-PCCユニットヘッダに含まれるpcm_separate_video_data(bitCount)のシンタックス構造の一例を示す。
【0704】
図36において、pcm_separate_video_dataのbitCountは、上述のように、
図34のV-PCCユニットヘッダ内のvpcc_unit_typeフィールド値に応じて異なる。
【0705】
pcm_separate_video_data(bitCount)は、sps_pcm_separate_video_present_flagフィールドの値がtrueであり、vpcc_layer_indexフィールドではない場合、vpcc_pcm_video_flagフィールドとvpcc_reserved_zero_bitcount_bitsフィールドを含み、そうでばない場合は、vpcc_reserved_zero_bitcountplus1_bitsフィールドを含むことができる。
【0706】
このvpcc_pcm_video_flagフィールドの値が1であれば、関連するジオメトリまたは特質ビデオデータユニットがPCMコードされたポイントビデオのみであることを指示することができる。また、このvpcc_pcm_video_flagフィールドの値が0であれば、関連するジオメトリまたは特質ビデオデータユニットがPCMコードされたポイントを含むことを指示することができる。このvpcc_pcm_video_flagフィールドが存在しない場合は、その値は0であるとみなされる。
【0707】
図37は、実施例によるV-PCCユニットペイロードのシンタックス構造の一例を示す。
【0708】
図37のV-PCCユニットペイロードは、該当V-PCCユニットヘッダのvpcc_unit_typeフィールド値に応じてシーケンスパラメータセット(sequence_parameter_set())、パッチデータグループ(patch_data_group())、ビデオデータユニット(video_data_unit())のうちの1つを含む。
【0709】
例えば、vpcc_unit_typeフィールドがシーケンスパラメータセット(VPCC_SPS)を指示する場合、V-PCCユニットペイロードは、シーケンスパラメータセット(sequence_parameter_set())を含み、パッチデータグループ(VPCC_PDG)を指示する場合は、パッチデータグループ(patch_data_group())を含む。また、vpcc_unit_typeフィールドが占有ビデオデータ(VPCC_OVD)を指示する場合、V-PCCユニットペイロードは、占有ビデオデータを伝送する占有ビデオデータユニット(video_data_unit())を含み、ジオメトリビデオデータ(VPCC_GVD)を指示する場合は、ジオメトリビデオデータを伝送するジオメトリビデオデータユニット(video_data_unit())を含み、特質ビデオデータ(VPCC_AVD)を指示する場合は、特質ビデオデータを伝送する特質ビデオデータユニット(video_data_unit())を含むことを一実施例とする。
【0710】
図38は、実施例によるV-PCCユニットペイロードに含まれるシーケンスパラメータセット()のシンタックス構造の一例を示す。
【0711】
図38のシーケンスパラメータセット(SPS)は、コードされたジオメトリビデオデータユニット、特質ビデオデータユニット、占有ビデオデータユニットのシーケンスを含むコードされたポイントクラウドシーケンスに適用することができる。
【0712】
図38のシーケンスパラメータセット(SPS)は、profile_tier_level()、sps_sequence_parameter_set_idフィールド、sps_frame_widthフィールド、sps_frame_heightフィールド、sps_avg_frame_rate_present_flagフィールドを含むことができる。
【0713】
このprofile_tier_level()は、シーケンスパラメータセットを圧縮するために使用されるコーデック情報を示す。
【0714】
このsps_sequence_parameter_set_idフィールドは、他のシンタックス要素 による参照のためにシーケンスパラメータセットの識別者を提供する。
【0715】
このsps_frame_widthフィールドは、整数(integer)ルーマサンプルに関連して(in terms of) nominalフレームの幅を示す。
【0716】
このsps_frame_heightフィールドは、整数ルーマサンプルに関連して(in terms of) nominalフレームの高さを示す。
【0717】
このsps_avg_frame_rate_present_flagフィールドはこのビットストリームに平均名目フレームレート情報(average nominal frame rate information)の有無を指示する。例えば、sps_avg_frame_rate_present_flagフィールドの値が0であれば、このビットストリームには平均名目フレームレート情報がないことを示す。このsps_avg_frame_rate_present_flagフィールドの値が1であれば、平均名目フレームレート情報がこのビットストリームにおいて表示されることを示すことができる。例えば、sps_avg_frame_rate_present_flagフィールドの値がtrue、即ち1であれば、シーケンスパラメータセットは、sps_avg_frame_rateフィールド、sps_enhanced_occupancy_map_for_depth_flagフィールド、sps_geometry_attribute_different_layer_flagフィールドをさらに含むことができる。
【0718】
このsps_avg_frame_rateフィールドは、256秒当たりポイントクラウドフレームの単位で、平均名目ポイントクラウドフレームレート(average nominal point cloud frame rate)を指示する。このsps_avg_frame_rateフィールドが存在しない場合、そのフィールドの値は0となる。再構成フェーズの間、復号された占有、ジオメトリ、また特質ビデオは、適切なスケーリングを使用して名目幅、高さ、およびフレームレートに変換される。
【0719】
sps_enhanced_occupancy_map_for_depth_flagフィールドは、復号された占有マップビデオが2つの深さレイヤの間の中間深さ位置(intermediate depth positions)が占有(occupied)されるか否かの情報を含むことを指示する。例えば、このsps_enhanced_occupancy_map_for_depth_flagフィールドの値が1であれば、復号された占有マップビデオが2つの深さレイヤの間の中間深さ位置が占有されるか否かに関する情報の有無を指示することができる。このsps_enhanced_occupancy_map_for_depth_flagフィールドの値が0であれば、復号された占有マップビデオが2つの深さレイヤの間の中間深さ位置が占有されるか否かに関する情報を含まないことを指示することができる。
【0720】
sps_geometry_attribute_different_layer_flagフィールドは、ジオメトリと特質ビデオデータを符号化するために使用されたレイヤの数が異なるか否かを指示する。例えば、sps_geometry_attribute_different_layer_flagフィールドの値が1であれば、ジオメトリと特質ビデオデータを符号化するために使用されたレイヤの数が異なることを示すことができる。一例として、2つのレイヤはジオメトリビデオデータの符号化のために用いられてもよく、1つのレイヤはは特質ビデオデータの符号化のためにもちいられてもよい。また、sps_geometry_attribute_different_layer_flagフィールドの値が1であれば、ジオメトリと特質ビデオデータを符号化するために用いられたレイヤの数がパッチシーケンスデータユニットにシグナリングされるか否かを指示する。
【0721】
sps_geometry_attribute_different_layer_flagフィールドは、sps_layer_count_geometry_minus1フィールドとsps_layer_count_minus1フィールドの有無を指示する。例えば、sps_geometry_attribute_different_layer_flagフィールドの値がtrue(例、1)であれば、sps_layer_count_geometry_minus1フィールドをさらに含み、false(例、0)であれば、sps_layer_count_minus1フィールドをさらに含むことができる。
【0722】
sps_layer_count_geometry_minus1フィールドは、ジオメトリビデオデータを符号化するために使用されたレイヤの数を示す。
【0723】
sps_layer_count_minus1フィールドは、ジオメトリと特質ビデオデータを符号化するために使用されたレイヤの数を示す。
【0724】
sps_layer_count_minus1フィールドの値が0より大きい場合、シーケンスパラメータセットは、sps_multiple_layer_streams_present_flagフィールドとsps_layer_absolute_coding_enabled_flag [0]=1フィールドをさらに含むことができる。
【0725】
sps_multiple_layer_streams_present_flagフィールドは、ジオメトリレイヤまたは特質レイヤがシングルビデオストリームに位置するか、または別のビデオストリームに位置するかを指示する。例えば、sps_multiple_layer_streams_present_flagフィールドの値が0であれば、すべてのジオメトリレイヤまたは特質レイヤがシングルジオメトリビデオストリームまたはシングル特質ビデオストリームにそれぞれ位置(are placed)することを指示する。sps_multiple_layer_streams_present_flagフィールドの値が1であれば、すべてのジオメトリレイヤまたは特質レイヤが別のビデオストリーム(separate video streams)に位置(are placed)することを指示することができる。
【0726】
また、シーケンスパラメータセット(SPS)は、sps_layer_count_minus1フィールドの値だけ繰り返される繰り返し文を含むが、この繰り返し文は、sps_layer_absolute_coding_enabled_flagフィールドを含む。このとき、iは0に初期化され、繰り返し文が行われるたびに1ずつ増加し、i値がsps_layer_count_minus1フィールドの値になるまで繰り返し文が繰り返されることを一実施例とする。これに加えて、sps_layer_absolute_coding_enabled_flagフィールドの値が0であり、i値が0より大きいと、sps_layer_predictor_index_diffフィールドをさらに含み、そうではない場合は、sps_layer_predictor_index_diffフィールドを含まない。
【0727】
sps_layer_absolute_coding_enabled_flag 「i]フィールドの値1であれば、インデックスiを有するジオメトリレイヤがどんな形式のレイヤであるかを予測せずに(without any form of layer prediction)コードされることを指示できる。sps_layer_absolute_coding_enabled_flag [i]フィールドの値が0であれば、インデックスiを有するジオメトリレイヤが、コーディングの前に、他の(another)、先(earlier)にコードされたレイヤから一番目に予測されることを指示できる。
【0728】
sps_layer_predictor_index_diff [i]フィールドは、sps_layer_absolute_coding_enabled_flag [i]フィールドの値が0であれば、インデックスiを有するジオメトリレイヤの予測機(predictor)の算出のために使用されることを示す。
【0729】
本明細書によるシーケンスパラメータセット(SPS)は、sps_pcm_patch_enabled_flagフィールドをさらに含んでもよい。sps_pcm_patch_enabled_flagフィールドは、sps_pcm_separate_video_present_flagフィールド、occupancy_parameter_set()、geometry_parameter_set()、およびsps_attribute_countフィールドの有無を指示する。例えば、sps_pcm_patch_enabled_flagフィールドが1であれば、sps_pcm_separate_video_present_flagフィールド、occupancy_parameter_set()、geometry_parameter_set()、およびsps_attribute_countフィールドをさらに含んでもよい。即ち、sps_pcm_patch_enabled_flagフィールドが1であれば、PCMコードされたポイントを有するパッチがそのビットストリームに存在することを指示する。
【0730】
sps_pcm_separate_video_present_flagフィールドは、PCMコードされたジオメトリビデオデータと特質ビデオデータが別のビデオストリームに格納されるか否かを指示する。例えば、sps_pcm_separate_video_present_flagフィールドの値が1であれば、PCMコードされたジオメトリビデオデータと特質ビデオデータが別のビデオストリーム(separate video stream)に格納されることを指示する。
【0731】
occupancy_parameter_set()は、占有マップに関する情報を含む。
【0732】
geometry_parameter_set()は、ジオメトリビデオデータに関する情報を含む。
【0733】
sps_attribute_countフィールドは、そのポイントクラウドに関連する特質の数を指示する。
【0734】
また、本明細書によるシーケンスパラメータセット(SPS)は、sps_attribute_countフィールドの値だけ繰り返される繰り返し文を含むが、この繰り返し文は、sps_geometry_attribute_different_layer_flagフィールドが1であれば、sps_layer_count_attribute_minus1フィールドとattribute_parameter_set()を含むことを一実施例とする。この繰り返し文において、iは0に初期化され、繰り返し文が行われるたびに1ずつ増加し、i値がsps_attribute_countフィールドの値になるまで繰り返されることを一実施例とする。
【0735】
sps_layer_count_attribute_minus1 [i]フィールドは、該当ポイントクラウドに関連するi番目の特質ビデオデータを符号化するために使用されたレイヤの数を示す。
【0736】
attribute_parameter_set(i)は、該当ポイントクラウドに関連するi番目の特質ビデオデータに関する情報を含む。
【0737】
本明細書によるシーケンスパラメータセット(SPS)は、 sps_patch_sequence_orientation_enabled_flagフィールド、sps_patch_inter_prediction_enabled_flagフィールド、sps_pixel_deinterleaving_flagフィールド、sps_point_local_reconstruction_enabled_flagフィールド、sps_remove_duplicate_point_enabled_flagフィールド、およびbyte_alignment()フィールドをさらに含むことを一実施例とする。
【0738】
sps_patch_sequence_orientation_enabled_flagフィールドは、フレキシブルオリエンテーション(flexible orientation)がパッチシーケンスデータユニットにシグナリングされるか否かを指示する。例えば、sps_patch_sequence_orientation_enabled_flagフィールドの値が1であれば、flexible orientationがパッチシーケンスデータユニットにシグナリングされることを示し、0であればシグナリングされないことを示す。
【0739】
sps_patch_inter_prediction_enabled_flagフィールドの値が1であれば、以前に符号化されたパッチフレームからのパッチ情報を用いて、パッチ情報のためのインター予測が用いられることを示す。
【0740】
sps_pixel_deinterleaving_flagフィールドの値が1であれば、シングルストリームに対応する復号されたジオメトリと特質ビデオが2つのレイヤからインターリーブされたピクセルを含むことを示す。sps_pixel_deinterleaving_flagフィールドの値が0であれば、シングルストリームに対応する復号されたジオメトリと特質ビデオがシングルレイヤからインターリーブされたピクセルのみを含むことを示す。
【0741】
sps_point_local_reconstruction_enabled_flagフィールドの値が1であれば、ローカル再構成モードがポイントクラウド再構成プロセスの間に使用されることを示す。
【0742】
sps_remove_duplicate_point_enabled_flagフィールドの値が1であれば、重複された(duplicated)ポイントが再構成されないことを示す。ここで、重複されたポイントは、下位層(lower layer)からの他のポイント(another point)と同一の2Dおよび3Dジオメトリ座標(geometry coordinates)を有するポイントである。
【0743】
図39は、実施例によるパッチデータグループ(patch_data_group())のシンタックス構造の一例を示す。
【0744】
上述のように、V-PCCユニットヘッダ内のvpcc_unit_typeフィールドの値がパッチデータグループを指示する場合、
図37のV-PCCユニットペイロードは、
図39のパッチデータグループ(patch_data_group())を含む。
【0745】
パッチデータグループ(patch_data_group())は、pdg_unit_typeフィールド、pdg_unit_typeフィールドの値に応じてシグナリングされる情報が異なるpatch_data_group_unit_payload(pdg_unit_type)、およびpdg_terminate_patch_data_group_flagフィールドを含むことを一実施例とする。
【0746】
pdg_unit_typeフィールドは、パッチデータグループのタイプを示す。
【0747】
pdg_terminate_patch_data_group_flagフィールドは、パッチデータグループのエンド(end)を指示する。pdg_terminate_patch_data_group_flagフィールドの値が0であれば、さらなるパッチデータグループユニットが該当パッチデータグループに存在することを示す。また、pdg_terminate_patch_data_group_flagフィールドの値が1であれば、該当パッチデータグループにこれ以上のパッチデータグループユニットが存在せず、これが現在パッチデータグループユニットのエンドであることを示す。
【0748】
図40は、
図39のパッチデータグループのpdg_unit_typeフィールドに割り当てられたパッチデータグループのタイプの一例を示す。
【0749】
例えば、pdg_unit_typeフィールドの値が0であれば、パッチシーケンスパラメータセット(PDG_PSPS)を、1であればパッチフレームパラメータセット(PDG_PFPS)を、2であればパッチフレームジオメトリパラメータセット(PDG_PFGPS)を、3であればパッチフレーム特質パラメータセット(PDG_PFAPS)を、4であればジオメトリパッチパラメータセット(PDG_GPPS)を、5であれば特質パッチパラメータセット(PDG_APPS)を、6であればパッチタイルグループレイヤユニット(PDG_PTGLU)を、7であればプレフィックスSEIメッセージ(PDG_PREFIX_SEI)を、8であればサーフィックスSEIメッセージ(PDG_SUFFIX_SEI)を示す。
【0750】
パッチシーケンスパラメータセット(PDG_PSPS)は、シーケンスレベルパラ、エータを含み、パッチフレームパラメータセット(PDG_PFPS)は、フレームレベルパラメータを含むことができる。パッチフレームジオメトリパラメータセット(PDG_PFGPS)は、フレームレベルジオメトリタイプパラメータを含み、パッチフレーム特質パラメータセット(PDG_PFAPS)は、フレームレベル特質タイプパラメータを含むことができる。ジオメトリパッチパラメータセット(PDG_GPPS)は、パッチレベルジオメトリタイプパラメータを含み、特質パッチパラメータセット(PDG_APPS)は、パッチレベル特質タイプパラメータを含むことができる。
【0751】
図41は、実施例によるパッチデータグループユニットペイロード(patch_data_group_unit_payload(pdg_unit_type))のシンタックス構造の一例を示す。
【0752】
図39のパッチデータグループのpdg_unit_typeフィールドの値がパッチシーケンスパラメータセット(PDG_PSPS)を指示する場合、パッチデータグループユニットペイロード(patch_data_group_unit_payload())は、パッチシーケンスパラメータセット(patch_sequence_parameter_set())を含むことができる。
【0753】
pdg_unit_typeフィールドの値がジオメトリパッチパラメータセット(PDG_GPPS)を指示する場合、パッチデータグループユニットペイロード(patch_data_group_unit_payload())は、ジオメトリパッチパラメータセット(geometry_patch_parameter_set())を含むことができる。
【0754】
pdg_unit_typeフィールドの値が特質パッチパラメータセット(PDG_APPS)を指示する場合、パッチデータグループユニットペイロード(patch_data_group_unit_payload())は、特質パッチパラメータセット(attribute_patch_parameter_set())を含むことができる。
【0755】
pdg_unit_typeフィールドの値がパッチフレームパラメータセット(PDG_PFPS)を指示する場合、パッチデータグループユニットペイロード (patch_data_group_unit_payload())は、パッチフレームパラメータセット(patch_frame_parameter_set())を含むことができる。
【0756】
pdg_unit_typeフィールドの値がパッチフレーム特質パラメータセット(PDG_PFAPS)を指示する場合、パッチデータグループユニットペイロード (patch_data_group_unit_payload())は、パッチフレーム特質パラメータセット(patch_frame_attribute_parameter_set())を含むことができる。
【0757】
pdg_unit_typeフィールドの値がパッチフレームジオメトリパラメータセット(PDG_PFGPS)を指示する場合、パッチデータグループユニットペイロード (patch_data_group_unit_payload())は、パッチフレームジオメトリパラメータセット(patch_frame_geometry_parameter_set())を含むことができる。
【0758】
pdg_unit_typeフィールドの値がパッチタイルグループレイヤユニット(PDG_PTGLU)を指示する場合、パッチデータグループユニットペイロード(patch_data_group_unit_payload())は、パッチタイルグループレイヤユニット(patch_tile_group_layer_unit())を含むことができる。
【0759】
pdg_unit_typeフィールドの値がプレフィックスSEIメッセージ(PDG_PREFIX_SEI)を指示するか、サーフィックスSEIメッセージ(PDG_SUFFIX_SEI)を指示する場合、パッチデータグループユニットペイロード(patch_data_group_unit_payload())はsei_message()を含むことができる。
【0760】
図42は、実施例によるSupplemental Enhancement Information(SEI)メッセージ(sei_message())のシンタックス構造の一例を示す。即ち、
図39のパッチデータグループに含まれたpdg_unit_typeフィールドの値がプレフィックスSEIメッセージ(PDG_PREFIX_SEI)またはサーフィックスSEIメッセージ(PDG_SUFFIX_SEI)を指示する場合、
図41のパッチデータグループユニットペイロードは、SEIメッセージ(sei_message())を含む。
【0761】
実施例による各SEIメッセージは、SEIメッセージヘッダとSEIメッセージペイロードとからなる。SEIメッセージヘッダは、sm_payload_type_byteフィールドとsm_payload_size_byteフィールドを含む。
【0762】
sm_payload_type_byteフィールドは、該当SEIメッセージのペイロードタイプのバイトである。例えば、sm_payload_type_byteフィールドの値に基づいて、プレフィックスSEIメッセージであるかサーフィックスSEIメッセージであるかを識別することができる。
【0763】
sm_payload_size_byteフィールドは、該当SEIメッセージのペイロードサイズのバイトである。
【0764】
図42のSEIメッセージは、ペイロードタイプ(PayloadType)値を0に初期化した後、繰り返し文の中のsm_payload_type_byteフィールドの値をペイロードタイプの値に設定し、sm_payload_type_byteフィールドの値が0xFFであれば上記繰り返し文を終了する。
【0765】
また、
図42のSEIメッセージは、ペイロードサイズ値を0に初期化した後、繰り返し文の中のsm_payload_size_byteフィールドの値をペイロードサイズの値に設定し、sm_payload_size_byteフィールドの値が0xFFであれば上記繰り返し文を終了する。
【0766】
それから、上記2つの繰り返し文で設定さrたペイロードタイプとペイロードサイズに対応する情報をSEIメッセージのペイロード(sei_payload(payloadType、payloadSize))によってシグナリングする。
【0767】
図43は、本明細書の他の実施例によるV-PCCビットストリーム構造の一例を示す。
図43のV-PCCビットストリームは、
図1、
図4、
図18、
図20または
図21のV-PCCベースのポイントクラウドビデオエンコーダから生成されて出力されることを一実施例とする。
【0768】
実施例によるV-PCCビットストリームは、コードされたポイントクラウドシーケンス(coded point cloud sequence、CPCS)を含み、サンプルストリームV-PCCユニットからなる。このサンプルストリームV-PCCユニットは、V-PCCパラメータセット(V-PCC parameter set、VPS)データ、アトラスビットストリーム(an atlas bitstream)、2Dビデオ符号化された占有マップビットストリーム(a 2D video encoded occupancy map bitstream)、2Dビデオ符号化されたジオメトリビットストリーム(a 2D video encoded geometry bitstream)、0以上の2Dビデオ符号化された特質ビットストリーム(zero or more 2D video encoded attribute bitstreams)を伝送する。
【0769】
図43において、V-PCCビットストリームは、1つのサンプルストリームV-PCCヘッダ40010と、1つ以上のサンプルストリームV-PCCユニット40020を含むことができる。説明の便宜のために、1つ以上のサンプルストリームV-PCCユニット40020は、サンプルストリームV-PCCペイロードと呼んでもよい。即ち、サンプルストリームV-PCCペイロードは、サンプルストリームV-PCCユニットの集合であると呼んでもよい。
【0770】
各サンプルストリームV-PCCユニット40021は、V-PCCユニットサイズ情報40030とV-PCCユニット40040とからなる。V-PCCユニットサイズ情報40030は、V-PCCユニット40040のサイズを指示する。説明の便宜のために、V-PCCユニットサイズ情報40030は、サンプルストリームV-PCCユニットヘッダと呼んでもよく、V-PCCユニット40040は、サンプルストリームV-PCCユニットペイロードと呼んでもよい。
【0771】
各V-PCCユニット40040は、V-PCCユニットヘッダ40041とV-PCCユニットペイロード40042とからなる。
【0772】
本明細書は、V-PCCユニットヘッダ40041によって該当V-PCCユニットペイロード40042に含まれるデータを区分し、そのためにV-PCCユニットヘッダ40041は、該当V-PCCユニットのタイプを指示するタイプ情報を含む。各V-PCCユニットペイロード40042は、該当V-PCCユニットヘッダ40041のタイプ情報に応じて、ジオメトリビデオデータ(即ち、2Dビデオ符号化されたジオメトリビットストリーム)、特質ビデオデータ(即ち、2Dビデオ符号化された特質ビットストリーム)、占有ビデオデータ(即ち、2Dビデオ符号化された占有マップビットストリーム)、アトラスデータ、V-PCCパラメータセット(VPS)のうちの少なくとも1つを含むことができる。
【0773】
実施例によるV-PCCパラメータセット(VPS)は、シーケンスパラメータセット(SPS)とも呼び、混用してもよい。
【0774】
実施例によるアトラスデータは、ポイントクラウドデータの特質(例えば、テキスチャー(パッチ))および/または深さなどで構成されたデータを意味してもよく、パッチデータグループと呼んでもよい。
【0775】
図44は、実施例によるV-PCCビットストリーム内のサンプルストリームV-PCCユニットによって伝送されるデータの一例を示す。
【0776】
図44のV-PCCビットストリームは、V-PCCパラメータセット(VPS)を伝送するサンプルストリームV-PCCユニット、アトラスデータ(AD)を伝送するサンプルストリームV-PCCユニット、占有ビデオデータ(OVD)を伝送するサンプルストリームV-PCCユニット、ジオメトリビデオデータ(GVD)を伝送するサンプルストリームV-PCCユニット、特質ビデオデータ(AVD)を伝送するサンプルストリームV-PCCユニットを含む例示である。
【0777】
実施例によれば、各サンプルストリームV-PCCユニットは、V-PCCパラメータセット(VPS)、アトラスデータ(AD)、占有ビデオデータ(OVD)、ジオメトリビデオデータ(GVD)、特質ビデオデータ(AVD)のうちの1つのタイプのV-PCCユニットを含む。
【0778】
図45は、実施例によるV-PCCビットストリームに含まれるサンプルストリームV-PCCヘッダのシンタックス構造の一例を示す。
【0779】
実施例によるサンプルストリームV-PCCヘッダ()は、ssvh_unit_size_precision_bytes_minus1フィールドおよびssvh_reserved_zero_5bits フィールドを含むことができる。
【0780】
ssvh_unit_size_precision_bytes_minus1フィールドは、このフィールド値に1を加算し、すべてのサンプルストリームV-PCCユニット内のssvu_vpcc_unit_size要素の精度をバイト単位で示すことができる。このフィールドの値は0~7の範囲内である。
【0781】
ssvh_reserved_zero_5bitsフィールドは未来の使用に備えるための予備フィールドである。
【0782】
図46は、実施例によるサンプルストリームV-PCCユニット(sample_stream_vpcc_unit())のシンタックス構造の一例を示す。
【0783】
各サンプルストリームV-PCCユニットのコンテンツは、該当サンプルストリームV-PCCユニットに含まれるV-PCCユニットのようなアクセスユニットに関連する(The content of each sample stream V-PCC unit is associated with the same access unit as the V-PCC unit contained in the sample stream V-PCC unit)。
【0784】
実施例によるサンプルストリームV-PCCユニット(sample_stream_vpcc_unit())は、ssvu_vpcc_unit_sizeフィールドとvpcc_unit(ssvu_vpcc_unit_size)を含むことができる。
【0785】
ssvu_vpcc_unit_sizeフィールドは、
図43のV-PCCユニットサイズ情報40030に該当し、後続する(subsequent)V-PCCユニット40040のサイズをバイト単位で示す(specifies)。ssvu_vpcc_unit_sizeフィールドを示すために使用されるビットの数は、(ssvh_unit_size_precision_bytes_minus1 + 1) * 8のようである。
【0786】
vpcc_unit(ssvu_vpcc_unit_size)は、ssvu_vpcc_unit_sizeフィールドの値に該当する長さを有し、V-PCCパラメータセット(VPS)、アトラスデータ(AD)、占有ビデオデータ(OVD)、ジオメトリビデオデータ(GVD)、特質ビデオデータ(AVD)のうちの1つを伝送する。
【0787】
図47は、実施例によるV-PCCユニットのシンタックス構造の一例を示す。1つのV-PCCユニットは、V-PCCユニットヘッダ(vpcc_unit_header())とV-PCCユニットペイロード(vpcc_unit_payload())とからなる。実施例によるV-PCCユニットは、より多いデータを含むことができ、この場合、trailing_zero_8bitsフィールドをさらに含むことができる。実施例によるtrailing_zero_8bitsフィールドは、0x00に該当するバイトである。
【0788】
図48は、実施例によるV-PCCユニットヘッダのシンタックス構造の一例を示す。
図48のV-PCCユニットヘッダ(vpcc_unit_header())は、vuh_unit_typeフィールドを含むことを一実施例とする。vuh_unit_typeフィールドは、該当V-PCCユニットのタイプを指示する。実施例によるvuh_unit_typeフィールドは、vpcc_unit_typeフィールドとも呼ぶ。
【0789】
図49は、実施例によるvuh_unit_typeフィールドに割り当てられるV-PCCユニットのタイプの一例を示す。
【0790】
図49を参照すれば、vuh_unit_typeフィールドの値が0であれば該当V-PCCユニットのV-PCCユニットペイロードに含まれるデータはV-PCCパラメータセット(VPCC_VPS)であることを指示し、1であればアトラスデータ(VPCC_AD)であることを指示し、2であれば占有ビデオデータ(VPCC_OVD)であることを指示し、3であればジオメトリビデオデータ(VPCC_GVD)であることを指示し、4であれば特質ビデオデータ(VPCC_AVD)であることを指示することを一実施例とする。
【0791】
vuh_unit_typeフィールドに割り当てられる値の意味、手順、削除、追加などは、当業者によって容易に変更可能であるため、本発明は上記実施例に限らない。
【0792】
実施例によるV-PCCユニットヘッダは、vuh_unit_typeフィールドが特質ビデオデータ(VPCC_AVD)またはジオメトリビデオデータ(VPCC_GVD)または占有ビデオデータ(VPCC_OVD)またはアトラスデータ(VPCC_AD)を指示する場合、vuh_vpcc_parameter_set_idフィールドとvuh_atlas_idフィールドをさらに含んでもよい。
【0793】
vuh_vpcc_parameter_set_idフィールドは、アクティブV-PCCパラメータセット(VPCC VPS)の識別者(即ち、vuh_vpcc_parameter_set_id)を示す(specify)。
【0794】
vuh_atlas_idフィールドは、現在V-PCCユニットに該当するアトラスのインデックスを示す(specifies)。
【0795】
実施例によるV-PCCユニットヘッダは、vuh_unit_typeフィールドが特質ビデオデータ(VPCC_AVD)を指示する場合、vuh_attribute_indexフィールド、vuh_attribute_dimension_indexフィールド、vuh_map_indexフィールド、vuh_raw_video_flagフィールドをさらに含んでもよい。
【0796】
vuh_attribute_indexフィールドは、特質ビデオデータユニットに伝送(carry)される特質ビデオデータのインデックスを示す。
【0797】
vuh_attribute_dimension_indexフィールドは、特質ビデオデータユニットに伝送(carry)される特質ディメンジョングループのインデックスを示す。
【0798】
vuh_map_indexフィールドは、このフィールドが存在する場合、現在の特質ストリームのインデックスを指示する。
【0799】
vuh_raw_video_flagフィールドは、RAWコードされたポイントの有無を指示することができる。例えば、vuh_raw_video_flagフィールドの値が1であれば、関連する特質ビデオデータユニットは、RAWコードされたポイント(points)のみを含むことを指示できる。他の例として、vuh_raw_video_flagフィールドの値が0であれば、関連する特質ビデオデータユニットはRAWコードされたポイントを含むことを指示できる。なお、vuh_raw_video_flagフィールドが存在しない場合は、そのフィールドの値は0と推論することができる。実施例によれば、RAWコードされたポイントは、PCM(Pulse Code Modulation)コードされたポイントとも呼ぶ。
【0800】
実施例によるV-PCCユニットヘッダは、vuh_unit_typeフィールドがジオメトリビデオデータ(VPCC_GVD)を指示する場合、vuh_map_indexフィールド、vuh_raw_video_flagフィールド、およびvuh_reserved_zero_12bitsフィールドをさらに含んでもよい。
【0801】
vuh_map_indexフィールドは、このフィールドが存在する場合、現在のジオメトリストリームのインデックスを指示する。
【0802】
vuh_raw_video_flagフィールドは、RAWコードされたポイントの有無を指示することができる。例えば、vuh_raw_video_flagフィールドの値が1であれば、関連するジオメトリビデオデータユニットは、RAWコードされたポイント(points)のみを含むことを指示できる。別の例として、vuh_raw_video_flagフィールドの値が0であれば、関連するジオメトリビデオデータユニットはRAWコードされたポイントを含むことを指示できる。vuh_raw_video_flagフィールドが存在しない場合、そのフィールドの値は0であると推論することができる。実施例によれば、RAWコードされたポイントは、PCM(Pulse Code Modulation)コードされたポイントとも呼ぶ。
【0803】
vuh_reserved_zero_12bitsフィールドは 未来の使用に備えるための予備フィールドである。
【0804】
実施例によるV-PCCユニットヘッダは、vuh_unit_typeフィールドが占有ビデオデータ(VPCC_OVD)を指示するか、またはアトラスデータ(VPCC_AD)を指示する場合、vuh_reserved_zero_17bitsフィールドをさらに含み、そうではない場合、vuh_reserved_zero_27bitsフィールドをさらに含むことができる。
【0805】
vuh_reserved_zero_17bitsフィールドおよびvuh_reserved_zero_27bitsフィールドは未来の使用に備えるための予備フィールドである。
【0806】
図50は、実施例によるV-PCCユニットペイロード(vpcc_unit_payload())のシンタックス構造の一例を示す。
【0807】
図50のV-PCCユニットペイロードは、該当V-PCCユニットヘッダのvuh_unit_typeフィールド値に応じて、V-PCCパラメータセット(vpcc_parameter_set())、アトラスサブビットストリーム(atlas_sub_bitstream())、ビデオサブビットストリーム(video_sub_bitstream())のうちの1つを含んでもよい。
【0808】
例えば、vuh_unit_typeフィールドがV-PCCパラメータセット(VPCC_VPS)を指示する場合、V-PCCユニットペイロードは、ビットストリームの全体的な符号化情報を含むV-PCCパラメータセット(vpcc_parameter_set())を含み、アトラスデータ(VPCC_AD)を指示する場合、アトラスデータを伝送するアトラスサブビットストリーム(atlas_sub_bitstream())を含む。また、vuh_unit_typeフィールドが占有ビデオデータ(VPCC_OVD)を指示する場合、V-PCCユニットペイロードは、占有ビデオデータを伝送する占有ビデオサブビットストリーム(video_sub_bitstream())を含み、ジオメトリビデオデータ(VPCC_GVD)を指示する場合、ジオメトリビデオデータを伝送するジオメトリビデオサブビットストリーム(video_sub_bitstream())を含み、特質ビデオデータ(VPCC_AVD)を指示する場合、特質ビデオデータを伝送する特質ビデオサブビットストリーム(video_sub_bitstream())を含むことを一実施例とする。
【0809】
実施例によれば、アトラスサブビットストリームはアトラスサブストリームと、占有ビデオサブビットストリームは占有ビデオサブストリームと、ジオメトリビデオサブビットストリームはジオメトリビデオサブストリームと、特質ビデオサブビットストリームは特質ビデオサブストリームとも呼ぶ。実施例によるV-PCCユニットペイロードは、HEVC(High Efficiency Video Coding) NAL(Network Abstraction Layer)ユニットのフォーマットに従う。
【0810】
図51は、実施例によるアトラスサブストリーム構造の一例を示す。
図51のアトラスサブストリームは、HEVC NALユニットのフォーマットに従うことを一実施例とする。
【0811】
実施例によるアトラスサブストリームは、アトラスシーケンスパラメータセット(ASPS)を含むサンプルストリームNALユニット、アトラスフレームパラメータセット(AFPS)を含むサンプルストリームNALユニット、1つ以上のアトラスタイルグループ情報を含む1つ以上のサンプルストリームNALユニット、および/または1つ以上のSEIメッセージを含む1つ以上のサンプルストリームNALユニットからなる。
【0812】
実施例による1つ以上のSEIメッセージは、プレフィックスSEIメッセージおよびサーフィックスSEIメッセージを含むことができる。
【0813】
実施例によるアトラスサブストリームは、1つ以上のNALユニットの前にサンプルストリームNALヘッダをさらに含むことができる。
【0814】
図52は、実施例によるアトラスサブストリームに含まれるサンプルストリームNALヘッダ(sample_stream_nal_header())のシンタックス構造の一例を示す。
【0815】
実施例によるサンプルストリームNALヘッダ()は、ssnh_unit_size_precision_bytes_minus1フィールドおよびssnh_reserved_zero_5bitsフィールドを含むことができる。
【0816】
ssnh_unit_size_precision_bytes_minus1フィールドは、このフィールド値に1を加算し、すべてのサンプルストリームNALユニット内のssnu_vpcc_unit_size要素の精度をバイト単位で示すことができる。このフィールドの値は、0~7の範囲内である。
【0817】
ssnh_reserved_zero_5bitsフィールドは未来の使用に備えるための予備フィールドである。
【0818】
図53は、実施例によるサンプルストリームNALユニット(sample_stream_nal_unit())のシンタックス構造の一例を示す。
【0819】
実施例によるサンプルストリームNALユニット(sample_stream_nal_unit())は、ssnu_nal_unit_sizeフィールドおよびnal_unit(ssnu_nal_unit_size)を含むことができる。
【0820】
ssnu_nal_unit_sizeフィールドは、後続する(subsequent)NALユニットのサイズをバイト単位で示す(specifies)。ssnu_nal_unit_sizeフィールドを示すために使用されるビットの数は、(ssnh_unit_size_precision_bytes_minus1 + 1) * 8のようである。
【0821】
nal_unit(ssnu_nal_unit_size)は、ssnu_nal_unit_sizeフィールドの値に該当する長さを有し、アトラスシーケンスパラメータセット(ASPS)、アトラスフレームパラメータセット(AFPS)、アトラスタイルグループ情報、SEIメッセージのうちの1つを伝送する。即ち、各サンプルストリームNALユニットは、アトラスシーケンスパラメータセット(ASPS)、アトラスフレーム パラメータセット(AFPS)、アトラスタイルグループ情報、SEIメッセージを含むことができる。実施例において、アトラスシーケンスパラメータセット(ASPS)、アトラスフレームパラメータセット(AFPS)、アトラスタイルグループ情報、SEIメッセージは、アトラスデータ(またはアトラスに対するメタデータ)と呼ぶ。
【0822】
実施例によるSEIメッセージは、復号(decoding)、再構成(reconstruction)、ディスプレイ(display)、またはその他の目的(other purposes)に関連するプロセスを補助することができる。
【0823】
実施例による各SEIメッセージは、SEIメッセージヘッダとSEIメッセージペイロード(sei_payload)とからなる。SEIメッセージヘッダは、ペイロードタイプ情報(payloadType)およびペイロードサイズ情報(payloadSize)を含んでもよい。
【0824】
ペイロードタイプ情報(payloadType)は、該当SEIメッセージのペイロードタイプを指示する。例えば、ペイロードタイプ情報(payloadType)に基づいてプレフィックスSEIメッセージでるかサーフィックスSEIメッセージであるかを識別することができる。
【0825】
ペイロードサイズ情報(payloadSize)は、該当SEIメッセージのペイロードサイズを指示する。
【0826】
図54は、実施例によるSEIメッセージペイロード(sei_payload())のシンタックス構造の一例を示す。
【0827】
実施例によるSEIメッセージは、プレフィックスSEIメッセージまたはサーフィックスSEIメッセージを含んでもよい。また、各々のSEIメッセージペイロードは、ペイロードタイプ情報(payloadType)とペイロードサイズ情報(payloadSize)に対応する情報をSEIメッセージペイロード(sei_payload(payloadType、payloadSize))によってシグナリングする。
【0828】
実施例によるプレフィックスSEIメッセージは、ペイロードタイプ情報が0であればbuffering_period(payloadSize)を、1であればpic_timing(payloadSize)を、2であればfiller_payload(payloadSize)を、10であればsei_prefix_indication(payloadSize)を、13であれば3D_region_mapping(payloadSize)を含んでもよい。
【0829】
実施例によるサーフィックスSEIメッセージは、ペイロードタイプ情報が2であればfiller_payload(payloadSize)を、3であればuser_data_registered_itu_t_t35(payloadSize)を、4であればuser_data_unregistered(payloadSize)を、11であればdecoded_pcc_hash(payloadSize)を含んでもよい。
【0830】
なお、
図24または
図43に示す構造を有するV-PCCビットストリームは、
図1、
図18、
図20または
図21のファイル/セグメントカプセル化部においてISOBMFFファイルフォーマットでカプセル化されることを一実施例とする。
【0831】
このとき、V-PCCストリームは、ファイルのマルチプルトラックを介して送信されてもよく、1つのシングルトラックを介して送信されてもよい。
【0832】
実施例によるISOBMFFベースのファイルは、ftyp、meta、moov、mdatとも呼ぶボックスおよび/または情報などで構成することができる。
【0833】
ftypボックス(ファイルタイプボックス)は、該当ファイルに対するファイルタイプ またはファイル互換性に関連する情報を提供することができる。受信側ではftypボックスを参照することで該当ファイルを区分することができる。
【0834】
metaボックスは、vpcg{0、1、2、3} ボックス(V-PCC Group Box)を含んでもよい。
【0835】
mdatボックスは、メディアデータボックスとも呼び、ビデオコードされたジオメトリビットストリーム、ビデオコードされた特質ビットストリーム、ビデオコードされた占有マップビットストリーム、および/またはアトラスデータビットストリームを含んでもよい。
【0836】
moovボックスは、movieボックスとも呼び、該当ファイルのメディアデータ(例えば、ジオメトリビットストリーム、特質ビットストリーム、占有マップビットストリームなど)に対するメタデータを含んでもよい。例えば、該当メディアデータの復号および再生に必要な情報を含んでもよく、該当ファイルのサンプルに関する情報を含んでもよい。moovボックスは、すべてのメタデータのためのコンテナとして機能することができる。moovボックスは、メタデータ関連ボックスのうち最上位レイヤのボックスであることがある。実施例によれば、moovボックスはファイル内に1つだけ存在してもよい。
【0837】
実施例によるボックスは、該当ファイルのトラックに関連する情報を提供するトラック(trak)ボックスを含み、トラック(trak)ボックスは該当トラックのメディア情報を提供するメディア(mdia)ボックスおよび該当トラックと該当トラックに対応するファイルのサンプルを接続(reference)するためのトラックレファレンスコンテナ(tref)ボックスを含んでもよい。
【0838】
メディア(mdia)ボックスは、該当メディアデータの情報を提供するメディア情報コンテナ(minf)ボックスを含み、メディア情報コンテナ(minf) ボックスは、mdatボックスのサンプルに関連するメタデータを提供するサンプルテーブル(stbl)ボックスを含んでもよい。
【0839】
stblボックスは、使用されたコーディングタイプ(coding type)に関する情報と該当コーディングタイプのために必要な初期情報(initialization information)を提供するサンプルディスクリプション(stsd)ボックスを含んでもよい。
【0840】
stsdボックスは、実施例によるV-PCCビットストリームを格納するトラックのためのサンプルエントリー(sample entry)を含んでもよい。
【0841】
実施例によれば、V-PCCビットストリームをファイル内のシングルトラックまたはマルチプルトラックに格納するために、以下のようにVolumetric visual track、Volumetric visual media header、Volumetric sample entry、Volumetric samples、V-PCCトラックのサンプルおよびサンプルエントリーなどを定義する。
【0842】
本明細書において使用するV-PCCの用語は、ビジュアルボリュームビデオベースコーディング(Visual Volumetric Video-based Coding (V3C))と同様であり、相互に補完して称することができる。
【0843】
実施例によれば、V-PCCは、ポイントクラウドビジュアル情報のボリューム符号化(volumetric encoding)を示す(video-based point cloud compression represents a volumetric encoding of point cloud visual information)。
【0844】
即ち、moovボックスのトラックボックス内のminfボックスは、ボリュームビジュアルメディアヘッダ(volumetric visual media header)ボックスをさらに含んでもよい。このボリュームビジュアルメディアヘッダボックスは、ボリュームビジュアルシーン(volumetric visual scene)を含むボリュームビジュアルトラック(volumetric visual track)に関する情報を含む。
【0845】
各々のボリュームビジュアルシーン(scene)は、固有のボリュームビジュアルトラック(unique volumetric visual track)によって表現されてもよい。ISOBMFFファイルは、マルチプルシーンを含んでもよく、よってマルチプルボリュームビジュアルトラックがそのISOBMFFファイル内に存在することができる(Each volumetric visual scene is represented by a unique volumetric visual track. An ISOBMFF file may contain multiple scenes and therefore multiple volumetric visual tracks may be present in the ISOBMFF file)。
【0846】
実施例によれば、ボリュームビジュアルトラックは、メディアボックスのハンドラボックスに含まれたボリュームビジュアルメディアハンドラ(volumetric visual media handler)タイプ‘volv’によって識別することができる(A volumetric visual track is identified by the volumetric visual media handler type ’volv’ in the HandlerBox of the MediaBox)。
【0847】
実施例によるボリュームビジュアルメディアヘッダボックスのシンタックスは、以下のようである。
【0848】
Box Type: 'vvhd'
【0849】
Container: MediaInformationBox
【0850】
Mandatory: Yes
【0851】
Quantity: Exactly one
【0852】
実施によるボリュームビジュアルトラックは、以下のように、メディア情報ボックス(MediaInformationBox)内のボリュームビジュアルメディアハンドラボックス(VolumetricVisualMediaHeaderBox)を用いることができる。
【0853】
aligned(8) class VolumetricVisualMediaHeaderBox
【0854】
extends FullBox('vvhd'、version = 0、1) {
【0855】
}
【0856】
上記バージョン(version)は、このボックスのバージョンを示す整数であることがある。
【0857】
実施例によるボリュームビジュアルトラックは、以下のようにボリュームビジュアルサンプルエントリー(VolumetricVisualSampleEntry)を用いることができる。
【0858】
class VolumetricVisualSampleEntry(codingname)
【0859】
extends SampleEntry (codingname){
【0860】
unsigned int(8)[32] compressor_name;
【0861】
}
【0862】
compressor_nameは、固定の32バイトフィールドで形成され 、ディスプレイされる複数のバイトでセットされる第1のバイトに後続して、UTF-8を用いて符号化されたディスプレイ可能なデータの複数のバイトが来て、サイズバイトを含む32バイトを完了(complete)するためにパッドされる(compressor_name is a name、for informative purposes. It is formatted in a fixed 32-byte field、with the first byte set to the number of bytes to be displayed、followed by that number of bytes of displayable data encoded using UTF-8、and then padding to complete 32 bytes total (including the size byte))。このフィールドは0に設定できる。
【0863】
実施例によるボリュームビジュアルサンプル(Volumetric visual sample)のフォーマットは、コーディングシステムによって定義することができる。
【0864】
実施例によれば、V-PCCユニットヘッダボックス(V-PCC unit header box)は、サンプルエントリーに含まれたV-PCCトラックおよびスキーム情報に含まれたすべてのビデオコードしたV-PCCコンポーネントトラックに存在することができる。V-PCCユニットヘッダボックス(V-PCC unit header box)は、各々のトラックによって送信されるデータのためのV-PCCユニットヘッダを以下のように含むことができる。
【0865】
aligned(8) class VPCCUnitHeaderBox
【0866】
extends FullBox('vunt'、version = 0、0) {
【0867】
vpcc_unit_header() unit_header;
【0868】
}
【0869】
即ち、VPCCユニットヘッダボックスは、vpcc_unit_header()を含んでもよい。
図34および
図48は、V-PCCユニットヘッダ(vpcc_unit_header())のシンタックス構造の実施例を示す。
【0870】
実施例によれば、V-PCCトラックサンプルエントリーは、VPCCコンフィギュレーションボックス(VPCCConfigurationBox)を含んでもよい。
【0871】
実施例によれば、VPCCコンフィギュレーションボックス(VPCCConfigurationBox)は、以下のように、VPCCデコーダコンフィギュレーションレコード(VPCCDecoderConfigurationRecord)を含んでもよい。
【0872】
aligned(8) class VPCCDecoderConfigurationRecord {
【0873】
unsigned int(8) configurationVersion = 1;
【0874】
unsigned int(3) sampleStreamSizeMinusOne;
【0875】
unsigned int(5) numOfVPCCParameterSets;
【0876】
for (i=0; i< numOfVPCCParameterSets; i++) {
【0877】
sample_stream_vpcc_unit VPCCParameterSet;
【0878】
}
【0879】
unsigned int(8) numOfAtlasSetupUnits;
【0880】
for (i=0; i< numOfAtlasSetupUnits; i++) {
【0881】
sample_stream_vpcc_unit atlas_setupUnit;
【0882】
}
【0883】
}
【0884】
VPCCデコーダコンフィギュレーションレコード(VPCCDecoderConfigurationRecord)に含まれたconfigurationVersionは、バージョンフィールドを示す。そのレコードに対する非互換性変更(Incompatible changes to the record)は、バージョン番号(version number)の変更によって指示される。
【0885】
sampleStreamSizeMinusOneの値に1を加算すると、VPCCDecoderConfigurationRecordまたはVPCCDecoderConfigurationRecordが適用されるストリームのV-PCCサンプルに含まれるすべてのサンプルストリームV-PCCユニット内のssvu_vpcc_unit_size要素の精度をバイト単位で示すことができる(sampleStreamSizeMinusOne plus 1 indicates the precision、in bytes、of the ssvu_vpcc_unit_size element in all sample stream V-PCC units in either this configuration record or a V-PCC sample in the stream to which this configuration record applies)。
【0886】
numOfVPCCParameterSetsは、VPCCDecoderConfigurationRecordにシグナリングされるVPS(V-PCC parameter sets)の数を示す。
【0887】
VPCCParameterSetは、VPCC_VPSタイプのV-PCCユニットのためのサンプルストリームV-PCCユニット(sample_stream_vpcc_unit())インスタンスである。V-PCCユニットは、vpcc_parameter_set()を含んでもよい。即ち、VPCCParameterSetアレイは、vpcc_parameter_set()を含んでもよい。
図46は、サンプルストリームV-PCCユニット(sample_stream_vpcc_unit())のシンタックス構造の一例を示す。
【0888】
numOfAtlasSetupUnitsは、VPCCDecoderConfigurationRecordにシグナリングされたアトラスストリームのためのセットアップアレイの数を示す。
【0889】
Atlas_setupUnitは、アトラスシーケンスパラメータセット、アトラスフレームパラメータセット、またはSEIアトラスNALユニットを含むsample_stream_vpcc_unit()インスタンスである。
図46は、サンプルストリームV-PCCユニット(sample_stream_vpcc_unit())のシンタックス構造の一例を示す。
【0890】
即ち、アトラスセットアップユニット(atlas_setupUnit)アレイは、VPCCDecoderConfigurationRecordが存在するサンプルエントリーおよびアトラス ストリームSEIメッセージによって参照されるストリームに対して一定のアトラスパラメータセットを含んでもよい。実施例によれば、アトラスセットアップユニットは、簡略してセットアップユニットとも呼ぶ。
【0891】
他の実施例によれば、VPCCデコーダコンフィギュレーションレコード(VPCCDecoderConfigurationRecord)は、以下のように示すことができる。
【0892】
aligned(8) class VPCCDecoderConfigurationRecord {
【0893】
unsigned int(8) configurationVersion = 1;
【0894】
unsigned int(3) sampleStreamSizeMinusOne;
【0895】
bit(2) reserved = 1;
【0896】
unsigned int(3) lengthSizeMinusOne;
【0897】
unsigned int(5) numOVPCCParameterSets;
【0898】
for (i=0; i< numOVPCCParameterSets; i++) {
【0899】
sample_stream_vpcc_unit VPCCParameterSet;
【0900】
}
【0901】
unsigned int(8) numOfSetupUnitArrays;
【0902】
for (j=0; j<numOfSetupUnitArrays; j++) {
【0903】
bit(1) array_completeness;
【0904】
bit(1) reserved = 0;
【0905】
unsigned int(6) NAL_unit_type;
【0906】
unsigned int(8) numNALUnits;
【0907】
for (i=0; i<numNALUnits; i++) {
【0908】
sample_stream_nal_unit setupUnit;
【0909】
}
【0910】
}
【0911】
configurationVersionは、バージョンフィールドである。そのレコードに対する非互換性変更(Incompatible changes to the record)は、バージョン番号の変更によって指示される。
【0912】
lengthSizeMinusOneの値に1を加算すると、VPCCDecoderConfigurationRecordまたはVPCCDecoderConfigurationRecordが適用されるストリームのV-PCCサンプルに含まれるすべてのサンプルストリームNALユニット内のssnu_nal_unit_sizeの精度をバイト単位で示すことができる。
図53は、ssnu_nal_unit_sizeフィールドを含むサンプルストリームNALユニット(sample_stream_nal_unit())のシンタックス構造の一例を示す。
【0913】
numOfVPCCParameterSetsは、VPCCDecoderConfigurationRecordにシグナリングされるVPS(V-PCC parameter sets)の数を示す。
【0914】
VPCCParameterSetは、VPCC_VPSタイプのV-PCCユニットのためのサンプルストリームV-PCCユニット(sample_stream_vpcc_unit())インスタンスである。V-PCCユニットは、vpcc_parameter_set()を含んでもよい。即ち、VPCCParameterSetアレイは、vpcc_parameter_set()を含んでもよい。
図46は、サンプルストリームV-PCCユニット(sample_stream_vpcc_unit())のシンタックス構造の一例を示す。
【0915】
numOfSetupUnitArraysは、指示されたタイプのアトラスNALユニットのアレイの数を指示する。
【0916】
numOfSetupUnitArraysの値だけ繰り返される繰り返し文は、array_completenessを含んでもよい。
【0917】
array_completenessの値が1であれば、与えられたタイプのすべてのアトラスNALユニットが次のアレイに存在して該当ストリームには存在しないことを示し、array_completenessの値が0であれば、指示されたタイプの追加アトラスNALユニットがそのストリーム内に存在できることを指示する(when equal to 1 indicates that all atlas NAL units of the given type are in the following array and none are in the stream; when equal to 0 indicates that additional atlas NAL units of the indicated type may be in the stream)。デフォルトおよび許容値は、そのサンプルエントリー名によって制約される(the default and permitted values are constrained by the sample entry name)。
【0918】
NAL_unit_typeは、次のアレイ(following arrary)に含まれたアトラスNALユニットのタイプを指示する。NAL_unit_typeは、a NAL_ASPS、NAL_PREFIX_SEI、またはNAL_SUFFIX_SEI atlas NAL unitを指示する値の1つに制限される(it is restricted to take one of the values indicating a NAL_ASPS、NAL_PREFIX_SEI、or NAL_SUFFIX_SEI atlas NAL unit)。
【0919】
numNALUnitsは、VPCCDecoderConfigurationRecordを適用するストリームのためのVPCCDecoderConfigurationRecordに含まれるindicated typeのアトラスNALユニットの数を指示する。即ち、ストリーム全体に関する情報を提供する。SEIアレイは、‘declarative’ネーチャー(nature)のSEIメッセージのみを含む。このようなSEIの例示がユーザ-データSEIである(The SEI array shall only contain SEI messages of a ‘declarative’ nature、that is、those that provide information about the stream as a whole)。
【0920】
セットアップユニットは、アトラスシーケンスパラメータセット、またはアトラスフレームパラメータセットまたdeclarative SEIアトラスNALユニットを含むサンプルストリームNALユニット(sample_stream_nal_unit())インスタンスである。
【0921】
実施例によれば、V-PCCビットストリームのマルチトラックコンテナ(multi track containerまたはmulti track ISOBMFF V-PCC containerという)の一般的なレイアウトは、それらのタイプに基づいて、コンテナファイル内の個別トラック(individual track)にマップされてもよい(The general layout of a multi-track ISOBMFF V-PCC container、where V-PCC units in a V-PCC elementary stream are mapped to individual tracks within the container file based on their types)。実施例によれば、multi-track ISOBMFF V-PCCコンテナには、2つタイプのトラックがある。そのうちの1つはV-PCCトラックであり、もう1つはV-PCCコンポーネントトラックである。
【0922】
実施例によるV-PCCトラックは、アトラスサブ-ビットストリームおよびシーケンスパラメータセットを含むV-PCCビットストリーム内のボリュームビジュアル情報(volumetric visual information)を伝送するトラックである。
【0923】
実施例によるV-PCCコンポーネントトラックは、V-PCCビットストリームの占有マップ、ジオメトリ、特質サブビットストリームに対する2Dビデオ符号化されたデータを伝送する制限されたビデオスキームトラックである。これに加えて、V-PCCコンポーネントトラックは以下の条件を満たすことができる。
【0924】
a) サンプルエントリーにおいて、このトラックに含まれたビデオストリームのロール(role)を説明する新たなボックスがV-PCCシステムにインサートされる。
【0925】
b) トラックレファレンスがV-PCCトラックからV-PCCコンポーネントトラックに紹介される。これはV-PCCトラックによって表現される特定のポイント-クラウドに含まれたV-PCCコンポーネントトラックのメンバシップを確立するためである。
【0926】
c) トラック-ヘッダフラグが0にセットされる。これはトラックがV-PCCシステムには寄与するものの、ムービーの全般的なレイアップに直接寄与しないことを示すためである。
【0927】
同一のV-PCCシーケンスが属するトラックは、時間順に整列される。異なるビデオ符号化されたV-PCCコンポーネントトラックと同一のポイントクラウドフレームに寄与するサンプルおよびV-PCCトラックは、同一のプレゼンテーション時間を有する。サンプルに対して使用されるV-PCCアトラスシーケンスパラメータセットおよびアトラスフレームパラメータセットは、ポイントクラウドフレームのコンポジションタイムと同一または以前の復号タイムを有する。さらに、同一のV-PCCシーケンスに属するすべてのトラックは、同一の含蓄または明瞭な編集リストを有する(Tracks belonging to the same V-PCC sequence are time-aligned. Samples that contribute to the same point cloud frame across the different video-encoded V-PCC component tracks and the V-PCC track has the same presentation time. The V-PCC atlas sequence parameter sets and atlas frame parameter sets used for such samples have a decoding time equal or prior to the composition time of the point cloud frame. In addition、all tracks belonging to the same V-PCC sequence have the same implied or explicit edit lists)。
【0928】
Note:コンポーネントトラック内のエレメンタリストリーム間の同期間は、ISOBMFFトラックタイミング構造(stts、ctts、およびcslg)によって処理されてもよく、ムービーフラグメント内の同等なメカニズムによって処理されてもよい。
【0929】
このようなレイアウトに基づいて、V-PCC ISOBMFFコンテナは、以下を含んでもよい。
【0930】
- V-PCCパラメータセットV-PCCユニット(unit type VPCC_VPS)およびアトラスV-PCCユニット(unit type VPCC_AD)のペイロードを伝送するサンプルおよびサンプルエントリーに含まれたV-PCCパラメータセットを含むV-PCCトラック。また、トラックは、unit types VPCC_OVD、VPCC_GVD、およびVPCC_AVDのようなビデオ圧縮されたV-PCCユニットのペイロードを伝送する他のトラックに対するトラックレファレンスを含む。
【0931】
- タイプVPCC_OVDのV-PCCユニットのペイロードである占有マップデータのためのビデオコードされたエレメンタリストリームのアクセスユニットを含むサンプルのある制限されたビデオスキームトラック。
【0932】
- タイプVPCC_GVDのV-PCCユニットのペイロードであるジオメトリデータのビデオコードされたエレメンタリストリームのアクセスユニットを含むサンプルのある1つまたは1つ以上の制限されたビデオスキームトラック。
【0933】
- タイプVPCC_AVDのV-PCCユニットのペイロードである特質データのビデオコードされたエレメンタリストリームのアクセスユニットを含むサンプルのあるゼロまたは1つ以上の制限されたビデオスキームトラック。
【0934】
以下、V-PCCトラック(V-PCC tracks)について説明する。
【0935】
実施例によれば、V-PCCトラックサンプルエントリー(V-PCC Track Sample Entry)のシンタックス構造は、以下のようである。
【0936】
サンプルエントリータイプ(Sample Entry Type):'vpc1'、'vpcg'
【0937】
コンテナ(Container):サンプルディスクリプションボックス(SampleDescriptionBox)
【0938】
義務有無(Mandatory): 'vpc1'または'vpcg'サンプルエントリーは義務である
【0939】
量(Quantity):1つまたは1つ以上のサンプルエントリーが存在してもよい
【0940】
V-PCCトラックは、ボリュームビジュアルサンプルエントリーを拡張するVPCCSampleEntryを用いる。サンプルエントリータイプは'vpc1'または'vpcg'である。
【0941】
V-PCCサンプルエントリーは、V-PCCコンフィギュレーションボックス(VPCCConfigurationBox)を含む。このボックスはV-PCCデコーダコンフィギュレーションレコード(VPCCDecoderConfigurationRecord)を含む。
【0942】
'vpc1'サンプルエントリー下において、すべてのアトラスシーケンスパラメータセット、アトラスフレームパラメータセット、またはV-PCC SEIはセットアップユニットアレイ(setupUnit array)内にある。
【0943】
'vpcg'サンプルエントリー下において、アトラスシーケンスパラメータセット、アトラスフレームパラメータセット、V-PCC SEIがこのアレイ内またはストリーム内にあってもよい。
【0944】
オプションのビットレートボックス(BitRateBox)は、V-PCCトラックのビットレート情報をシグナリングするために、V-PCCボリュームサンプルエントリー内に存在してもよい。
【0945】
Volumetric Sequences:
【0946】
class VPCCConfigurationBox extends Box('vpcC') {
【0947】
VPCCDecoderConfigurationRecord() VPCCConfig;
【0948】
}
【0949】
aligned(8) class VPCCSampleEntry() extends VolumetricVisualSampleEntry ('vpc1') {
【0950】
VPCCConfigurationBox config;
【0951】
VPCCUnitHeaderBox unit_header;
【0952】
}
【0953】
図55は、実施例によるV-PCCサンプルエントリー構造の一例を示す。
図55において、V-PCCサンプルエントリーは、1つのV-PCCパラメータセットを含み、オプションのアトラスシーケンスパラメータセット(ASPS)、アトラスフレームパラメータセット(AFPS)またはSEIを含んでもよい。
【0954】
実施例によるV-PCCビットストリームは、サンプルストリームV-PCCヘッダ、サンプルストリームNALヘッダ、V-PCCユニットヘッダボックスをさらに含んでもよい。
【0955】
以下、V-PCCトラックサンプルフォーマット(V-PCC track sample format)について説明する。
【0956】
V-PCCトラック内の各々のサンプルは、シングルポイントクラウドフレームに対応する。様々なコンポーネントトラックにおいてこのフレームに対応するサンプルは、V-PCCトラックサンプルと同一のコンポジションタイムを有する。各々のV-PCCサンプルは、以下のように、1つまたは1つ以上のアトラスNALユニットを含む。
【0957】
aligned(8) class VPCCSample {
【0958】
unsigned int PointCloudPictureLength = sample_size; // size of samble (e.g.、from SampleSizeBox)
【0959】
for (i=0; i<PointCloudPictureLength; ) {
【0960】
sample_stream_nal_unit nalUnit
【0961】
i += (VPCCDecoderConfigurationRecord.lengthSizeMinusOne+1) +
nalUnit.ssnu_nal_unit_size;
【0962】
}
【0963】
}
【0964】
aligned(8) class VPCCSample
【0965】
{
【0966】
unsigned int PictureLength = sample_size; // size of samble (e.g.、from SampleSizeBox)
【0967】
for (i=0; i<PictureLength; ) // ピクチャーの最後までシグナリングされる
【0968】
{
【0969】
unsigned int((VPCCDecoderConfigurationRecord.LengthSizeMinusOne+1)*8)
【0970】
NALUnitLength;
【0971】
bit(NALUnitLength * 8) NALUnit;
【0972】
i += (VPCCDecoderConfigurationRecord.LengthSizeMinusOne+1) + NALUnitLength;
【0973】
}
【0974】
}
【0975】
実施例によるV-PCCトラック内のシンクサンプル(random access point)は、V-PCC IRAPコードされたパッチデータアクセスユニットである。アトラスパラメータセットは、必要のある場合、ランダムアクセスを許容するために、シンクサンプルにおいて繰り返すことができる。
【0976】
以下、ビデオ符号化されたV-PCCコンポーネントトラックについて説明する。
【0977】
MPEG特定のコーデックを用いてコードされたビデオトラックの伝送はISO BMFFの規格に従う。例えば、AVCおよびHEVCコードされたビデオの伝送は、ISO/IEC 14496-15を参照することができる。ISOBMFFは、他のコーデックタイプが必要な場合、拡張メカニズムをさらに提供することができる。
【0978】
プレーヤー側でポイントクラウドを再構成することなく、特質、ジオメトリ、または占有マップトラックから復号されたフレームをディスプレイすることは意味がないため、制限されたビデオスキームタイプは、このようなビデオ-コードされたトラックに対して定義できる。
【0979】
以下、制限されたビデオスキーム(Restricted video scheme)について説明する。
【0980】
V-PCCコンポーネントビデオトラックは、制限されたビデオとしてファイル内で表現される。また、制限されたビデオサンプルエントリーの制限されたスキーム情報ボックス(RestrictedSchemeInfoBox)のSchemeTypeBoxのscheme_typeフィールド内の'pccv'値によって識別できる。
【0981】
特質、ジオメトリ、および占有マップV-PCCコンポーネントを符号化するために用いられるビデオコーデック上の制限(restriction)はない。さらに、コンポーネントは異なるビデオコーデックを使用して符号化できる。
【0982】
実施例によれば、スキーム情報(Scheme information、SchemeInformationBox)が存在し、VPCCUnitHeaderBoxを含んでもよい。
【0983】
以下、V-PCCコンポーネントトラックのレファレンシング(Referencing V-PCC component tracks)について説明する。
【0984】
V-PCCトラックをコンポーネント ビデオトラックにリンクするために、3つのTrackReferenceTypeBoxesが各々のコンポーネントのためにV-PCCトラックのトラックボックス内のトラックレファレンスボックスに追加されてもよい。トラックレファレンスタイプボックスは、V-PCCトラックレファレンスに関するビデオトラックを格納するtrack_IDのアレイを含む。TrackReferenceTypeBoxのreference_typeは、占有マップ、ジオメトリ、特質、または占有マップなどのコンポーネントのタイプを識別する。トラックレファレンスタイプは、以下のようである:
【0985】
'pcco'において、参照されたトラックがビデオ-コードされた占有マップV-PCCコンポーネントを含む。
【0986】
'pccg'において、参照されたトラックがビデオ-コードされたジオメトリV-PCCコンポーネントを含む。
【0987】
'pcca'において、参照されたトラックがビデオ-コードされた特質V-PCCコンポーネントを含む。
【0988】
参照された制限されたビデオトラックによって伝送され、トラックのRestrictedSchemeInfoBox内でシグナリングされるV-PCCコンポーネントのタイプは、V-PCCトラックからトラックレファレンスのレファレンスタイプにマッチングされる。
【0989】
以下、V-PCCビットストリームのシングルトラックコンテナ(Single track container of V-PCC Bitstream)について説明する。
【0990】
V-PCCデータのシングル-トラックカプセル化は、シングル-トラック宣言によって表現されるV-PCC符号化されたエレメンタリビットストリームを求める(A single-track encapsulation of V-PCC data requires the V-PCC encoded elementary bitstream to be represented by a single-track declaration)。
【0991】
PCCデータのシングル-トラックカプセル化は、V-PCC符号化されたビットストリームのシンプルISOBMFFのカプセル化に用いられる。このようなビットストリームは、追加の処理なくシングルトラックに直ちに格納される。V-PCCユニットヘッダデータ構造はビットストリーム内にあってもよい。V-PCCデータのためのシングルトラックコンテナは、追加の処理(e.g.、multi-track file generation、transcoding、DASH segmentation、etc.)のためのメディアワークフローに提供される。
【0992】
シングル-トラックカプセル化されたV-PCCデータを含むISOBMFFファイルは、ファイルタイプボックスのcompatible_brands[]リスト内'pcst'を含んでもよい。
【0993】
V-PCC エレメンタリ ストリーム トラック(V-PCC elementary stream track):
【0994】
Sample Entry Type: 'vpe1'、'vpeg'
【0995】
Container: SampleDescriptionBox
【0996】
Mandatory: A 'vpe1' or 'vpeg' sample entry is mandatory
【0997】
Quantity: One or more sample entries may be present
【0998】
V-PCCエレメンタリストリームトラックは、サンプルエントリータイプ'vpe1'または'vpeg'を有するボリュームビジュアルサンプルエントリーを使用する。
【0999】
V-PCCエレメンタリストリームサンプルエントリーは、VPCCConfigurationBoxを含む。
【1000】
'vpe1' サンプルエントリー下において、すべてのアトラスシーケンスパラメータセット、アトラスフレームパラメータセット、SEIがセットアップユニットアレイ 内にあってもよい。'vpeg'サンプルエントリー下において、アトラスシーケンスパラメータセット、アトラスフレームパラメータセット、SEIがこのアレイまたはストリーム内に存在してもよい。
【1001】
Volumetric Sequences:
【1002】
class VPCCConfigurationBox extends Box('vpcC') {
【1003】
VPCCDecoderConfigurationRecord() VPCCConfig;
【1004】
}
【1005】
aligned(8) class VPCCElementaryStreamSampleEntry() extends VolumetricVisualSampleEntry ('vpe1') {
【1006】
VPCCConfigurationBox config;
【1007】
VPCCBoundingInformationBox 3D_bb;
【1008】
}
【1009】
以下、V-PCCエレメンタリストリームサンプルフォーマット(V-PCC elementary stream sample format)について説明する。
【1010】
V-PCCエレメンタリストリームサンプルは、同一のプレゼンテーションタイムに属する1つ以上のV-PCCユニットで構成されてもよい。各々のサンプルは、ユニークなプレゼンテーションタイム、サイズ、デュレーションを有する。サンプルは、例えば、シンクサンプルであるか、他のV-PCCエレメンタリストリームサンプルに依存して復号される。
【1011】
以下、V-PCCエレメンタリストリームシンクサンプル(V-PCC elementary stream sync sample)について説明する。
【1012】
V-PCCエレメンタリストリームシンクサンプルは、以下の条件を満たす:
【1013】
- 独立して復号可能背である。
【1014】
- 復号順にシンクサンプルの以後に来るサンプルは、シンクサンプルの以前のサンプルに対する復号依存性を有しない。
【1015】
- 復号順にシンクサンプルの以後に来るすべてのサンプルは成功的に復号可能である。
【1016】
以下、V-PCCエレメンタリストリームサブ-サンプル(V-PCC elementary stream sub-sample)について説明する。
【1017】
V-PCCエレメンタリストリームサブ-サンプルは、V-PCCエレメンタリストリームサンプル内に含まれるV-PCCユニットである。
【1018】
V-PCCエレメンタリストリームトラックは、V-PCCエレメンタリストリームサブ-サンプルを並べるMovieFragmentBoxesのTrackFragmentBox内または各SampleTableBox内のSubSampleInformationBoxを含む。
【1019】
サブ-サンプルを表現するV-PCCユニットの32-ビットユニットヘッダはSubSampleInformationBox内のサブ-サンプルエントリーの32-ビットcodec_specific_parametersフィールドにコピーされる。各々のサブ-サンプルのV-PCCユニットタイプは、SubSampleInformationBox内のサブ-サンプルエントリーのcodec_specific_parametersフィールドをパーシングすることで識別できる。
【1020】
以下、ポイントクラウドデータのレンダリングについて説明する。
【1021】
実施例によれば、ポイントクラウドデータのレンダリングは、
図1のレンダラー10009、
図19のポイントクラウドレンダラー19007、
図20のレンダラー20009、または
図22のポイントクラウドレンダリング部22004で行われる。実施例によれば、メタデータに基づいて3D空間上にポイントクラウドデータをレンダリングすることができる。ユーザはVR/ARディスプレイまたは一般のディスプレイなどによってレンダリングされた結果の全部または一部の領域を見ることができる。特に、ポイントクラウドデータは、ユーザのビューポートなどによってレンダリングされる。
【1022】
ここで、ビューポート(viewport)およびビューポート領域とは、ユーザがポイントクラウドビデオで見ている領域を意味する。視点(viewpoint)は、ユーザがポイントクラウドビデオで見ている地点であって、ビューポート領域の真ん中を意味する。即ち、ビューポートは、視点を中心とする領域であるが、その領域が占めるサイズ、形態などは、FOV(Field Of View)によって決定できる。
【1023】
実施例によるビューポート情報は、現在、ユーザが3D空間上で装置またはHMDなどによって見ている領域に関する情報である。これにより、ゲイズ分析(Gaze Analysis)が行われ、ユーザがどんな方式でポイントクラウドビデオを消費するか、ポイントクラウドビデオのどの領域をどのくらい凝視するかなどを確認することもできる。ゲイズ分析は、受信側で行われて送信側へフィードバックチャンネルを介して送信されてもよい。VR/AR/MRのようなディスプレイ装置は、オリエンテーション情報、ユーザの値の位置/方向、装置が支援する垂直(vertical)または水平(horizontal)FOVなどに基づいてビューポート領域を抽出することができる。オリエンテーションまたはビューポート情報は、受信装置で抽出または算出される。受信装置で分析したオリエンテーションまたはビューポート情報は、送信装置へフィードバックチャンネルを介して送信されてもよい。
【1024】
実施例による受信装置のポイントクラウドビデオデコーダは、オリエンテーション情報および/またはユーザが現在見ている領域を示すビューポート情報を用いて、特定の領域、即ちオリエンテーション情報および/またはビューポート情報が示す領域のメディアデータのみを効率的にファイルから抽出または復号する。実施例による送信装置のポイントクラウドビデオエンコーダは、受信装置でフィードバックされるオリエンテーション情報 および/またはビューポート情報を用いて、特定の領域、即ちオリエンテーション情報および/またはビューポート情報が示す領域のメディアデータのみを符号化してもよく、符号化されたメディアデータをファイルにカプセル化して送信してもよい。
【1025】
実施例によれば、送信装置のファイル/セグメントカプセル化部は、オリエンテーション情報および/またはビューポート情報に基づいて、すべてのポイントクラウドデータをファイル/セグメントにカプセル化してもよく、オリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータをファイル/セグメントにカプセル化してもよい。
【1026】
実施例によれば、受信装置のファイル/セグメントデカプセル化部は、オリエンテーション情報および/またはビューポート情報に基づいて、すべてのポイントクラウドデータを含むファイルをデカプセル化してもよく、オリエンテーション情報および/またはビューポート情報が示すポイントクラウドデータを含むファイルをデカプセル化してもよい。
【1027】
実施例によれば、ビューポート情報は、ViewInfoStruct情報、ビュー情報と同様または類似する意味で用いられる。
【1028】
実施例によるビューポート情報は、ビューポートに関する情報またはビューポート情報に関連するメタデータとも呼ぶ。実施例によるビューポートに関する情報は、ビューポート情報、レンダリングパラメータ、客体レンダリング情報のうちの少なくとも1つを含むことができる。
【1029】
実施例によれば、ビューポートに関する情報(viewport related information)は、
図18のポイントクラウドデータ送信装置のメタデータ符号化部18005、または
図21のV-PCCシステムのポイントクラウド前処理部20001および/またはビデオ/イメージ符号化部21007、21008で生成/符号化され、
図19のポイントクラウドデータ受信装置のメタデータ復号化部19002、または
図22のV-PCCシステムのビデオ/イメージ復号部22001、22002および/またはポイントクラウド後処理部22003で取得/復号できる。
【1030】
本明細書は、ポイントクラウドデータのビューポート(または、ビュー)情報に関連するメタデータを定義し、ファイル内の該当ビューポート情報に関連するメタデータを格納およびシグナリングする実施例を説明する。
【1031】
本明細書は、ファイル内の時間経過とともに動的に変化するポイントクラウドデータのビューポート情報に関連するメタデータを格納する実施例を説明する。
【1032】
本明細書は、ポイントクラウドデータのレンダリングパラメータに関連するメタデータを定義し、ファイル内のレンダリングパラメータに関連するメタデータを格納およびシグナリングする実施例を説明する。
【1033】
本明細書は、ファイル内の時間経過とともに動的に変化するポイントクラウドデータのレンダリングパラメータに関連するメタデータを格納する実施例を説明する。
【1034】
本明細書は、ファイル内のポイントクラウドデータ関連客体レンダリング情報に関するメタデータを定義し、ファイル内客体レンダリング情報に関連するメタデータを格納 およびシグナリングする実施例を説明する。
【1035】
本明細書は、ファイル内の時間経過とともに動的に変化するポイントクラウドデータの客体レンダリング情報に関連するメタデータを格納する実施例を説明する。
【1036】
図56は、実施例による仮想カメラとViewInfoStruct情報を用いてビューを生成する一例を示す。
【1037】
実施例によるViewInfoStruct情報は、レンダリングされて提供されるビューを生成するために、詳細な情報を含んでもよい。特に、ビューを生成するための仮想カメラの3D上における位置情報、仮想カメラの垂直/水平FOV(field of view)、仮想カメラが見る方向情報(direction vector)、仮想カメラの上方を示す上ベクトル(up vector情報)などを含む。仮想カメラはユーザの目(Eye)、即ち、3D上の一部の領域を見るユーザの視覚と類似する。この情報に基づいて視錘台(view frustum)を類推することができる。視錘台(view frustum)は、実際にレンダリングされディスプレイされるポイントクラウドデータの全体または一部を含む3D空間上の領域を意味する。実施例によれば、類推された視錘台(view frustum)が2Dフレームの形式でプロジェクションされることで、ビュー(即ち、実際にディスプレイされる2Dイメージ/ビデオフレーム)が生成される。
【1038】
以下、ViewInfoStruct情報に含まれる情報の例を示すシンタックスである。
【1039】
aligned(8) class ViewInfoStruct(){
【1040】
unsigned int(16) view_pos_x;
【1041】
unsigned int(16) view_pos_y;
【1042】
unsigned int(16) view_pos_z;
【1043】
unsigned int(8) view_vfov;
【1044】
unsigned int(8) view_hfov;
【1045】
unsigned int(16) view_dir_x;
【1046】
unsigned int(16) view_dir_y;
【1047】
unsigned int(16) view_dir_z;
【1048】
unsigned int(16) view_up_x;
【1049】
unsigned int(16) view_up_y;
【1050】
unsigned int(16) view_up_z;
【1051】
}
【1052】
view_pos_x、view_pos_y、view_pos_zは、ビュー(例えば、実際にディスプレイされる2Dイメージ/ビデオフレーム)を生成可能な仮想カメラの3D空間上のx、y、z座標値を示す。
【1053】
view_vfov、view_hfovは、ビューを生成可能な仮想カメラの垂直FOV(vertical field of view)、水平FOV(horizontal field of view情報)を示す。
【1054】
view_dir_x、view_dir_y、view_dir_zは、仮想カメラが見る方向を示す方向ベクトル(direction vector)を示すための3D空間上のx、y、z座標値を示す。
【1055】
view_up_x、view_up_y、view_up_zは、仮想カメラの上方を示す上ベクトル(up vector)を示すための3D空間上のx、y、z座標値を示す。
【1056】
実施例によるViewInfoStruct()情報は、以下のように、ポイントクラウドビットストリーム上にSEIなどの形式で送信できる。
【1057】
V-PCC view information box
【1058】
aligned(8) class VPCCViewInfoBox extends FullBox('vpvi',0,0) {
【1059】
ViewInfoStruct();
【1060】
}
【1061】
以下、静的V-PCCビューポート情報について説明する。
【1062】
実施例によるビューポート情報がポイントクラウドシーケンス内で変化しない場合、V-PCCトラックのサンプルエントリーまたはV-PCCエレメンタリストリームトラック(elementary stream track)のサンプルエントリーに、以下のようにVPCCViewInfoBoxが含まれる。
【1063】
aligned(8) class VPCCSampleEntry() extends VolumetricVisualSampleEntry ('vpc1') {
【1064】
VPCCConfigurationBox config;
【1065】
VPCCUnitHeaderBox unit_header;
【1066】
VPCCViewInfoBox view_info;
【1067】
}
【1068】
VPCCViewInfoBoxは、トラック内のサンプルに格納されたアトラスフレームに関連するポイントクラウドデータがレンダリングされ提供されるビューを生成するための詳細な情報は、以下のようである。
【1069】
aligned(8) class VPCCElementaryStreamSampleEntry() extends VolumetricVisualSampleEntry ('vpe1') {
【1070】
VPCCConfigurationBox config;
【1071】
VPCCViewInfoBox view_info;
【1072】
}
【1073】
VPCCViewInfoBoxは、トラック内のサブサンプルに格納されたアトラスフレーム、ビデオフレームに関連するポイントクラウドデータがレンダリングされ提供されるビューを生成するための詳細な情報を含む。
【1074】
以下、V-PCCビュー情報サンプルグループ化(V-PCC view information sample grouping)について説明する。
【1075】
実施例によれば、サンプルグループ化のための'vpvs'grouping_typeは、このサンプルグループに伝送されるビュー情報にV-PCCトラック内のサンプルの割り当てを示す。grouping_typeが'vpvs'であるSampleToGroupBoxが存在する場合、同じグループ化タイプを有するaccompanying SampleGroupDescriptionBoxが存在し、このサンプルのグループのIDを含む。
【1076】
aligned(8) class VPCCViewInfoSampleGroupDescriptionEntry() extends SampleGroupDescriptionEntry('vpvs') {
【1077】
ViewInfoStruct();
【1078】
}
【1079】
以下、動的V-PCCビュー情報(Dynamic V-PCC view information)を説明する。
【1080】
V-PCCトラックがサンプルエントリータイプ'dyvi'を有する関連タイムド-メタデータトラックを有する場合は、ポイントクラウドストリームのために定義されたビュー情報は、動的として考慮されたV-PCCトラックによって伝送される。即ち、ビュー情報は、時間経過とともに動的に変化できる。
【1081】
関連するタイムド-メタデータトラックは、アトラスストリームを伝送するV-PCCに対する'cdsc'トラックレファレンスを含む。
【1082】
V-PCC要素ストリームトラックがサンプルエントリータイプ'dyvi'を有する関連するタイムド-メタデータトラックを有する場合は、ポイントクラウドストリームのために定義されたビュー情報は、動的として考慮されたV-PCC基本トラックによって伝送される。即ち、ビュー情報は、時間経過とともに動的に変化する。
【1083】
関連するタイムド-メタデータトラックは、V-PCC基本サンプルトラックに対する'cdsc'トラックレファレンスを含む。
【1084】
aligned(8) class DynamicViewInfoSampleEntry extends MetaDataSampleEntry('dyvi') {
【1085】
VPCCViewInfoBox init_view_info;
【1086】
}
【1087】
init_view_infoは、ポイントクラウドデータの初期ビューを生成するビュー情報(view information())を含んでもよい。
【1088】
このサンプルエントリータイプ'dyvi'のサンプルシンタックスは、以下のようである。
【1089】
aligned(8) DynamicViewInfoSample() {
【1090】
VPCCViewInfoBox view_info;
【1091】
}
【1092】
各々のサンプルは、時間経過とともに変化するビュー情報(view information ())を含んでもよい。
【1093】
実施例によれば、レンダリングのためのレンダリングパラメータであるRenderingParamStructは、ポイントクラウドデータのレンダリング時に適用可能なパラメータ情報を含んでもよい。これはポイントクラウドデータがレンダリング時にポイントのサイズ、ポイントのレンダリングタイプ、重複ポイントをどのように処理するか、例えば、ディスプレイするか否かなどを、以下のように含む。
【1094】
aligned(8) class RenderingParamStruct(){
【1095】
unsigned int(16) point_size;
【1096】
unsigned int(7) point_type;
【1097】
unsigned int(2) duplicated_point;
【1098】
}
【1099】
Point_sizeは、レンダリング/ディスプレイされるポイントのサイズを示す。
【1100】
Point_typeは、レンダリング/ディスプレイされるポイントのタイプを示すことができる。例えば、Point_typeの値が0であればcuboid、1であればcircle、2であればポイントを指示する。
【1101】
Duplicated_pointは、同一の3D上のx、y、z値を有するポイントが複数である場合の処理方法を示す。例えば、Duplicated_pointの値が0であれば、重複ポイントを無視する。一実施例として、Duplicated_pointの値が1であればポイントを1つだけランダムに選択してレンダリング/ディスプレイすることができる。一実施例として、Duplicated_pointの値が2であれば、重複ポイントの特質値を平均して該当平均値に基づいてレンダリング/ディスプレイすることができる。
【1102】
RenderingParamStruct()情報は、以下のように、ポイントクラウドビットストリーム上にSEIなどで送信できる。
【1103】
V-PCC rendering parameter box
【1104】
aligned(8) class VPCCRenderingParamBox extends FullBox('vprp',0,0) {
【1105】
RenderingParamStruct();
【1106】
}
【1107】
以下、静的V-PCCレンダリングパラメータ(Static V-PCC rendering parameter)について説明する。
【1108】
実施例によれば、レンダリング関連パラメータがポイントクラウドシーケンス内で変化しない場合、以下のように、V-PCCトラックのサンプルエントリーまたはV-PCCエレメンタリストリームトラックのサンプルエントリーにVPCCRenderingParamBoxが含まれてもよい。
【1109】
aligned(8) class VPCCSampleEntry() extends VolumetricVisualSampleEntry ('vpc1') {
【1110】
VPCCConfigurationBox config;
【1111】
VPCCUnitHeaderBox unit_header;
【1112】
VPCCRenderingParamBox rendering_param;
【1113】
}
【1114】
VPCCRenderingParamBoxは、トラック内のサンプルに格納されたアトラスフレームに関連するポイントクラウドデータのレンダリング時に適用可能なレンダリングパラメータの詳細な情報を以下のように含んでもよい。
【1115】
aligned(8) class VPCCElementaryStreamSampleEntry() extends VolumetricVisualSampleEntry ('vpe1') {
【1116】
VPCCConfigurationBox config;
【1117】
VPCCRenderingParamBox rendering_param;
【1118】
}
【1119】
VPCCRenderingParamBoxは、トラック内のサブサンプルに格納されたアトラスフレーム、ビデオフレームおよびポイントクラウドデータのレンダリング時に適用可能なレンダリングパラメータの詳細な情報を含んでもよい。
【1120】
以下、V-PCCレンダリングパラメータサンプルグループ化(V-PCC rendering parameter sample grouping)について説明する。
【1121】
実施例によれば、サンプルグループ化のための'vprp'grouping_typeは、サンプルグループに伝送されるレンダリングパラメータにV-PCCトラック内サンプルの割り当てを示す。grouping_typeが'vpvs'であるSampleToGroupBoxが存在する場合、同じグループ化タイプを有するaccompanying SampleGroupDescriptionBoxが存在し、このサンプルのグループIDを含んでもよい。
【1122】
aligned(8) class VPCCRenderingParamSampleGroupDescriptionEntry() extends SampleGroupDescriptionEntry('vprp') {
【1123】
RenderingParamStruct();
【1124】
}
【1125】
以下、動的V-PCCレンダリングパラメータ情報(Dynamic V-PCC rendering parameter information)について説明する。
【1126】
V-PCCトラックがサンプルエントリータイプ'dyrp'を有する関連するタイムド-メタデータトラックを有する場合、ポイントクラウドストリームのために定義されたレンダリングパラメータは、動的レンダリングパラメータとして考慮されたV-PCCトラックによって伝送される。即ち、レンダリングパラメータは、時間経過とともに動的に変化する。
【1127】
関連するタイムド-メタデータトラックは、アトラスストリームを伝送するV-PCCトラックに対する'cdsc'トラックレファレンスを含む。
【1128】
V-PCCエレメンタリストリームトラックがサンプルエントリータイプ'dyrp'を有する関連するタイムド-メタデータトラックを有する場合、ポイントクラウドストリームのために定義されたレンダリングパラメータは、動的レンダリングパラメータとして考慮されたV-PCCエレメンタリストリームトラックによって伝送される。即ち、レンダリングパラメータは、時間経過とともに動的に変化する。
【1129】
関連するタイムド-メタデータトラックは、V-PCCエレメンタリストリームトラックに対する'cdsc'トラックレファレンスを含む。
【1130】
aligned(8) class DynamicRenderingParamSampleEntry extends MetaDataSampleEntry('dyrp') {
【1131】
VPCCRenderingParamBox init_rendering_param;
【1132】
}
【1133】
init_rendering_paramは、ポイントクラウドデータの初期レンダリングパラメータを含んでもよい。
【1134】
実施例によれば、サンプルエントリータイプ'dyvi'のサンプルシンタックスは、以下のようである。
【1135】
aligned(8) DynamicRenderingParamSample() {
【1136】
VPCCRenderingParamBox rendering_param;
【1137】
}
【1138】
各々のサンプルは、時間経過とともに変化するレンダリングパラメータを含んでもよい。
【1139】
図57は、実施例によるObjectRenderingInfoStruct()情報を用いてビューを生成する一例を示す。
【1140】
実施例によれば、客体レンダリング情報であるObjectRenderingInfoStructは、ポイントクラウドデータレンダリング時にポイントクラウドデータに適用される詳細な情報を含んでもよい。実施例によれば、ObjectRenderingInfoStructは、以下のように、ポイントクラウドデータが使用する座標系情報、該当座標系に基づいてポイントクラウドデータの3D空間上における位置、ポイントクラウドデータの法線ベクトル、ポイントクラウドデータの上方を示す上ベクトルなどに関する情報を含んでもよい。
【1141】
aligned(8) class ObjectRenderingInfoStruct(){
【1142】
unsigned int(8) obj_id;
【1143】
unsinged int(4) obj_coord_type;
【1144】
bit(4) reserved = 1;
【1145】
unsigned int(16) obj_pos_x;
【1146】
unsigned int(16) obj_pos_y;
【1147】
unsigned int(16) obj_pos_z;
【1148】
unsigned int(16) obj_dir_x;
【1149】
unsigned int(16) obj_dir_y;
【1150】
unsigned int(16) obj_dir_z;
【1151】
unsigned int(16) obj_up_x;
【1152】
unsigned int(16) obj_up_y;
【1153】
unsigned int(16) obj_up_z;
【1154】
unsigned int(16) obj_scale_x;
【1155】
unsigned int(16) obj_scale_y;
【1156】
unsigned int(16) obj_scale_z;
【1157】
}
【1158】
obj_idは、ポイントクラウドデータの識別者を示す。
【1159】
obj_coord_typeは、ポイントクラウドレンダリング時に使用する座標系を示す。例えば、obj_coord_typeの値が0であれば、グローバル座標系を使用できる。例えば、obj_coord_typeの値が1であれば、ビュー座標系(即ち、ビューポートデータの生成に使用される仮想カメラの座標系)を使用する。
【1160】
obj_pos_x、obj_pos_y、obj_pos_zは、obj_coord_typeが称する座標系上においてポイントクラウドデータのバウンディングボックスの原点のx、y、z座標値を示す。実施例によれば、obj_coord_typeが称する座標系上においてポイントクラウドデータのバウンディングボックスの中心点のx、y、z座標値を示す。
【1161】
obj_dir_x、obj_dir_y、obj_dir_zは、ポイントクラウドデータの正面に向かう方向を示す方向ベクトル(または法線ベクトル)を示す3D空間上のx、y、z座標値を示す。
【1162】
obj_up_x、obj_up_y、obj_up_zは、ポイントクラウドデータの上方を示す上ベクトルを示す3D空間上のx、y、z座標値を示す。
【1163】
obj_scale_x、obj_scale_y、obj_scale_zは、レンダリング/ディスプレイ時にポイントクラウドデータの元もソースに対してx、y、軸に適用するスケーリング係数(scaling factor)を示す。
【1164】
実施例によれば、ObjectRenderingInfoStruct()情報は、ポイントクラウドビットストリーム上にSEIなどの形式で送信できる。
【1165】
実施例によれば、V-PCC客体レンダリング情報ボックス(V-PCC object rendering information box)は、ObjectRenderingInfoStruct()情報を含んでもよい。
【1166】
aligned(8) class VPCCObjectRenderingInfoBox extends FullBox('vpoi',0,0) {
【1167】
ObjectRenderingInfoStruct();
【1168】
}
【1169】
以下、静的V-PCC客体レンダリング情報(Static V-PCC object rendering information)について説明する。
【1170】
実施例によれば、ポイントクラウドデータレンダリング時にポイントクラウドデータに適用される客体レンダリング情報(object rendering information)がポイントクラウドシーケンス内で変化しない場合、V-PCCトラックのサンプルエントリーまたはV-PCCエレメンタリストリームトラックのサンプルエントリーにVPCCObjectRenderingInfoBoxが含まれてもよい。
【1171】
aligned(8) class VPCCSampleEntry() extends VolumetricVisualSampleEntry ('vpc1') {
【1172】
VPCCConfigurationBox config;
【1173】
VPCCUnitHeaderBox unit_header;
【1174】
VPCCObjectRenderingInfoBox obj_rendering_info;
【1175】
}
【1176】
VPCCObjectRenderingInfoBoxは、トラック内のサンプルに格納されたアトラスフレーム関連ポイントクラウドデータに関する客体レンダリング情報(object rendering information)を含んでもよい。
【1177】
aligned(8) class VPCCElementaryStreamSampleEntry() extends VolumetricVisualSampleEntry ('vpe1') {
【1178】
VPCCConfigurationBox config;
【1179】
VPCCObjectRenderingInfoBox obj_rendering_info;
【1180】
}
【1181】
VPCCObjectRenderingInfoBoxは、トラック内サブサンプルに格納されたアトラスフレームおよび/またはビデオフレーム関連ポイントクラウドデータに関する客体レンダリング情報(object rendering information)を含んでもよい。
【1182】
以下、V-PCC客体レンダリング情報サンプルグループ化(V-PCC object rendering information sample grouping)について説明する。
【1183】
実施例によれば、サンプルグループ化のための'vpoi'grouping_typeは、上記サンプルグループに伝送される客体レンダリング情報にV-PCCトラック内サンプルの割り当てを示す。grouping_typeが'vpoi'であるSampleToGroupBoxが存在する場合は、同じグループ化タイプを有するaccompanying SampleGroupDescriptionBoxが存在し、このサンプルのグループのIDを含んでもよい。
【1184】
aligned(8) class VPCCObjRenderingInfoSampleGroupDescriptionEntry() extends SampleGroupDescriptionEntry('vpoi') {
【1185】
VPCCObjectRenderingInfoStruct();
【1186】
}
【1187】
以下、動的V-PCCビュー情報(Dynamic V-PCC view information)について説明する。
【1188】
V-PCCトラックがサンプルエントリータイプ'dyoi'を有する関連するタイムド-メタデータトラックを有する場合、ポイントクラウドストリームのために定義された客体レンダリング情報は、動的レンダリング情報として考慮されたV-PCCトラックによって伝送される。即ち、客体レンダリング情報は、時間経過とともに変化する。
【1189】
関連するタイムド-メタデータトラックは、アトラスストリームを伝送するV-PCCトラックに対する'cdsc'トラックレファレンスを含む。
【1190】
V-PCCエレメンタリストリームトラックがサンプルエントリータイプ'dyoi'を有する関連するタイムド-メタデータトラックを有する場合、ポイントクラウドストリームのために定義された客体レンダリング情報は、動的レンダリング情報として考慮されたV-PCCエレメンタリストリームトラックによって伝送される。即ち、客体レンダリング情報は、時間経過とともに変化する。
【1191】
関連するタイムド-メタデータトラックは、V-PCCエレメンタリストリームトラックに対する'cdsc'トラックレファレンスを含む。
【1192】
aligned(8) class DynamicObjRenderingInfoSampleEntry extends MetaDataSampleEntry('dyoi') {
【1193】
VPCCObjectRenderingInfoBox init_obj_rendering;
【1194】
}
【1195】
init_obj_renderingは、ポイントクラウドデータに関連する初期客体レンダリング情報(object rendering information)を含まれてもよい。
【1196】
このサンプルエントリータイプ'dyvi'のサンプルシンタックスは、以下のようである(The sample syntax of this sample entry type ’dyvi’ is specified as follows):
【1197】
aligned(8) DynamicObjRenderingInfoSample() {
【1198】
VPCCObjectRenderingInfoBox obj_rendering_info;
【1199】
}
【1200】
各々のサンプルには、時間経過とともに変化するポイントクラウドデータの客体レンダリング情報が含まれてもよい。
【1201】
以下、ノン-タイムド(non-timed)V-PCCデータのキャリッジについて説明する。
【1202】
図58は、実施例によるnon-timed V-PCCデータをカプセル化する構造の一例を示す。
【1203】
実施例によれば、non-timed V-PCCデータは、イメージアイテムとしてファイルに格納できる(The non-timed V-PCC data is stored in a file as image items)。
【1204】
実施例によれば、新たなハンドラタイプ4cc code'vpcc'は、メタボックスのハンドラボックスで定義されて格納される。これは、V-PCC items、V-PCC unit items、および他のV-PCC encoded content representation informationの存否を指示するためである。
【1205】
実施例によるV-PCCアイテムは、独立して復号可能なV-PCCアクセスユニットを示すアイテムである(A V-PCC item is an item which represents an independently decodable V-PCC access unit)。
【1206】
実施例によれば、新たなアイテムタイプ4CCコード'vpci’がV-PCCアイテムを識別するために定義される。実施例によれば、V-PCCアイテムは、アトラスサブ-ビットストリームのV-PCCユニットペイロードを格納する。
【1207】
PrimaryItemBoxが存在する場合は、このボックス内のitem_idは、V-PCCアイテムを指示するために設定される。
【1208】
実施例によるV-PCCユニットアイテムは、V-PCCユニットデータを示すアイテムである(A V-PCC unit item is an item which represents a V-PCC unit data)。実施例によれば、V-PCCユニットアイテムは、占有、ジオメトリ、特質ビデオデータユニットのV-PCCユニットペイロードを格納する。
【1209】
実施例によるV-PCCユニットアイテムは、1つのV-PCCアクセスユニットに関連するデータのみを格納する(unit item shall store only one V-PCC access unit related data)。
【1210】
実施例によれば、V-PCCユニットアイテムのためのアイテムタイプ4CCコードが該当ビデオデータユニットを符号化するために使用されたコーデックによって設定される(An item type 4CC code for a V-PCC unit item is set depending on the codec used to encode corresponding video data units)。
【1211】
実施例によれば、V-PCCユニットアイテムは、該当V-PCCユニットヘッダアイテムプロパティ(property)およびコーデック固有の構成アイテム属性(codec specific configuration item property)に関連付けられる(A V-PCC unit item shall be associated with corresponding V-PCC unit header item property and codec specific configuration item property)。
【1212】
実施例によれば、V-PCCユニットアイテムは、非表示アイテムとしてマークされる。これは、独立してディスプレイすることは意味がないためである(V-PCC unit items are marked as hidden items、since it is not meaningful to display independently)。
【1213】
実施例によれば、V-PCCアイテムとV-PCCユニットとの間の関係を指示するために、4CCコード'pcco'、'pccg'および'pcca'を有する3つの新たなアイテムレファレンスタイプが以下のように定義される。実施例によるアイテムレファレンスは、V-PCCアイテムから関連するV-PCCユニットアイテムまで定義される(Item reference is defined “from” a V-PCC item “to” the related V-PCC unit items)。
【1214】
実施例によるアイテムレファレンスタイプの4CCコードは、以下のようである。
【1215】
'pcco'タイプにおいて、参照されたV-PCCユニットアイテムは占有 ビデオデータユニットを含む。
【1216】
'pccg'タイプにおいて、参照されたV-PCCユニットアイテムはジオメトリビデオデータユニットを含む。
【1217】
'pcca'タイプにおいて、参照されたV-PCCユニットアイテムは特質ビデオデータユニットを含む。
【1218】
以下、V-PCCに関連するアイテム属性(V-PCC-related item properties)について説明する。
【1219】
実施例によれば、叙述アイテム属性は、V-PCCパラメータセット情報とV-PCCユニットヘッダ情報とをそれぞれ伝送するために定義される(descriptive item properties are defined to carry the V-PCC parameter set information and V-PCC unit header information、respectively):
【1220】
以下、V-PCCコンフィギュレーションアイテム属性(V-PCC configuration item property)のシンタックス構造の一例である。
【1221】
Box Types: 'vpcp'
【1222】
Property type: Descriptive item property
【1223】
Container: ItemPropertyContainerBox
【1224】
Mandatory (per item): Yes、for a V-PCC item of type 'vpci'
【1225】
Quantity (per item): One or more for a V-PCC item of type 'vpci'
【1226】
実施例によれば、V-PCCパラメータセットは、叙述アイテム属性として格納され、V-PCCアイテムに関連する(V-PCC parameter sets are stored as descriptive item properties and are associated with the V-PCC items).
【1227】
実施例によれば、必須は'vpcp'アイテム属性のために1に設定される(essential is set to 1 for a ’vpcp’ item property)。
【1228】
aligned(8) class vpcc_unit_payload_struct () {
【1229】
unsigned int(16) vpcc_unit_payload_size;
【1230】
vpcc_unit_payload();
【1231】
}
【1232】
aligned(8) class VPCCConfigurationProperty
【1233】
extends ItemProperty('vpcc') {
【1234】
vpcc_unit_payload_struct()[];
【1235】
}
【1236】
vpcc_unit_payload_sizeは、vpcc_unit_paylod()のサイズをバイトで示す。
【1237】
以下、V-PCCユニットヘッダアイテム属性(V-PCC unit header item property)のシンタックス構造の一例である。
【1238】
Box Types: 'vunt'
【1239】
Property type: Descriptive item property
【1240】
Container: ItemPropertyContainerBox
【1241】
Mandatory (per item): Yes、for a V-PCC item of type 'vpci' and for a V-PCC unit item
【1242】
Quantity (per item): One
【1243】
実施例によれば、V-PCCユニットヘッダは、叙述アイテム属性として格納され、V-PCCアイテムおよびV-PCCユニットアイテムに関連する(V-PCC unit header is stored as descriptive item properties and is associated with the V-PCC items and the V-PCC unit items)。
【1244】
実施例によれば、必須は'vunt'アイテム属性のために1に設定される(essential is set to 1 for a ’vunt’ item property)。
【1245】
aligned(8) class VPCCUnitHeaderProperty () {
【1246】
extends ItemFullProperty('vunt'、version=0、0) {
【1247】
vpcc_unit_header();
【1248】
}
【1249】
以下、V-PCCビュー情報アイテム属性(V-PCC view formation item property)のシンタックス構造の一例である。
【1250】
Box Types: 'vpvi'
【1251】
Property type: Descriptive item property
【1252】
Container: ItemPropertyContainerBox
【1253】
Mandatory (per item): Yes、for a V-PCC item of type 'vpci' and for a V-PCC unit item
【1254】
Quantity (per item): One
【1255】
実施例によれば、V-PCCビュー情報は、叙述アイテム属性として格納され、V-PCCアイテムおよびV-PCCユニットアイテムに関連する(view information is stored as descriptive item properties and is associated with the V-PCC items and the V-PCC unit items)。
【1256】
aligned(8) class VPCCViewInfoproperty () {
【1257】
extends ItemFullProperty('vpvi'、version=0、0) {
【1258】
ViewInfoStruct();
【1259】
}
【1260】
以下、V-PCCレンダリングパラメータアイテム属性(V-PCC rendering parameter item property)のシンタックス構造の一例である。
【1261】
Box Types: 'vprp'
【1262】
Property type: Descriptive item property
【1263】
Container: ItemPropertyContainerBox
【1264】
Mandatory (per item): Yes、for a V-PCC item of type 'vpci' and for a V-PCC unit item
【1265】
Quantity (per item): One
【1266】
実施例によれば、V-PCCレンダリングパラメータは、叙述アイテム属性として格納され、V-PCCアイテムおよびV-PCCユニットアイテムに関連する(Rendering parameter is stored as descriptive item properties and is associated with the V-PCC items and the V-PCC unit items)。
【1267】
aligned(8) class VPCCRenderingParamsproperty () {
【1268】
extends ItemFullProperty('vprp'、version=0、0) {
【1269】
RenderingParamStruct();
【1270】
}
【1271】
以下、V-PCC客体レンダリング情報アイテム属性(V-PCC object rendering information item property)のシンタックス構造の一例を示す。
【1272】
Box Types: 'vpri'
【1273】
Property type: Descriptive item property
【1274】
Container: ItemPropertyContainerBox
【1275】
Mandatory (per item): Yes、for a V-PCC item of type 'vpci' and for a V-PCC unit item
【1276】
Quantity (per item): One
【1277】
実施例によれば、V-PCC客体レンダリング情報は、叙述アイテム属性として格納され、V-PCCアイテムおよびV-PCCユニットアイテムに関連する(Object rendering information is stored as descriptive item properties and is associated with the V-PCC items and the V-PCC unit items)。
【1278】
aligned(8) class VPCCObjRenderingInfoproperty () {
【1279】
extends ItemFullProperty('vpri'、version=0、0) {
【1280】
ObjectRenderingInfoStruct();
【1281】
}
【1282】
上述のように、実施例によるポイントクラウドデータ送信装置は、ユーザのビューポートに応じてV-PCCコンテンツの空間アクセス(spatial access)を支援するためのV-PCCコンテンツの3D領域情報と、これに関連するビデオまたはアトラスフレーム上の2D領域関連メタデータを提供することができる。
【1283】
実施例によるポイントクラウドデータ送信装置は、ポイントクラウドビットストリーム内のポイントクラウドの3D領域情報と、これに関連するビデオまたはアトラスフレーム上の2D領域関連情報シグナリングなどを処理することができる。
【1284】
実施例によるポイントクラウドデータ受信装置は、ファイル内ポイントクラウドの3D領域情報と、これに関連するビデオまたはアトラスフレーム上の2D領域関連情報の格納およびシグナリングなどに基づいて、ポイントクラウドコンテンツに効率的にアクセスすることができる。
【1285】
実施例によるポイントクラウドデータ受信装置は、ファイル内のイメージアイテムに関連するポイントクラウドの3D領域情報と、これに関連するビデオまたはアトラスフレーム上の2D領域関連情報に基づいて、ユーザ環境を考慮したポイントクラウドコンテンツを提供することができる。
【1286】
一方、実施例によれば、ビューポート情報は、6DOF(Six Degrees Of Freedom)ビューポート情報と同一または類似する意味で使用される。実施例によれば、ビューポート情報は、6DOFのみならず、3DOF+コンテンツに対しても適用可能である。
【1287】
実施例によるビューポート情報は、ビューポートに関する情報またはビューポート情報に関連するメタデータとも呼ぶ。実施例によるビューポートに関する情報は、ビューポート情報、推薦ビューポート情報、初期ビューイングオリエンテーション情報のうちの少なくとも1つを含むことができる。
【1288】
実施例によれば、ビューポートに関する情報(viewport related information)は、
図18のポイントクラウドデータ送信装置のメタデータ符号化部18005または
図21のV-PCCシステムのポイントクラウド前処理部20001および/またはビデオ/イメージ符号化部21007、21008で生成/符号化され、
図19のポイントクラウドデータ受信装置のメタデータ復号化部19002または
図22のV-PCCシステムのビデオ/イメージ復号部22001、22002および/またはポイントクラウド後処理部22003で取得/復号することができる。
【1289】
本明細書は、ポイントクラウドデータまたは3DOF+ビデオのビューポート情報に関連するメタデータを定義し、ファイル内の該当ビューポート情報に関連するメタデータを格納およびシグナリングする実施例を説明する。
【1290】
本明細書は、ファイルにおいて時間経過とともに変化するポイントクラウドデータまたは3DOF+ビデオのビューポート情報に関連するメタデータを格納する実施例を説明する。
【1291】
本明細書は、ポイントクラウドデータまたは3DOF+ビデオの推薦ビューポート情報に関連するメタデータを定義し、ファイル内の該当推薦ビューポート情報に関連するメタデータを格納およびシグナリングする実施例を説明する。
【1292】
本明細書は、ファイルにおいて時間経過とともに変化するポイントクラウドデータまたは3DOf+ビデオの推薦ビューポート情報に関連するメタデータを格納する実施例を説明する。
【1293】
本明細書は、ポイントクラウドデータまたは3DOF+ビデオの初期ビューイングオリエンテーション情報に関連するメタデータを定義し、ファイルにおいて該当初期ビューイングオリエンテーション情報に関連するメタデータを格納およびシグナリングする実施例を説明する。
【1294】
本明細書は、ファイルにおいて時間経過とともに変化するポイントクラウドデータまたは3DOf+ビデオの初期ビューイングオリエンテーション情報に関連するメタデータを格納する実施例を説明する。
【1295】
図59は、実施例による視錘台(viewing frustum)内のポイントクラウドデータの空間部分がビューポート上において実際にディスプレイされる一例を示す。
【1296】
実施例によれば、ポイントクラウドデーが実際に提供されるビューポートは、
図59のおうに、視錘台に基づいて定義される。
図59において太い線で示された部分が視錘台であり、該当視錘台内に存在するポイントクラウドデータなどが実際にレンダリングされてユーザに提供される。
【1297】
従って、6DOFビューポートは、以下のようなビューポート情報を用いて示すことができる。該当ビューポート情報に基づいて、視錘台(view frustum)(即ち、実際にレンダリングされディスプレイされるポイントクラウドデータのい全部または一部を含む3D空間上の領域)を類推することができ、該当視錘台(view frustum)が2Dフレームの形式でプロジェクションされるにつれてビュー(即ち、実際にディスプレイされる2Dイメージ/ビデオフレーム)を生成する。
【1298】
- 仮想カメラまたはユーザ/ユーザビュー(目)の3D空間上の位置(x、y、z)
【1299】
- 仮想カメラまたはユーザ/ユーザビュー(目)の上方を示す上ベクトル(
図59においてup矢印)
【1300】
- 仮想カメラまたはユーザ/ユーザビュー(目)の右側を示す右ベクトル(
図59においてup矢印)
【1301】
- 仮想カメラまたはユーザ/ユーザビュー(目)が見ている位置(x、y、z)(
図59においてFc)
【1302】
- 仮想カメラまたはユーザ/ユーザビュー(目)の位置から近接平面(near plane)までの距離
【1303】
- 仮想カメラまたはユーザ/ユーザビュー(目)の位置から遠平面(far plane)までの距離
【1304】
- 仮想カメラまたはユーザ/ユーザビュー(目)の水平FOV(horizontal field of view)
【1305】
- 仮想カメラまたはユーザ/ユーザビュー(目)の垂直FOV(vertical field of view)
【1306】
図60は、実施例による視錘台のトップビュー(top view)の一例を示す。即ち、
図60は、仮想カメラまたはユーザ/ユーザビュー(目)の水平FOVの一例を示す。
【1307】
図61は、実施例による視錘台のサイドビュー(side view)の一例を示す。即ち、
図61は、仮想カメラまたはユーザ/ユーザビュー(目)の垂直FOVの一例を示す。
【1308】
実施例によれば、ビューポート情報であるViewportInfoStructは、レンダリングされユーザに提供されるビューポートを生成するための詳細な情報を含んでもよい。実施例によれば、ビューポート情報(ViewportInfoStruct)は、6DOFビューポート情報を含んでもよい。例えば、ビューポート情報は、ビューポートを生成するための仮想カメラの3D上の位置情報、仮想カメラの垂直/水平FOV(field of view)、仮想カメラが見ている方向情報(direction vector)、仮想カメラの上方を示す上ベクトル情報、仮想カメラの右側を示す右ベクトルなどを含むことができる。また、ビューポート情報は、レンダリング可能な空間の近接平面/遠平面までの距離などを含むことができる。実施例によれば、仮想カメラは、ユーザの目、即ち、3D空間上においてユーザが見ている視覚/ビューと一致することがある。即ち、3D空間上においてユーザのビュー/目であってもよい。
【1309】
以下、ビューポート情報であるViewInfoStruct情報に含まれる情報の一例を示すシンタックスである。
【1310】
aligned(8) class 6DOFViewportInfoStruct(){
【1311】
unsigned int(16) viewport_pos_x;
【1312】
unsigned int(16) viewport_pos_y;
【1313】
unsigned int(16) viewport_pos_z;
【1314】
unsigned int(16) viewport_dir_x;
【1315】
unsigned int(16) viewport_dir_y;
【1316】
unsigned int(16) viewport_dir_z;
【1317】
unsigned int(16) viewport_up_x;
【1318】
unsigned int(16) viewport_up_y;
【1319】
unsigned int(16) viewport_up_z;
【1320】
unsigned int(16) viewport_right_x;
【1321】
unsigned int(16) viewport_right_y;
【1322】
unsigned int(16) viewport_right_z;
【1323】
unsigned int(8) viewport_vfov;
【1324】
unsigned int(8) viewport_hfov;
【1325】
unsigned int(16) viewport_near_distance;
【1326】
unsigned int(16) viewport_far_distance
【1327】
}
【1328】
viewport_pos_x、viewport_pos_y、viewport_pos_z は、ビューポート(例えば、実際にディスプレイされる2Dイメージ/ビデオフレーム)を生成可能な仮想カメラ (またはユーザまたはユーザビュー/目)の3D空間上のx、y、z座標値を示す。
【1329】
viewport_dir_x、viewport_dir_y、viewport_dir_zは、仮想カメラ(またはユーザまたはユーザビュー/目)が見ている方向を示す方向ベクトルを示すための3D空間上のx、y、z座標値を示す。
【1330】
viewport_up_x、viewport_up_y、viewport_up_zは、仮想カメラ(またはユーザまたはユーザビュー/目)の上方を示す上ベクトルを示すための3D空間上のx、y、z座標値を示す。
【1331】
viewport_right_x、viewport_right_y、viewport_right_zは、仮想カメラ(またはユーザまたはユーザビュー/目)の右側を示す右ベクトルを示すための3D空間上のx、y、z座標値を示す。
【1332】
方向ベクトル、上ベクトル、右ベクトルに基づいて、仮想カメラ(またはユーザ、ユーザビュー/目)の座標系(coordiante system)を生成することができる。即ち、右ベクトルがx軸、上ベクトルがy軸、方向ベクトルがz軸であってもよい。または、追加のシグナリングによって、仮想カメラのx、y、z軸をシグナリングすることができる。
【1333】
Viewport_hfovは、
図60のように、ビューポートを生成可能な仮想カメラ(またはユーザ、ユーザビュー/目)の水平FOV(horizontal field of view)情報を示す。
【1334】
Viewpor_vfovは、
図61のように、ビューポートを生成可能な仮想カメラ(またはユーザ、ユーザビュー/目)の垂直FOV(vertical field of view)情報を示す。
【1335】
実施例による6DOFビューポート情報(viewport information structure)は、以下のような情報を含んでもよい。
【1336】
aligned(8) class 6DOFViewportInfoStruct (){
【1337】
unsigned int(1) viewport_right_vector_flag;
【1338】
unsigned int(1) dimension_flag;
【1339】
unsigned int(16) viewport_pos_x;
【1340】
unsigned int(16) viewport_pos_y;
【1341】
unsigned int(16) viewport_pos_z;
【1342】
unsigned int(16) viewport_dir_x;
【1343】
unsigned int(16) viewport_dir_y;
【1344】
unsigned int(16) viewport_dir_z;
【1345】
unsigned int(16) viewport_up_x;
【1346】
unsigned int(16) viewport_up_y;
【1347】
unsigned int(16) viewport_up_z;
【1348】
if(viewport_right_vector_flag){
【1349】
unsigned int(16) viewport_right_x;
【1350】
unsigned int(16) viewport_right_y;
【1351】
unsigned int(16) viewport_right_z;
【1352】
}
【1353】
if(dimension_flag){
【1354】
unsigned int(8) viewport_vfov;
【1355】
unsigned int(8) viewport_hfov;
【1356】
unsigned int(16) viewport_near_distance;
【1357】
unsigned int(16) viewport_far_distance
【1358】
}
【1359】
}
【1360】
Viewport_right_vector_flagは、ビューポート情報がビューポートの右側を示す右ベクトル情報を含むか否かを示すフラグであってもよい。
【1361】
Dimension_flagは、ビューポート情報がビューポートの垂直FOV、水平FOV、近接平面、遠平面に関する情報を含むか否かを示すフラグであってもよい。
【1362】
ViewportInfoStruct()情報は、ポイントクラウドビットストリーム上にSEIなどに含まれて送信できる。
【1363】
以下、6DOFビューポート情報ボックス(6DOF viewport information box)について説明する。
【1364】
6DOFビューポート情報ボックスは、ポイントクラウドデータ(V-PCCを含んでもよい)のビューポート情報または3DOF+ビデオのコンテンツのビューポート情報を含んでもよい。
【1365】
aligned(8) class 6DOFViewportInfoBox extends FullBox('vpvi',0,0) {
【1366】
6DOFViewportInfoStruct();
【1367】
}
【1368】
以下、静的6DOFビューポート情報(Static 6DOF viewport information)について説明する。
【1369】
実施例によれば、ビューポート情報がポイントクラウドデータまたは3DOF+ビデオシーケンス内で変化しない場合、V-PCCトラックのサンプルエントリーまたはV-PCCエレメンタリストリームトラックのサンプルエントリーに、以下のように6DOFViewportInfoBoxが含まれてもよい。
【1370】
aligned(8) class VPCCSampleEntry() extends VolumetricVisualSampleEntry ('vpc1') {
【1371】
VPCCConfigurationBox config;
【1372】
VPCCUnitHeaderBox unit_header;
【1373】
6DOFViewportInfoBox 6dof_viewport;
【1374】
}
【1375】
実施例による6DOFViewportInfoBoxは、トラック内サンプルに格納されたアトラスフレームと関連するポイントクラウドデータまたは3DOf+ビデオがレンダリングされて提供されるビューポートを生成するための詳細な情報を含んでもよい。
【1376】
aligned(8) class VPCCElementaryStreamSampleEntry() extends VolumetricVisualSampleEntry ('vpe1') {
【1377】
VPCCConfigurationBox config;
【1378】
6DOFViewportInfoBox 6dof_viewport;
【1379】
}
【1380】
実施例による6DOFViewportInfoBoxは、トラック内サブサンプルに格納されたアトラスフレームおよび/またはビデオフレームと関連するポイントクラウドデータまたは3DOF+ビデオがレンダリングされて提供されるビューポートを生成するための詳細な情報を含んでもよい。
【1381】
以下、6DOFビューポート情報サンプルグループ化(6DOF viewport information sample grouping)について説明する。
【1382】
実施例によれば、サンプルグループ化のための'vpvs'grouping_typeは、このサンプルグループに伝送されるビューポート情報へのV-PCCトラック内サンプルの割り当てを示す。grouping_typeが'vpvs'であるSampleToGroupBoxが存在する場合は、同じグループ化タイプを有する付随する(accompanying)SampleGroupDescriptionBoxが存在し、このサンプルのグループのIDを含む。
【1383】
aligned(8) class 6DOFViewportInfoSampleGroupDescriptionEntry() extends SampleGroupDescriptionEntry('vpvs') {
【1384】
6DOFViewportInfoStruct();
【1385】
}
【1386】
以下、動的6DOFビューポート情報(Dynamic 6DOF viewport information)について説明する。
【1387】
実施例によれば、ポイントクラウドデータまたは3DOF+ビデオシーケンスの時間経過とともに変化するビューポート情報をシグナリングする。
【1388】
V-PCCトラックがサンプルエントリータイプ'dyvp'を有する関連タイムド-メタデータトラックを有する場合は、ポイントクラウドストリームのために定義されたビューポート情報は、動的として考慮されたV-PCCトラックによって伝送される。即ち、ビューポート情報は時間経過とともに動的に変化することができる。
【1389】
関連タイムド-メタデータトラックは、アトラスストリームを伝送するV-PCCに対する'cdsc'トラックレファレンスを含む。
【1390】
V-PCCエレメンタリストリームトラックがサンプルエントリータイプ'dyvp'を有する関連タイムド-メタデータトラックを有する場合は、ポイントクラウドストリームのために定義されたビューポート情報は、動的として考慮されたV-PCCエレメンタリストリームトラックによって伝送される。即ち、ビューポート情報は時間経過とともに動的に変化することができる。
【1391】
関連タイムド-メタデータトラックは、V-PCCエレメンタリストリームトラックに対する'cdsc'トラックレファレンスを含む。
【1392】
aligned(8) class DynamicViewportInfoSampleEntry extends MetaDataSampleEntry('dyvp') {
【1393】
6DOFViewportInfoBox init_6dof_viewport;
【1394】
}
【1395】
init_6dof_viewportは、ポイントクラウドデータまたは3DOF+ビデオの初期ビューポートを生成するビューポート情報(viewport information())を含んでもよい。
【1396】
実施例によれば、サンプルエントリータイプ'dyvp'のサンプルシンタックスは、以下のように示す。
【1397】
aligned(8) DynamicViewInfoSample() {
【1398】
6DOFViewportInfoBox 6dof_viewport;
【1399】
}
【1400】
各々のサンプルは、時間経過とともに変化するポイントクラウドデータまたは3DOF+ビデオのビューポート情報、即ち、viewport information()を含んでもよい。
【1401】
以下、6DOF推薦ビューポート情報(6DOF recommended viewport information)のシグナリングについて説明する。
【1402】
実施例による6DOF推薦ビューポート情報ボックスは、ポイントクラウドデータまたは3DOF+ビデオのコンテンツの制作者の意図またはビューイング統計などから推薦されるビューポート情報(6DOF recommended viewport information)を含んでもよい。
【1403】
aligned(8) class 6DOFRecommendedViewportInfoBox extends FullBox('vpvi',0,0) {
【1404】
6DOFViewportInfoStruct();
【1405】
}
【1406】
以下、静的6DOF推薦ビューポート情報について説明する。
【1407】
実施例による推薦ビューポート情報がポイントクラウドデータまたは3DOF+ビデオシーケンス内で変化しない場合、V-PCCトラックのサンプルエントリーまたはV-PCCエレメンタリストリームトラックのサンプルエントリーに6DOFRecommendedViewportInfoBoxが含まれてもよい。
【1408】
aligned(8) class VPCCSampleEntry() extends VolumetricVisualSampleEntry ('vpc1') {
【1409】
VPCCConfigurationBox config;
【1410】
VPCCUnitHeaderBox unit_header;
【1411】
6DOFRecommendedViewportInfoBox 6dof_rec_viewport;
【1412】
}
【1413】
実施例による6DOFRecommendedViewportInfoBoxは、トラック内サンプルに格納されたアトラスフレームと関連するポイントクラウドデータまたは3DOF+ビデオがレンダリングされて提供される推薦ビューポート(recommended viewport)を生成するための詳細な情報を含んでもよい。
【1414】
aligned(8) class VPCCElementaryStreamSampleEntry() extends VolumetricVisualSampleEntry ('vpe1') {
【1415】
VPCCConfigurationBox config;
【1416】
6DOFRecommendedViewportInfoBox 6dof_rec_viewport;
【1417】
}
【1418】
実施例による6DOFRecommendedViewportInfoBoxは、トラック内サブサンプルに格納されたアトラスフレームおよび/またはビデオフレームと関連するポイントクラウドデータまたは3DOF+ビデオがレンダリングされて提供される推薦ビューポート(recommended viewport)を生成するための詳細な情報を含んでもよい。
【1419】
以下、6DOFビューポート情報サンプルグループ化(6DOF viewport information sample grouping)について説明する。
【1420】
実施例によれば、サンプルグループ化のための'vpvs' grouping_typeは、サンプルグループに伝送される推薦ビューポート情報へのV-PCCトラック内サンプルの割り当てを示す。grouping_typeが'vprv'であるSampleToGroupBoxが存在する場合は、同じグループ化タイプを有する不随SampleGroupDescriptionBoxが存在し、このサンプルのグループのIDを含んでもよい。
【1421】
aligned(8) class 6DOFRecommendedViewportInfoSampleGroupDescriptionEntry()
【1422】
extends SampleGroupDescriptionEntry('vprv') {
【1423】
6DOFViewportInfoStruct();
【1424】
}
【1425】
以下、動的6DOF推薦ビューポート情報(Dynamic 6DOF recommended viewport information)について説明する。
【1426】
実施例によれば、ポイントクラウドデータまたは3DOF+ビデオシーケンスの時間経過とともに変化する推薦ビューポート情報(recommended viewport information)をシグナリングする。
【1427】
V-PCCトラックがサンプルエントリータイプ'dyrp'を有する関連タイムド-メタデータトラックを有する場合は、ポイントクラウドストリームのために定義された推薦ビューポート情報(recommended viewport information)は、動的として考慮されたV-PCCトラックによって伝送される。即ち、推薦ビューポート情報は、時間経過とともに変化することができる。
【1428】
関連タイムド-メタデータトラックは、アトラスストリームを伝送するV-PCCトラックに対する'cdsc'トラックレファレンスを含む。
【1429】
V-PCCエレメンタリストリームトラックがサンプルエントリータイプ'dyrv'を有する関連タイムド-メタデータトラックを有する場合は、ポイントクラウドストリームのために定義された推薦ビューポート情報(recommended viewport information)は、動的として考慮されたV-PCCエレメンタリストリームトラックによって伝送される。即ち、推薦ビューポート情報は、時間経過とともに変化することができる。
【1430】
関連タイムド-メタデータトラックは、V-PCCエレメンタリストリームトラックに対する'cdsc'トラックレファレンスを含む。
【1431】
aligned(8) class DynamicRecommendedViewportInfoSampleEntry extends MetaDataSampleEntry('dyrv') {
【1432】
6DOFRecommendedViewportInfoBox init_6dof_rec_viewport;
【1433】
}
【1434】
init_6dof_rec_viewportは、ポイントクラウドデータまたは3DOF+ビデオの初期推薦ビューポートを生成するrecommended viewport information()を含んでもよい。
【1435】
このサンプルエントリータイプ'dyrv'のサンプルシンタックスは、以下のように示す。
【1436】
aligned(8) DynamicViewInfoSample() {
【1437】
6DOFRecommendedViewportInfoBox 6dof_rec_viewport;
【1438】
}
【1439】
各々のサンプルは、時間経過とともに変化するポイントクラウドデータまたは3DOF+ビデオの推薦ビューポート情報、即ち、recommended viewport information ()を含んでもよい。
【1440】
以下、6DOF初期ビューイングオリエンテーションのシグナリングについて説明する。
【1441】
実施例によれば、6DOF初期ビューイングオリエンテーション情報ボックスは、ポイントクラウドデータまたは3DOF+ビデオのコンテンツの初期ビューイングオリエンテーション情報を含んでもよい。
【1442】
Aligned(8) class 6DOFInitialViewingOrientationStruct(){
【1443】
6DOFViewportInfoStruct();
【1444】
}
【1445】
または、6DOF初期ビューイングオリエンテーション情報ボックスに含まれる情報は、以下のようである。
【1446】
Aligned(8) class 6DOFInitialViewingOrientationStruct(){
【1447】
unsigned int(16) viewport_pos_x;
【1448】
unsigned int(16) viewport_pos_y;
【1449】
unsigned int(16) viewport_pos_z;
【1450】
unsigned int(16) viewport_dir_x;
【1451】
unsigned int(16) viewport_dir_y;
【1452】
unsigned int(16) viewport_dir_z;
【1453】
unsigned int(16) viewport_up_x;
【1454】
unsigned int(16) viewport_up_y;
【1455】
unsigned int(16) viewport_up_z;
【1456】
unsigned int(16) viewport_right_x;
【1457】
unsigned int(16) viewport_right_y;
【1458】
unsigned int(16) viewport_right_z;
【1459】
}
【1460】
viewport_pos_x、viewport_pos_y、viewport_pos_zは、ビューポート(例えば、実際にディスプレイされる2Dイメージ/ビデオフレーム)を生成可能な仮想カメラ(またはユーザまたはユーザビュー/目)の3D空間上のx、y、z座標値を示す。
【1461】
viewport_dir_x、viewport_dir_y、viewport_dir_zは、仮想カメラ(またはユーザまたはユーザビュー/目)が見ている方向を示す方向ベクトルを示すための3D空間上のx、y、z座標値を示す。
【1462】
viewport_up_x、viewport_up_y、viewport_up_zは、仮想カメラ(またはユーザまたはユーザビュー/目)の上方を示す上ベクトルを示すための3D空間上のx、y、z座標値を示す。
【1463】
viewport_right_x、viewport_right_y、viewport_right_zは、仮想カメラ(またはユーザまたはユーザビュー/目)の右側を示す右ベクトルを示すための3D空間上のx、y、z座標値を示す。
【1464】
この方向ベクトル、上ベクトル、右ベクトルに基づいて、仮想カメラ(またはユーザ、ユーザビュー/目)の座標系を生成することができる。即ち、右ベクトルがx軸、上ベクトルがy軸、方向ベクトルがz軸であってもよい。または、追加のシグナリングによって仮想カメラのx、y、z軸をシグナリングしてもよい。
【1465】
aligned(8) class 6DOFInitialViewingInfoBox extends FullBox('vpiv',0,0) {
【1466】
6DOFInitialViewingOrientationStruct ();
【1467】
}
【1468】
以下、静的6DOF初期ビューイングオリエンテーション情報(Static 6DOF initial viewing orientation information)について説明する。
【1469】
実施例によれば、初期ビューイングオリエンテーション情報がポイントクラウドデータまたは3DOF+ビデオシーケンス内で変化しない場合、V-PCCトラックのサンプルエントリーまたはV-PCCエレメンタリストリームトラックのサンプルエントリーに6DOFInitialViewingInfoBoxが含まれてもよい。
【1470】
aligned(8) class VPCCSampleEntry() extends VolumetricVisualSampleEntry ('vpc1') {
【1471】
VPCCConfigurationBox config;
【1472】
VPCCUnitHeaderBox unit_header;
【1473】
6DOFInitialViewingInfoBox 6dof_init_orientation;
【1474】
}
【1475】
実施例によれば、6DOFInitialViewingInfoBoxは、トラック内サンプルに格納されたアトラスフレームと連関するポイントクラウドデータまたは3DOF+ビデオがレンダリングされて提供される初期ビューイングオリエンテーションを生成するための詳細な情報を含んでもよい。
【1476】
aligned(8) class VPCCElementaryStreamSampleEntry() extends VolumetricVisualSampleEntry ('vpe1') {
【1477】
VPCCConfigurationBox config;
【1478】
6DOFInitialViewingInfoBox 6dof_intial_orientaton;
【1479】
}
【1480】
実施例によれば、6DOFInitialViewingInfoBoxは、トラック内サブサンプルに格納されたアトラスフレームおよび/またはビデオフレームと連関するポイントクラウドデータまたは3DOF+ビデオがレンダリングされて提供される初期ビューイングオリエンテーションを生成するための詳細な情報を含んでもよい。
【1481】
以下、6DOFビューポート情報サンプルグループ化(6DOF viewport information sample grouping)について説明する。
【1482】
実施例によれば、サンプルグループ化のための'vpvs'grouping_typeは、サンプルグループに伝送される初期ビューイングオリエンテーション情報へのV-PCCトラック内サンプルの割り当てを示す。grouping_typeが'vprv'であるSampleToGroupBoxが存在する場合は、同じグループ化タイプを有する不随するSampleGroupDescriptionBoxが存在し、このサンプルのグループのIDを含んでもよい。
【1483】
aligned(8) class 6DOFInitialViewingInfoSampleGroupDescriptionEntry() extends SampleGroupDescriptionEntry('vprv') {
【1484】
6DOFViewportInfoStruct();
【1485】
}
【1486】
以下、動的6DOF初期ビューイングオリエンテーション情報(6DOF initial viewing orientation information)について説明する。
【1487】
実施例によれば、ポイントクラウドデータまたは3DOF+ビデオシーケンスの時間経過とともに変化する初期ビューイングオリエンテーション情報をシグナリングする。
【1488】
V-PCCトラックがサンプルエントリータイプ'dyiv'を有する関連タイムド-メタデータトラックを有する場合は、ポイントクラウドストリームのために定義された初期ビューイングオリエンテーション情報は、動的として考慮されたV-PCCトラックによって伝送される。即ち、初期ビューイングオリエンテーション情報は、時間経過とともに動的に変化することができる。
【1489】
関連タイムド-メタデータトラックは、アトラスストリームを伝送するV-PCCトラックに対する'cdsc'トラックレファレンスを含む。
【1490】
V-PCCエレメンタリストリームトラックがサンプルエントリータイプ'dyiv'を有する関連タイムド-メタデータトラックを有する場合は、ポイントクラウドストリームのために定義された初期ビューイングオリエンテーション情報は、動的として考慮されたV-PCCエレメンタリストリームトラックによって伝送される。即ち、初期ビューイングオリエンテーション情報は、時間経過とともに動的に変化することができる。
【1491】
関連タイムド-メタデータトラックは、V-PCCエレメンタリストリームトラックに対する'cdsc'トラックレファレンスを含む。
【1492】
aligned(8) class DynamicInitialViewingInfoSampleEntry extends MetaDataSampleEntry('dyiv') {
【1493】
6DOFInitialViewingInfoBox init_6dof_orientation;
【1494】
}
【1495】
init_6dof_orientationは、ポイントクラウドデータまたは3DOF+ビデオのInitial viewing orienation information()を含んでもよい。
【1496】
実施例によれば、このサンプルエントリータイプ'dyvi'のサンプルシンタックスは、以下のようである(The sample syntax of this sample entry type ’dyrv’ is specified as follows):
【1497】
aligned(8) DynamicViewInfoSample() {
【1498】
6DOFInitialViewingInfoBox 6dof_viewing_orienation;
【1499】
}
【1500】
各々のサンプルは、時間経過とともに変化するポイントクラウドデータまたは3DOF+ビデオのビューイングオリエンテーション情報、即ち、viewing orientation information ()を含んでもよい。
【1501】
以下、6DOFビューポート情報アイテム属性(6DOF viewport information item property)について説明する。
【1502】
実施例によれば、ポイントクラウドイメージアイテムまたは3DO+ビデオイメージのビューポートに関する情報(6DOF viewport information)を以下のシグナリングによって送信できる。
【1503】
Box Types: 'vpvi'
【1504】
Property type: Descriptive item property
【1505】
Container: ItemPropertyContainerBox
【1506】
Mandatory (per item): Yes、for a V-PCC item of type 'vpci' and for a V-PCC unit item
【1507】
Quantity (per item): One
【1508】
実施例によれば、ビューポート情報は、叙述アイテム属性として格納され、V-PCCアイテムおよびV-PCCユニットアイテムと関連する。
【1509】
aligned(8) class 6DOFViewPortInfoproperty () {
【1510】
extends ItemFullProperty('vpvi'、version=0、0) {
【1511】
ViewportInfoStruct();
【1512】
}
【1513】
以下、6DOF推薦ビューポート情報アイテム属性(6DOF recommended viewport information item property)について説明する。
【1514】
実施例によれば、ポイントクラウドイメージアイテムまたは3DO+ビデオイメージの推薦ビューポートに関する情報(6DOF recommended viewport information)を以下のシグナリングによって送信できる。
【1515】
Box Types: 'vprv'
【1516】
Property type: Descriptive item property
【1517】
Container: ItemPropertyContainerBox
【1518】
Mandatory (per item): Yes、for a V-PCC item of type 'vpci' and for a V-PCC unit item
【1519】
Quantity (per item): One
【1520】
実施例によれば、推薦ビューポート情報(recommended viewport information)は、叙述アイテム属性として格納され、V-PCCアイテムおよびV-PCCユニットアイテムと関連する。
【1521】
aligned(8) class 6DOFRecommendedViewPortInfoproperty () {
【1522】
extends ItemFullProperty('vprv'、version=0、0) {
【1523】
ViewportInfoStruct();
【1524】
}
【1525】
以下、6DOF初期ビューイングオリエンテーション情報アイテム属性(6DOF initial viewing orientation information item property)について説明する。
【1526】
実施例によれば、ポイントクラウドイメージアイテムまたは3DO+ビデオイメージの初期ビューイングオリエンテーションに関する情報(6DOF initial viewing orientation information)を以下のシグナリングによって送信できる。
【1527】
Box Types: 'vpiv'
【1528】
Property type: Descriptive item property
【1529】
Container: ItemPropertyContainerBox
【1530】
Mandatory (per item): Yes、for a V-PCC item of type 'vpci' and for a V-PCC unit item
【1531】
Quantity (per item): One
【1532】
実施例によれば、初期ビューイングオリエンテーション情報は、叙述アイテムとして格納され、V-PCCアイテムおよびV-PCCユニットアイテムと関連する。
【1533】
aligned(8) class 6DOFRecommendedViewPortInfoproperty () {
【1534】
extends ItemFullProperty('vpiv'、version=0、0) {
【1535】
6DOFInitialViewingOrientationStruct ();
【1536】
上述したメタデータ(またはシグナリング情報)などは、ポイントクラウドデータ送信方法/装置のPCCプロセスによって生成(または符号化、カプセル化など)され、実施例によるポイントクラウドデータ受信方法/装置のプロセスに用いられ、ユーザに最適化したPCC コンテンツを提供することができる。
【1537】
図62は、実施例によるポイントクラウドデータの送信方法の一例を示す。
【1538】
実施例によるポイントクラウドデータ送信方法は、ポイントクラウドデータを符号化するステップ71001、および/またはポイントクラウドデータとシグナリング情報を含むビットストリームを送信するステップ71002を含んでもよい。
【1539】
実施例によるステップ71001は、ポイントクラウドデータを符号化することができる。実施例によるステップ71001は、受信装置においてフィードバックされるオリエンテーション情報および/または上述したビューポートに関する情報を用いて、特定の領域、即ちオリエンテーション情報および/またはビューポートに関する情報が示す領域のメディアデータのみを符号化することができる。実施例によるビューポートに関する情報は、ビューポート情報、推薦ビューポート情報、初期ビューイングオリエンテーション(即ち、視点)情報のうちの少なくとも1つを含むことができる。ビューポートに関する情報に含まれる詳細な情報の説明は、十分に上述したため、ここでは省略する。例えば、
図1の送信装置10000および/またはポイントクラウドビデオエンコーダ10002が符号化を行うことができる。実施例によれば、
図3のようなポイントクラウドデータが符号化される。ポイントクラウドデータは、
図4のV-PCC符号化プロセスによって符号化できる。
図5ないし
図14のような方式に基づいて、ポイントクラウドデータが符号化できる。また、
図15のエンコーダによってポイントクラウドデータが符号化できる。実施例によるステップ71002は、ポイントクラウドデータまたはポイントクラウドデータとシグナリング情報を含むビットストリームを送信することができる。
図1の送信装置10000および送信機10004によってポイントクラウドデータを含むビットストリームが送信できる。シグナリング情報は、メタ データとも呼び、上述したシンタックス(即ち、ビューポート に関する情報を含む)を含むことができる。また、ファイル/セグメントカプセル化部10003によってポイントクラウドデータ(またはポイントクラウドデータを含むビットストリーム)がファイル/セグメントの形式で送信できる。
【1540】
実施例によるステップ71002は、オリエンテーション情報および/またはビューポートに関する情報に基づいて、すべてのポイントクラウドデータをファイル/セグメントにカプセル化するか、またはオリエンテーション情報および/またはビューポートに関する情報が示すポイントクラウドデータをファイル/セグメントにカプセル化することができる。実施例によるビューポートに関する情報は、ビューポート情報、推薦ビューポート情報、初期ビューイングオリエンテーション情報のうちの少なくとも1つを含むことができる。ビューポートに関する情報に含まれる詳細な情報の説明は、十分に上述したため、ここでは省略する。ポイントクラウドデータの送信プロセスは、
図18の送信装置によって行われてもよい。また、
図20ないし
図22のV-PCCシステムによってポイントクラウドデータが送信できる。さらに、
図23のネットワークを介して様々なデバイスと結合して、ポイントクラウドデータがユーザにサービスできる。
【1541】
実施例によるポイントクラウドデータ送信方法/装置は、上述した実施例の全部/一部と組み合わされて、ポイントクラウドコンテンツを提供することができる。
【1542】
図63は、実施例によるポイントクラウドデータの受信方法の一例を示す。
【1543】
実施例によるポイントクラウドデータ受信方法は、ポイントクラウドデータとシグナリング情報を含むビットストリームを受信するステップ81001、ポイントクラウドデータを復号するステップ81002、および/またはポイントクラウドデータをレンダリングするステップ81003を含んでもよい。
【1544】
実施例によるステップ81001は、ポイントクラウドデータを含むビットストリームを受信することができる。ポイントクラウドデータ受信方法は、ポイントクラウドデータを含むビットストリームがファイル/セグメントの形式で受信できる。実施例によれば、ステップ81001は、オリエンテーション情報および/またはビューポートに関する情報に基づいて、すべてのポイントクラウドデータを含むファイルをデカプセル化するか、またはオリエンテーション情報および/またはビューポートに関する情報が示すポイントクラウドデータを含むファイルをデカプセル化することができる。実施例によるビューポートに関する情報は、ビューポート情報、推薦ビューポート情報、初期ビューイングオリエンテーション情報のうちの少なくとも1つを含むことができる。ビューポートに関する情報に含まれる詳細な情報の説明は、十分に上述したため、ここでは省略する。
図1の受信装置10005および受信機10006がビットストリーム(またはビットストリームを含むファイル/セグメント)を受信することができる。
図1のファイル/セグメントデカプセル化部10007がファイル/セグメントの形式のポイントクラウドデータをデカプセル化することができる。受信するプロセスからレンダリングするプロセスまで、
図19の受信プロセスを実施例による受信装置が行うことを上述した。
【1545】
実施例によるステップ81002は、ポイントクラウドデータを復号する。実施例によるステップ81002は、オリエンテーション情報および/またはユーザが現在見ている領域を示すビューポートに関する情報を用いて、特定の領域、即ちオリエンテーション情報および/またはビューポートに関する情報が示す領域のメディアデータのみを置く率的にファイルから抽出または復号することができる。実施例によるビューポートに関する情報は、ビューポート情報、推薦ビューポート情報、初期ビューイングオリエンテーション情報のうちの少なくとも1つを含むことができる。ビューポートに関する情報に含まれる詳細な情報の説明は、十分に上述したため、ここでは省略する。
図1のポイントクラウドビデオデコーダ10008がポイントクラウドデータを復号することができる。
図16のようなプロセスによってデコーダがV-PCC復号プロセスを行うことができる。ポイントクラウドデータを含むビットストリームは、
図17のように、デコーダによって復号できる。
図20ないし
図22のように、ポイントクラウドデータを処理するシステムによってポイントクラウドデータが処理できる。また、
図23のように、ネットワークを介して接続する様々な装置/環境によって、ポイントクラウドデータがユーザに提供できる。
【1546】
実施例によるステップ81003は、ポイントクラウドデータをレンダリング/ディスプレイする。
【1547】
実施例によるステップ81003において、ポイントクラウドデータのレンダリングは、
図1のレンダラー10009、
図19のポイントクラウドレンダラー19007、
図20のレンダラー20009、または
図22のポイントクラウドレンダリング部22004で行われる。実施例によれば、メタデータに基づいて3D空間上にポイントクラウドデータをレンダリングすることができる。ユーザは、VR/ARディスプレイまたは一般のディスプレイなどを介してレンダリングされた結果の全部または一部の領域をみることができる。特に、ポイントクラウドデータは、ユーザのビューポートなどによってレンダリングできる。
【1548】
実施例によるビューポートに関する情報は、現在、ユーザが3D空間上で装置またはHMDなどを介して見ている領域に関する情報であってもよい。これにより、ゲイズ分析(Gaze Analysis)が行われ、ユーザがどんな方式でポイントクラウドビデオを消費するか、ポイントクラウドビデオのどの領域をどのくらい凝視しているかなどを確認することもできる。ゲイズ分析は、受信側で行われて送信側へフィードバックチャンネルを介して送信できる。VR/AR/MRのようなディスプレイ装置は、オリエンテーション情報、ユーザの値の位置/方向、装置が支援する垂直(vertical)または水平(horizontal)FOVなどに基づいて、ビューポート領域を抽出することができる。オリエンテーションまたはビューポートに関する情報は、受信装置において抽出または算出されるできる。受信装置において分析されたオリエンテーションまたはビューポートに関する情報は、送信装置へフィードバックチャンネルを介して送信できる。
【1549】
実施例によるビューポートに関する情報は、ビューポート情報、推薦ビューポート情報、初期ビューイングオリエンテーション情報のうちの少なくとも1つを含むことができる。ビューポートに関する情報に含まれる詳細な情報の説明は、十分に上述したため、ここでは省略する。
【1550】
実施例によるポイントクラウドデータ受信方法/装置は、上述した実施例の全部/一部と結合してポイントクラウドコンテンツを提供することができる。
【1551】
上述した各部、モジュールまたはユニットは、メモリ(または格納ユニット)に格納された連続した実行プロセスを行うソフトウェア、プロセッサ、ハードウェア部であってもよい。上述の実施例に示された各ステップは、プロセッサ、ソフトウェア、ハードウェア部によって行われることができる。上述した実施例に示された各モジュール/ブロック/ユニットは、プロセッサ、ソフトウェア、ハードウェアとして動作することができる。また、実施例が示す方法は、コードとして行われることができる。このコードは、プロセッサが読み取られる記憶媒体に書き込まれ、よって装置(apparatus)が提供するプロセッサによって読み取られる。
【1552】
また、この明細書において、ある部分がある構成要素を“含む”ということは、特に反対記載のない限り他の構成要素を除外するのではなく、他の構成要素をさらに含むことを意味する。また、明細書に記載の“…部”などの用語は、少なくとも1つの機能や動作を処理する単位を意味し、これはハードウェア、ソフトウェアまたはハードウェアおよびソフトウェアの組み合わせによって具現することができる。
【1553】
説明の便宜のために、各図を区分して説明したが、各図に述べられている実施例を併合して新しい実施例を具現するように設計することも可能である。また通常の技術者の必要によって、以前に説明した実施例を実行するためのプログラムが記録されているコンピューターで読み取り可能な記録媒体を設計することも実施例の権利範囲に属する。
【1554】
実施例による装置及び方法は、上述したように、説明された実施例の構成と方法が限定して適用されることではなく、実施例は様々に変形可能に各実施例の全部又は一部が選択的に組み合わせられて構成されることもできる。
【1555】
実施例の好ましい実施例について示して説明したが、実施例は上述した特定の実施例に限定されず、請求の範囲で請求する実施例の要旨から離脱せず、当該発明が属する技術分野において通常の知識を有する者により様々な変形実施が可能であり、かかる変形実施は実施例の技術的思想や見込みから個々に理解されてはいけない。
【1556】
実施例による装置の様々な構成要素は、ハードウェア、ソフトウェア、ファームウェア又はそれらの組み合わせにより構成される。実施例の様々な構成要素は一つのチップ、例えば、一つのハードウェア回路で具現される。実施例において、実施例による構成要素はそれぞれ個々のチップで具現される。実施例において、実施例による装置の構成要素のいずれかは一つ又はそれ以上のプログラムを実行できる一つ又はそれ以上のプロセッサで構成され、一つ又はそれ以上のプログラムは実施例による動作/方法のうちのいずれか一つ又はそれ以上の動作/方法を行わせるか、実行させるための指示を含む。実施例による装置の方法/動作を行うための実行可能な指示は、一つ又はそれ以上のプロセッサにより実行されるために構成された一時的ではないCRM又は他のコンピュータープログラム製品に格納されるか、又は一つ又はそれ以上のプロセッサにより実行されるために構成された一時的なCRM又は他のコンピュータープログラム製品に格納されることができる。また実施例によるメモリは、揮発性メモリ(例えば、RAMなど)だけではなく、非揮発性メモリ、フラッシュメモリ、PROMなどを全部含む概念として使用される。また、インターネットによる送信などのような伝送波の形式で具現されることも含む。またプロセッサが読み取られる記録媒体は、ネットワークで連結されたコンピューターシステムに分散されて、分散方式によりプロセッサが読み取られるコードが格納されて実行されることができる。
【1557】
この明細書において、“/”と“、”は“及び/又は”に解釈される。例えば、“A/B”は“A及び/又はB”に解釈され、“A、B”は“A及び/又はB”に解釈される。さらに、“A/B/C”は“A、B及び/又はCのうちのいずれか”を意味する。また、“A、B、C”も“A、B及び/又はCのうちのいずれか”を意味する。
【1558】
さらに、この文書において、“又は”は“及び/又は”に解釈される。例えば、“A又はB”は、1)“A”のみを意味するか、2)“B”のみを意味するか、又は3)“A及びB”を意味する。言い換えれば、この明細書において“又は”は“さらに(additionally)又は代わりに(alternatively)”を意味する。
【1559】
実施例による装置の様々な構成要素は、ハードウェア、ソフトウェア、ファームウェア又はそれらの組み合わせにより構成される。実施例の様々な構成要素はハードウェア回路のようなシングルチップ上で行われてもよい。実施例により、実施例は選択的に個別のチップ上で行われてもよい。実施例により、実施例の要素のうちの少なくとも1つは、実施例による動作を行うインストラクションを含む1つまたは1つ以上のプロセッサ内で行われることができる。
【1560】
第1、第2などの用語は実施例の様々な構成要素を説明するために使用される。しかし、実施例による様々な構成要素は上記用語により解釈が制限されてはいけない。かかる用語は一つの構成要素を他の構成要素と区別するために使用されることに過ぎない。例えば、第1ユーザ入力信号は第2ユーザ入力信号と称することができる。同様に、第2ユーザ入力信号は第1ユーザ入力信号と称することができる。かかる用語の使用は様々な実施例の範囲から離脱していない。第1ユーザ入力信号及び第2ユーザ入力信号はいずれもユーザ入力信号であるが、文脈上、明確に示していない限り、同一のユーザ入力信号を意味してはいない。
【1561】
実施例を説明のために使用された用語は、特定の実施例を説明するために使用されており、実施例を制限されるものではない。実施例の説明及び請求範囲で使用したように、文脈上明確に称していない限り、単数は複数を含む。「及び/又は」表現は用語間の全ての可能な結合を含む意味で使用される。「含む」は特徴、数、段階、要素及び/又はコンポーネントが存在することを説明し、さらなる特徴、数、段階、要素及び/又はコンポーネントを含まないことを意味しない。
【1562】
実施例を説明するために使用される、「~である場合」、「~の時」などの条件表現は選択的な場合にのみ制限して解釈されない。特定の条件を満たすとき、特定の条件に対応して関連動作を行うか、又は関連定義が解釈されるように意図されている。
【1563】
また、この明細書で説明する実施例による動作は、実施例によってメモリ及び/又はプロセッサを含む送受信装置により行われる。メモリは実施例による動作を処理/制御するためのプログラムを格納し、プロセッサはこの明細書で説明した様々な動作を制御する。プロセッサはコントローラとも称される。実施例において、動作はファームウェア、ソフトウェア及び/又はそれらの組み合わせにより行われ、ファームウェア、ソフトウェア及び/又はそれらの組み合わせはプロセッサに格納されるか又はメモリに格納される。
【産業上の利用可能性】
【1564】
上述したように、実施例はポイントクラウドデータの送受信装置及びシステムに全体的又は部分的に適用することができる。
【1565】
当業者は実施例の範囲内で実施例を様々に変更又は変形することができる。
【1566】
実施例は変更/変形を含み、変更/変形は請求の範囲及びそれらの範囲内のものである。
【手続補正書】
【提出日】2024-09-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ポイントクラウドデータを符号化する方法であって、
前記ポイントクラウドデータを符号化するステップと、
前記符号化されたポイントクラウドデータを含むビットストリームをファイル内にカプセル化するステップと、を含み、
前記符号化されたポイントクラウドデータは、符号化されたジオメトリデータ、符号化された特質データ及び符号化された占有マップデータを含み、
前記ファイルは、マルチプルトラックを含み、
前記マルチプルトラックのそれぞれは、サンプルエントリーとサンプルとを含み、
前記マルチプルトラックの少なくとも1つの中のサンプルは、前記符号化されたジオメトリデータ、前記符号化された特質データ及び前記符号化された占有マップデータの1つを含み、
前記ファイルは、シグナリング情報をさらに含み、
前記シグナリング情報は、前記ポイントクラウドデータのためのビューポートに関する情報を含み、
前記ビューポートに関する情報は、時間経過とともに変化する動的ビューポート情報と、時間経過とともに変化しない静的ビューポート情報とに分類され、
前記マルチプルトラックのトラックは、タイムド-メタデータトラックであり、
前記タイムド-メタデータトラックのサンプルエントリータイプは、前記タイムド-メタデータトラックが前記動的ビューポート情報のために使用されることを示すための値を有し、
前記動的ビューポート情報は、少なくとも、初期ビューポート位置情報を含む第1ビューポート情報、又は時間経過とともに動的に変化するビューポート位置情報を含む第2ビューポート情報を含み、
前記第1ビューポート情報は、前記タイムド-メタデータトラックのサンプルエントリーを介して伝送され、
前記第2ビューポート情報は、前記タイムド-メタデータトラックのサンプルを介して伝送され、
前記静的ビューポート情報は、前記タイムド-メタデータトラックと異なる、前記マルチプルトラックのトラック内で伝送される、方法。
【請求項2】
前記ポイントクラウドデータは、V-PCC(video based point cloud compression)方式によって符号化される、請求項1に記載の方法。
【請求項3】
前記ビューポートに関する情報は、カメラの方向情報をさらに含む、請求項1に記載の方法。
【請求項4】
前記ビューポートに関する情報は、ビューポートを生成するための水平FOV(field of view)情報と垂直FOV情報をさらに含む、請求項1に記載の方法。
【請求項5】
ポイントクラウドデータを符号化するための装置であって、
前記ポイントクラウドデータを符号化するためのエンコーダと、
前記符号化されたポイントクラウドデータを含むビットストリームをファイル内にカプセル化するためのカプセル化部と、を備え、
前記符号化されたポイントクラウドデータは、符号化されたジオメトリデータ、符号化された特質データ及び符号化された占有マップデータを含み、
前記ファイルは、マルチプルトラックを含み、
前記マルチプルトラックのそれぞれは、サンプルエントリーとサンプルとを含み、
前記マルチプルトラックの少なくとも1つの中のサンプルは、前記符号化されたジオメトリデータ、前記符号化された特質データ及び前記符号化された占有マップデータの1つを含み、
前記ファイルは、シグナリング情報をさらに含み、
前記シグナリング情報は、前記ポイントクラウドデータのためのビューポートに関する情報を含み、
前記ビューポートに関する情報は、時間経過とともに変化する動的ビューポート情報と、時間経過とともに変化しない静的ビューポート情報とに分類され、
前記マルチプルトラックのトラックは、タイムド-メタデータトラックであり、
前記タイムド-メタデータトラックのサンプルエントリータイプは、前記タイムド-メタデータトラックが前記動的ビューポート情報のために使用されることを示すための値を有し、
前記動的ビューポート情報は、少なくとも、初期ビューポート位置情報を含む第1ビューポート情報、又は時間経過とともに動的に変化するビューポート位置情報を含む第2ビューポート情報を含み、
前記第1ビューポート情報は、前記タイムド-メタデータトラックのサンプルエントリーを介して伝送され、
前記第2ビューポート情報は、前記タイムド-メタデータトラックのサンプルを介して伝送され、
前記静的ビューポート情報は、前記タイムド-メタデータトラックと異なる、前記マルチプルトラックのトラック内で伝送される、装置。
【請求項6】
前記ポイントクラウドデータは、V-PCC(video based point cloud compression)方式によって符号化される、請求項5に記載の装置。
【請求項7】
前記ビューポートに関する情報は、カメラの方向情報をさらに含む、請求項5に記載の装置。
【請求項8】
前記ビューポートに関する情報は、ビューポートを生成するための水平FOV(field of view)情報と垂直FOV情報をさらに含む、請求項5に記載の装置。
【請求項9】
ポイントクラウドデータを復号する方法であって、
前記ポイントクラウドデータを含むビットストリームにファイルをデカプセル化するステップであって、
前記ポイントクラウドデータは、ジオメトリデータ、特質データ及び占有マップデータを含み、
前記ファイルは、マルチプルトラックを含み、
前記マルチプルトラックのそれぞれは、サンプルエントリーとサンプルとを含み、
前記マルチプルトラックの少なくとも1つの中のサンプルは、前記ジオメトリデータ、前記特質データ及び前記占有マップデータの1つを含み、
前記ファイルは、シグナリング情報をさらに含み、
前記シグナリング情報は、前記ポイントクラウドデータのためのビューポートに関する情報を含む、ステップと、
前記ポイントクラウドデータを復号するステップと、を含み、
前記ビューポートに関する情報は、時間経過とともに変化する動的ビューポート情報と、時間経過とともに変化しない静的ビューポート情報とに分類され、
前記マルチプルトラックのトラックは、タイムド-メタデータトラックであり、
前記タイムド-メタデータトラックのサンプルエントリータイプは、前記タイムド-メタデータトラックが前記動的ビューポート情報のために使用されることを示すための値を有し、
前記動的ビューポート情報は、少なくとも、初期ビューポート位置情報を含む第1ビューポート情報、又は時間経過とともに動的に変化するビューポート位置情報を含む第2ビューポート情報を含み、
前記第1ビューポート情報は、前記タイムド-メタデータトラックのサンプルエントリーを介して伝送され、
前記第2ビューポート情報は、前記タイムド-メタデータトラックのサンプルを介して伝送され、
前記静的ビューポート情報は、前記タイムド-メタデータトラックと異なる、前記マルチプルトラックのトラック内で伝送される、方法。
【請求項10】
前記ビューポートに関する情報は、カメラの方向情報をさらに含む、請求項9に記載の方法。
【請求項11】
前記ビューポートに関する情報は、ビューポートを生成するための水平FOV(field of view)情報と垂直FOV情報をさらに含む、請求項9に記載の方法。
【請求項12】
前記ビューポートに関する情報に基づいて、前記復号されたポイントクラウドデータをレンダリングするステップをさらに含む、請求項9に記載の方法。
【請求項13】
ポイントクラウドデータを復号するための装置であって、
前記ポイントクラウドデータを含むビットストリームにファイルをデカプセル化するためのデカプセル化部であって、
前記ポイントクラウドデータは、ジオメトリデータ、特質データ及び占有マップデータを含み、
前記ファイルは、マルチプルトラックを含み、
前記マルチプルトラックのそれぞれは、サンプルエントリーとサンプルとを含み、
前記マルチプルトラックの少なくとも1つの中のサンプルは、前記ジオメトリデータ、前記特質データ及び前記占有マップデータの1つを含み、
前記ファイルは、シグナリング情報をさらに含み、
前記シグナリング情報は、前記ポイントクラウドデータのためのビューポートに関する情報を含む、デカプセル化部と、
前記ポイントクラウドデータを復号するためのデコーダと、を備え、
前記ビューポートに関する情報は、時間経過とともに変化する動的ビューポート情報と、時間経過とともに変化しない静的ビューポート情報とに分類され、
前記マルチプルトラックのトラックは、タイムド-メタデータトラックであり、
前記タイムド-メタデータトラックのサンプルエントリータイプは、前記タイムド-メタデータトラックが前記動的ビューポート情報のために使用されることを示すための値を有し、
前記動的ビューポート情報は、少なくとも、初期ビューポート位置情報を含む第1ビューポート情報、又は時間経過とともに動的に変化するビューポート位置情報を含む第2ビューポート情報を含み、
前記第1ビューポート情報は、前記タイムド-メタデータトラックのサンプルエントリーを介して伝送され、
前記第2ビューポート情報は、前記タイムド-メタデータトラックのサンプルを介して伝送され、
前記静的ビューポート情報は、前記タイムド-メタデータトラックと異なる、前記マルチプルトラックのトラック内で伝送される、装置。
【請求項14】
前記ビューポートに関する情報は、カメラの方向情報をさらに含む、請求項13に記載の装置。
【請求項15】
前記ビューポートに関する情報は、ビューポートを生成するための水平FOV(field of view)情報と垂直FOV情報をさらに含む、請求項13に記載の装置。
【請求項16】
前記ビューポートに関する情報に基づいて、前記復号されたポイントクラウドデータをレンダリングするためのレンダラーをさらに備える、請求項13に記載の装置。