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

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

▶ インターデジタル シーイー パテント ホールディングスの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-22
(45)【発行日】2024-05-01
(54)【発明の名称】点群の処理
(51)【国際特許分類】
   H04N 19/597 20140101AFI20240423BHJP
   H04N 19/70 20140101ALI20240423BHJP
   H04N 19/80 20140101ALI20240423BHJP
   H04N 19/85 20140101ALI20240423BHJP
   G06T 9/00 20060101ALI20240423BHJP
【FI】
H04N19/597
H04N19/70
H04N19/80
H04N19/85
G06T9/00
【請求項の数】 24
(21)【出願番号】P 2021559510
(86)(22)【出願日】2020-02-25
(65)【公表番号】
(43)【公表日】2022-06-14
(86)【国際出願番号】 EP2020054819
(87)【国際公開番号】W WO2020193038
(87)【国際公開日】2020-10-01
【審査請求日】2023-02-27
(31)【優先権主張番号】19305361.8
(32)【優先日】2019-03-22
(33)【優先権主張国・地域又は機関】EP
(31)【優先権主張番号】19305895.5
(32)【優先日】2019-07-01
(33)【優先権主張国・地域又は機関】EP
(31)【優先権主張番号】19306189.2
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】EP
(31)【優先権主張番号】19306291.6
(32)【優先日】2019-10-04
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】518341334
【氏名又は名称】インターディジタル・シーイー・パテント・ホールディングス・ソシエテ・パ・アクシオンス・シンプリフィエ
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】ジュリアン リカード
(72)【発明者】
【氏名】ジョアン リャック
(72)【発明者】
【氏名】ピエール アンドリヴォン
(72)【発明者】
【氏名】ジャン-クラウド シュヴェ
(72)【発明者】
【氏名】セリーヌ ゲーデ
(72)【発明者】
【氏名】ヤニック オリヴィエ
【審査官】田中 純一
(56)【参考文献】
【文献】国際公開第2020/012967(WO,A1)
【文献】米国特許出願公開第2021/0217139(US,A1)
【文献】米国特許出願公開第2019/0087978(US,A1)
【文献】特開2016-075637(JP,A)
【文献】特開2018-194891(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00 - 19/98
G06T 1/00 - 1/40
G06T 3/00 - 5/94
G06T 9/00 - 9/40
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
第1の投影面に投影された点群フレームの3Dサンプルのジオメトリを表すパッチを取得することと、
前記パッチの少なくとも1つの隣接するパッチの少なくとも1つの2Dサンプルを前記第1の投影面に再投影することによって参照輪郭を取得することと、
前記パッチの少なくとも1つの2Dサンプルを空間的に修正して、前記参照輪郭に合わせることと
を備えることを特徴とする方法。
【請求項2】
第1の投影面に投影された点群フレームの3Dサンプルのジオメトリを表すパッチを取得することと、
前記パッチの少なくとも1つの隣接するパッチの少なくとも1つの2Dサンプルを前記第1の投影面に再投影することによって参照輪郭を取得することと、
前記パッチの少なくとも1つの2Dサンプルを空間的に修正して、前記参照輪郭に合わせることと
のために構成された1つまたは複数のプロセッサー
を備えたことを特徴とする装置。
【請求項3】
少なくとも1つの候補パッチから前記少なくとも1つの隣接するパッチを取得することをさらに備える、請求項1に記載の方法。
【請求項4】
前記1つまたは複数のプロセッサーは、少なくとも1つの候補パッチから前記少なくとも1つの隣接するパッチを取得することのためにさらに構成される、請求項2に記載の装置。
【請求項5】
候補パッチの2Dサンプルに対応する3Dサンプルと、前記隣接するパッチに対応する3Dサンプルとが互いに近い場合、前記候補パッチが前記パッチの隣接するパッチである、請求項3に記載の方法。
【請求項6】
候補パッチの2Dサンプルに対応する3Dサンプルと、前記隣接するパッチに対応する3Dサンプルとが互いに近い場合、前記候補パッチが前記パッチの隣接するパッチである、請求項4に記載の装置。
【請求項7】
候補パッチの3Dバウンディングボックスが前記パッチの3Dバウンディングボックスと交わる場合、候補パッチが前記パッチの隣接するパッチである、請求項5に記載の方法。
【請求項8】
候補パッチの3Dバウンディングボックスが前記パッチの3Dバウンディングボックスと交わる場合、候補パッチが前記パッチの隣接するパッチである、請求項6に記載の装置。
【請求項9】
前記パッチの前記2Dサンプルは、前記パッチの輪郭を形成する、請求項1、3、5、または7のいずれか一項に記載の方法。
【請求項10】
前記パッチの前記2Dサンプルは、前記パッチの輪郭を形成する、請求項2、4、6、または8のいずれか一項に記載の装置。
【請求項11】
前記パッチの前記輪郭は、前記パッチの少なくとも1つの2Dサンプルを加えることおよび/または取り除くことによって修正される、請求項9に記載の方法。
【請求項12】
前記パッチの前記輪郭は、前記パッチの少なくとも1つの2Dサンプルを加えることおよび/または取り除くことによって修正される、請求項10に記載の装置。
【請求項13】
前記パッチの前記輪郭の2Dサンプルは、それが前記参照輪郭の内側または外側のいずれかにあるならば修正される、請求項11に記載の方法。
【請求項14】
前記パッチの前記輪郭の2Dサンプルは、それが前記参照輪郭の内側または外側のいずれかにあるならば修正される、請求項12に記載の装置。
【請求項15】
前記パッチの前記輪郭は、前記パッチの投影軸に沿って前記パッチの少なくとも1つの2Dサンプルを再配置することによって修正される、請求項9、11、または13のいずれか一項に記載の方法。
【請求項16】
前記パッチの前記輪郭は、前記パッチの投影軸に沿って前記パッチの少なくとも1つの2Dサンプルを再配置することによって修正される、請求項10、12、または14のいずれか一項に記載の装置。
【請求項17】
前記パッチの2Dサンプルに対応する少なくとも1つの3Dサンプルと前記参照輪郭の2Dサンプルに対応する少なくとも1つの3Dサンプルとの間に少なくとも1つの追加の3Dサンプルを加えることによって、前記パッチの前記輪郭が修正される、請求項9、11、13、または15のいずれか一項に記載の方法。
【請求項18】
前記パッチの2Dサンプルに対応する少なくとも1つの3Dサンプルと前記参照輪郭の2Dサンプルに対応する少なくとも1つの3Dサンプルとの間に少なくとも1つの追加の3Dサンプルを加えることによって、前記パッチの前記輪郭が修正される、請求項10、12、14、または16のいずれか一項に記載の装置。
【請求項19】
前記パッチの前記2Dサンプルの属性をフィルタリングすることにさらに備える、請求項1に記載の方法。
【請求項20】
前記1つまたは複数のプロセッサーは、前記パッチの前記2Dサンプルの属性をフィルタリングすることのためにさらに構成される、請求項2に記載の装置。
【請求項21】
前記パッチの前記2Dサンプルの属性は、色情報または深度情報を含む、請求項19に記載の方法。
【請求項22】
前記パッチの前記2Dサンプルの属性は、色情報または深度情報を含む、請求項20に記載の装置。
【請求項23】
プログラムが1つまたは複数のプロセッサーによって実行されると、前記1つまたは複数のプロセッサーに、請求項1、3、5、7、9、11、13、15、17、19、または21のいずれか一項に記載の方法を実行させる命令を含むコンピュータープログラム。
【請求項24】
1つまたは複数のプロセッサーに、請求項1、3、5、7、9、11、13、15、17、19、または21のいずれか一項に記載の方法を行わせるための命令を含むことを特徴とする非一時的なコンピューター読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
一般に、本態様のうちの少なくとも1つは、点群の処理に関する。
【背景技術】
【0002】
本節は、以下に説明および/または特許請求される本態様のうちの少なくとも1つの様々な様相に関係することがある様々な、技術の様相を読む人に紹介するように意図されている。この記述は、少なくとも1つの態様の様々な様相のより良好な理解を促進する背景情報を読者に提供するのに有用であると考えられる。
【0003】
点群は、彫像または建築物などの物体を輸送または訪問したりすることなくその物体の空間的構造を共有するためにその物体が3Dで走査される文化遺産/建築物など、様々な目的に使用され得る。また、例えば寺院が地震で破壊されるなど、物体が破壊される場合に備えて、その物体の知識を保存することを保証する方法でもある。このような点群は、通常は静的で、色付きで、巨大である。
【0004】
別のユースケースは、3D表現を用いることで、面に限定されない、起伏を含むこともある地図を可能にする、地形学および地図作成におけるものである。現在、グーグルマップは、3D地図の良い例であるが、点群の代わりにメッシュを使用している。それでも、点群は、3D地図に適したデータフォーマットである可能性があり、このような点群は、通常は静的で、色付きで、巨大である。
【0005】
自動車産業および自動運転車も、点群が使用され得る領域である。自動運転車は、それらの環境を「探索」して、直に隣接の現実に基づいて良好な運転判断を下すことができなければならない。LIDAR(光による検知および測距)などの代表的なセンサは、判断エンジンによって使用される動的な点群を生成する。これらの点群は、人間によって見られるようには意図されておらず、通常は小さいが、必ずしも色付きではなく、高い取込み頻度で動的である。これらの点群は、LIDARによって提供される反射率など、他の属性を有することもある。これは、この属性が、感知された物体の材料ついての良好な情報を提供するものであり、判断を下すのに役立つ可能性があるからである。
【0006】
仮想現実および没入型世界は、近年では最新の話題になっており、2Dの平坦なビデオの未来であると多くの人に予想されている。基本的な考え方は、視聴者が自分の目の前にある仮想世界を見ることしかできない標準的なTVとは対照的に、視聴者を、その人の周囲の環境内に没入させるというものである。環境内における視聴者の自由度に応じて、没入度にいくつかの段階がある。点群は、仮想現実(VR)世界を配信するための良好なフォーマットの候補である。
【0007】
多くの応用分野では、許容できる、または改善された体験品質を維持しながら妥当な量のビットレートしか消費せずに、動的な点群をエンドユーザに配信する(またはそれらをサーバに記憶する)ことができることは重要である。多くの没入型世界の配信チェーンを実用的なものにするためには、これらの動的な点群の効率的な圧縮が要点である。
【0008】
少なくとも1つの態様は、以上のことを念頭に考案されたものである。
【先行技術文献】
【特許文献】
【0009】
【文献】European patent application n° 19305361.8 filed on March 22nd 2019
【文献】international application n° PCT/IB19/050492
【文献】European patent application n° 19305341.0
【非特許文献】
【0010】
【文献】Hoppe et al. (Hugues Hoppe, Tony DeRose, Tom Duchamp, John McDonald, Werner Stuetzle. Surface reconstruction from unorganized points. ACM SIGGRAPH 1992 Proceedings, 71-78)
【発明の概要】
【0011】
以下は、本開示のいくつかの様相の基本的な理解が得られるようにするために、本態様のうちの少なくとも1つの簡略化された概要を提示するものである。この概要は、態様の広範な概要ではない。それは、態様の重要または不可欠な要素を識別することを意図したものではない。以下の概要は、単に、本文書の他の箇所に与えられるさらに詳細な説明への前置きとして、本態様のうちの少なくとも1つのいくつかの様相を、簡略化された形態で提示するものである。
【0012】
少なくとも1つの態様の一般的な様相によれば、パッチの2Dサンプルをフィルタリングする方法であって、前述の2Dサンプルの少なくとも1つを空間的に修正して、パッチの少なくとも1つの隣接するパッチの少なくとも1つの2Dサンプルをパッチの前述の2Dサンプルが投影されている投影面に再投影することによって得られる参照輪郭に適合するようにすることを含む、方法が提供される。
【0013】
一態様では、前述の少なくとも1つの隣接するパッチを少なくとも1つの候補パッチから取得すること。
【0014】
一態様では、候補パッチは、前述の候補パッチの2Dサンプルに対応する3Dサンプルと、前述の隣接するパッチに対応する3Dサンプルとが互いに近接しているときには、パッチの隣接するパッチである。
【0015】
一態様では、候補パッチの3Dバウンディングボックスがパッチの3Dバウンディングボックスと交差するときには、候補パッチは、パッチの隣接するパッチである。
【0016】
一態様では、パッチの2Dサンプルは、前述のパッチの輪郭を形成する。
【0017】
一態様では、パッチの輪郭は、パッチの少なくとも1つの2Dサンプルを追加および/または除去することによって修正される。
【0018】
一態様では、パッチの輪郭の2Dサンプルは、それが参照輪郭の内側または外側である場合に修正される。
【0019】
一態様では、パッチの輪郭は、パッチの少なくとも1つの2Dサンプルをパッチの投影軸に沿って再配置することによって修正される。
【0020】
一態様では、パッチの輪郭は、パッチの2Dサンプルに対応する少なくとも1つの3Dサンプルと、参照輪郭の2Dサンプルに対応する少なくとも1つの3Dサンプルとの間に、少なくとも1つの追加の3Dサンプルを追加することによって修正される。
【0021】
一態様では、方法は、パッチの前述の2Dサンプルの属性をフィルタリングすることをさらに含む。
【0022】
一態様では、パッチの前述の2Dサンプルの属性は、色情報または深度情報を含む。
【0023】
少なくとも1つの態様の他の一般的な様相によれば、装置、コンピュータープログラム製品、および非一時的なコンピューター読取り可能媒体が提供される。
【0024】
少なくとも1つの態様の1つまたは複数の一般的な様相は、また、デバイス、コンピュータープログラム製品、および非一時的なコンピューター読取り可能媒体も提供する。
【0025】
本態様のうちの少なくとも1つの具体的な性質、ならびに本態様のうちの少なくとも1つのその他の目的、利点、特徴、および用途は、添付の図面に関連して読まれる以下の例の説明から明らかになるであろう。
【図面の簡単な説明】
【0026】
図1】本態様のうちの少なくとも1つによる2層ベースの点群エンコード構造1000の例の概略ブロック図である。
図2】本態様のうちの少なくとも1つによる2層ベースの点群デコード構造2000の例の概略ブロック図である。
図3】本態様のうちの少なくとも1つによる画像ベースの点群エンコーダー3000の例の概略ブロック図である。
図3a】2つのパッチP1およびP2と、それらに関連付けられた2DバウンディングボックスB1およびB2とを含むキャンバスCの例を示す図である。
図3b】投影線PLに沿って2つの3DサンプルP0とP1の間に位置する2つの中間3DサンプルPi1およびPi2の例を示す図である。
図4】本態様のうちの少なくとも1つによる画像ベースの点群デコーダー4000の例の概略ブロック図である。
図5】本態様のうちの少なくとも1つによるベースレイヤBLを表すビットストリームのシンタックス例を概略的に示す図である。
図6】様々な様相および態様が実装されるシステムの例を示す概略ブロック図である。
図7】少なくとも1つの態様の例による点群フレームのジオメトリをフィルタリングする方法の概略ブロック図である。
図8a】少なくとも1つの態様の例によるパッチを含む例示的な図である。
図8b】少なくとも1つの態様の例によるパッチを含む例示的な図である。
図8c】少なくとも1つの態様の例によるパッチを含む例示的な図である。
図8d】少なくとも1つの態様の例によるパッチを含む例示的な図である。
図9】輪郭C(p)の2Dサンプルを、参照輪郭RC(p)に対するそれらの位置に基づいて再帰的に侵食する/拡張することによる輪郭フィルタリングの例を示す図である。
図10】サブステップ7031の本態様の変形形態による例を示す図である。
図11】サブステップ7032の態様の例を示す図である。
図12】サブステップ7033の態様の例を示す図である。
図13】少なくとも1つの態様の例による占有マップを含む例示的な図である。
図14】少なくとも1つの態様の例による3D色グリッドジオメトリ平滑化の例示的な図である。
図15】少なくとも1つの態様の例による3Dグリッド色属性平滑化の例示的な図である。
図16】パッチ境界における色の問題を解決する新たな方法を提供する本色平滑化態様の1つまたは複数の様相を示す図である。
図17A】本色平滑化態様の1つまたは複数の様相を示す図である。
図17B】本色平滑化態様の1つまたは複数の様相を示す図である。
図18A】本2D色平滑化態様の1つまたは複数の様相を示す図である。
図18B】本2D色平滑化態様の1つまたは複数の様相を示す図である。
図19図18Aに示す色平滑化モジュールまたはプロセスの第1の変形を示す図である。
図20図18Aに示す色平滑化モジュールまたはプロセスの別の変形を示す図である。
図21】本態様の1つまたは複数の様相によるプロセス2100の例を示す図である。
【発明を実施するための形態】
【0027】
以下、本態様のうちの少なくとも1つの様々な例が示されている添付の図面を参照して、本態様のうちの少なくとも1つについてさらに完全に説明する。ただし、態様は、多くの代替の形態で実施される可能性があり、本明細書に記載される例に限定されるものとして解釈されるべきではない。したがって、開示される特定の形態に態様を限定する意図はないことを理解されたい。むしろ、本開示は、本出願の趣旨および範囲内の全ての修正、均等物、および代替物をカバーするように意図されている。
【0028】
図面が流れ図として提示されているときには、それは、対応する装置のブロック図を提供することにもなることを理解されたい。同様に、図面がブロック図として提示されているときには、それは対応する方法/プロセスの流れ図を提供することにもなることを理解されたい。
【0029】
図面の同様の、または同じ要素は、同じ参照番号で示されている。
【0030】
いくつかの図面は、ビデオベースの点群圧縮(V-PCCと略記される)のビットストリームの構造を定義するため、V-PCCで広く使用されるシンタックステーブルを表している。V-PCCの例は、ISO/IEC JTC/SC29/WG11MPEG2019/w18180(2019年1月、Marrakesh)に定義されるようにMPEGドラフト標準を実装するテストモデルカテゴリ2(TMC2)アルゴリズムである。
【0031】
これらのシンタックステーブルにおいて、「…」という項は、読み易くするために図面では削除されている、V-PCCにおいて与えられる元の定義に対するシンタックスの変更されない部分を示す。図中の太字の用語は、その用語の値がビットストリームを構文解析することによって得られることを示している。シンタックステーブルの右列は、シンタックス要素のデータをエンコードするためのビット数を示す。例えば、u(4)は、データをエンコードするのに4ビット使用されることを示し、u(8)は、8ビットであることを示し、ae(v)は、コンテキスト適応型演算エントロピー符号化シンタックス要素を示す。
【0032】
以下に記載および企図される様相は、多くの異なる形態で実装され得る。以下の図1から図21は、いくつかの態様を提供するが、他の態様も企図され、図1から図21の説明は、実装の範囲を限定するものではない。
【0033】
これらの様相のうちの少なくとも1つは、一般に、点群のエンコードおよびデコードに関し、少なくとも1つの他の様相は、一般に、生成またはエンコードされたビットストリームを伝送することに関する。
【0034】
さらに厳密には、本明細書に記載される様々な方法およびその他の様相は、例えば図3のエンコーダー3000のテクスチャ画像ジェネレータTIG(3400)、図4に示すデコーダー4000のジオメトリ生成モジュールGGM(4500)、および/またはテクスチャ生成モジュール(4600)などのモジュールを修正するために使用され得る。
【0035】
さらに、本様相は、点群圧縮に関係するMPEG-I part 5などのMPEG標準に限定されず、例えば、既存のものか将来開発されるものかを問わず、他の標準および勧告にも、また任意のそのような標準および勧告(MPEG-I part 5も含む)の拡大にも適用され得る。特に示されていない限り、または技術的に排除されない限り、本出願に記載される様相は、個別に使用されることも、組み合わせて使用されることもあり得る。
【0036】
以下では、画像データとは、例えば2Dサンプルの1つまたはいくつかのアレイを特定の画像/ビデオフォーマットで表現するデータを指すことがある。特定の画像/ビデオフォーマットは、画像(またはビデオ)の画素値に関する情報を指定することがある。特定の画像/ビデオフォーマットは、また、例えば画像(またはビデオ)を視覚化および/またはデコードするためにディスプレイおよび/またはその他の任意の装置によって使用されることがある情報を指定することもある。通常、画像は、通常は画像のルミナンス(または輝度)を表す、サンプルの第1の2Dアレイの形状の第1の成分を含む。画像は、また、通常は画像のクロミナンス(または色差)を表す、サンプルの他の2Dアレイの形状の第2の成分および第3の成分を含むこともある。いくつかの態様は、従来の3色RGB表現など、色サンプルの2Dアレイのセットを使用して、同じ情報を表現する。
【0037】
画素値は、1つまたは複数の態様では、C値のベクトルで表される。ここで、Cは、成分の数である。ベクトルの各値は、通常は、画素値のダイナミックレンジを定義し得るビット数で表される。
【0038】
画像ブロックは、画像に属する画素のセットを意味する。画像ブロック(または画像ブロックデータ)の画素値とは、その画像ブロックに属する画素の値を指す。画像ブロックは、任意の形状を有し得るが、矩形が一般的である。
【0039】
点群は、一意の座標を有し、また1つまたは複数の属性を有することもある3D体積空間内の3Dサンプルのデータセットで表されることもある。
【0040】
このデータセットの3Dサンプルは、その空間位置(3D空間内のX、Y、およびZ座標)と、場合によっては例えばRFBもしくはYUV色空間で表される色、透明度、反射率、2成分法線ベクトル、またはそのサンプルの特徴を表す任意の特徴などの1つまたは複数の関連する属性とによって定義され得る。例えば、3Dサンプルは、6つの成分(X,Y,Z,R,G,B)または等価に(X,Y,Z,y,U,V)によって定義されることがある。ここで、(X,Y,Z)は、3D空間内の点の座標を定義し、(R,G,B)または(y,U,V)は、その3Dサンプルの色を定義する。同じタイプの属性が、複数回存在することもある。例えば、複数の色属性が、異なる視点からの色情報を提供することもある。
【0041】
点群は、その群が時間とともに変化するか否かに応じて、静的、または動的であり得る。静的な点群、または動的な点群のインスタンスは、通常は、点群フレームとして示される。動的な点群の場合には、点の数は、一般に一定ではなく、一般には逆に時間とともに変化することに留意されたい。さらに一般的には、点群は、例えば点の数、1つまたは複数の点の位置、または任意の点の任意の属性など、何かが時間とともに変化する場合には、動的とみなされ得る。
【0042】
一例として、2Dサンプルは、6つの成分(u,v,Z,R,G,B)または等価に(u,v,Z,y,U,V)によって定義されることがある。(u,v)は、投影面の2D空間内の2Dサンプルの座標を定義する。Zは、この投影面に投影された3Dサンプルの深度値である。(R,G,B)または(y,U,V)は、その3Dサンプルの色を定義する。
【0043】
図1は、本態様のうちの少なくとも1つによる2層ベースの点群エンコード構造1000の例の概略ブロック図である。
【0044】
2層ベースの点群エンコード構造1000は、入力点群フレームIPCFを表すビットストリームBを提供することがある。場合によっては、入力点群フレームIPCFは、動的な点群のフレームを表す。その場合には、動的な点群のフレームは、2層ベースの点群エンコード構造1000によって、別のフレームから独立にエンコードされることがある。
【0045】
基本的には、2層ベースの点群エンコード構造1000は、ビットストリームBをベースレイヤBLおよびエンハンスメントレイヤELとして構成する能力を提供することがある。ベースレイヤBLは、入力点群フレームIPCFの不可逆的表現を提供することがあり、エンハンスメントレイヤELは、ベースレイヤBLによって表現されない孤立した点をエンコードすることによって、より高品質な(場合によっては可逆的な)表現を提供することがある。
【0046】
ベースレイヤBLは、図3に示す画像ベースのエンコーダー3000によって提供されることがある。画像ベースのエンコーダー3000は、入力点群フレームIPCFの3Dサンプルのジオメトリ/属性を表すジオメトリ/テクスチャ画像を提供することがある。それは、孤立した3Dサンプルが破棄されることを可能にすることもある。ベースレイヤBLは、中間の再構築された点群フレームIRPCFを提供することがある図4に示す画像ベースのデコーダー4000によってデコードされることがある。
【0047】
次いで、図1の2層ベースの点群エンコード1000に戻ると、比較器COMPは、見逃した/孤立した3Dサンプルを検知する/突き止めるために、入力点群フレームIPCFの3Dサンプルを中間の再構築された点群フレームIRPCFの3Dサンプルと比較することがある。次に、エンコーダーENCは、見逃した3Dサンプルをエンコードし、エンハンスメントレイヤELを提供することがある。最後に、ベースレイヤBLおよびエンハンスメントレイヤELが、マルチプレクサMUXによっていっしょに多重化されて、ビットストリームBを生成することがある。
【0048】
態様によれば、エンコーダーENCは、中間の再構築された点群フレームIRPCFの3D参照サンプルRを検知し、見逃した3DサンプルMと関連付けることがある検知器を備えることがある。
【0049】
例えば、見逃した3DサンプルMに関連付けられる3D参照サンプルは、所与のメトリックに応じて、Mに最も接近したサンプルであることもある。
【0050】
態様によれば、エンコーダーENCは、この場合、見逃した3DサンプルMの空間位置およびそれらの属性を、3D参照サンプルRの空間位置および属性に従って決定される差としてエンコードすることもある。
【0051】
変形形態では、これらの差は、別々にエンコードされることもある。
【0052】
例えば、空間座標x(M)、y(M)、z(M)を有する見逃した3DサンプルMについて、x座標位置の差Dx(M)、y座標位置の差Dy(M)、z座標位置の差Dz(M)、R属性成分の差Dr(M)、G属性成分の差Dg(M)、およびB属性成分の差Db(M)は、以下のように計算されることがある。
Dx(M)=x(M)-x(R)
ここで、x(M)およびx(R)は、それぞれ、図3によって与えられるジオメトリ画像における3DサンプルMおよび3D参照サンプルRのx座標である。
Dy(M)=y(M)-y(R)
ここで、y(M)およびy(R)は、それぞれ、図3によって与えられるジオメトリ画像における3DサンプルMおよび3D参照サンプルRのy座標である。
Dz(M)=z(M)-z(R)
ここで、z(M)およびz(R)は、それぞれ、図3によって与えられるジオメトリ画像における3DサンプルMおよび3D参照サンプルRのz座標である。
Dr(M)=R(M)-R(R)
ここで、R(M)およびR(R)は、それぞれ、3DサンプルMおよび3D参照サンプルRの色属性のr色成分である。
Dg(M)=G(M)-G(R)
ここで、G(M)およびG(R)は、それぞれ、3DサンプルMおよび3D参照サンプルRの色属性のg色成分である。
Db(M)=B(M)-B(R)
ここで、B(M)およびB(R)は、それぞれ、3DサンプルMおよび3D参照サンプルRの色属性のb色成分である。
【0053】
図2は、本態様のうちの少なくとも1つによる2層ベースの点群デコード構造2000の例の概略ブロック図である。
【0054】
2層ベースの点群デコード構造2000の挙動は、その能力によって決まる。
【0055】
限られた能力を有する2層ベースの点群デコード構造2000は、デマルチプレクサDMUXを用いることによってビットストリームBからベースレイヤBLのみにアクセスし、次いで、図4に示す点群デコーダー4000によってベースレイヤBLをデコードすることによって入力点群フレームIPCFの忠実な(ただし不可逆的な)バージョンを提供することもある。
【0056】
最大限の能力を有する2層ベースの点群デコード構造2000は、デマルチプレクサDMUXを用いることによってビットストリームBからベースレイヤBLおよびエンハンスメントレイヤELの両方にアクセスし得る。図4に示す点群デコーダー4000は、ベースレイヤBLから、中間の再構築された点群フレームIRPCFを決定することがある。デコーダーDECは、エンハンスメントレイヤELから、相補的な点群フレームCPCFを決定することがある。次いで、コンバイナCOMが、中間の再構築された点群フレームIRPCFと相補的な点群フレームCPCFとを結合することによって、入力点群フレームIPCFのより高品質な(場合によっては可逆的な)表現(再構築)CRPCFを提供することがある。
【0057】
図3は、本態様のうちの少なくとも1つによる画像ベースの点群エンコーダー3000の例の概略ブロック図である。
【0058】
画像ベースの点群エンコーダー3000は、既存のビデオコーデックを活用して、動的な点群のジオメトリおよびテクスチャ(属性)情報を圧縮する。これは、基本的に点群データを異なるビデオシーケンスのセットに変換することによって実現される。
【0059】
特定の態様では、一方は点群データのジオメトリ情報を取り込むためのもの、もう一方はテクスチャ(例えば色/属性)情報を取り込むためのものという、2つのビデオが生成され、既存のビデオコーデックを用いて圧縮されることがある。既存のビデオコーデックの例は、HEVC Main profileエンコーダー/デコーダー(ITU-T H.265、ITUの電気通信標準化部門(2018年2月)、シリーズH:オーディオビジュアルおよびマルチメディアシステムズ、オーディオビジュアルサービスのインフラストラクチャ-動画像の符号化、高効率ビデオ符号化、勧告ITU-T H.265)である。
【0060】
2つのビデオを解釈するために使用される追加のメタデータも、通常は、別個に生成され、圧縮される。このような追加のメタデータは、例えば、占有マップOMおよび/または補助パッチ情報PIを含む。
【0061】
次いで、生成されたビデオビットストリームとメタデータとがいっしょに多重化されて、結合されたビットストリームを生成することがある。
【0062】
メタデータは、通常は情報全体の小さな部分を表現することに留意されたい。情報の全体が、ビデオビットストリーム中にある。
【0063】
ステップ3100で、パッチ生成モジュールPGMは、最良の圧縮を提供する方策を用いて、入力点群フレームIPCFを表すデータセットの3Dサンプルを投影面上の2Dサンプルに分解することによって、少なくとも1つのパッチを生成することがある。
【0064】
パッチは、2Dサンプルのセットとして定義されることがある。
【0065】
例えば、V-PCCでは、まず、あらゆる3Dサンプルの法線が、例えばHoppeらの非特許文献1に記載されるように推定される。次に、各3Dサンプルを、入力点群フレームIPCFの3Dサンプルを包含する3Dバウンディングボックスの6つの向き付けられた面のうちの1つと関連付けることによって、入力点群フレームIPCFの初期クラスタ化が得られる。さらに厳密には、各3Dサンプルは、クラスタ化され、最も近接した法線を有する(すなわち点の法線と面の法線のドット積を最大にする)向き付けられた面と関連付けられる。次いで、3Dサンプルは、それぞれ関連付けられた面に投影される。その面内で連接された領域を形成する3Dサンプルのセットは、連接成分と呼ばれる。連接成分は、同様の法線、および同じ関連付けられた向き付けられた面を有する少なくとも1つの3Dサンプルのセットである。次いで、各3Dサンプルに関連付けられたクラスタを、その法線、およびそれに最も接近した隣接するサンプルのクラスタに基づいて反復的に更新することによって、初期クラスタ化が洗練される。最終ステップは、各連接成分から1つのパッチを生成することからなる、すなわち、各連接成分の3Dサンプルを、その連接成分に関連付けられた向き付けられた面上に投影することによって行われる。パッチは、ジオメトリおよび/または属性情報に対応する投影された2Dサンプルを解釈するために各パッチについて定義される補助パッチ情報を表す補助パッチ情報PIに関連付けられる。
【0066】
V-PCCでは、例えば、補助パッチ情報PIは、1)連接成分の3Dサンプルを包含する3Dバウンディングボックスの6つの向き付けられた面のうちの1つを示す情報、2)面の法線に関する情報、3)深度、接線シフト、および従接線シフトに関して表現される、パッチに対する連接成分の3D位置を決定する情報、ならびに4)パッチを包含する2Dバウンディングボックスを定義する投影面内の座標(u0,v0,u1,v1)などの情報を含む。
【0067】
ステップ3200にて、パッチパッキングモジュールPPMは、少なくとも1つの生成されたパッチを、重複を生じないように、通常は使用されない空間を最小限にするようなやり方で、2Dグリッド(キャンバスとも呼ばれる)上にマッピング(配置)し、2Dグリッドの全てのT×T(例えば16×16)のブロックが一意のパッチと関連付けられることを保証することがある。2Dグリッドの所与の最小ブロックサイズは、その2Dグリッド上に配置された別個のパッチの間の最小距離を指定することがある。2Dグリッドの解像度は、入力点群サイズ、ならびにその幅Wおよび高さHによって決まることがあり、ブロックサイズTは、メタデータとしてデコーダーに伝送されることがある。
【0068】
補助パッチ情報PIは、さらに、2Dグリッドのブロックとパッチとの間の関連に関する情報を含むこともある。
【0069】
V-PCCでは、補助情報PIは、2Dグリッドのブロックとパッチインデックスとの間の関連を決定するブロック/パッチインデックス情報(BlockToPatch)を含むこともある。
【0070】
図3aは、2つのパッチP1およびP2と、それらに関連付けられた2DバウンディングボックスB1およびB2とを含むキャンバスCの例を示す図である。2つのバウンディングボックスは、図3aに示すようにキャンバスC内で重複することがあることに留意されたい。2Dグリッド(キャンバスの分割)は、バウンディングボックスの内側のみに表現されているが、キャンバスの分割は、これらのバウンディングボックスの外側でも行われる。パッチに関連付けられたバウンディングボックスは、T×Tのブロックに分割刺されることが可能であり、通常はT=16である。
【0071】
パッチに属する2Dサンプルを含むT×Tのブロックは、占有ブロックとみなされ得る。キャンバスの各占有ブロックは、占有マップOM内で特定の画素値(例えば1)で表され、キャンバスの各非占有ブロックは、別の特定の値、例えば0で表される。この場合、占有マップOMの画素値は、キャンバスのT×Tのブロックが占有されているかどうか、すなわちパッチに属する2Dサンプルを含むかどうかを示すことがある。
【0072】
図3aでは、占有ブロックは、白いブロックで表され、薄い灰色のブロックは、非占有ブロックを表す。画像生成プロセス(ステップ3300および3400)は、少なくとも1つの生成されたパッチのステップ3200中に計算された2Dグリッドへのマッピングを利用して、入力点群フレームIPCFのジオメトリおよびテクスチャを画像として記憶する。
【0073】
ステップ3300にて、ジオメトリ画像ジェネレータGIGは、入力点群フレームIPCF、占有マップOM、および補助パッチ情報PIから、少なくとも1つのジオメトリ画像GIを生成することがある。ジオメトリ画像ジェネレータGIGは、ジオメトリ画像GI中の占有ブロック、したがって空でない画素を検知する(突き止める)ために、占有マップ情報を利用する。
【0074】
ジオメトリ画像GIは、入力点群フレームIPCFのジオメトリを表すことがあり、例えばYUV420-8bitフォーマットで表されるW×H画素の単色画像であることがある。
【0075】
複数の3Dサンプルが投影面の同じ2Dサンプルに(同じ投影方向(線)に沿って)投影(マッピング)される場合をより良好に扱うために、レイヤと呼ばれる複数の画像が生成されることがある。したがって、異なる深度値D1,…,Dnが、パッチの2Dサンプルと関連付けられることがあり、次いで、複数のジオメトリ画像が生成されることがある。
【0076】
V-PCCでは、パッチの2Dサンプルは、2つのレイヤに投影される。近いレイヤとも呼ばれる第1のレイヤは、例えば、より小さな深度を有する2Dサンプルに関連付けられた深度値D0を記憶することがある。遠いレイヤとも呼ばれる第2のレイヤは、例えば、より大きな深度を有する2Dサンプルに関連付けられた深度値D1を記憶することがある。あるいは、第2のレイヤは、深度値D1とD2の間の差分値を記憶することもある。例えば、第2の深度画像によって記憶された情報は、範囲[D0,D0+Δ]内の深度値に対応する間隔[0,Δ]内であることもあり、ここで、Δは、表面の厚さを記述するユーザ定義のパラメータである。
【0077】
このようにして、第2のレイヤは、有意な輪郭状の高頻度の特徴を含むことがある。したがって、第2の深度画像は、従来のビデオコーダを用いて符号化することが困難であることがあり、したがって、デコードされた第2の深度画像から深度値が十分に再構築されないことがあり、それにより、再構築された点群フレームのジオメトリの品質が不十分になることは明らかであるように思われる。
【0078】
態様によれば、ジオメトリ画像生成モジュールGIGは、補助パッチ情報PIを用いて第1および第2のレイヤの2Dサンプルに関連付けられた深度値を符号化(導出)することがある。
【0079】
V-PCCでは、対応する連接成分を有するパッチ内の3Dサンプルの位置は、以下のように、深度δ(u,v)、接線シフトs(u,v)、および従接線シフトr(u,v)で表されることがある。
δ(u,v)=δ0+g(u,v)
s(u,v)=s0-u0+u
r(u,v)=r0-v0+v
ここで、g(u,v)は、ジオメトリ画像の輝度成分であり、(u,v)は、投影面上で3Dサンプルと関連付けられた画素であり、(δ0,s0,r0)は、3Dサンプルが属する連接成分の対応するパッチの3D位置であり、(u0,v0,u1,v1)は、その連接成分に関連付けられたパッチの投影を包含する2Dバウンディングボックスを定義する投影面内の座標である。
【0080】
したがって、ジオメトリ画像生成モジュールGIGは、レイヤ(第1もしくは第2、またはその両方)の2Dサンプルに関連付けられた深度値を、g(u,v)=δ(u,v)-δ0で与えられる輝度成分g(u,v)として符号化(導出)することがある。この関係は、添付の補助パッチ情報PIを有する再構築されたジオメトリ画像g(u,v)から3Dサンプル位置(δ0,s0,r0)を再構築するために利用されることがあることに留意されたい。
【0081】
態様によれば、投影モードは、第1のジオメトリ画像GI0が第1または第2のいずれのレイヤの2Dサンプルの深度値を記憶し、また第2のジオメトリ画像GI1が第2または第1のいずれのレイヤの2Dサンプルに関連付けられた深度値を記憶するかを示すために使用されることがある。
【0082】
例えば、投影モードが0に等しいときには、第1のジオメトリ画像GI0は、第1のレイヤの2Dサンプルの深度値を記憶することがあり、第2のジオメトリ画像GI1は、第2のレイヤの2Dサンプルに関連付けられた深度値を記憶することがある。逆に、投影モードが1に等しいときには、第1のジオメトリ画像GI0は、第2のレイヤの2Dサンプルの深度値を記憶することがあり、第2のジオメトリ画像GI1は、第1のレイヤの2Dサンプルに関連付けられた深度値を記憶することがある。
【0083】
態様によれば、フレーム投影モードは、全てのパッチについて固定された投影モードが使用されるかどうか、または各パッチが異なる投影モードを使用することがある可変の投影モードが使用されるかどうかを示すために使用されることがある。
【0084】
投影モードおよび/またはフレーム投影モードは、メタデータとして伝送されることがある。
【0085】
フレーム投影モード判断プロセスは、例えばV-PCCのセクション2.2.1.3.1に提供され得る。
【0086】
態様によれば、フレーム投影が、可変の投影モードが使用され得ることを示しているときには、パッチを投影(またはデプロジェクション)するために使用するのに適したモードを示すために、パッチ投影モードが使用されることがある。
【0087】
パッチ投影モードは、メタデータとして伝送されることがあり、場合によっては、補助パッチ情報PIに含まれる情報であることもある。
【0088】
パッチ投影モード判断プロセスは、例えばV-PCCのセクション2.2.1.3.2に提供されている。
【0089】
ステップ3300の態様によれば、パッチの2Dサンプル(u,v)に対応する第1のジオメトリ画像における画素値、例えばGI0は、2Dサンプル(u,v)に対応する投影線に沿って定義される少なくとも1つの中間3Dサンプルの深度値を表すことがある。さらに厳密には、中間3Dサンプルは、投影線に沿って存在し、その深度値D1が第2のジオメトリ画像、例えばGI1に符号化される2Dサンプル(u,v)の同じ座標を共有する。さらに、中間3Dサンプルは、深度値D0と深度値D1の間の深度値を有することがある。中間3Dサンプルが存在する場合には1に設定され、同でない場合には0に設定される指定ビットが、中間3Dサンプルのそれぞれと関連付けられることもある。
【0090】
図3bは、投影線PLに沿って2つの3DサンプルP0とP1の間に位置する2つの中間3DサンプルPi1およびPi2の例を示す図である。3DサンプルP0およびP1は、それぞれD0およびD1に等しい深度値を有する。2つの中間3DサンプルPi1およびPi2のそれぞれの深度値Di1およびDi2は、D0より大きく、D1より小さい。
【0091】
次いで、投影線に沿った全ての指定ビットが連結されて、以下ではエンハンスト占有マップ(EOM)コード語と称されるコード語を形成することがある。図3bに示すように、8ビット長のEOMコード語を仮定すると、1に等しい2つのビットが、2つの3DサンプルPi1およびPi2の位置を示す。最後に、全てのEOMコード語が、画像、例えば占有マップOM内にパッキングされることがある。その場合には、キャンバスの少なくとも1つのパッチは、少なくとも1つのEOMコード語を含むことがある。このようなパッチは、参照パッチと称され、参照パッチのブロックは、EOM参照ブロックと称される。したがって、占有マップOMの画素値は、第1の値、例えば0に等しいと、キャンバスの非占有ブロックを示し、または、例えば0より大きい別の値に等しいと、例えばD1-D0≦1であるときには、キャンバスの占有ブロックを示し、または、例えばD1-D0>1であるときには、キャンバスのEOM参照ブロックを示すことがある。
【0092】
EOM参照ブロックを示す占有マップOM内の画素の位置、およびそれらの画素の値から得られるEOMコード語のビットの値は、中間3Dサンプルの3D座標を示す。
【0093】
ステップ3400にて、テクスチャ画像ジェネレータTIGは、入力点群フレームIPCF、占有マップOM、補助パッチ情報PI、およびビデオデコーダVDEC(図4のステップ4200)の出力である少なくとも1つのデコードされたジオメトリ画像DGIから導出された再構築された点群フレームジオメトリから、少なくとも1つのテクスチャ画像TIを生成することがある。
【0094】
テクスチャ画像TIは、入力点群フレームIPCFのテクスチャを表すことがあり、例えばYUV420-8bitフォーマットで表されるW×H画素の画像であることがある。
【0095】
テクスチャ画像ジェネレータTGは、テクスチャ画像中の占有ブロック、したがって空でない画素を検知する(位置を突き止める)ために、占有マップ情報を利用することがある。
【0096】
テクスチャ画像ジェネレータTIGは、テクスチャ画像TIを生成し、テクスチャ画像TIを各ジオメトリ画像/レイヤDGIと関連付けるように適合されることがある。
【0097】
態様によれば、テクスチャ画像ジェネレータTIGは、第1のレイヤの2Dサンプルと関連付けられたテクスチャ(属性)値T0を第1のテクスチャ画像TI0の画素値として、第2のレイヤの2Dサンプルに関連付けられたテクスチャ値T1を第2のテクスチャ画像TI1の画素値として符号化(記憶)することがある。
【0098】
代替えとして、テクスチャ画像生成モジュールTIGは、第2のレイヤの2Dサンプルと関連付けられたテクスチャ値T1を第1のテクスチャ画像TI0の画素値として、第1のレイヤの2Dサンプルに関連付けられたテクスチャ値D0を第2のジオメトリ画像GI1の画素値として符号化(記憶)することもある。
【0099】
例えば、3Dサンプルの色は、V-PCCのセクション2.2.3、2.2.4、2.2.5、2.2.8、または2.5に記載されているように得られることがある。
【0100】
2つの3Dサンプルのテクスチャ値は、第1または第2のテクスチャ画像のいずれかに記憶される。しかし、中間3Dサンプルのテクスチャ値は、この第1のテクスチャ画像TI0にも、第2のテクスチャ画像TI1にも、記憶することができない。投影された中間3Dサンプルの位置が、図3bに示すように、別の3Dサンプル(P0またはP1)のテクスチャ値を記憶するために既に使用されている占有ブロックに対応するからである。したがって、中間3Dサンプルのテクスチャ値は、手続き的に(V-PCCのセクション9.4.5)定義される位置において、第1または第2のテクスチャ画像のいずれかにおけるほかのところに位置されるEOMテクスチャブロックに記憶される。簡単に言うと、このプロセスは、テクスチャ画像中の非占有ブロックの位置を決定し、中間3Dサンプルに関連付けられたテクスチャ値を、EOMテクスチャブロックと称されるテクスチャ画像の非占有ブロックの画素値として記憶した。
【0101】
態様によれば、パディングプロセスが、ジオメトリおよび/またはテクスチャ画像に適用されることがある。パディングプロセスは、パッチ間の空の空間を埋めて、ビデオ圧縮に適した区分ごとに平滑な画像を生成するために使用されることがある。
【0102】
画像パディングの例は、V-PCCのセクション2.2.6および2.2.7に提供されている。
【0103】
ステップ3500にて、ビデオエンコーダーVENCは、生成された画像/レイヤTIおよびGIをエンコードすることがある。
【0104】
ステップ3600にて、エンコーダーOMENCは、例えばV-PCCのセクション2.2.2に詳述されるように、占有マップを画像としてエンコードすることがある。ロッシーエンコードが使用されることも、ロスレスエンコードが使用されることもある。
【0105】
態様によれば、ビデオエンコーダーENCおよび/またはOMENCは、HEVC式エンコーダーであることもある。
【0106】
ステップ3700にて、エンコーダーPIENCは、補助パッチ情報PIと、場合によってはブロックサイズT、ジオメトリ/テクスチャ画像の幅Wおよび高さHなどの追加のメタデータとをエンコードすることがある。
【0107】
態様によれば、補助パッチ情報は、(例えばV-PCCのセクション2.4.1に定義されるように)差分エンコードされることもある。
【0108】
ステップ3800にて、マルチプレクサが、ステップ3500、3600、および3700の生成された出力に適用されることがあり、その結果として、これらの出力がいっしょに多重化されて、ベースレイヤBLを表すビットストリームを生成することがある。メタデータ情報は、ビットストリーム全体のわずかな部分を表すことに留意されたい。この情報の全体が、ビデオコーデックを用いて圧縮される。
【0109】
図4は、本態様のうちの少なくとも1つによる画像ベースの点群デコーダー4000の例の概略ブロック図である。
【0110】
ステップ4100で、デマルチプレクサDMUXが適用されて、ベースレイヤBLを表すビットストリームのエンコードされた情報を逆多重化することがある。
【0111】
ステップ4200で、ビデオデコーダVDECは、エンコードされた情報をデコードして、少なくとも1つのデコードされたジオメトリ画像DGIおよび少なくとも1つのデコードされたテクスチャ画像DTIを導出することがある。
【0112】
ステップ4300で、デコーダーOMDECは、エンコードされた情報をデコードして、デコードされた占有マップDOMを導出することがある。
【0113】
態様によれば、ビデオデコーダVDECおよび/またはOMDECは、HEVC式デコーダーであることもある。
【0114】
ステップ4400で、デコーダーPIDECは、エンコードされた情報をデコードして、補助パッチ情報DPIを導出することがある。
【0115】
場合によっては、メタデータも、ビットストリームBLから導出されることがある。
【0116】
ステップ4500で、ジオメトリ生成モジュールGGMは、少なくとも1つのデコードされたジオメトリ画像DGI、デコードされた占有マップDOM、デコードされた補助パッチ情報DPI、および存在する可能性がある追加のメタデータから、再構築された点群フレームIRPCFのジオメトリRGを導出することがある。
【0117】
ジオメトリ生成モジュールGGMは、少なくとも1つのデコードされたジオメトリ画像DGI中の空でない画素を突き止めるために、デコードされた占有マップDOMを利用することもある。
【0118】
空でない画素は、上記で説明したように、デコードされた占有情報DOMの画素値およびD1~D0の値に応じて、占有ブロックまたはEOM参照ブロックのいずれかに属する。
【0119】
ステップ4500の態様によれば、ジオメトリ生成モジュールGGMは、空でない画素の座標から、中間3Dサンプルの3D座標のうちの2つを導出することがある。
【0120】
ステップ4500の態様によれば、空でない画素がEOM参照ブロックに属するときには、ジオメトリ生成モジュールGGMは、EOMコード語のビット値から、中間3Dサンプルの第3の3D座標を導出することもある。
【0121】
例えば、図3bの例によれば、EOMコード語EOMCは、中間3DサンプルPi1およびPi2の3D座標を決定するために使用される。中間3DサンプルPi1の第3の座標は、例えば、Di1=D0+3によってD0から導出されることもあり、再構築された3DサンプルPi2の第3の座標は、例えば、Di2=D0+5によってD0から導出されることもある。オフセット値(3または5)は、投影線に沿ったD0とD1の間の間隔の数である。
【0122】
態様によれば、空でない画素が占有ブロックに属するときには、ジオメトリ生成モジュールGGMは、空でない画素の座標と、少なくとも1つのデコードされたジオメトリ画像DGIのうちの1つにおける空でない画素の値と、デコードされた補助パッチ情報と、場合によっては追加のメタデータとから、再構築された3Dサンプルの3D座標を導出することもある。
【0123】
空でない画素の使用は、2D画素の3Dサンプルとの関係に基づく。例えば、V-PCCの投影では、再構築された3Dサンプルの3D座標は、深度δ(u,v)、接線シフトs(u,v)、および従接線シフトr(u,v)で表されることがある。
δ(u,v)=δ0+g(u,v)
s(u,v)=s0-u0+u
r(u,v)=r0-v0+v
ここで、g(u,v)は、デコードされたジオメトリ画像DGIの輝度成分であり、(u,v)は、再構築された3Dサンプルに関連付けられた画素であり、(δ0,s0,r0)は、再構築された3Dサンプルが属する連接成分の3D位置であり、(u0,v0,u1,v1)は、その連接成分に関連付けられたパッチの投影を包含する2Dバウンディングボックスを定義する投影面内の座標である。
【0124】
ステップ4600で、テクスチャ生成モジュールTGMは、ジオメトリRG、および少なくとも1つのデコードされたテクスチャ画像DGIから、再構築された点群フレームIRPCFのテクスチャを導出することがある。
【0125】
ステップ4600の態様によれば、テクスチャ生成モジュールTGMは、対応するEOMテクスチャブロックから、EOM参照ブロックに属する空でない画素のテクスチャを導出することがある。テクスチャ画像中のEOMテクスチャブロックの位置は、手続き的に定義される(V-PCCのセクション9.4.5)。
【0126】
ステップ4600の態様によれば、テクスチャ生成モジュールTGMは、占有ブロックに属する空でない画素のテクスチャを、第1または第2のテクスチャ画像のいずれかの画素値として直接導出することもある。
【0127】
図5は、本態様のうちの少なくとも1つによるベースレイヤBLを表すビットストリームのシンタックス例を概略的に示す図である。
【0128】
ビットストリームは、ビットストリームヘッダSH、および少なくとも1つのグループオブフレームストリームGOFSを含む。
【0129】
グループオブフレームストリームGOFSは、ヘッダHS、占有マップOMを表す少なくとも1つのシンタックス要素OMSと、少なくとも1つのジオメトリ画像(またはビデオ)を表す少なくとも1つのシンタックス要素GVSと、少なくとも1つのテクスチャ画像(またはビデオ)を表す少なくとも1つのシンタックス要素TVSと、補助パッチ情報およびその他の追加のメタデータを表す少なくとも1つのシンタックス要素PISとを含む。
【0130】
変形形態では、グループオブフレームストリームGOFSは、少なくとも1つのフレームストリームを含む。
【0131】
図6は、様々な様相および態様が実装されるシステムの例を示す概略ブロック図である。
【0132】
システム6000は、以下に記載する様々な構成要素を含む1つまたは複数のデバイスとして実施され得、本文書に記載される様相のうちの1つまたは複数を実行するように構成される。システム6000の全体または一部を構成する可能性がある機器の例は、パーソナルコンピュータ、ラップトップ、スマートフォン、タブレットコンピュータ、デジタルマルチメディアセットトップボックス、デジタルテレビジョン受像機、個人用ビデオ記録システム、コネクテッド家電、コネクテッド車両およびそれらに関連する処理システム、ヘッドマウントディスプレイデバイス(HMD、シースルー眼鏡)、プロジェクタ(ビーマ)、「cave」(複数のディスプレイを含むシステム)、サーバ、ビデオエンコーダー、ビデオデコーダ、ビデオデコーダからの出力を処理するポストプロセッサ、ビデオエンコーダーに入力を提供するプリプロセッサ、ウェブサーバ、セットトップボックス、および点群、ビデオもしくは画像を処理するその他の任意のデバイス、またはその他の通信デバイスを含む。システム6000の要素は、単独で、または組み合わせて、単一の集積回路、複数のIC、および/またはディスクリート構成要素内で実施され得る。例えば、少なくとも1つの態様では、システム6000の処理およびエンコーダー/デコーダー要素は、複数のICおよび/またはディスクリート構成要素にわたって分散されていることもある。様々な態様では、システム6000は、例えば通信バスを介して、または専用の入力および/もしくは出力ポートを通じて、他の同様のシステムまたはその他の電子デバイスに通信可能に結合されることもある。様々な態様では、システム6000は、本文書に記載される様相のうちの1つまたは複数を実装するように構成されることもある。
【0133】
システム6000は、例えば本文書に記載される様々な様相を実装するためにそこにロードされた命令を実行するように構成された少なくとも1つのプロセッサー6010を含むことがある。プロセッサー6010は、埋め込みメモリー、入出力インターフェース、および当技術分野で既知の様々なその他の回路を含むことがある。システム6000は、少なくとも1つのメモリー6020(例えば揮発性メモリデバイスおよび/または不揮発性メモリデバイス)を含むことがある。システム6000は、限定されるわけではないが、電気的消去可能プログラマブル読取り専用メモリー(EEPROM)、読取り専用メモリー(ROM)、プログラマブル読取り専用メモリー(PROM)、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、フラッシュ、磁気ディスクドライブ、および/または光学ディスクドライブを含む、不揮発性メモリーおよび/または揮発性メモリーを含む可能性があるストレージデバイス6040を含むことがある。ストレージデバイス6040は、非限定的な例として、内部ストレージデバイス、付加ストレージデバイス、および/またはネットワークアクセス可能なストレージデバイスを含むことがある。
【0134】
システム6000は、例えばデータを処理してエンコードされたデータまたはデコードされたデータを提供するように構成されたエンコーダー/デコーダモジュール6030を含むことがあり、エンコーダー/デコーダモジュール6030は、それ自体のプロセッサーおよびメモリーを含むことがある。エンコーダー/デコーダモジュール6030は、エンコードおよび/またはデコードの機能を実行するデバイスに含まれることがあるモジュール(1つまたは複数)を表すことがある。既知の通り、デバイスは、エンコードモジュールおよびデコードモジュールの一方を含むことも、または両方を含むこともある。さらに、エンコーダー/デコーダモジュール6030は、システム6000の別個の要素として実装されることもあり、または当業者には既知のようにハードウェアとソフトウェアの組合せとしてプロセッサー6010内に組み込まれることもある。
【0135】
本文書に記載される様々な様相を実行するためにプロセッサー6010またはエンコーダー/デコーダー6030にロードされるプログラムコードは、ストレージデバイス6040に記憶され、その後、プロセッサー6010による実行のためにメモリー6020にロードされることがある。様々な態様によれば、プロセッサー6010、メモリー6020、ストレージデバイス6040、およびエンコーダー/デコーダモジュール6030のうちの1つまたは複数は、本文書に記載されるプロセスの実行中に、様々な項目のうちの1つまたは複数を記憶することがある。このような記憶される項目は、限定されるわけではないが、点群フレーム、エンコードされた/デコードされたジオメトリ/テクスチャビデオ/画像もしくはエンコードされた/デコードされたジオメトリ/テクスチャビデオ/画像のいくつかの部分、ビットストリーム、行列、変数、ならびに等式、数式、演算、および演算論理の処理の中間または最終の結果を含むことがある。
【0136】
いくつかの態様では、プロセッサー6010および/またはエンコーダー/デコーダモジュール6030の内部のメモリーは、命令を記憶するため、およびエンコードまたはデコードの間に実行される可能性がある処理のためのワーキングメモリを提供するために使用される。
【0137】
しかしながら、他の態様では、処理デバイス(例えば、この処理デバイスは、プロセッサー6010であることも、エンコーダー/デコーダモジュール6030であることもある)の外部のメモリーは、これらの機能のうちの1つまたは複数のために使用されることがある。外部のメモリーは、メモリー6020、ならびに/またはストレージデバイス6040、例えばダイナミック揮発性メモリーおよび/もしくは不揮発性フラッシュメモリであることがある。いくつかの態様では、外部の不揮発性フラッシュメモリは、テレビジョンのオペレーティングシステムを記憶するために使用されることがある。少なくとも1つの態様では、RAMなどの高速外部ダイナミック揮発性メモリーが、MPEG-2 part2(ITU-T勧告H.262、およびISO/IEC13818-2としても知られており、またMPEG-2 Videoとしても知られている)、HEVC(高効率ビデオ符号化)、またはVVC(汎用ビデオ符号化)などのためのビデオ符号化およびデコード動作のためのワーキングメモリとして使用されることがある。
【0138】
システム6000の要素への入力は、ブロック6130内に示される様々な入力デバイスを通じて提供される可能性がある。このような入力デバイスは、限定されるわけではないが、(i)例えばブロードキャスタによって空中を伝送されたRF信号を受信し得るRF部分、(ii)複合入力端子、(iii)USB入力端子、および/または(iv)HDMI入力端子を含む。
【0139】
様々な態様では、ブロック6130の入力デバイスは、それぞれ関連付けられた当技術分野で既知の入力処理要素を有することがある。例えば、RF部分は、(i)所望の周波数を選択する(信号を選択する、または信号を周波数帯域に帯域制限する、とも言う)ため、(ii)選択された信号をダウンコンバートするため、(iii)より狭い周波数帯域に再度帯域制限して、(例えば)特定の態様でチャネルと呼ばれることもある信号周波数帯域を選択するため、(iv)ダウンコンバートおよび帯域制限された信号を復調するため、(v)誤り訂正を実行するため、および(vi)逆多重化して所望のデータパケットのストリームを選択するために必要な要素と関連付けられることがある。様々な態様のRF部分は、これらの機能を実行する1つまたは複数の要素、例えば周波数選択器、信号選択器、帯域制限器、チャネル選択器、フィルター、ダウンコンバータ、復調器、誤り訂正器、およびデマルチプレクサを含むことがある。RF部分は、これらの機能のうちの様々な機能、例えば受信された信号をより低い周波数(例えば中間の周波数、もしくはベースバンドに近い周波数)またはベースバンドにダウンコンバートする機能を実行する同調器を含むこともある。
【0140】
1つのセットトップボックスの態様では、RF部分、およびそれに関連付けられた入力処理要素は、有線(例えばケーブル)媒体を介して伝送されたRF信号を受信することがある。この場合、RF部分は、所望の周波数帯域にフィルタリングし、ダウンコンバートし、再度フィルタリングすることによって、周波数選択を実行することがある。
【0141】
様々な態様では、上述の(およびその他の)要素の順序を並べ替え、これらの要素の一部を省略し、かつ/または同様の、もしくは異なる機能を実行するその他の要素を追加する。
【0142】
要素を追加することは、例えば増幅器およびアナログデジタル変換器を挿入するなど、既存の要素の間に要素を挿入することを含む。様々な態様では、RF部分は、アンテナを含むこともある。
【0143】
追加として、USBおよび/またはHDMI端子は、システム6000をUSBおよび/またはHDMI接続を介して他の電子デバイスに接続するためのそれぞれのインタフェースプロセッサを含むことがある。入力処理の様々な様相、例えばリードソロモン誤り訂正が、必要に応じて、例えば別個の入力処理IC内で実施されることも、またはプロセッサー6010内で実施されることもあることを理解されたい。同様に、USBまたはHDMIインターフェース処理の様相も、必要に応じて、別個のインターフェースIC内で実施されることも、またはプロセッサー6010内で実施されることもある。復調、誤り訂正、および逆多重化されたストリームは、例えば出力デバイスにおいて提示するために必要に応じてメモリーおよび記憶要素との組合せで動作してデータストリームを処理するプロセッサー6010およびエンコーダー/デコーダー6030を含む様々な処理要素に提供されることがある。
【0144】
システム6000の様々な要素は、一体型ハウジング内に設けられることがある。一体型ハウジング内で、これらの様々な要素は、相互接続され、例えばI2Cバス、配線、およびプリント回路基板を含む当技術分野で既知の内部バスなど、適切な接続構成6140を用いて、それらの間でデータを伝送することがある。
【0145】
システム6000は、通信チャネル6060を介した他のデバイスとの通信を可能にする通信インターフェース6050を含むことがある。通信インターフェース6050は、限定されるわけではないが、通信チャネル6060を介してデータを伝送および受信するように構成されたトランシーバを含むことがある。通信インターフェース6050は、限定されるわけではないが、モデムまたはネットワークカードを含むことがあり、通信チャネル6060は、例えば有線および/または無線の媒体内に実装されることがある。
【0146】
データは、様々な態様で、IEEE802.11などのWi-Fiネットワークを用いてシステム6000にストリーミングされることがある。これらの態様のWi-Fi信号は、Wi-Fi通信用に適合された通信チャネル6060および通信インターフェース6050を介して受信されることがある。これらの態様の通信チャネル6060は、通常は、ストリーミングアプリケーションおよびその他のオーバーザトップ通信を可能にするインターネットを含む外部ネットワークへのアクセスを提供するアクセスポイントまたはルータに接続されることがある。
【0147】
他の態様は、入力ブロック6130のHDMI接続を介してデータを配信するセットトップボックスを用いて、ストリーミングされたデータをシステム6000に提供することがある。
【0148】
さらに他の態様は、入力ブロック6130のRF接続を用いて、ストリーミングされたデータをシステム6000に提供することがある。
【0149】
シグナリングは、様々なやり方で達成される可能性があることを理解されたい。例えば、様々な態様で、1つまたは複数のシンタックス要素、およびフラグなどが、対応するデコーダーに情報をシグナリングするために使用されることがある。
【0150】
システム6000は、ディスプレイ6100、スピーカー6110、およびその他のペリフェラルデバイス6120を含む、様々な出力デバイスに出力信号を提供することがある。その他のペリフェラルデバイス6120は、態様の様々な例では、独立型DVR、ディスクプレイヤ、ステレオシステム、照明システム、およびシステム3000の出力に基づいて機能を提供するその他のデバイスのうちの1つまたは複数を含むことがある。
【0151】
様々な態様では、制御信号は、AV.LINK(Audio/Video Link)、CEC(コンシューマーエレクトロニクスコントロール)、またはユーザの介入有りもしくは無しのデバイス間制御を可能にするその他の通信プロトコルを用いて、システム6000と、ディスプレイ6100、スピーカー6110、またはその他のペリフェラルデバイス6120との間で通信されることがある。
【0152】
出力デバイスは、それぞれのインターフェース6070、6080、および6090を通じて専用の接続を介して、システム6000に通信可能に結合されることがある。
【0153】
代替えとして、出力デバイスは、通信インターフェース6050を介して通信チャネル6060を用いて、システム6000に接続されることもある。ディスプレイ6100およびスピーカー6110は、例えばテレビジョンなどの電子デバイス内でシステム6000のその他の構成要素とともに単一のユニット内に一体化されることもある。
【0154】
様々な態様では、ディスプレイインターフェース6070は、例えばタイミング制御装置(T Con)チップなどのディスプレイドライバを含むことがある。
【0155】
ディスプレイ6100およびスピーカー6110は、あるいは、例えば入力6130のRF部分が別個のセットトップボックスの一部である場合には、他の構成要素のうちの1つまたは複数から分離していることもある。ディスプレイ6100およびスピーカー6110が外部の構成要素であることがある様々な態様では、出力信号は、例えばHDMIポート、USBポート、またはCOMP出力を含む専用の出力接続を介して提供されることがある。
【0156】
V-PCCでは、場合により行われることがある占有マップのサブサンプリング(通常は4×4の画素解像度)によって生じるエイリアシング効果を除去するため、またエンコードエラーを減衰させるために、ジオメトリ平滑化(フィルタリング)が使用される。さらに厳密には、エイリアシング効果およびエンコードエラーは、パッチの境界(縁部)において最も顕著なので、ジオメトリ平滑化の目的は、2つのパッチの間の継ぎ目を可能な限り平滑(シームレス)にすることである。
【0157】
V-PCCでは、2つのジオメトリ平滑化方法が使用される。第1の、3Dフィルタリングに基づく方法は、品質メトリクスでは良い結果が得られるが、計算負荷が非常に高い。ジオメトリ平滑化のための3Dフィルタリングの背後にある主な考えは、3Dサンプル(パッチの境界付近に位置する2Dサンプルに対応する)を、それらに最も接近した隣接する3Dサンプルの重心に移動させるというものである。したがって、3Dフィルタリングを3Dサンプル「p」(パッチの境界付近の2Dサンプルに対応する)に適用することは、以下のように行われる。
-「p」から最大距離Dmax未満の3D距離にある、N個の最も接近した隣接する3Dサンプルpn(i),i=0,…,N-1を選択する。
-Nが最小値Nmin未満である場合には、次の3Dサンプル「p」(パッチの境界付近の次の2Dサンプルに対応する)に移る。
-全ての隣接する3Dサンプルpn(i)が、フィルタリングされるべきカレントパッチと同じパッチに属する2Dサンプルに対応する場合には、
-隣接する3Dサンプルpn(i)の重心を計算し、ここで、重心は、全ての隣接する3Dサンプルpn(i)の3Dジオメトリ座標の平均であり、
-3Dサンプル「」を重心に移動させる。
【0158】
第2の方法は(ISO/IEC JTC1/SC29/WG11 MPEG2018/N18017、Oct. 2018,Macau、CNのセクション2.2.5)は、2D解析と3D処理を混合して使用する。この方法では、計算の複雑さは大幅に軽減されるが、フィルタリングされた点群ジオメトリの品質メトリクスも大幅に低下する。
【0159】
少なくとも1つの態様の一般的な様相によれば、3D空間における3Dサンプルの再構築を行わずに2D空間内でジオメトリ点群の解析およびフィルタリングを実行することによりまた既存の点を移動させることに加えて、点を除去したり、新たな点を追加したりすることもできるフレキシブルなフィルタリング演算子を使用することにより、点群フレームのジオメトリを平滑化(フィルタリング)する方法が提供される。
【0160】
3Dサンプルを処理する代わりに、2Dの解析およびフィルタリングを実行することで、計算の複雑さは大幅に軽減される。
【0161】
フレキシブルなフィルタリングを使用することで、フィルタリングの品質が向上する。
【0162】
したがって、この方法は、複雑すぎるか、または十分なフィルタリング能力を提供しない既存の方法と比較して、より良好な複雑さとフィルタリング品質のトレードオフを提供する。
【0163】
図7は、少なくとも1つの態様の例による点群フレームのジオメトリをフィルタリングする方法の概略ブロック図である。
【0164】
点群フレームのジオメトリは、上記で説明したように占有マップおよび補助パッチ情報PIから生成される少なくとも1つのジオメトリ画像GIによって表される。図3aに示すように少なくとも1つのパッチを識別するキャンバスも、点群フレームのジオメトリを定義するために使用される。各パッチは、上記で説明したように、投影軸に沿った連接成分の2D投影を表す。上記で説明したように、パッチが修正されていてもいなくても、点群フレームの3Dサンプルの座標は、キャンバスのパッチから得られるので、キャンバス上でパッチを修正することは、点群フレームのジオメトリを修正することになる。
【0165】
この方法は、ステップ7010、7020、および7030をキャンバスのそれぞれのカレントパッチpに適用する。
【0166】
ステップ7010で、モジュールは、少なくとも1つの候補パッチCAN(p)から、カレントパッチpの少なくとも1つの隣接するパッチNei(p)を取得することがある。
【0167】
図8aの例では、カレントパッチpは、輪郭のない灰色にて描画され、候補パッチCAN(p)は、黒い輪郭でマークされている。カレントパッチpの隣接である候補パッチは、カレントパッチpと同じ灰色で描画され、カレントパッチの隣接でない候補パッチは、薄い灰色で描画されている。
【0168】
ステップ7020で、モジュールは、少なくとも1つの隣接するパッチNei(p)の2Dサンプルを、カレントパッチpの2Dサンプルが投影されている投影面に再投影することによって、カレントパッチpに関する参照輪郭RC(p)を取得することがある。
【0169】
最初に、隣接するパッチNei(p)に関連付けられた投影軸に従って隣接するパッチNei(p)の2Dサンプルを逆投影することによって、3Dサンプルが取得される。パッチの投影軸は、補助パッチ情報PIから導出されることがある。例えば、V-PCCでは、投影軸は、1)連接成分の3Dサンプルを包含する3Dバウンディングボックスの6つの向き付けられた面のうちの1つを示す情報、2)面の法線に関する情報から導出されることがある。
【0170】
次に、カレントパッチpに関連付けられた投影軸に沿って3Dサンプルを投影することによって、再投影された2Dサンプルが取得される。
【0171】
そして、参照輪郭RC(p)は、再投影された2Dサンプルのセットである。
【0172】
2Dサンプルを異なる投影面に再投影するのに、2Dサンプルを3D空間に逆投影し、3Dサンプルを別の投影面に投影する必要がある場合でも、ステップ7020は、3D空間におけるフィルタリング動作を実行せず、それにより複雑さを制限することを留意されたい。
【0173】
ステップ7020の態様の変形形態によれば、隣接するパッチNei(p)の境界に沿って位置する2Dサンプルのみが考慮されることもある。
【0174】
例えば、パッチの2Dサンプルは、それらの2Dサンプルが所与の閾値よりもパッチの縁部に近接しているときに、パッチの境界に沿っているとみなされる。
【0175】
ステップ7020の態様の変形形態によれば、キャンバスの位置ごとに、再投影された2Dサンプルが1つだけ保持される。
【0176】
例えば、所与の位置に保持される再投影された2Dサンプルは、その位置に位置するカレントパッチpの2Dサンプルの深度に最も近接した深度を有する再投影2Dサンプルである。
【0177】
したがって、複数の隣接するパッチNei(p)の2Dサンプルを同じ投影面に再投影することによって、再投影された2Dサンプルは、真の(すなわち元の、エンコードエラーのない)位置に収まる傾向がある。境界に沿って位置する隣接するパッチの2Dサンプルのみが投影されるときには、それらの位置は、隣接するパッチNei(p)とカレントパッチpの間の真の輪郭に対応する可能性が高い。
【0178】
図8bの例では、カレントパッチp(灰色)は、4つの隣接するパッチ(黒線)の再投影された2Dサンプルとともに示されている。再投影された2Dサンプルは、閉じた輪郭を形成しないこともあることに留意されたい。
【0179】
ステップ7030で、モジュールは、カレントパッチpの輪郭C(p)を、参照輪郭RC(p)に適合するように修正することがある。輪郭C(p)は、カレントパッチpの少なくとも1つの2Dサンプルのセットである。例えば、これらの2Dサンプルは、カレントパッチpの範囲を定める、すなわちその境界(縁部)に沿って位置する。
【0180】
ステップ7010の態様によれば、候補パッチCAN(p)の2Dサンプルに対応する3Dサンプルと隣接するパッチNei(p)の2Dサンプルに対応する3Dサンプルとが互いに近接しているときには、候補パッチCAN(p)は、カレントパッチpの隣接するパッチNei(p)であることがある。
【0181】
ステップ7010の本態様の変形形態によれば、モジュールは、カレントパッチpの2Dサンプルおよび各候補パッチCAN(p)の2Dサンプルを逆投影することによって、3Dサンプルを取得することがある。モジュールは、次いで、全ての3Dサンプルの間で3D検索を実行して、カレントパッチpの2Dサンプルに関する3Dサンプルおよび候補パッチCAN(p)の2Dサンプルに関する3Dサンプルによって形成される最も近接した3Dサンプルの対を求める。
【0182】
3Dサンプルの対が、隣接する基準、例えば閾値未満の距離を満たした場合には、候補パッチCAN(p)は、カレントパッチpの隣接Nei(p)とみなされる。そうでない場合には、そのようにみなされない。
【0183】
この変形形態は非常に精密であるが、それは、計算の複雑さが非常に高い。
【0184】
ステップ7010の本態様の変形形態によれば、モジュールは、候補パッチCAN(p)の3Dバウンディングボックスがカレントパッチpの3Dバウンディングボックスと交差するかどうかを決定することもある。交差する場合には、候補パッチCAN(p)は、カレントパッチpの隣接Nei(p)とみなされる。そうでない場合には、そのようにみなされない。
【0185】
この変形形態は、パッチの3Dバウンディングボックスがその原点(通常は左下前方の隅に対応する)の3D座標と、その幅、高さ、および深度とによって定義されるので、計算の複雑さがそれほど高くなく、非常に使用しやすい。この情報は、補助パッチ情報PIの一部として利用可能である。
【0186】
ステップ7010の態様によれば、候補パッチは、以下のように取得されることがある。
Patch Block Filtering
For all patch p
| // Patch Initialization: copy OCM and Geo[0] in patch
| For V in [ 0; sizeV0 ]
| | For U in [ 0; sizeV0 ]
| | | if blockToPatch( U,V ) == patchIndex
| | | | copy geometryVideo[0] in patchdephtMap
| | | | copy occupancyMapVideo in patchOccupancyMap
| dilate depth map
| // Generate 3D border points
| identifyBoundaryPoints
| for all border points
| | generate 3D points
| compute 3D bounding box of border points
入力:
-パッチリスト{p}
-占有マップ画像(OMI)
-マップ0のジオメトリ画像(GI0)
出力:
-各パッチpについて、添付された以下の情報とともにCAN(p)を得る。
・p内部の全ての点の拡張されたジオメトリ画像0(UGI0)
・p内部の全ての点の占有マップ(OM)
・3D境界点
・3D境界点の3Dバウンディングボックス
プロセス:
-入力として、最適化の目的のために、GI0内の占有点の深度のみが使用されるが、ジオメトリGI0およびGI1の両方が使用されることも可能である。GI0のみを使用することは、それにより時間がかかる可能性があるGI1に対する拡張フェーズが回避されるので、このプロセスにおける最適化である。
-深度マップ拡張→現在の点の深度値を「空の空間」に伝播させて、我々が任意の境界パッチの最も近接した点の深度を知ることができるようにする。
-identifyBoundaryPoints→この段階は、反復的にする(通常、反復数は2に等しい)こともでき、点が境界パッチ点とみなされなければならないかどうかを識別することを可能にする。
1-パッチの各点について、ほぼ1つの隣接画素(右上の画素、下の画素、下方隣接の画素)が非占有として設定されている場合には、点は、境界点としてマークされる。我々は、IBP1と呼ばれる、パッチ境界の外部リングに識別された境界点のリストを有する。
2-全てのIBP1の点に対して同じ動作を再度行って、パッチ境界の第2のリングの内側により多くの点を得る。その結果得られるのは、IPB2と呼ばれる、第2の識別された境界点のリストである。
-IBP1およびIBP2として識別された全ての点について、3D点を再構築し、対応する3Dバウンディングボックスを計算する。
【0187】
IBP1およびBP2は、我々のCAN(p)のリストである。
【0188】
ステップ7020の態様によれば、カレントパッチpの少なくとも1つの隣接するパッチNei(p)は、以下のように少なくとも1つの候補パッチCAN(p)から取得されることがある。
// Set neighboring patch lists
For all patches
| For all patches de CAN(p)
| | if patches intersect
| | | add patch in neighboring patch lists
入力:
-パッチリスト
-以前のステップのCAN(p)の候補パッチ
出力:
-隣接パッチのリスト→Nei(p)
プロセス:
pおよびCAN(p)のバウンディングボックスが交差する場合には、CAN(p)はNei(p)として設定される。
【0189】
ステップ7030の態様によれば、サブステップ7031で、カレントパッチpの少なくとも1つの2Dサンプルを追加および/または除去することによって、輪郭C(p)が修正されることがある。
【0190】
図8cに示すように、カレントパッチpのいくつかの領域(少なくとも1つの2Dサンプル)は、次いで除去されることがあるが(右上)、図8bのパッチと比較して他の領域が追加されることもある(左下)。図8dは、修正されたカレントパッチpを示している。
【0191】
サブステップ7031の態様によれば、モジュールは、輪郭C(p)の全ての2Dサンプルを個別に処理する。したがって、輪郭C(p)の各2Dサンプルについて、
-輪郭C(p)の2Dサンプルが参照輪郭RC(p)の外側にある場合には、モジュールは、そのような2Dサンプルを侵食して、それをカレントパッチpから除去し、次いで、その隣接する2Dサンプルを輪郭C(p)の2Dサンプルとしてマークし、それらを再帰的に処理し、
-輪郭C(p)の2Dサンプルが参照輪郭RC(p)の内側にある場合には、モジュールは、そのような2Dサンプルを拡張し、次いで、追加の2Dサンプルを輪郭C(p)の2Dサンプルとして新たにマークし、それらを再帰的に処理する。
【0192】
図9は、輪郭C(p)の2Dサンプルを、参照輪郭RC(p)に対するそれらの位置に基づいて再帰的に侵食する/拡張することによる輪郭フィルタリングの例を示す図である。
【0193】
左側に、初期の反復の結果が示されている。この格子は、キャンバスの一部分を表し、白いマスは、空の位置を表し、灰色のマスは、輪郭C(p)の2Dサンプルを表し、黒いマスは、参照輪郭RC(p)の2Dサンプルを表す。「E」とマークされている2Dサンプルは侵食すなわち除去され、「D」とマークされている2Dサンプルは拡張される、すなわち隣接する空の位置が新たな2Dサンプルで埋められる。
【0194】
真ん中には、2回目の反復の結果が示されており、右側には、最後の反復の結果が示されている。
【0195】
サブステップ7031の本態様の変形形態によれば、参照輪郭RC(p)の外側の輪郭C(p)の2Dサンプルのみが処理される。すなわち、2Dサンプルは、除去されることは可能であるが、追加されることはできない。
【0196】
サブステップ7031の本態様の変形形態によれば、参照輪郭RC(p)の内側の輪郭C(p)の2Dサンプルのみが処理される。すなわち、2Dサンプルは、追加されることは可能であるが、除去されることはできない)。
【0197】
図10に示すサブステップ7031の態様の変形形態によれば、モジュールは、以下のように、輪郭C(p)の2Dサンプルが参照輪郭RC(p)の内側にあるか外側にあるかを決定する。
【0198】
輪郭C(p)の各2Dサンプル「p」について、
-2Dサンプル「p」の法線を計算し、ここで、この法線は、カレントパッチpの外側を指しており、
-ローカルウィンドウ(local window)を2等分する、2Dサンプル「p」の法線に対する接線を計算し、
-ローカルウィンドウの各半分内の参照輪郭RC(p)の2Dサンプルの量、すなわちローカルウィンドウの内側半分内の参照輪郭RC(p)の2Dサンプルの量に対応するCin(p)、およびローカルウィンドウの外側半分内の参照輪郭RC(p)の2Dサンプルの量に対応するCout(p)を推定し、
-Cin(p)がCout(p)より大きい場合には、2Dサンプル「p」は、参照輪郭RC(p)の外側にある。そうでない場合には、2Dサンプル「p」は、参照の内側にある。
【0199】
一態様では、2Dサンプル「p」の法線を計算するために、以下の方法が用いられる。例えば浮動小数点計算を用いる方法など、他の方法も使用されることが可能である。以下の方法は、ビット精度の高いシステムのいくつかの利点を提示することができる。
【0200】
この方法では、2D法線は、2Dの離散空間内で、現在の画素「p」の周りの画素の占有マップの値を解析することによって、計算される。法線の値は、次の8つの可能な向き、すなわち0度、45度、90度、135度、180度、225度、270度、315度のうちの1つである可能性がある。画素「p」の向き(法線)は、例えば、図13に示すように、位置「p」の周りの3×3窓内の占有された占有マップ画素の分布に基づいて選択されることが可能である。法線の計算をさらに簡略化するために、向きは、あらかじめ計算された参照テーブルから直接取得されることも可能である。参照テーブルへのインデックスは、画素「p」の8つの隣接する画素の占有マップ値の組合せに基づく。インデックスIDXは、以下のように計算されることが可能である。
#define IDX( tl, t, tr, l, v, r, bl, b, br ) \
( ( tl << 7 )|( t << 6 )|( tr << 5 )|( l << 4 )|
( r << 3 )|( bl << 2 )|( b << 1 )|( br ) )
ここで、tlは左上の画素であり、tは上の画素であり、trは右上の画素であり、lは左の画素であり、rは右の画素であり、blは左下の画素であり、bは下の画素であり、brは右下である。インデックスIDXは、[0:255]で定義され、あらかじめ計算された法線値のLUTにアクセスするために直接使用されることが可能である。法線値のLUTは、以下のように定義される。
static const std::vector<uint8_t> g_orientation = { 0, 0, 6, 0, 0, 0, 0, 6, 4, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 4, 3, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0, 4, 1, 0, 0, 0, 1, 0, 1, 0, 2, 3, 0, 0, 1, 2, 0, 0};
【0201】
この場合には、離散法線「n」の計算は、以下のように全ての2D輪郭点について直接実行されることが可能である。
int8_t n = g_orientation[ IDX( p[c - w - 1], p[c - w], p[c - w + 1],
p[c - 1], p[c], p[c + 1],
p[c + w - 1], p[c + w], p[c + w + 1] ) ];
【0202】
ローカルウィンドウの所与の半分の内側の参照輪郭RC(p)の2Dサンプル(図10中の黒いマス)の量を推定するためには、いくつかの方法が用いられ得る。
【0203】
態様によれば、参照輪郭RC(p)の2Dサンプルの量は、それらの位置に関わらず、所与の半分の内側の参照輪郭RC(p)の2Dサンプルの数である。
【0204】
態様によれば、参照輪郭RC(p)の2Dサンプルの量は、現在の2Dサンプル「p」に対する参照輪郭RC(p)の各2Dサンプルの位置を考慮に入れた加重和である。
【0205】
【数1】
【0206】
ここで、「r」は、所与の半分の窓内の参照輪郭RC(p)の2Dサンプルを示し、Wは、2Dサンプル「r」の数を示し、d(・,・)は、現在の2Dサンプル「r」と2Dサンプル「p」の間のユークリッド距離を示す。
【0207】
サブステップ7030の態様によれば、モジュールは、輪郭C(p)のパラメータ化されたモデリング曲線、および参照輪郭RC(p)のパラメータ化されたモデリング曲線を取得することがあり、輪郭C(p)は、それが参照輪郭RC(p)のパラメータ化されたモデリング曲線に重なるように輪郭C(p)のパラメータ化されたモデリング曲線のパラメータを調節することによって修正されることがある。
【0208】
例えば、モデリング曲線は、スプラインであることもある。
【0209】
ステップ7030の態様によれば、サブステップ7032で、輪郭C(p)は、カレントパッチpの少なくとも1つの2Dサンプルをカレントパッチ「p」の投影軸に沿って再配置(移動)することによって、修正されることがある。
【0210】
この移動の目的は、カレントパッチpの2Dサンプルに対応する3Dサンプルと参照輪郭RC(p)の隣接する2Dサンプルに対応する3Dサンプルとの間の継ぎ目を回避することである。
【0211】
図11は、サブステップ7032の態様の例を示す図である。
【0212】
上側には、ステップ7032の入力である、輪郭C(p)の初期状態が示されており、この格子は、キャンバスの一部分を表し、ここで、白いマスは、空の位置を表し、灰色のマスは、カレントパッチpの2Dサンプルを表し、黒いマスは、参照輪郭RC(p)の2Dサンプルを表す。各位置における深度も、数字として示されている。この格子では、カレントパッチpの2Dサンプル(灰色のマス)は、参照輪郭RC(p)の2Dサンプル(黒いマス)の隣接であるが、それらが対応する3Dサンプルは、必ずしもそれらに隣接していないことが分かる。例えば、左の列で、キャンバスからの深度8のカレントパッチpの2Dサンプルは、その2つの参照輪郭RC(p)の隣接する2Dサンプルに対応する2つの3Dサンプルから距離3(から11へ)または4(から12へ)のところにある。
【0213】
下側には、サブステップ7032のフィルタリングの結果が示されており、黒い数字を有する灰色のマスは、カレントパッチpの再配置された2Dサンプルであり、それらそれぞれの参照輪郭RC(p)の隣接する2Dサンプルに(深度が)実質的により近くなっている。
【0214】
態様によれば、ステップ7020、サブセット7031および7032は、以下のプロセスに従う。
入力:
・パッチリスト
・7010の出力であるNei(p)
・Nei(p)の3D境界点
・OMおよびGEO画像
出力:
・除去された点がある可能性がある修正されたOM(少なくとも同じもの、または除去された点があるもの)
プロセス:
続くプロセスでは、#linesは、実装の最適化を表す。それは、最も接近した点を投影し、深度マップ中の対応する深度を記憶するので、全てのNei(p)の全ての点の現在の深度の距離の計算を回避する。
【0215】
境界点の全ての点について、以下を反復的に行う。
-隣接画素(右上の画素、下の画素、下方隣接画素)を考慮して、隣接の数を計算する。
-ローカルウィンドウ(左上下右)内に隣接点が見つからないときには、点を迅速に除去するために簡単なステップが用いられる。
-隣接の数が4未満である場合には、特許文献1と同様に行う。
【0216】
変形形態として、サブステップ7031で、輪郭C(p)の2Dサンプルの侵食または拡張が行われることがある。
// Smoothing
For all patches
| // Build neighbor Depth
# For all neighboring patch Nei(p)
# | For all 3D border points
# | | if point is in the current patch bounding box
# | | | project 3D point in 2D patch space (x,y,z) => (u,v,d)
# | | | store depth of the nearest points in the depth Map
| For iter in [0; filteringSize [
| | For each 2D point with ocm equal to 1
| | | Count the number of patch points in the neighborhood of the current point (left,top,right,botton points with ocm equal to 1)
| | | if number of neighbors is 0
| | | | remove point (set ocm to 0)
| | | if number of neighbors is less than 4
| | | | Compute contour orientation based on the ocm
| | | | for all point in the orientation of the local window of size [localWindowSizeX; localWindowSizeY]
| | | | | Find the closest border point of the neighborhood patches projected in the same uv position
| | | | | if exist
| | | | | | sum the 3D distance between the current point and the closest point of the neighbor patches
| | | | | | sum the 3D distance between the erode point and the closest point of the neighbor patches
| | | | if sum of the current points is superior to the sum computed with the erode point
| | | | | remove point ( set ocm to 0 )
態様によれば、平滑化のパラメータは、以下のように取得されることがある。
occPrecDefault=2;
filteringSizeDefault=1;
localWindowSizeXDefault= 2;
localWindowSizeYDefault= 1;
stuffingSizeDefault = 2;

if (OccPrec is equal to occPrecDefault) {

filteringSize=filteringSizeDefault;
LocalWindowSizeX= localWindowSizeXDefault;
LocalWindowSizeY= localWindowSizeYDefault;
stuffingSize= stuffingSizeDefault ;

} else if (OccPrec is equal to occPrecDefault*n) {

filteringSize=filteringSizeDefault* n;
LocalWindowSizeX= localWindowSizeXDefault*n ;
LocalWindowSizeY= localWindowSizeYDefault*n ;
stuffingSize=stuffingSizeDefault *n

}
ここで、
【0217】
【表1】
【0218】

ステップ7030の態様によれば、サブステップ7033で、輪郭C(p)は、カレントパッチpの2Dサンプルに対応する3Dサンプルと参照輪郭RC(p)の2Dサンプルに対応する3Dサンプルとの間に少なくとも1つの追加の3Dサンプルを追加することによって、修正されることがある。
【0219】
本態様は、これらの3Dサンプルの間の隙間を埋めることを可能にする。
【0220】
少なくとも1つの追加の3Dサンプルを追加することは、カレントパッチp内に少なくとも1つの2Dサンプルを追加することを伴うが、その少なくとも1つの2Dサンプルの位置は、カレントパッチpの別の2Dサンプルによって既に占有されている。
【0221】
態様によれば、カレントパッチpの同じ2Dサンプルが、3Dサンプル、および少なくとも1つの追加の3Dサンプルに対応し、その少なくとも1つの追加の3Dサンプルの深度値は、少なくとも2つの3Dサンプルの線形補間深度値によって得られる。
【0222】
別の態様によれば、少なくとも1つの追加の3Dサンプルを追加するために、特許文献2に記載されるジオメトリに基づくスタッフィング方法が使用される。
【0223】
態様によれば、パッチの境界の外部および/または内側に向かってスタッフィングされた3D点を追加するために、輪郭の向きが考慮されることもある。
【0224】
図12は、サブステップ7033の態様の例を示す図である。
【0225】
上側には、図11の左側の格子の左の列と、キャンバス(2D座標)上での投影軸(深度)に沿った2Dサンプルのプロットとが示されている。図示のように、投影軸に沿って走査するときには、カレントパッチpの2Dサンプル(灰色のマス)に対応する3Dサンプルと参照輪郭RC(p)の2Dサンプル(黒いマス)に対応する3Dサンプルとの間にシーム(seem)(空所(void))が発生することがある。
【0226】
真ん中には、図11の右側の格子(サブステップ7032の出力)の左の列と、キャンバス(2D座標)上での投影軸(深度)に沿った2Dサンプルのプロットとが示されている。
【0227】
下側には、2つの新たな追加の3Dサンプル(点線のマス)の位置が、固定されていることもビットストリーム内でシグナリングされることもある閾値であるTより大きな深度差を有する既存の3Dサンプルの対の位置から線形補間されているときの、サブステップ7033の出力である、フィルタリングの結果が示されている。
【0228】
例えば、T=1である。
【0229】
このサブステップ7033によれば、追加の3Dサンプルは、直接3Dで作成されることがあり、したがって、その色情報(テクスチャ)を符号化するためのキャンバス内の対応する位置を有していない。
【0230】
サブステップ7033の態様によれば、モジュールは、少なくとも2つの3Dサンプルの色情報を補間することによって、少なくとも1つの追加の3Dサンプルの色情報を取得する。
【0231】
変形形態によれば、この少なくとも2つの3Dサンプルは、それらの色情報が、ビットストリーム中に符号化されている。
【0232】
変形形態によれば、この少なくとも2つの3Dサンプルは、少なくとも1つの追加の3Dサンプルの深度値を取得するために使用される2つの3Dサンプルである。
【0233】
サブステップ7033の態様によれば、モジュールは、例えばEOMコード語と同じ手法を用いて、少なくとも1つの追加の3Dサンプルの色情報をテクスチャ画像中の非占有ブロック中にエンコードする。
【0234】
サブステップ7033の態様によれば、モジュールは、特許文献3に記載されるように、少なくとも1つの追加の3Dサンプルの色情報をEOMテクスチャパッチとしてエンコードする。
【0235】
サブステップ7031、7032、および7033は、互いに補完するが、それらは、独立して使用され得る。図7は、この方法の態様の例を示すが、これらの変形形態は、それらの1つ、またはそれらの任意の組合せを排除することがある。
【0236】
図7の方法は、いくつかのパラメータを利用して、その挙動を調節する。それらのパラメータは、現在のV-PCC仕様で現在のジオメトリ平滑化フィルターのパラメータをシグナリングするのと同様のやり方で、ビットストリーム内でシグナリングされることがある(V-PCCのセクション7.3.18の「ジオメトリ平滑化」パラメータ参照)。
【0237】
さらに、本態様の1つまたは複数の様相は、(例えば以下に述べるように3Dグリッドを用いて)3D点群またはよりコストがかかる3D空間ではなく2D空間内の3Dの再構築された点の色属性などの、1つまたは複数の属性の平滑化またはフィルタリングに関する。
【0238】
点群を符号化するときに良好な圧縮効率を実現するために現況技術で使用される手法のうちの1つは、複数のジオメトリおよびテクスチャ属性情報を、2D画像の同じ位置(画素)に投影することにある。すなわち、入力点群あたりいくつかのレイヤの情報を符号化する。通常は、2つのレイヤが考慮される。これは、入力点群あたり、いくつかの2Dジオメトリおよび/または2Dテクスチャ属性画像が生成されることを意味する。いくつかの態様にて、2つの深度画像(ジオメトリ用)および色画像(テクスチャ用)は、入力点群ごとに符号化される。
【0239】
(3D領域における)属性の平滑化
2つの異なるパッチに由来する2つの近い3D点の属性(例えば色)が、視覚的品質への影響(損傷)を有するビデオ符号化における属性の量子化段階が原因で、有意に異なる色を有することがある。このため、2Dパッチの境界として検出される3D点の属性を平滑化することを目的として、3D色平滑化プロセスが、V-PCCに導入されている。基本的には、このプロセスは、それ自体の周りのいくつかの選択された点の平均色を計算する。
【0240】
この3D属性平滑化プロセス(3D色平滑化と呼ばれる)の1つのバージョンは、KD木を用いて平均属性値を計算する。このプロセスは、次いで、現在の点の周りのN個の隣接3D点を探索して、属性値重心(例えば平均色)を計算する。次いで、プロセス(3D色グリッド平滑化と呼ばれる)が、3Dグリッドを使用して3Dの8×8×8のセルのそれぞれの平均属性値を計算し、3Dグリッドについてのトライリニアフィルタリングを計算することによって各境界点の平均属性値を補間する。
【0241】
3D色グリッドジオメトリ平滑化の例は、図14に示されており、これとともに説明する。3Dグリッドジオメトリ平滑化は、次の3つの主要な段階
1)色属性重心グリッド生成
2)境界点の識別、および
3)3Dグリッド色属性平滑化
からなる。
【0242】
本態様の1つまたは複数の様相は、これとともに説明するように、これらの段階、特に3Dグリッド色属性平滑化段階に、改良点および利点を提供する。
【0243】
色属性重心グリッド生成段階
この段階の例は、例えば、V-PCCの条項9.6.3.2「属性中心グリッドの識別」に記載されている。
本プロセスへの入力は:
-再構築された位置RecPcGeom[i], 0≦i< PointCntを含むアレイ、
-属性インデックスaIdx、
-再構築された属性RecPcAttr[aIdx][i], 0≦i< PointCntを含むアレイ、および
-属性成分の数を示すnumComps。
本プロセスの出力は:
-再構築された中心グリッド属性値attrCenterGrid[ i ][k], 0≦i< numCells and k = 0 to numComps -1, inclusive、
-再構築された中心グリッド平均輝度値meanLuma[i], 0≦i< numCellsを含むアレイ、および
-再構築された中心グリッド輝度中央値attrMean[i][k], 0≦i< numCells and k = 0 to numComps -1, inclusiveを含むアレイ。
attrCenterGrid[x][y][z][m]、meanLuma[x[y][z]は、0から(numCells - 1)の範囲(両端含む)の全てのx、y、およびzと、0からnumComps - 1の範囲(両端含む)のmとについて、0に初期化される。
条項9.6.3.1は、0から(numCells - 1)の範囲(両端含む)の全てのx、y、およびzについてアレイcellDoSmoothing[x][y][z]、cellCnt[x][y][z]、cellPatchIdx[x][y][z]を得るために適用される。
i = 0から(PointCnt - 1)(両端含む)について、以下が適用される。
変数xIdx、yIdx、およびzIdxは、以下のように導出される。
xIdx = (RecPcGeom[i][0] / GridSize)
yIdx = (RecPcGeom[i][1] / GridSize)
zIdx = (RecPcGeom[i][2] / GridSize)
cellDoSmoothing[xIdx][yIdx][zIdx]が1に等しい場合には、以下が適用される。
for( k= 0 ; k < numComps ; k++ )
attrCenterGrid[xIdx][yIdx][zIdx][k] + = RecPcAttr[aIdx][i][k];

0から(numCells - 1)の範囲(両端含む)のx、y、zについてcellCnt[x][y][z]が0より大きい場合には、そのセルに属する点について、インデックスaIdxを有する属性の平均および中央輝度値が計算され、それぞれアレイmeanLuma[x][y][z]およびmedianLuma[x][y][z]に割り当てられる。また、attrCenterGridの輝度値は、centroidLuma[x][y][z]に割り当てられる。
色属性の場合には、以下のように、属性値attrValue[k], 0≦k<3に対応する輝度値を決定する。
lumaValue=0.2126 * RecPcAttr[aIdx][0]+0.7152 * RecPcAttr[aIdx][1] + 0.0722 * RecPcAttr[aIdx][2];
meanLuma[xIdx][yIdx][zIdx] += lumaValue;
属性中心グリッドを導出する
for(k = 0 ; k < numComps ; k++ )
attrCenterGrid[xIdx][yIdx][zIdx][k] = attrCenterGrid[xIdx][yIdx][zIdx][k] / cellCnt[xIdx][yIdx][zIdx]
meanLuma[xIdx][yIdx][zIdx] = meanLuma[xIdx][yIdx][zIdx] / cellCnt[xIdx][yIdx][zIdx]。
【0244】
境界点の識別
この段階の例は、例えば、V-PCCの条項9.6.4「境界点の識別」に記載されている。
本プロセスへの入力は:
-占有マップフレームoFrame、
-アクティブなgeometry_patch_parameter_setからのパッチインデックス情報
本プロセスの出力は:
再構築された点群のパッチ境界タイプのリストを保持するコンテナrecPCBoudanyPointType。
変数BoundaryPointTypeは、点がパッチ境界の近くに位置するかどうかを識別する。BoundaryPointTypeは、0から1の範囲(両端含む)の値を取り得る。BoundaryPointTypeの値0は、点がパッチ境界の近くではないことを示す。2次元の(asps_frame_width)*(asps_frame_height)アレイBPTypesは、投影された点群フレーム中の各点のBoundaryPointTypeの値を記憶する。
1次元リストrecPCBoundaryPointTypeは、oFrame[y][x]の値が0に等しくない投影された点群フレーム中の各点(x、y)についてのBoundaryPointTypeを記憶する。BoundaryPointTypeの値は、以下のようにBPTypes[y][x]およびrecPCBoundaryPointTypeに割り当てられる。
pointIndex = 0;
for(x = 0; x < asps_frame_width; x++ )
for(y = 0; y < asps_frame_height; y++ ) {
BPTypes[y][x] = 0
recPCBoundaryPointType[ pointIndex ] = 0
if(oFrame[y][x] ! = 0 )
if((oFrame[y][x-1]= = 0)||(oFrame[y][x+1]= =0)||
(oFrame[y-1][x]= = 0)||(oFrame[y+1][x]= =0)||
(oFrame[y-1][x-1]= = 0)||(oFrame[y-1][x+1] = =0)||
(oFrame[y+1][x-1] = = 0)||(oFrame[y+1][x+1] = = 0)){
recPCBoundaryPointType[ pointIndex] = 1
BPTypes[y][x] = 1
}
if((oFrame[y][x]!= 0)&&(recPCBoundaryPointType[pointIndex]!=1))
if((oFrame[y-2][x-2] = = 0)||(oFrame[y-2][x-1] = =0)||
(oFrame[y-2][x] = = 0)||(oFrame[y-2][x+1] = = 0)||
(oFrame[y-2][x+2] = = 0)||(oFrame[y-1][x-2] = =0)||
(oFrame[y-1][x+2] = = 0)||(oFrame[y][x-2] = = 0)||
(oFrame[y][x+2] = = 0)||(oFrame[y+1][x-2] = = 0)||
(oFrame[y+1][x+2] = = 0)||(oFrame[y+2][x-2] = =0)||
(oFrame[y+2][x-1] = = 0)||(oFrame[y+2][x] = = 0)||
(oFrame[y+2][x+1] = = 0)||(oFrame[y+2][x+2] = = 0))
recPCBoundaryPointType[pointIndex] = 1
pointIndex++
}
上記の割当てプロセスにおいて、(x-2)もしくは(x+2)が、0からasps_frame_width - 1の範囲(両端含む)の外側である、または(y-2)もしくは(y+2)が、0からasps_frame_height - 1の範囲(両端含む)の外側である場合には、BPTypes[y][x]およびrecPCBoundaryPointType[pointIndex]の値は、1に等しいと仮定される。
【0245】
3Dグリッド色属性平滑化
図15は、この段階の図示を提供する。図15に示すように、3Dの8×8×8のセルのそれぞれの平均属性値が決定される。次いで、3Dグリッドに対するトライリニアフィルタリングを計算することによって、各境界点の平均属性値が補間される。
【0246】
この段階の別の例は、例えば、V-PCCの条項9.6.4「境界点の識別」に記載されている。
このプロセスは、afp_attribute_smoothing_enabled_flag[aIdx]が1に等しいときに呼び出される。ここで、aIdxは、属性インデックスである。
本プロセスへのの入力は:
-公称解像度における現在の点群フレームに対応する占有マップoFrame、
-属性インデックスaIdx、
-属性インデックスaIdxに対応する成分の数numComps、
-属性平滑化制御パラメータセットafp_attribute_smoothing_grid_size[aIdx]、afp_attribute_smoothing_threshold[aIdx]、afp_attribute_smoothing_threshold_local_entropy[aIdx]、afp_attribute_smoothing_threshold_variation[aIdx]、およびafp_attribute_smoothing_threshold_difference[aIdx]
-属性インデックスaIdxについての再構築された属性値を含むアレイRecPcAttrSmIn[aIdx][i][j], 0≦i< PointCnt, 0≦j< numComps、
-再構築された(場合によっては平滑化された)再構築された位置を含むアレイRecPcGeomSmOut[i][j], 0≦i< PointCnt, 0≦j≦2、ならびに
-RecPcGeomSmOut中の各点に対応するパッチインデックス情報。
本プロセスの出力は:
-属性インデックスaIdxについての再構築された平滑化された属性値を含むアレイ RecPcAttrSmOut[aIdx][i][j], 0≦i< PointCnt, 0≦j< numComps。
変数GridSizeは、AttributeSmoothingGridSize[aIdx]に設定される。
セル数numCellsと、i=0からnumCells -1(両端含む)についてのattrCenterGrid[i]およびcellDoSmoothing[x][y][z]とは、9.6.3.2に記載されるように導出される。
i=0から(PointCnt - 1)(両端含む)について、以下が適用される。
-otherClusterPtCntは、0に設定される。
パッチ境界の点を決定するために、条項9.6.4が呼び出されて、RecPcGeomSmOutの各点が境界点であるかどうかを識別するアレイrecPCBoundary[idx], 0≦ idx < PointCntを生成する。
i=0から(PointCnt - 1)(両端含む)について、以下が適用される。
-recPCBoundary[i]が1に等しい場合には、以下のステップが実行される。
-0から2の範囲(両端含む)の変数pointGeom[j], j、および0から(numComps - 1)の範囲(両端含む)の変数pointAttr[k], kは、以下のように定義される。
for(j = 0; j < 3 ; j++ )
pointGeom[j] = RecPcGeomSmOut[i][j]
for(k = 0; k < numComps ; k++ )
pointAttr[k] = RecPcAttrSmIn[aIdx][i][k]
【0247】
以下を導出するために、下位条項9.6.5が適用される。
-現在の位置に対応する2×2×2のグリッド近傍pointGeom[i]、
-2×2×2グリッドの左上隅s[i]、
-現在の位置に関連付けられた2x2x2グリッドの位置t[i]、i=0から2(両端含む)、
-ブール値otherClusterPtCn
otherClusterPtCntが1に等しい場合には、以下が適用される。
-現在のセルの2×2×2セル近傍中の属性の変化は、以下のように決定される。
2×2×2セル近傍についてのisOriginalCellアレイは、以下のように決定される。
for(dx = 0; dx < 2; dx++)
for(dy = 0; dy < 2; dy++)
for(dz = 0; dz < 2; dz++) {
xIdx = s[0] + dx
yIdx = s[1] + dy
zIdx = s[2] + dz
if((xIdx == t[0] )&&(yIdx == t[1]) && ( zIdx == t[2])) {
isOriginalCell[dx][dy][dz] = 1
for(k=0; k < numComps; k++)
currAttr[k] = pointAttr[k]
if(abs(MeanLuma[xIdx][yIdx][zIdx] - medianLuma[xIdx][yIdx]zIdx])
<= afp_attribute_smoothing_threshold_variation[aIdx])
{
lumaOrig = centroidLuma[xIdx][yIdx][zIdx]
for(k=0; k < numComps; k++)
attrCentroid[dx][dy][dz][k] =attrCenterGrid[xIdx][yIdx][zIdx][k]
}
else {
lumaOrig = 0.2126 * currAttr[0] + 0.7152 * currAttr[1] + 0.0722 * currAttr[2]
for(k=0; k < numComps; k++)
attrCentroid[dx][dy][dx][k] = currAttr[k]
}
}
else
isOriginalCell[dx][dy][dz] = 0
}
-セル内の属性値の変化(アクティビティを表す)、および元のセルの輝度重心値と隣接するセルの輝度重心値の間の差は、以下のように決定される。
for(dx = 0; dx < 2; dx++)
for(dy = 0; dy < 2; dy++)
for(dz = 0; dz < 2; dz++) {
xIdx = s[0] + dx
yIdx = s[1] + dy
zIdx = s[2] + dz
if( isOriginalCell[dx][dy][dz] == 0)
if(cellCnt[xIdx][yIdx][zIdx] > 0) {
for(k=0; k < numComps; k++)
attrCentroid[dx][dy][dx][k] = attrCenterGrid[xIdx][yIdx][zIdx][k]
lumaN = centroidLuma[xIdx][yIdx][zIdx]
diff = abs(lumaOrig - lumaN)
var = meanLuma[xIdx][yIdx][zIdx] - medianLuma[xIdx][yIdx][zIdx]
if((diff > afp_attribute_smoothing_threshold_difference[aIdx])||
(abs(var) > afp_attribute_smoothing_threshold_variation[aIdx]))
for(k=0; k < numComps; k++)
attrCentroid[dx][dy][dx][k] = currAttr[k]
} else {
for(k=0; k < numComps; k++)
attrCentroid[dx][dy][dx][k] = currAttr[k]
}
}
-9.6.6に記載される8タップトライリニアフィルターが、2×2×2近傍内の属性重心attrCentroid[x][y][z][k] 0≦x,y,z< 1, 0≦k< numComps - 1に適用される。
【0248】
-以下の歪み基準が満たされる場合には、トライリニアフィルタの出力は、recPCaSmOutに加算されることになる。
-abs(Ycell - Ycur) * 10として定義される変数distToCentroid2は、afp_attribute_smoothing_threshold_smoothing[aIdx]より大きく、ここで、YcellおよびYcurは、それぞれ現在のセル内の点の重心の輝度値(attrCentroid)および現在の点の輝度値(pointAttr)である。
【0249】
したがって、本態様の1つまたは複数の様相は、点群の3Dの再構築された点の属性(例えば色)を平滑化する新たなプロセスまたは装置を提案する。特に、3Dグリッドを用いた補間を必要とする上述の3D色平滑化プロセスと異なり、この1つまたは複数の様相は、2D面内での色平滑化を提供して、複雑さを軽減することができる。この1つまたは複数の様相は、パッチ境界点の色重心を計算し、2D空間におけるこれらの重心に基づいてパッチ境界点を平滑化する。次いで、属性再構築プロセスの前に、属性フレームが更新される。
【0250】
図16は、パッチ境界における色の問題を解決する新たな方法を提供する、本色平滑化態様の1つまたは複数の様相を示す図である。
【0251】
既に上述したように、パッチ境界フィルタリングプロセスは、隣接パッチの境界点を2Dパッチ領域に投影して、パッチ間の連接性を推定し、再構築プロセスの前にジオメトリを訂正する。1つの利点は、それが2D領域内で動作し、3D内より複雑さが低いことである。
【0252】
同様に、本態様の1つまたは複数の様相は、パッチの各2D境界点について、その周りの(カレントパッチおよび近傍のパッチの内側の)点の色の重心を計算することによって、再構築プロセスの前に3D点の色を訂正する。この場合には、色画像は、2Dから3Dへのデプロジェクション(de-projection)の前に、更新される。3Dの再構築された点は、2Dの複雑さが軽減された色平滑化プロセスの恩恵を直接受けることになる。このように、この1つまたは複数の様相では、3Dで色平滑化を運用することを回避する。
【0253】
図16に示すように、2つの主要なプロセスが提案される。
【0254】
1.色重心マップ/フレーム生成:パッチの各境界点について、図17Aおよび図17Bに示すように色重心のフレームを計算する。
【0255】
2.2D色平滑化:全ての以前の色重心について、全ての境界点を有する平滑化された色重心を計算し、属性フレームを更新する。図17Aおよび図17Bに示すように平滑化された色重心で属性画素値を更新する。
【0256】
色重心マップ/フレーム生成
パッチの各境界点について、図17Aおよび図17Bに示すように色重心のフレームを計算する。
【0257】
別の詳細な例は、以下に例示する通りである。
入力:
・属性色画像:公称解像度におけるデコードされた属性フレームAFrame [aIdx][mapIdx][cIdx][y][x]、ここで、mapIdx = 0..vpcc_map_count_minus1、y = 0 .. asps_frame_height - 1、x = 0 .. asps_frame_width - 1、aIdx =0..ai_attribute_count - 1、およびcIdx = 0 .. ai_attribute_dimension_minus1[aIdx]である。
・占有画像;公称解像度における現在の点群フレームに対応する占有マップの第1の成分OFrame [y][x][0]、ここで、y = 0..asps_frame_height - 1、x = 0..asps_frame_width - 1である。
・パッチのインデックスp。
出力:
・色重心画像:計算された重心の色属性値を含むフレームCFrame [aIdx][mapIdx][cIdx][y][x]、ここで、mapIdx = 0..vpcc_map_count_minus1、y = 0 .. asps_frame_height - 1、x = 0 .. asps_frame_width - 1、aIdx =0..ai_attribute_count - 1、およびcIdx = 0 .. ai_attribute_dimension_minus1[aIdx]である。
*asps-Atlasシーケンスパラメータセット(パラメータが定義されるシンタックス構造)。
プロセス:
占有フレームOFrame [u][v][0]の全ての点(u,v)について、
//MODULE Identified boundary points(すなわち、2D点がパッチの境界である場合)
if ( OFrame[u][v][0] &&
(! OFrame[u+1][v][0]||
! OFrame[u-1][v][0]||
!OFrame[u][v-1][0]||
! OFrameu][v+1][0]))

