- @aramitama
- 2018.3.23
- PV 718
点群同士の差分を検出したい
ー 概要 ー
二つの点群同士の差分を検出する方法についてまとめます。二つの点群をセンサから取得するとき、小数点まで一致することはまずありません。なので幾らか同一とみなす距離が必要があります。
この章を学ぶ前に必要な知識
条件
- 入力として二つの点群が必要
- 出力は差分の点群
効果
- 二つの点群の差分を検出します
ポイント
- センサ入力の場合はわずかに点が異なるため、閾値が必要
解 説
二つの点群同士の差分を検出する方法についてまとめます。
点群を比較する上では点同士が近かった場合は差分がないものと判断します。人工的に生成しない限り同一のところを深度センサで計測したとしても、点群の各点がどういつの計測値になることはまずない。そのため、少し点同士がずれた場合でも差分にならないようにする工夫が必要となる。
ここでは
・単純な方法によるもの
・Octreeを利用したもの
の二つの手段を紹介する。 | 二つの点群同士の差分を検出する方法概要 |
1.単純な差分 | |
単純な差分の場合、双方の点群において一定距離(閾値)以内に対応する相手の点がいないかどうかによって差分となる点群を検出する。
この場合、Nearest Neighbor Search等の実装を行い、高速に行う工夫が必要がある. | 単純な差分の実装について |
Nearest Neighbor Searchを行うには、右のリンクに書いてあるように、OctreeやKdtreeの活用がお勧め。 | 点群から最近傍点を検出したい |
2.Octreeによる差分 | |
もう一つ紹介する方法は、Octreeによる差分検出です。
Octreeは空間を8分割して管理するデータ構造でこれによって近傍点の検出等が高速に可能になります。Octreeを用いると空間を分割して管理することになるが、更新前と更新後の差分をとることにも向いている。高速に差分が取れることが特徴。点群の入る空間ごとに差分を取得することになり、その空間の細かさによって差分の細かさも決定する.
例としてPointCloudLibraryという3次元点群処理のライブラリにおいてはChangeDetectionにおいてOctreeによる差分検出が実装されている。 | Octreeによる差分検出 |
この章を学んで新たに学べる
Comments