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

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

▶ ブラックベリー リミテッドの特許一覧

特許7461389オクツリーベースの点群コーディングにおける平面モード
<>
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図1
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図2
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図3
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図4
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図5
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図6
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図7
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図8
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図9
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図10
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図11
  • 特許-オクツリーベースの点群コーディングにおける平面モード 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-26
(45)【発行日】2024-04-03
(54)【発明の名称】オクツリーベースの点群コーディングにおける平面モード
(51)【国際特許分類】
   G06T 9/40 20060101AFI20240327BHJP
【FI】
G06T9/40
【請求項の数】 24
(21)【出願番号】P 2021576315
(86)(22)【出願日】2020-06-04
(65)【公表番号】
(43)【公表日】2022-09-01
(86)【国際出願番号】 EP2020065513
(87)【国際公開番号】W WO2020259978
(87)【国際公開日】2020-12-30
【審査請求日】2023-03-14
(31)【優先権主張番号】16/456,082
(32)【優先日】2019-06-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500043574
【氏名又は名称】ブラックベリー リミテッド
【氏名又は名称原語表記】BlackBerry Limited
【住所又は居所原語表記】2200 University Avenue East, Waterloo ON N2K 0A7, Canada
(74)【代理人】
【識別番号】100107489
【弁理士】
【氏名又は名称】大塩 竹志
(72)【発明者】
【氏名】ラセール, セバスチャン
(72)【発明者】
【氏名】フリン, デイビッド
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2019/195920(WO,A1)
【文献】Khaled Mammou, Philip A. Chou, David Flynn, Maja Krivokuca, Ohji Nakagami and Toshiyasu Sugio,G-PCC codec description v2,ISO/IEC JTC1/SC29/WG11 N18189,ISO/IEC JTC1/SC29/WG11,2019年01月,pp.1-3,8-17
【文献】Sebastien LASSERRE, David FLYNN, and Shouxing QU,Using neighbouring nodes for the compression of octrees representing the geometry of point clouds,ACM MMSys’19,ACM,2019年06月18日,pp.145-153
(58)【調査した分野】(Int.Cl.,DB名)
G06T 9/00 - 9/40
(57)【特許請求の範囲】
【請求項1】
オブジェクトの3次元場所を表す圧縮された点群データのビットストリームを発生させるために、点群をエンコードする方法であって、前記点群は、サブボリュームに再帰的に分割され、前記点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、前記子サブボリュームの第1の組は、第1の平面内に位置付けられ、前記子サブボリュームの第2の組は、前記第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが前記点のうちの少なくとも1つを含むかどうかを示し、
前記方法は、
少なくとも1つの点を含む全ての子サブボリュームが前記第1の組または前記第2の組のいずれかに位置付けられているかどうかに基づいて、前記ボリュームが平面であるかどうかを決定することと、
前記ボリュームが平面であるかどうかを信号伝達するために、前記ビットストリームにおいて平面モードフラグをエンコードすることと、
前記第1の組の子サブボリュームに関する占有ビットを前記ビットストリームにおいてエンコードすることであって、前記占有ビットをエンコードすることは、少なくとも1つの占有ビットに関して、前記ボリュームが平面であるかどうかに基づいて、その値を推論し、それを前記ビットストリームにおいてエンコードしないことを含む、ことと
前記圧縮された点群データのビットストリームを出力することと
を含む、方法。
【請求項2】
前記ボリュームが平面であるかどうかを決定することは、前記第1の組における前記子サブボリュームのうちの少なくとも1つが、前記点のうちの少なくとも1つを含み、前記第2の組における前記子サブボリュームのうちのいずれも、前記点のうちのいずれも含まないと決定することによって、前記ボリュームが平面であると決定することを含み、前記方法は、前記ボリュームが平面であることに基づいて、前記子サブボリュームのうちの少なくとも1つが前記第1の平面内にあることを信号伝達するための平面位置フラグをエンコードすることをさらに含む、請求項1に記載の方法。
【請求項3】
占有ビットをエンコードすることは、前記第2の組に関連付けられた占有ビットをコーディングすることを控えることと、前記第2の組がいかなる点も含まないことに基づいて、前記第2の組に関連付けられた前記占有ビットに関する値を推論することとを含む、請求項2に記載の方法。
【請求項4】
占有ビットをエンコードすることは、コーディング順序における前記第1の組の全ての他の占有ビットが、占有されていないことを示す値を有すると決定することに基づいて、占有されていることを示す値を有するように前記コーディング順序における前記第1の組に関連付けられた前記占有ビットのうちの少なくとも1つを推論することをさらに含む、請求項3に記載の方法。
【請求項5】
前記ボリュームが平面であるかどうかを決定することは、前記ボリュームが平面ではないと決定し、それに基づいて、前記第1の組における前記占有ビットのうちの少なくとも1つおよび前記第2の組における前記占有ビットのうちの少なくとも1つが占有されていることを示す値を有することに基づいて、占有ビットをエンコードすることを含む、請求項1-4のいずれかに記載の方法。
【請求項6】
前記点群は、前記ボリューム空間内のデカルト軸に対して定義され、前記デカルト軸は、水平面に垂直な垂直向きz軸を有し、前記第1の平面および前記第2の平面は、前記水平面に平行である、請求項1-5のいずれかに記載の方法。
【請求項7】
前記点群は、前記ボリューム空間内のデカルト軸に対して定義され、前記デカルト軸は、水平面に垂直な垂直向きz軸を有し、前記第1の平面および前記第2の平面は、前記水平面に直交する、請求項1-6のいずれかに記載の方法。
【請求項8】
前記ボリュームが平面モードコーディングに関して適格であることを最初に決定することをさらに含む、請求項1-7のいずれかに記載の方法。
【請求項9】
前記ボリュームが平面モードコーディングに関して適格であることを決定することは、平面性の確率を決定することと、前記平面性の確率が閾値適格性値を上回ることを決定することとを含む、請求項8に記載の方法。
【請求項10】
前記平面モードフラグをエンコードすることは、水平平面モードフラグをエンコードすることと、垂直平面モードフラグをエンコードすることとを含む、請求項1-9のいずれかに記載の方法。
【請求項11】
物理的オブジェクトの3次元場所を表す再構成された点群を生成するために、圧縮された点群データのビットストリームをデコードする方法であって、前記点群は、サブボリュームに再帰的に分割され、前記点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、前記子サブボリュームの第1の組は、第1の平面内に位置付けられ、前記子サブボリュームの第2の組は、前記第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが前記点のうちの少なくとも1つを含むかどうかを示し、
前記方法は、前記占有ビットを再構成することによって前記点群の点を再構成することを含み、
前記占有ビットを再構成することは、
前記ボリュームが平面であるかどうかを示す平面モードフラグを前記ビットストリームからデコードすることであって、前記ボリュームは、少なくとも1つの点を含む全ての子サブボリュームが前記第1の組または前記第2の組のいずれかに位置付けられている場合、平面である、ことと、
前記第1の組の子サブボリュームに関する占有ビットを前記ビットストリームからデコードすることであって、前記占有ビットをデコードすることは、少なくとも1つの占有ビットに関して、前記ボリュームが平面であるかどうかに基づいて、その値を推論し、それを前記ビットストリームからデコードしないことを含む、ことと
による、方法。
【請求項12】
前記平面モードフラグは、前記ボリュームが平面であることを示し、前記ボリュームが平面であることに基づいて、前記方法は、前記第1の組における前記子サブボリュームのうちの少なくとも1つが、前記点のうちの少なくとも1つを含み、前記第2の組における前記子サブボリュームのうちのいずれも、前記点のうちのいずれも含まないことを示す平面位置フラグをデコードすることをさらに含む、請求項11に記載の方法。
【請求項13】
占有ビットをデコードすることは、前記第2の組に関連付けられた占有ビットをデコードすることを控えることと、前記第2の組がいかなる点も含まないことに基づいて、前記第2の組に関連付けられた前記占有ビットに関する値を推論することとを含む、請求項12に記載の方法。
【請求項14】
占有ビットをデコードすることは、コーディング順序における前記第1の組の全ての他の占有ビットが、占有されていないことを示す値を有すると決定することに基づいて、占有されていることを示す値を有するように前記コーディング順序における前記第1の組に関連付けられた前記占有ビットのうちの少なくとも1つを推論することをさらに含む、請求項13に記載の方法。
【請求項15】
前記デコードされた平面モードフラグは、前記ボリュームが平面ではないことを示し、それに基づいて、前記占有ビットをデコードすることは、前記第1の組における前記占有ビットのうちの少なくとも1つおよび前記第2の組における前記占有ビットのうちの少なくとも1つが占有されていることを示す値を有することに基づいて、占有ビットをデコードすることを含む、請求項11-14のいずれかに記載の方法。
【請求項16】
前記点群は、前記ボリューム空間内のデカルト軸に対して定義され、前記デカルト軸は、水平面に垂直な垂直向きz軸を有し、前記第1の平面および前記第2の平面は、前記水平面に平行である、請求項11-15のいずれかに記載の方法。
【請求項17】
前記点群は、前記ボリューム空間内のデカルト軸に対して定義され、前記デカルト軸は、水平面に垂直な垂直向きz軸を有し、前記第1の平面および前記第2の平面は、前記水平面に直交する、請求項11-16のいずれかに記載の方法。
【請求項18】
前記ボリュームが平面モードコーディングに関して適格であることを最初に決定することをさらに含む、請求項11-17のいずれかに記載の方法。
【請求項19】
前記ボリュームが平面モードコーディングに関して適格であることを決定することは、平面性の確率を決定することと、前記平面性の確率が閾値適格性値を上回ることを決定することとを含む、請求項18に記載の方法。
【請求項20】
前記平面モードフラグをデコードすることは、水平平面モードフラグをデコードすることと、垂直平面モードフラグをデコードすることとを含む、請求項11-19のいずれかに記載の方法。
【請求項21】
オブジェクトの3次元場所を表す圧縮された点群データのビットストリームを発生させるために、点群をエンコードするためのエンコーダであって、前記点群は、サブボリュームに再帰的に分割され、前記点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、前記子サブボリュームの第1の組は、第1の平面内に位置付けられ、前記子サブボリュームの第2の組は、前記第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが前記点のうちの少なくとも1つを含むかどうかを示し、
前記エンコーダは、
プロセッサと、
メモリと、
前記プロセッサによって実行可能な命令を含むエンコーディングアプリケーションと
を備え、
前記命令は、実行されると、
少なくとも1つの点を含む全ての子サブボリュームが前記第1の組または前記第2の組のいずれかに位置付けられているかどうかに基づいて、前記ボリュームが平面であるかどうかを決定することと、
前記ボリュームが平面であるかどうかを信号伝達するために、前記ビットストリームにおいて平面モードフラグをエンコードすることと、
前記第1の組の子サブボリュームに関する占有ビットを前記ビットストリームにおいてエンコードすることであって、前記占有ビットをエンコードすることは、少なくとも1つの占有ビットに関して、前記ボリュームが平面であるかどうかに基づいて、その値を推論し、それを前記ビットストリームにおいてエンコードしないことを含む、ことと、
前記圧縮された点群データのビットストリームを出力することと
を前記プロセッサに行わせる、エンコーダ。
【請求項22】
物理的オブジェクトの3次元場所を表す再構成された点群を生成するために、圧縮された点群データのビットストリームをデコードするためのデコーダであって、前記点群は、サブボリュームに再帰的に分割され、前記点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、前記子サブボリュームの第1の組は、第1の平面内に位置付けられ、前記子サブボリュームの第2の組は、前記第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが前記点のうちの少なくとも1つを含むかどうかを示し、
前記デコーダは、
プロセッサと、
メモリと、
前記プロセッサによって実行可能な命令を含むデコーディングアプリケーションと
を備え、
前記命令は、実行されると、前記占有ビットを再構成することによって、前記点群の点を再構成することを前記プロセッサに行わせ、
前記占有ビットを再構成することは、
前記ボリュームが平面であるかどうかを示す平面モードフラグを前記ビットストリームからデコードすることであって、前記ボリュームは、少なくとも1つの点を含む全ての子サブボリュームが前記第1の組または前記第2の組のいずれかに位置付けられている場合、平面である、ことと、
前記第1の組の子サブボリュームに関する前記ビットストリームからデコードすることであって、前記占有ビットをデコードすることは、少なくとも1つの占有ビットに関して、前記ボリュームが平面であるかどうかに基づいて、その値を推論し、それを前記ビットストリームからデコードしないことを含む、ことと
による、デコーダ。
【請求項23】
オブジェクトの3次元場所を表す圧縮された点群データのビットストリームを発生させるために、点群をエンコードするためのプロセッサ実行可能命令を記憶している非一過性プロセッサ読み取り可能な媒体であって、前記点群は、サブボリュームに再帰的に分割され、前記点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、前記子サブボリュームの第1の組は、第1の平面内に位置付けられ、前記子サブボリュームの第2の組は、前記第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが前記点のうちの少なくとも1つを含むかどうかを示し、前記プロセッサ実行可能命令は、プロセッサによって実行されると、
少なくとも1つの点を含む全ての子サブボリュームが前記第1の組または前記第2の組のいずれかに位置付けられているかどうかに基づいて、前記ボリュームが平面であるかどうかを決定することと、
前記ボリュームが平面であるかどうかを信号伝達するために、前記ビットストリームにおいて平面モードフラグをエンコードすることと、
前記第1の組の子サブボリュームに関する占有ビットを前記ビットストリームにおいてエンコードすることであって、前記占有ビットをエンコードすることは、少なくとも1つの占有ビットに関して、前記ボリュームが平面であるかどうかに基づいて、その値を推論し、それを前記ビットストリームにおいてエンコードしないことを含む、ことと、
前記圧縮された点群データのビットストリームを出力することと
を前記プロセッサに行わせる、非一過性プロセッサ読み取り可能な媒体。
【請求項24】
物理的オブジェクトの3次元場所を表す再構成された点群を生成するために、圧縮された点群データのビットストリームをデコードするためのプロセッサ実行可能命令を記憶している非一過性プロセッサ読み取り可能な媒体であって、前記点群は、サブボリュームに再帰的に分割され、前記点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、前記子サブボリュームの第1の組は、第1の平面内に位置付けられ、前記子サブボリュームの第2の組は、前記第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが前記点のうちの少なくとも1つを含むかどうかを示し、前記プロセッサ実行可能命令は、プロセッサによって実行されると、前記占有ビットを再構成することによって、前記点群の点を再構成することを前記プロセッサに行わせ、
前記占有ビットを再構成することは、
前記ボリュームが平面であるかどうかを示す平面モードフラグを前記ビットストリームからデコードすることであって、前記ボリュームは、少なくとも1つの点を含む全ての子サブボリュームが前記第1の組または前記第2の組のいずれかに位置付けられている場合、平面である、ことと、
前記第1の組の子サブボリュームに関する占有ビットを前記ビットストリームからデコードすることであって、前記占有ビットをデコードすることは、少なくとも1つの占有ビットに関して、前記ボリュームが平面であるかどうかに基づいて、その値を推論し、それを前記ビットストリームからデコードしないことを含む、ことと
による、非一過性プロセッサ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、概して、点群圧縮に関し、具体的に、点群のオクツリーベースのコーディングにおける占有データの改良された圧縮のための方法およびデバイスに関する。
【背景技術】
【0002】
データ圧縮が、情報を効率的に記憶、伝送、および再生するために、通信およびコンピュータネットワーキングにおいて使用される。3次元オブジェクトまたは空間の表現への関心が、高まっておい、それらは、大きいデータセットを伴い得、それらのために、効率的かつ効果的な圧縮が非常に有用かつ有益であろう。ある場合、3次元オブジェクトまたは空間は、点群を使用して表され得、点群は、各々が3つの座標場所(X,Y,Z)を有し、ある場合、色データ(例えば、ルミナンスおよびクロミナンス)、透明度、反射率、法線ベクトル等のような他の属性を有する点の組である。点群は、静的(静止オブジェクトまたは単一の時点における環境/オブジェクトのスナップショット)または動的(点群の時間順の一続き)であり得る。
【0003】
点群に関する例示的用途は、トポグラフィおよびマッピング用途を含む。自律車両および他のマシンビジョン用途は、LiDAR走査装置から等の環境の3D走査の形態における点群センサデータに依拠し得る。仮想現実シミュレーションは、点群に依拠し得る。
【0004】
点群が、大量のデータを伴い得、そのデータを迅速かつ正確に圧縮(エンコードおよびデコード)することが、非常に着目されていることを理解されたい。故に、点群に関するデータをより効率的および/または効果的に圧縮する方法およびデバイスを提供することが、有利であろう。そのような方法は、改良された圧縮を通した記憶装置要件(メモリ)の節約または圧縮されたデータの伝送に関する帯域幅の節約をもたらし、それによって、例として、自動車用途のため等の3Dビジョンシステムの改良された動作または仮想現実システムの動作およびレンダリングの改良された速度をもたらし得る。
【発明の概要】
【課題を解決するための手段】
【0005】
本願は、点群をエンコードおよびデコードする方法、および点群をエンコードおよびデコードするためのエンコーダおよびデコーダを説明する。
【0006】
一側面において、本願は、オブジェクトの3次元場所を表す圧縮された点群データのビットストリームを発生させるために、点群をエンコードする方法を説明し、点群は、サブボリュームに再帰的に分割され、点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組と子サブボリュームの第2の組とに区画され、子サブボリュームの第1の組は、第1の平面内に位置付けられ、子サブボリュームの第2の組は、第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが点のうちの少なくとも1つを含むかどうかを示す。方法は、少なくとも1つの点を含む全ての子サブボリュームが第1の組または第2の組のいずれかに位置付けられているかどうかに基づいて、ボリュームが平面であるかどうかを決定することと;ボリュームが平面であるかどうかを信号伝達するために、ビットストリームにおいて平面モードフラグをエンコードすることと;少なくとも1つの占有ビットに関して、ボリュームが平面であるかどうかに基づいて、その値を推論し、それをビットストリームにおいてエンコードしないことを含む、第1の組の子サブボリュームに関する占有ビットをビットストリームにおいてエンコードすることと、圧縮された点群データのビットストリームを出力することとを含み得る。
【0007】
別の側面において、本願は、物理的オブジェクトの3次元場所を表す再構成された点群を生成するために、圧縮された点群データのビットストリームをデコードする方法を説明し、点群は、サブボリュームに再帰的に分割され、点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、子サブボリュームの第1の組は、第1の平面内に位置付けられ、子サブボリュームの第2の組は、第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが点のうちの少なくとも1つを含むかどうかを示す。方法は、ボリュームが平面であるかどうかを示す平面モードフラグをビットストリームからデコードすることであって、ボリュームは、少なくとも1つの点を含む全ての子サブボリュームが第1の組または第2の組のいずれかに位置付けられている場合、平面である、ことと;少なくとも1つの占有ビットに関して、ボリュームが平面であるかどうかに基づいて、その値を推論し、ビットストリームからこれをデコードしないことを含む、第1の組の子サブボリュームに関する占有ビットをビットストリームからデコードすることとによって、占有ビットを再構成することによって点群の点を再構成することを含み得る。
【0008】
いくつかの実装では、ボリュームが平面であるかどうかを決定することは、第1の組における子サブボリュームのうちの少なくとも1つが、点のうちの少なくとも1つを含み、第2の組における子サブボリュームのうちのいずれも、点のうちのいずれも含まないと決定することによって、ボリュームが平面であると決定することを含み得、方法は、ボリュームが平面であることに基づいて、該子サブボリュームのうちの少なくとも1つが第1の平面内にあることを信号伝達するための平面位置フラグをエンコードすることをさらに含み得る。そのような実装では、ある場合、占有ビットをエンコードすることは、第2の組に関連付けられた占有ビットをコーディングすることを控えることと、第2の組がいかなる点も含まないことに基づいて、第2の組に関連付けられた占有ビットに関する値を推論することとを含む。占有ビットをエンコードすることは、コーディング順序における第1の組の全ての他の占有ビットが、占有されていないことを示す値を有すると決定することに基づいて、占有されていることを示す値を有するようにコーディング順序における第1の組に関連付けられた占有ビットのうちの少なくとも1つを推論することをさらに含み得る。
【0009】
いくつかの実装では、ボリュームが平面であるかどうかを決定することは、ボリュームが平面ではないと決定し、それに基づいて、第1の組における占有ビットのうちの少なくとも1つおよび第2の組における占有ビットのうちの少なくとも1つが、占有されていることを示す値を有することに基づいて、占有ビットをエンコードすることを含む。
【0010】
いくつかの実装では、点群は、ボリューム空間内のデカルト軸に対して定義され、デカルト軸は、水平面に垂直な垂直向きz軸を有し、第1の平面および第2の平面は、水平面に平行である。いくつかの他の実装では、第1の平面および第2の平面は、水平面に直交する。
【0011】
いくつかの実装では、方法は、最初に、ボリュームが平面モードコーディングに関して適格であると決定することを含む。ボリュームが平面モードコーディングに関して適格であると決定することは、平面性の確率を決定することと、平面性の確率が閾値適格性値より大きいことを決定することとを含み得る。
【0012】
いくつかの実装では、平面モードフラグをエンコードすることは、水平平面モードフラグをエンコードすることと、垂直平面モードフラグをエンコードすることとを含み得る。
【0013】
さらにもう1つの側面において、本願は、オブジェクトの3次元場所を表す圧縮された点群データのビットストリームを発生させるために、点群をエンコードする方法を説明し、点群は、サブボリュームに再帰的に分割され、点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、子サブボリュームの第1の組は、第1の平面内に位置付けられ、子サブボリュームの第2の組は、第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが点のうちの少なくとも1つを含むかどうかを示し、第1の平面および第2の平面の両方は、軸に直交する。方法は、少なくとも1つの点を含む全ての子サブボリュームが第1の組または第2の組のいずれかに位置付けられているかどうかに基づいて、ボリュームが平面であるかどうかを決定することと;ボリュームが平面であるかどうかを信号伝達するために、ビットストリームにおいて平面モードフラグをエントロピエンコーディングすることであって、エントロピエンコーディングは、部分的に、(a)そのボリュームを含む親ボリュームが占有において平面であるかどうか、(b)親深度における近隣のボリュームの占有であって、近隣のボリュームは、そのボリュームに隣接し、親ボリュームと共通する面を有する、親深度における近隣のボリュームの占有、または、(c)そのボリュームと、そのボリュームと同じ深度にあり、軸に関してそのボリュームと同じ位置を有する最も接近したすでにコーディングされた占有されたボリュームとの間の距離のうちの1つ以上に基づいて、平面モードフラグをコーディングするためのコンテキストを決定することを含む、ことと;子サブボリュームのうちの少なくともいくつかに関する占有ビットをエンコードすることと;圧縮された点群データのビットストリームを出力することとを含み得る。
【0014】
さらなる側面において、本願は、物理的オブジェクトの3次元場所を表す再構成された点群を生成するために、圧縮された点群データのビットストリームをデコードする方法を説明し、点群は、サブボリュームに再帰的に分割され、点群の点を含むボリューム空間内に位置し、ボリュームが、子サブボリュームの第1の組および子サブボリュームの第2の組に区画され、子サブボリュームの第1の組は、第1の平面内に位置付けられ、子サブボリュームの第2の組は、第1の平面に平行な第2の平面内に位置付けられ、各それぞれの子サブボリュームに関連付けられた占有ビットが、そのそれぞれの子サブボリュームが点のうちの少なくとも1つを含むかどうかを示し、第1の平面および第2の平面の両方は、軸に直交する。方法は、ボリュームが平面であるかどうかを示す平面モードフラグをビットストリームからエントロピデコーディングすることであって、ボリュームは、少なくとも1つの点を含む全ての子サブボリュームが第1の組または第2の組のいずれかに位置付けられている場合、平面であり、エントロピデコーディングは、部分的に、(a)そのボリュームを含む親ボリュームが占有において平面であるかどうか、(b)親深度における近隣のボリュームの占有であって、近隣のボリュームは、そのボリュームに隣接し、親ボリュームと共通する面を有する、親深度における近隣のボリュームの占有、または、(c)そのボリュームと、そのボリュームと同じ深度にあり、軸に関してボそのリュームと同じ位置を有する最も接近したすでにコーディングされた占有されたボリュームとの間の距離のうちの1つ以上に基づいて、平面モードフラグをデコードするためのコンテキストを決定することを含む、ことと;子サブボリュームに関する占有ビットを再構成することとによって、占有ビットを再構成することによって点群の点を再構成することを含み得る。
【0015】
いくつかの実装では、ボリュームを含む親ボリュームは、親平面モードフラグが、親ボリュームが平面であることを示す場合、占有において平面である。
【0016】
いくつかの実装では、距離は、「近い」、または「遠い」であり、距離は、距離メトリックを計算し、それを閾値と比較することに基づき得る。
【0017】
いくつかの実装では、平面モードフラグをコーディングするためのコンテキストを決定することは、(a)、(b)、および(c)の組み合わせに基づき得る。
【0018】
いくつかの実装では、ボリュームが平面であるかどうかを決定することは、ボリュームが平面であることを決定し、結果として、少なくとも1つの点が、第1の組に位置付けられるか、第2の組に位置付けられるかを信号伝達するための平面位置フラグをエントロピエンコーディングすることを含む。平面位置フラグをエントロピエンコーディングすることは、平面位置フラグをコーディングするためのコンテキストを決定することを含み得る。コンテキストを決定することは、部分的に、(a’)親深度における近隣のボリュームの占有、(b’)そのボリュームと、最も接近したすでにコーディングされた占有されたボリュームとの間の距離、(c’)存在する場合、最も接近したすでにコーディングされた占有されたボリュームの平面位置、または、(d’)親ボリューム内のそのボリュームの位置のうちの1つ以上に基づき得る。ある場合、平面位置フラグをコーディングするためのコンテキストを決定することは、(a’)、(b’)、(c’)、および(d’)のうちの3つ以上の組み合わせに基づき得る。
【0019】
いくつかの実装では、距離は、「近い」、「遠すぎない」、または「遠い」であり、距離は、距離メトリックを計算し、それを第1の閾値および第2の閾値と比較することに基づき得る。
【0020】
さらなる側面において、本願は、エンコーディングおよびデコーディングのそのような方法を実装するように構成されたエンコーダおよびデコーダを説明する。
【0021】
なおさらなる側面において、本願は、実行されると、エンコーディングおよび/またはデコーディングの説明される方法を1つ以上のプロセッサに実施させるコンピュータ実行可能プログラム命令を記憶している非一過性コンピュータ読み取り可能な媒体を説明する。
【0022】
さらにもう1つの側面において、本願は、コンピュータによって実行されると、エンコーディングおよび/またはデコーディングの説明される方法をコンピュータに実施させる、プログラム命令を含むコンピュータ読み取り可能な信号を説明する。
【0023】
本願の他の側面および特徴が、付随の図と併せて、以下の例の説明の精査から、当業者によって理解されるであろう。
【0024】
本発明の一側面または実施形態に関連して説明される任意の特徴は、1つ以上の他の側面/実施形態に関しても使用され得る。本発明のこれらおよび他の側面は、本明細書に説明される実施形態から明白となり、それを参照して明瞭にされるであろう。
【図面の簡単な説明】
【0025】
ここで、例として、本願の例示的実施形態を示す付随の図面が、参照されるであろう。
【0026】
図1図1は、例示的点群エンコーダの簡略化ブロック図を示す。
【0027】
図2図2は、例示的点群デコーダの簡略化ブロック図を示す。
【0028】
図3図3および4は、その占有される子サブボリュームにおける平面性を示すボリュームの例を図示する。
図4図3および4は、その占有される子サブボリュームにおける平面性を示すボリュームの例を図示する。
【0029】
図5図5は、平面コーディングモードを使用して点群データをエンコードする一例示的方法をフローチャート形態において示す。
【0030】
図6図6は、平面コーディングモードを使用して点群データをデコードする一例示的方法をフローチャート形態において示す。
【0031】
図7図7は、平面性情報に基づいて占有ビットをコーディングするためのプロセスの一例の一部を示す。
【0032】
図8図8は、平面性情報に基づいて占有ビットをコーディングするためのプロセスの別の例の一部を示す。
【0033】
図9図9は、平面モードフラグまたは平面位置フラグをコーディングするためのコンテキストを決定することにおける可能な因子を図式的に図示する。
【0034】
図10図10は、同じ深度かつ共通平面における最も接近したすでにコーディングされた占有されたノードを追跡するための一例示的機構を示す。
【0035】
図11図11は、エンコーダの例示的簡略化ブロック図を示す。
【0036】
図12図12は、デコーダの例示的簡略化ブロック図を示す。
【発明を実施するための形態】
【0037】
類似する参照番号が、類似するコンポーネントを表すために異なる図において使用されていることもある。
【0038】
下記の説明では随時、用語「ノード」、「ボリューム」、および「サブボリューム」は、同義的に使用され得る。ノードが、ボリュームまたはサブボリュームに関連付けられていることを理解されたい。ノードは、内部ノードまたはリーフノードであり得るツリー上の特定の点である。ボリュームまたはサブボリュームは、ノードが表す境を限られた物理的空間である。用語「ボリューム」は、ある場合、点群を含むために定義される最も大きい境を限られた空間を指すように使用され得る。ボリュームは、点群データをコーディングするための相互接続されたノードのツリー構造を構築する目的のために、サブボリュームに再帰的に分化され得る。サブボリュームへのボリュームの区画のツリー様構造は、「親」および「子」関係と称され得、サブボリュームは、親ノードまたは親ボリュームに対する子ノードまたは子サブボリュームである。同じボリューム内のサブボリュームは、兄弟ノードまたは兄弟サブボリュームと称され得る。
【0039】
本願では、用語「および/または」は、列挙される要素のうちのいずれか1つのみ、任意の副次的組み合わせ、または要素の全てを含み、必ずしも追加の要素を除外することなく、列挙される要素の全ての可能な組み合わせおよび副次的組み合わせを網羅することを意図している。
【0040】
本願では、語句「~または~のうちの少なくとも1つ」は、列挙される要素のうちのいずれか1つのみ、任意の副次的組み合わせ、または要素の全てを含み、必ずしも任意の追加の要素を除外することなく、かつ必ずしも要素の全てを要求することなく、列挙される要素のうちのいずれか1つ以上のものを網羅することを意図している。
【0041】
点群は、3次元座標系における点の組である。点は、多くの場合、1つ以上のオブジェクトの外面を表すことを意図している。各点は、3次元座標系におけるある場所(位置)を有する。位置は、デカルトまたは任意の他の座標系であり得る3つの座標(X,Y,Z)によって表され得る。点は、色等の他の関連付けられた属性を有し得、それらも、ある場合、R、G、BまたはY、Cb、Cr等の3つの成分値であり得る。他の関連付けられた属性は、点群データに関する所望の用途に応じて、透明度、反射率、法線ベクトル等を含み得る。
【0042】
点群は、静的または動的であり得る。例えば、オブジェクトまたはトポグラフィの詳細な走査またはマッピングは、静的点群データであり得る。マシンビジョン目的のための環境のLiDARベースの走査は、点群が(少なくとも潜在的に)経時的に変化し、例えば、ボリュームの各連続的走査を伴う点において、動的であり得る。動的点群は、したがって、点群の時間順の一続きである。
【0043】
点群データは、いくつかの例を挙げると、保存(歴史的または文化的物体の走査)、マッピング、マシンビジョン(自律または半自律自動車等)、および仮想現実システムを含むいくつかの用途において使用され得る。マシンビジョンのような用途に関する動的点群データは、保存目的に関するそれのような静的点群データと全く異なり得る。例えば、自動車ビジョンは、典型的に、高頻度の捕捉を伴うLiDAR(または類似する)センサを通して取得される比較的に低い分解能であり、無色であり、高度に動的な点群を伴う。そのような点群の目的は、人間による消費または視認のためではなく、むしろ、決定プロセスにおける機械オブジェクト検出/分類のためである。例として、典型的なLiDARフレームは、約数千の点を含む一方、高品質仮想現実用途は、数百万の点を要求する。算出速度が向上し、新しい用途が見出されるにつれて、経時的により高い分解能データの要求が存在するであろうことが予期され得る。
【0044】
点群データは、有用であるが、効果的かつ効率的な圧縮、すなわち、エンコーディングおよびデコーディングプロセスの不足は、採用および展開を妨げ得る。オーディオまたはビデオのような他のデータ圧縮の場合に生じない点群をコーディングすることにおける特定の課題は、点群の幾何学形状のコーディングである。点群は、低密度で集合している傾向があり、それは、点の場所を効率的にコーディングすることをはるかに困難にする。
【0045】
点群データをコーディングするためのより一般的な機構のうちの1つは、ツリーベースの構造の使用を通したものである。ツリーベースの構造では、点群に関する境を限る3次元ボリュームは、再帰的にサブボリュームに分化される。ツリーのノードは、サブボリュームに対応する。サブボリュームをさらに分化するかどうかの決定は、ツリーの分解能および/またはサブボリューム内に含まれる任意の点が存在するかどうかに基づき得る。ノードは、その関連付けられたサブボリュームが点を含むかどうかを示す占有フラグを有し得る。分割フラグが、ノードが子ノードを有するかどうか(すなわち、現在のボリュームが、サブボリュームにさらに分割されているかどうか)を信号伝達し得る。これらのフラグは、ある場合、エントロピコーディングされ得、ある場合、予測コーディングが、使用され得る。
【0046】
一般的に使用されるツリー構造は、オクツリーである。この構造では、ボリューム/サブボリュームの全ては、立方体であり、サブボリュームの各分割は、8つのさらなるサブボリューム/サブ立方体をもたらす。別の一般的に使用されるツリー構造は、KDツリーであり、ボリューム(立方体または長方形直方体)が、軸のうちの1つに直交する平面によって再帰的に2つに分化される。オクツリーは、KDツリーの特別な事例であり、ボリュームは、各々が3つの軸のうちの1つに直交する3つの平面によって分化される。ボリュームの区画は、必ずしも2つのサブボリューム(KDツリー)または8つのサブボリューム(オクツリー)へのものではなく、非長方形形状への分化を含む他の区画を伴うか、または、非隣接サブボリュームを伴い得る。
【0047】
本願は、容易な解説のために、および、それらが自動車用途のための普及した候補ツリー構造であるので、オクツリーに言及し得るが、本明細書に説明される方法およびデバイスが、他のツリー構造を使用して実装され得ることを理解されたい。
【0048】
ここで、本願の側面による、点群エンコーダ10の簡略化ブロック図を示す図1が、参照される。点群エンコーダ10は、点群データを受信し、ツリー(この例では、オクツリー)を生成するためのツリー構築モジュール12を含み、ツリーは、点群を含むボリューム空間の幾何学形状を表し、その幾何学形状における点群からの点の場所または位置を示す。
【0049】
オクツリーのように、均一に区画されるツリー構造の場合、各ノードは、占有ビットの一続きによって表され得、各占有ビットは、ノード内のサブボリュームのうちの1つに対応し、そのサブボリュームが少なくとも1つの点を含むかどうかを信号伝達する。占有されたサブボリュームは、ツリーの最大深度まで再帰的に分割される。これは、ツリーの直列化またはバイナリ化と呼ばれ得る。図1に示されるように、この例では、点群エンコーダ10は、オクツリーをバイナリ化し、ツリーを表すバイナリ化されたデータのビットストリームを生成するためのバイナライザ14を含む。
【0050】
ビットのこの一続きは、次いで、圧縮されたビットストリームを生成するために、エントロピエンコーダ16を使用してエンコードされ得る。エントロピエンコーダ16は、エントロピエンコーダ16によるコンテキスト決定に基づいて、ビットをコーディングするための確率を規定する、コンテキストモデル18を使用して、ビットの一続きをエンコードし得る。コンテキストモデル18は、各ビットまたはビットの定義された組のコーディング後に適応的に更新され得る。エントロピエンコーダ16は、ある場合、バイナリ算術エンコーダであり得る。バイナリ算術エンコーダは、いくつかの実装では、コンテキスト適応バイナリ算術コーディング(CABAC)を採用し得る。いくつかの実装では、算術コーダ以外のコーダも、使用され得る。
【0051】
ある場合、エントロピエンコーダ16は、バイナリコーダではないこともあり、代わりに、非バイナリデータに対して動作し得る。ツリー構築モジュール12からの出力オクツリーデータは、バイナリ形態において評価されないこともあり、代わりに、非バイナリデータとしてエンコードされ得る。例えば、オクツリーの場合、それらの走査順序におけるサブボリューム内の8つのフラグ(例えば、占有フラグ)は、28-1ビット数(例えば、値0は、分割されたサブボリュームに関して可能ではないので、すなわち、それは、それが全く占有されていない場合、分割されていないであろうから、1~255の値を有する整数)と考えられ得る。この数は、いくつかの実装では、マルチシンボル算術コーダを使用するエントロピエンコーダによってエンコードされ得る。サブボリューム、例えば、立方体内で、本整数を定義するフラグの一続きは、「パターン」と呼ばれ得る。
【0052】
点群圧縮において典型的に使用される慣例は、1の占有ビット値が、関連付けられたノードまたはボリュームが「占有されている」、すなわち、それが少なくとも1つの点を含むことを信号伝達し、0の占有ビット値が、関連付けられたノードまたはボリュームが「占有されていない」、すなわち、それがいかなる点も含まないことを信号伝達することである。より一般的に、占有ビットは、占有されていることを示す値または占有されていないことを示す値を有し得る。容易な解説のために、下記の説明では、1=占有されていること、および、0=占有されていないことの慣例が使用される例示的実施形態が、説明され得るが、しかしながら、本願が、この慣例に限定されないことを理解されたい。
【0053】
エンコーダ10に対応する例示的点群デコーダ50のブロック図が、図2に示される。点群デコーダ50は、エンコーダ10によって使用される同じコンテキストモデル54を使用するエントロピデコーダ52を含む。エントロピデコーダ52は、圧縮されたデータの入力ビットストリームを受信し、データをエントロピデコーディングし、圧縮解除されたビットの出力の一続きを生成する。その一続きは、次いで、ツリー再構成器56によって再構成された点群データに変換される。ツリー再構成器56は、圧縮解除されたデータおよびツリーデータがバイナリ化された走査順序の知識からツリー構造を再構築する。ツリー再構成器56は、したがって、(ツリーコーディングの分解能に従って)点群から点の場所を再構成することが可能である。
【0054】
欧州特許出願第18305037.6号では、本出願人は、特定のノードの近傍の以前にコーディングされたノードからのある占有情報に基づいて、特定のノードの占有のパターンをコーディングすることにおいて使用されるべき利用可能なパターン分布の中から選択する方法およびデバイスを説明した。一例示的実装では、占有情報は、特定のノードに対する親の占有のパターンから取得される。別の例示的実装では、占有情報は、特定のノードの近隣にある1つ以上のノードから取得される。欧州特許出願第18305037.6号の内容は、参照することによって本明細書に組み込まれる。これは、「近隣構成」を決定することと、少なくとも部分的に近隣構成に基づいて、コンテキスト(すなわち、パターン分布)を選択することと称される。
【0055】
欧州特許出願第18305415.4号では、本出願人は、占有パターンをバイナリエントロピコーディングする方法およびデバイスを説明した。欧州特許出願第18305415.4号の内容は、参照することによって本明細書に組み込まれる。
【0056】
あるタイプの点群データは、強い方向性を有する傾向がある。非自然環境は、特に、それらの環境が、均一な表面を特徴とする傾向があるので、強い方向性を示す。例えば、LiDARの場合、道路および隣接する建物の壁は、概ね水平に平面または垂直に平面である。室内の内部走査の場合、床、天井、および壁の全ては、平面である。自動車ビジョンおよび類似する用途の目的のためのLiDARは、より低い分解能である傾向があり、迅速かつ効率的に圧縮される必要もある。
【0057】
オクツリーは、それらが、あらゆる場合において、3つの直交する平面を使用する立方体の8つのサブ立方体への均等な分化の均一な区画プロセスを基本とするので、効率的なツリー構造であり、したがって、それらの構造を信号伝達することは、効率的である。しかしながら、現在の信号伝達プロセスを使用するオクツリーは、いくつかの非自然環境の平面性質を認識することから利用可能な効率を活用することが可能ではない。しかしながら、KDツリーは、区画を点群の方向性により良好に調整することが可能である。これは、これらのタイプの環境に関してそれらをより効率的かつ効果的な構造にする。KDツリーの欠点は、それらの構造の信号伝達が、オクツリーよりもかなり多くのデータを要求することである。KDツリーが不均一であるという事実は、オクツリー圧縮を改良するために使用される技法のうちのいくつかが、KDツリーに対して利用不可能であること、または実装することが算出的に困難であろうことを意味する。
【0058】
故に、水平および/または垂直方向性を活用することによって圧縮を改良する様式で、均一な区画ベースのツリー構造を使用して非自然環境を表すための機構を有することが、有利であろう。
【0059】
本願の一側面によると、改良された点群圧縮プロセスおよびデバイスは、平面コーディングモードを特徴とする。平面モードは、ボリュームが、その占有の観点から平面性に関するある要件を満たすことを示すように信号伝達される。特に、ボリュームは、その占有されたサブボリュームの全てが、共通平面内に位置付けられる場合、または位置する場合、平面である。信号伝達に関するシンタックスは、ボリュームが平面であるかどうかを示し得、平面である場合、共通平面の位置を示し得る。平面性のこの知識を活用することを通して、圧縮における利得が、達成され得る。平面モードを有効にするための適格性に関する基準を適用すること、および平面モード信号伝達のコンテキスト適応コーディングのための機構は、圧縮性能を改良することに役立つ。
【0060】
下記の説明では、平面性は、ボリュームおよびサブボリュームの構造と整列させられたデカルト軸に対するものであると仮定される。すなわち、ボリュームは、全てのその占有されたサブボリュームが軸のうちの1つに直交する共通平面内に位置付けられる場合、平面である。慣例として、軸は、z軸が垂直であると仮定し、(水平)平面がz軸に直交することを意味するであろう。下記の例のうちの多くでは、水平平面性が、概念を例証するために使用されるであろうが、しかしながら、本願が、水平平面性に限定されず、代替として、または加えて、x軸、y軸、またはxおよびy軸の両方に対する垂直平面性を含み得ることを理解されたい。さらに、いくつかの例では、平面性は、必ずしも、直交性によってデカルト軸と整列させられるわけではない。例証するために、一例では、xおよびy軸の両方と45度の角度にある対角線垂直平面性が、定義され得る。
【0061】
ここで、それらの各々が例示的ボリューム300および400を示す図3および4が、参照される。この例では、水平平面性が、例証および議論されるであろうが、当業者は、垂直または他の平面性への概念の拡張を理解するであろう。
【0062】
ボリューム300が、8つのサブボリュームに区画されて示される。占有されたサブボリュームは、陰影を使用して示される一方、占有されていないサブボリュームは、空で示される。ボリューム300内の下側の(z軸または垂直の意味で)4つのサブボリュームが、占有されていることに留意されたい。占有のこのパターンは、水平に平面であり、すなわち、占有されたサブボリュームの各々は、同じ水平面内にあり、すなわち、同じz位置を有する。ボリューム400は、占有の水平に平面のパターンの別の例を示す。ボリューム400の全ての占有されたサブボリュームは、同じ水平面内にある。ボリューム300は、下側平面が占有されている場合を示す。ボリューム400は、上側平面が占有されている場合を示す。これは、「平面位置」と呼ばれ得、平面位置は、平面サブボリュームがボリューム内にある場所を信号伝達する。この場合、それは、バイナリ「上側」または「下側」信号である。
【0063】
ボリュームの平面性は、平面の全てのサブボリューム、例えば、2×2×2ボリュームの上側半分の全てのサブボリュームが占有されている場合に限定されない。ある場合、その平面の他にいかなる占有されたサブボリュームも存在しないという条件で、その平面内のサブボリュームのうちの一部のみが、占有されている。実際に、わずか1つの占有されたサブボリュームが、「平面」と見なされ得る。ボリューム302、304、306、308、402、404、406、および408の各々は、水平に平面の占有の例を図示する。ボリューム308および408に関して、それらが、各場合において、ボリューム308および408の上側または下側半分が、空であり、すなわち、全ての占有されたサブボリューム(これらの例では、1つのサブボリューム)が、ボリューム308および408の1つの水平半分において位置するので、水平に平面であるための要件を満たすことに留意されたい。さらに、これらの例で、単一の占有されたサブボリュームを伴うボリュームが、y軸に対する垂直平面性およびx軸に対する垂直平面性に関する要件も満たすであろうことも理解されたい。すなわち、ボリューム308および408は、3つの方向において平面である。
【0064】
平面性は、平面モードフラグ、例えば、isPlanarを通してボリュームに関して信号伝達され得る。例えば、z軸、y軸、およびx軸に対する複数の可能な平面モードが存在する場合、複数のフラグ、すなわち、isZPlanar、isYPlanar、isXPlanarが、存在し得る。この例では、容易な例証のために、水平平面モードのみが、有効にされると仮定される。
【0065】
平面モードフラグは、ボリュームが平面であるかどうかを示す。それが、平面である場合、第2のシンタックス要素である平面位置フラグ、すなわち、planePositionが、ボリューム内の平面の位置を信号伝達するために使用され得る。この例では、planePositionフラグは、平面占有サブボリュームが、ボリュームの上側半分にあるか、下側半分にあるかを信号伝達する。
【0066】
非直交平面、例えば、軸のうちの1つ以上に対して対角線である平面を伴うより複雑な実装では、複数のフラグまたは非バイナリシンタックス要素を伴うより複雑な信号伝達シンタックスが、使用され得る。
【0067】
平面モードフラグおよび/または平面位置フラグは、任意の好適なコーディングスキームを使用して、ビットストリームにおいてエンコードされ得る。フラグは、いくつかの実装では、圧縮を改良するために、予測および/またはコンテキスト適応コーディングを使用して、エントロピエンコーディングされ得る。フラグをコーディングするためのコンテキストを決定するための例示的技法が、下記にさらに議論される。
(占有コーディングおよび平面モード)
【0068】
平面性を信号伝達することによって、占有ビットのコーディングは、改変され得る。何故なら、平面性情報が、占有パターンについての推論が行われることを可能にし、占有パターンが、占有の信号伝達をショートカットするからである。例えば、ボリュームが、平面である場合、平面位置フラグによってポイントされていない4つのサブボリュームは、空であると仮定され得、それらの占有ビットは、コーディングされる必要はない。占有された平面の最大4つのビットのみが、コーディングされる必要がある。さらに、その平面の最初の3つのコーディングされたビットが、ゼロ(占有されていない)である場合、コーディング順序における最後の(第4の)ビットは、平面信号伝達が、平面が占有されていることを示したので、1(占有されている)であると推測され得る。加えて、平面信号伝達が、ボリュームが平面ではないことを示す場合、両方の平面において少なくとも1つの占有されたサブボリュームが、存在しなければならず、それは、いずれかの平面の最初の3つの占有ビットが0である場合、いずれかの平面の最後のビットの追加の推論される占有を可能にする。
【0069】
故に、平面モードを信号伝達することは、占有データのコーディングにおける効率を提供し得る。それにもかかわらず、平面モード信号伝達は、シンタックス要素をビットストリームに追加し、全ての状況において効率を提供するわけではないこともある。例えば、高密度の点群において、かつある深度において、平面性を信号伝達することは、5つを上回る占有される子ノードを伴う任意のノードが、定義上は平面ではあり得ないので、有利ではないこともある。したがって、平面モードを有効にするための適格性基準を有することが、さらに有利であり得る。ローカルデータに適合する適格性基準を提供することが、さらに有利であろう。
【0070】
一例では、適格性は、低密度の群との併用に偏っていることもある。例えば、適格性基準は、ボリューム内の占有される子ノードの平均数等のメトリックに基づき得る。この移動平均は、ツリーのある深度に関して決定され、そして、次のより低い深度における平面モードの適格性のために使用され得る。一例では、平面モードは、占有されたサブボリュームの平均数が、3を上回る場合、無効にされ得る。この技法は、単純である利点を有するが、群の局所的特性への適合を欠く。
【0071】
別の例では、移動確率因子が、決定され得る。確率因子は、ノードが平面である尤度、すなわち、平面性の確率を示し得る。確率が、低い場合、これは、平面性を信号伝達する費用が、少ない潜在的利得に対して高いであろうことを示す。閾値適格性値が、設定され得、平面モードが、当時の確率因子が閾値を上回る場合(下式)、所与のボリューム/ノードに関して有効にされ得る:
p=確率(平面)≧閾値
【0072】
例として、選択される閾値は、0.6であり得るが、しかしながら、他の値も、他の状況のために使用され得ることを理解されたい。確率は、コーディングプロセス中に更新される。更新プロセスは、特定の用途のための高速または低速更新のために調整され得る。より高速の更新は、直近でコーディングされたノードに向かうより大きい重みまたはバイアスを与え得る。
【0073】
例示的確率更新プロセスは、以下のように表され得る:
new=(Lp+δ(コーディングされたノード))/(L+1)
【0074】
上記の式では、pは、現在の確率であり、pnewは、更新された確率であり、δ(コーディングされたノード)は、非平面に関して0であり、平面に関して1である現在のノードの平面ステータスであり、Lは、迅速に更新が行われる程度を調整するための重み係数である。重み係数Lは、単純な整数実装を可能にするために、255等の2の累乗-1に設定され得、より具体的に、除算は、簡単なシフト演算を使用して実装され得る。平面ステータスが、必ずしも、平面モードフラグがエンコードされたことを意味せず、したがって、確率は、平面モードが有効にされたかどうかにかかわらず、最近のノードにおける平面性を追跡することに留意されたい。例えば、デコーディングプロセス中、任意のノードの平面ステータスは、平面モードフラグがデコードされたかどうかから独立して、ノードに関連付けられた占有ビットのデコーディング後に把握される。
【0075】
確率の更新は、例えば、ノード占有がエンコードまたはデコードされるときに行われ得る。別の例では、確率の更新は、ノード平面情報が現在のノードに関してデコードされるときに行われ得る。更新された確率は、次いで、平面モード信号伝達に関するコーディング順序における次のノードの適格性を決定するために使用される。
【0076】
前述のように、平面モードは、水平面(z軸)または垂直面(x軸またはy軸)に関して、または、任意の2つまたは全ての3つに関して信号伝達され得る。2つ以上の方向に関する平面モードを信号伝達することが可能な場合、適格性基準は、異なり得る。すなわち、ノードに関して信号伝達される追加の平面モード毎に、占有信号伝達の観点からの利益は、半分である。第1の平面モードでは、平面である場合、占有ビットの半分が、推論され得る。第2の平面モードでは、残りの4つの占有ビットのうちの2つのみが、推論され得、以下同様である。故に、追加の平面モードを信号伝達するための閾値は、第1の平面モードよりも高くあり得る。
【0077】
「第1」、「第2」、および「第3」の平面モードの定義は、確率と最も確率の高いものから最も確率の低いものまでのそれらの順序とに基づき得る。閾値は、次いで、適格性に関して適用され、第1の閾値は、第2の閾値よりも低くあり得、以下同様である。例示的閾値は、0.6、0.77、および0.88であるが、これらは、単に、例証的である。別の実施形態では、1つのみの閾値が、存在し、最も確率の高い平面モードのみが、平面モードのうちの2つ以上のものが、閾値を満たす場合であっても、有効にされる。
【0078】
ここで、平面モードを使用して点群データをエンコードする例示的方法500をフローチャート形態において示す図5が、参照される。方法500は、ボリュームに関する占有情報をエンコードするためのプロセスを反映する。この例では、ボリュームは、オクツリーベースのコーディングに従って、各々が占有ビットを有する8つのサブボリュームに均一に区画される。簡潔にするために、この例は、1つのみの(例えば、水平)平面モードが使用されると仮定する。
【0079】
動作502において、エンコーダは、ボリュームが平面コーディングモードに関して適格であるかどうかを査定する。上で議論されるように、適格性は、一例では、群密度に基づき得、それは、占有される子ノードの平均数を使用して査定され得る。局所的適合を改良するために、適格性は、確率因子追跡に基づき得る。平面コーディングモードが、適格ではない場合、ボリュームに関する占有パターンは、動作504によって示されるように、平面コーディングモードを使用することなくエンコードされる。
【0080】
平面モードが、有効にされる場合、動作506において、エンコーダは、ボリュームが平面であるかどうかを査定する。該当しない場合、動作508において、それは、平面モードフラグをエンコードし、例えば、isPlanar=0である。動作510において、エンコーダは、次いで、平面あたり少なくとも1つの占有されたサブボリュームが存在することに基づいて、占有パターンをエンコードする。すなわち、占有パターンは、エンコードされ、いずれかの平面(上側または下側)に関してコーディングされた最初の3つのビットが、ゼロである場合、その平面に関する最後の(第4の)ビットは、コーディングされず、対応するサブボリュームが、占有されていなければならないので、1であると推論される。
【0081】
平面モードが、有効にされ、ボリュームが、平面である場合、動作512において、平面モードフラグが、エンコードされ、例えば、isPlanar=1である。ボリュームは、平面であるので、エンコーダは、次いで、平面位置フラグ、すなわち、planePositionもエンコードする。平面位置フラグは、平面占有サブボリュームが、ボリュームの上側半分にあるか、下側半分にあるかを信号伝達する。例えば、planePosition=0は、下側半分(すなわち、下側z軸位置)に対応し得、planePosition=1は、上側半分に対応し得る。占有ビットは、次いで、ボリュームの平面性および占有されたサブボリュームの位置の知識に基づいて、エンコードされる。すなわち、4つが、0であると推論され得るので、最大4つのビットが、エンコードされ、エンコードされる最初の3つがゼロである場合、第4のビットは、1であると推論され得る。
【0082】
エンコードされた点群データをデコードする例示的方法600が、図6に示される。例示的方法600は、エンコードされたデータのビットストリームを受信するデコーダによって実装される。現在のボリュームに関して、デコーダは、動作602において、ボリュームが平面モードに関して適格であるかどうかを決定する。適格性査定は、エンコーダにおいて実行されたものと同じ査定である。適格ではない場合、デコーダは、動作604によって示されるように、平面モード信号伝達を使用することなく、通常のように占有パターンをエントロピデコーディングする。
【0083】
平面モードが、有効にされる場合、動作606において、デコーダは、平面モードフラグをデコードする。デコードされた平面モードフラグは、動作608によって示されるように、ボリュームが平面であるかどうかを示す。平面ではない場合、デコーダは、各平面内の少なくとも1つのサブボリュームが占有されていることを把握して、占有ビットをデコードする。これは、デコーダが、デコードされた他のビットの値に応じて、占有ビットのうちの1つまたは2つを推論することを可能にし得る。
【0084】
デコードされた平面モードフラグが、ボリュームが平面であることを示す場合、動作612において、デコーダは、平面位置フラグをデコードする。デコードされた平面位置フラグは、占有されたサブボリュームが、ボリュームの上側半分であるか、下側半分であるかを示す。その知識に基づいて、デコーダは、次いで、動作614によって示されるように、占有されていない半分における4つの占有ビットの値をゼロとして推論し、それは、占有された半分に関する占有パターンの最大4つのビットをデコードする。
【0085】
前述のように、占有ビットのコーディングは、部分的に、近隣構成に基づくエントロピコーディングを含み得、近隣構成は、現在のボリュームと少なくともある面を共有する種々のボリュームの占有を反映する。近隣構成を査定することにおいて、近隣構成(NC)が、ゼロであり、近隣のボリュームのうちのいずれも占有されていないことを意味する場合、フラグが、現在のボリュームが単一の占有されたサブボリュームを有するかどうかを信号伝達するために、コーディングされ得る。
【0086】
NCおよび単一ノード信号伝達を使用する占有ビットのコーディングは、図7に示されるような平面モード信号伝達に基づいて適合され得る。図7は、占有ビットコーディングの例示的方法700を示す。方法700を示すフローチャートの部分は、占有ビットコーディングに対する平面信号伝達の影響を反映する。示されないが、好適な適格性試験が、行われ、平面フラグおよび位置フラグが、適用可能である場合、エンコード/デコードされると仮定され得る。この例では、1つのみの平面モードが、可能性として考えられると仮定されるであろうが、他のモードまたは追加のモードへの拡張が、理解されるであろう。
【0087】
動作702において、コーダは、NCがゼロであるかどうか、すなわち、全ての近隣のボリュームが空であるかどうかを査定する。該当しない場合、コーダは、動作704において、ボリュームが平面であるかどうかを査定する。平面ではない場合、コーダは、動作706によって示されるように、各平面内の少なくとも1つのビットが1であることを把握して、8つの占有ビットをエンコードまたはデコードする。平面である場合、コーダは、占有されていない平面のビットがゼロであると推論し、占有ビットのうちの少なくとも1つが1であることを把握して、他の4つのビットをコーディングする。
【0088】
NCが、ゼロである場合、コーダは、動作710に示されるように、単一の占有されたサブボリュームが存在するかどうかを決定する(単一ノードフラグによってビットストリームにおいて示される)。単一ノードが、真である場合、動作712において、データは、コーディングされた平面モードおよび平面位置フラグからまだ利用可能ではないボリューム内の単一ノードの場所に関する任意の残りのx-y-z位置データを信号伝達するために、バイパスコーディングされる。例えば、平面モードが、水平面情報をコーディングするために有効にされる場合、単一ノード場所xおよびyを信号伝達するために、フラグが、バイパスコーディングされるが、z場所は、平面位置フラグから把握される。
【0089】
単一ノードが、偽である場合、占有ビットは、動作714によって示されるように、少なくとも2つのサブボリュームが占有されていることを把握して、コーディングされる。これは、ボリュームが平面であるかどうか、および該当する場合、その平面位置を決定し、次いで、それに応じて、占有ビットをコーディングすることを含み得る。例えば、平面である場合、占有されていない平面は、全てゼロビットを含むと推論され得、占有された平面のビットは、コーディングされ得、それらのうちの最大2つが、少なくとも2つのサブボリュームが占有されているという知識に基づいて、推論され得る。
【0090】
ここで、可能な3つの平面モードを用いて占有ビットをコーディングする一例示的方法800を図示するフローチャートを示す図8が、参照される。方法800を示すフローチャートの部分は、占有ビットコーディングに対する平面信号伝達の影響を反映する。示されないが、好適な適格性試験が、行われ、平面フラグおよび位置フラグが、適用可能である場合、エンコード/デコードされると仮定され得る。コーダは、最初に、動作802に示されるように、全ての3つの平面モードが、ボリュームが全ての3つの軸に対して平面であることを示すかどうかを査定する。該当する場合、動作804によって示されるように、それらは、集合的に、単一の占有されたサブボリュームの場所を示し、全ての占有ビットが、推論され得る。
【0091】
全て平面ではない場合、コーダは、動作806において、近隣構成がゼロであるかどうかを査定する。NCが、ゼロではない場合、占有ビットは、動作808において、平面モード信号伝達に基づいて、コーディングされる。上で議論されるように、占有ビットコーディングは、いくつかの可能な推論が占有コーディングをショートカットするために行われることを可能にする平面モード信号伝達によってマスクされ得る。
【0092】
NCが、ゼロである場合、単一ノードフラグが、コーディングされ得る。コーダは、最初に、平面モードフラグのうちの少なくとも1つが、平面モードが偽であることを示すかどうかを査定する。該当する場合、それは、2つ以上のサブボリュームが、占有されているので、それが、単一ノード状況ではあり得ないことを含意するであろう。故に、そうではない、すなわち、動作810において、いかなる平面も、偽ではない場合、動作812において、単一ノードフラグは、査定され、コーディングされる。単一ノードフラグが、設定される場合、単一ノード位置のx、y、zビットは、動作814によって示されるように、それらが、平面位置データからすでに推論されていない範囲でバイパスコーディングされ得る。
【0093】
動作810が、少なくとも1つの平面モードフラグが、ボリュームが非平面であることを示すと決定する場合、または動作812において、単一ノードフラグが、それが単一ノードではないことを示す場合、コーダは、動作816において、ボリュームが2つの方向において平面であることを示す2つの平面モードフラグが存在するかどうかを査定し、該当する場合、全ての占有ビットが、動作804において、推論され得る。該当しない場合、占有ビットは、動作818において、存在する場合、平面性を把握し、少なくとも2つのビットが非ゼロであることを把握して、コーディングされる。
【0094】
当業者は、点群コーディングに関する現在の試験モードに採用される特徴が、推論直接コーディングモード(IDCM)であり、それが、非常に孤立した点を取り扱うためのものであることを理解するであろう。近隣のノードを活用するための相関が殆ど存在しないので、孤立した点の位置は、カスケードされた単一子ノードの占有情報をコーディングする代わりに、直接コーディングされる。このモードは、ノードの孤立の条件下で適格であり、適格性の場合、IDCMアクティブ化は、IDCMフラグによって信号伝達される。アクティブ化の場合、ノードに属する点または複数の点の局所的位置は、コーディングされ、ノードは、次いで、リーフノードになり、そのノードに関する再帰的区画およびツリーベースのコーディングプロセスを事実上停止させる。
【0095】
平面性を信号伝達するこのプロセスは、適格である場合、IDCMを信号伝達する前に、平面性を信号伝達することによって、IDCMモードを伴うコーディングプロセスに組み込まれ得る。第1に、IDCMに関するノードの適格性は、平面情報によって影響を受け得る。例えば、ノードが、平面ではない場合、ノードは、IDCMに関して適格にならないこともある。第2に、IDCMアクティブ化の場合、平面知識は、ノードに関連付けられたボリュームにおける点の位置をコーディングすることに役立つ。例えば、以下のルールが、適用され得る。
・ノードがx平面である場合、平面の位置planeXPositionは、既知であり、したがって、点のx座標の最も高いビットが、平面位置から把握される。このビットは、IDCMにおいてコーディングされず、デコーダは、平面位置からそれを演繹するであろう。
・ノードがy平面である場合、平面の位置planeYPositionは、既知であり、したがって、点のy座標の最も高いビットが、平面位置から把握される。このビットは、IDCMにおいてコーディングされず、デコーダは、平面位置からそれを演繹するであろう。
・ノードがz平面である場合、平面の位置planeZPositionは、既知であり、したがって、点のz座標の最も高いビットが、平面位置から把握される。このビットは、IDCMにおいてコーディングされず、デコーダは、平面位置からそれを演繹するであろう。
【0096】
xyz座標の最も高いビットの推論は、ノードがいくつかの方向において平面である場合に依然として有効である。例えば、ノードが、x平面およびy平面である場合、x座標およびy座標の両方に関する最も高いビットは、planeXPositionおよびplaneYPositionによって推論される。
(平面モードシンタックスのエントロピコーディング)
【0097】
平面モードフラグまたは平面位置フラグ等の平面モードシンタックスは、ビットストリームの有意な部分を表し得る。故に、点群データを圧縮することにおいて平面モードを有効にするために、平面情報が、有効なコンテキスト決定を用いてエントロピコーディングされることを確実にすることが、有利であり得る。
【0098】
ノード/ボリュームが平面であるかどうかが、平面モードフラグ、すなわち、isPlanarを使用して信号伝達されることを思い返されたい。例の本議論では、平面モードが、水平平面性に関して、すなわち、z軸に対して適用可能であると仮定されるであろう。フラグは、この例では、isZPlanarと呼ばれ得る。フラグのエントロピエンコーディングは、バイナリ算術コーダ、例えば、コンテキスト適応バイナリ算術コーダ(CABAC)を採用し得る。コンテキスト(または内部確率)は、1つ以上の予測因子を使用して決定され得る。
【0099】
現在のノードまたはサブボリュームに関する平面モードフラグは、サブボリューム内の子サブボリュームが平面であるかどうかを信号伝達する。現在のノードまたはサブボリュームは、親ボリューム内に存在する。例として、平面モードフラグをコーディングするためのコンテキストを決定するための予測因子は、以下のうちの1つ以上を含み得る。
【0100】
(a)親ボリューム平面性、
【0101】
(b)隣接する近隣のボリュームの占有、および、
【0102】
(c)同じ深度かつ同じz軸位置における最も接近した占有されたすでにコーディングされたノードまでの距離。
【0103】
図9は、親ノード902内の現在のノード900に関する3つの例示的因子を図示する。
【0104】
因子(a)は、親ノード902が平面であったかどうかを指す。それが平面モードを使用してコーディングされたかどうかにかかわらず、親ノード902が、平面性(この場合、水平平面性)に関する基準を満たす場合、親ノード902は、平面であると見なされる。因子(a)は、バイナリであり、すなわち、「親は平面である」または「親は平面ではない」である。
【0105】
因子(b)は、平面と整列させられた親ボリュームの面に隣接する親深度における近隣のボリューム904の占有ステータスを指す。水平平面性の場合、近隣のボリューム904は、現在のノード900が、親ボリューム902の上半分にある場合、親ノード902の垂直に上方にある。現在のノード900が、親ノード902の下半分にあった場合、近隣のボリューム904は、垂直に下方にあるであろう。垂直平面性の場合、近隣のボリュームは、x軸またはy軸平面性および現在のノードの場所に応じて、側のうちの1つに隣接するであろう。因子(b)も、バイナリであり、すなわち、近隣は、占有されているか、または占有されていないかのいずれかである。
【0106】
因子(c)は、すでにコーディングされたノードが、現在のノード900と同じ深度に位置し、共通平面内にあり、すなわち、現在のノード900と同じz軸位置にある条件下で、最も接近したすでにコーディングされたノード906が離れている程度を指す。すでにコーディングされたノード906は、必ずしも隣接するボリューム内にあるわけではなく、群の密度に応じて、ある程度の距離だけ離れ得る。コーダは、すでにコーディングされたノードを追跡し、これらの基準を満たす最も接近したものを識別する。現在のノード900とすでにコーディングされたノード906との間の距離dは、ノード900と906との相対的位置から決定され得る。いくつかの実施形態では、L1ノルムが、簡潔な計算のために、距離、すなわち、デルタxの絶対値+デルタyの絶対値を決定するために使用され得る。いくつかの実施形態では、L2ノルムが、距離、すなわち、デルタxの二乗+デルタyの二乗によって与えられる二乗の合計(の平方根)を決定するために使用され得る。
【0107】
いくつかの実装では、距離dは、2つの値「近い」および「遠い」に離散化され得る。「近い」dと「遠い」dとの間の分化は、好適に選択され得る。近いまたは遠いのいずれかとして距離をカテゴリ化することによって、因子(c)も、バイナリである。いくつかの実装では、距離が、3つ以上の値に離散化され得ることを理解されたい。
【0108】
全ての3つの例示的因子が、コンテキスト決定において使用される場合、2×2×2=8つの別個のコンテキストが、平面モードフラグのコーディングのために維持され得る。
【0109】
平面モードフラグが、現在のノード900に関してコーディングされ、現在のノード900が、平面である場合、planeZPosition等の平面位置フラグが、コーディングされ得る。平面位置フラグは、占有される子サブボリュームを含む、現在のノード900の半分を信号伝達する。水平平面性の場合、平面位置フラグは、下半分または上半分のいずれかを信号伝達する。
【0110】
平面位置フラグのエントロピエンコーディングも、バイナリ算術コーダ、例えば、CABACを採用し得る。コンテキスト(または内部確率)は、1つ以上の予測因子を使用して決定され得、その可能な例は、以下を含む。
【0111】
(a’)隣接する近隣のボリューム904の占有、
【0112】
(b’)同じ深度かつ同じz軸位置における最も接近した占有されたすでにコーディングされたノード906までの距離、
【0113】
(c’)同じ深度かつ同じz軸位置における最も接近した占有されたすでにコーディングされたノード906が平面である場合、その平面位置、および、
【0114】
(d’)親ノード902内の現在のノード900の場所。
【0115】
因子(a’)は、平面モードフラグコンテキストに関して上で議論される因子(b)と同一である。因子(b’)は、平面モードフラグコンテキストに関して上で議論される因子(c)と同一である。いくつかの例示的実装では、因子(b’)は、距離を3つのカテゴリ、すなわち、「近い」、「遠すぎない」、および「遠い」に離散化し得る。上で議論されるように、距離は、L1ノルム、またはL2ノルム、または任意の他の好適な測度を使用して決定され得る。
【0116】
因子(c’)は、最も接近した占有されたすでにコーディングされたノード906が平面であるかどうかを指し、該当する場合、それが上部平面であるか、底部で平面であるか、すなわち、その平面位置を指す。平面である遠いすでにコーディングされたノードであっても、現在のノードに関する平面性または平面位置の強い予測子であり得ることが分かる。すなわち、因子(c’)は、3つの結果を有し得る:平面ではない;現在のノード900と同じ平面位置;現在のノード900と異なる平面位置。現在のノード900と最も接近したすでにコーディングされた占有されたノード906とが同じ平面位置を有する場合、それらの占有子サブボリュームの全ては、同じz軸位置において共通水平面において整列させられている。
【0117】
因子(d’)は、現在のノード900が(水平平面性の場合では)親ノード902の上半分に位置するか、下半分に位置するかを指す。親が、適格性要件に起因して平面である可能性が高いので、現在のノード900が、平面である場合、平面位置は、親ノード902「外側」にあり、中間に向かわない可能性がわずかにより高い。故に、その親ノード902内の現在のノード900の位置は、その現在のノード900内の平面位置の確率に対して顕著な影響を及ぼす。
【0118】
全ての4つの因子を組み合わせる実装では、(現在のノード900と)同じzおよび深度における最も接近した占有されたすでにコーディングされたノード906が平面である場合、2×3×2×2=24個の予測組み合わせが、存在し得、そうでなければ、同じzおよび同じ深度における最も接近したすでにコーディングされたノード906が平面ではないとき、特定のコンテキストが、代わりに使用される。したがって、24+1=25個のコンテキストが、そのような例において平面位置フラグをコーディングするために、バイナリ算術コーダによって使用され得る。
【0119】
上記の例は、平面モードフラグの場合におけるコンテキスト決定のための3つの因子および平面位置フラグの場合におけるコンテキスト決定のための4つの因子に言及するが、本願が、コンテキスト決定のための個々の因子およびそのような因子の全ての組み合わせおよび副次的組み合わせの使用を含むことを理解されたい。
【0120】
ここで、コンテキスト決定プロセス中、最も接近した占有されたすでにコーディングされたノードの決定を管理するための機構の一例示的実装を図式的に図示する図10が、参照される。この例示的機構では、コーディングデバイスは、占有されたすでにコーディングされたノードに関する情報を含むバッファ1000を実装するために、メモリ、例えば、揮発性または永続メモリユニットを使用する。特に、バッファ1000は、ツリー内の同じz軸場所および深度を有するすでにコーディングされたノードを追跡するための空間を配分する。この具体的例では、バッファ1000は、同じz軸位置および深度を有する最大4つのすでにコーディングされたノードに関する情報を追跡する。
【0121】
例示的バッファ1000の各行は、z軸位置および深度に対応する。4つの列は、そのz軸位置を有する4つの最近コーディングされた占有されたノードに対応する。例えば、例示的行1002は、4つのすでにコーディングされた占有されたノードに関するデータを含む。各すでにコーディングされたノードに関する記憶されるデータは、すでにコーディングされた占有されたノードのxおよびy位置、ノードが平面であったかどうか、および、該当する場合、平面位置を含み得る。
【0122】
現在のノード1004をコーディングする過程において、コーディングデバイスは、バッファ1000にアクセスし、例示的行1002が現在のノード1004と同じz軸位置に関するものであることに基づいて、例示的行1002における4つの記憶されたノードの中から最も接近した占有されたすでにコーディングされたノードを識別する。上で議論されるように、距離メトリックは、L1ノルム、L2ノルム、または距離の任意の他の測度に基づき得る。バッファ1000内の各ノードに関する記憶されたxおよびy位置は、特に、L1ノルムの場合、最も接近したノードの決定を簡単にすることを支援する。
【0123】
最も接近したノード1006等の最も接近したノードが識別されると、現在のノード1004からのその距離、および、おそらく、その平面性および/または平面位置が、コンテキスト決定において使用される。バッファ1000は、次いで、現在のノード1004をバッファ1000の第1の位置1008に追加し、バッファ1000のその例示的行1002における全ての他のノードデータを右シフトし、バッファ1000内の最後のアイテムが破棄されるようにすることによって更新される。いくつかの例では、距離決定に基づいて、識別された最も接近したノードが、現在のコーディングに対してより高い潜在的関連性を保持していることがあり得、したがって、現在のノード1004をバッファ1000に追加することに先立って、例示的行1002のコンテンツは、最初に、最も接近したノード1006を第1の位置1008に移動させるように再配列され、収容するためにノードを右にシフトする(例えば、この例では、第1の位置1008および第2の位置におけるノードデータは、それぞれ、第2の位置および第3の位置にシフトされる)。このように、コーディングデバイスは、バッファ1000から直近に識別された最も接近したノードを早期に除くことを回避する。
【0124】
説明されるバッファ1000が、最も接近したノードに関するデータを管理するための機構の一例示的実装であり、本願が、必ずしもこの例に限定されるわけではなく、最も接近したノード情報を追跡するための多くの他の機構が、使用され得ることを理解されたい。さらに、バッファ1000内に固定された数の最近コーディングされた占有されたノードのみを保持することが、識別されたノードが、実際に、最も接近した占有されたすでにコーディングされたノードではなく、単に、バッファ1000から利用可能な最も接近したすでにコーディングされたノードである可能性が存在するが、しかしながら、上記の例におけるように、バッファが4つの候補に限定されるときであっても、性能に対する影響が、無視できることを意味することを理解されたい。
【0125】
ここで、エンコーダ1100の例示的実施形態の簡略化ブロック図を示す図11が、参照される。エンコーダ1100は、プロセッサ1102と、メモリ1104と、エンコーディングアプリケーション1106とを含む。エンコーディングアプリケーション1106は、メモリ1104内に記憶され、実行されると、プロセッサ1102に、本明細書に説明されるもの等の動作を実施させる命令を含むコンピュータプログラムまたはアプリケーションを含み得る。例えば、エンコーディングアプリケーション1106は、本明細書に説明されるプロセスに従ってエンコードされるビットストリームをエンコードおよび出力し得る。エンコーディングアプリケーション1106が、コンパクトディスク、フラッシュメモリデバイス、ランダムアクセスメモリ、ハードドライブ等の非一過性コンピュータ読み取り可能な媒体上に記憶され得ることを理解されたい。命令が実行されると、プロセッサ1102は、説明されるプロセスを実装する専用プロセッサとして動作するように、命令において規定される動作および機能を実行する。そのようなプロセッサは、いくつかの例では、「プロセッサ回路」または「プロセッサ電気回路」と称され得る。
【0126】
ここで、デコーダ1200の例示的実施形態の簡略化ブロック図を示す図12も、参照される。デコーダ1200は、プロセッサ1202と、メモリ1204と、デコーディングアプリケーション1206とを含む。デコーディングアプリケーション1206は、メモリ1204内に記憶され、実行されると、プロセッサ1202に、本明細書に説明されるもの等の動作を実施させる命令を含むコンピュータプログラムまたはアプリケーションを含み得る。デコーディングアプリケーション1206が、コンパクトディスク、フラッシュメモリデバイス、ランダムアクセスメモリ、ハードドライブ等のコンピュータ読み取り可能な媒体上に記憶され得ることを理解されたい。命令が実行されると、プロセッサ1202は、説明されるプロセスを実装する専用プロセッサとして動作するように、命令において規定される動作および機能を実行する。そのようなプロセッサは、いくつかの例では、「プロセッサ回路」または「プロセッサ電気回路」と称され得る。
【0127】
本願によるデコーダおよび/またはエンコーダが、限定ではないが、サーバ、好適にプログラムされた汎用コンピュータ、マシンビジョンシステム、およびモバイルデバイスを含むいくつかのコンピューティングデバイスにおいて実装され得ることを理解されたい。デコーダまたはエンコーダは、本明細書に説明される機能を実行するようにプロセッサまたは複数のプロセッサを構成するための命令を含むソフトウェアを用いて実装され得る。ソフトウェア命令は、CD、RAM、ROM、フラッシュメモリ等を含む任意の好適な非一過性コンピュータ読み取り可能なメモリ上に記憶され得る。
【0128】
本明細書に説明されるデコーダおよび/またはエンコーダおよびエンコーダまたはデコーダを構成するための説明される方法/プロセスを実装するモジュール、ルーチン、プロセス、スレッド、または他のソフトウェアコンポーネントが、標準的コンピュータプログラミング技法および言語を使用して実現され得ることを理解されたい。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング表記法、データ構造、他のそのような実装詳細に限定されない。当業者は、説明されるプロセスが、揮発性または不揮発性メモリ内に記憶されるコンピュータ実行可能コードの一部として、特定用途向け集積チップ(ASIC)の一部等として実装され得ることを認識するであろう。
【0129】
本願は、本願による、エンコーディングプロセスの適用を通して生成されるデータをエンコードするコンピュータ読み取り可能な信号も提供する。
(圧縮性能に対する影響)
【0130】
例示的実装を用いて3つの方向x、y、およびzにおいて平面モードを使用する試験が、異なる特性を有するいくつかの例示的点群を用いて、動画専門家集団(MPEG)試験モデルの現在の実装と比較して実行された。実験において使用される異なるタイプの点群は、都市部建物環境を伴う屋外シーン、屋内建物環境、3Dマップ、LiDAR道路走査、および自然景観に関するそれらを含む。無視できるものからあまり多くないものまでの圧縮利得が、自然景観の場合に見られる。2~4%の圧縮利得が、3Dマップの場合に見られ、最大10%が、屋外建物シーンの場合に見られ、6~9%が、LiDARデータの場合に見られ、最大50%を上回るものが、いくつかの屋内建物シーンの場合に見られる。
【0131】
説明される実施形態のある適合および修正が、行われることができる。したがって、上で議論される実施形態は、制限的ではなく、例証的であると見なされる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12