基于捕获速度的设置选择器

本章节将根据您从触发采集到获得点云的时间预算来提供有关最佳相机设置的详细说明。同时,我们还会考虑您的PC规格,因为数据传输和点云处理也取决于此。我们通过优化3D捕获的设置来获得良好的点云,以及通过优化2D捕获的设置来获得良好的彩色图像。

在这之前,您已确定选择哪款Zivid相机用于您的单品拣选应用,并且已正确安装和定位它。下一步是根据您的PC规格选择满足您的周期时间要求的相机设置。如果您还没有准备好PC,本文也介绍了如何结合使用的设置找到满足您的捕获时间要求的PC规格。

3D设置

我们根据场景的复杂性将单品拣选应用分为两类。对于每个类别,我们指定并推荐满足给定成像要求和捕获速度要求的设置。

消费品(Consumer Goods)

如果您的场景不包含非常明亮、反光和深色的物体,您可以选择适用于单品拣选的快速设置(Fast settings)来节省大量的循环时间。快速设置(Fast settings)覆盖了较窄的动态范围,但能够提供更快的捕获。这里有一个适合使用快速设置的场景示例。如您所见,里面没有导致强烈直接反射、高光和饱和度的物体,也没有颜色非常暗的物体。

消费品场景——快速设置/Fast settings

备注

如果场景中没有明亮、反光和深色的物体,请选择快速设置。

通过消费品的质量设置(Quality settings),相机覆盖了相当宽的动态范围,对各种物体都能提供良好的点云。在这种情况下,场景可以包含从明亮和反光的塑料包装物体和装载塑料袋中的物品到深色吸收材料中的任何物体。下图描绘了一个典型的需要质量设置的复杂消费品场景。

备注

如果您希望确保相机不会丢失任何物体的数据,请选择质量设置(Quality settings)。

设置选择表

下表是一个基于所需捕获时间预算的设置选择器工具。这张表格同时显示了可以满足您的捕获速度要求的 PC 的性能和成本。你可以转到 推荐的工业 PC 来查看高端、中端和低端PC配置的示例。

应用

捕获时间(2D + 3D)

相机设置

高端电脑

中端电脑

低端电脑

消费品(质量/Quality)

~1000 毫秒

~1250 毫秒

~1500 毫秒

Z2+ M130 Quality

Z2+ M60 Quality

Z2+ L110 Quality

Z2 M70 Quality

Z2 L100 Quality

消费品(快速/Fast)

~500 毫秒

~750 毫秒

~1000 毫秒

Z2+ M130 Fast

Z2+ M60 Fast

Z2+ L110 Fast

Z2 M70 Fast

Z2 L100 Fast

要下载所需的设置文件,您还可以在 Zivid Studio 中连接到相机(您的特定型号),选择预设设置,打开Ambient Light Adaption(环境光适应功能),然后导出设置。根据环境光频率进行调整的设置的捕获时间可能会更长。

要下载所需的设置文件,您还可以在 Zivid Studio 中连接到相机(您的特定型号),选择预设设置,打开Ambient Light Adaption(环境光适应功能),然后导出设置。根据环境光频率进行调整的设置的捕获时间可能会更长。

备注

如果您打算进行单独的 2D 捕获,则可以通过将 Sampling::Color disabled 来禁用 3D 捕获中的颜色数据采集,以节省捕获时间。默认情况下会启用预设设置中的颜色数据。

为了证实能够达到上述单品拣选应用的要求,我们在多种不同规格的PC上使用Zivid相机运行基准捕获程序(benchmark capture programs)。下表显示了其结果。

包裹分拣

根据场景复杂性和捕获时间,包裹分拣设置也分为两种设置。

Parcels(包裹) Fast (Zivid 2+) / Matte (Zivid 2) 设置旨在实现最短的循环时间。这些设置的动态范围有限,但对于成像相对简单的对象来说已经足够了,例如:

  • 纸板箱

  • 白色信封

  • 亮光塑料袋

备注

如果您仅对盒子、包裹等进行成像,请选择 Parcels Fast (Zivid 2+) / Matte (Zivid 2) 设置。”

小技巧

尝试增加曝光时间以获得更多数据覆盖深色镜面物体或切换到 Parcels Quality (Zivid 2+) / Reflective (Zivid 2) 预设设置。

对于更具挑战性的场景,您可以尝试 Parcels(包裹) Quality (Zivid 2+) / Reflective (Zivid 2) 设置。这些设置具有更大的动态范围,并且能够在物体上获得良好的表面覆盖,例如:

  • 黑色塑料袋

  • 深色塑料袋

  • 深色气泡膜

