点群とは?
点群は、3D 空間内のデータ点の集合です。各点は、実世界のオブジェクトの表面における位置の XYZ 座標を表しており、それらの点は表面全体をまとめてマッピングします。点群は、一般的に LiDAR スキャナー、ステレオカメラ、TOF (time-of-flight) カメラによって生成されます。
点群は、データ型に基づいて次の 2 つのカテゴリーに分類できます。
オーガナイズド点群
- 画像データにあるように複数の行と列で構成
- 形式: M x N x C。M は行数、N は列数、C はチャネル数
- 通常オーガナイズド点群を生成する、ステレオカメラや TOF (time-of-flight) カメラなどのセンサー
- 隣接する点間の関係に関する情報を含む
アンオーガナイズド点群
- 行と列で構成されない
- 形式: MxC。M は点群内の点の数、C はチャネル数
- 一般的な LiDAR センサーでアンオーガナイズド点群を生成
- アンオーガナイズド点群は、球面に投影することでオーガナイズド点群に変換可能 (MATLAB の関数 pcorganizeを使用した変換など)
点群処理は、ロボティクスや自律システムで知覚とナビゲーションに使用されます。また、拡張現実 (AR) や仮想現実 (VR) のアプリケーションにも使用できます。MATLAB® には、特に Lidar Toolbox™ と Computer Vision Toolbox™ を使用して点群処理をサポートするツールやリファレンス アプリケーションが用意されています。
MATLAB を使用した一般的なワークフローとタスク
点群の読み取り、書き込み、ストリーミング
MATLAB は、PCD、PLY、PCAP、LAS/LAZ、Ibeo データコンテナーなど広く利用されているファイル形式の読み取り機能を提供します。Velodyne および Ouster LiDAR センサーからのライブ LiDAR データのストリーミングも可能です。
合成 LiDAR データの作成
実際の LiDAR センサーを模擬した合成 LiDAR データを作成し、ワークフローを実際のシステムに展開する前にテストします。
データの前処理
3D 点群のダウンサンプリング、メディアンフィルター、変換、特徴量の抽出、位置合わせなどのための前処理アルゴリズムを適用します。
LiDAR とカメラのキャリブレーション
システム内でカメラと LiDAR 間の変換を見つけます。次に、その変換を使用して LiDAR データをカメラデータに投影したり、反対にカメラデータを LiDAR データに投影したりできます。
オブジェクト検出とセマンティック セグメンテーションの実行
ディープラーニング アルゴリズムを使用してオブジェクト検出や点群のセグメンテーションを行います。
マップ作成と車両の位置推定
一連の点群を使用して、レジストレーション、マップ作成、および SLAM を行います。
CPU や GPU への展開
ターゲット ハードウェアに LiDAR 処理ワークフローを C/C++ または CUDA コードとして展開できます。
詳細については、 Lidar Toolbox™ と Computer Vision Toolbox™ を参照してください。
製品使用例および使い方
参考: 3D 画像処理, アフィン変換, デジタル画像処理, 画像解析, 画像処理およびコンピューター ビジョン, 画像再構成, 画像レジストレーション, 画像セグメンテーション, 画像のしきい値処理, 画像変換, オブジェクト検出, RANSAC, ステレオビジョン, SLAM (自己位置推定と環境地図作成), ドローンマッピング