点群(Point Cloud)

**点群(point cloud)**は3D点の集合 {Xi}\{\mathbf{X}_i\}XiR3\mathbf{X}_i \in \mathbb{R}^3 であり、任意で色、表面法線、反射強度(LiDAR)などの点ごとの属性を持つことができる。これは最も単純で最も普遍的な3D地図表現である。連結性もグリッドもなく、環境の表面を単にサンプルしただけのものである。

点はどこから来るのか

X=d[(ucx)/fx(vcy)/fy1]\mathbf{X} = d \begin{bmatrix} (u - c_x)/f_x \\ (v - c_y)/f_y \\ 1 \end{bmatrix}

1枚のVGA深度フレームは約30万点を生成するため、密な点群はメモリを大量に消費し、空間インデックス(kd-treeやボクセルハッシュマップ、PCLやOpen3Dで使われるもの)を必要とする。

主な操作

ダウンサンプリング(ボクセルグリッドフィルタ)。 空間を辺の長さ \ell の立方体に分割し、各立方体内のすべての点をその重心で置き換える。これによって密度を制限し、冗長性を取り除き、後続の処理(ICP、法線推定)を扱いやすくする。

局所PCAによる法線推定。 各点について、そのkk個の最近傍を集め、局所共分散を形成する。

C=1ki=1k(pipˉ)(pipˉ)TC = \frac{1}{k} \sum_{i=1}^{k} (\mathbf{p}_i - \bar{\mathbf{p}})(\mathbf{p}_i - \bar{\mathbf{p}})^T

そして、CC最小固有値に対応する固有ベクトルを表面法線とする(局所的な広がりが最も少ない方向)。固有値の比率は局所的な平面性/曲率の尺度も与え、例えばLiDARオドメトリでエッジ特徴か平面特徴かを選ぶ際に使われる。

最近傍探索。 対応関係の探索(ICPの内側ループ)は高速な最近傍クエリを必要とし、これはkd-treeやボクセルハッシングによって提供される。

レジストレーション。 2つの点群は、iqi(Rpi+t)2\sum_i \lVert \mathbf{q}_i - (R\mathbf{p}_i + \mathbf{t}) \rVert^2 を最小化する剛体変換 (R,t)(R, \mathbf{t}) を推定することで位置合わせされる——対応関係が既知であれば、相互共分散行列のSVDによって閉形式で解かれ、そうでなければ再マッチングを伴って反復される(ICP)。

強みと弱み

これが、密なSLAMシステムが典型的には点群を入力/中間表現として使い、持続的なモデルのためにボクセル(TSDF/占有)またはサーフェルマップへと融合する理由である。

SLAMにおける意義

ハンズオン

関連ノート