(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024119999
(43)【公開日】2024-09-03
(54)【発明の名称】点群のバイナリエントロピコーディングのための方法およびデバイス
(51)【国際特許分類】
G06T 17/00 20060101AFI20240827BHJP
G06T 9/40 20060101ALI20240827BHJP
【FI】
G06T17/00 500
G06T9/40
【審査請求】有
【請求項の数】33
【出願形態】OL
(21)【出願番号】P 2024097973
(22)【出願日】2024-06-18
(62)【分割の表示】P 2021517945の分割
【原出願日】2019-10-02
(31)【優先権主張番号】18290113.2
(32)【優先日】2018-10-02
(33)【優先権主張国・地域又は機関】EP
(71)【出願人】
【識別番号】500043574
【氏名又は名称】ブラックベリー リミテッド
【氏名又は名称原語表記】BlackBerry Limited
【住所又は居所原語表記】2200 University Avenue East, Waterloo ON N2K 0A7, Canada
(74)【代理人】
【識別番号】100107489
【弁理士】
【氏名又は名称】大塩 竹志
(72)【発明者】
【氏名】セバスチャン ラセール
(57)【要約】 (修正有)
【課題】点群のバイナリエントロピコーディング方法及びデバイスを提供する。
【解決手段】方法は、現在のボリュームのサブボリュームの占有パターンを示すビットシーケンスを、バイナリエントロピコーディングを使用してコーディングする。ビットシーケンス内の所与のビットに関して、コンテキストは、そのビットに対応するサブボリュームに関するサブボリューム近隣構成に基づく。サブボリューム近隣構成は、ボリュームの近隣ボリュームのサブボリュームのグループの占有パターンに依存し、サブボリュームのグループは、所与のビットに対応するサブボリュームの近隣に位置する。コンテキストは、ビットシーケンスの以前にコーディングされたビットの部分的シーケンスにさらに基づく。
【選択図】
図29
【特許請求の範囲】
【請求項1】
本明細書に記載の発明。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、概して、点群圧縮に関し、特に、点群のバイナリエントロピコーディングのための方法およびデバイスに関する。
【背景技術】
【0002】
データ圧縮が、情報を効率的に記憶、伝送、および再生するために、通信およびコンピュータネットワーキングにおいて使用される。3次元オブジェクトまたは空間の表現への関心が、高まっており、それらは、大きいデータセットを伴い得、大きいデータセットに関して、効率的かつ効果的な圧縮が非常に有用かつ有益であろう。ある場合、3次元オブジェクトまたは空間は、点群を使用して表され得、点群は、各々が3つの座標場所(X,Y,Z)(ある場合、色データ(例えば、ルミナンスおよびクロミナンス)、透明度、反射率、法線ベクトル等のような他の属性)を有する点の組である。点群は、静的(静止したオブジェクトまたは単一の時点における環境/オブジェクトのスナップショット)または動的(点群の時間順のシーケンス)であり得る。
【0003】
点群に関する例示的用途は、トポグラフィおよびマッピング用途を含む。自律車両および他のマシンビジョン用途は、LiDAR走査装置から等の環境の3D走査の形態における点群センサデータに依拠し得る。仮想現実シミュレーションは、点群に依拠し得る。
【0004】
点群は、大量のデータを伴い得、そのデータを迅速かつ正確に圧縮(エンコードおよびデコード)することが、非常に着目されていることを理解されたい。故に、点群に関するデータをより効率的および/または効果的に圧縮する方法およびデバイスを提供することが、有利であろう。さらに、過剰な数のコンテキストの管理を要求することなく、コンテキスト適応バイナリエントロピコーディングを使用して実装され得る点群をコーディングする方法およびデバイスを見出すことが、有利であろう。
【発明の概要】
【課題を解決するための手段】
【0005】
本願は、点群をエンコードおよびデコードする方法、および点群をエンコードおよびデコードするためのエンコーダおよびデコーダを説明する。現在のボリュームのサブボリュームに関する占有パターンを示すビットシーケンスが、エントロピコーディング(例えば、バイナリエントロピコーディング)を使用してコーディングされ得る。エントロピコーディングのための確率(例えば、コンテキスト)が、現在のボリュームの近隣構成とビットシーケンスの以前にコーディングされたビットの部分的シーケンスとに基づき得る。これらの確率は、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データにさらに基づき得る。特に、ビットシーケンス内のビットをコーディングするための確率は、少なくとも部分的にサブボリューム近隣構成に基づいて選択され得、サブボリューム近隣構成は、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームの近隣に位置している少なくとも1つの近隣ボリュームのサブボリュームのグループの占有パターンに依存する。
【0006】
本願を理解するために有用である例において、コンテキスト低減動作を適用するかどうかに関する決定が、行われ得、該当する場合、動作は、利用可能なコンテキストの数を低減させる。例示的コンテキスト低減動作は、以前にコーディングされたビットに関連付けられたサブボリュームによるシールディング、空の近隣構成に関する特別な取り扱い、および統計ベースのコンテキスト合併に基づいて、近隣構成を低減させることを含む。低減は、コーディングの前に適用され得、低減させられたコンテキスト組を使用するための状況が、満たされているかどうかに関する決定が、コーディング中に行われ得る。
【0007】
一側面において、本願は、圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法を提供し、点群は、親子関係を有する複数のノードを有するツリー構造において定義され、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含み、ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有する。
方法は、現在のボリュームに関連付けられた現在のノードであって、現在のボリュームは、サブボリュームに分割されており、各サブボリュームは、現在のノードの子ノードに対応する、現在のノードに関して、現在のボリュームのサブボリュームの占有を示すビットシーケンスを決定することを含む。方法は、現在のボリュームのビットシーケンス内の少なくとも1つのビットに関して、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することをさらに含み、サブボリューム近隣構成は、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームの近隣に位置している少なくとも1つの近隣ボリュームのサブボリュームのグループの占有パターンに依存する。方法は、ビットシーケンス内のビットのエントロピエンコーディングにおける使用のための確率(例えば、コンテキスト)を選択することをさらに含み、選択することは、少なくとも部分的にサブボリューム近隣構成に基づく。方法は、バイナリエントロピエンコーダを使用して、選択された確率に基づいて、ビットシーケンス内のビットをエントロピエンコーディングし、ビットストリームに関するエンコードされたデータを生成することをさらに含む。
【0008】
別の側面は、再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法に関し、点群は、親子関係を有する複数のノードを有するツリー構造において定義され、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含み、ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有する。方法は、現在のボリュームに関連付けられた現在のノードであって、現在のボリュームは、サブボリュームに分割されており、各サブボリュームは、現在のノードの子ノードに対応する、現在のノードに関して、かつ、現在のボリュームのビットシーケンス内の少なくとも1つのビットに関して、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することを含み、サブボリューム近隣構成は、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームの近隣に位置している少なくとも1つの近隣ボリュームのサブボリュームのグループの占有パターンに依存する。方法は、ビットシーケンス内のビットのエントロピデコーディングにおける使用のための確率(例えば、コンテキスト)を選択することをさらに含み、選択することは、少なくとも部分的にサブボリューム近隣構成に基づく。方法は、バイナリエントロピデコーダを使用して、選択された確率に基づいて、該少なくとも1つのビットをエントロピデコーディングし、ビットストリームから再構成されたビットを生成することをさらに含む。
【0009】
いくつかの実装において、サブボリューム近隣構成を決定することは、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームの近隣に位置している少なくとも1つの近隣ボリュームのサブボリュームの数を決定することを伴い得る。該決定することは、閾値関数を決定された数に適用することをさらに伴い得る。
【0010】
いくつかの実装において、所与のボリューム内の所与のサブボリュームのサブボリューム近隣構成は、所与のサブボリュームの近隣に位置している所与のボリュームの近隣ボリューム内のサブボリュームの占有のパターンに対応し得る。
【0011】
いくつかの実装において、サブボリューム近隣構成を決定することは、すでにコーディングされている現在のボリュームのそれらの近隣ボリュームのサブボリュームに関する占有データに基づき得る。
【0012】
いくつかの実装において、確率を選択することは、すでにコーディングされているビットシーケンスのビットの部分的シーケンスおよび/または現在のボリュームの近隣構成にさらに基づき得る。現在のボリュームの近隣構成は、現在のボリュームの近隣ボリュームの占有のパターンに対応し得る。
【0013】
いくつかの実装において、サブボリューム近隣構成を決定することは、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームと交差する少なくとも1つの近隣ボリュームの全てのそれらのサブボリュームを決定することを伴い得る。該決定することは、それぞれの重み係数を決定されたサブボリュームに適用することをさらに伴い得、各重み係数は、それぞれの決定されたサブボリュームと、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームとの交差に依存する。該決定することは、決定されたサブボリュームおよびそれらのそれぞれの重み係数に基づいて、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームと交差する少なくとも1つの近隣ボリュームのサブボリュームの重み付きの数を決定することをさらに伴い得る。
【0014】
いくつかの実装において、占有パターンを示すビットシーケンスを決定するための現在のボリューム内の走査順序は、走査順序における1つのサブボリュームから次のサブボリュームまで、現在のボリュームのすでにコーディングされた近隣ボリュームにおける近隣サブボリュームの最大可能数が、増加しないように決定され得る。
【0015】
いくつかの実装において、現在のボリュームの所与の近隣ボリュームのサブボリュームの占有データは、所与の近隣ボリュームのサブボリュームの各々に関する占有ステータスを含み得る。
【0016】
いくつかの実装において、ツリー構造は、オクツリーを表し得る。
【0017】
いくつかの実装において、エンコーディングの方法は、少なくとも1つのビットのエントロピエンコーディングにおける使用のための確率が、少なくとも部分的にサブボリューム近隣構成に基づいて選択されていることを示すフラグをエンコードすることをさらに含み得る。
【0018】
いくつかの実装において、デコーディングの方法は、ビットストリームからフラグをデコードすることをさらに含み得、フラグは、少なくとも1つのビットのエントロピデコーディングにおける使用のための確率が、少なくとも部分的にサブボリューム近隣構成に基づいて選択されるべきであることを示す。
【0019】
別の側面において、本願は、圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法を提供し、点群は、ツリー構造において定義され、ツリー構造は、親子関係を有する複数のノードを有し、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含み、あるボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、あるボリュームは、複数の近隣ボリュームを有し、近隣ボリュームの占有のパターンは、近隣構成である。方法は、ボリュームのビットシーケンス内の少なくとも1つのビットに関して、コンテキスト低減条件が、満たされていると決定し、それに基づいて、近隣構成のカウントとシーケンス内の以前にコーディングされたビットの数との積より少ないコンテキストを含む低減させられたコンテキスト組を選択することと;少なくとも1つのビットをコーディングするために、近隣ボリュームのうちの少なくともいくつかの占有ステータスおよびビットシーケンスの少なくとも1つの以前にコーディングされたビットに基づいて、低減させられたコンテキスト組からあるコンテキストを選択することと;バイナリエントロピエンコーダを使用して、選択されたコンテキストに基づいて、少なくとも1つのビットをエントロピエンコーディングし、ビットストリームに関するエンコードされたデータを生成することと;選択されたコンテキストを更新することとを含む。
【0020】
別の側面において、本願は、再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法を提供し、点群は、ツリー構造において定義され、ツリー構造は、親子関係を有する複数のノードを有し、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含み、あるボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、あるボリュームは、複数の近隣ボリュームを有し、近隣ボリュームの占有のパターンは、近隣構成である。デコーディングの方法は、ボリュームのビットシーケンス内の少なくとも1つのビットに関して、コンテキスト低減条件が満たされていると決定し、それに基づいて、近隣構成のカウントとシーケンス内の以前にコーディングされたビットの数との積より少ないコンテキストを含む低減させられたコンテキスト組を選択することと;少なくとも1つのビットをコーディングするために、近隣ボリュームのうちの少なくともいくつかの占有ステータスおよびビットシーケンスの少なくとも1つの以前にコーディングされたビットに基づいて、低減させられたコンテキスト組からあるコンテキストを選択することと;バイナリエントロピデコーダを使用して、選択されたコンテキストに基づいて、少なくとも1つのビットをエントロピデコーディングし、ビットストリームから再構成されたビットを生成することと;選択されたコンテキストを更新することとを含む。
【0021】
いくつかの実装において、コンテキスト低減条件は、1つ以上の以前にコーディングされた占有ビットが、少なくとも1つのビットに関連付けられたサブボリュームと近隣ボリュームのうちの1つ以上のものとの間に位置付けられる1つ以上のそれぞれのサブボリュームに関連付けられていると決定することを含み得る。
ある場合、これは、以前にエンコードされたビットに関連付けられた4つのサブボリュームが、特定の近隣ボリュームと面を共有すると決定することを含み得る。
【0022】
いくつかの実装において、コンテキスト低減条件は、ビットシーケンスの少なくとも4つのビットが、以前にコーディングされていると決定することを含み得る。
【0023】
いくつかの実装において、コンテキスト低減条件が満たされていると決定することは、近隣ボリュームの占有のパターンが、複数の近隣ボリュームが占有されていないことを示すと決定することを含み得る。それらの場合のうちのいくつかにおいて、選択された低減させられたコンテキスト組は、ビットシーケンス内の以前にコーディングされたビットの数に対応するコンテキストの数を含み得、随意に、コンテキストを選択することは、ビットシーケンス内の以前にコーディングされたビットの合計に基づいて、コンテキストを選択することを含み得る。
【0024】
いくつかの実装において、コンテキスト低減条件は、ビットシーケンス内の少なくともある閾値数のビットが、以前にコーディングされていると決定することを含み得、低減させられたコンテキスト組は、ルックアップテーブルを含み得、ルックアップテーブルは、近隣構成およびビットシーケンス内の以前にコーディングされたビットのパターンの各可能な組み合わせをより少ないコンテキストにマッピングする。いくつかの例において、ルックアップテーブルは、利用可能なコンテキストのそれぞれの対間の距離測定値がある閾値未満であると決定することに基づく複数のクラスへの利用可能なコンテキストの反復的グループ化に基づいて発生され得、複数のクラスにおける各クラスは、より小さい組におけるそれぞれのコンテキストを含み得、近隣構成およびビットシーケンス内の以前にコーディングされたビットのパターンの各可能な組み合わせのための利用可能なコンテキストが、存在し得る。
【0025】
いくつかの実装において、近隣ボリュームのうちの少なくともいくつかは、ボリュームと少なくとも1つの面を共有する近隣ボリュームである。
【0026】
さらなる側面において、本願は、エンコーディングおよびデコーディングのそのような方法を実装するように構成されるエンコーダおよびデコーダを説明する。
【0027】
またさらなる側面において、本願は、実行されると、1つ以上のプロセッサにエンコーディングおよび/またはデコーディングの説明される方法を実施させるコンピュータ実行可能プログラム命令を記憶する非一過性コンピュータ読み取り可能な媒体を説明する。
【0028】
また別の側面において、本願は、コンピュータによって実行されると、コンピュータにエンコーディングおよび/またはデコーディングの説明される方法を実施させるプログラム命令を含むコンピュータ読み取り可能な信号を説明する。
【0029】
本願はさらに、トポグラフィ用途、地図作成用途、自動車産業用途、自律運転用途、仮想現実用途、および文化遺産用途等を含むコンピュータ実装用途を説明する。これらのコンピュータ実装用途は、データストリームまたはデータファイルを受信し、圧縮された点群データのビットストリームを取得するためにデータストリームまたはデータファイルを解凍し、上記側面およびその実装に説明されるようにビットストリームをデコードするプロセスを含む。それによって、これらのコンピュータ実装用途は、本願全体を通して説明される側面およびその実装に従って、点群圧縮技法を利用する。
【0030】
本願は、点群をエンコードおよびデコードする方法、および点群をエンコードおよびデコードするためのエンコーダおよびデコーダをさらに説明する。いくつかの実装において、受信ユニットが、多重化データを受信し、多重化データは、メタデータ、画像、ビデオ、オーディオ、および/またはグラフィック等の他のコーディングされたデータタイプとともにコーディングされた点群データを多重化することによって取得される。受信ユニットは、多重化データをコーディングされた点データと他のコーディングされたデータとに分離するための逆多重化ユニットと、コーディングされた点群データをデコードするための少なくとも1つのデコーディングユニット(またはデコーダ)とを備えている。いくつかの他の実装において、放出ユニットが、多重化データを放出し、多重化データは、メタデータ、画像、ビデオ、オーディオ、および/またはグラフィック等の他のコーディングされたデータタイプとともにコーディングされた点群データを多重化することによって取得される。放出ユニットは、点群データをエンコードするための少なくとも1つのエンコーディングユニット(またはエンコーダ)と、コーディングされた点群データと他のコーディングされたデータとを多重化データに組み合わせるための多重化ユニットとを備えている。
【0031】
本発明は、例えば、以下の項目を提供する。
(項目1)
圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法であって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、前記ビットシーケンスの各ビットは、前記ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有し、
前記方法は、
各サブボリュームが現在のノードの子ノードに対応するサブボリュームに分割された現在のボリュームに関連付けられた前記現在のノードに関して、前記現在のボリュームの前記サブボリュームの前記占有を示す前記ビットシーケンスを決定することと、
前記現在のボリュームの前記ビットシーケンス内の少なくとも1つのビットに関して、
前記現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することであって、前記サブボリューム近隣構成は、前記ビットシーケンス内の前記ビットに対応する前記現在のボリュームのそのサブボリュームの近隣に位置している前記少なくとも1つの近隣ボリュームのサブボリュームのグループの占有パターンに依存する、ことと、
前記ビットシーケンス内の前記ビットのエントロピエンコーディングにおける使用のための確率を選択することであって、前記選択することは、少なくとも部分的に前記サブボリューム近隣構成に基づく、ことと、
バイナリエントロピエンコーダを使用して、前記選択された確率に基づいて、前記ビットシーケンス内の前記ビットをエントロピエンコーディングし、前記ビットストリームに関するエンコードされたデータを生成することと
を含む、方法。
(項目2)
再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法であって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、ボリュームのサ
ブボリュームの占有は、ビットシーケンスを使用して示され、前記ビットシーケンスの各ビットは、前記ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有し、
前記方法は、
各サブボリュームが現在のノードの子ノードに対応するサブボリュームに分割された現在のボリュームに関連付けられた前記現在のノードに関し、
前記現在のボリュームのビットシーケンス内の少なくとも1つのビットに関して、
前記現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することであって、前記サブボリューム近隣構成は、前記ビットシーケンス内の前記ビットに対応する前記現在のボリュームのそのサブボリュームの近隣に位置している前記少なくとも1つの近隣ボリュームのサブボリュームのグループの占有パターンに依存する、ことと、
前記ビットシーケンス内の前記ビットのエントロピデコーディングにおける使用のための確率を選択することであって、前記選択することは、少なくとも部分的に前記サブボリューム近隣構成に基づく、ことと、
バイナリエントロピデコーダを使用して、前記選択された確率に基づいて、前記少なくとも1つのビットをエントロピデコーディングし、前記ビットストリームから再構成されたビットを生成することと
を含む、方法。
(項目3)
前記サブボリューム近隣構成を決定することは、
前記現在のボリュームの前記少なくとも1つの近隣ボリュームの前記サブボリュームに関する前記占有データに基づいて、前記ビットシーケンス内の前記ビットに対応する前記現在のボリュームのそのサブボリュームの近隣に位置している前記少なくとも1つの近隣ボリュームの前記サブボリュームの数を決定することと、
閾値関数を前記決定された数に適用することと
を含む、項目1または項目2に記載の方法。
(項目4)
所与のボリューム内の所与のサブボリュームの前記サブボリューム近隣構成は、前記所与のサブボリュームの近隣に位置している前記所与のボリュームの近隣ボリューム内のサブボリュームの占有のパターンに対応する、項目1-3のいずれか1項に記載の方法。
(項目5)
前記サブボリューム近隣構成を決定することは、すでにコーディングされている前記現在のボリュームのそれらの近隣ボリュームのサブボリュームに関する占有データに基づく、項目1-4のいずれか1項に記載の方法。
(項目6)
前記確率を選択することは、すでにコーディングされている前記ビットシーケンスのビットの部分的シーケンスおよび/または前記現在のボリュームの近隣構成にさらに基づき、前記現在のボリュームの前記近隣構成は、前記現在のボリュームの前記近隣ボリュームの占有のパターンに対応する、項目1-5のいずれか1項に記載の方法。
(項目7)
前記サブボリューム近隣構成を決定することは、
前記現在のボリュームの前記少なくとも1つの近隣ボリュームの前記サブボリュームに関する前記占有データに基づいて、前記ビットシーケンス内の前記ビットに対応する前記現在のボリュームのそのサブボリュームと交差する前記少なくとも1つの近隣ボリュームの全てのそれらのサブボリュームを決定することと、
前記決定されたサブボリュームにそれぞれの重み係数を適用することであって、各重み係数は、前記それぞれの決定されたサブボリュームと、前記ビットシーケンス内の前記ビットに対応する前記現在のボリュームのそのサブボリュームとの交差に依存する、ことと、
前記決定されたサブボリュームとそれらのそれぞれの重み係数とに基づいて、前記ビットシーケンス内の前記ビットに対応する前記現在のボリュームのそのサブボリュームと交差する前記少なくとも1つの近隣ボリュームのサブボリュームの重み付きの数を決定することと
を含む、項目1-6のいずれか1項に記載の方法。
(項目8)
前記現在のボリューム内の前記走査順序は、前記走査順序における1つのサブボリュームから次のサブボリュームまで、前記現在のボリュームのすでにコーディングされた近隣ボリュームにおける近隣サブボリュームの最大可能数が、増加しないように決定される、項目1-7のいずれか1項に記載の方法。
(項目9)
前記現在のボリュームの所与の近隣ボリュームの前記サブボリュームの前記占有データは、前記所与の近隣ボリュームの前記サブボリュームの各々に関する占有ステータスを備えている、項目1-8のいずれか1項に記載の方法。
(項目10)
前記ツリー構造は、オクツリーを表す、項目1-9のいずれか1項に記載の方法。
(項目11)
前記ビットストリームからフラグをデコードすることをさらに含み、前記フラグは、少なくとも1つのビットのエントロピデコーディングにおける使用のための前記確率が少なくとも部分的に前記サブボリューム近隣構成に基づいて選択されるべきであることを示す、項目2または項目2に従属するときの項目3-10のいずれか1項に記載の方法。
(項目12)
圧縮された点群データのビットストリームを発生させるために点群をエンコードするためのエンコーダであって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、前記ビットシーケンスの各ビットは、前記ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有し、
前記エンコーダは、
プロセッサと、
メモリと、
前記プロセッサによって実行可能な命令を含むエンコーディングアプリケーションと
を備え、
前記命令は、実行されると、項目1または項目1に従属するときの項目3-10のいずれか1項に記載の方法を前記プロセッサに実施させる、エンコーダ。
(項目13)
再構成された点群を生成するために圧縮された点群データのビットストリームをデコードするためのデコーダであって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、前記ビットシーケンスの各ビットは、前記ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有し、
前記デコーダは、
プロセッサと、
メモリと、
前記プロセッサによって実行可能な命令を含むデコーディングアプリケーションと
を備え、
前記命令は、実行されると、項目2または項目2に従属するときの項目3-11のいず
れか1項に記載の方法を前記プロセッサに実施させる、デコーダ。
(項目14)
プロセッサ実行可能命令を記憶している非一過性プロセッサ読み取り可能な媒体であって、前記命令は、プロセッサによって実行されると、項目1-11のいずれか1項に記載の方法を前記プロセッサに実施させる、非一過性プロセッサ読み取り可能な媒体。
(項目15)
プログラム命令を含むコンピュータ読み取り可能な信号であって、前記命令は、コンピュータによって実行されると、項目1-11のいずれか1項に記載の説明される方法を前記コンピュータに実施させる、コンピュータ読み取り可能な信号。
ここで、例として、本願の例示的実施形態を示す付随の図面が、参照されるであろう。
【図面の簡単な説明】
【0032】
【
図1】
図1は、例示的点群エンコーダの簡略化ブロック図を示す。
【0033】
【
図2】
図2は、例示的点群デコーダの簡略化ブロック図を示す。
【0034】
【
図3】
図3は、例示的部分的サブボリュームおよびコーディングのための関連付けられるツリー構造を示す。
【0035】
【
図4】
図4は、オクツリーの再帰的分割およびコーディングを図示する。
【0036】
【
図5】
図5は、オクツリーからの例示的立方体内の例示的走査パターンを示す。
【0037】
【
図6】
図6は、例示的立方体内の例示的占有パターンを示す。
【0038】
【
図7】
図7は、点群をエンコードするための一例示的方法をフローチャート形態において示す。
【0039】
【
図8】
図8は、例示的オクツリーの一部を図示する。
【0040】
【0041】
【
図10】
図10は、近隣ノード間の占有を示す例示的近隣構成を示す。
【0042】
【
図11】
図11は、親パターン依存コンテキストを使用する点群エントロピエンコーディングのプロセスの一例証的実施形態を図式的に示す。
【0043】
【
図12】
図12は、近隣構成依存コンテキストを使用する点群エントロピエンコーディングのプロセスの例証的実施形態を示す。
【0044】
【
図13】
図13は、圧縮された点群データのビットストリームをデコードするための一例示的方法をフローチャート形態において示す。
【0045】
【
図14】
図14は、エンコーダの例示的簡略化ブロック図を示す。
【0046】
【
図15】
図15は、デコーダの例示的簡略化ブロック図を示す。
【0047】
【
図16】
図16は、例示的デカルト座標系および軸まわりの例示的回転および/または反射を示す。
【0048】
【
図17】
図17は、Z軸まわりの回転の1回または数回の反復下の近隣構成の不変性のクラスを示す。
【0049】
【
図18】
図18は、垂直反射に関する近隣構成の不変性のクラスを示す。
【0050】
【
図19】
図19は、回転および反射の両方に関する不変性のクラスを示す。
【0051】
【
図20】
図20は、3回の回転および反射の下での不変性のクラスを示す。
【0052】
【
図21】
図21は、占有パターンに関する非バイナリコーディングとカスケードバイナリコーディングとの間の同等性を図示する。
【0053】
【
図22】
図22は、バイナリコーディングを使用して、ツリーベースの点群コーダにおいて占有パターンをコーディングするための一例示的方法をフローチャート形態において示す。
【0054】
【
図23】
図23は、例示的エンコーダの一部の簡略化ブロック図を示す。
【0055】
【
図24】
図24は、近隣スクリーニングに基づく例示的コンテキスト低減動作を図式的に示す。
【0056】
【
図25】
図25は、近隣スクリーニングに基づく別の例示的コンテキスト低減動作を示す。
【0057】
【
図26】
図26は、組み合わせられたコンテキスト低減を使用して、占有パターンをバイナリコーディングする方法の一例をフローチャート形態において示す。
【0058】
【
図27】
図27は、それらの中のいくつかがすでにコーディングされている近隣サブボリュームの例を示す。
【0059】
【
図28】
図28は、近隣サブボリュームおよび近隣サブボリュームのすでにコーディングされたサブボリュームの例を示す。
【0060】
【
図29】
図29は、少なくとも部分的にサブボリューム近隣構成に基づいて現在のノードの占有パターンをエンコードする方法をフローチャート形態において示す。
【0061】
【
図30】
図30は、少なくとも部分的にサブボリューム近隣構成に基づいて現在のノードの占有パターンをデコードする方法をフローチャート形態において示す。
【0062】
【
図31】
図31は、現在のノードに関連付けられたボリュームが、サブボリュームに分割される様子の例を示す。
【0063】
【
図32】
図32-35は、現在のノードの異なるサブノードに関するサブボリューム近隣構成の例を示す。
【
図33】
図32-35は、現在のノードの異なるサブノードに関するサブボリューム近隣構成の例を示す。
【
図34】
図32-35は、現在のノードの異なるサブノードに関するサブボリューム近隣構成の例を示す。
【
図35】
図32-35は、現在のノードの異なるサブノードに関するサブボリューム近隣構成の例を示す。
【0064】
【
図36】
図36は、現在のノードのサブノードに関するサブボリューム近隣構成を決定する方法をフローチャート形態において示す。
【0065】
【
図37】
図37は、サブボリューム近隣構成に基づく組み合わせられたコンテキスト低減およびコンテキスト決定を使用した占有パターンをバイナリコーディングする方法の一例をフローチャート形態において示す。
【発明を実施するための形態】
【0066】
類似する参照番号が、類似するコンポーネントを表すために異なる図において使用されていることもある。
【0067】
本願の他の側面および特徴が、付随の図と併せて、以下の例の説明の精査から、当業者によって理解されるであろう。
【0068】
本発明の一側面または実施形態に関連して説明される任意の特徴は、1つ以上の他の側面/実施形態に関しても使用され得る。本発明のこれらおよび他の側面は、本明細書に説明される実施形態から明白となり、それを参照して明瞭にされるであろう。
【0069】
下記の説明では随時、用語「ノード」、「ボリューム」、および「サブボリューム」は、同義的に使用され得る。ノードは、ボリュームまたはサブボリュームに関連付けられていることを理解されたい。ノードは、内部ノードまたはリーフノードであり得るツリー上の特定の点である。ボリュームまたはサブボリュームは、ノードが表す有界の物理的空間である。用語「ボリューム」は、ある場合、点群を含むために定義される最も大きい有界の空間を指すように使用され得る。ボリュームは、点群データをコーディングするための相互接続されたノードのツリー構造を構築する目的のために、サブボリュームに再帰的に分化され得る。
【0070】
本願において、用語「および/または」は、リストアップされる要素のうちのいずれか1つのみ、任意の副次的組み合わせ、または要素の全てを含み、必ずしも追加の要素を除外することなく、リストアップされる要素の全ての可能な組み合わせおよび副次的組み合わせに及ぶことを意図している。
【0071】
本願において、語句「~または~のうちの少なくとも1つ」は、リストアップされる要素のうちのいずれか1つのみ、任意の副次的組み合わせ、または要素の全てを含み、必ずしも任意の追加の要素を除外することなく、かつ必ずしも要素の全てを要求することなく、リストアップされる要素のうちのいずれか1つ以上のものに及ぶことを意図している。
【0072】
点群は、3次元座標系における点の組である。点は、多くの場合、1つ以上のオブジェクトの外面を表すことを意図している。各点は、3次元座標系におけるある場所(位置)を有する。位置は、デカルトまたは任意の他の座標系であり得る3つの座標(X,Y,Z)によって表され得る。点は、色等の他の関連付けられた属性を有し得、それは、ある場合、R、G、BまたはY、Cb、Cr等の3つの成分値でもあり得る。他の関連付けられた属性は、点群データに関する所望の用途に応じて、透明度、反射率、法線ベクトル等を含み得る。
【0073】
点群は、静的または動的であり得る。例えば、オブジェクトまたはトポグラフィの詳細な走査またはマッピングは、静的点群データであり得る。マシンビジョン目的のための環境のLiDARベースの走査は、点群が(少なくとも潜在的に)経時的に変化し、例えば、ボリュームの各連続的走査を伴う点において、動的であり得る。動的点群は、したがって、点群の時間順のシーケンスである。
【0074】
点群データは、いくつかの例を挙げると、保存(歴史的または文化的物体の走査)、マッピング、マシンビジョン(自律または半自律自動車等)、および仮想現実システムを含むいくつかの用途において使用され得る。マシンビジョンのような用途に関する動的点群データは、保存目的に関するそれのような静的点群データと全く異なり得る。例えば、自動車ビジョンは、典型的に、高頻度の捕捉を伴うLiDAR(または類似する)センサを通して取得される比較的に低い分解能であり、無色であり、高度に動的な点群を伴う。そのような点群の目的は、人間による消費または視認のためではなく、むしろ、決定プロセスにおける機械オブジェクト検出/分類のためである。例として、典型的なLiDARフレームは、約数千の点を含む一方、高品質仮想現実用途は、数百万の点を要求する。算出速度が、向上し、新しい用途が、見出されるにつれて、経時的により高い分解能データの要求が、存在するであろうことが予期され得る。
【0075】
点群データは、有用であるが、効果的かつ効率的な圧縮、すなわち、エンコーディングおよびデコーディングプロセスの不足は、採用および展開を妨げ得る。オーディオまたはビデオのような他のデータ圧縮の場合に生じない点群をコーディングすることにおける特定の課題は、点群の幾何学形状のコーディングである。点群は、低密度で取り込まれる傾向があり、それは、点の場所を効率的にコーディングすることをはるかに困難にする。
【0076】
点群データをコーディングするためのより一般的な機構のうちの1つは、ツリーベースの構造の使用を通したものである。ツリーベースの構造において、点群に関する有界3次元ボリュームは、再帰的にサブボリュームに分化される。ツリーのノードは、サブボリュームに対応する。サブボリュームをさらに分化するかどうかの決定は、ツリーの分解能および/またはサブボリューム内に含まれる任意の点が存在するかどうかに基づき得る。リーフノードが、その関連付けられたサブボリュームが、点を含むかどうかを示す占有フラグを有し得る。分割フラグが、ノードが、子ノードを有するかどうか(すなわち、現在のボリュームが、サブボリュームにさらに分割されているかどうか)を示し得る。これらのフラグは、ある場合、エントロピコーディングされ得、ある場合、予測コーディングが、使用され得る。
【0077】
一般的に使用されるツリー構造は、オクツリーである。この構造において、ボリューム/サブボリュームは全て、立方体であり、サブボリュームの各分割は、8つのさらなるサブボリューム/サブ立方体をもたらす。別の一般的に使用されるツリー構造は、KDツリーであり、ボリューム(立方体または長方形直方体)が、軸のうちの1つに直交する平面によって再帰的に2つに分化される。オクツリーは、KDツリーの特別な事例であり、ボリュームは、各々が3つの軸のうちの1つに直交する3つの平面によって分化される。これらの例の両方は、立方体または長方形直方体に関するが、しかしながら、本願は、そのようなツリー構造に制限されず、ボリュームおよびサブボリュームは、いくつかの用途において、他の形状を有し得る。ボリュームの区画化は、必ずしも2つのサブボリューム(KDツリー)または8つのサブボリューム(オクツリー)へのものではなく、非長方形形状への分化を含む他の区画を伴うか、または非隣接サブボリュームを伴い得る。
【0078】
本願は、容易な解説のために、および、それらが自動車用途のための普及した候補ツリー構造であるので、オクツリーに言及し得るが、本明細書に説明される方法およびデバイスは、他のツリー構造を使用して実装され得ることを理解されたい。
【0079】
ここで、本願の側面による、点群エンコーダ10の簡略化ブロック図を示す
図1が、参照される。点群エンコーダ10は、ツリー構築モジュール12を含み、ツリー構築モジュール12は、点群データを受信し、ツリー(この例において、オクツリー)を生成し、ツリーは、点群を含むボリューム空間の幾何学形状を表し、その幾何学形状における点群からの点の場所または位置を示す。
【0080】
点群をコーディングするためのオクツリーを作成するための基本的プロセスは、以下を含み得る。
1.座標系内に点群を含む有界ボリューム(立方体)を用いて開始する。
2.ボリュームを8つのサブボリューム(8つのサブ立方体)に分割する。
3.各サブボリュームに関して、サブボリュームが空である場合、サブボリュームを0でマーキングし、その中に少なくとも1つの点が存在する場合、1でマーキングする。
4.1でマーキングされた全てのサブボリュームに関して、分割の最大深度が到達されるまで、それらのサブボリュームを分割するために(2)を繰り返す。
5.最大深度の全てのリーフサブボリューム(サブ立方体)に関して、それが空ではない場合、リーフ立方体を1でマーキングし、そうでなければ、0でマーキングする。
【0081】
上記のプロセスは、占有=分割プロセスとして説明され得、分割は、占有を含意し、それを超えていかなるさらなる分割も行われないであろう最大深度または分解能が存在する制約を伴う。この場合、単一のフラグが、ノードが分割されているかどうか、したがって、それが少なくとも1つの点によって占有されているかどうかを示し、逆もまた同様である。最大深度において、フラグは、占有を示し、いかなるさらなる分割も、可能ではない。
【0082】
いくつかの実装において、分割と占有とは、独立しており、それによって、ノードは、占有されており、ノードは、分割されていることも、分割されていないこともある。この実装の2つの変形例が、存在する。
1.分割後占有。信号フラグが、ノードが分割されているかどうかを示す。分割されている場合、ノードは、点を含まなければならず、すなわち、分割は、占有を含意する。そうでなければ、ノードが分割されるべきではない場合、さらなる占有フラグが、ノードが、少なくとも1つの点を含むかどうかを示す。故に、ノードが、さらに分割されていない、すなわち、それがリーフノードであるとき、リーフノードは、それが、任意の点を含むかどうかを示すために、関連付けられた占有フラグを有していなければならない。
2.占有後分割。単一のフラグが、ノードが占有されているかどうかを示す。占有されていない場合、いかなる分割も、行われない。それが占有されている場合、分割フラグが、ノードがさらに分割されるかどうかを示すためにコーディングされる。
【0083】
ツリーを構築するために使用される上で説明されるプロセスにかかわらず、それは、フラグ(占有および/または分割フラグ)からビットのシーケンスを生成するために、所定の順序(幅優先または深度優先、および各分化されたサブボリューム内の走査パターン/順序に従って)でトラバースされ得る。これは、ツリーの直列化またはバイナリ化と呼ばれ得る。
図1に示されるように、この例において、点群エンコーダ10は、オクツリーをバイナリ化し、ツリーを表すバイナリ化されたデータのビットストリームを生成するためのバイナライザ14を含む。
【0084】
ビットのこのシーケンスは、次いで、圧縮されたビットストリームを生成するために、エントロピエンコーダ16を使用してエンコードされ得る。エントロピエンコーダ16は、コンテキストモデル18を使用して、ビットのシーケンスをエンコードし得、コンテキストモデル18は、エントロピエンコーダ16によるコンテキスト決定に基づいてビットをコーディングするための確率を規定する。コンテキストモデル18は、各ビットまたはビットの定義された組のコーティング後、適応的に更新され得る。エントロピエンコーダ16は、ある場合、バイナリ算術エンコーダであり得る。バイナリ算術エンコーダは、いくつかの実装において、コンテキスト適応バイナリ算術コーティング(CABAC)を採用し得る。いくつかの実装において、算術コーダ以外のコーダも、使用され得る。
【0085】
ある場合、エントロピエンコーダ16は、バイナリコーダではないこともあり、代わりに、非バイナリデータに対して動作し得る。ツリー構築モジュール12からの出力オクツリーデータは、バイナリ形態において評価されていないこともあり、代わりに、非バイナリデータとしてエンコードされ得る。
例えば、オクツリーの場合、それらの走査順序におけるサブボリューム内の8つのフラグ(例えば、占有フラグ)は、28-1ビット数(例えば、1~255の値を有する整数。何故なら、値0は、分割されたサブボリュームに関して可能ではない(すなわち、それは、それがまったく占有されていない場合、分割されていない)からである)と考えられ得る。この数は、いくつかの実装において、マルチシンボル算術コーダを使用するエントロピエンコーダによってエンコードされ得る。サブボリューム(例えば、立方体)内で、この整数を定義するフラグのシーケンスは、「パターン」と呼ばれ得る。
【0086】
ビデオまたは画像コーディングの場合のように、点群コーディングは、予測演算を含むことができ、予測演算において、サブボリュームに関するパターンを予測するために、試みが行われる。予測は、空間的(同じ点群内の以前にコーディングされたサブボリュームに依存する)または時間的(点群の時間順のシーケンスにおける以前にコーディングされた点群に依存する)であり得る。
【0087】
エンコーダ10に対応する例示的点群デコーダ50のブロック図が、
図2に示される。点群デコーダ50は、エンコーダ10によって使用される同じコンテキストモデル54を使用するエントロピデコーダ52を含む。エントロピデコーダ52は、圧縮されたデータの入力ビットストリームを受信し、データをエントロピデコーディングし、圧縮解除されたビットの出力シーケンスを生成する。シーケンスは、次いで、ツリー再構成器56によって、再構成された点群データに変換される。ツリー再構成器56は、圧縮解除されたデータとツリーデータがバイナリ化された走査順序の知識とからツリー構造を再構築する。ツリー再構成器56は、したがって、点群から点の場所を再構成することが可能である(ツリーコーディングの分解能を前提として)。
【0088】
例示的部分的サブボリューム100が、
図3に示される。この例において、サブボリューム100は、容易な図示のために2次元において示され、サブボリューム100のサイズは、16×16である。サブボリュームは、4つの8×8サブ正方形に分化されており、それらのうちの2つは、4×4サブ正方形にさらに細分化されており、それらのうちの3つは、2×2サブ正方形にさらに分化され、2×2サブ正方形のうちの1つは、次いで、1×1正方形に分化されていることに留意されたい。1×1正方形は、ツリーの最大深度であり、位置的点データに関する最も微細な分解能を表す。点群からの点は、図においてドットとして示される。
【0089】
ツリー102の構造は、サブボリューム100の右側に示される。所定の幅優先走査順序において取得された分割フラグ104のシーケンスと占有フラグ106の対応するシーケンスとが、ツリー102の右側に示される。この例証的例において、分割されていない(すなわち、ゼロに設定された関連付けられた分割フラグを有する)各サブボリューム(ノード)のための占有フラグが存在することが、観察されるであろう。これらのシーケンスは、エントロピエンコーディングされ得る。
【0090】
占有=分割条件を採用する別の例が、
図4に示される。
図4は、オクツリー150の再帰的分割およびコーディングを図示する。オクツリー150の一部のみが、図に示される。FIFO152が、このプロセスの幅優先性質を図示するために、分割のためにノードを処理するものとして示される。FIFO152は、その親ノード156の処理後のさらなる分割のために、FIFO152において待ち行列に入れられていた占有ノード154を出力する。ツリービルダは、占有ノード154に関連付けられたサブボリュームを8つのサブボリューム(立方体)に分割し、それらの占有を決定する。占有は、各サブボリュームのための占有フラグによって示され得る。規定された走査順序において、フラグは、ノード154に関する占有パターンと称され得る。パターンは、所定の走査順序におけるサブボリュームに関連付けられた占有フラグのシーケンスを表す整数によって規定され得る。オクツリーの場合、パターンは、範囲[1,255]内の整数である。
【0091】
エントロピエンコーダは、次いで、コンテキストモデルによって規定された確率に基づいて、非バイナリ算術エンコーダを使用して、そのパターンをエンコードする。この例において、確率は、初期分布モデルに基づくパターン分布であり、適応的に更新され得る。一実装において、パターン分布は、事実上、各パターン(1~255の整数)がコーディング中に遭遇した回数のカウンタである。パターン分布は、各サブボリュームが、コーディングされた後に更新され得る。パターン分布は、パターンの相対的頻度が確率査定に密接に関係しており、絶対カウントではないので、必要に応じて、正規化され得る。
【0092】
パターンに基づいて、占有されている(例えば、フラグ=1を有する)それらの子ノードは、次いで、(ノードがツリーの最大深度ではないことを条件に)順にさらなる分割のためにFIFO152に押し込まれる。
【0093】
ここで、オクツリーからの例示的立方体180を示す
図5が、参照される。立方体180は、8つのサブ立方体に細分化される。フラグを読み取るための走査順序は、8ビットの文字列をもたらし、それは、バイナリにおける整数[1,255]として読み取られることができる。走査順序および文字列内の各サブ立方体のフラグの結果として生じるビット位置に基づいて、サブ立方体は、
図5に示される値を有する。走査順序は、エンコーダおよびデコーダの両方が、同じ走査順序を使用することを条件に、サブ立方体の任意のシーケンスであり得る。
【0094】
例として、
図6は、4つの「前側」サブ立方体が占有されている立方体180を示す。これは、占有されたサブ立方体が、立方体1+4+16+64であることに基づいて、パターン85に対応するであろう。整数パターン番号は、サブ立方体内の占有のパターンを規定する。
【0095】
オクツリー表現、または、より一般的に、任意のツリー表現は、ツリーが、点座標のより高次のビットを因数に分解する傾向があるので、空間相関を伴う点を表すことにおいて効率的である。オクツリーに関して、深度の各レベルは、精緻化あたり8ビットを犠牲にして、各成分に関して1ビットによってサブボリューム内の点の座標を精緻化する。さらなる圧縮が、各ツリーノードに関連付けられた分割情報(すなわち、パターン)をエントロピコーディングすることによって取得される。このさらなる圧縮は、パターン分布が、均一ではないので、可能であり、すなわち、不均一性は、相関の別の結果である。
【0096】
現在のシステムにおける1つの潜在的な非効率性は、パターン分布(例えば、ツリーの以前にコーディングされたノードに見られるパターン番号のヒストグラム)が、点群をコーディングする過程にわたって開発されることである。ある場合、パターン分布は、等確率として初期化され得るか、または、ある他の所定の分布に初期化され得るが、1つのパターン分布の使用は、コンテキストモデルが、局所的幾何学的相関を考慮しないこと、または活用しないことを意味する。
【0097】
欧州特許出願第18305037.6号において、本出願人は、特定のノードの近傍の以前にコーディングされたノードからのある占有情報に基づいて、特定のノードの占有のパターンをコーディングすることにおいて使用されるべき利用可能なパターン分布の中から選択する方法およびデバイスを説明した。一例示的実装において、占有情報は、特定のノードに対する親の占有のパターンから取得される。別の例示的実装において、占有情報は、特定のノードの近隣に位置している1つ以上のノードから取得される。欧州特許出願第18305037.6号の内容は、参照することによって本明細書に組み込まれる。
【0098】
ここで、点群をエンコードする一例示的方法200をフローチャート形態において示す
図7が、参照される。この例における方法200は、占有ノード(サブボリューム)の再帰的分割と、コーディングのためのツリーの幅優先トラバーサルとを伴う。
【0099】
動作202において、エンコーダは、現在のノードに関する占有のパターンを決定する。現在のノードは、各々がそれぞれのサブ立方体に対応する8つの子ノードに分割された占有ノードである。現在のノードに関する占有のパターンは、走査順序における8つの子ノードの占有を規定する。上で説明されるように、占有のこのパターンは、1~255の整数、例えば、8ビットバイナリ文字列を使用して示され得る。
【0100】
動作204において、エンコーダは、確率分布の組の中からある確率分布を選択する。確率分布の選択は、近傍の以前にコーディングされたノード、すなわち、現在のノードの近隣である少なくとも1つのノードからのある占有情報に基づく。2つのノードは、いくつかの実施形態において、それらが、少なくとも1つの面を共有するそれぞれのサブボリュームに関連付けられる場合、近隣に位置している。より広範な定義において、ノードは、それらが、少なくとも1つの縁を共有する場合、近隣に位置している。なおもより広範な定義において、2つのノードは、それらが、少なくとも1つの頂点を共有する場合、近隣に位置している。親パターン(その親パターン内で、現在のノードは、子ノードである)は、現在のノードおよび現在のノードの7つの兄弟ノードに関する占有データを提供する。いくつかの実装において、占有情報は、親パターンである。いくつかの実装において、占有情報は、近隣ノードの組に関する占有データであり、近隣ノードは、異なる親ノードを有するが、現在のノードと同じツリーの深度レベルにおけるノードを含む。ある場合、これらの組み合わせが、可能である。例えば、近隣ノードの組は、いくつかの兄弟ノードと、いくつかの非兄弟ノードとを含み得る。
【0101】
確率分布が、選択されると、エンコーダは、動作206によって示されるように、選択された確率分布を使用して、現在のノードに関する占有パターンをエントロピエンコーディングする。それは、次いで、占有パターンに基づいて、動作208において、選択された確率分布を更新する(例えば、それは、占有パターンに対応するカウントを増加させ得る)。動作210において、エンコーダは、コーディングすべきさらなるノードが存在するかどうかを評価し、該当する場合、次のコードをコーディングするために、動作202に戻る。
【0102】
動作204における確率分布選択は、近傍の以前にコーディングされたノードに関する占有データに基づくべきである。これは、エンコーダおよびデコーダの両方が、同じ選択を独立して行うことを可能にする。確率分布選択の下記議論に関して、現在のノード302を含む部分的オクツリー300を図式的に図示する
図8が、参照されるであろう。現在のノード302は、占有ノードであり、コーディングのために評価されている。現在のノード302は、親ノード306の8つの子のうちの1つであり、親ノード306は、順に、祖父母ノード(図示せず)の子である。現在のノード302は、8つの子ノード304に分化される。現在のノード302に関する占有パターンは、子ノード304の占有に基づく。例えば、図示されるように、黒色ドットが、占有ノードである表記法を使用して、占有パターンは、00110010、すなわち、パターン50であり得る。
【0103】
現在のノード302は、同じ親ノード306を有する兄弟ノード308を有する。親パターンは、親ノード306に関する占有パターンであり、それは、図示されるように、00110000、すなわち、パターン48であろう。親パターンは、現在のノードに関する占有パターンをエントロピエンコーディングするための好適な確率分布を選択するための基礎としての役割を果たし得る。
【0104】
図9は、近隣が、面を共有するノードとして定義される現在のノードを包囲する近隣の組を図示する。この例において、ノード/サブボリュームは、立方体であり、画像の中心における立方体は、各面に1つずつの6つの近隣を有する。オクツリーにおいて、現在のノードの近隣は、3つの兄弟ノードを含むであろうことを理解されたい。それは、同じ親ノードを有していない3つのノードも含むであろう。故に、近隣ノードのうちのいくつかに関する占有データは、それらが兄弟であるので、利用可能であろうが、いくつかの近隣ノードに関する占有データは、それらのノードが以前にコーディングされたかどうかに応じて、利用可能であることも、そうではないこともある。特別な取り扱いが、欠落する近隣に対処するために適用され得る。いくつかの実装において、欠落する近隣は、占有されていると推定され得るか、または、占有されていないと推定され得る。近隣定義は、査定において追加の隣接するサブボリュームを含むために、共有される縁に基づいて、または共有される頂点に基づいて、近隣ノードを含むように拡大され得ることを理解されたい。
【0105】
前述のプロセスは、現在のノード302の占有データをエントロピコーディングするために、より好適なコンテキストを選択し、より正確な確率を使用するように、現在のノード302の占有の可能性を決定する試みにおいて、近傍ノードの占有を調べることを理解されたい。現在のノード302と面を共有する近隣ノードの占有ステータスが、そのうちの3つが縁のみを共有し、そのうちの1つが頂点のみを共有するであろう兄弟ノードの占有ステータスに基づくその査定より、現在のノード302が、隔離されている可能性が高いかどうかのより正確な査定であり得ることを理解されたい(オクツリーの場合)。しかしながら、兄弟の占有ステータスの査定が、査定のための全ての関連するデータが親ノードの一部である点においてモジュール式である利点を有し、それが実装のためのより小さいメモリフットプリントを有するが、近隣占有ステータスの査定が、将来の近傍ノードをコーディングすることに関連して近隣占有ステータスを決定するとき、それが必要とされる場合、ツリー占有データをバッファリングすることを伴うことを意味する。
【0106】
近隣の占有は、占有パターンに関して上で説明されるものと同様、ある値を各近隣に効果的に割り当てる走査順序において読み取られ得る。図示されるように、近隣ノードは、事実上、1、2、4、8、16、または32の値をとり、したがって、64(0~63)個の可能な近隣占有構成が、存在する。この値は、本明細書において、「近隣構成」と呼ばれ得る。例として、
図10は、近隣1、2、4、および8が占有され、近隣16および32が空である近隣構成15の例を図示する。
【0107】
ある場合、2つの上記基準(親パターンおよび近隣構成)の両方が、適用され得るか、または、それらの間で選択され得る。例えば、近隣が利用可能である場合、確率分布選択は、近隣ノードに基づいて行われ得るが、しかしながら、近隣のうちの1つ以上が、それらが、まだコーディングされていないノードからのものであるので利用可能でない場合、確率分布選択は、兄弟ノード(親パターン)に基づく分析に戻り得る。
【0108】
なお別の実施形態において、確率分布選択は、代替として、または加えて、祖父母パターンに基づき得る。言い換えると、確率分布選択は、親ノード306の兄弟である叔父ノードの占有ステータスに基づき得る。
【0109】
またさらなる実装において、追加のまたは代替査定が、確率分布選択に組み込まれ得る。例えば、確率分布選択は、親ノードの近隣ノードまたは祖父母ノードの近隣ノードの占有ステータスを調べ得る。
【0110】
局所的占有ステータスを査定するための上記基準のうちのいずれか2つ以上が、いくつかの実装において、組み合わせて使用され得る。
【0111】
非バイナリエントロピコーダの場合、現在のノードに関する占有データは、確率分布を選択することによってコーディングされ得る。確率分布は、現在のノードに関する可能な占有パターンの数に対応するいくつかの確率を含む。例えば、オクツリーの占有パターンをコーディングする場合、28-1=255個の可能なパターンが、存在し、各確率分布が、255個の確率を含むことを意味する。いくつかの実施形態において、確率分布の数は、選択基準(すなわち、近隣、兄弟、および/または親占有データを使用すること)における可能な占有成果の数に等しくあり得る。例えば、オクツリーに関する親パターンが使用すべき確率分布を決定するための選択基準として使用される場合、各々が255個の確率を伴う255個の確率分布が、存在するであろう。近隣構成の場合、近隣が面を共有するものとして定義される場合、各分布が255個の確率を含む64個の確率分布が、存在するであろう。
【0112】
多すぎる分布は、データの不足(すなわち、コンテキスト希薄化)に起因して、緩慢な適応をもたらし得ることを理解されたい。故に、いくつかの実施形態において、類似するパターンは、同じ確率分布を使用するように、グループ化され得る。例えば、別個の分布が、完全占有された事例、垂直に向けられた事例、水平に向けられた事例、殆ど空の事例、および、全ての他の事例に対応するパターンのために使用され得る。これは、確率分布の数を約5つに低減させ得る。パターンの異なるグループ化が、異なる数の確率分布をもたらすために形成され得ることを理解されたい。
【0113】
ここで、親パターン依存コンテキストを使用する点群エントロピエンコーディングのプロセス400の一例証的実施形態を図式的に示す
図11が、参照される。この例において、現在のノード402が、8つの子ノードに分割されており、その占有パターン404は、非バイナリエントロピエンコーダ406を使用してエンコードされるべきである。非バイナリエントロピエンコーダ406は、6つの可能な確率分布408のうちの1つから選択された確率分布を使用する。選択は、親パターンに基づき、すなわち、選択は、現在のノード402に対する親ノードからの占有情報に基づく。親パターンは、1~255の整数によって識別される。
【0114】
確率分布の選択は、パターンが、完全ノード(例えば、パターン=255)、水平構造(例えば、パターン=170または85、Z軸が垂直であると仮定して)、垂直構造(例えば、パターン=3、12、48、192)、低密度に取り込まれた分布(例えば、パターン=1、2、4、8、16、32、64、または128、すなわち、兄弟ノードのうちのいずれも占有されていない)、半低密度に取り込まれた分布(現在のノードおよび兄弟ノード間の占有ノードの合計数≦3)、および全ての他の事例に対応するかどうかを査定する決定ツリーであり得る。異なるカテゴリに関して示される例示的パターンは、単に、例である。例えば、「水平」カテゴリは、同じ水平レベル上に2つまたは3つの占有立方体を伴うパターンを含み得る。「垂直」カテゴリは、壁様配置における3つまたは4つの占有立方体を伴うパターンを含み得る。より微細な段階が使用され得ることも理解されたい。例えば、「水平」カテゴリは、各々に関して異なる確率分布を伴う立方体の上部部分において水平に、立方体の底部部分において水平にさらに細分化され得る。ある相関を有する占有パターンの他のグループ化も、行われ、対応する確率分布に配分され得る。近隣構成のコンテキストにおけるパターンのグループ化および近隣構成間の不変性に関するさらなる議論が、下でさらに記載される。
【0115】
図12は、近隣構成依存コンテキストを使用する点群エントロピエンコーディングのプロセス500の例証的実施形態を示す。この例は、
図9に関連して上で使用される近隣および近隣構成付番の定義を仮定する。この例は、各近隣構成が、専用確率分布を有することも仮定し、64個の異なる確率分布が、存在することを意味する。現在のノード502は、エンコードされるべき占有パターン504を有する。確率分布は、現在のノード502の近隣ノードに基づいて選択される。すなわち、[0,63]における近隣構成NCが、見出され、関連付けられる確率分布を選択するために使用される。
【0116】
いくつかの実施形態において、近隣構成は、2つ以上の近隣構成が、パターンにおける類似性に基づいて、同じ確率分布を使用するようにグループ化され得ることを理解されたい。いくつかの実施形態において、プロセスは、分布のコンテキスト化(選択)のための近隣の異なる配置を使用し得る。全ての3つの軸上の対角線上に隣接する8つの近隣または2つの軸上の対角線上に隣接する12個の近隣等、追加の近隣が、追加され得る。特定の近隣を回避する実施形態も、例えば、深度優先走査における追加の従属を導入する近隣を使用することを回避するか、または、大きいツリーに関するコーデック状態を低減させるように特定の軸に対する従属のみを導入するために使用され得る。
【0117】
この例において、NC=0の事例が、具体的様式で取り扱われる。占有されているいかなる近隣も、存在しない場合、それは、現在のノード502が、隔離されていることを示し得る。故に、プロセス500は、現在のノード502に対する子ノードのいくつが占有されているかをさらにチェックする。1つの子ノードのみが占有されている場合(すなわち、占有数(NO)が1に等しい場合)、単一の子ノードが占有されていることを示すフラグが、エンコードされ、ノードに対するインデックスが、3ビットを使用してコーディングされる。2つ以上の子ノードが占有されている場合、プロセス500は、占有パターンをコーディングするために、NC=0確率分布を使用する。
【0118】
ここで、エンコードされた点群データのビットストリームをデコードするための一例示的方法600をフローチャート形態において示す
図13が、参照される。
【0119】
動作602において、デコーダは、現在のノードの近傍の1つ以上のノードからの占有情報に基づいて、確率分布のうちの1つを選択する。上で説明されるように、占有情報は、現在のノードに対する親ノードからの親パターン、すなわち、現在のノードおよびその兄弟の占有であり得るか、または、それは、兄弟ノードのうちのいくつかを含み得る現在のノードの近隣ノードの占有であり得る。他のまたは追加の占有情報も、いくつかの実装において、使用され得る。
【0120】
確率分布が、選択されると、動作604において、デコーダは、現在のノードに関する占有パターンを再構成するために、選択された確率分布を使用して、ビットストリームの一部をエントロピデコーディングする。占有パターンは、エンコードされた点群データを再構成するようにツリーを再構成することにおいてデコーダによって使用される。点群データが、デコードされると、それは、ビューをレンダリングすること、セグメント化/分類、または他の用途のため等の使用のために、デコーダから出力され得る。
【0121】
動作606において、デコーダは、再構成された占有パターンに基づいて、確率分布を更新し、次いで、デコードすべきさらなるノードが、存在する場合、それは、バッファ内の次のノードに移動し、動作602に戻る。
【0122】
上で説明される方法の例示的実装は、コーディング複雑性の無視できる増加を伴う圧縮改良を提供することを証明している。近隣ベースの選択は、親パターンベースの選択より良好な圧縮性能を示すが、それは、さらなる算出複雑性およびメモリ使用を有する。いくつかの試験において、MPEG点群試験モデルに対する点あたりビットの相対的改良は、4~20%である。試験データを用いて到達した分布に基づいて確率分布を初期化することは、均一な分布を用いて初期化することと比較して、改良された性能につながることに留意されたい。
【0123】
上記の例のうちのいくつかは、占有パターンを示すために、非バイナリコーダを使用するツリーコーディングプロセスに基づく。バイナリエントロピコーダを採用するための新しい発展が、下でさらに提示される。
【0124】
近隣ベースの確率分布選択の一変形例において、分布の数は、近隣の対称性を活用することによって低減させられ得る。近隣を置き換えるか、または、パターン分布を置き換えることによって、対称線を有する構造的に類似する構成は、同じ分布を再使用することができる。言い換えると、同じパターン分布を使用できる近隣構成は、あるクラスにグループ化され得る。2つ以上の近隣を含むクラスは、近隣構成のうちの1つが、それらの他の構成の反射または置き換えを用いて他の近隣構成を事実上包含する点において、本明細書では「近隣構成」と称され得る。
【0125】
例として、各々が角近隣パターンの対称性を表す8つの角パターンNC∈[21,22,25,26,37,38,41,42]を考慮する。NCのこれらの値は、ノードの特定のパターンであるが、異なるパターンとかなり互いに関係付けられている可能性が高い。さらに、これらの互いに関係があるパターンは、近隣パターンと同じ対称性に従う可能性が高い。例として、その分布の確率を置き換えることによって、NCの複数の事例を表すために単一の分布を再使用する方法が、実装され得る。
【0126】
エンコーダが、子ノードの占有に基づいて、ノードのパターン番号を導出する。エンコーダは、近隣構成に従って、分布および置き換え関数を選択する。エンコーダは、置き換え関数に従って、分布内に含まれる確率を再順序付けし、続けて、パターン番号を算術的にエンコードするために、置き換えられた分布を使用する。算術エンコーダによる置き換えられた分布の確率の更新は、逆置き換え関数を用いて元々の分布に戻るようにマッピングされる。
【0127】
対応するデコーダが、最初に、近隣構成に従って、同じ分布および置き換え関数を選択する。置き換えられた分布が、エンコーダと同じ様式で生成され、置き換えられた分布は、パターン番号をエントロピデコーディングするために算術デコーダによって使用される。パターン番号を備えているビットは、次いで、各々、対応する子に割り当てられる。
【0128】
同じ置き換えが、分布自体のデータを再順序付けすることなく、むしろ、間接レベルを導入し、分布内の所与のインデックスのルックアップを置き換えるために置き換え関数を使用して達成され得ることに留意されたい。
【0129】
代替実施形態は、分布ではなく、パターン自体の置き換えを考慮し、エントロピエンコーディングに先立って、またはデコーディングの後にシャッフルを可能にする。そのような方法は、ビット単位シャッフル動作を通した効率的な実装により適している可能性が高い。この場合、分布のいかなる再順序付けも、エンコーダまたはデコーダのいずれによっても実施されず、むしろ、エンコードされたパターン番号の算出は、
【数1】
であるように修正され、式中、c
iは、i番目の子の占有状態であり、σ(i)は、置き換え関数である。1つのそのような例示的置き換え関数
【数2】
は、NC=22に関する分布が、NC=41のそれために使用されることを可能にする。置き換え関数は、
【数3】
を使用して、エンコードされたパターン番号から子ノードの占有状態を導出するためにデコーダによって使用され得る。
【0130】
要求される置き換えを導出する方法は、近隣構成の回転対称性に基づき得るか、または、特定の軸に沿った反射に基づき得る。さらに、置き換えが、例えば、対称性に従って、全ての位置を置き換えることは、必要ではなく、部分的置き換えが、代わりに使用され得る。例えば、NC=22をNC=41に置き換えるとき、対称軸における位置は、置き換えられないこともあり、マッピング
【数4】
につながり、式中、位置0、2、4、6は、置き換えられない。他の実施形態において、対1および7のみが、置換される。
【0131】
回転対称性および反射に基づく実施形態の例が、以降で、現在の立方体と共通面を共有する6つの近隣を伴うオクツリーの具体的事例に関して提供される。一般性を失うことなく、
図16に示されるように、Z軸は、図を視認する方向に対して垂直に延びている。次いで、「上方」(「下方」)等の近隣の相対的位置は、増加する(減少する)Z方向におけるZ軸に沿ったものとして理解されるべきである。同じことが、X軸に沿った左側/右側およびY軸に沿った前側/後側に関しても適用される。
【0132】
図16は、Z、Y、およびX軸に沿った3つの回転2102、2104、および2106を示す。これらの3つの回転の角度は、90度であり、すなわち、それらは、それらのそれぞれの軸に沿って4分の1回りの回転を実施する。
【0133】
図17は、Z軸に沿った回転2102の1回または数回の反復下の近隣構成の不変性のクラスを示す。この不変性は、XY平面に属する任意の方向に沿った点群幾何学形状の同じ統計的挙動を表す。これは、特に、XY平面によって局所的に近似される地表面上を移動する自動車のユースケースに当てはまる。水平構成は、上方の近隣(2202)および下方の近隣(2204)の占有から独立して、4つの近隣(現在の立方体の左側、右側、前側、および後側に位置する)の所与の占有である。4つの水平構成2206、2208、2210、および2212は、回転2102下で不変性の同じクラスに属する。同様に、2つの構成2214および2216は、不変性の同じクラスに属する。回転2102下で不変性の6つのクラス(クラス2218の組下でグループ化される)のみが、存在する。
【0134】
垂直構成は、現在の立方体の左側、右側、前側、および後側に位置する4つの近隣の占有から独立して、2つの近隣2202および2204の所与の占有である。
図18に示されるように、4つの可能な垂直構成が、存在する。その結果、Z軸に沿った回転2102に対する不変性を考慮する場合、6×4=24個の可能な構成が、存在する。
【0135】
Z軸に沿った反射2108が、
図16に示される。
図18に描写される垂直構成2302および2304は、反射2108下で不変性の同じクラスに属する。反射2108下で不変性の3つのクラス(クラス2306の組下でグループ化される)が、存在する。反射2108下の不変性は、上向きおよび下向き方向が、点群幾何学形状統計の観点から本質的に同じに挙動することを意味する。これは、道路上の移動する自動車に関して正確な仮定である。
【0136】
回転2102および反射2108の両方の下での不変性を仮定する場合、2つの組2218および2306の積からもたらされる不変性の18個のクラスが、存在する。これらの18個のクラスは、
図19に表される。
【0137】
2つの他の回転2104および2106下のさらなる不変性を適用すると、2つの構成2401および2402は、不変性の同じクラスに属する。さらに、2つの構成2411および2412、2つの構成2421および2422、3つの構成2431、2432、および2433、2つの構成2441および2442、2つの構成2451および2452、および、最後に、2つの構成2461および2462が、同じクラスに属する。その結果、3つの回転(2102、2104、および2106)および反射2108下の不変性は、
図20に示されるような不変性の10個のクラスにつながる。
【0138】
本明細書の上で提供される例から、3つの回転および反射下の不変性を仮定するかどうかにかかわらず、有効近隣構成、すなわち、64個の近隣構成がグループ化され得るクラスの数は、64、24、18、または10のいずれかである。
【0139】
エントロピコーディングに先立って、パターンは、近隣構成が、不変性クラスのうちの1つに確かに属するので、同じ変換、すなわち、回転および反射を受ける。これは、不変近隣構成とコーディングされたパターンとの間の統計的一貫性を保全する。
【0140】
ツリーのトラバーサル中、子ノードが、以前に訪問された同じツリー深度におけるある近隣ノードを有し、従属として必然的に使用され得ることも理解されたい。これらの同じレベルの近隣に関して、親の併置された近隣を参照する代わりに、同じレベルの近隣が、使用され得る。同じレベルの近隣は、親の半分の寸法を有するので、1つの構成が、4つの直接隣接する近隣子ノード(すなわち、現在のノードと面を共有する4つ)のうちのいずれかが占有されている場合、近隣が占有されていると見なす。
【0141】
(バイナリコーディングを使用したツリー占有パターンのエントロピーコーディング)
ツリー占有をコーディングするために近隣占有情報を使用する上で説明される技法のうちのいくつかは、欧州特許出願第18305037.6号に詳述されている。説明される実施形態は、パターン分布が、近隣占有情報に基づいて選択される占有パターンの非バイナリエントロピコーディングの使用に焦点を当てている。しかしながら、いくつかのインスタンスにおいて、バイナリコーダの使用が、ハードウェア実装の観点からより効率的であり得る。さらに、多くの確率のオンザフライ更新は、高速アクセスメモリおよび算術コーダの中心部内での算出を要求し得る。故に、バイナリ算術コーダを使用して占有パターンをエントロピエンコーディングする方法およびデバイスを見出すことが、有利であり得る。圧縮性能を著しく劣化させることなく、かつ追跡すべき圧倒的な数のコンテキストを有することを防ぎながらそれが行われ得る場合、バイナリコーダを使用することが、有利であろう。
【0142】
非バイナリコーダの代わりのバイナリコーダの使用は、以下のエントロピ公式に反映される。
H(X1,X2|Y)=H(X1|Y)H(X2|Y,X1)
【0143】
式中、X=(X1,X2)は、コーディングされるべき非バイナリ情報であり、Yは、コーディングのためのコンテキスト、すなわち、近隣構成または選択されたパターン分布である。Xの非バイナリコーディングをバイナリコーディングに変換するために、情報(X1,X2)は、エントロピを増加させることなく別個にコーディングされ得る情報X1およびX2に分割される。そのために、他方に依存する2つのうちの一方をコーディングしなければならず、ここにおいて、X2は、X1に依存する。これは、Xにおけるnビットの情報に拡張されることができる。例えば、n=3に関して、以下である。
H(X1,X2,X3|Y)=H(X1|Y)H(X2|Y,X1)H(X3|Y,X1,X2)
【0144】
占有パターン、すなわち、ビットシーケンスXが、より長くなるにつれて、シーケンス内の後半のビットをコーディングするためのより多くの条件が、存在することを理解されたい。バイナリコーダ(例えば、CABAC)に関して、これは、追跡および管理すべきコンテキストの数の大幅な増加を意味する。例としてオクツリーを使用すると、占有パターンが、8ビットシーケンスb=b0・・・b7である場合、ビットシーケンスは、8つのバイナリ情報ビットb0・・・b7に分割され得る。コーディングは、コンテキストを決定するための近隣構成N(またはNC)を使用し得る。上で説明されるように、不変性のクラスへの近隣構成のグループ化を通して、近隣構成を10個の有効近隣構成に低減させ得ると仮定すると、Nは、{0,1,2,・・・,9}に属する整数である。省略のために、「不変近隣構成のクラス」は、本明細書において、随時、単純に、「近隣構成」と称され得るが、この低減させられた数の近隣構成は、不変性に基づく近隣構成のクラスベースのグループ化に基づいて実現され得ることを理解されたい。
【0145】
図21は、バイナリエントロピコーディングのための8つの個々のビットへの8ビットパターンまたはシーケンスの分割を図示する。シーケンスの最初のビットは、近隣構成に基づいてエンコードされ、したがって、合計10個の利用可能なコンテキストが、存在することに留意されたい。シーケンスの次のビットは、近隣構成と任意の以前にエンコードされたビット、すなわち、ビットb
0に基づいてエンコードされる。これは、合計20個の利用可能なコンテキストを伴う:Nからの10とb
0からの2との積として取得される。最終ビットb
7は、Nからの10と以前にエンコードされたビットb
0,・・・,b
6によって与えられる部分的パターンからの128との積として取得される1,280個の利用可能なコンテキストから選択されるコンテキストを使用してエントロピエンコーディングされる。すなわち、各ビットのために、コンテキストの数(すなわち、条件/従属の可能な組み合わせ)は、定義される近隣構成の数(この例において、クラスへの64個の近隣構成のグループ化に基づいて、10)と、n-1個の以前にエンコードされたビットの順序付けられたシーケンスからの可能な部分的パターンの数(2
n-1によって与えられる)との積である。
【0146】
その結果、占有パターンのバイナリコーディングに関連して維持すべき合計2,550個のコンテキストが、存在する。これは、追跡すべき過剰に多数のコンテキストであり、相対的不足は、特に、シーケンス内の後半のビットに関して、コンテキスト希薄化により、不良な性能を引き起こし得る。
【0147】
故に、一側面において、本願は、コンテキストの組が、低減させられ得るかどうかを決定し、該当する場合、コンテキスト低減動作を適用し、バイナリコーダを使用して占有パターンの少なくとも一部をエントロピコーディングするための利用可能なコンテキストのより小さい組を実現するエンコーダおよびデコーダを開示する。別の側面において、本願は、固定数のコンテキストからの有効コンテキスト選択を実施するために、同じコンテキスト低減動作を使用して状態低減の1回以上の工程を適用するエンコーダおよびデコーダをさらに開示する。いくつかの実装において、コンテキスト低減は、コンテキストおよび/またはアルゴリズム条件文のルックアップテーブルを発生させることにおいて先験的に適用され、それらは、次いで、好適なコンテキストを選択することにおいてエンコーダまたはデコーダによって使用される。低減は、選択すべきルックアップテーブル、または選択されたコンテキストを取得するためにそのルックアップテーブルをインデックス化する/それから選択する方法を決定するために、エンコーダおよびデコーダが評価する試験可能条件に基づく。
【0148】
ここで、
図22が、参照され、
図22は、フローチャート形態において、バイナリコーディングを使用してツリーベースの点群コーダにおいて占有パターンをコーディングするための一例示的方法3000を示す。方法3000は、エンコーダまたはデコーダによって実装され得る。エンコーダの場合、コーディング動作は、エンコーディングであり、デコーダの場合、コーディング動作は、デコーディングである。エンコーディングおよびデコーディングは、コンテキストベースのエントロピエンコーディングおよびデコーディングである。
【0149】
例示的方法3000は、特定のノード/ボリュームに関する占有パターン、すなわち、ビットシーケンスをエントロピコーディングするためである。占有パターンは、ノード/ボリュームの子ノード(サブボリューム)の占有ステータスを示す。オクツリーの場合、8つの子ノード/サブボリュームが、存在する。動作3002において、近隣構成が、決定される。近隣構成は、占有パターンがコーディングされるべきボリュームの近隣に位置している1つ以上のボリュームの占有ステータスである。上で議論されるように、近隣構成を決定するための種々の可能な実装が、存在する。いくつかの例において、10個の近隣構成が、存在し、現在のボリュームに関する近隣構成は、現在のボリュームと面を共有する6つのボリュームの占有に基づいて識別される。
【0150】
動作3004において、現在のボリュームの子ノードに対するインデックスiが、0に設定される。次いで、動作3006において、コンテキスト低減が、可能であるかどうかに関する査定が、行われる。異なる可能なコンテキスト低減動作が、下でより詳細に議論される。コンテキスト低減が、可能であるかどうかの査定は、例えば、コーディングされているビットシーケンス内のビット(例えば、インデックス値)に基づき得る。ある場合、コンテキスト低減は、シーケンス内の後半のビットに関して可能であるが、最初の数ビットに関して可能ではないこともある。コンテキスト低減が、可能であるかどうかの査定は、例えば、ある近隣構成が、単純化を可能にし得るので、近隣構成に基づき得る。追加の因子が、いくつかの実装において、コンテキスト低減が、可能であるかどうかを査定することにおいて使用され得る。例えば、バイナリコーダがビットをコーディングするために使用し得るコンテキストの最大数として上境界Boが提供され得、ビットをコーディングするためのコンテキストの初期数がBoより大きい場合、コンテキスト低減が、低減後のコンテキストの数が最大でBoになるように適用される(そうでなければ、それは、適用されない)。そのような境界Boは、Bo個のコンテキストに対処することが可能なソフトウェアまたはハードウェア実装が、常時、コンテキストの数の観点からオーバーフローを発生させることなく点群をエンコードおよび/またはデコードすることが可能であろうことを確実にするために、エンコーダおよび/またはデコーダ仕様において定義され得る。事前に境界Boを把握することは、バイナリエントロピコーダによって誘発される複雑性およびメモリフットプリントを予測することも可能にし、したがって、ハードウェアの設計を促進する。Boに関する典型的な値は、10~数百である。
【0151】
コンテキスト低減が、利用可能であると決定される場合、動作3008において、コンテキスト低減動作が、適用される。コンテキスト低減動作は、利用可能なコンテキストの組内の利用可能なコンテキストの数を、より少ない合計コンテキストを含むより小さい組に低減させる。利用可能なコンテキストの数は、コンテキストが、ビットシーケンスからの以前にコーディングされたビットの部分的パターンに依存し得るので、部分的にシーケンス内のビット位置に依存し得ること、すなわち、インデックスに依存し得ることを思い返されたい。いくつかの実装において、低減前の組内の利用可能なコンテキストの数は、以前にコーディングされたビットを伴う可能な部分的パターンの数を乗算された近隣構成の数に基づき得る。インデックスiにおけるビットに関して、iが、0~nに及ぶ場合、部分的パターンの数は、2iによって与えられ得る。
【0152】
上記のように、いくつかの実装において、コンテキスト低減動作は、コーディングに先立って実行され、結果として生じる低減させられたコンテキスト組は、コーディング動作中のエンコーダおよびデコーダによる使用のために利用可能なコンテキスト組である。コーディング中の低減させられたコンテキスト組の使用および/または選択は、コンテキストの数が低減させられることが可能であることを決定するための動作3006において評価される条件に対応するそれらの低減させられた組の使用に先行する1つ以上の条件の評価に基づき得る。例えば、低減させられたコンテキスト組の使用を可能にする特定の近隣構成の場合、エンコーダおよび/またはデコーダは、近隣構成条件が満たされているかどうかを最初に決定し、次いで、該当する場合、対応する低減させられたコンテキスト組を使用し得る。
【0153】
動作3010において、ビットbiに関するコンテキストが、決定され、すなわち、ビットbiに関するコンテキストが、近隣構成と、ビットシーケンス内の以前にコーディングされたビットの部分的パターンとに基づいて、利用可能なコンテキストの組(または存在する場合、低減させられた組)から選択される。現在のビットは、次いで、動作3012において、選択されたコンテキストを使用して、バイナリコーダによってエントロピエンコーディングされる。
【0154】
動作3014において、インデックスiが、現在コーディングされているビットがシーケンス内の最後のビットである場合、すなわち、iが、imaxに等しいことを示す場合、コーディングプロセスは、次のノードに進む。そうでなければ、インデックスiは、動作3016において増加させられ、プロセスは、動作3006に戻る。
【0155】
いくつかの実装において、コンテキスト選択は、近隣構成に依存しないこともあることを理解されたい。ある場合、それは、存在する場合、シーケンス内の以前にコーディングされたビットの部分的パターンにのみ依存し得る。
【0156】
例示的エンコーダ3100の一部の簡略化ブロック図が、
図23に図示される。この図示において、対応するボリュームが子ノードに区画され、点群の幾何学形状を保持するFIFOバッファ3104を通して循環させられるにつれて占有パターン3102が取得されることを理解されたい。占有パターン3102のコーディングは、パターンの各ビットのために1つずつのバイナリコーダ3106のカスケードを伴うものとして図示される。利用可能なコンテキストを利用可能なコンテキストのより小さい組に低減させるように動作するコンテキスト低減動作3108が、バイナリコーダ3106のうちの少なくともいくつかの間にある。
【0157】
図23は、一連のバイナリコーダ3106を図示するが、いくつかの実装において、1つのみのバイナリコーダが、使用される。2つ以上のコーダが使用される場合、コーディングは、(部分的に)並列化され得る。ビットシーケンス内の先行するビットへの1つのビットのコンテキスト依存を所与として、パターンのコーディングは、必ずしも完全に並列化されることができないが、ある程度の並列化および速度改良を達成するために、あるパターンに関して、カスケーディングバイナリコーダを使用することを通してパイプライニングを改良することが、可能であり得る。
【0158】
(サブボリューム近隣構成に基づくコンテキスト決定)
上で、ビットシーケンス内の現在の占有ビットbiに関するコンテキスト(すなわち、エントロピコーディングのために使用されるであろうそれぞれのエントロピコーダに関連付けられる確率)は、近隣構成およびビットシーケンス内の以前にコーディングされたビットの部分的パターンに基づいて、利用可能なコンテキストの組(または存在する場合、低減させられた組)から決定されている(すなわち、選択されている)。現在のビットは、次いで、選択されたコンテキスト(確率)を使用して、バイナリコーダによってエントロピエンコーディングされる。加えて、または代替として、現在のノードの近隣ノードの(例えば、すでにコーディングされた占有近隣ノードの)子ノードの占有ステータスが、現在のノードのビットシーケンス内のビットbiをコーディングするためのコンテキスト(例えば、確率)を決定するために考慮されることができる。コンテキストを決定するために現在のノードの近隣ノードの子ノードの占有ステータスを考慮する実装は、次に説明されるであろう。
【0159】
いくつかの実装において、ビットシーケンスをエンコードまたはデコードする方法は、コンテキストを決定するために、現在のノードの近隣ノードの子ノードの占有ステータスの知識を使用し得る。すなわち、すでにコーディングされた占有近隣ノード(可能性として、全ての近隣ノードまたは全てのすでにコーディングされた近隣ノード)のサブノードの占有の知識が、現在のノードの占有ビットbiをコーディングするエントロピコーダを(可能性として、近隣構成N、例えば、10個に低減させられた構成N10と一緒に)駆動するために使用され得る。
【0160】
以下において、コンテキストを決定するために、現在のノードの近隣ノードの子ノードの占有ステータスの知識を使用するビットシーケンスをエンコードまたはデコードする方法が、限定を意図することなく、オクツリーと、オクツリーのノードに関連付けられたボリュームとしての立方体とを参照して説明されるであろう。
【0161】
ここで、現在のノード(すなわち、その関連付けられたボリュームまたは現在のボリューム)4000と、その6つの近隣4010、4020、4030、4040、4050、および4060とを示す
図27が、参照される。オクツリーのこの例に関して、現在のノードの近隣は、その関連付けられたボリュームが現在のボリュームと面を共有する(ツリーの同じレベルまたは深度における)それらのノードとして定義され得る。互いに面を共有するボリュームは、互いに触れているボリュームとも称され得る。近隣ノードの他の定義も、同様に実行可能である。例えば、現在のノードの近隣は、その関連付けられたボリュームが、現在のボリュームと縁(または頂点)を共有する(ツリーの同じレベルまたは深度における)それらのノードであり得る。一般に、ツリー構造にかかわらず、近隣ノードは、その関連付けられたボリュームが、現在のボリューム(例えば、少なくともある所定の空ではない組における)と交差する(ツリーの同じレベルまたは深度における)それらのノードであり得る。
【0162】
本願の文脈において、互いに交差するボリューム(ノード)は、隣接するボリューム(ノード)であることを理解されたい。故に、用語「~との交差を有する」および「~に隣接する」は、本願の文脈において同義と見なされ得る。
【0163】
着目すべきこととして、表現「ボリューム」と「サブボリューム」とは、各サブボリューム自体がサブボリュームに細分化され得るボリュームであるという意味で、若干同義的に使用され得る。いずれの場合も、ボリューム/サブボリューム関係は、関与するノード/ボリューム間の親子関係の規定によって明確であると理解される。
【0164】
ノードの走査順序は、幅優先で、増加するX順に、次いで、増加するY順に、最後に、増加するZ順に実施されると仮定される。そうすることによって、最も低いX座標(すなわち、近隣4010)、最も低いY座標(すなわち、近隣4030)、および最も低いZ座標(すなわち、近隣4050)を有する3つの近隣が、すでにコーディングされている。したがって、これらの3つの近隣のうちの1つが、占有されている場合、占有近隣に関連付けられた占有サブボリュームの構成が、既知である。この例は、増加するX順、次いで、増加するY順、最後に、増加するZ順における走査順序を定義するが、他の幅優先走査順序も、この目的のために使用されることができる。使用される特定の幅優先走査順序にかかわらず、3つの近隣は、3D空間の境界に位置しない現在のノードに関してすでにコーディングされているであろう。
【0165】
ここで、全ての3つのすでにコーディングされた近隣(すなわち、近隣4010、4030、および4050)が占有されている例示的現在のボリュームを示す
図28が、参照される。近隣4010の占有サブボリュームは、サブボリューム4011、4012、および4013であり、近隣4030の占有サブボリュームは、サブボリューム4031、4032、および4033であり、近隣4050の占有サブボリュームは、サブボリューム4051および4052である。この例において、全ての3つのすでにコーディングされた近隣が、占有されているが、一般に、それらのうちの2つまたは1つのみが、実際に占有されていことも、さらにはそれらのうちのいずれも、実際に占有されないこともあることを理解されたい。
【0166】
すでにコーディングされた占有近隣の占有サブボリュームの知識は、サブボリューム近隣構成の組(例えば、現在のボリュームの各サブボリュームに関して1つ)を定義するために使用されることができる。サブボリューム近隣構成は、現在のボリュームのビットシーケンスのビットbiをエントロピコーディングするためのコンテキスト(例えば、それぞれのバイナリエントロピコーダに関連付けられる確率)を選択するための基準として使用されることができる。現在のボリュームの所与のサブボリュームに関するサブボリューム近隣構成を決定することは、すでにコーディングされている現在のボリュームのそれらの近隣ボリュームのサブボリュームに関する占有データに基づき得る。さらに、現在のボリューム内の所与のサブボリュームのサブボリューム近隣構成は、所与のサブボリュームの近隣に位置している所与のボリュームの近隣(すでにコーディングされた)ボリューム内の全てのそれらのサブボリュームの占有のパターンに対応し得る。
【0167】
ここで、圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法4100の例をフローチャート形態において示す
図29が、参照される。点群は、親子関係を有する複数のノードを有するツリー構造において定義され、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割される。ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有する。下で説明される方法4100の動作の各々は、サブボリュームに分割された現在のボリュームに関連付けられた現在のノードに関して実施され、各サブボリュームは、現在のノードの子ノードに対応する。動作4110において、現在のボリュームのサブボリュームの占有を示すビットシーケンスが、決定される。次いで、現在のボリュームのビットシーケンス内の少なくとも1つのビットに関して、以下の動作が、実施される。動作4120において、サブボリューム近隣構成が、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて決定される。サブボリューム近隣構成は、現在のボリュームの所与のサブボリュームの近隣に位置している少なくとも1つの近隣ボリュームのサブボリュームのグループの占有パターンに依存する。現在のボリュームの所与のサブボリュームは、ビットシーケンス内のビットに対応するそのサブボリュームである。例えば、ビットシーケンスのビットb
iに関して、所与のサブボリュームは、該ビットb
iに対応する現在のボリュームのそのサブボリュームであり、すなわち、所与のサブボリュームは、ビットb
iが占有ステータスを示すそのサブボリュームである。サブボリューム近隣構成は、次いで、現在のボリュームの考慮されるサブボリュームに関して決定される。着目すべきこととして、動作4120は、ビットシーケンスのビットのうちのいずれか、いくつか、または全てに関して実施され得る。動作4130において、ビットシーケンス内のビットのエントロピエンコーディングにおける使用のための確率(例えば、コンテキスト)が、選択される。ここにおいて、選択することは、少なくとも部分的にビットシーケンス内のビットに対応するサブボリュームに関して決定されているサブボリューム近隣構成に基づく。動作4140において、ビットシーケンス内のビットは、ビットストリームに関するエンコードされたデータを生成するために、バイナリエントロピエンコーダを使用して、選択された確率(例えば、コンテキスト)に基づいて、エントロピエンコーディングされる。
【0168】
いくつかの実装において、方法4100はさらに、選択された確率(例えば、コンテキスト)を更新する動作(
図29に図示せず)を含み得る。
【0169】
上で説明されているように、現在のノードの占有パターンは、1つ以上のバイナリエントロピコーダのカスケードを使用して、エントロピコーディングされ得る。故に、方法4100の動作4130は、ビットシーケンスの少なくとも1つのビットに関して、少なくとも部分的にエントロピコーディングされるべきビットに対応するサブボリュームに関して決定されているサブボリューム近隣構成に基づいて、そのビットをコーディングするためのそれぞれの確率(および対応して、関連付けられたエントロピコーダ)を選択することを伴い得る。加えて、この確率を選択することは、ビットシーケンスのすでにコーディングされたビットの部分的シーケンスおよび/または現在のボリュームに関する近隣構成に基づき得る。換言すると、ビットシーケンスの各ビットのために、コンテキストが、サブボリューム近隣構成に基づいて選択され得、加えて、コンテキストを選択することは、ビットシーケンスのすでにコーディングされたビットの部分的シーケンスおよび/または現在のボリュームに関する近隣構成に基づき得る。コンテキストの観点から、方法4100の動作4130は、少なくとも部分的にコーディングされるべきビットに対応するサブボリュームに関して決定されているサブボリューム近隣構成に基づいて、ビットをエントロピコーディングするためのコンテキストを選択することに関すると考えられ得る。次いで、いくつかの実装において、このコンテキストは、動作4140後に更新され得る。
【0170】
ここで、再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法4200の例をフローチャート形態において示す
図30が、参照される。点群は、親子関係を有する複数のノードを有するツリー構造(例えば、オクツリー)において定義され、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含む。ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有する。下で説明される方法4200の動作の各々は、各サブボリュームが、現在のノードの子ノードに対応するサブボリュームに分割された現在のボリュームに関連付けられた現在のノードに関して、かつ現在のボリュームのビットシーケンス内の少なくとも1つのビットに関して実施される。動作4210において、サブボリューム近隣構成が、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて決定される。サブボリューム近隣構成は、現在のボリュームの所与のサブボリュームの近隣に位置している少なくとも1つの近隣ボリュームのサブボリュームのグループの占有パターンに依存し、所与のサブボリュームは、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームである。例えば、ビットシーケンスのビットb
iに関して、所与のサブボリュームは、該ビットb
iに対応する現在のボリュームのそのサブボリュームであり、すなわち、所与のサブボリュームは、ビットb
iが占有ステータスを示す考慮されるそのサブボリュームである。サブボリューム近隣構成は、次いで、現在のボリュームの考慮されるサブボリュームに関して決定される。着目すべきこととして、動作4120は、ビットシーケンスのビットのうちのいずれか、いくつか、または全てに関して実施され得る。動作4220において、ビットシーケンス内のビットのエントロピデコーディングにおける使用のための確率(例えば、コンテキスト)が、選択される。この選択することは、少なくとも部分的にサブボリューム近隣構成に基づく。動作4230において、該少なくとも1つのビットは、ビットストリームから再構成されたビットを生成するために、バイナリエントロピデコーダを使用して、選択された確率(例えば、コンテキスト)に基づいて、エントロピデコーディングされる。
【0171】
いくつかの実装において、方法4200は、選択された確率(例えば、コンテキスト)を更新する動作(
図30に図示せず)をさらに含み得る。
【0172】
エンコーディングに関するものと同じ様式で、方法4200の動作4220は、占有パターンを表すビットシーケンスの少なくとも1つのビットに関して、少なくとも部分的にエントロピコーディングされるべきビットに対応するサブボリュームに関して決定されているサブボリューム近隣構成に基づいて、そのビットをコーディングするためのそれぞれの確率(および対応して、関連付けられたエントロピコーダ)を選択することを伴い得る。加えて、この確率を選択することは、ビットシーケンス内のすでにコーディングされたビットの部分的シーケンスおよび/または現在のボリュームに関する近隣構成に基づき得る。換言すると、ビットシーケンスの各ビットのために、コンテキストが、サブボリューム近隣構成に基づいて選択され得、加えて、コンテキストを選択することは、ビットシーケンス内のすでにコーディングされたビットの部分的シーケンスおよび/または現在のボリュームに関する近隣構成に基づき得る。コンテキストの観点から、方法4200の動作4220は、少なくとも部分的にコーディングされるべきビットに対応するサブボリュームに関して決定されているサブボリューム近隣構成に基づいて、ビットをエントロピコーディングするためのコンテキストを選択することに関すると考えられ得る。次いで、いくつかの実装において、このコンテキストは、動作4230後に更新され得る。
【0173】
サブボリューム近隣構成を決定する例が、本明細書の下で説明されるであろう。
【0174】
いくつかの実装において、それは、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて、ビットシーケンス内のビットに対応する現在のボリュームのサブボリュームの近隣に位置している少なくとも1つの近隣ボリュームの(可能性として、全ての近隣ボリュームまたは全てのすでにコーディングされた近隣ボリュームの)サブボリュームの数を決定することを伴い得る。この数は、下記でNT[i]と称され、iは、現在のボリュームのサブボリューム(またはビットシーケンス内の対応するビットbi)を示すインデックスである。この意味で、方法4100の動作4130および方法4200の動作4220における確率を選択することは、少なくとも部分的に数NT[i]に基づいて確率を選択することに関すると考えられ得る。
【0175】
いくつかの実装において、サブボリューム近隣構成を決定することは、閾値関数を決定された数NT[i]に適用することをさらに伴い得る。
【0176】
8つのサブボリューム(サブノード)SB0-SB7への現在のボリューム(現在のノード)Bの分割の例を示す
図31が、参照される。この例に関して、近隣ボリュームは、互いに面を共有する(すなわち、互いに「触れている」)ボリュームとして定義される。現在のボリュームBのサブボリューム(または子ボリューム)の各々は、現在のボリュームの近隣の3つのサブボリュームの近隣に位置している(それによって触れられている)。各サブボリュームSB0-SB7(SBi,i=0,・・・,7)に関するサブボリューム近隣構成は、現在のボリュームのそれぞれのサブボリュームSBiに触れているサブボリュームのグループの占有パターンに依存し得る。現在のボリュームの占有近隣の占有パターンに応じて、現在のボリュームの占有近隣の最大3つの占有サブボリュームが、それぞれのサブボリュームSBiの近隣に位置し得る(またはそれに触れ、触れていること/近隣に位置していることは、面を共有することとして定義される)。
【0177】
近隣ボリュームの上記の定義を使用する現在のボリュームの所与のサブボリュームSBiに関するサブボリューム近隣構成を決定する一例示的プロセスは、それぞれのサブボリュームSBiに触れている現在のボリュームの近隣内のサブボリュームの数0≦NT[i]≦3を決定することを伴う。換言すると、現在のボリュームのサブボリュームSBiに関する数NT[i]は、サブボリュームSBiの近隣に位置している(それに触れている、すなわち、それと面を共有する)、現在のボリュームの近隣内の占有サブボリュームの数を示す。
【0178】
上記の定義によって、現在のボリュームのサブボリュームSBiに関する整数0≦NT[i]≦3は、現在のボリュームの(すでにコーディングされた)近隣内に位置し、面においてサブボリュームSBiと交差する(すなわち、サブボリュームSBiに触れている)占有サブボリューム(子ノード)の数である。
【0179】
好ましい実装において、近隣は、現在の立方体と面を共有する6つの近隣であり、占有近隣の子ノードは、それらの面のうちの1つが、サブノードSBiに関連付けられた立方体の面内に含まれる場合(すなわち、占有近隣の子ノードが、面においてサブノードSBiと交差する場合)、かつその場合にのみ、サブノードSBiの近隣に位置していると考えられる。それにもかかわらず、本願が、オクツリーの前述の実装、および、その関連付けられたボリュームが、現在の同じレベルのノードの関連付けられたボリュームと面を共有するノードとしての近隣の定義に限定されないことを理解されたい。実際に、本願は、点群の幾何学形状を表す任意のツリーに関する。さらに、現在のノードの近隣は、概して、現在のノードと(ツリーのルートノードに対して)同じ深度またはレベルにあり、その関連付けられたボリュームが、(例えば、少なくとも所定の空ではない組における)現在のノードのボリュームと交差するノードとして定義され得る。ノードに関連付けられたボリュームが、立方体であるツリー(例えば、オクツリー等)において、この交差は、面、縁、頂点、または点の任意の空ではない組であり得る。
【0180】
同様に、現在のノードの近隣の占有子ノードは、子ノードに関連付けられたボリュームとサブノードSBに関連付けられたボリュームとの交差が点の空ではない組である場合、現在のノードBのサブノードSBと交差すると考えられる。再び、ノードに関連付けられたボリュームが、立方体であるツリー(例えば、オクツリー等)において、この交差は、面、縁、頂点、または点の任意の空ではない組であり得る。
【0181】
近隣に関する近隣定義と近隣の子ノードに関する近隣定義とが異なり得ることも理解されたい。例えば、オクツリーにおいて、近隣は、現在のノードと面を共有するノードとして定義され得、したがって、6つの近隣につながる;しかしながら、数NT[i]は、サブノードSBiと少なくとも縁を共有するすでにコーディングされた占有近隣の子ノードの数をカウントし得る。それにもかかわらず、好ましい実装は、近隣および近隣の子ノードの両方に関して「~と面を共有する」としての交差の定義を使用し得る。
【0182】
上記のように、近隣ノードまたはボリュームの異なる定義が、本願の文脈において使用され得る。近隣定義に応じて、数NT[i]に関する可能な範囲は、0≦NT[i]≦3(近隣ボリュームが面を共有するか、または、「触れている」ボリュームとして定義される場合に適用される)と異なるであろう。例えば、近隣ボリュームが、少なくとも縁において互いに交差するボリュームとして定義される場合、0≦NT[i]≦12を有するであろう。同様に、近隣ボリュームが、少なくとも頂点において互いに交差するボリュームとして定義される場合、0≦T[i]≦19を有するであろう。
【0183】
上記のように、現在のボリュームの占有近隣の占有パターンに応じて、現在のボリュームの占有近隣の最大3つの占有サブボリュームが、近隣ボリュームが面を共有するボリュームである近隣定義を使用して、それぞれのサブボリューム(サブノード)SBiの近隣に位置し得る。
図32は、現在のノードBのサブノードSB0に関して、
図27を参照して上で説明される走査順序を仮定して、サブノードSB0に関連付けられたサブボリュームの近隣に位置し得る(すなわち、面においてサブノードSB0に関連付けられたサブボリュームと交差し得る)近隣ノードの最大3つの占有子ノードが、存在することを示す。8つの可能な占有子ノード構成と、0、1、2、または3のいずれかである関連付けられる値NT[0]とが、図に描写される。
【0184】
図33は、現在のノードBのサブノードSB1に関して、サブノードSB1に関連付けられたサブボリュームの近隣に位置し得る(すなわち、面において交差する)近隣ノードの最大2つの占有子ノードが、存在することを示す。4つの可能な占有子ノード構成と、0、1、または2のいずれかである関連付けられる値NT[1]とが、図に描写される。
【0185】
図34は、現在のノードBのサブノードSB3に関して、サブノードSB3に関連付けられたサブボリュームの近隣に位置し得る(すなわち、面において交差する)近隣ノードの最大1つの占有子ノードが、存在することを示す。2つの可能な占有子ノード構成と、0または1のいずれかである関連付けられる値NT[3]とが、図に描写される。
【0186】
図35は、現在のノードBのサブノードSB7に関して、サブノードSB7に関連付けられたサブボリュームの近隣に位置し得る(すなわち、面において交差する)近隣ノードのいかなる占有子ノードも、存在しないことを示す。したがって、図に描写されるような1つのみの可能な占有子ノード構成が、存在し、すなわち、NT[7]の値は、必然的に0である。この場合、子ノードは、サブノードSB7の占有情報のコーディングにおいて、コンテキスト決定のためのいかなる特別な情報も提供しない。
【0187】
数NT[i]が、現在のノードのサブノードSBiに関して決定されると、サブボリューム近隣構成値C[i]が、閾値関数を適用することによってNT[i]から決定され得る。閾値関数は、ある閾値までのその入力値を出力し、閾値を超える入力値に関して閾値を出力する関数であり得る。例えば、閾値は、2に設定され得、したがって、
・NT(i)=0である場合、C[i]=0
・NT(i)=1である場合、C[i]=1
・NT(i)>=2である場合、C[i]=2
この閾値化動作において、C[0]に関する可能な値は、0、1、または2を含む一方、C[7]は、常時、0である。他の閾値化動作および閾値関数も、同様に実行可能であることを理解されたい。特に、他の近隣定義に関して、数NT[i]に関する値範囲は、0≦NT[i]≦3と異なり、異なる閾値が、適用され得る。
【0188】
そして、方法4100の動作4130および方法4200の動作4220における確率(例えば、コンテキスト)を選択することは、少なくとも部分的にサブボリューム近隣構成値C[i]に基づいて確率を選択することに関し得る。この意味で、サブボリューム近隣構成値C[i]は、サブボリューム近隣構成に対応すると考えられ得る。
【0189】
ここで、現在のボリュームのサブボリュームに関する数NT[i]およびサブボリューム近隣構成値C[i]を決定する方法4300の一例をフローチャート形態において示す
図36が、参照される。すなわち、方法4300は、現在のボリュームのサブボリュームに対して動作する。動作4310において、数NT[i]が、現在のボリュームの全てのサブボリュームに関してゼロに初期化される。次いで、動作4320において、現在のボリュームの近隣が、選択される。動作4330において、選択された近隣が占有されているかどうかが、チェックされる。選択された近隣が、占有されている(動作4330において「はい」である)場合、方法は、動作4340に進む。動作4340において、選択された占有近隣がすでにコーディングされているかどうかが、チェックされる。該当する(動作4340において「はい」である)場合、方法は、動作4350に進む。動作4350において、近隣の各占有子ノード(サブボリューム)に関して、その子ノードの近隣に位置している(近隣定義に応じて、例えば、少なくとも所定の空ではない組において交差される)現在のボリュームのサブボリュームが、決定される。子ノードの近隣に位置している現在のボリュームの各サブボリュームに関して、対応する数NT[i]が、1つ増加させられる。続けて、方法は、動作4360に進む。選択された近隣が占有されていない(動作4330において「いいえ」である)か、または、まだコーディングされていない(動作4340において「いいえ」である)場合、方法は、同様に動作4360に進む。動作4360において、まだ選択されていない現在のボリュームの近隣が存在するかどうかが、チェックされる。該当する(動作4360において「はい」である)場合、方法は、現在のボリュームの次の近隣を選択するために動作4320に戻る。全ての近隣が、処理されると(動作4360において「いいえ」である)、サブボリューム近隣構成値C[i]が、動作4370において、現在のボリュームの各サブボリュームに関して計算される。これは、閾値関数を適用することを伴い得る。次いで、動作4380において、ビットシーケンスのそれぞれのビットb
iが、サブボリューム近隣構成値C[i]に基づいて、かつ可能性として、ビットシーケンス内のすでにコーディングされたビットの部分的シーケンスおよび/または(低減させられた)近隣構成に基づいて、確率(例えば、コンテキスト)を使用して、エントロピコーディングされ得る。
【0190】
代替実装において、現在のボリュームの近隣に対するループの代わりに、現在のボリュームのサブボリュームSBiに対する(または同等に、インデックスiに対する)ループが、実施され得る。次いで、各サブボリュームSBiに関して、すでにコーディングされた近隣の占有子ノードが、それらがサブボリュームSBiの近隣に位置している(例えば、少なくとも所定の空ではない組において交差する)かどうかに関して試験され、NT[i]が、サブボリュームSBiの近隣に位置しているそのような子ノードの数として取得される。
【0191】
NT[i]の上記の決定において、現在のボリュームのサブボリュームの全ての近隣は、該サブボリュームとのそれらの交差にかかわらず、等しく扱われる。いくつかの実装において、異なる重みが、当該サブボリュームとの異なる交差を伴う近隣に適用され得る。例えば、より広範な近隣定義を適用すると、当該サブボリュームと面を共有する近隣サブボリュームは、当該サブボリュームと縁(のみ)を共有する近隣サブボリュームより高い重みを有し得、次に、当該サブボリュームと頂点(のみ)を共有する近隣サブボリュームより高い重みを有し得る。これらの異なる重みは、次いで、重み付きの数NT’[i]を決定するときに適用されることができ、当該サブボリュームの各近隣は、重み付きの数NT’[i]につながる合計において、そのそれぞれの重みを伴ってカウントされる。
【0192】
故に、方法4100の動作4120および方法4200の動作4210におけるサブボリューム近隣構成を決定することは、現在のボリュームの少なくとも1つの近隣ボリュームのサブボリュームに関する占有データに基づいて、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームと交差する少なくとも1つの近隣ボリュームの(可能性として、全ての近隣ボリュームまたは全てのすでにコーディングされた近隣ボリュームの)全てのそれらのサブボリュームを決定することを伴い得る。さらに、それぞれの重み係数が、決定されたサブボリュームに適用され得る。各重み係数は、それぞれの決定されたサブボリュームと、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームとの交差に依存し得る。例えば、面において当該サブボリュームと交差するサブボリュームは、最も高い重みを有し得、縁において(のみ)当該サブボリュームと交差するサブボリュームは、中間の重みを有し得、頂点において(のみ)当該サブボリュームと交差するサブボリュームは、最も低い重みを有し得る。いくつかの実装において、3つの近隣定義のうちの2つのみが、考慮され得る(これは、事実上、第3の近隣定義の近隣に関する重み係数をゼロに設定することに対応する)。例えば、面、および縁、および頂点においてサブボリュームと交差するサブボリュームに適用されるそれぞれの重み係数は、それぞれ、2、1、および0に設定され得る。
【0193】
そして、サブボリューム近隣構成を決定することは、決定されたサブボリュームおよびそれらのそれぞれの重み係数に基づいて、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームと交差する少なくとも1つの近隣ボリュームのサブボリュームの重み付きの数NT’[i]を決定することをさらに伴い得る。すなわち、ビットシーケンス内のビットに対応する現在のボリュームのそのサブボリュームと交差する少なくとも1つの近隣ボリュームの決定されたサブボリュームにわたって合計するとき、各決定されたサブボリュームは、そのそれぞれの重み係数を伴ってカウントされ得る。さらに、閾値化が、重み付きのサブボリューム近隣構成値C’[i]を取得するために、重み付きの数NT’[i]に適用され得る。
【0194】
いくつかの実装において、ビットシーケンス内の所与の占有ビットbiをコーディングするバイナリエントロピコーダに関連付けられる確率(例えば、コンテキスト)は、以下の値に応じて選定され得る。
・b0,・・・,bi-1
・N10
・C[i]
すなわち、決定されると、サブボリューム近隣構成値C[i](または重み付きのサブボリューム近隣構成値C’[i])は、現在のノードBのサブノードSBiに関連付けられた占有ビットbiをコーディングするエントロピコーダへの入力として使用され得る。
【0195】
(コンテキスト低減動作)
上記の例は、コーディングプロセスが、利用可能なコンテキストの組を利用可能なコンテキストのより小さい組に低減させるように、占有パターンの少なくとも1つのビットに関するコンテキスト低減動作を含むことを提案している。この意味で、「コンテキスト低減動作」は、特定のビットbiの状況において重複または冗長と見なされ得るコンテキストを識別し、合併整理するものとして理解され得る。上記のように、低減させられたコンテキスト組は、コーディングの前に決定され得、エンコーダおよびデコーダに提供され得、エンコーダおよびデコーダは、コンテキスト組を低減させるための下で説明される同じ条件に基づいて、低減させられたコンテキスト組を使用するかどうかを決定する。
【0196】
(スクリーニング/シールディングを通した近隣構成低減)
第1の例示的コンテキスト低減動作は、スクリーニング/シールディングに基づいて、近隣構成の数を低減させることを伴う。原則として、近隣構成は、現在のボリュームまたはサブボリュームが占有されている可能性が高いかどうかを示すことに近隣ボリュームが役立つことに基づいて、近隣ボリュームの占有ステータスをコンテキスト選択プロセスに組み込む。現在のボリューム内のサブボリュームに関連付けられたビットがデコードされるにつれて、それらも、コンテキスト選択に組み込まれるが、しかしながら、近傍のサブボリュームからの情報は、現在のサブボリュームからのサブボリュームの他方の側に位置する近隣ボリュームの占有情報より有意かつ有益であり得る。この意味で、以前にデコードされたビットは、近隣ボリュームを「スクリーニング」または「シールディング」するサブボリュームに関連付けられる。これは、そのような状況において、近隣ボリュームの占有が、その占有ステータスの関連性が現在のサブボリュームと近隣ボリュームとの間のサブボリュームの占有ステータスによって包含されるので、無視されることが可能であり、それによって、近隣構成の数の低減を可能にすることを意味し得る。
【0197】
ここで、近隣スクリーニングに基づく例示的コンテキスト低減動作を図式的に示す
図24が、参照される。例は、ボリューム3200に関する占有パターンをコーディングすることを伴う。占有パターンは、ボリューム3200内の8つのサブボリュームの占有ステータスを示す。この例において、ボリューム3200の上半分における4つのサブボリュームは、コーディングされており、したがって、それらの占有ステータスは、把握されている。コーディングされている占有パターンのビットは、4つの以前にコーディングされたサブボリュームの下方にあるボリューム3200の下半分に位置する第5のサブボリューム3204に関連付けられている。
【0198】
この例におけるコーディングは、近隣構成に基づいて、コンテキストを決定することを含む。10個の近隣構成3202が、示される。コーディングされるべき第5のサブボリューム3204を含むボリューム3200は、薄い灰色で示され、参照番号3200によって示される。近隣構成3202は、ボリューム3200に隣接し、それと面を共有するボリュームの占有ステータスに基づく。近隣ボリュームは、上部近隣ボリューム3206を含む。
【0199】
この例において、近隣構成の数は、構成のうちの少なくともいくつかにおける上部近隣ボリューム3206を無視することによって、10から7に低減させられることができる。
図24に示されるように、上部近隣ボリューム3206が示される4つの構成のうちの3つは、上部近隣ボリューム3206を組み込まない同等の構成下に包含され、それによって、近隣構成の数を合計7つに低減させることができる。全ての6つの近隣ボリュームを示す構成を保つことが、依然として有利であり得る。何故なら、6ボリューム構成が合併整理されることが可能ないかなる既存の5ボリューム近隣構成も、存在せず(5要素のものを排除している)、上部近隣ボリュームが除去される場合であっても、新しい5要素近隣構成が、結果として生じ、コンテキストにおけるいかなる全体的低減も生じないことをそれが意味するからである。
【0200】
上部近隣ボリューム3206は、第5のサブボリューム3204に関連付けられた占有ビットのコーディングのためのコンテキスト決定が、それの直上の4つの以前にコーディングされたサブボリュームの占有ステータスをすでに考慮しており、それは、より遠い上部近隣ボリューム3206の占有ステータスより良好な第5のサブボリュームに関する占有の可能性および方向性の指示であるので、この例において、近隣構成から排除されることができる。
【0201】
第5のサブボリューム3204に対応する占有ビットをコーディングするとき、上部近隣ボリューム3206が、以前にコーディングされたサブボリュームによってスクリーニングまたはシールディングされる上記の例は、一例にすぎない。ボリューム3200内のコーディング順序に応じて、いくつかの他の可能なスクリーニング/シールディング状況が、実現され、利用可能な近隣構成を低減させるために活用され得る。
【0202】
ここで、スクリーニング/シールディングの第2の例を示す
図25が、参照される。この例において、ボリューム3200に関する占有パターンは、ほぼ完全にコーディングされている。コーディングされるべきサブボリュームは、第8のサブボリュームであり、図の後方の下の隅に隠れている(不可視)。この場合、全ての7つの他のサブボリュームの占有ステータスは、コーディングされている。特に、上部に沿った(したがって、近隣構成における合計7つへの低減)、かつ右側および前側に沿ったサブボリュームである。故に、上部近隣ボリュームをスクリーニングすることに加えて、以前にコーディングされた占有ビットを伴うサブボリュームは、前側近隣ボリューム3210および右側近隣ボリューム3212をシールディングする。これは、図示されるように、合計7つから合計5つへの近隣構成の低減を可能にし得る。
【0203】
シールディングの2つの前述の例は、例証的であり、ある場合、異なる構成が、異なるシールディング状況を考慮するために合併整理され得ることを理解されたい。以前にコーディングされたサブボリュームによるシールディング/スクリーニングに基づくコンテキスト低減動作は、一般的であり、これらの2つの例に限定されないが、それがコーディングされるべき第1のサブボリュームの場合、適用されることができないことを理解されたい。何故なら、それが、任意のシールディング/スクリーニングがあるために、近傍サブボリュームに関連付けられた少なくとも1つの以前にコーディングされた占有ビットが存在することを要求するからである。
【0204】
近隣構成低減を正当なものにするためのシールディング/スクリーニングの程度が異なる実装において異なり得ることも理解されたい。2つの上記例において、近隣ボリュームと面を共有する全ての4つのサブボリュームは、その近隣ボリュームがシールディング/スクリーニングされていると見なされる前に以前にコーディングされており、したがって、それらは、近隣構成から除去された。他の例において、部分的シールディング/スクリーニングが、例えば、面を共有する1~3つの以前にコーディングされたサブボリュームから十分であり得る。
【0205】
(特別な事例の取り扱いを通したコンテキスト低減)
コンテキスト低減が、有用な情報の損失を伴わずに行われ得るある事例が、存在する。上で説明される例示的コンテキスト決定プロセスにおいて、占有ビットをコーディングするためのコンテキストは、近隣構成、すなわち、現在のボリュームの近隣に位置しているボリュームの占有のパターンと、以前にコーディングされた現在のボリューム内のサブボリュームの占有に起因する部分的パターンとに基づく。その後者の条件は、占有パターンビットシーケンス内の第8のビットに関して、追跡すべき27=128個のコンテキストをもたらす。近隣構成が、合計5つに低減させられる場合であっても、それは、追跡すべき640個のコンテキストを意味する。
【0206】
コンテキストの数は、ビットシーケンスの以前にコーディングされたビットが、ある順序を有し、その順序が、コンテキストを査定することにおいて関連するという事実に基づいて、多い。しかしながら、ある場合、順序は、有用な情報を含まないこともある。例えば、近隣構成が、空である、すなわち、N10=0である場合、ボリューム内の任意の点は、低密度に取り込まれていると推定され、それらが兄弟サブボリューム内の占有の異なるパターンに関する別個のコンテキスト追跡を正当なものにするために十分に強い方向性を有していないことを意味し得る。空の近隣の場合、点群へのいかなる局所的配向またはトポロジも、存在せず、ビットシーケンスの以前にコーディングされたビットに基づく2j個の条件は、j+1個の条件に低減させられ得ることを意味する。すなわち、ビットシーケンスのビットのうちの1つをコーディングするためのコンテキストは、以前にコーディングされたビットに基づくが、それらの順序付けられたパターンではなく、それらの合計だけに基づく。言い換えると、この特別な事例におけるエントロピ表現は、以下のように表され得る。
H(b|n)≒H(b0|0)H(b1|0,b0)H(b2|0,b0+b1)・・・H(b7|0,b0+b1+・・・+b6)
【0207】
いくつかの実装において、類似する観察が、完全近隣構成に関して行われ得る。いくつかの例において、完全近隣構成は、方向性を欠き、以前にコーディングされたビットの順序が、コンテキストを決定することにおいて考慮される必要がないことを意味する。いくつかの例において、このコンテキスト低減動作は、シーケンス内の後半のビットのうちのいくつか等のビットシーケンス内のビットのうちのいくつかのみに適用され得る。ある場合、後半のビットへのこのコンテキスト低減動作の適用は、以前にコーディングされたサブボリュームに関連付けられた前半のビットも、全て占有されていると決定することを条件とし得る。
【0208】
(統計ベースのコンテキスト低減)
統計的分析が、ほぼ同じ統計的挙動につながるものを決定し、次いで、それらを組み合わせることを通して、コンテキストを低減させるために使用され得る。この分析は、低減させられたコンテキスト組を開発するために、試験データを使用して先験的に実施され得、低減させられたコンテキスト組は、次いで、エンコーダおよびデコーダの両方に提供される。ある場合、分析は、特定の点群データに関するカスタム低減コンテキスト組を開発するために、2パスコーディングを使用して、現在の点群に対して実施され得る。いくつかのそのような場合、非低減コンテキスト組からカスタム低減コンテキスト組へのマッピングが、ビットストリームにコーディングされた専用シンタックスを使用することによって、デコーダに示され得る。
【0209】
2つのコンテキストが、「距離」の概念を通して比較され得る。第1のコンテキストcは、ビットbがゼロに等しい確率pを有し、第2のコンテキストc’は、ビットb’がゼロに等しい確率p’を有する。cとc’との間の距離は、以下によって与えられる。
d(c,c’)=|plog2p-p’log2p’|+|(1-p)log2(1-p)-(1-p’)log2(1-p’)|
【0210】
類似性(距離)のこの測定を使用して、コンテキストは、次いで、以下等のプロセスにおいてグループ化され得る。
【0211】
1.M1コンテキストから開始し、閾値レベルεを固定する。
【0212】
2.所与のコンテキストに関して、所与のコンテキストから閾値レベルεより低い距離を有する全てのコンテキストをあるクラスに再グループ化する。
【0213】
3.全てがあるクラスに投入されるまで、全ての再グループ化されていないコンテキストに関して2を繰り返す。
【0214】
4.1~M2のM2個のクラスを標識化する:これは、{1,2,・・・,M1]→[1,2,・・・,M2]にマッピングする総当たり低減関数をもたらし、M1≧M2である。
【0215】
コンテキストの組をコンテキストのより小さい組にマッピングするための総当たり低減関数は、コーディング中のコンテキスト低減動作としてエンコーダ/デコーダによって適用されるようにメモリ内に記憶され得る。マッピングは、ルックアップテーブルまたは他のデータ構造として記憶され得る。総当たり低減関数は、例えば、ビットシーケンス(パターン)内の後半のビットのためにのみ適用され得る。
【0216】
(コンテキスト低減動作の組み合わせおよび副次的組み合わせ)
3つの例示的コンテキスト低減動作が、上で説明されている。それらの各々は、いくつかの実装において、個々に、かつ独立して適用され得る。それらのうちのいずれか2つ以上が、いくつかの実装において、組み合わせられ得る。追加のコンテキスト低減動作が、単独で、または上で説明されるコンテキスト低減動作のうちのいずれか1つ以上と組み合わせて実装され得る。
【0217】
図26は、組み合わせられたコンテキスト低減を伴う占有パターンバイナリコーディングの方法3300の一例をフローチャート形態において示す。方法3300は、{0,1,2,・・・,9}における10要素近隣構成N
10を所与として、8ビットバイナリパターンb
0,b
1,・・・,b
7をコーディングする。評価される最初の条件は、近隣構成が、空であるかどうか、すなわち、N
10=0であるかどうかである。該当する場合、ビットは、参照番号3302によって示されるように、それらの順序を参照することなくコーディングされる。該当しない場合、ビットは、ビットb
4まで通常通りにコーディングされ、その時点において、エンコーダおよびデコーダは、総当たりコンテキスト低減関数BR
iを適用し始め、近隣構成および以前にコーディングされたビットの部分的パターンによって定義されたコンテキストの組を実質的に類似する統計的成果を有するコンテキストのより小さい組にマッピングすることによって、コンテキストの数を低減させる。
【0218】
この例において、最後の2つのビットb6およびb7は、シールディング/スクリーニングに基づいて、低減させられた近隣構成を使用してコーディングされる。
【0219】
全ての関数は、コンテキストの組のサイズを低減させるためのルックアップテーブル(LUT)として実装され得る。一実践的実装において、全ての低減は、入力としてコンテキストをとり、出力として低減させられたコンテキストを提供する低減関数、すなわち、単純にLUTに組み込まれる。この例示的実施形態において、コンテキストの合計数は、2,550から576に低減させられており、各低減関数BRiの出力サイズは、それぞれ、70、106、110、および119である。
【0220】
要約すると、以下の条件付きエントロピにおける従属(または条件)
H(bi|b0,・・・,bi-1,N10)
は、以下を介してより少ない従属を伴う条件付きエントロピ関係を取得するために、低減関数BRiを使用することによって低減させられることができる。
H(bi|BRi[b0,・・・,bi-1,N10])
上で説明されるように、サブボリューム近隣構成(例えば、サブボリューム近隣構成値C[i]または重み付きのサブボリューム近隣構成値C’[i])は、占有ビットbiをコーディングするために使用されることができる。この場合、条件付きエントロピ関係は、以下になり、
H(bi|b0,・・・,bi-1,N10,C[i])
低減が、上記と同様に実施され、以下を取得することができる。
H(bi|BRi[b0,・・・,bi-1,N10],C[i])
【0221】
上で、低減関数BRiは、BRi[b0,・・・,bi-1,N10]を介して、部分的ビットシーケンスb0,・・・,bi-1に、かつ10要素近隣構成N10に適用される。いくつかの実装において、低減関数BRiは、加えて、例えば、BRi[b0,・・・,bi-1,N10,C[i]]を介して、サブボリューム近隣構成に(例えば、サブボリューム近隣構成値C[i]または重み付きのサブボリューム近隣構成値C’[i]に)適用され、以下の条件付きエントロピ関係を取得し得る。
H(bi|BRi[b0,・・・,bi-1,N10,C[i]])
【0222】
この場合、占有ビットbiをコーディングするバイナリエントロピコーダの確率p(例えば、コンテキスト)の選択は、(BRi[b0,・・・,bi-1,N10],C[i])の値に応じて選択され得る。
【0223】
サブボリューム近隣構成が、占有ビットb
iをエントロピコーディングするときに考慮される場合、上で説明される
図26は、組み合わせられたコンテキスト低減を伴うサブボリューム近隣構成(例えば、サブボリューム近隣構成値C[i]または重み付きのサブボリューム近隣構成値C’[i])に基づく占有パターンバイナリコーディングの方法4400の一例をフローチャート形態において示す
図37に修正されるであろう。方法4400は、{0,1,2,・・・,9}における10要素近隣構成N
10およびサブボリューム近隣構成値C[i](または重み付きのサブボリューム近隣構成値C’[i])を所与として、8ビットバイナリパターンb
0,b
1,・・・,b
7をコーディングする。評価される最初の条件は、近隣構成が、空である、すなわち、N
10=0であるかどうかである。該当する場合、ビットは、参照番号4402によって示されるように、それらの順序を参照することなくコーディングされる。該当しない場合、ビットは、ビットb
4まで通常通りにコーディングされ、その時点において、エンコーダおよびデコーダは、総当たりコンテキスト低減関数BR
iを適用し始め、近隣構成および以前にコーディングされたビットの部分的パターンによって定義されたコンテキストの組を実質的に類似する統計的成果を有するコンテキストのより小さい組にマッピングすることによって、コンテキストの数を低減させる。
【0224】
この例において、最後の2つのビットb6およびb7は、シールディング/スクリーニングに基づいて、低減させられた近隣構成を使用してコーディングされる。
【0225】
全ての関数は、コンテキストの組のサイズを低減させるためのルックアップテーブル(LUT)として実装され得る。一実践的実装において、全ての低減は、入力としてコンテキストをとり、出力として低減させられたコンテキストを提供する、低減関数、すなわち、単純にLUTに組み込まれる。
【0226】
(現在のボリューム内の走査順序の選定)
エントロピコーダにおいてサブボリューム近隣構成(例えば、サブボリューム近隣構成値C[i]または重み付きのサブボリューム近隣構成値C’[i])を導入することは、条件付きコーディングに関する可能な構成を増加させる。
【0227】
しかしながら、占有パターン、それによって、コーディングされるべきビットシーケンスを決定するための現在のボリュームB内のサブノードSBiの走査順序の順序を慎重に選定することによって、この増加は、限定されることができる。すなわち、ビットbiのコーディングは、以下に依存する。
・2i個の構成につながるビットb0-bi-1
・10個の近隣構成N10
・サブボリューム近隣構成値C[i](または重み付きのサブボリューム近隣構成値C’[i])
サブボリュームSB0-SB7に関して、それぞれ、10、20、39、76、149、294、391、および520個の構成に最初の2つの箇条書きからの10・2i個の構成を低減させる方法が、上で示されている。
【0228】
ここにおいて、最初に、C[i]の可能な値の数が最大(例えば、上記の例のうちのいくつかにおいて、3)であるそれらのサブノードを走査することが、明確に有利である。そうすることによって、最初に走査されたサブノードに関する構成の数は、わずかな減少と見なされ得る10・3=30になる。しかしながら、サブノードSB0が、最後に走査されるであろう場合、520・3=1,560個の構成を取得することになるであろう。したがって、(占有パターン、それによって、コーディングされるべきビットシーケンスを決定するための)現在のボリューム内の走査順序を慎重に選定することによって、エントロピコーダにおけるサブボリューム近隣構成(例えば、サブボリューム近隣構成値C[i]または重み付きのサブボリューム近隣構成値C’[i])の導入は、エントロピコーディングにおける構成(コンテキスト)の数に限定された影響を及ぼす。
【0229】
故に、いくつかの実装において、現在のボリューム内の走査順序は、走査順序における1つのサブボリュームから次のサブボリュームまで、現在のボリュームのすでにコーディングされた近隣ボリュームにおける近隣サブボリュームの最大可能数が増加しないように決定され得る。言い換えると、走査順序は、走査順序における1つのサブボリュームから次のサブボリュームまで、数NT[i](または重み付きの数NT’[i])の最大可能値が増加しないように決定され得る。
【0230】
(サブボリューム近隣構成の使用を示すフラグ)
コーダの低複雑性プロファイルを可能にするために、ビットシーケンスをエントロピコーディングすることにおける確率(例えば、コンテキスト)を決定することにおいて、サブボリューム近隣構成を考慮することのアクティブ化/非アクティブ化を示すフラグをコーディングすることが、有利であり得る。
【0231】
故に、いくつかの実装において、エンコーディングの方法は、少なくとも1つのビットのエントロピエンコーディングにおける使用のための確率が少なくとも部分的にサブボリューム近隣構成に基づいて選択されていることを示すフラグをエンコードすることをさらに含み得る。同様に、デコーディングの方法は、ビットストリームからフラグをデコードすることをさらに含み得、フラグは、少なくとも1つのビットのエントロピデコーディングにおける使用のための確率が少なくとも部分的にサブボリューム近隣構成に基づいて選択されるべきであることを示す。
【0232】
(圧縮性能への影響)
前述で説明されたコンテキスト低減動作の各々は、静的(固定)最小数のコンテキストを伴う圧縮システムにおいてさらに使用され得る。そのような設計において、8ビットバイナリパターンにおける所与のシンボルに関して、1つ以上の低減動作が、シンボルをエンコードまたはデコードするためのコンテキスト確率モデルを決定するために適用される。
【0233】
(圧縮性能に対する影響)
10個の近隣構成および非バイナリコーディングの使用は、点群コーディングに関するMPEG試験モデルの現在の実装に優る圧縮利得を提供する。しかしながら、上で提案された2,550個のコンテキストを使用するカスケードバイナリコーディングを伴う10個の近隣構成の使用は、圧縮効率におけるさらに良好な改良をもたらす。コンテキスト低減が、コンテキストを合計576個に低減させるために、上で詳述される3つの技法を使用して等、使用されるときであっても、バイナリコーディング圧縮は、依然として、非バイナリコーディングを使用する実装よりわずかに良好であり、試験モデルよりはるかに良好である。この観察は、異なる試験点群データにわたって一貫していることが示されている。
【0234】
ここで、エンコーダ1100の例示的実施形態の簡略化ブロック図を示す
図14が、参照される。エンコーダ1100は、プロセッサ1102と、メモリ1104と、エンコーディングアプリケーション1106とを含む。エンコーディングアプリケーション1106は、メモリ1104内に記憶され、実行されると、本明細書に説明されるもの等の動作をプロセッサ1102に実施させる命令を含むコンピュータプログラムまたはアプリケーションを含み得る。例えば、エンコーディングアプリケーション1106は、本明細書に説明されるプロセスに従ってエンコードされたビットストリームをエンコードし、出力し得る。エンコーディングアプリケーション1106は、コンパクトディスク、フラッシュメモリデバイス、ランダムアクセスメモリ、ハードドライブ等の非一過性コンピュータ読み取り可能な媒体上に記憶され得ることを理解されたい。命令が実行されると、プロセッサ1102は、説明されるプロセスを実装する専用プロセッサとして動作するように、命令において規定される動作および機能を実行する。そのようなプロセッサは、いくつかの例において、「プロセッサ回路」または「プロセッサ電気回路」と称され得る。
【0235】
ここで、デコーダ1200の例示的実施形態の簡略化ブロック図を示す
図15も、参照される。デコーダ1200は、プロセッサ1202と、メモリ1204と、デコーディングアプリケーション1206とを含む。デコーディングアプリケーション1206は、メモリ1204内に記憶され、実行されると、本明細書に説明されるもの等の動作をプロセッサ1202に実施させる命令を含むコンピュータプログラムまたはアプリケーションを含み得る。デコーディングアプリケーション1206は、コンパクトディスク、フラッシュメモリデバイス、ランダムアクセスメモリ、ハードドライブ等のコンピュータ読み取り可能な媒体上に記憶され得ることを理解されたい。命令が、実行されると、プロセッサ1202は、説明されるプロセスを実装する専用プロセッサとして動作するように、命令において規定される動作および機能を実行する。そのようなプロセッサは、いくつかの例において、「プロセッサ回路」または「プロセッサ電気回路」と称され得る。
【0236】
本願によるデコーダおよび/またはエンコーダは、限定ではないが、サーバ、好適にプログラムされた汎用コンピュータ、マシンビジョンシステム、およびモバイルデバイスを含むいくつかのコンピューティングデバイスにおいて実装され得ることを理解されたい。デコーダまたはエンコーダは、本明細書に説明される機能を実行するようにプロセッサまたは複数のプロセッサを構成するための命令を含むソフトウェアを用いて実装され得る。ソフトウェア命令は、CD、RAM、ROM、フラッシュメモリ等を含む任意の好適な非一過性コンピュータ読み取り可能なメモリ上に記憶され得る。
【0237】
本明細書に説明されるデコーダおよび/またはエンコーダおよびエンコーダまたはデコーダを構成するための説明される方法/プロセスを実装するモジュール、ルーチン、プロセス、スレッド、または他のソフトウェアコンポーネントは、標準的コンピュータプログラミング技法および言語を使用して実現され得ることを理解されたい。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング表記法、データ構造、他のそのような実装詳細に限定されない。当業者は、説明されるプロセスが、揮発性または不揮発性メモリ内に記憶されるコンピュータ実行可能コードの一部として、特定用途向け集積チップ(ASIC)の一部等として実装され得ることを認識するであろう。
【0238】
本願は、本願によるエンコーディングプロセスの適用を通して生成されるデータをエンコードするコンピュータ読み取り可能な信号も提供する。
【0239】
説明される実施形態のある適合および修正が、行われることができる。したがって、上で議論される実施形態は、制限的ではなく、例証的であると見なされる。
【手続補正書】
【提出日】2024-07-18
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
圧縮された点群データのビットストリームを発生させるために点群をエンコードするコンピュータ実装方法であって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、ボリューム内のサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、そのボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有し、
前記方法は、
複数のボリュームであって、各ボリュームがサブボリュームにさらに分割されている、複数のボリュームの各々に関して、
そのボリュームの前記サブボリュームの占有を示すそれぞれのビットシーケンスを決定することと、
そのボリュームの前記それぞれのビットシーケンス内のビットに関して、
そのボリュームの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することであって、前記サブボリューム近隣構成は、前記近隣ボリュームのサブボリュームのグループの占有パターンに依存し、前記グループの前記サブボリュームは、前記ビットシーケンス内の前記ビットに対応する前記サブボリュームの近隣に位置している、ことと、
そのボリュームの前記それぞれのビットシーケンス内の前記ビットのエントロピエンコーディングにおける使用のための確率を選択することであって、前記選択することは、少なくとも部分的に前記サブボリューム近隣構成に基づいている、ことと、
バイナリエントロピエンコーダを使用して、前記選択された確率に基づいて、そのボリュームの前記それぞれのビットシーケンス内の前記ビットをエントロピエンコーディングし、前記ビットストリームに関するエンコードされたデータを生成することと
を含む、コンピュータ実装方法。
【請求項2】
再構成された点群を生成するために圧縮された点群データのビットストリームをデコードするコンピュータ実装方法であって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、そのボリューム内の走査順序におけるそれぞれのサブボリュームの前記占有を示し、ボリュームは、複数の近隣ボリュームを有し、
前記方法は、
複数のボリュームであって、各ボリュームがサブボリュームにさらに分割され、各ボリュームが、そのボリュームに関する前記サブボリューム占有を示すそれぞれのビットシーケンスを有する、複数のボリュームの各々に関して、
そのボリュームの前記それぞれのビットシーケンス内のビットに関して、
そのボリュームの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することであって、前記サブボリューム近隣構成は、前記近隣ボリュームのサブボリュームのグループの占有パターンに依存し、前記グループの前記サブボリュームは、前記ビットシーケンス内の前記ビットに対応する前記サブボリュームの近隣に位置している、ことと、
そのボリュームの前記それぞれのビットシーケンス内の前記ビットのエントロピデコーディングにおける使用のための確率を選択することであって、前記選択することは、少なくとも部分的に前記サブボリューム近隣構成に基づいている、ことと、
バイナリエントロピデコーダを使用して、前記選択された確率に基づいて、そのボリュームの前記それぞれのビットシーケンス内の前記ビットをエントロピデコーディングし、前記ビットストリームから再構成されたビットを生成することと
を含む、方法。
【請求項3】
前記サブボリューム近隣構成を決定することは、
前記それぞれのビットシーケンス内の前記ビットに対応するそのサブボリュームの近隣に位置している前記近隣ボリュームのサブボリュームの数を決定することと、
閾値関数を前記決定された数に適用することと
を含む、請求項1または請求項2に記載の方法。
【請求項4】
前記サブボリューム近隣構成は、そのボリュームの前記近隣ボリュームのサブボリュームの占有のパターンに対応する、請求項1-3のいずれか1項に記載の方法。
【請求項5】
前記サブボリューム近隣構成を決定することは、すでにコーディングされているそれらの近隣ボリュームのサブボリュームに関する占有データに基づいている、請求項1-4のいずれか1項に記載の方法。
【請求項6】
前記確率を選択することは、すでにコーディングされている前記それぞれのビットシーケンスのビットの部分的シーケンスおよび/またはそのボリュームの近隣構成にさらに基づいており、そのボリュームの前記近隣構成は、そのボリュームの前記近隣ボリュームの占有のパターンに対応する、請求項1-5のいずれか1項に記載の方法。
【請求項7】
そのボリューム内の前記走査順序は、前記走査順序における1つのサブボリュームから次のサブボリュームまで、そのボリュームのすでにコーディングされた近隣ボリュームにおける近隣サブボリュームの最大可能数が、増加しないように決定される、請求項1-6のいずれか1項に記載の方法。
【請求項8】
前記ツリー構造は、オクツリーを表す、請求項1-7のいずれか1項に記載の方法。
【請求項9】
前記ビットストリームからフラグをデコードすることをさらに含み、前記フラグは、前記ビットのエントロピデコーディングにおける使用のための前記確率が少なくとも部分的に前記サブボリューム近隣構成に基づいて選択されるべきであることを示す、請求項2または請求項2に従属するときの請求項3-8のいずれか1項に記載の方法。
【請求項10】
圧縮された点群データのビットストリームを発生させるために点群をエンコードするためのエンコーダであって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、そのボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有し、
前記エンコーダは、
プロセッサと、
メモリと、
前記プロセッサによって実行可能な命令を含むエンコーディングアプリケーションと
を備え、
前記命令は、実行されると、請求項1または請求項1に従属するときの請求項3-8のいずれか1項に記載の方法を前記プロセッサに実施させる、エンコーダ。
【請求項11】
再構成された点群を生成するために圧縮された点群データのビットストリームをデコードするためのデコーダであって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、ボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、そのボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、ボリュームは、複数の近隣ボリュームを有し、
前記デコーダは、
プロセッサと、
メモリと、
前記プロセッサによって実行可能な命令を含むデコーディングアプリケーションと
を備え、
前記命令は、実行されると、請求項2または請求項2に従属するときの請求項3-8のいずれか1項に記載の方法を前記プロセッサに実施させる、デコーダ。
【請求項12】
プロセッサ実行可能命令を記憶している非一過性プロセッサ読み取り可能な媒体であって、前記命令は、プロセッサによって実行されると、請求項1-9のいずれか1項に記載の方法を前記プロセッサに実施させる、非一過性プロセッサ読み取り可能な媒体。
【請求項13】
命令を含むコンピュータ実行可能なプログラムであって、前記命令は、コンピュータによって実行されると、請求項1-9のいずれか1項に記載の説明される方法を前記コンピュータに実施させる、プログラム。
【請求項14】
圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法であって、前記方法は、
複数のボリュームの各々に関して、
対応するボリュームをサブボリュームに分割することであって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、ボリュームのサブボリュームに再帰的に分割され、前記点群の点を含み、前記ボリュームは、複数の近隣ボリュームを有する、ことと、
前記対応するボリュームの前記サブボリュームの占有を示すそれぞれのビットシーケンスを決定することであって、前記それぞれのビットシーケンスの各ビットは、前記対応するボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、
前記それぞれのビットシーケンス内のビットに関して、
前記対応するボリュームの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することと、
少なくとも部分的に前記サブボリューム近隣構成に基づいて、前記ビットのエントロピエンコーディングにおける使用のための確率を選択することと、
バイナリエントロピエンコーダを使用して、前記確率に基づいて、前記ビットをエントロピエンコーディングし、前記ビットストリームに関するエンコードされたデータを生成することと
を含む、方法。
【請求項15】
再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法であって、前記方法は、
対応するボリュームのそれぞれのビットシーケンス内のビットに関して、
前記対応するボリュームの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することであって、前記再構成された点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、ボリュームのサブボリュームに再帰的に分割され、前記再構成された点群の点を含み、前記ボリュームの前記サブボリュームの占有は、ビットシーケンスを使用して示され、前記ビットシーケンス内のビットシーケンスの各ビットは、前記対応するボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、前記ボリュームは、複数の近隣ボリュームを有する、ことと、
少なくとも部分的に前記サブボリューム近隣構成に基づいて、前記ビットのエントロピデコーディングにおける使用のための確率を選択することと、
バイナリエントロピデコーダを使用して、前記確率に基づいて、前記ビットをエントロピデコーディングし、前記ビットストリームから再構成されたビットを生成することと
を含む、方法。
【請求項16】
前記サブボリューム近隣構成を決定することは、
前記近隣ボリュームの前記サブボリュームの数を決定することと、
閾値関数を前記数に適用することと
を含む、請求項15に記載の方法。
【請求項17】
前記サブボリューム近隣構成は、前記近隣ボリュームの前記サブボリュームの占有のパターンに対応する、請求項15に記載の方法。
【請求項18】
前記サブボリューム近隣構成を決定することは、すでにコーディングされている前記近隣ボリュームのサブボリュームに関する占有データに基づいて、前記サブボリューム近隣構成をさらに決定することをさらに含む、請求項15に記載の方法。
【請求項19】
前記確率を選択することは、すでにコーディングされている前記それぞれのビットシーケンスのビットの部分的シーケンスおよび前記対応するボリュームの近隣構成に基づいて、前記確率をさらに選択することをさらに含み、前記近隣構成は、前記近隣ボリュームの占有のパターンに対応する、請求項15に記載の方法。
【請求項20】
前記確率を選択することは、すでにコーディングされている前記それぞれのビットシーケンスのビットの部分的シーケンスに基づいて、前記確率をさらに選択することをさらに含む、請求項15に記載の方法。
【請求項21】
前記確率を選択することは、前記対応するボリュームの近隣構成に基づいて、前記確率をさらに選択することをさらに含み、前記近隣構成は、前記近隣ボリュームの占有のパターンに対応する、請求項15に記載の方法。
【請求項22】
前記対応するボリューム内の前記走査順序は、前記走査順序における1つのサブボリュームから次のサブボリュームまで、前記対応するボリュームのすでにコーディングされた近隣ボリュームにおける近隣サブボリュームの最大可能数が、増加しないように決定される、請求項15に記載の方法。
【請求項23】
前記ツリー構造は、オクツリーを表す、請求項15に記載の方法。
【請求項24】
前記ビットストリームからフラグをデコードすることをさらに含み、前記フラグは、前記確率が少なくとも部分的に前記サブボリューム近隣構成に基づいて選択されるべきであることを示す、請求項15に記載の方法。
【請求項25】
圧縮された点群データのビットストリームを発生させるために点群をエンコードするためのエンコーダであって、前記エンコーダは、
命令を記憶するように構成されたメモリと、
前記メモリに結合されたプロセッサであって、
複数のボリュームの各々に関して、
対応するボリュームをサブボリュームに分割することであって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、ボリュームのサブボリュームに再帰的に分割され、前記点群の点を含み、前記ボリュームは、複数の近隣ボリュームを有する、ことと、
前記対応するボリュームの前記サブボリュームの占有を示すそれぞれのビットシーケンスを決定することであって、前記それぞれのビットシーケンスの各ビットは、前記対応するボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、
前記それぞれのビットシーケンス内のビットに関して、
前記対応するボリュームの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することと、
少なくとも部分的に前記サブボリューム近隣構成に基づいて、前記ビットのエントロピエンコーディングにおける使用のための確率を選択することと、
バイナリエントロピエンコーダを使用して、前記確率に基づいて、前記ビットをエントロピエンコーディングし、前記ビットストリームに関するエンコードされたデータを生成することと
を前記エンコーダに行わせるために前記命令を実行するように構成されている、プロセッサと
を備える、エンコーダ。
【請求項26】
再構成された点群を生成するために圧縮された点群データのビットストリームをデコードするためのデコーダであって、前記デコーダは、
命令を記憶するように構成されたメモリと、
前記メモリに結合されたプロセッサであって、
対応するボリュームのそれぞれのビットシーケンス内のビットに関して、
前記対応するボリュームの近隣ボリュームのサブボリュームに関する占有データに基づいて、サブボリューム近隣構成を決定することであって、前記再構成された点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、ボリュームのサブボリュームに再帰的に分割され、前記再構成された点群の点を含み、前記ボリュームの前記サブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、前記対応するボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、前記ボリュームは、複数の近隣ボリュームを有する、ことと、
少なくとも部分的に前記サブボリューム近隣構成に基づいて、前記ビットのエントロピデコーディングにおける使用のための確率を選択することと、
バイナリエントロピデコーダを使用して、前記確率に基づいて、前記ビットをエントロピデコーディングし、前記ビットストリームから再構成されたビットを生成することと
を前記デコーダに行わせるために前記命令を実行するように構成されている、プロセッサと
を備えるデコーダ。
【請求項27】
前記プロセッサは、
前記近隣ボリュームの前記サブボリュームの数を決定することと、
閾値関数を前記数に適用することと
を前記デコーダに行わせるために前記命令を実行するようにさらに構成されている、請求項26に記載のデコーダ。
【請求項28】
前記サブボリューム近隣構成は、前記近隣ボリュームの前記サブボリュームの占有のパターンに対応する、請求項26に記載のデコーダ。
【請求項29】
前記プロセッサは、すでにコーディングされている前記近隣ボリュームのサブボリュームに関する占有データに基づいて、前記サブボリューム近隣構成をさらに決定することを前記デコーダに行わせるために前記命令を実行するようにさらに構成されている、請求項26に記載のデコーダ。
【請求項30】
前記プロセッサは、すでにコーディングされている前記それぞれのビットシーケンスのビットの部分的シーケンスおよび前記対応するボリュームの近隣構成に基づいて、前記確率をさらに選択することを前記デコーダに行わせるために前記命令を実行するようにさらに構成され、前記近隣構成は、前記近隣ボリュームの占有のパターンに対応する、請求項26に記載のデコーダ。
【請求項31】
前記プロセッサは、すでにコーディングされている前記それぞれのビットシーケンスのビットの部分的シーケンスまたは前記対応するボリュームの近隣構成に基づいて、前記確率をさらに選択することを前記デコーダに行わせるために前記命令を実行するようにさらに構成され、前記近隣構成は、前記近隣ボリュームの占有のパターンに対応する、請求項26に記載のデコーダ。
【請求項32】
前記プロセッサは、前記走査順序における1つのサブボリュームから次のサブボリュームまで、前記対応するボリュームのすでにコーディングされた近隣ボリュームにおける近隣サブボリュームの最大可能数が、増加しないように、前記対応するボリューム内の前記走査順序を決定することを前記デコーダに行わせるために前記命令を実行するようにさらに構成されている、請求項26に記載のデコーダ。
【請求項33】
前記ツリー構造は、オクツリーを表し、前記プロセッサは、前記ビットストリームからフラグをデコードすることを前記デコーダに行わせるために前記命令を実行するようにさらに構成され、前記フラグは、前記確率が前記サブボリューム近隣構成に基づいて選択されるべきであることを示す、請求項26に記載のデコーダ。