SDK变更日志

2.14.0

API

  • 增加了对 Zivid 2+ MR60、MR130 和 LR110 相机型号的支持:

    • Zivid 2+ R 系列相机是 Zivid 的新一代 3D 相机。

    • 这些相机有着更好的性能,包括更快的采集和捕获速度、在不同环境光条件下稳定的更清晰的彩色图像,以及使用了新 Sage 引擎,该引擎可以更好地处理反射问题。

    • 请访问 <https://www.zivid.com/zivid-2-plus-r-series> 了解有关 Zivid 2+ R 系列相机的更多信息。

  • 添加了新的实验性功能 Sage 引擎:

    • Sage 引擎专为需要所有点都正确且置信度极高的用例而设计。该引擎非常适合消除反射伪影。

    • Stripe 引擎相比, Sage 引擎可能会由于移除了置信度较低的数据而返回较少的点。

    • Sage 引擎仅适用于 Zivid 2+ R 系列相机。

    • Sage 引擎尚处于实验阶段,将来可能会发生变化。

  • 增加了使用 Zivid::Settings2D 对象为 2D+3D 捕获指定 2D 彩色图像采集和处理设置的支持:

    • 添加了新的 Zivid::Settings::Color 设置,可以将其设置为 Zivid::Settings2D 对象。

    • Zivid::Settings::Color 允许您为 2D+3D 捕获指定特定的自定义 2D 采集设置( ExposureTime , Aperture , BrightnessGain )。这使用户可以分别完全控制 2D 和 3D 的采集设置。

    • Zivid::Settings 中的现有颜色设置( Zivid::Settings::Sampling::ColorZivid::Settings::Processing::Color 下的所有设置)已弃用,并将在 SDK 3.0 中删除。请注意,所有现有设置对象和 settings.yml 文件将继续像在此 SDK 版本之前一样工作,直到 SDK 3.0。今后,定义 2D+3D 捕获的 2D 采集和处理设置的推荐和首选方法是通过新的 Zivid::Settings::Color 设置。

    • 所有预设均已更新,并带有微调后的 Settings::Color 值。

    • 注意:CaptureAssistant::suggestSettings() 函数现在将返回定义 Zivid::Settings::Color 的设置。如果您使用 suggestSettings() 并在之后修改捕获前返回的设置,例如调整 Settings::Sampling::PixelSettings::Sampling::Color,您可能还希望对返回的 Settings::Color 设置进行相同的修改。

  • 添加了新的捕获方法 Camera::capture2D3D(settings)Camera::capture3D(settings)Camera::capture2D(settings)Camera::capture2D(settings2D) 以执行 2D+3D、仅 3D 或仅 2D 捕获:

    • 这些新的捕获方法允许您基于单个 Zivid::Settings .yml 文件执行单独或组合的 2D 和 3D 捕获。

    • 现有的 Camera::capture(settings)Camera::capture(settings2D) 方法已弃用,并将在 SDK 3.0 中移除。我们鼓励用户改用此版本中引入的新 capture2D3D()/capture2D()/capture3D() 方法。

    • 新的 Camera::capture2D(settings)Camera::capture2D3D(settings) 方法要求使用 Settings2D 对象定义新设置 Settings::Color 才能使用它们。现有的 .yml 文件可以通过将其导入 Zivid Studio,然后将设置重新导出为 .yml 来转换为新格式。这将设置 Settings::Color 值,以提供与此 SDK 版本之前相同的 2D 颜色行为。

  • 添加了 Frame::frame2D() 方法,该方法以原始 2D 分辨率从捕获的 2D+3D 帧返回 Frame2D

    • Frame2D 对象的分辨率可能与 frame 的 PointCloud 不同,后者包含了 3D 数据和颜色信息。Frame2D 彩色图像和 3D PointCloud 的分辨率取决于所使用的 Sampling::PixelResampling::Mode 设置。

    • 对于 2D+3D 捕获,PointCloud 将包含映射以匹配 3D 分辨率的颜色。如果分辨率不同,则 PointCloud 中的颜色将根据需要从捕获的 2D 彩色图像中上采样或下采样,例如,如果 2D 设置有 Settings2D::Pixel::Sampling::all 而 3D 设置有 Settings::Pixel::Sampling::blueSubsample2x2

  • 增加了对 2D HDR 捕获的支持:

    • 2D HDR 中的采集将与 3D HDR 捕获的 2D 彩色图像完全相同地合并。

    • 对于 2D-HDR 捕获,所有 Aperture 值必须相同,否则捕获时会出现异常。

  • 添加了新设置 Settings2D::Processing::Color::Experimental::Mode,该设置相当于 Settings 中现有的相应设置。此设置可用于为 2D 捕获启用色调映射。

  • 增加了对低自由度机器人(自由度小于6个的机器人)手眼标定的实验性支持。

  • 添加了 Calibration::DetectionResult::featurePoints() 方法,返回检测到的特征点的位置(标定板棋盘格的中心)。

  • 添加了 Camera::measureSceneConditions() 方法,用于测量当前场景的环境光条件:

    • 该方法将报告是否检测到明显的环境光闪烁,以及检测该光线使用了 50 Hz 或 60 Hz 电网。

  • 添加了 Presets::categories2D() 函数,返回给定相机模型的 2D 设置预设。

  • CameraState 类中添加了 Network::LocalInterfaces,其中包含连接到 Zivid 相机的本地网络接口的名称、子网掩码和 IP 地址。

  • FrameInfo 类中添加了 Metrics::AcquisitionTimeMetrics::CaptureTime

  • ComputeDevice 类中添加了 vendor()model() 方法。

  • Matrix 类添加了 identity() 静态工厂函数。

  • Calibration::MarkerDictionary 类中添加了 toString() 方法。

  • 添加了实验性 API Experimental::PointCloudExport::exportFrame(),用于将帧导出到 PLY、PCD 或 XYZ:

    • 与使用 Frame::save() 函数相比,这个新的 API 允许您控制更多选项,例如保存为有序或无序 PLY,以及使用线性或 sRGB 颜色。

  • 改进了解析 .yml 文件失败时的错误消息。消息现在包含有关错误的更多信息以及 .yml 文件中发生错误的位置。

  • 将文件相机的 CameraInfo::ModelName 从 "FileCamera-" 更改为 "FileCamera",并跟进 SDK 版本。

  • 将 Noise::Suppression 和 Noise::Repair 过滤器的速度提高了 2 倍:

    • 对于英特尔集成 GPU,每次捕获的时间缩短了约 35-50 毫秒,而对于 Nvidia,缩短的时间约为 3-10 毫秒,具体数据取决于 GPU 型号的性能。

  • 当 frame 中不包含 Zivid 标定板时,提高了 Calibration::detectCalibrationBoard() 函数的速度。

  • 已取消使用打印的标定板进行手眼标定的支持。从此版本开始,仅支持 Zivid 标定板和 ArUco 标记。

  • Zivid 2 和 2+ 固件更新至版本 1.31.3。

C++

  • Zivid C++ API 现在对编译器的要求为支持 C++17 或更新版本:

    • Zivid SDK 支持的所有编译器/操作系统都已支持 C++17,但在某些情况下您可能需要明确启用 C++17 支持:

      • 如果您使用 CMake,您可以使用命令 set(CMAKE_CXX_STANDARD 17)

      • 如果您不使用 CMake ,而仅使用 Visual Studio,您可以在项目设置 -> 属性 -> C/C++ -> 语言 -> C++ 语言标准中启用 C++17。

      • 如果您使用其他构建系统或直接调用编译器,则可以添加编译器参数 -std=c++17

.NET

  • 新增了函数 Zivid.NET.Experimental.SettingsInfo.Resolution

    • 此函数根据提供的相机信息和设置返回捕获帧的分辨率。

  • Frame 类添加了 Clone() 方法。

  • ApplicationComputeDeviceFrameFrame2DImageMarkerDictionary 类添加了 ToString() 方法。

GenICam

  • 新增了参数 LoadSettingsFromFile 来从 .yml 文件加载捕获设置:

    • 此参数接受 .yml 文件的文件路径。 .yml 文件可以从 Zivid Studio 或 API 导出,也可以从 <https://support.zivid.com/en/latest/reference-articles/presets-settings.html> 下载

    • 设置此参数将更新其他 Zivid 捕获设置参数以匹配 .yml 文件的内容。

    • 新的 Settings::Color 设置(参见上面的 API 部分)只能通过 LoadSettingsFromFile 参数进行配置。

    • Zivid 建议所有 GenICam 用户使用 .yml 文件,而不是通过单独的 GenICam 参数配置捕获设置。

  • 添加了参数 CameraOutputColorSpace ,用于控制 Zivid GenTL producer 的颜色输出在 sRGB 还是线性颜色空间中:

    • 在此版本之前,GenICam producer 始终返回线性 RGB 颜色。

    • 默认值为 sRGB,在 GenICam 中提供的颜色与您在 Zivid Studio 中观察到的颜色相同。如果您需要保留 SDK 2.13 中的行为,请将此选项设置为 linearRGB

  • 修复了使用与默认值不同的 SamplingPixel 设置进行捕获时会发生的 GC_ERR_BUFFER_TOO_SMALL 错误。

  • 修复了 Windows 上 Zivid GenTLProducer 库的已安装 CMake 目标。

  • 改进了 Zivid GenTL producer 的错误报告。

Bug修复

  • 如果将相机 IP 设置为保留范围 0.0.0.0/8 或 169.254.0.0/16 内的 IP, Camera::applyNetworkConfiguration() 现在将引发异常。

  • 如果在 2D 图像中检测到 ArUco 标记但位于感兴趣区域框之外或没有 3D 数据,则 Calibration::detectMarkers() 将不再抛出异常。

  • 修复了不良的手眼标定输入导致手眼标定抛出 OpenCV 异常而不是返回无效结果的错误。

  • 手眼标定输入子集上缺少一些 ArUco 标记不再导致标定失败。

  • 修复了使用 Stripe 引擎进行 HDR 捕获时出现的错误,当至少一次采集曝光良好时,过度曝光采集的数据可能会导致错误点。使用 Nvidia Jetson 或启用噪声修复过滤器时可能会发生此错误。

  • 修复了网络指示灯 LED 在某些情况下无法更新正确的网络链接状态的问题。此问题自 SDK 2.13 开始就存在。

  • 修复了在极少数情况下捕获可能返回 CameraImageTimeout 错误的错误。

Studio

  • 添加了操作器小部件,可直接在 3D 视图中轻松调整感兴趣的区域框。

  • 在感兴趣区域设置部分添加了 "Fit to scene" 按钮,可以自动设置包裹点云的 ROI 框。

  • 在捕获侧面板中添加了 2D / 2D+3D / 3D 模式选择器,用于控制执行哪种类型的捕获:

    • 各种新模式对应了 Camera::capture2D / capture2D3D / capture3D 方法(参见上面的 API)。

  • 为 3D 视图添加彩虹着色模式,键盘快捷键为”R”。

  • 在相机网络配置窗口中添加了一个标签,显示PC的本地网络接口名称、本地IP地址和本地子网掩码。

  • 添加了 2D 捕获预设。仅当选择 2D 模式时,2D 预设值才可见。

  • 在 3D 视图的左下角添加了轴指示器。可以在 View 菜单中禁用此指示器。

  • 在 View 菜单中添加了 "Show 4x4 Aruco Markers" 选项,该选项将突出显示在 3D 视图中找到的 4x4_250 词典中的任何 4x4 Aruco 标记。

  • 如果在场景中检测到明显的环境光干扰,则在 Capture 面板中添加信息标签:

    • 如果检测到接入 50Hz 或 60Hz 电网的明显环境光闪烁,标签将建议用户启用 50Hz 或 60Hz 环境光适应功能。

    • 连接到相机时,会测量场景中的环境光条件。也可以通过选择 Capture 部分中 "…" 菜单中的 "Measure scene lighting conditions" 来按需检测率条件。

  • 在页脚中添加了一个标签,显示 2D 彩色图像、深度图、SNR 图或法线图的分辨率。

  • 在现场标定向导的 "…" 菜单中添加了一个选项,以删除上次进行的测量。

  • 在 File 菜单中添加了将 SNR 图保存为 .png 图像的选项。

  • 在 File 菜单中添加了将法线图保存为 .png 图像的选项。

  • 添加了使用 sRGB 颜色空间(即 Zivid Studio 使用的色彩空间)导出到 PLY/PCD/XYZ 文件的选项。使用 sRGB 颜色导出可确保导出文件中的颜色与 Zivid Studio 中的颜色完全相同。

  • 当启用诊断模式(Diagnostics )时,在通过 File 菜单将设置导出到 .yml 时添加了一个确认对话框。

  • 增加了通过 File -> Open 对话框打开 Zivid 文件相机 (.zfc 文件) 的支持。请注意,打开 .zfc 文件时,文件相机可能需要几秒钟才能出现在 Studio 中。

  • 增加了通过双击文件资源管理器中的文件来打开 .zdf 或 .zfc 文件的支持。

  • 更改了 3D 视图中的 "Point Size" 选项,现在以数字来表示点的大小,并添加了更多点尺寸选项。

  • 通过使用多重采样抗锯齿(MSAA)提高了 3D 点云的渲染质量。

  • 改进了渲染器,使其能够使点和其他对象的大小适应屏幕的 DPI 缩放比例。

  • 改进了右侧面板设置的整体结构和组织。

  • 改进了一些标签、按钮和输入字段的外观。

  • 修复了 Studio 使用系统默认字体而不是预期的自定义字体的错误。

  • 修复了一个错误,当 Studio 在实时模式下进行捕获时,将鼠标悬停在信息面板中的标签上,可能会退出并出现 "ToolTip: cannot find any window to open popup in" 的错误。

  • 捕获助手不再作为 Studio 中的选项提供。Zivid 建议用户改用预设以获得最佳捕获质量。

CLI

  • 通过并行更新所有相机的固件,提高了连接多台相机时 ZividFirmwareUpdater 的速度。

弃用通知

  • Settings::Sampling::ColorSettings::Processing::Color 下的所有设置均已弃用,并将在 SDK 3.0 中移除。此版本中引入了新的 Settings::Color 设置来替代这些旧的设置。如需了解更多相关信息,请参阅上面的 API 部分。

  • Camera::capture() 函数已弃用,并将在 SDK 3.0 中被移除。替代方法是 Camera::capture2D3D()Camera::capture3D()Camera::capture2D() 。如需了解更多相关信息,请参阅上面的 API 部分。

