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

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

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

特開2024-114718点群のバイナリエントロピコーディングのための方法およびデバイス
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024114718
(43)【公開日】2024-08-23
(54)【発明の名称】点群のバイナリエントロピコーディングのための方法およびデバイス
(51)【国際特許分類】
   G06T 17/00 20060101AFI20240816BHJP
   H04N 19/13 20140101ALI20240816BHJP
   H04N 19/157 20140101ALI20240816BHJP
【FI】
G06T17/00 500
H04N19/13
H04N19/157
【審査請求】有
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2024094293
(22)【出願日】2024-06-11
(62)【分割の表示】P 2021517937の分割
【原出願日】2019-10-02
(31)【優先権主張番号】18290112.4
(32)【優先日】2018-10-02
(33)【優先権主張国・地域又は機関】EP
(71)【出願人】
【識別番号】500043574
【氏名又は名称】ブラックベリー リミテッド
【氏名又は名称原語表記】BlackBerry Limited
【住所又は居所原語表記】2200 University Avenue East, Waterloo ON N2K 0A7, Canada
(74)【代理人】
【識別番号】100107489
【弁理士】
【氏名又は名称】大塩 竹志
(72)【発明者】
【氏名】セバスチャン ラセール
(57)【要約】
【課題】点群のバイナリエントロピコーディングのための方法およびデバイスの提供。
【解決手段】点群をエンコードまたはデコードする方法およびデバイス。あるボリュームのサブボリュームに関する占有パターンを示すビットシーケンスが、エントロピコーディングを使用してコーディングされる。現在のサブボリュームに関して、占有パターンをエントロピコーディングするためのそれぞれのエントロピコーダの確率が、現在のサブボリュームの複数の近隣サブボリュームに関する占有データと近隣サブボリュームの細分化に関する占有データとに基づいて選択され得る。
【選択図】図5
【特許請求の範囲】
【請求項1】
点群をエンコードして圧縮された点群データのビットストリームを生成するコンピュータ実装方法であって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、複数のサブボリュームに再帰的に分割され、前記点群の点を含み、
前記方法は、
複数の現在のノードであって、それぞれの現在のノードは、前記サブボリュームに関連付けられており、前記サブボリュームは、さらなる複数のサブボリュームに分割され、それぞれのさらなるサブボリュームは、前記現在のノードの子ノードに対応する、複数の現在のノードのそれぞれに対して、
前記複数の子ノードの複数の占有ステータスに基づいて、前記現在のノードに対する占有パターンを決定することであって、前記複数の占有ステータスは、それぞれの子ノードに対する占有フラグによって示され、前記占有パターンは、前記占有フラグのシーケンスを表す整数によって規定され、前記占有フラグは、所定の走査順序において前記複数の子ノードに関連付けられている、ことと、
1つ以上の確率を選択することであって、前記1つ以上の確率は、前記占有パターンをエントロピエンコーディングするためのそれぞれのエントロピコーダに関連付けられており、前記選択することは、前記現在のノードの複数の近隣ノードに対する占有データと前記複数の近隣ノードのうちの少なくとも1つの複数の子ノードに対する占有データとに基づく、ことと、
前記関連付けられている1つ以上のエントロピコーダを使用して、前記選択された1つ以上の確率に基づいて、前記占有パターンをエントロピエンコーディングし、前記ビットストリームに対するエンコードされたデータを生成することと
を含み、
前記1つ以上の確率を選択することは、近隣構成に基づき、前記近隣構成は、前記現在のノードの前記複数の近隣ノードのそれぞれの占有ステータスに基づいて決定され、
前記複数の現在のノードの前記複数の近隣ノードは、前記ツリー構造において前記現在のノードと同じ深度にあるそれらのノードであり、前記それらのノードに関連付けられている複数のサブボリュームは、前記現在のノードの前記サブボリュームと交差している、方法。
【請求項2】
圧縮された点群データのビットストリームをデコードして再構成された点群を生成するコンピュータ実装方法であって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、複数のサブボリュームに再帰的に分割され、前記点群の点を含み、
前記方法は、
複数の現在のノードであって、それぞれの現在のノードは、前記サブボリュームに関連付けられており、前記サブボリュームは、さらなる複数のサブボリュームに分割され、それぞれのさらなるサブボリュームは、前記現在のノードの子ノードに対応する、複数の現在のノードのそれぞれに対して、
1つ以上の確率を選択することであって、前記1つ以上の確率は、前記現在のノードに対する占有パターンをエントロピデコーディングするためのそれぞれのエントロピコーダに関連付けられており、前記占有パターンは、前記複数の子ノードの複数の占有ステータスに基づき、前記複数の占有ステータスは、それぞれの子ノードに対する占有フラグによって示され、前記占有パターンは、前記占有フラグのシーケンスを表す整数によって規定され、前記占有フラグは、所定の走査順序において前記複数の子ノードに関連付けられており、前記選択することは、前記現在のノードの複数の近隣ノードに対する占有データと前記複数の近隣ノードのうちの少なくとも1つの複数の子ノードの占有データとに基づく、ことと、
前記1つ以上の関連付けられているエントロピコーダを使用して、前記選択された1つ以上の確率に基づいて、前記ビットストリームをエントロピデコーディングし、前記現在のノードに対する再構成された占有パターンを生成することと
を含み、
前記再構成された占有パターンは、前記複数の子ノードの占有を示し、
前記1つ以上の確率を選択することは、前記現在のノードの前記複数の近隣ノードのそれぞれの占有ステータスに基づいて決定された近隣構成に基づき、
前記複数の現在のノードの前記複数の近隣ノードは、前記ツリー構造において前記現在のノードと同じ深度にあるそれらのノードであり、前記それらのノードに関連付けられている複数のサブボリュームは、前記現在のノードの前記サブボリュームと交差している、方法。
【請求項3】
前記現在のノードの近隣ノードは、前記近隣ノードの占有データが、前記近隣ノードが占有されていることを示し、かつ、前記近隣ノードの複数の子ノードに対する前記占有データが、前記近隣ノードの占有された複数の子ノードのうちの少なくとも1つが前記現在のノードの近隣に位置していることを示す場合、前記近隣構成を決定する目的のために占有されていると見なされる、請求項1または請求項2に記載の方法。
【請求項4】
前記現在のノードの近隣ノードは、前記近隣ノードがまだコーディングされていない場合、前記近隣構成を決定する目的のために占有されていると見なされる、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記現在のノードの近隣に位置している複数の子ノードは、前記ツリー構造において前記現在のノードより1つ低い深度にあるそれらのノードであり、前記それらのノードに関連付けられている複数のサブボリュームは、前記現在のノードの前記サブボリュームと交差している、請求項3または請求項3に従属するときの請求項4に記載の方法。
【請求項6】
前記複数の近隣ノードに対する前記占有データは、前記複数の近隣ノードのそれぞれに対する複数の占有ステータスを備える、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記ツリー構造は、オクツリーを表す、請求項1~6のいずれか1項に記載の方法。
【請求項8】
前記方法は、前記ビットストリームからフラグをデコードすることをさらに含み、前記フラグは、前記占有パターンをエントロピデコーディングするためのそれぞれのエントロピコーダに関連付けられている前記1つ以上の確率が、前記現在のノードの前記複数の近隣ノードに対する前記占有データと前記複数の近隣ノードのうちの少なくとも1つの前記複数の子ノードの前記占有データとに基づいて選択されるべきであることを示す、請求項2または請求項2に従属するときの請求項3~7のいずれか1項に記載の方法。
【請求項9】
点群をエンコードして圧縮された点群データのビットストリームを生成するためのエンコーダであって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、複数のサブボリュームに再帰的に分割され、前記点群の点を含み、
前記エンコーダは、
プロセッサと、
メモリと、
前記プロセッサによって実行可能な命令を含むエンコーディングアプリケーションと
を備え、
前記命令は、実行されると、請求項1または請求項1に従属するときの請求項3~7のいずれか1項に記載の方法を実行することを前記プロセッサに行わせる、エンコーダ。
【請求項10】
圧縮された点群データのビットストリームをデコードして再構成された点群を生成するためのデコーダであって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、複数のサブボリュームに再帰的に分割され、前記点群の点を含み、
前記デコーダは、
プロセッサと、
メモリと、
前記プロセッサによって実行可能な命令を含むデコーディングアプリケーションと
を備え、
前記命令は、実行されると、請求項2または請求項2に従属するときの請求項3~8のいずれか1項に記載の方法を実行することを前記プロセッサに行わせる、デコーダ。
【請求項11】
プロセッサ実行可能な命令を記憶している非一過性のプロセッサ読み取り可能な媒体であって、前記命令は、プロセッサによって実行されると、請求項1~8のいずれか1項に記載の方法を実行することを前記プロセッサに行わせる、非一過性のプロセッサ読み取り可能な媒体。
【請求項12】
プロセッサ実行可能な命令を含むコンピュータプログラムであって、前記命令は、プロセッサによって実行されると、請求項1~8のいずれか1項に記載の方法を実行することを前記プロセッサに行わせる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、概して、点群圧縮に関し、特に、点群のバイナリエントロピコーディングのための方法およびデバイスに関する。
【背景技術】
【0002】
データ圧縮が、情報を効率的に記憶、伝送、および再生するために、通信およびコンピュータネットワーキングにおいて使用される。3次元オブジェクトまたは空間の表現への関心が、高まっており、それらは、大きいデータセットを伴い得、大きいデータセットに関して、効率的かつ効果的な圧縮が非常に有用かつ有益であろう。ある場合、3次元オブジェクトまたは空間は、点群を使用して表され得、点群は、各々が3つの座標場所(X,Y,Z)(ある場合、色データ(例えば、ルミナンスおよびクロミナンス)、透明度、反射率、法線ベクトル等のような他の属性)を有する点の組である。点群は、静的(静止したオブジェクトまたは単一の時点における環境/オブジェクトのスナップショット)または動的(点群の時間順のシーケンス)であり得る。
【0003】
点群に関する例示的用途は、トポグラフィおよびマッピング用途を含む。自律車両および他のマシンビジョン用途は、LiDAR走査装置から等の環境の3D走査の形態における点群センサデータに依拠し得る。仮想現実シミュレーションは、点群に依拠し得る。
【0004】
点群は、大量のデータを伴い得、そのデータを迅速かつ正確に圧縮(エンコードおよびデコード)することが、非常に着目されていることを理解されたい。故に、点群に関するデータをより効率的および/または効果的に圧縮する方法およびデバイスを提供することが、有利であろう。さらに、過剰な数のコンテキストの管理を要求することなく、コンテキスト適応バイナリエントロピコーディングを使用して実装され得る点群をコーディングする方法およびデバイスを見出すことが、有利であろう。
【発明の概要】
【課題を解決するための手段】
【0005】
本願は、点群をエンコードおよびデコードする方法、および点群をエンコードおよびデコードするためのエンコーダおよびデコーダを説明する。あるボリュームのサブボリュームに関する占有パターンを示すビットシーケンスが、エントロピコーディング(例えば、バイナリエントロピコーディング)を使用してコーディングされ得る。占有パターンをエントロピコーディングすることにおける使用のためのそれぞれのエントロピコーダに関連付けられる確率が、現在のサブボリュームの近隣サブボリュームに関する占有データに基づいて、近隣サブボリュームのうちの少なくとも1つの子サブボリュームに関する占有データにさらに基づいて選択され得る。
【0006】
本願を理解するために有用である例において、コンテキストは、近隣構成およびビットシーケンスの以前にコーディングされたビットの部分的シーケンスに基づき得る。コンテキスト低減動作を適用すべきかどうかに関する決定が、行われ得、該当する場合、動作は、利用可能なコンテキストの数を低減させる。例示的コンテキスト低減動作は、以前にコーディングされたビットに関連付けられたサブボリュームによるシールディング、空の近隣構成に関する特別な取り扱い、および統計ベースのコンテキスト合併に基づいて、近隣構成を低減させることを含む。低減は、コーディングの前に適用され得、低減させられたコンテキスト組を使用するための状況が満たされているかどうかに関して、決定が、コーディング中に行われ得る。
【0007】
一側面において、本願は、圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法を提供し、点群は、ツリー構造において定義され、ツリー構造は、親子関係を有する複数のノードを有し、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含む。方法は、さらなるサブボリュームに分割されるサブボリュームに関連付けられた現在のノードであって、各さらなるサブボリュームは、現在のノードの子ノードに対応する、現在のノードに関して、子ノードの占有ステータスに基づいて、現在のノードに関する占有パターンを決定することを含む。方法は、占有パターンをエントロピエンコーディングするためのそれぞれのエントロピコーダに関連付けられた1つ以上の確率を選択することをさらに含み、選択することは、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つの子ノードに関する占有データに基づく。方法は、関連付けられた1つ以上のエントロピコーダを使用して、選択された1つ以上の確率に基づいて、占有パターンをエントロピエンコーディングし、ビットストリームに関するエンコードされたデータを生成することをさらに含む。
【0008】
別の側面において、本願は、再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法を提供し、点群は、ツリー構造において定義され、ツリー構造は、親子関係を有する複数のノードを有し、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含む。方法は、さらなるサブボリュームに分割されるサブボリュームに関連付けられた現在のノードであって、各さらなるサブボリュームは、現在のノードの子ノードに対応する、現在のノードに関して、占有パターンをエントロピデコーディングするためのそれぞれのエントロピコーダに関連付けられた1つ以上の確率を選択することを含み、選択することは、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つの子ノードの占有データに基づく。方法は、1つ以上の関連付けられたエントロピコーダを使用して、選択された1つ以上の確率に基づいて、ビットストリームをエントロピデコーディングし、現在のノードに関する再構成された占有パターンを生成することをさらに含み、再構成された占有パターンは、子ノードの占有を示す。
【0009】
いくつかの実装において、1つ以上の確率を選択することは、近隣構成に基づき得、近隣構成は、現在のノードの近隣ノードの各々の占有ステータスに基づいて決定される。
【0010】
いくつかの実装において、現在のノードの近隣ノードは、その占有データが、それが占有されていることを示し、かつ、その子ノードに関する占有データが、その占有された子ノードのうちの少なくとも1つが現在のノードの近隣に位置していることを示す場合、近隣構成を決定する目的のために占有されていると見なされ得る。
【0011】
いくつかの実装において、現在のノードの近隣ノードは、その占有データが、それが占有されていることを示し、かつ、その子ノードに関する占有データが、その占有された子ノードのうちのいずれも現在のノードの近隣に位置していないことを示す場合、近隣構成を決定する目的のために占有されていないと見なされ得る。これは、近隣構成の決定において、その近隣ノードに関する占有ビットをゼロに(意図的に/人為的に)設定することに対応し得る。
【0012】
いくつかの実装において、現在のノードの近隣ノードは、その占有データが、それが占有されていることを示す場合、および、それがまだコーディングされていない場合、近隣構成を決定する目的のために占有されていると見なされ得る。近隣ノードがまだコーディングされていないとき、デコーダは、その子ノードの占有に関する情報をまだ有しておらず、したがって、そのような情報は、近隣構成を決定する目的のために近隣ノードが占有されているかどうかを考慮することにおいて使用されることができない。
【0013】
いくつかの実装において、現在のノードの近隣ノードは、その占有データが、それが占有されていないことを示す場合、近隣構成を決定する目的のために占有されていないと見なされ得る。
【0014】
いくつかの実装において、現在のノードの近隣ノードは、ツリー構造において現在のノードと同じ深度にあり、それらの関連付けられたサブボリュームが現在のノードのサブボリュームと交差しているそれらのノードであり得る。
【0015】
いくつかの実装において、現在のノードの近隣に位置している子ノードは、ツリー構造において現在のノードより1つ低い深度にあり、それらの関連付けられたサブボリュームが現在のノードのサブボリュームと交差しているそれらのノードであり得る。
【0016】
いくつかの実装において、複数の近隣ノードに関する占有データは、複数の近隣ノードの各々に関する占有ステータスを含み得る。
【0017】
いくつかの実装において、ツリー構造は、オクツリーを表し得る。
【0018】
いくつかの実装において、エンコーディングの方法は、フラグをエンコードすることをさらに含み得、フラグは、占有パターンをエントロピエンコーディングするためのそれぞれのエントロピコーダに関連付けられた1つ以上の確率が、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つの子ノードの占有データに基づいて、選択されていることを示す。
【0019】
いくつかの実装において、デコーディングの方法は、フラグをデコードすることをさらに含み得、フラグは、占有パターンをエントロピデコーディングするためのそれぞれのエントロピコーダに関連付けられた1つ以上の確率が、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つの子ノードの占有データに基づいて選択されるべきであることを示す。
【0020】
別の側面において、本願は、圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法を提供し、点群は、ツリー構造において定義され、ツリー構造は、親子関係を有する複数のノードを有し、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含み、あるボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、あるボリュームは、複数の近隣ボリュームを有し、近隣ボリュームの占有のパターンは、近隣構成である。方法は、ボリュームのビットシーケンス内の少なくとも1つのビットに関して、コンテキスト低減条件が、満たされていると決定し、それに基づいて、近隣構成のカウントとシーケンス内の以前にコーディングされたビットの数との積より少ないコンテキストを含む低減させられたコンテキスト組を選択することと;少なくとも1つのビットをコーディングするために、近隣ボリュームのうちの少なくともいくつかの占有ステータスおよびビットシーケンスの少なくとも1つの以前にコーディングされたビットに基づいて、低減させられたコンテキスト組からあるコンテキストを選択することと;バイナリエントロピエンコーダを使用して、選択されたコンテキストに基づいて、少なくとも1つのビットをエントロピエンコーディングし、ビットストリームに関するエンコードされたデータを生成することと;選択されたコンテキストを更新することとを含む。
【0021】
別の側面において、本願は、再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法を提供し、点群は、ツリー構造において定義され、ツリー構造は、親子関係を有する複数のノードを有し、複数のノードは、ボリューム空間の幾何学形状を表し、ボリューム空間は、サブボリュームに再帰的に分割され、点群の点を含み、あるボリュームのサブボリュームの占有は、ビットシーケンスを使用して示され、ビットシーケンスの各ビットは、ボリューム内の走査順序におけるそれぞれのサブボリュームの占有を示し、あるボリュームは、複数の近隣ボリュームを有し、近隣ボリュームの占有のパターンは、近隣構成である。デコーディングの方法は、ボリュームのビットシーケンス内の少なくとも1つのビットに関して、コンテキスト低減条件が満たされていると決定し、それに基づいて、近隣構成のカウントとシーケンス内の以前にコーディングされたビットの数との積より少ないコンテキストを含む低減させられたコンテキスト組を選択することと;少なくとも1つのビットをコーディングするために、近隣ボリュームのうちの少なくともいくつかの占有ステータスおよびビットシーケンスの少なくとも1つの以前にコーディングされたビットに基づいて、低減させられたコンテキスト組からあるコンテキストを選択することと;バイナリエントロピデコーダを使用して、選択されたコンテキストに基づいて、少なくとも1つのビットをエントロピデコーディングし、ビットストリームから再構成されたビットを生成することと;選択されたコンテキストを更新することとを含む。
【0022】
いくつかの実装において、コンテキスト低減条件は、1つ以上の以前にコーディングされた占有ビットが、少なくとも1つのビットに関連付けられたサブボリュームと近隣ボリュームのうちの1つ以上のものとの間に位置付けられる1つ以上のそれぞれのサブボリュームに関連付けられていると決定することを含み得る。ある場合、これは、以前にエンコードされたビットに関連付けられた4つのサブボリュームが、特定の近隣ボリュームと面を共有すると決定することを含み得る。
【0023】
いくつかの実装において、コンテキスト低減条件は、ビットシーケンスの少なくとも4つのビットが、以前にコーディングされていると決定することを含み得る。
【0024】
いくつかの実装において、コンテキスト低減条件が満たされていると決定することは、近隣ボリュームの占有のパターンが、複数の近隣ボリュームが占有されていないことを示すと決定することを含み得る。それらの場合のうちのいくつかにおいて、選択された低減させられたコンテキスト組は、ビットシーケンス内の以前にコーディングされたビットの数に対応するコンテキストの数を含み得、随意に、コンテキストを選択することは、ビットシーケンス内の以前にコーディングされたビットの合計に基づいて、コンテキストを選択することを含み得る。
【0025】
いくつかの実装において、コンテキスト低減条件は、ビットシーケンス内の少なくともある閾値数のビットが、以前にコーディングされていると決定することを含み得、低減させられたコンテキスト組は、ルックアップテーブルを含み得、ルックアップテーブルは、近隣構成およびビットシーケンス内の以前にコーディングされたビットのパターンの各可能な組み合わせをより少ないコンテキストにマッピングする。いくつかの例において、ルックアップテーブルは、利用可能なコンテキストのそれぞれの対間の距離測定値がある閾値未満であると決定することに基づく複数のクラスへの利用可能なコンテキストの反復的グループ化に基づいて発生され得、複数のクラスにおける各クラスは、より小さい組におけるそれぞれのコンテキストを含み得、近隣構成およびビットシーケンス内の以前にコーディングされたビットのパターンの各可能な組み合わせのための利用可能なコンテキストが、存在し得る。
【0026】
いくつかの実装において、近隣ボリュームのうちの少なくともいくつかは、ボリュームと少なくとも1つの面を共有する近隣ボリュームである。
【0027】
さらなる側面において、本願は、エンコーディングおよびデコーディングのそのような方法を実装するように構成されるエンコーダおよびデコーダを説明する。
【0028】
またさらなる側面において、本願は、実行されると、1つ以上のプロセッサにエンコーディングおよび/またはデコーディングの説明される方法を実施させるコンピュータ実行可能プログラム命令を記憶する非一過性コンピュータ読み取り可能な媒体を説明する。
【0029】
また別の側面において、本願は、コンピュータによって実行されると、コンピュータにエンコーディングおよび/またはデコーディングの説明される方法を実施させるプログラム命令を含むコンピュータ読み取り可能な信号を説明する。
【0030】
本願はさらに、トポグラフィ用途、地図作成用途、自動車産業用途、自律運転用途、仮想現実用途、および文化遺産用途等を含むコンピュータ実装用途を説明する。これらのコンピュータ実装用途は、データストリームまたはデータファイルを受信し、圧縮された点群データのビットストリームを取得するためにデータストリームまたはデータファイルを解凍し、上記側面およびその実装に説明されるようにビットストリームをデコードするプロセスを含む。それによって、これらのコンピュータ実装用途は、本願全体を通して説明される側面およびその実装に従って、点群圧縮技法を利用する。
【0031】
本願は、点群をエンコードおよびデコードする方法、および点群をエンコードおよびデコードするためのエンコーダおよびデコーダをさらに説明する。いくつかの実装において、受信ユニットが、多重化データを受信し、多重化データは、メタデータ、画像、ビデオ、オーディオ、および/またはグラフィック等の他のコーディングされたデータタイプとともにコーディングされた点群データを多重化することによって取得される。受信ユニットは、多重化データをコーディングされた点データと他のコーディングされたデータとに分離するための逆多重化ユニットと、コーディングされた点群データをデコードするための少なくとも1つのデコーディングユニット(またはデコーダ)とを備えている。いくつかの他の実装において、放出ユニットが、多重化データを放出し、多重化データは、メタデータ、画像、ビデオ、オーディオ、および/またはグラフィック等の他のコーディングされたデータタイプとともにコーディングされた点群データを多重化することによって取得される。放出ユニットは、点群データをエンコードするための少なくとも1つのエンコーディングユニット(またはエンコーダ)と、コーディングされた点群データと他のコーディングされたデータとを多重化データに組み合わせるための多重化ユニットとを備えている。
本発明は、例えば、以下を提供する。
(項目1)
圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法であって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、
前記方法は、
サブボリュームに関連付けられた現在のノードであって、前記サブボリュームは、さらなるサブボリュームに分割されており、各さらなるサブボリュームは、前記現在のノードの子ノードに対応する、現在のノードに関して、
前記子ノードの占有ステータスに基づいて、前記現在のノードに関する占有パターンを決定することと、
前記占有パターンをエントロピエンコーディングするためのそれぞれのエントロピコーダに関連付けられた1つ以上の確率を選択することであって、前記選択することは、前記現在のノードの複数の近隣ノードに関する占有データと前記複数の近隣ノードのうちの少なくとも1つの子ノードに関する占有データとに基づく、ことと、
前記関連付けられた1つ以上のエントロピコーダを使用して、前記選択された1つ以上の確率に基づいて、前記占有パターンをエントロピエンコーディングし、前記ビットストリームに関するエンコードされたデータを生成することと
を含む、方法。
(項目2)
再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法であって、前記点群は、親子関係を有する複数のノードを有するツリー構造において定義され、前記複数のノードは、ボリューム空間の幾何学形状を表し、前記ボリューム空間は、サブボリュームに再帰的に分割され、前記点群の点を含み、
前記方法は、
サブボリュームに関連付けられた現在のノードであって、前記サブボリュームは、さらなるサブボリュームに分割されており、各さらなるサブボリュームは、前記現在のノードの子ノードに対応する、現在のノードに関して、
前記占有パターンをエントロピデコーディングするためのそれぞれのエントロピコーダに関連付けられた1つ以上の確率を選択することであって、前記選択することは、前記現在のノードの複数の近隣ノードに関する占有データと前記複数の近隣ノードのうちの少なくとも1つの子ノードの占有データとに基づく、ことと、
前記1つ以上の関連付けられたエントロピコーダを使用して、前記選択された1つ以上の確率に基づいて、前記ビットストリームをエントロピデコーディングし、前記現在のノードに関する再構成された占有パターンを生成することと
を含み、
前記再構成された占有パターンは。前記子ノードの占有を示す、方法。
(項目3)
前記1つ以上の確率を選択することは、前記現在のノードの前記近隣ノードの各々の占有ステータスに基づいて決定された近隣構成に基づく、項目1または2に記載の方法。
(項目4)
前記現在のノードの近隣ノードは、前記近隣ノードの占有データが、前記近隣ノードが占有されていることを示し、前記近隣ノードの子ノードに関する前記占有データが、前記近隣ノードの占有された子ノードのうちの少なくとも1つが前記現在のノードの近隣に位置していることを示す場合、前記近隣構成を決定する目的のために占有されていると見なされる、項目3に記載の方法。
(項目5)
前記現在のノードの近隣ノードは、前記近隣ノードの占有データが、前記近隣ノードが占有されていることを示し、前記近隣ノードの子ノードに関する前記占有データが、前記近隣ノードの占有された子ノードのうちのいずれも、前記現在のノードの近隣に位置していないことを示す場合、前記近隣構成を決定する目的のために占有されていないと見なされる、項目3または4に記載の方法。
(項目6)
前記現在のノードの近隣ノードは、前記近隣ノードがまだコーディングされていない場合、前記近隣構成を決定する目的のために占有されていると見なされる、項目3-5のいずれか1項に記載の方法。
(項目7)
前記現在のノードの近隣ノードは、前記ツリー構造において前記現在のノードと同じ深度にあり、その関連付けられたサブボリュームが前記現在のノードの前記サブボリュームと交差しているそれらのノードである、項目1-6のいずれか1項に記載の方法。
(項目8)
前記現在のノードの近隣に位置している子ノードは、前記ツリー構造において前記現在のノードより1つ低い深度にあり、その関連付けられたサブボリュームが前記現在のノードの前記サブボリュームと交差しているそれらのノードである、項目4または項目4に従属するときの項目5-7のいずれか1項に記載の方法。
(項目9)
前記複数の近隣ノードに関する前記占有データは、前記複数の近隣ノードの各々に関する占有ステータスを備えている、項目1-8のいずれか1項に記載の方法。
(項目10)
前記ツリー構造は、オクツリーを表す、項目1-9のいずれか1項に記載の方法。
(項目11)
前記ビットストリームからフラグをデコードすることをさらに含み、前記フラグは、前記占有パターンをエントロピデコーディングするためのそれぞれのエントロピコーダに関連付けられた前記1つ以上の確率が、前記現在のノードの前記複数の近隣ノードに関する前記占有データと前記複数の近隣ノードのうちの少なくとも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】
ここで、例として、本願の例示的実施形態を示す付随の図面が、参照されるであろう。
【図面の簡単な説明】
【0033】
図1図1は、例示的点群エンコーダの簡略化ブロック図を示す。
【0034】
図2図2は、例示的点群デコーダの簡略化ブロック図を示す。
【0035】
図3図3は、例示的部分的サブボリュームおよびコーディングのための関連付けられるツリー構造を示す。
【0036】
図4図4は、オクツリーの再帰的分割およびコーディングを図示する。
【0037】
図5図5は、オクツリーからの例示的立方体内の例示的走査パターンを示す。
【0038】
図6図6は、例示的立方体内の例示的占有パターンを示す。
【0039】
図7図7は、点群をエンコードするための一例示的方法をフローチャート形態において示す。
【0040】
図8図8は、例示的オクツリーの一部を図示する。
【0041】
図9図9は、近隣サブボリュームの例を示す。
【0042】
図10図10は、近隣ノード間の占有を示す例示的近隣構成を示す。
【0043】
図11図11は、親パターン依存コンテキストを使用する点群エントロピエンコーディングのプロセスの一例証的実施形態を図式的に示す。
【0044】
図12図12は、近隣構成依存コンテキストを使用する点群エントロピエンコーディングのプロセスの例証的実施形態を示す。
【0045】
図13図13は、圧縮された点群データのビットストリームをデコードするための一例示的方法をフローチャート形態において示す。
【0046】
図14図14は、エンコーダの例示的簡略化ブロック図を示す。
【0047】
図15図15は、デコーダの例示的簡略化ブロック図を示す。
【0048】
図16図16は、例示的デカルト座標系および軸まわりの例示的回転および/または反射を示す。
【0049】
図17図17は、Z軸まわりの回転の1回または数回の反復下の近隣構成の不変性のクラスを示す。
【0050】
図18図18は、垂直反射に関する近隣構成の不変性のクラスを示す。
【0051】
図19図19は、回転および反射の両方に関する不変性のクラスを示す。
【0052】
図20図20は、3回の回転および反射の下での不変性のクラスを示す。
【0053】
図21図21は、占有パターンに関する非バイナリコーディングとカスケードバイナリコーディングとの間の同等性を図示する。
【0054】
図22図22は、バイナリコーディングを使用して、ツリーベースの点群コーダにおいて占有パターンをコーディングするための一例示的方法をフローチャート形態において示す。
【0055】
図23図23は、例示的エンコーダの一部の簡略化ブロック図を示す。
【0056】
図24図24は、近隣スクリーニングに基づく例示的コンテキスト低減動作を図式的に示す。
【0057】
図25図25は、近隣スクリーニングに基づく別の例示的コンテキスト低減動作を示す。
【0058】
図26図26は、組み合わせられたコンテキスト低減を使用して、占有パターンをバイナリコーディングする方法の一例をフローチャート形態において示す。
【0059】
図27図27は、それらの中のいくつかがすでにコーディングされている近隣サブボリュームの例を示す。
【0060】
図28図28は、近隣サブボリュームおよび近隣サブボリュームのすでにコーディングされたサブボリュームの例を示す。
【0061】
図29図29は、近隣サブボリューム内のサブボリューム占有の例を示す。
【0062】
図30図30は、少なくとも部分的に複数の近隣ノードのうちの少なくとも1つの子ノードに関する占有データに基づいて、現在のノードの占有パターンをエンコードする方法をフローチャート形態において示す。
【0063】
図31図31は、少なくとも部分的に複数の近隣ノードのうちの少なくとも1つの子ノードに関する占有データに基づいて、現在のノードの占有パターンをデコードする方法をフローチャート形態において示す。
【0064】
図32図32は、近隣サブボリュームのサブボリュームに応じて、近隣構成を決定する方法をフローチャート形態において示す。
【0065】
図33図33は、近隣サブボリューム内のサブボリューム占有の別の例を示す。
【0066】
図34図34は、近隣サブボリューム内のサブボリューム占有のまた別の例を示す。
【発明を実施するための形態】
【0067】
類似する参照番号が、類似するコンポーネントを表すために異なる図において使用されていることもある。
【0068】
本願の他の側面および特徴が、付随の図と併せて、以下の例の説明の精査から、当業者によって理解されるであろう。
【0069】
本発明の一側面または実施形態に関連して説明される任意の特徴は、1つ以上の他の側面/実施形態に関しても使用され得る。本発明のこれらおよび他の側面は、本明細書に説明される実施形態から明白となり、それを参照して明瞭にされるであろう。
【0070】
下記の説明では随時、用語「ノード」、「ボリューム」、および「サブボリューム」は、同義的に使用され得る。ノードは、ボリュームまたはサブボリュームに関連付けられていることを理解されたい。ノードは、内部ノードまたはリーフノードであり得るツリー上の特定の点である。ボリュームまたはサブボリュームは、ノードが表す有界の物理的空間である。用語「ボリューム」は、ある場合、点群を含むために定義される最も大きい有界の空間を指すように使用され得る。ボリュームは、点群データをコーディングするための相互接続されたノードのツリー構造を構築する目的のために、サブボリュームに再帰的に分化され得る。
【0071】
本願において、用語「および/または」は、リストアップされる要素のうちのいずれか1つのみ、任意の副次的組み合わせ、または要素の全てを含み、必ずしも追加の要素を除外することなく、リストアップされる要素の全ての可能な組み合わせおよび副次的組み合わせに及ぶことを意図している。
【0072】
本願において、語句「~または~のうちの少なくとも1つ」は、リストアップされる要素のうちのいずれか1つのみ、任意の副次的組み合わせ、または要素の全てを含み、必ずしも任意の追加の要素を除外することなく、かつ必ずしも要素の全てを要求することなく、リストアップされる要素のうちのいずれか1つ以上のものに及ぶことを意図している。
【0073】
点群は、3次元座標系における点の組である。点は、多くの場合、1つ以上のオブジェクトの外面を表すことを意図している。各点は、3次元座標系におけるある場所(位置)を有する。位置は、デカルトまたは任意の他の座標系であり得る3つの座標(X,Y,Z)によって表され得る。点は、色等の他の関連付けられた属性を有し得、それは、ある場合、R、G、BまたはY、Cb、Cr等の3つの成分値でもあり得る。他の関連付けられた属性は、点群データに関する所望の用途に応じて、透明度、反射率、法線ベクトル等を含み得る。
【0074】
点群は、静的または動的であり得る。例えば、オブジェクトまたはトポグラフィの詳細な走査またはマッピングは、静的点群データであり得る。マシンビジョン目的のための環境のLiDARベースの走査は、点群が(少なくとも潜在的に)経時的に変化し、例えば、ボリュームの各連続的走査を伴う点において、動的であり得る。動的点群は、したがって、点群の時間順のシーケンスである。
【0075】
点群データは、いくつかの例を挙げると、保存(歴史的または文化的物体の走査)、マッピング、マシンビジョン(自律または半自律自動車等)、および仮想現実システムを含むいくつかの用途において使用され得る。マシンビジョンのような用途に関する動的点群データは、保存目的に関するそれのような静的点群データと全く異なり得る。例えば、自動車ビジョンは、典型的に、高頻度の捕捉を伴うLiDAR(または類似する)センサを通して取得される比較的に低い分解能であり、無色であり、高度に動的な点群を伴う。そのような点群の目的は、人間による消費または視認のためではなく、むしろ、決定プロセスにおける機械オブジェクト検出/分類のためである。例として、典型的なLiDARフレームは、約数千の点を含む一方、高品質仮想現実用途は、数百万の点を要求する。算出速度が、向上し、新しい用途が、見出されるにつれて、経時的により高い分解能データの要求が、存在するであろうことが予期され得る。
【0076】
点群データは、有用であるが、効果的かつ効率的な圧縮、すなわち、エンコーディングおよびデコーディングプロセスの不足は、採用および展開を妨げ得る。オーディオまたはビデオのような他のデータ圧縮の場合に生じない点群をコーディングすることにおける特定の課題は、点群の幾何学形状のコーディングである。点群は、低密度で取り込まれる傾向があり、それは、点の場所を効率的にコーディングすることをはるかに困難にする。
【0077】
点群データをコーディングするためのより一般的な機構のうちの1つは、ツリーベースの構造の使用を通したものである。ツリーベースの構造において、点群に関する有界3次元ボリュームは、再帰的にサブボリュームに分化される。ツリーのノードは、サブボリュームに対応する。サブボリュームをさらに分化するかどうかの決定は、ツリーの分解能および/またはサブボリューム内に含まれる任意の点が存在するかどうかに基づき得る。リーフノードが、その関連付けられたサブボリュームが、点を含むかどうかを示す占有フラグを有し得る。分割フラグが、ノードが、子ノードを有するかどうか(すなわち、現在のボリュームが、サブボリュームにさらに分割されているかどうか)を示し得る。これらのフラグは、ある場合、エントロピコーディングされ得、ある場合、予測コーディングが、使用され得る。
【0078】
一般的に使用されるツリー構造は、オクツリーである。この構造において、ボリューム/サブボリュームは全て、立方体であり、サブボリュームの各分割は、8つのさらなるサブボリューム/サブ立方体をもたらす。別の一般的に使用されるツリー構造は、KDツリーであり、ボリューム(立方体または長方形直方体)が、軸のうちの1つに直交する平面によって再帰的に2つに分化される。オクツリーは、KDツリーの特別な事例であり、ボリュームは、各々が3つの軸のうちの1つに直交する3つの平面によって分化される。これらの例の両方は、立方体または長方形直方体に関するが、しかしながら、本願は、そのようなツリー構造に制限されず、ボリュームおよびサブボリュームは、いくつかの用途において、他の形状を有し得る。ボリュームの区画化は、必ずしも2つのサブボリューム(KDツリー)または8つのサブボリューム(オクツリー)へのものではなく、非長方形形状への分化を含む他の区画を伴うか、または非隣接サブボリュームを伴い得る。
【0079】
本願は、容易な解説のために、および、それらが自動車用途のための普及した候補ツリー構造であるので、オクツリーに言及し得るが、本明細書に説明される方法およびデバイスは、他のツリー構造を使用して実装され得ることを理解されたい。
【0080】
ここで、本願の側面による、点群エンコーダ10の簡略化ブロック図を示す図1が、参照される。点群エンコーダ10は、ツリー構築モジュール12を含み、ツリー構築モジュール12は、点群データを受信し、ツリー(この例において、オクツリー)を生成し、ツリーは、点群を含むボリューム空間の幾何学形状を表し、その幾何学形状における点群からの点の場所または位置を示す。
【0081】
点群をコーディングするためのオクツリーを作成するための基本的プロセスは、以下を含み得る。
1.座標系内に点群を含む有界ボリューム(立方体)を用いて開始する。
2.ボリュームを8つのサブボリューム(8つのサブ立方体)に分割する。
3.各サブボリュームに関して、サブボリュームが空である場合、サブボリュームを0でマーキングし、その中に少なくとも1つの点が存在する場合、1でマーキングする。
4.1でマーキングされた全てのサブボリュームに関して、分割の最大深度が到達されるまで、それらのサブボリュームを分割するために(2)を繰り返す。
5.最大深度の全てのリーフサブボリューム(サブ立方体)に関して、それが空ではない場合、リーフ立方体を1でマーキングし、そうでなければ、0でマーキングする。
【0082】
上記のプロセスは、占有=分割プロセスとして説明され得、分割は、占有を含意し、それを超えていかなるさらなる分割も行われないであろう最大深度または分解能が存在する制約を伴う。この場合、単一のフラグが、ノードが分割されているかどうか、したがって、それが少なくとも1つの点によって占有されているかどうかを示し、逆もまた同様である。最大深度において、フラグは、占有を示し、いかなるさらなる分割も、可能ではない。
【0083】
いくつかの実装において、分割と占有とは、独立しており、それによって、ノードは、占有されており、ノードは、分割されていることも、分割されていないこともある。この実装の2つの変形例が、存在する。
1.分割後占有。信号フラグが、ノードが分割されているかどうかを示す。分割されている場合、ノードは、点を含まなければならず、すなわち、分割は、占有を含意する。そうでなければ、ノードが分割されるべきではない場合、さらなる占有フラグが、ノードが、少なくとも1つの点を含むかどうかを示す。故に、ノードが、さらに分割されていない、すなわち、それがリーフノードであるとき、リーフノードは、それが、任意の点を含むかどうかを示すために、関連付けられた占有フラグを有していなければならない。
2.占有後分割。単一のフラグが、ノードが占有されているかどうかを示す。占有されていない場合、いかなる分割も、行われない。それが占有されている場合、分割フラグが、ノードがさらに分割されるかどうかを示すためにコーディングされる。
【0084】
ツリーを構築するために使用される上で説明されるプロセスにかかわらず、それは、フラグ(占有および/または分割フラグ)からビットのシーケンスを生成するために、所定の順序(幅優先または深度優先、および各分化されたサブボリューム内の走査パターン/順序に従って)でトラバースされ得る。これは、ツリーの直列化またはバイナリ化と呼ばれ得る。図1に示されるように、この例において、点群エンコーダ10は、オクツリーをバイナリ化し、ツリーを表すバイナリ化されたデータのビットストリームを生成するためのバイナライザ14を含む。
【0085】
ビットのこのシーケンスは、次いで、圧縮されたビットストリームを生成するために、エントロピエンコーダ16を使用してエンコードされ得る。エントロピエンコーダ16は、コンテキストモデル18を使用して、ビットのシーケンスをエンコードし得、コンテキストモデル18は、エントロピエンコーダ16によるコンテキスト決定に基づいてビットをコーディングするための確率を規定する。コンテキストモデル18は、各ビットまたはビットの定義された組のコーティング後、適応的に更新され得る。エントロピエンコーダ16は、ある場合、バイナリ算術エンコーダであり得る。バイナリ算術エンコーダは、いくつかの実装において、コンテキスト適応バイナリ算術コーティング(CABAC)を採用し得る。いくつかの実装において、算術コーダ以外のコーダも、使用され得る。
【0086】
ある場合、エントロピエンコーダ16は、バイナリコーダではないこともあり、代わりに、非バイナリデータに対して動作し得る。ツリー構築モジュール12からの出力オクツリーデータは、バイナリ形態において評価されていないこともあり、代わりに、非バイナリデータとしてエンコードされ得る。
例えば、オクツリーの場合、それらの走査順序におけるサブボリューム内の8つのフラグ(例えば、占有フラグ)は、2-1ビット数(例えば、1~255の値を有する整数。何故なら、値0は、分割されたサブボリュームに関して可能ではない(すなわち、それは、それがまったく占有されていない場合、分割されていない)からである)と考えられ得る。この数は、いくつかの実装において、マルチシンボル算術コーダを使用するエントロピエンコーダによってエンコードされ得る。サブボリューム(例えば、立方体)内で、この整数を定義するフラグのシーケンスは、「パターン」と呼ばれ得る。
【0087】
ビデオまたは画像コーディングの場合のように、点群コーディングは、予測演算を含むことができ、予測演算において、サブボリュームに関するパターンを予測するために、試みが行われる。予測は、空間的(同じ点群内の以前にコーディングされたサブボリュームに依存する)または時間的(点群の時間順のシーケンスにおける以前にコーディングされた点群に依存する)であり得る。
【0088】
エンコーダ10に対応する例示的点群デコーダ50のブロック図が、図2に示される。点群デコーダ50は、エンコーダ10によって使用される同じコンテキストモデル54を使用するエントロピデコーダ52を含む。エントロピデコーダ52は、圧縮されたデータの入力ビットストリームを受信し、データをエントロピデコーディングし、圧縮解除されたビットの出力シーケンスを生成する。シーケンスは、次いで、ツリー再構成器56によって、再構成された点群データに変換される。ツリー再構成器56は、圧縮解除されたデータとツリーデータがバイナリ化された走査順序の知識とからツリー構造を再構築する。ツリー再構成器56は、したがって、点群から点の場所を再構成することが可能である(ツリーコーディングの分解能を前提として)。
【0089】
例示的部分的サブボリューム100が、図3に示される。この例において、サブボリューム100は、容易な図示のために2次元において示され、サブボリューム100のサイズは、16×16である。サブボリュームは、4つの8×8サブ正方形に分化されており、それらのうちの2つは、4×4サブ正方形にさらに細分化されており、それらのうちの3つは、2×2サブ正方形にさらに分化され、2×2サブ正方形のうちの1つは、次いで、1×1正方形に分化されていることに留意されたい。1×1正方形は、ツリーの最大深度であり、位置的点データに関する最も微細な分解能を表す。点群からの点は、図においてドットとして示される。
【0090】
ツリー102の構造は、サブボリューム100の右側に示される。所定の幅優先走査順序において取得された分割フラグ104のシーケンスと占有フラグ106の対応するシーケンスとが、ツリー102の右側に示される。この例証的例において、分割されていない(すなわち、ゼロに設定された関連付けられた分割フラグを有する)各サブボリューム(ノード)のための占有フラグが存在することが、観察されるであろう。これらのシーケンスは、エントロピエンコーディングされ得る。
【0091】
占有=分割条件を採用する別の例が、図4に示される。図4は、オクツリー150の再帰的分割およびコーディングを図示する。オクツリー150の一部のみが、図に示される。FIFO152が、このプロセスの幅優先性質を図示するために、分割のためにノードを処理するものとして示される。FIFO152は、その親ノード156の処理後のさらなる分割のために、FIFO152において待ち行列に入れられていた占有ノード154を出力する。ツリービルダは、占有ノード154に関連付けられたサブボリュームを8つのサブボリューム(立方体)に分割し、それらの占有を決定する。占有は、各サブボリュームのための占有フラグによって示され得る。規定された走査順序において、フラグは、ノード154に関する占有パターンと称され得る。パターンは、所定の走査順序におけるサブボリュームに関連付けられた占有フラグのシーケンスを表す整数によって規定され得る。オクツリーの場合、パターンは、範囲[1,255]内の整数である。
【0092】
エントロピエンコーダは、次いで、コンテキストモデルによって規定された確率に基づいて、非バイナリ算術エンコーダを使用して、そのパターンをエンコードする。この例において、確率は、初期分布モデルに基づくパターン分布であり、適応的に更新され得る。一実装において、パターン分布は、事実上、各パターン(1~255の整数)がコーディング中に遭遇した回数のカウンタである。パターン分布は、各サブボリュームが、コーディングされた後に更新され得る。パターン分布は、パターンの相対的頻度が確率査定に密接に関係しており、絶対カウントではないので、必要に応じて、正規化され得る。
【0093】
パターンに基づいて、占有されている(例えば、フラグ=1を有する)それらの子ノードは、次いで、(ノードがツリーの最大深度ではないことを条件に)順にさらなる分割のためにFIFO152に押し込まれる。
【0094】
ここで、オクツリーからの例示的立方体180を示す図5が、参照される。立方体180は、8つのサブ立方体に細分化される。フラグを読み取るための走査順序は、8ビットの文字列をもたらし、それは、バイナリにおける整数[1,255]として読み取られることができる。走査順序および文字列内の各サブ立方体のフラグの結果として生じるビット位置に基づいて、サブ立方体は、図5に示される値を有する。走査順序は、エンコーダおよびデコーダの両方が、同じ走査順序を使用することを条件に、サブ立方体の任意のシーケンスであり得る。
【0095】
例として、図6は、4つの「前側」サブ立方体が占有されている立方体180を示す。これは、占有されたサブ立方体が、立方体1+4+16+64であることに基づいて、パターン85に対応するであろう。整数パターン番号は、サブ立方体内の占有のパターンを規定する。
【0096】
オクツリー表現、または、より一般的に、任意のツリー表現は、ツリーが、点座標のより高次のビットを因数に分解する傾向があるので、空間相関を伴う点を表すことにおいて効率的である。オクツリーに関して、深度の各レベルは、精緻化あたり8ビットを犠牲にして、各成分に関して1ビットによってサブボリューム内の点の座標を精緻化する。さらなる圧縮が、各ツリーノードに関連付けられた分割情報(すなわち、パターン)をエントロピコーディングすることによって取得される。このさらなる圧縮は、パターン分布が、均一ではないので、可能であり、すなわち、不均一性は、相関の別の結果である。
【0097】
現在のシステムにおける1つの潜在的な非効率性は、パターン分布(例えば、ツリーの以前にコーディングされたノードに見られるパターン番号のヒストグラム)が、点群をコーディングする過程にわたって開発されることである。ある場合、パターン分布は、等確率として初期化され得るか、または、ある他の所定の分布に初期化され得るが、1つのパターン分布の使用は、コンテキストモデルが、局所的幾何学的相関を考慮しないこと、または活用しないことを意味する。
【0098】
欧州特許出願第18305037.6号において、本出願人は、特定のノードの近傍の以前にコーディングされたノードからのある占有情報に基づいて、特定のノードの占有のパターンをコーディングすることにおいて使用されるべき利用可能なパターン分布の中から選択する方法およびデバイスを説明した。一例示的実装において、占有情報は、特定のノードに対する親の占有のパターンから取得される。別の例示的実装において、占有情報は、特定のノードの近隣に位置している1つ以上のノードから取得される。欧州特許出願第18305037.6号の内容は、参照することによって本明細書に組み込まれる。
【0099】
ここで、点群をエンコードする一例示的方法200をフローチャート形態において示す図7が、参照される。この例における方法200は、占有ノード(サブボリューム)の再帰的分割と、コーディングのためのツリーの幅優先トラバーサルとを伴う。
【0100】
動作202において、エンコーダは、現在のノードに関する占有のパターンを決定する。現在のノードは、各々がそれぞれのサブ立方体に対応する8つの子ノードに分割された占有ノードである。現在のノードに関する占有のパターンは、走査順序における8つの子ノードの占有を規定する。上で説明されるように、占有のこのパターンは、1~255の整数、例えば、8ビットバイナリ文字列を使用して示され得る。
【0101】
動作204において、エンコーダは、確率分布の組の中からある確率分布を選択する。確率分布の選択は、近傍の以前にコーディングされたノード、すなわち、現在のノードの近隣である少なくとも1つのノードからのある占有情報に基づく。2つのノードは、いくつかの実施形態において、それらが、少なくとも1つの面を共有するそれぞれのサブボリュームに関連付けられる場合、近隣に位置している。より広範な定義において、ノードは、それらが、少なくとも1つの縁を共有する場合、近隣に位置している。なおもより広範な定義において、2つのノードは、それらが、少なくとも1つの頂点を共有する場合、近隣に位置している。親パターン(その親パターン内で、現在のノードは、子ノードである)は、現在のノードおよび現在のノードの7つの兄弟ノードに関する占有データを提供する。いくつかの実装において、占有情報は、親パターンである。いくつかの実装において、占有情報は、近隣ノードの組に関する占有データであり、近隣ノードは、異なる親ノードを有するが、現在のノードと同じツリーの深度レベルにおけるノードを含む。ある場合、これらの組み合わせが、可能である。例えば、近隣ノードの組は、いくつかの兄弟ノードと、いくつかの非兄弟ノードとを含み得る。
【0102】
確率分布が、選択されると、エンコーダは、動作206によって示されるように、選択された確率分布を使用して、現在のノードに関する占有パターンをエントロピエンコーディングする。それは、次いで、占有パターンに基づいて、動作208において、選択された確率分布を更新する(例えば、それは、占有パターンに対応するカウントを増加させ得る)。動作210において、エンコーダは、コーディングすべきさらなるノードが存在するかどうかを評価し、該当する場合、次のコードをコーディングするために、動作202に戻る。
【0103】
動作204における確率分布選択は、近傍の以前にコーディングされたノードに関する占有データに基づくべきである。これは、エンコーダおよびデコーダの両方が、同じ選択を独立して行うことを可能にする。確率分布選択の下記議論に関して、現在のノード302を含む部分的オクツリー300を図式的に図示する図8が、参照されるであろう。現在のノード302は、占有ノードであり、コーディングのために評価されている。現在のノード302は、親ノード306の8つの子のうちの1つであり、親ノード306は、順に、祖父母ノード(図示せず)の子である。現在のノード302は、8つの子ノード304に分化される。現在のノード302に関する占有パターンは、子ノード304の占有に基づく。例えば、図示されるように、黒色ドットが、占有ノードである表記法を使用して、占有パターンは、00110010、すなわち、パターン50であり得る。
【0104】
現在のノード302は、同じ親ノード306を有する兄弟ノード308を有する。親パターンは、親ノード306に関する占有パターンであり、それは、図示されるように、00110000、すなわち、パターン48であろう。親パターンは、現在のノードに関する占有パターンをエントロピエンコーディングするための好適な確率分布を選択するための基礎としての役割を果たし得る。
【0105】
図9は、近隣が、面を共有するノードとして定義される現在のノードを包囲する近隣の組を図示する。この例において、ノード/サブボリュームは、立方体であり、画像の中心における立方体は、各面に1つずつの6つの近隣を有する。オクツリーにおいて、現在のノードの近隣は、3つの兄弟ノードを含むであろうことを理解されたい。それは、同じ親ノードを有していない3つのノードも含むであろう。故に、近隣ノードのうちのいくつかに関する占有データは、それらが兄弟であるので、利用可能であろうが、いくつかの近隣ノードに関する占有データは、それらのノードが以前にコーディングされたかどうかに応じて、利用可能であることも、そうではないこともある。特別な取り扱いが、欠落する近隣に対処するために適用され得る。いくつかの実装において、欠落する近隣は、占有されていると推定され得るか、または、占有されていないと推定され得る。近隣定義は、査定において追加の隣接するサブボリュームを含むために、共有される縁に基づいて、または共有される頂点に基づいて、近隣ノードを含むように拡大され得ることを理解されたい。
【0106】
前述のプロセスは、現在のノード302の占有データをエントロピコーディングするために、より好適なコンテキストを選択し、より正確な確率を使用するように、現在のノード302の占有の可能性を決定する試みにおいて、近傍ノードの占有を調べることを理解されたい。現在のノード302と面を共有する近隣ノードの占有ステータスが、そのうちの3つが縁のみを共有し、そのうちの1つが頂点のみを共有するであろう兄弟ノードの占有ステータスに基づくその査定より、現在のノード302が、隔離されている可能性が高いかどうかのより正確な査定であり得ることを理解されたい(オクツリーの場合)。しかしながら、兄弟の占有ステータスの査定が、査定のための全ての関連するデータが親ノードの一部である点においてモジュール式である利点を有し、それが実装のためのより小さいメモリフットプリントを有するが、近隣占有ステータスの査定が、将来の近傍ノードをコーディングすることに関連して近隣占有ステータスを決定するとき、それが必要とされる場合、ツリー占有データをバッファリングすることを伴うことを意味する。
【0107】
近隣の占有は、占有パターンに関して上で説明されるものと同様、ある値を各近隣に効果的に割り当てる走査順序において読み取られ得る。図示されるように、近隣ノードは、事実上、1、2、4、8、16、または32の値をとり、したがって、64(0~63)個の可能な近隣占有構成が、存在する。この値は、本明細書において、「近隣構成」と呼ばれ得る。例として、図10は、近隣1、2、4、および8が占有され、近隣16および32が空である近隣構成15の例を図示する。
【0108】
ある場合、2つの上記基準(親パターンおよび近隣構成)の両方が、適用され得るか、または、それらの間で選択され得る。例えば、近隣が利用可能である場合、確率分布選択は、近隣ノードに基づいて行われ得るが、しかしながら、近隣のうちの1つ以上が、それらが、まだコーディングされていないノードからのものであるので利用可能でない場合、確率分布選択は、兄弟ノード(親パターン)に基づく分析に戻り得る。
【0109】
なお別の実施形態において、確率分布選択は、代替として、または加えて、祖父母パターンに基づき得る。言い換えると、確率分布選択は、親ノード306の兄弟である叔父ノードの占有ステータスに基づき得る。
【0110】
またさらなる実装において、追加のまたは代替査定が、確率分布選択に組み込まれ得る。例えば、確率分布選択は、親ノードの近隣ノードまたは祖父母ノードの近隣ノードの占有ステータスを調べ得る。
【0111】
局所的占有ステータスを査定するための上記基準のうちのいずれか2つ以上が、いくつかの実装において、組み合わせて使用され得る。
【0112】
非バイナリエントロピコーダの場合、現在のノードに関する占有データは、確率分布を選択することによってコーディングされ得る。確率分布は、現在のノードに関する可能な占有パターンの数に対応するいくつかの確率を含む。例えば、オクツリーの占有パターンをコーディングする場合、2-1=255個の可能なパターンが、存在し、各確率分布が、255個の確率を含むことを意味する。いくつかの実施形態において、確率分布の数は、選択基準(すなわち、近隣、兄弟、および/または親占有データを使用すること)における可能な占有成果の数に等しくあり得る。例えば、オクツリーに関する親パターンが使用すべき確率分布を決定するための選択基準として使用される場合、各々が255個の確率を伴う255個の確率分布が、存在するであろう。近隣構成の場合、近隣が面を共有するものとして定義される場合、各分布が255個の確率を含む64個の確率分布が、存在するであろう。
【0113】
多すぎる分布は、データの不足(すなわち、コンテキスト希薄化)に起因して、緩慢な適応をもたらし得ることを理解されたい。故に、いくつかの実施形態において、類似するパターンは、同じ確率分布を使用するように、グループ化され得る。例えば、別個の分布が、完全占有された事例、垂直に向けられた事例、水平に向けられた事例、殆ど空の事例、および、全ての他の事例に対応するパターンのために使用され得る。これは、確率分布の数を約5つに低減させ得る。パターンの異なるグループ化が、異なる数の確率分布をもたらすために形成され得ることを理解されたい。
【0114】
ここで、親パターン依存コンテキストを使用する点群エントロピエンコーディングのプロセス400の一例証的実施形態を図式的に示す図11が、参照される。この例において、現在のノード402が、8つの子ノードに分割されており、その占有パターン404は、非バイナリエントロピエンコーダ406を使用してエンコードされるべきである。非バイナリエントロピエンコーダ406は、6つの可能な確率分布408のうちの1つから選択された確率分布を使用する。選択は、親パターンに基づき、すなわち、選択は、現在のノード402に対する親ノードからの占有情報に基づく。親パターンは、1~255の整数によって識別される。
【0115】
確率分布の選択は、パターンが、完全ノード(例えば、パターン=255)、水平構造(例えば、パターン=170または85、Z軸が垂直であると仮定して)、垂直構造(例えば、パターン=3、12、48、192)、低密度に取り込まれた分布(例えば、パターン=1、2、4、8、16、32、64、または128、すなわち、兄弟ノードのうちのいずれも占有されていない)、半低密度に取り込まれた分布(現在のノードおよび兄弟ノード間の占有ノードの合計数≦3)、および全ての他の事例に対応するかどうかを査定する決定ツリーであり得る。異なるカテゴリに関して示される例示的パターンは、単に、例である。例えば、「水平」カテゴリは、同じ水平レベル上に2つまたは3つの占有立方体を伴うパターンを含み得る。「垂直」カテゴリは、壁様配置における3つまたは4つの占有立方体を伴うパターンを含み得る。より微細な段階が使用され得ることも理解されたい。例えば、「水平」カテゴリは、各々に関して異なる確率分布を伴う立方体の上部部分において水平に、立方体の底部部分において水平にさらに細分化され得る。ある相関を有する占有パターンの他のグループ化も、行われ、対応する確率分布に配分され得る。近隣構成のコンテキストにおけるパターンのグループ化および近隣構成間の不変性に関するさらなる議論が、下でさらに記載される。
【0116】
図12は、近隣構成依存コンテキストを使用する点群エントロピエンコーディングのプロセス500の例証的実施形態を示す。この例は、図9に関連して上で使用される近隣および近隣構成付番の定義を仮定する。この例は、各近隣構成が、専用確率分布を有することも仮定し、64個の異なる確率分布が、存在することを意味する。現在のノード502は、エンコードされるべき占有パターン504を有する。確率分布は、現在のノード502の近隣ノードに基づいて選択される。すなわち、[0,63]における近隣構成NCが、見出され、関連付けられる確率分布を選択するために使用される。
【0117】
いくつかの実施形態において、近隣構成は、2つ以上の近隣構成が、パターンにおける類似性に基づいて、同じ確率分布を使用するようにグループ化され得ることを理解されたい。いくつかの実施形態において、プロセスは、分布のコンテキスト化(選択)のための近隣の異なる配置を使用し得る。全ての3つの軸上の対角線上に隣接する8つの近隣または2つの軸上の対角線上に隣接する12個の近隣等、追加の近隣が、追加され得る。特定の近隣を回避する実施形態も、例えば、深度優先走査における追加の従属を導入する近隣を使用することを回避するか、または、大きいツリーに関するコーデック状態を低減させるように特定の軸に対する従属のみを導入するために使用され得る。
【0118】
この例において、NC=0の事例が、具体的様式で取り扱われる。占有されているいかなる近隣も、存在しない場合、それは、現在のノード502が、隔離されていることを示し得る。故に、プロセス500は、現在のノード502に対する子ノードのいくつが占有されているかをさらにチェックする。1つの子ノードのみが占有されている場合(すなわち、占有数(NO)が1に等しい場合)、単一の子ノードが占有されていることを示すフラグが、エンコードされ、ノードに対するインデックスが、3ビットを使用してコーディングされる。2つ以上の子ノードが占有されている場合、プロセス500は、占有パターンをコーディングするために、NC=0確率分布を使用する。
【0119】
ここで、エンコードされた点群データのビットストリームをデコードするための一例示的方法600をフローチャート形態において示す図13が、参照される。
【0120】
動作602において、デコーダは、現在のノードの近傍の1つ以上のノードからの占有情報に基づいて、確率分布のうちの1つを選択する。上で説明されるように、占有情報は、現在のノードに対する親ノードからの親パターン、すなわち、現在のノードおよびその兄弟の占有であり得るか、または、それは、兄弟ノードのうちのいくつかを含み得る現在のノードの近隣ノードの占有であり得る。他のまたは追加の占有情報も、いくつかの実装において、使用され得る。
【0121】
確率分布が、選択されると、動作604において、デコーダは、現在のノードに関する占有パターンを再構成するために、選択された確率分布を使用して、ビットストリームの一部をエントロピデコーディングする。占有パターンは、エンコードされた点群データを再構成するようにツリーを再構成することにおいてデコーダによって使用される。点群データが、デコードされると、それは、ビューをレンダリングすること、セグメント化/分類、または他の用途のため等の使用のために、デコーダから出力され得る。
【0122】
動作606において、デコーダは、再構成された占有パターンに基づいて、確率分布を更新し、次いで、デコードすべきさらなるノードが、存在する場合、それは、バッファ内の次のノードに移動し、動作602に戻る。
【0123】
上で説明される方法の例示的実装は、コーディング複雑性の無視できる増加を伴う圧縮改良を提供することを証明している。近隣ベースの選択は、親パターンベースの選択より良好な圧縮性能を示すが、それは、さらなる算出複雑性およびメモリ使用を有する。いくつかの試験において、MPEG点群試験モデルに対する点あたりビットの相対的改良は、4~20%である。試験データを用いて到達した分布に基づいて確率分布を初期化することは、均一な分布を用いて初期化することと比較して、改良された性能につながることに留意されたい。
【0124】
上記の例のうちのいくつかは、占有パターンを示すために、非バイナリコーダを使用するツリーコーディングプロセスに基づく。バイナリエントロピコーダを採用するための新しい発展が、下でさらに提示される。
【0125】
近隣ベースの確率分布選択の一変形例において、分布の数は、近隣の対称性を活用することによって低減させられ得る。近隣を置き換えるか、または、パターン分布を置き換えることによって、対称線を有する構造的に類似する構成は、同じ分布を再使用することができる。言い換えると、同じパターン分布を使用できる近隣構成は、あるクラスにグループ化され得る。2つ以上の近隣を含むクラスは、近隣構成のうちの1つが、それらの他の構成の反射または置き換えを用いて他の近隣構成を事実上包含する点において、本明細書では「近隣構成」と称され得る。
【0126】
例として、各々が角近隣パターンの対称性を表す8つの角パターンNC∈[21,22,25,26,37,38,41,42]を考慮する。NCのこれらの値は、ノードの特定のパターンであるが、異なるパターンとかなり互いに関係付けられている可能性が高い。さらに、これらの互いに関係があるパターンは、近隣パターンと同じ対称性に従う可能性が高い。例として、その分布の確率を置き換えることによって、NCの複数の事例を表すために単一の分布を再使用する方法が、実装され得る。
【0127】
エンコーダが、子ノードの占有に基づいて、ノードのパターン番号を導出する。エンコーダは、近隣構成に従って、分布および置き換え関数を選択する。エンコーダは、置き換え関数に従って、分布内に含まれる確率を再順序付けし、続けて、パターン番号を算術的にエンコードするために、置き換えられた分布を使用する。算術エンコーダによる置き換えられた分布の確率の更新は、逆置き換え関数を用いて元々の分布に戻るようにマッピングされる。
【0128】
対応するデコーダが、最初に、近隣構成に従って、同じ分布および置き換え関数を選択する。置き換えられた分布が、エンコーダと同じ様式で生成され、置き換えられた分布は、パターン番号をエントロピデコーディングするために算術デコーダによって使用される。パターン番号を備えているビットは、次いで、各々、対応する子に割り当てられる。
【0129】
同じ置き換えが、分布自体のデータを再順序付けすることなく、むしろ、間接レベルを導入し、分布内の所与のインデックスのルックアップを置き換えるために置き換え関数を使用して達成され得ることに留意されたい。
【0130】
代替実施形態は、分布ではなく、パターン自体の置き換えを考慮し、エントロピエンコーディングに先立って、またはデコーディングの後にシャッフルを可能にする。そのような方法は、ビット単位シャッフル動作を通した効率的な実装により適している可能性が高い。この場合、分布のいかなる再順序付けも、エンコーダまたはデコーダのいずれによっても実施されず、むしろ、エンコードされたパターン番号の算出は、
【数1】

