Capture Speed
An important factor for an application is speed. In order to estimate how fast an application can operate we need to know how much time each component takes. There are two important measurements that estimate how much time Zivid requires:
- CaptureFunctionReturnTime
This is the time it takes to execute the
captureAPI. When the API returns it is safe to block the FOV of the camera or move the camera. In Zivid Studio, CaptureFunctionReturnTime is shown as Acquisition Time.- CaptureTime
This is the time it takes from calling the
captureAPI until the point cloud is available on the GPU. It does not include copying data from GPU memory to system memory.- CopyTime
This is the time it takes to copy a specific point cloud data type from GPU memory to system memory. It is measured for each data type individually, so that you can estimate the cost of only copying what your application needs.
The capture process is described in more detail in Point Cloud Capture Process.
Zivid benchmarks all presets on different hardware, be it high-end or low-end. These benchmarks will vary over time, in most cases improve, as we move to newer SDK version. For relevant numbers choose the version of this documentation that corresponds to your SDK version.
You can check your acquisition and capture time in Zivid Studio and via the SDK.
const auto frame = camera.capture2D3D(settings);
const auto frameInfo = frame.info();
std::cout << "Acquisition time:" << std::endl;
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(
frameInfo.metrics().acquisitionTime().value())
.count()
<< " ms" << std::endl;
std::cout << "Capture time:" << std::endl;
std::cout
<< std::chrono::duration_cast<std::chrono::milliseconds>(frameInfo.metrics().captureTime().value()).count()
<< " ms" << std::endl;
using (var frame = camera.Capture2D3D(settings))
{
var frameInfo = frame.Info;
Console.WriteLine("Acquisition time:");
Console.WriteLine(frameInfo.Metrics.AcquisitionTime.Milliseconds + " ms");
Console.WriteLine("Capture time:");
Console.WriteLine(frameInfo.Metrics.CaptureTime.Milliseconds + " ms");
You can also run our C++ sample ZividBenchmark.cpp to benchmark with your hardware.
Copy Speed
After capture, the point cloud resides on the GPU. Copying data from GPU memory to system (CPU) memory takes time that must be accounted for in throughput-sensitive applications.
- PointXYZ
3D position in millimeters (X, Y, Z). 12 bytes per pixel. Use when you need 3D coordinates only.
- PointXYZW
3D position plus a homogeneous W coordinate (X, Y, Z, W). 16 bytes per pixel. W is padded to align data for efficient GPU memory access.
- ColorRGBA
Color per pixel (red, green, blue, alpha). 4 bytes per pixel.
- SNR
Signal-to-Noise Ratio per pixel. 4 bytes per pixel. Indicates depth measurement confidence: higher SNR means lower noise. See SNR Value.
- Combinations (e.g. PointXYZ+ColorRGBA+SNR)
Multiple data types copied in a single SDK call. More efficient than separate calls when your application needs more than one type.