ダウンサンプル

Tip

弊社のウェビナー Getting your point cloud ready for your application は、ダウンサンプルについて部分的に説明しています。

はじめに

この記事では、ダウンサンプリングの概念を紹介し、それがなぜ価値があるのかを説明し、 Zivid 点群をダウンサンプリングする方法を示します。

Zivid 3 カメラは、8 MP( 2816 x 2816 )のセンサーを使用して、シーンの点群をキャプチャします。点群は、XYZ(3D)、RGB(カラー)、および SNR データで構成されます。生成される点群は、800万点からなります。

Zivid 2+ カメラは、5 MP ( 2448 x 2048 ) のセンサーを使用してシーンの点群をキャプチャします。点群は、XYZ (3D)、RGB (カラー)、および SNR データで構成されます。生成された点群は 500 万点で構成されます。

Zivid 2 カメラは、2.3 MP ( 1944 x 1200 ) のセンサーを使用してシーンの点群をキャプチャします。点群は、XYZ (3D)、RGB (カラー)、および SNR データで構成されます。生成された点群は 230 万点で構成されます。

一部のアプリケーションは高密度の点群データを必要としません。例としては、平面をボックスの表面に当てはめることによるボックスの検出や、オブジェクトが明確で簡単に識別できる特徴を持つ場合の CAD マッチングなどがあります。さらに、この量のデータはマシンビジョンアルゴリズムがアプリケーションに必要な速度で処理するには大きすぎることがよくあります。点群ダウンサンプリングが活躍するのはこのようなアプリケーションです。

点群コンテキストでのダウンサンプリングとは、同じ 3D 表現を維持しながら空間解像度を下げることです。通常、データをより管理しやすいサイズに変換し、ストレージと処理の要件を軽減するために使用されます。

Zivid SDK を使用して点群をダウンサンプリングする方法は 2 つあります。

  1. Via the setting Settings::Processing::Resampling (リサンプリング), which means it's controlled via the capture settings.

  2. API PointCloud::downsample を介して。

どちらの場合も、点群に対して同じ操作が適用されます。 API バージョンでは、その場でダウンサンプリングを行うか、ダウンサンプリングされたデータを含む新しい点群インスタンスを取得するかを選択できます。

問題

点群のサイズまたは解像度 (密度) が大きすぎます。

解決策

Zivid 点群をダウンサンプリングして、サイズと解像度を下げます。

注釈

この記事では、後処理中に適用されるダウンサンプリングについて説明します。解像度を下げ、それによって取得時間およびキャプチャ時間も短縮するハードウェアベースのサブサンプリング方法については、 サンプリング(3D) の記事を参照してください。

ダウンサンプル API

ダウンサンプリングはその場で実行でき、これにより現在の点群が変更されます。

ソースに移動

source

pointCloud.downsample(Zivid::PointCloud::Downsampling::by2x2);
ソースに移動

source

pointCloud.Downsample(Zivid.NET.PointCloud.Downsampling.By2x2);
ソースに移動

source

point_cloud.downsample(zivid.PointCloud.Downsampling.by2x2)

ダウンサンプリングされた点群を新しい点群インスタンスとして取得することもできます。これにより、既存の点群は変更されません。

ソースに移動

source

auto downsampledPointCloud = pointCloud.downsampled(Zivid::PointCloud::Downsampling::by2x2);
ソースに移動

source

var downsampledPointCloud = pointCloud.Downsampled(Zivid.NET.PointCloud.Downsampling.By2x2);
ソースに移動

source

downsampled_point_cloud = point_cloud.downsampled(zivid.PointCloud.Downsampling.by2x2)

Zivid SDK は、ダウンサンプリングレート by2x2by3x3 、および by4x4 をサポートしており、ダウンサンプリングを複数回実行することも可能です。

注釈

Zivid SDK のダウンサンプル API は、点群データが GPU メモリ上にある間に GPU 上で並行して実行されるため、高速です。サードパーティのライブラリを使用したダウンサンプルの実装は、より時間がかかる可能性があります。CPU の計算は一般にはるかに遅く、GPU の計算には別のコピーが必要です。詳細については 点群キャプチャプロセス を参照してください。

実装に興味がある場合は、 C++C# 、および Python のダウンサンプリングコードサンプルをご覧ください。

Tip

  • GPU は点群データが GPU メモリ上にある間にこれらすべての計算を実行するため、パフォーマンス上の理由から、ダウンサンプル API を変換 API および法線 API と組み合わせて使用します。

  • 最も速く実装するには、まず点群をダウンサンプリングしてから、それを変換します。

点群をダウンサンプリングするには、コードサンプルを実行できます。

Sample: Downsample.cpp

./Downsample

Sample: Downsample.cs

Downsample.exe

サンプル: downsample.py

python /path/to/downsample.py --zdf-path /path/to/file.zdf

バージョン履歴

SDK

変更点

2.12.0

Downsampling can now also be done via Settings::Resampling.

2.10.0

モノクロキャプチャ はダウンサンプリングのより高速な代替手段を提供します。

2.1.0

ダウンサンプリング API が追加されました。