计算机视觉

RoboDK 提供了许多用于模拟、开发和部署计算机视觉系统的实用程序。RoboDK 允许您模拟2D 3D 相机,以开发和训练计算机视觉算法。您还可以集成真实的 2D 3D 相机。

本文档将帮助您完成模拟相机的一些步骤。

注:您可以在 API 帮助文档部分找到更多示例:https://robodk.com/doc/en/PythonAPI/examples.html#camera-2d

Computer Vision - 图片 1

模拟相机

模拟相机可以让你看到相机所看到的一切。您可以指定相机参数,如传感器尺寸、像素大小、视场等,然后就能看到相机的模拟视图。您可以将相机安装到机器人上,也可以让它们保持静止不动。

添加相机视图

添加相机需要将其固定在一个锚点上,以确定其位置。这通常需要使用参考坐标系。

1.选择程序 添加参考坐标系,创建新坐标系。更多信息请参阅入门部分

2.将坐标系放置在所需的相机位置,其中 XYZ 坐标为相机位置,Z+ 轴代表瞄准方向,Y+ 轴代表向下方向。

3.选择连接 模拟 2D 相机并选择参考坐标系。

现在,您已经在锚点上安装了一个默认相机。

提示:如果锚点发生变化,相机位置将自动更新,这样您就可以轻松地为机器人添加腕式相机。

提示:您可以通过右键单击相机并使用相机位置菜单来更改锚点

相机预览窗口

相机预览窗口可让您看到相机所看到的内容。添加新相机时,此窗口会自动打开。

要重新打开相机预览窗口,只需双击树中的相机项即可。也可以在树中右键单击它,然后选择显示相机。默认情况下,预览窗口可以调整大小、最小化或关闭(更多选项请参阅下一节)。

Computer Vision - 图片 2

预览窗口打开时,三维环境中也会显示相机工作区。您可以通过右键单击相机并选择显示相机工作区来禁用相机工作区

相机设置

通过相机设置,您可以自定义相机的参数,从而在 RoboDK 的模拟环境中获得真实的相机视图。

要编辑相机的设置,请在树中右击该相机,然后选择相机设置RoboDK 为新添加的相机提供以下默认设置:

    相机:提供锚点名称(坐标系 1

    焦距 (mm):焦距,单位为毫米(5.00)。这是镜头虚拟光学中心与虚拟相机图像传感器之间的距离。更改该值会影响像素大小。

    像素尺寸 (μm):像素尺寸,单位为微米(2.481)。更改该值会影响视野。

    Field of view (deg)(视场角 (deg)):视场角 (FOV),单位为度(30.0)。这会影响相机可感知区域的大小。更改该值会影响像素大小。

    工作距离 (mm):工作距离,单位为毫米(2000.0)。这是相机可以感知环境的距离,超过这个距离的物体将不会成为图像的一部分。

    固定传感器尺寸:如果不选中,相机传感器尺寸(或分辨率)由相机预览窗口的大小来设置,用户可以调整预览窗口的大小。

    相机传感器尺寸:对于固定传感器尺寸,以像素为单位提供相机的宽度和高度。调整预览窗口大小不会影响尺寸。

    允许调整窗口大小:允许用户在不影响传感器尺寸的情况下调整预览窗口的大小。例如,将窗口大小调整为 720p,同时保持分辨率为 4K

    透视图:取消选中此项将把相机变成正投影相机,消除透视。

    视图类型:确定相机视图类型,如彩色、灰度或深度。视图类型将根据相关数据改变输出图像。

    停靠视图:允许将预览窗口拖到工具栏上,而不是单独的浮动窗口。

    设置光色用自己的光色(环境光、漫反射光和镜面反射光的颜色)覆盖默认光色。它不会影响背景颜色,而且只与 "颜色 "视图类型兼容。

    背景色:无限远处未知物体的颜色。如果从相机传感器到工作距离没有遇到任何物体,则使用这种颜色。

Computer Vision - 图片 3

通过 API

可以通过 API 访问所有视图类型的相机图像。例如,您可以以磁盘文件或纯数据的形式获取彩色图像(8 位)、灰度图像(8 位)和深度图(8 位或 32 位)。

访问模拟相机的数据,可以通过第三方图像资源库或自己的图像资源库进行外部处理。

虽然 RoboDK 没有提供自己的成像资源库,也没有与之关联,但我们的 Python API 提供了处理 2D 3D 图像数据的示例代码。涉及以下主题:

    获取图像数据并以直播形式显示。

    使用棋盘图案校准针孔相机。

    利用支持的模式估算相机的位姿。

    将模拟相机图像应用于增强现实的硬件相机馈送。

    读取条形码和 QR

    检测圆球、参考图像、表面积、轮廓、图像瞬间等特征。

    读取深度图,将其处理成点云,重建网格,创建 3D 实时流。

要访问我们的 Python API 示例,请点击此链接:https://robodk.com/doc/en/PythonAPI/examples.html

手眼校准

手眼校准是校准相机相对于机器人法兰或工具的位置的过程。

RoboDK 允许您模拟手眼校准过程。您可以使用相同的程序校准相对于机器人法兰或工具的真实相机。

Computer Vision - 图片 4

您可以在 Python RoboDK API 的示例部分找到一个完整的工作示例:https://robodk.com/doc/en/PythonAPI/examples.html#camera-hand-eye-calibration

相机模拟示例

本节将举例说明如何将计算机视觉与制造流程相结合。

大多数集成了计算机视觉的示例都需要进行一些编码,以充分发挥计算机视觉算法的潜力。

条码阅读

通过 RoboDK 中的模拟相机,您可以自动读取条形码,包括 QR 码、EAN-13 UPC-A 1D 条形码。

您可以在 RoboDK 中拖放条形码图像,并创建一个指向您的条形码的新模拟相机。

您可以在 RoboDK Python API 部分找到示例:https://robodk.com/doc/en/PythonAPI/examples.html#qr-codes-and-barcodes

Computer Vision - 图片 5

物体检测

您可以通过 RoboDK 中的模拟相机获得物体位置的估计值(2D 位姿)。

您可以在 RoboDK API 示例部分找到该示例:https://robodk.com/doc/en/PythonAPI/examples.html#object-detection

Computer Vision - 图片 6