//MODULE Attribute Center Generation(現在の点の色重心を計算し、この値を色重心フレームに記憶する)
nbPoints=0;
同じパッチインデックスpの(u,v)の近傍(*)内の全ての点(up,vp)について、
nbPoints++;
for aIdx=0..ai_attribute_count - 1,
for mapIdx=0..vpcc_map_count_minus1,
for cIdx = 0.. ai_attribute_dimension_minus1[aIdx],
CFrame [aIdx][mapIdx][cIdx][u][v] += AFrame[aIdx][mapIdx][cIdx][up][vp]
for aIdx=0..ai_attribute_count - 1,
for mapIdx=0..vpcc_map_count_minus1,
for cIdx = 0.. ai_attribute_dimension_minus1[aIdx],
CFrame [aIdx][mapIdx][cIdx][u][v] /= nbPoints;

//MODULE 3D border points generation
[1](SoTA)の条項9.4.6「3D点の位置の再構築」

(*)近傍の計算は、次のように行われることが可能である。
・[u- boxSizeU;u+boxSizeU][v-boxSizeV,v+ boxSizeV]のサイズの矩形の枠について、通常はboxSizeU=4およびboxSizeV=4。
・点(u,v)の周りの円:sqrt((up-u)^2+(vp-v)^2) < distanceという条件の全ての点p(up,vp)について、通常は、distance=5。
・最も近接した点のセットについて、通常は、N24-Neighbor。
出力は、全てのパッチについて1つの画像である(ジオメトリおよびテクスチャ画像と同じ)ことも、パッチごとにいくつかの画像に分割されることも可能であることに留意されたい。
【0258】
2D色平滑化
図18Aおよび図18Bに示すように、全ての境界点について、2D色平滑化態様の1つまたは複数の様相は、全ての境界点を有する(図17Aおよび図17Bで計算される作用された重心を有する)平滑化された色重心を計算し、その平滑化された色重心で属性値を更新する。
【0259】
図18Bは、本2D色平滑化態様の1つまたは複数の様相を描画する図である。図18BのピクチャAは、上述のように導出された参照輪郭(境界上に薄い灰色で示される参照輪郭)上の点を示している。図18BのピクチャBは、全ての識別されたパッチ境界(例えばBoundaryFrame)を有する、色重心を更新するための点の隣接する円を有する重心を示している。図18BのピクチャCは、2D色平滑化が適用された後の平滑化された色パッチを示している。
【0260】
色を平滑化する別の例は、以下のように、
入力:
・占有画像:公称解像度における現在の点群フレームに対応する占有マップの第1の成分OFrame [y][x][0]、ここで、y = 0..asps_frame_height - 1、x = 0..asps_frame_width - 1である。
・パッチのインデックスp。
・色重心画像:計算された重心の色属性値を含むフレームCFrame [aIdx][mapIdx][cIdx][y][x]、ここで、mapIdx = 0..vpcc_map_count_minus1、y = 0 .. asps_frame_height - 1、x = 0 .. asps_frame_width - 1、aIdx =0..ai_attribute_count - 1、およびcIdx = 0 .. ai_attribute_dimension_minus1[aIdx]である。
・少なくとも1つの隣接するパッチの2Dサンプルを投影場所に再投影することによるパッチpの参照輪郭RC(p)。
出力:
・属性色画像:公称解像度における更新された属性フレームAFrame [aIdx][mapIdx][cIdx][y][x]、ここで、mapIdx = 0..vpcc_map_count_minus1、y = 0 .. asps_frame_height - 1、x = 0 .. asps_frame_width - 1、aIdx =0..ai_attribute_count - 1、およびcIdx = 0 .. ai_attribute_dimension_minus1[aIdx]である。
プロセス:
//MODULE reference contour creation
各パッチについて、
各参照輪郭RC(p)について:
3D境界点をカレントパッチの2D領域に投影する。
各投影された点について、関連付けられた色重心をCFrameから取り出し、我々が関連付けられた属性値を有する参照輪郭ARC(p)を有するようにする
//MODULE Smooth color
と与えられることもある。
【0261】
上記の態様に示す参照輪郭作成のためのモジュールまたはプロセスは、既に広範に記載した。色平滑化モジュールまたはプロセスについて、図19および図20にそれぞれ示す2つの追加の変形を以下に提供する。
【0262】
図19は、図18Aに示す色平滑化モジュールまたはプロセスの第1の変形を示す図である。以下のプロセスに示すように、フィルタリングされる対象の境界領域内にあるカレントパッチの各点(u,v)(すなわち境界パッチに近い点)について、その点の属性値が閾値未満である場合には、各ARC(P)に対して最も近接した点を求める。この値が、累積重心値に加算され、そうでない場合には、この値は、破棄される。次いで、累積重心値を加算された属性値の数で除算することによって平均を取り出し、この計算された値を、属性フレーム(u,v)に割り付ける。以下の式1および2は、重心の平均(mean)/平均(average)を決定する。
【0263】
別の詳細な例は、以下のように、
パッチの境界(*)に閉じた各2D点(u,v)、pに対して、
nbPoints=0;
ARC(p)内の最も近接した3D点qを求める。
距離(p,q) < 閾値(通常は閾値=6)である場合には、
nbPoints++;
centroid[ai_attribute_count][ai_attribute_dimension_minus1+1] ={0…}
for aIdx=0..ai_attribute_count - 1,
for mapIdx=0..vpcc_map_count_minus1,
for cIdx = 0.. ai_attribute_dimension_minus1[aIdx],
centroid[aIdx][cIdx]+=CFrame[aIdx][mapIdx][cIdx][up][vp](式1)
for aIdx=0..ai_attribute_count - 1,
for mapIdx=0..vpcc_map_count_minus1,
for cIdx = 0.. ai_attribute_dimension_minus1[aIdx],
AFrame [aIdx][mapIdx][cIdx][u][v]= centroid[aIdx][cIdx] /nbPoints;(式2)
と例示される。
【0264】
図20は、図18Aに示す色平滑化モジュールまたはプロセスの別の変形を示す図である。この変形では、上記の変形に示す(灰色で強調されている)重心の平均(mean)/平均(average)を決定する部分が、さらに洗練されている。
【0265】
図20に示すように、識別された境界パッチのそれぞれに属する、またその位置が現在のデプロジェクションされた(u,v)点(すなわち3D点)に最も近接した(閾値に従って)最も近接した重心である、パッチpの点(u,v)が、識別され、重心Cと呼ばれる。
【0266】
Cがカレントパッチに属する場合には、プロセス1に従ってアクティビティが計算され、そうでない場合には、別のプロセス2に従ってアクティビティが計算される。一例として、プロセス1は、上述の属性中心生成ステップで決定された重心に属する属性の値の平均の間の差に対応する。一例として、プロセス2は、プロセス1に対応するが、現在の点の輝度と重心の輝度の差が距離閾値未満であることの検証によって増補されている。
【0267】
計算されたアクティビティが低い(閾値未満である)場合には、パッチ境界の重心が、フィルタリングの計算に追加される。そうでない場合には、点(u,v)の元の属性が、フィルタリングにおいて使用される。フィルタリングは、平均であってもよいし、近傍の点の数で重みづけされた平均であってもよいし、または現在の点(u,v)と識別された重心の位置との間の距離で重みづけされた平均であってもよい。このフィルタリングは、上述したトライリニアリ二リングとは異なる。
【0268】
別の詳細な例は、以下のように、
パッチの境界(*)に閉じた各2D点(u,v)に対して、
nbPoints=0;
ARC(p)において最も近接した3D点qを求める。
距離(p,q) < 閾値(通常は閾値=6)である場合には、
if(p == q) {
if(abs(CentroidMeanLuma[q] - CentroidMedianLuma[q])
<= afp_attribute_smoothing_threshold_variation[aIdx]) {
lumaOrig = centroidLuma[q]
for(k=0; k < numComps; k++)
attrCentroid[q][k] = attrCenterGrid [q][k]
} else {
lumaOrig = 0.2126*pointAttr [0] +0.7152*pointAttr [1]+0.0722 * pointAttr [2]
for(k=0; k < numComps; k++)
attrCentroid[q][k] = pointAttr [k]
}
} else {
if(CentroidCnt[q] > 0) {
for(k=0; k < numComps; k++) {
attrCentroid[q][k] = attrCenterGrid[q][k]
lumaN = centroidLuma[q]
diff = abs(lumaOrig - lumaN)
var = meanLuma[q] - medianLuma[q]
if((diff>afp_attribute_smoothing_threshold_difference[aIdx])||
(abs(var)> afp_attribute_smoothing_threshold_variation[aIdx]))
for(k=0; k < numComps; k++)
attrCentroid[q][k] = pointAttr[k]
} else {
for( k=0; k < numComps; k++ )
attrCentroid[q][k] = currAttr[k]
}
}
}
}

