最近ロボットと点群の勉強にはまっています。
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$ もパラメーターにした方が良さそうですが、単一のステレオカメラやセンサーで生成される点群だと裏側にさらに点群があるケースはないので、こういうのもありなのかなと思いました。