# Zivid SDK change log ## 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. ### 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. ### 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). #### .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 DirextX 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 (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.