(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-15
(45)【発行日】2023-11-24
(54)【発明の名称】分割方法、符号器、復号器及びコンピュータ記憶媒体
(51)【国際特許分類】
G06T 9/40 20060101AFI20231116BHJP
G06T 17/00 20060101ALI20231116BHJP
【FI】
G06T9/40
G06T17/00 500
(21)【出願番号】P 2022519645
(86)(22)【出願日】2019-09-30
(86)【国際出願番号】 CN2019109653
(87)【国際公開番号】W WO2021062736
(87)【国際公開日】2021-04-08
【審査請求日】2022-09-06
(73)【特許権者】
【識別番号】516227559
【氏名又は名称】オッポ広東移動通信有限公司
【氏名又は名称原語表記】GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
【住所又は居所原語表記】No. 18 Haibin Road,Wusha, Chang’an,Dongguan, Guangdong 523860 China
(74)【代理人】
【識別番号】100091487
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100120031
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100152205
【氏名又は名称】吉田 昌司
(74)【代理人】
【識別番号】100137523
【氏名又は名称】出口 智也
(74)【代理人】
【識別番号】100120385
【氏名又は名称】鈴木 健之
(72)【発明者】
【氏名】チャン、ウェイ
(72)【発明者】
【氏名】ヤン、フーチョン
(72)【発明者】
【氏名】ワン、シューアイ
(72)【発明者】
【氏名】マー、イェンチュオ
(72)【発明者】
【氏名】フオ、チュンイェン
(72)【発明者】
【氏名】スン、ツォーシン
【審査官】佐藤 直樹
(56)【参考文献】
【文献】米国特許出願公開第2019/080483(US,A1)
【文献】中国特許出願公開第108470374(CN,A)
【文献】中国特許出願公開第103077549(CN,A)
【文献】中国特許出願公開第109257604(CN,A)
【文献】米国特許出願公開第2008/238919(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 9/40
G06T 17/00
(57)【特許請求の範囲】
【請求項1】
点群分割方法であって、
復号器に応用され、
点群の幾何情報に基づいて、前記点群のモートンコードを
取得することと、
前
記点群
を反復の入力点群として確定することと、
i回目の反復の入力点群における点の数
に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトすることと、
右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択することと、
選択された点でi番目の詳細度(LOD)層を形
成することとを含み、
Kは正の整数である、
ことを特徴とする
点群分割方法。
【請求項2】
前記i回目の反復の入力点群における点の数
に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、前記
点群分割方法はさらに、
前
記点群の分布に基づいてKの値を確定することを含む、
ことを特徴とする請求項1に記載の
点群分割方法。
【請求項3】
iが第一の予め設定された閾値以上であるとき、前記i回目の反復の入力点群における点の数
に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、前記
点群分割方法はさらに、
前記i回目の反復の入力点群における点の数と前記i回目の反復の入力点群の分布に基づいて、Kの値を確定することを含む、
ことを特徴とする請求項1に記載の
点群分割方法。
【請求項4】
iが第一の予め設定された閾値以上であるとき、選択された点でi番目のLOD層を形成
した後、前記
点群分割方法はさらに、
前記i回目の反復の入力点群に基づいて、予め設定された且つ距離に基づいたLOD分割のアルゴリズムを利用して分割することによってLOD層を取得することと、
分割によって取得されたLOD層及び1番目から(i-1)番目までのLOD層を、前
記点群が分割された後のLOD層として確定することとを含む、
ことを特徴とする請求項1に記載の
点群分割方法。
【請求項5】
前記右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択することは、
前記i回目の反復の入力点群のモートンコードの昇順で、前記i回目の反復の入力点群における点をランク付けすることと、
前記右にKビットシフトされた後のモートンコードと同じ値を有する点から、1番目にランク付けされた点を選択することとを含む、
ことを特徴とする請求項1に記載の
点群分割方法。
【請求項6】
前記右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択することは、
前記右にKビットシフトされた後のモートンコードと同じ値を有する点の質量中心を確定することと、
前記右にKビットシフトされた後のモートンコードと同じ値を有する点から、前記質量中心に一番近い点を選択される1つの点として確定することとを含む、
ことを特徴とする請求項1に記載の
点群分割方法。
【請求項7】
前記i回目の反復の入力点群における点
に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトした後、選択された点でi番目のLOD層を形成する前に、前記
点群分割方法はさらに、
前記右にKビットシフトされた後のモートンコードと同じ値を有する点の数に基づいて、対応する選択の数を確定することと、
前記対応する選択の数に基づいて、前記右にKビットシフトされた後のモートンコードと同じ値を有する点から、前記選択の数の点を選択することとを含む、
ことを特徴とする請求項1に記載の
点群分割方法。
【請求項8】
前記i回目の反復の入力点群における点の数
に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトした後、選択された点でi番目のLOD層を形成する前に、前記
点群分割方法はさらに、
前記i回目の反復の入力点群のモートンコードの昇順で、前記i回目の反復の入力点群における点をランク付けすることと、
前記右にKビットシフトされた後のモートンコードと同じ値を有する点から、ランキング結果に基づいて、第二の予め設定された閾値ごとに1つの点を選択することとを含む、
ことを特徴とする請求項1に記載の
点群分割方法。
【請求項9】
前記点群のモートンコードを
取得した後、
前記i回目の反復の入力点群における点の数に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、前記
点群分割方法はさらに、
前
記点群のモートンコードを右にNビットシフトし、右にNビットシフトされた後のモートンコードと同じ値を有する点で1つの点群グループを形成することと、
各点群グループをそれぞ
れ反復の入力点群として確定することとを含み、
Nは正の整数である、
ことを特徴とする請求項1に記載の
点群分割方法。
【請求項10】
点群分割方法であって、符号器に応用され、
点群の幾何情報に基づいて、前記点群のモートンコードを取得することと、
前記点群を反復の入力点群として確定することと、
i回目の反復の入力点群における点の数に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトすることと、
右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択することと、
選択された点でi番目の詳細度(LOD)層を形成することとを含み、
Kは正の整数である、
ことを特徴とする点群分割方法。
【請求項11】
前記i回目の反復の入力点群における点の数に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、前記点群分割方法はさらに、
前記点群の分布に基づいてKの値を確定することを含む、
ことを特徴とする請求項10に記載の点群分割方法。
【請求項12】
iが第一の予め設定された閾値以上であるとき、前記i回目の反復の入力点群における点の数に基づいて、前記i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、前記点群分割方法はさらに、
前記i回目の反復の入力点群における点の数と前記i回目の反復の入力点群の分布に基づいて、Kの値を確定することを含む、
ことを特徴とする請求項10に記載の点群分割方法。
【請求項13】
符号器であって、
プロセッサと、前記プロセッサによって実行可能な命令を記憶する記憶媒体とを含み、
前記記憶媒体は通信バスを介して前記プロセッサに依存して操作を実行し、前記プロセッサによって実行されると、前記命令は前記請求項
10~12のいずれか一項に記載の
点群分割方法を実行する、
ことを特徴とする符号器。
【請求項14】
復号器であって、
プロセッサと、前記プロセッサによって実行可能な命令を記憶する記憶媒体とを含み、
前記記憶媒体は通信バスを介して前記プロセッサに依存して操作を実行し、前記プロセッサによって実行されると、前記命令は前記請求項1~9のいずれか一項に記載の
点群分割方法を実行する、
ことを特徴とする復号器。
【請求項15】
コンピュータ可読記憶媒体であって、
実行可能な命令を記憶し、前記実行可能な命令が1つ又は複数のプロセッサによって実行されると、前記プロセッサが前記請求項
1~12のいずれか一項に記載の
点群分割方法を実行する、
ことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、幾何に基づいた点群圧縮(Geometry-based Point Cloud Compression、G-PCC)の符号化・復号化における詳細度(level of detail、LOD)の分割技術に関し、特に、分割方法、符号器、復号器及びコンピュータ記憶媒体に関する。
【背景技術】
【0002】
G-PCCの符号器フレームワークにおいて、点群の幾何情報と、各点群に対応する属性情報とが別々に符号化される。幾何符号化が先に行われ、幾何符号化が完了した後、幾何情報を再構成する。現在、属性符号化は主に色情報を対象とする。属性符号化を行うとき、まず、色情報をRGB色空間からYUV色空間に変換する。その後、再構成された幾何情報を利用して点群を再着色し、符号化されていない属性情報と再構成された幾何情報とを対応させる。色情報の符号化には、主に2つの変換方法がある。1つは、LOD分割に基づいたリフティング変換(lifting transform)である。現在、LOD分割は主に、距離に基づいたLOD分割と固定サンプリングレート(fixed sampling rate)に基づいたLOD分割に分けられる。もう1つの変換方法は、属性に対して直接に実行されるRAHT(Regional Adaptive Hierarchical Transform)である。
【0003】
点群に対する距離に基づいたLOD分割の計算の複雑度が高いため、計算の複雑度を低くするために、距離に基づいたLOD分割に基づいて、現在の点に対応するモートンコードの範囲内で検索する方法を使用してLOD分割を行う。しかしながら、ビデオ符号化・復号化において、LOD分割が完了した後、隣接ノードの属性を予測するために、LOD分割構造を使用する必要がある。しかし、現行のLOD分割法によって得られたLOD層は、隣接ノードの予測精度が低いことにつながる。
【発明の概要】
【0004】
本発明の実施形態において、分割方法、符号器、復号器及びコンピュータ記憶媒体が提供される。それによって、隣接ノードの予測精度を高め、符号化・復号化レートを向上させることができる。
【0005】
本発明の実施形態の技術的解決策は以下のように実現される。
【0006】
第一様態において、本発明の実施形態では、分割方法が提供される。当該方法は以下の内容を含む。
分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算する。
分割しようとする点群を1回目の反復の入力点群として確定する。
i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断する。iは初期値が1である正の整数である。
i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトする。Kは正の整数である。
右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択する。
選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、i回目の反復を行う場合にi回目の反復の入力点群における点の数が0に等しいか否かを判断することに戻る。
i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定する。
【0007】
第二様態において、本発明の実施形態では、符号器が提供される。当該符号器は第一計算モジュール、第一確定モジュール、第一判断モジュール、第一右シフトモジュール、第一選択モジュール、第一分割モジュール及び第二確定モジュールを含む。
第一計算モジュールは、分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算するように構成されている。
第一確定モジュールは、分割しようとする点群を1回目の反復の入力点群として確定するように構成されている。
第一判断モジュールは、i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断するように構成されている。iは初期値が1である正の整数である。
第一右シフトモジュールは、i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトするように構成されている。Kは正の整数である。
第一選択モジュールは、右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択するように構成されている。
第一分割モジュールは、選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、第一判断モジュールに戻ってi回目の反復を行う場合にi回目の反復の入力点群における点の数が0に等しいか否かを判断するように構成されている。
第二確定モジュールは、i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定するように構成されている。
【0008】
第三様態において、本発明の実施形態では、復号器が提供される。当該復号器は第二計算モジュール、第三確定モジュール、第二判断モジュール、第二右シフトモジュール、第二選択モジュール、第二分割モジュール及び第四確定モジュールを含む。
第二計算モジュールは、分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算するように構成されている。
第三確定モジュールは、分割しようとする点群を1回目の反復の入力点群として確定するように構成されている。
第二判断モジュールは、i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断するように構成されている。iは初期値が1である正の整数である。
第二右シフトモジュールは、i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトするように構成されている。Kは正の整数である。
第二選択モジュールは、右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択するように構成されている。
第二分割モジュールは、選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、第二判断モジュールに戻ってi回目の反復を行う場合にi回目の反復の入力点群における点の数が0に等しいか否かを判断するように構成されている。
第四確定モジュールは、i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定するように構成されている。
【0009】
第四様態において、本発明の実施形態では、符号器が提供される。当該符号器はプロセッサと、プロセッサによって実行可能な命令を記憶する記憶媒体とを含む。記憶媒体は通信バスを介してプロセッサに依存して操作を実行する。プロセッサによって実行されると、上記命令は上記1つ又は複数の実施形態に記載の分割方法を実行する。
【0010】
第五様態において、本発明の実施形態では、復号器が提供される。当該復号器はプロセッサと、プロセッサによって実行可能な命令を記憶する記憶媒体とを含む。記憶媒体は通信バスを介してプロセッサに依存して操作を実行する。プロセッサによって実行されると、上記命令は上記1つ又は複数の実施形態に記載の分割方法を実行する。
【0011】
第六様態において、本発明の実施形態では、コンピュータ可読記憶媒体が提供される。当該コンピュータ可読記憶媒体は実行可能な命令を記憶する。実行可能な命令が1つ又は複数のプロセッサによって実行されると、プロセッサが上記1つ又は複数の実施形態に記載の分割方法を実行する。
【0012】
本発明の実施形態において、分割方法、符号器、復号器及びコンピュータ記憶媒体が提供される。
当該方法は以下の内容を含むことができる。分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算する。分割しようとする点群を1回目の反復の入力点群として確定する。i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断し、iは初期値が1である正の整数である。i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトし、Kは正の整数である。右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択する。選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、i回目の反復を行う場合にi回目の反復の入力点群における点の数が0に等しいか否かを判断することに戻る。i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定する。換言すると、本発明の実施形態において、反復の方法を介して、毎回の反復の入力点群のモートンコードを右にKビットシフトし、右にKビットシフトされた後のモートンコードと同じ値を有する点から1つの点を選択し、選択された点で今回の反復で形成されたLOD層を構成する。当該分割方法を介して、モートンコードで隣接する点は一般的に幾何空間において隣接する位置にあるため、モートンコードを右にシフトし、右にシフトされた後のモートンコードに基づいて点を選択することによるLOD分割のプロセスにおいて、点群の分布と点群における点と点の間の空間距離を総合に考慮に入れることができる。これで、取得されたLOD層の分割は点群の分布と点群における点と点の間の空間距離に基づいたものである。このように、LOD層に基づいた隣接ノードの予測精度を高め、さらに、符号化・復号化の効率を高めることができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、幾何に基づいた点群圧縮(G-PCC)符号化のプロセスを示すブロック図である。
【
図2】
図2は、距離に基づいた詳細度(LOD)分割のプロセスを示す概略図である。
【
図3】
図3は、モートン順序(Morton order)に基づいたLOD分割のプロセスを示す概略図である。
【
図4】
図4は、本発明の実施形態に係る選択可能な分割方法を示すフローチャートである。
【
図5】
図5は、本発明の実施形態に係る選択可能な分割方法の実例を示すフローチャートである。
【
図6】
図6は、本発明の実施形態に係る選択可能な符号器の構造を示す概略図である。
【
図7】
図7は、本発明の実施形態に係る選択可能な復号器の構造を示す概略図である。
【
図8】
図8は、本発明の実施形態に係る別の選択可能な符号器の構造を示す概略図である。
【
図9】
図9は、本発明の実施形態に係る別の選択可能な復号器の構造を示す概略図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態の図面を参照しながら本発明の実施形態の技術的解決策を明晰に、全面的に説明する。明細書に記載される具体的な実施形態はただ関連発明を説明するために用いられ、本発明を限定するものではない。また、説明を容易にするために、図面は関連発明の一部のみを示している。
【0015】
本発明の実施形態では、幾何に基づいた点群圧縮(G-PCC)の符号器フレームワークにおいて、入力された3次元画像モデルの点群をスライス(slice)に分割した後、各スライスを独立して符号化する。
【0016】
図1は、幾何に基づいた点群圧縮(G-PCC)符号化のプロセスを示すブロック図である。
図1に示されているように、上記プロセスは点群符号器に適用される。符号化しようとする点群データについて、まずスライス分割により、点群データを複数のスライスに分割する。各スライスでは、点群の幾何情報と、各点群に対応する属性情報とが別々に符号化される。幾何符号化のプロセスにおいて、すべての点群が1つの境界ボックス(bounding box)に含まれるように、幾何情報に対して座標変換を行う。その後、主にスケーリング(scaling)の役割を果たす量子化を行う。量子化の丸め処理により、一部の点群の幾何情報が同じになるため、パラメータに基づいて重複点を除去するかどうかを決定する。量子化と重複点の除去というプロセスはボクセル化(voxelization)プロセスとも呼ばれる。次に、境界ボックスに対して八分木分割を行う。八分木に基づいた幾何情報の符号化プロセスにおいて、境界ボックスは8つのサブキューブ(sub-cube)に均等に分割され、非空(点群における点を含む)のサブキューブは、分割によって取得されたリーフノードが1×1×1のユニットキューブ(unit cube)になるまで、8つの均等な部分に分割され続く。リーフノードにおける点に対して算術符号化を行って、2進の幾何ビットストリーム(geometry bitstream)、即ち幾何コードストリーム(geometry code stream)を生成する。トライアングルスープ(triangle soup、trisoup)に基づいた幾何情報の符号化プロセスにおいても、まず、八分木分割が行われる。八分木に基づいた幾何情報の符号化とは異なり、当該トライスープ(trisoup)では、点群を辺長が1×1×1のユニットキューブに段階的に分割する必要はなく、点群を辺長がWのブロック(block)に分割した後、分割を停止する。各ブロックにおける点群の分布によって形成された表面に基づいて、その表面とブロックの12の辺で生成される最大で12個の交点(vertex)を取得する。交点に対して算術符号化(交点に基づく表面フィッティング(surface fitting))を行って、2進の幾何ビットストリーム、即ち幾何コードストリームを生成する。交点は幾何再構成の実現にも用いられる。再構成された幾何情報は、点群の属性を符号化するときに使用される。
【0017】
属性符号化のプロセスにおいて、幾何符号化が完了し、幾何情報が再構成された後、色変換が行われる。即ち、色情報(つまり、属性情報)をRGB色空間からYUV色空間に変換する。その後、再構成された幾何情報を利用して点群を再着色し、符号化されていない属性情報と再構成された幾何情報とを対応させる。色情報の符号化プロセスには、主に2つの変換方法がある。1つは、詳細度(LOD)分割に依存の距離に基づいたリフティング変換である。もう1つは、RAHT(Regional Adaptive hierarchical Transform)である。この二つの方法を介して、色情報を空間領域から周波数領域に変換し、変換によって高周波係数と低周波係数を取得して、最後に係数を量子化する(即ち、量子化係数)。最後に、八分木分割と表面フィッティングを経た幾何符号化データと量子化係数処理属性符号化データとをスライス合成し、各ブロックの交点座標を順に符号化(つまり算術符号化)して、2進の属性ビットストリーム、つまり属性コードストリームを生成する。
【0018】
関連技術分野において、Category3シーケンス点群に対して属性変換を行う場合、距離に基づいたLOD分割の方法が言及された。当該距離に基づいたLOD分割の方法はTMC3V0符号器に適用され、且つTMC13属性リフティング(lifting)変換に用いられる。距離に基づいたLOD分割の方法はTMC13属性予測(Predicting)変換にさらに導入される。即ち、LOD分割は点群の属性予測変換とリフティング変換という両方に適用される。
【0019】
【0020】
具体的に、LOD分割のプロセスは点群の幾何再構成の後に行われる。そのとき、点群の幾何座標情報は既知である。LOD分割のプロセスは同時に点群の符号化端末と復号化端末に適用される。具体的なプロセスは以下のようである。
1)まず、点群における全ての点を「未訪問」点集合に置き、且つ「訪問された」点集合Vを空集合に初期化する。
2)当該アルゴリズムは反復を介してLOD層を分割する。l回目の反復に対応する精細化レベルRlの生成プロセスは以下に示されるようである。
a.当該アルゴリズムは反復を介して全ての点をトラバース(traverse)する。
b.現在の点が既にトラバースされた場合、その点を無視する。
c.そうではない場合、現在の点から集合Vにおける各点までの距離をそれぞれ計算し、一番近い距離をDと表記する。1回目の反復のとき、点群における1番目の点を集合Vに加える。
d.距離Dが閾値dl以上である場合、当該点を精細化レベルRlと集合Vに加える。
e.全ての点がトラバースされるまで、c-dを繰り返す。
3)l回目のLOD集合、即ちLODlは精細化レベルR0、R1、…、Rlにおける点をマージすることによって取得される。
4)全てのLOD層が生成した又は全ての点がトラバースされるまで、当該プロセスを反復し続ける。
【0021】
図2は、距離に基づいた詳細度(LOD)分割のプロセスを示す概略図である。
図2に示されたように、今回、分割しようとする点群は点P0、P1、P2、P3、P4、P5、P6、P7、P8とP9を含む。オリジナル点群順序はP0、P1、P2、P3、P4、P5、P6、P7、P8とP9である。上記距離に基づいたLOD分割の方法を利用して取得されたLOD0はP4、P5、P0とP1であり、LOD1はP4、P5、P0、P1、P3、P2とP6であり、LOD2はP4、P5、P0、P1、P3、P2、P6、P7、P8とP9である。
【0022】
関連技術において、LOD生成の計算の複雑度を低くする解決策も言及された。それは、主にモートン順序に基づいてLOD分割を行うことである。モートンコードは1次元と2次元(又は多次元)の変換を実現する。それは2つのナンバーのビットを交互に記憶することによって1つのナンバーを生成する。全ての点を検索してLOD分割を行うという従来の解決策と比べて、当該解決策の計算の複雑度が低い。当該解決策は主に以下のステップを含む。
【0023】
【0024】
【0025】
【0026】
D0(初期距離の閾値を表す)とρ(隣接LOD層分割における距離の閾値比を表す)はそれぞれユーザー定義の初期パラメータであり、且つρ>1。Iが点群における全ての点のインデックスを表すと設定する。k回目の反復のとき、LOD0~LODk-1層からLODkにおける点の一番近い隣(即ち、LODkにおける点に最も近い点)を検索する。当該アルゴリズムの具体的なプロセスは以下のようである。
【0027】
【0028】
2)k回目の反復のとき、k=0,1…N-1(NはLOD分割の総層数であり)、L(k)はk層目のLODに属する点を保存し、O(k)はLODk層より高い精細化レベルの点集合を保存する。L(k)とO(k)の計算プロセスは以下のようである。
a.まず、O(k)とL(k)は空集合に初期化される。
b.毎回の反復において、点はIに保存された点のインデックス順序に基づいてトラバースされる。トラバースごとに、現在の点から集合O(k)における一定の範囲内の全ての点までの幾何距離が計算される。Iにおける現在の点に対応するモートンコードに基づいて、現在の点に対応するモートンコードより大きい1番目の点のインデックスを集合O(k)で検索し、次に、当該インデックスの1つの検索範囲SR1で検索する(SR1はモートンコードに基づいた検索範囲を表し、SR1は一般的に8、16、64である)。当該範囲内で現在の点との距離が閾値dlより小さい点が検索された場合、現在の点を集合L(k)に加える。そうではない場合、現在の点を集合O(k)に加える。
【0029】
【0030】
4)Iにおける全ての点がトラバースされるまで、反復を続ける。
【0031】
図3は、モートン順序に基づいたLOD分割のプロセスを示す概略図である。
図3に示されたように、今回、分割しようとする点群は点P0、P1、P2、P3、P4、P5、P6、P7、P8とP9を含む。オリジナル点群順序はP0、P1、P2、P3、P4、P5、P6、P7、P8とP9である。モートン順序の昇順で並ぶ点はP4、P1、P9、P5、P0、P6、P8、P2、P7とP3である。上記モートン順序に基づいたLOD分割の方法を利用して取得されたLOD0はP4、P5、P0とP1であり、LOD1はP4、P5、P0、P1、P3、P2とP6であり、LOD2はP4、P5、P0、P1、P3、P2、P6、P7、P8とP9である。
【0032】
距離に基づいたLOD分割の方法は、現在の点に対応するモートンコードの1つの範囲内で検索し、当該範囲内の点から現在の点までの空間幾何距離を計算しそれを閾値と比較する。全ての点から現在の点までの距離が閾値より大きいまで、現在の点を現在のLOD層に加え続ける。そうではない場合、現在の点を次の層に残されて分割される。テストによって取得されたテストデータは、距離に基づいたLOD分割の方法によって使用される時間が全体の符号化時間の70%~80%ぐらいを占めることを示す。明らかに、計算の複雑度が高い。
【0033】
また、点群属性予測変換とリフティング変換の前に、距離に基づいて点群をLODに分割される。空間における隣接の点の属性の間に深い相互関係があるため、LODに基づいた構造を利用して隣接ノードの属性を予測することができる。それで、隣接の点の間の属性冗長を除去することができる。しかしながら、異なる点群は異なる空間分布を有するため、異なる点群の点密度が異なる。従って、現行技術における距離に基づいたLOD分割のプロセスでは、点群の均一分布(分割の距離閾値が等しいことに相当する)に基づいて検索を行うことによって取得された隣接点の精度が高くない。それは、予測残差が大きく、符号化効率が低いことにつながる。
【0034】
点群に対する距離に基づいたLOD分割の計算の複雑度が高いため、計算の複雑度を低くするために、距離に基づいたLOD分割に基づいて、現在の点に対応するモートンコードの範囲内で検索する方法を使用してLOD分割を行う。しかしながら、ビデオ符号化・復号化において、LOD分割が完了した後、隣接ノードの属性を予測するために、LOD分割構造を使用する必要がある。異なる点群は異なる空間分布を有するため、異なる点群の点密度が異なる。従って、上記LOD分割方法によって得られたLOD層の分割構造では、隣接ノードの予測精度が低い。それは、予測残差が大きく、符号化効率が低いことにつながる。上記から分かるように、現行のLOD分割方法によって得られたLOD層は、隣接ノードの低い予測精度につながっている。
【0035】
符号化・復号化の効率を高めるには、隣接ノードの予測精度を高める必要がある。隣接ノードの予測精度を高めるには、本発明の実施形態において、分割方法が提供される。
図4は、本発明の実施形態に係る選択可能な分割方法を示すフローチャートである。
図4に示されたように、当該方法は符号器又は復号器に適用されることができる。当該分割方法は以下の内容を含むことができる。
【0036】
S401:分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算する。
【0037】
本発明の実施形態に係る分割方法は、上記リフティングと予測属性変換におけるLODの生成プロセスを改善し、符号器と復号器に適用される。当該方法はリフティング又は予測変換の前に、当該改善技術を利用してLOD構造を分割する。当該方法は
図1におけるLODの生成のブロック図に適用される。
【0038】
分割しようとする点群を取得した後、まず分割しようとする点群のモートンコードを計算する。後続の反復計算において、モートンコードを利用して点と点の間の空間位置関係を認識することができ、それはLOD層の分割の後に隣接ノードを予測することに有益である。
【0039】
S402:分割しようとする点群を1回目の反復の入力点群として確定する。
【0040】
具体的に、分割しようとする点群をLOD層に分割するために、反復の方法が利用される。まず、分割しようとする点群を取得する。分割しようとする点群は少なくとも2つの点、例えば、10の点を含む。分割しようとする点群を1回目の反復の入力点群として確定する。
【0041】
分割しようとする点群における点の数が多い場合では、分割しようとする点群に対してLOD分割をより良く且つ迅速に行うには、1つの選択可能な実施形態において、S402の前に、当該方法は以下の内容を含むことができる。
分割しようとする点群のモートンコードを右にNビットシフトし、右にNビットシフトされた後のモートンコードと同じ値を有する点で1つの点群グループを形成する。Nは正の整数である。
各点群グループをそれぞれ1回目の反復の入力点群として確定する。
【0042】
換言すると、分割しようとする点群における点の数が多い場合、直接に分割しようとする点群を1回目の反復の入力点群とするのではなく、代わりに、まず分割しようとする点群のモートンコードを計算し、次に、モートンコードを右にNビットシフトする。これで、右にNビットシフトされた後のモートンコードと同じ値を有する点は、空間的に隣接する。従って、右にNビットシフトされた後のモートンコードと同じ値を有する点で1つの点群グループを形成する。各点群グループをそれぞれ1回目の反復の入力点群として確定する。それで、分割しようとする点群をグループに分け、各点群グループをそれぞれ1回目の反復の入力点群として反復計算を行う。最後に、各点群グループが分割された後のLOD層を得る。それによって、分割しようとする点群が分割された後のLOD層を得る。
【0043】
S403:i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断する。
【0044】
本発明の実施形態において、反復の回数はiで表し、iは初期値が1である正の整数である。
【0045】
S403において、反復を行うたびに、まず、毎回の反復の入力点群における点の数が0に等しいか否かを判断する。換言すると、反復を介して分割しようとする点群が全てトラバースされたか否かを判断する。トラバースが完了した場合に反復のプロセスを終了する。トラバースがまだ完了していない場合に、分割しようとする点群をLOD層に分割するために、反復を続ける必要がある。
【0046】
S404:i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトする。
【0047】
S403の判断を経て、i回目の反復の入力点群における点の数が0に等しくない場合に、前の反復がまだ全ての点をトラバースしていないことを示す。そのため、今回の反復が必要となる。具体的に、モートンコードを介して点の間の空間関係をより良く取得するために、モートンコードの昇順で点をランク付けする。
【0048】
Kは正の整数であり、Kの値は訓練を介して取得された固定値であってもよく、以下の任意の一つ方式を介して取得された値であってもよい。本発明の実施形態では、それについては、具体的に限定されない。
【0049】
Kの値を確定するために、1つの選択可能な実施形態において、S404の前に、当該方法は、分割しようとする点群の分布に基づいてKの値を確定することをさらに含むことができる。
【0050】
具体的に、分割しようとする点群の分布に基づいてKの値を確定する。このように、反復ごとに、モートンコードを右にKビットシフトする。それで、モートンコードが右にシフトされるとき、点群の空間分布を考慮に入れて、より良い予測効果を実現することができる。
【0051】
Kの値を確定するために、1つの選択可能な実施形態において、iが第一の予め設定された閾値以上である場合、S404の前に、当該方法は、i回目の反復の入力点群における数とi回目の反復の入力点群の分布に基づいて、Kの値を確定することをさらに含むことができる。
【0052】
毎回の反復において、一部の点群が対応するLOD層に分割されるため、反復の回数が多くなるに連れて、残りの点が少なくなり、毎回の反復の入力点群の分布も変化しつつある。より良い予測効果を実現するために、毎回の反復のKの値は、毎回の反復の入力点群における点の数と毎回の反復の入力点群の分布に基づいて確定されることができる。これで、毎回の反復において、モートンコードの右にシフトされるビット数が点群の数と点群の空間分布を考慮に入れて、より良い予測効果を実現することができる。
【0053】
S405:右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択する。
【0054】
モートンコードを右にKビットシフトした後、LOD層に分割するために、まず、右にKビットシフトされた後のモートンコードと同じ値を有する点を見つけ、右にKビットシフトされた後のモートンコードと同じ値を有する少なくとも1つのグループの点を取得することができる。次に、右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択する。任意の1つの点を選択してもよく、指定された点を選択してもよい。本発明の実施形態では、それについては、具体的に限定されない。
【0055】
分割後のLOD層を得て、隣接ノードの予測精度を高めるために、1つの選択可能な実施形態において、S405は以下の内容を含むことができる。
i回目の反復の入力点群のモートンコードの昇順で、i回目の反復の入力点群における点をランク付けする。
右にKビットシフトされた後のモートンコードと同じ値を有する点から、1番目にランク付けされた点を選択する。
【0056】
モートンコードの昇順で点をランク付けし、次に、右にKビットシフトされた後のモートンコードと同じ値を有する点を見つけ、右にKビットシフトされた後のモートンコードと同じ値を有する少なくとも1つのグループの点を取得する。そして、各グループから1番目の点を選択する。1番目の点は、右にKビットシフトされた後のモートンコードと同じ値を有する点のうちの、オリジナル点群順序で1番目にランク付けされた点である。
【0057】
分割後のLOD層を得て、隣接ノードの予測精度を高めるために、1つの選択可能な実施形態において、S405は以下の内容を含むことができる。
右にKビットシフトされた後のモートンコードと同じ値を有する点の質量中心を確定する。
右にKビットシフトされた後のモートンコードと同じ値を有する点から、質量中心に一番近い点を選択される1つの点として確定する。
【0058】
具体的に、まず、右にKビットシフトされた後のモートンコードと同じ値を有する点の質量中心を確定する。当該質量中心は、今回の反復の入力点群における各点の3次元座標に基づいて計算された。質量中心を得た後、右にKビットシフトされた後のモートンコードと同じ値を有する点のうちの、質量中心に一番近い点を計算し、その点を選択する。
【0059】
分割後のLOD層を得て、隣接ノードの予測精度を高めるために、上記S405を利用して点を選択する以外に、1つの選択可能な実施形態において、S404の後、且つS406の前に、当該方法は以下の内容をさらに含むことができる。
右にKビットシフトされた後のモートンコードと同じ値を有する点の数に基づいて、対応する選択の数を確定する。
対応する選択の数に基づいて、右にKビットシフトされた後のモートンコードと同じ値を有する点から、選択の数の点を選択する。
【0060】
具体的に、右にKビットシフトされた後のモートンコードと同じ値を有する点から複数の点を選択することができる。まず、右にKビットシフトされた後のモートンコードと同じ値を有する点の数に基づいて、対応する選択の数を確定する。例えば、右にKビットシフトされた後のモートンコードと同じ値を有する点の数は10、8、6、4などである。対応する選択の数は、モートンコードと同じ値を有する点の数に基づいて確定されることができる。例えば、右にKビットシフトされた後のモートンコードと同じ値を有する点の数が10である場合、対応する選択の数は5である。右にKビットシフトされた後のモートンコードと同じ値を有する点の数が8である場合、対応する選択の数は4である。右にKビットシフトされた後のモートンコードと同じ値を有する点の数が6である場合、対応する選択の数は3である。右にKビットシフトされた後のモートンコードと同じ値を有する点の数が4である場合、対応する選択の数は2である。即ち、正比例関係に基づいて対応する選択の数を確定することができる。
【0061】
次に、選択の数に基づいて、右にKビットシフトされた後のモートンコードと同じ値を有する点から選択の数の点を選択する。選択の数の点を任意に選択してもよく、指定された方式で選択の数の点を選択してもよい。本発明の実施形態では、それについては、具体的に限定されない。
【0062】
分割後のLOD層を得て、隣接ノードの予測精度を高めるために、上記S405を利用して点を選択する以外に、1つの選択可能な実施形態において、S404の後、且つS406の前に、当該方法は以下の内容をさらに含むことができる。
i回目の反復の入力点群のモートンコードの昇順で、i回目の反復の入力点群における点をランク付けする。
右にKビットシフトされた後のモートンコードと同じ値を有する点から、ランキング結果に基づいて、第二の予め設定された閾値ごとに1つの点を選択する。
【0063】
具体的に、まず、モートンコードの昇順で点をランク付けし、i回目の反復の入力点群のランキング結果を得る。次に、右にKビットシフトされた後のモートンコードと同じ値を有する点を見つける。右にKビットシフトされた後のモートンコードと同じ値を有する各グループの点もランキング結果に基づいてランク付けされるため、第二の予め設定された閾値ごとに1つの点を選択して、選択された点を得る。
【0064】
上記第二の予め設定された閾値はニーズに応じて設定された値である。
【0065】
S406:選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、S403に戻る。
【0066】
選択された点を得た後、選択された点で今回の反復のLOD層(即ち、i番目のLOD層)を形成する。それで、今回の反復を経て、今回の反復の入力点群における一部の点をLOD層に分割し、且つ今回の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、S403を改めて実行する。
【0067】
このように、本発明の実施形態において、i回目の反復の入力点群のモートンコードを計算し、且つモートンコードを右に適切なビットシフトすることによって、空間的に隣接する点を見つけることができる。隣接する点の各グループから1つ又は複数の点を選択してLOD層を形成する。これで、分割後のLOD層は点群の間の空間分布を考慮に入れ、それは隣接ノードの予測精度を高めることに有益である。
【0068】
S407:i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定する。
【0069】
また、i回目の反復の入力点群における点の数が0に等しい場合、分割しようとする点群が全部トラバースされたことを示す。従って、反復を終了することができ、取得された1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層とする。
【0070】
また、分割によってLOD層を得るために、1つの選択可能な実施形態において、iが第一の予め設定された閾値以上である場合、選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新した後、当該方法は以下の内容をさらに含むことができる。
i回目の反復の入力点群に基づいて、予め設定された且つ距離に基づいたLOD分割のアルゴリズムを利用して分割することによってLOD層を取得する。
分割によって取得されたLOD層及び1番目から(i-1)番目までのLOD層を、分割しようとする点群が分割された後のLOD層として確定する。
【0071】
換言すると、本発明の実施形態の反復方法を利用するとき、反復の回数iが第一の予め設定された閾値以上である場合、まだ分割されていない残りの点に対して、距離に基づいたLOD分割のアルゴリズム、又は固定サンプリングレートに基づいたLOD分割のアルゴリズムに基づいて、分割を行ってLOD層を得ることができる。本発明の実施形態では、それについては、具体的に限定されない。
【0072】
反復の回数iが第一の予め設定された閾値以上である場合、今回の反復の分割が完了し、反復の回数がi+1に更新された後、i回目の反復の入力点群に基づいて、予め設定された且つ距離に基づいたLOD分割のアルゴリズム、又は予め設定された且つ固定サンプリングレートに基づいたLOD分割のアルゴリズムを利用して、i回目の反復の入力点群を分割してLOD層を得る。最後に、前に取得された1番目から(i-1)番目までのLOD層、及び分割によって取得されたLOD層を、分割しようとする点群が分割された後のLOD層とする。
【0073】
以下、実例を挙げて上記1つ又は複数の実施形態に記載の分割方法を説明する。
【0074】
図5は、本発明の実施形態に係る選択可能な分割方法の実例を示すフローチャートである。
図5に示されたように、当該分割方法は符号器に適用されてもよく、復号器に適用されてもよい。本実例では、符号器に適用されることを例とする。当該分割方法は以下の内容を含むことができる。
【0075】
S501:取得された符号化しようとする点群に対して、モートンコードを計算する。
【0076】
具体的に、符号化しようとする点群はN個の点を含み、各点はP[i]と表記されると仮設する。各点P[i]に対応するモートンコードM[i]が計算され、i=0,1…N-1。符号化しようとする点群のモートンコードを昇順でランク付けする。
【0077】
S502:モートンコードを右にKビットシフトする。
【0078】
具体的に、符号化しようとする点群における各点のモートンコードを右にKビットシフトすることによって、空間において隣接する位置にある点に対応するモートンコードが等しくなる。それは、モートンコードで隣接する点が、一般的に幾何空間において隣接する位置にあるからである。モートンコードのこの特徴を利用して、空間内の符号化しようとする点群における全ての点に対応するモートンコードを右にKビットシフトすることで、空間における隣接の点を集める。
【0079】
S503:モートンコードと同じ値を有する点集合をサンプリングする。
【0080】
具体的に、S502で取得された右にKビットシフトされた後のモートンコードと同じ値を有する点をサンプリングする。反復ごとに、集められた点集合から1つの点を選択する。予測点の属性を利用して空間距離に基づいて予測された点の属性に対して加重平均処理を行うことによって、予測された点の再構成属性値を取得する。再構成属性値とオリジナル属性値を利用して予測された点の属性残差を取得する。再構成属性値と予測残差を利用して隣接点の属性予測を行う。サンプリングが終わるたびに予測が行われる。毎回の予測を統合することによって最終の予測を得る。これで、符号化しようとする点群における残りの隣接点の属性を予測する。
【0081】
S504:サンプリング点を現在のLOD層における点とする。
【0082】
具体的に、S503で取得されたサンプリング点を現在のLOD層における点とし、他の残りの点を現在のLOD層より高い層における点とする。実際の応用では、右にKビットシフトされた後のモートンコードと同じ値を有する点における1番目の点をサンプリング点とすることができる。
【0083】
S505:残りの点が全てトラバースされたか又は全て分割されたかを判断する。残りの点が全てトラバースされた又は全て分割された場合、LOD層の分割を終了する。そうではない場合、S502に戻って分割を続ける。
【0084】
後続の分割において、符号化しようとする点群のモートンコードを右にKビットシフトした上で、さらに右にKビットシフトし、全てのLODが分割された又は全ての点がトラバースされるまで、上記S502~S505を繰り返す。
【0085】
上記実例に基づいて、モートンコードを右にシフトする方法でLOD分割を行う場合、毎回、オリジナル点群に対応するモートンコードを右に一定のビット数シフトし、右にシフトされた後のモートンコードに等しいモートンコードを有する点をサンプリングすることのみが必要となる。当該方法を利用するLOD分割がかかる時間は符号化時間の約20%のみである。従って、距離に基づいたLOD分割という従来の方法に比べて、モートンコード右シフトに基づいたLOD分割の方法は、時間複雑性が低く、前者の約1/4~1/3である。
【0086】
本発明の実施形態において、点群の空間分布及び点群の空間距離を利用してモートンコードを右にシフトすることによってLODを分割する。それによって、幾何空間における距離だけではなく、点群の分布も考慮に入れることができる。モートンコードを右にシフトする方法で分割を行う場合、点群が密な部分ではサンプリング点の数を減らし、同時に、点群が疎な部分ではサンプリング点の数を増やす。点群が疎な部分では、点と点の間の空間距離が遠いため、予測のとき、隣接点の間の属性残差が大きい。依然として固定距離に基づいてサンプリングすると、隣に基づいて属性を予測することによって取得された予測残差が大きくなる。それは、圧縮後の属性ビットストリームが大きく、且つ再構成された後の属性の性能が劣化することにつながる。空間の疎な部分において、点と点の間の空間幾何距離が遠いため、隣接の点の間の対応するモートンコード値には大きな差異があるため、モートンコードを右にシフトするとき、当該部分では1つのクラスに集まる点が少ない。これで、多くのサンプリング点が取得される。このように、幾何空間距離のみを考慮にいれた従来の解決策と比べて、隣の属性に基づいて予測を行うという解決策ではより良い予測効果を得ることができる。
【0087】
本発明の実施形態では、モートンコードを右に一定のビット数シフトすることによって異なる数の点集合を取得し、次に、各点集合においてサンプリング点を利用して隣接点の属性を予測する。当該解決策を介して、点群の分布と点群における点と点の間の空間距離を総合に考慮に入れて、隣に基づいた属性予測の効果を高めることができる。
【0088】
本発明の実施形態は、基本的に性能に影響を与えないという前提で、以下の表1に示されたように、属性部分の再構成の品質を高め、且つ属性の符号化・復号化の時間と計算の複雑度を削減することができる。
【0089】
【0090】
上記表1から分かるように、再構成点群のBD-rateも大幅に向上している。ピーク信号対雑音比(PSNR、Peak Signal to Noise Ratio)は画像評価の客観的な基準である。PSNRが大きければ大きいほど、画質が良くなる。BD-rateは性能の良し悪しを評価するパラメータであり、BD-rateが負の数である場合、性能が良くなることを示す。その上、BD-rateの絶対値が大きければ大きいほど、性能のゲインが大きくなる。また、本発明の実施形態に係る分割方法は、LOD分割に必要な時間を削減し、それで、符号化・復号化の時間を削減する。
【0091】
本発明の実施形態において、分割方法が提供された。当該方法は以下の内容を含むことができる。分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算する。分割しようとする点群を1回目の反復の入力点群として確定する。i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断し、iは初期値が1である正の整数である。i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトし、Kは正の整数である。右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択する。選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、i回目の反復を行う場合にi回目の反復の入力点群における点の数が0に等しいか否かを判断することに戻る。i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定する。換言すると、本発明の実施形態において、反復の方法を介して、毎回の反復の入力点群のモートンコードを右にKビットシフトし、右にKビットシフトされた後のモートンコードと同じ値を有する点から1つの点を選択し、選択された点で今回の反復で形成されたLOD層を構成する。当該分割方法を介して、モートンコードで隣接する点は一般的に幾何空間において隣接する位置にあるため、モートンコードを右にシフトし、右にシフトされた後のモートンコードに基づいて点を選択することによるLOD分割のプロセスにおいて、点群の分布と点群における点と点の間の空間距離を総合に考慮に入れることができる。これで、取得されたLOD層の分割は点群の分布と点群における点と点の間の空間距離に基づいたものである。このように、LOD層に基づいた隣接ノードの予測精度を高め、さらに、符号化・復号化の効率を高めることができる。
【0092】
実施形態二
【0093】
同じ発明思想に基づいて、本発明の実施形態において、符号器が提供される。
図6は、本発明の実施形態に係る選択可能な符号器の構造を示す概略図である。当該符号器は第一計算モジュール61、第一確定モジュール62、第一判断モジュール63、第一右シフトモジュール64、第一選択モジュール65、第一分割モジュール66及び第二確定モジュール67を含むことができる。
第一計算モジュール61は、分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算するように構成されている。
第一確定モジュール62は、分割しようとする点群を1回目の反復の入力点群として確定するように構成されている。
第一判断モジュール63は、i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断するように構成されている。iは初期値が1である正の整数である。
第一右シフトモジュール64は、i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトするように構成されている。Kは正の整数である。
第一選択モジュール65は、右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択するように構成されている。
第一分割モジュール66は、選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、第一判断モジュール63に戻ってi回目の反復を行う場合にi回目の反復の入力点群における点の数が0に等しいか否かを判断するように構成されている。
第二確定モジュール67は、i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定するように構成されている。
【0094】
1つの選択可能な実施形態において、第一確定モジュール62はさらに、i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、分割しようとする点群の分布に基づいてKの値を確定するように構成されることができる。
【0095】
1つの選択可能な実施形態において、iが第一の予め設定された閾値以上であるとき、第一確定モジュール62はさらに、i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、i回目の反復の入力点群における点の数とi回目の反復の入力点群の分布に基づいてKの値を確定するように構成されることができる。
【0096】
1つの選択可能な実施形態において、iが第一の予め設定された閾値以上であるとき、選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新した後、符号器はさらに、
i回目の反復の入力点群に基づいて、予め設定された且つ距離に基づいたLOD分割のアルゴリズムを利用して分割することによってLOD層を取得し、
分割によって取得されたLOD層及び1番目から(i-1)番目までのLOD層を、分割しようとする点群が分割された後のLOD層として確定するように構成されることができる。
【0097】
1つの選択可能な実施形態において、第一選択モジュール65は具体的に、
i回目の反復の入力点群のモートンコードの昇順で、i回目の反復の入力点群における点をランク付けし、
右にKビットシフトされた後のモートンコードと同じ値を有する点から、1番目にランク付けされた点を選択するように構成されることができる。
【0098】
1つの選択可能な実施形態において、第一選択モジュール65は具体的に、
右にKビットシフトされた後のモートンコードと同じ値を有する点の質量中心を確定し、
右にKビットシフトされた後のモートンコードと同じ値を有する点から、質量中心に一番近い点を選択される1つの点として確定するように構成されることができる。
【0099】
1つの選択可能な実施形態において、第一選択モジュール65は具体的に、
右にKビットシフトされた後のモートンコードと同じ値を有する点の数に基づいて、対応する選択の数を確定し、
対応する選択の数に基づいて、右にKビットシフトされた後のモートンコードと同じ値を有する点から、選択の数の点を選択するように構成されることができる。
【0100】
1つの選択可能な実施形態において、第一選択モジュール65は具体的に、
i回目の反復の入力点群のモートンコードの昇順で、i回目の反復の入力点群における点をランク付けし、
右にKビットシフトされた後のモートンコードと同じ値を有する点から、ランキング結果に基づいて、第二の予め設定された閾値ごとに1つの点を選択するように構成されることができる。
【0101】
1つの選択可能な実施形態において、第一確定モジュール62はさらに、
分割しようとする点群のモートンコードを右にNビットシフトし、右にNビットシフトされた後のモートンコードと同じ値を有する点で1つの点群グループを形成し、
各点群グループをそれぞれ1回目の反復の入力点群として確定するように構成されることができる。Nは正の整数である。
【0102】
本発明の実施形態において、復号器が提供される。
図7は、本発明の実施形態に係る選択可能な復号器の構造を示す概略図である。
図7に示されたように、当該復号器は第二計算モジュール71、第三確定モジュール72、第二判断モジュール73、第二右シフトモジュール74、第二選択モジュール75、第二分割モジュール76及び第四確定モジュール77を含むことができる。
第二計算モジュール71は、分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算するように構成されている。
第三確定モジュール72は、分割しようとする点群を1回目の反復の入力点群として確定するように構成されている。
第二判断モジュール73は、i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断するように構成されている。iは初期値が1である正の整数である。
第二右シフトモジュール74は、i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトするように構成されている。Kは正の整数である。
第二選択モジュール75は、右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択するように構成されている。
第二分割モジュール76は、選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、
第二判断モジュール73に戻ってi回目の反復を行う場合にi回目の反復の入力点群における点の数が0に等しいか否かを判断するように構成されている。
第四確定モジュール77は、i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定するように構成されている。
【0103】
1つの選択可能な実施形態において、第三確定モジュール72はさらに、i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、分割しようとする点群の分布に基づいてKの値を確定するように構成されることができる。
【0104】
1つの選択可能な実施形態において、iが第一の予め設定された閾値以上であるとき、第三確定モジュール72はさらに、i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトする前に、i回目の反復の入力点群における点の数とi回目の反復の入力点群の分布に基づいてKの値を確定するように構成されることができる。
【0105】
1つの選択可能な実施形態において、iが第一の予め設定された閾値以上であるとき、選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新した後、復号器はさらに、
i回目の反復の入力点群に基づいて、予め設定された且つ距離に基づいたLOD分割のアルゴリズムを利用して分割することによってLOD層を取得し、
分割によって取得されたLOD層及び1番目から(i-1)番目までのLOD層を、分割しようとする点群が分割された後のLOD層として確定するように構成されることができる。
【0106】
1つの選択可能な実施形態において、第二選択モジュール75は具体的に、
i回目の反復の入力点群のモートンコードの昇順で、i回目の反復の入力点群における点をランク付けし、
右にKビットシフトされた後のモートンコードと同じ値を有する点から、1番目にランク付けされた点を選択するように構成されることができる。
【0107】
1つの選択可能な実施形態において、第二選択モジュール75は具体的に、
右にKビットシフトされた後のモートンコードと同じ値を有する点の質量中心を確定し、
右にKビットシフトされた後のモートンコードと同じ値を有する点から、質量中心に一番近い点を選択される1つの点として確定するように構成されることができる。
【0108】
1つの選択可能な実施形態において、第二選択モジュール75は具体的に、
右にKビットシフトされた後のモートンコードと同じ値を有する点の数に基づいて、対応する選択の数を確定し、
対応する選択の数に基づいて、右にKビットシフトされた後のモートンコードと同じ値を有する点から、選択の数の点を選択するように構成されることができる。
【0109】
1つの選択可能な実施形態において、第二選択モジュール75は具体的に、
i回目の反復の入力点群のモートンコードの昇順で、i回目の反復の入力点群における点をランク付けし、
右にKビットシフトされた後のモートンコードと同じ値を有する点から、ランキング結果に基づいて、第二の予め設定された閾値ごとに1つの点を選択するように構成されることができる。
【0110】
1つの選択可能な実施形態において、第三確定モジュール72はさらに、
分割しようとする点群のモートンコードを右にNビットシフトし、右にNビットシフトされた後のモートンコードと同じ値を有する点で1つの点群グループを形成し、
各点群グループをそれぞれ1回目の反復の入力点群として確定するように構成されることができる。Nは正の整数である。
【0111】
図8は、本発明の実施形態に係る別の選択可能な符号器の構造を示す概略図である。
図8に示されたように、本発明の実施形態に係る符号器800は、プロセッサ81と、プロセッサ81によって実行可能な命令を記憶する記憶媒体82とをさらに含むことができる。記憶媒体82は通信バス83を介してプロセッサ81に依存して操作を実行する。プロセッサ81によって実行されると、命令は上記1つ又は複数の実施形態に記載の分割方法を実行する。
【0112】
実際の応用では、符号器800における各コンポーネントは通信バス83を介して結合されている。通信バス83はこれらのコンポーネントの間の接続と通信を実現するために用いられる。通信バス83はデータバス以外に、電力バス、制御バス及びステータス信号バスをさらに含む。ただし、明確に説明するために、
図8において、各種類のバスがいずれも通信バス83と表記される。
【0113】
図9は、本発明の実施形態に係る別の選択可能な復号器の構造を示す概略図である。
図9に示されたように、本発明の実施形態に係る復号器900は、プロセッサ91と、プロセッサ91によって実行可能な命令を記憶する記憶媒体92とをさらに含むことができる。記憶媒体92は通信バス93を介してプロセッサ91に依存して操作を実行する。プロセッサ91によって実行されると、命令は上記1つ又は複数の実施形態に記載の分割方法を実行する。
【0114】
実際の応用では、復号器900における各コンポーネントは通信バス93を介して結合されている。通信バス93はこれらのコンポーネントの間の接続と通信を実現するために用いられる。通信バス93はデータバス以外に、電力バス、制御バス及びステータス信号バスをさらに含む。ただし、明確に説明するために、
図9において、各種類のバスがいずれも通信バス93と表記される。
【0115】
本発明の実施形態において、コンピュータ記憶媒体が提供される。当該コンピュータ記憶媒体は実行可能な命令を記憶する。実行可能な命令が1つ又は複数のプロセッサによって実行されると、プロセッサが上記1つ又は複数の実施形態に記載の分割方法を実行する。
【0116】
本発明の実施形態のメモリは、揮発性メモリ又は不揮発性メモリであることができ、又は揮発性メモリ及び不揮発性メモリの両方を含むことができる。不揮発性メモリは、読み取り専用メモリ(Read-Only Memory、ROM)、プログラム可能な読み取り専用メモリ(Programmable Read-Only Memory、PROM)、消去可能なプログラム可能な読み取り専用メモリ(Erasable Programmable Read-Only Memory、EPROM)、電気的に消去可能なプログラム可能な読み取り専用メモリ(Electrically Erasable Programmable Read-Only Memory、EEPROM)、又はフラッシュメモリ(Flash Memory)であることができる。揮発性メモリは、外部高速キャッシュとして機能するランダムアクセスメモリ(Random Access Memory、RAM)であることができる。例示的であるが限定的ではない例として、様々なRAMが利用可能であり、例えば、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、同期ダイナミックランダムアクセスメモリ(Synchronous Dynamic Random Access Memory、SDRAM)、ダブルデータレート同期ダイナミックランダムアクセスメモリ(Double Data Rate Synchronous Dynamic Random Access Memory、DDRSDRAM)、強化された同期ダイナミックランダムアクセスメモリ(Enhanced Synchronous Dynamic Random Access Memory、ESDRAM)、同期リンクダイナミックランダムアクセスメモリ(Synch-link Dynamic Random Access Memory、SLDRAM)、ダイレクトランバスランダムアクセスメモリ(Dierct Rambus Random Access Memory、DRRAM)が挙げられる。本明細書に記載されるシステム及び方法のメモリは、これら及び他の任意の適切なタイプのメモリを含むことができるが、これらに限定されない。
【0117】
プロセッサは、信号処理能力を有する集積回路チップであることができる。実施プロセスにおいて、上記方法実施形態の各ステップは、プロセッサのハードウェア形態の集積論理回路(Integrated Logic Circuit)又はソフトウェア形態の命令によって完成されることができる。上記プロセッサは、汎用プロセッサ、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラム可能なゲートアレイ(Field Programmable Gate Array、FPGA)又は他のプログラム可能なロジックデバイス、ディスクリートゲート又はトランジスタロジックデバイス、ディスクリートハードウェアコンポーネントであることができる。プロセッサは、本発明の実施形態に開示された様々な方法、ステップ及び論理ブロック図を実現又は実行することができる。汎用プロセッサは、マイクロプロセッサ又は任意の従来のプロセッサなどであることができる。本発明の実施形態に開示された方法のステップは、直接にハードウェア復号化プロセッサによって実行及び完成されることができ、又は復号化プロセッサにおけるハードウェア及びソフトウェアモジュールの組み合わせによって実行及び完成されることができる。ソフトウェアモジュールは、ランダムアクセスメモリ、フラッシュメモリ、読み取り専用メモリ、プログラム可能な読み取り専用メモリ、又は電気的に消去可能なプログラム可能なメモリ、レジスタなど本技術分野のマチュアな記憶媒体に位置することができる。記憶媒体はメモリにある。プロセッサはメモリにおける情報を読み取り、プロセッサのハードウェアとともに上記方法のステップを完成する。
【0118】
本発明に記載される実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード又はその組合によって実現されることができることが理解され得る。ハードウェアによって実現される場合、処理ユニットは、1つ又は複数の特定用途向け集積回路(ASIC)、デジタル信号処理(DSP)、DSPデバイス(DSP Device、DSPD)、プログラム可能なロジックデバイス(Programmable Logic Device、PLD)、フィールドプログラム可能なゲートアレイ(FPGA)、汎用プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、本発明に記載される機能を実行するために用いられるその他の電子ユニット又はその組合で実現されることができる。
【0119】
ソフトウェアによって実現される場合、本発明に記載される技術は、本発明に記載される機能を実行するためのモジュール(例えば、手順、関数など)によって実現されることができる。ソフトウェアコードはメモリに記憶され且つプロセッサで実行される。メモリは、プロセッサ内又はプロセッサの外部で実現されることができる。
【0120】
本明細書において、「含む」、「備える」又は他のバリアントなどの用語は非排他的な含みをカバーすることを意図するため、一連の要素を含むプロセス、方法、物品又は装置は、リストされた要素だけではなく、明確にリストされていない他の要素も含み、又はプロセス、方法、物品又は装置の固有の他の要素を含むことができる。制限がない限り、「…を含む」という文によって限定された要素を含むプロセス、方法、物品又は装置に別の同じ要素が存在することを排除しない。
【0121】
上記本発明の実施形態のシーケンス番号は、実施形態の優劣を示すものではなく、ただ説明するために採用される。
【0122】
上記実施形態の説明から、上記実施形態の方法が、ソフトウェアと必要な一般的なハードウェアプラットフォームによって実施されることができ、もちろん、ハードウェアによって実施されることも可能であることは当業者にとって明らかである。しかし、多くの場合では、前者のほうがより優れた実施態様である。この理解によれば、本発明の技術的解決策について、本質的な部分、又は従来技術に貢献できた部分は、ソフトウェア製品として表現され得る。このコンピュータソフトウェア製品は、記憶媒体(例えば、RAM/ROM、磁気ディスク、光ディスクなど)に記憶されており、1つの端末(例えば、携帯電話、コンピュータ、サーバー、又はネットワークデバイスなど)に本発明の各実施形態に記載の方法を実行させるための複数の命令を含む。
【0123】
以上、添付図面を参照しながら本発明の実施態様を説明した。しかしながら、本発明は上記具体的な実施形態に限定されない。上記具体的な実施形態は、本発明を制限するものではなく、単に例示のためのものである。本発明の着想のもとで、本発明の主旨及び特許請求の範囲によって保護される範囲から逸脱しない限り、当業者は変更を加えることができる。これらはすべて、本発明の保護範囲に属する。
【産業上の利用可能性】
【0124】
本発明の実施形態において、分割方法、符号器、復号器及びコンピュータ記憶媒体が提供された。分割しようとする点群を取得し、分割しようとする点群のモートンコードを計算する。分割しようとする点群を1回目の反復の入力点群として確定する。i回目の反復を行う場合に、i回目の反復の入力点群における点の数が0に等しいか否かを判断する。i回目の反復の入力点群における点の数が0に等しくない場合に、i回目の反復の入力点群のモートンコードを右にKビットシフトする。右にKビットシフトされた後のモートンコードと同じ値を有する点から、1つの点を選択する。選択された点でi番目のLOD層を形成し、i回目の反復の入力点群における選択された点以外の残りの点を(i+1)回目の反復の入力点群として確定し、iをi+1に更新し、i回目の反復を行う場合にi回目の反復の入力点群における点の数が0に等しいか否かを判断することに戻る。i回目の反復の入力点群における点の数が0に等しい場合に、1番目から(i-1)番目までのLOD層を分割しようとする点群が分割された後のLOD層として確定する。それによって、LODに基づいた隣接ノードの予測精度を高め、さらに符号化・復号化の効率を高めることができる。