小技巧

如需减少捕获时间,可以将引擎从 Omni 切换为 Stripe, 但是请注意,这样可能对黑色包裹的成像产生影响。

设置选择表

如果您在整个点云中遇到波纹/波浪状的伪影,请在 50/60 Hz 中选择正确的评率,来调用适合当前环境光(电网)频率的预设参数设置。如果环境光没有问题,请选择 Off 以获得最佳性能。

应用

捕获时间(2D + 3D)

相机设置

高端电脑

中端电脑

低端电脑

包裹(质量/反光)

~400 毫秒

~600 毫秒

~800 毫秒

Z2+ M130 Quality

Z2+ L110 Quality

Z2 M70 Reflective

Z2 L100 Reflective

包裹(快速/哑光)

~ 200毫秒

~350 毫秒

~500 毫秒

Z2+ M130 Fast

Z2+ L110 Fast

Z2 M70 Matte

Z2 L100 Matte

要下载所需的设置文件,您还可以在 Zivid Studio 中连接到相机(您的特定型号),选择预设设置,打开Ambient Light Adaption(环境光适应功能),然后导出设置。根据环境光频率进行调整的设置的捕获时间可能会更长。

要下载所需的设置文件,您还可以在 Zivid Studio 中连接到相机(您的特定型号),选择预设设置,打开Ambient Light Adaption(环境光适应功能),然后导出设置。根据环境光频率进行调整的设置的捕获时间可能会更长。

备注

如果您计划进行单独的 2D 捕获,我们建议将 Sampling::Color 设置为 disabled 来禁用 3D 捕获中的颜色采集。这将减少捕获时间。默认情况下预设设置中的颜色采集是处于启用状态的。

为了证明包裹预设设置能够达到上述要求,我们在各种 PC 上使用我们的相机不断运行基准捕获程序。下表显示了其结果。

测试3D设置

我们可以使用Zivid Studio来测试3D设置。

可通过以下操作在Zivid Studio中导入设置:

  • 点击 FileImport Capture Settings

  • 导航到设置文件的位置

  • 点击Open

小技巧

将YML文件直接拖放至Zivid Studio界面也可以导入相机的3D设置 - 该功能自Zivid SDK 2.5起可以使用。

也可以使用Zivid SDK加载设置。

跳转到源码

源码

std::cout << "Loading settings from file" << std::endl;
const auto settingsFile =
    std::string(ZIVID_SAMPLE_DATA_DIR) + "/Settings/" + settingsFolder(camera) + "/Settings01.yml";
const auto settings = Zivid::Settings(settingsFile);
跳转到源码

源码

Console.WriteLine("Loading settings from file");
var settingsFile = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
                   + "/Zivid/Settings/" + SettingsFolder(camera) + "/Settings01.yml";
var settings = new Zivid.NET.Settings(settingsFile);
跳转到源码

源码

print("Loading settings from file")
settings_file = Path(user_options.settings_path)
settings = zivid.Settings.load(settings_file)

2D设置

虽然您可以通过3D捕获获得彩色图像,但可能因为相机投影仪发出的光线导致2D图像可能不足以满足您的2D应用需求。您可以在 2D+3D捕获策略 中阅读更多相关信息。我们为您的单品拣选应用提供了两个获取2D设置的选项:

  • 使用Zivid标定板和代码示例来自动获取2D设置

  • 使用查询表找到合适的2D设置

  • 手动调整 2D 设置

自动 2D 设置

您可以运行 auto_2d_settings.py 示例来使用Zivid标定板自动查找2D捕获的采集设置和色彩平衡。将标定板放放置在料箱的顶部或底部,并通过指定标定板的位置和所需的对焦范围(料箱高度)作为命令行参数来运行示例。例如,如果您将标定板放在箱子顶部,箱高为400毫米,则按以下方式运行样本:

python auto_2d_settings.py --desired-focus-range 400 --checkerboard-at-start-of-range

如果将标定板放在料箱底部,请运行:

python auto_2d_settings.py --desired-focus-range 400 --checkerboard-at-end-of-range

默认情况下,此示例在查找2D设置时不会使用相机内部投影仪,但这可以通过可选参数 --use-projector 进行设置。此外,您还可以通过可选参数 --no-color-balance 来选择不执行颜色平衡的查找算法。由于示例使用场景中的环境光进行校准,您应该在与实际应用类似的照明条件下运行该示例。

