近年、3Dスキャナーが普及し、安価なスキャナーも現れて3Dデータスキャンが容易にできるようになってきた。 3Dスキャナーでスキャンしたデータは、点群データ(PointCloud)として取得できる。その際、小さな物体をスキャンするレベルのデータ量は 少ないが、空間(オフィスフロアなど)をスキャンした際のデータ量は膨大な量となる。データ量が膨大となると、スキャン処理や スキャン後のデータ参照時に支障がある。
今回、あまりデータ精度を求めない点と、より低スペックのH/Wでも動作することを目的とし、以下の観点でプロトタイプを作成し、検証を行った。
- データ量の軽量化
- スキャン処理スピードの追求
研究内容
〇システム構成
- H/W
- PC
- CPU:Intel Core i3-7100U 2.40GHz
- メモリ:8.00GB
- 3Dスキャナー
- Intel RealSense D435i
- S/W
- OS:Windows10
- 言語:Python 3.7.6
- 点群ライブラリ:Open3D 0.8.0
〇機能概要
- 3Dスキャナーからのデータ取得
┗3Dスキャナーから1フレームスキャンして取得し、点群データとして内部保持する
<カメラ画像>
<点描データ表示>
- 仮想グリッドの生成と各グリッドに含まれる点群の抽出
┗仮想のグリッド(1m×1m×1mの立方体を1辺20分割)を生成し、スキャンした点群データの各点が、どのグリッドに含まれるかを判定し、カウントする
<仮想グリッド(重心点)とスキャンした点群データの合成表示>
- 有効グリッドの判定
┗グリッドに含まれる点群の数など、有効とする閾値等を決め、各グリッドが有効かどうかを判定する
<有効となったグリッド(重心)の表示>
- 次フレーム(スキャナから取得した次のデータ)との位置合わせ
┗3Dスキャナーより、次フレームの点群データを取得し、前フレームとの位置合わせを行う。現在、点群データの位置合わせアルゴリズムは以下の方式で行っている
(1)RANSAC(Random Sample Consensus)
RANSACは、最近傍点の組からランダムに点の組をサンプルし、最小二乗法に当てはめることを繰り返す。RANSACは、外れ値が含まれないように運動推定に使う対応点をサンプルすることができる
(2)ICP(Iterative Closest Point Algorithm)
マーカレスな位置合わせの代表的な手法の1つで、ICPアルゴリズムでは、2つの点群間の最近傍点を対応点として求め、その対応関係を用いて運動を推定する処理を繰り返して行い、推定した運動をより正しい値に近づける
<有効となったグリッド(重心)の表示>
- 有効グリッドからワイヤーフレーム生成
┗前フレームのデータと次フレームのデータをマージし、有効グリッド(重心)の情報を基に、ワイヤーフレームデータを作成する
<マージした有効グリッドを基にワイヤーフレーム表示>
システム構成
- データ量の軽量化
┗スキャンしたデータ形状をキューブ状で表し(Minecraft風)、座標値としてはキューブの重心座標のみ保持することで、大幅なデータ軽量化が図れる
- スキャンスピードの追求
┗上記データ軽量化ともつながるが、データ量が少なくなることにより処理スピードが向上する
位置合わせアルゴリズムにて、よりシンプルかつ精度の高い位置合わせを行うロジックを適用する
〇結果
プロトタイプを作成し(継続中)、一連の流れの機能は実装することができた。しかしながら、課題も見えてきており、特に処理速度に関しては満足するパフォーマンスは得られていない。下記観点についての結果は以下のとおり
- データ量の軽量化
┗データ量を減らすという目的は、キューブ型で形状を表現するアプローチにより大幅にデータ量が減ることとなるため達成できている
- スキャンスピードの追求
┗処理速度については、位置合わせアルゴリズムのロジックをシンプルにすることにより、ある程度処理コストを下げることができたが、十分な性能は出せていない
〇考察
プロトタイプ作成にて見えてきた課題を以下に挙げる。
処理速度の向上
以下の2点が処理速度向上のポイントとなるため、今後の課題として検討を行う
- 位置合わせアルゴリズムの高速化 (位置合わせアルゴリズムは、計算量が多いため、処理コストがかかる)
→点群データを減らすことにより、計算量が減り、処理コストが下がる。なのでより高速かつ精度の高い位置合わせアルゴリズムを適用する
- 仮想グリッド(1m×1m×1mの立方体を1辺20分割)の各グリッドに含まれる点群の抽出およびカウント(現状の仮想グリッドでは8000個のグリッドがあるため、その8000個に対してスキャンした点群が含まれるかどうかを判定しているため、処理コストがかかる)
→仮想グリッド個数の削減、ループ処理の改善による処理コスト削減