であるように修正され、式中、cは、i番目の子の占有状態であり、σ(i)は、置き換え関数である。1つのそのような例示的置き換え関数
【数2】

は、NC=22に関する分布が、NC=41のそれために使用されることを可能にする。置き換え関数は、
【数3】

を使用して、エンコードされたパターン番号から子ノードの占有状態を導出するためにデコーダによって使用され得る。
【0131】
要求される置き換えを導出する方法は、近隣構成の回転対称性に基づき得るか、または、特定の軸に沿った反射に基づき得る。さらに、置き換えが、例えば、対称性に従って、全ての位置を置き換えることは、必要ではなく、部分的置き換えが、代わりに使用され得る。例えば、NC=22をNC=41に置き換えるとき、対称軸における位置は、置き換えられないこともあり、マッピング
【数4】

につながり、式中、位置0、2、4、6は、置き換えられない。他の実施形態において、対1および7のみが、置換される。
【0132】
回転対称性および反射に基づく実施形態の例が、以降で、現在の立方体と共通面を共有する6つの近隣を伴うオクツリーの具体的事例に関して提供される。一般性を失うことなく、図16に示されるように、Z軸は、図を視認する方向に対して垂直に延びている。次いで、「上方」(「下方」)等の近隣の相対的位置は、増加する(減少する)Z方向におけるZ軸に沿ったものとして理解されるべきである。同じことが、X軸に沿った左側/右側およびY軸に沿った前側/後側に関しても適用される。
【0133】
図16は、Z、Y、およびX軸に沿った3つの回転2102、2104、および2106を示す。これらの3つの回転の角度は、90度であり、すなわち、それらは、それらのそれぞれの軸に沿って4分の1回りの回転を実施する。
【0134】
図17は、Z軸に沿った回転2102の1回または数回の反復下の近隣構成の不変性のクラスを示す。この不変性は、XY平面に属する任意の方向に沿った点群幾何学形状の同じ統計的挙動を表す。これは、特に、XY平面によって局所的に近似される地表面上を移動する自動車のユースケースに当てはまる。水平構成は、上方の近隣(2202)および下方の近隣(2204)の占有から独立して、4つの近隣(現在の立方体の左側、右側、前側、および後側に位置する)の所与の占有である。4つの水平構成2206、2208、2210、および2212は、回転2102下で不変性の同じクラスに属する。同様に、2つの構成2214および2216は、不変性の同じクラスに属する。回転2102下で不変性の6つのクラス(クラス2218の組下でグループ化される)のみが、存在する。
【0135】
垂直構成は、現在の立方体の左側、右側、前側、および後側に位置する4つの近隣の占有から独立して、2つの近隣2202および2204の所与の占有である。図18に示されるように、4つの可能な垂直構成が、存在する。その結果、Z軸に沿った回転2102に対する不変性を考慮する場合、6×4=24個の可能な構成が、存在する。
【0136】
Z軸に沿った反射2108が、図16に示される。図18に描写される垂直構成2302および2304は、反射2108下で不変性の同じクラスに属する。反射2108下で不変性の3つのクラス(クラス2306の組下でグループ化される)が、存在する。反射2108下の不変性は、上向きおよび下向き方向が、点群幾何学形状統計の観点から本質的に同じに挙動することを意味する。これは、道路上の移動する自動車に関して正確な仮定である。
【0137】
回転2102および反射2108の両方の下での不変性を仮定する場合、2つの組2218および2306の積からもたらされる不変性の18個のクラスが、存在する。これらの18個のクラスは、図19に表される。
【0138】
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個のクラスにつながる。
【0139】
本明細書の上で提供される例から、3つの回転および反射下の不変性を仮定するかどうかにかかわらず、有効近隣構成、すなわち、64個の近隣構成がグループ化され得るクラスの数は、64、24、18、または10のいずれかである。
【0140】
エントロピコーディングに先立って、パターンは、近隣構成が、不変性クラスのうちの1つに確かに属するので、同じ変換、すなわち、回転および反射を受ける。これは、不変近隣構成とコーディングされたパターンとの間の統計的一貫性を保全する。
【0141】
ツリーのトラバーサル中、子ノードが以前に訪問された同じツリー深度におけるある近隣ノードを有し、従属として必然的に使用され得ることを理解されたい。これらの同じレベルの近隣(すなわち、子ノードと同じレベルにおける)に関して、親と併置された近隣を参照する代わりに、同じレベルの近隣が、使用され得る。同じレベルの近隣は、親の半分の次元を有するので、1つの構成は、4つの直接隣接する近隣子ノード(すなわち、現在のノードと面を共有する4つ)のうちのいずれかが占有されている場合、近隣が占有されていると見なす。故に、下でより詳細に説明されるであろうように、現在のノードの近隣構成は、現在のノードの近隣ノードの占有データに基づいて、近隣ノードのうちの少なくとも1つの子ノードに関する占有データにさらに基づいて決定され得る。故に、現在のノードの占有パターンをエントロピコーディング(例えば、バイナリエントロピコーディング)するためのそれぞれのエントロピコーダに関連付けられた1つ以上の確率が、現在のノードの複数の(同じレベル、すなわち、現在のノードと同じレベルにおける)近隣ノードに関する占有データに基づくのみならず、複数の(同じレベルの)近隣ノードのうちの少なくとも1つ(可能性として、全て)の子ノードに関する占有データにも基づいて選択され得る。
【0142】
ここで、現在のノード(すなわち、その関連付けられた(サブ)ボリュームまたは現在の(サブ)ボリューム)4000およびその6つの近隣4010、4020、4030、4040、4050、および4060を示す図27が、参照される。オクツリーのこの例に関して、現在のノードの近隣は、その関連付けられたボリュームが、現在のボリュームと面を共有する(ツリーの同じレベルまたは深度における)それらのノードであり得る。近隣ノードの他の定義も、同様に実行可能である。例えば、現在のノードの近隣は、それらの関連付けられたボリュームが現在のボリュームと縁(または頂点)を共有する(ツリーの同じレベルまたは深度における)それらのノードであり得る。一般に、ツリー構造にかかわらず、近隣ノードは、それらの関連付けられたボリュームが現在のボリュームと交差する(ツリーの同じレベルまたは深度における)それらのノードであり得る。
【0143】
本願の文脈において、互いに交差するボリューム(ノード)は、隣接するボリューム(ノード)であることを理解されたい。故に、用語「~との交差を有する」および「~に隣接する」は、本願の文脈において同義と見なされ得る。
【0144】
着目すべきこととして、表現「ボリューム」および「サブボリューム」は、各サブボリューム自体が、サブボリュームに細分化され得るボリュームであるという意味で、若干同義的に使用され得る。いずれの場合も、ボリューム/サブボリューム関係は、関与するノード/ボリューム間の親子関係の規定によって明確であると理解される。
【0145】
ノードの走査順序は、幅優先で、増加するX順に、次いで、増加するY順に、最後に、増加するZ順に実施されると仮定される。そうすることによって、最も低いX座標(すなわち、近隣4010)、最も低いY座標(すなわち、近隣4030)、および最も低いZ座標(すなわち、近隣4050)を伴う3つの近隣が、すでにコーディングされている。したがって、これらの3つの近隣のうちの1つが、占有されている場合、占有近隣に関連付けられた占有サブボリュームの構成は、既知である。この例は、増加するX順、次いで、増加するY順、最後に、増加するZ順における走査順序を定義するが、他の幅優先走査順序も、この目的のために使用されることができる。
【0146】
ここで、全ての3つのすでにコーディングされた近隣(すなわち、近隣4010、4030、および4050)が占有されている例示的現在のボリュームを示す図28が、参照される。近隣4010の占有サブボリュームは、サブボリューム4011、4012、および4013であり、近隣4030の占有サブボリュームは、サブボリューム4031、4032、および4033であり、近隣4050の占有サブボリュームは、サブボリューム4051および4052である。この例において、全ての3つのすでにコーディングされた近隣が、占有されているが、一般に、それらのうちの2つまたは1つのみが、実際に占有されていることも、それらのうちのいずれも実際に占有されないこともあることを理解されたい。
【0147】
すでにコーディングされた占有近隣の占有サブボリュームの知識は、近隣占有構成の算出において、近隣の占有ステータスを精緻化するために使用されることができる。ここで、近隣4010が、占有サブボリューム4014および4015を有し、それらのうちのいずれも、現在のボリューム4000と面を共有していない図29(a)が、参照される。この場合、近隣占有構成の算出において、近隣4010を占有されていないと見なすことが、有利であり得る。図29(b)において、近隣4010のサブボリューム4016および4017のうちの少なくとも1つは、現在のボリューム4000と面を共有する。この場合、近隣4010は、近隣占有構成の算出において、占有されていると見なされる。
【0148】
ここで、圧縮された点群データのビットストリームを発生させるために点群をエンコードする方法4100の例をフローチャート形態において示す図30が、参照される。点群は、親子関係を有する複数のノードを有し、サブボリュームに再帰的に分割され、点群の点を含むボリューム空間の幾何学形状を表すツリー構造(例えば、オクツリー)として定義される。下で説明される方法4100の動作の各々は、さらなるサブボリュームに分割される(サブ)ボリュームに関連付けられた現在のノードに関して実施され、各さらなるサブボリュームは、現在のノードの子ノードに対応する。動作4110において、現在のノードに関する占有パターンが、子ノードの占有ステータスに基づいて決定される。動作4120において、それぞれのエントロピコーダに関連付けられた1つ以上の確率(例えば、コンテキスト)が、占有パターンをエントロピエンコーディングするために選択される。この選択することは、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つ(可能性として、近隣ノードの全て)の子ノードに関する占有データに基づく。動作4130において、占有パターンは、関連付けられた1つ以上のエントロピコーダを使用して、選択された1つ以上の確率に基づいて、エントロピエンコーディングされ、ビットストリームに関するエンコードされたデータを生成する。
【0149】
いくつかの実装において、方法4100は、占有パターンに基づいて、1つ以上の選択された確率を更新する動作(図30に図示せず)をさらに含み得る。
【0150】
現在のノードの占有パターンは、非バイナリエントロピコーダを使用してエントロピコーディングされ得る。この場合、方法4100の動作4120において1つ以上の確率を選択することは、占有パターンをエントロピコーディングするための確率分布(および関連付けられる非バイナリエントロピコーダ)を選択することに対応するか、または、それを伴い得る。1つ以上の選択された確率を更新することは、次いで、選択された確率分布を更新することに対応するか、または、それを伴い得る。
【0151】
一方、下でより詳細に説明されるであろうように、現在のノードの占有パターンは、1つ以上のバイナリエントロピコーダのカスケードを使用してエントロピコーディングされ得る。故に、方法4100の動作4120は、占有パターンを表すビットシーケンスの各ビットのために、そのビットをコーディングするためのそれぞれの確率(および対応して、関連付けられたエントロピコーダ)を選択することを伴い得る。この確率を選択することは、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つ(可能性として、全て)の子ノードに関する占有データに基づき得る。加えて、この確率を選択することは、ビットシーケンスのすでにコーディングされたビットの部分的シーケンスに基づき得る。換言すると、ビットシーケンスの各ビットのために、コンテキストが、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つ(可能性として、全て)の子ノードに関する占有データに基づいて選択され得る。加えて、コンテキストを選択することは、ビットシーケンスのすでにコーディングされたビットの部分的シーケンスに基づき得る。コンテキストの観点から、方法4100の動作4120は、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つ(可能性として、全て)の子ノードに関する占有データに基づいて、占有パターンをエントロピコーディングするためのコンテキストを選択することに関すると考えられ得る。次いで、いくつかの実装において、このコンテキストは、占有パターンに基づいて、更新され得る。
【0152】
ここで、再構成された点群を生成するために圧縮された点群データのビットストリームをデコードする方法4200の例をフローチャート形態において示す図31が、参照される。点群は、親子関係を有する複数のノードを有し、サブボリュームに再帰的に分割され、点群の点を含むボリューム空間の幾何学形状を表すツリー構造(例えば、オクツリー)において定義される。下で説明される方法4200の動作の各々は、さらなるサブボリュームに分割されるサブボリュームに関連付けられた現在のノードに関して実施され、各さらなるサブボリュームは、現在のノードの子ノードに対応する。動作4210において、占有パターンをエントロピデコーディングするためのそれぞれのエントロピコーダに関連付けられた1つ以上の確率が、選択される。この選択することは、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つの子ノードの占有データに基づく。動作4220において、ビットストリームは、1つ以上の関連付けられたエントロピコーダを使用して、選択された1つ以上の確率に基づいて、エントロピデコーディングされ、子ノードの占有を示す現在のノードに関する再構成された占有パターンを生成する。いくつかの実装において、方法4200は、再構成された占有パターンに基づいて、1つ以上の選択された確率を更新する動作(図31に図示せず)をさらに含み得る。
【0153】
現在のノードの占有パターンは、非バイナリエントロピコーダを使用してエントロピコーディングされ得る。この場合、方法4200の動作4210において1つ以上の確率を選択することは、占有パターンをエントロピコーディングするための確率分布(および関連付けられる非バイナリエントロピコーダ)を選択することに対応するか、または、それを伴い得る。1つ以上の選択された確率を更新することは、次いで、選択された確率分布を更新することに対応するか、または、それを伴い得る。
【0154】
一方、現在のノードの占有パターンは、1つ以上のバイナリエントロピコーダのカスケードを使用してエントロピコーディングされ得る。次いで、エンコーディングに関するものと同一様式で、方法4200の動作4210は、占有パターンを表すビットシーケンスの各ビットのために、そのビットをコーディングするためのそれぞれの確率(および対応して、関連付けられたエントロピコーダ)を選択することを伴い得る。この確率を選択することは、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つ(可能性として、全て)の子ノードに関する占有データに基づき得る。加えて、この確率を選択することは、ビットシーケンス内のすでにコーディングされたビットの部分的シーケンスに基づき得る。換言すると、ビットシーケンスの各ビットのために、コンテキストが、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つ(可能性として、全て)の子ノードに関する占有データに基づいて選択され得る。加えて、コンテキストを選択することは、ビットシーケンス内のすでにコーディングされたビットの部分的シーケンスに基づき得る。コンテキストの観点から、方法4200の動作4210は、現在のノードの複数の近隣ノードに関する占有データおよび複数の近隣ノードのうちの少なくとも1つ(可能性として、全て)の子ノードに関する占有データに基づいて、占有パターンをエントロピコーディングするためのコンテキストを選択することに関すると考えられ得る。次いで、いくつかの実装において、このコンテキストは、再構成された占有パターンに基づいて、更新され得る。
【0155】
方法4100および方法4200のいくつかの実装において、動作4120および4210におけるそれぞれの選択は、近隣構成に基づき得る。上で説明されるように、近隣構成は、現在のノードの(同じレベルの)近隣ノードに関する占有データに基づいて決定されることができる。さらに、複数の近隣ノードのうちの少なくとも1つ(可能性として、全て)の子ノードに関する占有データは、近隣構成の計算を適応させるために使用され得る。特に、複数の近隣ノードのうちの所与の1つの子ノードに関する占有データは、所与の近隣ノードが、近隣構成を計算する目的のために占有されていると見なされるべきかどうかを決定するために使用され得る。近隣構成の計算のそのような適応の一例が、図32を参照して説明されるであろう。
【0156】
ここで、近隣構成の算出において、近隣(近隣ノード)の占有を決定するための一例示的方法4300をフローチャート形態において示す図32が、参照される。方法は、現在のボリュームに関して、現在のボリュームの近隣構成を決定するために実施される。動作4310において、現在のボリュームの近隣が、選択される。各選択された近隣に関して、近隣の占有が、動作4330においてチェックされる。近隣が、占有されていない(動作4330において「いいえ」である)場合、方法は、動作4340に進み、選択された近隣は、近隣占有構成の算出において、占有されていない(例えば、ゼロである占有ビットを有する)と見なされるであろう。すなわち、そのような近隣の占有は、近隣構成の決定のためにそのままとられる。方法は、続けて、動作4320に進む。選択された近隣が、占有されている(動作4330において「はい」である)場合、この近隣が、すでにコーディングされているかどうかが、動作4350においてチェックされる。それが、まだコーディングされていない(動作4350において「いいえ」である)場合、方法は、動作4360に進み、まだコーディングされていない近隣は、近隣占有構成の算出において、占有されていると見なされるであろう。そのような近隣に関しても、その占有は、近隣構成の決定のためにそのままとられる。方法は、続けて、動作4320に進む。選択された近隣が、すでにコーディングされている(動作4350において「はい」である)場合、すでにコーディングされた近隣の占有サブボリュームのうちの少なくとも1つが現在のボリュームと面を共有するかどうかが、動作4370においてチェックされる。一般的に言えば、すでにコーディングされた近隣の占有サブボリュームのうちの少なくとも1つが現在のボリュームと交差するかどうかが動作4370においてチェックされる。それが該当する(動作4370において「はい」である)場合、方法は、動作4360に進み、すでにコーディングされた近隣は、近隣構成の算出において、占有されていると見なされるであろう。したがって、そのような近隣に関しても、その占有は、近隣構成の決定のためにそのままとられる。そうでなければ(動作4370において「いいえ」である)、方法は、動作4340に進み、すでにコーディングされた近隣は、近隣構成の算出において、占有されていないと見なされるであろう。すなわち、その近隣の占有ビットは、(意図的に/人為的に)近隣構成の決定において、ゼロに設定されるであろう。方法は、続けて、動作4320に進む。動作4320において、選択されていない現在のボリュームの近隣が存在するかどうかが、チェックされる。該当する(動作4320において「はい」である)場合、方法は、現在のボリュームの次の近隣を選択するために、動作4310に戻る。全ての近隣が、処理される(動作4320において「いいえ」である)と、近隣構成は、動作4340または動作4360において決定される近隣のそれぞれの占有(例えば、占有ビット)に応じて、動作4380において算出される。この算出は、上で説明されるものと同じ様式で進み得るが、しかしながら、動作4340および4360において決定されるような現在のボリュームの近隣の占有を考慮する。その点で、動作4340は、それぞれの近隣の占有データのみに基づく直接決定に対する占有を修正すると考えられ得る。同様に、決定された近隣構成は、すでにコーディングされた近隣のサブボリュームに関する占有データを考慮しない直接決定に対して修正されていると考えられ得る。
【0157】
近隣の修正された占有を使用して決定される(修正された)近隣構成は、ビットストリーム内の非アクティブ化フラグが、元々の近隣構成が、使用されるべきであることを示さない限り、方法4100の動作4120および方法4200の動作4210において、1つ以上の確率を選択するために使用され得る。これは、下でより詳細に説明される。
【0158】
方法4100、4200、および4300は、点群の幾何学形状に対して、すでにコーディングされた占有近隣のサブボリュームを考慮しない近隣構成の直接決定に対して1%を上回る圧縮利得を提供することを証明している。
【0159】
本明細書の上で説明される方法は、現在のボリュームと面を共有する近隣(または近隣のサブボリューム)に限定されないことを理解されたい。例えば、現在のボリュームの近隣は、現在のボリュームと面または縁を共有する全てのそれらの同じレベルのボリュームであり得る。したがって、方法4300の動作4370における基準は、近隣が、現在のボリュームと面または縁を共有する占有サブボリュームを有するかどうかのチェックに置換される必要性があるであろう。そのような近隣定義の例が、図33に図示される。別の例として、現在のボリュームの近隣は、現在のボリュームと面、縁、または頂点を共有する全てのそれらの同じレベルのボリュームであり得る。したがって、方法4300の動作4370における基準は、近隣が、現在のボリュームと面、縁、または頂点を共有する占有サブボリュームを有するかどうかのチェックに置換される必要性があるであろう。そのような近隣定義の例が、図34に図示される。
【0160】
一般的な場合、現在のボリュームの近隣は、現在のボリュームと交差する全てのそれらの同じレベルのボリュームであり得る。さらに、現在のボリュームの近隣の定義にかかわらず、方法4300の動作4370における基準は、近隣が、現在のボリュームと交差する占有サブボリュームを有するかどうかのチェックに置換され得る。言い換えると、方法4100、4200、および4300は、関連付けられたボリュームを伴うノードの任意のツリーに適用されることができ、現在のノードの近隣ノードは、現在のノードと同じ深度(レベル)を有し、関連付けられたボリュームが、現在のノードに関連付けられた現在のボリュームとの空ではない交差を有するノードとして定義されることを理解されたい。例えば、この交差は、面、縁、頂点、または点の任意の空ではない組であり得る。すでにコーディングされた占有近隣は、その占有子ノードのうちの少なくとも1つが現在のボリュームとの空ではない交差を有する関連付けられたボリュームを有する場合、その場合にのみ、近隣占有構成の算出において、占有されていると見なされるであろう。
【0161】
ここで、現在のボリューム4000と縁を共有する近隣ボリューム4070を示す図33が、参照される。図33(a)において、近隣4070は、占有サブボリューム4071および4072を有し、それらのうちのいずれも、現在のボリューム4000と縁を共有しない。この場合、近隣4070は、近隣占有構成の算出において、占有されていないと見なされる。図33(b)において、近隣4070のサブボリューム4073および4074のうちの少なくとも1つが、現在のボリューム4000と縁を共有する。この場合、近隣4070は、近隣占有構成の算出において、占有されていると見なされる。
【0162】
ここで、現在のボリューム4000と頂点を共有する近隣ボリューム4080を示す図34が、参照される。図34(a)において、近隣4080は、占有サブボリューム4081および4082を有し、それらのうちのいずれも、現在のボリューム4000と頂点を共有しない。この場合、近隣4080は、近隣占有構成の算出において、占有されていないと見なされる。図34(b)において、近隣4070のサブボリューム4083および4084のうちの少なくとも1つが、現在のボリューム4000と頂点を共有する。この場合、近隣4078は、近隣占有構成の算出において、占有されていると見なされる。
【0163】
方法4100、4200、および4300は、高密度仮想現実指向点群に対して、1%を上回る圧縮利得、すなわち、圧縮されたビットストリームサイズの1%を上回る低減を提供することが観察されている。これらは、方法の単純さに対して着目すべき利得である。
【0164】
しかしながら、例えば、移動する車両に取り付けられるLiDARによって捕捉される低密度の点群に対して、これらの方法は、殆どまたは全く利得を示さないこともある(またはさらには極端に低密度の点群においてわずかな損失を示し得る)。したがって、現在のボリュームの近隣の占有の適応のアクティブ化(フラグ値1)または非アクティブ化(フラグ値0)を示すフラグをビットストリームに追加することが、有利であり得る。非アクティブ化は、近隣が、その占有サブノードの場所から独立して、近隣占有構成の算出において、占有されている/占有されていないと見なされることを意味する。
【0165】
(バイナリコーディングを使用するツリー占有パターンのエントロピコーディング)
ツリー占有をコーディングするために近隣占有情報を使用する上で説明される技法のうちのいくつかは、欧州特許出願第18305037.6号に詳述されている。説明される実施形態は、パターン分布が、近隣占有情報に基づいて選択される占有パターンの非バイナリエントロピコーディングの使用に焦点を当てている。しかしながら、いくつかのインスタンスにおいて、バイナリコーダの使用が、ハードウェア実装の観点からより効率的であり得る。さらに、多くの確率のオンザフライ更新は、高速アクセスメモリおよび算術コーダの中心部内での算出を要求し得る。故に、バイナリ算術コーダを使用して占有パターンをエントロピエンコーディングする方法およびデバイスを見出すことが、有利であり得る。圧縮性能を著しく劣化させることなく、かつ追跡すべき圧倒的な数のコンテキストを有することを防ぎながらそれが行われ得る場合、バイナリコーダを使用することが、有利であろう。
【0166】
非バイナリコーダの代わりのバイナリコーダの使用は、以下のエントロピ公式に反映される。
H(X,X|Y)=H(X|Y)H(X|Y,X
【0167】
式中、X=(X,X)は、コーディングされるべき非バイナリ情報であり、Yは、コーディングのためのコンテキスト、すなわち、近隣構成または選択されたパターン分布である。Xの非バイナリコーディングをバイナリコーディングに変換するために、情報(X,X)は、エントロピを増加させることなく別個にコーディングされ得る情報XおよびXに分割される。そのために、他方に依存する2つのうちの一方をコーディングしなければならず、ここにおいて、Xは、Xに依存する。これは、Xにおけるnビットの情報に拡張されることができる。例えば、n=3に関して、以下である。
H(X,X2,|Y)=H(X|Y)H(X|Y,X)H(X|Y,X,X
【0168】
占有パターン、すなわち、ビットシーケンスXが、より長くなるにつれて、シーケンス内の後半のビットをコーディングするためのより多くの条件が、存在することを理解されたい。バイナリコーダ(例えば、CABAC)に関して、これは、追跡および管理すべきコンテキストの数の大幅な増加を意味する。例としてオクツリーを使用すると、占有パターンが、8ビットシーケンスb=b・・・bである場合、ビットシーケンスは、8つのバイナリ情報ビットb・・・bに分割され得る。コーディングは、コンテキストを決定するための近隣構成N(またはNC)を使用し得る。上で説明されるように、不変性のクラスへの近隣構成のグループ化を通して、近隣構成を10個の有効近隣構成に低減させ得ると仮定すると、Nは、{0,1,2,・・・,9}に属する整数である。省略のために、「不変近隣構成のクラス」は、本明細書において、随時、単純に、「近隣構成」と称され得るが、この低減させられた数の近隣構成は、不変性に基づく近隣構成のクラスベースのグループ化に基づいて実現され得ることを理解されたい。
【0169】
図21は、バイナリエントロピコーディングのための8つの個々のビットへの8ビットパターンまたはシーケンスの分割を図示する。シーケンスの最初のビットは、近隣構成に基づいてエンコードされ、したがって、合計10個の利用可能なコンテキストが、存在することに留意されたい。シーケンスの次のビットは、近隣構成と任意の以前にエンコードされたビット、すなわち、ビットbに基づいてエンコードされる。これは、合計20個の利用可能なコンテキストを伴う:Nからの10とbからの2との積として取得される。最終ビットbは、Nからの10と以前にエンコードされたビットb,・・・,bによって与えられる部分的パターンからの128との積として取得される1,280個の利用可能なコンテキストから選択されるコンテキストを使用してエントロピエンコーディングされる。すなわち、各ビットのために、コンテキストの数(すなわち、条件/従属の可能な組み合わせ)は、定義される近隣構成の数(この例において、クラスへの64個の近隣構成のグループ化に基づいて、10)と、n-1個の以前にエンコードされたビットの順序付けられたシーケンスからの可能な部分的パターンの数(2n-1によって与えられる)との積である。
【0170】
その結果、占有パターンのバイナリコーディングに関連して維持すべき合計2,550個のコンテキストが、存在する。これは、追跡すべき過剰に多数のコンテキストであり、相対的不足は、特に、シーケンス内の後半のビットに関して、コンテキスト希薄化により、不良な性能を引き起こし得る。
【0171】
故に、一側面において、本願は、コンテキストの組が、低減させられ得るかどうかを決定し、該当する場合、コンテキスト低減動作を適用し、バイナリコーダを使用して占有パターンの少なくとも一部をエントロピコーディングするための利用可能なコンテキストのより小さい組を実現するエンコーダおよびデコーダを開示する。別の側面において、本願は、固定数のコンテキストからの有効コンテキスト選択を実施するために、同じコンテキスト低減動作を使用して状態低減の1回以上の工程を適用するエンコーダおよびデコーダをさらに開示する。いくつかの実装において、コンテキスト低減は、コンテキストおよび/またはアルゴリズム条件文のルックアップテーブルを発生させることにおいて先験的に適用され、それらは、次いで、好適なコンテキストを選択することにおいてエンコーダまたはデコーダによって使用される。低減は、選択すべきルックアップテーブル、または選択されたコンテキストを取得するためにそのルックアップテーブルをインデックス化する/それから選択する方法を決定するために、エンコーダおよびデコーダが評価する試験可能条件に基づく。
【0172】
ここで、図22が、参照され、図22は、フローチャート形態において、バイナリコーディングを使用してツリーベースの点群コーダにおいて占有パターンをコーディングするための一例示的方法3000を示す。方法3000は、エンコーダまたはデコーダによって実装され得る。エンコーダの場合、コーディング動作は、エンコーディングであり、デコーダの場合、コーディング動作は、デコーディングである。エンコーディングおよびデコーディングは、コンテキストベースのエントロピエンコーディングおよびデコーディングである。
【0173】
例示的方法3000は、特定のノード/ボリュームに関する占有パターン、すなわち、ビットシーケンスをエントロピコーディングするためである。占有パターンは、ノード/ボリュームの子ノード(サブボリューム)の占有ステータスを示す。オクツリーの場合、8つの子ノード/サブボリュームが、存在する。動作3002において、近隣構成が、決定される。近隣構成は、占有パターンがコーディングされるべきボリュームの近隣に位置している1つ以上のボリュームの占有ステータスである。上で議論されるように、近隣構成を決定するための種々の可能な実装が、存在する。いくつかの例において、10個の近隣構成が、存在し、現在のボリュームに関する近隣構成は、現在のボリュームと面を共有する6つのボリュームの占有に基づいて識別される。
【0174】
動作3004において、現在のボリュームの子ノードに対するインデックスiが、0に設定される。次いで、動作3006において、コンテキスト低減が、可能であるかどうかに関する査定が、行われる。異なる可能なコンテキスト低減動作が、下でより詳細に議論される。コンテキスト低減が、可能であるかどうかの査定は、例えば、コーディングされているビットシーケンス内のビット(例えば、インデックス値)に基づき得る。ある場合、コンテキスト低減は、シーケンス内の後半のビットに関して可能であるが、最初の数ビットに関して可能ではないこともある。コンテキスト低減が、可能であるかどうかの査定は、例えば、ある近隣構成が、単純化を可能にし得るので、近隣構成に基づき得る。追加の因子が、いくつかの実装において、コンテキスト低減が、可能であるかどうかを査定することにおいて使用され得る。例えば、バイナリコーダがビットをコーディングするために使用し得るコンテキストの最大数として上境界Boが提供され得、ビットをコーディングするためのコンテキストの初期数がBoより大きい場合、コンテキスト低減が、低減後のコンテキストの数が最大でBoになるように適用される(そうでなければ、それは、適用されない)。そのような境界Boは、Bo個のコンテキストに対処することが可能なソフトウェアまたはハードウェア実装が、常時、コンテキストの数の観点からオーバーフローを発生させることなく点群をエンコードおよび/またはデコードすることが可能であろうことを確実にするために、エンコーダおよび/またはデコーダ仕様において定義され得る。事前に境界Boを把握することは、バイナリエントロピコーダによって誘発される複雑性およびメモリフットプリントを予測することも可能にし、したがって、ハードウェアの設計を促進する。Boに関する典型的な値は、10~数百である。
【0175】
コンテキスト低減が、利用可能であると決定される場合、動作3008において、コンテキスト低減動作が、適用される。コンテキスト低減動作は、利用可能なコンテキストの組内の利用可能なコンテキストの数を、より少ない合計コンテキストを含むより小さい組に低減させる。利用可能なコンテキストの数は、コンテキストが、ビットシーケンスからの以前にコーディングされたビットの部分的パターンに依存し得るので、部分的にシーケンス内のビット位置に依存し得ること、すなわち、インデックスに依存し得ることを思い返されたい。いくつかの実装において、低減前の組内の利用可能なコンテキストの数は、以前にコーディングされたビットを伴う可能な部分的パターンの数を乗算された近隣構成の数に基づき得る。インデックスiにおけるビットに関して、iが、0~nに及ぶ場合、部分的パターンの数は、2によって与えられ得る。
【0176】
上記のように、いくつかの実装において、コンテキスト低減動作は、コーディングに先立って実行され、結果として生じる低減させられたコンテキスト組は、コーディング動作中のエンコーダおよびデコーダによる使用のために利用可能なコンテキスト組である。コーディング中の低減させられたコンテキスト組の使用および/または選択は、コンテキストの数が低減させられることが可能であることを決定するための動作3006において評価される条件に対応するそれらの低減させられた組の使用に先行する1つ以上の条件の評価に基づき得る。例えば、低減させられたコンテキスト組の使用を可能にする特定の近隣構成の場合、エンコーダおよび/またはデコーダは、近隣構成条件が満たされているかどうかを最初に決定し、次いで、該当する場合、対応する低減させられたコンテキスト組を使用し得る。
【0177】
動作3010において、ビットbに関するコンテキストが、決定され、すなわち、ビットbに関するコンテキストが、近隣構成と、ビットシーケンス内の以前にコーディングされたビットの部分的パターンとに基づいて、利用可能なコンテキストの組(または存在する場合、低減させられた組)から選択される。現在のビットは、次いで、動作3012において、選択されたコンテキストを使用して、バイナリコーダによってエントロピエンコーディングされる。
【0178】
動作3014において、インデックスiが、現在コーディングされているビットがシーケンス内の最後のビットである場合、すなわち、iが、imaxに等しいことを示す場合、コーディングプロセスは、次のノードに進む。そうでなければ、インデックスiは、動作3016において増加させられ、プロセスは、動作3006に戻る。
【0179】
いくつかの実装において、コンテキスト選択は、近隣構成に依存しないこともあることを理解されたい。ある場合、それは、存在する場合、シーケンス内の以前にコーディングされたビットの部分的パターンにのみ依存し得る。
【0180】
例示的エンコーダ3100の一部の簡略化ブロック図が、図23に図示される。この図示において、対応するボリュームが子ノードに区画され、点群の幾何学形状を保持するFIFOバッファ3104を通して循環させられるにつれて占有パターン3102が取得されることを理解されたい。占有パターン3102のコーディングは、パターンの各ビットのために1つずつのバイナリコーダ3106のカスケードを伴うものとして図示される。利用可能なコンテキストを利用可能なコンテキストのより小さい組に低減させるように動作するコンテキスト低減動作3108が、バイナリコーダ3106のうちの少なくともいくつかの間にある。
【0181】
図23は、一連のバイナリコーダ3106を図示するが、いくつかの実装において、1つのみのバイナリコーダが、使用される。2つ以上のコーダが使用される場合、コーディングは、(部分的に)並列化され得る。ビットシーケンス内の先行するビットへの1つのビットのコンテキスト依存を所与として、パターンのコーディングは、必ずしも完全に並列化されることができないが、ある程度の並列化および速度改良を達成するために、あるパターンに関して、カスケーディングバイナリコーダを使用することを通してパイプライニングを改良することが、可能であり得る。
【0182】
(コンテキスト低減動作)
上記の例は、コーディングプロセスが、利用可能なコンテキストの組を利用可能なコンテキストのより小さい組に低減させるように、占有パターンの少なくとも1つのビットに関するコンテキスト低減動作を含むことを提案している。この意味で、「コンテキスト低減動作」は、特定のビットbの状況において重複または冗長と見なされ得るコンテキストを識別し、合併整理するものとして理解され得る。上記のように、低減させられたコンテキスト組は、コーディングの前に決定され得、エンコーダおよびデコーダに提供され得、エンコーダおよびデコーダは、コンテキスト組を低減させるための下で説明される同じ条件に基づいて、低減させられたコンテキスト組を使用するかどうかを決定する。
【0183】
(スクリーニング/シールディングを通した近隣構成低減)
第1の例示的コンテキスト低減動作は、スクリーニング/シールディングに基づいて、近隣構成の数を低減させることを伴う。原則として、近隣構成は、現在のボリュームまたはサブボリュームが占有されている可能性が高いかどうかを示すことに近隣ボリュームが役立つことに基づいて、近隣ボリュームの占有ステータスをコンテキスト選択プロセスに組み込む。現在のボリューム内のサブボリュームに関連付けられたビットがデコードされるにつれて、それらも、コンテキスト選択に組み込まれるが、しかしながら、近傍のサブボリュームからの情報は、現在のサブボリュームからのサブボリュームの他方の側に位置する近隣ボリュームの占有情報より有意かつ有益であり得る。この意味で、以前にデコードされたビットは、近隣ボリュームを「スクリーニング」または「シールディング」するサブボリュームに関連付けられる。これは、そのような状況において、近隣ボリュームの占有が、その占有ステータスの関連性が現在のサブボリュームと近隣ボリュームとの間のサブボリュームの占有ステータスによって包含されるので、無視されることが可能であり、それによって、近隣構成の数の低減を可能にすることを意味し得る。
【0184】
ここで、近隣スクリーニングに基づく例示的コンテキスト低減動作を図式的に示す図24が、参照される。例は、ボリューム3200に関する占有パターンをコーディングすることを伴う。占有パターンは、ボリューム3200内の8つのサブボリュームの占有ステータスを示す。この例において、ボリューム3200の上半分における4つのサブボリュームは、コーディングされており、したがって、それらの占有ステータスは、把握されている。コーディングされている占有パターンのビットは、4つの以前にコーディングされたサブボリュームの下方にあるボリューム3200の下半分に位置する第5のサブボリューム3204に関連付けられている。
【0185】
この例におけるコーディングは、近隣構成に基づいて、コンテキストを決定することを含む。10個の近隣構成3202が、示される。コーディングされるべき第5のサブボリューム3204を含むボリューム3200は、薄い灰色で示され、参照番号3200によって示される。近隣構成3202は、ボリューム3200に隣接し、それと面を共有するボリュームの占有ステータスに基づく。近隣ボリュームは、上部近隣ボリューム3206を含む。
【0186】
この例において、近隣構成の数は、構成のうちの少なくともいくつかにおける上部近隣ボリューム3206を無視することによって、10から7に低減させられることができる。図24に示されるように、上部近隣ボリューム3206が示される4つの構成のうちの3つは、上部近隣ボリューム3206を組み込まない同等の構成下に包含され、それによって、近隣構成の数を合計7つに低減させることができる。全ての6つの近隣ボリュームを示す構成を保つことが、依然として有利であり得る。何故なら、6ボリューム構成が合併整理されることが可能ないかなる既存の5ボリューム近隣構成も、存在せず(5要素のものを排除している)、上部近隣ボリュームが除去される場合であっても、新しい5要素近隣構成が、結果として生じ、コンテキストにおけるいかなる全体的低減も生じないことをそれが意味するからである。
【0187】
上部近隣ボリューム3206は、第5のサブボリューム3204に関連付けられた占有ビットのコーディングのためのコンテキスト決定が、それの直上の4つの以前にコーディングされたサブボリュームの占有ステータスをすでに考慮しており、それは、より遠い上部近隣ボリューム3206の占有ステータスより良好な第5のサブボリュームに関する占有の可能性および方向性の指示であるので、この例において、近隣構成から排除されることができる。
【0188】
第5のサブボリューム3204に対応する占有ビットをコーディングするとき、上部近隣ボリューム3206が、以前にコーディングされたサブボリュームによってスクリーニングまたはシールディングされる上記の例は、一例にすぎない。ボリューム3200内のコーディング順序に応じて、いくつかの他の可能なスクリーニング/シールディング状況が、実現され、利用可能な近隣構成を低減させるために活用され得る。
【0189】
ここで、スクリーニング/シールディングの第2の例を示す図25が、参照される。この例において、ボリューム3200に関する占有パターンは、ほぼ完全にコーディングされている。コーディングされるべきサブボリュームは、第8のサブボリュームであり、図の後方の下の隅に隠れている(不可視)。この場合、全ての7つの他のサブボリュームの占有ステータスは、コーディングされている。特に、上部に沿った(したがって、近隣構成における合計7つへの低減)、かつ右側および前側に沿ったサブボリュームである。故に、上部近隣ボリュームをスクリーニングすることに加えて、以前にコーディングされた占有ビットを伴うサブボリュームは、前側近隣ボリューム3210および右側近隣ボリューム3212をシールディングする。これは、図示されるように、合計7つから合計5つへの近隣構成の低減を可能にし得る。
【0190】
シールディングの2つの前述の例は、例証的であり、ある場合、異なる構成が、異なるシールディング状況を考慮するために合併整理され得ることを理解されたい。以前にコーディングされたサブボリュームによるシールディング/スクリーニングに基づくコンテキスト低減動作は、一般的であり、これらの2つの例に限定されないが、それがコーディングされるべき第1のサブボリュームの場合、適用されることができないことを理解されたい。何故なら、それが、任意のシールディング/スクリーニングがあるために、近傍サブボリュームに関連付けられた少なくとも1つの以前にコーディングされた占有ビットが存在することを要求するからである。
【0191】
近隣構成低減を正当なものにするためのシールディング/スクリーニングの程度が異なる実装において異なり得ることも理解されたい。2つの上記例において、近隣ボリュームと面を共有する全ての4つのサブボリュームは、その近隣ボリュームがシールディング/スクリーニングされていると見なされる前に以前にコーディングされており、したがって、それらは、近隣構成から除去された。他の例において、部分的シールディング/スクリーニングが、例えば、面を共有する1~3つの以前にコーディングされたサブボリュームから十分であり得る。
【0192】
(特別な事例の取り扱いを通したコンテキスト低減)
コンテキスト低減が、有用な情報の損失を伴わずに行われ得るある事例が、存在する。上で説明される例示的コンテキスト決定プロセスにおいて、占有ビットをコーディングするためのコンテキストは、近隣構成、すなわち、現在のボリュームの近隣に位置しているボリュームの占有のパターンと、以前にコーディングされた現在のボリューム内のサブボリュームの占有に起因する部分的パターンとに基づく。その後者の条件は、占有パターンビットシーケンス内の第8のビットに関して、追跡すべき2=128個のコンテキストをもたらす。近隣構成が、合計5つに低減させられる場合であっても、それは、追跡すべき640個のコンテキストを意味する。
【0193】
コンテキストの数は、ビットシーケンスの以前にコーディングされたビットが、ある順序を有し、その順序が、コンテキストを査定することにおいて関連するという事実に基づいて、多い。しかしながら、ある場合、順序は、有用な情報を含まないこともある。例えば、近隣構成が、空である、すなわち、N10=0である場合、ボリューム内の任意の点は、低密度に取り込まれていると推定され、それらが兄弟サブボリューム内の占有の異なるパターンに関する別個のコンテキスト追跡を正当なものにするために十分に強い方向性を有していないことを意味し得る。空の近隣の場合、点群へのいかなる局所的配向またはトポロジも、存在せず、ビットシーケンスの以前にコーディングされたビットに基づく2個の条件は、j+1個の条件に低減させられ得ることを意味する。すなわち、ビットシーケンスのビットのうちの1つをコーディングするためのコンテキストは、以前にコーディングされたビットに基づくが、それらの順序付けられたパターンではなく、それらの合計だけに基づく。言い換えると、この特別な事例におけるエントロピ表現は、以下のように表され得る。
H(b|n)≒H(b|0)H(b|0,b)H(b|0,b+b)・・・H(b|0,b+b+・・・+b
【0194】
いくつかの実装において、類似する観察が、完全近隣構成に関して行われ得る。いくつかの例において、完全近隣構成は、方向性を欠き、以前にコーディングされたビットの順序が、コンテキストを決定することにおいて考慮される必要がないことを意味する。いくつかの例において、このコンテキスト低減動作は、シーケンス内の後半のビットのうちのいくつか等のビットシーケンス内のビットのうちのいくつかのみに適用され得る。ある場合、後半のビットへのこのコンテキスト低減動作の適用は、以前にコーディングされたサブボリュームに関連付けられた前半のビットも、全て占有されていると決定することを条件とし得る。
【0195】
(統計ベースのコンテキスト低減)
統計的分析が、ほぼ同じ統計的挙動につながるものを決定し、次いで、それらを組み合わせることを通して、コンテキストを低減させるために使用され得る。この分析は、低減させられたコンテキスト組を開発するために、試験データを使用して先験的に実施され得、低減させられたコンテキスト組は、次いで、エンコーダおよびデコーダの両方に提供される。ある場合、分析は、特定の点群データに関するカスタム低減コンテキスト組を開発するために、2パスコーディングを使用して、現在の点群に対して実施され得る。いくつかのそのような場合、非低減コンテキスト組からカスタム低減コンテキスト組へのマッピングが、ビットストリームにコーディングされた専用シンタックスを使用することによって、デコーダに示され得る。
【0196】
2つのコンテキストが、「距離」の概念を通して比較され得る。第1のコンテキストcは、ビットbがゼロに等しい確率pを有し、第2のコンテキストc’は、ビットb’がゼロに等しい確率p’を有する。cとc’との間の距離は、以下によって与えられる。
d(c,c’)=|plogp-p’logp’|+|(1-p)log(1-p)-(1-p’)log(1-p’)|
【0197】
類似性(距離)のこの測定を使用して、コンテキストは、次いで、以下等のプロセスにおいてグループ化され得る。
【0198】
1.Mコンテキストから開始し、閾値レベルεを固定する。
【0199】
2.所与のコンテキストに関して、所与のコンテキストから閾値レベルεより低い距離を有する全てのコンテキストをあるクラスに再グループ化する。
【0200】
3.全てがあるクラスに投入されるまで、全ての再グループ化されていないコンテキストに関して2を繰り返す。
【0201】
4.1~MのM個のクラスを標識化する:これは、{1,2,・・・,M]→[1,2,・・・,M]にマッピングする総当たり低減関数をもたらし、M≧Mである。
【0202】
コンテキストの組をコンテキストのより小さい組にマッピングするための総当たり低減関数は、コーディング中のコンテキスト低減動作としてエンコーダ/デコーダによって適用されるようにメモリ内に記憶され得る。マッピングは、ルックアップテーブルまたは他のデータ構造として記憶され得る。総当たり低減関数は、例えば、ビットシーケンス(パターン)内の後半のビットのためにのみ適用され得る。
【0203】
(コンテキスト低減動作の組み合わせおよび副次的組み合わせ)
3つの例示的コンテキスト低減動作が、上で説明されている。それらの各々は、いくつかの実装において、個々に、かつ独立して適用され得る。それらのうちのいずれか2つ以上が、いくつかの実装において、組み合わせられ得る。追加のコンテキスト低減動作が、単独で、または上で説明されるコンテキスト低減動作のうちのいずれか1つ以上と組み合わせて実装され得る。
【0204】
図26は、組み合わせられたコンテキスト低減を伴う占有パターンバイナリコーディングの方法3300の一例をフローチャート形態において示す。方法3300は、{0,1,2,・・・,9}における10要素近隣構成N10を所与として、8ビットバイナリパターンb,b,・・・,bをコーディングする。評価される最初の条件は、近隣構成が、空であるかどうか、すなわち、N10=0であるかどうかである。該当する場合、ビットは、参照番号3302によって示されるように、それらの順序を参照することなくコーディングされる。該当しない場合、ビットは、ビットbまで通常通りにコーディングされ、その時点において、エンコーダおよびデコーダは、総当たりコンテキスト低減関数BRを適用し始め、近隣構成および以前にコーディングされたビットの部分的パターンによって定義されたコンテキストの組を実質的に類似する統計的成果を有するコンテキストのより小さい組にマッピングすることによって、コンテキストの数を低減させる。
【0205】
この例において、最後の2つのビットbおよびbは、シールディング/スクリーニングに基づいて、低減させられた近隣構成を使用してコーディングされる。
【0206】
全ての関数は、コンテキストの組のサイズを低減させるためのルックアップテーブル(LUT)として実装され得る。一実践的実装において、全ての低減は、入力としてコンテキストをとり、出力として低減させられたコンテキストを提供する低減関数、すなわち、単純にLUTに組み込まれる。この例示的実施形態において、コンテキストの合計数は、2,550から576に低減させられており、各低減関数BRの出力サイズは、それぞれ、70、106、110、および119である。
【0207】
(固定数のコンテキストを伴うシステムにおけるコンテキスト選択)
前述で説明されたコンテキスト低減動作の各々は、静的(固定)最小数のコンテキストを伴う圧縮システムにおいてさらに使用され得る。そのような設計において、8ビットバイナリパターンにおける所与のシンボルに関して、1つ以上の低減動作が、シンボルをエンコードまたはデコードするためのコンテキスト確率モデルを決定するために適用される。
【0208】
(圧縮性能に対する影響)
10個の近隣構成および非バイナリコーディングの使用は、点群コーディングに関するMPEG試験モデルの現在の実装に優る圧縮利得を提供する。しかしながら、上で提案された2,550個のコンテキストを使用するカスケードバイナリコーディングを伴う10個の近隣構成の使用は、圧縮効率におけるさらに良好な改良をもたらす。コンテキスト低減が、コンテキストを合計576個に低減させるために、上で詳述される3つの技法を使用して等、使用されるときであっても、バイナリコーディング圧縮は、依然として、非バイナリコーディングを使用する実装よりわずかに良好であり、試験モデルよりはるかに良好である。この観察は、異なる試験点群データにわたって一貫していることが示されている。
【0209】
ここで、エンコーダ1100の例示的実施形態の簡略化ブロック図を示す図14が、参照される。エンコーダ1100は、プロセッサ1102と、メモリ1104と、エンコーディングアプリケーション1106とを含む。エンコーディングアプリケーション1106は、メモリ1104内に記憶され、実行されると、本明細書に説明されるもの等の動作をプロセッサ1102に実施させる命令を含むコンピュータプログラムまたはアプリケーションを含み得る。例えば、エンコーディングアプリケーション1106は、本明細書に説明されるプロセスに従ってエンコードされたビットストリームをエンコードし、出力し得る。エンコーディングアプリケーション1106は、コンパクトディスク、フラッシュメモリデバイス、ランダムアクセスメモリ、ハードドライブ等の非一過性コンピュータ読み取り可能な媒体上に記憶され得ることを理解されたい。命令が実行されると、プロセッサ1102は、説明されるプロセスを実装する専用プロセッサとして動作するように、命令において規定される動作および機能を実行する。そのようなプロセッサは、いくつかの例において、「プロセッサ回路」または「プロセッサ電気回路」と称され得る。
【0210】
ここで、デコーダ1200の例示的実施形態の簡略化ブロック図を示す図15も、参照される。デコーダ1200は、プロセッサ1202と、メモリ1204と、デコーディングアプリケーション1206とを含む。デコーディングアプリケーション1206は、メモリ1204内に記憶され、実行されると、本明細書に説明されるもの等の動作をプロセッサ1202に実施させる命令を含むコンピュータプログラムまたはアプリケーションを含み得る。デコーディングアプリケーション1206は、コンパクトディスク、フラッシュメモリデバイス、ランダムアクセスメモリ、ハードドライブ等のコンピュータ読み取り可能な媒体上に記憶され得ることを理解されたい。命令が、実行されると、プロセッサ1202は、説明されるプロセスを実装する専用プロセッサとして動作するように、命令において規定される動作および機能を実行する。そのようなプロセッサは、いくつかの例において、「プロセッサ回路」または「プロセッサ電気回路」と称され得る。
【0211】
本願によるデコーダおよび/またはエンコーダは、限定ではないが、サーバ、好適にプログラムされた汎用コンピュータ、マシンビジョンシステム、およびモバイルデバイスを含むいくつかのコンピューティングデバイスにおいて実装され得ることを理解されたい。デコーダまたはエンコーダは、本明細書に説明される機能を実行するようにプロセッサまたは複数のプロセッサを構成するための命令を含むソフトウェアを用いて実装され得る。ソフトウェア命令は、CD、RAM、ROM、フラッシュメモリ等を含む任意の好適な非一過性コンピュータ読み取り可能なメモリ上に記憶され得る。
【0212】
本明細書に説明されるデコーダおよび/またはエンコーダおよびエンコーダまたはデコーダを構成するための説明される方法/プロセスを実装するモジュール、ルーチン、プロセス、スレッド、または他のソフトウェアコンポーネントは、標準的コンピュータプログラミング技法および言語を使用して実現され得ることを理解されたい。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング表記法、データ構造、他のそのような実装詳細に限定されない。当業者は、説明されるプロセスが、揮発性または不揮発性メモリ内に記憶されるコンピュータ実行可能コードの一部として、特定用途向け集積チップ(ASIC)の一部等として実装され得ることを認識するであろう。
【0213】
本願は、本願によるエンコーディングプロセスの適用を通して生成されるデータをエンコードするコンピュータ読み取り可能な信号も提供する。
【0214】
説明される実施形態のある適合および修正が、行われることができる。したがって、上で議論される実施形態は、制限的ではなく、例証的であると見なされる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34