设置选择表

下表是一个设置选择器工具,用于根据料箱底部的照度和相机到料箱顶部的距离进行2D设置。这些2D设置适用于不使用相机投影仪作为光源,仅使用外部光源的情况。

使用该表格时,首先要在给定的预期照明条件的情况下确定料箱底部的照度。然后,根据从相机到料箱顶部的距离选择设置。

备注

照度的单位为勒克斯 (lx) ,是入射到单位面积表面上的总光功率。光功率的单位为流明 (lm) ,是单位时间内光源发出的可见光总量的量度。

勒克斯测量

小技巧

您可以使用适用于 AndroidApple 的测光仪应用程序粗略地测量场景中的照度;如果需要进行准确的测量,那么您需要一个照度计。

料箱底部照度

相机到箱子顶部距离

600 毫米

800 毫米

1100 毫米

1400 毫米

1700 毫米

1900 毫米

~300 lx

Zivid Two M70

Zivid Two M70

Zivid Two L100

Zivid 2 Plus M130

Zivid 2 Plus M130

Zivid 2 Plus M130

Zivid Two L100

Zivid 2 Plus M130

Zivid 2 Plus L110

Zivid 2 Plus M130

Zivid 2 Plus L110

Zivid 2 Plus L110

~1000 lx

Zivid Two M70

Zivid Two M70

Zivid Two L100

Zivid 2 Plus M130

Zivid 2 Plus M130

Zivid 2 Plus M130

Zivid Two L100

Zivid 2 Plus M130

Zivid 2 Plus L110

Zivid 2 Plus M130

Zivid 2 Plus L110

Zivid 2 Plus L110

小技巧

您如果希望在您的PC上对3D和/或2D设置进行基准测试(benchmark),您可以从YML文件加载设置并运行 ZividBenchmark.cpp 示例。您可以打开 示例 ,然后选择C++标题来获取说明。

下面我们展示了我们的相机在各种 PC 上捕获的 2D 基准测试结果。

手动调整 2D 设置

如果自动调整或查找表无法提供足够的 2D 质量,您可以通过调整色彩平衡(Color balance)和伽马参数(Gamma)来手动调整颜色设置。伽马校正可用于使图像变暗或变亮。颜色通道参数可以使彩色图像看起来更自然。我们建议在捕获 2D 图像时将投影仪用作闪光灯。在这种情况下,您不需要调整色彩平衡。如果您选择不使用投影仪进行拍摄,则需要重新调整白平衡。我们在 Color Balance(色彩平衡) 文章中解释了如何执行此操作。

有关如何优化颜色的深入教程,请参阅 优化彩色图像

测试2D设置

要测试 2D 设置,您可以使用 Zivid Studio 中的 2D 捕获模式或运行我们的代码示例。

可通过以下操作在Zivid Studio中导入设置:

  • 点击 FileImport Capture Settings

  • 导航到设置文件的位置

  • 点击Open

小技巧

将YML文件直接拖放至Zivid Studio界面也可以导入相机的3D设置 - 该功能自Zivid SDK 2.5起可以使用。

也可以使用Zivid SDK加载设置。

使用我们的代码示例,您可以提供 2D 采集设置 YML 文件的路径作为参数。

python capture_2d_with_settings_from_yml.py <path-to-2d-settings.yml>

该示例会执行加载 2D 设置、捕获图像、显示图像并保存它。

跳转到源码

source

user_options = _options()
camera = app.connect_camera()
settings_2d = zivid.Settings2D.load(user_options.path)
with camera.capture(settings_2d) as frame_2d:
    image = frame_2d.image_rgba()
    rgba = image.copy_data()
    display_rgb(rgba[:, :, 0:3], title="RGB image", block=True)
    image_file = "Image.png"
    print(f"Saving 2D color image to file: {image_file}")
    image.save(image_file)

备注

我们在低环境光(~300 lx)和高环境光(~1000 lx)条件下测试了我们为上述典型场景推荐的3D和2D设置。我们已经完成了我们在相机选择器章节中指定的距离范围,以及场景中的所有项目的测试。因此,我们相信这些设置将适用于属于这些类别的大多数场景。但是,如果您确切地知道场景中的项目是什么,并且您是专业的相机使用者,则可以手动配置设置以针对您的情况来优化它们。您可以查看 捕获高质量的点云 来了解如何做到这一点。

在下一章节中,我们将介绍如何通过使用多线程来 优化机器人循环时间