已知问题和限制

  • Zivid SDK 现在将安装并使用附加动态库 ZividUtils:

    • 该库在 Linux 上名为 libZividUtils.so,在 Windows 上名为 ZividUtils.dll/ZividUtils.lib(用于 Release 模式)和 ZividUtilsd.dll/ZividUtilsd.lib(用于 Debug 模式)。

    • 如果您接收到 "Unresolved external symbol" 或类似错误,请确保将 ZividUtils 库添加为项目的依赖项,类似于现有的 ZividCore 库。如果您使用的是 CMake,则重新生成项目就足够了。如果您仅使用 Visual Studio 来编译,则可能需要在项目设置 -> 链接器 -> 输入中添加新库。

  • 有关所有已知问题和限制,请参阅 <https://support.zivid.com/latest/support/troubleshooting.html>,尤其是勘误表。

2.13.1

Bug修复

  • 修复了从 Calibration::MarkerShape::pose() 返回的 ArUco 标记位姿的方向与标定板位姿不一致的问题。现在,检测到的 ArUco 标记的所有位姿都指向正 z 方向,即远离相机。ArUco 标记位姿是在 2.13.0 中引入的。

2.13.0

API

  • 添加了用于获取和更改 Zivid 相机网络配置的新 API:

    • 调用 Camera::networkConfiguration() 来获取相机的当前网络/IP 配置。

    • 使用具有新配置的 NetworkConfiguration 对象调用 Camera::applyNetworkConfiguration(...) 以将此配置应用于相机。

    • Zivid 使用多播来发现和配置相机,这意味着所有与 PC 位于同一网络上的 Zivid 相机都可以被找到并可进行配置,即使 PC 和相机 IP/子网设置不匹配。此功能需要 Zivid 相机固件版本为 1.16.0 或更高版本(对应 SDK 2.10.0 或更高版本)。

    • 相机网络配置也可在 Zivid Studio 中进行。有关更多详细信息,请参阅下面的 Studio 部分。

  • 新增了函数 Zivid::Calibration::detectMarkers(...) ,可用于从点云中检测一个或多个 ArUco 标记。

    • 返回值为标记角提供了 2D+3D 坐标,以及中心位姿(位置+方向)。

  • 新增了支持使用 ArUco 标记进行手眼标定的功能:

    • 基于 ArUco 标记的手眼标定 API 与当前用于标定板的手眼标定 API 相同,只是您必须调用 Zivid::Calibration::detectMarkers(...) 而不是 detectFeaturePoints(...)

    • 用户必须指定场景中存在哪些标记(一个或多个)。与每个机器人位姿相关的 3D 捕获只需显示这些标记的子集即可。

  • 新增了函数 Zivid::Calibration::detectCalibrationBoard(...) ,其功能与现有的 Zivid::Experimental::Calibration::detectFeaturePoints(...) 函数相同,但不是实验性的。

  • 新增了函数 Zivid::Calibration::captureCalibrationBoard(...) ,其功能与现有的 Zivid::Experimental::Calibration::captureCalibrationBoard(...) 相同,但不是实验性的。

  • 改善了使用 Stripe 引擎进行 HDR 操作时容易在较亮的物体上导致过度曝光的点云质量的问题。

  • 添加了用于将 Settings/Settings2D 等数据类型序列化/反序列化的 API。

    • 使用 serialize() 方法和 fromSerialized() 静态函数来序列化/反序列化对象。

    • 该对象将使用 YAML 格式进行序列化。

  • 增加了对 Ubuntu 24.04 的支持。

  • 将 Zivid 2 和 2+ 固件更新至版本 1.26.3。

Bug修复

  • 修复了使用 Intel GPU 驱动程序在 Windows 上捕获期间可能发生的崩溃。

  • 修复了相机内参函数不遵从设置中的重采样(resampling)选项的错误。

  • 修复了调用 Application::cameras() 是可能会使用一个 CPU 核心的 100% 资源的问题。

  • 修复了在调用 Application::cameras() 时,如果在函数调用期间相机的状态发生变化(例如,如果相机状态变为无法访问或从网络中消失),在极少数情况下可能发生的崩溃。

  • 修复了一个固件错误,该错误会导致错误填充的以太网帧被丢弃,从而导致在连接到相机时出现异常。某些具有 VLAN 配置的交换机受到此问题的影响。

  • 修复了一个固件错误,如果 SDK 应用程序在捕获过程中中止,则相机网络接口可能会挂起并且相机将重新启动。

  • 修复了 Windows 安装程序从以前的 SDK 版本升级可能导致安装目录中缺少文件的问题。

  • 修复了 Windows 安装程序的一个问题,该问题导致重复或以前卸载的 Zivid SDK 条目可能会显示在 Windows”程序和功能”/”已安装的应用程序”列表中。

  • 修复了安装 Zivid GenICam 封装器时 Windows 安装程序的一个问题,如果该环境变量不存在,则 Zivid SDK 将不会添加到 GENICAM_GENTL64_PATH ,并且会显示有关 RegAddPathToVar 错误的弹出对话框。

Studio

  • 添加了一个新的 Cameras 窗口,可通过主菜单栏访问,其中包含所有发现的 Zivid 相机的列表:

    • 表中列出了每个相机的序列号、型号名称、IP 地址和当前状态。

    • 将鼠标悬停在型号名称上时,工具提示中会显示固件版本和硬件修订版本。

  • 添加了一个表格来设置 Zivid 相机的网络/IP 配置。单击 Cameras 窗口中相机 IP 地址旁边的 Configure 按钮时会显示该表格。

  • 增加了使用 Cameras 窗口并行更新多个相机固件的支持。

  • 调整了 About Zivid StudioLegal NoticesSystem Information 窗口的外观。

  • 调整了单击”…” 按钮时显示的弹出菜单的外观。

  • 修复了在为某些设置(例如曝光时间)输入值,然后单击 Tab 移动到下一个设置时可能出现的错误,其中数值将更改为最接近的推荐值(对于曝光时间,该值将是最接近 8333 或 10000 的倍数)。

  • 在 Windows 安装程序的最后一页添加了 “Launch Zivid Studio” 选项。

弃用通知

  • SDK 2.13 是 C++ API 中支持 C++11 的最后一个版本。SDK 2.14 及更高版本将需要 C++17 或更新版本。

已知问题和限制

2.12.0

API

  • 增加了对 Nvidia Jetson Orin 的支持:

    • 请参阅下面的”已知问题和限制”,了解使用 Nvidia Jetson Orin 时的已知问题。

  • 提高了 Omni engine 的捕获图像的质量和性能:

    • 新版本的 Omni engine 可以在更短的时间内对透明物体提供更好的覆盖。

    • Omni 现在可以捕获前景和背景之间距离较大的透明物体。

    • 边缘伪影、悬浮平面和上升浮点均大幅减少。

    • Omni engine 现在只需要较少的光线即可获得与之前版本相同的覆盖范围,从而使所有 Zivid 2+ 相机型号的采集时间最多可缩短 2 倍。对于 Zivid 2+ M60,采集时间进一步缩短了 28%。

  • 使用 Settings::RegionOfInterest::Box 现在可以显著加快获取和处理时间:

    • SDK 可以避免获取和处理必然位于感兴趣区域之外的传感器数据。

    • 加速取决于 ROI 框的大小和形状。一般来说,从相机的视角看,ROI 框越小,加速就越大。

  • 添加了新的 “Settings2D::Sampling::Pixel” 接口用于执行子采样 2D 捕获:

    • 子采样 2D 捕获比全分辨率 2D 捕获要快得多。

    • 这些可选项镜像于 Settings::Sampling::Pixel ,以便用户可以请求与等效 3D 捕获中的颜色数据完全匹配的 2D 捕获。

  • 添加了新的 Settings::Processing::Resampling 接口用于对点云进行上采样/降采样:

    • 这些操作是在所有其他处理完成后执行的。

    • 降采样用于减少点云中的点的数量。这是通过将原始点云中的每个 2x2 或 4x4 像素组组合成新点云中的一个像素来实现的。此降采样功能与 PointCloud 类上的 downsample() 方法相同。

    • 上采样可与现有的子采样模式结合使用,以提高输出点云分辨率,同时保留子采样捕获的速度优势。这是通过将计算出的像素映射到更高的分辨率上,并在可能的情况下在其中插入缺失的点来实现的。

  • 投影 API 不再是实验性的:

    • 函数和类已从命名空间 Zivid::Experimental 移至 Zivid::Projection 。相关头文件已从 Zivid/Experimental 移至 Zivid/Projection

  • 部分设置已不再是实验性质的,它们已被移至 Settings 层级结构中:

    • Engine 设置已从 Settings::Experimental::Engine 移至 Settings::Engine

    • 反射移除(Reflection Removal)过滤器的模式(Mode)设置已从 Settings::Processing::Filters::Reflection::Removal::Experimental::Mode 移至 Settings::Processing::Filters::Reflection::Removal::Mode

    • HoleFilling 过滤器已重命名为 Hole Repair (空洞修复)过滤器。设置已从 Settings::Processing::Filters::Experimental::HoleFilling 移动/重命名为 Settings::Processing::Filters::Hole::Repair

    • 如果您直接在代码中设置这些特定设置,则必须将代码更新到它们的新位置。

    • 从早期 SDK 创建的 Settings.yml 文件将继续在 2.12 中工作。但是,如果您手动修改这些 .yml 文件并将文件顶部的 __version__.data 字段更新为 24 或更高版本,则需要更新这些设置节点以反映其新位置。否则,在加载 .yml 文件时,您将收到 “YAML document contains unknown key” 的异常报错。

  • Stripe 和 Omni 引擎不再处于实验阶段。

  • CameraInfo 类中添加了 HardwareRevision 字符串。

  • 减少 Zivid 2+ 的获取时间:

    • 3D 捕获的获取时间减少了约 5%。

    • 2D 捕获的获取时间最多可减少 50%。

  • 全分辨率 Phase engine 3D 捕获中的 RGB 颜色值现在更加可靠和准确:

    • 这一变化会导致受到曝光时间限制的捕获(高端 GPU 和高曝光时间)的性能略有损失,以及计算能力受限的捕获(低端 GPU 和低曝光时间)的性能略有提升。

  • 优化了 3D 捕获的色彩处理,以提高低端 GPU 上的性能:

    • 启用颜色数据的全分辨率 3D 捕获速度可提高至多 10%。

    • 启用颜色数据的子采样 3D 捕获速度可提高至多 20%。

  • 现在的 Local 模式下的反射过滤器( Reflection Filter)在低端 GPU 上的速度提高了至多 15%。

  • 添加了启动画面,可在相机启动后 60 秒内投射相机信息:

    • 启动画面将显示 Zivid logo、相机的序列号、IP 地址、固件版本和网络链接状态。

    • 启动画面将在 60 秒后消失,或者当您通过 SDK/Studio 连接到相机时消失。

    • 启动画面默认开启,可以使用 ZividNetworkCameraConfigurator 工具禁用。

  • 可以从多个本地网络接口访问的相机不再被报告为无法访问:

    • 以前的版本中,如果一台相机可以通过多个本地网络接口其IP,那么其状态将显示为 inaccessible (无法访问),并且 CameraState::InaccessibleReasonipInMultipleLocalSubnets 。现在这种情况将不再被报告为无法访问的相机,因为在某些有效的网络配置中这种情况会发生。

  • 将 Zivid 2 和 2+ 固件更新至版本 1.22.4。

.NET

  • 增加了对.NET 现场标定的支持。

Bug修复

  • 修复了一个错误,除非 Frame 来自函数 captureCalibrationBoard(Camera) , 否则函数 detectFeaturePoints(Frame) 会抛出错误,。现在, detectFeaturePoints(Frame) 可以接受任何 Frame 作为输入,并且仅当用户尝试使用 DetectionResult 进行现场验证或校正时才会应用更严格的要求。

  • 修复了一个错误,该错误导致 Omni 引擎在遮挡和噪杂区域中的信噪比(SNR)计算不正确。这一问题妨碍了有效利用噪声滤波器清理噪杂边缘。

  • 修复了一个崩溃问题,该问题可能在 Windows 系统上安装了某些较新版本的 Intel OpenCL 驱动程序时发生,当 Application 正在销毁的同时,如果仍有 Frame2D 对象存在,就会引发崩溃。

  • 修复了一个非常罕见的错误,即捕获可能会失败并出现 “Internal error: The acquisition done signal was never received!” 的异常报错。

Studio

  • 在信息面板中添加了 “Acquisition Time” (采集时间)。 “Acquisition Time” 是指从开始捕获到相机采集最后一幅图像的时长。

  • 在 “File” 菜单中添加了 “Save Depth Map” 的选项,现在可以将深度图保存为 Jet 颜色映射的 .png 图像。

  • 在信息面板的所有设置节点中添加了描述性工具提示。

CLI

  • ZividListCameras 的输出现在将把 “Hardware Revision” 显示为字母数字字符串,与产品标签上印刷的版本相匹配。以前会显示整数主版本和次版本。

  • 如果未找到任何相机,ZividFirmwareUpdater 现在会以错误代码退出。以前,该工具会以代码 0 成功退出。

移除支持

  • SDK 不再支持 Zivid One+ 相机。支持 Zivid One+ 的最后一款 SDK 是 2.11。

    • 任何连接的 Zivid One+ 相机都不会出现在 API、Zivid Studio 或 ZividListCameras 中。

    • SDK 不再需要 Ubuntu/Linux 上的 zivid-telicam-driver debian 软件包和 Windows 上的 TELICAMSDK 应用程序。Zivid SDK Windows 安装程序将为您提供从计算机中卸载 TELICAMSDK 的选项。

  • SDK 不再支持 Visual Studio 2017。Windows 用户必须迁移到 Visual Studio 2019 或更新版本。

已知问题和限制

  • Nvidia Jetson Orin 的已知问题:

    • 所有 Jetson Orin 模块均受支持,并且 Zivid 已测试了 Orin AGX、Orin NX 和 Orin Nano 模块。

    • SDK 支持 Jetson Orin Nano,但 Orin Nano 总 RAM 仅为 4GB/8GB,由 GPU 和 CPU 共享。4GB 通常不足以运行使用 Zivid SDK 的任何应用程序,而 8GB 在实践中可能不足以满足某些用例的需求,尤其是在进行更长时间的捕获、使用 Stripe/Omni 引擎和/或启用许多过滤器时,并且取决于用户代码中使用的 RAM 容量。如果您使用的是具有 8GB 或更少 RAM 的 Jetson Orin,则应仔细评估应用程序中的 RAM 使用情况。

    • Zivid Studio 中的工具提示在某些情况下可能无法按预期显示。一种临时解决方案是保持另一个持续向屏幕输出的应用程序处于打开状态,例如 “System Monitor”(系统监视器)。

    • 使用键盘快捷键时,Visualizer 类可能无法正确更新点云输出。

  • 有关所有已知问题和限制,请参阅 <https://support.zivid.com/latest/support/troubleshooting.html>,尤其是勘误表。

2.11.1

API

  • 将 Zivid 2 和 2+ 固件更新至版本 1.20.8。