NewAttr = filter(attrCentroid of all q)
If (|Ycell - Ycur|* 10|< threshold_smoothing)
for aIdx=0..ai_attribute_count - 1,
for mapIdx=0..vpcc_map_count_minus1,
for cIdx = 0.. ai_attribute_dimension_minus1[aIdx],
AFrame [aIdx][mapIdx][cIdx][u][v] = NewAttr
と例示される。
【0269】
図21は、本態様の1つまたは複数の様相によるプロセス2100の例を示す図である。2110で、点群の1つまたは複数の属性が、2Dサンプルのパッチのキャンバスおよびそれらの2Dサンプルの値によって表される。2120で、カレントパッチの少なくとも1つの2Dサンプルが、参照輪郭に適合するように修正され、この参照輪郭は、カレントパッチの少なくとも1つの隣接するパッチの少なくとも1つの2Dサンプルを、カレントパッチの2Dサンプルが投影されている投影面に再投影することによって得られる。2130で、点群の1つまたは複数の属性が、カレントパッチの修正された少なくとも1つの2Dサンプルに基づいてフィルタリングされる。さらに、一態様では、点群の1つまたは複数の属性は、色情報を含むこともある。さらに別の態様では、点群の1つまたは複数の属性は、深度情報などの幾何学的情報を含むこともある。
【0270】
図1から図21で、本明細書には様々な方法が記載され、それらの方法のそれぞれは、その記載された方法を実現するための1つまたは複数のステップまたはアクションを含む。方法の適切な動作のためにステップまたはアクションの特定の順序が必要とされない限り、特定のステップおよび/またはアクションの順序および/または使用は、修正される、または組み合わされることがあり得る。
【0271】
いくつかの例が、ブロック図および動作流れ図に関連して記載されている。各ブロックは、回路要素、モジュール、または指定された論理機能(1つもしくは複数)を実装するための1つもしくは複数の実行可能命令を含むコードの一部分を表す。他の実装では、ブロックに示される機能(1つまたは複数)が、示されている以外の順序で起こることもあることにも留意されたい。例えば、連続して示されている2つのブロックが、実際には、実質的に同時に実行されることもあるし、または、それらのブロックが、関連する機能によっては、時には逆の順序で実行されることもある。
【0272】
本明細書に記載される実装および様相は、例えば、方法もしくはプロセス、装置、コンピュータープログラム、データストリーム、ビットストリーム、または信号として実装されることがある。1つの実装の単一の形態の文脈でしか説明されていなくても(例えば方法としてしか説明されていなくても)、説明される特徴の実装は、他の形態(例えば装置またはコンピュータープログラム)で実装されることもあり得る。
【0273】
方法は、例えばプロセッサーで実装されることもあり、ここで、プロセッサーは、例えばコンピューター、マイクロプロセッサ、集積回路、またはプログラマブル論理デバイスなどを含む処理デバイス一般を指す。プロセッサーは、通信デバイスも含む。
【0274】
加えて、方法は、命令がプロセッサーによって実行されることによって実装されることもあり、このような命令(および/または実装によって生成されるデータ値)は、コンピューター読取り可能媒体に記憶されることがある。コンピューター読取り可能媒体は、1つまたは複数のコンピューター読取り可能媒体に埋め込まれ、コンピューターによって実行可能なコンピューター読取り可能プログラムコードが埋め込まれたコンピューター読取り可能プログラム製品の形態をとることもある。本明細書で使用されるコンピューター読取り可能記憶媒体は、情報を記憶する固有の能力と、そこからの情報の取出しを提供する固有の能力とが与えられた非一時的な記憶媒体とみなされることがある。コンピューター読取り可能記憶媒体は、限定されるわけではないが、例えば、電子的、磁気的、光学的、電磁気学的、赤外線、または半導体のシステム、装置、もしくはデバイス、またはそれらの任意の適切な組合せであり得る。以下に、本態様が適用され得るコンピューター読取り可能記憶媒体のさらに具体的な例を提供するが、当業者には容易に理解されるように、これらは、単なる例示であり、網羅的なリストではないことを理解されたい。その具体的な例とは、携帯可能なコンピュータディスケット、ハードディスク、読取り専用メモリー(ROM)、消去可能プログラマブル読取り専用メモリー(EPROMもしくはフラッシュメモリ)、携帯可能なコンパクトディスク読取り専用メモリー(CD-ROM)、光学ストレージデバイス、磁気ストレージデバイス、またはこれらの任意の適当な組合せである。
【0275】
命令は、プロセッサー読取り可能媒体に有形に埋め込まれたアプリケーションプログラムを構成することもある。
【0276】
命令は、例えば、ハードウェア、ファームウェア、ソフトウェア、または組合せの中にあり得る。命令は、例えば、オペレーティングシステム、別個のアプリケーション、またはその2つの組合せの中に見られることもある。したがって、プロセッサーは、例えばプロセスを実行するように構成されたデバイス、およびプロセスを実行するための命令を有するプロセッサー読取り可能媒体(ストレージデバイスなど)を含むデバイスの両方として特徴づけられ得る。さらに、プロセッサー読取り可能媒体は、命令に加えて、または命令の代わりに、実装によって生成されたデータ値を記憶することもある。
【0277】
装置は、例えば、適切なハードウェア、ソフトウェア、およびファームウェアに実装され得る。このような装置の例は、パーソナルコンピュータ、ラップトップ、スマートフォン、タブレットコンピュータ、デジタルマルチメディアセットトップボックス、デジタルテレビジョン受像機、個人用ビデオ記録システム、コネクテッド家電、ヘッドマウントディスプレイデバイス(HMD、シースルー眼鏡)、プロジェクタ(ビーマ)、「cave」(複数のディスプレイを含むシステム)、サーバ、ビデオエンコーダー、ビデオデコーダ、ビデオデコーダからの出力を処理するポストプロセッサ、ビデオエンコーダーに入力を提供するプリプロセッサ、ウェブサーバ、セットトップボックス、および点群、ビデオもしくは画像を処理するその他の任意のデバイス、またはその他の通信デバイスを含む。明らかであろうが、この機器は、移動可能であることもあり、移動可能な車両に設置されることもある。
【0278】
コンピュータソフトウェアは、プロセッサー6010もしくはハードウェアによって、またはハードウェアとソフトウェアの組合せによって実装され得る。非限定的な例として、態様は、1つまたは複数の集積回路によって実装されることもある。メモリー6020は、技術的環境に適した任意のタイプのものでよく、非限定的な例として、光学メモリデバイス、磁気メモリデバイス、半導体型メモリデバイス、固定式メモリー、および取り外し可能メモリーなど、任意の適切なデータ記憶技術を用いて実装され得る。プロセッサー6010は、技術的環境に適した任意のタイプのものでよく、非限定的な例として、マイクロプロセッサ、汎用コンピューター、特殊目的コンピューター、およびマルチコアアーキテクチャに基づくプロセッサーのうちの1つまたは複数を包含し得る。
【0279】
当業者には明らかであろうが、実装は、例えば記憶または伝送されることがある情報を担持するようにフォーマット化された様々な信号を生成することがある。情報は、例えば、方法を実行するための命令、または記載した実装のうちの1つによって生成されるデータを含み得る。例えば、信号は、記載される態様のビットストリームを担持するようにフォーマット化されることもある。このような信号は、例えば、(例えば無線周波数のスペクトル部分を用いる)電磁波としてフォーマット化されることも、またはベースバンド信号としてフォーマット化されることもある。フォーマット化は、例えば、データストリームをエンコードすることと、エンコードしたデータストリームで搬送波を変調することとを含むことがある。信号が担持する情報は、例えば、アナログ情報であることも、デジタル情報であることもある。信号は、既知の通り、様々な異なる有線または無線のリンクを介して伝送され得る。信号は、プロセッサー読取り可能媒体に記憶されることもある。
【0280】
本明細書で用いられる用語は、特定の態様のみを説明する目的のためのものであり、限定することは意図されていない。本明細書で用いられる単数形「a」、「an」、および「the」は、そうでないことが文脈から明らかでない限り、複数形を含むものとして意図されることがある。本明細書で使用される「含む/備える」および/または「含み/備え」という用語は、例えば記載される、特徴、完全体、ステップ、動作、要素、および/または構成要素の存在を指定することがあるが、1つまたは複数のその他の特徴、完全体、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除するものではない。さらに、ある要素が別の要素に「応答可能である」または「接続されている」と述べられているときには、それは、その別の要素に直接応答可能である、または接続されていることもあるし、または介在する要素が存在することもある。これに対して、ある要素が他の要素に「直接応答可能である」または「直接接続されている」と述べられているときには、介在する要素は存在しない。
【0281】
「/」、「および/または」、および「のうちの少なくとも1つ」という記号/用語の使用は、例えば「A/B」、「Aおよび/またはB」、および「AおよびBのうちの少なくとも1つ」などの場合、最初に挙げた選択肢(A)のみの選択、2つ目に挙げた選択肢(B)のみの選択、または両選択肢(AおよびB)の選択を包含するものと意図されることがあることを理解されたい。別の例として、「A、B、および/またはC」、および「A、B、およびCのうちの少なくとも1つ」の場合には、このような表現は、最初に挙げた選択肢(A)のみの選択、2つ目に挙げた選択肢(B)のみの選択、3つ目に挙げた選択肢(C)のみの選択、1つ目と2つ目に挙げた選択肢(AおよびB)のみの選択、1つ目と3つ目に挙げた選択肢(AおよびC)のみの選択、2つ目と3つ目に挙げた選択肢(BおよびC)のみの選択、または3つ全ての選択肢(AおよびBおよびC)の選択を包含するものと意図されている。当技術分野および関連する技術分野の当業者には明らかであるように、これは、列挙された品目の数だけ拡張され得る。
【0282】
本出願では、例えばTなど、様々な数値が使用されることがある。これらの具体的な値は、例示を目的としていることがあり、記載される様相は、それらの具体的な値に限定されない。
【0283】
本明細書では、様々な要素を説明するために第1、第2などの用語が使用されることがあるが、これらの要素は、それらの用語によって限定されない。これらの用語は、1つの要素を別の要素と区別するためにのみ使用されるものである。例えば、本出願の教示から逸脱することなく、第1の要素が第2の要素と呼ばれてもよく、同様に、第2の要素が第1の要素と呼ばれてもよい。第1の要素と第2の要素の間に、順序の意味合いはない。
【0284】
「一態様」または「態様」または「一実装」または「実装」、ならびにその他のそれらの変形表現についての言及が頻繁に用いられるが、これらは(態様/実装に関連して記載される)特定の特徴、構造、および特性などが、少なくとも1つの態様/実装に含まれることを示唆するものである。したがって、本出願の全体を通じて様々な箇所に見られる「一態様では」、「態様では」、「一実装では」、または「実装では」という表現、ならびにその他の任意の変形表現は、全てが必ずしも同じ態様を指しているわけではない。
【0285】
同様に、「態様/例/実装によれば」、または「態様/例/実装では」、ならびにそれらのその他の変形表現についての本明細書における言及が頻繁に用いられるが、これらは(その態様/例/実装に関連して記載される)特定の特徴、構造、または特性が、少なくとも1つの態様/例/実装に含まれることがあることを示唆するものである。したがって、本明細書中の様々な箇所に見られる「態様/例/実装によれば」、または「態様/例/実装では」という表現は、全てが必ずしも同じ態様/例/実装を指しているわけではなく、また他の態様/例/実装と必然的に相互に排除し合う別個または代替の態様/例/実装でもない。
【0286】
特許請求の範囲に見られる参照番号は、例示のみを目的としたものであり、特許請求の範囲に対して限定を加える影響を有するものではない。明示的には述べていないが、本態様/例および変形形態は、任意の組合せまたは任意の部分的な組合せで利用され得る。
【0287】
図面が流れ図として提示されているときには、それは、対応する装置のブロック図を提供することにもなることを理解されたい。同様に、図面がブロック図として提示されているときには、それは対応する方法/プロセスの流れ図を提供することにもなることを理解されたい。
【0288】
図面のいくつかは、通信経路上に矢印を含み、主要な通信方向を示しているが、通信は、図示されている矢印とは反対の方向にも起こりうることを理解されたい。
【0289】
様々な実装は、デコードを伴う。本出願で使用される「デコード」は、再構築された点群領域における表示またはさらなる処理に適した最終出力を生成するために、例えば受信された点群フレーム(場合によっては、1つまたは複数の点群フレームをエンコードする受信されているビットストリームも含む)に対して実行されるプロセスの全てまたは一部を包含し得る。様々な態様で、このようなプロセスは、画像ベースのデコーダーによって通常実行されるプロセスのうちの1つまたは複数を含む。
【0290】
さらなる例として、一態様では、「デコード」は、エントロピーデコードのみを指すこともあり、別の態様では、「デコード」は、差分デコードのみを指すこともあり、別の態様では、「デコード」は、エントロピーデコードと差分デコードの組合せを指すこともある。「デコードプロセス」という表現が、動作の一部を具体的に指すことを意図されているか、より広範なデコードプロセスを一般的に指すことを意図されているかは、具体的な説明の文脈に基づいて明らかになるであろうが、当業者には十分に理解されると考えられる。
【0291】
様々な実装は、エンコードを伴う。「デコード」についての上記の説明と同様に、本出願で使用される「エンコード」は、エンコードされたビットストリームを生成するために、例えば入力点群フレームに対して実行されるプロセスの全てまたは一部を包含し得る。様々な態様で、このようなプロセスは、画像ベースのデコーダーによって通常実行されるプロセスのうちの1つまたは複数を含む。
【0292】
さらなる例として、一態様では、「エンコード」は、エントロピーエンコードのみを指すこともあり、別の態様では、「エンコード」は、差分エンコードのみを指すこともあり、別の態様では、「エンコード」は、差分エンコードとエントロピーエンコードの組合せを指すこともある。「エンコードプロセス」という表現が、動作の一部を具体的に指すことを意図されているか、より広範なエンコードプロセスを一般的に指すことを意図されているかは、具体的な説明の文脈に基づいて明らかになるであろうが、当業者には十分に理解されると考えられる。
【0293】
本明細書で使用されるシンタックス要素は、記述用語であることに留意されたい。したがって、それらは、他のシンタックス要素名の使用を排除しない。
【0294】
様々な態様では、レート歪みの最適化に言及している。特に、エンコードプロセス中には、計算の複雑さの制約をしばしば仮定して、レートと歪みの間のバランスまたはトレードオフが通常考慮される。レート歪みの最適化は、通常は、レートと歪みの加重和であるレート歪み関数を最小にするものとして数式化されることがある。レート歪みの最適化の問題を解決する様々な手法がある。例えば、これらの手法は、全ての考えられるモードまたは符号化パラメータ値を含む全てのエンコードの選択肢の広範な試験、ならびにそれらの符号化コストと、符号化およびデコードの後の再構築された信号の関連する歪みとの完全な評価に基づくことがある。エンコードの複雑さを低減するために、より高速な手法が、特に再構築された信号ではなく予測または予測残差信号に基づく近似された歪みの計算とともに使用されることもある。可能なエンコードの選択肢の一部のみについて近似された歪みを使用し、他のエンコードの選択肢については完全な歪みを使用するなどによって、これらの2つの手法の混合手法が使用されることもある。他の手法では、可能なエンコードの選択肢の一部のみを評価する。さらに一般的には、多くの手法では、様々な技術のいずれかを利用して最適化を実行するが、この最適化は、必ずしも符号化コストおよび関連する歪みの両方の完全な評価であるとは限らない。
【0295】
加えて、本出願では、様々な情報を「決定する」ことに言及することがある。情報を決定することは、例えば、情報を推定すること、情報を計算すること、情報を予測すること、またはメモリーから情報を取り出すことのうちの1つまたは複数を含み得る。
【0296】
さらに、本出願では、様々な情報に「アクセスする」ことに言及することもある。情報にアクセスすることは、例えば、情報を受け取ること、情報を(例えばメモリーから)取り出すこと、情報を記憶すること、情報を移動すること、情報をコピーすること、情報を計算すること、情報を決定すること、情報を予測すること、または情報を推定することのうちの1つまたは複数を含み得る。
【0297】
加えて、本出願では、様々な情報を「受け取る」ことに言及することもある。「受け取る」は、「アクセスする」と同様に、広範な用語として意図されている。情報を受け取ることは、例えば、情報にアクセスすること、または情報を(例えばメモリーから)取り出すことのうちの1つまたは複数を含み得る。さらに、「受け取る」ことは、通常は、例えば情報を記憶する、情報を処理する、情報を伝送する、情報を移動する、情報をコピーする、情報を消去する、情報を計算する、情報を決定する、情報を予測する、または情報を推定するなどの動作中に、何らかの形で含まれる。
【0298】
さらに、本明細書で使用される「信号」という単語は、特に、対応するデコーダーに対して何かを示すことを指す。このように、態様では、同じパラメータが、エンコーダー側およびデコーダー側の両方で使用されることもある。したがって、例えば、エンコーダーが、特定のパラメータをデコーダーに伝送して(明示的なシグナリング)、デコーダーがその同じ特定のパラメータを使用することがあり得るようにすることもある。逆に、デコーダーが既にその特定のパラメータならびにほかのパラメータを有している場合には、伝送を行わないシグナリングが使用され(暗黙のシグナリング)、単にデコーダーがその特定のパラメータを知って選択することができるようにすることもある。任意の実際の機能の伝送を回避することによって、様々な態様では、ビット節約が実現される。シグナリングは、様々なやり方で達成され得ることを理解されたい。例えば、様々な態様では、対応するデコーダーに情報をシグナリングするために、1つまたは複数のシンタックス要素、およびフラグなどが使用される。以上は「信号」という単語の動詞形態に関係しているが、本明細書では、「信号」という単語は、名詞として使用されることもある。
【0299】
いくつかの実装について説明した。しかし、様々な修正が行われ得ることは理解されるであろう。例えば、異なる実装の要素が組み合わされたり、補足されたり、修正されたり、または除去されたりして、他の実装を生じることもある。さらに、当業者ならば、開示される構造およびプロセスの代わりに他の構造およびプロセスが用いられることもあること、ならびにその結果得られる実装が、開示される実装と少なくとも実質的には同じやり方(1つまたは複数)で、少なくとも実質的には同じ機能(1つまたは複数)を実行して、少なくとも実質的には同じ結果(1つまたは複数)を実現することを理解するであろう。したがって、これらおよび他の実装は本出願により意図されている。
【0300】
追加の態様は、様々な特許請求の範囲のカテゴリおよびタイプにわたる以下の特徴、デバイス、または様相のうちの1つまたは複数を、単独で、または任意の組合せで含み得る。
・3D空間ではなく2D空間内で点群の1つまたは複数の属性をフィルタリングまたは平滑化する。
・パッチの参照輪郭を用いて2D空間内で点群の1つまたは複数の属性をフィルタリングまたは平滑化する。
・パッチの参照輪郭上の1つまたは複数の重心に基づいて、2D空間内で点群の1つまたは複数の属性をフィルタリングまたは平滑化する。
・記載される態様のうちの1つまたは複数による参照輪郭は、カレントパッチの少なくとも1つの隣接するパッチの少なくとも1つの2Dサンプルを、カレントパッチの2Dサンプルが投影されている投影面に再投影することによって得られる。
・記載される態様のうちの1つまたは複数による、点群の1つまたは複数の属性をフィルタリングまたは平滑化することは、カレントパッチの修正された少なくとも1つの2Dサンプルに基づいて、2Dのフィルタリングされた1つまたは複数の属性を3Dに再投影することによって得られる。
・記載される態様のうちの1つまたは複数による点群の1つまたは複数の属性は、色情報を含む。
・記載される態様のうちの1つまたは複数による点群の1つまたは複数の属性は、例えば深度情報などのジオメトリ情報を含む。
・記載されるシンタックス要素またはその変形のうちの1つまたは複数を含むビットストリームまたは信号。
・記載される態様のいずれかに従って生成されるシンタックス担持情報を含むビットストリームまたは信号。
・デコーダーが、エンコーダーによって用いられたやり方に対応するやり方で残差を適合することを可能にする要素を、シグナリングシンタックスに挿入すること。
・記載されるシンタックス要素またはその変形のうちの1つまたは複数を含むビットストリームまたは信号を作成し、かつ/または伝送し、かつ/または受信し、かつ/またはデコードすること。
・記載される態様のいずれかに従って、作成し、かつ/または伝送し、かつ/または受信し、かつ/またはデコードすること。
・記載される態様のいずれかによる、方法、プロセス、装置、命令を記憶する媒体、データを記憶する媒体、または信号。
・記載される態様のいずれかによるフィルタパラメータの適合を実行する、TV、セットトップボックス、携帯電話、タブレット、またはその他の電子デバイス。
・記載される態様のいずれかによるフィルタパラメータの適合を実行し、その結果得られる画像を(例えばモニタ、画面、またはその他のタイプのディスプレイを用いて)表示する、TV、セットトップボックス、携帯電話、タブレット、またはその他の電子デバイス。
・エンコードされた画像を含む信号を受信するチャネルを選択し(例えば同調器を用いて)、記載される態様のいずれかによるフィルタパラメータの適合を実行する、TV、セットトップボックス、携帯電話、タブレット、またはその他の電子デバイス。
・エンコードされた画像を含む信号を無線で受信し(例えばアンテナを用いて)、記載される態様のいずれかによるフィルタパラメータの適合を実行する、TV、セットトップボックス、携帯電話、タブレット、またはその他の電子デバイス。
図1
図2
図3
図3a
図3b
図4
図5
図6
図7
図8a
図8b
図8c
図8d
図9
図10
図11
図12
図13
図14
図15
図16
図17A
図17B
図18A
図18B
図19
図20
図21