SDK Changelog
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.