Bug修复

  • 修复了 Zivid 2 和 2+ 的一个错误,在 DHCP 模式下配置的相机在连接到相机时会抛出”超时等待…”异常。此错误是在 SDK 2.11.0 中引入的。

  • 修复了 Zivid 2 和 2+ 的一个错误,连续调用 Zivid::Experimental::Projection::showImage() 可能会投影不正确的图像。自 2.10.0 引入该功能以来,此错误就一直存在。

弃用通知

  • SDK 2.11 是最后一个支持 Zivid One+ 的 SDK。 2.11 是 Zivid One+ 的长期支持 (LTS) 版本。 2.11 将在 2026 年 12 月之前收到补丁更新,修复可能影响 One+ 操作的严重错误或安全问题。

2.11.0

API

  • 为 Zivid 2+ 添加了 Settings::Sampling::Pixel::blueSubsample4x4/redSubsample4x4

    • 该功能可以控制投影信号的颜色以及如何对像素进行采样以进行点云处理。

    • blueSubsample2x2 / redSubsample2x2 模式将投射蓝光或红光,并对十六分之一的像素进行采样(Zivid 2+ 上的分辨率为 612x512)。

    • blueSubsample2x2 / redSubsample2x2 相比,这些新模式将加快数据采集和 GPU 处理时间,并减少 GPU 内存使用。

    • Zivid 2+ 的最大点云捕获速率几乎翻倍(从约 100 毫秒到 50-60 毫秒)。

    • 2x2 模式相比,在 4x4 模式下,在低端 GPU 上使用重负载计算型设置(如 Omni 引擎)进行点云捕获的速度提高了 3 倍。

    • Zivid 2+ 预设设置的命名 ParcelsFastParcelsQualityConsumerGoodsFast 已被修改,它们使用了 4x4 模式。

  • 所有被发现的 Zivid 2 和 2+ 相机现在都将从 Application::cameras() 返回:

    • SDK 将使用多播 DNS 协议发现本地子网上的 Zivid 相机。这包括 IP 配置与 PC 不兼容的 Zivid 相机,例如 IP/子网设置不匹配,或者具有相同的 IP 地址的多台 Zivid 相机。请注意,多播消息是从所有本地网络适配器上的 PC 发出的,包括办公室/LAN 网络适配器等。

    • 与 PC 的 IP 设置不兼容的相机将处于”无法访问”状态。您需要更改相机的 IP 设置,或调整 PC 网络适配器配置,才能使用 Zivid SDK/Studio 中的相机。可以使用 ZividNetworkCameraConfigurator CLI 工具通过序列号更改相机的 IP。请参阅变更日志的 CLI 部分。

    • 被发现的处于繁忙状态(被另一个进程使用)的 Zivid 2 和 2+ 相机也将从 Application::cameras() 返回,其状态为 busy

    • 注意!这是较早期 SDK 版本的行为更改。以前,无法从 Application::cameras() 返回不可访问的相机(换句话说,无法通过 TCP/IP 连接和/或已从另一个进程连接)。

    • 如果 Zivid 配置目录中有 Cameras.yml 文件,则仅返回与 Cameras.yml 中的条目匹配的 Zivid 2 和 2+ 相机。请注意,Cameras.yml 不会影响 One+ 相机。

  • CameraState 类中添加了 Status 枚举,指示相机是否可用、不可访问、繁忙、需要固件更新等。有关可能状态的更多信息,请参阅 CameraState::Status 文档。

  • CameraState 类中添加了 InaccessibleReason 枚举,以提供处于 不可访问 状态的相机的更多信息。该枚举将提示问题是否是 IP 冲突、子网设置配置错误等。

  • Network::IPV4::Address 字符串添加到 CameraState 类中,以返回相机的 IP 地址。

  • Stripe 引擎现在支持所有反射过滤器模式:

    • 除了 Global 反射过滤器之外,还可以选择 Local 反射过滤器,或完全禁用反射过滤器。这在需要重建电缆或管道等细窄物体的情况下非常有用,但可能会导致反射处理和点云质量有所损失。

  • 通过更好的采集、数据传输和处理流程提高了连续采集的速度:

    • SDK 现在将能够在传输/处理使用同一相机的上一个(2D 或 3D)捕获的同时开始采集下一个(2D 或 3D)捕获。在此版本之前,只有在同一相机上的所有先前捕获完成所有传输和处理后,相机的下一次捕获才会开始。

    • 高端 Nvidia GPU 上的 2D+3D 总捕获时间的改进约为 15-20 毫秒,集成的英特尔 GPU 上的改进约为 50-70 毫秒,具体取决于网络速度和 GPU 性能。

    • 要尽可能快地连续捕获,请在上一个 Camera::capture() 返回后尽快调用 Camera::capture() (即在该捕获的图像采集完成之后) 。请注意,调用某些 Frame/Frame2D 方法(例如`frame.pointCloud()` 或者 frame.imageRGBA() 将导致阻塞,直到该捕获的处理完成。因此,为了获得最大速度,您应该避免在开始下一次捕获之前在同一线程中调用这些方法,例如通过使用单独的捕获/处理线程或使用 std::async

  • 改进了 Zivid 2 和 2+ 相机在较弱 GPU 上使用 Stripe/Omni 引擎的 Camera::capture() 返回时间:

    • 在此版本之前,这种情况下的 capture() 不会在捕获完成后立即返回。采集完成后,在 capture() 返回之前,可能会有长达 100-200 毫秒的延迟。这种延迟只会发生在较弱的 GPU 上,通常是英特尔集成 GPU。从此版本开始, Camera::capture() 将在采集完成后几毫秒内返回,与捕获设置和 GPU 无关。

  • 当计算受限(低曝光时间)时,Stripe/Omni 引擎的捕获速度提高了 10%。

  • Image 类添加了构造函数,该构造函数从 .png/.bmp/.jpg 文件的路径构造图像。

  • PointCloudFrame2D 类添加了新的 ColorSRGB 输出格式,用于在 sRGB 色彩空间中复制颜色:

    • sRGB 色彩空间适合在显示器上显示图像以供人类观看。与现有的(线性)色彩格式相比,使用 sRGB 输出格式,颜色将显得更明亮、更准确。

  • 更改了 Camera::toString() 的输出:

    • 添加了新的 Status 字段。 Network Path 字段更改命名为 IP AddressInternal camera idProjector firmware tag 字段被移除。

  • 只要用户持有文件相机的句柄,断开连接的文件相机现在就会从 Application::cameras() 返回。在此版本之前,断开连接的文件相机不会包含在 cameras() 中。

  • 将 Zivid 2 和 Zivid 2+ 固件更新至版本 1.20.6。

C++

  • 添加了 Zivid::Image::resolution() 成员函数,该函数返回 Resolution 对象中的图像尺寸。

  • 添加了新函数 Experimental::Calibration::pixelMapping() ,用于检索有关子采样捕获中的像素如何映射到全分辨率捕获中的像素的信息。

.NET

  • 添加了实验性功能 projection API(投影接口),用于使用 Zivid 投影仪投影自定义的彩色图像:

    • 此 API 是在 2.10.0 中添加的,支持 C++ 和 Python,现在可支持 .NET。

    • 适用于 Zivid 2 和 Zivid 2+。

  • Image 类添加了 Resolution 属性,该属性返回 Resolution 对象中的图像尺寸。

Bug修复

  • 修复了 .NET 包装器中的一个错误,即 Zivid.NET.CloudVisualizer 实例无法在同一进程中多次运行。

  • 修复了 Zivid 2+ 在将 Settings::Sampling::Pixel 设置为 blueSubsample2x2/ redSubsample2x2 并与 Settings::Sampling::Color::rgb 组合使用执行 3D 捕获时相机会在短时间使用100W以上的功率的问题。在这种情况下,相机的功耗现在将保持在 100W 以下,除非 Config.yml 中的 Camera/Power/Limit 选项被设置为 unlimited 。有关功率限制配置的更多信息,请参阅 2.10.1 的变更日志。

  • 修复了在特定的罕见情况下与相机断开连接时可能发生的 "StructuredLightCamera::~StructuredLightCamera was invoked in the wrong thread" 的异常。

CLI

  • ZividNetworkCameraConfigurator 现在可以仅提供相机的序列号来配置相机 IP 设置,即使相机无法通过 TCP/IP 访问:

    • 该工具可以使用多播 UDP 消息为任何发现的 Zivid 相机配置网络设置。这简化了更改相机网络配置的过程,因为您无需通过 TCP/IP 连接到相机即可更改其网络配置。

    • 此功能要求相机的固件版本已为 1.17.1 或更高版本(来自 SDK 2.10.0 或更高版本)。具有旧固件版本的相机仍需要您通过直接 TCP/IP 连接(如 SDK 2.10 及更早版本)连接到相机。

  • ZividListCameras 现在将列出所有已发现的 Zivid 2 和 2+ 相机,甚至是无法访问或繁忙的相机。 Status 字段将为您提供相机的状态。有关详细信息,请参阅 API 部分。

  • ZividListCameras 将不再在每个发现的相机上自动调用 camera.connect() 。您可以通过传递参数 --test-connect 连接到每个相机,这对于确定是否可以通过 TCP/IP 访问相机非常有用。

  • 如果您的 PC 上有 Cameras.yml 文件,ZividListCameras 现在将打印一条通知消息。

  • ZividListCameras 每个相机的输出都发生了变化。请参阅上面 API 部分中对 Camera::toString() 更改的描述。

Studio

  • 3D 视图和 2D 彩色图像视图中的颜色/RGB 值现在将显示为 sRGB 色彩空间:

    • 与以前在线性 RGB 色彩空间中显示颜色的 Studio 版本相比,这使得彩色图像在显示器上看起来更明亮、更准确。

    • 从 Studio 保存彩色/RGB 图像时,用户可以选择是否要使用 sRGB 或线性色彩空间。

    • 以 .ply、.pcd 或 .xyz 格式导出的 3D 点云仍将在线性 RGB 色彩空间中存储颜色。

  • Studio 现在将显示所有无法访问和繁忙的相机,这些相机以前不会通过 API 或 Studio 显示。对于处于不可访问状态的相机,会显示有关如何配置相机的帮助说明。

  • 在相机选择器组合框中添加了 IP 地址和相机状态。

  • Studio 现在将定期检查所有相机的连接状态。 Studio 将自动检测新相机、断开连接的相机和状态更改(例如更改的相机状态或更改的 IP 地址)。

移除支持

  • SDK 不再支持 AMD 计算设备/GPU,并会给出错误消息:

    • Nvidia GPU 和 Intel GPU 是受支持的计算设备。

    • AMD CPU 可以使用,只要它们与 Nvidia 或 Intel GPU 一起使用即可。

    • 用户可以通过将 Config.yml 选项 ComputeDevice/AllowUnsupported 设置为 yes 来选择使用不受支持的计算设备运行。然而,这样的设置可能会产生意外的结果和错误,并且未经 Zivid 测试。请参阅知识库以获取更多信息。

弃用通知

  • 自 2.10.1 起已弃用对 Visual Studio 2017 的支持,并将在下一个 SDK 版本中移除。我们建议迁移到 VS 2019 或更高版本。

已知问题和限制

2.10.1

API

  • 添加了对 Zivid 2+ M60 和 Zivid 2+ L110 的支持:

  • 仅限 Zivid 2+ 相机:现在可以在使用 Stripe 引擎时禁用对比度失真校正过滤器:

    • 对比度失真校正过滤器将平滑边缘,因此禁用此过滤器对于保留边缘细节非常有用。

    • 注意:Zivid 2 和 One+ 相机没有变化,在使用 Stripe 引擎时仍然需要打开此过滤器。

  • Settings::Processing::Filters::Cluster::Removal::MaxNeighborDistance 的最小可设置值从 4 降低到 2。使用低于 4 的 MaxNeighborDistance 值有助于消除某些场景中的更多不良的点。

  • 仅限 Zivid 2+ 相机:投射白光时的最大亮度设置从 2.5 降低到 2.2:

    • 使用 Settings::Sampling::Pixel::all 进行 2D 捕获和 3D 捕获的最大亮度从 2.5 降低到 2.2。如果您使用亮度 > 2.2,将会抛出异常消息。

    • API 中 2D 捕获的默认亮度从 2.5 更改为 2.2。 3D 捕获的默认值仍为 2.5。

    • 进行此更改是为了确保 Zivid 2+相机在捕获时保持低于 100W 的功耗。如果您的应用允许超过 100W 的功耗,您可以通过 Config.yml 中的选项 “Camera/Power/Limit” 移除此限制并继续使用 2.5 的亮度值。

    • 有关更多信息,请参阅 <https://support.zivid.com/en/latest/reference-articles/settings/acquisition-settings/projector-brightness.html>。

  • 将 Zivid 2 和 Zivid 2+ 固件更新至版本 1.18.4。

Bug修复

  • 修复了 Zivid 2 和 2+ 在未以 10 GbE 运行时可能会丢弃以太网数据包并失去连接的错误。

  • 修复了在 Zivid 2+ M130 中使用对比度失真校正过滤器时可能导致点云过度平滑的错误。

弃用通知

  • 对使用 Visual Studio 2017 的支持已弃用,并将在即将发布的 SDK 版本中移除:

    • Zivid 建议过渡到较新的 Visual Studio 版本。

  • 2.10.1 已弃用对使用 AMD 计算设备/GPU 的支持,并将在 2.11.0 中移除:

    • 由于使用率偏低和驱动程序中 OpenCL 稳定性的问题,AMD 计算设备不再受支持。

    • Nvidia GPU 和 Intel GPU 将成为受支持的计算设备。

    • 通过启用 Config.yml 文件中的选项,可以选择使用不受支持的计算设备运行 SDK。然而,这样的设置可能会产生意外的结果和错误,并且未经 Zivid 测试。

2.10.0

API

  • 添加了对 Zivid 2+ M130 的支持:

    • Zivid 2+ M130 提供了更高分辨率的点云和 2D 彩色图像、改进了颜色数据以及增加了对象覆盖范围。要了解有关此相机的更多信息,请参阅 <https://www.zivid.com/zivid-2-plus-m130>。

  • 为 Zivid 2+ 添加了新的 Omni 视觉引擎:

  • 为 Zivid 2 和 Zivid 2+ 添加了 Settings::Sampling::Pixel::all/blueSubsample2x2/redSubsample2x2

    • 控制投影颜色以及如何对像素进行采样以进行点云处理。

    • blueSubsample2x2/redSubsample2x2 将投射蓝光或红光,并对四分之一的像素进行采样。这些选项可减少捕获时间、内存使用量和点云的分辨率。它还可能在环境光和反光物体上提供更好的性能。

    • Zivid 2+ 的默认值是 blueSubsample2x2 。如果您想要全分辨率 (5MP) 点云,请设置为 all

    • Zivid 2 的默认值是 all

    • 如果您使用的是 AMD GPU,请参阅下面的 “此版本中的新已知问题” 章节了解已知问题。

  • 添加了 Settings::Sampling::Color::rgb/disabled 用于配置颜色采样:

    • 当设置为 disabled 时,颜色数据将不包含在点云中。

    • disabled 选项可以优化捕获速度。

    • disabled 选项可以避免在 Settings::Sampling::Pixel 子采样模式中出现单独的白色照明。

    • 默认为 rgb

  • 添加了 Settings::Processing::Filters::Noise::Suppression :

    • 减少点云中的噪声和异常值。

    • 该滤波器还可用于减少相互反射引起的波纹效应。

    • 如果您需要区分非常精细的细节并因此需要避免任何平滑效果,请考虑禁用此过滤器。

  • 添加了 Settings::Processing::Filters::Noise::Repair

    • 通过修复由于噪声点而丢失数据的区域来提高表面覆盖率。

    • 如果您需要点云中的所有点都具有高置信度,请考虑禁用此过滤器。

  • 添加了实验性 Zivid::Experimental::Projection API,以使用 Zivid 投影仪投影自定义彩色图像:

    • 适用于 Zivid 2 和 Zivid 2+ 相机型号。

    • 可以使用与场景中的 3D 点相对应的投影仪像素进行照明。

  • 扩展了实验性功能的内参 API,以获得适合给定 SettingsSettings2D 的相机内参:

    • 随着 Settings::Sampling::Pixel 的引入,单个相机模型可以产生多种输出分辨率。使用新的内参函数来获取适合您的输出分辨率的相机内参。

    • 原始函数将产生与给定相机模型的默认 Settings 相对应的内在函数。请参阅 <https://support.zivid.com/en/latest/reference-articles/default-settings.html> 中的所有默认设置。

  • 添加了适应 50 Hz 和 60 Hz 环境光源的设置预设。

  • 使用更大的 HoleSize 值改进了孔填充过滤器的性能:

    • 在高端硬件上速度提高了 2-4 倍,在低端硬件上速度提高高达 15%。

    • 速度提升随着 HoleSize 值的增大而增加,从 HoleSize 大约 0.2-0.3 开始。

    • 对于较小的 HoleSize 值(大约 0.1)和高端硬件,过滤器处理时间可能会较久,大约 5-10 毫秒。

  • 更改了 Zivid 2 M70 和 Zivid 2 L100 相机的 CameraInfo::ModelName 字符串:

    • M70 的型号名称从”Zivid Two” 更改为 “Zivid 2 M70” 。

    • L100 的型号名称从 “Zivid Two L100” 更改为 “Zivid 2 L100” 。

    • 要以编程方式检查相机型号,我们建议使用 CameraInfo::Model 枚举。

  • 移除了对加载 FileCameraZividOne.zfc 文件相机的支持。新文件相机可在 <https://support.zivid.com/en/latest/academy/camera/file-camera.html> 获取

  • 将 Zivid 2 和 Zivid 2+ 固件更新至版本 1.17.1。

  • 移除了对 Ubuntu 18.04 的支持。

C++

  • Zivid::Image 添加了构造函数,以从开始和结束迭代器/指针创建图像。

  • 添加了类 Zivid::PointXY 来表征 2D 空间中的点。

  • Zivid::Array2D 添加了全局 begin/end/cbegin/cend 迭代器函数。

Bug修复

  • 修复了 Frame::clone() 执行点云数据的浅复制(而不是深复制)的错误。

  • 修复了点的 X 和 Y 坐标可能为 NaN 而 Z 不是 NaN 的错误。此错误发生的概率非常低,并且仅在启用 ContrastDistortion 过滤器时发生。

Studio

  • 添加了对 2D 捕获的支持。

  • 添加了为设置预设启用环境光适应(50Hz/60Hz/Off)的选项。

  • 现在,在启用 Capture 按钮之前,用户需要选择设置预设或捕获助手,或更改为手动模式。

  • 修复了设置滑块的视觉位置与文本框中显示的实际值不匹配的错误。

  • 移除了选择 Stripe Engine 时显示的信息框。

此版本中的新已知问题

2.9.0

API

  • 添加了聚类删除过滤器:

    • 从点云中移除小簇和单个漂浮的噪点。这些噪点可能来自反射和部分遮挡区域。

    • MaxNeighborDistance 设置控制了算法在对点进行分组时的严格程度。低设定值将倾向于移除稀疏、嘈杂的数据和反射平面。谨慎使用低设定值以避免移除了正常的有用数据。

    • MinArea 设置以mm^2为单位指定,并定义了需要保留的聚集点必须具有的最小面积。

    • 该过滤器在高端Nvidia和AMD GPU上的处理开销约为10毫秒,在英特尔GPU上为75-225毫秒。

    • 默认情况下,过滤器处于关闭状态。

    • Capture Assistant将打开此过滤器。

  • 改进的高斯过滤器:

    • 高斯过滤器将不会再在前景和背景边缘之间创建错误的平面,例如在对象的背面/阴影侧。新过滤器在保留物体的大尺度三维形状方面也稍好一些,例如盒子的正面边缘。

    • 在嘈杂的平面上,相同的Sigma参数值将提供与先前版本的过滤器大致相同的平滑效果。

  • 增加了感兴趣区域:

    • 可以在设置中指定感兴趣区域框。此ROI盒外的所有点都将被过滤掉(被设置为NaN)。

    • 该ROI盒由3个点(O、A和B)指定,它们定义了两个向量OA和OB。点O和向量OA和OB共同定义了一个平行四边形。还需要设置两个范围(extent )参数的数值,用于定义平行四边形如何沿其表面法向量拉伸,以定义一个盒子。

    • 也可以指定深度 (Z) 范围。这将过滤掉所有Z坐标在此范围之外的点。

    • 感兴趣区域功能不会减少捕获时间或点云中的数据量。

    • 感兴趣区域功能仅增加了非常小的处理开销。

  • Camera::capture() 函数现在将在图像采集完成后立即返回。

    • capture() 返回时,所有投影图像都已获取并且投影仪已停止投影图案。此时您可以安全地移动相机,将机器人移动到工作区,或从与同一工作区重叠的第二个相机进行捕获。请注意,在捕获完成并且点云可用之前,仍然会有剩余的数据传输和处理。

    • 调用 frame.pointCloud() 将阻塞,直到数据处理完成并且点云可用。

    • 有关详细信息,请参阅 capture() 函数的API文档。

  • 添加了一个新的实验性空洞填充过滤器:

    • 空洞填充功能会在圆形邻域中从其邻居中插入点云中的缺失值。

    • HoleSize 定义了要填充的空洞的相对直径。增加它会填充更多的点,但需要更多的计算时间。允许的最大孔尺寸与距离成比例,因此我们允许在更远的距离处填充更大的孔。

    • 在考虑是否应填充点时,参数 Strictness 控制了其严格程度。更高级别的严格程度将要求缺失点被更多边上的有效点包围,该缺失点才会被填充。增加这个值会填充更少的点,但填充非圆形间隙的可能性较小,例如两条边之间的间隙。

    • 空洞填充功能仅会改变3D点,SNR和颜色数据保持不变。

    • 有关详细信息,请参阅 <https://support.zivid.com/en/latest/reference-articles/settings/processing-settings/hole-filling-filter.html> 。

  • 捕获速度的改进:

    • 高斯平滑过滤器现在的处理速度更快。这在Intel GPU上最为明显,其中使用默认Sigma启用过滤器的时间从20-30毫秒减少到5-10毫秒。这种效果在较高的Sigma值时甚至更强。

    • 使用Stripe engine捕获时的处理速度现在更快。这在Intel GPU上最为明显,Stripe engine的总捕获时间(采集 + 处理)最多减少了15%。

    • Zivid Two上的采集过程进行了优化,无论哪种GPU,默认设置下的总采集时间(采集 + 处理)减少了约10%。

  • Zivid Two的温度稳定模式默认为启用状态,不再处于试验阶段。

    • 在此模式下,相机在空闲时会消耗更多电量,以保持相机内部温度更加一致。更一致的温度会降低高占空比捕获周期和低占空比捕获周期之间的尺寸准确度差异。

    • 启用此模式时,一些黄光会从投影机中逸出。

    • 可以使用配置文件禁用此模式。请参阅 <https://support.zivid.com/en/latest/reference-articles/thermal-stabilization.html> 。

  • 增加了预设参数的API:

    • 这些预设参数由Zivid调整而来,针对特定场景/用例和不同相机型号进行了优化。

    • 这些预设参数在命名空间”Zivid::Presets”中可用。

    • 注意:在未来的SDK中可能会增加新的预设参数,更改或者完全移除现存的预设参数。所以我们建议将您要使用的预设参数保存为settings.yml文件,然后直接加载该文件,以避免在未来的SDK版本中出现可能的更改。

  • 添加了对基于Zivid One+和Zivid Two的新文件相机的支持:

  • 增加了对保存的.zdf文件的现场校正/验证的支持:

    • captureCalibrationBoard(Zivid::Camera &camera)detectFeaturePoints(const Zivid::Frame &frame) 函数被添加到 Zivid::Experimental::Calibration 中。

  • 增加了对具有负数Z值点的过滤。这些点现在被设置为NaN。请注意,这些点通常会被典型的捕获设置过滤掉,通常是通过噪声或离群值过滤器。

  • 增加了函数 Frame2D::cameraInfo() 以返回用于捕获图像的相机的 CameraInfo 对象。

  • 向 PointCloud 和 Image 类添加了对 ColorBGRA 输出格式的支持。

  • 添加了一个新的异常消息,会在加载包含无法识别/未知YAML节点的.yml文件时出现。在此之前,这些节点会被忽略。请注意,如果您遇到此异常,问题也可能是.yml文件顶部的 __version__ data 节点需要递增。

  • 现在可以同时从多个线程安全地调用 Zivid::Camera 对象上的方法,例如使用 std::async 。底层情况是,函数调用被放入一个per-camera队列中并按顺序执行。请注意,您仍必须从同一线程列出相机、连接到相机并进行固件升级,因为这些操作并非线程安全的。

  • 对于所有Zivid One+相机,Settings::Processing::Filters::Reflection::Removal::Enabled 的默认值从 false 更改为 true。如果您使用的是Zivid One+相机,并且想要在没有反射过滤器的情况下进行捕获,请确保将此设置更改为 false (或 .yml 文件中的 no )。

  • 将Zivid Two固件更新至1.14.7版本。

  • Ubuntu 18.04将于2023年4月30日结束官方支持。此SDK发布已决定不再支持Ubuntu 18.04,并预计在下一版本中移除。

C++

  • 当the minimum value大于the maximum value时,Zivid::Range 的构造函数现在将抛出异常。

Bug修复

  • Linux:修复了libZividCore.so从第三方库(如boost和asio)导出弱符号的错误。这可能会导致同时使用这些库的用户出现动态链接问题。

此版本中的新已知问题

  • 当使用Nvidia驱动程序510并使用两个或多个相机背靠背捕获时,有时会在点云的上部看到不正确的图案/条纹。此问题仅在此Nvidia驱动程序版本上出现。如果您使用多个相机拍摄,我们建议使用不同的Nvidia驱动程序版本。驱动程序470、515和525已经过测试并且运行良好。如果您只使用一个相机,则不会出现此问题。

  • 有关所有已知问题和限制,请参阅 <https://support.zivid.com/latest/support/troubleshooting.html>,尤其是勘误表。

Studio

  • Tools 菜单下添加了现场校正/验证向导。

  • 增加了预设参数功能。预设参数可以在 Capture box 框中的 Assisted 选项卡中找到。

  • 在感兴趣区域框设置下添加了一个点选择器图标,用于从深度/颜色/信噪比/法线图中选择一个点。

  • 增加了一个按钮来显示/隐藏ROI盒的线框。

  • 在右侧面板增加了一个帮助按钮,会无法找到相机时出现。 点击Help按钮将转到知识库里的相关内容。

  • Stripe engine的"Enable Required Filters"按钮现在还会将反射移除过滤器设置为 global 模式。

  • 修复了多次快速单击"Start Firmware Update"按钮可能导致更新完成后出现"The camera firmware is already up to date"错误的问题。

  • 单击设置树中的输入字段现在将自动选择文本。

  • 改进了一些按钮、选择框和其他UI元素的工具提示。

2.8.1

API

  • ZividExperimentalHandEyeCalibration CLI工具现在可以读取通过Zivid SDK保存的 Zivid::Matrix4x4 YAML文件了。该工具仍然可以读取以前SDK版本中使用的旧的OpenCV YAML文件格式。如果提供了 --transform-file 参数,该工具将使用与输入文件相同的文件格式来保存手眼标定变换。

Bug修复

  • 修复了Windows中在调试模式(Debug mode)下使用Zivid Two进行捕获时会发生的调试断言的问题。该错误是在SDK 2.8.0中引入的。

  • 修复了HDR捕获中的错误,在该错误中,当使用了非常暗和非常亮的采集组合时,彩色图像可能会出现奇怪的伪像。该错误是在SDK 2.7.0中引入的。

  • 修复了即使日志目录的大小超过了 “MaxTotalSizeMB” 配置(默认为1000MB)也不会删除旧的日志文件的错误。当日志文件超过 HistorySize 配置(默认30天)时,它们仍将被删除,并且对于单个进程,日志不会超过 MaxFileSizeMB * (1 + RotationCount) MB(默认为 50MB*3 = 150MB)。该错误是在SDK 2.7.0中引入的。

  • 修复了在发现Zivid Two相机时可能出现 "Unknown product number" 报错的问题。该问题是在SDK 2.8.0中引入的。

Studio

  • Studio:修复了使用触控板在Studio中拖动滑块时可能发生的 “Cannot assign [undefined] to double” 的错误。

2.8.0

API

  • 提升了Zivid Two的捕获速度:

    • 每次采集中从Zivid Two传输到PC的数据量都会减少。当网络链接成为瓶颈时,这可以提高捕获速度,例如当相机和PC之间的连接速度低于10Gbps时,或者当使用多个相机同时拍摄时。

    • Zivid Two现在可以一个接一个地获取HDR序列中的所有图像。在以前的SDK中,相机会等待一次采集中的所有图像传输回PC,然后才能开始下一次采集。这提高了HDR的捕获速度,并提供了更短且更可预测的(与网络速度无关)采集时间。请注意,当亮度设置高于1.0时,热安全机制仍会导致采集暂停。相关详细信息,请参阅:<https://support.zivid.com/en/latest/reference-articles/settings/acquisition-settings/projector-brightness.html>。

    • 在1Gbps连接下的捕获速度提高了1.5倍至2.5倍。在10Gbps连接下,Windows上的捕获速度提高了5%-50%,Linux上提高了0%-15%。使用HDR和/或Stripe engine时可以看到最大百分比的提升。

    • 通过拥塞的网络链接同时使用多个Zivid Two相机进行捕获时的捕获速度得到了提高。例如,使用1Gbps交换机同时在3台相机上进行3帧HDR采集的捕获速度提高了2.5倍至3倍。

  • 添加了自动发现Zivid Two的功能:

    • SDK现在将使用多播DNS协议在网络上搜索可用的Zivid Two相机。已被发现且可访问的相机将通过SDK和Zivid Studio可见。

    • 如果Zivid配置文件夹中存在”Cameras.yml”文件,那么SDK中只会显示该文件中列出的IP/主机名,并且不会执行自动发现。

    • 相机必须更新到最新的固件版本(固件 1.9.6,包含在SDK 2.8或更新的版本中),才能被自动发现。

    • 相关详细信息,请参阅 <https://support.zivid.com/en/latest/getting-started/software-installation/zivid-two-network-configuration.html>。

  • Matrix4x4 类添加了保存和加载方法。

  • 添加了对将”Image”对象保存为JPG和BMP格式的支持。

  • 添加了对Ubuntu 22.04的支持。

  • 添加了对Zivid L100的支持。

  • 在之前的SDK中,Camera::closeAperture() 方法调用对Zivid Two没有作用。此方法现在将引发异常,说明Zivid Two不支持此功能。

  • Zivid Two固件更新至1.9.6版本。

C++

  • 在Array2D类中添加了 beginendcbegincend 方法。

Windows

  • 添加了一条编译错误,如果在Visual Studio中使用static runtime library,则会导致该错误。 Zivid SDK必须使用dynamic runtime library、option /MD 或/MDd来构建。这可以在Visual Studio项目中的 “C/C++” -> “Code Generation” -> “Runtime Library” 下进行配置。

Bug修复

  • 仅限于Zivid Two:修复了色彩平衡计算不正确的问题。

  • 仅限于Zivid Two:修复了固件更新可能因网络上传速度慢而导致超时和失败的问题。

Studio

  • 添加了SNR map(信噪比图)。

  • 添加了法线图(Normal map)。

  • 在左上角添加了下拉菜单以在不同视图之间切换。

  • 在3D视图顶部添加了下拉菜单以选择点的大小。

  • 添加了快捷键1至5,以在不同视图之间进行选择。

  • 调整页脚预览图的设计,避免遮挡页脚栏中的文字。

已知问题和限制

2.7.0

API

  • 添加了反射过滤器的新的实验性功能Local mode:

    • 一个新的设置 Settings::Processing::Filters::Reflection::Removal::Experimental::Mode 被添加到选择模式,可以是 localglobalglobal 对应了旧的反射过滤器,是默认值。

    • Local模式在窄的物体上将保留更多的3D数据,相较于global模式,通常能够移除更多的反射伪像,以及具备更快的处理速度。

    • Global模式通常在移除点云中的异常点方面更加出色。

    • Local模式是实验性功能,可以在未来的版本中发生更改。

  • 添加了一个新的设置 Settings::Processing::Color::Experimental::Mode

    • 此设置有三个选项:automatictoneMappinguseFirstAcquisition

    • automatic 模式是默认的,对应于之前的SDK默认表现。此模式等同于在单次捕获时使用 useFirstAcquisition 和在HDR捕获时使用 toneMapping

    • useFirstAcquisition 将始终仅使用设置中提供的第一次采集的颜色数据。此模式可用于单次采集和多次采集HDR捕获。此模式提供比”toneMapping”更精细的颜色控制,即使场景内容发生变化也能提供稳定的颜色输出。

    • toneMapping 结合了所有采集的颜色数据,以创建一个合并和标准化的彩色图像。

    • 这个新设置替换了自SDK 2.3.0中添加的 Settings::Processing::Color::Experimental::ToneMapping::Enabled 设置。

    • 相关详细信息,请参阅 Settings::Processing::Color::Experimental::Mode 的文档。

  • Zivid Two:添加了新的实验模式,在两次捕获之间保持内部相机温度稳定。

  • Zivid Two:添加了对使用多播DNS以.local标签结尾的名称查询的支持。

  • DetectionResult 类添加了 pose 方法,用于返回标定板的位姿。

  • inverse 方法添加到返回倒置矩阵的 Matrix4x4 类中。

  • Zivid One+:改进了在使用Phase engine时对无信号像素(例如过饱和像素)左侧或右侧的像素的处理。这些像素以前可能会在包含无信号像素的区域中产生少量浮点。

  • Zivid One+:改进了对无法在Phase engine模式中可靠地解码的像素的过滤。如果关闭噪声和离群值过滤器,这些像素以前可能会显示为浮点,主要是在低信号区域。 Zivid Two已经存在类似的过滤功能。

  • 添加了对较新的AMD GPU的支持:

    • 使用具有RDNA架构的AMD卡在以前的SDK版本上会出错,但现在已经支持。

    • AMD RDNA卡(如 RX5500 和 RX5700)在Ubuntu上可能不稳定,具体取决于安装的GPU驱动程序版本和操作系统版本。如果您使用这些型号,我们建议您仔细测试您的设置的稳定性。

  • 提高了使用Stripe engine时的捕获速度:

    • 在高端Nvidia GPU上能够获得到大约3%-12%的提升,在Intel集成GPU上能够获得到5%-15%的提升。将在使用HDR捕获时获得最大程度的提升。

  • 提高了使用Phase engine的HDR捕获时的捕获速度:

    • 在高端Nvidia上能够获得到大约2%-12%的提升。在低端英特尔集成GPU上有类似的提升,而高端集成英特尔GPU的性能与SDK 2.6相似。

    • 较短的HDR序列将获得最高百分比的提升。

  • 使用Intel驱动程序时,使用Phase engine进行单次采集捕获的捕获速度出现下降:

    • 与SDK 2.6相比,捕获时间增加了5%至15%,具体取决于设置。启用多个过滤器时,百分比降级最多。

    • 这不适用于Stripe engine或者HDR捕获,请参阅以上几点。

  • 将法线的处理时间缩短了约50%:

    • 现在,在Nvidia GPU上计算全分辨率点云法线的典型处理时间约为5-20毫秒,而在集成英特尔GPU上则为15-40毫秒,具体取决于GPU的性能。

  • 更改为在内部使用新的GPU计算框架。

  • 由于计算流程的初始化,与相机的连接时间增加了:

    • 与SDK 2.6相比,在进程中首次连接相机可能需要多出6-10秒的时间。

    • 这种连接时间的增加对于每个相机型号,每个 Zivid::Application 对象只会发生一次。

  • 添加云连接日志以提高产品质量和客户服务体验:

  • 添加了一个更好的错误信息。如果一个 Zivid::Application 对象在已经存在时创建了一个新的 Zivid::Application 对象,将导致该错误。

  • 同时使用多个Zivid One+相机现在不是实验性的功能了:

  • 将Zivid Two固件更新至1.7.4版本。

  • 移除了了实验性的设置 Settings::Processing::Color::Experimental::ToneMapping::Enabled

    • 此设置被 Settings::Processing::Color::Experimental::Mode 替换(见上文)。

  • 移除了对Ubuntu 16.04的支持。

C++

  • Matrix4x4 类添加了 beginend 成员函数的 const 重载。

.NET

  • 在.NET包装器中添加了一个新的 Matrix4x4 类,对应于C++ API中的同名类。

    • Matrix4x4 构造函数将2D .NET数组作为输入。

    • Matrix4x4 提供了一个 Inverse 方法,该方法返回反转矩阵。

    • Matrix4x4 提供了一个返回2D .NET数组的 ToArray 方法。

  • PointCloud 类添加了 Transform 方法重载,该类以 Matrix4x4 作为参数。

Bug修复

  • 修复了 Zivid::Application 析构函数中的内存泄漏,当在同一进程中按顺序创建多个应用程序时,可能会导致内存不足错误。

  • 修复了在Ubuntu上使用带有Intel GPU的Visualizer类时用户可能会收到”An OpenCL error occurred: Failed to read buffer”的错误。

  • 修复了一个AMD GPU相关的错误,在该错误中,使用HDR捕获会在不同的捕获中返回不一致的结果。

  • 修复了一个AMD GPU相关的错误,在该错误中应用程序可能在几次捕获后崩溃。

  • 修复了在某些情况下 estimateIntrinsics 函数会返回次优内在参数的错误。

  • Zivid Two:修复了一个TCP/IP多播安全漏洞,在该漏洞中,相机使用无效的源地址(RFC 1122 ch. 4.2.3.10)响应TCP连接。

Studio

  • 修复了用户在Ubuntu上使用英特尔GPU进行捕获时可能会出现”OpenGL error: GL_INVALID_OPERATION”的错误。

  • 修复了Ubuntu上的”Open Frame”文件对话框可能无响应/冻结的错误。

  • 在右侧面板的每个采集项下的”…”上下文菜单下添加了一个”Move to top”的操作。

已知问题和限制

2.6.1

Bug修复

  • 修复了在Windows上加载文件名中包含非ASCII字符的.zdf文件会引发”Failed to load frame from file”异常的错误。

  • 修复了SDK在检查Pose变换矩阵的有效性时使用了过于严格的限制的问题,这可能导致手眼或多相机标定时出现异常。

  • 修复了在使用相同采集设置执行HDR捕获时,SDK 2.6.0中引入的颜色输出的意外变化:

    • 在SDK 2.5.0及更早版本中,当对HDR中的所有采集使用相同的采集设置进行HDR采集时,输出彩色图像将不会进行色调映射。在SDK 2.6.0中,意外的行为变化导致彩色图像在这种情况下被执行色调映射。在SDK 2.6.1中,此更改已恢复,以与SDK 2.5.0及更早版本中的表现一致。

    • 请注意,可以通过将 Settings::Processing::Color::Experimental::ToneMapping::Enabled 设置为 always 来启用色调映射。

2.6.0

API

  • 在Settinfs中添加了Diagnostics::Enabled:

    • 启用诊断功能时,会在捕获期间收集额外的诊断和调试信息。此信息将保存在”.zdf”文件中,Zivid的支持团队可以使用这些信息来解决问题并提供更好的帮助。

    • 启用诊断功能会增加捕获时间和RAM使用率,以及 .zdf 文件的大小。

    • 建议仅在向Zivid的支持团队报告问题时启用诊断功能。

  • 仅限于Zivid One+:重要的产品生命周期改进:修复了如果Zivid One+相机在通电了几周时间之后才触发第一次捕获的情况下,可能导致投影仪损坏的问题。

  • 仅限于Zivid One+:如果将2D采集中的亮度设置为0,则在3D捕获和2D捕获之间切换时移除了时间损失。

  • 提高使用Stripe engine时的捕获速度:

    • 使用 NVIDIA GPU 测量的捕获速度提高了 5% 到 15%。

    • 与 2.5 相比,使用快速 CPU 和慢速 GPU(例如 Intel 集成 GPU)将具有大致相同或稍差的性能(差 1%-5%)。

  • 在 FrameInfo 类中添加了 CPU Model、ComputeDevice Model、ComputeDevice Vendor 和 OperatingSystem。

  • 添加了对标定板旋转的支持以进行现场校正/验证。从相机的角度来看,板现在可以定向为 0、90、180 或 270 度(+/- 15 度)。

  • 改进了用于手眼标定和现场标定/验证的棋盘检测算法的稳健性,,以应对标定板出现明显反射或眩光导致的问题。

  • 改进了使用”ZividInfieldCorrection”验证现场标定时的命令行体验:

    • 现在可以重复验证,而无需重新连接到相机。

    • 验证还提供尺寸正确性测量的统计摘要。

  • 改进了尝试将文件保存到不存在的目录时的异常消息。

  • 不再支持从使用 SDK 1.x 保存的 .zdf 文件构造 Frame 对象并将该 Frame 对象重新保存到 .zdf 文件,这样操作将会引发异常。

  • .zdf 文件的基础格式在此版本中已更改:

    • 如果在 SDK 2.5.0 或更早版本中打开 2.6.0 或更高版本的 .zdf 文件,SDK 将抛出异常消息”Failed to load frame from file”。

    • 旧的 .zdf 文件仍然可以使用 API 或 Zivid Studio 加载。

  • 将 Zivid One+ 固件更新至版本 1.9.2。

  • 将 Zivid Two 固件更新至 1.6.0 版。

  • 对 Ubuntu 16.04 的支持将从 SDK 2.7 中移除。

C++

  • <Zivid/Zivid.h> 头文件将不再包含Experimental头文件。必须明确包含Experimental头文件。

Studio

  • 修复了快速滚动鼠标滚轮时 3D 点云可能会上下翻转的错误。

已知问题和当前限制

2.5.0

API

  • 添加了对法线的支持。

    • 可以使用 copyNormalsXYZ() 从 PointCloud 对象计算法线。这将返回点云中每个点的单位法线向量的二维数组。

  • CameraInfo 类中添加了 Model 枚举。此枚举可用于区分相机型号: Zivid One+ Small/Medium/Large and Zivid Two。

  • 添加了对将组织点云导出为 .pcd 格式的支持(具有正确的 WIDTH 和 HEIGHT 属性)。要启用此修复,您必须选择使用 Config.yml 文件。将配置值 APIBreakingBugFixes / FileFormats / PCD / UseOrganizedFormat 设置为 true。有关如何编写和使用 Config.yml 文件的示例,请参阅 <https://support.zivid.com/latest/academy/getting-started/zivid-software-installation/gpu/select-specific-gpu-for-zivid-software.html>

  • 改善了”Stripe”视觉引擎的性能。根据GPU类型不同,提升效果在2%到10%之间。

  • 移除了对Zivid Two早期工程样品(revision A)的支持。

  • 将 Zivid One+ 固件更新至版本 1.8.8。

  • 将 Zivid Two 固件更新至 1.5.2 。

  • 将放弃对 Ubuntu 16.04 的支持,并将在 2022 年 4 月左右从 SDK 中移除。

C++

  • 添加了experimental method Zivid::Experimental::SettingsInfo::resolution() 来查询给定设置对象和CameraInfo对象的点云分辨率。

Bug修复

  • 修复了如果在 GenICam 相机连接过程中与相机的物理连接丢失,GenICam 驱动程序中可能发生的崩溃。

  • 修复了如果 Zivid::Application 存储在静态变量中,则在程序关闭期间可能发生的崩溃。

  • 修复了使用 Zivid SDK 的进程在收到 SIGTERM/SIGILL 或类似信号时可能在关机期间永远卡住的问题。

  • 修复了在使用 Zivid One+ 相机时调用”Camera::connect()”时出现的小内存泄漏问题。

Studio

  • 添加了对 3D 点云视图中点的深度图着色的支持。按 “D” 打开和关闭此模式。

  • 添加了对通过将 .zdf 和 .yml 文件拖放到 Zivid Studio 窗口中来打开它们的支持。

  • 修复了在信息面板打开的情况下,通过将其边缘向左拖动来展开主右侧面板会错误地折叠信息面板的问题。

Zivid Two当前的限制

  • 建议在 Zivid Two 和专用 10Gb PCI-Express 网卡之间直接连接以获得最佳性能。连接到 Thunderbolt 3 端口的 Thunderbolt 3 外部网络适配器提供与专用 PCI-express 卡相似的性能。基于 USB 的网络适配器在使用相机时偶尔会出现错误,并且会降低和更多可变的捕获速度。

已知的问题

  • 仅限于Zivid Two:如果 PC 进程在连接到 Zivid Two 时被非干净地中止(例如通过 SIGINT、SIGABRT 或类似方法),从而导致相机和 PC 之间的 TCP 连接未正确关闭,相机将当它检测到网络连接断开时(通常在 15 秒内)重新启动。

    • 在极少数情况下,相机可能无法正确检测到与 PC 进程的连接已被终止。然后,相机将不断拒绝来自 SDK 的新连接,这将使相机在 SDK 中不可见。在这种情况下,必须手动重启相机。

  • 仅限于Zivid Two:在极少数情况下,捕获期间可能会引发”命令失败:CameraImageTimeout”异常。这将在下一次捕获时自行解决。

  • 仅限于Zivid Two:由于以太网数据包丢失导致数据重新传输,Windows 上的捕获时间有时会更长(比正常时间长 1 秒以上)。我们建议在 Windows 的网络驱动设置中增加”Receive Buffers”和”Transmit Buffers”,以减少丢包的发生。

  • 与在相同的硬件的 Linux 上运行相比,Windows 上的捕获时间可能更长。曝光时间短时差异较大,曝光时间长时差异较小。与使用 Zivid One+ 相比,使用 Zivid Two 在相同硬件上的 Windows 和 Linux 之间的相对差异更大。

  • 仅限 Ubuntu 20.04:当使用 Linux 5.8 kernel(使用较新的 HWE 内核时与 Ubuntu 20.04.2 一起发布),使用英特尔 GPU 作为渲染设备时,Zivid Studio 和 Visualizer 可能会出现”CL_OUT_OF_RESOURCES”和”OpenGL 错误”等错误: GL_INVALID_OPERATION” 显示点云时。为避免此问题,请使用 Linux 内核 5.4,它是 Ubuntu 20.04 的 LTS (stable) 基础 Linux 内核。

2.4.2

Bug修复

  • 修复了阻止用户将 libusb(SDK 内部使用)替换为自己的版本的问题。

2.4.1

Bug修复

  • 仅限于搭载标定模型 2.1 的 Zivid Two:修复了 Windows 在调试模式下捕获会引发”Assertion Failed”异常的错误。

2.4.0

API

  • 添加了对 Zivid Two 的实验性功能”Stripe”视觉引擎的支持。

  • 添加了对 Zivid Two 标定模型 2.1 的支持。标定模型 2.1 进一步提高了 Zivid Two相机的精度。

  • 添加了对使用多个 Zivid Two 相机的支持。

    • 此功能已在一台 PC 上同时使用多达四个 Zivid Two 相机进行了测试。

    • 可以同时使用多个相机,但是,每个单独的相机不应同时从多个线程中使用。通过 SDK 连接相机必须按顺序完成。

    • 有关如何设置多个相机的更多信息,请访问知识库:<https://support.zivid.com/latest/academy/camera/multiple-zivid-cameras.html>

  • 添加了 ZividNetworkCameraConfigurator CLI 工具以更改 Zivid Two相机的网络设置。

  • 提高了在温度规格之外使用相机时的点云精度。自动适用于任何 Zivid One+ 或 Zivid Two 相机。

  • 提高了eye-in-hand和eye-to-hand模式下的手眼标定精度。

  • 在网络数据包丢失的情况下改进了 Zivid Two 网络性能。

  • 提高了 Zivid Two 投影仪在较高的工作温度下的使用寿命。

  • 改进了使用 10000 微秒及以上的曝光时间时 Zivid Two 捕获时间。

  • 将 Zivid One+ 固件更新至版本 1.8.7。

  • 将 Zivid Two 固件更新至 1.4.1 。

  • 移除了对 Zivid One 相机的支持。 (注意:这不适用于 Zivid One Plus 相机。)

Studio

  • 修复了连接到相机时在两个或多个相机之间来回切换可能会出错的问题。

Bug修复

  • 修复了在销毁非常短暂的 Zivid::Application 对象期间可能发生的崩溃。

  • 修复了在禁用所有过滤器的情况下捕获 AMD 计算设备上的问题,其中无效点将被标记为”inf”而不是 NaN。

  • 修复了在没有 AVX 等功能的 CPU 上运行时,Stripe 引擎可能会在 Linux 上导致 SIGILL 的问题。

  • 修复了 Stripe Engine 上信噪比可能包含 NaN 值的问题。

  • 仅限于 Zivid One Plus:修复了 SDK 2.2 中引入的导致启动期间电流消耗过大的错误。

  • 仅限于 Zivid One Plus Revision C:修复了正常操作期间相机背面的状态 LED 为红色的问题。

  • 仅限于 Zivid Two :修复了固件升级后第一个捕获的点云可能包含缺失/错误的 3D 数据条纹的问题。

  • 仅限于 Zivid Two :修复了使用 DHCP 获取 IP 地址时超时太短的问题。短暂的超时可能会导致相机在 DHCP 进程完成之前回退到链路本地 IP 地址。

  • 仅限于 Zivid Two :修复了race-condition的问题,在存在网络延迟时尤为突出,表现为SDK 无法连接到相机。

  • 仅限于 Zivid Two :修复了可能导致风扇以过高转速运行的问题。

  • 仅限于 Zivid Two :修复了相机上未发送的数据可能被新/错误数据覆盖的问题。

Zivid Two当前的限制

  • 建议在 Zivid Two 和专用 10Gb PCI-Express 网卡之间直接连接以获得最佳性能。连接到 Thunderbolt 3 端口的 Thunderbolt 3 外部网络适配器提供与专用 PCI-express 卡相似的性能。基于 USB 的网络适配器在使用相机时偶尔会出现错误,并且会降低和更多可变的捕获速度。

已知的问题

  • 仅限于Zivid Two:如果 PC 进程在连接到 Zivid Two 时被非干净地中止(例如通过 SIGINT、SIGABRT 或类似方法),从而导致相机和 PC 之间的 TCP 连接未正确关闭,相机将当它检测到网络连接断开时(通常在 15 秒内)重新启动。

    • 在极少数情况下,相机可能无法正确检测到与 PC 进程的连接已被终止。然后,相机将不断拒绝来自 SDK 的新连接,这将使相机在 SDK 中不可见。在这种情况下,必须手动重启相机。

  • 仅限于Zivid Two:在极少数情况下,捕获期间可能会引发”命令失败:CameraImageTimeout”异常。这将在下一次捕获时自行解决。

  • 仅限于Zivid Two:由于以太网数据包丢失导致数据重新传输,Windows 上的捕获时间有时会更长(比正常时间长 1 秒以上)。我们建议在 Windows 的网络驱动设置中增加”Receive Buffers”和”Transmit Buffers”,以减少丢包的发生。

  • 与在相同的硬件的 Linux 上运行相比,Windows 上的捕获时间可能更长。曝光时间短时差异较大,曝光时间长时差异较小。与使用 Zivid One+ 相比,使用 Zivid Two 在相同硬件上的 Windows 和 Linux 之间的相对差异更大。

  • 仅限 Ubuntu 20.04:当使用 Linux 5.8 kernel(使用较新的 HWE 内核时与 Ubuntu 20.04.2 一起发布),使用英特尔 GPU 作为渲染设备时,Zivid Studio 和 Visualizer 可能会出现”CL_OUT_OF_RESOURCES”和”OpenGL 错误”等错误: GL_INVALID_OPERATION” 显示点云时。为避免此问题,请使用 Linux 内核 5.4,它是 Ubuntu 20.04 的 LTS (stable) 基础 Linux 内核。

2.3.0

API

  • 添加了对 Zivid Two 相机的支持。

  • 提高了实验性功能”Stripe”视觉引擎的速度。

  • 添加了对 Ubuntu 20.04 的官方支持。

  • 改进了实验性功能现场标定:

    • 改进算法以便在某些情况下产生更好的后校正精度。

    • 修复了在输入数据实际上足以计算校正时,用户仍会得到”No significant correction could be identified (noise >> signal).”异常的问题。

  • 改进了标定 API 和现场标定中使用的棋盘检测的稳健性。

  • 将色彩平衡设置的最大值从 2.0 增加到 8.0。

  • 添加了实验性的设置 Settings::Processing::Color::Experimental::ToneMapping::Enabled。此设置控制是否对所有 3D 捕获(单次和 HDR 捕获)执行色调映射,或者仅对 HDR 捕获执行色调映射。

  • 减少 3D 捕获的彩色图像的黑暗/曝光不足区域中的噪点,尤其是在启用色调映射和/或gamma低于 1 的情况下。

  • Ubuntu 16.04 不再支持 AMD。 (从 Radeon Software for Linux 18.50 开始,AMD 放弃了对 Ubuntu 16.04 的支持。)

  • 对 Zivid One 相机的支持已弃用,并将在 Zivid 2.4 中移除。 (注:这仅涉及 Zivid One 相机,仍支持 Zivid One Plus相机。)

Studio

  • 在信息面板中添加了用于将帧设置保存到文件的选项。

  • 改进了 Ubuntu 上文件对话框的外观。

  • 修复了在高 CPU 负载下快速滚动鼠标滚轮时,Zivid Studio 中 2D 图像可能上下翻转的问题。

Bug修复

  • 修复了尝试连接 Zivid One+ 相机时出现错误”Failed to check if block 0 in the EEPROM master table is occupied”的问题。

  • Stripe engine的信噪比 (SNR) 已得到修正,现在可与 Phase engine的 SNR 相媲美。

    • 改进的 SNR 计算意味着噪声滤波器现在在两个引擎的行为上具有更密切的对应关系。

此版本中值得注意的变化

  • 与 2.2 相比,使用较弱的计算设备(例如某些较弱的 Intel 集成 GPU 或 CPU)时,可能会观察到 3D 捕获时间的小幅性能下降。此类设备的性能下降通常为 1% 到 6%,具体取决于计算设备和捕获设置。

Zivid Two当前的限制

  • 尚不支持实验性的”Stripe”视觉引擎。

  • 一次只能将一台 Zivid Two 连接到 PC。

  • Zivid Two 的网络配置无法自定义。

  • 建议在 Zivid Two 和专用 10Gb PCI-Express 网卡之间直接连接以获得最佳性能。连接到 Thunderbolt 3 端口的 Thunderbolt 3 外部网络适配器提供与专用 PCI-express 卡类似的性能。基于 USB 的网络适配器可能会出现捕获错误并限制捕获速度,因此不建议在此版本中使用。

已知的问题

  • 与 Linux 相同的硬件相比,Windows 上的捕获时间可能更长。曝光时间短时差异较大,曝光时间长时差异较小。与使用 Zivid One 或 One+ 相比,使用 Zivid Two在相同硬件上的 Windows 和 Linux 之间的相对差异更大。

  • 仅限于 Zivid Two :有时,在固件升级完成后的第一次捕获中,点云输出可能是错误的。这将显示为点云中的错误/缺失数据行。此问题将在以下捕获中自行解决。

  • 仅限于 Zivid Two :有时,如果在相机固件升级完成后拍摄,可能会抛出”相机未连接”或类似的异常。重新连接到相机后,此问题将自行解决。

  • 仅限于 Zivid Two :由于以太网数据包丢失导致数据重新传输,Windows 上的捕获时间有时会更长(比正常时间长 1 秒以上)。

  • 仅限于Zivid Two:在极少数情况下,捕获期间可能会引发”命令失败:CameraImageTimeout”异常。这将在下一次捕获时自行解决。

  • 仅限于 Zivid Two :相机和客户端之间的网络链接很少会出现故障,从而导致超时。但是,链接将自动恢复,用户可以捕获 Zivid::Exception 并重新连接到相机,而无需手动干预。

  • 仅限 Ubuntu 20.04:当使用 Linux 5.8 kernel(使用较新的 HWE 内核时与 Ubuntu 20.04.2 一起发布),使用英特尔 GPU 作为渲染设备时,Zivid Studio 和 Visualizer 可能会出现”CL_OUT_OF_RESOURCES”和”OpenGL 错误”等错误: GL_INVALID_OPERATION” 显示点云时。为避免此问题,请使用 Linux 内核 5.4,它是 Ubuntu 20.04 的 LTS (stable) 基础 Linux 内核。

2.2.0

API

  • 添加了新的实验性 Zivid 视觉引擎,称为 Stripe:

    • 原始和默认的 Zivid 视觉引擎被命名为 Phase。

    • 添加了新的 Settings::Experimental::Engine 以指定要使用的 Zivid Vision 引擎。

    • Stripe Engine可抑制反射间伪像并提高圆柱体和镀铬零件等闪亮物体的数据质量。

    • Stripe Engine 需要额外的采集和处理时间。

    • 使用 Stripe Engine 时,必须启用反射去除过滤器和对比度失真校正过滤器。这在未来可能会改变。

    • 请注意,由于我们的 GenICam 包装器中的一个已知错误,如果未启用反射消除和对比度失真校正过滤器,则调用将挂起而不是报告错误。

    • Stripe Engine 目前处于试验阶段,未来可能会进行更改和改进。

    • Stripe Engine 仅支持 Zivid One Plus(不是 Zivid One)

  • 扩展标定 API 以支持新的官方 Zivid 标定板系列,其中第一款是 ZVD-CB01 (7x8 30mm)。该板现在可以与现有的手眼和多相机标定功能一起使用,而无需修改客户端代码。它也可以与新的现场校正功能一起使用(见下文)。

  • 添加了新的实验性现场标定 API。与新的 ZVD-CB01 标定板一起,这允许用户执行相机尺寸正确性的验证和校正。该 API 具有以下功能:

    • verifyCamera:基于单个标定板捕获,量化相机的局部维度真实性。

    • computeCameraCorrection:基于一个或多个标定板捕获,计算可应用于相机的校正,以提高其尺寸真实性。此函数还计算在应用校正时可以预期的真实度的置信区间。

    • writeCameraCorrection:将校正写入相机。即使相机重启或连接到不同的 PC,校正仍将持续存在于相机上。调用此函数后,任何时候在此相机上调用捕获函数时,都会自动使用给定的校正。

    • resetCameraCorrection:将相机的校正重置为出厂默认值。

    • hasCameraCorrection:检查相机是否有非默认校正。

    • cameraCorrectionTimestamp:检查当前校正写入相机的时间。

    • 有关更详细的说明,请参阅 API 文档。

  • 添加了命令行工具”ZividExperimentalInfieldCorrection”。该工具使用户无需编写代码即可从新的现场标定 API 轻松执行核心任务。使用命令”ZividExperimentalInfieldCorrection –help”查看使用说明。注意:在 Linux 上,此工具是 zivid-tools 软件包的一部分,而不是核心安装程序。

  • 添加了Gamma设置。 Gamma 可用于使用 Gamma 曲线使点云的颜色变亮或变暗。

  • 将 Zivid One+ 固件更新至版本 1.8.4。

Studio

  • 添加了一个新的信息侧面板:

    • 此面板包含有关当前帧/点云的信息,包括使用的设置、点云的分辨率以及捕获时间。

    • 捕获时间定义为从捕获开始到所有处理完成并且点云数据在计算设备上可用所花费的时间。

    • 打开 .zdf 文件时,侧面板会显示用于捕获此帧的相机序列号和型号名称,以及 Zivid SDK 版本。

    • 这个新的侧面板可以通过单击右下角的”信息”、”查看”菜单和快捷键”Shift+I”来显示。

  • 添加了对新 Stripe engine 的支持。

  • 在”查看”菜单中添加了选项以在打开 .zdf 文件时禁用点云视图的重置。

  • 添加了”M”作为网格划分的快捷方式。

  • 添加选项卡按钮以更轻松地在辅助模式和手动模式之间切换。

  • 固定深度和彩色图像视图在窗口大小发生变化时被重置。

  • 调整了 GUI 中不同位置的颜色、大小和填充。

Bug修复

  • Linux

    • 修复了在 capture() 函数的后续异常之后可能发生的崩溃。如果之前从 capture() 抛出了一个异常,那么如果发生另一个故障,那么系统可能会崩溃而不是抛出另一个异常。只有在使用 Ubuntu 16.04 软件包时才会发生这种崩溃。

  • Windows

    • 修复了会在某些防病毒软件上触发误报恶意软件警报的问题。

  • .NET

    • 修复了在同一对象上多次调用 .Dispose() 可能导致 System.AccessViolationException 的错误。

  • 固件

    • 修复了固件可能会在很长一段时间后挂起的问题

2.1.0

API

  • PointCloud 类添加了降采样功能:

    • 降采样可用于减小点云的大小,以便在较少数量的点上执行计算。

    • 降采样将原始点云中的 NxN 像素区域组合到降采样点云中的一个像素。提供 2x2、3x3 和 4x4 降采样选项。

    • 降采样的执行方式是通过对由 SNR^2 加权的点进行平均来降低点的噪声,忽略无效 (NaN) 点。在计算设备上执行降采样。

  • CameraInfo 现在在 Frame 类中可用。 CameraInfo 包含用于捕获帧的相机的序列号和型号名称。

  • 修复了连接到相机会引发异常并显示消息”无法设置像素格式 (CAM_API_STS_NOT_WRITABLE)。”的问题

  • 将 Zivid One+ 固件更新至 1.7.4 版:

    • 修复了相机可能停止响应的错误。

C++

  • SettingsSettings2D 中的数值(例如 ExposureTimeAperture 等)现在可以使用 operator<operator> 进行比较。

.NET

  • PointCloud.Transform 现在返回对自身的引用,这样 TransformDownsample 等可以链接在一起。

Studio

  • 在深度图像视图中添加了 “mm” 作为单位。

2.0.0

API

  • 新的 Settings / Settings2D / Capture API:

    • 单个”Settings”对象现在包含捕获所需的所有信息。

    • "Settings*(设置)"包含一个或多个采集,以及过滤器和色彩平衡等图像处理设置。当使用多个采集时,将执行HDR捕获,并返回组合帧。

    • Settings 对象现在直接作为参数提供给 Camera 上的捕获方法。

    • 移除了”相机”上单独的 2D 捕获方法。现在通过将 Settings2D 传递给捕获方法来执行 2D 捕获。

    • 用户可以根据需要指定”Settings”或”Settings2D”的尽可能少或尽可能多的部分。捕获时,任何未明确指定的设置都将使用特定于相机的默认值。

  • 新的点云 API:

    • 对 capture 方法的调用返回一个”Frame”,它提供了一个”PointCloud”的句柄。 PointCloud 对象是仍然存储在 GPU 上的点云的句柄,然后可以在需要时通过 PointCloud 的各种方法将特定数据复制到 CPU 内存。

    • PointCloud 允许复制以下数据格式:

      • PointXYZ

      • PointXYZW

      • PointZ

      • ColorRGBA

      • PointXYZColorRGBA

      • PointXYZColorBGRA

      • SNR

    • PointCloud 功能取代了被移除的旧的 DeviceCloud

  • 新的 ContrastDistortion 过滤器:

    • 该过滤器具有校正和/或去除由于非常强的强度梯度而失真的点的能力。这适用于闪亮/反光物体以及漫反射物体,例如从白色突然变为黑色。

    • 此过滤器被认为是实验性的,可能会在未来的版本中发生变化。

  • 新的多相机标定:

    • 新的”标定”命名空间的一部分,以及手眼标定。

    • 多相机标定用于多相机设置,以在指定的主相机的框架中找到辅助相机的位姿,例如将点云组合到单个参考框架中。

  • GPU 加速的点云变换:

    • 通过”PointCloud”的变换方法,用户现在可以对点云的 3D 坐标执行就地 GPU 加速变换。这种以 4x4 矩阵形式提供的变换可能来自”标定”命名空间的函数,或者它们可以是任何用户定义的变换。

  • 新的”Aperture”设置:

    • 引入了”Aperture”设置,它取代了旧的”Iris”设置。

    • 这是一个浮点数,单位为 F 数。 API 支持 [1.4 - 32] 范围内的值。

    • 拍摄时,相机将选择最接近指定 F 值的内部光圈位置。

    • 通过调用”相机”上的方法可以完全关闭光圈。

  • 新的色彩平衡设置:

    • 用户现在可以独立控制应用于三个颜色通道的增益,而不会对计算的 3D 点坐标产生任何影响。

    • 在给定相同场景的情况下,捕获现在可能会提供更多有效点,尤其是在场景包含鲜红色的情况下。

    • 添加了对 2D 捕获中色彩平衡的支持。

  • 新的点云 SNR 指标:

    • 介绍信噪比 (SNR) 指标。这取代了旧的”对比度”指标,并且始终是一个非负非 NaN 数。

    • 基于新的 SNR 指标改进了 3D 点坐标的 HDR 合并。

    • 加载使用 API 1.X 创建的 ZDF 文件时,点云的 SNR 值根据旧的对比度值进行近似计算。

  • 设置的新默认值:

    • Gain 的默认值从 2 减少到 1

    • One Plus Medium型相机的”亮度”默认值从”1.0”增加到”1.5”。

    • One Plus Large型相机的”亮度”默认值从”1.0”增加到”1.8”。

    • 所有One Plus相机的”ExposureTime”默认值从”8333”减少到”6500”。

  • 新的”Noise”过滤器:

    • 根据 SNR 值过滤点。

    • 替换旧的对比度过滤器。

  • 移除了旧的”Saturated”过滤器设置:

    • 饱和过滤器现在始终处于启用状态,并且无法通过设置禁用。

  • 新的”Calibration”命名空间:

    • 旧的 HandEye 命名空间的内容被移动到了 Calibration 命名空间。

    • 所有输入和输出转换矩阵现在都是浮点格式而不是双精度格式,以更好地匹配 PointCloud 数据的格式。

  • 新的 CameraInfo API:

    • Camera 上用于获取序列号、型号名称等的成员函数已被删除。

    • 相反,可以通过 Camera 上的方法访问新类 CameraInfo 的实例。

    • CameraInfo 包含相机型号名称、修订版、序列号、固件版本以及可以存储在相机中的用户数据的最大字节数。

  • 对相机内部 API 的更改:

    • 在基于”Frame”估计有效相机内在函数时显着的性能改进。

    • 获取相机内在函数的方法从 Camera 类中取出,并与从 Frame 获取内在函数的函数一起放置在 Experimental::Calibration 命名空间中。

  • Gaussian 过滤器移至 HDR 合并后,以提高性能。

  • “Live-mode(实时模式)”已从API中移除。

  • 双向模式(Bidirectional patterns)已从 API 中移除。

  • ZividVis3D 库已重命名为 ZividVisualization

  • CloudVisualizer 类已重命名为 Visualizer,并移至 Visualization 命名空间。

  • 文件相机的文件扩展名已从 .zdf 更改为 .zfc。

  • Environment 命名空间已从 API 中移除。

  • 用于访问图像数据的”Frame2D”方法已从”colorsRGBA”重命名为”imageRGBA”。

  • 简化的异常 API 只包含一个异常:Zivid::Exception

  • 对命名/术语的许多调整。

C++

  • 在 C++ API 中,PointCloud 类还可以通过成员函数(例如 copyData(PointXYZ*))将数据直接从 GPU 复制到指定的用户分配的 CPU 数据缓冲区。

C#

  • 重构 C# 接口以反映核心 API 的底层变化(见上文)。

  • CaptureAssistant 已从类更改为命名空间。这个命名空间包含两个类:

    • SuggestSettingsParameters

    • Assistant,包含方法 SuggestSettings

  • “固件”已从类(class)更改为命名空间(namespace)。此命名空间包含一个新的类”Updater”,它提供与固件更新相关的功能。

  • 2D 颜色数据的主要图像类现在称为”ImageRGBA”。它提供了两种访问颜色数据的方法:

    • ToArray()ColorRGBA 结构的二维数组。

    • ToByteArray():3D 字节数组,第三个索引用于选择图像通道 (RGBA)。

  • Pose::ToArray() 已被移除。

  • Pose::ToArray2D 已重命名为 Pose::ToMatrix()

GenICam

  • 所有设置都被重命名以匹配核心 C++ API 中的新名称。

  • MergedMultiFrame 不再有 ApplyType 字段。

  • MergedMultiFrame 已重命名为 MultiAcquisitionFrame

  • 删除了”MultiAcquisitionFrame”和单帧的重复设置。

  • SettingsControl 包含常见的捕获设置,如过滤器和色彩平衡。 AcquisitionSettingsControl 包含一次采集的设置。

  • SingleFrame 模式使用类别 SettingsControlAcquisitionSettingsControl 下的设置。 SingleFrame 模式用于通过单次采集进行捕获。

  • MultiAcquisitionFrame 模式使用 SettingsControl 下的设置,以及通过 MultiAcquisitionFrameControl::AddAcquisition 添加的所有采集设置。 MultiAcquisitionFrame 模式用于通过多次采集 (HDR) 进行捕获。

  • 不再支持连续模式。

Zivid Studio

  • 通过 File -> “Import/Export Capture Settings” 保存或加载完整捕获设置的选项。

  • 改进了设置滑块的步长。

  • 允许在启用一次采集的情况下运行”Live”模式时更改所有设置。

  • 在亮度设置高于 1.0 的情况下运行”Live”模式时,在 UI 中添加了通知。

Windows

Linux

  • 如果从较旧 (<=1.4) 版本的 Zivid SDK 升级,Linux 安装程序(特别是 zivid-telicam-driver_*.deb)现在可以正确卸载旧的 telicam-sdk 软件包。

  • 修复了 Linux 安装程序(特别是 zivid-telicam-driver_*.deb)中的一个错误,其中 TelicamSDK 示例将被写入 /root。不再安装这些示例。

Bug修复

  • 修复了旧款 Zivid One 相机可能导致”检测到帧时序不一致”异常的问题。这修复了 1.8.1 版的一个已知限制。

  • 修复了 USB 层上的资源泄漏。

  • 修复了尽管包含 NaN 特征点,但 DetectionResult 仍被视为有效的错误。

  • 修复了由于小数点约定冲突而导致在不同语言环境中保存和加载 YAML 文件可能失败的错误。 YAML 序列化现在总是使用 “.” 作为小数点。

1.8.1

API

  • 向 C++ API 添加了新的实验函数 Zivid::Experimental::Calibration::estimateIntrinsics()。此函数在将 3D 点投影到 2D 时提供更准确的相机内在函数。

  • 修复了无法正确移除投影仪视野边缘附近的伪像的问题。

  • 支持实验性功能multi-Zivid:

    • 此功能在一台 PC 上同时使用多达四台 Zivid One Plus 相机进行测试。

    • 可以同时使用多个相机,但是,每个单独的相机不应同时从多个线程中使用。必须按顺序连接到相机。

    • 已知限制:

      • 某些 USB 芯片组在高负载(同时捕获多个)期间性能不佳。这可以表现为捕获期间抛出的异常。如果您遇到这种情况,请尝试使用不同的 USB 端口或不同的 PC。

      • 在 NVIDIA GPU 上长时间负载非常高的情况下进行捕获可能会导致 OpenCL 内存不足相关异常。 GPU 的速度和 RAM 大小会影响此问题。

      • 如果您使用适用于 Linux 的 Intel NEO OpenCL 驱动程序,则需要 20.08 或更高版本。此驱动程序的旧版本可能不稳定。

Linux

  • 将 zivid-telicam-driver 更新到版本 3.0.1.1。

  • 在 zivid-telicam-driver deb 包上添加了对 zivid deb 包的依赖。

Zivid Studio

  • 打开 .zdf 文件时,文件名显示在窗口的标题栏中。

已知限制

  • Zivid One 相机(不是Zivid One Plus系列)的用户在拍摄过程中可能会遇到异常。我们建议Zivid One 型号的用户继续使用 SDK 1.8.0 或更早版本。

1.8.0

API

  • 改进的捕获助手:

    • 提高性能(分析时间缩短约 25%)。

    • 改进了捕获预算(”最大捕获时间”)低于一秒的结果。

    • 修复了在Large型相机的情况下返回错误的异常值过滤器阈值的问题。

  • 去除投影仪视野边缘附近的伪像。

  • 修复了新英特尔 GPU(Broadwell 和更高版本)上适用于 Linux 的英特尔 NEO OpenCL 驱动程序的兼容性问题。

  • 改进了对没有双精度浮点功能的 GPU 的支持。

.NET

  • 为 .NET API 添加了对 Capture Assistant 的支持,包括示例。

Zivid Studio

  • 辅助模式(捕获助手)现在是打开 Zivid Studio 时的默认模式。

工具

  • 修复了 HandEyeCalibration CLI 工具在 Linux 上不起作用的问题。

1.7.0

API

  • 改进了 HDR 帧的颜色。

  • 改进的捕获助手:

    • 普遍改进了任何场景的建议,特别是有光泽的对象。

    • 根据环境光频率调整建议的选项。

    • 改进了失焦处理。

    • 允许的最大预算增加到 10 秒。

    • 更快的场景分析。

  • 修复了在固件更新期间拔下 USB 或电源可能会导致下一次固件更新导致崩溃或软件挂起的问题。

  • 将 Zivid One+ 固件更新至版本 1.6.7。

Zivid Studio

  • 根据环境光频率调整捕获助手建议的选项。

1.6.0

API

  • 新增手眼标定 API。

  • 添加了 2D 捕获 API。

  • 未正确设置 OpenCL 驱动程序时的更多有用错误消息。

  • 支持Windows离线安装。示例数据现在嵌入在安装程序中。

  • 使用更明确的 CLI 选项改进了 SampleCameraUserData,使其更加详细。

  • 修复了在捕获期间拔下 USB 时潜在的相机死锁问题。

  • 捕获助手避免光圈值高于 46 以增加景深。

  • 导出 PCD 文件时使用正确的 alpha 值。

  • Capture Assistant CLI 工具现在支持保存建议的设置。

  • 从 Vis3D 库中删除了 Qt 依赖项。

  • 添加了 SampleHandEyeCalibration 示例。

  • 添加了 SampleCapture2D 示例。

  • 添加了 Vis3D 示例。

  • 为 CloudVisualizer 添加了重置视图(退格)和颜色开/关(c)的键盘快捷键。

.NET

  • 添加了缺失的用户数据功能,以使 .NET API 与 C++ API 保持同步。

  • 从正确的文件夹制作示例代码副本发布 DLL,以避免在发布版本中加载调试 DLL。

  • 改进的参考文档。

  • 修复了月份转换错误。

GenICam

  • 在 Ubuntu 中添加了对 HALCON 19 的支持。

Zivid Studio

  • 修复了设置工具提示错误出现的问题

  • 修复了在深度/彩色 2D 视图中移动鼠标时可能发生的崩溃

  • 固定深度/颜色 2D 视图在更改选项卡时被重置

  • 在右侧面板的”捕获”菜单中添加了”将设置保存到文件夹”

已知缺陷

  • 在固件更新期间拔下 USB 或电源可能会导致下一次固件更新导致崩溃或软件挂起的情况。要从这种情况中恢复,请重启相机。

1.5.0

API

  • 改进了 CMake 配置文件中的语义版本控制支持。现在,当使用 find_package 使用相同的主要版本时,将找到较新版本的 Zivid SDK,但所需的次要版本或补丁版本较低。

  • 将 telicam-sdk deb 包重命名为 zivid-telicam-driver。

  • 现在在空向量上调用 combineFrames 会导致异常,以前这会导致崩溃。

  • 默认情况下,Windows 安装程序将在安装期间将 Zivid 二进制目录添加到系统 PATH。

  • 安装实验性 GenICam 驱动程序时,Zivid 将被添加到 GENICAM_GENTL64_PATH。

  • 实验性 GenICam 驱动程序支持的 Halcon 版本提高到 19。

  • 改进 API 文档。

  • 空闲时停放投影仪镜像。

  • 添加了看门狗,如果相机连接到 PC 但未在超时内枚举,则会重置相机。

  • 外部相机风扇的最小 RPM 小幅增加。

  • 静态链接更多依赖于 Windows 构建,这使得使用来自 Matlab 和 Labview 的 .NET API 变得更容易。

  • 改进了 deb 包的安装后步骤,使 18.04 包可安装在较新的 Ubuntu 版本上。

  • 升级相机固件时改进了 USB 重新连接处理。这解决了 Docker 中相机闪烁的问题。

  • 改进的对比度值计算。新方法基于 SNR,它将使对比度过滤器和 HDR 在变化的环境光条件下工作更加一致。

  • 对实验性自动曝光功能的改进和重大 API 更改:

    • 更名为 Capture Assistant。

    • 核心算法的改进。

    • 更好地支持各种相机型号。

    • 删除了感兴趣区域功能。

  • 将 Zivid One+ 固件更新至版本 1.6.6。

Zivid Studio

  • 用于捕获的新辅助模式。

  • 新的直方图功能。

  • 现在可以配置深度视图 Z 范围。

  • 添加对将颜色/RGB 图像保存为 PNG/JPG/BMP 的支持。

  • 在 UI 的某些部分使用 3 个小数位之前,始终在所有 UI 中显示 2 个小数位。

  • 将相机断开按钮移动到子菜单中。

  • 更改颜色或网格设置时自动更改为 3D 视图。

  • 当点云具有巨大异常值时,改进了 3D 视图中的导航。

  • 修复了连接按钮卡在连接状态的错误。

  • 按钮文本从大写更改为大写。

  • 对 UI 的外观和感觉的小改进。

1.4.0

API

  • 添加了实验性自动曝光 API。

  • 改善了反射过滤器,将会移除极少好的点。

  • 改进了双向模式下的反射滤波器。

  • 修复了反射过滤器中的问题,该问题导致在具有闪亮物体和明亮表面的场景中出现黑线。

  • 改善了离群值过滤器,将会移除极少好的点。

  • 在 Application 类中添加了测试以确保二进制文件和头文件是同步的。

  • 修复了相机在初始 CAM_API_STS_TIMEOUT 错误后总是返回 CAM_API_STS_NOT_WRITABLE 的问题。

Zivid Studio

  • 启动期间更好的错误处理,如果 Zivid Core 库无法初始化,应用程序现在将显示错误对话框。

1.3.0

API

  • 添加了高斯滤波器。

  • 支持获取 OpenCV 格式的相机内参。

  • 改进了 HDR 点融合,可将噪点降低多达 sqrt(images)。

  • 将 Zivid One+ 固件更新至 1.6.3 版。

.NET

  • 为数据模型(Settings、FrameInfo、CameraIntrinsics 和 CameraState)添加保存和加载功能。

Zivid Studio

  • 添加了高斯滤波器。

  • 渲染性能的改进。

  • 在 2D 视图中显示鼠标指针下像素的 XYZ/RGB/对比度。

  • 改进 2D 图像视图行为。

工具

  • 将 ZividSuggestSettings 重命名为 ZividExperimentalSuggestSettings。

1.2.1

  • 支持 Zivid One Plus Small、Medium 和 Large,修订版 B。

1.2.0

  • Ubuntu 16.04 和 18.04 支持。

  • 适用于 Windows 10 的 GenICam/HALCON 预览版。

  • 从 DirectX 更改为 OpenCL 作为 GPU 计算平台。

  • 性能改进。

  • 从 Zivid Labs 重新命名为 Zivid(包括日志和配置文件夹)。

  • 支持 Zivid One Plus Small、Medium和Large的工程版本。

API

  • 添加了从 API 闪光相机的功能。

  • 添加了将用户数据写入相机的功能。

  • 增强模式,允许 Zivid One Plus 的亮度大于 1.0。

C++

  • CMake 文件从模块模式更改为配置模式。

  • 结构化绑定支持设置。

Zivid Studio

  • 从头重写:

    • 现代的外观和感觉。

    • 删除了很少使用的功能。

1.0.1

  • 支持新的相机版本。

  • 修复光圈功能的差异。

1.0.0

在候选发布期间引入了以下一些更改。如果从 rc-candidate 升级,部分但不是全部适用。

主要变化

  • 新的参考框架。参考框架已从投影仪更改为相机。任何使用旧软件完成的眼手标定都需要重新进行。这在 rc3 和 rc4 之间发生了变化。

  • 从版本 1.0.0 开始,API 是稳定的,并遵循 <https://semver.org/> 的语义版本控制方案。

  • 新的设置 API。

  • HDR 性能得到改善。

  • API 完整记录。

  • 支持多台 Zivid 相机连接到同一台计算机。

  • 使用 Zivid Studio 自动更新固件或使用独立应用程序手动更新。

  • 添加了管理资源的应用程序类,它需要是使用Zivid时首先创建的。

  • 从 C++ API 中删除了返回代码,API 现在专门使用异常来处理错误。

  • 删除 System 类并将其拆分为更具体的命名空间。

完整的更改日志

  • 添加到安装程序的 Visual Studio 示例项目。

  • CMake 示例项目添加到安装程序。

  • 将 exposure_time 设置为 19654 不再失败。

  • Zivid Studio 在捕获帧时随机崩溃,已修复。

  • ZividNET.dll 现在可以从 MATLAB 加载。

  • 尝试创建无效尺寸的纹理时报告错误。

  • 在某些情况下双向提供损坏的输出数据,已修复。

  • 首选项现在正在正确调整其内容的大小。

  • 关闭 Zivid Studio 时关闭风扇。

  • 删除了对第 3 版之前的相机的支持。

  • 用于提高信噪比和降低噪声的新模式。

  • 在关于对话框中添加了 Zivid Studio 的版本信息。

  • 在安装程序中添加了 CameraState.h 和 ImageInfo.h。

  • Zivid Studio 中网格模式的错误修复。

  • 现在可以在 Zivid Studio 中将设置保存/加载到 YML。

  • ZividStudio 中添加了相机重新连接。

  • 记录到文件。

  • 在 Zivid Studio 中包含第 3 方库的”法律声明”。

  • 添加了更好的应用程序图标。

  • 新版 Toshiba Teli 驱动程序。

  • 对可执行文件进行数字签名。

  • 清理公共 C++ API。

  • 在 Program FilesZividSampleData 中安装示例。

  • 如果无法读取相机单元信息,则在 Zivid Studio 中显示错误对话框。

  • 所有头文件中的最新且正确的头注释。

  • 确保退出时关闭实时模式显示。

  • 修复了来自公共 API 的所有 TODO 和 FIXME。

  • 将公共函数名称重命名为更具描述性且名称一致。

  • 使 Zivid Studio 在没有连接相机的情况下正确初始化。

  • 使公共 API C++11 符合标准。

  • 对卸载程序进行签名以避免在启动时出现警告。

  • 安装新版本时删除旧注册表项。

  • 在运行安装程序的过程中卸载旧版本。

  • 在 Visual Studio 中使用 /WX /W4 构建,包括内部代码和示例代码。

  • 停止使用 MSVC C++ 扩展。

  • 在 .NET 中公开版本信息。

  • 如果固件版本不匹配,则拒绝连接相机。

  • 在 ZividStudio 中添加了新版本通知。

  • 从公共 API 中删除日志记录 API。

  • 从公共 API 中移除状态回调 API。

  • CameraInfo 和 Camera 合并。

  • 在正常工作条件下降低风扇噪音。

  • 从公共 API 中删除了 usbPath 和 internalCameraId。

  • 将 Zivid Studio 与 .zdf 文件相关联。

  • 使 Zivid 出现在 Windows 的”添加/删除程序”中。

  • 在安装文件中嵌入 Visual Studio 的 VCRedist 文件。

  • 如果需要,请下载并安装 Toshiba Teli 相机驱动程序。

  • 从公共 API 中删除了 std::shared_ptr。

  • 从 C++ API 中移除 ZSetting。

  • 将测量类重命名为框架。

  • 将 saveMeasurement 从 System 移至 Frame 类。

  • 为 CloudViewer 添加了单独的安装程序。

  • 各种错误修复和性能改进。

0.9.544

  • 修复了安装包中缺少 Boost DLL 的问题。

0.9.539

  • 修复了与垂直图案一起使用时反射过滤器中的错误。

0.9.537

  • 修复了版本 v0.9.534 中引入的实时模式中的错误。

0.9.534

请注意,这将是 API 和 GUI 将名称从 ShapeCrafter 更改为 Zivid 之前的最后一个版本(例如,ShapeCrafterGUI 将成为 Zivid Studio,ShapeCrafter 类将更名为 Zivid)。

  • 添加了对垂直图案的支持(图案数量的两倍:水平 + 垂直)。在 API 中使用 enablePerpendicularPatterns()(或通过 GUI 中的首选项进行切换)。重要提示:由于当前硬件的限制,投影机的曝光时间必须增加到大约 50 分钟以上。 33000 微秒才能稳定。

  • 添加了反射过滤器,可以检测和去除反射引起的异常值。请注意,使用垂直图案时反射过滤器效果最佳(请参阅首选项)。通过 API 中的 enableReflectionFilter() 将其打开。

  • ShapeCrafterGUI:通过 Edit->Preferences 或 API 中的 enableErrorCorrectingCode() 支持 LGGC(大间隙格雷码)纠错模式模式。

  • 现在可以检测和移除饱和像素。应该改进 HDR 测量的融合。通过 GUI 中的首选项启用它(或调用启用)或在 API 中调用 setMaskSaturated。

  • 添加了函数 getFirmwareLabel 以获取固件版本(C++ 和 .NET API)。

  • ShapeCrafterAPI:添加了对 PCB 修订版 2 的支持。请注意,它对例如 iris 具有不同的固定(因此 setProductRevision 函数)。

  • 在 GUI 的首选项对话框中选择产品版本(处理版本 0 (PoC)、工程模型版本 1 和工程模型版本 2 之间的差异。

  • 向 API 添加了 setProductRevision() 函数。请在初始化 ShapeCrafter 之前调用此函数。

  • 向 C++ 和 .NET API 添加了 isConnected() 函数。

  • 函数 initialize() 现在返回一个布尔标志,表明相机和投影仪是否可以成功连接。

  • 固件更新:Zivid nows 以 7 秒的初始图像开始,然后自行关闭。这需要固件更新。请下载并安装相关固件:ZIVID_v0_9_10_ROM_v300_splash.bin。

  • ShapeCrafterNET:添加了 Logger.setLogCallback() 函数。允许 .NET API 的客户端从底层 C++ API 接收日志回调消息。

  • ShapeCrafterNET:改进了 StringSettings 和 StringSetting 类。现在的行为更像 C++(可以通过索引读取/写入)。

  • ShapeCrafterNET:尝试修复在使用 .NET API 时有时会导致退出时崩溃的错误。

  • ShapeCrafterNET:添加了 getVersionInfoForModule() 函数,该函数返回给定 DLL 的版本信息。

  • ShapeCrafterGUI:通过帮助->关于对话框查看所有 DLL 的版本号。

  • ShapeCrafterGUI:支持通过工具栏中的按钮以单色查看点云(禁用 RGB)。

  • ShapeCrafterGUI:网格视图现在即时更新可视化。

  • ShapeCrafterGUI:修复了与进行未标定测量相关的错误。

  • ShapeCrafterGUI:单击首选项对话框中的应用现在应该重新初始化系统(即加载新的标定文件等)。

  • CloudViewer:用于可视化点云的新应用程序不再基于 PCL(不是基于 DirectX)也可以与 W3P 文件相关联。

  • ShapeCrafterAPI:如果无法初始化相机,现在将引发异常。

  • Python API:增加了对控制光圈的支持。

  • ZividCalibrationApp:新的基于 Qt 的标定应用程序。在保存图像之前,应用程序会尝试检测投影仪/相机中的图像角落。

  • 添加了从CMake自动生成包和安装程序的功能。