(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024123172
(43)【公開日】2024-09-10
(54)【発明の名称】区分方法、エンコーダー、デコーダー、及びコンピュータ記憶媒体
(51)【国際特許分類】
G06T 9/40 20060101AFI20240903BHJP
【FI】
G06T9/40
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2024100630
(22)【出願日】2024-06-21
(62)【分割の表示】P 2022540811の分割
【原出願日】2020-01-06
(71)【出願人】
【識別番号】516227559
【氏名又は名称】オッポ広東移動通信有限公司
【氏名又は名称原語表記】GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
【住所又は居所原語表記】No. 18 Haibin Road,Wusha, Chang’an,Dongguan, Guangdong 523860 China
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100152205
【弁理士】
【氏名又は名称】吉田 昌司
(74)【代理人】
【識別番号】100137523
【弁理士】
【氏名又は名称】出口 智也
(74)【代理人】
【識別番号】100120385
【弁理士】
【氏名又は名称】鈴木 健之
(72)【発明者】
【氏名】ヤン、フーチョン
(72)【発明者】
【氏名】スン、ツォーシン
(72)【発明者】
【氏名】ヤン、リーホイ
(72)【発明者】
【氏名】ワン、シューアイ
(57)【要約】 (修正有)
【課題】ネイバーノードの予測属性の精度を向上させ、符号化のビットオーバーヘッドを効果的に低減し、符号化・復号化の効率を向上させる区分方法、エンコーダー、デコーダー及びコンピュータ記憶媒体を提供する。
【解決手段】方法は、区分待ちのポイントクラウドにおけるポイントのモートンコードを計算することと、区分待ちのポイントクラウドにおけるi番目の詳細レベル層に対応する右シフトビット数を決定することと、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することと、決定した親ノードのモートンコードに基づいて、プリセットの記憶領域において、親ノードに対応するネイバーノードをサーチすることと、現在ノードをi番目のLOD層に区分し、ネイバーノードをi+1番目のLOD層に区分することと、区分待ちのポイントクラウドに対応して区分されるLOD層として決定することと、を含む。
【選択図】
図4
【特許請求の範囲】
【請求項1】
区分方法であって、エンコーダーに適用され、前記方法は、
区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントの位置情報を決定することと、
前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定し、iが0以上の整数であり、Niが0より大きい整数であり、MがLOD区分の最大プリセット層数を示すことと、
i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントの位置情報を右にNiビットシフトして、右にシフトされた位置情報に基づいて、プリセットの記憶領域に記憶することと、
i番目のLOD層における現在ポイントに対応する親ポイントの位置情報を決定することと、
決定された親ポイントの位置情報に基づいて、前記プリセットの記憶領域において、前記親ポイントに対応するネイバーポイントをサーチすることと、
前記現在ポイントをi+1番目のLOD層に区分し、又は、前記ネイバーポイントをi番目のLOD層に区分することと、を含む区分方法。
【請求項2】
前記方法は更に、
プリセットのソートポリシーに従って、前記区分待ちのポイントクラウドにおけるポイントの位置情報をソートし、ソートした位置情報を前記区分待ちのポイントクラウドにおけるポイントの位置情報として決定することを含む請求項1に記載の方法。
【請求項3】
前記方法は更に、
ソートした位置情報に基づいて、最大位置情報と最小位置情報を決定することと、
前記最大位置情報と前記最小位置情報との間の差値を計算することと、
前記差値に対して右シフト処理を行い、右にシフトされた差値がプリセット範囲を満足する場合、前記差値の右シフトビット数を取得することと、
前記右シフトビット数を前記区分待ちのポイントクラウドの初期右シフトビット数として決定することと、を含む請求項2に記載の方法。
【請求項4】
前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することは、
iがM-1以下である場合、第1プリセット計算モデルを利用して、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することを含む請求項1に記載の方法。
【請求項5】
前記i番目のLOD層における現在ポイントに対応する親ポイントの位置情報を決定することは、
i番目のLOD層に対応する右シフトビット数Niに基づいて、前記i番目のLOD層における現在ポイントの位置情報に対して右シフト処理を行うことと、
右にシフトされた位置情報を、前記i番目のLOD層における現在ポイントに対応する親ポイントの位置情報として決定することと、を含む請求項1に記載の方法。
【請求項6】
前記決定された親ポイントの位置情報に基づいて、前記プリセットの記憶領域において、前記親ポイントに対応するネイバーポイントをサーチすることは、
決定された親ポイントの位置情報に基づいて、前記親ポイントに対応するネイバーポイントの位置情報を決定することと、
前記ネイバーポイントの位置情報に基づいて、前記プリセットの記憶領域において、前記ネイバーポイントの位置情報に対応するネイバーポイントをサーチすることと、を含む請求項1に記載の方法。
【請求項7】
前記決定された親ポイントの位置情報に基づいて、前記親ポイントに対応するネイバーポイントの位置情報を決定することは、
決定された親ポイントの位置情報に基づいて、前記親ポイントと同一平面上にあり、同一直線上にあり、同一点にあるすべてのネイバーポイントの位置情報を計算し、第1数量個のネイバーポイントの位置情報を取得することと、
前記第1数量個のネイバーポイントの位置情報を、それぞれ現在ポイントの位置情報と比較することと、
ネイバーポイントの位置情報が現在ポイントの位置情報より小さい場合、前記ネイバーポイントの位置情報を廃棄することと、
ネイバーポイントの位置情報が現在ポイントの位置情報以上である場合、前記ネイバーポイントの位置情報を保留して、第2数量個のネイバーポイントの位置情報を取得し、前記第2数量が前記第1数量以下であることと、
前記第2数量個のネイバーポイントの位置情報を、前記親ポイントに対応するネイバーポイントの位置情報として決定することと、を含む請求項6に記載の方法。
【請求項8】
区分方法であって、デコーダーに適用され、前記方法は、
区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントの位置情報を決定することと、
前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定し、iが0以上の整数であり、Niが0より大きい整数であり、MがLOD区分の最大プリセット層数を示すことと、
i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントの位置情報を右にNiビットシフトして、右にシフトされた位置情報に基づいて、プリセットの記憶領域に記憶することと、
i番目のLOD層における現在ポイントに対応する親ポイントの位置情報を決定することと、
決定された親ポイントの位置情報に基づいて、前記プリセットの記憶領域において、前記親ポイントに対応するネイバーポイントをサーチすることと、
前記現在ポイントをi+1番目のLOD層に区分し、又は、前記ネイバーポイントをi番目のLOD層に区分することと、を含む区分方法。
【請求項9】
前記方法は更に、
プリセットのソートポリシーに従って、前記区分待ちのポイントクラウドにおけるポイントの位置情報をソートし、ソートした位置情報を前記区分待ちのポイントクラウドにおけるポイントの位置情報として決定することを含む請求項8に記載の方法。
【請求項10】
前記方法は更に、
ソートした位置情報に基づいて、最大位置情報と最小位置情報を決定することと、
前記最大位置情報と前記最小位置情報との間の差値を計算することと、
前記差値に対して右シフト処理を行い、右にシフトされた差値がプリセット範囲を満足する場合、前記差値の右シフトビット数を取得することと、
前記右シフトビット数を前記区分待ちのポイントクラウドの初期右シフトビット数として決定することと、を含む請求項9に記載の方法。
【請求項11】
前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することは、
iがM-1以下である場合、第1プリセット計算モデルを利用して、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することを含む請求項8に記載の方法。
【請求項12】
前記i番目のLOD層における現在ポイントに対応する親ポイントの位置情報を決定することは、
i番目のLOD層に対応する右シフトビット数Niに基づいて、前記i番目のLOD層における現在ポイントの位置情報に対して右シフト処理を行うことと、
右にシフトされた位置情報を、前記i番目のLOD層における現在ポイントに対応する親ポイントの位置情報として決定することと、を含む請求項8に記載の方法。
【請求項13】
前記決定された親ポイントの位置情報に基づいて、前記プリセットの記憶領域において、前記親ポイントに対応するネイバーポイントをサーチすることは、
決定された親ポイントの位置情報に基づいて、前記親ポイントに対応するネイバーポイントの位置情報を決定することと、
前記ネイバーポイントの位置情報に基づいて、前記プリセットの記憶領域において、前記ネイバーポイントの位置情報に対応するネイバーポイントをサーチすることと、を含む請求項8に記載の方法。
【請求項14】
前記決定された親ポイントの位置情報に基づいて、前記親ポイントに対応するネイバーポイントの位置情報を決定することは、
決定された親ポイントの位置情報に基づいて、前記親ポイントと同一平面上にあり、同一直線上にあり、同一点にあるすべてのネイバーポイントの位置情報を計算し、第1数量個のネイバーポイントの位置情報を取得することと、
前記第1数量個のネイバーポイントの位置情報を、それぞれ現在ポイントの位置情報と比較することと、
ネイバーポイントの位置情報が現在ポイントの位置情報より小さい場合、前記ネイバーポイントの位置情報を廃棄することと、
ネイバーポイントの位置情報が現在ポイントの位置情報以上である場合、前記ネイバーポイントの位置情報を保留して、第2数量個のネイバーポイントの位置情報を取得し、前記第2数量が前記第1数量以下であることと、
前記第2数量個のネイバーポイントの位置情報を、前記親ポイントに対応するネイバーポイントの位置情報として決定することと、を含む請求項13に記載の方法。
【請求項15】
エンコーダーであって、第1決定ユニット、第1右シフトユニット、第1サーチユニット及び第1区分ユニットを備え、
前記第1決定ユニットは、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントの位置情報を決定し、前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定するように設定され、iが0以上の整数であり、Niが0より大きい整数であり、MがLOD区分の最大プリセット層数を示し、
前記第1右シフトユニットは、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントの位置情報を右にNiビットシフトして、右にシフトされた位置情報に基づいて、プリセットの記憶領域に記憶するように設定され、
前記第1決定ユニットは更に、i番目のLOD層における現在ポイントに対応する親ポイントの位置情報を決定するように設定され、
前記第1サーチユニットは、決定された親ポイントの位置情報に基づいて、前記プリセットの記憶領域において、前記親ポイントに対応するネイバーポイントをサーチするように設定され、
前記第1区分ユニットは、前記現在ポイントをi+1番目のLOD層に区分し、又は、前記ネイバーポイントをi番目のLOD層に区分するように設定されるエンコーダー。
【請求項16】
デコーダーであって、第2決定ユニット、第2右シフトユニット、第2サーチユニット及び第2区分ユニットを備え、
前記第2決定ユニットは、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントの位置情報を決定し、前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定するように設定され、iが0以上の整数であり、Niが0より大きい整数であり、MがLOD区分の最大プリセット層数を示し、
前記第2右シフトユニットは、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントの位置情報を右にNiビットシフトして、右にシフトされた位置情報に基づいて、プリセットの記憶領域に記憶するように設定され、
前記第2決定ユニットは更に、i番目のLOD層における現在ポイントに対応する親ポイントの位置情報を決定するように設定され、
前記第2サーチユニットは、決定された親ポイントの位置情報に基づいて、前記プリセットの記憶領域において、前記親ポイントに対応するネイバーポイントをサーチするように設定され、
前記第2区分ユニットは、前記現在ポイントをi+1番目のLOD層に区分し、又は、前記ネイバーポイントをi番目のLOD層に区分するように設定されるデコーダー。
【発明の詳細な説明】
【技術分野】
【0001】
本願の実施例はビデオ符号化・複合化技術分野における詳細レベル(LOD、Level of detail)の区分技術に関し、特に区分方法、エンコーダー、デコーダー、及びコンピュータ記憶媒体に関する。
【背景技術】
【0002】
ジオメトリベースのポイントクラウド圧縮(G-PCC、Geometry-based Point Cloud Compression)のエンコーダーのフレームにおいて、ポイントクラウドの幾何学的情報と各ポイントクラウドに対応する属性情報はそれぞれ符号化される。ジオメトリコーディングが完成した後、幾何学的情報を再構築し、属性情報の符号化は再構築された幾何学的情報に依存する。属性情報の符号化は主に色情報に対する符号化である。色情報の符号化には、主に2種類の変換方法があり、1つの方法は距離に基づいてLOD区分を行うリフティング変換であり、他の方法は直接に行う領域適応型階層変換(RAHT、Region Adaptive Hierarchal Transform)である。この2種類の方法はいずれも色情報を空間領域から周波数領域に変換し、変換により高周波係数と低周波係数を取得し、最後には係数を量子化して符号化し、バイナリビットストリームを生成する。
【0003】
現在、ポイントクラウドに対して距離に基づいてLOD区分を行う場合、一方で、計算複雑度が比較的高く、他方で、考慮の要素の不全のため、サーチして得られたネイバーノードの精度性が不足し、予測残差が比較的大きく、符号化のビット数が増加し、符号化の効率が低下してしまう。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本願の実施例は区分方法、エンコーダー、デコーダー、及びコンピュータ記憶媒体を提供し、ネイバーノードの予測属性の精度を向上させ、符号化のビットオーバーヘッドを効果的に低減し、符号化・復号化の効率を向上させることができる。
【課題を解決するための手段】
【0005】
本願の実施例による技術案は下記のように実現できる。
【0006】
第1態様では、本願の実施例は区分方法を提供し、エンコーダー又はデコーダーに適用され、前記方法は、
区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算することと、
前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定し、iが0以上の整数であり、Niが0より大きい整数であることと、
iがM-1以下であるかどうかを判断し、MがLOD区分のプリセット層数を示すことと、
iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶することと、
i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することと、
決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチすることと、
前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分することと、
i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻ることと、
iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定することと、を含む。
【0007】
第2態様では、本願の実施例はエンコーダーを提供し、第1計算ユニット、第1決定ユニット、第1判断ユニット、第1右シフトユニット、第1サーチユニット及び第1区分ユニットを備え、
第1計算ユニットは、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算するように設定され、
第1決定ユニットは、前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定するように設定され、iが0以上の整数であり、Niが0より大きい整数であり、
第1判断ユニットは、iがM-1以下であるかどうかを判断するように設定され、MはLOD区分のプリセット層数を示し、
第1右シフトユニットは、iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶するように設定され、
第1決定ユニットは更に、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定するように設定され、
第1サーチユニットは、決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチするように設定され、
第1区分ユニットは、前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分するように設定され、
第1判断ユニットは更に、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻るように設定され、
第1決定ユニットは更に、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定するように設定される。
【0008】
第3態様では、本願の実施例はエンコーダーを提供し、第1メモリ及び第1プロセッサを備え、
第1メモリは、第1プロセッサで実行可能なコンピュータプログラムを記憶することに用いられ、
第1プロセッサは、コンピュータプログラムを実行する場合、第1態様に記載の方法を実行することに用いられる。
【0009】
第4態様では、本願の実施例はデコーダーを提供し、第2計算ユニット、第2決定ユニット、第2判断ユニット、第2右シフトユニット、第2サーチユニット及び第2区分ユニットを備え、
第2計算ユニットは、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算するように設定され、
第2決定ユニットは、前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定するように設定され、iが0以上の整数であり、Niが0より大きい整数であり、
第2判断ユニットは、iがM-1以下であるかどうかを判断するように設定され、MはLOD区分のプリセット層数を示し、
第2右シフトユニットは、iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶するように設定され、
第2決定ユニットは更に、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定するように設定され、
第2サーチユニットは、決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチするように設定され、
第2区分ユニットは、前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分するように設定され、
第2判断ユニットは更に、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻るように設定され、
第2決定ユニットは更に、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定するように設定される。
【0010】
第5態様では、本願の実施例はデコーダーを提供し、第2メモリ及び第2プロセッサを備え、
第2メモリは、第2プロセッサで実行可能なコンピュータプログラムを記憶することに用いられ、
第2プロセッサは、コンピュータプログラムを実行する場合、第1態様に記載の方法を実行することに用いられる。
【0011】
第6態様では、本願の実施例はコンピュータ記憶媒体を提供し、該コンピュータ記憶媒体にコンピュータプログラムが記憶され、コンピュータプログラムは第1プロセッサにより実行される場合、第1態様に記載の方法を実現し、又は第2プロセッサにより実行される場合、第1態様に記載の方法を実現する。
【発明の効果】
【0012】
本願の実施例は区分方法、エンコーダー、デコーダー、及びコンピュータ記憶媒体を提供する。区分待ちのポイントクラウドに基づいて、区分待ちのポイントクラウドにおけるポイントのモートンコードを計算することと、区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定し、iが0以上の整数であり、Niが0より大きい整数であることと、iがM-1以下であるかどうかを判断し、MがLOD区分のプリセット層数を示すことと、iがM-1以下である場合、i番目のLOD層に対して、区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶することと、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することと、決定された親ノードのモートンコードに基づいて、プリセットの記憶領域において、親ノードに対応するネイバーノードをサーチすることと、現在ノードをi番目のLOD層に区分し、ネイバーノードをi+1番目のLOD層に区分することと、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻ることと、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、区分待ちのポイントクラウドに対応して区分されるLOD層として決定することと、によって、本願の技術案は現在ノードとネイバーノードとの間の空間距離を計算せず、LOD層を区分するたびに、モートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチして、現在ノードをサンプリングポイントとしてネイバーノードを予測する。それにより、計算複雑度を低減するだけでなく、ポイントクラウドの空間分布特性を考慮するため、ネイバーノードの予測属性の精度も向上させ、属性部分の再構築品質を向上させ、符号化のビットオーバーヘッドを効果的に低減して、符号化・復号化の効率を向上させることができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は関連技術案によるG-PCC符号化のフローブロック図である。
【
図2】
図2は関連技術案によるG-PCC復号化のフローブロック図である。
【
図3A】
図3Aは関連技術案によるLOD生成過程の構造模式図である。
【
図3B】
図3Bは関連技術案による他のLOD生成過程の構造模式図である。
【
図4】
図4は本願の実施例による区分方法のフロー模式図である。
【
図5】
図5は本願の実施例による初期右シフトビット数の決定のフロー模式図である。
【
図6】
図6は本願の実施例による現在ノードとネイバーノードとの空間関係の模式図である。
【
図7】
図7は本願の実施例による区分方法の詳細フロー模式図である。
【
図8】
図8は本願の実施例によるエンコーダーの構造模式図である。
【
図9】
図9は本願の実施例によるエンコーダーの具体的なハードウェアの構造模式図である。
【
図10】
図10は本願の実施例によるデコーダーの構造模式図である。
【
図11】
図11は本願の実施例によるデコーダーの具体的なハードウェアの構造模式図である。
【発明を実施するための形態】
【0014】
本願の実施例の特徴と技術内容をより詳しく理解するために、以下、図面を参照しながら、本願の実施例の実現を詳しく説明し、添付の図面は参考と説明のためのものであり、本願の実施例を制限するためのものではない。
【0015】
ポイントクラウドG-PCCエンコーダーのフレームにおいて、三次元画像モデルに入力されたポイントクラウドに対してスライス(slice)区分を行った後、各スライスに対して独立の符号化を行う。
【0016】
図1を参照して、
図1は関連技術案によるG-PCC符号化のフローブロック図を示す。
図1に示すG-PCC符号化のフローブロック図は、ポイントクラウドエンコーダー(Encoder)に適用され、符号化待ちのポイントクラウドデータに対して、まずスライス区分によって、ポイントクラウドデータを複数のスライスに区分する。各スライスにおいて、ポイントクラウドの幾何学的情報と各ポイントクラウドに対応する属性情報は、それぞれ符号化される。幾何学的符号化過程において、まず幾何学的情報に対して座標変換を行って、ポイントクラウドをすべて1つのbounding box(バウンディングボックス)に含め、それから量子化する。この量子化ステップは主に拡大縮小の役割を果たす。量子化丸めにより、一部のポイントクラウドの幾何学的情報は同じであるため、パラメータに基づいて、重複するポイントを取り外すかどうかを決定する。量子化と重複するポイントの取り外しの過程は、ボクセル化過程とも称される。次に、バウンディングボックスに対して八分木区分を行う。八分木に基づく幾何学的情報の符号化フローにおいて、バウンディングボックスを8つのサブキューブに均分し、空ではない(ポイントクラウドにおけるポイントを含む)サブキューブを続いて8等分し、区分して得られたリーフノードが1×1×1の単位キューブである時、区分を停止する。リーフノードにおけるポイントに対して算術符号化を行い、バイナリ幾何学的ビットストリーム、即ち幾何学的ビットストリームを生成する。トライアングルスープ(trisoup、triangle soup)に基づく幾何学的情報の符号化の過程においても、まず八分木区分を行う必要がある、八分木に基づく幾何学的情報の符号化と違って、該trisoupはポイントクラウドをレベルごとに辺長が1×1×1の単位キューブに区分する必要がなく、block(サブブロック)の辺長がWとなるまで区分し、その後区分を停止し、各blockにおけるポイントクラウドの分布による表面に基づいて、該表面とblockの12つの辺とからなる多くとも12つのvertex(交点)を取得し、vertexに対して算術符号化を行い(交点に基づいて表面フィッティングを行う)、バイナリ幾何学的ビットストリーム、即ち幾何学的ビットストリームを生成する。Vertexはまた幾何学的再構築の過程における実現にも用いられ、再構築された集合情報はポイントクラウドの属性に対する符号化の際に使用される。
【0017】
幾何学的符号化が遂行した後、幾何学的情報を再構築する。現在、属性符号化は主に色情報に対して行われる。属性符号化の過程において、まず色情報(即ち属性情報)をRGB色空間からYUV色空間に変換する。それから、再構築された幾何学的情報を利用して、ポイントクラウドを改めて着色して、符号化されていない属性情報と再構築された幾何学的情報を対応付ける。色情報符号化の過程において、主に2つの変換方法がある。一方の方法は、詳細レベル(LOD、Level of Detail)に依存して区分する、距離に基づくリフティング変換である。現在のLOD区分は主に、距離に基づくLOD区分(主にCategory1シーケンスに対する)と固定サンプリングレートに基づくLOD区分(主にCategory3シーケンスに対する)の2つの方式に分けられる。他方の方法は、直接に領域適応型階層変換(RAHT、Region Adaptive Hierarchal Transform)を行う変換である。ここで、この2つの方法はいずれも色情報を空間領域から周波数領域に変換し、変換により高周波係数と低周波係数を取得し、最後に係数を量子化して(即ち量子化係数)、最終的に、八分木区分及び表面フィッティングを経た幾何学的符号化データと、量子化係数処理を経た属性符号化データとに対してスライス合成を行った後、順に各blockのvertex座標を符号化し(即ち算術符号化)、バイナリの属性ビットストリーム、即ち属性ビットストリームを生成する。
【0018】
図2を参照して、
図2は関連技術案によるG-PCC復号化のフローブロック図を示す。
図2に示すG-PCC復号化のフローブロック図は、ポイントクラウドデコーダー(Decoder)に適用され、取得したバイナリビットストリームに対して、まずバイナリビットストリームにおける幾何学的ビットストリームと属性ビットストリームに対してそれぞれ独立の復号化を行う。幾何学的ビットストリームに対する復号化において、算術復号化-八分木合成-表面フィッティング-幾何学的再構築-逆座標変換を経て、ポイントクラウドの幾何学的情報を取得する。属性ビットストリームに対する復号化において、算術復号化-逆量子化-LODに基づくリフティング逆変換又はRAHTに基づく逆変換-逆色変換を経て、ポイントクラウドの属性情報を取得する。幾何学的情報と属性情報に基づいて、符号化待ちのポイントクラウドデータの三次元画像モデルを還元する。
【0019】
図1に示すG-PCC符号化のフローブロック図において、LOD区分は主にポイントクラウド属性変換におけるPredicting(予測)とlifting(リフティング)の2つの方式に用いられる。以下、距離に基づくLOD区分について詳細に説明する。
【0020】
【0021】
LOD区分の過程はポイントクラウドの幾何学的再構築の後に行われ、この時、ポイントクラウドの幾何学的座標情報は直接に取得できるものである。LOD区分の過程はポイントクラウドエンコーダーとポイントクラウドデコーダーに同時に適用されることができ、具体的な過程は下記の通りである。
【0022】
(1)、ポイントクラウドにおけるすべてのポイントを「アクセスすることがない」ポイント集合に置き、「アクセスすることがある」ポイント集合(Vで示す)を空集合に初期化する。
【0023】
【0024】
【0025】
【0026】
(4)、すべてのLOD層が生成され又はすべてのポイントがいずれもトラバーサルされるまで、(1)~(3)の過程を繰り返すことにより絶えずイテレーションする。
【0027】
図3Aを参照して、
図3Aは関連技術案によるLOD生成過程の構造模式図を示す。
【0028】
図3Aにおいて、ポイントクラウドにはP0、P1、P2、P3、P4、P5、P6、P7、P8、P9である10つのポイントが含まれ、距離閾値に基づいてLOD区分を行う。このように、LOD0集合には順にP0、P5、P4、P2が含まれ、LOD1集合には順にP0、P5、P4、P2、P1、P6、P3が含まれ、LOD2集合には順にP0、P5、P4、P2、P1、P6、P3、P9、P8、P7が含まれる。
【0029】
関連技術案では、モートンコードに基づいてLOD区分を行う技術案が提出された。元々すべてのポイントをトラバーサルしてサーチしてLOD区分を行う技術案と比べて、モートンコードに基づいてLOD区分を行う技術案は計算複雑度を低減できる。
【0030】
【0031】
【0032】
【0033】
更に、D0(初期距離の閾値)とρ(隣接するLOD層区分の際の距離閾値比)はそれぞれユーザがカスタマイズする初期パラメータであり、且つρ>1である。仮にIはすべてのポイントのインデックスを示すと、k回目のイテレーションの時、LODkにおけるポイントはLOD0~LODk-1層から、最も近いネイバー、即ち距離が最も近いポイントをサーチし、k=1,2,...,N-1である。ここで、NはLOD区分の総層数であり、k=0の場合、0回目のイテレーションの時、LOD0におけるポイントは直接にLOD0から最も近いネイバーをサーチする。具体的な過程は下記の通りである。
【0034】
【0035】
(2)、k回目のイテレーションの時、集合L(k)はk層目のLODに属するポイントを保存し、集合O(k)はLODk層より詳細レベルが更に高いポイント集合を保存する。ここで、L(k)とO(k)の計算過程は下記の通りである。
【0036】
まず、O(k)とL(k)はいずれも空集合に初期化する。
【0037】
【0038】
(3)、毎回のイテレーションの過程において、集合L(k)とO(k)はそれぞれ計算し、O(k)におけるポイントは集合L(k)におけるポイントの予測に用いられる。仮に集合R(k)=L(k)/L(k-1)であり、即ちR(k)はLOD(k-1)とLOD(k)集合の差分部分のポイント集合を示すと、集合R(k)に位置するポイントに対して、集合O(k)から最も近いh個の予測ネイバーをサーチする(一般的に、hは3としてもよい)。最も近いネイバーをサーチする具体的な過程は下記の通りである。
【0039】
a、集合R(k)におけるポイントPiに対して、該ポイントに対応するモートンコードはMiである。
b、集合O(k)から、現在ポイントPiに対応するモートンコードMiより大きい1番目のポイントのインデックスjをサーチする。
c、インデックスjに基づいて、集合O(k)における1つのサーチ範囲[j-SR2,j+SR2]内において、現在ポイントPiの最も近いネイバーをサーチする(ここで、SR2は1つのサーチ範囲を示し、値が一般的に8、16、32、64である)。
【0040】
(4)、集合Iにおけるすべてのポイントが全部でトラバーサルされるまで、(1)~(3)の過程を繰り返して絶えずイテレーションする。
【0041】
図3Bを参照して、
図3Bは関連技術案による他のLOD生成過程の構造模式図を示す。
図3Bにおいて、ポイントクラウドにはP0、P1、P2、P3、P4、P5、P6、P7、P8、P9である10つのポイントが含まれ、モートンコードに基づいてLOD区分を行い、まずモートンコードの昇順に従って配列し、この10つのポイントの順序はP4、P1、P9、P5、P0、P6、P8、P2、P7、P3であり、次に最も近いネイバーをサーチする。このように、LOD0集合には依然として順にP0、P5、P4、P2が含まれ、LOD1集合には依然として順にP0、P5、P4、P2、P1、P6、P3が含まれ、LOD2集合には依然として順にP0、P5、P4、P2、P1、P6、P3、P9、P8、P7が含まれる。
【0042】
しかし、現在の解決手段ではポイントクラウド属性変換Predictingとliftingの前に、まず異なる距離閾値に基づいてLOD区分を行う。具体的に、現在のLOD区分は、毎回ですべてのポイントの間の距離を計算する。該ポイントとすべてのポイントとの間の距離がいずれも距離閾値より小さい場合、該ポイントを現在のLOD層に添加してもよく、そうではない場合、該ポイントを次の層に置いてLOD区分を行い、すべてのポイントがトラバーサルされ又はすべてのLOD層の区分が遂行されるまで、異なる閾値範囲に従って絶えずイテレーションし、それにより計算複雑度が高くなる。また、異なるポイントクラウドは異なる空間分布を有するため、異なるポイントクラウドの物体密度は異なる。距離閾値に基づいてLOD区分を行う場合、ポイントクラウドの空間分布特性を考慮せず、サーチして得られたネイバーノードの精度が不足し、最終的にネイバーノードに基づいて予測して得られた予測残差は比較的大きく、属性情報には依然として比較的大きい冗長が存在し、符号化のビット数が増加し、最適な符号化・復号化の効率の達成を確保できない。
【0043】
本願の実施例は区分方法を提供し、該方法はエンコーダー(ポイントクラウドエンコーダーとも称されてもよい)又はデコーダー(ポイントクラウドデコーダーとも称されてもよい)に適用されてもよい。区分待ちのポイントクラウドに基づいて、区分待ちのポイントクラウドにおけるポイントのモートンコードを計算することと、区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定し、iが0以上の整数であり、Niが0より大きい整数であることと、iがM-1以下であるかどうかを判断し、MがLOD区分のプリセット層数を示すことと、iがM-1以下である場合、i番目のLOD層に対して、区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶することと、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することと、決定された親ノードのモートンコードに基づいて、プリセットの記憶領域において、親ノードに対応するネイバーノードをサーチすることと、現在ノードをi番目のLOD層に区分し、ネイバーノードをi+1番目のLOD層に区分することと、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻ることと、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、区分待ちのポイントクラウドに対応して区分されるLOD層として決定することと、によって、本願の技術案は現在ノードとネイバーノードとの間の空間距離を計算せず、LOD層を区分するたびに、モートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチして、現在ノードをサンプリングポイントとしてネイバーノードを予測する。それにより、計算複雑度を低減するだけでなく、ポイントクラウドの空間分布特性を考慮するため、ネイバーノードの予測属性の精度も向上させ、属性部分の再構築品質を向上させ、符号化のビットオーバーヘッドを効果的に低減して、符号化・復号化の効率を向上させることができる。
【0044】
以下、図面を参照しながら本願の各実施例を詳しく説明する。
【0045】
図4を参照して、
図4は本願の実施例による区分方法のフロー模式図を示す。
図4に示すように、エンコーダー又はデコーダーに適用され、該方法は下記ステップS401~S409を含んでもよい。
【0046】
ステップS401において、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算する。
【0047】
なお、ポイントクラウドにおいて、ポイントはポイントクラウドにおけるすべてのポイントであってもよく、ポイントクラウドにおける一部のポイントであってもよく、これらのポイントは空間において相対的に集中する。
【0048】
更に説明するように、本願の実施例による区分方法はliftingとPredicting属性変換におけるLODの生成過程に対して改善する。即ち、lifting又はPredicting変換を行う前に、まず該区分方法を用いてLOD層の区分を行う必要がある。具体的に、該区分方法は
図1に示すG-PCC符号化のフローブロック図におけるLOD生成の部分に適用されてもよく、
図2に示すG-PCC復号化のフローブロック図におけるLOD生成の部分に適用されてもよく、更に
図1に示すG-PCC符号化のフローブロック図におけるLOD生成の部分及び
図2に示すG-PCC復号化のフローブロック図におけるLOD生成の部分に同時に適用されてもよい。本願の実施例は具体的に限定しない。
【0049】
このように、区分待ちのポイントクラウドを取得した後、まず区分待ちのポイントクラウドにおけるポイントのモートンコードを計算し、それにより後続のイテレーション演算においてモートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチすることができる。それによって、LOD層の区分を行う際に、現在ノードをサンプリングポイントとして利用して、ネイバーノードを予測することに寄与する。
【0050】
ステップS402において、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定する。
【0051】
なお、iが0以上の整数であり、Niが0より大きい整数である。区分待ちのポイントクラウドを複数のLOD層に区分するために、ここでイテレーション方法を用いて区分する。区分待ちのポイントクラウドに対するLOD区分の層数を予め設定してもよい。一般的に、LOD区分のプリセット層数はMで示してもよく、Mが0より大きい整数である。
【0052】
このように、区分待ちのポイントクラウドにおけるポイントのモートンコードを決定した後、区分待ちのポイントクラウドにおけるポイントのモートンコードをソートし、各LOD層に対応する右シフトビット数の決定するようにしてもよい。従って、いくつかの実施例において、該方法は更に、
プリセットのソートポリシーに従って、前記区分待ちのポイントクラウドにおけるポイントのモートンコードをソートし、ソートしたモートンコードを前記区分待ちのポイントクラウドにおけるポイントのモートンコードとして決定することを含んでもよい。
【0053】
なお、プリセットのソートポリシーは低い順の昇順ポリシーであってもよく、高い順の降順ポリシーであってもよく、更に他のソートポリシー(例えば、ランダムソートポリシー等)であってもよい。好ましくは、プリセットのソートポリシーは昇順ポリシーである。即ち、区分待ちのポイントクラウドにおけるポイントのモートンコードを低い順の昇順でソートし、ソートしたモートンコードを区分待ちのポイントクラウドにおけるポイントのモートンコードとして決定する。
【0054】
このように、モートンコードをソートした後、ソートしたモートンコードに基づいて、区分待ちのポイントクラウドにおけるポイントのモートンコードの初期右シフトビット数を決定することができる。ここで、初期右シフトビット数は、区分待ちのポイントクラウドにおけるポイントのモートンコードの0番目のLOD層において対応する右シフトビット数(N0で示してもよい)を示す。具体的に、いくつかの実施例において、iが0に等しい場合、ステップS402にとって、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することは、
ソートしたモートンコードをサンプリングし、K個のサンプリングポイントのモートンコードを取得し、Kが0より大きい整数であることと、
前記K個のサンプリングポイントのモートンコードに対して右シフト処理を行い、右にシフトされたモートンコードに対応するK個のサンプリングポイントを取得することと、
前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応するかどうかを判断することと、
前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応しない場合、前記K個のサンプリングポイントのモートンコードに対して右シフト処理を行うステップを実行し続けることと、
前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応する場合、前記K個のサンプリングポイントの右シフトビット数を取得し、前記右シフトビット数を前記区分待ちのポイントクラウドにおけるポイントのモートンコードの初期右シフトビット数として決定し、前記初期右シフトビット数は前記区分待ちのポイントクラウドにおけるポイントのモートンコードの0番目のLOD層において対応する右シフトビット数N0を示すことと、を含んでもよい。
【0055】
即ち、初期にLOD層を区分し、即ち0番目のLOD層を区分する場合、まずソートしたモートンコードをサンプリングして、K個のサンプリングポイントのモートンコードを取得し、それから、右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応するまで、このK個のサンプリングポイントのモートンコードに対して絶えず右シフト処理を行い、最後に、取得した右シフトビット数を初期右シフトビット数N
0とする。具体的に、該初期右シフトビット数N
0の取得過程について、
図5に示すように、下記ステップS501~S506を含んでもよい。
【0056】
ステップS501において、ソートしたモートンコードをサンプリングし、K個のサンプリングポイントのモートンコードを取得する。
【0057】
ステップS502において、n=0である。
【0058】
ステップS503において、n=n+3である。
【0059】
ステップS504において、K個のサンプリングポイントのモートンコードに対して、nビットの右シフト処理を行う。
【0060】
ステップS505において、1つのサンプリングポイントあたりに対応するネイバーノードの数が1より大きいかどうかを判断する。
【0061】
ステップS506において、N0=nである。
【0062】
なお、nはプリセットの変数であり、nの初期値は0に設定される。それから、後続のステップS504を実行するために、即ちK個のサンプリングポイントのモートンコードに対してnビットの右シフト処理を行うために、毎回でn+3でnの値を更新する。
【0063】
また、ステップS505にとって、判断結果が「はい」である場合、ステップS506を実行し、即ち初期右シフトビット数N0を取得でき、判断結果が「いいえ」である場合、ステップS505の判断結果が「はい」となるまで、ステップS503に戻って実行する必要があり、それにより、最終的に初期右シフトビット数N0を取得する。
【0064】
更に説明するように、Kが0より大きい整数であり、例えば、Kの値は100に設定されてもよいが、本願の実施例は具体的に限定しない。即ち、初期右シフトビット数N0の決定過程において、Kの値は一般的にランダムに設定されるものであるが、Kの値を取る方式は、区分待ちのポイントクラウドに対して特性分析を行い、Kの値を決定することを更に含んでもよい。
【0065】
ここで、Kの値は一般的に区分待ちのポイントクラウドの特性情報、例えば区分待ちのポイントクラウドにおけるポイントの数、空間密度等に関係がある。このように、区分待ちのポイントクラウドに対して特性分析を行って、Kの値を決定し、更に初期右シフトビット数N0を決定することができる。Kの値は区分待ちのポイントクラウド全体の特性を組合わせて取得するものであるため、符号化・復号化の効率を向上させることができる。
【0066】
理解できるように、モートンコードをソートした後、更に最大モートンコードと最小モートンコードとの間の差値に基づいて絶えず右シフト処理を行って、初期右シフトビット数N0を決定することができる。具体的に、いくつかの実施例において、iが0に等しい場合、ステップS402にとって、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することは、
ソートしたモートンコードに基づいて、最大モートンコードと最小モートンコードを決定することと、
前記最大モートンコードと前記最小モートンコードとの間の差値を計算することと、
前記差値に対して右シフト処理を行い、右にシフトされた差値がプリセット範囲を満足する場合、前記差値の右シフトビット数を取得することと、
前記右シフトビット数を前記区分待ちのポイントクラウドの初期右シフトビット数として決定することと、を含んでもよい。
【0067】
なお、モートンコードは低い順の昇順でソートするものであるため、ソートしたモートンコードに基づいて、最大モートンコードと最小モートンコードを決定して、最大モートンコードと最小モートンコードとの間の差値(deltaで示してもよい)を算出することができる。
【0068】
deltaビットを右にシフトし、deltaビットを右にNビットシフトした後、シフトされたdeltaを取得する。それにより、シフトされたdeltaがプリセット範囲を満足し、この時、Nを初期右シフトビット数N0として決定することができる。deltaビットを右にNビットシフトすることは、最大モートンコードビットを右にNビットシフトし、最小モートンコードビットを右にNビットシフトし、それから両者について差値の計算を行い、取得した差値即ちdeltaビットを右にNビットシフトすることと見なされてもよい。
【0069】
更に説明するように、プリセット範囲は、1つのサンプリングポイントあたりに対応するネイバーノードの数が1より大きいかどうかを示す。このように、右にNビットシフトされた差値がプリセット範囲を満足する場合、この時の右シフトビット数Nを初期右シフトビット数N0として決定することができ、それにより符号化・復号化の効率を向上させることができる。
【0070】
更に、初期右シフトビット数N0を決定し、即ち区分待ちのポイントクラウドにおける0番目のLOD層に対応する右シフトビット数を決定した後、初期右シフトビット数N0に基づいて、区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定してもよい。ここで、iが0に等しくない。具体的に、いくつかの実施例において、iが0に等しい場合、ステップS402にとって、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することは、
第1プリセット計算モデルを利用して、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することを含んでもよい。
【0071】
更に、いくつかの実施例において、前記第1プリセット計算モデルを利用して、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定することは、
i-1番目のLOD層に対応する右シフトビット数Ni-1を取得することと、
i-1番目のLOD層に対応する右シフトビット数Ni-1とプリセット値を加算し、加算値を取得することと、
前記加算値をi番目のLOD層に対応する右シフトビット数Niとして決定することと、を含んでもよい。
【0072】
即ち、後続のLOD層を区分する際に、i番目のLOD層に対応する右シフトビット数は、前の1つのLOD層(即ちi-1番目のLOD層)に対応する右シフトビット数に基づいて決定するものである。ここで、第1プリセット計算モデルは下記の通りである。
【0073】
【0074】
なお、プリセット値は実際のポイントクラウド空間情報に基づいて具体的に設定されてもよい。好ましくは、プリセット値が3に等しくてもよい。本願の実施例は限定しない。
【0075】
更に、いくつかの実施例において、該方法は更に、
前記区分待ちのポイントクラウドに対して特性分析を行い、前記プリセット値を決定することを含んでもよい。
【0076】
ここで、プリセット値は一般的に区分待ちのポイントクラウドの特性情報、例えば区分待ちのポイントクラウドにおけるポイントの数、空間密度等に関係がある。このように、区分待ちのポイントクラウドに対して特性分析を行って、プリセット値を決定することができる。各LOD層に対応するプリセット値は同じであってもよく、異なってもよい。例えば、区分待ちのポイントクラウドの特性に基づいて、異なるLOD層の右シフトビット数の計算時の対応のプリセット値を適応調整することができ、それにより異なる領域に対応する隣接領域をより正確的にサーチして、予測性能を更に向上させることができる。
【0077】
このように、各LOD層に対応する右シフトビット数を決定した後、各LOD層に対応する右シフトビット数に基づいて右シフト処理を行って、各LOD層の区分を実行することができる。
【0078】
ステップS403において、iがM-1以下であるかどうかを判断する。
【0079】
なお、MはLOD区分のプリセット層数を示し、ここで、Mが0より大きい整数である。iがM-1以下である場合、各LOD層に対して区分を行う必要があるため、ステップS404~S408を実行する。iがM-1より大きい場合、各LODに対する区分が既に完成したため、ステップS409を実行する。
【0080】
ステップS404において、iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶する。
【0081】
ステップS405において、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定する。
【0082】
ステップS406において、決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチする。
【0083】
ステップS407において、前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分する。
【0084】
なお、プリセットの記憶領域はinputMortonで示してもよい。主に、各LOD層の区分の前に、区分待ちのポイントクラウドにおけるポイントのモートンコードに対して右シフト処理を行った後、inputMortonに記憶し、後続のモートンコードによる対応のネイバーノードのサーチに寄与する。
【0085】
更に説明するように、モートンコードにより対応のネイバーノードをサーチする前に、まずi番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定する必要がある。具体的に、いくつかの実施例において、ステップS405にとって、前記i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することは、
i番目のLOD層に対応する右シフトビット数Niに基づいて、前記i番目のLOD層における現在ノードのモートンコードに対して右シフト処理を行うことと、
右にシフトされたモートンコードを、前記i番目のLOD層における現在ノードに対応する親ノードのモートンコードとして決定することと、を含んでもよい。
【0086】
ここで、現在ノードのモートンコードはchildrenMortonで示し、親ノードのモートンコードはparentMortonで示し、そうすると、両者の間の対応関係は下記のように示す。
【0087】
【0088】
即ち、i番目のLOD層に対応する右シフトビット数Niに基づいて、i番目のLOD層における現在ノードのモートンコード(childrenMortonで示す)を右にNiビットシフト処理し、それから、右にシフトされたモートンコードを、i番目のLOD層における現在ノードに対応する親ノードのモートンコード(parentMortonで示す)として決定してもよい。
【0089】
更に、現在ノードに対応する親ノードのモートンコードを決定した後、親ノードのモートンコードに基づいて、親ノードに対応するネイバーノードをサーチしてもよい。具体的に、いくつかの実施例において、ステップS406にとって、前記決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチすることは、
決定された親ノードのモートンコードに基づいて、前記親ノードに対応するネイバーノードのモートンコードを決定することと、
前記ネイバーノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記ネイバーノードのモートンコードに対応するネイバーノードをサーチすることと、を含んでもよい。
【0090】
更に、前記決定された親ノードのモートンコードに基づいて、前記親ノードに対応するネイバーノードのモートンコードを決定することは、
決定された親ノードのモートンコードに基づいて、前記親ノードと同一平面上にあり、同一直線上にあり、同一点にあるすべてのネイバーノードのモートンコードを計算し、第1数量個のネイバーノードのモートンコードを取得することと、
前記第1数量個のネイバーノードのモートンコードを、それぞれ現在ノードのモートンコードと比較することと、
ネイバーノードのモートンコードが現在ノードのモートンコードより小さい場合、前記ネイバーノードのモートンコードを廃棄することと、
ネイバーノードのモートンコードが現在ノードのモートンコード以上である場合、前記ネイバーノードのモートンコードを保留して、第2数量個のネイバーノードのモートンコードを取得し、前記第2数量が前記第1数量以下であることと、
前記第2数量個のネイバーノードのモートンコードを、前記親ノードに対応するネイバーノードのモートンコードとして決定することと、を含んでもよい。
【0091】
なお、親ノードのモートンコードを決定した後、親ノードと同一平面上にあり(全部で6つのネイバーノード)、同一直線上にあり(全部で12つのネイバーノード)、同一点にある(全部で8つのネイバーノード)のもののモートンコードを計算してもよく、親ノード自体のモートンコードを加えて、全部で第1数量(例えば27)個のネイバーノードのモートンコードを取得できる。LOD層の区分はモートンコードの昇順で行われるため、この時、27個のネイバーノードを第2数量(例えば20)個のネイバーノードに絞ってもよい。具体的に、27個のネイバーノードのモートンコードをそれぞれ現在ノードのモートンコードと比較する。ネイバーノードのモートンコードが現在ノードのモートンコードより小さい場合、該ネイバーノードのモートンコードを廃棄してもよい。例えば、もし7つのネイバーノードのモートンコードが現在ノードのモートンコードより小さければ、この7つのネイバーノードのモートンコードを除き、残る20個のネイバーノードのモートンコードは現在ノードのモートンコード以上であり、即ち、この残る20個のネイバーノードのモートンコードのみを保留する。ここで、残る20個のネイバーノードは、現在ノードに対応する親ノード、同一平面上にあるネイバーノード(3つのネイバーノード)、同一直線上にあるネイバーノード(9つのネイバーノード)、及び同一点にあるネイバーノード(7つのネイバーノード)を含んでもよい。
【0092】
例示的に、
図6を参照して、
図6は本願の実施例による現在ノードとネイバーノードとの空間関係の模式図を示す。
図6において、太いマークが付く空間ブロックは現在ノードである。
図6から分かるように、該空間ブロックと同一平面上にあるものは6つのネイバーノードであり、該空間ブロックと同一直線上にあるものは12つのネイバーノードであり、該空間ブロックと同一点にあるものは8つのネイバーノードである。このように、決定された親ノードのモートンコードに基づいて、親ノードに対応するネイバーノードのモートンコードを決定でき、ネイバーノードのモートンコードを利用して、プリセットの記憶領域(inputMorton)において対応のネイバーノードをサーチすることができる。
【0093】
このように、i番目のLOD層に対して、ネイバーノードをサーチして取得した後、現在ノードをi番目のLOD層に区分し、即ち集合O(k)に置き、ネイバーノードをi+1番目のLOD層に区分し、即ち集合L(k)に置くようにしてもよい。ここで、kが0以上の整数である。それにより、i番目のLOD層に対する区分を実現できる。
【0094】
更に、ネイバーノードの予測属性の効果を向上させるために、隣接領域の質量中心を計算して、質量中心に最も近いポイントを目標ノードとすることによって、ネイバーノードを予測してもよい。従って、いくつかの実施例において、第1数量個のネイバーノードのモートンコードを取得した後、該方法は更に、
前記区分待ちのポイントクラウドに基づいて、前記i番目のLOD層における現在ノードに対応する隣接領域を決定することと、
前記隣接領域の質量中心を計算し、前記現在ノード及び前記第1数量個のネイバーノードから、前記質量中心に最も近いノードを目標ノードとして選択することと、
前記目標ノードをi番目のLOD層に区分し、残りのノードをi+1番目のLOD層に区分することと、を含んでもよい。
【0095】
なお、残りのノードは現在ノード及び第1数量個のネイバーノードのうちの目標ノード以外のノードを示す。このように、現在ノードに対応する親ノードのネイバーノードに基づいて、i番目のLOD層における現在ノードに対応する隣接領域を決定し、それから、該隣接領域の質量中心を計算して、現在ノード及び第1数量個のネイバーノードから、該質量中心に最も近いノードを目標ノードとして選択することができる。そうすると、目標ノードをi番目のLOD層に区分し、残りのノードをi+1番目のLOD層に区分し、i番目のLOD層に対する区分も実現できる。
【0096】
更に説明するように、現在ノードに対応する親ノードのネイバーノードに基づいて、i番目のLOD層における現在ノードに対応する隣接領域を決定した後、更に隣接領域を異なる空間領域に区分して、異なる空間領域から選択した対応のポイントを目標ノードとすることができる。そうすると、目標ノードをi番目のLOD層に区分し、残りのノードをi+1番目のLOD層に区分し、i番目のLOD層に対する区分も実現できる。同時に、隣接領域に対して更なる空間区分を行ったため、予測性能を更に向上させることができる。
【0097】
ステップS408において、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻る。
【0098】
ステップS409において、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定する。
【0099】
なお、i番目のLOD層に対する区分の後、i=i+1を利用してiの値を更新し、それからステップS403の実行に戻り、即ち、iがM-1以下であるかどうかを判断する。M-1番目のLOD層に対する区分を遂行するまで、即ちiがMに等しい場合、区分待ちのポイントクラウドのLOD層の区分を既に遂行したことを示し、この時、0番目のLOD層~M-1番目のLOD層を区分待ちのポイントクラウドに対応して区分されるLOD層として決定してもよい。
【0100】
更に説明するように、区分待ちのポイントクラウドにおけるポイントのモートンコードに対して右シフト処理を行った後、異なる集合を取得でき、即ち、区分待ちのポイントクラウドにおけるポイントをクラスタリングして、空間における隣接領域(即ち空間が相対的に集中する)のポイントを同一の集合に区分する。それから、各集合に対してLOD層の区分を行う。具体的に、いくつかの実施例において、該方法は更に、
前記区分待ちのポイントクラウドにおけるポイントのモートンコードに対して右シフト処理を行い、複数の集合を取得し、各集合が前記区分待ちのポイントクラウドのうちの一部の区分待ちのポイントクラウドを含むことと、
前記複数の集合のうちの各集合に対して、それぞれ各集合に含まれる一部の区分待ちのポイントクラウドに対してLOD層区分を行うステップを実行することと、を含んでもよい。
【0101】
即ち、区分待ちのポイントクラウドにおけるポイントのモートンコードの右シフトビット数を調整することにより、区分待ちのポイントクラウドを複数の集合に区分し、各集合は区分待ちのポイントクラウドにおける一部の区分待ちのポイントクラウド、即ち一部のポイントを含む。各集合に対して、本願の実施例の区分方法も利用して、モートンコードに基づいて現在ノードに対応する親ノードのネイバーノードをサーチする。この区分方式は空間における隣接領域のポイントクラウドを同一の集合に区分して、予測性能を更に向上させることができる。
【0102】
本願の実施例において、モートンコードに基づいてネイバーノードをサーチする方式を用いて、LOD層の区分を行ってもよい。具体的に、現在ノードのモートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチし、即ち現在ノードをサンプリングポイントとしてネイバーノードを予測する方式であっても、現在ノードのモートンコードを利用してポイントクラウド空間における隣接領域を区分し、即ちポイントクラウド空間における空間が近い部分を区分して異なる集合(又はクラスタリング)を取得する方式であっても、いずれもネイバーノードに基づく属性予測の効果を向上させることができ、それにより符号化の効率を向上させることができる。
【0103】
即ち、モートンコードに基づいて現在ノードに対応する親ノードのネイバーノードをサーチし、現在ノードをサンプリングポイントとしてネイバーノードを予測することにより、ポイントクラウドの空間分布特性とポイントクラウドにおけるポイントとの間の空間距離をまとめて考慮することができ、ネイバーノードに基づく属性予測の効果を向上させることができる。即ち、性能を基本的に影響しない前提で、属性部分の再構築品質を向上させることができ、更に予測属性の符号化・復号化時間と計算複雑度を低減して、符号化の効率を向上させることができる。ピーク信号対雑音比(PSNR、Peak Signal to Noise Ratio)は画像評価の客観的な標準としてもよい。PSNRが大きければ大きいほど、画像の品質が良くなる。BD-rateも性能優劣を評価するパラメータとしてもよい。BD-rateが負の値である場合は、同一のPSNR条件で、ビットレートが減少し、性能が向上することを示す。この上で、BD-rateの絶対値が大きければ大きいほど、性能のゲインが大きくなる。表1に示すように、性能を基本的に影響しない前提で、属性部分の色チャネル(UとVで示す)のビットレートを低減して、再構築されたポイントクラウドのBD-rateが明らかに向上することができる。
【0104】
【0105】
本願の実施例は区分方法を提供する。区分待ちのポイントクラウドに基づいて、区分待ちのポイントクラウドにおけるポイントのモートンコードを計算することと、区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定し、iが0以上の整数であり、Niが0より大きい整数であることと、iがM-1以下であるかどうかを判断し、MがLOD区分のプリセット層数を示すことと、iがM-1以下である場合、i番目のLOD層に対して、区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶することと、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することと、決定された親ノードのモートンコードに基づいて、プリセットの記憶領域において、親ノードに対応するネイバーノードをサーチすることと、現在ノードをi番目のLOD層に区分し、ネイバーノードをi+1番目のLOD層に区分することと、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻ることと、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、区分待ちのポイントクラウドに対応して区分されるLOD層として決定することと、によって、本願の技術案は現在ノードとネイバーノードとの間の空間距離を計算せず、LOD層を区分するたびに、モートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチして、現在ノードをサンプリングポイントとしてネイバーノードを予測する。それにより、計算複雑度を低減するだけでなく、ポイントクラウドの空間分布特性を考慮するため、ネイバーノードの予測属性の精度も向上させ、属性部分の再構築品質を向上させ、符号化のビットオーバーヘッドを効果的に低減して、符号化・復号化の効率を向上させることができる。
【0106】
上記実施例の同一の発明考案に基づいて、
図7を参照して、
図7は本願の実施例による区分方法の詳細フロー模式図を示す。
図7に示すように、エンコーダー又はデコーダーに適用され、該詳細フローは下記ステップS701~S711を含んでもよい。
【0107】
ステップS701において、区分待ちのポイントクラウドに基づいて、区分待ちのポイントクラウドにおけるポイントのモートンコードを計算する。
【0108】
ステップS702において、区分待ちのポイントクラウドにおけるポイントのモートンコードを昇順でソートする。
【0109】
なお、区分待ちのポイントクラウドに対して、仮に該区分待ちのポイントクラウドにN個のポイントが含まれ、各ポイントがPiと示し、各ポイントPiに対応するモートンコードがMiであり、i=0、1、2、…、N-1であるとする。即ち、まず区分待ちのポイントクラウドにおけるポイントに対応するモートンコード(packVoxelで示しても良い)を計算し、次に区分待ちのポイントクラウドにおけるポイントのモートンコードを低い順の昇順でソートし、ソートしたモートンコードを区分待ちのポイントクラウドにおけるポイントのモートンコードとして決定してもよい。
【0110】
ステップS703において、lodindex<lodcountであるかどうかを判断する。
【0111】
なお、lodindexは現在の区分処理されるものが何番目のLOD層であるか、例えばlodindex番目のLOD層であることを示し、lodcountは予め設定された区分待ちのポイントクラウドの総区分層数を示す。ここで、lodcountは0より大きい整数であり、lodindexは0以上且つlodcount-1以下の整数である。
【0112】
更に説明するように、lodindex<lodcountであり、即ち判断結果が「はい」である場合、ステップS704を実行し、lodindex≧lodcountであり、即ち判断結果が「いいえ」である場合、フローを終了する。
【0113】
ステップS704において、判断結果が「はい」である場合、lodindex==0であるかどうかを判断する。
【0114】
ステップS705において、判断結果が「はい」である場合、区分待ちのポイントクラウドにおけるポイントのモートンコードの初期右シフトビット数Nを計算する。
【0115】
ステップS706において、判断結果が「いいえ」である場合、Ncurlod=Nlastlod+3であり、NcurlodをNとして決定する。
【0116】
なお、Ncurlodは現在の処理されるLOD層に対応する右シフトビット数を示し、Nlastlodは前の1つの処理されるLOD層に対応する右シフトビット数を示す。例えば、0番目のLOD層に対応する初期右シフトビット数が4である場合、1番目のLOD層に対応する右シフトビット数が7であり、2番目のLOD層に対応する右シフトビット数が10であり、3番目のLOD層に対応する右シフトビット数が13であり、これにより類推して、各LOD層に対応する右シフトビット数を取得できる。
【0117】
このように、lodindex<lodcountである場合、更にlodindexが0に等しいかどうかを判断する必要がある。lodindexが0に等しく、即ち判断結果が「はい」である場合、ステップS705を実行し、即ち区分待ちのポイントクラウドにおけるポイントのモートンコードの初期右シフトビット数Nを計算し、lodindexが0に等しくなく、即ち判断結果が「いいえ」である場合、ステップS706を実行し、即ちNcurlod=Nlastlod+3であり、それからNcurlodをNとして決定し、後続のステップS707の実行に供する。
【0118】
ステップS707において、区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNビットシフトして、右にシフトされたモートンコードをinputMortonに記憶する。
【0119】
ステップS708において、pointindex<inputMorton.sizeであるかどうかを判断する。
【0120】
なお、pointindexは現在ノードのinputMortonでのインデックス番号を示し、inputMorton.sizeはinputMortonの長さを示す。このように、pointindex<inputMorton.sizeであり、即ち判断結果が「はい」である場合は、現在ノードがまだlodindex番目のLOD層にあることを示し、この時にステップS709を実行する必要がある。pointindex≧inputMorton.sizeであり、即ち判断結果が「いいえ」である場合は、現在ノードが既にlodindex番目のLOD層にないことを示し、この時にステップS710を実行する必要がある。
【0121】
ステップS709において、判断結果が「はい」である場合、現在ノードを集合O(lodindex)に添加し、現在ノードに対応するネイバーノードを集合L(lodindex)に添加する。
【0122】
ステップS710において、pointindex=pointindex+1であり、ステップS708の実行に戻る。
【0123】
ステップS711において、判断結果が「いいえ」である場合、lodindex=lodindex+1であり、ステップS703の実行に戻る。
【0124】
なお、pointindex<inputMorton.sizeの場合、現在ノードを集合O(lodindex)に添加し、即ち現在ノードをlodindex番目のLOD層に区分し、それと同時に、現在ノードに対応するネイバーノードを集合L(lodindex)に添加し、即ち現在ノードに対応するネイバーノードをlodindex+1番目のLOD層に区分する。それから、pointindex=pointindex+1にして、pointindex=inputMorton.size-1となるまで、ステップS708の実行に戻り、それによりlodindex番目のLOD層に対する区分を実現する。更に、pointindex≧inputMorton.sizeの場合は、lodindex番目のLOD層に対する区分の完成を示す。この時、lodindex=lodindex+1が必要であり、且つlodindex=lodcount-1となるまで、ステップS703の実行に戻り、lodcount-1番目のLOD層に対する区分を実現する。それにより、区分待ちのポイントクラウドに対するLOD区分も実現する。ここで、0番目のLOD層~lodcount-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定する。
【0125】
具体的に、ソートした区分待ちのポイントクラウドのモートンコードをサンプリングして、K個のサンプリングポイントのモートンコードを取得してもよく、そしてこのK個のサンプリングポイントのモートンコードに対して右シフト処理を行うことにより、区分待ちのポイントクラウドに対応する初期右シフトビット数Nを取得して、更に各LOD層に対応する右シフトビット数を決定することができる。それから、各LOD層に対して区分する時、入力された区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNビットシフトして、右にシフトされたモートンコードをinputMortonに記憶する。この時、現在ノードに対応する親ノードのモートンコードを計算して、親ノードによりそのネイバーノードのモートンコードを算出してもよく、最後に、inputMortonからネイバーノードのモートンコードに対応するネイバーノードをサーチして、現在ノードをO(lodindex)に区分するとともに、サーチして得られたこれらのネイバーノードをL(lodindex)に区分する。
【0126】
本願の実施例では、現在ノードとネイバーノードとの間の空間距離を計算する必要がない。一般的に、空間において現在ノードと同一の親ノードにあり、且つ現在ノードと同一平面上又は同一直線上及び同一点にあるネイバーノードと現在ノードとの空間距離はいずれも非常に近いと認められ、同一の隣接領域に属すると見なされてもよい。この時、モートンコードに基づいて、現在ノードに対応する親ノードのネイバーノードをサーチしてもよい。異なる距離閾値に基づいてネイバーノードをサーチする従来の技術案と比べて、本願の実施例の区分方法は異なる閾値パラメータの設定を必要とせず、ポイント同士の間の空間距離の毎回計算も必要とせず、それにより計算複雑度を大幅に低減できる。
【0127】
更に、本願の実施例において、LOD層を区分するたびに、現在ノードに対応する親ノードのネイバーノードのみを判断して、現在ノードを集合O(k)に添加し、現在ノードに対応するネイバーノードを集合L(k)に添加するため、ポイント同士の間の空間幾何学的距離のみを考慮することがなく、空間分布の上で、ポイントクラウドの空間分布特性も考慮し、即ち空間におけるポイントの空間幾何学的距離及び空間におけるポイントクラウドの空間分布特性をまとめて考慮することにより、予測性能を向上させることができ、比較的良い符号化・復号化性能を取得することもできる。特に注意されるように、本願の実施例の区分方法は、原始ポイントクラウドのモートンコードのみに基づいて、現在ノードのネイバーノードをサーチしてサンプリングする。毎回でモートンコードのインデックスに基づいて、一定の範囲内において最も近いネイバーをサーチする元の区分方法と比べて、計算複雑度を大幅に低減する。
【0128】
本実施例は区分方法を提供し、該区分方法はエンコーダー又はデコーダーに適用される。上記実施例により前記実施例の具体的な実現を詳しく説明することにより、本願の技術案は現在ノードとネイバーノードとの間の空間距離を計算せず、LOD層を区分するたびに、モートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチして、現在ノードをサンプリングポイントとしてネイバーノードを予測する。それにより、計算複雑度を低減するだけでなく、ポイントクラウドの空間分布特性を考慮するため、ネイバーノードの予測属性の精度も向上させ、属性部分の再構築品質を向上させ、符号化のビットオーバーヘッドを効果的に低減して、符号化・復号化の効率を向上させることができる。
【0129】
上記実施例の同一の発明考案に基づいて、
図8を参照して、
図8は本願の実施例によるエンコーダー80の構造模式図を示す。
図8に示すように、該エンコーダー80は、第1計算ユニット801、第1決定ユニット802、第1判断ユニット803、第1右シフトユニット804、第1サーチユニット805及び第1区分ユニット806を備えてもよく、
第1計算ユニット801は、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算するように設定され、
第1決定ユニット802は、前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数N
iを決定するように設定され、iが0以上の整数であり、N
iが0より大きい整数であり、
第1判断ユニット803は、iがM-1以下であるかどうかを判断するように設定され、MはLOD区分のプリセット層数を示し、
第1右シフトユニット804は、iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にN
iビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶するように設定され、
第1決定ユニット802は更に、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定するように設定され、
第1サーチユニット805は、決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチするように設定され、
第1区分ユニット806は、前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分するように設定され、
第1判断ユニット803は更に、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻るように設定され、
第1決定ユニット802は更に、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定するように設定される。
【0130】
上記技術案において、
図8を参照して、エンコーダー80は第1ソートユニット807を更に備えてもよい。第1ソートユニット807は、プリセットのソートポリシーに従って、前記区分待ちのポイントクラウドにおけるポイントのモートンコードをソートし、ソートしたモートンコードを前記区分待ちのポイントクラウドにおけるポイントのモートンコードとして決定するように設定される。
【0131】
上記技術案において、
図8を参照して、エンコーダー80は第1サンプリングユニット808を更に備えてもよい。第1サンプリングユニット808は、ソートしたモートンコードをサンプリングし、K個のサンプリングポイントのモートンコードを取得するように設定され、Kが0より大きい整数であり、
第1右シフトユニット804は更に、前記K個のサンプリングポイントのモートンコードに対して右シフト処理を行い、右にシフトされたモートンコードに対応するK個のサンプリングポイントを取得するように設定され、
第1判断ユニット803は更に、前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応するかどうかを判断し、前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応しない場合、前記K個のサンプリングポイントのモートンコードに対して右シフト処理を行うステップを実行し続け、前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応する場合、前記K個のサンプリングポイントの右シフトビット数を取得し、前記右シフトビット数を前記区分待ちのポイントクラウドにおけるポイントのモートンコードの初期右シフトビット数として決定するように設定され、前記初期右シフトビット数は前記区分待ちのポイントクラウドにおけるポイントのモートンコードの0番目のLOD層において対応する右シフトビット数N
0を示す。
【0132】
上記技術案において、
図8を参照して、エンコーダー80は第1分析ユニット809を更に備えてもよい。第1分析ユニット809は、前記区分待ちのポイントクラウドに対して特性分析を行い、Kの値を決定するように設定される。
【0133】
上記技術案において、第1決定ユニット802は更に、ソートしたモートンコードに基づいて、最大モートンコードと最小モートンコードを決定するように設定され、
第1計算ユニット801は更に、前記最大モートンコードと前記最小モートンコードとの間の差値を計算するように設定され、
第1右シフトユニット804は更に、前記差値に対して右シフト処理を行い、右にシフトされた差値がプリセット範囲を満足する場合、前記差値の右シフトビット数を取得するように設定され、
第1決定ユニット802は更に、前記右シフトビット数を前記区分待ちのポイントクラウドの初期右シフトビット数として決定するように設定される。
【0134】
上記技術案において、第1決定ユニット802は更に、iが0に等しくない場合、第1プリセット計算モデルを利用して、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定するように設定される。
【0135】
上記技術案において、第1決定ユニット802は具体的に、i-1番目のLOD層に対応する右シフトビット数Ni-1を取得し、i-1番目のLOD層に対応する右シフトビット数Ni-1とプリセット値を加算し、加算値を取得し、前記加算値をi番目のLOD層に対応する右シフトビット数Niとして決定するように設定される。
【0136】
上記技術案において、第1分析ユニット809は更に、前記区分待ちのポイントクラウドに対して特性分析を行い、前記プリセット値を決定するように設定される。
【0137】
上記技術案において、前記プリセット値が3に等しい。
【0138】
上記技術案において、第1右シフトユニット804は更に、i番目のLOD層に対応する右シフトビット数Niに基づいて、前記i番目のLOD層における現在ノードのモートンコードに対して右シフト処理を行うように設定され、
第1決定ユニット802は更に、右にシフトされたモートンコードを、前記i番目のLOD層における現在ノードに対応する親ノードのモートンコードとして決定するように設定される。
【0139】
上記技術案において、第1決定ユニット802は更に、決定された親ノードのモートンコードに基づいて、前記親ノードに対応するネイバーノードのモートンコードを決定するように設定され、
第1サーチユニット805は具体的に、前記ネイバーノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記ネイバーノードのモートンコードに対応するネイバーノードをサーチするように設定される。
【0140】
上記技術案において、第1計算ユニット801は更に、決定された親ノードのモートンコードに基づいて、前記親ノードと同一平面上にあり、同一直線上にあり、同一点にあるすべてのネイバーノードのモートンコードを計算し、第1数量個のネイバーノードのモートンコードを取得するように設定され、
第1決定ユニット802は具体的に、前記第1数量個のネイバーノードのモートンコードを、それぞれ現在ノードのモートンコードと比較し、ネイバーノードのモートンコードが現在ノードのモートンコードより小さい場合、前記ネイバーノードのモートンコードを廃棄し、ネイバーノードのモートンコードが現在ノードのモートンコード以上である場合、前記ネイバーノードのモートンコードを保留して、第2数量個のネイバーノードのモートンコードを取得し、前記第2数量が前記第1数量以下であり、前記第2数量個のネイバーノードのモートンコードを、前記親ノードに対応するネイバーノードのモートンコードとして決定するように設定される。
【0141】
上記技術案において、第1決定ユニット802は更に、前記区分待ちのポイントクラウドに基づいて、前記i番目のLOD層における現在ノードに対応する隣接領域を決定するように設定され、
第1計算ユニット801は更に、前記隣接領域の質量中心を計算し、前記現在ノード及び前記第1数量個のネイバーノードから、前記質量中心に最も近いノードを目標ノードとして選択するように設定され、
第1区分ユニット806は更に、前記目標ノードをi番目のLOD層に区分し、残りのノードをi+1番目のLOD層に区分するように設定され、前記残りのノードは前記現在ノード及び前記第1数量個のネイバーノードのうちの前記目標ノード以外のノードを示す。
【0142】
上記技術案において、第1右シフトユニット804は更に、前記区分待ちのポイントクラウドにおけるポイントのモートンコードに対して右シフト処理を行い、複数の集合を取得するように設定され、各集合は前記区分待ちのポイントクラウドのうちの一部の区分待ちのポイントクラウドを含み、
第1区分ユニット806は更に、前記複数の集合のうちの各集合に対して、それぞれ各集合に含まれる一部の区分待ちのポイントクラウドに対してLOD層区分を行うステップを実行するように設定される。
【0143】
理解できるように、本実施例において、「ユニット」は一部の電子回路、一部のプロセッサ、一部のプログラム又はソフトウェア等であってもよく、当然ながら、モジュールであってもよく、非モジュール化のものであってもよい。そして、本実施例における各構成部分は、1つの処理ユニットに集積されたものであってもよく、各ユニットがそれぞれ物理的に存在するものであってもよく、2つ以上のユニットが1つのユニットに集積されたものであってもよい。上記の集積されたユニットはハードウェアの形態で実現してよく、ソフトウェア機能モジュールの形態で実現してもよい。
【0144】
前記集積されたユニットはソフトウェア機能モジュールの形態で実現し且つ独立の製品として販売又は使用する場合、1つのコンピュータ読み取り可能な記憶媒体に記憶されることができる。このような理解に基づいて、本実施例の技術案の本質又は従来技術に対する貢献の部分或いは該技術案の全部又は一部は、ソフトウェア製品の形式で体現してもよく、該コンピュータソフトウェア製品は1つの記憶媒体に記憶され、1つのコンピュータ装置(パソコン、サーバ、又はネットワーク装置等であってもよい)又はプロセッサ(processor)が本実施例に記載の方法の全部又は一部のステップを実行するための若干の指令を含む。前記記憶媒体は、Uディスク、移動ハードディスク、読み出し専用メモリ(ROM、Read Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク又は光ディスク等の各種のプログラムコードを記憶可能な媒体を含む。
【0145】
従って、本実施例はコンピュータ記憶媒体を提供し、エンコーダー80に適用され、該コンピュータ記憶媒体に区分プログラムが記憶され、前記区分プログラムは第1プロセッサにより実行される場合、前記実施例のうちのいずれか1つに記載の方法を実現する。
【0146】
上記エンコーダー80の構成及びコンピュータ記憶媒体に基づいて、
図9を参照して、
図9は本願の実施例によるエンコーダー80の具体的なハードウェア構造を示し、第1通信インタフェース901、第1メモリ902及び第1プロセッサ903を備えてもよく、各コンポーネントは第1バスシステム904によりカップリングされる。理解できるように、第1バスシステム904は、これらのコンポーネントの間の接続通信を実現することに用いられる。第1バスシステム904は、データバスに加えて、電源バス、制御バス及び状態信号バスも含む。但し、説明を明確にするために、
図9において、様々なバスを第1バスシステム904と表記する。そのうち、
第1通信インタフェース901は、他の外部ネットワークエレメントとの情報の送受信の過程における信号の送受信に用いられ、
第1メモリ902は、第1プロセッサ903で実行可能なコンピュータプログラムを記憶することに用いられ、
第1プロセッサ903は、前記コンピュータプログラムを実行する場合、
区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算することと、
前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数N
iを決定し、iが0以上の整数であり、N
iが0より大きい整数であることと、
iがM-1以下であるかどうかを判断し、MがLOD区分のプリセット層数を示すことと、
iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にN
iビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶することと、
i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することと、
決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチすることと、
前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分することと、
i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻ることと、
iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定することと、を実行することに用いられる。
【0147】
理解できるように、本願の実施例における第1メモリ902は揮発性メモリ又は不揮発性メモリであってもよく、或いは揮発性メモリと不揮発性メモリの両方を含んでもよい。ここで、不揮発性メモリは、読み出し専用メモリ(ROM、Read-Only Memory)、プログラマブル読み出し専用メモリ(PROM、Programmable ROM)、消去可能プログラマブル読み出し専用メモリ(EPROM、Erasable PROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM、Electrically EPROM)又はフラッシュメモリであってもよい。揮発性メモリは、外部キャッシュとして使用するランダムアクセスメモリ(RAM、Random Access Memory)であってもよい。限定的でなく例示的な説明により、多くの形式のRAM、例えばスタティックランダムアクセスメモリ(SRAM、Static RAM)、ダイナミックランダムアクセスメモリ(DRAM、Dynamic RAM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM、Synchronous DRAM)、ダブルデータレート同期ダイナミックランダムアクセスメモリ(DDRSDRAM、Double Data Rate SDRAM)、拡張同期ダイナミックランダムアクセスメモリ(ESDRAM、Enhanced SDRAM)、同期接続ダイナミックランダムアクセスメモリ(SLDRAM、Synchlink DRAM)、ダイレクトメモリアクセスメモリ(DRRAM、Direct Rambus RAM)は利用可能である。本願で説明するシステム及び方法の第1メモリ902は、これらのメモリ及びその他の任意の適切なタイプのメモリを含むが、これらに限定されない。
【0148】
第1プロセッサ903は集積回路チップである可能性があり、信号の処理能力を持つ。実現過程において、上記方法の各ステップは、第1プロセッサ903内のハードウェアの集積論理回路又はソフトウェア形態の指令によって遂行できる。上記第1プロセッサ903は汎用プロセッサ、デジタルシグナルプロセッサ(DSP、Digital Signal Processor)、専用集積回路(ASIC、Application Specific Integrated Circuit)、フィールドプログラマブルゲートアレイ(FPGA、Field Programmable Gate Array)又は他のプログラマブル論理デバイス、ディスクリートゲート又はトランジスタ論理デバイス、ディスクリートハードウェアモジュールであってもよい。本願の実施例に開示される様々な方法、ステップ及び論理ブロック図は、実現又は実行されることができる。汎用プロセッサはマイクロプロセッサであってもよく、或いは、該プロセッサは任意の通常のプロセッサ等であってもよい。本願の実施例を組合わせて開示された方法のステップは、直接にハードウェアデコードプロセッサで実行され、或いは、デコードプロセッサにおけるハードウェア及びソフトウェアのモジュールの組合せで実行される。ソフトウェアモジュールはランダムアクセスメモリ、フラッシュメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、又は電気的に書き換え可能なプログラマブルメモリ、レジスタ等の本分野で成熟した記憶媒体に位置してもよい。該記憶媒体は第1メモリ902にあり、第1プロセッサ903は第1メモリ902内の情報を読み取り、そのハードウェアと共に上記方法のステップを遂行する。
【0149】
理解できるように、本願に記載のこれらの実施例はハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード又はそれらの組合せにより実現できる。ハードウェアによる実現について、処理ユニットは1つの又は複数の特定用途向け集積回路(ASIC、Application Specific Integrated Circuits)、デジタルシグナルプロセッサ(DSP、Digital Signal Processing)、デジタル信号処理装置(DSPD、DSP Device)、プログラマブルロジックデバイス(PLD、Programmable Logic Device)、フィールドプログラマブルゲートアレイ(FPGA、Field- Programmable Gate Array)、汎用プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、本願に記載の機能を実行するための他の電子ユニット又はそれらの組合せにおいて実現できる。ソフトウェアによる実現について、本願に記載の機能のモジュール(例えばプロセス、関数等)により本願に記載の技術を実現できる。ソフトウェアコードはメモリに記憶されて、プロセッサにより実行されてもよい。メモリはプロセッサ内又はプロセッサの外部において実現できる。
【0150】
選択肢として、他の実施例として、第1プロセッサ903は更に、前記コンピュータプログラムを実行する場合、上記実施例のうちのいずれか1つに記載の方法を実行するように設定される。
【0151】
本願の実施例はエンコーダーを提供し、第1計算ユニット、第1決定ユニット、第1判断ユニット、第1右シフトユニット、第1サーチユニット及び第1区分ユニットを備えてもよい。第1計算ユニットは、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算するように設定される。第1決定ユニットは、前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定するように設定され、iが0以上の整数であり、Niが0より大きい整数である。第1判断ユニットは、iがM-1以下であるかどうかを判断するように設定され、MはLOD区分のプリセット層数を示す。第1右シフトユニットは、iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶するように設定される。第1決定ユニットは更に、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定するように設定される。第1サーチユニットは、決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチするように設定される。第1区分ユニットは、前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分するように設定される。第1判断ユニットは更に、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻るように設定される。第1決定ユニットは更に、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定するように設定される。このように、本願の技術案は現在ノードとネイバーノードとの間の空間距離を計算せず、LOD層を区分するたびに、モートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチして、現在ノードをサンプリングポイントとしてネイバーノードを予測する。それにより、計算複雑度を低減するだけでなく、ポイントクラウドの空間分布特性を考慮するため、ネイバーノードの予測属性の精度も向上させ、属性部分の再構築品質を向上させ、符号化のビットオーバーヘッドを効果的に低減して、符号化・復号化の効率を向上させることができる。
【0152】
上記実施例の同一の発明考案に基づいて、
図10を参照して、
図10は本願の実施例によるデコーダー100の構造模式図を示す。
図10に示すように、該デコーダー100は、第2計算ユニット1001、第2決定ユニット1002、第2判断ユニット1003、第2右シフトユニット1004、第2サーチユニット1005及び第2区分ユニット1006を備えてもよく、
第2計算ユニット1001は、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算するように設定され、
第2決定ユニット1002は、前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数N
iを決定するように設定され、iが0以上の整数であり、N
iが0より大きい整数であり、
第2判断ユニット1003は、iがM-1以下であるかどうかを判断するように設定され、MはLOD区分のプリセット層数を示し、
第2右シフトユニット1004は、iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にN
iビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶するように設定され、
第2決定ユニット1002は更に、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定するように設定され、
第2サーチユニット1005は、決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチするように設定され、
第2区分ユニット1006は、前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分するように設定され、
第2判断ユニット1003は更に、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻るように設定され、
第2決定ユニット1002は更に、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定するように設定される。
【0153】
上記技術案において、
図10を参照して、デコーダー100は第2ソートユニット1007を更に備えてもよい。第2ソートユニット1007は、プリセットのソートポリシーに従って、前記区分待ちのポイントクラウドにおけるポイントのモートンコードをソートし、ソートしたモートンコードを前記区分待ちのポイントクラウドにおけるポイントのモートンコードとして決定するように設定される。
【0154】
上記技術案において、
図10を参照して、デコーダー100は第2サンプリングユニット1008を更に備えてもよい。第2サンプリングユニット1008は、ソートしたモートンコードをサンプリングし、K個のサンプリングポイントのモートンコードを取得するように設定され、Kが0より大きい整数であり、
第2右シフトユニット1004は更に、前記K個のサンプリングポイントのモートンコードに対して右シフト処理を行い、右にシフトされたモートンコードに対応するK個のサンプリングポイントを取得するように設定され、
第2判断ユニット1003は更に、前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応するかどうかを判断し、前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応しない場合、前記K個のサンプリングポイントのモートンコードに対して右シフト処理を行うステップを実行し続け、前記右にシフトされたモートンコードに対応するK個のサンプリングポイントが、1つのサンプリングポイントあたり少なくとも1つのネイバーノードに対応する場合、前記K個のサンプリングポイントの右シフトビット数を取得し、前記右シフトビット数を前記区分待ちのポイントクラウドにおけるポイントのモートンコードの初期右シフトビット数として決定するように設定され、前記初期右シフトビット数は前記区分待ちのポイントクラウドにおけるポイントのモートンコードの0番目のLOD層において対応する右シフトビット数N
0を示す。
【0155】
上記技術案において、
図10を参照して、デコーダー100は第2分析ユニット1009を更に備えてもよい。第2分析ユニット1009は、前記区分待ちのポイントクラウドに対して特性分析を行い、Kの値を決定するように設定される。
【0156】
上記技術案において、第2決定ユニット1002は更に、ソートしたモートンコードに基づいて、最大モートンコードと最小モートンコードを決定するように設定され、
第2計算ユニット1001は更に、前記最大モートンコードと前記最小モートンコードとの間の差値を計算するように設定され、
第2右シフトユニット1004は更に、前記差値に対して右シフト処理を行い、右にシフトされた差値がプリセット範囲を満足する場合、前記差値の右シフトビット数を取得するように設定され、
第2決定ユニット1002は更に、前記右シフトビット数を前記区分待ちのポイントクラウドの初期右シフトビット数として決定するように設定される。
【0157】
上記技術案において、第2決定ユニット1002は更に、iが0に等しくない場合、第1プリセット計算モデルを利用して、前記区分待ちのポイントクラウドにおけるi番目のLOD層に対応する右シフトビット数Niを決定するように設定される。
【0158】
上記技術案において、第2決定ユニット1002は具体的に、i-1番目のLOD層に対応する右シフトビット数Ni-1を取得し、i-1番目のLOD層に対応する右シフトビット数Ni-1とプリセット値を加算し、加算値を取得し、前記加算値をi番目のLOD層に対応する右シフトビット数Niとして決定するように設定される。
【0159】
上記技術案において、第2分析ユニット1009は更に、前記区分待ちのポイントクラウドに対して特性分析を行い、前記プリセット値を決定するように設定される。
上記技術案において、前記プリセット値が3に等しい。
【0160】
上記技術案において、第2右シフトユニット1004は更に、i番目のLOD層に対応する右シフトビット数Niに基づいて、前記i番目のLOD層における現在ノードのモートンコードに対して右シフト処理を行うように設定され、
第2決定ユニット1002は更に、右にシフトされたモートンコードを、前記i番目のLOD層における現在ノードに対応する親ノードのモートンコードとして決定するように設定される。
【0161】
上記技術案において、第2決定ユニット1002は更に、決定された親ノードのモートンコードに基づいて、前記親ノードに対応するネイバーノードのモートンコードを決定するように設定され、
第2サーチユニット1005は具体的に、前記ネイバーノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記ネイバーノードのモートンコードに対応するネイバーノードをサーチするように設定される。
【0162】
上記技術案において、第2計算ユニット1001は更に、決定された親ノードのモートンコードに基づいて、前記親ノードと同一平面上にあり、同一直線上にあり、同一点にあるすべてのネイバーノードのモートンコードを計算し、第1数量個のネイバーノードのモートンコードを取得するように設定され、
第2決定ユニット1002は具体的に、前記第1数量個のネイバーノードのモートンコードを、それぞれ現在ノードのモートンコードと比較し、ネイバーノードのモートンコードが現在ノードのモートンコードより小さい場合、前記ネイバーノードのモートンコードを廃棄し、ネイバーノードのモートンコードが現在ノードのモートンコード以上である場合、前記ネイバーノードのモートンコードを保留して、第2数量個のネイバーノードのモートンコードを取得し、前記第2数量が前記第1数量以下であり、前記第2数量個のネイバーノードのモートンコードを、前記親ノードに対応するネイバーノードのモートンコードとして決定するように設定される。
【0163】
上記技術案において、第2決定ユニット1002は更に、前記区分待ちのポイントクラウドに基づいて、前記i番目のLOD層における現在ノードに対応する隣接領域を決定するように設定され、
第2計算ユニット1001は更に、前記隣接領域の質量中心を計算し、前記現在ノード及び前記第1数量個のネイバーノードから、前記質量中心に最も近いノードを目標ノードとして選択するように設定され、
第2区分ユニット1006は更に、前記目標ノードをi番目のLOD層に区分し、残りのノードをi+1番目のLOD層に区分するように設定され、前記残りのノードは前記現在ノード及び前記第1数量個のネイバーノードのうちの前記目標ノード以外のノードを示す。
【0164】
上記技術案において、第2右シフトユニット1004は更に、前記区分待ちのポイントクラウドにおけるポイントのモートンコードに対して右シフト処理を行い、複数の集合を取得するように設定され、各集合は前記区分待ちのポイントクラウドのうちの一部の区分待ちのポイントクラウドを含み、
第2区分ユニット1006は更に、前記複数の集合のうちの各集合に対して、それぞれ各集合に含まれる一部の区分待ちのポイントクラウドに対してLOD層区分を行うステップを実行するように設定される。
【0165】
理解できるように、本実施例において、「ユニット」は一部の電子回路、一部のプロセッサ、一部のプログラム又はソフトウェア等であってもよく、当然ながら、モジュールであってもよく、非モジュール化のものであってもよい。そして、本実施例における各構成部分は、1つの処理ユニットに集積されたものであってもよく、各ユニットがそれぞれ物理的に存在するものであってもよく、2つ以上のユニットが1つのユニットに集積されたものであってもよい。上記の集積されたユニットはハードウェアの形態で実現してよく、ソフトウェア機能モジュールの形態で実現してもよい。
【0166】
前記集積されたユニットはソフトウェア機能モジュールの形態で実現し且つ独立の製品として販売又は使用する場合、1つのコンピュータ読み取り可能な記憶媒体に記憶されることができる。このような理解に基づいて、本実施例はコンピュータ記憶媒体を提供し、デコーダー100に適用され、該コンピュータ記憶媒体に区分プログラムが記憶され、前記区分プログラムは第2プロセッサにより実行される場合、前記実施例のうちのいずれか1つに記載の方法を実現する。
【0167】
上記デコーダー100の構成及びコンピュータ記憶媒体に基づいて、
図11を参照して、
図11は本願の実施例によるデコーダー100の具体的なハードウェア構造を示し、第2通信インタフェース1101、第2メモリ1102及び第2プロセッサ1103を備えてもよく、各コンポーネントは第2バスシステム1104によりカップリングされる。理解できるように、第2バスシステム1104は、これらのコンポーネントの間の接続通信を実現することに用いられる。第2バスシステム1104は、データバスに加えて、電源バス、制御バス及び状態信号バスも含む。但し、説明を明確にするために、
図11において、様々なバスを第2バスシステム1104と表記する。そのうち、
第2通信インタフェース1101は、他の外部ネットワークエレメントとの情報の送受信の過程における信号の送受信に用いられ、
第2メモリ1102は、第2プロセッサ1103で実行可能なコンピュータプログラムを記憶することに用いられ、
第2プロセッサ1103は、前記コンピュータプログラムを実行する場合、
区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算することと、
前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数N
iを決定し、iが0以上の整数であり、N
iが0より大きい整数であることと、
iがM-1以下であるかどうかを判断し、MがLOD区分のプリセット層数を示すことと、
iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にN
iビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶することと、
i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することと、
決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチすることと、
前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分することと、
i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻ることと、
iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定することと、を実行することに用いられる。
【0168】
選択肢として、他の実施例として、第2プロセッサ1103は更に、前記コンピュータプログラムを実行する場合、上記実施例のうちのいずれか1つに記載の方法を実行するように設定される。
【0169】
理解できるように、第2メモリ1102と第1メモリ902のハードウェア機能は類似し、第2プロセッサ1103と第1プロセッサ903のハードウェア機能は類似するため、ここで繰り返して説明しない。
【0170】
本願の実施例はデコーダーを提供し、第2計算ユニット、第2決定ユニット、第2判断ユニット、第2右シフトユニット、第2サーチユニット及び第2区分ユニットを備えてもよい。第2計算ユニットは、区分待ちのポイントクラウドに基づいて、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを計算するように設定される。第2決定ユニットは、前記区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定するように設定され、iが0以上の整数であり、Niが0より大きい整数である。第2判断ユニットは、iがM-1以下であるかどうかを判断するように設定され、MはLOD区分のプリセット層数を示す。第2右シフトユニットは、iがM-1以下である場合、i番目のLOD層に対して、前記区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶するように設定される。第2決定ユニットは更に、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定するように設定される。第2サーチユニットは、決定された親ノードのモートンコードに基づいて、前記プリセットの記憶領域において、前記親ノードに対応するネイバーノードをサーチするように設定される。第2区分ユニットは、前記現在ノードをi番目のLOD層に区分し、前記ネイバーノードをi+1番目のLOD層に区分するように設定される。第2判断ユニットは更に、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻るように設定される。第2決定ユニットは更に、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、前記区分待ちのポイントクラウドに対応して区分されるLOD層として決定するように設定される。このように、本願の技術案は現在ノードとネイバーノードとの間の空間距離を計算せず、LOD層を区分するたびに、モートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチして、現在ノードをサンプリングポイントとしてネイバーノードを予測する。それにより、計算複雑度を低減するだけでなく、ポイントクラウドの空間分布特性を考慮するため、ネイバーノードの予測属性の精度も向上させ、属性部分の再構築品質を向上させ、符号化のビットオーバーヘッドを効果的に低減して、符号化・復号化の効率を向上させることができる。
【0171】
なお、本願において、「含む」、「含まれる」という用語又はその他のいかなる変形は、非排他的な包含を意味し、これにより、一連の要素を含む過程、方法、物又は装置はそれらの要素だけでなく、明確に列挙されない他の要素をも含み、或いはこのような過程、方法、物又は装置が固有する要素を更に含む。より多くの制限がない場合、「1つの…を含む」というセンテンスにより限定された要素は、該要素を含む過程、方法、物又は装置に別の同一の要素が更に存在することを排除しない。
【0172】
上記本願の実施例の番号はただ記述のためのものであり、実施例の優劣を代表しない。
【0173】
本願によるいくつの方法実施例に開示された方法は、衝突しない場合に任意に組合わせて、新たな方法実施例を取得することができる。
【0174】
本願によるいくつの製品実施例に開示された特徴は、衝突しない場合に任意に組合わせて、新たな製品実施例を取得することができる。
【0175】
本願によるいくつの方法又は装置実施例に開示された特徴は、衝突しない場合に任意に組合わせて、新たな方法実施例又は装置実施例を取得することができる。
【0176】
上記のものは本願の具体的な実施形態に過ぎず、本願の保護範囲はこれに限定されるものではなく、いかなる当業者が本願の開示した技術範囲内において容易に想到し得る変化又は置き換えは、いずれも本願の保護範囲内に含まれるべきである。従って、本願の保護範囲は記載の請求項の保護範囲を基準とするべきである。
【産業上の利用可能性】
【0177】
本願の実施例において、該方法はエンコーダーに適用される。区分待ちのポイントクラウドに基づいて、区分待ちのポイントクラウドにおけるポイントのモートンコードを計算することと、区分待ちのポイントクラウドにおけるi番目の詳細レベル(LOD)層に対応する右シフトビット数Niを決定し、iが0以上の整数であり、Niが0より大きい整数であることと、iがM-1以下であるかどうかを判断し、MがLOD区分のプリセット層数を示すことと、iがM-1以下である場合、i番目のLOD層に対して、区分待ちのポイントクラウドにおけるポイントのモートンコードを右にNiビットシフトして、右にシフトされたモートンコードをプリセットの記憶領域に記憶することと、i番目のLOD層における現在ノードに対応する親ノードのモートンコードを決定することと、決定された親ノードのモートンコードに基づいて、プリセットの記憶領域において、親ノードに対応するネイバーノードをサーチすることと、現在ノードをi番目のLOD層に区分し、ネイバーノードをi+1番目のLOD層に区分することと、i+1に基づいてiを更新し、iがM-1以下であるかどうかの判断に戻ることと、iがM-1より大きい場合、0番目のLOD層~M-1番目のLOD層を、区分待ちのポイントクラウドに対応して区分されるLOD層として決定することと、によって、本願の技術案は現在ノードとネイバーノードとの間の空間距離を計算せず、LOD層を区分するたびに、モートンコードを利用して現在ノードに対応する親ノードのネイバーノードをサーチして、現在ノードをサンプリングポイントとしてネイバーノードを予測する。それにより、計算複雑度を低減するだけでなく、ポイントクラウドの空間分布特性を考慮するため、ネイバーノードの予測属性の精度も向上させ、属性部分の再構築品質を向上させ、符号化のビットオーバーヘッドを効果的に低減して、符号化・復号化の効率を向上させることができる。