SDK Changelog
2.13.1
Bug fixes
Fixed issue where the orientation of ArUco marker poses returned from
Calibration::MarkerShape::pose()
were inconsistent with calibration board poses. All poses from detected ArUco markers now point in the positive z-direction, i.e. away from the camera. ArUco marker poses were introduced in 2.13.0.
2.13.0
API
Added new API for getting and changing the network configuration of Zivid cameras:
Invoke
Camera::networkConfiguration()
to get the current network/IP configuration of the camera.Invoke
Camera::applyNetworkConfiguration(...)
with aNetworkConfiguration
object with the new configuration to apply this configuration to the camera.Zivid is using multicast to discover and configure cameras, which means all Zivid cameras that are on the same network as the PC will be found and can be configured, even if the PC and camera IP/subnet settings do not match. This feature requires Zivid camera firmware version 1.16.0 or newer (corresponding to SDK 2.10.0 or newer).
Camera network configuration is also available in Zivid Studio. See the Studio section below for more details.
Added a function
Zivid::Calibration::detectMarkers(...)
for detecting one or more ArUco markers from a point cloud.The return value provides 2D+3D coordinates for marker corners, as well as center pose (position+orientation).
Added support for hand-eye calibration using ArUco markers:
The API for hand-eye calibration based on ArUco markers is identical to the current hand-eye calibration API for calibration boards, except you must invoke
Zivid::Calibration::detectMarkers(...)
instead ofdetectFeaturePoints(...)
.Users must specify which markers (one or several) are present in the scene. The 3D capture associated with each robot pose only needs to have a subset of those markers visible.
Added functions
Zivid::Calibration::detectCalibrationBoard(...)
which do the same as the existingZivid::Experimental::Calibration::detectFeaturePoints(...)
functions, but are non-experimental.Added function
Zivid::Calibration::captureCalibrationBoard(...)
which does the same as the existingZivid::Experimental::Calibration::captureCalibrationBoard(...)
, but is non-experimental.Improved point cloud quality on lighter objects that easily overexpose when doing HDR with the Stripe engine.
Added API for serializing/deserializing data types such as
Settings
/Settings2D
to/from strings.Use the
serialize()
method and thefromSerialized()
static function to serialize/deserialize the object.The object will be serialized using YAML format.
Added support for Ubuntu 24.04.
Updated Zivid 2 and 2+ firmware to version 1.26.3.
Bug Fixes
Fixed a crash that could occur during capture on Windows when using Intel GPU drivers.
Fixed a bug where the camera intrinsics functions did not respect the resampling option in Settings.
Fixed an issue where calling
Application::cameras()
would use 100% of one CPU core.Fixed a crash that could occur in rare cases when calling
Application::cameras()
, if a camera’s state changed during the function call (for example if the camera became inaccessible or disappeared from the network).Fixed a firmware bug where incorrectly padded Ethernet frames were discarded, which would give an exception when connecting to the camera. Some switches with VLAN configurations were affected by this issue.
Fixed a firmware bug where the camera network interface could hang and the camera would reboot if the SDK application was aborted mid-capture.
Fixed an issue with the Windows installer where upgrading from a previous SDK version could result in files missing in the installation directory.
Fixed an issue with the Windows installer where duplicate or previously uninstalled Zivid SDK entries could be shown in the Windows “Programs and Features” / “Installed Apps” list.
Fixed an issue with the Windows installer, when installing the Zivid GenICam wrapper, where the Zivid SDK would not be added to
GENICAM_GENTL64_PATH
if that environment variable didn’t exist, and a popup dialog about a RegAddPathToVar error would be shown.
Studio
Added a new
Cameras
window, accessible via the main menu bar, which contains a list of all discovered Zivid cameras:The table lists each camera’s serial number, model name, IP address and current status.
Firmware version and hardware revision is available in a tooltip by hovering over the model name.
Added a form to configure the network/IP configuration of Zivid cameras. The form is shown when clicking the
Configure
button next to the camera’s IP address in theCameras
window.Added support for updating the firmware of multiple cameras in parallel using the
Cameras
window.Adjusted the look and feel of the
About Zivid Studio
,Legal Notices
andSystem Information
windows.Adjusted the look and feel of the popup menus shown when clicking the “…” buttons.
Fixed a bug that could occur when typing a value for some settings such as Exposure Time, and then clicking Tab to move to the next setting, where the numeric value would be changed to the closest recommended value (which for ExposureTime would be the closest multiple of 8333 or 10000).
Added a “Launch Zivid Studio” option in the last page of the Windows installer.
Deprecation notice
SDK 2.13 is the last release with C++11 support in the C++ API. SDK 2.14 and later will require C++17 or newer.
Known issues & limitations
See https://support.zivid.com/latest/support/troubleshooting.html, especially Errata, for all known issues and limitations.
2.12.0
API
Added support for Nvidia Jetson Orin:
See “Known issues & limitations” below for known issues when using Nvidia Jetson Orin.
Improved the quality and performance of the Omni engine:
The new and improved version of the Omni engine offers better coverage on transparent objects in less time.
Omni now allows capturing transparent objects with a greater distance between the foreground and background.
Edge artifacts, floating planes and rising floating points are drastically reduced.
The Omni engine now requires less light to get the same level of coverage, potentially allowing up to 2x reduction in acquisition time on all Zivid 2+ camera models. For Zivid 2+ M60, acquisition time is further reduced by 28%.
Using
Settings::RegionOfInterest::Box
may now significantly speed up acquisition and processing time:The SDK can avoid acquiring and processing sensor data that is guaranteed to fall outside the region of interest.
The speed-up depends on the size and shape of the ROI box. Generally, a smaller ROI box seen from the camera’s viewpoint will give a greater speed-up.
Added new
Settings2D::Sampling::Pixel
for performing subsampled 2D capture:Subsampled 2D captures can be considerably faster than full resolution 2D capture.
The available options mirror
Settings::Sampling::Pixel
, so that users can request 2D captures that exactly match the color data in the equivalent 3D capture.
Added new
Settings::Processing::Resampling
for upsampling/downsampling the point cloud:These operations are performed after all other processing has been completed.
Downsampling is used to reduce the number of points in the point cloud. This is done by combining each 2x2 or 4x4 group of pixels in the original point cloud into one pixel in a new point cloud. This downsample functionality is identical to the downsample() method on the PointCloud class.
Upsampling can be used in combination with the existing subsampling modes to increase the output point cloud resolution while retaining the speed benefits of subsampled captures. This is achieved by mapping the computed pixels onto a higher resolution and interpolating the missing points in between where possible.
The projection API is no longer experimental:
The functions and classes have been moved from namespace
Zivid::Experimental
toZivid::Projection
. The related headers have been moved fromZivid/Experimental
toZivid/Projection
.
Several settings are no longer experimental, and have been moved in the Settings hierarchy:
The Engine setting has been moved from
Settings::Experimental::Engine
toSettings::Engine
.The Reflection Removal filter’s Mode setting has been moved from
Settings::Processing::Filters::Reflection::Removal::Experimental::Mode
toSettings::Processing::Filters::Reflection::Removal::Mode
.The HoleFilling filter has been renamed to the Hole Repair filter. The setting has been moved/renamed from
Settings::Processing::Filters::Experimental::HoleFilling
toSettings::Processing::Filters::Hole::Repair
.If you set these particular settings directly in your code, then you must update the code to their new location.
Settings.yml files created from earlier SDK’s will continue to work in 2.12. However, if you modify these .yml files manually and update the
__version__.data
field in the top of the file to 24 or higher, you will need to update these setting nodes to reflect their new location. Otherwise, you will get an “YAML document contains unknown key” exception when loading the .yml file.
The Stripe and Omni engines are no longer experimental.
Added
HardwareRevision
string to theCameraInfo
class.Reduced acquisition time for Zivid 2+:
Acquisition time reduced by about 5% for 3D captures.
Acquisition time reduced by up to 50% for 2D captures.
RGB color values in full-resolution Phase engine 3D captures are now more reliable and accurate:
This change leads to a slight performance loss for exposure-time limited captures (higher-end GPU and high exposure time) and a slight performance gain for compute-limited captures (low-end GPUs and low exposure times).
Optimized color processing for 3D captures to improve performance on low-end GPUs:
Full resolution 3D captures with colors enabled are up to 10% faster.
Subsampled 3D captures with colors enabled are up to 20% faster.
The Reflection Filter in Local mode is now up to 15% faster on low-end GPUs.
Added a splash screen that projects camera information for 60 seconds after camera boot:
The splash screen will display the Zivid logo, the camera’s serial number, IP address, firmware version and network link status.
The splash screen will disappear after 60 seconds, or when you connect to the camera via the SDK/Studio.
The splash screen is enabled by default, and can be disabled using the ZividNetworkCameraConfigurator tool.
Cameras that can be reached from multiple local network interfaces are no longer reported as inaccessible:
Previously, if a camera’s IP could be reached from multiple local network interfaces, its status would be
inaccessible
, andCameraState::InaccessibleReason
would beipInMultipleLocalSubnets
. This condition is no longer reported as an inaccessible camera, as there are some valid network configurations where this condition will be true.
Updated Zivid 2 and 2+ firmware to version 1.22.4.
.NET
Added support for in-field calibration to .NET.
Bug fixes
Fixed a bug where the function
detectFeaturePoints(Frame)
would throw unless theFrame
came from the functioncaptureCalibrationBoard(Camera)
.detectFeaturePoints(Frame)
now accepts anyFrame
as input, and the stricter requirements are only applied if users attempt to use theDetectionResult
for in-field verification or correction.Fixed a bug where the SNR of the Omni engine was incorrectly calculated in occluded and noisy areas. This hindered effective use of the noise filter to clean up noisy edges.
Fixed a crash that could happen on some newer versions of Intel OpenCL drivers on Windows, if the
Application
was destructed while aFrame2D
object was alive.Fixed a very rare bug where a capture could fail with an “Internal error: The acquisition done signal was never received!” exception.
Studio
Added “Acquisition Time” to the Information panel. “Acquisition Time” is defined as the duration from the start of the capture to when the camera has acquired the last image.
Added “Save Depth Map” option to the “File” menu to save the depth map as a Jet color mapped .png image.
Added descriptive tooltips to all the settings nodes in the Information panel.
CLI
ZividListCameras’s output will now display “Hardware Revision” as an alphanumerical string, matching the revision printed on the product label. Previously an integer major and minor version was displayed.
ZividFirmwareUpdater now exits with an error code if no camera(s) are found. Previously the tool would exit successfully with code 0.
Removal of support
Zivid One+ cameras are no longer supported by the SDK. The last SDK with support for Zivid One+ is 2.11.
Any connected Zivid One+ camera will not appear in the API, Zivid Studio or ZividListCameras.
The
zivid-telicam-driver
debian package on Ubuntu/Linux, and TELICAMSDK application on Windows, is no longer required by the SDK. The Zivid SDK Windows installer will give you an option to uninstall TELICAMSDK from your computer.
Visual Studio 2017 is no longer supported by the SDK. Windows users must migrate to Visual Studio 2019 or newer.
Known issues & limitations
Known issues with Nvidia Jetson Orin:
All Jetson Orin modules are supported, and Zivid has tested Orin AGX, Orin NX and Orin Nano modules.
Jetson Orin Nano is supported by the SDK, but Orin Nano has only 4GB/8GB of total RAM, which is shared between both the GPU and the CPU. 4GB will generally be insufficient to run any application using the Zivid SDK, while 8GB in practice may be insufficient for some use cases, especially if doing longer captures, using Stripe/Omni engine, and/or enabling many filters, and depending on how much RAM is used in user’s code. RAM usage in your application should be carefully evaluated if you are using Jetson Orin with 8GB RAM or less.
Zivid Studio tooltips may in some cases not be displayed as expected. A workaround is having another application open that continuously draws to the screen, such as “System Monitor”.
The Visualizer class may not update the point cloud output correctly when using keyboard shortcuts.
See https://support.zivid.com/latest/support/troubleshooting.html, especially Errata, for all known issues and limitations.
2.11.1
API
Updated Zivid 2 and 2+ firmware to version 1.20.8.
Bug fixes
Fixed a bug for Zivid 2 and 2+ where cameras configured in DHCP mode would throw a “Timed out waiting for …” exception when connecting to the camera. This bug was introduced in SDK 2.11.0.
Fixed a bug for Zivid 2 and 2+ where continuously calling
Zivid::Experimental::Projection::showImage()
could project incorrect images. This bug has existed since the feature was introduced in 2.10.0.
Deprecation notice
SDK 2.11 is the last SDK with support for Zivid One+. 2.11 is a Long-Term Support (LTS) version for Zivid One+. 2.11 will receive patch updates with fixes for possible critical bugs or security issues that affect One+ operation until December 2026.
2.11.0
API
Added
Settings::Sampling::Pixel::blueSubsample4x4/redSubsample4x4
for Zivid 2+:This controls the projection color and how pixels are sampled for point cloud processing.
The
blueSubsample4x4
/redSubsample4x4
modes will project blue or red light, and sample one sixteenth of the pixels (resolution of 612x512 on Zivid 2+).Compared to
blueSubsample2x2
/redSubsample2x2
, these new modes will speed up both data acquisition and GPU processing time, as well as reduce GPU memory usage.The maximum point cloud capture rate possible with a Zivid 2+ is almost doubled (from ~100ms to 50-60ms).
Point cloud captures with compute-heavy settings (like
Omni
engine) on weak GPUs are up to 3x faster in4x4
mode compared to2x2
mode.The Zivid 2+ settings presets called
ParcelsFast
,ParcelsQuality
andConsumerGoodsFast
have been modified to take advantage of the4x4
mode.
All Zivid 2 and 2+ cameras that are discovered are now returned from
Application::cameras()
:The SDK will discover Zivid cameras on the local subnet(s), using the multicast DNS protocol. This includes Zivid cameras that have an IP configuration that is incompatible with the PC, for example mismatched IP/subnet settings, or if there are multiple Zivid cameras with the same IP address. Be aware that the multicast message is sent out from the PC on all local network adapters, including office/LAN network adapter etc.
Cameras that have incompatible IP settings compared to the PC will have status
inaccessible
. You will need to update the camera’s IP settings, or adjust the PC network adapter configuration, to use the camera from Zivid SDK/Studio. The camera’s IP can be changed using serial number by using theZividNetworkCameraConfigurator
CLI tool. See the CLI section of the Changelog.Discovered Zivid 2 and 2+ cameras that are busy (in use by another process) will also be returned from
Application::cameras()
, and will have statusbusy
.Note! This is a behavior change from earlier SDK versions. Previously, cameras that were inaccessible (in other words, not connectable over TCP/IP and/or already connected from another process) would not be returned from
Application::cameras()
.If you have a Cameras.yml file in the Zivid config directory, then only the Zivid 2 and 2+ cameras that matches the entries in Cameras.yml will be returned. Note that Cameras.yml does not affect One+ cameras.
Added
Status
enum to theCameraState
class that indicates if a camera is available, inaccessible, busy, requires firmware update, etc. See theCameraState::Status
documentation for more information about the possible statuses.Added
InaccessibleReason
enum to theCameraState
class to give more information for cameras ininaccessible
state. This enum will indicate if the problem is IP conflict, misconfigured subnet settings, etc.Added
Network::IPV4::Address
string to theCameraState
class that returns the IP address of the camera.Stripe engine now supports all reflection filter modes:
In addition to the
Global
reflection filter, it’s also possible to choose theLocal
reflection filter, or disable the reflection filter entirely. This is useful in scenarios where you need to reconstruct thin objects like cables or pipes, but can allow some loss in reflection handling and point cloud quality.
Improved speed of back-to-back captures by better pipelining of acquisition, data transfer and processing:
The SDK will now be able to start the acquisition of the next (2D or 3D) capture while the previous (2D or 3D) capture using the same camera is still being transferred/processed. Prior to this release, the next capture for a camera would not start until all previous capture(s) on the same camera had finished all transfer and processing.
The improvement on total 2D+3D capture time is around 15-20ms on high-end Nvidia GPUs, and around 50-70ms on integrated Intel GPUs, depending on network speed and GPU capability.
To capture back-to-back as fast as possible, invoke
Camera::capture()
as soon as possible after the previousCamera::capture()
returned (which is right after the image acquisition for that capture finished). Be aware that calling someFrame
/Frame2D
methods such asframe.pointCloud()
orframe.imageRGBA()
will block until the processing of that capture has finished. So for max speed you should avoid calling those methods in the same thread before starting the next capture, for example by having separate capture/processing threads or usingstd::async
.
Improved
Camera::capture()
return time for Zivid 2 and 2+ cameras with Stripe/Omni engine on weaker GPUs:Prior to this release, capture() in this scenario would not return immediately after the acquisition of the capture had completed. There could be a delay of up to 100-200ms after acquisition completed before
capture()
returned. This delay would only happen on weaker GPUs, typically Intel integrated GPUs. From this releaseCamera::capture()
will return within a few milliseconds after acquisition has finished, independent of capture settings and GPU.
Improved capture speed with Stripe/Omni engine when compute-limited (low exposure-time) by up to 10%.
Added constructor to the
Image
class that constructs the image from a path to a .png/.bmp/.jpg file.Added new
ColorSRGB
output format toPointCloud
andFrame2D
classes for copying color in sRGB color space:The sRGB color space is suitable for showing an image on a display for human viewing. With sRGB output format, colors will appear brighter and more correct compared to the existing (linear) color formats.
Changed the output of
Camera::toString()
:A new
Status
field is added. TheNetwork Path
field is renamed toIP Address
. TheInternal camera id
andProjector firmware tag
fields are removed.
Disconnected file cameras will now be returned from
Application::cameras()
, as long as the user holds a handle to the file camera. Prior to this release, disconnected file cameras would not be included incameras()
.Updated Zivid 2 and Zivid 2+ firmware to version 1.20.6.
C++
Added
Zivid::Image::resolution()
member function that returns the image size in aResolution
object.Added new function
Experimental::Calibration::pixelMapping()
for retrieving information about how pixels in a subsampled capture maps to pixels in a full-resolution capture.
.NET
Added experimental projection API to project a custom color image with the Zivid projector:
This API was added for C++ and Python in 2.10.0, and is now available from .NET.
Available for Zivid 2 and Zivid 2+.
Added
Resolution
property to theImage
class that returns the image size in aResolution
object.
Bug fixes
Fixed a bug in the .NET wrapper where a
Zivid.NET.CloudVisualizer
instance could not be run multiple times in the same process.Fixed an issue for Zivid 2+ when performing 3D capture with
Settings::Sampling::Pixel
set toblueSubsample2x2
/redSubsample2x2
, in combination withSettings::Sampling::Color::rgb
, where the camera could use above 100W of power for a short duration. The camera will now stay below 100W power usage in this case, unless the Config.yml optionCamera/Power/Limit
is set tounlimited
. See the Changelog for 2.10.1 for more info about the Power Limit config.Fixed a “StructuredLightCamera::~StructuredLightCamera was invoked in the wrong thread” exception that could happen when disconnecting from a camera in specific rare circumstances.
CLI
ZividNetworkCameraConfigurator can now configure camera IP settings given only the serial number if the camera, even if the camera is not accessible over TCP/IP:
The tool can configure network settings for any discovered Zivid camera, using multicast UDP messages. This simplifies changing camera network configuration, as you don’t need to have a TCP/IP connection to the camera in order to change its network configuration.
This feature requires that the camera is already on firmware version 1.17.1 or newer (from SDK 2.10.0 or newer). Cameras with older firmware versions will still require that you connect to the camera via direct TCP/IP connection (as in SDK 2.10 and earlier).
ZividListCameras will now list all discovered Zivid 2 and 2+ cameras, even cameras that are inaccessible or busy. The
Status
field will give you the status of the camera. See the API section for more information.ZividListCameras will no longer automatically invoke
camera.connect()
on each discovered camera. You can connect to each camera by passing the argument--test-connect
, which is useful to determine if the camera is accessible over TCP/IP.ZividListCameras will now print a notification message if you have a Cameras.yml file on the PC.
ZividListCameras’ output for each camera is changed. See the description of changes to
Camera::toString()
in the API section above.
Studio
Color/RGB values in the 3D view and 2D color image view will now be shown in sRGB color space:
This makes the color images look brighter and more correct on monitors, compared to previous versions of Studio which displayed colors in linear RGB color space.
When saving color/RGB images from Studio, the user can select if they want to use sRGB or linear color space.
Exported 3D point clouds in .ply, .pcd or .xyz format will still store colors in linear RGB color space.
Studio will now show all inaccessible and busy cameras, which previously were not shown via API or Studio. For cameras in inaccessible state, a helpful description about how to configure the camera is displayed.
Added IP address and camera status to the camera selector combobox.
Studio will now periodically check the connection state of all cameras. Studio will automatically detect new cameras, disconnected cameras and state changes (such as changed camera status or changed IP address).
Removal of support
AMD compute devices/GPUs are no longer supported by the SDK, and will give an error message:
Nvidia GPUs and Intel GPUs are the supported compute devices.
AMD CPU’s can be used, as long as they are used with an Nvidia or Intel GPU.
User can opt in to run with an unsupported compute device, by setting the Config.yml option
ComputeDevice/AllowUnsupported
toyes
. However, such a setup may give unexpected results and errors, and is not tested by Zivid. See the knowledge base for more information.
Deprecation notice
Support for using Visual Studio 2017 is deprecated since 2.10.1, and will be removed in the next SDK release. We recommend to migrate to VS 2019 or newer.
Known issues & limitations
See https://support.zivid.com/latest/support/troubleshooting.html, especially Errata, for all known issues and limitations.
2.10.1
API
Added support for Zivid 2+ M60 and Zivid 2+ L110:
To learn more about Zivid 2+ M60, see https://www.zivid.com/zivid-2-plus-m60.
To learn more about Zivid 2+ L110, see https://www.zivid.com/zivid-2-plus-l110.
Zivid 2+ cameras only: It is now possible to disable the ContrastDistortion Correction filter when using the Stripe engine:
The CD Correction filter will smooth out edges, so disabling this filter can be useful to preserve edge detail.
Note: Zivid 2 and One+ cameras are unchanged, and still require this filter to be on when using Stripe engine.
Lowered the minimum possible value for
Settings::Processing::Filters::Cluster::Removal::MaxNeighborDistance
from 4 to 2. UsingMaxNeighborDistance
values below 4 can be useful to remove more bad points on certain scenes.Zivid 2+ cameras only: Reduced max Brightness setting when projecting white light from 2.5 to 2.2:
The maximum brightness for 2D captures and 3D capture with
Settings::Sampling::Pixel::all
is reduced from 2.5 to 2.2. An exception message will be thrown if you use brightness > 2.2.The default brightness for 2D capture in the API is changed from 2.5 to 2.2. The default for 3D capture remains at 2.5.
This change is done to make sure the 2+ cameras stay below 100W power usage when capturing. If your application allows more than 100W power consumption, you can remove this limitation and keep using 2.5 with the Config.yml option “Camera/Power/Limit”.
See https://support.zivid.com/en/latest/reference-articles/settings/acquisition-settings/projector-brightness.html for more info.
Updated Zivid 2 and Zivid 2+ firmware to version 1.18.4.
Bug fixes
Fixed a bug where Zivid 2 and 2+ could drop Ethernet packets and lose connectivity when not operating at 10 GbE.
Fixed a bug that could cause excessive point cloud smoothing when using the Contrast Distortion Correction filter with the Zivid 2+ M130.
Deprecation notice
Support for using Visual Studio 2017 is deprecated and will be removed in an upcoming SDK release:
Zivid recommends to transition to a newer Visual Studio version.
Support for using AMD compute devices/GPUs is deprecated 2.10.1 and will be removed in 2.11.0:
AMD compute devices are no longer supported due to low usage and OpenCL stability issues in the drivers.
Nvidia GPUs and Intel GPUs will be the supported compute devices.
It will be possible to opt in to run the SDK with an unsupported compute device, by enabling an option in the Config.yml file. However, such a setup may give unexpected results and errors, and is not tested by Zivid.
2.10.0
API
Added support for Zivid 2+ M130:
Zivid 2+ M130 provides higher resolution point clouds and 2D color images, improved colors and increased object coverage. To read more about this camera, see https://www.zivid.com/zivid-2-plus-m130.
Added new Omni vision engine for Zivid 2+:
Higher coverage on transparent and difficult objects. To read more about the Omni engine, see https://support.zivid.com/en/latest/reference-articles/settings/vision-engine/omni-engine.html.
Added
Settings::Sampling::Pixel::all/blueSubsample2x2/redSubsample2x2
for Zivid 2 and Zivid 2+:Controls the projection color and how pixels are sampled for point cloud processing.
blueSubsample2x2
/redSubsample2x2
will project blue or red light, and sample one quarter of the pixels. These options decrease capture time, memory usage, and resolution of the point cloud. It might also give better performance in ambient light and for shiny objects.The default for Zivid 2+ is
blueSubsample2x2
. Set toall
if you want a full resolution (5MP) point cloud.The default for Zivid 2 is
all
.If you are using an AMD GPU, see “New known issues in this release” section below for a known issue.
Added
Settings::Sampling::Color::rgb/disabled
for configuring color sampling:When set to
disabled
, color data will not be included in the PointCloud.disabled
optimizes capture speed.disabled
avoids separate white illumination inSettings::Sampling::Pixel
subsampling modes.The default is
rgb
.
Added
Settings::Processing::Filters::Noise::Suppression
:Reduces noise and outliers in the point cloud.
This filter can also be used to reduce ripple effects caused by inter-reflections.
Consider disabling this filter if you need to distinguish very fine details and thus need to avoid any smoothing effects.
Added
Settings::Processing::Filters::Noise::Repair
:Improves surface coverage by repairing regions of missing data due to noisy points.
Consider disabling this filter if you require all points in your point cloud to be of high confidence.
Added experimental
Zivid::Experimental::Projection
API to project a custom color image with the Zivid projector:Available for Zivid 2 and Zivid 2+ camera models.
Can illuminate with projector pixels that correspond to 3D points in your scene.
Extended the experimental intrinsics API to get intrinsics appropriate for a given
Settings
orSettings2D
:With the introduction of
Settings::Sampling::Pixel
, a single camera model can yield a variety of output resolutions. Use the new intrinsics functions to get intrinsics appropriate for your output resolution.The original function will yield intrinsics corresponding to the default
Settings
for the given camera model. See all default settings at https://support.zivid.com/en/latest/reference-articles/default-settings.html.
Added settings presets adapted to 50 Hz and 60 Hz ambient light sources.
Improved performance of the hole filling filter with larger
HoleSize
values:2X-4X faster on high-end hardware, and up to 15% faster on low-end hardware.
Speed improvement increases with larger
HoleSize
values, starting fromHoleSize
around 0.2-0.3.The filter might be slower, around 5-10ms, for small
HoleSize
values (around 0.1) and with high-end hardware.
Changed
CameraInfo::ModelName
string for Zivid 2 M70 and Zivid 2 L100 cameras:The model name for M70 changed from “Zivid Two” to “Zivid 2 M70”.
The model name for L100 changed from “Zivid Two L100” to “Zivid 2 L100”.
To programmatically check for camera model, we recommend to use the
CameraInfo::Model
enum.
Removed support for loading the FileCameraZividOne.zfc file camera. New file cameras are available at https://support.zivid.com/en/latest/academy/camera/file-camera.html
Updated Zivid 2 and Zivid 2+ firmware to version 1.17.1.
Removed support for Ubuntu 18.04.
C++
Added constructors to
Zivid::Image
to create an image from begin and end iterators/pointers.Added class
Zivid::PointXY
for representing a point in 2D space.Added global
begin
/end
/cbegin
/cend
iterator functions forZivid::Array2D
.
Bug fixes
Fixed a bug where
Frame::clone()
would perform a shallow copy (and not a deep copy) of the PointCloud data.Fixed a bug where the X and Y coordinate of a point could be NaN while Z was not NaN. This bug occurred with very low probability and only if the ContrastDistortion filter was enabled.
Studio
Added support for 2D capture.
Added option to enable Ambient Light Adaptation (50Hz/60Hz/Off) for settings presets.
User is now required to select a settings preset or the Capture Assistant, or change to Manual Mode, before the Capture button is enabled.
Fixed a bug where the visual position of a settings slider did not match the actual value that was displayed in the text box.
Removed information box that used to be displayed when selecting the Stripe Engine.
New known issues in this release
AMD GPU only: Capturing using multi-acquisition HDR with
Settings::Sampling::Pixel
set toblueSubsample2x2
orredSubsample2x2
, using Zivid 2 M70 or L100, will throw an “A Halide error occurred: Failed to execute pipeline” exception. See https://support.zivid.com/en/latest/support/failed-to-execute-pipeline.html for more info.See https://support.zivid.com/latest/support/troubleshooting.html, especially Errata, for all known issues and limitations.
2.9.0
API
Added cluster removal filter:
Removes small clusters and individual floating points from the point cloud. These can arise from reflections and partially occluded areas.
The
MaxNeighborDistance
setting controls how strict the algorithm is when grouping points. A low value will tend to remove sparse, noisy data, and planes of reflection as well. Use low values with caution to avoid removing useful data.The
MinArea
setting is specified in mm^2 and defines the minimum area a cluster has to have in order to be kept.The filter has a processing overhead of around 10ms on high-end Nvidia and AMD GPUs, and 75-225ms on Intel GPUs.
The filter is off by default.
Capture Assistant will turn this filter on.
Improved Gaussian filter:
The Gaussian filter will no longer create false planes between foreground and background edges, for example on the back/shadow side of objects. The new filter is also slightly better at preserving the large-scale three-dimensional shape of objects, for example the front-side edges of boxes.
On a noisy flat plane, the same value of the Sigma parameter will give approximately the same amount of smoothing as in the previous version of the filter.
Added Region of Interest:
A Region of Interest Box can be specified in the settings. All points outside of this box will be filtered away (set to NaN).
The box is specified by 3 points, O, A and B, that define two vectors, OA and OB. Together, point O and vectors OA and OB define a parallelogram. Two extent values are provided that defines how the parallelogram is extruded along its surface normal vector, to define a box.
A Depth (Z) range can also be specified. This will filter away all points with Z coordinate outside of this range.
Region of Interest does not reduce capture time or the amount of data in the point cloud.
Region of Interest adds a very small processing overhead.
Camera::capture()
function will now return shortly after the acquisition of images is complete.When
capture()
returns, all images have been acquired and the projector has stopped projecting patterns. At this point you can safely move the camera, move a robot into the workspace, or capture from a second camera that overlaps the same workspace. Note that there will still be remaining transfer of data and processing before the capture is finished and the point cloud is available.Calling
frame.pointCloud()
will block until the processing is done and the point cloud is available.For more information, see the API documentation for the
capture()
function.
Added a new experimental hole filling filter:
Hole filling interpolates missing values in the point cloud from its neighbors in a circular neighborhood.
HoleSize
defines the relative diameter of holes to fill. Increasing this will fill more points, but require more computation time. The maximum allowed hole size scales with distance, so that we allow filling larger holes at greater distances.Strictness
controls the level of strictness when considering if a point should be filled. A higher level of strictness requires a missing point to be surrounded by valid points on more sides in order to be filled. Increasing this will fill fewer points, but it will be less likely to fill gaps that are not circular, for example between two edges.The hole filling alters only the 3D points, leaving the SNR and color values unchanged.
See https://support.zivid.com/en/latest/reference-articles/settings/processing-settings/hole-filling-filter.html for more information.
Capture speed improvements:
The Gaussian smoothing filter is now faster. This is most noticeable on Intel GPUs, where the cost of enabling the filter with default Sigma is reduced from 20-30ms to 5-10ms. This effect is even stronger at higher Sigma values.
Processing when capturing with Stripe engine is now faster. This is most noticeable on Intel GPUs, where total Stripe engine capture time (acquisition + processing) is reduced by up to 15%.
The acquisition process on the Zivid Two has been optimized so that the total capture time (acquisition + processing) with default settings is reduced by about 10% regardless of GPU.
Temperature stabilization mode for Zivid Two is enabled by default and is no longer experimental.
In this mode, the camera will use more power when idling, to keep internal camera temperatures more consistent. The more consistent temperature decreases the difference in dimension trueness between high and low duty cycle capture periods.
Some yellow light will escape the projector when this mode is active.
This mode can be disabled using the configuration file. See https://support.zivid.com/en/latest/reference-articles/thermal-stabilization.html.
Added API for settings presets:
The presets are hand-tuned by Zivid, optimized for particular scenarios/use cases and for different camera models.
The presets are available in the namespace
Zivid::Presets
.Note: New presets can be added, and existing presets can be changed or removed completely in future SDK releases. We recommend to store the preset you want to use as a settings.yml file and then load that file directly, to avoid accidental changes in behavior in future SDK releases.
Added support for new file cameras based on Zivid One+ and Zivid Two:
To download these new file cameras, visit the knowledge base: https://support.zivid.com/en/latest/api-reference/samples/sample-data/file-camera.html
Zivid’s Customer Success team can help you make your own file cameras from .zdf captures with diagnostics enabled.
Support for the existing
FileCameraZividOne.zfc
file camera will be removed in the next SDK version.
Added support for infield correction/verification from stored .zdf files:
captureCalibrationBoard(Zivid::Camera &camera)
anddetectFeaturePoints(const Zivid::Frame &frame)
functions are added inZivid::Experimental::Calibration
.
Added filtering of points with negative Z value. These points are now set to NaN. Note that these points would with typical capture settings be filtered away anyway, usually by the noise or outlier filter.
Added function
Frame2D::cameraInfo()
to return theCameraInfo
object for the camera used to capture the frame.Added support for
ColorBGRA
output format to thePointCloud
andImage
classes.Added an exception message when loading .yml files that contain unrecognized/unknown YAML nodes. Previously these nodes would be ignored. Note that if you hit this exception, the problem can also be that the
__version__
data
node at the top of the .yml file needs to be incremented.Methods on the
Zivid::Camera
object can now safely be called from multiple threads at the same time, for example by usingstd::async
. Under the hood, the function calls are put in a per-camera queue and executed in sequence. Note that you must still list cameras, connect to cameras and do firmware upgrades from the same thread, as these operations are not thread safe.The default value for
Settings::Processing::Filters::Reflection::Removal::Enabled
is changed fromfalse
totrue
for all Zivid One+ camera models. If you use Zivid One+, and you want to capture without the reflection filter, make sure this setting is set tofalse
(orno
in the .yml file).Updated Zivid Two firmware to version 1.14.7.
Ubuntu 18.04 is End Of Life on April 30, 2023. Support for Ubuntu 18.04 is deprecated in this SDK release and will be removed in the next release.
C++
The constructor of
Zivid::Range
will now throw an exception if the minimum value is larger than the maximum value.
Bug fixes
Linux: Fixed a bug where libZividCore.so exported weak symbols from third party libraries like boost and asio. This could cause dynamic linking issues for users who were also using these libraries.
New known issue in this release
When using Nvidia driver 510 and capturing with two or more cameras back-to-back, on occasion incorrect patterns/stripes can be seen in the upper parts of the point cloud. This issue has only been seen on this Nvidia driver version. We recommend using a different Nvidia driver version if you capture with multiple cameras. Drivers 470, 515 and 525 have been tested and are working well. This issue is not visible if you only use one camera.
See https://support.zivid.com/latest/support/troubleshooting.html, especially Errata, for all known issues and limitations.
Studio
Added Infield Correction/Verification Wizard under the
Tools
menu.Added settings presets. The presets are visible in the selection box under the
Assisted
tab in theCapture
box.Added a point picker icon under the Region of Interest Box settings to select a point from the depth/color/snr/normal maps.
Added a button to show/hide Region of Interest Box wireframe.
Added Help button on the right side panel when no cameras are found. The Help button goes to the knowledge base.
The “Enable Required Filters” button for Stripe engine will now also set reflection removal filter mode to
global
.Fixed a bug where clicking the “Start Firmware Update” button quickly more than once could cause a “The camera firmware is already up to date” error after the update finished.
Clicking an input field in the settings tree will now automatically select the text.
Improved tooltips for many buttons, selection boxes and other UI elements.
2.8.1
API
The
ZividExperimentalHandEyeCalibration
CLI tool can now readZivid::Matrix4x4
YAML files saved from the Zivid SDK. The tool can still read the older OpenCV YAML file format used in previous SDK releases. If the--transform-file
argument is provided, the tool will save the hand-eye calibration transform using the same file format as the input files.
Bug fixes
Fixed a debug assert that would occur when capturing with Zivid Two on Windows in Debug mode. This bug was introduced in SDK 2.8.0.
Fixed a bug in HDR capture where the color image could contain strange artifacts when combining a very dark and a very bright acquisition. This bug was introduced in SDK 2.7.0.
Fixed a bug where old log files would not be deleted even if the size of the log directory was above the
MaxTotalSizeMB
configuration (default 1000MB). Log files would still be deleted when they become older than theHistorySize
configuration (default 30 days), and for a single process the logs would not take more thanMaxFileSizeMB * (1 + RotationCount)
MB (default 50MB*3 = 150MB). This bug was introduced in SDK 2.7.0.Fixed an issue where an “Unknown product number ‘’” error could occur when discovering Zivid Two cameras. This bug was introduced in SDK 2.8.0.
Studio
Studio: Fixed a “Cannot assign [undefined] to double” error that could occur when dragging sliders in Studio using a touchpad.
2.8.0
API
Improved capture speed of Zivid Two:
The amount of data transferred from the Zivid Two to the PC for each acquisition is reduced. This improves capture speed when the network link is the bottleneck, for example when using less than 10Gbps connection between the camera and the PC, or when capturing with several cameras simultaneously.
Zivid Two can now acquire all images in an HDR sequence right after each other. Previously, the camera would wait for all images in one acquisition to be transferred back to the PC, before the next acquisition would start. This improves the capture speed of HDR captures and gives shorter and more predictable acquisition time that is independent of the network speed. Note that when Brightness setting is above 1.0, the thermal safety mechanism can still cause pauses in acquisition. For more information, see: https://support.zivid.com/en/latest/reference-articles/settings/acquisition-settings/projector-brightness.html.
The capture speed with 1Gbps connection is improved by 1.5x to 2.5x. With 10Gbps connection, the capture speed is improved by 5%-50% on Windows, and 0%-15% on Linux. The biggest percentage-wise improvement can be seen when using HDR and/or the Stripe engine.
The capture speed when capturing with multiple Zivid Two cameras at the same time over a congested network link is improved. For example, the capture speed for 3-acquisition HDR on 3 cameras simultaneously using a 1Gbps switch is improved by 2.5x to 3x.
Added support for automatic discovery of Zivid Two:
The SDK will now search for available Zivid Two cameras on the network using Multicast DNS protocol. The cameras that are discovered and are reachable will be visible via the SDK and in Zivid Studio.
If a
Cameras.yml
file is present in the Zivid configuration folder, then only the IPs/hostnames listed in that file will be visible in the SDK, and auto-discovery will not be performed.The camera must be updated to the newest firmware version (FW 1.9.6, included in SDK 2.8, or newer), before it can be discovered.
See https://support.zivid.com/en/latest/getting-started/software-installation/zivid-two-network-configuration.html for more information.
Added save and load methods to the
Matrix4x4
class.Added support for saving
Image
objects to JPG and BMP format.Added support for Ubuntu 22.04.
Added support for Zivid Two L100.
The
Camera::closeAperture()
method call previously had no effect on Zivid Two. This method will now throw an exception stating that this feature is not supported on Zivid Two.Updated Zivid Two firmware to version 1.9.6.
C++
Added
begin
,end
,cbegin
andcend
methods to theArray2D
class.
Windows
Added a compilation error if using static runtime library with Visual Studio. Zivid SDK must be built with the dynamic runtime library, option /MD or /MDd. This can be configured under “C/C++” -> “Code Generation” -> “Runtime Library” in your Visual Studio project.
Bug fixes
Zivid Two only: Fixed an issue with incorrect color balance calculation.
The color balance factors was incorrectly applied in the color image.
This issue would only occur if you had set any color balance setting higher than the default of 1.0.
For more information, see the knowledge base: https://support.zivid.com/en/latest/support/color-inconsistency-after-sdk-update.html.
Zivid Two only: Fixed an issue where a firmware update can time out and fail due to slow network upload speed.
Studio
Added Signal-to-noise ratio (SNR) map.
Added Normal map.
Added dropdown menu in the upper left corner to switch between different views.
Added dropdown menu in the top of the 3D view to select the point size.
Added shortcuts 1 to 5 to select between different views.
Adjusted the design of the footer preview images to avoid occluding the text in the footer bar.
Known issues & limitations
See https://support.zivid.com/latest/support/troubleshooting.html, especially Errata, for all known issues and limitations.
2.7.0
API
Added new experimental Local mode of the Reflection filter:
A new setting
Settings::Processing::Filters::Reflection::Removal::Experimental::Mode
is added to select mode, which can belocal
orglobal
.global
corresponds to the old reflection filter and is the default value.Local mode preserves more 3D data on thin objects, generally removes more reflection artifacts and processes faster than the Global mode.
Global mode is generally better at removing outlier points in the point cloud.
Local mode is experimental and can be changed in future releases.
Added a new setting
Settings::Processing::Color::Experimental::Mode
:This setting has three options:
automatic
,toneMapping
anduseFirstAcquisition
.automatic
mode is the default and corresponds to the previous default behavior of the SDK. This mode is equal touseFirstAcquisition
for single-captures andtoneMapping
for HDR captures.useFirstAcquisition
will always use the color data from only the first acquisition that was provided in Settings. This mode can be used for both single-acquisition and multi-acquisition HDR captures. This mode provides more fine-tuned control of the colors thantoneMapping
, and provides stable color output even when the contents of the scene changes.toneMapping
combines the color data from all the acquisitions to create one merged and normalized color image.This new setting replaces the existing
Settings::Processing::Color::Experimental::ToneMapping::Enabled
setting, which was added in SDK 2.3.0.For more information, see the documentation for
Settings::Processing::Color::Experimental::Mode
.
Zivid Two: Added new experimental mode for keeping internal camera temperatures stable between captures.
This option may also be used for faster warmup of the camera.
For more information about how to enable this feature, see the knowledge base: https://support.zivid.com/latest/reference-articles/thermal-stabilization.html
Zivid Two: Added support for name queries ending with the .local label using Multicast DNS.
Added
pose
method to theDetectionResult
class that returns the pose of the calibration board.Added
inverse
method to theMatrix4x4
class that returns the inverted matrix.Zivid One+: Improved processing of pixels that are immediately to the left or the right of pixels with no signal (for example over-saturated pixels) when using the Phase engine. These pixels could previously cause a small amount of floating points in regions containing no-signal pixels.
Zivid One+: Improved filtering of pixels that cannot be reliably decoded within the Phase engine pattern. These pixels could previously show up as floating points if Noise and Outlier filter is turned off, mostly in regions with low signal. Similar filtering was already present for Zivid Two.
Added support for newer AMD GPUs:
AMD cards with RDNA architecture would give an error on previous SDK versions, but are now supported.
AMD RDNA cards (such as RX5500 and RX5700) can be unstable on Ubuntu depending on the installed GPU driver version and OS version. We recommend to test stability carefully with your setup if you use these models.
Improved capture speed when using the Stripe engine:
Around 3%-12% improvement measured on high-end Nvidia GPU, and 5%-15% improvement on Intel integrated GPU. Most percentage-wise improvement when capturing with HDR.
Improved capture speed when using HDR captures with Phase engine:
Improvements from 2% to 12% measured on a high-end Nvidia. Similar improvements on low-end Intel integrated GPUs, while high-end integrated Intel GPUs have similar performance to SDK 2.6.
Highest percentage improvement on shorter HDR sequences.
Degraded capture speed for single-acquisition capture with Phase engine when using Intel driver:
Capture time increased by 5% to 15% compared to SDK 2.6, depending on settings. Most percentage-wise degradation when enabling many filters.
This does not apply to Stripe engine or HDR captures, see points above.
Improved processing time for normals by about 50%:
Typical processing time for calculating normals for a full resolution point cloud is now about 5-20 ms on an Nvidia GPU, and 15-40 ms on an integrated Intel GPU, depending on the performance of the GPU.
Changed to using new GPU compute framework internally.
The connection time to the camera is increased, due to initialization of the compute pipeline:
The first time a camera is connected to in a process can take 6-10 seconds longer than in SDK 2.6.
This increase in connection time will only happen once per camera model, per
Zivid::Application
object.
Added cloud connected logging to improve product quality and customer service experience:
Data is collected anonymously.
For more information about this feature, see the knowledge base: https://support.zivid.com/latest/reference-articles/zivid-cloud-logging.html
Added better error message if a
Zivid::Application
object is created when one already exists.Using multiple Zivid One+ cameras at the same time is now non-experimental:
For more information about how to use multiple cameras, and known limitations, visit the knowledge base: https://support.zivid.com/latest/academy/camera/multiple-zivid-cameras.html
Updated Zivid Two firmware to version 1.7.4.
Removed the experimental setting
Settings::Processing::Color::Experimental::ToneMapping::Enabled
:This setting is replaced by
Settings::Processing::Color::Experimental::Mode
(see point above).
Removed support for Ubuntu 16.04.
C++
Added const overloads of the
begin
andend
member functions for theMatrix4x4
class.
.NET
Added a new
Matrix4x4
class to .NET wrapper, corresponding to the class with the same name in C++ API.The
Matrix4x4
constructor takes as input a 2D .NET array.Matrix4x4
provides anInverse
method that returns the inverted matrix.Matrix4x4
provides aToArray
method that returns a 2D .NET array.
Added a
Transform
method overload to thePointCloud
class that takes aMatrix4x4
as argument.
Bug fixes
Fixed a memory leak in
Zivid::Application
destructor, which could cause out-of-memory errors when making many applications sequentially within the same process.Fixed a bug where user could get an “An OpenCL error occurred: Failed to read buffer” when using the
Visualizer
class with an Intel GPU on Ubuntu.Fixed a bug with AMD GPUs where capturing with HDR would return inconsistent results across different captures.
Fixed a bug with AMD GPUs where the application could crash after a few number of captures.
Fixed a bug where the
estimateIntrinsics
function in some cases would return suboptimal intrinsics parameters.Zivid Two: fixed a TCP/IP multicast security vulnerability where the camera responds to a TCP connection with an invalid source address (RFC 1122 ch. 4.2.3.10).
Studio
Fixed a bug where the user could get an “OpenGL error: GL_INVALID_OPERATION” when capturing when using an Intel GPU on Ubuntu.
Fixed a bug on Ubuntu where the “Open Frame” file dialog could be unresponsive/frozen.
Added a “Move to top” action under the “…” context menu under each Acquisition on the right side panel.
Known issues & limitations
See https://support.zivid.com/latest/support/troubleshooting.html, especially Errata, for all known issues and limitations.
2.6.1
Bug fixes
Fixed a bug on Windows where loading a .zdf file with non-ASCII characters in the file name would throw a “Failed to load frame from file” exception.
Fixed an issue where the SDK used too strict limits when checking the validity of a Pose transformation matrix, which could cause an exception during hand-eye or multi-camera calibration.
Fixed an unintended change in color output introduced in SDK 2.6.0 when performing a HDR capture with identical acquisition settings:
In SDK 2.5.0 and earlier, when doing a HDR capture using the same acquisition settings for all the acquisitions in the HDR, the output color image would not be tone mapped. In SDK 2.6.0 an unintended change in behavior caused the color image to be tone mapped in this scenario. In SDK 2.6.1 this change is reverted, to be consistent with the behavior in SDK 2.5.0 and earlier.
Note that tone mapping can be turned on explicitly, by setting
Settings::Processing::Color::Experimental::ToneMapping::Enabled
toalways
.
2.6.0
API
Added Diagnostics::Enabled to Settings:
When Diagnostics is enabled, extra diagnostics and debugging information is collected during capture. This information will be saved in the
.zdf
file, and can be used by Zivid’s support team to troubleshoot issues and provide better assistance.Enabling Diagnostics increases the capture time and the RAM usage, and the size of the
.zdf
file.It is recommended to enable Diagnostics only when reporting issues to Zivid’s support team.
Zivid One+ only: Important product lifetime improvement: Fixed an issue where a Zivid One+ camera can end up with a damaged projector if powered on for weeks before the first capture is triggered from the application.
Zivid One+ only: Removed time penalty when switching between 3D capture and 2D capture if the 2D capture uses brightness 0.
Improved capture speed with Stripe engine:
5% to 15% capture speed improvement measured using NVIDIA GPUs.
Using a fast CPU and a slow GPU (for example Intel integrated GPU) will have about the same or slightly worse performance (1%-5% worse) compared to 2.5.
Added CPU Model, ComputeDevice Model, ComputeDevice Vendor and OperatingSystem to the FrameInfo class.
Added support for rotation of the calibration board for in-field correction/verification. The board can now be oriented 0, 90, 180 or 270 degrees (+/- 15 degrees) from the perspective of the camera.
Improved robustness of the checkerboard detection algorithm, used for calibration and in-field correction/verification, in cases of significant reflections or glare from the calibration board.
Improved the command line experience when verifying in-field correction with
ZividInfieldCorrection
:Verification can now be repeated without having to reconnect to the camera.
Verification also provides a statistical summary of dimension trueness measurements.
Improved the exception message when trying to save files to nonexistent directories.
Constructing a
Frame
object from a.zdf
file saved using SDK 1.x and re-saving thatFrame
object to a.zdf
file is no longer supported, and will throw an exception.The underlying format of
.zdf
files has changed in this release:If a
.zdf
file from 2.6.0 or newer is opened in SDK 2.5.0 or older, the SDK will throw an exception with message “Failed to load frame from file”.Older
.zdf
files can still be loaded using the API or Zivid Studio.
Updated Zivid One+ firmware to version 1.9.2.
Updated Zivid Two firmware to version 1.6.0.
Support for Ubuntu 16.04 is deprecated and will be removed from SDK 2.7.
C++
The
<Zivid/Zivid.h>
header will no longer include Experimental header files. Experimental header files must be included explicitly.
Studio
Fixed a bug where the 3D point cloud could become flipped upside-down when scrolling the mouse wheel rapidly.
Known issues and current limitations
See https://support.zivid.com/latest/support/troubleshooting.html, especially Errata, for known issues and current limitations.
2.5.0
API
Added support for normals.
Normals can be calculated from the PointCloud object using
copyNormalsXYZ()
. This returns a 2D array of unit normal vectors for each point in the point cloud.
Added
Model
enumeration to theCameraInfo
class. This enumeration can be used to differentiate between camera models; Zivid One+ Small/Medium/Large and Zivid Two.Added support for exporting organized point cloud to .pcd format (with correct WIDTH and HEIGHT attribute). To enable this fix you must opt in using the Config.yml file. Set the config value APIBreakingBugFixes / FileFormats / PCD / UseOrganizedFormat to
true
. For example of how to write and use a Config.yml file, see https://support.zivid.com/latest/academy/getting-started/zivid-software-installation/gpu/select-specific-gpu-for-zivid-software.htmlPerformance improvement for the “Stripe” vision engine. The improvement is between 2% and 10% depending on GPU type.
Removed support for early engineering samples (revision A) of Zivid Two.
Updated Zivid One+ firmware to version 1.8.8.
Updated Zivid Two firmware to version 1.5.2.
Support for Ubuntu 16.04 is deprecated and will be removed from the SDK around April 2022.
C++
Added experimental method
Zivid::Experimental::SettingsInfo::resolution()
to query the point cloud resolution given a Settings object and a CameraInfo object.
Bug fixes
Fixed a crash that could occur in the GenICam driver if the physical connection to the camera was lost in the middle of the GenICam camera connection process.
Fixed a crash that could occur during shutdown of the program if the Zivid::Application was stored in a static variable.
Fixed an issue where a process using Zivid SDK might be stuck forever during shutdown if it received a SIGTERM/SIGILL or similar signal.
Fixed a small memory leak when calling
Camera::connect()
when using Zivid One+ cameras.
Studio
Added support for depth map coloring of points in the 3D point cloud view. Press “D” to toggle this mode on and off.
Added support for opening .zdf and .yml files by dragging and dropping them onto the Zivid Studio window.
Fixed an issue where expanding the main right panel by dragging its edge to the left would incorrectly collapse the Information Panel, if the Information Panel was open.
Current limitations for Zivid Two
Direct connection between Zivid Two and a dedicated 10Gb PCI-Express network card is recommended for optimal performance. A Thunderbolt 3 external network adapter connected to a Thunderbolt 3 port offers similar performance to a dedicated PCI-express card. USB-based network adapters can occasionally give errors when using the camera, and has reduced and more variable capture speeds.
Known issues
Zivid Two only: If the PC process is aborted non-cleanly (for example via a SIGINT, SIGABRT or similar) when connected to a Zivid Two, such that the TCP connection between the camera and the PC is not closed properly, the camera will power cycle when it detects that the network connection is down (typically within 15 seconds).
On rare occasions, the camera may not properly detect that the connection to the PC process has been killed. The camera will then continuously reject new connections from the SDK, which will make the camera not visible from the SDK. In this scenario the camera must be power-cycled manually.
Zivid Two only: On very rare occasions a “Command failed: CameraImageTimeout” exception may be thrown during capture. This will resolve itself on the next capture.
Zivid Two only: Capture time on Windows can occasionally be longer (more than 1 second longer than normal) due to Ethernet packet loss leading to data re-transmits. We recommend to increase “Receive Buffers” and “Transmit Buffers” in the network driver settings in Windows to reduce the occurrence of packet loss.
Capture time can be higher on Windows compared to Linux for identical hardware. The difference is larger for low exposure times, and lower for higher exposure times. The relative difference between Windows and Linux on identical hardware is higher when using Zivid Two, compared to using Zivid One+.
Ubuntu 20.04 only: When using Linux 5.8 kernel (released with Ubuntu 20.04.2 when using the newer HWE kernels), with an Intel GPU as rendering device, Zivid Studio and Visualizer can give errors like “CL_OUT_OF_RESOURCES” and “OpenGL error: GL_INVALID_OPERATION” when displaying the point cloud. To avoid this issue, use Linux kernel 5.4, which is the LTS (stable) base Linux kernel for Ubuntu 20.04.
2.4.2
Bug fixes
Fixed an issue that prevented the user from being able to replace libusb (used internally by the SDK) with their own version.
2.4.1
Bug fixes
Zivid Two with calibration model 2.1 only: Fixed a bug on Windows in Debug mode where capturing would throw an “Assertion Failed” exception.
2.4.0
API
Added support for the experimental “Stripe” vision engine for Zivid Two.
Added support for calibration model 2.1 for Zivid Two. Calibration model 2.1 further improves the accuracy of the Zivid Two camera.
Added support for using multiple Zivid Two cameras.
This feature has been tested using up to four Zivid Two cameras simultaneously from one PC.
Multiple cameras can be used simultaneously, however, each individual camera should not be used from several threads at the same time. Connecting to the cameras via the SDK must be done in sequence.
For more information about how to set up multiple cameras, visit the knowledge base: https://support.zivid.com/latest/academy/camera/multiple-zivid-cameras.html
Added ZividNetworkCameraConfigurator CLI tool to change the network settings of a Zivid Two camera.
The camera can be configured in static IP mode or DHCP mode.
For more information about how to use this tool, and how to configure the SDK to connect to your custom IP or hostname, visit the knowledge base: https://support.zivid.com/latest/academy/getting-started/zivid-software-installation/zivid-two-network-configuration.html#custom-ip-configuration
Improved point cloud accuracy when using camera outside of temperature specification. Automatically applies to any Zivid One+ or Zivid Two camera.
Improved hand-eye calibration accuracy in both eye-in-hand and eye-to-hand configurations.
Improved Zivid Two network performance in cases of network packet loss.
Improved Zivid Two projector longevity at high operating temperatures.
Improved Zivid Two capture time when using exposure time 10000 microseconds and above.
Updated Zivid One+ firmware to version 1.8.7.
Updated Zivid Two firmware to version 1.4.1.
Removed support for the original Zivid One camera. (Note: this does not apply to Zivid One Plus cameras.)
Studio
Fixed an issue where switching back and forth between two or more cameras could give an error when connecting to the camera.
Bug fixes
Fixed a crash that could occur during destruction of very short-lived Zivid::Application objects.
Fixed an issue on AMD compute devices when capturing with all filters disabled, where invalid points would be marked as “inf” instead of NaN.
Fixed an issue where Stripe Engine could cause a SIGILL on Linux when run on CPUs without features such as AVX.
Fixed an issue on Stripe Engine where the signal-to-noise ratio could contain NaN values.
Zivid One Plus only: Fixed a bug introduced in SDK 2.2 that caused excessive current consumption during boot.
Zivid One Plus Revision C only: Fixed an issue where the status LED on the back of the camera was red during normal operation.
Zivid Two only: Fixed an issue where the first captured point cloud after a firmware upgrade could contain stripes of missing/wrong 3D data.
Zivid Two only: Fixed too short timeout when using DHCP to obtain an IP address. The short timeout could cause the camera to fall back to a link-local IP address before the DHCP process could complete.
Zivid Two only: Fixed a race-condition issue, particularly prominent in the presence of network delay, where the SDK would fail to connect to the camera.
Zivid Two only: Fixed an issue which could cause the fans to run at excessively high RPM.
Zivid Two only: Fixed an issue where unsent data on the camera could potentially be overwritten with new/wrong data.
Current limitations for Zivid Two
Direct connection between Zivid Two and a dedicated 10Gb PCI-Express network card is recommended for optimal performance. A Thunderbolt 3 external network adapter connected to a Thunderbolt 3 port offers similar performance to a dedicated PCI-express card. USB-based network adapters can occasionally give errors when using the camera, and has reduced and more variable capture speeds.
Known issues
Zivid Two only: If the PC process is aborted non-cleanly (for example via a SIGINT, SIGABRT or similar) when connected to a Zivid Two, such that the TCP connection between the camera and the PC is not closed properly, the camera will power cycle when it detects that the network connection is down (typically within 15 seconds).
On rare occasions, the camera may not properly detect that the connection to the PC process has been killed. The camera will then continuously reject new connections from the SDK, which will make the camera not visible from the SDK. In this scenario the camera must be power-cycled manually.
Zivid Two only: On very rare occasions a “Command failed: CameraImageTimeout” exception may be thrown during capture. This will resolve itself on the next capture.
Zivid Two only: Capture time on Windows can occasionally be longer (more than 1 second longer than normal) due to Ethernet packet loss leading to data re-transmits. We recommend to increase “Receive Buffers” and “Transmit Buffers” in the network driver settings in Windows to reduce the occurrence of packet loss.
Capture time can be higher on Windows compared to Linux for identical hardware. The difference is larger for low exposure times, and lower for higher exposure times. The relative difference between Windows and Linux on identical hardware is higher when using Zivid Two, compared to using Zivid One+.
Ubuntu 20.04 only: When using Linux 5.8 kernel (released with Ubuntu 20.04.2 when using the newer HWE kernels), with an Intel GPU as rendering device, Zivid Studio and Visualizer can give errors like “CL_OUT_OF_RESOURCES” and “OpenGL error: GL_INVALID_OPERATION” when displaying the point cloud. To avoid this issue, use Linux kernel 5.4, which is the LTS (stable) base Linux kernel for Ubuntu 20.04.
2.3.0
API
Added support for the Zivid Two camera.
Improved speed of the experimental “Stripe” vision engine.
Added official support for Ubuntu 20.04.
Improved experimental In-field Correction:
Improved algorithm in order to yield better post-correction accuracy in some cases.
Fixed issue where users would get an exception with “No significant correction could be identified (noise >> signal).” even though the input data was actually sufficient to calculate a correction.
Improved robustness of the checkerboard detection used in the calibration API and in-field correction.
Increased maximum values for color balance settings from 2.0 to 8.0.
Added experimental setting
Settings::Processing::Color::Experimental::ToneMapping::Enabled
. This setting controls if tone mapping is performed on all 3D captures (single and HDR captures), or only for HDR captures.Reduced noise in dark/underexposed regions of the color image for 3D captures, especially with tone mapping enabled and/or gamma below 1.
AMD is no longer supported on Ubuntu 16.04. (AMD dropped support for Ubuntu 16.04 as of Radeon Software for Linux 18.50.)
Support for the original Zivid One camera is deprecated, and will be removed in Zivid 2.4. (Note: This only concerns the Zivid One camera, Zivid One Plus is still supported.)
Studio
Added option to the Information panel for saving frame settings to file.
Improved the look of file dialogs on Ubuntu.
Fixed issue where 2D images could be flipped upside down in Zivid Studio when scrolling the mouse wheel rapidly under high CPU load.
Bug fixes
Fixed issue where one would get the error “Failed to check if block 0 in the EEPROM master table is occupied” when attempting to connect to a Zivid One+ camera.
Signal-to-noise ratio (SNR) for Stripe engine has been corrected and is now comparable to SNR for the Phase engine.
The improved SNR calculation means that the noise filter now has a closer correspondence in behavior for the two engines.
Noteworthy changes in this release
A small performance degradation in 3D capture time compared to 2.2 may be observed when using weaker compute devices, such as certain weaker Intel integrated GPUs or CPUs. The performance degradation for such devices is typically from 1% to 6% depending on the compute device and the capture settings.
Current limitations for Zivid Two
Experimental “Stripe” vision engine not yet supported.
Only a single Zivid Two may be connected to a PC at a time.
The network configuration of Zivid Two can not be customized.
Direct connection between Zivid Two and a dedicated 10Gb PCI-Express network card is recommended for optimal performance. A Thunderbolt 3 external network adapter connected to a Thunderbolt 3 port offers similar performance to a dedicated PCI-express card. USB-based network adapters can give capture errors and limit capture speeds, and are not recommended for this release.
Known issues
Capture time can be higher on Windows compared to Linux for identical hardware. The difference is larger for low exposure times, and lower for higher exposure times. The relative difference between Windows and Linux on identical hardware is higher when using Zivid Two, compared to using Zivid One or One+.
Zivid Two only: Occasionally, on the very first capture after a firmware upgrade is finished, the point cloud output can be wrong. This will be visible as lines of wrong/missing data in the point cloud. This issue will resolve itself on the following capture.
Zivid Two only: Occasionally, if capturing after a firmware upgrade of the camera was completed, a “Camera not connected” or similar exception may be thrown. This issue will resolve itself when re-connecting to the camera.
Zivid Two Only: Capture time on Windows can occasionally be longer (more than 1 second longer than normal) due to Ethernet packet loss leading to data re-transmits.
Zivid Two only: On very rare occasions a “Command failed: CameraImageTimeout” exception may be thrown during capture. This will resolve itself on the next capture.
Zivid Two only: Very rarely the network link between the camera and client might go down, resulting in a timeout. However, the link will be automatically restored and the user can catch the
Zivid::Exception
and reconnect to the camera without manual intervention.Ubuntu 20.04 only: When using Linux 5.8 kernel (released with Ubuntu 20.04.2 when using the newer HWE kernels), with an Intel GPU as rendering device, Zivid Studio and Visualizer can give errors like “CL_OUT_OF_RESOURCES” and “OpenGL error: GL_INVALID_OPERATION” when displaying the point cloud. To avoid this issue, use Linux kernel 5.4, which is the LTS (stable) base Linux kernel for Ubuntu 20.04.
2.2.0
API
New, experimental Zivid Vision Engine added, called Stripe:
The original and default Zivid Vision Engine is named Phase.
New
Settings::Experimental::Engine
added to specify which Zivid Vision Engine to use.The Stripe Engine suppresses inter-reflection artifacts and improves data quality on shiny objects like cylinders and chrome-plated parts.
Additional acquisition and processing time are required for the Stripe Engine.
Both the Reflection Removal Filter and the Contrast Distortion Correction filter must be enabled when using the Stripe engine. This may change in the future.
Note that due to a known bug in our GenICam wrappers, if the Reflection Removal and Contrast Distortion Correction filters are not enabled, the call will hang instead of reporting an error.
The Stripe Engine is currently experimental, and may be changed and improved in the future.
The Stripe Engine is only supported on Zivid One Plus (not Zivid One)
Extended the Calibration API to support the new line of official Zivid calibration boards, the first of which being the ZVD-CB01 (7x8 30mm). This board can now be used with the existing hand-eye and multi-camera calibration features without modification to client code. It can also be used with the new In-field Correction feature (see below).
Added the new experimental In-field Correction API. Together with the new ZVD-CB01 calibration board, this allows the user to perform both verification and correction of a camera’s dimension trueness. The API has the following functions:
verifyCamera
: Based on a single calibration board capture, quantify a camera’s local dimension trueness.computeCameraCorrection
: Based on one or more calibration board captures, compute a correction that may be applied to a camera in order to improve its dimension trueness. This function also computes a confidence interval for the trueness that can be expected if the correction is applied.writeCameraCorrection
: Write a correction to a camera. The correction will persist on the camera even though the camera is power-cycled or connected to a different PC. After calling this function, the given correction will automatically be used any time the capture function is called on this camera.resetCameraCorrection
: Reset a camera’s correction to factory default.hasCameraCorrection
: Check if a camera has a non-default correction.cameraCorrectionTimestamp
: Check when the current correction was written to a camera.See the API documentation for a more detailed description.
Added the command-line tool
ZividExperimentalInfieldCorrection
. This tool enables users to easily perform core tasks from the new In-field Correction API without needing to write code. Use the commandZividExperimentalInfieldCorrection --help
to see instructions for use. Note: On Linux, this tool comes as part of thezivid-tools
package, not the core installer.Added Gamma setting. Gamma can be used to brighten or darken the colors of the point cloud using a gamma curve.
Updated Zivid One+ firmware to version 1.8.4.
Studio
Added a new Information side panel:
This panel contains information about the current frame / point cloud, including the settings that were used, the resolution of the point cloud, as well as the capture time.
The capture time is defined as the time it takes from capture is initiated until all processing is completed and the point cloud data is available on the compute device.
When opening a .zdf file the side panel displays the camera’s serial number and model name used to capture this frame, as well as the Zivid SDK version.
This new side panel can be displayed by clicking “Information” in the lower right corner, via the “View” menu, and via the shortcut “Shift+I”.
Added support for the new Stripe engine.
Added option to the “View” menu to disable resetting of the point cloud view when opening a .zdf file.
Added “M” as a shortcut for meshing.
Added tab buttons to more easily switch between Assisted Mode and Manual Mode.
Fixed Depth and Color image views being reset if the window size changes.
Adjusted colors, sizes and paddings various places in the GUI.
Bug fixes
Linux
Fixed a crash that could occur after subsequent exceptions from the
capture()
function. If one exception had previously been thrown fromcapture()
, then if another failure occurred then the system could crash instead of throwing another exception. This crash would only happen when using the Ubuntu 16.04 packages.
Windows
Fixed an issue that would trigger a false positive malware alert on some antivirus software.
.NET
Fixed a bug where calling
.Dispose()
multiple times on the same object could cause aSystem.AccessViolationException
.
Firmware
Fixed an issue where firmware could hang after a long period of time
2.1.0
API
Added downsampling functionality to the
PointCloud
class:Downsampling can be used to reduce the size of the point cloud, in order to perform computations on a smaller number of points.
Downsampling combines an NxN region of pixels in the original point cloud to one pixel in the downsampled point cloud. 2x2, 3x3 and 4x4 downsampling options are available.
Downsampling is performed in a way that reduces the noise of the points by averaging them weighted by SNR^2, ignoring invalid (NaN) points. Downsampling is performed on the compute device.
CameraInfo
is now available in theFrame
class.CameraInfo
contains among other things the serial number and model name of the camera used to capture the frame.Fixed an issue where connecting to a camera would throw an exception with message “Failed to set pixel format (CAM_API_STS_NOT_WRITABLE).”
Updated Zivid One+ firmware to version 1.7.4:
Fixed a bug where the camera could potentially stop responding.
C++
Numerical values in
Settings
andSettings2D
(such asExposureTime
,Aperture
etc.) can now be compared usingoperator<
andoperator>
.
.NET
PointCloud.Transform
now returns a reference to itself, such thatTransform
,Downsample
etc. can be chained together.
Studio
Added “mm” as unit in the Depth Image view.
2.0.0
API
New
Settings
/Settings2D
/Capture
API:A single
Settings
object now contains all information necessary for a capture.Settings
contains one or more acquisitions, plus processing settings like filters and color balance. When more than one acquisition is provided HDR capture is performed, and the combined frame is returned.The
Settings
object is now provided directly as an argument to the capture method on theCamera
.The separate 2D capture method on
Camera
is removed. 2D capture is now performed by passing aSettings2D
to the capture method.The user may specify as few or as many parts of
Settings
orSettings2D
as desired. When capturing, any settings which are not explicitly specified will use camera-specific default values.
New point-cloud API:
A call to the capture method returns a
Frame
, which provides a handle to aPointCloud
. ThePointCloud
object is a handle to the point-cloud still stored on the GPU, and specific data may then be copied to CPU memory when desired through various methods ofPointCloud
.The
PointCloud
allows copying of the following data-formats:PointXYZ
PointXYZW
PointZ
ColorRGBA
PointXYZColorRGBA
PointXYZColorBGRA
SNR
PointCloud
functionality replaces the oldDeviceCloud
, which no longer exists.
New
ContrastDistortion
filter:This filter has the ability to correct and/or remove points that have been distorted due to very strong intensity gradients. This is applicable for shiny/reflective objects as well as diffuse objects with e.g. sudden changes from white to black.
This filter is considered experimental, and may change in future releases.
New multi-camera calibration:
Part of the new
Calibration
namespace, together with hand-eye calibration.Multi-camera calibration is used in a multi-camera setup to find the pose of secondary cameras in the frame of a designated primary camera, e.g. to combine points clouds into a single frame of reference.
GPU-accelerated point-cloud transforms:
Through the transform method of
PointCloud
the user may now perform in-place GPU-accelerated transformation of the point-cloud’s 3D coordinates. Such a transform, provided in the form of a 4x4 matrix, may come from the functions of theCalibration
namespace, or they could be any user-defined transform.
New
Aperture
setting:Introducing the
Aperture
setting, which replaces the oldIris
setting.This is a floating-point number with units of F-number. The API supports values in the range [1.4 - 32].
On capture the camera will choose the internal iris position that can most closely approximate the specified F-number.
The aperture may be completely closed by calling a method on the
Camera
.
New color balance settings:
The user may now independently control gain applied to the three color channels, without any effect on the calculated 3D point coordinates.
Captures are now likely to give more valid points given the same scene, especially if the scene contains bright reds.
Added support for color-balance in 2D captures.
New point-cloud SNR metric:
Introducing the Signal-to-Noise Ratio (
SNR
) metric. This replaces the oldContrast
metric, and is always a non-negative non-NaN number.Improved HDR-merge of 3D point coordinates based on the new SNR metric.
When loading a ZDF file created with API 1.X, the SNR values of the point cloud is approximated based on the old Contrast values.
New default values for settings:
Default value of
Gain
is reduced from2
to1
.Default value of
Brightness
for One Plus Medium cameras is increased from1.0
to1.5
.Default value of
Brightness
for One Plus Large cameras is increased from1.0
to1.8
.Default value of
ExposureTime
for all One Plus cameras is reduced from8333
to6500
.
New
Noise
filter:Filtering points based on SNR value.
Replaces the old Contrast filter.
Removed old
Saturated
filter setting:The saturation filter is now always enabled, and cannot be disabled via settings.
New
Calibration
namespace:The contents of the old
HandEye
namespace is moved intoCalibration
namespace.All input and output transformation matrices are now in float format instead of double format, to better match the format of the
PointCloud
data.
New
CameraInfo
API:The member functions on
Camera
used to get serial number, model name, etc. have been removed.Instead, an instance of the new class
CameraInfo
may be accessed though a method onCamera
.CameraInfo
contains camera model name, revision, serial number, firmware version, and the maximum number of bytes of user data that can be stored in the camera.
Changes to camera-intrinsics API:
Significant performance improvements when estimating the effective camera intrinsics based on a
Frame
.Method for getting camera intrinsics is taken out of the
Camera
class and placed in theExperimental::Calibration
namespace together with the function for getting intrinsics from aFrame
.
Gaussian
filter moved to after HDR merge, for improved performance.“Live-mode” has been removed from the API.
Bidirectional patterns have been removed from the API.
ZividVis3D
library has been renamed toZividVisualization
.CloudVisualizer
class has been renamed toVisualizer
, and moved into theVisualization
namespace.File extension for file cameras has changed from .zdf to .zfc.
Environment
namespace has been removed from the API.The
Frame2D
method for accessing image data has been renamed fromcolorsRGBA
toimageRGBA
.Simplified Exception API to contain only a single exception:
Zivid::Exception
.Many adjustments to naming/terminology.
C++
In the C++ API the
PointCloud
class also has the ability to copy data straight from the GPU to a specified user-allocated CPU data buffer through member functions such ascopyData(PointXYZ*)
.
C#
Restructured C# interface to reflect the underlying changes of the core API (see above).
CaptureAssistant
has been changed from a class to a namespace. This namespace holds two classes:SuggestSettingsParameters
Assistant
, which contains the methodSuggestSettings
.
Firmware
has been changed from a class to a namespace. This namespace holds a new class,Updater
, which provides firmware-update related functionality.The primary image class for 2D color data is now called
ImageRGBA
. It provides two methods for accessing color data:ToArray()
: 2D array of theColorRGBA
struct.ToByteArray()
: 3D array of bytes, with the third index used for selecting image channel (RGBA).
Pose::ToArray()
has been removed.Pose::ToArray2D
has been renamed toPose::ToMatrix()
.
GenICam
All settings are renamed to match the new name in the core C++ API.
MergedMultiFrame
no longer has anApplyType
field.MergedMultiFrame
has been renamed toMultiAcquisitionFrame
.Removed duplicated settings for
MultiAcquisitionFrame
and single frame.SettingsControl
contains common capture settings, like filters and color balance.AcquisitionSettingsControl
contains settings for one acquisition.SingleFrame
mode uses the settings under categoriesSettingsControl
andAcquisitionSettingsControl
.SingleFrame
mode is used to capture with just a single acquisition.MultiAcquisitionFrame
mode uses the settings underSettingsControl
, plus all acquisition settings added viaMultiAcquisitionFrameControl::AddAcquisition
.MultiAcquisitionFrame
mode is used to capture with multiple acquisitions (HDR).Continuous mode is no longer supported.
Zivid Studio
Option to save or load complete capture settings through File -> “Import/Export Capture Settings”.
Improved step size of the settings sliders.
Allow changing all settings when running “Live” mode with one enabled acquisition.
Added a notification in the UI when running “Live” mode with brightness setting above 1.0.
Windows
Installer no longer include samples or sample-data. This may now be found on http://github.com/zivid.
Linux
Linux installers (specifically
zivid-telicam-driver_*.deb
) now properly uninstalls the oldtelicam-sdk
package if upgrading from older (<=1.4) versions of the Zivid SDK.Fixed a bug in the Linux installers (specifically
zivid-telicam-driver_*.deb
) where TelicamSDK samples would be written to/root
. These samples are no longer installed.
Bug fixes
Fixed problem that could cause “Inconsistent frame timing detected” exception with older Zivid One cameras. This fixes a known limitation from release 1.8.1.
Fixed a resource leak on the USB layer.
Fixed bug where DetectionResult would be considered valid despite containing a NaN feature point.
Fixed a bug where saving and loading YAML files in different locales could fail due to conflicting decimal point conventions. YAML serialization now always uses “.” as decimal point.
1.8.1
API
Added new experimental function Zivid::Experimental::Calibration::estimateIntrinsics() to the C++ API. This function provides more accurate camera intrinsics when projecting 3D points to 2D.
Fixed an issue where artifacts near the edges of the projector’s field-of-view would not be removed correctly.
Experimental multi-Zivid support:
This feature is tested using up to four Zivid One Plus cameras simultaneously from one PC.
Multiple cameras can be used simultaneously, however, each individual camera should not be used from several threads at the same time. Connecting to the cameras must be done in sequence.
Known limitations:
Some USB chipsets will not perform well during high load (multiple captures at the same time). This can manifest itself as exceptions being thrown during capture. If you experience this, try to use different USB ports or a different PC.
Capturing during extended periods of very high load on NVIDIA GPUs can cause OpenCL out-of-memory related exceptions. The speed and RAM size of the GPU affects this issue.
If you are using Intel NEO OpenCL driver for Linux, version 20.08 or newer is required. Older versions of this driver can be unstable.
Linux
Updated zivid-telicam-driver to version 3.0.1.1.
Added dependency for zivid deb package on zivid-telicam-driver deb package.
Zivid Studio
When opening a .zdf file the filename is shown in the window’s title bar.
Known Limitations
Users of the original Zivid One camera (not One Plus series) may experience exceptions during capture. We recommend users of the original Zivid One model to stay on SDK 1.8.0 or earlier.
1.8.0
API
Improved capture assistant:
Improved performance (about 25% shorter analysis time).
Improved results for capture budgets (“Max capture time”) below one second.
Fixed an issue where the wrong outlier filter threshold was returned in case of Large cameras.
Removal of artifacts near the edges of the projector’s field-of-view.
Fixed compatibility issues with Intel NEO OpenCL drivers for Linux on new Intel GPUs (Broadwell and higher).
Improved support for GPUs without double-precision floating-point capabilities.
.NET
Added support for the Capture Assistant to the .NET API, including sample.
Zivid Studio
Assisted Mode (Capture Assistant) is now the default mode when opening Zivid Studio.
Tools
Fixed issue where the HandEyeCalibration CLI tool did not work on Linux.
1.7.0
API
Improved colors for HDR frames.
Improved capture assistant:
Generally improved suggestions for any scene and in particular for shiny objects.
Option to adapt suggestions based on ambient light frequency.
Improved out of focus handling.
Max allowed budget increased to 10 seconds.
Faster scene analysis.
Fix for issue where unplugging USB or power during firmware update could result in a situation where next firmware update resulted in a crash or hanging software.
Updated Zivid One+ firmware to version 1.6.7.
Zivid Studio
Option to adapt capture assistant suggestions based on ambient light frequency.
1.6.0
API
Added Hand-eye calibration API.
Added 2D capture API.
More helpful error messages when OpenCL drivers are not set up correctly.
Support offline installation on Windows. Sample data is now embedded in the installer.
Improved SampleCameraUserData with more explicit CLI options and made it more verbose.
Fixed potential camera deadlock when unplugging USB during a capture.
Capture Assistant avoids iris values above 46 to increase the depth of field.
Use correct alpha values when exporting PCD files.
Capture Assistant CLI tool now supports saving suggested settings.
Removed Qt dependency from Vis3D library.
Added SampleHandEyeCalibration samples.
Added SampleCapture2D samples.
Added Vis3D samples.
Added keyboard shortcut for reset view(backspace) & colors on/off(c) for CloudVisualizer.
.NET
Added missing user data functionality to keep .NET API in sync with C++ API.
Make sample code copy release DLLs from the correct folder to avoid loading debug DLLs in release build.
Improved reference documentation.
Fixed month conversion bug.
GenICam
Added support for HALCON 19 in Ubuntu.
Zivid Studio
Fixed issue where setting tooltips wrongly appears
Fixed potential crash when moving the mouse in depth/color 2D views
Fixed depth/color 2D view being reset when changing tab
Added “Save settings to folder” to “Capture” menu in the right hand side panel
Known defects
Unplugging USB or power during firmware update may result in a situation where next firmware update results in a crash or hanging software. To recover from this situation power cycle the camera.
1.5.0
API
Improved semantic versioning support in CMake config files. Now newer version of Zivid SDK will be found when using find_package using same major version, but lower required minor or patch version.
Renamed telicam-sdk deb package to zivid-telicam-driver.
Calling combineFrames on empty vector now results in an exception, previously this would result in a crash.
Windows installer will now by default add the Zivid binary directory to system PATH during installation.
When installing the experimental GenICam driver Zivid will be added to GENICAM_GENTL64_PATH.
Supported Halcon version for experimental GenICam driver is bumped to 19.
Improvements to API documentation.
Park projector mirrors when idle.
Added watchdog that will reset the camera if it is connected to a PC but is not enumerated within a timeout.
Minor increase to the minimum RPM for the external camera fan.
Static link more dependencies for the Windows build, this makes it easier to use the .NET API from Matlab and Labview.
Improved post install step of deb packages to make 18.04 package installable on newer Ubuntu versions.
Improved USB reconnect handling when upgrading camera firmware. This fixes issues with flashing camera in Docker.
Improved contrast value calculation. The new method is based on SNR and it will make the contrast filter and HDR work more consistent under varying ambient light conditions.
Improvements and breaking API changes to the experimental Auto Exposure feature:
Re-branded to Capture Assistant.
Improvements to core algorithm.
Better support for various camera models.
Region of Interest feature removed.
Updated Zivid One+ firmware to version 1.6.6.
Zivid Studio
New Assisted Mode for capturing.
New Histogram feature.
The depth view Z-range can now be configured.
Add support for saving color/RGB image as PNG/JPG/BMP.
Consistently show 2 decimal places in all of the UI, before 3 decimal places was used in some parts of the UI.
Moved the camera disconnect button into a sub-menu.
Automatically change to 3D view when changing color or mesh settings.
Improved navigation in 3D view when the point cloud have huge outliers.
Bugfix for the connect button being stuck in Connecting state.
Button texts changed from UPPERCASE to Capitalized Case.
Small improvements to the look & feel of the UI.
1.4.0
API
Added experimental Auto Exposure API.
Improvements to reflection filter, remove fewer good points.
Improvements to reflection filter in bidirectional mode.
Fixed an issue in reflection filter resulting in black lines in scenes with shiny objects and bright surfaces.
Improvements to outlier filter, remove fewer good points.
Added test in Application class to ensure that binary files and header files are in sync.
Fixed an issue with the camera always returning CAM_API_STS_NOT_WRITABLE, after an initial CAM_API_STS_TIMEOUT error.
Zivid Studio
Better error handling during startup, the application will now show an error dialog if the Zivid Core library fails to initialize.
1.3.0
API
Added gaussian filter.
Expose camera intrinsics in OpenCV format.
Improved HDR point merge to reduce noise by up to sqrt(images).
Updated Zivid One+ firmware to version 1.6.3.
.NET
Add save and load function for data models (Settings, FrameInfo, CameraIntrinsics and CameraState).
Zivid Studio
Added gaussian filter.
Improvements to rendering performance.
Show XYZ/RGB/Contrast of pixel under the mouse pointer in 2D views.
Improve the 2D Image View behavior.
Tools
Renamed ZividSuggestSettings to ZividExperimentalSuggestSettings.
1.2.1
Support for Zivid One Plus Small, Medium and Large, revision B.
1.2.0
Ubuntu 16.04 and 18.04 support.
GenICam/HALCON preview for Windows 10.
Changed from DirectX to OpenCL as the GPU compute platform.
Performance improvements.
Re-branding from Zivid Labs to Zivid (including log and config folders).
Support for Zivid One Plus Small, Medium and Large, engineering builds.
API
Functionality to flash cameras from the API added.
Function for writing user data to cameras added.
Boost mode, allowing brightness larger than 1.0 for Zivid One Plus.
C++
CMake files changed from module mode to config mode.
Structured bindings support for settings.
Zivid Studio
Rewritten from scratch:
Modern look and feel.
Removed little used functionality.
1.0.1
Support for new camera revision.
Fix discrepancies in the functionality of the iris.
1.0.0
Some of the following changed was introduced during the release candidate period. If upgrading from a rc-candidate, some but not all of this will apply.
Major changes
New reference frame. The reference frame have changed from the projector to the camera. Any eye-hand calibration done using older software needs to be re-done. This changed between rc3 and rc4.
From version 1.0.0 the API is stable and following the semantic versioning scheme from https://semver.org/.
New settings API.
HDR performance improved.
API fully documented.
Support multiple Zivid cameras connected to the same computer.
Update of firmware automatically using Zivid Studio or manually using standalone application.
Added Application class that manages resource, it needs to be the first thing created when using Zivid.
Removed return codes from C++ API, API is now using exceptions exclusively for error handling.
Removed System class and split it into more specific namespaces.
Full change log
Visual Studio sample projects added to installer.
CMake sample projects added to installer.
Setting exposure_time to 19654 no longer fails.
Zivid Studio crashes randomly when capturing frames, fixed.
ZividNET.dll can now be loaded from MATLAB.
Report error when attempting to create a texture of invalid dimensions.
Bi-directional giving corrupted output data in some cases, fixed.
Preferences is now resizing its content properly.
Turn off fans when shutting down Zivid Studio.
Support for pre revision 3 cameras removed.
New patterns for improved signal-to-noise ratio and reduced noise.
Added version info for Zivid Studio in about dialog.
Added CameraState.h and ImageInfo.h to the installer.
Bugfix for mesh mode in Zivid Studio.
Saving/loading settings to YML in Zivid Studio now works.
Camera reconnect added in ZividStudio.
Logging to file.
Include “legal notice” for 3rd party libraries in Zivid Studio.
Added nicer application icons.
New version of the Toshiba Teli drivers.
Digitally signing the executables.
Clean up public C++ API.
Install sample in Program Files\Zivid\SampleData.
Show error dialog in Zivid Studio if camera unit info couldn’t be read.
Up to date and correct header comment in all header files.
Make sure live pattern display is turned off on exit.
Fixed all TODOs and FIXMEs from public API.
Renamed public function names to be more descriptive and consistently named.
Make Zivid Studio initialize properly without camera connected.
Make public API C++11 conforming.
Sign the uninstaller to avoid warnings when launching it.
Remove old registry keys when installing new version.
Uninstall old version as a part of running the installer.
Build with /WX /W4 in Visual Studio, both internal code and sample code.
Stopped using MSVC C++ extensions.
Expose version info in .NET.
Refuse to connect a camera if firmware version does not match.
Added new version notification in ZividStudio.
Remove logging API from public API.
Remove state callback API from public API.
CameraInfo and Camera merged.
Reduced fan noise under normal working conditions.
Removed usbPath and internalCameraId from public API.
Associate Zivid Studio with .zdf files.
Make Zivid appear in “Add/Remove programs” in Windows.
Embed VCRedist files for Visual Studio in the setup file.
Download and install Toshiba Teli camera drivers if needed.
Removed std::shared_ptr from public API.
Removed ZSetting from C++ API.
Renamed Measurement class to Frame.
Moved saveMeasurement from System to Frame class.
Added separate installer for CloudViewer.
Various bug fixes and performance improvements.
0.9.544
Fixed problem with missing Boost DLLs in installation package.
0.9.539
Fixed bug in reflection filter when used with perpendicular patterns.
0.9.537
Fixed bug in live mode introduced in version v0.9.534.
0.9.534
Note that this will be one of the last releases before APIs and GUI will change name from ShapeCrafter to Zivid (e.g., ShapeCrafterGUI will become Zivid Studio and ShapeCrafter classes will change name to Zivid).
Added support for perpendicular patterns (twice the amount of patterns: horizontal + vertical). Use enablePerpendicularPatterns() in API (or toggle it via preferences in GUI). IMPORTANT: Due to limitations in the current hardware, the projector exposure time must be increased to above approx. 33000 microseconds for this to be stable.
Added reflection filter which can detect and remove outliers due to reflections. Note that the reflection filter works best when perpendicular patterns are used (see Preferences). Turn it on via enableReflectionFilter() in API.
ShapeCrafterGUI: Support for LGGC (Large Gap Gray Code) error correcting pattern mode via Edit->Preferences, or via enableErrorCorrectingCode() in the API.
Saturated pixels can now be detected and removed. Should improve fusion of HDR measurements. Enable it via Preferences in the GUI (or call enable) or call setMaskSaturated in API.
Added function getFirmwareLabel to get firmware revision (C++ and .NET API).
ShapeCrafterAPI: Added support for revision 2 of PCB. Note that it has a different pinning for e.g. the iris (hence the setProductRevision function).
Select product revision in preferences dialog of GUI (handles differences between Rev. 0 (PoC), Engineering Model Rev. 1 and Engineering Model Rev. 2.
Added setProductRevision() function to API. Please call this function before initializing ShapeCrafter.
Added isConnected() functions to C++ and .NET API.
Function initialize() now returns a boolean flag that tells whether both camera and projector could be successfully connected.
Firmware update: Zivid nows starts with a 7-second splash image and then turns itself off. This requires a firmware update. Please download and install associated firmware: ZIVID_v0_9_10_ROM_v300_splash.bin.
ShapeCrafterNET: Added Logger.setLogCallback() function. Allows clients of .NET API to receive log callback messages from underlying C++ API.
ShapeCrafterNET: Improved StringSettings and StringSetting classes. Now behaves more like in C++ (can be read/written via indexing).
ShapeCrafterNET: Attempted to fix a bug which sometimes resulted in a crash at exit when using the .NET API.
ShapeCrafterNET: Added getVersionInfoForModule() function, which returns version information for a given DLL.
ShapeCrafterGUI: See version numbers of all DLLs via the Help->About dialog box.
ShapeCrafterGUI: Support for viewing of the point cloud in monochrome color (disable RGB) via a button in the toolbar.
ShapeCrafterGUI: Mesh view now updates visualization instantaneously.
ShapeCrafterGUI: Fixed bug related to making uncalibrated measurements.
ShapeCrafterGUI: Clicking apply in preferences dialog should now re-initialize the system (i.e. load new calibration files etc.).
CloudViewer: New application for visualizing point clouds that is no longed based on PCL (not it is based on DirectX) Can also be associated with W3P files.
ShapeCrafterAPI: An exception is now thrown if the camera cannot be initialized.
Python API: Added support for controlling the iris.
ZividCalibrationApp: New Qt-based calibration application. The application attempts to detect the image corners in projector/camera before images can be saved.
Added automatic generation of package and installer from CMake.