空間マッピングのベストプラクティス

Last updated: October 23, 2026

ZED SDKの空間マッピングモジュールは、スタンドアロンの ZEDfu アプリケーションからも利用でき、シーンやオブジェクトの3Dスキャンを可能にします。複数の視点から取得した画像、深度、位置追跡データを時間経過に沿って統合することで、カラー3Dモデル(メッシュまたは融合ポイントクラウド)が作成されます。

モジュールの詳しい説明については、 空間マッピングのドキュメントを、ZEDfuツールについては ZEDfuのドキュメントを参照してください。

対応カメラ

空間マッピングには、 ZED 2i、 ZED Mini、 ZED X、 ZED X Mini、および ZED X Nano (販売終了したZED 2を含む)のような、慣性センサー(IMU)を搭載したステレオカメラが必要です。

次のカメラには 対応していません:

  • 初代 ZED (生産終了)。内蔵IMUがありません。

  • また、 ZED X One GS/4K/S カメラは単眼式のため対応していません。ただし、Dual ZED X One Virtual Stereo Camera構成には対応しています。ZEDfuでは、 ローカルストリーミング 入力を使用して、そのデータを受信してください。

スキャン時のベストプラクティス

  • ゆっくり、滑らかに動かします。 高速な動きはモーションブラーを引き起こします。ぼやけた画像は、位置追跡と再構成された3Dジオメトリの両方の品質を低下させます。

  • シーンが十分に明るいことを確認します。 暗い領域では深度ノイズが増加し、モデルにアーティファクトや不正なサーフェスが生じる可能性があります。

  • テクスチャの豊富なシーンを優先します。 テクスチャのない均一なサーフェス(むき出しの壁、ガラスなど)は、ステレオマッチングと追跡に必要な視覚情報がほとんどありません。ニューラル深度モードにより、屋内スキャンは以前のSDKバージョンよりも大幅に向上していますが、豊かなテクスチャによってさらに結果が改善されます。

  • 反射性および透明なオブジェクトは避けます。 鏡、ガラス、光沢のあるサーフェスでは、無効な深度測定が発生します。

  • サーフェスから適切な距離を保ちます。 カメラモデルの最小深度範囲より近づかないでください。また、距離が離れるほど深度精度が低下することに注意してください。このため、マッピング範囲は20 mに制限されています。

  • ループを閉じます。 部屋やオブジェクトをスキャンするときは、以前にスキャンした領域を再訪するようにしてください。これにより、位置追跡によるマップの改良が容易になります。 エリアメモリ を有効にすると、SDKが以前にマッピングした領域を認識し、追跡の一貫性を向上できます。 VSLAMマッピングチュートリアルを参照してください。

  • 追跡ステータスを確認します。 ZEDfuで位置追跡のステータスが SEARCHINGに切り替わった場合は、カメラを既にマッピングされた領域に向かって戻し、SDKが再位置推定を行ってマップ生成を継続できるようにします。

適切な設定の選択

  • 深度モード:ZEDfuでは、次のモードから選択できます: NEURAL LIGHT (ライブパフォーマンスが最適)、 NEURAL (品質とパフォーマンスのバランスが良好)、および NEURAL PLUS (最高品質。SVOファイルのオフライン処理に推奨)。

  • マップタイプ: MESH を選択すると、スキャン後にフィルタリングやテクスチャ付与が可能な、水密な三角形の集合が生成されます。または POINT CLOUD を選択すると、カラー融合ポイントクラウドが生成されます。ポイントクラウド形式では、各ポイントに色情報が付加されるため、より多くのメモリを使用します。

  • マッピング解像度:解像度は1 cmから12 cmの間で設定できます。高い解像度ではより詳細なマップが生成されますが、より多くのメモリと処理能力が必要となり、マップの更新速度が低下します。アプリケーションに適合する最低の解像度を使用してください。APIには、 HIGH (2 cm、小規模領域)、 MEDIUM (5 cm、バランス型)、および LOW (8 cm、大規模領域または衝突メッシュ)のプリセットがあります。

  • マッピング範囲:マップに統合する深度データの範囲は2 mから20 mの間で設定できます。範囲を広げると精度を犠牲にして大きなボリュームを迅速にキャプチャできます。範囲を狭めるとパフォーマンスが向上します。APIには NEAR (3.5 m)、 MEDIUM (5 m)、および FAR (10 m)のプリセットがあります。

  • メッシュフィルタリング:キャプチャ後、フィルタリングによって幾何学的特徴を維持しながらポリゴン数を削減します。 LOW は穴を埋めて外れ値を除去し、 MEDIUM と HIGH もメッシュの間引きを実行します。アプリケーションに最適なプリセットを見つけるため、さまざまなプリセットを試してください。

  • メッシュテクスチャ付与:スキャン前にテクスチャオプションを有効にすると、左カメラ画像の一部が記録され、メッシュサーフェスに投影されます。これによりモデルの視覚的品質は向上しますが、より多くの処理能力とメモリが必要です。テクスチャ付与はメッシュでのみ利用できます。

ライブスキャンまたはオフライン処理

ZEDfuを含む空間マッピングモジュールは、次の3種類の入力を受け付けます:

  • ライブカメラ:接続されたZEDステレオカメラによってリアルタイムでキャプチャされたデータ。

  • ローカルストリーミング:ZEDローカルストリーミングサーバーを介してリモートカメラから受信したデータ。

  • SVOファイル:カメラで記録され、後から処理されるデータ。 ZEDfuのドキュメント および 録画のドキュメントを参照してください。

ZEDfuでSVOファイルを処理する場合は、 オフライン モードを有効にすることを推奨します。マップ生成の開始前にSVOファイル全体が前処理されるため、処理時間は長くなりますが、より高品質なマップが生成されます。 NEURAL PLUS 深度モードと組み合わせることで、最高品質の3D再構成を実現するワークフローになります。

注:ZEDfuは生成されたマップをユーザーのホームディレクトリ内の ZED/Meshes フォルダーに保存します。生成が完了すると、生成されたマップの完全なパスがステータスバーに表示されます。

アプリケーションで空間マッピングAPIを使用する

ZEDfuで利用できるすべての機能は、ZED SDKを通じて独自のアプリケーションに統合できます。一般的なワークフローは次のとおりです:

  1. カメラを開き、 enablePositionalTracking()を使用して位置追跡を有効にする。

  2. でモジュールを有効にし、 enableSpatialMapping()を設定する。 SpatialMappingParameters (解像度、範囲、マップタイプ、テクスチャ)。

  3. ループ内で grab() を呼び出す。モジュールは画像、深度、ポーズをバックグラウンドで取り込みます。

  4. でマップを一度取得するか、非同期の extractWholeSpatialMap()を使用して継続的に取得する。 requestSpatialMapAsync() / getSpatialMapRequestStatusAsync() / retrieveSpatialMapAsync() 関数。

  5. 必要に応じて Mesh::filter() と Mesh::applyTexture()でメッシュを改良し、その後 save("mesh.obj")で保存する。

  6. 次の方法でモジュールを監視します getSpatialMappingState(): FPS_TOO_LOW は、一貫したマッピングに必要なフレームレートにシステムが到達できないことを示し、 NOT_ENOUGH_MEMORY はメモリ上限に達したことを示します。どちらの場合も、モジュールは新しいデータの統合を停止しますが、3Dモデルは引き続き抽出できます。

空間マップのリクエストと取得には多くのリソースが必要です。パフォーマンスを向上させるには、新しい空間マップを頻繁にリクエストしないでください。

詳細については、次を参照してください: