点群のNeighborhoodについて


最近ロボットと点群の勉強にはまっています。

Reconstruction and Analysis of 3D Scenesに、点群のNeighborhoodについて書かれていたのでまとめました。2次元の画像処理と違い、点群の場合は隣の画素という概念がありません。そのために、近くの点を定義する必要があります。

neighborhood の定義とパラメータ

この本では3つの定義が紹介されています。それぞれの定義とパラメータを説明します。

a spherical neighborhood definition

一番直感的な考え方で3次元的にある範囲にある点をneighborhoodと見なします。
この時のパラメータは、球の半径をあらわす $R_s$ になります。

a cylindriacl neighborhood definition

球ではなく円柱状に領域を取ります。

Fig6-2から
この図の真ん中のイメージです。
パラメータは円柱の半径 $R_c$ がパラメータになります。

a neighborhood definition

3次元の距離が近い物から一定数をneighborhoodとします。
一定数 $k$ がパラメータになります。

使い分け

具体的な使い分けはあまり書いてなかったのですが、点群の状態に応じて適切な定義とパラメータを選ぶ必要があります。全領域で同じパラメータを使うのか(single-scale)、場所によって変えるのか(multi-scale)も大事な観点になります。

円柱状にneighborhoodを取るcylindriacl neighborhood definitionは、点群の特定の場所(物体の表面イメージ)の法線ベクトルを取り、そのベクトルを中心に半径を定義して使う事で、表面上の点群から近い所を見つける事ができます。このやり方だと半径 $R_c$ だけじゃなくて高さ $h$ もパラメーターにした方が良さそうですが、単一のステレオカメラやセンサーで生成される点群だと裏側にさらに点群があるケースはないので、こういうのもありなのかなと思いました。